@flikk/ui 1.0.0-beta.25 → 1.0.0-beta.27
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/dist/components/ai/CodeBlock/CodeBlock.theme.js +2 -2
- package/dist/components/ai/PromptInput/PromptInput.js +4 -0
- package/dist/components/ai/PromptInput/VoiceRecorder.js +4 -0
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +1 -1
- package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
- package/dist/components/charts/BarChart/BarChart.js +2 -2
- package/dist/components/charts/StackedBarChart/StackedBarChart.js +1 -1
- package/dist/components/charts/shared/BarRenderer/BarRenderer.js +2 -2
- package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.js +1 -1
- package/dist/components/core/Button/Button.js +1 -1
- package/dist/components/core/Button/Button.theme.js +5 -5
- package/dist/components/core/Calendar/Calendar.theme.js +1 -1
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.theme.js +1 -1
- package/dist/components/core/CommandPalette/CommandItem.js +4 -5
- package/dist/components/core/CommandPalette/CommandPalette.js +1 -1
- package/dist/components/core/CommandPalette/CommandPalette.theme.js +11 -13
- package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +0 -2
- package/dist/components/core/ContextMenu/ContextMenu.theme.js +13 -14
- package/dist/components/core/DotSeparator/DotSeparator.d.ts +3 -0
- package/dist/components/core/DotSeparator/DotSeparator.js +19 -0
- package/dist/components/core/DotSeparator/DotSeparator.theme.d.ts +2 -0
- package/dist/components/core/DotSeparator/DotSeparator.theme.js +10 -0
- package/dist/components/core/DotSeparator/DotSeparator.types.d.ts +25 -0
- package/dist/components/core/DotSeparator/index.d.ts +3 -0
- package/dist/components/core/Drawer/Drawer.theme.js +2 -2
- package/dist/components/core/Dropdown/Dropdown.theme.js +4 -5
- package/dist/components/core/Dropdown/DropdownItem.js +1 -1
- package/dist/components/core/Dropdown/DropdownMenu.js +1 -1
- package/dist/components/core/Empty/Empty.js +1 -1
- package/dist/components/core/ImagePlaceholder/ImagePlaceholder.d.ts +14 -0
- package/dist/components/core/ImagePlaceholder/ImagePlaceholder.js +28 -0
- package/dist/components/core/ImagePlaceholder/ImagePlaceholder.theme.d.ts +6 -0
- package/dist/components/core/ImagePlaceholder/ImagePlaceholder.theme.js +8 -0
- package/dist/components/core/ImagePlaceholder/ImagePlaceholder.types.d.ts +32 -0
- package/dist/components/core/ImagePlaceholder/index.d.ts +2 -0
- package/dist/components/core/MenuItem/MenuItem.js +5 -2
- package/dist/components/core/MenuItem/MenuItem.theme.d.ts +6 -0
- package/dist/components/core/MenuItem/MenuItem.theme.js +19 -16
- package/dist/components/core/MenuItem/MenuItem.types.d.ts +2 -0
- package/dist/components/core/Message/Message.theme.js +1 -1
- package/dist/components/core/Modal/Modal.theme.js +1 -1
- package/dist/components/core/NavItem/NavItem.d.ts +1 -1
- package/dist/components/core/NavItem/NavItem.js +187 -68
- package/dist/components/core/NavItem/NavItem.theme.js +31 -12
- package/dist/components/core/NavItem/NavItem.types.d.ts +17 -39
- package/dist/components/core/Pagination/Pagination.theme.js +3 -3
- package/dist/components/core/Popover/Popover.theme.js +1 -1
- package/dist/components/core/Popover/Popover.types.d.ts +6 -2
- package/dist/components/core/Popover/PopoverBody.js +10 -3
- package/dist/components/core/Progress/Progress.theme.js +1 -1
- package/dist/components/core/ScrollArea/ScrollArea.js +2 -2
- package/dist/components/core/ScrollArea/ScrollArea.theme.js +1 -1
- package/dist/components/core/Segmented/Segmented.js +8 -6
- package/dist/components/core/Segmented/Segmented.theme.js +3 -3
- package/dist/components/core/Sidebar/Sidebar.d.ts +3 -1
- package/dist/components/core/Sidebar/Sidebar.js +53 -16
- package/dist/components/core/Sidebar/Sidebar.theme.js +5 -7
- package/dist/components/core/Sidebar/Sidebar.types.d.ts +125 -8
- package/dist/components/core/Sidebar/SidebarCard.d.ts +25 -0
- package/dist/components/core/Sidebar/SidebarCard.js +68 -0
- package/dist/components/core/Sidebar/SidebarCard.theme.d.ts +8 -0
- package/dist/components/core/Sidebar/SidebarCard.theme.js +18 -0
- package/dist/components/core/Sidebar/SidebarContent.js +10 -6
- package/dist/components/core/Sidebar/SidebarContext.d.ts +17 -16
- package/dist/components/core/Sidebar/SidebarContext.js +43 -20
- package/dist/components/core/Sidebar/SidebarFooter.js +4 -6
- package/dist/components/core/Sidebar/SidebarHeader.js +12 -9
- package/dist/components/core/Sidebar/SidebarLogo.js +39 -8
- package/dist/components/core/Sidebar/SidebarNav.js +4 -3
- package/dist/components/core/Sidebar/SidebarNavGroup.js +4 -7
- package/dist/components/core/Sidebar/SidebarSearch.d.ts +22 -0
- package/dist/components/core/Sidebar/SidebarSearch.js +135 -0
- package/dist/components/core/Sidebar/SidebarToggle.js +6 -1
- package/dist/components/core/Sidebar/SidebarUserProfile.js +33 -17
- package/dist/components/core/Sidebar/index.d.ts +4 -3
- package/dist/components/core/Skeleton/Skeleton.theme.js +1 -1
- package/dist/components/core/Spinner/Spinner.theme.js +1 -1
- package/dist/components/core/Tabs/Tabs.js +6 -1
- package/dist/components/core/Tabs/Tabs.types.d.ts +2 -0
- package/dist/components/core/Tabs/TabsBody.js +5 -3
- package/dist/components/core/Tag/Tag.js +29 -5
- package/dist/components/core/Tag/Tag.theme.js +14 -9
- package/dist/components/core/Tag/Tag.types.d.ts +7 -0
- package/dist/components/core/Tooltip/Tooltip.js +1 -1
- package/dist/components/core/Tooltip/Tooltip.theme.js +1 -2
- package/dist/components/core/index.d.ts +2 -0
- package/dist/components/core/index.js +6 -2
- package/dist/components/data-display/GanttChart/GanttChart.d.ts +1 -1
- package/dist/components/data-display/GanttChart/GanttChart.js +31 -4
- package/dist/components/data-display/GanttChart/GanttChart.theme.js +19 -17
- package/dist/components/data-display/GanttChart/GanttChart.types.d.ts +19 -0
- package/dist/components/data-display/GanttChart/GanttChart.utils.js +1 -1
- package/dist/components/data-display/GanttChart/GanttChartPanel.d.ts +1 -1
- package/dist/components/data-display/GanttChart/GanttChartPanel.js +3 -3
- package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +7 -4
- package/dist/components/data-display/GanttChart/GanttMilestone.js +5 -5
- package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +1 -1
- package/dist/components/data-display/GanttChart/GanttTablePanel.js +1 -1
- package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +2 -2
- package/dist/components/data-display/GanttChart/GanttTaskBar.js +37 -16
- package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +2 -1
- package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +35 -11
- package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -2
- package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +3 -2
- package/dist/components/data-display/GanttChart/index.d.ts +1 -1
- package/dist/components/data-display/KPI/KPI.js +13 -3
- package/dist/components/data-display/KPI/KPI.theme.js +3 -3
- package/dist/components/data-display/Metric/Metric.theme.js +3 -3
- package/dist/components/data-display/Table/Table.js +4 -3
- package/dist/components/data-display/Table/Table.theme.js +14 -6
- package/dist/components/data-display/Table/Table.types.d.ts +15 -0
- package/dist/components/data-display/Table/TableColumnManager.js +1 -1
- package/dist/components/data-display/Table/index.d.ts +2 -2
- package/dist/components/effects/Aurora/Aurora.d.ts +6 -17
- package/dist/components/effects/Aurora/Aurora.js +310 -105
- package/dist/components/effects/Aurora/Aurora.types.d.ts +6 -0
- package/dist/components/effects/InteractiveCharacters/InteractiveCharacters.js +3 -3
- package/dist/components/effects/InteractiveCharacters/characters/BlobCharacter.js +13 -4
- package/dist/components/effects/InteractiveCharacters/characters/SmallCharacter.js +13 -4
- package/dist/components/effects/InteractiveCharacters/characters/TallCharacter.js +14 -4
- package/dist/components/effects/MorphingText/MorphingText.js +40 -7
- package/dist/components/effects/StripePattern/StripePattern.d.ts +18 -0
- package/dist/components/effects/StripePattern/StripePattern.js +54 -0
- package/dist/components/effects/StripePattern/StripePattern.types.d.ts +53 -0
- package/dist/components/effects/StripePattern/index.d.ts +2 -0
- package/dist/components/effects/index.d.ts +2 -0
- package/dist/components/effects/index.js +1 -0
- package/dist/components/forms/Checkbox/Checkbox.theme.js +1 -1
- package/dist/components/forms/Combobox/Combobox.js +1 -1
- package/dist/components/forms/Combobox/Combobox.theme.js +2 -4
- package/dist/components/forms/CronInput/CronInput.js +1 -1
- package/dist/components/forms/CronInput/CronInput.theme.js +22 -31
- package/dist/components/forms/DatePicker/DatePicker.theme.js +11 -18
- package/dist/components/forms/DatePicker/DatePickerTrigger.js +1 -1
- package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +7 -14
- package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +1 -1
- package/dist/components/forms/FileUpload/FileUpload.animations.d.ts +29 -0
- package/dist/components/forms/FileUpload/FileUpload.animations.js +19 -0
- package/dist/components/forms/FileUpload/FileUpload.js +88 -49
- package/dist/components/forms/FileUpload/FileUpload.theme.d.ts +2 -10
- package/dist/components/forms/FileUpload/FileUpload.theme.js +16 -30
- package/dist/components/forms/FileUpload/FileUpload.types.d.ts +26 -10
- package/dist/components/forms/FileUpload/FileUploadProgress.js +27 -20
- package/dist/components/forms/FileUpload/FileUploadProgress.theme.js +2 -2
- package/dist/components/forms/Input/Input.theme.js +16 -15
- package/dist/components/forms/InputCounter/InputCounter.theme.js +1 -1
- package/dist/components/forms/Mention/Mention.js +152 -57
- package/dist/components/forms/Mention/Mention.theme.js +16 -23
- package/dist/components/forms/Mention/Mention.types.d.ts +12 -12
- package/dist/components/forms/Mention/Mention.utils.js +32 -4
- package/dist/components/forms/Radio/Radio.theme.js +1 -1
- package/dist/components/forms/RichTextEditor/RichTextEditor.d.ts +18 -0
- package/dist/components/forms/RichTextEditor/RichTextEditor.js +1231 -236
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.d.ts +53 -1
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +99 -25
- package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +42 -3
- package/dist/components/forms/RichTextEditor/index.d.ts +2 -2
- package/dist/components/forms/Select/Select.js +2 -2
- package/dist/components/forms/Select/Select.theme.js +3 -3
- package/dist/components/forms/Slider/Slider.theme.js +1 -1
- package/dist/components/forms/Switch/Switch.theme.js +1 -1
- package/dist/components/forms/TimePicker/TimePicker.theme.js +2 -2
- package/dist/components/forms/TimePicker/TimePickerContent.js +4 -0
- package/dist/components/forms/TimePicker/TimePickerTrigger.js +1 -1
- package/dist/components/forms/forms.theme.js +24 -19
- package/dist/components/forms/index.js +4 -0
- package/dist/components/layout/AppShell/AppShell.d.ts +10 -0
- package/dist/components/layout/AppShell/AppShell.js +84 -0
- package/dist/components/layout/AppShell/AppShell.theme.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShell.theme.js +42 -0
- package/dist/components/layout/AppShell/AppShell.types.d.ts +127 -0
- package/dist/components/layout/AppShell/AppShellContext.d.ts +14 -0
- package/dist/components/layout/AppShell/AppShellContext.js +19 -0
- package/dist/components/layout/AppShell/AppShellFooter.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellFooter.js +12 -0
- package/dist/components/layout/AppShell/AppShellHeader.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellHeader.js +12 -0
- package/dist/components/layout/AppShell/AppShellMain.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellMain.js +19 -0
- package/dist/components/layout/AppShell/AppShellRightPanel.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellRightPanel.js +16 -0
- package/dist/components/layout/AppShell/AppShellSidebar.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellSidebar.js +16 -0
- package/dist/components/layout/AppShell/AppShellTopbar.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellTopbar.js +12 -0
- package/dist/components/layout/AppShell/index.d.ts +3 -0
- package/dist/components/layout/FormLayout/FormLayout.js +9 -4
- package/dist/components/layout/FormLayout/FormLayout.types.d.ts +3 -3
- package/dist/components/layout/FormLayout/FormLayoutSection.js +6 -1
- package/dist/components/layout/PageLayout/PageLayout.d.ts +2 -2
- package/dist/components/layout/PageLayout/PageLayout.js +23 -5
- package/dist/components/layout/PageLayout/PageLayout.theme.d.ts +2 -1
- package/dist/components/layout/PageLayout/PageLayout.theme.js +35 -6
- package/dist/components/layout/PageLayout/PageLayout.types.d.ts +45 -0
- package/dist/components/layout/PageLayout/PageLayoutContent.js +6 -4
- package/dist/components/layout/PageLayout/PageLayoutHeader.js +3 -3
- package/dist/components/layout/PageLayout/PageLayoutSidebar.js +5 -3
- package/dist/components/layout/PageLayout/index.d.ts +1 -1
- package/dist/components/layout/index.d.ts +1 -0
- package/dist/components/layout/index.js +2 -0
- package/dist/hooks/useSelectPortal.d.ts +10 -2
- package/dist/hooks/useSelectPortal.js +45 -24
- package/dist/index.js +8 -2
- package/dist/registry.json +10021 -0
- package/dist/styles.css +1 -1
- package/dist/utils/dateUtils.js +11 -1
- package/package.json +4 -2
- package/src/global.scss +29 -8
- package/src/styles/theme.css +174 -100
- package/dist/components/core/Sidebar/SidebarSubmenu.d.ts +0 -7
- package/dist/components/core/Sidebar/SidebarSubmenu.js +0 -12
package/dist/utils/dateUtils.js
CHANGED
|
@@ -191,5 +191,15 @@ function getDaysBetween(a, b) {
|
|
|
191
191
|
const end = toDate(b);
|
|
192
192
|
return Math.round((end.getTime() - start.getTime()) / 86400000) + 1;
|
|
193
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* Get the ISO week number for a date.
|
|
196
|
+
*/
|
|
197
|
+
function getWeekNumber(date) {
|
|
198
|
+
const d = new Date(date);
|
|
199
|
+
d.setHours(0, 0, 0, 0);
|
|
200
|
+
d.setDate(d.getDate() + 3 - ((d.getDay() + 6) % 7));
|
|
201
|
+
const yearStart = new Date(d.getFullYear(), 0, 1);
|
|
202
|
+
return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
|
|
203
|
+
}
|
|
194
204
|
|
|
195
|
-
export { addDays, formatDateCustom, formatTimestamp, getDaysBetween, getLastMonth, getLastWeek, getThisMonth, getThisWeek, isSameDay, isWeekend, toDate };
|
|
205
|
+
export { addDays, formatDateCustom, formatTimestamp, getDaysBetween, getLastMonth, getLastWeek, getThisMonth, getThisWeek, getWeekNumber, isSameDay, isWeekend, toDate };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flikk/ui",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.27",
|
|
4
4
|
"description": "A modern React component library built with TypeScript, Tailwind CSS v4, and Framer Motion. Follows the shadcn philosophy with complete className override support.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
"./tailwind.preset.cjs": "./tailwind.preset.cjs",
|
|
60
60
|
"./shadcn-compat.css": "./dist/shadcn-compat.css",
|
|
61
61
|
"./theme.css": "./dist/theme.css",
|
|
62
|
+
"./registry.json": "./dist/registry.json",
|
|
62
63
|
"./bg/*": "./dist/bg/*"
|
|
63
64
|
},
|
|
64
65
|
"files": [
|
|
@@ -70,8 +71,9 @@
|
|
|
70
71
|
],
|
|
71
72
|
"scripts": {
|
|
72
73
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
73
|
-
"build": "rollup -c && npm run build:css && npm run build:assets && npm run build:copy-css",
|
|
74
|
+
"build": "rollup -c && npm run build:css && npm run build:assets && npm run build:copy-css && npm run build:registry",
|
|
74
75
|
"build:assets": "cp -r public/bg dist/bg",
|
|
76
|
+
"build:registry": "FLIKK_REGISTRY_OUT=dist/registry.json packages/mcp/node_modules/.bin/tsx packages/mcp/scripts/extract.ts",
|
|
75
77
|
"build:copy-css": "cp src/shadcn-compat.css dist/shadcn-compat.css && cp src/theme-plugin.css dist/theme.css",
|
|
76
78
|
"build:css": "tailwindcss -m -i ./src/tailwind-config.css -o ./dist/styles.css",
|
|
77
79
|
"analyze": "ANALYZE=true rollup -c && open stats.html",
|
package/src/global.scss
CHANGED
|
@@ -274,14 +274,9 @@
|
|
|
274
274
|
|
|
275
275
|
/* Global overlay scrollbar styling */
|
|
276
276
|
@layer base {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
--ui-scrollbar-thumb-rest: rgba(209, 213, 219, 0.3);
|
|
281
|
-
--ui-scrollbar-thumb-active: rgb(209 213 219);
|
|
282
|
-
--ui-scrollbar-track-rest: transparent;
|
|
283
|
-
--ui-scrollbar-track-active: rgba(209, 213, 219, 0.1);
|
|
284
|
-
}
|
|
277
|
+
/* Scrollbar token defaults (light + .dark) live in styles/theme.css under
|
|
278
|
+
@layer theme so the dark override actually wins the cascade. See the note
|
|
279
|
+
there. The webkit/Firefox rules below just consume those vars. */
|
|
285
280
|
|
|
286
281
|
* {
|
|
287
282
|
/* Firefox - use thin scrollbar with custom colors */
|
|
@@ -897,6 +892,32 @@ body {
|
|
|
897
892
|
input[type="number"] {
|
|
898
893
|
-moz-appearance: textfield;
|
|
899
894
|
}
|
|
895
|
+
|
|
896
|
+
/* Style the native search clear (×) button to match the Tag dismiss icon —
|
|
897
|
+
muted by default, darkens on hover. Webkit only (Chrome/Safari/Edge);
|
|
898
|
+
Firefox doesn't render this pseudo-element. */
|
|
899
|
+
input[type="search"]::-webkit-search-cancel-button {
|
|
900
|
+
-webkit-appearance: none;
|
|
901
|
+
appearance: none;
|
|
902
|
+
height: 0.875rem;
|
|
903
|
+
width: 0.875rem;
|
|
904
|
+
margin-left: 0.25rem;
|
|
905
|
+
background-color: var(--color-text-muted);
|
|
906
|
+
cursor: pointer;
|
|
907
|
+
transition: background-color 200ms ease;
|
|
908
|
+
-webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 18 18 6M6 6l12 12'/></svg>");
|
|
909
|
+
mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 18 18 6M6 6l12 12'/></svg>");
|
|
910
|
+
-webkit-mask-size: contain;
|
|
911
|
+
mask-size: contain;
|
|
912
|
+
-webkit-mask-repeat: no-repeat;
|
|
913
|
+
mask-repeat: no-repeat;
|
|
914
|
+
-webkit-mask-position: center;
|
|
915
|
+
mask-position: center;
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
input[type="search"]::-webkit-search-cancel-button:hover {
|
|
919
|
+
background-color: var(--color-text-primary);
|
|
920
|
+
}
|
|
900
921
|
}
|
|
901
922
|
|
|
902
923
|
/* Heatmap flicker animation */
|
package/src/styles/theme.css
CHANGED
|
@@ -88,12 +88,26 @@
|
|
|
88
88
|
--color-text-inverse: var(--color-neutral-50);
|
|
89
89
|
|
|
90
90
|
/* generic colors */
|
|
91
|
-
--color-border: oklch(
|
|
91
|
+
--color-border: oklch(93% 0 0);
|
|
92
92
|
--color-border-secondary: oklch(87% 0 0);
|
|
93
|
+
/* Interaction border (hover/focus-adjacent) — darkens in light for a clear
|
|
94
|
+
edge, mirror of --color-surface-hover but on the border axis. */
|
|
95
|
+
--color-border-hover: oklch(80% 0 0);
|
|
96
|
+
/* Surface elevation ladder: surface-sunken < background (floor) < surface < surface-raised < surface-overlay.
|
|
97
|
+
In light mode raised surfaces are ~white (elevation via shadow + border); sunken is recessed below the floor. */
|
|
98
|
+
--color-surface-sunken: oklch(94% 0 0);
|
|
93
99
|
--color-surface: oklch(100% 0 0);
|
|
100
|
+
--color-surface-raised: oklch(100% 0 0);
|
|
101
|
+
--color-surface-overlay: oklch(100% 0 0);
|
|
102
|
+
/* Interaction fill (the one tokenized state): translucent tint so it composites correctly
|
|
103
|
+
over ANY surface level — darkens in light, lightens in dark. For hover/active highlights. */
|
|
104
|
+
--color-surface-hover: oklch(0% 0 0 / 0.05);
|
|
94
105
|
--color-chart-track: rgba(0, 0, 0, 0.06);
|
|
95
106
|
--color-background: oklch(98.5% 0.002 247.839);
|
|
96
|
-
--color-
|
|
107
|
+
/* DEPRECATED (remove next major): alias of --color-surface. Use the surface ladder. */
|
|
108
|
+
--color-background-secondary: var(--color-surface);
|
|
109
|
+
/* DEPRECATED (remove next major): recessed/subtle fills. Migrate per-usage to --color-surface-sunken
|
|
110
|
+
(dark values below are inverted vs. a correct sunken token, so no blind alias). */
|
|
97
111
|
--color-background-tertiary: oklch(90% 0.002 247.839);
|
|
98
112
|
--color-background-quaternary: oklch(85% 0.002 247.839);
|
|
99
113
|
--color-background-quinary: oklch(80% 0.002 247.839);
|
|
@@ -122,26 +136,37 @@
|
|
|
122
136
|
--font-weight-extrabold: 800;
|
|
123
137
|
|
|
124
138
|
/* Form element variables — fixed px so they don't scale with root font-size */
|
|
125
|
-
--form-min-h-sm: 32px;
|
|
126
|
-
|
|
127
|
-
--form-min-h-
|
|
128
|
-
|
|
129
|
-
--form-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
--form-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
--form-
|
|
136
|
-
|
|
137
|
-
--form-
|
|
139
|
+
--form-min-h-sm: 32px;
|
|
140
|
+
/* h-8 in Tailwind */
|
|
141
|
+
--form-min-h-md: 40px;
|
|
142
|
+
/* h-10 in Tailwind */
|
|
143
|
+
--form-min-h-lg: 48px;
|
|
144
|
+
/* h-12 in Tailwind */
|
|
145
|
+
|
|
146
|
+
--form-label-pb: 8px;
|
|
147
|
+
/* pb-2 in Tailwind */
|
|
148
|
+
|
|
149
|
+
--form-px-sm: 12px;
|
|
150
|
+
/* px-3 in Tailwind */
|
|
151
|
+
--form-px-md: 14px;
|
|
152
|
+
/* px-3.5 in Tailwind */
|
|
153
|
+
--form-px-lg: 16px;
|
|
154
|
+
/* px-4 in Tailwind */
|
|
155
|
+
|
|
156
|
+
--form-py-sm: 8px;
|
|
157
|
+
/* py-1 in Tailwind */
|
|
158
|
+
--form-py-md: 10px;
|
|
159
|
+
/* py-2 in Tailwind */
|
|
160
|
+
--form-py-lg: 12px;
|
|
161
|
+
/* py-3 in Tailwind */
|
|
138
162
|
|
|
139
163
|
/* ============================================
|
|
140
164
|
BORDER RADIUS SYSTEM
|
|
141
165
|
Change --radius-base to adjust the entire UI.
|
|
142
166
|
Individual --*-radius variables can be overridden independently.
|
|
143
167
|
============================================ */
|
|
144
|
-
--radius-base: 8px;
|
|
168
|
+
--radius-base: 8px;
|
|
169
|
+
/* Base radius token */
|
|
145
170
|
|
|
146
171
|
/* Forms & Controls (1x base = 8px) */
|
|
147
172
|
--form-radius: var(--radius-base);
|
|
@@ -208,14 +233,21 @@
|
|
|
208
233
|
--segmented-min-h-lg: var(--form-min-h-lg);
|
|
209
234
|
|
|
210
235
|
/* Segmented padding */
|
|
211
|
-
--segmented-px-sm:
|
|
212
|
-
--segmented-px-md:
|
|
213
|
-
--segmented-px-lg:
|
|
236
|
+
--segmented-px-sm: 8px;
|
|
237
|
+
--segmented-px-md: 10px;
|
|
238
|
+
--segmented-px-lg: 12px;
|
|
214
239
|
|
|
215
240
|
--segmented-py-sm: var(--form-py-sm);
|
|
216
241
|
--segmented-py-md: var(--form-py-md);
|
|
217
242
|
--segmented-py-lg: var(--form-py-lg);
|
|
218
243
|
|
|
244
|
+
/* Segmented inner offset — drives wrapper padding AND inner radius so
|
|
245
|
+
the sliding background + items stay concentric with the outer shell.
|
|
246
|
+
border (1px) + padding (--segmented-padding) = total inset. */
|
|
247
|
+
--segmented-padding: 0.125rem;
|
|
248
|
+
/* 2px */
|
|
249
|
+
--segmented-inner-radius: calc(var(--segmented-radius) - var(--segmented-padding) - 1px);
|
|
250
|
+
|
|
219
251
|
/* Segmented sliding background */
|
|
220
252
|
--segmented-active-bg: #ffffff;
|
|
221
253
|
--segmented-active-shadow:
|
|
@@ -227,39 +259,46 @@
|
|
|
227
259
|
--glass-layer-inner-offset: 1.5px;
|
|
228
260
|
|
|
229
261
|
/* Glass effect gradient variables */
|
|
230
|
-
--glass-gradient-outer: linear-gradient(
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
to bottom,
|
|
239
|
-
rgba(242, 242, 242, 0.8) 0%,
|
|
240
|
-
rgba(250, 250, 250, 0.8) 100%
|
|
241
|
-
);
|
|
262
|
+
--glass-gradient-outer: linear-gradient(to bottom,
|
|
263
|
+
rgba(250, 250, 250, 0.8) 0%,
|
|
264
|
+
rgba(229, 229, 229, 0.8) 30%,
|
|
265
|
+
rgba(242, 242, 242, 0.8) 70%,
|
|
266
|
+
rgba(250, 250, 250, 0.8) 100%);
|
|
267
|
+
--glass-gradient-inner: linear-gradient(to bottom,
|
|
268
|
+
rgba(242, 242, 242, 0.8) 0%,
|
|
269
|
+
rgba(250, 250, 250, 0.8) 100%);
|
|
242
270
|
|
|
243
271
|
/* Chat message variables */
|
|
244
272
|
--chat-bubble-border-sender: rgba(255, 255, 255, 0.4);
|
|
245
273
|
--chat-bubble-border-receiver: rgba(255, 255, 255, 1);
|
|
246
274
|
|
|
247
275
|
/* Avatar variables — fixed px */
|
|
248
|
-
--avatar-size-xs: 24px;
|
|
249
|
-
|
|
250
|
-
--avatar-size-
|
|
251
|
-
|
|
252
|
-
--avatar-size-
|
|
276
|
+
--avatar-size-xs: 24px;
|
|
277
|
+
/* size-6 in Tailwind */
|
|
278
|
+
--avatar-size-sm: 32px;
|
|
279
|
+
/* size-8 in Tailwind */
|
|
280
|
+
--avatar-size-md: 40px;
|
|
281
|
+
/* size-10 in Tailwind */
|
|
282
|
+
--avatar-size-lg: 48px;
|
|
283
|
+
/* size-12 in Tailwind */
|
|
284
|
+
--avatar-size-xl: 64px;
|
|
285
|
+
/* size-16 in Tailwind */
|
|
253
286
|
|
|
254
287
|
/* Avatar radius - now defined in radius system above */
|
|
255
288
|
|
|
256
289
|
/* Carousel Variables */
|
|
257
|
-
--carousel-container-width: 100%;
|
|
258
|
-
|
|
259
|
-
--carousel-slide-
|
|
260
|
-
|
|
261
|
-
--carousel-
|
|
262
|
-
|
|
290
|
+
--carousel-container-width: 100%;
|
|
291
|
+
/* Full width container */
|
|
292
|
+
--carousel-slide-width: 66vw;
|
|
293
|
+
/* Default slide width - can be overridden */
|
|
294
|
+
--carousel-slide-height: 44rem;
|
|
295
|
+
/* 384px = h-96 */
|
|
296
|
+
--carousel-slide-gap: 16px;
|
|
297
|
+
/* gap between slides */
|
|
298
|
+
--carousel-controls-size: 48px;
|
|
299
|
+
/* control button size */
|
|
300
|
+
--carousel-controls-offset: 16px;
|
|
301
|
+
/* distance from edge */
|
|
263
302
|
|
|
264
303
|
/* Popover variables - radius now defined in radius system above */
|
|
265
304
|
--popover-shadow:
|
|
@@ -278,16 +317,20 @@
|
|
|
278
317
|
|
|
279
318
|
/* NavItem variables */
|
|
280
319
|
--nav-item-radius: var(--radius-base);
|
|
281
|
-
--nav-item-min-h: 40px;
|
|
320
|
+
--nav-item-min-h: 40px;
|
|
321
|
+
/* h-10 in Tailwind */
|
|
282
322
|
|
|
283
323
|
/* NavItem padding — fixed px */
|
|
284
|
-
--nav-item-px: 12px;
|
|
285
|
-
|
|
324
|
+
--nav-item-px: 12px;
|
|
325
|
+
/* px-3 in Tailwind */
|
|
326
|
+
--nav-item-py: 10px;
|
|
327
|
+
/* py-2.5 in Tailwind */
|
|
286
328
|
|
|
287
329
|
/* Modal and Drawer */
|
|
288
330
|
--overlay-bg: rgba(0, 0, 0, 0.65);
|
|
289
331
|
--overlay-blur: 2px;
|
|
290
|
-
--color-scale-background: oklch(0% 0 0);
|
|
332
|
+
--color-scale-background: oklch(0% 0 0);
|
|
333
|
+
/* backdrop behind scaled content */
|
|
291
334
|
/* Modal radius - now defined in radius system above */
|
|
292
335
|
|
|
293
336
|
/* Shadow color presets for utility generation */
|
|
@@ -325,21 +368,17 @@
|
|
|
325
368
|
inset -0.5px -0.5px 1px rgba(255, 255, 255, 0.4),
|
|
326
369
|
inset -1px -1px 2px rgba(255, 255, 255, 0.3), 0 1px 2px rgba(0, 0, 0, 0.06),
|
|
327
370
|
0 2px 4px rgba(0, 0, 0, 0.04);
|
|
328
|
-
--neu-raised-border: linear-gradient(
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
rgba(255, 255, 255, 0.15) 50%,
|
|
340
|
-
rgba(255, 255, 255, 0.35) 75%,
|
|
341
|
-
rgba(255, 255, 255, 0.5) 100%
|
|
342
|
-
);
|
|
371
|
+
--neu-raised-border: linear-gradient(145deg,
|
|
372
|
+
rgba(255, 255, 255, 0.7) 0%,
|
|
373
|
+
rgba(255, 255, 255, 0.35) 30%,
|
|
374
|
+
transparent 50%,
|
|
375
|
+
rgba(0, 0, 0, 0.06) 100%);
|
|
376
|
+
--neu-inset-border: linear-gradient(180deg,
|
|
377
|
+
rgba(0, 0, 0, 0.1) 0%,
|
|
378
|
+
rgba(0, 0, 0, 0.04) 25%,
|
|
379
|
+
rgba(255, 255, 255, 0.15) 50%,
|
|
380
|
+
rgba(255, 255, 255, 0.35) 75%,
|
|
381
|
+
rgba(255, 255, 255, 0.5) 100%);
|
|
343
382
|
}
|
|
344
383
|
|
|
345
384
|
/* ============================================
|
|
@@ -354,18 +393,48 @@
|
|
|
354
393
|
Tailwind's generated theme styles.
|
|
355
394
|
============================================ */
|
|
356
395
|
@layer theme {
|
|
396
|
+
/* Scrollbar - light mode defaults.
|
|
397
|
+
These MUST live in @layer theme (not @layer base) alongside the .dark
|
|
398
|
+
override below. The layer order is `theme, base, ...`, so values in
|
|
399
|
+
@layer base win over @layer theme — if these defaults sat in base, the
|
|
400
|
+
.dark override here would never apply and the scrollbar would render with
|
|
401
|
+
the light (bright) thumb in dark mode. Keeping both in @layer theme means
|
|
402
|
+
the .dark block (later source order, equal specificity) wins. */
|
|
403
|
+
:root {
|
|
404
|
+
/* Tell the UA which palette to paint native chrome (scrollbars, form
|
|
405
|
+
controls, etc.). Our custom `::-webkit-scrollbar` track/thumb are mostly
|
|
406
|
+
transparent, so without this the browser composites its *default light*
|
|
407
|
+
scrollbar underneath — in dark mode the visible (active) track then reads
|
|
408
|
+
as an opaque white bar showing through the faint dark tint. `.dark` flips
|
|
409
|
+
this to `dark` below so the UA scrollbar matches the surface. */
|
|
410
|
+
color-scheme: light;
|
|
411
|
+
--ui-scrollbar-size: 4px;
|
|
412
|
+
--ui-scrollbar-thumb-rest: rgba(209, 213, 219, 0.3);
|
|
413
|
+
--ui-scrollbar-thumb-active: rgb(209 213 219);
|
|
414
|
+
--ui-scrollbar-track-rest: transparent;
|
|
415
|
+
--ui-scrollbar-track-active: rgba(209, 213, 219, 0.1);
|
|
416
|
+
}
|
|
417
|
+
|
|
357
418
|
.dark {
|
|
419
|
+
/* Paint native UA chrome (scrollbars, form controls) with the dark palette.
|
|
420
|
+
Pairs with `color-scheme: light` on :root — fixes the white native
|
|
421
|
+
scrollbar track that showed through our transparent custom track in dark
|
|
422
|
+
mode (Select, RichTextEditor dropdowns, any native-overflow surface). */
|
|
423
|
+
color-scheme: dark;
|
|
424
|
+
|
|
358
425
|
/* Text colors - inverted for dark backgrounds */
|
|
359
426
|
|
|
427
|
+
/* Neutral text ramp (Linear's text reads essentially neutral off-white;
|
|
428
|
+
slate was too blue against the low-chroma surfaces). */
|
|
360
429
|
--color-text-primary: var(--color-neutral-50);
|
|
361
430
|
--color-text-secondary: var(--color-neutral-400);
|
|
362
431
|
--color-text-placeholder: var(--color-neutral-600);
|
|
363
|
-
--color-text-muted: var(--color-neutral-
|
|
432
|
+
--color-text-muted: var(--color-neutral-600);
|
|
364
433
|
--color-text-disabled: var(--color-neutral-400);
|
|
365
434
|
--color-text-inverse: var(--color-neutral-950);
|
|
366
435
|
|
|
367
436
|
/* Base theme colors */
|
|
368
|
-
--color-primary: var(--color-primary-
|
|
437
|
+
--color-primary: var(--color-primary-400);
|
|
369
438
|
--color-success: var(--color-success-400);
|
|
370
439
|
--color-warning: var(--color-warning-400);
|
|
371
440
|
--color-danger: var(--color-danger-400);
|
|
@@ -379,39 +448,48 @@
|
|
|
379
448
|
--color-secondary-contrast: var(--color-neutral-50);
|
|
380
449
|
|
|
381
450
|
/* Background colors - dark equivalents */
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
451
|
+
/* Surface elevation ladder: sunken sits below the floor; surface levels ascend so each reads as raised. */
|
|
452
|
+
/* Linear-mapped: near-black floor with a *faint* cool tint (chroma ~0.004,
|
|
453
|
+
far subtler than slate — closest to Linear's #08090a / #1c1d20 grays). */
|
|
454
|
+
--color-surface-sunken: oklch(11% 0.004 255);
|
|
455
|
+
--color-surface: oklch(17% 0.004 255);
|
|
456
|
+
--color-surface-raised: oklch(20% 0.004 255);
|
|
457
|
+
--color-surface-overlay: oklch(23% 0.005 255);
|
|
458
|
+
--color-surface-hover: oklch(100% 0 0 / 0.07);
|
|
459
|
+
--color-background: oklch(12.5% 0.004 255);
|
|
460
|
+
/* DEPRECATED (remove next major): alias of --color-surface. */
|
|
461
|
+
--color-background-secondary: var(--color-surface);
|
|
462
|
+
/* DEPRECATED (remove next major): migrate per-usage to --color-surface-sunken / surface ladder. */
|
|
385
463
|
--color-background-tertiary: oklch(22% 0 0);
|
|
386
464
|
--color-background-quaternary: oklch(26% 0 0);
|
|
387
465
|
--color-background-quinary: oklch(30% 0 0);
|
|
388
466
|
--color-background-disabled: var(--color-neutral-800);
|
|
389
467
|
|
|
390
468
|
/* Scale backdrop */
|
|
391
|
-
--color-scale-background: oklch(8% 0
|
|
392
|
-
|
|
393
|
-
/* Border -
|
|
394
|
-
|
|
395
|
-
--color-border
|
|
469
|
+
--color-scale-background: oklch(8% 0.004 255);
|
|
470
|
+
|
|
471
|
+
/* Border - Linear-style subtle light hairline (a faint lift that catches
|
|
472
|
+
light on the dark surface, rather than a flat mid-gray line). */
|
|
473
|
+
--color-border: oklch(100% 0.01 255 / 0.05);
|
|
474
|
+
--color-border-secondary: oklch(100% 0.01 255 / 0.10);
|
|
475
|
+
/* Interaction border — lightens in dark (higher alpha) so an edge "lifts"
|
|
476
|
+
on hover, matching the --color-surface-hover lighten-in-dark behavior. */
|
|
477
|
+
--color-border-hover: oklch(100% 0.01 255 / 0.18);
|
|
396
478
|
--color-chart-track: rgba(255, 255, 255, 0.05);
|
|
397
479
|
|
|
398
480
|
/* Glass effect gradients - dark mode */
|
|
399
|
-
--glass-gradient-outer: linear-gradient(
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
to bottom,
|
|
408
|
-
var(--color-background-secondary) 0%,
|
|
409
|
-
var(--color-background) 100%
|
|
410
|
-
);
|
|
481
|
+
--glass-gradient-outer: linear-gradient(135deg,
|
|
482
|
+
var(--color-background-tertiary) 0%,
|
|
483
|
+
var(--color-background-secondary) 30%,
|
|
484
|
+
var(--color-background) 70%,
|
|
485
|
+
var(--color-background-tertiary) 100%);
|
|
486
|
+
--glass-gradient-inner: linear-gradient(to bottom,
|
|
487
|
+
var(--color-background-secondary) 0%,
|
|
488
|
+
var(--color-background) 100%);
|
|
411
489
|
|
|
412
490
|
/* Scrollbar - dark mode */
|
|
413
491
|
--ui-scrollbar-thumb-rest: rgba(75, 85, 99, 0.3);
|
|
414
|
-
--ui-scrollbar-thumb-active: rgb(75 85 99);
|
|
492
|
+
--ui-scrollbar-thumb-active: rgb(75 85 99, 0.75);
|
|
415
493
|
--ui-scrollbar-track-rest: transparent;
|
|
416
494
|
--ui-scrollbar-track-active: rgba(55, 65, 81, 0.1);
|
|
417
495
|
|
|
@@ -444,20 +522,16 @@
|
|
|
444
522
|
inset -0.5px -0.5px 1px rgba(255, 255, 255, 0.04),
|
|
445
523
|
inset -1px -1px 2px rgba(255, 255, 255, 0.03),
|
|
446
524
|
0 1px 2px rgba(0, 0, 0, 0.25), 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
447
|
-
--neu-raised-border: linear-gradient(
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
rgba(255, 255, 255, 0.03) 50%,
|
|
459
|
-
rgba(255, 255, 255, 0.08) 75%,
|
|
460
|
-
rgba(255, 255, 255, 0.12) 100%
|
|
461
|
-
);
|
|
525
|
+
--neu-raised-border: linear-gradient(145deg,
|
|
526
|
+
rgba(255, 255, 255, 0.2) 0%,
|
|
527
|
+
rgba(255, 255, 255, 0.08) 30%,
|
|
528
|
+
transparent 50%,
|
|
529
|
+
rgba(0, 0, 0, 0.12) 100%);
|
|
530
|
+
--neu-inset-border: linear-gradient(180deg,
|
|
531
|
+
rgba(0, 0, 0, 0.4) 0%,
|
|
532
|
+
rgba(0, 0, 0, 0.15) 25%,
|
|
533
|
+
rgba(255, 255, 255, 0.03) 50%,
|
|
534
|
+
rgba(255, 255, 255, 0.08) 75%,
|
|
535
|
+
rgba(255, 255, 255, 0.12) 100%);
|
|
462
536
|
}
|
|
463
|
-
}
|
|
537
|
+
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export interface SidebarSubmenuProps {
|
|
3
|
-
children: React.ReactNode;
|
|
4
|
-
isOpen: boolean;
|
|
5
|
-
className?: string;
|
|
6
|
-
}
|
|
7
|
-
export declare const SidebarSubmenu: ({ children, isOpen, className, }: SidebarSubmenuProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { AnimatePresence, motion } from 'motion/react';
|
|
3
|
-
import { cn } from '../../../utils/cn.js';
|
|
4
|
-
|
|
5
|
-
const SidebarSubmenu = ({ children, isOpen, className, }) => {
|
|
6
|
-
return (jsx(AnimatePresence, { initial: false, children: isOpen && (jsx(motion.div, { initial: "collapsed", animate: "open", exit: "collapsed", variants: {
|
|
7
|
-
open: { opacity: 1, height: "auto" },
|
|
8
|
-
collapsed: { opacity: 0, height: 0 },
|
|
9
|
-
}, transition: { duration: 0.2, ease: "easeInOut" }, className: cn("overflow-hidden", className), children: children })) }));
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export { SidebarSubmenu };
|