@flikk/ui 1.0.0-beta.26 → 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.
Files changed (131) hide show
  1. package/dist/components/ai/PromptInput/PromptInput.js +3 -0
  2. package/dist/components/ai/PromptInput/VoiceRecorder.js +3 -0
  3. package/dist/components/core/Button/Button.theme.js +1 -1
  4. package/dist/components/core/Calendar/Calendar.theme.js +1 -1
  5. package/dist/components/core/CommandPalette/CommandItem.js +4 -5
  6. package/dist/components/core/CommandPalette/CommandPalette.js +1 -1
  7. package/dist/components/core/CommandPalette/CommandPalette.theme.js +11 -13
  8. package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +0 -2
  9. package/dist/components/core/ContextMenu/ContextMenu.theme.js +13 -14
  10. package/dist/components/core/DotSeparator/DotSeparator.d.ts +3 -0
  11. package/dist/components/core/DotSeparator/DotSeparator.js +19 -0
  12. package/dist/components/core/DotSeparator/DotSeparator.theme.d.ts +2 -0
  13. package/dist/components/core/DotSeparator/DotSeparator.theme.js +10 -0
  14. package/dist/components/core/DotSeparator/DotSeparator.types.d.ts +25 -0
  15. package/dist/components/core/DotSeparator/index.d.ts +3 -0
  16. package/dist/components/core/Dropdown/Dropdown.theme.js +2 -3
  17. package/dist/components/core/Dropdown/DropdownItem.js +1 -1
  18. package/dist/components/core/Dropdown/DropdownMenu.js +1 -1
  19. package/dist/components/core/MenuItem/MenuItem.js +5 -2
  20. package/dist/components/core/MenuItem/MenuItem.theme.d.ts +6 -0
  21. package/dist/components/core/MenuItem/MenuItem.theme.js +19 -16
  22. package/dist/components/core/MenuItem/MenuItem.types.d.ts +2 -0
  23. package/dist/components/core/NavItem/NavItem.js +20 -4
  24. package/dist/components/core/NavItem/NavItem.theme.js +13 -2
  25. package/dist/components/core/Popover/Popover.types.d.ts +6 -2
  26. package/dist/components/core/Popover/PopoverBody.js +10 -3
  27. package/dist/components/core/Segmented/Segmented.theme.js +1 -1
  28. package/dist/components/core/Sidebar/Sidebar.d.ts +2 -0
  29. package/dist/components/core/Sidebar/Sidebar.js +15 -7
  30. package/dist/components/core/Sidebar/Sidebar.types.d.ts +92 -4
  31. package/dist/components/core/Sidebar/SidebarCard.d.ts +25 -0
  32. package/dist/components/core/Sidebar/SidebarCard.js +68 -0
  33. package/dist/components/core/Sidebar/SidebarCard.theme.d.ts +8 -0
  34. package/dist/components/core/Sidebar/SidebarCard.theme.js +18 -0
  35. package/dist/components/core/Sidebar/SidebarContent.js +5 -1
  36. package/dist/components/core/Sidebar/SidebarContext.js +1 -1
  37. package/dist/components/core/Sidebar/SidebarHeader.js +10 -2
  38. package/dist/components/core/Sidebar/SidebarLogo.js +38 -3
  39. package/dist/components/core/Sidebar/SidebarSearch.d.ts +22 -0
  40. package/dist/components/core/Sidebar/SidebarSearch.js +135 -0
  41. package/dist/components/core/Sidebar/SidebarToggle.js +1 -1
  42. package/dist/components/core/Sidebar/SidebarUserProfile.js +2 -2
  43. package/dist/components/core/Sidebar/index.d.ts +3 -1
  44. package/dist/components/core/Tag/Tag.js +29 -5
  45. package/dist/components/core/Tag/Tag.theme.js +13 -8
  46. package/dist/components/core/Tag/Tag.types.d.ts +7 -0
  47. package/dist/components/core/Tooltip/Tooltip.js +1 -1
  48. package/dist/components/core/Tooltip/Tooltip.theme.js +1 -2
  49. package/dist/components/core/index.d.ts +1 -0
  50. package/dist/components/core/index.js +4 -0
  51. package/dist/components/data-display/GanttChart/GanttChart.d.ts +1 -1
  52. package/dist/components/data-display/GanttChart/GanttChart.js +31 -4
  53. package/dist/components/data-display/GanttChart/GanttChart.theme.js +19 -17
  54. package/dist/components/data-display/GanttChart/GanttChart.types.d.ts +19 -0
  55. package/dist/components/data-display/GanttChart/GanttChart.utils.js +1 -1
  56. package/dist/components/data-display/GanttChart/GanttChartPanel.d.ts +1 -1
  57. package/dist/components/data-display/GanttChart/GanttChartPanel.js +3 -3
  58. package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +7 -4
  59. package/dist/components/data-display/GanttChart/GanttMilestone.js +5 -5
  60. package/dist/components/data-display/GanttChart/GanttTablePanel.js +1 -1
  61. package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +2 -2
  62. package/dist/components/data-display/GanttChart/GanttTaskBar.js +37 -16
  63. package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +2 -1
  64. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +35 -11
  65. package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -2
  66. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +3 -2
  67. package/dist/components/data-display/GanttChart/index.d.ts +1 -1
  68. package/dist/components/data-display/Table/Table.theme.js +3 -5
  69. package/dist/components/effects/Aurora/Aurora.d.ts +6 -17
  70. package/dist/components/effects/Aurora/Aurora.js +297 -131
  71. package/dist/components/effects/Aurora/Aurora.types.d.ts +6 -0
  72. package/dist/components/forms/Combobox/Combobox.js +1 -1
  73. package/dist/components/forms/Combobox/Combobox.theme.js +2 -4
  74. package/dist/components/forms/CronInput/CronInput.js +1 -1
  75. package/dist/components/forms/CronInput/CronInput.theme.js +14 -23
  76. package/dist/components/forms/DatePicker/DatePicker.theme.js +11 -18
  77. package/dist/components/forms/DatePicker/DatePickerTrigger.js +1 -1
  78. package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +6 -13
  79. package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +1 -1
  80. package/dist/components/forms/FileUpload/FileUpload.animations.d.ts +29 -0
  81. package/dist/components/forms/FileUpload/FileUpload.animations.js +19 -0
  82. package/dist/components/forms/FileUpload/FileUpload.js +87 -48
  83. package/dist/components/forms/FileUpload/FileUpload.theme.d.ts +2 -10
  84. package/dist/components/forms/FileUpload/FileUpload.theme.js +16 -30
  85. package/dist/components/forms/FileUpload/FileUpload.types.d.ts +26 -10
  86. package/dist/components/forms/Input/Input.theme.js +13 -10
  87. package/dist/components/forms/InputCounter/InputCounter.theme.js +1 -1
  88. package/dist/components/forms/Mention/Mention.js +152 -57
  89. package/dist/components/forms/Mention/Mention.theme.js +16 -23
  90. package/dist/components/forms/Mention/Mention.types.d.ts +12 -12
  91. package/dist/components/forms/Mention/Mention.utils.js +32 -4
  92. package/dist/components/forms/RichTextEditor/RichTextEditor.js +3 -3
  93. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +5 -5
  94. package/dist/components/forms/Select/Select.js +2 -2
  95. package/dist/components/forms/Select/Select.theme.js +3 -3
  96. package/dist/components/forms/TimePicker/TimePickerContent.js +3 -0
  97. package/dist/components/forms/TimePicker/TimePickerTrigger.js +1 -1
  98. package/dist/components/forms/forms.theme.js +21 -16
  99. package/dist/components/forms/index.js +3 -0
  100. package/dist/components/layout/AppShell/AppShell.d.ts +10 -0
  101. package/dist/components/layout/AppShell/AppShell.js +84 -0
  102. package/dist/components/layout/AppShell/AppShell.theme.d.ts +3 -0
  103. package/dist/components/layout/AppShell/AppShell.theme.js +42 -0
  104. package/dist/components/layout/AppShell/AppShell.types.d.ts +127 -0
  105. package/dist/components/layout/AppShell/AppShellContext.d.ts +14 -0
  106. package/dist/components/layout/AppShell/AppShellContext.js +19 -0
  107. package/dist/components/layout/AppShell/AppShellFooter.d.ts +3 -0
  108. package/dist/components/layout/AppShell/AppShellFooter.js +12 -0
  109. package/dist/components/layout/AppShell/AppShellHeader.d.ts +3 -0
  110. package/dist/components/layout/AppShell/AppShellHeader.js +12 -0
  111. package/dist/components/layout/AppShell/AppShellMain.d.ts +3 -0
  112. package/dist/components/layout/AppShell/AppShellMain.js +19 -0
  113. package/dist/components/layout/AppShell/AppShellRightPanel.d.ts +3 -0
  114. package/dist/components/layout/AppShell/AppShellRightPanel.js +16 -0
  115. package/dist/components/layout/AppShell/AppShellSidebar.d.ts +3 -0
  116. package/dist/components/layout/AppShell/AppShellSidebar.js +16 -0
  117. package/dist/components/layout/AppShell/AppShellTopbar.d.ts +3 -0
  118. package/dist/components/layout/AppShell/AppShellTopbar.js +12 -0
  119. package/dist/components/layout/AppShell/index.d.ts +3 -0
  120. package/dist/components/layout/FormLayout/FormLayout.js +3 -0
  121. package/dist/components/layout/index.d.ts +1 -0
  122. package/dist/components/layout/index.js +2 -0
  123. package/dist/hooks/useSelectPortal.d.ts +10 -2
  124. package/dist/hooks/useSelectPortal.js +45 -24
  125. package/dist/index.js +6 -0
  126. package/dist/registry.json +10021 -0
  127. package/dist/styles.css +1 -1
  128. package/dist/utils/dateUtils.js +11 -1
  129. package/package.json +4 -2
  130. package/src/global.scss +29 -8
  131. package/src/styles/theme.css +51 -12
