@flikk/ui 1.0.0-beta.30 → 1.0.0-beta.31
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 +97 -0
- package/dist/components/ai/AgentStatus/AgentStatus.d.ts +3 -0
- package/dist/components/ai/AgentStatus/AgentStatus.js +144 -0
- package/dist/components/ai/AgentStatus/AgentStatus.theme.d.ts +2 -0
- package/dist/components/ai/AgentStatus/AgentStatus.theme.js +37 -0
- package/dist/components/ai/AgentStatus/AgentStatus.types.d.ts +116 -0
- package/dist/components/ai/AgentStatus/index.d.ts +3 -0
- package/dist/components/ai/CodeBlock/CodeBlock.js +3 -3
- package/dist/components/ai/CodeBlock/CodeBlock.theme.js +1 -1
- package/dist/components/ai/PromptInput/PromptInput.js +13 -14
- package/dist/components/ai/PromptInput/PromptInput.theme.js +1 -1
- package/dist/components/ai/PromptInput/VoiceRecorder.js +3 -3
- package/dist/components/ai/Reasoning/Reasoning.d.ts +5 -0
- package/dist/components/ai/Reasoning/Reasoning.js +16 -0
- package/dist/components/ai/Reasoning/Reasoning.types.d.ts +20 -0
- package/dist/components/ai/Reasoning/index.d.ts +2 -0
- package/dist/components/ai/SourceCitation/SourceCitation.d.ts +4 -0
- package/dist/components/ai/SourceCitation/SourceCitation.js +29 -0
- package/dist/components/ai/SourceCitation/SourceCitation.theme.d.ts +2 -0
- package/dist/components/ai/SourceCitation/SourceCitation.theme.js +23 -0
- package/dist/components/ai/SourceCitation/SourceCitation.types.d.ts +55 -0
- package/dist/components/ai/SourceCitation/index.d.ts +3 -0
- package/dist/components/ai/StreamingResponse/ErrorDisplay.js +2 -2
- package/dist/components/ai/StreamingResponse/StreamingResponse.js +1 -3
- package/dist/components/ai/StreamingResponse/StreamingResponse.theme.js +3 -1
- package/dist/components/ai/TokenCounter/TokenCounter.js +2 -2
- package/dist/components/ai/index.d.ts +3 -0
- package/dist/components/ai/index.js +6 -3
- package/dist/components/ai/shared/StatusIndicator.d.ts +8 -0
- package/dist/components/ai/shared/StatusIndicator.js +34 -0
- package/dist/components/canvas/CanvasToolbar.js +2 -2
- package/dist/components/canvas/NodeControls.js +2 -2
- package/dist/components/canvas/NodeRenderer.js +2 -2
- package/dist/components/charts/ActivityRings/ActivityRings.js +2 -2
- package/dist/components/charts/AreaChart/AreaChart.js +21 -32
- package/dist/components/charts/AreaChart/AreaChart.theme.d.ts +1 -6
- package/dist/components/charts/AreaChart/AreaChart.theme.js +7 -19
- package/dist/components/charts/AreaChart/AreaChart.types.d.ts +18 -11
- package/dist/components/charts/AreaChart/AreaChart.types.js +10 -3
- package/dist/components/charts/AreaChart/index.d.ts +1 -1
- package/dist/components/charts/BarChart/BarChart.js +9 -28
- package/dist/components/charts/BarChart/BarChart.types.d.ts +20 -16
- package/dist/components/charts/BarChart/BarChart.types.js +11 -4
- package/dist/components/charts/ComboChart/BarRenderer.js +8 -5
- package/dist/components/charts/ComboChart/ComboChart.js +11 -24
- package/dist/components/charts/ComboChart/ComboChart.types.d.ts +15 -13
- package/dist/components/charts/ComboChart/ComboChart.types.js +14 -2
- package/dist/components/charts/ComboChart/LineRenderer.js +15 -10
- package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.d.ts +16 -0
- package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.js +237 -0
- package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.types.d.ts +62 -0
- package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.types.js +21 -0
- package/dist/components/charts/HorizontalBarChart/index.d.ts +3 -0
- package/dist/components/charts/LineChart/LineChart.js +9 -26
- package/dist/components/charts/LineChart/LineChart.types.d.ts +11 -14
- package/dist/components/charts/LineChart/LineChart.types.js +11 -3
- package/dist/components/charts/LollipopChart/LollipopChart.d.ts +3 -0
- package/dist/components/charts/LollipopChart/LollipopChart.js +361 -0
- package/dist/components/charts/LollipopChart/LollipopChart.types.d.ts +42 -0
- package/dist/components/charts/LollipopChart/LollipopChart.types.js +12 -0
- package/dist/components/charts/LollipopChart/index.d.ts +3 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +5 -4
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +14 -19
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.js +9 -2
- package/dist/components/charts/StackedBarChart/StackedBarChart.js +150 -132
- package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +20 -18
- package/dist/components/charts/StackedBarChart/StackedBarChart.types.js +10 -4
- package/dist/components/charts/hooks/useChartAccessibility.d.ts +1 -1
- package/dist/components/charts/hooks/useChartAccessibility.js +3 -0
- package/dist/components/charts/hooks/useTooltipPosition.js +18 -6
- package/dist/components/charts/index.d.ts +6 -0
- package/dist/components/charts/index.js +6 -0
- package/dist/components/charts/shared/ChartAxis/CategoryYAxis.d.ts +14 -0
- package/dist/components/charts/shared/ChartAxis/CategoryYAxis.js +35 -0
- package/dist/components/charts/shared/ChartAxis/ChartAxis.types.d.ts +69 -8
- package/dist/components/charts/shared/ChartAxis/ValueXAxis.d.ts +14 -0
- package/dist/components/charts/shared/ChartAxis/ValueXAxis.js +64 -0
- package/dist/components/charts/shared/ChartAxis/XAxis.js +1 -1
- package/dist/components/charts/shared/ChartAxis/YAxis.js +2 -2
- package/dist/components/charts/shared/ChartAxis/index.d.ts +3 -1
- package/dist/components/charts/shared/ChartGrid/HorizontalGrid.d.ts +0 -2
- package/dist/components/charts/shared/ChartGrid/HorizontalGrid.js +1 -1
- package/dist/components/charts/shared/ChartGrid/VerticalGrid.d.ts +29 -0
- package/dist/components/charts/shared/ChartGrid/VerticalGrid.js +26 -0
- package/dist/components/charts/shared/ChartGrid/index.d.ts +2 -0
- package/dist/components/charts/shared/ChartMarker/ChartMarker.js +7 -1
- package/dist/components/charts/theme/chart.theme.js +18 -23
- package/dist/components/charts/types/chart.types.d.ts +9 -5
- package/dist/components/charts/types/chart.types.js +1 -7
- package/dist/components/charts/utils/animation-utils.js +1 -3
- package/dist/components/charts/utils/bar-emphasis.d.ts +32 -3
- package/dist/components/charts/utils/bar-emphasis.js +24 -8
- package/dist/components/charts/utils/index.d.ts +1 -0
- package/dist/components/charts/utils/series-color.d.ts +7 -0
- package/dist/components/charts/utils/series-color.js +20 -0
- package/dist/components/core/Accordion/Accordion.theme.js +2 -2
- package/dist/components/core/Accordion/AccordionTrigger.js +2 -2
- package/dist/components/core/Alert/Alert.animations.d.ts +2 -1
- package/dist/components/core/Alert/Alert.animations.js +21 -6
- package/dist/components/core/Alert/Alert.js +7 -7
- package/dist/components/core/Avatar/Avatar.js +50 -42
- package/dist/components/core/Avatar/Avatar.theme.d.ts +8 -4
- package/dist/components/core/Avatar/Avatar.theme.js +64 -8
- package/dist/components/core/Avatar/Avatar.types.d.ts +13 -2
- package/dist/components/core/Avatar/index.d.ts +1 -1
- package/dist/components/core/AvatarGroup/AvatarGroup.js +6 -8
- package/dist/components/core/AvatarGroup/AvatarGroup.theme.d.ts +1 -2
- package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +2 -6
- package/dist/components/core/AvatarGroup/AvatarGroup.types.d.ts +0 -6
- package/dist/components/core/AvatarGroup/index.d.ts +1 -1
- package/dist/components/core/Badge/Badge.animations.js +4 -2
- package/dist/components/core/Badge/Badge.js +9 -4
- package/dist/components/core/Badge/Badge.theme.js +18 -12
- package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.d.ts +1 -4
- package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.js +2 -2
- package/dist/components/core/Button/Button.js +9 -17
- package/dist/components/core/Button/Button.ripple.js +2 -2
- package/dist/components/core/Button/Button.theme.d.ts +2 -0
- package/dist/components/core/Button/Button.theme.js +34 -21
- package/dist/components/core/Button/Button.types.d.ts +18 -1
- package/dist/components/core/Calendar/Calendar.js +20 -5
- package/dist/components/core/Calendar/Calendar.theme.js +14 -22
- package/dist/components/core/Calendar/Calendar.types.d.ts +0 -1
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.js +3 -3
- package/dist/components/core/Card/Card.theme.js +12 -4
- package/dist/components/core/Card/CardBody.js +1 -1
- package/dist/components/core/Card/CardFooter.js +1 -1
- package/dist/components/core/Card/CardHeader.js +1 -1
- package/dist/components/core/Carousel/CarouselNext.js +2 -2
- package/dist/components/core/Carousel/CarouselPrevious.js +2 -2
- package/dist/components/core/CommandPalette/CommandPalette.js +5 -4
- package/dist/components/core/CommandPalette/CommandPalette.theme.js +3 -7
- package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +2 -0
- package/dist/components/core/ContextMenu/ContextMenuItem.js +2 -2
- package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +2 -2
- package/dist/components/core/Drawer/Drawer.theme.js +7 -4
- package/dist/components/core/Drawer/DrawerHeader.js +2 -2
- package/dist/components/core/Dropdown/Dropdown.theme.js +3 -1
- package/dist/components/core/Dropdown/DropdownItem.js +2 -2
- package/dist/components/core/Dropdown/DropdownTrigger.js +16 -5
- package/dist/components/core/HeroCard/HeroCard.theme.js +5 -2
- package/dist/components/core/Kbd/Kbd.theme.js +4 -2
- package/dist/components/core/Link/Link.js +6 -4
- package/dist/components/core/Message/Message.js +2 -2
- package/dist/components/core/Message/Message.theme.js +5 -7
- package/dist/components/core/Message/MessageAudio.js +2 -2
- package/dist/components/core/Message/MessageFile.js +2 -2
- package/dist/components/core/Message/MessageLink.js +2 -2
- package/dist/components/core/Message/MessageStatusIndicator.js +5 -5
- package/dist/components/core/Modal/Modal.d.ts +1 -1
- package/dist/components/core/Modal/Modal.js +2 -2
- package/dist/components/core/Modal/Modal.theme.js +9 -4
- package/dist/components/core/Modal/ModalHeader.js +2 -2
- package/dist/components/core/ModalStack/ModalStackModal.js +2 -2
- package/dist/components/core/NavItem/NavItem.js +6 -6
- package/dist/components/core/OfflineIndicator/OfflineIndicator.animations.d.ts +22 -0
- package/dist/components/core/OfflineIndicator/OfflineIndicator.animations.js +54 -0
- package/dist/components/core/OfflineIndicator/OfflineIndicator.js +23 -24
- package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +25 -6
- package/dist/components/core/OfflineIndicator/OfflineIndicator.types.d.ts +17 -0
- package/dist/components/core/PageHeading/PageHeading.theme.js +1 -1
- package/dist/components/core/PageHeading/PageHeadingBackButton.js +2 -2
- package/dist/components/core/Pagination/Pagination.js +3 -3
- package/dist/components/core/Pagination/Pagination.theme.js +3 -3
- package/dist/components/core/Pill/Pill.js +4 -2
- package/dist/components/core/Pill/Pill.theme.js +6 -4
- package/dist/components/core/Rating/Rating.js +4 -5
- package/dist/components/core/Rating/Rating.theme.js +1 -1
- package/dist/components/core/Segmented/Segmented.theme.js +9 -6
- package/dist/components/core/Sidebar/Sidebar.types.d.ts +4 -2
- package/dist/components/core/Sidebar/SidebarHeader.js +2 -2
- package/dist/components/core/Sidebar/SidebarMobileTrigger.js +2 -2
- package/dist/components/core/Sidebar/SidebarSearch.js +3 -3
- package/dist/components/core/Sidebar/SidebarToggle.js +3 -3
- package/dist/components/core/Sidebar/SidebarUserProfile.js +2 -2
- package/dist/components/core/Sortable/Sortable.js +2 -2
- package/dist/components/core/Tag/Tag.js +2 -2
- package/dist/components/core/Tag/Tag.theme.js +4 -2
- package/dist/components/core/Toast/Toast.js +3 -3
- package/dist/components/core/Toast/Toast.types.d.ts +1 -1
- package/dist/components/core/Toast/useToast.js +5 -5
- package/dist/components/core/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/core/Tooltip/Tooltip.js +42 -10
- package/dist/components/core/Tooltip/Tooltip.types.d.ts +25 -0
- package/dist/components/core/Tree/Tree.js +2 -2
- package/dist/components/core/shared/interaction.animations.d.ts +51 -0
- package/dist/components/core/shared/interaction.animations.js +59 -0
- package/dist/components/data-display/Feed/Feed.js +2 -2
- package/dist/components/data-display/GanttChart/GanttChart.theme.js +1 -1
- package/dist/components/data-display/GanttChart/GanttChartPanel.js +2 -2
- package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +3 -3
- package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +2 -2
- package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -2
- package/dist/components/data-display/KPI/KPI.js +2 -2
- package/dist/components/data-display/KPI/KPI.theme.js +4 -4
- package/dist/components/data-display/Metric/Metric.js +2 -2
- package/dist/components/data-display/Metric/Metric.theme.js +25 -8
- package/dist/components/data-display/Metric/Metric.types.d.ts +1 -1
- package/dist/components/data-display/Table/Table.theme.js +9 -9
- package/dist/components/data-display/Table/TableActions.js +2 -2
- package/dist/components/data-display/Table/TableActionsMenu.js +1 -1
- package/dist/components/data-display/Table/TableColumnManager.js +2 -2
- package/dist/components/data-display/Table/TableDeclarative.js +3 -3
- package/dist/components/data-display/Table/TableFilter.js +4 -4
- package/dist/components/data-display/Table/TableHeader.js +3 -3
- package/dist/components/data-display/Table/TableRow.js +2 -2
- package/dist/components/data-display/Table/TableSelectionHeader.js +3 -3
- package/dist/components/data-display/Timeline/TimelineMarker.js +2 -2
- package/dist/components/effects/CustomCursor/CustomCursor.js +2 -2
- package/dist/components/effects/CustomCursor/CustomCursor.theme.js +2 -2
- package/dist/components/effects/DotPattern/DotPattern.js +6 -0
- package/dist/components/effects/DotPattern/DotPattern.types.d.ts +4 -2
- package/dist/components/effects/MeshGradient/MeshGradient.utils.d.ts +1 -1
- package/dist/components/effects/MeshGradient/MeshGradient.utils.js +1 -1
- package/dist/components/forms/Checkbox/Checkbox.js +2 -1
- package/dist/components/forms/Checkbox/Checkbox.theme.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerEyeDropper.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerGradient.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerHeader.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerImage.js +3 -3
- package/dist/components/forms/ColorPicker/ColorPickerInput.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerPresets.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerSavedColors.js +2 -2
- package/dist/components/forms/Combobox/Combobox.js +3 -3
- package/dist/components/forms/Combobox/Combobox.theme.js +2 -2
- package/dist/components/forms/DatePicker/DatePicker.animations.js +16 -25
- package/dist/components/forms/DatePicker/DatePicker.theme.js +2 -2
- package/dist/components/forms/DatePicker/DatePickerBody.js +1 -1
- package/dist/components/forms/DatePicker/DatePickerTrigger.js +2 -2
- package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +3 -3
- package/dist/components/forms/DateRangePicker/DateRangePickerBody.js +1 -1
- package/dist/components/forms/DateRangePicker/DateRangePickerPresets.js +2 -2
- package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +2 -2
- package/dist/components/forms/FileUpload/FileUpload.js +4 -4
- package/dist/components/forms/FileUpload/FileUpload.theme.js +5 -1
- package/dist/components/forms/FileUpload/FileUploadProgress.js +7 -7
- package/dist/components/forms/Input/Input.js +6 -7
- package/dist/components/forms/Input/Input.theme.js +19 -15
- package/dist/components/forms/InputAddress/InputAddress.js +10 -3
- package/dist/components/forms/InputCounter/InputCounter.js +3 -3
- package/dist/components/forms/InputOTP/InputOTP.d.ts +3 -12
- package/dist/components/forms/InputOTP/InputOTP.js +140 -151
- package/dist/components/forms/InputOTP/InputOTP.theme.d.ts +5 -1
- package/dist/components/forms/InputOTP/InputOTP.theme.js +40 -5
- package/dist/components/forms/InputOTP/InputOTP.types.d.ts +45 -2
- package/dist/components/forms/InputOTP/index.d.ts +1 -1
- package/dist/components/forms/InputTag/InputTag.js +5 -5
- package/dist/components/forms/InputTag/InputTag.theme.js +1 -2
- package/dist/components/forms/Mention/Mention.theme.js +3 -5
- package/dist/components/forms/Radio/Radio.js +3 -2
- package/dist/components/forms/Radio/Radio.theme.js +2 -2
- package/dist/components/forms/RichTextEditor/RichTextEditor.js +22 -23
- package/dist/components/forms/Select/Select.d.ts +5 -1
- package/dist/components/forms/Select/Select.js +12 -11
- package/dist/components/forms/Select/Select.theme.js +4 -4
- package/dist/components/forms/Select/Select.types.d.ts +4 -1
- package/dist/components/forms/SelectableCard/SelectableCard.animations.d.ts +1 -2
- package/dist/components/forms/SelectableCard/SelectableCard.animations.js +6 -7
- package/dist/components/forms/SelectableCard/SelectableCard.js +1 -1
- package/dist/components/forms/Signature/Signature.js +1 -1
- package/dist/components/forms/Slider/Slider.js +24 -11
- package/dist/components/forms/Slider/Slider.theme.js +9 -3
- package/dist/components/forms/Switch/Switch.theme.js +1 -1
- package/dist/components/forms/TimePicker/TimePicker.theme.js +6 -7
- package/dist/components/forms/TimePicker/TimePickerContent.js +1 -1
- package/dist/components/forms/TimePicker/TimePickerTrigger.js +3 -3
- package/dist/components/forms/forms.theme.js +23 -12
- package/dist/components/forms/index.js +1 -1
- package/dist/components/generative/registry.js +195 -2
- package/dist/components/generative/resolvers.js +16 -16
- package/dist/components/generative/schema.generated.js +2687 -379
- package/dist/components/layout/Section/Section.theme.js +1 -1
- package/dist/generative.schema.json +2687 -379
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/useElapsedTime.d.ts +28 -0
- package/dist/hooks/useElapsedTime.js +37 -0
- package/dist/hooks/useSelectPortal.d.ts +10 -2
- package/dist/hooks/useSelectPortal.js +6 -3
- package/dist/index.js +1 -1
- package/dist/registry.json +835 -261
- package/dist/shadcn-compat.css +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme.css +5 -1
- package/dist/themes/ember.css +131 -0
- package/dist/themes/iris.css +94 -0
- package/dist/themes/jade.css +139 -0
- package/dist/tools.json +2705 -361
- package/dist/utils/colorUtils.d.ts +6 -6
- package/dist/utils/colorUtils.js +8 -8
- package/package.json +9 -6
- package/src/global.scss +15 -4
- package/src/styles/theme.css +440 -152
- package/tailwind.preset.cjs +52 -34
- package/dist/components/core/Pill/Pill.animations.d.ts +0 -32
- package/dist/components/core/Pill/Pill.animations.js +0 -16
package/src/styles/theme.css
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
/* Primary color palette — monochrome: aliased to the neutral scale.
|
|
3
3
|
(Original blue ramp kept for easy revert:
|
|
4
4
|
50 oklch(0.962 0.018 272.314) … 600 oklch(0.511 0.262 276.966) … 950 oklch(0.257 0.09 281.288)) */
|
|
5
|
-
--color-primary-50: var(--color-
|
|
6
|
-
--color-primary-100: var(--color-
|
|
7
|
-
--color-primary-200: var(--color-
|
|
8
|
-
--color-primary-300: var(--color-
|
|
9
|
-
--color-primary-400: var(--color-
|
|
10
|
-
--color-primary-500: var(--color-
|
|
11
|
-
--color-primary-600: var(--color-
|
|
12
|
-
--color-primary-700: var(--color-
|
|
13
|
-
--color-primary-800: var(--color-
|
|
14
|
-
--color-primary-900: var(--color-
|
|
15
|
-
--color-primary-950: var(--color-
|
|
5
|
+
--color-primary-50: var(--color-mono-50);
|
|
6
|
+
--color-primary-100: var(--color-mono-100);
|
|
7
|
+
--color-primary-200: var(--color-mono-200);
|
|
8
|
+
--color-primary-300: var(--color-mono-300);
|
|
9
|
+
--color-primary-400: var(--color-mono-400);
|
|
10
|
+
--color-primary-500: var(--color-mono-500);
|
|
11
|
+
--color-primary-600: var(--color-mono-600);
|
|
12
|
+
--color-primary-700: var(--color-mono-700);
|
|
13
|
+
--color-primary-800: var(--color-mono-800);
|
|
14
|
+
--color-primary-900: var(--color-mono-900);
|
|
15
|
+
--color-primary-950: var(--color-mono-950);
|
|
16
16
|
|
|
17
17
|
/* Light mode: dark primary → dark buttons with light text (contrast auto-resolves white). */
|
|
18
18
|
--color-primary: var(--color-primary-900);
|
|
@@ -26,17 +26,17 @@
|
|
|
26
26
|
to the neutral scale so any stray/consumer CSS still resolves. Remove next
|
|
27
27
|
major. Original Tailwind-gray ramp kept for reference:
|
|
28
28
|
50 oklch(0.984 0.003 247.858) … 600 oklch(0.446 0.043 257.281) … 950 oklch(0.129 0.042 264.695). */
|
|
29
|
-
--color-secondary-50: var(--color-
|
|
30
|
-
--color-secondary-100: var(--color-
|
|
31
|
-
--color-secondary-200: var(--color-
|
|
32
|
-
--color-secondary-300: var(--color-
|
|
33
|
-
--color-secondary-400: var(--color-
|
|
34
|
-
--color-secondary-500: var(--color-
|
|
35
|
-
--color-secondary-600: var(--color-
|
|
36
|
-
--color-secondary-700: var(--color-
|
|
37
|
-
--color-secondary-800: var(--color-
|
|
38
|
-
--color-secondary-900: var(--color-
|
|
39
|
-
--color-secondary-950: var(--color-
|
|
29
|
+
--color-secondary-50: var(--color-mono-50);
|
|
30
|
+
--color-secondary-100: var(--color-mono-100);
|
|
31
|
+
--color-secondary-200: var(--color-mono-200);
|
|
32
|
+
--color-secondary-300: var(--color-mono-300);
|
|
33
|
+
--color-secondary-400: var(--color-mono-400);
|
|
34
|
+
--color-secondary-500: var(--color-mono-500);
|
|
35
|
+
--color-secondary-600: var(--color-mono-600);
|
|
36
|
+
--color-secondary-700: var(--color-mono-700);
|
|
37
|
+
--color-secondary-800: var(--color-mono-800);
|
|
38
|
+
--color-secondary-900: var(--color-mono-900);
|
|
39
|
+
--color-secondary-950: var(--color-mono-950);
|
|
40
40
|
|
|
41
41
|
--color-secondary: var(--color-secondary-600);
|
|
42
42
|
--color-secondary-contrast: oklch(from var(--color-secondary) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
@@ -70,7 +70,8 @@
|
|
|
70
70
|
--color-success-900: oklch(0.386 0.063 188.416);
|
|
71
71
|
--color-success-950: oklch(0.277 0.046 192.524);
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
/* -600 like danger/warning — white -contrast text passes AA (500 was ~2.7:1) */
|
|
74
|
+
--color-success: var(--color-success-600);
|
|
74
75
|
--color-success-contrast: oklch(from var(--color-success) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
75
76
|
|
|
76
77
|
/* Warning color palette - full 50-950 range */
|
|
@@ -90,12 +91,18 @@
|
|
|
90
91
|
--color-warning-contrast: oklch(from var(--color-warning) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
91
92
|
|
|
92
93
|
/* text color */
|
|
93
|
-
--color-text-primary: var(--color-
|
|
94
|
-
--color-text-secondary: var(--color-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
94
|
+
--color-text-primary: var(--color-mono-950);
|
|
95
|
+
--color-text-secondary: var(--color-mono-700);
|
|
96
|
+
/* placeholder/muted are ALPHA-DERIVED from text-primary (not ramp rungs):
|
|
97
|
+
they auto-track any theme's text color in both modes, and translucency
|
|
98
|
+
composites correctly over any surface. Components must consume these
|
|
99
|
+
tokens — never point text at neutral rungs (dark:text-[--color-mono-N]
|
|
100
|
+
bypasses are the theming bug fixed here; same class as Segmented PER-292).
|
|
101
|
+
Re-derived in .dark below (same reason contrast tokens are). */
|
|
102
|
+
--color-text-placeholder: color-mix(in oklab, var(--color-text-primary) 40%, transparent);
|
|
103
|
+
--color-text-muted: color-mix(in oklab, var(--color-text-primary) 57%, transparent);
|
|
104
|
+
--color-text-disabled: var(--color-mono-400);
|
|
105
|
+
--color-text-inverse: var(--color-mono-50);
|
|
99
106
|
|
|
100
107
|
/* generic colors */
|
|
101
108
|
--color-border: oklch(93% 0 0);
|
|
@@ -141,6 +148,24 @@
|
|
|
141
148
|
over ANY surface level — darkens in light, lightens in dark. For hover/active highlights. */
|
|
142
149
|
--color-surface-hover: oklch(0% 0 0 / 0.05);
|
|
143
150
|
--color-chart-track: rgba(0, 0, 0, 0.06);
|
|
151
|
+
/* Categorical chart series palette — 5 fixed slots, independent of the
|
|
152
|
+
semantic status tokens (primary/success/warning/danger). Series N always
|
|
153
|
+
maps to slot N; don't reorder or reuse these for status meaning. */
|
|
154
|
+
--color-chart-1: #3b82f6;
|
|
155
|
+
/* blue */
|
|
156
|
+
--color-chart-1-contrast: oklch(from var(--color-chart-1) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
157
|
+
--color-chart-2: #14b8a6;
|
|
158
|
+
/* teal */
|
|
159
|
+
--color-chart-2-contrast: oklch(from var(--color-chart-2) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
160
|
+
--color-chart-3: #f59e0b;
|
|
161
|
+
/* amber */
|
|
162
|
+
--color-chart-3-contrast: oklch(from var(--color-chart-3) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
163
|
+
--color-chart-4: #8b5cf6;
|
|
164
|
+
/* violet */
|
|
165
|
+
--color-chart-4-contrast: oklch(from var(--color-chart-4) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
166
|
+
--color-chart-5: #ec4899;
|
|
167
|
+
/* pink */
|
|
168
|
+
--color-chart-5-contrast: oklch(from var(--color-chart-5) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
144
169
|
--color-background: var(--surface-1);
|
|
145
170
|
/* near-white page canvas (rung 1) — white cards lift via the shadow ring */
|
|
146
171
|
/* DEPRECATED (remove next major): alias of --color-surface. Use the surface ladder. */
|
|
@@ -150,23 +175,58 @@
|
|
|
150
175
|
--color-background-tertiary: oklch(90% 0.002 247.839);
|
|
151
176
|
--color-background-quaternary: oklch(85% 0.002 247.839);
|
|
152
177
|
--color-background-quinary: oklch(80% 0.002 247.839);
|
|
153
|
-
--color-background-disabled: var(--color-
|
|
154
|
-
|
|
155
|
-
--color-
|
|
156
|
-
--color-
|
|
157
|
-
--color-
|
|
158
|
-
--color-
|
|
159
|
-
--color-
|
|
160
|
-
--color-
|
|
161
|
-
--color-
|
|
162
|
-
--color-
|
|
163
|
-
--color-
|
|
164
|
-
--color-
|
|
165
|
-
--color-
|
|
178
|
+
--color-background-disabled: var(--color-mono-100);
|
|
179
|
+
|
|
180
|
+
--color-mono-50: oklch(98.5% 0 0);
|
|
181
|
+
--color-mono-100: oklch(97% 0 0);
|
|
182
|
+
--color-mono-200: oklch(92.2% 0 0);
|
|
183
|
+
--color-mono-300: oklch(87% 0 0);
|
|
184
|
+
--color-mono-400: oklch(70.8% 0 0);
|
|
185
|
+
--color-mono-500: oklch(55.6% 0 0);
|
|
186
|
+
--color-mono-600: oklch(43.9% 0 0);
|
|
187
|
+
--color-mono-700: oklch(37.1% 0 0);
|
|
188
|
+
--color-mono-800: oklch(26.9% 0 0);
|
|
189
|
+
--color-mono-900: oklch(20.5% 0 0);
|
|
190
|
+
--color-mono-950: oklch(14.5% 0 0);
|
|
191
|
+
|
|
192
|
+
/* Mono (gray-role) fill default + auto contrast — same machinery as the
|
|
193
|
+
semantic hues, for FILLED gray surfaces (Button color="mono" etc.): dark
|
|
194
|
+
ink in light mode, light chip in dark (flipped in .dark below). Lets
|
|
195
|
+
components write bg-[var(--color-mono)] text-[var(--color-mono-contrast)]
|
|
196
|
+
instead of hand-picking rungs + hardcoding text-white (§3 foreground rule). */
|
|
197
|
+
--color-mono: var(--color-mono-900);
|
|
198
|
+
--color-mono-contrast: oklch(from var(--color-mono) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
166
199
|
|
|
167
200
|
/* Font family variables */
|
|
168
201
|
--font-family-base: var(--font-sans);
|
|
169
|
-
|
|
202
|
+
|
|
203
|
+
/* ============================================
|
|
204
|
+
TYPE SCALE — one --font-scale knob (like --radius-base).
|
|
205
|
+
Tailwind v4 defines each --text-* step as an independent literal, so a
|
|
206
|
+
smaller "base font size" would otherwise mean redefining every step per
|
|
207
|
+
theme. Here the ramp is Tailwind's EXACT defaults × --font-scale: at the
|
|
208
|
+
default 1 every utility is byte-for-byte Tailwind (text-sm = 14px);
|
|
209
|
+
a theme sets ONE factor (e.g. 0.9375 → 15px-based text) and the whole
|
|
210
|
+
ramp follows. Line-heights are unitless ratios upstream, so they scale
|
|
211
|
+
automatically. Text-only: spacing (--spacing is rem) and px geometry
|
|
212
|
+
tokens are deliberately unaffected. Each step is round()ed to a whole px
|
|
213
|
+
so scaled sizes stay clean (0.9375 → text-sm 13px, not 13.125px); at
|
|
214
|
+
scale 1 the rounding is inert (Tailwind's defaults are already integers).
|
|
215
|
+
============================================ */
|
|
216
|
+
--font-scale: 1;
|
|
217
|
+
--text-xs: round(calc(0.75rem * var(--font-scale)), 1px);
|
|
218
|
+
--text-sm: round(calc(0.875rem * var(--font-scale)), 1px);
|
|
219
|
+
--text-base: round(calc(1rem * var(--font-scale)), 1px);
|
|
220
|
+
--text-lg: round(calc(1.125rem * var(--font-scale)), 1px);
|
|
221
|
+
--text-xl: round(calc(1.25rem * var(--font-scale)), 1px);
|
|
222
|
+
--text-2xl: round(calc(1.5rem * var(--font-scale)), 1px);
|
|
223
|
+
--text-3xl: round(calc(1.875rem * var(--font-scale)), 1px);
|
|
224
|
+
--text-4xl: round(calc(2.25rem * var(--font-scale)), 1px);
|
|
225
|
+
--text-5xl: round(calc(3rem * var(--font-scale)), 1px);
|
|
226
|
+
--text-6xl: round(calc(3.75rem * var(--font-scale)), 1px);
|
|
227
|
+
--text-7xl: round(calc(4.5rem * var(--font-scale)), 1px);
|
|
228
|
+
--text-8xl: round(calc(6rem * var(--font-scale)), 1px);
|
|
229
|
+
--text-9xl: round(calc(8rem * var(--font-scale)), 1px);
|
|
170
230
|
--font-weight-light: 300;
|
|
171
231
|
--font-weight-normal: 400;
|
|
172
232
|
--font-weight-medium: 500;
|
|
@@ -174,13 +234,61 @@
|
|
|
174
234
|
--font-weight-bold: 700;
|
|
175
235
|
--font-weight-extrabold: 800;
|
|
176
236
|
|
|
237
|
+
/* ============================================
|
|
238
|
+
TYPE ROLE SYSTEM — mirrors the two-tier override pattern used by
|
|
239
|
+
BORDER RADIUS SYSTEM below (--card-radius/--metric-radius etc.): a
|
|
240
|
+
shared base scale (the --text-* ramp / --font-scale above) that everything derives
|
|
241
|
+
from by default, plus independently-overridable per-role tokens for the
|
|
242
|
+
handful of prominent heading/value elements a theme most often wants to
|
|
243
|
+
differentiate. --font-scale alone can only resize the WHOLE UI
|
|
244
|
+
uniformly — there was previously no way to make e.g. just Card titles
|
|
245
|
+
bigger without touching every other text size too.
|
|
246
|
+
|
|
247
|
+
Each token below defaults to a specific --text-* rung, so it inherits
|
|
248
|
+
--font-scale automatically (zero visual change for any theme that
|
|
249
|
+
doesn't touch these). A theme can override a token two ways:
|
|
250
|
+
1. Scale-following: --card-title-size: var(--text-lg);
|
|
251
|
+
(stays pinned to a rung, so it still tracks --font-scale)
|
|
252
|
+
2. Fixed: --card-title-size: 1.25rem;
|
|
253
|
+
(a literal opts that one role out of the scale entirely — same
|
|
254
|
+
escape hatch --card-radius: 20px gives for geometry)
|
|
255
|
+
This is an ADDITIVE namespace layered on top of --text-* — it does NOT
|
|
256
|
+
redefine individual --text-* steps, which stays forbidden (see TYPE
|
|
257
|
+
SCALE above).
|
|
258
|
+
|
|
259
|
+
🔴 Consume these via `text-[length:var(--x)]`, NEVER `text-[var(--x)]` —
|
|
260
|
+
Tailwind's arbitrary text-[...] syntax is ambiguous between color and
|
|
261
|
+
font-size, and a bare var() value resolves to the COLOR branch (silently
|
|
262
|
+
dropping the font-size change, no error). The `length:` type hint forces
|
|
263
|
+
the correct branch.
|
|
264
|
+
============================================ */
|
|
265
|
+
--card-title-size: var(--text-base);
|
|
266
|
+
--modal-title-size: var(--text-base);
|
|
267
|
+
--drawer-title-size: var(--text-base);
|
|
268
|
+
--page-heading-title-size: var(--text-xl);
|
|
269
|
+
--section-title-size: var(--text-base);
|
|
270
|
+
/* AlertDialog has no title style of its own — it renders Modal.Title
|
|
271
|
+
directly, so it already inherits --modal-title-size above. */
|
|
272
|
+
|
|
273
|
+
/* Metric/KPI: one token per size variant, not a single shared token — the
|
|
274
|
+
sm/md/lg values today are deliberate information-density choices, not
|
|
275
|
+
a formula (e.g. Metric's md and lg are literally identical), so a
|
|
276
|
+
single token would either collapse that hierarchy or force an
|
|
277
|
+
arbitrary scaling relationship that doesn't match today's values. */
|
|
278
|
+
--metric-value-size-sm: var(--text-xl);
|
|
279
|
+
--metric-value-size-md: var(--text-3xl);
|
|
280
|
+
--metric-value-size-lg: var(--text-3xl);
|
|
281
|
+
--kpi-value-size-sm: var(--text-xl);
|
|
282
|
+
--kpi-value-size-md: var(--text-2xl);
|
|
283
|
+
--kpi-value-size-lg: var(--text-3xl);
|
|
284
|
+
|
|
177
285
|
/* Form element variables — fixed px so they don't scale with root font-size */
|
|
178
286
|
--form-min-h-sm: 32px;
|
|
179
287
|
/* h-8 in Tailwind */
|
|
180
|
-
--form-min-h-md:
|
|
288
|
+
--form-min-h-md: 36px;
|
|
289
|
+
/* h-9 in Tailwind */
|
|
290
|
+
--form-min-h-lg: 40px;
|
|
181
291
|
/* h-10 in Tailwind */
|
|
182
|
-
--form-min-h-lg: 48px;
|
|
183
|
-
/* h-12 in Tailwind */
|
|
184
292
|
|
|
185
293
|
--form-label-pb: 8px;
|
|
186
294
|
/* pb-2 in Tailwind */
|
|
@@ -193,21 +301,97 @@
|
|
|
193
301
|
/* px-4 in Tailwind */
|
|
194
302
|
|
|
195
303
|
--form-py-sm: 8px;
|
|
196
|
-
/* py-1 in Tailwind */
|
|
197
|
-
--form-py-md: 10px;
|
|
198
304
|
/* py-2 in Tailwind */
|
|
305
|
+
--form-py-md: 10px;
|
|
306
|
+
/* py-2.5 in Tailwind */
|
|
199
307
|
--form-py-lg: 12px;
|
|
200
308
|
/* py-3 in Tailwind */
|
|
201
309
|
|
|
310
|
+
/* CONTROL TYPE SIZE — the last control-tier axis that was still a raw
|
|
311
|
+
Tailwind literal baked into the .theme.ts files. Height, padding and
|
|
312
|
+
radius were already tokens, so a theme could retune a control's box but
|
|
313
|
+
never its type; same "a library can't hardcode a Tailwind literal and
|
|
314
|
+
call it themeable" reasoning as the SURFACE PADDING and TYPE ROLE
|
|
315
|
+
systems below/above. Defaults to a --text-* rung, so --font-scale still
|
|
316
|
+
applies unless a theme overrides one outright.
|
|
317
|
+
|
|
318
|
+
Deliberately TWO rungs across three sizes: 14px is the workhorse control
|
|
319
|
+
size and dropping sm to 12px is a legibility liability on a 32px-tall
|
|
320
|
+
primary action — sm/md are separated by box (height + padding), not type.
|
|
321
|
+
Don't "fix" the repeat into a 12/14/16 ramp without a design pass.
|
|
322
|
+
|
|
323
|
+
🔴 Consume as text-[length:var(--…)], never bare text-[var(--…)] —
|
|
324
|
+
Tailwind's arbitrary text-[…] syntax is ambiguous between colour and
|
|
325
|
+
font-size and a bare var() resolves to the COLOUR branch, silently
|
|
326
|
+
no-oping the size (see TYPE ROLE SYSTEM). */
|
|
327
|
+
--form-text-size-sm: var(--text-sm);
|
|
328
|
+
--form-text-size-md: var(--text-sm);
|
|
329
|
+
--form-text-size-lg: var(--text-base);
|
|
330
|
+
|
|
331
|
+
/* 🔴 Paired line-heights are NOT optional here. A bare `text-sm` utility
|
|
332
|
+
compiles to font-size AND Tailwind's paired `--text-sm--line-height`
|
|
333
|
+
(14px/20px); an arbitrary `text-[length:…]` carries font-size ONLY and
|
|
334
|
+
the element falls back to normal/1.5 (14px/21px). Consuming these
|
|
335
|
+
tokens without the `/[var(--…-line-height-…)]` modifier therefore
|
|
336
|
+
silently changes every control's leading — caught in review at exactly
|
|
337
|
+
that 20px→21px step. Values alias Tailwind's own pairing vars so the
|
|
338
|
+
ramp stays byte-identical and --font-scale still flows through (the
|
|
339
|
+
pairings are unitless ratios). */
|
|
340
|
+
--form-line-height-sm: var(--text-sm--line-height);
|
|
341
|
+
--form-line-height-md: var(--text-sm--line-height);
|
|
342
|
+
--form-line-height-lg: var(--text-base--line-height);
|
|
343
|
+
|
|
344
|
+
/* ============================================
|
|
345
|
+
OTP SLOT SIZING
|
|
346
|
+
OTP slots are SQUARE, so this is one size token per rung, not a height +
|
|
347
|
+
width pair. sm/md/lg ALIAS the form ramp so slots line up with an adjacent
|
|
348
|
+
Input of the same size — break an alias to size OTP independently (same
|
|
349
|
+
pattern as --button-min-h-* / --segmented-min-h-*).
|
|
350
|
+
|
|
351
|
+
xl is DERIVED, not a literal, and there is deliberately no global
|
|
352
|
+
--form-min-h-xl: OTP is the only control large enough to want one, and a
|
|
353
|
+
global rung would ship without its px/py/text siblings. A hardcoded 48px
|
|
354
|
+
would not track a theme's ramp the way sm/md/lg do — it renders SMALLER
|
|
355
|
+
than lg in both Jade (36/44/52) and Ember (40/48/56). The 1.2 factor is
|
|
356
|
+
anchored so the default theme lands on 48px exactly.
|
|
357
|
+
============================================ */
|
|
358
|
+
--otp-slot-size-sm: var(--form-min-h-sm);
|
|
359
|
+
/* 32px */
|
|
360
|
+
--otp-slot-size-md: var(--form-min-h-md);
|
|
361
|
+
/* 36px */
|
|
362
|
+
--otp-slot-size-lg: var(--form-min-h-lg);
|
|
363
|
+
/* 40px */
|
|
364
|
+
--otp-slot-size-xl: calc(var(--form-min-h-lg) * 1.2);
|
|
365
|
+
/* 48px in the default theme */
|
|
366
|
+
|
|
367
|
+
/* The digit runs one rung HOTTER than form body text — it is a display
|
|
368
|
+
numeral, not label text — so these deliberately do NOT alias
|
|
369
|
+
--form-text-size-*. Same two-rungs-across-the-low-end shape as the form
|
|
370
|
+
ramp: sm and md share a rung, lg and xl each step. */
|
|
371
|
+
--otp-text-size-sm: var(--text-base);
|
|
372
|
+
--otp-text-size-md: var(--text-base);
|
|
373
|
+
--otp-text-size-lg: var(--text-lg);
|
|
374
|
+
--otp-text-size-xl: var(--text-xl);
|
|
375
|
+
|
|
376
|
+
/* 🔴 MANDATORY pairing. A bare `text-lg` utility compiles to font-size AND
|
|
377
|
+
Tailwind's paired --text-lg--line-height; an arbitrary text-[length:…]
|
|
378
|
+
carries font-size ONLY and falls back to normal/1.5, silently changing
|
|
379
|
+
the digit's leading. Aliases Tailwind's own pairing vars so --font-scale
|
|
380
|
+
still flows through. */
|
|
381
|
+
--otp-line-height-sm: var(--text-base--line-height);
|
|
382
|
+
--otp-line-height-md: var(--text-base--line-height);
|
|
383
|
+
--otp-line-height-lg: var(--text-lg--line-height);
|
|
384
|
+
--otp-line-height-xl: var(--text-xl--line-height);
|
|
385
|
+
|
|
202
386
|
/* ============================================
|
|
203
387
|
BORDER RADIUS SYSTEM
|
|
204
388
|
Change --radius-base to adjust the entire UI.
|
|
205
389
|
Individual --*-radius variables can be overridden independently.
|
|
206
390
|
============================================ */
|
|
207
|
-
--radius-base:
|
|
391
|
+
--radius-base: 8px;
|
|
208
392
|
/* Base radius token */
|
|
209
393
|
|
|
210
|
-
/* Forms & Controls (1x base =
|
|
394
|
+
/* Forms & Controls (1x base = 12px) */
|
|
211
395
|
--form-radius: var(--radius-base);
|
|
212
396
|
|
|
213
397
|
/* Checkbox: small absolute box (20–28px), so the radius is CAPPED — a raw
|
|
@@ -215,49 +399,97 @@
|
|
|
215
399
|
base grows. min() keeps it a rounded square at any base. */
|
|
216
400
|
--checkbox-radius: min(calc(var(--radius-base) * 0.5), 6px);
|
|
217
401
|
|
|
218
|
-
/*
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
402
|
+
/* Surface radius ceilings — every CONTENT-BEARING container (Tooltip,
|
|
403
|
+
ChartTooltip, Dropdown, CodeBlock, Popover, Alert, Toast, Metric,
|
|
404
|
+
Message, GanttChart, Card, Modal, Drawer, HeroCard) caps its computed
|
|
405
|
+
radius at one of these, so a theme chasing pill-shaped controls at a
|
|
406
|
+
very large --radius-base can never round a padded surface past what
|
|
407
|
+
its own padding can absorb — the curve would otherwise start visually
|
|
408
|
+
eating into header text/icons sitting in that padding. Three tiers
|
|
409
|
+
because containers aren't one size: tiny fixed-padding chips run
|
|
410
|
+
~4–12px padding, compact fixed-height surfaces run ~12–20px, spacious
|
|
411
|
+
freeform ones run ~24px. CONTROLS (Button/Input/Badge/NavItem/
|
|
412
|
+
Segmented) are the one category deliberately NOT capped below — going
|
|
413
|
+
fully pill at an extreme --radius-base is the correct, common look
|
|
414
|
+
there, and CSS itself auto-clamps border-radius to 50% of the box, so
|
|
415
|
+
a control can never visually break either way. (Tooltip looks like a
|
|
416
|
+
control at a glance — small, single-purpose — but unlike Button/Badge
|
|
417
|
+
it's a PADDED content box, not a filled shape with no internal inset,
|
|
418
|
+
so the padding-collision risk applies to it too; it belongs in the
|
|
419
|
+
capped camp, not the uncapped one — this was gotten wrong in an
|
|
420
|
+
earlier pass.) Override any cap per-theme for a more/less rounded
|
|
421
|
+
ceiling on surfaces specifically (independent of how round the
|
|
422
|
+
theme's controls are). Every new content-bearing container's radius
|
|
423
|
+
token MUST derive from one of these three caps — never a bare
|
|
424
|
+
`calc(var(--radius-base) * N)` — or it silently re-opens this exact gap
|
|
425
|
+
(see the OfflineIndicator/Message/HeroCard/GanttChart/Tooltip fixes
|
|
426
|
+
this system replaced). */
|
|
427
|
+
--surface-radius-cap-xs: 12px;
|
|
428
|
+
/* tiny/tight-padding chips (~4–12px padding): Tooltip, ChartTooltip */
|
|
429
|
+
--surface-radius-cap-sm: 24px;
|
|
430
|
+
/* compact/fixed-height content (~12–20px padding): Dropdown, CodeBlock,
|
|
431
|
+
Popover, Alert, Toast, Metric, Message, GanttChart */
|
|
432
|
+
--surface-radius-cap-lg: 32px;
|
|
433
|
+
/* spacious/freeform containers (~24px padding): Card, Modal, Drawer, HeroCard */
|
|
434
|
+
|
|
435
|
+
/* Overlays (1.5x base = 18px, capped; tooltip stays 1x but is now ALSO
|
|
436
|
+
capped — same 1x multiplier as before, just no longer unbounded) */
|
|
437
|
+
--dropdown-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
438
|
+
--tooltip-radius: min(var(--radius-base), var(--surface-radius-cap-xs));
|
|
439
|
+
--codeblock-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
440
|
+
--popover-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
223
441
|
|
|
224
442
|
/* Feedback surfaces */
|
|
225
|
-
--alert-radius: calc(var(--radius-base) * 1.5);
|
|
226
|
-
--toast-radius: calc(var(--radius-base) * 1.5);
|
|
227
|
-
--drawer-radius: calc(var(--radius-base) * 2);
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
443
|
+
--alert-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
444
|
+
--toast-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
445
|
+
--drawer-radius: min(calc(var(--radius-base) * 2), var(--surface-radius-cap-lg));
|
|
446
|
+
/* Metric is a compact stat tile, not a Drawer-scale surface — same tier
|
|
447
|
+
and cap as the other compact containers above, not 2x/lg. */
|
|
448
|
+
--metric-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
449
|
+
/* Chat bubble: same formula/tier as Alert/Toast/Metric above (compact,
|
|
450
|
+
padded content) — its own token rather than reusing one of theirs so a
|
|
451
|
+
theme can dial bubble roundness independently. */
|
|
452
|
+
--message-bubble-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
453
|
+
/* Owns its own border/bg/shadow with compact (~12-20px) paddings, closer
|
|
454
|
+
to Alert/Dropdown's profile than Card's, despite living in data-display. */
|
|
455
|
+
--gantt-chart-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
456
|
+
|
|
457
|
+
/* Surfaces (1.5x base = 18px, capped) */
|
|
458
|
+
--card-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-lg));
|
|
459
|
+
--modal-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-lg));
|
|
460
|
+
/* HeroCard has no radius token of its own — it's a Card presentation, so
|
|
461
|
+
it shares --card-radius (overridable per-instance via className, same
|
|
462
|
+
as every other component). */
|
|
233
463
|
|
|
234
464
|
/* Special shapes - not part of scale */
|
|
235
465
|
--segmented-radius: var(--form-radius);
|
|
236
466
|
--avatar-radius: 50%;
|
|
237
467
|
|
|
238
|
-
/* Focus ring styling */
|
|
239
|
-
--form-focus-ring-width: 2px;
|
|
240
|
-
--form-focus-ring-offset: -1px;
|
|
241
|
-
--form-focus-ring-opacity: 0.1;
|
|
242
|
-
|
|
243
|
-
/* Outline/border styling */
|
|
244
|
-
--form-outline-width: 1px;
|
|
245
|
-
--form-outline-focused-width: 2px;
|
|
246
|
-
|
|
247
468
|
/* Button variables - inheriting from form variables */
|
|
248
469
|
--button-radius: var(--form-radius);
|
|
249
470
|
--button-min-h-sm: var(--form-min-h-sm);
|
|
250
471
|
--button-min-h-md: var(--form-min-h-md);
|
|
251
472
|
--button-min-h-lg: var(--form-min-h-lg);
|
|
252
473
|
|
|
253
|
-
/* Button padding — fixed px
|
|
254
|
-
|
|
474
|
+
/* Button padding — fixed px. A +2 ramp (10/12/14); py is 0 because the
|
|
475
|
+
height comes from --button-min-h-* (i.e. --form-min-h-*), not padding. */
|
|
476
|
+
--button-px-sm: 10px;
|
|
255
477
|
--button-py-sm: 0;
|
|
256
|
-
--button-px-md:
|
|
478
|
+
--button-px-md: 12px;
|
|
257
479
|
--button-py-md: 0;
|
|
258
|
-
--button-px-lg:
|
|
480
|
+
--button-px-lg: 14px;
|
|
259
481
|
--button-py-lg: 0;
|
|
260
482
|
|
|
483
|
+
/* Button type size — aliases the form ramp, like --button-min-h-* aliases
|
|
484
|
+
--form-min-h-*. A theme can break the alias to size button type
|
|
485
|
+
independently of input type. */
|
|
486
|
+
--button-text-size-sm: var(--form-text-size-sm);
|
|
487
|
+
--button-text-size-md: var(--form-text-size-md);
|
|
488
|
+
--button-text-size-lg: var(--form-text-size-lg);
|
|
489
|
+
--button-line-height-sm: var(--form-line-height-sm);
|
|
490
|
+
--button-line-height-md: var(--form-line-height-md);
|
|
491
|
+
--button-line-height-lg: var(--form-line-height-lg);
|
|
492
|
+
|
|
261
493
|
/* Button icon-only padding — fixed px */
|
|
262
494
|
--button-icon-p-sm: 6px;
|
|
263
495
|
--button-icon-p-md: 8px;
|
|
@@ -268,8 +500,46 @@
|
|
|
268
500
|
--button-icon-size-md: var(--form-min-h-md);
|
|
269
501
|
--button-icon-size-lg: var(--form-min-h-lg);
|
|
270
502
|
|
|
271
|
-
/* Badge variables
|
|
272
|
-
|
|
503
|
+
/* Badge variables.
|
|
504
|
+
Radius derives from --radius-base like every other CONTROL (Button/Input/
|
|
505
|
+
Segmented) — 0.75x = 6px at the 8px base, and now it tracks a themed base
|
|
506
|
+
(was a hardcoded 6px literal that silently ignored --radius-base). Uncapped:
|
|
507
|
+
a large base takes Badge fully pill, which CSS auto-clamps to 50%.
|
|
508
|
+
Paddings are fixed px (like --button-px-*/--form-px-*), overridable per theme
|
|
509
|
+
so a spacious theme can grow the chip tier alongside its controls. py drives
|
|
510
|
+
height together with the text line-height + 1px border (sm: 16+0+2=18, md:
|
|
511
|
+
16+4+2=22). pill-px must clear the rounded-full cap so text is not eaten
|
|
512
|
+
by the curve. */
|
|
513
|
+
--badge-radius: calc(var(--radius-base) * 0.75);
|
|
514
|
+
--badge-px-sm: 4px;
|
|
515
|
+
--badge-px-md: 6px;
|
|
516
|
+
--badge-py-sm: 0px;
|
|
517
|
+
--badge-py-md: 2px;
|
|
518
|
+
--badge-pill-px-sm: 8px;
|
|
519
|
+
--badge-pill-px-md: 10px;
|
|
520
|
+
|
|
521
|
+
/* Pill (chip tier) — px/py per size. rounded-full is intrinsic (no radius
|
|
522
|
+
token needed); a themed --radius-base leaves it pill either way. */
|
|
523
|
+
--pill-px-sm: 10px;
|
|
524
|
+
--pill-px-md: 10px;
|
|
525
|
+
--pill-px-lg: 12px;
|
|
526
|
+
--pill-py-sm: 2px;
|
|
527
|
+
--pill-py-md: 2px;
|
|
528
|
+
--pill-py-lg: 4px;
|
|
529
|
+
|
|
530
|
+
/* Tag (chip tier) — rounded-full intrinsic. md carries a slightly larger LEFT
|
|
531
|
+
inset (--tag-pl-md) so a leading avatar/icon sits right; px-md is the right
|
|
532
|
+
edge. */
|
|
533
|
+
--tag-px-sm: 8px;
|
|
534
|
+
--tag-px-md: 8px;
|
|
535
|
+
--tag-pl-md: 10px;
|
|
536
|
+
--tag-py-sm: 2px;
|
|
537
|
+
--tag-py-md: 2px;
|
|
538
|
+
|
|
539
|
+
/* Kbd (chip tier) — px only; height stays the fixed h-5/h-6 keycap size and
|
|
540
|
+
radius already derives from --radius-base in Kbd.theme.ts. */
|
|
541
|
+
--kbd-px-sm: 4px;
|
|
542
|
+
--kbd-px-md: 6px;
|
|
273
543
|
|
|
274
544
|
/* Segmented variables - now defined in radius system above */
|
|
275
545
|
--segmented-min-h-sm: var(--form-min-h-sm);
|
|
@@ -285,6 +555,50 @@
|
|
|
285
555
|
--segmented-py-md: var(--form-py-md);
|
|
286
556
|
--segmented-py-lg: var(--form-py-lg);
|
|
287
557
|
|
|
558
|
+
/* Segmented type size — aliases the form ramp like every other Segmented
|
|
559
|
+
box token. Previously Segmented was text-sm at ALL THREE sizes while
|
|
560
|
+
Button/Input both stepped up at lg, despite --segmented-min-h-* being a
|
|
561
|
+
straight alias of --form-min-h-*: lg grew its box but not its type. */
|
|
562
|
+
--segmented-text-size-sm: var(--form-text-size-sm);
|
|
563
|
+
--segmented-text-size-md: var(--form-text-size-md);
|
|
564
|
+
--segmented-text-size-lg: var(--form-text-size-lg);
|
|
565
|
+
--segmented-line-height-sm: var(--form-line-height-sm);
|
|
566
|
+
--segmented-line-height-md: var(--form-line-height-md);
|
|
567
|
+
--segmented-line-height-lg: var(--form-line-height-lg);
|
|
568
|
+
|
|
569
|
+
/* ============================================
|
|
570
|
+
SURFACE PADDING SYSTEM — same idea as BORDER RADIUS SYSTEM/TYPE ROLE
|
|
571
|
+
SYSTEM above: a library can't bake a Tailwind literal (p-6, p-4) into a
|
|
572
|
+
.theme.ts file and call it themeable — a consumer's theme has no lever
|
|
573
|
+
to reach it. These are the "brand-visible container weight" surfaces a
|
|
574
|
+
theme author would actually want to dial roomier/tighter (e.g. the
|
|
575
|
+
spacious-dialog look), not every padded box in the library — denser/
|
|
576
|
+
data-oriented chrome (Alert, Toast, Popover, Message, Tooltip,
|
|
577
|
+
ChartTooltip, GanttChart, CommandPalette, Table, etc.) is deliberately
|
|
578
|
+
out of scope for now. HeroCard is also deliberately excluded — it's a
|
|
579
|
+
custom/override presentation of Card, not a foundational container, and
|
|
580
|
+
keeps its hardcoded p-10.
|
|
581
|
+
Each token defaults to today's exact px value — zero visual change for
|
|
582
|
+
any theme that doesn't override these. */
|
|
583
|
+
--card-px: 24px;
|
|
584
|
+
--card-py: 24px;
|
|
585
|
+
/* from p-6 */
|
|
586
|
+
--modal-px: 16px;
|
|
587
|
+
--modal-py: 16px;
|
|
588
|
+
/* from p-4 */
|
|
589
|
+
--drawer-px: 16px;
|
|
590
|
+
--drawer-py: 16px;
|
|
591
|
+
/* from p-4 */
|
|
592
|
+
|
|
593
|
+
/* Metric: uniform (not split px/py) — matches its existing non-split
|
|
594
|
+
contentPaddingSizes shape and the --metric-value-size-* naming. */
|
|
595
|
+
--metric-content-p-sm: 12px;
|
|
596
|
+
/* from p-3 */
|
|
597
|
+
--metric-content-p-md: 16px;
|
|
598
|
+
/* from p-4 */
|
|
599
|
+
--metric-content-p-lg: 20px;
|
|
600
|
+
/* from p-5 */
|
|
601
|
+
|
|
288
602
|
/* Segmented inner offset — drives wrapper padding AND inner radius so
|
|
289
603
|
the sliding background + items stay concentric with the outer shell.
|
|
290
604
|
border (1px) + padding (--segmented-padding) = total inset. */
|
|
@@ -292,16 +606,6 @@
|
|
|
292
606
|
/* 2px */
|
|
293
607
|
--segmented-inner-radius: calc(var(--segmented-radius) - var(--segmented-padding) - 1px);
|
|
294
608
|
|
|
295
|
-
/* Segmented sliding background */
|
|
296
|
-
--segmented-active-bg: #ffffff;
|
|
297
|
-
--segmented-active-shadow:
|
|
298
|
-
0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
299
|
-
|
|
300
|
-
/* Glass effect variables */
|
|
301
|
-
--glass-layer-padding: 0.5px;
|
|
302
|
-
--glass-layer-border-width: 0.5px;
|
|
303
|
-
--glass-layer-inner-offset: 1.5px;
|
|
304
|
-
|
|
305
609
|
/* Glass effect gradient variables */
|
|
306
610
|
--glass-gradient-outer: linear-gradient(to bottom,
|
|
307
611
|
rgba(250, 250, 250, 0.8) 0%,
|
|
@@ -312,10 +616,6 @@
|
|
|
312
616
|
rgba(242, 242, 242, 0.8) 0%,
|
|
313
617
|
rgba(250, 250, 250, 0.8) 100%);
|
|
314
618
|
|
|
315
|
-
/* Chat message variables */
|
|
316
|
-
--chat-bubble-border-sender: rgba(255, 255, 255, 0.4);
|
|
317
|
-
--chat-bubble-border-receiver: rgba(255, 255, 255, 1);
|
|
318
|
-
|
|
319
619
|
/* Avatar variables — fixed px */
|
|
320
620
|
--avatar-size-xs: 24px;
|
|
321
621
|
/* size-6 in Tailwind */
|
|
@@ -330,45 +630,8 @@
|
|
|
330
630
|
|
|
331
631
|
/* Avatar radius - now defined in radius system above */
|
|
332
632
|
|
|
333
|
-
/*
|
|
334
|
-
--carousel-container-width: 100%;
|
|
335
|
-
/* Full width container */
|
|
336
|
-
--carousel-slide-width: 66vw;
|
|
337
|
-
/* Default slide width - can be overridden */
|
|
338
|
-
--carousel-slide-height: 44rem;
|
|
339
|
-
/* 384px = h-96 */
|
|
340
|
-
--carousel-slide-gap: 16px;
|
|
341
|
-
/* gap between slides */
|
|
342
|
-
--carousel-controls-size: 48px;
|
|
343
|
-
/* control button size */
|
|
344
|
-
--carousel-controls-offset: 16px;
|
|
345
|
-
/* distance from edge */
|
|
346
|
-
|
|
347
|
-
/* Popover variables - radius now defined in radius system above */
|
|
348
|
-
--popover-shadow:
|
|
349
|
-
0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
350
|
-
--popover-border-width: 1px;
|
|
351
|
-
--popover-backdrop-opacity: 0.5;
|
|
352
|
-
--popover-offset-sm: 8px;
|
|
353
|
-
--popover-offset-md: 8px;
|
|
354
|
-
--popover-offset-lg: 12px;
|
|
355
|
-
--popover-max-width-sm: 256px;
|
|
356
|
-
--popover-max-width-md: 384px;
|
|
357
|
-
--popover-max-width-lg: 512px;
|
|
358
|
-
--popover-padding-sm: 12px;
|
|
359
|
-
--popover-padding-md: 12px;
|
|
360
|
-
--popover-padding-lg: 16px;
|
|
361
|
-
|
|
362
|
-
/* NavItem variables */
|
|
633
|
+
/* NavItem variables — radius only (padding/height live in NavItem.theme.ts) */
|
|
363
634
|
--nav-item-radius: var(--radius-base);
|
|
364
|
-
--nav-item-min-h: 40px;
|
|
365
|
-
/* h-10 in Tailwind */
|
|
366
|
-
|
|
367
|
-
/* NavItem padding — fixed px */
|
|
368
|
-
--nav-item-px: 12px;
|
|
369
|
-
/* px-3 in Tailwind */
|
|
370
|
-
--nav-item-py: 10px;
|
|
371
|
-
/* py-2.5 in Tailwind */
|
|
372
635
|
|
|
373
636
|
/* Modal and Drawer */
|
|
374
637
|
--overlay-bg: rgba(0, 0, 0, 0.65);
|
|
@@ -377,13 +640,6 @@
|
|
|
377
640
|
/* backdrop behind scaled content */
|
|
378
641
|
/* Modal radius - now defined in radius system above */
|
|
379
642
|
|
|
380
|
-
/* Shadow color presets for utility generation */
|
|
381
|
-
--shadow-color-primary: var(--color-primary);
|
|
382
|
-
--shadow-color-success: var(--color-success);
|
|
383
|
-
--shadow-color-warning: var(--color-warning);
|
|
384
|
-
--shadow-color-danger: var(--color-danger);
|
|
385
|
-
--shadow-color-secondary: var(--color-secondary);
|
|
386
|
-
|
|
387
643
|
/* Neumorphic tokens — light mode (multi-layer realistic) */
|
|
388
644
|
--neu-raised-shadow:
|
|
389
645
|
1px 1px 2px rgba(0, 0, 0, 0.04), 3px 3px 6px rgba(0, 0, 0, 0.06),
|
|
@@ -425,6 +681,17 @@
|
|
|
425
681
|
rgba(255, 255, 255, 0.5) 100%);
|
|
426
682
|
}
|
|
427
683
|
|
|
684
|
+
/* NOTE on --color-neutral-*: the gray ROLE was renamed to `mono`
|
|
685
|
+
(--color-mono-* / color="mono") so it stops colliding with Tailwind's own
|
|
686
|
+
`neutral`. We deliberately do NOT re-alias --color-neutral-* here: in a
|
|
687
|
+
Tailwind build those names already resolve to Tailwind's real neutral
|
|
688
|
+
palette (emitted into styles.css alongside slate/zinc/stone, which the
|
|
689
|
+
RichTextEditor swatches rely on), and re-aliasing them to mono would
|
|
690
|
+
re-shadow Tailwind's neutral — exactly what this rename removes. Raw-var
|
|
691
|
+
consumers who used var(--color-neutral-*) for the role should migrate to
|
|
692
|
+
var(--color-mono-*); the old name now yields Tailwind's neutral (a near-
|
|
693
|
+
identical gray in the default theme). See CHANGELOG. */
|
|
694
|
+
|
|
428
695
|
/* ============================================
|
|
429
696
|
DARK MODE OVERRIDES
|
|
430
697
|
Add .dark class to <html> or a parent container
|
|
@@ -603,12 +870,18 @@
|
|
|
603
870
|
|
|
604
871
|
/* Neutral text ramp (Linear's text reads essentially neutral off-white;
|
|
605
872
|
slate was too blue against the low-chroma surfaces). */
|
|
606
|
-
--color-text-primary: var(--color-
|
|
873
|
+
--color-text-primary: var(--color-mono-50);
|
|
607
874
|
--color-text-secondary: oklch(80% 0 0);
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
875
|
+
/* Re-derived (same formulas as :root) so the mix picks up the dark
|
|
876
|
+
text-primary even when .dark is scoped to a subtree — mirrors the
|
|
877
|
+
contrast-token re-declaration below. 40% of near-white over the dark
|
|
878
|
+
surfaces lands at the neutral-500 lightness the components used. */
|
|
879
|
+
--color-text-placeholder: color-mix(in oklab, var(--color-text-primary) 40%, transparent);
|
|
880
|
+
--color-text-muted: color-mix(in oklab, var(--color-text-primary) 50%, transparent);
|
|
881
|
+
/* neutral-600, not -400: the value every date/time picker bypassed to —
|
|
882
|
+
encoded here so components don't need dark: overrides */
|
|
883
|
+
--color-text-disabled: var(--color-mono-600);
|
|
884
|
+
--color-text-inverse: var(--color-mono-950);
|
|
612
885
|
|
|
613
886
|
/* Shimmer surface sweep — dim the white streak on the near-black floor. */
|
|
614
887
|
--shimmer-surface-highlight: color-mix(in srgb, #fff 8%, transparent);
|
|
@@ -620,6 +893,8 @@
|
|
|
620
893
|
--color-warning: var(--color-warning-400);
|
|
621
894
|
--color-danger: var(--color-danger-400);
|
|
622
895
|
--color-secondary: var(--color-secondary-400);
|
|
896
|
+
/* Neutral fill flips to a light chip (dark ink text via auto contrast) */
|
|
897
|
+
--color-mono: var(--color-mono-200);
|
|
623
898
|
|
|
624
899
|
/* Contrast colors for filled variants on semantic backgrounds.
|
|
625
900
|
Auto-derived (same formula as :root) — recomputes against the dark-mode
|
|
@@ -629,6 +904,7 @@
|
|
|
629
904
|
--color-success-contrast: oklch(from var(--color-success) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
630
905
|
--color-warning-contrast: oklch(from var(--color-warning) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
631
906
|
--color-secondary-contrast: oklch(from var(--color-secondary) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
907
|
+
--color-mono-contrast: oklch(from var(--color-mono) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
632
908
|
|
|
633
909
|
/* Background colors - dark equivalents */
|
|
634
910
|
/* Surface ladder — faithful Fluid Functionalism dark palette. 8 rungs step up neutrally
|
|
@@ -656,7 +932,7 @@
|
|
|
656
932
|
--color-background-tertiary: oklch(22% 0 0);
|
|
657
933
|
--color-background-quaternary: oklch(26% 0 0);
|
|
658
934
|
--color-background-quinary: oklch(30% 0 0);
|
|
659
|
-
--color-background-disabled: var(--color-
|
|
935
|
+
--color-background-disabled: var(--color-mono-800);
|
|
660
936
|
|
|
661
937
|
/* Scale backdrop — sits behind scaled content, darker than the #171717 floor */
|
|
662
938
|
--color-scale-background: #0a0a0a;
|
|
@@ -777,20 +1053,32 @@
|
|
|
777
1053
|
inset 0 20px 40px -8px rgba(0, 0, 0, 0.36),
|
|
778
1054
|
inset 0 -1px 0 rgba(255, 255, 255, 0.12);
|
|
779
1055
|
--color-chart-track: rgba(255, 255, 255, 0.05);
|
|
780
|
-
|
|
781
|
-
|
|
1056
|
+
--color-chart-1: #60a5fa;
|
|
1057
|
+
--color-chart-1-contrast: oklch(from var(--color-chart-1) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
1058
|
+
--color-chart-2: #2dd4bf;
|
|
1059
|
+
--color-chart-2-contrast: oklch(from var(--color-chart-2) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
1060
|
+
--color-chart-3: #fbbf24;
|
|
1061
|
+
--color-chart-3-contrast: oklch(from var(--color-chart-3) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
1062
|
+
--color-chart-4: #a78bfa;
|
|
1063
|
+
--color-chart-4-contrast: oklch(from var(--color-chart-4) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
1064
|
+
--color-chart-5: #f472b6;
|
|
1065
|
+
--color-chart-5-contrast: oklch(from var(--color-chart-5) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
1066
|
+
|
|
1067
|
+
/* Glass effect gradients - dark mode. Surface-ladder rungs, NOT the deprecated
|
|
1068
|
+
--color-background-* aliases (removed next major); values match the old ones
|
|
1069
|
+
(tertiary oklch 22% ≈ surface-4, secondary = surface-3, background = surface-1). */
|
|
782
1070
|
--glass-gradient-outer: linear-gradient(135deg,
|
|
783
|
-
var(--
|
|
784
|
-
var(--
|
|
785
|
-
var(--
|
|
786
|
-
var(--
|
|
1071
|
+
var(--surface-4) 0%,
|
|
1072
|
+
var(--surface-3) 30%,
|
|
1073
|
+
var(--surface-1) 70%,
|
|
1074
|
+
var(--surface-4) 100%);
|
|
787
1075
|
--glass-gradient-inner: linear-gradient(to bottom,
|
|
788
|
-
var(--
|
|
789
|
-
var(--
|
|
1076
|
+
var(--surface-3) 0%,
|
|
1077
|
+
var(--surface-1) 100%);
|
|
790
1078
|
|
|
791
1079
|
/* Scrollbar - dark mode */
|
|
792
1080
|
--ui-scrollbar-thumb-rest: rgba(75, 85, 99, 0.3);
|
|
793
|
-
--ui-scrollbar-thumb-active: rgb(75 85 99
|
|
1081
|
+
--ui-scrollbar-thumb-active: rgb(75 85 99 / 0.75);
|
|
794
1082
|
--ui-scrollbar-track-rest: transparent;
|
|
795
1083
|
--ui-scrollbar-track-active: rgba(55, 65, 81, 0.1);
|
|
796
1084
|
|