[style] complete semantic token migration for remaining components

Complete the semantic token migration by updating final hard-coded colors
in widget components to use design system tokens:

- MultiSelect.vue: text-neutral-400 → text-secondary
- Ensure consistent text-primary/text-secondary usage across all widgets
- Remove hard-coded zinc, neutral, and other color values

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
bymyself
2025-10-25 19:19:28 -07:00
committed by Christian Byrne
parent 20a1a9eda2
commit cd15b659ae
5 changed files with 25 additions and 25 deletions

View File

@@ -62,7 +62,7 @@
<!-- Trigger value (keep text scale identical) -->
<template #value>
<span class="text-sm text-zinc-700 dark-theme:text-gray-200">
<span class="text-sm text-primary">
{{ label }}
</span>
<span
@@ -208,7 +208,7 @@ const pt = computed(() => ({
root: ({ props }: MultiSelectPassThroughMethodOptions) => ({
class: cn(
'h-10 relative inline-flex cursor-pointer select-none',
'rounded-lg bg-white dark-theme:bg-zinc-800 text-neutral dark-theme:text-white',
'rounded-lg bg-white dark-theme:bg-zinc-800 text-primary',
'transition-all duration-200 ease-in-out',
'border-[2.5px] border-solid',
selectedCount.value > 0

View File

@@ -4,7 +4,7 @@
v-if="!hidden"
:class="
cn(
'bg-zinc-500/10 dark-theme:bg-charcoal-600 box-border flex gap-4 items-center justify-start relative rounded-lg w-full h-16 px-4 py-0',
'bg-node-component-widget-input-surface box-border flex gap-4 items-center justify-start relative rounded-lg w-full h-16 px-4 py-0',
{ hidden: hideWhenEmpty && !hasAudio }
)
"
@@ -24,22 +24,22 @@
role="button"
:tabindex="0"
aria-label="Play/Pause"
class="flex size-6 cursor-pointer items-center justify-center rounded hover:bg-black/10 dark-theme:hover:bg-white/10"
class="flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered"
@click="togglePlayPause"
>
<i
v-if="!isPlaying"
class="icon-[lucide--play] size-4 text-gray-600 dark-theme:text-gray-800"
class="icon-[lucide--play] size-4 text-secondary"
/>
<i
v-else
class="icon-[lucide--pause] size-4 text-gray-600 dark-theme:text-gray-800"
class="icon-[lucide--pause] size-4 text-secondary"
/>
</div>
<!-- Time Display -->
<div
class="text-sm font-normal text-nowrap text-black dark-theme:text-white"
class="text-sm font-normal text-nowrap text-primary"
>
{{ formatTime(currentTime) }} / {{ formatTime(duration) }}
</div>
@@ -47,10 +47,10 @@
<!-- Progress Bar -->
<div
class="relative h-0.5 flex-1 rounded-full bg-gray-300 dark-theme:bg-stone-200"
class="relative h-0.5 flex-1 rounded-full bg-interface-stroke"
>
<div
class="absolute top-0 left-0 h-full rounded-full bg-gray-600 transition-all dark-theme:bg-white/50"
class="absolute top-0 left-0 h-full rounded-full bg-button-icon transition-all"
:style="{ width: `${progressPercentage}%` }"
/>
<input
@@ -72,20 +72,20 @@
role="button"
:tabindex="0"
aria-label="Volume"
class="flex size-6 cursor-pointer items-center justify-center rounded hover:bg-black/10 dark-theme:hover:bg-white/10"
class="flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered"
@click="toggleMute"
>
<i
v-if="showVolumeTwo"
class="icon-[lucide--volume-2] size-4 text-gray-600 dark-theme:text-gray-800"
class="icon-[lucide--volume-2] size-4 text-secondary"
/>
<i
v-else-if="showVolumeOne"
class="icon-[lucide--volume-1] size-4 text-gray-600 dark-theme:text-gray-800"
class="icon-[lucide--volume-1] size-4 text-secondary"
/>
<i
v-else
class="icon-[lucide--volume-x] size-4 text-gray-600 dark-theme:text-gray-800"
class="icon-[lucide--volume-x] size-4 text-secondary"
/>
</div>
@@ -96,11 +96,11 @@
role="button"
:tabindex="0"
aria-label="More Options"
class="flex size-6 cursor-pointer items-center justify-center rounded hover:bg-black/10 dark-theme:hover:bg-white/10"
class="flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered"
@click="toggleOptionsMenu"
>
<i
class="icon-[lucide--more-vertical] size-4 text-gray-600 dark-theme:text-gray-800"
class="icon-[lucide--more-vertical] size-4 text-secondary"
/>
</div>
</div>

View File

@@ -16,13 +16,13 @@
'bg-transparent border-none',
'text-center text-xs font-normal',
{
'bg-white': isSelected(option) && !disabled,
'hover:bg-zinc-200/50': !isSelected(option) && !disabled,
'bg-interface-menu-component-surface-selected': isSelected(option) && !disabled,
'hover:bg-interface-menu-component-surface-hovered': !isSelected(option) && !disabled,
'opacity-50 cursor-not-allowed': disabled,
'cursor-pointer': !disabled
},
isSelected(option) && !disabled
? 'text-neutral-900'
? 'text-primary'
: 'text-secondary'
)
"

View File

@@ -11,7 +11,7 @@ const filterSelected = defineModel<OptionId>('filterSelected')
</script>
<template>
<div class="mb-4 flex gap-1 px-4 text-zinc-400">
<div class="mb-4 flex gap-1 px-4 text-secondary">
<div
v-for="option in filterOptions"
:key="option.id"
@@ -19,10 +19,10 @@ const filterSelected = defineModel<OptionId>('filterSelected')
cn(
'px-4 py-2 rounded-md inline-flex justify-center items-center cursor-pointer select-none',
'transition-all duration-150',
'hover:text-black hover:dark-theme:text-white hover:bg-zinc-500/10',
'hover:text-primary hover:bg-interface-menu-component-surface-hovered',
'active:scale-95',
filterSelected === option.id
? '!bg-zinc-500/20 text-black dark-theme:text-white'
? '!bg-interface-menu-component-surface-selected text-primary'
: 'bg-transparent'
)
"

View File

@@ -60,9 +60,9 @@ function handleVideoLoad(event: Event) {
'transition-all duration-150',
{
'flex-col text-center': layout === 'grid',
'flex-row text-left max-h-16 bg-zinc-500/20 rounded-lg hover:scale-102 active:scale-98':
'flex-row text-left max-h-16 bg-interface-menu-component-surface-hovered rounded-lg hover:scale-102 active:scale-98':
layout === 'list',
'flex-row text-left hover:bg-zinc-500/20 rounded-lg':
'flex-row text-left hover:bg-interface-menu-component-surface-hovered rounded-lg':
layout === 'list-small',
// selection
'ring-2 ring-blue-500': layout === 'list' && selected
@@ -77,7 +77,7 @@ function handleVideoLoad(event: Event) {
:class="
cn(
'relative',
'w-full aspect-square overflow-hidden outline-1 outline-offset-[-1px] outline-zinc-300/10',
'w-full aspect-square overflow-hidden outline-1 outline-offset-[-1px] outline-interface-stroke',
'transition-all duration-150',
{
'min-w-16 max-w-16 rounded-l-lg': layout === 'list',
@@ -142,7 +142,7 @@ function handleVideoLoad(event: Event) {
{{ name }}
</span>
<!-- Meta Data -->
<span class="block text-xs text-slate-400">{{
<span class="block text-xs text-secondary">{{
metadata || actualDimensions
}}</span>
</div>