@flikk/ui 1.0.0-beta.30 → 1.0.0-beta.32
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 +375 -5
- package/dist/components/ai/AgentRequest/AgentRequest.animations.d.ts +25 -0
- package/dist/components/ai/AgentRequest/AgentRequest.animations.js +81 -0
- package/dist/components/ai/AgentRequest/AgentRequest.d.ts +3 -0
- package/dist/components/ai/AgentRequest/AgentRequest.js +435 -0
- package/dist/components/ai/AgentRequest/AgentRequest.theme.d.ts +2 -0
- package/dist/components/ai/AgentRequest/AgentRequest.theme.js +106 -0
- package/dist/components/ai/AgentRequest/AgentRequest.types.d.ts +241 -0
- package/dist/components/ai/AgentRequest/index.d.ts +3 -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 +2 -2
- package/dist/components/ai/PromptInput/PromptInput.js +13 -14
- package/dist/components/ai/PromptInput/PromptInput.theme.js +3 -3
- package/dist/components/ai/PromptInput/VoiceRecorder.js +3 -3
- package/dist/components/ai/PromptSuggestion/PromptSuggestion.theme.js +2 -2
- package/dist/components/ai/Reasoning/Reasoning.d.ts +5 -0
- package/dist/components/ai/Reasoning/Reasoning.js +40 -0
- package/dist/components/ai/Reasoning/Reasoning.theme.d.ts +6 -0
- package/dist/components/ai/Reasoning/Reasoning.theme.js +36 -0
- package/dist/components/ai/Reasoning/Reasoning.types.d.ts +73 -0
- package/dist/components/ai/Reasoning/ReasoningTrace.d.ts +11 -0
- package/dist/components/ai/Reasoning/ReasoningTrace.js +84 -0
- package/dist/components/ai/Reasoning/index.d.ts +3 -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/AnimatedText.d.ts +7 -0
- package/dist/components/ai/StreamingResponse/AnimatedText.js +8 -7
- package/dist/components/ai/StreamingResponse/ErrorDisplay.js +2 -2
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.d.ts +5 -0
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +4 -4
- package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +2 -2
- package/dist/components/ai/StreamingResponse/StreamingCursor.js +10 -7
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +10 -0
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +59 -33
- package/dist/components/ai/StreamingResponse/StreamingResponse.js +14 -10
- package/dist/components/ai/StreamingResponse/StreamingResponse.theme.js +3 -1
- package/dist/components/ai/StreamingResponse/StreamingResponse.types.d.ts +33 -2
- package/dist/components/ai/StreamingResponse/StreamingSurface.d.ts +13 -0
- package/dist/components/ai/StreamingResponse/StreamingSurface.js +38 -0
- package/dist/components/ai/StreamingResponse/WordAnimationContext.d.ts +5 -0
- package/dist/components/ai/StreamingResponse/WordAnimationContext.js +5 -4
- package/dist/components/ai/StreamingResponse/index.d.ts +4 -2
- package/dist/components/ai/TokenCounter/TokenCounter.js +2 -2
- package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
- package/dist/components/ai/index.d.ts +6 -2
- package/dist/components/ai/index.js +10 -3
- package/dist/components/ai/shared/StatusIndicator.d.ts +8 -0
- package/dist/components/ai/shared/StatusIndicator.js +34 -0
- package/dist/components/canvas/BaseNode.js +1 -1
- package/dist/components/canvas/CanvasToolbar.js +2 -3
- package/dist/components/canvas/Edge.js +2 -2
- package/dist/components/canvas/NodeControls.js +2 -3
- package/dist/components/canvas/NodeRenderer.js +4 -4
- package/dist/components/charts/ActivityRings/ActivityRings.js +4 -4
- package/dist/components/charts/ActivityRings/ActivityRings.theme.js +1 -1
- package/dist/components/charts/AreaChart/AreaChart.js +24 -35
- package/dist/components/charts/AreaChart/AreaChart.theme.d.ts +1 -6
- package/dist/components/charts/AreaChart/AreaChart.theme.js +10 -22
- 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 +13 -32
- 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 +10 -7
- package/dist/components/charts/ComboChart/BarRenderer.types.d.ts +1 -1
- 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/ComboChartCanvas.js +1 -1
- package/dist/components/charts/ComboChart/LineRenderer.js +16 -11
- package/dist/components/charts/ComboChart/LineRenderer.types.d.ts +1 -1
- package/dist/components/charts/DonutChart/DonutChart.theme.js +4 -4
- package/dist/components/charts/DonutChart/MultiSegmentDonutChart.theme.js +1 -1
- package/dist/components/charts/Heatmap/Heatmap.js +49 -42
- package/dist/components/charts/Heatmap/Heatmap.theme.d.ts +6 -2
- package/dist/components/charts/Heatmap/Heatmap.theme.js +20 -8
- package/dist/components/charts/Heatmap/Heatmap.types.d.ts +49 -82
- package/dist/components/charts/Heatmap/HeatmapCell.js +30 -81
- package/dist/components/charts/Heatmap/HeatmapLegend.d.ts +7 -6
- package/dist/components/charts/Heatmap/HeatmapLegend.js +6 -6
- package/dist/components/charts/Heatmap/index.d.ts +1 -1
- package/dist/components/charts/Heatmap/utils/heatmapUtils.d.ts +7 -12
- package/dist/components/charts/Heatmap/utils/heatmapUtils.js +16 -61
- package/dist/components/charts/Heatmap/utils/heatmapUtils.test.d.ts +1 -0
- 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 +11 -28
- 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/RadarChart/RadarChart.js +1 -1
- package/dist/components/charts/StackedBarChart/StackedBarChart.js +151 -133
- 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 +12 -6
- package/dist/components/charts/hooks/useTooltipPosition.js +18 -6
- package/dist/components/charts/index.d.ts +10 -8
- package/dist/components/charts/index.js +8 -4
- 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/shared/ChartText/ChartText.theme.js +1 -1
- package/dist/components/charts/shared/index.d.ts +1 -1
- package/dist/components/charts/theme/chart.theme.js +21 -26
- 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.d.ts +12 -7
- package/dist/components/charts/utils/animation-utils.js +19 -21
- 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 +3 -3
- package/dist/components/core/Accordion/AccordionTrigger.js +2 -2
- package/dist/components/core/Alert/Alert.animations.d.ts +11 -3
- package/dist/components/core/Alert/Alert.animations.js +30 -8
- package/dist/components/core/Alert/Alert.js +23 -9
- package/dist/components/core/Alert/Alert.theme.js +1 -1
- package/dist/components/core/Alert/Alert.types.d.ts +4 -2
- package/dist/components/core/AlertDialog/AlertDialog.js +2 -2
- 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.d.ts +0 -5
- package/dist/components/core/Badge/Badge.animations.js +5 -82
- package/dist/components/core/Badge/Badge.d.ts +7 -4
- package/dist/components/core/Badge/Badge.js +33 -65
- package/dist/components/core/Badge/Badge.theme.js +26 -24
- package/dist/components/core/Badge/Badge.types.d.ts +18 -34
- package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.d.ts +1 -4
- package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.js +6 -6
- package/dist/components/core/Button/Button.js +14 -58
- package/dist/components/core/Button/Button.theme.d.ts +2 -0
- package/dist/components/core/Button/Button.theme.js +35 -22
- package/dist/components/core/Button/Button.types.d.ts +26 -13
- package/dist/components/core/Button/index.d.ts +0 -2
- package/dist/components/core/Calendar/Calendar.js +20 -5
- package/dist/components/core/Calendar/Calendar.theme.js +15 -23
- 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/Calendar/CalendarMini/CalendarMini.theme.js +2 -2
- package/dist/components/core/Card/Card.js +7 -2
- package/dist/components/core/Card/Card.theme.js +40 -4
- package/dist/components/core/Card/Card.types.d.ts +20 -0
- package/dist/components/core/Card/CardBody.js +9 -1
- package/dist/components/core/Card/CardContext.d.ts +13 -0
- package/dist/components/core/Card/CardContext.js +14 -0
- package/dist/components/core/Card/CardFooter.js +1 -1
- package/dist/components/core/Card/CardHeader.js +4 -1
- 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/ContextMenu.theme.js +4 -3
- package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +8 -1
- package/dist/components/core/ContextMenu/ContextMenuItem.js +2 -2
- package/dist/components/core/ContextMenu/ContextMenuSub.d.ts +11 -1
- package/dist/components/core/ContextMenu/ContextMenuSub.js +35 -22
- package/dist/components/core/ContextMenu/ContextMenuSubBody.js +14 -3
- package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +22 -9
- package/dist/components/core/DragDrop/DragDrop.theme.js +2 -2
- package/dist/components/core/Drawer/Drawer.theme.js +7 -4
- package/dist/components/core/Drawer/DrawerHeader.js +2 -3
- package/dist/components/core/Dropdown/Dropdown.theme.js +3 -1
- package/dist/components/core/Dropdown/DropdownItem.js +2 -2
- package/dist/components/core/Dropdown/DropdownMenu.js +22 -7
- 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 +7 -5
- package/dist/components/core/Masonry/Masonry.theme.js +1 -1
- package/dist/components/core/MenuItem/MenuItem.js +2 -1
- package/dist/components/core/MenuItem/MenuItem.theme.js +13 -1
- package/dist/components/core/Message/Message.js +4 -2
- package/dist/components/core/Message/Message.theme.js +8 -10
- 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.animations.d.ts +1 -1
- package/dist/components/core/Modal/Modal.animations.js +50 -11
- package/dist/components/core/Modal/Modal.d.ts +1 -1
- package/dist/components/core/Modal/Modal.js +6 -2
- package/dist/components/core/Modal/Modal.theme.js +9 -4
- package/dist/components/core/Modal/ModalHeader.js +2 -3
- package/dist/components/core/ModalStack/ModalStackModal.js +4 -2
- package/dist/components/core/NavItem/NavItem.js +8 -7
- package/dist/components/core/NavItem/NavItem.theme.js +1 -1
- 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 +27 -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 +5 -5
- package/dist/components/core/Pill/Pill.js +5 -2
- package/dist/components/core/Pill/Pill.theme.js +9 -5
- package/dist/components/core/Popover/PopoverBody.js +16 -5
- package/dist/components/core/Progress/Progress.d.ts +0 -25
- package/dist/components/core/Progress/Progress.js +79 -11
- package/dist/components/core/Progress/Progress.theme.js +17 -0
- package/dist/components/core/Progress/Progress.types.d.ts +47 -1
- package/dist/components/core/Rating/Rating.js +4 -5
- package/dist/components/core/Rating/Rating.theme.js +2 -2
- package/dist/components/core/Rating/Rating.types.d.ts +3 -2
- package/dist/components/core/ScrollArea/ScrollArea.js +1 -1
- package/dist/components/core/ScrollArea/ScrollArea.theme.js +1 -1
- package/dist/components/core/Segmented/Segmented.theme.js +10 -7
- package/dist/components/core/Segmented/SegmentedContext.js +1 -0
- package/dist/components/core/Sidebar/Sidebar.js +5 -2
- package/dist/components/core/Sidebar/Sidebar.theme.js +2 -2
- package/dist/components/core/Sidebar/Sidebar.types.d.ts +4 -2
- package/dist/components/core/Sidebar/SidebarContent.js +1 -1
- package/dist/components/core/Sidebar/SidebarHeader.js +3 -3
- package/dist/components/core/Sidebar/SidebarMobileTrigger.js +2 -2
- package/dist/components/core/Sidebar/SidebarSearch.js +4 -4
- package/dist/components/core/Sidebar/SidebarToggle.js +3 -3
- package/dist/components/core/Sidebar/SidebarUserProfile.js +3 -3
- package/dist/components/core/Sortable/Sortable.js +2 -2
- package/dist/components/core/Sortable/Sortable.theme.js +1 -1
- package/dist/components/core/Tabs/Tabs.theme.js +1 -1
- package/dist/components/core/Tag/Tag.js +2 -2
- package/dist/components/core/Tag/Tag.theme.js +5 -3
- 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/ToastProvider.js +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/Tree/Tree.theme.js +1 -1
- package/dist/components/core/index.d.ts +0 -2
- package/dist/components/core/index.js +0 -4
- package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.d.ts +4 -0
- package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.js +20 -0
- package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.js +1 -1
- package/dist/components/core/shared/Ripple.d.ts +16 -0
- package/dist/components/core/shared/Ripple.js +141 -0
- 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 +7 -7
- 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/GanttTaskBar.js +1 -1
- package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +2 -2
- package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +1 -1
- package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -3
- package/dist/components/data-display/KPI/KPI.js +12 -21
- package/dist/components/data-display/KPI/KPI.theme.js +8 -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 +11 -11
- 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 -3
- package/dist/components/data-display/Table/TableContext.js +1 -0
- package/dist/components/data-display/Table/TableDeclarative.js +3 -3
- package/dist/components/data-display/Table/TableFilter.js +13 -6
- 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 +4 -4
- package/dist/components/data-display/Timeline/Timeline.theme.js +1 -1
- package/dist/components/data-display/Timeline/TimelineMarker.js +2 -2
- package/dist/components/effects/CustomCursor/CustomCursor.d.ts +1 -1
- package/dist/components/effects/CustomCursor/CustomCursor.js +3 -3
- package/dist/components/effects/CustomCursor/CustomCursor.theme.js +4 -4
- 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/effects/Neumorphic/InsetCircleButton.js +1 -1
- package/dist/components/effects/Overlay/Overlay.js +7 -3
- package/dist/components/effects/index.d.ts +0 -32
- package/dist/components/effects/index.js +0 -16
- package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.d.ts +0 -2
- package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.js +1 -93
- package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.types.d.ts +0 -10
- package/dist/components/effects/shared/ShaderCanvas/index.d.ts +1 -1
- package/dist/components/effects/shared/index.d.ts +1 -3
- package/dist/components/effects/shared/shaderNoise.glsl.d.ts +1 -1
- package/dist/components/effects/shared/shaderNoise.glsl.js +2 -11
- package/dist/components/forms/Checkbox/Checkbox.js +2 -1
- package/dist/components/forms/Checkbox/Checkbox.theme.js +3 -3
- 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 +5 -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 +4 -4
- package/dist/components/forms/DateRangePicker/DateRangePickerBody.js +1 -1
- package/dist/components/forms/DateRangePicker/DateRangePickerContext.js +1 -0
- 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 +7 -3
- package/dist/components/forms/FileUpload/FileUploadProgress.js +7 -7
- package/dist/components/forms/FileUpload/FileUploadProgress.theme.js +1 -1
- 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/InputAddress/InputAddress.types.d.ts +2 -2
- 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 +3 -3
- package/dist/components/forms/RichTextEditor/RichTextEditor.d.ts +12 -16
- package/dist/components/forms/RichTextEditor/RichTextEditor.js +165 -1681
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.d.ts +12 -56
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +60 -118
- package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +62 -126
- package/dist/components/forms/RichTextEditor/RichTextLinkField.d.ts +18 -0
- package/dist/components/forms/RichTextEditor/RichTextLinkField.js +46 -0
- package/dist/components/forms/RichTextEditor/RichTextToolbar.d.ts +15 -0
- package/dist/components/forms/RichTextEditor/RichTextToolbar.js +93 -0
- package/dist/components/forms/RichTextEditor/editorCommands.d.ts +50 -0
- package/dist/components/forms/RichTextEditor/editorCommands.js +58 -0
- package/dist/components/forms/RichTextEditor/editorState.d.ts +19 -0
- package/dist/components/forms/RichTextEditor/editorState.js +103 -0
- package/dist/components/forms/RichTextEditor/index.d.ts +5 -3
- package/dist/components/forms/RichTextEditor/sanitizeHtml.d.ts +38 -0
- package/dist/components/forms/RichTextEditor/sanitizeHtml.js +179 -0
- package/dist/components/forms/RichTextEditor/sanitizeHtml.test.d.ts +1 -0
- package/dist/components/forms/Select/Select.d.ts +5 -1
- package/dist/components/forms/Select/Select.js +14 -13
- package/dist/components/forms/Select/Select.theme.js +4 -4
- package/dist/components/forms/Select/Select.types.d.ts +74 -8
- package/dist/components/forms/Select/useSelectState.d.ts +9 -3
- package/dist/components/forms/Select/useSelectState.js +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 +3 -2
- package/dist/components/forms/SelectableCard/SelectableCard.theme.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 +3 -3
- package/dist/components/forms/TimePicker/TimePicker.theme.js +7 -8
- 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 +38 -13
- package/dist/components/forms/index.js +2 -1
- package/dist/components/generative/FormShell.d.ts +22 -0
- package/dist/components/generative/FormShell.js +102 -0
- package/dist/components/generative/GenerativeView.d.ts +52 -1
- package/dist/components/generative/GenerativeView.js +203 -11
- package/dist/components/generative/actions.d.ts +5 -0
- package/dist/components/generative/ai-sdk/index.d.ts +1 -0
- package/dist/components/generative/ai-sdk/index.js +1 -0
- package/dist/components/generative/ai-sdk/useGenerativeChat.d.ts +52 -0
- package/dist/components/generative/ai-sdk/useGenerativeChat.js +73 -0
- package/dist/components/generative/ai-sdk/useGenerativeChat.test.d.ts +1 -0
- package/dist/components/generative/fieldBinding.d.ts +31 -0
- package/dist/components/generative/fieldBinding.js +33 -0
- package/dist/components/generative/fieldBinding.test.d.ts +1 -0
- package/dist/components/generative/formScope.d.ts +71 -0
- package/dist/components/generative/formScope.js +135 -0
- package/dist/components/generative/index.d.ts +4 -0
- package/dist/components/generative/index.js +4 -0
- package/dist/components/generative/registry.d.ts +2 -0
- package/dist/components/generative/registry.js +197 -4
- package/dist/components/generative/resolvers.js +16 -16
- package/dist/components/generative/schema.generated.js +2522 -328
- package/dist/components/generative/toToolResult.d.ts +21 -0
- package/dist/components/generative/toToolResult.js +15 -0
- package/dist/components/generative/toToolResult.test.d.ts +1 -0
- package/dist/components/generative/validate.d.ts +10 -1
- package/dist/components/generative/validate.js +126 -11
- package/dist/components/layout/Grid/Grid.js +1 -0
- package/dist/components/layout/Section/Section.theme.js +1 -1
- package/dist/components/layout/Stack/Stack.js +1 -0
- package/dist/generative.schema.json +2522 -328
- 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 +2 -5
- package/dist/registry.json +3262 -2464
- package/dist/shadcn-compat.css +6 -6
- package/dist/styles/theme.test.d.ts +1 -0
- package/dist/styles.css +1 -1
- package/dist/test/render.d.ts +17 -0
- 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/themes/precision.css +232 -0
- package/dist/tools.json +2557 -328
- package/dist/utils/colorUtils.d.ts +6 -6
- package/dist/utils/colorUtils.js +8 -8
- package/dist/utils/index.d.ts +0 -1
- package/package.json +39 -6
- package/src/global.scss +32 -28
- package/src/styles/theme.css +547 -176
- package/src/styles/theme.test.ts +119 -0
- package/tailwind.preset.cjs +66 -38
- package/dist/components/charts/FunnelChart/FunnelChart.animations.d.ts +0 -35
- package/dist/components/charts/FunnelChart/FunnelChart.animations.js +0 -59
- package/dist/components/charts/FunnelChart/FunnelChart.d.ts +0 -8
- package/dist/components/charts/FunnelChart/FunnelChart.js +0 -410
- package/dist/components/charts/FunnelChart/FunnelChart.theme.d.ts +0 -2
- package/dist/components/charts/FunnelChart/FunnelChart.theme.js +0 -12
- package/dist/components/charts/FunnelChart/FunnelChart.types.d.ts +0 -105
- package/dist/components/charts/FunnelChart/index.d.ts +0 -4
- package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +0 -9
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +0 -207
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.d.ts +0 -18
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +0 -42
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +0 -65
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.js +0 -12
- package/dist/components/charts/ScatterPlot/index.d.ts +0 -3
- package/dist/components/core/Button/Button.ripple.d.ts +0 -71
- package/dist/components/core/Button/Button.ripple.js +0 -236
- package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.d.ts +0 -4
- package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.theme.d.ts +0 -12
- package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.types.d.ts +0 -23
- package/dist/components/core/Calendar/CalendarEvent/index.d.ts +0 -2
- package/dist/components/core/CardStack/CardStack.animations.d.ts +0 -47
- package/dist/components/core/CardStack/CardStack.d.ts +0 -3
- package/dist/components/core/CardStack/CardStack.js +0 -187
- package/dist/components/core/CardStack/CardStack.theme.d.ts +0 -6
- package/dist/components/core/CardStack/CardStack.theme.js +0 -33
- package/dist/components/core/CardStack/CardStack.types.d.ts +0 -139
- package/dist/components/core/CardStack/index.d.ts +0 -7
- package/dist/components/core/Carousel/Carousel.d.ts +0 -3
- package/dist/components/core/Carousel/Carousel.js +0 -83
- package/dist/components/core/Carousel/Carousel.theme.d.ts +0 -10
- package/dist/components/core/Carousel/Carousel.theme.js +0 -20
- package/dist/components/core/Carousel/Carousel.types.d.ts +0 -113
- package/dist/components/core/Carousel/CarouselBody.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselBody.js +0 -59
- package/dist/components/core/Carousel/CarouselContext.d.ts +0 -3
- package/dist/components/core/Carousel/CarouselContext.js +0 -13
- package/dist/components/core/Carousel/CarouselItem.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselItem.js +0 -11
- package/dist/components/core/Carousel/CarouselNext.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselNext.js +0 -16
- package/dist/components/core/Carousel/CarouselPrevious.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselPrevious.js +0 -16
- package/dist/components/core/Carousel/index.d.ts +0 -3
- package/dist/components/core/Pill/Pill.animations.d.ts +0 -32
- package/dist/components/core/Pill/Pill.animations.js +0 -16
- package/dist/components/effects/ColorPanels/ColorPanels.d.ts +0 -8
- package/dist/components/effects/ColorPanels/ColorPanels.js +0 -66
- package/dist/components/effects/ColorPanels/ColorPanels.shaders.d.ts +0 -12
- package/dist/components/effects/ColorPanels/ColorPanels.shaders.js +0 -218
- package/dist/components/effects/ColorPanels/ColorPanels.types.d.ts +0 -29
- package/dist/components/effects/ColorPanels/ColorPanels.types.js +0 -3
- package/dist/components/effects/ColorPanels/index.d.ts +0 -2
- package/dist/components/effects/FlutedGlass/FlutedGlass.d.ts +0 -9
- package/dist/components/effects/FlutedGlass/FlutedGlass.js +0 -80
- package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.d.ts +0 -12
- package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.js +0 -335
- package/dist/components/effects/FlutedGlass/FlutedGlass.types.d.ts +0 -61
- package/dist/components/effects/FlutedGlass/FlutedGlass.types.js +0 -16
- package/dist/components/effects/FlutedGlass/index.d.ts +0 -3
- package/dist/components/effects/GlassEffect/GlassEffect.d.ts +0 -15
- package/dist/components/effects/GlassEffect/GlassEffect.js +0 -38
- package/dist/components/effects/GlassEffect/GlassEffect.types.d.ts +0 -19
- package/dist/components/effects/GlassEffect/index.d.ts +0 -2
- package/dist/components/effects/GlassSurface/GlassSurface.d.ts +0 -8
- package/dist/components/effects/GlassSurface/GlassSurface.js +0 -250
- package/dist/components/effects/GlassSurface/GlassSurface.types.d.ts +0 -66
- package/dist/components/effects/GlassSurface/index.d.ts +0 -2
- package/dist/components/effects/GodRays/GodRays.d.ts +0 -8
- package/dist/components/effects/GodRays/GodRays.js +0 -68
- package/dist/components/effects/GodRays/GodRays.shaders.d.ts +0 -10
- package/dist/components/effects/GodRays/GodRays.shaders.js +0 -128
- package/dist/components/effects/GodRays/GodRays.types.d.ts +0 -25
- package/dist/components/effects/GodRays/GodRays.types.js +0 -3
- package/dist/components/effects/GodRays/index.d.ts +0 -2
- package/dist/components/effects/GridPattern/GridPattern.d.ts +0 -18
- package/dist/components/effects/GridPattern/GridPattern.js +0 -65
- package/dist/components/effects/GridPattern/GridPattern.types.d.ts +0 -47
- package/dist/components/effects/GridPattern/index.d.ts +0 -2
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.d.ts +0 -10
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.js +0 -78
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.d.ts +0 -22
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.js +0 -239
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.types.d.ts +0 -52
- package/dist/components/effects/HalftoneCmyk/index.d.ts +0 -2
- package/dist/components/effects/HalftoneDots/HalftoneDots.d.ts +0 -9
- package/dist/components/effects/HalftoneDots/HalftoneDots.js +0 -68
- package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.d.ts +0 -13
- package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.js +0 -296
- package/dist/components/effects/HalftoneDots/HalftoneDots.types.d.ts +0 -43
- package/dist/components/effects/HalftoneDots/HalftoneDots.types.js +0 -12
- package/dist/components/effects/HalftoneDots/index.d.ts +0 -3
- package/dist/components/effects/ImageDithering/ImageDithering.d.ts +0 -9
- package/dist/components/effects/ImageDithering/ImageDithering.js +0 -68
- package/dist/components/effects/ImageDithering/ImageDithering.shaders.d.ts +0 -12
- package/dist/components/effects/ImageDithering/ImageDithering.shaders.js +0 -117
- package/dist/components/effects/ImageDithering/ImageDithering.types.d.ts +0 -30
- package/dist/components/effects/ImageDithering/ImageDithering.types.js +0 -8
- package/dist/components/effects/ImageDithering/index.d.ts +0 -3
- package/dist/components/effects/MagneticElement/MagneticElement.d.ts +0 -30
- package/dist/components/effects/MagneticElement/MagneticElement.js +0 -111
- package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +0 -44
- package/dist/components/effects/MagneticElement/index.d.ts +0 -2
- package/dist/components/effects/Metaballs/Metaballs.d.ts +0 -8
- package/dist/components/effects/Metaballs/Metaballs.js +0 -59
- package/dist/components/effects/Metaballs/Metaballs.shaders.d.ts +0 -10
- package/dist/components/effects/Metaballs/Metaballs.shaders.js +0 -102
- package/dist/components/effects/Metaballs/Metaballs.types.d.ts +0 -16
- package/dist/components/effects/Metaballs/Metaballs.types.js +0 -3
- package/dist/components/effects/Metaballs/index.d.ts +0 -2
- package/dist/components/effects/PaperTexture/PaperTexture.d.ts +0 -9
- package/dist/components/effects/PaperTexture/PaperTexture.js +0 -61
- package/dist/components/effects/PaperTexture/PaperTexture.shaders.d.ts +0 -22
- package/dist/components/effects/PaperTexture/PaperTexture.shaders.js +0 -145
- package/dist/components/effects/PaperTexture/PaperTexture.types.d.ts +0 -19
- package/dist/components/effects/PaperTexture/index.d.ts +0 -2
- package/dist/components/effects/PulsingBorder/PulsingBorder.d.ts +0 -27
- package/dist/components/effects/PulsingBorder/PulsingBorder.js +0 -174
- package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.d.ts +0 -14
- package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.js +0 -258
- package/dist/components/effects/PulsingBorder/PulsingBorder.types.d.ts +0 -75
- package/dist/components/effects/PulsingBorder/PulsingBorder.types.js +0 -3
- package/dist/components/effects/PulsingBorder/index.d.ts +0 -2
- package/dist/components/effects/SmokeRing/SmokeRing.d.ts +0 -8
- package/dist/components/effects/SmokeRing/SmokeRing.js +0 -62
- package/dist/components/effects/SmokeRing/SmokeRing.shaders.d.ts +0 -14
- package/dist/components/effects/SmokeRing/SmokeRing.shaders.js +0 -130
- package/dist/components/effects/SmokeRing/SmokeRing.types.d.ts +0 -22
- package/dist/components/effects/SmokeRing/SmokeRing.types.js +0 -3
- package/dist/components/effects/SmokeRing/index.d.ts +0 -2
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.d.ts +0 -9
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.js +0 -59
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.d.ts +0 -14
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.js +0 -129
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.d.ts +0 -23
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.js +0 -3
- package/dist/components/effects/StaticGradientMesh/index.d.ts +0 -2
- package/dist/components/effects/Water/Water.d.ts +0 -9
- package/dist/components/effects/Water/Water.js +0 -65
- package/dist/components/effects/Water/Water.shaders.d.ts +0 -11
- package/dist/components/effects/Water/Water.shaders.js +0 -123
- package/dist/components/effects/Water/Water.types.d.ts +0 -25
- package/dist/components/effects/Water/index.d.ts +0 -2
- package/dist/components/effects/shared/bayerMatrices.glsl.d.ts +0 -10
- package/dist/components/effects/shared/bayerMatrices.glsl.js +0 -44
- package/dist/components/effects/shared/imageUV.glsl.d.ts +0 -12
- package/dist/components/effects/shared/imageUV.glsl.js +0 -26
- package/dist/components/forms/RichTextEditor/RichTextEditor.animations.d.ts +0 -7
- package/dist/components/forms/RichTextEditor/RichTextEditor.animations.js +0 -32
- package/dist/utils/calendarUtils.d.ts +0 -60
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.js +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.types.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltipContent.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/index.d.ts +0 -0
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);
|
|
@@ -21,26 +21,6 @@
|
|
|
21
21
|
the live --color-primary, so a raw override (even white) self-corrects. */
|
|
22
22
|
--color-primary-contrast: oklch(from var(--color-primary) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
23
23
|
|
|
24
|
-
/* DEPRECATED: the `secondary` semantic color was removed (it overlapped
|
|
25
|
-
`neutral` and was ambiguous — see CLAUDE.md §8). These vars are now aliased
|
|
26
|
-
to the neutral scale so any stray/consumer CSS still resolves. Remove next
|
|
27
|
-
major. Original Tailwind-gray ramp kept for reference:
|
|
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-neutral-50);
|
|
30
|
-
--color-secondary-100: var(--color-neutral-100);
|
|
31
|
-
--color-secondary-200: var(--color-neutral-200);
|
|
32
|
-
--color-secondary-300: var(--color-neutral-300);
|
|
33
|
-
--color-secondary-400: var(--color-neutral-400);
|
|
34
|
-
--color-secondary-500: var(--color-neutral-500);
|
|
35
|
-
--color-secondary-600: var(--color-neutral-600);
|
|
36
|
-
--color-secondary-700: var(--color-neutral-700);
|
|
37
|
-
--color-secondary-800: var(--color-neutral-800);
|
|
38
|
-
--color-secondary-900: var(--color-neutral-900);
|
|
39
|
-
--color-secondary-950: var(--color-neutral-950);
|
|
40
|
-
|
|
41
|
-
--color-secondary: var(--color-secondary-600);
|
|
42
|
-
--color-secondary-contrast: oklch(from var(--color-secondary) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
43
|
-
|
|
44
24
|
/* Danger/Error color palette - full 50-950 range */
|
|
45
25
|
--color-danger-50: oklch(0.971 0.013 17.38);
|
|
46
26
|
--color-danger-100: oklch(0.936 0.032 17.717);
|
|
@@ -70,7 +50,8 @@
|
|
|
70
50
|
--color-success-900: oklch(0.386 0.063 188.416);
|
|
71
51
|
--color-success-950: oklch(0.277 0.046 192.524);
|
|
72
52
|
|
|
73
|
-
|
|
53
|
+
/* -600 like danger/warning — white -contrast text passes AA (500 was ~2.7:1) */
|
|
54
|
+
--color-success: var(--color-success-600);
|
|
74
55
|
--color-success-contrast: oklch(from var(--color-success) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
75
56
|
|
|
76
57
|
/* Warning color palette - full 50-950 range */
|
|
@@ -90,12 +71,18 @@
|
|
|
90
71
|
--color-warning-contrast: oklch(from var(--color-warning) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
91
72
|
|
|
92
73
|
/* text color */
|
|
93
|
-
--color-text-primary: var(--color-
|
|
94
|
-
--color-text-secondary: var(--color-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
74
|
+
--color-text-primary: var(--color-mono-950);
|
|
75
|
+
--color-text-secondary: var(--color-mono-700);
|
|
76
|
+
/* placeholder/muted are ALPHA-DERIVED from text-primary (not ramp rungs):
|
|
77
|
+
they auto-track any theme's text color in both modes, and translucency
|
|
78
|
+
composites correctly over any surface. Components must consume these
|
|
79
|
+
tokens — never point text at neutral rungs (dark:text-[--color-mono-N]
|
|
80
|
+
bypasses are the theming bug fixed here; same class as Segmented PER-292).
|
|
81
|
+
Re-derived in .dark below (same reason contrast tokens are). */
|
|
82
|
+
--color-text-placeholder: color-mix(in oklab, var(--color-text-primary) 40%, transparent);
|
|
83
|
+
--color-text-muted: color-mix(in oklab, var(--color-text-primary) 57%, transparent);
|
|
84
|
+
--color-text-disabled: var(--color-mono-400);
|
|
85
|
+
--color-text-inverse: var(--color-mono-50);
|
|
99
86
|
|
|
100
87
|
/* generic colors */
|
|
101
88
|
--color-border: oklch(93% 0 0);
|
|
@@ -141,32 +128,82 @@
|
|
|
141
128
|
over ANY surface level — darkens in light, lightens in dark. For hover/active highlights. */
|
|
142
129
|
--color-surface-hover: oklch(0% 0 0 / 0.05);
|
|
143
130
|
--color-chart-track: rgba(0, 0, 0, 0.06);
|
|
131
|
+
/* Categorical chart series palette — 5 fixed slots, independent of the
|
|
132
|
+
semantic status tokens (primary/success/warning/danger). Series N always
|
|
133
|
+
maps to slot N; don't reorder or reuse these for status meaning. */
|
|
134
|
+
--color-chart-1: #3b82f6;
|
|
135
|
+
/* blue */
|
|
136
|
+
--color-chart-1-contrast: oklch(from var(--color-chart-1) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
137
|
+
--color-chart-2: #14b8a6;
|
|
138
|
+
/* teal */
|
|
139
|
+
--color-chart-2-contrast: oklch(from var(--color-chart-2) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
140
|
+
--color-chart-3: #f59e0b;
|
|
141
|
+
/* amber */
|
|
142
|
+
--color-chart-3-contrast: oklch(from var(--color-chart-3) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
143
|
+
--color-chart-4: #8b5cf6;
|
|
144
|
+
/* violet */
|
|
145
|
+
--color-chart-4-contrast: oklch(from var(--color-chart-4) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
146
|
+
--color-chart-5: #ec4899;
|
|
147
|
+
/* pink */
|
|
148
|
+
--color-chart-5-contrast: oklch(from var(--color-chart-5) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
144
149
|
--color-background: var(--surface-1);
|
|
145
150
|
/* near-white page canvas (rung 1) — white cards lift via the shadow ring */
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
--color-
|
|
151
|
-
--color-
|
|
152
|
-
--color-
|
|
153
|
-
--color-
|
|
154
|
-
|
|
155
|
-
--color-
|
|
156
|
-
--color-
|
|
157
|
-
--color-
|
|
158
|
-
--color-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
--color-
|
|
151
|
+
--color-background-disabled: var(--color-mono-100);
|
|
152
|
+
|
|
153
|
+
--color-mono-50: oklch(98.5% 0 0);
|
|
154
|
+
--color-mono-100: oklch(97% 0 0);
|
|
155
|
+
--color-mono-200: oklch(92.2% 0 0);
|
|
156
|
+
--color-mono-300: oklch(87% 0 0);
|
|
157
|
+
--color-mono-400: oklch(70.8% 0 0);
|
|
158
|
+
--color-mono-500: oklch(55.6% 0 0);
|
|
159
|
+
--color-mono-600: oklch(43.9% 0 0);
|
|
160
|
+
--color-mono-700: oklch(37.1% 0 0);
|
|
161
|
+
--color-mono-800: oklch(26.9% 0 0);
|
|
162
|
+
--color-mono-900: oklch(20.5% 0 0);
|
|
163
|
+
--color-mono-950: oklch(14.5% 0 0);
|
|
164
|
+
|
|
165
|
+
/* Mono (gray-role) fill default + auto contrast — same machinery as the
|
|
166
|
+
semantic hues, for FILLED gray surfaces (Button color="mono" etc.): dark
|
|
167
|
+
ink in light mode, light chip in dark (flipped in .dark below). Lets
|
|
168
|
+
components write bg-[var(--color-mono)] text-[var(--color-mono-contrast)]
|
|
169
|
+
instead of hand-picking rungs + hardcoding text-white (§3 foreground rule). */
|
|
170
|
+
--color-mono: var(--color-mono-900);
|
|
171
|
+
--color-mono-contrast: oklch(from var(--color-mono) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
166
172
|
|
|
167
173
|
/* Font family variables */
|
|
168
174
|
--font-family-base: var(--font-sans);
|
|
169
|
-
|
|
175
|
+
/* Heading font — defaults to the body font so the default render is
|
|
176
|
+
unchanged; themes override it independently (e.g. display face for
|
|
177
|
+
headings, workhorse for body). */
|
|
178
|
+
--font-heading: var(--font-family-base);
|
|
179
|
+
|
|
180
|
+
/* ============================================
|
|
181
|
+
TYPE SCALE — one --font-scale knob (like --radius-base).
|
|
182
|
+
Tailwind v4 defines each --text-* step as an independent literal, so a
|
|
183
|
+
smaller "base font size" would otherwise mean redefining every step per
|
|
184
|
+
theme. Here the ramp is Tailwind's EXACT defaults × --font-scale: at the
|
|
185
|
+
default 1 every utility is byte-for-byte Tailwind (text-sm = 14px);
|
|
186
|
+
a theme sets ONE factor (e.g. 0.9375 → 15px-based text) and the whole
|
|
187
|
+
ramp follows. Line-heights are unitless ratios upstream, so they scale
|
|
188
|
+
automatically. Text-only: spacing (--spacing is rem) and px geometry
|
|
189
|
+
tokens are deliberately unaffected. Each step is round()ed to a whole px
|
|
190
|
+
so scaled sizes stay clean (0.9375 → text-sm 13px, not 13.125px); at
|
|
191
|
+
scale 1 the rounding is inert (Tailwind's defaults are already integers).
|
|
192
|
+
============================================ */
|
|
193
|
+
--font-scale: 1;
|
|
194
|
+
--text-xs: round(calc(0.75rem * var(--font-scale)), 1px);
|
|
195
|
+
--text-sm: round(calc(0.875rem * var(--font-scale)), 1px);
|
|
196
|
+
--text-base: round(calc(1rem * var(--font-scale)), 1px);
|
|
197
|
+
--text-lg: round(calc(1.125rem * var(--font-scale)), 1px);
|
|
198
|
+
--text-xl: round(calc(1.25rem * var(--font-scale)), 1px);
|
|
199
|
+
--text-2xl: round(calc(1.5rem * var(--font-scale)), 1px);
|
|
200
|
+
--text-3xl: round(calc(1.875rem * var(--font-scale)), 1px);
|
|
201
|
+
--text-4xl: round(calc(2.25rem * var(--font-scale)), 1px);
|
|
202
|
+
--text-5xl: round(calc(3rem * var(--font-scale)), 1px);
|
|
203
|
+
--text-6xl: round(calc(3.75rem * var(--font-scale)), 1px);
|
|
204
|
+
--text-7xl: round(calc(4.5rem * var(--font-scale)), 1px);
|
|
205
|
+
--text-8xl: round(calc(6rem * var(--font-scale)), 1px);
|
|
206
|
+
--text-9xl: round(calc(8rem * var(--font-scale)), 1px);
|
|
170
207
|
--font-weight-light: 300;
|
|
171
208
|
--font-weight-normal: 400;
|
|
172
209
|
--font-weight-medium: 500;
|
|
@@ -174,13 +211,91 @@
|
|
|
174
211
|
--font-weight-bold: 700;
|
|
175
212
|
--font-weight-extrabold: 800;
|
|
176
213
|
|
|
214
|
+
/* ============================================
|
|
215
|
+
TYPE ROLE SYSTEM — mirrors the two-tier override pattern used by
|
|
216
|
+
BORDER RADIUS SYSTEM below (--card-radius/--metric-radius etc.): a
|
|
217
|
+
shared base scale (the --text-* ramp / --font-scale above) that everything derives
|
|
218
|
+
from by default, plus independently-overridable per-role tokens for the
|
|
219
|
+
handful of prominent heading/value elements a theme most often wants to
|
|
220
|
+
differentiate. --font-scale alone can only resize the WHOLE UI
|
|
221
|
+
uniformly — there was previously no way to make e.g. just Card titles
|
|
222
|
+
bigger without touching every other text size too.
|
|
223
|
+
|
|
224
|
+
Each token below defaults to a specific --text-* rung, so it inherits
|
|
225
|
+
--font-scale automatically (zero visual change for any theme that
|
|
226
|
+
doesn't touch these). A theme can override a token two ways:
|
|
227
|
+
1. Scale-following: --card-title-size: var(--text-lg);
|
|
228
|
+
(stays pinned to a rung, so it still tracks --font-scale)
|
|
229
|
+
2. Fixed: --card-title-size: 1.25rem;
|
|
230
|
+
(a literal opts that one role out of the scale entirely — same
|
|
231
|
+
escape hatch --card-radius: 20px gives for geometry)
|
|
232
|
+
This is an ADDITIVE namespace layered on top of --text-* — it does NOT
|
|
233
|
+
redefine individual --text-* steps, which stays forbidden (see TYPE
|
|
234
|
+
SCALE above).
|
|
235
|
+
|
|
236
|
+
🔴 Consume these via `text-[length:var(--x)]`, NEVER `text-[var(--x)]` —
|
|
237
|
+
Tailwind's arbitrary text-[...] syntax is ambiguous between color and
|
|
238
|
+
font-size, and a bare var() value resolves to the COLOR branch (silently
|
|
239
|
+
dropping the font-size change, no error). The `length:` type hint forces
|
|
240
|
+
the correct branch.
|
|
241
|
+
|
|
242
|
+
🔴 Every size token below has a PAIRED --*-line-height token, consumed via
|
|
243
|
+
the `/[var(--…)]` modifier: `text-[length:var(--x-size)]/[var(--x-line-height)]`.
|
|
244
|
+
This is the same rule CONTROL TYPE SIZE states for --form-text-size-*, and it
|
|
245
|
+
is mandatory for the same reason. A named utility like `text-sm` compiles to
|
|
246
|
+
font-size AND Tailwind's paired --text-sm--line-height; an arbitrary
|
|
247
|
+
`text-[length:…]` carries font-size ONLY and silently falls back to
|
|
248
|
+
normal/1.5. These roles previously pinned the gap shut with hardcoded
|
|
249
|
+
literals (leading-[1.4], leading-6, leading-none), which meant a theme could
|
|
250
|
+
resize a title but never re-lead it — and a theme raising --card-title-size
|
|
251
|
+
got a title that stayed locked at line-height 1. Defaults below are the exact
|
|
252
|
+
values those literals resolved to, so this is a zero-visual-change addition.
|
|
253
|
+
============================================ */
|
|
254
|
+
--card-title-size: var(--text-base);
|
|
255
|
+
--modal-title-size: var(--text-base);
|
|
256
|
+
--drawer-title-size: var(--text-base);
|
|
257
|
+
--page-heading-title-size: var(--text-xl);
|
|
258
|
+
--section-title-size: var(--text-base);
|
|
259
|
+
/* Unitless where the old literal was unitless (1.4/1.5 scale with the font),
|
|
260
|
+
and 1.5rem where it was leading-6 (a fixed 6 x --spacing step, which did
|
|
261
|
+
NOT scale with the title size) — preserving each role's existing behaviour
|
|
262
|
+
rather than silently converting one model into the other. */
|
|
263
|
+
--card-title-line-height: 1;
|
|
264
|
+
--modal-title-line-height: 1.5rem;
|
|
265
|
+
--drawer-title-line-height: 1.5rem;
|
|
266
|
+
--page-heading-title-line-height: 1.4;
|
|
267
|
+
--section-title-line-height: 1.5;
|
|
268
|
+
/* AlertDialog has no title style of its own — it renders Modal.Title
|
|
269
|
+
directly, so it already inherits --modal-title-size above. */
|
|
270
|
+
|
|
271
|
+
/* Metric/KPI: one token per size variant, not a single shared token — the
|
|
272
|
+
sm/md/lg values today are deliberate information-density choices, not
|
|
273
|
+
a formula (e.g. Metric's md and lg are literally identical), so a
|
|
274
|
+
single token would either collapse that hierarchy or force an
|
|
275
|
+
arbitrary scaling relationship that doesn't match today's values. */
|
|
276
|
+
--metric-value-size-sm: var(--text-xl);
|
|
277
|
+
--metric-value-size-md: var(--text-3xl);
|
|
278
|
+
--metric-value-size-lg: var(--text-3xl);
|
|
279
|
+
--kpi-value-size-sm: var(--text-xl);
|
|
280
|
+
--kpi-value-size-md: var(--text-2xl);
|
|
281
|
+
--kpi-value-size-lg: var(--text-3xl);
|
|
282
|
+
/* Paired leading, per the rule above. Unitless so a themed value-size still
|
|
283
|
+
leads proportionally — these are big display numerals where a fixed rem
|
|
284
|
+
leading would clip descenders the moment a theme scaled the size up. */
|
|
285
|
+
--metric-value-line-height-sm: 1.4;
|
|
286
|
+
--metric-value-line-height-md: 1.2;
|
|
287
|
+
--metric-value-line-height-lg: 1.2;
|
|
288
|
+
--kpi-value-line-height-sm: 1.4;
|
|
289
|
+
--kpi-value-line-height-md: 1.333;
|
|
290
|
+
--kpi-value-line-height-lg: 1.2;
|
|
291
|
+
|
|
177
292
|
/* Form element variables — fixed px so they don't scale with root font-size */
|
|
178
293
|
--form-min-h-sm: 32px;
|
|
179
294
|
/* h-8 in Tailwind */
|
|
180
|
-
--form-min-h-md:
|
|
295
|
+
--form-min-h-md: 36px;
|
|
296
|
+
/* h-9 in Tailwind */
|
|
297
|
+
--form-min-h-lg: 40px;
|
|
181
298
|
/* h-10 in Tailwind */
|
|
182
|
-
--form-min-h-lg: 48px;
|
|
183
|
-
/* h-12 in Tailwind */
|
|
184
299
|
|
|
185
300
|
--form-label-pb: 8px;
|
|
186
301
|
/* pb-2 in Tailwind */
|
|
@@ -193,21 +308,97 @@
|
|
|
193
308
|
/* px-4 in Tailwind */
|
|
194
309
|
|
|
195
310
|
--form-py-sm: 8px;
|
|
196
|
-
/* py-1 in Tailwind */
|
|
197
|
-
--form-py-md: 10px;
|
|
198
311
|
/* py-2 in Tailwind */
|
|
312
|
+
--form-py-md: 10px;
|
|
313
|
+
/* py-2.5 in Tailwind */
|
|
199
314
|
--form-py-lg: 12px;
|
|
200
315
|
/* py-3 in Tailwind */
|
|
201
316
|
|
|
317
|
+
/* CONTROL TYPE SIZE — the last control-tier axis that was still a raw
|
|
318
|
+
Tailwind literal baked into the .theme.ts files. Height, padding and
|
|
319
|
+
radius were already tokens, so a theme could retune a control's box but
|
|
320
|
+
never its type; same "a library can't hardcode a Tailwind literal and
|
|
321
|
+
call it themeable" reasoning as the SURFACE PADDING and TYPE ROLE
|
|
322
|
+
systems below/above. Defaults to a --text-* rung, so --font-scale still
|
|
323
|
+
applies unless a theme overrides one outright.
|
|
324
|
+
|
|
325
|
+
Deliberately TWO rungs across three sizes: 14px is the workhorse control
|
|
326
|
+
size and dropping sm to 12px is a legibility liability on a 32px-tall
|
|
327
|
+
primary action — sm/md are separated by box (height + padding), not type.
|
|
328
|
+
Don't "fix" the repeat into a 12/14/16 ramp without a design pass.
|
|
329
|
+
|
|
330
|
+
🔴 Consume as text-[length:var(--…)], never bare text-[var(--…)] —
|
|
331
|
+
Tailwind's arbitrary text-[…] syntax is ambiguous between colour and
|
|
332
|
+
font-size and a bare var() resolves to the COLOUR branch, silently
|
|
333
|
+
no-oping the size (see TYPE ROLE SYSTEM). */
|
|
334
|
+
--form-text-size-sm: var(--text-sm);
|
|
335
|
+
--form-text-size-md: var(--text-sm);
|
|
336
|
+
--form-text-size-lg: var(--text-base);
|
|
337
|
+
|
|
338
|
+
/* 🔴 Paired line-heights are NOT optional here. A bare `text-sm` utility
|
|
339
|
+
compiles to font-size AND Tailwind's paired `--text-sm--line-height`
|
|
340
|
+
(14px/20px); an arbitrary `text-[length:…]` carries font-size ONLY and
|
|
341
|
+
the element falls back to normal/1.5 (14px/21px). Consuming these
|
|
342
|
+
tokens without the `/[var(--…-line-height-…)]` modifier therefore
|
|
343
|
+
silently changes every control's leading — caught in review at exactly
|
|
344
|
+
that 20px→21px step. Values alias Tailwind's own pairing vars so the
|
|
345
|
+
ramp stays byte-identical and --font-scale still flows through (the
|
|
346
|
+
pairings are unitless ratios). */
|
|
347
|
+
--form-line-height-sm: var(--text-sm--line-height);
|
|
348
|
+
--form-line-height-md: var(--text-sm--line-height);
|
|
349
|
+
--form-line-height-lg: var(--text-base--line-height);
|
|
350
|
+
|
|
351
|
+
/* ============================================
|
|
352
|
+
OTP SLOT SIZING
|
|
353
|
+
OTP slots are SQUARE, so this is one size token per rung, not a height +
|
|
354
|
+
width pair. sm/md/lg ALIAS the form ramp so slots line up with an adjacent
|
|
355
|
+
Input of the same size — break an alias to size OTP independently (same
|
|
356
|
+
pattern as --button-min-h-* / --segmented-min-h-*).
|
|
357
|
+
|
|
358
|
+
xl is DERIVED, not a literal, and there is deliberately no global
|
|
359
|
+
--form-min-h-xl: OTP is the only control large enough to want one, and a
|
|
360
|
+
global rung would ship without its px/py/text siblings. A hardcoded 48px
|
|
361
|
+
would not track a theme's ramp the way sm/md/lg do — it renders SMALLER
|
|
362
|
+
than lg in both Jade (36/44/52) and Ember (40/48/56). The 1.2 factor is
|
|
363
|
+
anchored so the default theme lands on 48px exactly.
|
|
364
|
+
============================================ */
|
|
365
|
+
--otp-slot-size-sm: var(--form-min-h-sm);
|
|
366
|
+
/* 32px */
|
|
367
|
+
--otp-slot-size-md: var(--form-min-h-md);
|
|
368
|
+
/* 36px */
|
|
369
|
+
--otp-slot-size-lg: var(--form-min-h-lg);
|
|
370
|
+
/* 40px */
|
|
371
|
+
--otp-slot-size-xl: calc(var(--form-min-h-lg) * 1.2);
|
|
372
|
+
/* 48px in the default theme */
|
|
373
|
+
|
|
374
|
+
/* The digit runs one rung HOTTER than form body text — it is a display
|
|
375
|
+
numeral, not label text — so these deliberately do NOT alias
|
|
376
|
+
--form-text-size-*. Same two-rungs-across-the-low-end shape as the form
|
|
377
|
+
ramp: sm and md share a rung, lg and xl each step. */
|
|
378
|
+
--otp-text-size-sm: var(--text-base);
|
|
379
|
+
--otp-text-size-md: var(--text-base);
|
|
380
|
+
--otp-text-size-lg: var(--text-lg);
|
|
381
|
+
--otp-text-size-xl: var(--text-xl);
|
|
382
|
+
|
|
383
|
+
/* 🔴 MANDATORY pairing. A bare `text-lg` utility compiles to font-size AND
|
|
384
|
+
Tailwind's paired --text-lg--line-height; an arbitrary text-[length:…]
|
|
385
|
+
carries font-size ONLY and falls back to normal/1.5, silently changing
|
|
386
|
+
the digit's leading. Aliases Tailwind's own pairing vars so --font-scale
|
|
387
|
+
still flows through. */
|
|
388
|
+
--otp-line-height-sm: var(--text-base--line-height);
|
|
389
|
+
--otp-line-height-md: var(--text-base--line-height);
|
|
390
|
+
--otp-line-height-lg: var(--text-lg--line-height);
|
|
391
|
+
--otp-line-height-xl: var(--text-xl--line-height);
|
|
392
|
+
|
|
202
393
|
/* ============================================
|
|
203
394
|
BORDER RADIUS SYSTEM
|
|
204
395
|
Change --radius-base to adjust the entire UI.
|
|
205
396
|
Individual --*-radius variables can be overridden independently.
|
|
206
397
|
============================================ */
|
|
207
|
-
--radius-base:
|
|
398
|
+
--radius-base: 8px;
|
|
208
399
|
/* Base radius token */
|
|
209
400
|
|
|
210
|
-
/* Forms & Controls (1x base =
|
|
401
|
+
/* Forms & Controls (1x base = 12px) */
|
|
211
402
|
--form-radius: var(--radius-base);
|
|
212
403
|
|
|
213
404
|
/* Checkbox: small absolute box (20–28px), so the radius is CAPPED — a raw
|
|
@@ -215,49 +406,119 @@
|
|
|
215
406
|
base grows. min() keeps it a rounded square at any base. */
|
|
216
407
|
--checkbox-radius: min(calc(var(--radius-base) * 0.5), 6px);
|
|
217
408
|
|
|
218
|
-
/*
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
409
|
+
/* Surface radius ceilings — every CONTENT-BEARING container (Tooltip,
|
|
410
|
+
ChartTooltip, Dropdown, CodeBlock, Popover, Alert, Toast, Metric,
|
|
411
|
+
Message, GanttChart, Card, Modal, Drawer, HeroCard) caps its computed
|
|
412
|
+
radius at one of these, so a theme chasing pill-shaped controls at a
|
|
413
|
+
very large --radius-base can never round a padded surface past what
|
|
414
|
+
its own padding can absorb — the curve would otherwise start visually
|
|
415
|
+
eating into header text/icons sitting in that padding. Three tiers
|
|
416
|
+
because containers aren't one size: tiny fixed-padding chips run
|
|
417
|
+
~4–12px padding, compact fixed-height surfaces run ~12–20px, spacious
|
|
418
|
+
freeform ones run ~24px. CONTROLS (Button/Input/Badge/NavItem/
|
|
419
|
+
Segmented) are the one category deliberately NOT capped below — going
|
|
420
|
+
fully pill at an extreme --radius-base is the correct, common look
|
|
421
|
+
there, and CSS itself auto-clamps border-radius to 50% of the box, so
|
|
422
|
+
a control can never visually break either way. (Tooltip looks like a
|
|
423
|
+
control at a glance — small, single-purpose — but unlike Button/Badge
|
|
424
|
+
it's a PADDED content box, not a filled shape with no internal inset,
|
|
425
|
+
so the padding-collision risk applies to it too; it belongs in the
|
|
426
|
+
capped camp, not the uncapped one — this was gotten wrong in an
|
|
427
|
+
earlier pass.) Override any cap per-theme for a more/less rounded
|
|
428
|
+
ceiling on surfaces specifically (independent of how round the
|
|
429
|
+
theme's controls are). Every new content-bearing container's radius
|
|
430
|
+
token MUST derive from one of these three caps — never a bare
|
|
431
|
+
`calc(var(--radius-base) * N)` — or it silently re-opens this exact gap
|
|
432
|
+
(see the OfflineIndicator/Message/HeroCard/GanttChart/Tooltip fixes
|
|
433
|
+
this system replaced). */
|
|
434
|
+
--surface-radius-cap-xs: 12px;
|
|
435
|
+
/* tiny/tight-padding chips (~4–12px padding): Tooltip, ChartTooltip */
|
|
436
|
+
--surface-radius-cap-sm: 24px;
|
|
437
|
+
/* compact/fixed-height content (~12–20px padding): Dropdown, CodeBlock,
|
|
438
|
+
Popover, Alert, Toast, Metric, Message, GanttChart */
|
|
439
|
+
--surface-radius-cap-lg: 32px;
|
|
440
|
+
/* spacious/freeform containers (~24px padding): Card, Modal, Drawer, HeroCard */
|
|
441
|
+
|
|
442
|
+
/* Overlays (1.5x base = 18px, capped; tooltip stays 1x but is now ALSO
|
|
443
|
+
capped — same 1x multiplier as before, just no longer unbounded) */
|
|
444
|
+
--dropdown-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
445
|
+
/* The form listbox panel (Select/Combobox/InputTag/Mention) is the same kind of
|
|
446
|
+
anchored menu panel as the one above — Mention literally renders MenuItem rows
|
|
447
|
+
in it — so it ALIASES --dropdown-radius rather than restating the formula. An
|
|
448
|
+
alias, not a copy: `precision.css` overrides --dropdown-radius alone, and two
|
|
449
|
+
parallel formulas would have left form listboxes at a different radius than the
|
|
450
|
+
menus they sit beside. Override this token to deliberately split the two.
|
|
451
|
+
🔴 It used to paint --form-radius, which is `var(--radius-base)`: the UNCAPPED
|
|
452
|
+
CONTROL token, on a padded content container — the exact bypass the caps above
|
|
453
|
+
exist to prevent (on `ember`, base 24px, a 24px curve against 4px of padding).
|
|
454
|
+
Never route a panel through a control token. */
|
|
455
|
+
--form-dropdown-radius: var(--dropdown-radius);
|
|
456
|
+
--tooltip-radius: min(var(--radius-base), var(--surface-radius-cap-xs));
|
|
457
|
+
--codeblock-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
458
|
+
--popover-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
223
459
|
|
|
224
460
|
/* 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
|
-
|
|
461
|
+
--alert-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
462
|
+
--toast-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
463
|
+
--drawer-radius: min(calc(var(--radius-base) * 2), var(--surface-radius-cap-lg));
|
|
464
|
+
/* Metric is a compact stat tile, not a Drawer-scale surface — same tier
|
|
465
|
+
and cap as the other compact containers above, not 2x/lg. */
|
|
466
|
+
--metric-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
467
|
+
/* Chat bubble: same formula/tier as Alert/Toast/Metric above (compact,
|
|
468
|
+
padded content) — its own token rather than reusing one of theirs so a
|
|
469
|
+
theme can dial bubble roundness independently. */
|
|
470
|
+
--message-bubble-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
471
|
+
/* Owns its own border/bg/shadow with compact (~12-20px) paddings, closer
|
|
472
|
+
to Alert/Dropdown's profile than Card's, despite living in data-display. */
|
|
473
|
+
--gantt-chart-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
474
|
+
/* AgentRequest: the composer-slot panel. Compact chrome (~14px padding), so
|
|
475
|
+
it takes the sm cap like Dropdown/Popover/Toast — NOT --card-radius. It
|
|
476
|
+
used to borrow that token, but Card earns the lg cap by having 24px of
|
|
477
|
+
padding to absorb the curve; at 14px the same 32px radius visibly crowds
|
|
478
|
+
the header row (ember, --radius-base: 24px). */
|
|
479
|
+
--agent-request-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
|
|
480
|
+
/* The payload well INSIDE that panel (the command/diff being approved) has
|
|
481
|
+
only ~10px of padding, so it needs the tight xs cap — same formula and
|
|
482
|
+
reasoning as --tooltip-radius, one tier below its own container. A bare
|
|
483
|
+
var(--radius-base) here rendered a 24px curve on a 10px-padded box. */
|
|
484
|
+
--agent-request-well-radius: min(var(--radius-base), var(--surface-radius-cap-xs));
|
|
485
|
+
|
|
486
|
+
/* Surfaces (1.5x base = 18px, capped) */
|
|
487
|
+
--card-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-lg));
|
|
488
|
+
--modal-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-lg));
|
|
489
|
+
/* HeroCard has no radius token of its own — it's a Card presentation, so
|
|
490
|
+
it shares --card-radius (overridable per-instance via className, same
|
|
491
|
+
as every other component). */
|
|
233
492
|
|
|
234
493
|
/* Special shapes - not part of scale */
|
|
235
494
|
--segmented-radius: var(--form-radius);
|
|
236
495
|
--avatar-radius: 50%;
|
|
237
496
|
|
|
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
497
|
/* Button variables - inheriting from form variables */
|
|
248
498
|
--button-radius: var(--form-radius);
|
|
249
499
|
--button-min-h-sm: var(--form-min-h-sm);
|
|
250
500
|
--button-min-h-md: var(--form-min-h-md);
|
|
251
501
|
--button-min-h-lg: var(--form-min-h-lg);
|
|
252
502
|
|
|
253
|
-
/* Button padding — fixed px
|
|
254
|
-
|
|
503
|
+
/* Button padding — fixed px. A +2 ramp (10/12/14); py is 0 because the
|
|
504
|
+
height comes from --button-min-h-* (i.e. --form-min-h-*), not padding. */
|
|
505
|
+
--button-px-sm: 10px;
|
|
255
506
|
--button-py-sm: 0;
|
|
256
|
-
--button-px-md:
|
|
507
|
+
--button-px-md: 12px;
|
|
257
508
|
--button-py-md: 0;
|
|
258
|
-
--button-px-lg:
|
|
509
|
+
--button-px-lg: 14px;
|
|
259
510
|
--button-py-lg: 0;
|
|
260
511
|
|
|
512
|
+
/* Button type size — aliases the form ramp, like --button-min-h-* aliases
|
|
513
|
+
--form-min-h-*. A theme can break the alias to size button type
|
|
514
|
+
independently of input type. */
|
|
515
|
+
--button-text-size-sm: var(--form-text-size-sm);
|
|
516
|
+
--button-text-size-md: var(--form-text-size-md);
|
|
517
|
+
--button-text-size-lg: var(--form-text-size-lg);
|
|
518
|
+
--button-line-height-sm: var(--form-line-height-sm);
|
|
519
|
+
--button-line-height-md: var(--form-line-height-md);
|
|
520
|
+
--button-line-height-lg: var(--form-line-height-lg);
|
|
521
|
+
|
|
261
522
|
/* Button icon-only padding — fixed px */
|
|
262
523
|
--button-icon-p-sm: 6px;
|
|
263
524
|
--button-icon-p-md: 8px;
|
|
@@ -268,8 +529,58 @@
|
|
|
268
529
|
--button-icon-size-md: var(--form-min-h-md);
|
|
269
530
|
--button-icon-size-lg: var(--form-min-h-lg);
|
|
270
531
|
|
|
271
|
-
/* Badge variables
|
|
272
|
-
|
|
532
|
+
/* Badge variables.
|
|
533
|
+
Radius derives from --radius-base like every other CONTROL (Button/Input/
|
|
534
|
+
Segmented) — 0.75x = 6px at the 8px base, and now it tracks a themed base
|
|
535
|
+
(was a hardcoded 6px literal that silently ignored --radius-base). Uncapped:
|
|
536
|
+
a large base takes Badge fully pill, which CSS auto-clamps to 50%.
|
|
537
|
+
Paddings are fixed px (like --button-px-* / --form-px-*), overridable per theme
|
|
538
|
+
so a spacious theme can grow the chip tier alongside its controls. py drives
|
|
539
|
+
height together with the text line-height + 1px border (sm: 16+2+2=20, md:
|
|
540
|
+
16+4+2=22). pill-px must clear the rounded-full cap so text is not eaten
|
|
541
|
+
by the curve.
|
|
542
|
+
|
|
543
|
+
RADIUS IS PER SIZE. A single shared radius does not survive down the ramp:
|
|
544
|
+
the curve starts `radius` in from each edge while text starts `px + border`
|
|
545
|
+
in, so the smaller box — which has LESS padding to absorb the curve — is the
|
|
546
|
+
one whose glyphs end up sitting inside it. At the shared 0.75x (6px) sm's
|
|
547
|
+
text started at 5px against a 6px curve; 0.5x (4px) clears it. Same
|
|
548
|
+
curve-vs-padding collision the --surface-radius-cap-* ceilings solve for
|
|
549
|
+
containers, one tier down. Both still derive from --radius-base so a themed
|
|
550
|
+
base scales them; --badge-radius stays the md value (and the name a theme
|
|
551
|
+
already overrides), with --badge-radius-md aliasing it. */
|
|
552
|
+
--badge-radius: calc(var(--radius-base) * 0.75);
|
|
553
|
+
--badge-radius-sm: calc(var(--radius-base) * 0.5);
|
|
554
|
+
--badge-radius-md: var(--badge-radius);
|
|
555
|
+
--badge-px-sm: 4px;
|
|
556
|
+
--badge-px-md: 6px;
|
|
557
|
+
--badge-py-sm: 1px;
|
|
558
|
+
--badge-py-md: 2px;
|
|
559
|
+
--badge-pill-px-sm: 10px;
|
|
560
|
+
--badge-pill-px-md: 10px;
|
|
561
|
+
|
|
562
|
+
/* Pill (chip tier) — px/py per size. rounded-full is intrinsic (no radius
|
|
563
|
+
token needed); a themed --radius-base leaves it pill either way. */
|
|
564
|
+
--pill-px-sm: 10px;
|
|
565
|
+
--pill-px-md: 10px;
|
|
566
|
+
--pill-px-lg: 12px;
|
|
567
|
+
--pill-py-sm: 2px;
|
|
568
|
+
--pill-py-md: 2px;
|
|
569
|
+
--pill-py-lg: 4px;
|
|
570
|
+
|
|
571
|
+
/* Tag (chip tier) — rounded-full intrinsic. md carries a slightly larger LEFT
|
|
572
|
+
inset (--tag-pl-md) so a leading avatar/icon sits right; px-md is the right
|
|
573
|
+
edge. */
|
|
574
|
+
--tag-px-sm: 8px;
|
|
575
|
+
--tag-px-md: 8px;
|
|
576
|
+
--tag-pl-md: 10px;
|
|
577
|
+
--tag-py-sm: 2px;
|
|
578
|
+
--tag-py-md: 2px;
|
|
579
|
+
|
|
580
|
+
/* Kbd (chip tier) — px only; height stays the fixed h-5/h-6 keycap size and
|
|
581
|
+
radius already derives from --radius-base in Kbd.theme.ts. */
|
|
582
|
+
--kbd-px-sm: 4px;
|
|
583
|
+
--kbd-px-md: 6px;
|
|
273
584
|
|
|
274
585
|
/* Segmented variables - now defined in radius system above */
|
|
275
586
|
--segmented-min-h-sm: var(--form-min-h-sm);
|
|
@@ -285,6 +596,81 @@
|
|
|
285
596
|
--segmented-py-md: var(--form-py-md);
|
|
286
597
|
--segmented-py-lg: var(--form-py-lg);
|
|
287
598
|
|
|
599
|
+
/* Segmented type size — aliases the form ramp like every other Segmented
|
|
600
|
+
box token. Previously Segmented was text-sm at ALL THREE sizes while
|
|
601
|
+
Button/Input both stepped up at lg, despite --segmented-min-h-* being a
|
|
602
|
+
straight alias of --form-min-h-*: lg grew its box but not its type. */
|
|
603
|
+
--segmented-text-size-sm: var(--form-text-size-sm);
|
|
604
|
+
--segmented-text-size-md: var(--form-text-size-md);
|
|
605
|
+
--segmented-text-size-lg: var(--form-text-size-lg);
|
|
606
|
+
--segmented-line-height-sm: var(--form-line-height-sm);
|
|
607
|
+
--segmented-line-height-md: var(--form-line-height-md);
|
|
608
|
+
--segmented-line-height-lg: var(--form-line-height-lg);
|
|
609
|
+
|
|
610
|
+
/* ============================================
|
|
611
|
+
SURFACE PADDING SYSTEM — same idea as BORDER RADIUS SYSTEM/TYPE ROLE
|
|
612
|
+
SYSTEM above: a library can't bake a Tailwind literal (p-6, p-4) into a
|
|
613
|
+
.theme.ts file and call it themeable — a consumer's theme has no lever
|
|
614
|
+
to reach it. These are the "brand-visible container weight" surfaces a
|
|
615
|
+
theme author would actually want to dial roomier/tighter (e.g. the
|
|
616
|
+
spacious-dialog look), not every padded box in the library — denser/
|
|
617
|
+
data-oriented chrome (Alert, Toast, Popover, Message, Tooltip,
|
|
618
|
+
ChartTooltip, GanttChart, CommandPalette, Table, etc.) is deliberately
|
|
619
|
+
out of scope for now. HeroCard is also deliberately excluded — it's a
|
|
620
|
+
custom/override presentation of Card, not a foundational container, and
|
|
621
|
+
keeps its hardcoded p-10.
|
|
622
|
+
Each token defaults to today's exact px value — zero visual change for
|
|
623
|
+
any theme that doesn't override these. */
|
|
624
|
+
--card-px: 24px;
|
|
625
|
+
--card-py: 24px;
|
|
626
|
+
/* from p-6 */
|
|
627
|
+
--modal-px: 16px;
|
|
628
|
+
--modal-py: 16px;
|
|
629
|
+
/* from p-4 */
|
|
630
|
+
--drawer-px: 16px;
|
|
631
|
+
--drawer-py: 16px;
|
|
632
|
+
/* from p-4 */
|
|
633
|
+
|
|
634
|
+
/* Metric: uniform (not split px/py) — matches its existing non-split
|
|
635
|
+
contentPaddingSizes shape and the --metric-value-size-* naming. */
|
|
636
|
+
--metric-content-p-sm: 12px;
|
|
637
|
+
/* from p-3 */
|
|
638
|
+
--metric-content-p-md: 16px;
|
|
639
|
+
/* from p-4 */
|
|
640
|
+
--metric-content-p-lg: 20px;
|
|
641
|
+
/* from p-5 */
|
|
642
|
+
|
|
643
|
+
/* ============================================
|
|
644
|
+
MOTION SYSTEM — the transition-duration tier, tokenised.
|
|
645
|
+
|
|
646
|
+
Unlike the type utilities, Tailwind's duration-* does NOT route through a
|
|
647
|
+
theme variable: `duration-200` compiles to a literal `transition-duration:
|
|
648
|
+
.2s`, so a theme had no way to make the whole UI quicker or calmer. These
|
|
649
|
+
five tokens cover every duration the library actually uses; consume them as
|
|
650
|
+
`duration-[var(--motion-duration-base)]`.
|
|
651
|
+
|
|
652
|
+
🔴 Values are the EXACT literals they replace — this is a tokenisation, not
|
|
653
|
+
a retune. The names label the existing tiers rather than proposing new
|
|
654
|
+
timings, so a theme opts into a different feel by overriding a token; the
|
|
655
|
+
default rendering is byte-identical.
|
|
656
|
+
|
|
657
|
+
🔴 There is deliberately NO --motion-ease-* family. Easing ALREADY routes
|
|
658
|
+
through overridable variables — `ease-out` compiles to
|
|
659
|
+
`transition-timing-function: var(--ease-out)`, same as `tracking-tight` ->
|
|
660
|
+
var(--tracking-tight). A theme retunes --ease-out/--ease-in/--ease-in-out
|
|
661
|
+
directly; adding a parallel --motion-ease-* namespace would give the same
|
|
662
|
+
property two competing knobs.
|
|
663
|
+
|
|
664
|
+
🔴 Scope is CSS transitions only. motion/react animations take durations as
|
|
665
|
+
JS numbers (seconds) in .animations.ts and cannot read a CSS variable — see
|
|
666
|
+
interaction.animations.ts for the shared press/hover springs, which stay the
|
|
667
|
+
single source of truth for those. Don't mirror these tokens into JS. */
|
|
668
|
+
--motion-duration-fast: 150ms;
|
|
669
|
+
--motion-duration-base: 200ms;
|
|
670
|
+
--motion-duration-slow: 300ms;
|
|
671
|
+
--motion-duration-slower: 400ms;
|
|
672
|
+
--motion-duration-slowest: 500ms;
|
|
673
|
+
|
|
288
674
|
/* Segmented inner offset — drives wrapper padding AND inner radius so
|
|
289
675
|
the sliding background + items stay concentric with the outer shell.
|
|
290
676
|
border (1px) + padding (--segmented-padding) = total inset. */
|
|
@@ -292,15 +678,24 @@
|
|
|
292
678
|
/* 2px */
|
|
293
679
|
--segmented-inner-radius: calc(var(--segmented-radius) - var(--segmented-padding) - 1px);
|
|
294
680
|
|
|
295
|
-
/*
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
--
|
|
681
|
+
/* Menu panel inner offset — same model as --segmented-* above: one padding
|
|
682
|
+
token drives BOTH the panel's own padding AND the outer corner radius of
|
|
683
|
+
its first/last row, so the rows stay concentric with the panel instead of
|
|
684
|
+
bulging past its curve. border (1px) + padding (--dropdown-padding) = total
|
|
685
|
+
inset. Consumed by Dropdown's menu, ContextMenu's body + submenu body, and
|
|
686
|
+
MenuItem's first:/last: rules — change the padding here, never at a call
|
|
687
|
+
site, or the two drift apart. Interior rows keep their own flat radius;
|
|
688
|
+
only the two rows that meet the panel's corners take this one. */
|
|
689
|
+
--dropdown-padding: 0.25rem;
|
|
690
|
+
/* 4px */
|
|
691
|
+
--dropdown-inner-radius: calc(var(--dropdown-radius) - var(--dropdown-padding) - 1px);
|
|
692
|
+
|
|
693
|
+
/* Same pair for the FORM listbox panel, aliasing the menu's by default (see
|
|
694
|
+
--form-dropdown-radius). Named separately so a theme CAN split the two — and so
|
|
695
|
+
the inner radius always derives from the panel it actually sits in, whichever
|
|
696
|
+
way that goes. */
|
|
697
|
+
--form-dropdown-padding: var(--dropdown-padding);
|
|
698
|
+
--form-dropdown-inner-radius: calc(var(--form-dropdown-radius) - var(--form-dropdown-padding) - 1px);
|
|
304
699
|
|
|
305
700
|
/* Glass effect gradient variables */
|
|
306
701
|
--glass-gradient-outer: linear-gradient(to bottom,
|
|
@@ -312,10 +707,6 @@
|
|
|
312
707
|
rgba(242, 242, 242, 0.8) 0%,
|
|
313
708
|
rgba(250, 250, 250, 0.8) 100%);
|
|
314
709
|
|
|
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
710
|
/* Avatar variables — fixed px */
|
|
320
711
|
--avatar-size-xs: 24px;
|
|
321
712
|
/* size-6 in Tailwind */
|
|
@@ -330,60 +721,16 @@
|
|
|
330
721
|
|
|
331
722
|
/* Avatar radius - now defined in radius system above */
|
|
332
723
|
|
|
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 */
|
|
724
|
+
/* NavItem variables — radius only (padding/height live in NavItem.theme.ts) */
|
|
363
725
|
--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
726
|
|
|
373
727
|
/* Modal and Drawer */
|
|
374
|
-
--overlay-bg: rgba(0, 0, 0, 0.
|
|
728
|
+
--overlay-bg: rgba(0, 0, 0, 0.75);
|
|
375
729
|
--overlay-blur: 8px;
|
|
376
730
|
--color-scale-background: oklch(0% 0 0);
|
|
377
731
|
/* backdrop behind scaled content */
|
|
378
732
|
/* Modal radius - now defined in radius system above */
|
|
379
733
|
|
|
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
734
|
/* Neumorphic tokens — light mode (multi-layer realistic) */
|
|
388
735
|
--neu-raised-shadow:
|
|
389
736
|
1px 1px 2px rgba(0, 0, 0, 0.04), 3px 3px 6px rgba(0, 0, 0, 0.06),
|
|
@@ -425,6 +772,17 @@
|
|
|
425
772
|
rgba(255, 255, 255, 0.5) 100%);
|
|
426
773
|
}
|
|
427
774
|
|
|
775
|
+
/* NOTE on --color-neutral-*: the gray ROLE was renamed to `mono`
|
|
776
|
+
(--color-mono-* / color="mono") so it stops colliding with Tailwind's own
|
|
777
|
+
`neutral`. We deliberately do NOT re-alias --color-neutral-* here: in a
|
|
778
|
+
Tailwind build those names already resolve to Tailwind's real neutral
|
|
779
|
+
palette (emitted into styles.css alongside slate/zinc/stone, which the
|
|
780
|
+
RichTextEditor swatches rely on), and re-aliasing them to mono would
|
|
781
|
+
re-shadow Tailwind's neutral — exactly what this rename removes. Raw-var
|
|
782
|
+
consumers who used var(--color-neutral-*) for the role should migrate to
|
|
783
|
+
var(--color-mono-*); the old name now yields Tailwind's neutral (a near-
|
|
784
|
+
identical gray in the default theme). See CHANGELOG. */
|
|
785
|
+
|
|
428
786
|
/* ============================================
|
|
429
787
|
DARK MODE OVERRIDES
|
|
430
788
|
Add .dark class to <html> or a parent container
|
|
@@ -603,12 +961,18 @@
|
|
|
603
961
|
|
|
604
962
|
/* Neutral text ramp (Linear's text reads essentially neutral off-white;
|
|
605
963
|
slate was too blue against the low-chroma surfaces). */
|
|
606
|
-
--color-text-primary: var(--color-
|
|
964
|
+
--color-text-primary: var(--color-mono-50);
|
|
607
965
|
--color-text-secondary: oklch(80% 0 0);
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
966
|
+
/* Re-derived (same formulas as :root) so the mix picks up the dark
|
|
967
|
+
text-primary even when .dark is scoped to a subtree — mirrors the
|
|
968
|
+
contrast-token re-declaration below. 40% of near-white over the dark
|
|
969
|
+
surfaces lands at the neutral-500 lightness the components used. */
|
|
970
|
+
--color-text-placeholder: color-mix(in oklab, var(--color-text-primary) 40%, transparent);
|
|
971
|
+
--color-text-muted: color-mix(in oklab, var(--color-text-primary) 50%, transparent);
|
|
972
|
+
/* neutral-600, not -400: the value every date/time picker bypassed to —
|
|
973
|
+
encoded here so components don't need dark: overrides */
|
|
974
|
+
--color-text-disabled: var(--color-mono-600);
|
|
975
|
+
--color-text-inverse: var(--color-mono-950);
|
|
612
976
|
|
|
613
977
|
/* Shimmer surface sweep — dim the white streak on the near-black floor. */
|
|
614
978
|
--shimmer-surface-highlight: color-mix(in srgb, #fff 8%, transparent);
|
|
@@ -619,7 +983,8 @@
|
|
|
619
983
|
--color-success: var(--color-success-400);
|
|
620
984
|
--color-warning: var(--color-warning-400);
|
|
621
985
|
--color-danger: var(--color-danger-400);
|
|
622
|
-
|
|
986
|
+
/* Neutral fill flips to a light chip (dark ink text via auto contrast) */
|
|
987
|
+
--color-mono: var(--color-mono-200);
|
|
623
988
|
|
|
624
989
|
/* Contrast colors for filled variants on semantic backgrounds.
|
|
625
990
|
Auto-derived (same formula as :root) — recomputes against the dark-mode
|
|
@@ -628,7 +993,7 @@
|
|
|
628
993
|
--color-danger-contrast: oklch(from var(--color-danger) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
629
994
|
--color-success-contrast: oklch(from var(--color-success) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
630
995
|
--color-warning-contrast: oklch(from var(--color-warning) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
631
|
-
--color-
|
|
996
|
+
--color-mono-contrast: oklch(from var(--color-mono) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
632
997
|
|
|
633
998
|
/* Background colors - dark equivalents */
|
|
634
999
|
/* Surface ladder — faithful Fluid Functionalism dark palette. 8 rungs step up neutrally
|
|
@@ -650,13 +1015,7 @@
|
|
|
650
1015
|
--color-surface-hover: oklch(100% 0 0 / 0.07);
|
|
651
1016
|
--color-background: var(--surface-1);
|
|
652
1017
|
/* rung 1 — dark floor */
|
|
653
|
-
|
|
654
|
-
--color-background-secondary: var(--color-surface);
|
|
655
|
-
/* DEPRECATED (remove next major): migrate per-usage to --color-surface-sunken / surface ladder. */
|
|
656
|
-
--color-background-tertiary: oklch(22% 0 0);
|
|
657
|
-
--color-background-quaternary: oklch(26% 0 0);
|
|
658
|
-
--color-background-quinary: oklch(30% 0 0);
|
|
659
|
-
--color-background-disabled: var(--color-neutral-800);
|
|
1018
|
+
--color-background-disabled: var(--color-mono-800);
|
|
660
1019
|
|
|
661
1020
|
/* Scale backdrop — sits behind scaled content, darker than the #171717 floor */
|
|
662
1021
|
--color-scale-background: #0a0a0a;
|
|
@@ -777,20 +1136,32 @@
|
|
|
777
1136
|
inset 0 20px 40px -8px rgba(0, 0, 0, 0.36),
|
|
778
1137
|
inset 0 -1px 0 rgba(255, 255, 255, 0.12);
|
|
779
1138
|
--color-chart-track: rgba(255, 255, 255, 0.05);
|
|
780
|
-
|
|
781
|
-
|
|
1139
|
+
--color-chart-1: #60a5fa;
|
|
1140
|
+
--color-chart-1-contrast: oklch(from var(--color-chart-1) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
1141
|
+
--color-chart-2: #2dd4bf;
|
|
1142
|
+
--color-chart-2-contrast: oklch(from var(--color-chart-2) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
1143
|
+
--color-chart-3: #fbbf24;
|
|
1144
|
+
--color-chart-3-contrast: oklch(from var(--color-chart-3) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
1145
|
+
--color-chart-4: #a78bfa;
|
|
1146
|
+
--color-chart-4-contrast: oklch(from var(--color-chart-4) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
1147
|
+
--color-chart-5: #f472b6;
|
|
1148
|
+
--color-chart-5-contrast: oklch(from var(--color-chart-5) clamp(0, (0.85 - l) * 1000, 1) 0 0);
|
|
1149
|
+
|
|
1150
|
+
/* Glass effect gradients - dark mode. Surface-ladder rungs, NOT the deprecated
|
|
1151
|
+
--color-background-* aliases (removed next major); values match the old ones
|
|
1152
|
+
(tertiary oklch 22% ≈ surface-4, secondary = surface-3, background = surface-1). */
|
|
782
1153
|
--glass-gradient-outer: linear-gradient(135deg,
|
|
783
|
-
var(--
|
|
784
|
-
var(--
|
|
785
|
-
var(--
|
|
786
|
-
var(--
|
|
1154
|
+
var(--surface-4) 0%,
|
|
1155
|
+
var(--surface-3) 30%,
|
|
1156
|
+
var(--surface-1) 70%,
|
|
1157
|
+
var(--surface-4) 100%);
|
|
787
1158
|
--glass-gradient-inner: linear-gradient(to bottom,
|
|
788
|
-
var(--
|
|
789
|
-
var(--
|
|
1159
|
+
var(--surface-3) 0%,
|
|
1160
|
+
var(--surface-1) 100%);
|
|
790
1161
|
|
|
791
1162
|
/* Scrollbar - dark mode */
|
|
792
1163
|
--ui-scrollbar-thumb-rest: rgba(75, 85, 99, 0.3);
|
|
793
|
-
--ui-scrollbar-thumb-active: rgb(75 85 99
|
|
1164
|
+
--ui-scrollbar-thumb-active: rgb(75 85 99 / 0.75);
|
|
794
1165
|
--ui-scrollbar-track-rest: transparent;
|
|
795
1166
|
--ui-scrollbar-track-active: rgba(55, 65, 81, 0.1);
|
|
796
1167
|
|