@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.
- package/CHANGELOG.md +24 -0
- package/dist/.vite/manifest.json +329 -329
- package/dist/assets/{account-panel-DIdHjKG-.js → account-panel-DVi_jhkG.js} +1 -1
- package/dist/assets/{api-DkLJrSCd.js → api-BZvNpFOS.js} +1 -1
- package/dist/assets/app-presenter-provider-BcYL-VNe.js +124 -0
- package/dist/assets/{appearance-settings-page-DI8aDY2G.js → appearance-settings-page-AZNBzLmT.js} +1 -1
- package/dist/assets/{book-open-BPMkKSci.js → book-open-CmRdT3N1.js} +1 -1
- package/dist/assets/card-CdRBL1E0.js +1 -0
- package/dist/assets/{channels-list-page-CCIaTQu7.js → channels-list-page-eZN74FN3.js} +2 -2
- package/dist/assets/{circle-dashed-B48a0t6p.js → circle-dashed-HOgt3gIJ.js} +1 -1
- package/dist/assets/{client-imrVphQb.js → client-DKKbdJ6Q.js} +1 -1
- package/dist/assets/config-split-page-BA3V6b3Q.js +1 -0
- package/dist/assets/{confirm-dialog-10Qb3dpZ.js → confirm-dialog-8vqYZ0wy.js} +1 -1
- package/dist/assets/{context-menu-CRqH2SEk.js → context-menu-DHVVdHzN.js} +1 -1
- package/dist/assets/{createLucideIcon-B4xj2I2g.js → createLucideIcon-DE0sB9Nu.js} +1 -1
- package/dist/assets/{desktop-capabilities-page-CFcT2g8-.js → desktop-capabilities-page-B9-B9k1A.js} +1 -1
- package/dist/assets/{desktop-update-config-CRJd_An1.js → desktop-update-config-Cfr3IRUe.js} +1 -1
- package/dist/assets/{dialog-BgL3vKJQ.js → dialog-BUfWO8hr.js} +1 -1
- package/dist/assets/{doc-browser-context-DH4aWvkS.js → doc-browser-context-ClLgMbxd.js} +1 -1
- package/dist/assets/doc-browser-w8q1j0jL.js +1 -0
- package/dist/assets/{download-Cr337h4W.js → download-CKqS1Ksj.js} +1 -1
- package/dist/assets/{es2015-D-CRf3_Z.js → es2015-BiB05Sav.js} +1 -1
- package/dist/assets/{extensions-CsmJPz7g.js → extensions-vPD4dGqt.js} +1 -1
- package/dist/assets/{eye-DrQRSAfJ.js → eye-bKzylu3p.js} +1 -1
- package/dist/assets/{form-actions-BEeWTGUZ.js → form-actions-CCoxz33Q.js} +1 -1
- package/dist/assets/{keyboard-shortcuts-settings-page-DQU56SrW.js → keyboard-shortcuts-settings-page-D8rosOVh.js} +1 -1
- package/dist/assets/loader-circle-Clq1Gtb1.js +1 -0
- package/dist/assets/{login-page-sgivRYG1.js → login-page-BT3GV3Sb.js} +1 -1
- package/dist/assets/login-page-DKId3By8.js +1 -0
- package/dist/assets/{main-B-oxUq-o.js → main-bEWCGDHr.js} +2 -2
- package/dist/assets/main-kqMRTwOs.css +1 -0
- package/dist/assets/mcp-marketplace-page-CZIP6j3L.js +1 -0
- package/dist/assets/{model-config-page-CDQBhmVr.js → model-config-page-D21a-BO0.js} +1 -1
- package/dist/assets/{navigation-link-D3pzNHeA.js → navigation-link-DC-Pku0Y.js} +1 -1
- package/dist/assets/panelStandalone-BRg7B1EI.css +1 -0
- package/dist/assets/{panelStandalone-CGkYeMK5.js → panelStandalone-CX8X2hjh.js} +2 -2
- package/dist/assets/{privacy-settings-page-CjoAkoDt.js → privacy-settings-page-e0LFHZJm.js} +1 -1
- package/dist/assets/{projects-C7Zxpcoi.js → projects-Rki7Fmth.js} +1 -1
- package/dist/assets/provider-models-DFQgF4hS.js +1 -0
- package/dist/assets/provider-scoped-model-input-DaONL0j_.js +1 -0
- package/dist/assets/providers-config-page-CEOhQlMe.js +1 -0
- package/dist/assets/{puzzle--RLCeYML.js → puzzle-D_TiFXOv.js} +1 -1
- package/dist/assets/{pwa-DcizGowz.js → pwa-C9ac_1dg.js} +1 -1
- package/dist/assets/{refresh-cw-syCVj_nw.js → refresh-cw-BG8VfcdA.js} +1 -1
- package/dist/assets/remote-DkSx5x4R.js +1 -0
- package/dist/assets/{rotate-cw-BlH9El3x.js → rotate-cw-DPEegUU2.js} +1 -1
- package/dist/assets/{runtime-config-page-Cco9dS73.js → runtime-config-page-DDT1dVLt.js} +1 -1
- package/dist/assets/{save-BWynuRQ2.js → save-CPlctBjT.js} +1 -1
- package/dist/assets/{search-config-page-Cc74_SAU.js → search-config-page-CDwmd6eX.js} +1 -1
- package/dist/assets/{secrets-config-page-raYDzlFC.js → secrets-config-page-1OvgmwPv.js} +1 -1
- package/dist/assets/security-config-Pv4CM-kw.js +1 -0
- package/dist/assets/{select-6Uq4chZW.js → select-Y9IEbx9x.js} +1 -1
- package/dist/assets/service-apps-panel-DPrLeF3N.js +1 -0
- package/dist/assets/{settings-2-COvVf1XX.js → settings-2-CrGx9_De.js} +1 -1
- package/dist/assets/{status-dot-DZlxa5zW.js → status-dot-Cb8ewlUr.js} +1 -1
- package/dist/assets/{tag-chip-DXHtZ8AS.js → tag-chip-D-6aPuuh.js} +1 -1
- package/dist/assets/{theme-provider-C5PCDBPB.js → theme-provider-BjF1Eowc.js} +1 -1
- package/dist/assets/{trash-2-DazgBvmJ.js → trash-2-DER2EJKK.js} +1 -1
- package/dist/assets/{use-config-DRRGF9Zb.js → use-config-BM5jC65L.js} +1 -1
- package/dist/assets/{use-desktop-capabilities-CdfOUjdE.js → use-desktop-capabilities-ezKJwKqg.js} +1 -1
- package/dist/assets/{use-viewport-layout-DdxVnCYc.js → use-viewport-layout-vmbQUNT6.js} +1 -1
- package/dist/assets/x-DSz9cGhy.js +1 -0
- package/dist/index.html +33 -33
- package/dist/panel-standalone.html +10 -10
- package/package.json +4 -4
- package/src/app/components/layout/__tests__/sidebar.layout.test.tsx +2 -2
- package/src/app/components/layout/sidebar-rail.styles.ts +3 -3
- package/src/app/styles/charcoal-theme.css +0 -3
- package/src/app/styles/design-system.css +12 -6
- package/src/app/styles/island-theme.css +2 -15
- package/src/features/app-data/components/app-data-removal-choice.tsx +1 -1
- package/src/features/channels/pages/channels-list-page.tsx +1 -1
- package/src/features/chat/components/chat-sidebar-list-mode-switch.tsx +1 -1
- package/src/features/chat/components/conversation/__tests__/chat-conversation-header-section.test.tsx +28 -16
- package/src/features/chat/components/conversation/chat-conversation-content.tsx +8 -2
- package/src/features/chat/components/layout/__tests__/chat-sidebar-session-area.test.tsx +6 -4
- package/src/features/chat/components/layout/__tests__/chat-sidebar-toolbar.test.tsx +22 -1
- package/src/features/chat/components/layout/chat-sidebar-desktop-layout.tsx +10 -14
- package/src/features/chat/components/layout/chat-sidebar-toolbar.tsx +38 -7
- package/src/features/chat/components/layout/chat-sidebar-utility-menu.tsx +4 -4
- package/src/features/chat/components/layout/chat-sidebar.tsx +2 -2
- package/src/features/chat/features/conversation/components/session-queued-input-rows.tsx +1 -1
- package/src/features/chat/features/message/components/chat-message-list.container.tsx +12 -1
- package/src/features/chat/features/message/components/chat-tool-call-stress-harness.tsx +32 -2
- package/src/features/chat/features/message/hooks/__tests__/use-chat-message-virtualizer.test.tsx +7 -5
- package/src/features/chat/features/message/hooks/use-chat-message-virtualizer.ts +7 -3
- package/src/features/chat/features/session/components/__tests__/chat-sidebar-project-groups.test.tsx +1 -1
- package/src/features/chat/features/session/components/chat-mobile-session-row.tsx +1 -1
- package/src/features/chat/features/session/components/chat-sidebar-context-card.tsx +1 -1
- package/src/features/chat/features/session/components/chat-sidebar-project-groups.tsx +1 -1
- package/src/features/chat/features/session/components/chat-sidebar-session-item.tsx +7 -5
- package/src/features/chat/features/session/components/chat-sidebar-session-list.tsx +45 -10
- package/src/features/chat/features/session/components/session-header/chat-session-more-actions-menu.tsx +3 -0
- package/src/features/chat/features/session/components/session-header/chat-session-switcher-groups.tsx +6 -6
- package/src/features/chat/features/session/components/session-header/chat-session-title-switcher.tsx +5 -4
- package/src/features/chat/features/session-type/components/chat-session-type-option-item.tsx +1 -1
- package/src/features/chat/features/welcome/components/chat-welcome-agent-picker.tsx +0 -1
- package/src/features/chat/features/welcome/components/chat-welcome-project-picker.tsx +1 -1
- package/src/features/chat/features/welcome/components/chat-welcome-prompt-suggestions.tsx +1 -1
- package/src/features/chat/features/welcome/components/chat-welcome-session-type-picker.tsx +1 -1
- package/src/features/chat/features/workspace/components/chat-session-workspace-file-breadcrumb-browser.tsx +2 -2
- package/src/features/chat/features/workspace/components/chat-session-workspace-file-breadcrumbs.tsx +2 -2
- package/src/features/chat/features/workspace/components/chat-session-workspace-panel-content.tsx +1 -1
- package/src/features/chat/features/workspace/components/child-sessions/chat-session-child-sessions.tsx +2 -2
- package/src/features/chat/features/workspace/components/file-content-preview/workspace-spreadsheet-preview.tsx +2 -2
- package/src/features/chat/features/workspace/components/overview/chat-session-continuous-attention.tsx +3 -3
- package/src/features/chat/features/workspace/components/overview/chat-session-token-usage.tsx +1 -1
- package/src/features/chat/features/workspace/components/project-files/workspace-directory-tree.tsx +4 -3
- package/src/features/chat/features/workspace/components/project-files/workspace-new-folder-tree-item.tsx +2 -1
- package/src/features/chat/features/workspace/components/session-cron-job-content.tsx +3 -3
- package/src/features/chat/features/workspace/components/workspace-file-content-preview.tsx +2 -2
- package/src/features/chat/features/workspace/components/workspace-markdown-outline.tsx +1 -1
- package/src/features/cron/components/cron-config.tsx +2 -2
- package/src/features/cron/components/cron-job-detail-dialog.tsx +1 -1
- package/src/features/cron/components/cron-job-row.tsx +3 -3
- package/src/features/cron/components/cron-task-discovery.tsx +1 -1
- package/src/features/inbox/pages/inbox-page.tsx +1 -1
- package/src/features/marketplace/components/curated-shelves/marketplace-curated-shelves.tsx +2 -2
- package/src/features/marketplace/components/curated-shelves/marketplace-shelf-card.tsx +2 -2
- package/src/features/marketplace/components/marketplace-list-card.tsx +4 -4
- package/src/features/marketplace/components/marketplace-page.tsx +2 -2
- package/src/features/marketplace/components/mcp/mcp-marketplace-card.tsx +2 -2
- package/src/features/marketplace/components/mcp/mcp-marketplace-page.tsx +3 -3
- package/src/features/panel-apps/components/panel-app-list-item.tsx +3 -3
- package/src/features/pwa/components/pwa-install-entry.tsx +1 -1
- package/src/features/right-panel-resources/components/__tests__/page-resource-sidebar-nav.test.tsx +9 -1
- package/src/features/right-panel-resources/components/page-resource-sidebar-nav.tsx +1 -1
- package/src/features/right-panel-resources/components/right-panel-resource-home-page.tsx +1 -1
- package/src/features/service-apps/components/service-action-row.tsx +3 -3
- package/src/features/service-apps/components/service-app-list-item.tsx +4 -4
- package/src/features/service-apps/components/service-apps-panel.tsx +1 -1
- package/src/features/settings/components/config/provider-model-list.tsx +5 -5
- package/src/features/settings/components/config/provider-model-suggestions-panel.tsx +4 -4
- package/src/features/settings/components/config/provider-pill-selector.tsx +1 -1
- package/src/features/settings/pages/appearance-settings-page.tsx +2 -2
- package/src/features/settings/pages/providers-config-page.tsx +6 -6
- package/src/features/side-dock/components/side-dock.tsx +4 -4
- package/src/index.css +4 -0
- package/src/platforms/desktop/components/desktop-window-chrome.tsx +1 -1
- package/src/platforms/mobile/components/mobile-bottom-nav.tsx +3 -3
- package/src/shared/components/common/brand-header.tsx +1 -1
- package/src/shared/components/common/searchable-model-input.tsx +2 -2
- package/src/shared/components/config-split-page.tsx +3 -3
- package/src/shared/components/doc-browser/doc-browser-tab-strip.tsx +2 -2
- package/src/shared/components/path-picker/server-path-picker-locations.tsx +1 -1
- package/src/shared/components/ui/button.tsx +2 -2
- package/src/shared/components/ui/card.tsx +1 -1
- package/src/shared/components/ui/context-menu/context-menu-items.tsx +3 -3
- package/src/shared/components/ui/input.tsx +7 -3
- package/src/shared/components/ui/overlays/sheet.tsx +1 -1
- package/src/shared/components/ui/popover.tsx +1 -1
- package/src/shared/components/ui/select.tsx +2 -2
- package/src/shared/components/ui/tab-strip/compact-tab-strip.tsx +3 -3
- package/src/shared/components/ui/tabs.tsx +1 -1
- package/dist/assets/app-presenter-provider-Co8uKOyW.js +0 -124
- package/dist/assets/card-Bqu8zWLq.js +0 -1
- package/dist/assets/config-split-page-Bd-bGKsw.js +0 -1
- package/dist/assets/doc-browser-52t2_rSF.js +0 -1
- package/dist/assets/loader-circle-DbOQWT9C.js +0 -1
- package/dist/assets/login-page-DW1AZXqX.js +0 -1
- package/dist/assets/main-BpL6OjwM.css +0 -1
- package/dist/assets/mcp-marketplace-page-DSLRpJEB.js +0 -1
- package/dist/assets/panelStandalone-D-mhAGNa.css +0 -1
- package/dist/assets/provider-models-YW7rIeOD.js +0 -1
- package/dist/assets/provider-scoped-model-input-axJ-pTEu.js +0 -1
- package/dist/assets/providers-config-page-_QhBXQ4M.js +0 -1
- package/dist/assets/remote-BLQU7aY5.js +0 -1
- package/dist/assets/security-config-aE_jOwy-.js +0 -1
- package/dist/assets/service-apps-panel-jBWAa4qZ.js +0 -1
- 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-
|
|
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-
|
|
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-
|
|
228
|
-
: "border-border/55 bg-muted/50 text-muted-foreground hover:border-border hover:bg-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
104
|
-
: 'text-muted-foreground hover:bg-
|
|
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-
|
|
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-
|
|
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-
|
|
258
|
-
: 'bg-transparent text-muted-foreground hover:bg-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
@@ -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-
|
|
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-
|
|
44
|
-
: "text-muted-foreground hover:bg-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
126
|
-
: 'bg-transparent text-muted-foreground hover:bg-
|
|
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-
|
|
134
|
-
inactiveTabClassName="text-muted-foreground hover:bg-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 '
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
239
|
+
? (activeTabClassName ?? "border-b-primary bg-[var(--interaction-selection)] text-foreground")
|
|
240
240
|
: (inactiveTabClassName ??
|
|
241
|
-
"border-b-transparent bg-
|
|
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-
|
|
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
|
)}
|