@nextclaw/ui 0.26.3 → 0.26.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/.vite/manifest.json +329 -329
  3. package/dist/assets/{account-panel-DIdHjKG-.js → account-panel-DVi_jhkG.js} +1 -1
  4. package/dist/assets/{api-DkLJrSCd.js → api-BZvNpFOS.js} +1 -1
  5. package/dist/assets/app-presenter-provider-BcYL-VNe.js +124 -0
  6. package/dist/assets/{appearance-settings-page-DI8aDY2G.js → appearance-settings-page-AZNBzLmT.js} +1 -1
  7. package/dist/assets/{book-open-BPMkKSci.js → book-open-CmRdT3N1.js} +1 -1
  8. package/dist/assets/card-CdRBL1E0.js +1 -0
  9. package/dist/assets/{channels-list-page-CCIaTQu7.js → channels-list-page-eZN74FN3.js} +2 -2
  10. package/dist/assets/{circle-dashed-B48a0t6p.js → circle-dashed-HOgt3gIJ.js} +1 -1
  11. package/dist/assets/{client-imrVphQb.js → client-DKKbdJ6Q.js} +1 -1
  12. package/dist/assets/config-split-page-BA3V6b3Q.js +1 -0
  13. package/dist/assets/{confirm-dialog-10Qb3dpZ.js → confirm-dialog-8vqYZ0wy.js} +1 -1
  14. package/dist/assets/{context-menu-CRqH2SEk.js → context-menu-DHVVdHzN.js} +1 -1
  15. package/dist/assets/{createLucideIcon-B4xj2I2g.js → createLucideIcon-DE0sB9Nu.js} +1 -1
  16. package/dist/assets/{desktop-capabilities-page-CFcT2g8-.js → desktop-capabilities-page-B9-B9k1A.js} +1 -1
  17. package/dist/assets/{desktop-update-config-CRJd_An1.js → desktop-update-config-Cfr3IRUe.js} +1 -1
  18. package/dist/assets/{dialog-BgL3vKJQ.js → dialog-BUfWO8hr.js} +1 -1
  19. package/dist/assets/{doc-browser-context-DH4aWvkS.js → doc-browser-context-ClLgMbxd.js} +1 -1
  20. package/dist/assets/doc-browser-w8q1j0jL.js +1 -0
  21. package/dist/assets/{download-Cr337h4W.js → download-CKqS1Ksj.js} +1 -1
  22. package/dist/assets/{es2015-D-CRf3_Z.js → es2015-BiB05Sav.js} +1 -1
  23. package/dist/assets/{extensions-CsmJPz7g.js → extensions-vPD4dGqt.js} +1 -1
  24. package/dist/assets/{eye-DrQRSAfJ.js → eye-bKzylu3p.js} +1 -1
  25. package/dist/assets/{form-actions-BEeWTGUZ.js → form-actions-CCoxz33Q.js} +1 -1
  26. package/dist/assets/{keyboard-shortcuts-settings-page-DQU56SrW.js → keyboard-shortcuts-settings-page-D8rosOVh.js} +1 -1
  27. package/dist/assets/loader-circle-Clq1Gtb1.js +1 -0
  28. package/dist/assets/{login-page-sgivRYG1.js → login-page-BT3GV3Sb.js} +1 -1
  29. package/dist/assets/login-page-DKId3By8.js +1 -0
  30. package/dist/assets/{main-B-oxUq-o.js → main-bEWCGDHr.js} +2 -2
  31. package/dist/assets/main-kqMRTwOs.css +1 -0
  32. package/dist/assets/mcp-marketplace-page-CZIP6j3L.js +1 -0
  33. package/dist/assets/{model-config-page-CDQBhmVr.js → model-config-page-D21a-BO0.js} +1 -1
  34. package/dist/assets/{navigation-link-D3pzNHeA.js → navigation-link-DC-Pku0Y.js} +1 -1
  35. package/dist/assets/panelStandalone-BRg7B1EI.css +1 -0
  36. package/dist/assets/{panelStandalone-CGkYeMK5.js → panelStandalone-CX8X2hjh.js} +2 -2
  37. package/dist/assets/{privacy-settings-page-CjoAkoDt.js → privacy-settings-page-e0LFHZJm.js} +1 -1
  38. package/dist/assets/{projects-C7Zxpcoi.js → projects-Rki7Fmth.js} +1 -1
  39. package/dist/assets/provider-models-DFQgF4hS.js +1 -0
  40. package/dist/assets/provider-scoped-model-input-DaONL0j_.js +1 -0
  41. package/dist/assets/providers-config-page-CEOhQlMe.js +1 -0
  42. package/dist/assets/{puzzle--RLCeYML.js → puzzle-D_TiFXOv.js} +1 -1
  43. package/dist/assets/{pwa-DcizGowz.js → pwa-C9ac_1dg.js} +1 -1
  44. package/dist/assets/{refresh-cw-syCVj_nw.js → refresh-cw-BG8VfcdA.js} +1 -1
  45. package/dist/assets/remote-DkSx5x4R.js +1 -0
  46. package/dist/assets/{rotate-cw-BlH9El3x.js → rotate-cw-DPEegUU2.js} +1 -1
  47. package/dist/assets/{runtime-config-page-Cco9dS73.js → runtime-config-page-DDT1dVLt.js} +1 -1
  48. package/dist/assets/{save-BWynuRQ2.js → save-CPlctBjT.js} +1 -1
  49. package/dist/assets/{search-config-page-Cc74_SAU.js → search-config-page-CDwmd6eX.js} +1 -1
  50. package/dist/assets/{secrets-config-page-raYDzlFC.js → secrets-config-page-1OvgmwPv.js} +1 -1
  51. package/dist/assets/security-config-Pv4CM-kw.js +1 -0
  52. package/dist/assets/{select-6Uq4chZW.js → select-Y9IEbx9x.js} +1 -1
  53. package/dist/assets/service-apps-panel-DPrLeF3N.js +1 -0
  54. package/dist/assets/{settings-2-COvVf1XX.js → settings-2-CrGx9_De.js} +1 -1
  55. package/dist/assets/{status-dot-DZlxa5zW.js → status-dot-Cb8ewlUr.js} +1 -1
  56. package/dist/assets/{tag-chip-DXHtZ8AS.js → tag-chip-D-6aPuuh.js} +1 -1
  57. package/dist/assets/{theme-provider-C5PCDBPB.js → theme-provider-BjF1Eowc.js} +1 -1
  58. package/dist/assets/{trash-2-DazgBvmJ.js → trash-2-DER2EJKK.js} +1 -1
  59. package/dist/assets/{use-config-DRRGF9Zb.js → use-config-BM5jC65L.js} +1 -1
  60. package/dist/assets/{use-desktop-capabilities-CdfOUjdE.js → use-desktop-capabilities-ezKJwKqg.js} +1 -1
  61. package/dist/assets/{use-viewport-layout-DdxVnCYc.js → use-viewport-layout-vmbQUNT6.js} +1 -1
  62. package/dist/assets/x-DSz9cGhy.js +1 -0
  63. package/dist/index.html +33 -33
  64. package/dist/panel-standalone.html +10 -10
  65. package/package.json +4 -4
  66. package/src/app/components/layout/__tests__/sidebar.layout.test.tsx +2 -2
  67. package/src/app/components/layout/sidebar-rail.styles.ts +3 -3
  68. package/src/app/styles/charcoal-theme.css +0 -3
  69. package/src/app/styles/design-system.css +12 -6
  70. package/src/app/styles/island-theme.css +2 -15
  71. package/src/features/app-data/components/app-data-removal-choice.tsx +1 -1
  72. package/src/features/channels/pages/channels-list-page.tsx +1 -1
  73. package/src/features/chat/components/chat-sidebar-list-mode-switch.tsx +1 -1
  74. package/src/features/chat/components/conversation/__tests__/chat-conversation-header-section.test.tsx +28 -16
  75. package/src/features/chat/components/conversation/chat-conversation-content.tsx +8 -2
  76. package/src/features/chat/components/layout/__tests__/chat-sidebar-session-area.test.tsx +6 -4
  77. package/src/features/chat/components/layout/__tests__/chat-sidebar-toolbar.test.tsx +22 -1
  78. package/src/features/chat/components/layout/chat-sidebar-desktop-layout.tsx +10 -14
  79. package/src/features/chat/components/layout/chat-sidebar-toolbar.tsx +38 -7
  80. package/src/features/chat/components/layout/chat-sidebar-utility-menu.tsx +4 -4
  81. package/src/features/chat/components/layout/chat-sidebar.tsx +2 -2
  82. package/src/features/chat/features/conversation/components/session-queued-input-rows.tsx +1 -1
  83. package/src/features/chat/features/message/components/chat-message-list.container.tsx +12 -1
  84. package/src/features/chat/features/message/components/chat-tool-call-stress-harness.tsx +32 -2
  85. package/src/features/chat/features/message/hooks/__tests__/use-chat-message-virtualizer.test.tsx +7 -5
  86. package/src/features/chat/features/message/hooks/use-chat-message-virtualizer.ts +7 -3
  87. package/src/features/chat/features/session/components/__tests__/chat-sidebar-project-groups.test.tsx +1 -1
  88. package/src/features/chat/features/session/components/chat-mobile-session-row.tsx +1 -1
  89. package/src/features/chat/features/session/components/chat-sidebar-context-card.tsx +1 -1
  90. package/src/features/chat/features/session/components/chat-sidebar-project-groups.tsx +1 -1
  91. package/src/features/chat/features/session/components/chat-sidebar-session-item.tsx +7 -5
  92. package/src/features/chat/features/session/components/chat-sidebar-session-list.tsx +45 -10
  93. package/src/features/chat/features/session/components/session-header/chat-session-more-actions-menu.tsx +3 -0
  94. package/src/features/chat/features/session/components/session-header/chat-session-switcher-groups.tsx +6 -6
  95. package/src/features/chat/features/session/components/session-header/chat-session-title-switcher.tsx +5 -4
  96. package/src/features/chat/features/session-type/components/chat-session-type-option-item.tsx +1 -1
  97. package/src/features/chat/features/welcome/components/chat-welcome-agent-picker.tsx +0 -1
  98. package/src/features/chat/features/welcome/components/chat-welcome-project-picker.tsx +1 -1
  99. package/src/features/chat/features/welcome/components/chat-welcome-prompt-suggestions.tsx +1 -1
  100. package/src/features/chat/features/welcome/components/chat-welcome-session-type-picker.tsx +1 -1
  101. package/src/features/chat/features/workspace/components/chat-session-workspace-file-breadcrumb-browser.tsx +2 -2
  102. package/src/features/chat/features/workspace/components/chat-session-workspace-file-breadcrumbs.tsx +2 -2
  103. package/src/features/chat/features/workspace/components/chat-session-workspace-panel-content.tsx +1 -1
  104. package/src/features/chat/features/workspace/components/child-sessions/chat-session-child-sessions.tsx +2 -2
  105. package/src/features/chat/features/workspace/components/file-content-preview/workspace-spreadsheet-preview.tsx +2 -2
  106. package/src/features/chat/features/workspace/components/overview/chat-session-continuous-attention.tsx +3 -3
  107. package/src/features/chat/features/workspace/components/overview/chat-session-token-usage.tsx +1 -1
  108. package/src/features/chat/features/workspace/components/project-files/workspace-directory-tree.tsx +4 -3
  109. package/src/features/chat/features/workspace/components/project-files/workspace-new-folder-tree-item.tsx +2 -1
  110. package/src/features/chat/features/workspace/components/session-cron-job-content.tsx +3 -3
  111. package/src/features/chat/features/workspace/components/workspace-file-content-preview.tsx +2 -2
  112. package/src/features/chat/features/workspace/components/workspace-markdown-outline.tsx +1 -1
  113. package/src/features/cron/components/cron-config.tsx +2 -2
  114. package/src/features/cron/components/cron-job-detail-dialog.tsx +1 -1
  115. package/src/features/cron/components/cron-job-row.tsx +3 -3
  116. package/src/features/cron/components/cron-task-discovery.tsx +1 -1
  117. package/src/features/inbox/pages/inbox-page.tsx +1 -1
  118. package/src/features/marketplace/components/curated-shelves/marketplace-curated-shelves.tsx +2 -2
  119. package/src/features/marketplace/components/curated-shelves/marketplace-shelf-card.tsx +2 -2
  120. package/src/features/marketplace/components/marketplace-list-card.tsx +4 -4
  121. package/src/features/marketplace/components/marketplace-page.tsx +2 -2
  122. package/src/features/marketplace/components/mcp/mcp-marketplace-card.tsx +2 -2
  123. package/src/features/marketplace/components/mcp/mcp-marketplace-page.tsx +3 -3
  124. package/src/features/panel-apps/components/panel-app-list-item.tsx +3 -3
  125. package/src/features/pwa/components/pwa-install-entry.tsx +1 -1
  126. package/src/features/right-panel-resources/components/__tests__/page-resource-sidebar-nav.test.tsx +9 -1
  127. package/src/features/right-panel-resources/components/page-resource-sidebar-nav.tsx +1 -1
  128. package/src/features/right-panel-resources/components/right-panel-resource-home-page.tsx +1 -1
  129. package/src/features/service-apps/components/service-action-row.tsx +3 -3
  130. package/src/features/service-apps/components/service-app-list-item.tsx +4 -4
  131. package/src/features/service-apps/components/service-apps-panel.tsx +1 -1
  132. package/src/features/settings/components/config/provider-model-list.tsx +5 -5
  133. package/src/features/settings/components/config/provider-model-suggestions-panel.tsx +4 -4
  134. package/src/features/settings/components/config/provider-pill-selector.tsx +1 -1
  135. package/src/features/settings/pages/appearance-settings-page.tsx +2 -2
  136. package/src/features/settings/pages/providers-config-page.tsx +6 -6
  137. package/src/features/side-dock/components/side-dock.tsx +4 -4
  138. package/src/index.css +4 -0
  139. package/src/platforms/desktop/components/desktop-window-chrome.tsx +1 -1
  140. package/src/platforms/mobile/components/mobile-bottom-nav.tsx +3 -3
  141. package/src/shared/components/common/brand-header.tsx +1 -1
  142. package/src/shared/components/common/searchable-model-input.tsx +2 -2
  143. package/src/shared/components/config-split-page.tsx +3 -3
  144. package/src/shared/components/doc-browser/doc-browser-tab-strip.tsx +2 -2
  145. package/src/shared/components/path-picker/server-path-picker-locations.tsx +1 -1
  146. package/src/shared/components/ui/button.tsx +2 -2
  147. package/src/shared/components/ui/card.tsx +1 -1
  148. package/src/shared/components/ui/context-menu/context-menu-items.tsx +3 -3
  149. package/src/shared/components/ui/input.tsx +7 -3
  150. package/src/shared/components/ui/overlays/sheet.tsx +1 -1
  151. package/src/shared/components/ui/popover.tsx +1 -1
  152. package/src/shared/components/ui/select.tsx +2 -2
  153. package/src/shared/components/ui/tab-strip/compact-tab-strip.tsx +3 -3
  154. package/src/shared/components/ui/tabs.tsx +1 -1
  155. package/dist/assets/app-presenter-provider-Co8uKOyW.js +0 -124
  156. package/dist/assets/card-Bqu8zWLq.js +0 -1
  157. package/dist/assets/config-split-page-Bd-bGKsw.js +0 -1
  158. package/dist/assets/doc-browser-52t2_rSF.js +0 -1
  159. package/dist/assets/loader-circle-DbOQWT9C.js +0 -1
  160. package/dist/assets/login-page-DW1AZXqX.js +0 -1
  161. package/dist/assets/main-BpL6OjwM.css +0 -1
  162. package/dist/assets/mcp-marketplace-page-DSLRpJEB.js +0 -1
  163. package/dist/assets/panelStandalone-D-mhAGNa.css +0 -1
  164. package/dist/assets/provider-models-YW7rIeOD.js +0 -1
  165. package/dist/assets/provider-scoped-model-input-axJ-pTEu.js +0 -1
  166. package/dist/assets/providers-config-page-_QhBXQ4M.js +0 -1
  167. package/dist/assets/remote-BLQU7aY5.js +0 -1
  168. package/dist/assets/security-config-aE_jOwy-.js +0 -1
  169. package/dist/assets/service-apps-panel-jBWAa4qZ.js +0 -1
  170. package/dist/assets/x-CQIp_nJT.js +0 -1