@@ -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.26",
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
- :root {
278
- /* Scrollbar styling */
279
- --ui-scrollbar-size: 4px;
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 */
@@ -90,6 +90,9 @@
90
90
  /* generic colors */
91
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);
93
96
  /* Surface elevation ladder: surface-sunken < background (floor) < surface < surface-raised < surface-overlay.
94
97
  In light mode raised surfaces are ~white (elevation via shadow + border); sunken is recessed below the floor. */
95
98
  --color-surface-sunken: oklch(94% 0 0);
@@ -390,9 +393,39 @@
390
393
  Tailwind's generated theme styles.
391
394
  ============================================ */
392
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
+
393
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
+
394
425
  /* Text colors - inverted for dark backgrounds */
395
426
 
427
+ /* Neutral text ramp (Linear's text reads essentially neutral off-white;
428
+ slate was too blue against the low-chroma surfaces). */
396
429
  --color-text-primary: var(--color-neutral-50);
397
430
  --color-text-secondary: var(--color-neutral-400);
398
431
  --color-text-placeholder: var(--color-neutral-600);
@@ -401,7 +434,7 @@
401
434
  --color-text-inverse: var(--color-neutral-950);
402
435
 
403
436
  /* Base theme colors */
404
- --color-primary: var(--color-primary-600);
437
+ --color-primary: var(--color-primary-400);
405
438
  --color-success: var(--color-success-400);