@@ -143,7 +143,7 @@ export function ProviderModelList(props: ProviderModelListProps) {
143
143
  return (
144
144
  <label
145
145
  key={modelName}
146
- className="inline-flex max-w-full cursor-pointer items-center gap-2 rounded-full border border-border/55 bg-muted/45 px-3 py-1.5 hover:bg-muted/70"
146
+ className="inline-flex max-w-full cursor-pointer items-center gap-2 rounded-full border border-border/55 bg-muted/45 px-3 py-1.5 hover:bg-[var(--interaction-hover)]"
147
147
  >
148
148
  <input
149
149
  type="checkbox"
@@ -180,7 +180,7 @@ export function ProviderModelList(props: ProviderModelListProps) {
180
180
  <PopoverTrigger asChild>
181
181
  <button
182
182
  type="button"
183
- className="inline-flex h-5 w-5 items-center justify-center rounded-full text-muted-foreground/70 opacity-100 transition-opacity hover:bg-muted hover:text-foreground md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100"
183
+ className="inline-flex h-5 w-5 items-center justify-center rounded-full text-muted-foreground/70 opacity-100 transition-opacity hover:bg-[var(--interaction-hover)] hover:text-foreground md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100"
184
184
  aria-label={t("providerModelThinkingTitle")}
185
185
  title={t("providerModelThinkingTitle")}
186
186
  >
@@ -224,8 +224,8 @@ export function ProviderModelList(props: ProviderModelListProps) {
224
224
  }
225
225
  className={`rounded-full border px-2.5 py-1 text-xs font-medium transition-colors ${
226
226
  selected
227
- ? "border-foreground/15 bg-foreground text-background"
228
- : "border-border/55 bg-muted/50 text-muted-foreground hover:border-border hover:bg-muted hover:text-foreground"
227
+ ? "border-[var(--interaction-selection-border)] bg-[var(--interaction-selection)] text-foreground"
228
+ : "border-border/55 bg-muted/50 text-muted-foreground hover:border-border hover:bg-[var(--interaction-hover)] hover:text-foreground"
229
229
  }`}
230
230
  >
231
231
  {formatThinkingLevelLabel(level)}
@@ -274,7 +274,7 @@ export function ProviderModelList(props: ProviderModelListProps) {
274
274
  <button
275
275
  type="button"
276
276
  onClick={() => onRemoveModel(modelName)}
277
- className="inline-flex h-5 w-5 items-center justify-center rounded-full text-muted-foreground/70 opacity-100 transition-opacity hover:bg-muted hover:text-foreground md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100"
277
+ className="inline-flex h-5 w-5 items-center justify-center rounded-full text-muted-foreground/70 opacity-100 transition-opacity hover:bg-[var(--interaction-hover)] hover:text-foreground md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100"
278
278
  aria-label={t("remove")}
279
279
  >
280
280
  <X className="h-3 w-3" />
@@ -69,7 +69,7 @@ export function ProviderModelSuggestionsPanel(props: ProviderModelSuggestionsPan
69
69
  <button
70
70
  type='button'
71
71
  aria-expanded={expanded}
72
- className='flex min-w-0 flex-1 items-center gap-1.5 rounded-lg px-2 py-1.5 text-left text-xs text-muted-foreground transition-colors hover:bg-muted/70 hover:text-foreground'
72
+ className='flex min-w-0 flex-1 items-center gap-1.5 rounded-lg px-2 py-1.5 text-left text-xs text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground'
73
73
  onClick={() => onExpandedChange(!expanded)}
74
74
  >
75
75
  <Sparkles className='h-3.5 w-3.5 shrink-0 text-primary' />
@@ -81,7 +81,7 @@ export function ProviderModelSuggestionsPanel(props: ProviderModelSuggestionsPan
81
81
  {models.length <= BULK_ADD_LIMIT ? (
82
82
  <button
83
83
  type='button'
84
- className='shrink-0 rounded-lg px-2 py-1.5 text-xs font-medium text-primary transition-colors hover:bg-primary/10'
84
+ className='shrink-0 rounded-lg px-2 py-1.5 text-xs font-medium text-primary transition-colors hover:bg-[var(--interaction-hover)]'
85
85
  onClick={() => addModels(models)}
86
86
  >
87
87
  {t('providerModelsSuggestionsAddAll')}
@@ -105,7 +105,7 @@ export function ProviderModelSuggestionsPanel(props: ProviderModelSuggestionsPan
105
105
  {visibleModels.map((modelName) => (
106
106
  <label
107
107
  key={modelName}
108
- className='grid min-w-0 cursor-pointer grid-cols-[auto_minmax(0,1fr)] items-center gap-2 rounded-lg px-2 py-1.5 hover:bg-muted/70'
108
+ className='grid min-w-0 cursor-pointer grid-cols-[auto_minmax(0,1fr)] items-center gap-2 rounded-lg px-2 py-1.5 hover:bg-[var(--interaction-hover)]'
109
109
  >
110
110
  <input
111
111
  type='checkbox'
@@ -137,7 +137,7 @@ export function ProviderModelSuggestionsPanel(props: ProviderModelSuggestionsPan
137
137
  <button
138
138
  type='button'
139
139
  disabled={selectedModels.length === 0}
140
- className='shrink-0 rounded-md bg-primary/10 px-2 py-1 text-[11px] font-medium text-primary transition-colors hover:bg-primary/15 disabled:cursor-not-allowed disabled:opacity-45'
140
+ className='shrink-0 rounded-md bg-primary/10 px-2 py-1 text-[11px] font-medium text-primary transition-colors hover:bg-[var(--interaction-hover)] disabled:cursor-not-allowed disabled:opacity-45'
141
141
  onClick={() => addModels(selectedModels)}
142
142
  >
143
143
  {t('providerModelsSuggestionsAddSelected')}
@@ -16,7 +16,7 @@ export function ProviderPillSelector(props: ProviderPillSelectorProps) {
16
16
  type="button"
17
17
  onClick={() => onChange(option.value)}
18
18
  aria-pressed={selected}
19
- className={`rounded-full border px-3 py-1.5 text-xs font-medium transition-colors ${selected ? 'border-foreground/15 bg-foreground text-background' : 'border-border/55 bg-muted/50 text-muted-foreground hover:border-border hover:bg-muted hover:text-foreground'}`}
19
+ className={`rounded-full border px-3 py-1.5 text-xs font-medium transition-colors ${selected ? 'border-[var(--interaction-selection-border)] bg-[var(--interaction-selection)] text-foreground' : 'border-border/55 bg-muted/50 text-muted-foreground hover:border-border hover:bg-[var(--interaction-hover)] hover:text-foreground'}`}
20
20
  >
21
21
  {option.label}
22
22
  </button>
@@ -100,8 +100,8 @@ export function AppearanceSettingsPage() {
100
100
  className={cn(
101
101
  'flex min-w-0 items-start gap-3 rounded-lg px-3 py-2.5 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',
102
102
  selected
103
- ? 'bg-card text-foreground shadow-sm'
104
- : 'text-muted-foreground hover:bg-card/60 hover:text-foreground'
103
+ ? 'bg-[var(--interaction-selection)] text-foreground'
104
+ : 'text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-foreground'
105
105
  )}
106
106
  >
107
107
  <span
@@ -156,7 +156,7 @@ export function ProvidersConfigPage() {
156
156
  <div className='grid max-h-[24rem] grid-cols-2 gap-2 overflow-y-auto sm:grid-cols-3'>
157
157
  <button
158
158
  type='button'
159
- className='flex min-h-20 w-full flex-col items-start gap-2 rounded-lg border border-dashed border-border/70 bg-muted/20 px-3 py-2 text-left transition-colors hover:border-border hover:bg-muted/45'
159
+ className='flex min-h-20 w-full flex-col items-start gap-2 rounded-lg border border-dashed border-border/70 bg-muted/20 px-3 py-2 text-left transition-colors hover:border-border hover:bg-[var(--interaction-hover)]'
160
160
  onClick={async () => {
161
161
  try {
162
162
  const result = await createProvider.mutateAsync({
@@ -183,7 +183,7 @@ export function ProvidersConfigPage() {
183
183
  <button
184
184
  key={template.providerType}
185
185
  type='button'
186
- className='flex min-h-20 w-full flex-col items-start gap-2 rounded-lg border border-border/55 bg-muted/15 px-3 py-2 text-left transition-colors hover:border-border/80 hover:bg-muted/40'
186
+ className='flex min-h-20 w-full flex-col items-start gap-2 rounded-lg border border-border/55 bg-muted/15 px-3 py-2 text-left transition-colors hover:border-border/80 hover:bg-[var(--interaction-hover)]'
187
187
  onClick={async () => {
188
188
  try {
189
189
  const result = await createProvider.mutateAsync({
@@ -254,8 +254,8 @@ export function ProvidersConfigPage() {
254
254
  className={cn(
255
255
  'group w-full rounded-xl p-2.5 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',
256
256
  resolvedSelectedProvider === provider.providerId
257
- ? 'bg-background/95 text-foreground shadow-sm'
258
- : 'bg-transparent text-muted-foreground hover:bg-background/65 hover:text-foreground'
257
+ ? 'bg-[var(--interaction-selection)] text-foreground'
258
+ : 'bg-transparent text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-foreground'
259
259
  )}
260
260
  >
261
261
  <div className='relative min-h-10'>
@@ -300,7 +300,7 @@ export function ProvidersConfigPage() {
300
300
  <PopoverTrigger asChild>
301
301
  <button
302
302
  type='button'
303
- className='inline-flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground/70 hover:bg-muted hover:text-foreground'
303
+ className='inline-flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground/70 hover:bg-[var(--interaction-hover)] hover:text-foreground'
304
304
  onClick={(event) => event.stopPropagation()}
305
305
  title={t('more')}
306
306
  >
@@ -310,7 +310,7 @@ export function ProvidersConfigPage() {
310
310
  <PopoverContent className='w-40 p-1' align='end' onClick={(event) => event.stopPropagation()}>
311
311
  <button
312
312
  type='button'
313
- className='flex w-full items-center gap-2 rounded-md px-2 py-2 text-sm text-red-600 hover:bg-red-50'
313
+ className='flex w-full items-center gap-2 rounded-md px-2 py-2 text-sm text-red-600 hover:bg-destructive/10'
314
314
  onClick={() => setProviderToDelete(provider.providerId)}
315
315
  >
316
316
  <Trash2 className='h-4 w-4' />
@@ -60,9 +60,9 @@ function SideDockButton({
60
60
  onClick={() => onOpen(item)}
61
61
  className={cn(
62
62
  'flex h-10 w-10 shrink-0 items-center justify-center rounded-lg text-muted-foreground transition-colors',
63
- 'hover:bg-primary/10 hover:text-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border',
63
+ 'hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border',
64
64
  active
65
- ? 'bg-primary/10 text-primary'
65
+ ? 'bg-[var(--interaction-selection)] text-foreground hover:bg-[var(--interaction-selection)]'
66
66
  : 'bg-transparent',
67
67
  )}
68
68
  >
@@ -78,7 +78,7 @@ function SideDockButton({
78
78
  event.stopPropagation();
79
79
  onUnpin(item);
80
80
  }}
81
- className="absolute -right-1 -top-1 hidden h-4 w-4 items-center justify-center rounded-full bg-background text-muted-foreground shadow-sm ring-1 ring-border/70 transition-colors hover:bg-muted hover:text-foreground group-hover:flex focus-visible:flex focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border"
81
+ className="absolute -right-1 -top-1 hidden h-4 w-4 items-center justify-center rounded-full bg-background text-muted-foreground shadow-sm ring-1 ring-border/70 transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground group-hover:flex focus-visible:flex focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border"
82
82
  >
83
83
  <X className="h-3 w-3" aria-hidden="true" />
84
84
  </button>
@@ -109,7 +109,7 @@ function SideDockActionButton({
109
109
  onClick={onClick}
110
110
  className={cn(
111
111
  'flex h-10 w-10 shrink-0 items-center justify-center rounded-lg text-muted-foreground transition-colors',
112
- 'hover:bg-primary/10 hover:text-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border',
112
+ 'hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border',
113
113
  )}
114
114
  >
115
115
  <Icon className="h-5 w-5" aria-hidden="true" />
package/src/index.css CHANGED
@@ -140,6 +140,10 @@
140
140
  box-shadow: var(--shadow-card);
141
141
  }
142
142
 
143
+ .shadow-floating {
144
+ box-shadow: var(--shadow-popover);
145
+ }
146
+
143
147
  .shadow-card-hover {
144
148
  box-shadow: var(--shadow-card-hover);
145
149
  }
@@ -90,7 +90,7 @@ function DesktopWindowControlButton({
90
90
  className={
91
91
  control.variant === "danger"
92
92
  ? "desktop-window-no-drag flex h-10 w-[46px] items-center justify-center text-gray-700 transition-colors hover:bg-red-500 hover:text-white"
93
- : "desktop-window-no-drag flex h-10 w-[46px] items-center justify-center text-gray-700 transition-colors hover:bg-black/10"
93
+ : "desktop-window-no-drag flex h-10 w-[46px] items-center justify-center text-gray-700 transition-colors hover:bg-[var(--interaction-hover)]"
94
94
  }
95
95
  onClick={() => {
96
96
  void window.nextclawDesktop?.controlWindow?.(control.action);
@@ -40,8 +40,8 @@ export function MobileBottomNav() {
40
40
  className={cn(
41
41
  "group flex min-h-12 flex-col items-center justify-center gap-1 rounded-xl px-0.5 py-1 text-[11px] font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border",
42
42
  active
43
- ? "bg-muted text-foreground"
44
- : "text-muted-foreground hover:bg-muted hover:text-foreground",
43
+ ? "bg-[var(--interaction-selection)] text-foreground"
44
+ : "text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-foreground",
45
45
  )}
46
46
  >
47
47
  <span className="relative">
@@ -64,7 +64,7 @@ export function MobileBottomNav() {
64
64
  <button
65
65
  type="button"
66
66
  onClick={() => openApps(docBrowser)}
67
- className="group flex min-h-12 w-full flex-col items-center justify-center gap-1 rounded-xl px-0.5 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border"
67
+ className="group flex min-h-12 w-full flex-col items-center justify-center gap-1 rounded-xl px-0.5 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border"
68
68
  >
69
69
  <Boxes className="h-5 w-5 text-muted-foreground" />
70
70
  <span className="max-w-full truncate">{t("appsTitle")}</span>
@@ -181,7 +181,7 @@ function RuntimeUpdateReleaseNotesHover({
181
181
  external
182
182
  icon={null}
183
183
  aria-label={label}
184
- className="whitespace-nowrap rounded-md border bg-popover px-3 py-1.5 text-left text-xs font-medium text-popover-foreground shadow-md outline-none transition-colors hover:bg-gray-100 focus-visible:ring-2 focus-visible:ring-gray-300"
184
+ className="whitespace-nowrap rounded-md border bg-popover px-3 py-1.5 text-left text-xs font-medium text-popover-foreground shadow-md outline-none transition-colors hover:bg-[var(--interaction-hover)] focus-visible:ring-2 focus-visible:ring-gray-300"
185
185
  >
186
186
  {label}
187
187
  </NavigationLink>
@@ -152,7 +152,7 @@ export function SearchableModelInput({
152
152
  onChange(value.trim());
153
153
  closeMenu();
154
154
  }}
155
- className="flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-gray-50"
155
+ className="flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-[var(--interaction-hover)]"
156
156
  >
157
157
  <Check className="h-4 w-4 text-transparent" />
158
158
  <span className="truncate text-gray-700">
@@ -170,7 +170,7 @@ export function SearchableModelInput({
170
170
  onChange(option);
171
171
  closeMenu();
172
172
  }}
173
- className="flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-gray-50"
173
+ className="flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-[var(--interaction-hover)]"
174
174
  >
175
175
  <Check className={cn('h-4 w-4', option === value.trim() ? 'text-primary' : 'text-transparent')} />
176
176
  <span className="truncate text-gray-700">{option}</span>
@@ -47,7 +47,7 @@ export function ConfigSplitPage({
47
47
  <button
48
48
  type='button'
49
49
  onClick={onMobileBack}
50
- className='inline-flex items-center gap-2 rounded-lg px-2 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40'
50
+ className='inline-flex items-center gap-2 rounded-lg px-2 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40'
51
51
  >
52
52
  <ArrowLeft className='h-4 w-4' />
53
53
  <span>{mobileListLabel ?? t('backToMain')}</span>
@@ -122,8 +122,8 @@ export function ConfigSelectionCard({
122
122
  className={cn(
123
123
  'w-full rounded-xl p-2.5 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',
124
124
  active
125
- ? 'bg-background/95 text-foreground shadow-sm'
126
- : 'bg-transparent text-muted-foreground hover:bg-background/65 hover:text-foreground',
125
+ ? 'bg-[var(--interaction-selection)] text-foreground'
126
+ : 'bg-transparent text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-foreground',
127
127
  className
128
128
  )}
129
129
  {...props}
@@ -130,8 +130,8 @@ export function DocBrowserTabStrip({
130
130
  tabsClassName="items-center gap-0.5"
131
131
  actionsClassName="h-full max-md:h-11 max-md:w-full items-center gap-0.5"
132
132
  tabBaseClassName="inline-flex cursor-pointer items-center gap-0.5 h-7 max-md:min-h-11 px-2 rounded-md text-xs max-w-[220px] shrink-0 transition-colors"
133
- activeTabClassName="bg-muted/80 text-foreground"
134
- inactiveTabClassName="text-muted-foreground hover:bg-muted/45 hover:text-foreground"
133
+ activeTabClassName="bg-[var(--interaction-selection)] text-foreground"
134
+ inactiveTabClassName="text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-foreground"
135
135
  labelClassName="px-0.5 text-xs font-normal"
136
136
 
137
137
  />
@@ -112,7 +112,7 @@ export function ServerPathPickerLocations({
112
112
  type="button"
113
113
  className={cn(
114
114
  'flex w-full items-center gap-2 rounded-md px-2 py-2 text-left text-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border',
115
- active ? 'bg-primary/12 text-primary' : 'text-foreground hover:bg-[var(--interaction-hover)]',
115
+ active ? 'bg-[var(--interaction-selection)] text-foreground' : 'text-foreground hover:bg-[var(--interaction-hover)]',
116
116
  )}
117
117
  aria-current={active ? 'location' : undefined}
118
118
  onClick={() => onNavigate(item.path)}
@@ -7,13 +7,13 @@ const buttonVariants = cva(
7
7
  {
8
8
  variants: {
9
9
  variant: {
10
- default: 'bg-primary text-primary-foreground hover:bg-primary-600 active:bg-primary-700 shadow-sm',
10
+ default: 'bg-primary text-primary-foreground hover:bg-[hsl(var(--primary-hover))] active:bg-[hsl(var(--primary-active))] shadow-sm',
11
11
  destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
12
12
  outline: 'border border-border bg-card text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-accent-foreground',
13
13
  secondary: 'bg-muted text-foreground hover:bg-[var(--interaction-hover)] hover:text-accent-foreground',
14
14
  ghost: 'text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-accent-foreground',
15
15
  link: 'text-primary underline-offset-4 hover:underline',
16
- primary: 'bg-primary text-primary-foreground hover:bg-primary-600 active:bg-primary-700 shadow-sm',
16
+ primary: 'bg-primary text-primary-foreground hover:bg-[hsl(var(--primary-hover))] active:bg-[hsl(var(--primary-active))] shadow-sm',
17
17
  subtle: 'bg-muted text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-accent-foreground',
18
18
  'primary-outline': 'border border-primary/30 text-primary hover:bg-primary hover:text-primary-foreground'
19
19
  },
@@ -17,7 +17,7 @@ const Card = React.forwardRef<
17
17
  ? 'border-border shadow-card'
18
18
  : 'border-border/75 shadow-none',
19
19
  hover && surface === 'raised' && 'hover:border-primary/25 hover:shadow-card-hover',
20
- hover && surface === 'flat' && 'hover:bg-muted/40',
20
+ hover && surface === 'flat' && 'hover:bg-[var(--interaction-hover)]',
21
21
  className
22
22
  )}
23
23
  {...props}
@@ -2,11 +2,11 @@ import { useCallback, useEffect, useRef, useState, type ReactNode } from "react"
2
2
  import * as Popover from "@radix-ui/react-popover";
3
3
  import { ChevronRight } from "lucide-react";
4
4
  import { cn } from "@/shared/lib/utils";
5
- import { ACTION_FEEDBACK, ACTION_MENU_ITEM_CLASS } from '../actions/action-feedback';
5
+ import { ACTION_FEEDBACK, ACTION_MENU_ITEM_CLASS } from '@/shared/components/ui/actions/action-feedback';
6
6
  import type { ContextMenuGroup, ContextMenuItem } from "./context-menu";
7
7
 
8
8
  export const CONTEXT_MENU_SURFACE_CLASS =
9
- "w-max min-w-52 max-w-[min(18rem,calc(100vw-16px))] overflow-y-auto rounded-xl border border-border bg-popover p-1 text-popover-foreground shadow-[0_18px_48px_-20px_rgba(15,23,42,0.42)] outline-none";
9
+ "w-max min-w-52 max-w-[min(18rem,calc(100vw-16px))] overflow-y-auto rounded-xl border border-border/40 bg-popover p-1 text-popover-foreground shadow-floating outline-none";
10
10
 
11
11
  function MenuItemContent({ item }: { item: ContextMenuItem }) {
12
12
  return <>
@@ -152,7 +152,7 @@ export function ContextMenuItems({ groups, onClose }: {
152
152
  }}
153
153
  >
154
154
  {groups.filter((group) => group.items.length).map((group, index) => <div key={group.key} role="group">
155
- {index > 0 ? <div className="my-1 h-px bg-border" /> : null}
155
+ {index > 0 ? <div className="mx-2 my-1 h-px bg-border/50" /> : null}
156
156
  {group.items.map((item) => {
157
157
  const className = cn(
158
158
  ACTION_MENU_ITEM_CLASS,
@@ -1,16 +1,20 @@
1
1
  import * as React from 'react';
2
2
  import { cn } from '@/shared/lib/utils';
3
3
 
4
- export type InputProps = React.InputHTMLAttributes<HTMLInputElement>;
4
+ export type InputProps = React.InputHTMLAttributes<HTMLInputElement> & {
5
+ density?: 'default' | 'compact';
6
+ };
5
7
 
6
8
  const Input = React.forwardRef<HTMLInputElement, InputProps>(
7
- ({ className, type, ...props }, ref) => {
9
+ ({ className, density = 'default', type, ...props }, ref) => {
8
10
  return (
9
11
  <input
10
12
  type={type}
11
13
  className={cn(
12
14
  'flex h-9 w-full rounded-xl border border-border/75 bg-card px-3.5 py-2 text-sm text-foreground file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground/55 placeholder:font-normal transition-colors focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50',
13
- 'max-md:min-h-[var(--control-touch-size)] max-md:text-base',
15
+ density === 'default'
16
+ ? 'max-md:min-h-[var(--control-touch-size)] max-md:text-base'
17
+ : 'text-[13px] max-md:min-h-0 max-md:text-[13px]',
14
18
  className
15
19
  )}
16
20
  ref={ref}
@@ -69,7 +69,7 @@ const SheetContent = React.forwardRef<
69
69
  }}
70
70
  >
71
71
  {children}
72
- <SheetPrimitive.Close className="absolute right-4 top-4 rounded-lg p-1.5 text-muted-foreground opacity-75 transition-colors hover:bg-muted hover:text-foreground hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:pointer-events-none">
72
+ <SheetPrimitive.Close className="absolute right-4 top-4 rounded-lg p-1.5 text-muted-foreground opacity-75 transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:pointer-events-none">
73
73
  <X className="h-4 w-4" />
74
74
  <span className="sr-only">{closeLabel}</span>
75
75
  </SheetPrimitive.Close>
@@ -31,7 +31,7 @@ const PopoverContent = React.forwardRef<
31
31
  align={align}
32
32
  collisionPadding={collisionPadding}
33
33
  className={cn(
34
- 'z-[var(--z-popover,10100)] w-72 overflow-x-hidden overflow-y-auto rounded-2xl border border-border bg-popover p-4 text-popover-foreground shadow-lg animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
34
+ 'z-[var(--z-popover,10100)] w-72 overflow-x-hidden overflow-y-auto rounded-xl border border-border/40 bg-popover p-4 text-popover-foreground shadow-floating animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
35
35
  className,
36
36
  variant === 'menu' && CONTEXT_MENU_SURFACE_CLASS
37
37
  )}
@@ -80,7 +80,7 @@ const SelectContent = React.forwardRef<
80
80
  ref={ref}
81
81
  data-theme-overlay="select"
82
82
  className={cn(
83
- "relative z-[var(--z-popover,10100)] flex max-h-96 min-w-[8rem] flex-col overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
83
+ "relative z-[var(--z-popover,10100)] flex max-h-96 min-w-[8rem] flex-col overflow-hidden rounded-xl border border-border/40 bg-popover text-popover-foreground shadow-floating data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
84
84
  position === "popper" &&
85
85
  "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
86
86
  className
@@ -121,7 +121,7 @@ const SelectItem = React.forwardRef<
121
121
  <SelectPrimitive.Item
122
122
  ref={ref}
123
123
  className={cn(
124
- "relative flex max-md:min-h-[var(--control-touch-size)] w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 hover:bg-[var(--interaction-hover)]",
124
+ "relative flex max-md:min-h-[var(--control-touch-size)] w-full cursor-default select-none items-center rounded-lg py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-[var(--interaction-hover)] focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 hover:bg-[var(--interaction-hover)]",
125
125
  className
126
126
  )}
127
127
  {...props}
@@ -236,9 +236,9 @@ function CompactTabItem({
236
236
  "flex max-w-[180px] cursor-pointer items-center gap-1.5 border-r border-gray-200/70 border-b-2 px-2.5 py-2 transition-colors",
237
237
  "group relative",
238
238
  tab.active
239
- ? (activeTabClassName ?? "border-b-primary bg-white text-gray-900")
239
+ ? (activeTabClassName ?? "border-b-primary bg-[var(--interaction-selection)] text-foreground")
240
240
  : (inactiveTabClassName ??
241
- "border-b-transparent bg-gray-50/85 text-gray-500 hover:bg-gray-100"),
241
+ "border-b-transparent bg-transparent text-muted-foreground hover:bg-[var(--interaction-hover)]"),
242
242
  )}
243
243
  >
244
244
  <CompactTabLabelButton tab={tab} labelClassName={labelClassName} />
@@ -287,7 +287,7 @@ export function CompactTabStrip({
287
287
  >
288
288
  <div
289
289
  className={cn(
290
- "min-w-0 flex-1 overflow-x-auto overflow-y-hidden",
290
+ "flex min-w-0 flex-1 items-stretch overflow-x-auto overflow-y-hidden",
291
291
  scrollClassName,
292
292
  )}
293
293
  onPointerDown={onScrollPointerDown}
@@ -89,7 +89,7 @@ export function TabsTrigger({ value, children, className }: TabsTriggerProps) {
89
89
  className={cn(
90
90
  'inline-flex max-md:min-h-[var(--control-touch-size)] items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-[13px] font-medium transition-all duration-fast focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:pointer-events-none disabled:opacity-50',
91
91
  isActive
92
- ? 'bg-card text-foreground shadow-sm'
92
+ ? 'bg-[var(--interaction-selection)] text-foreground'
93
93
  : 'text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-accent-foreground',
94
94
  className
95
95
  )}