406
439
  --color-warning: var(--color-warning-400);
407
440
  --color-danger: var(--color-danger-400);
@@ -416,12 +449,14 @@
416
449
 
417
450
  /* Background colors - dark equivalents */
418
451
  /* Surface elevation ladder: sunken sits below the floor; surface levels ascend so each reads as raised. */
419
- --color-surface-sunken: oklch(13% 0 0);
420
- --color-surface: oklch(18% 0 0);
421
- --color-surface-raised: oklch(22% 0 0);
422
- --color-surface-overlay: oklch(25% 0 0);
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);
423
458
  --color-surface-hover: oklch(100% 0 0 / 0.07);
424
- --color-background: oklch(14.5% 0 0);
459
+ --color-background: oklch(12.5% 0.004 255);
425
460
  /* DEPRECATED (remove next major): alias of --color-surface. */
426
461
  --color-background-secondary: var(--color-surface);
427
462
  /* DEPRECATED (remove next major): migrate per-usage to --color-surface-sunken / surface ladder. */
@@ -431,11 +466,15 @@
431
466
  --color-background-disabled: var(--color-neutral-800);
432
467
 
433
468
  /* Scale backdrop */
434
- --color-scale-background: oklch(8% 0 0);
435
-
436
- /* Border - darker for dark mode */
437
- --color-border: oklch(30% 0 0 / 0.8);
438
- --color-border-secondary: oklch(35% 0 0 / 0.8);
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);
439
478
  --color-chart-track: rgba(255, 255, 255, 0.05);
440
479
 
441
480
  /* Glass effect gradients - dark mode */
@@ -450,7 +489,7 @@
450
489
 
451
490
  /* Scrollbar - dark mode */
452
491
  --ui-scrollbar-thumb-rest: rgba(75, 85, 99, 0.3);
453
- --ui-scrollbar-thumb-active: rgb(75 85 99);
492
+ --ui-scrollbar-thumb-active: rgb(75 85 99, 0.75);
454
493
  --ui-scrollbar-track-rest: transparent;
455
494
  --ui-scrollbar-track-active: rgba(55, 65, 81, 0.1);
456
495