@cl-light-ds/ui 0.2.0 → 0.3.0

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 (283) hide show
  1. package/README.md +45 -45
  2. package/package.json +1 -1
  3. package/src/components/accordion/Accordion.astro +248 -248
  4. package/src/components/accordion/AccordionContent.astro +26 -26
  5. package/src/components/accordion/AccordionItem.astro +36 -36
  6. package/src/components/accordion/AccordionTrigger.astro +118 -118
  7. package/src/components/accordion/CHANGELOG.md +41 -41
  8. package/src/components/accordion/index.ts +4 -4
  9. package/src/components/alert/Alert.astro +167 -167
  10. package/src/components/alert/AlertDescription.astro +24 -24
  11. package/src/components/alert/AlertTitle.astro +24 -24
  12. package/src/components/alert/CHANGELOG.md +5 -5
  13. package/src/components/alert/index.ts +4 -4
  14. package/src/components/avatar/Avatar.astro +197 -197
  15. package/src/components/avatar/AvatarBadge.astro +44 -44
  16. package/src/components/avatar/AvatarFallback.astro +26 -26
  17. package/src/components/avatar/AvatarGroup.astro +26 -26
  18. package/src/components/avatar/AvatarGroupCount.astro +30 -30
  19. package/src/components/avatar/AvatarImage.astro +46 -46
  20. package/src/components/avatar/CHANGELOG.md +44 -44
  21. package/src/components/avatar/index.ts +6 -6
  22. package/src/components/badge/Badge.astro +167 -167
  23. package/src/components/badge/CHANGELOG.md +49 -49
  24. package/src/components/badge/index.ts +2 -2
  25. package/src/components/breadcrumb/Breadcrumb.astro +76 -76
  26. package/src/components/breadcrumb/BreadcrumbItem.astro +32 -32
  27. package/src/components/breadcrumb/BreadcrumbList.astro +26 -26
  28. package/src/components/breadcrumb/BreadcrumbSeparator.astro +26 -26
  29. package/src/components/breadcrumb/CHANGELOG.md +24 -24
  30. package/src/components/breadcrumb/index.ts +5 -5
  31. package/src/components/button/Button.astro +233 -233
  32. package/src/components/button/CHANGELOG.md +41 -41
  33. package/src/components/button/index.ts +2 -2
  34. package/src/components/button-group/ButtonGroup.astro +130 -130
  35. package/src/components/button-group/ButtonGroupSeparator.astro +30 -30
  36. package/src/components/button-group/ButtonGroupText.astro +21 -21
  37. package/src/components/button-group/CHANGELOG.md +34 -34
  38. package/src/components/button-group/index.ts +3 -3
  39. package/src/components/card/CHANGELOG.md +162 -119
  40. package/src/components/card/Card.astro +197 -182
  41. package/src/components/card/CardAction.astro +26 -26
  42. package/src/components/card/CardContent.astro +28 -28
  43. package/src/components/card/CardDescription.astro +28 -28
  44. package/src/components/card/CardFooter.astro +24 -24
  45. package/src/components/card/CardHeader.astro +30 -30
  46. package/src/components/card/CardMedia.astro +27 -27
  47. package/src/components/card/CardMediaActions.astro +21 -0
  48. package/src/components/card/CardMediaSelect.astro +21 -0
  49. package/src/components/card/CardOverlay.astro +32 -32
  50. package/src/components/card/CardTitle.astro +21 -21
  51. package/src/components/card/index.ts +12 -10
  52. package/src/components/carousel/CHANGELOG.md +5 -5
  53. package/src/components/carousel/Carousel.astro +106 -106
  54. package/src/components/carousel/CarouselSlide.astro +22 -22
  55. package/src/components/carousel/index.ts +3 -3
  56. package/src/components/checkbox/CHANGELOG.md +58 -58
  57. package/src/components/checkbox/Checkbox.astro +159 -159
  58. package/src/components/checkbox/index.ts +1 -1
  59. package/src/components/collapsible/CHANGELOG.md +5 -5
  60. package/src/components/collapsible/Collapsible.astro +202 -202
  61. package/src/components/collapsible/CollapsibleContent.astro +36 -36
  62. package/src/components/collapsible/CollapsibleTrigger.astro +34 -34
  63. package/src/components/collapsible/index.ts +4 -4
  64. package/src/components/combobox/CHANGELOG.md +27 -27
  65. package/src/components/combobox/Combobox.astro +365 -365
  66. package/src/components/combobox/ComboboxContent.astro +37 -37
  67. package/src/components/combobox/ComboboxEmpty.astro +18 -18
  68. package/src/components/combobox/ComboboxGroup.astro +19 -19
  69. package/src/components/combobox/ComboboxInput.astro +74 -74
  70. package/src/components/combobox/ComboboxItem.astro +39 -39
  71. package/src/components/combobox/ComboboxLabel.astro +18 -18
  72. package/src/components/combobox/ComboboxList.astro +21 -21
  73. package/src/components/combobox/ComboboxSeparator.astro +17 -17
  74. package/src/components/combobox/ComboboxTrigger.astro +30 -30
  75. package/src/components/combobox/ComboboxValue.astro +22 -22
  76. package/src/components/combobox/index.ts +11 -11
  77. package/src/components/date/CHANGELOG.md +18 -18
  78. package/src/components/date/Date.astro +137 -137
  79. package/src/components/date/index.ts +2 -2
  80. package/src/components/dialog/CHANGELOG.md +39 -39
  81. package/src/components/dialog/Dialog.astro +196 -196
  82. package/src/components/dialog/DialogClose.astro +23 -23
  83. package/src/components/dialog/DialogContent.astro +42 -42
  84. package/src/components/dialog/DialogDescription.astro +18 -18
  85. package/src/components/dialog/DialogFooter.astro +18 -18
  86. package/src/components/dialog/DialogHeader.astro +18 -18
  87. package/src/components/dialog/DialogOverlay.astro +19 -19
  88. package/src/components/dialog/DialogTitle.astro +18 -18
  89. package/src/components/dialog/DialogTrigger.astro +37 -37
  90. package/src/components/dialog/index.ts +9 -9
  91. package/src/components/dropdown-menu/CHANGELOG.md +194 -194
  92. package/src/components/dropdown-menu/DropdownMenu.astro +226 -226
  93. package/src/components/dropdown-menu/DropdownMenuCheckboxItem.astro +114 -114
  94. package/src/components/dropdown-menu/DropdownMenuContent.astro +42 -42
  95. package/src/components/dropdown-menu/DropdownMenuGroup.astro +19 -19
  96. package/src/components/dropdown-menu/DropdownMenuItem.astro +220 -220
  97. package/src/components/dropdown-menu/DropdownMenuItemContent.astro +79 -79
  98. package/src/components/dropdown-menu/DropdownMenuLabel.astro +20 -20
  99. package/src/components/dropdown-menu/DropdownMenuPortal.astro +13 -13
  100. package/src/components/dropdown-menu/DropdownMenuRadioGroup.astro +13 -13
  101. package/src/components/dropdown-menu/DropdownMenuRadioItem.astro +101 -101
  102. package/src/components/dropdown-menu/DropdownMenuSeparator.astro +18 -18
  103. package/src/components/dropdown-menu/DropdownMenuShortcut.astro +18 -18
  104. package/src/components/dropdown-menu/DropdownMenuTrigger.astro +49 -49
  105. package/src/components/dropdown-menu/dropdown-menu-item-variants.ts +24 -24
  106. package/src/components/dropdown-menu/index.ts +12 -12
  107. package/src/components/field/CHANGELOG.md +33 -33
  108. package/src/components/field/Field.astro +664 -664
  109. package/src/components/field/FieldContent.astro +20 -20
  110. package/src/components/field/FieldDescription.astro +22 -22
  111. package/src/components/field/FieldError.astro +51 -51
  112. package/src/components/field/FieldGroup.astro +20 -20
  113. package/src/components/field/FieldLabel.astro +22 -22
  114. package/src/components/field/FieldLegend.astro +23 -23
  115. package/src/components/field/FieldSeparator.astro +30 -30
  116. package/src/components/field/FieldSet.astro +20 -20
  117. package/src/components/field/FieldTitle.astro +20 -20
  118. package/src/components/field/index.ts +10 -10
  119. package/src/components/hover-card/CHANGELOG.md +20 -20
  120. package/src/components/hover-card/HoverCard.astro +235 -235
  121. package/src/components/hover-card/HoverCardContent.astro +54 -54
  122. package/src/components/hover-card/HoverCardTrigger.astro +38 -38
  123. package/src/components/hover-card/index.ts +3 -3
  124. package/src/components/input/CHANGELOG.md +29 -29
  125. package/src/components/input/Input.astro +130 -130
  126. package/src/components/input/index.ts +2 -2
  127. package/src/components/input-group/CHANGELOG.md +49 -49
  128. package/src/components/input-group/InputGroup.astro +135 -135
  129. package/src/components/input-group/InputGroupAddon.astro +49 -49
  130. package/src/components/input-group/InputGroupButton.astro +58 -58
  131. package/src/components/input-group/InputGroupInput.astro +18 -18
  132. package/src/components/input-group/InputGroupText.astro +21 -21
  133. package/src/components/input-group/InputGroupTextarea.astro +17 -17
  134. package/src/components/input-group/controlClasses.ts +2 -2
  135. package/src/components/input-group/index.ts +6 -6
  136. package/src/components/item/CHANGELOG.md +27 -27
  137. package/src/components/item/Item.astro +122 -122
  138. package/src/components/item/ItemActions.astro +21 -21
  139. package/src/components/item/ItemContent.astro +25 -25
  140. package/src/components/item/ItemDescription.astro +25 -25
  141. package/src/components/item/ItemFooter.astro +24 -24
  142. package/src/components/item/ItemGroup.astro +24 -24
  143. package/src/components/item/ItemHeader.astro +24 -24
  144. package/src/components/item/ItemMedia.astro +47 -47
  145. package/src/components/item/ItemSeparator.astro +21 -21
  146. package/src/components/item/ItemTitle.astro +25 -25
  147. package/src/components/item/index.ts +10 -10
  148. package/src/components/kbd/CHANGELOG.md +5 -5
  149. package/src/components/kbd/Kbd.astro +145 -145
  150. package/src/components/kbd/KbdGroup.astro +55 -55
  151. package/src/components/kbd/index.ts +2 -2
  152. package/src/components/label/CHANGELOG.md +28 -28
  153. package/src/components/label/Label.astro +97 -97
  154. package/src/components/label/index.ts +2 -2
  155. package/src/components/link-group/CHANGELOG.md +75 -75
  156. package/src/components/link-group/LinkGroup.astro +67 -67
  157. package/src/components/link-group/LinkGroupItem.astro +32 -32
  158. package/src/components/link-group/LinkGroupList.astro +25 -25
  159. package/src/components/link-group/LinkGroupTitle.astro +22 -22
  160. package/src/components/link-group/index.ts +5 -5
  161. package/src/components/link-group/link-group-list-variants.ts +15 -15
  162. package/src/components/marquee/CHANGELOG.md +5 -5
  163. package/src/components/marquee/Marquee.astro +119 -119
  164. package/src/components/marquee/index.ts +2 -2
  165. package/src/components/native-select/CHANGELOG.md +5 -5
  166. package/src/components/native-select/NativeSelect.astro +125 -125
  167. package/src/components/native-select/NativeSelectOptGroup.astro +14 -14
  168. package/src/components/native-select/NativeSelectOption.astro +9 -9
  169. package/src/components/native-select/index.ts +3 -3
  170. package/src/components/navigation-menu/CHANGELOG.md +63 -63
  171. package/src/components/navigation-menu/NavigationMenu.astro +414 -414
  172. package/src/components/navigation-menu/NavigationMenuContent.astro +37 -37
  173. package/src/components/navigation-menu/NavigationMenuIndicator.astro +24 -24
  174. package/src/components/navigation-menu/NavigationMenuItem.astro +22 -22
  175. package/src/components/navigation-menu/NavigationMenuLink.astro +18 -18
  176. package/src/components/navigation-menu/NavigationMenuList.astro +21 -21
  177. package/src/components/navigation-menu/NavigationMenuPositioner.astro +44 -44
  178. package/src/components/navigation-menu/NavigationMenuTrigger.astro +30 -30
  179. package/src/components/navigation-menu/NavigationMenuViewport.astro +19 -19
  180. package/src/components/navigation-menu/index.ts +10 -10
  181. package/src/components/organisms/lightning-sidebar-nav/CHANGELOG.md +50 -0
  182. package/src/components/organisms/lightning-sidebar-nav/LightningSidebarNav.astro +176 -0
  183. package/src/components/organisms/lightning-sidebar-nav/SidebarNav.astro +50 -0
  184. package/src/components/organisms/lightning-sidebar-nav/SidebarNavGroup.astro +74 -0
  185. package/src/components/organisms/lightning-sidebar-nav/SidebarNavItem.astro +94 -0
  186. package/src/components/organisms/lightning-sidebar-nav/SidebarNavProBadge.astro +26 -0
  187. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSection.astro +71 -0
  188. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSkeleton.astro +67 -0
  189. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSubItem.astro +69 -0
  190. package/src/components/organisms/lightning-sidebar-nav/SidebarNavUsage.astro +78 -0
  191. package/src/components/organisms/lightning-sidebar-nav/SidebarNavWorkspaceAvatar.astro +46 -0
  192. package/src/components/organisms/lightning-sidebar-nav/SidebarNavWorkspaceSwitcher.astro +130 -0
  193. package/src/components/organisms/lightning-sidebar-nav/icons.ts +46 -0
  194. package/src/components/organisms/lightning-sidebar-nav/index.ts +18 -0
  195. package/src/components/organisms/lightning-sidebar-nav/types.ts +77 -0
  196. package/src/components/popover/CHANGELOG.md +20 -20
  197. package/src/components/popover/Popover.astro +211 -211
  198. package/src/components/popover/PopoverClose.astro +18 -18
  199. package/src/components/popover/PopoverContent.astro +50 -50
  200. package/src/components/popover/PopoverDescription.astro +18 -18
  201. package/src/components/popover/PopoverHeader.astro +18 -18
  202. package/src/components/popover/PopoverTitle.astro +18 -18
  203. package/src/components/popover/PopoverTrigger.astro +35 -35
  204. package/src/components/popover/index.ts +7 -7
  205. package/src/components/radio-group/CHANGELOG.md +31 -31
  206. package/src/components/radio-group/RadioGroup.astro +81 -81
  207. package/src/components/radio-group/RadioGroupItem.astro +51 -51
  208. package/src/components/radio-group/index.ts +3 -3
  209. package/src/components/select/CHANGELOG.md +39 -39
  210. package/src/components/select/Select.astro +373 -373
  211. package/src/components/select/SelectContent.astro +91 -91
  212. package/src/components/select/SelectGroup.astro +19 -19
  213. package/src/components/select/SelectItem.astro +48 -48
  214. package/src/components/select/SelectLabel.astro +18 -18
  215. package/src/components/select/SelectSeparator.astro +17 -17
  216. package/src/components/select/SelectTrigger.astro +34 -34
  217. package/src/components/select/SelectValue.astro +22 -22
  218. package/src/components/select/index.ts +8 -8
  219. package/src/components/separator/CHANGELOG.md +5 -5
  220. package/src/components/separator/Separator.astro +60 -60
  221. package/src/components/separator/index.ts +2 -2
  222. package/src/components/skeleton/CHANGELOG.md +5 -5
  223. package/src/components/skeleton/Skeleton.astro +121 -121
  224. package/src/components/skeleton/index.ts +1 -1
  225. package/src/components/slider/CHANGELOG.md +5 -5
  226. package/src/components/slider/Slider.astro +198 -198
  227. package/src/components/slider/index.ts +1 -1
  228. package/src/components/spinner/CHANGELOG.md +18 -18
  229. package/src/components/spinner/Spinner.astro +135 -135
  230. package/src/components/spinner/index.ts +1 -1
  231. package/src/components/sticky-surface/CHANGELOG.md +5 -5
  232. package/src/components/sticky-surface/StickySurface.astro +152 -152
  233. package/src/components/sticky-surface/index.ts +2 -2
  234. package/src/components/switch/CHANGELOG.md +29 -29
  235. package/src/components/switch/Switch.astro +106 -106
  236. package/src/components/switch/index.ts +1 -1
  237. package/src/components/table/CHANGELOG.md +24 -24
  238. package/src/components/table/Table.astro +358 -251
  239. package/src/components/table/TableBody.astro +17 -18
  240. package/src/components/table/TableBulkToolbar.astro +37 -0
  241. package/src/components/table/TableCaption.astro +17 -17
  242. package/src/components/table/TableCell.astro +45 -21
  243. package/src/components/table/TableCellText.astro +17 -0
  244. package/src/components/table/TableColumnMenu.astro +50 -0
  245. package/src/components/table/TableEditableCell.astro +287 -0
  246. package/src/components/table/TableEmpty.astro +17 -0
  247. package/src/components/table/TableFolderCell.astro +38 -0
  248. package/src/components/table/TableFooter.astro +21 -21
  249. package/src/components/table/TableHead.astro +90 -21
  250. package/src/components/table/TableHeader.astro +17 -17
  251. package/src/components/table/TablePagination.astro +57 -0
  252. package/src/components/table/TableRow.astro +52 -21
  253. package/src/components/table/TableSelectAllBanner.astro +34 -0
  254. package/src/components/table/TableSelectCell.astro +50 -0
  255. package/src/components/table/TableSkeletonRow.astro +21 -0
  256. package/src/components/table/index.ts +19 -9
  257. package/src/components/table/table-cell-variants.ts +29 -0
  258. package/src/components/tabs/CHANGELOG.md +5 -5
  259. package/src/components/tabs/Tabs.astro +306 -306
  260. package/src/components/tabs/TabsContent.astro +47 -47
  261. package/src/components/tabs/TabsList.astro +69 -69
  262. package/src/components/tabs/TabsTrigger.astro +40 -40
  263. package/src/components/tabs/index.ts +6 -6
  264. package/src/components/textarea/CHANGELOG.md +22 -22
  265. package/src/components/textarea/Textarea.astro +58 -58
  266. package/src/components/textarea/index.ts +2 -2
  267. package/src/components/toggle/CHANGELOG.md +23 -23
  268. package/src/components/toggle/Toggle.astro +150 -150
  269. package/src/components/toggle/index.ts +1 -1
  270. package/src/components/toggle-group/CHANGELOG.md +18 -18
  271. package/src/components/toggle-group/ToggleGroup.astro +236 -236
  272. package/src/components/toggle-group/ToggleGroupItem.astro +48 -48
  273. package/src/components/toggle-group/index.ts +2 -2
  274. package/src/components/tooltip/CHANGELOG.md +22 -22
  275. package/src/components/tooltip/Tooltip.astro +357 -357
  276. package/src/components/tooltip/TooltipContent.astro +85 -85
  277. package/src/components/tooltip/TooltipTrigger.astro +34 -34
  278. package/src/components/tooltip/index.ts +3 -3
  279. package/src/lib/table-controller.ts +1090 -0
  280. package/src/lib/toggle-group-controller.ts +113 -113
  281. package/src/lib/toggle-shared.ts +27 -27
  282. package/src/lib/utils.ts +6 -6
  283. package/src/styles/globals.css +197 -177
@@ -1,37 +1,37 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
-
5
- interface Props extends HTMLAttributes<"div"> {
6
- class?: string;
7
- align?: "start" | "center" | "end";
8
- alignOffset?: number;
9
- side?: "top" | "bottom";
10
- sideOffset?: number;
11
- }
12
-
13
- const {
14
- class: className = "",
15
- align,
16
- alignOffset,
17
- side,
18
- sideOffset = 6,
19
- ...rest
20
- } = Astro.props as Props;
21
- ---
22
-
23
- <div
24
- {...rest}
25
- data-slot="navigation-menu-content"
26
- data-align={align}
27
- data-align-offset={alignOffset}
28
- data-side={side}
29
- data-side-offset={sideOffset}
30
- hidden
31
- class={cn(
32
- "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:border-border p-2 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:shadow-[0px_1px_1px_0px_rgba(5,23,41,0.06)] group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:duration-300 data-[ending-style]:data-[activation-direction=left]:translate-x-[50%] data-[ending-style]:data-[activation-direction=right]:translate-x-[-50%] data-[starting-style]:data-[activation-direction=left]:translate-x-[-50%] data-[starting-style]:data-[activation-direction=right]:translate-x-[50%] h-full w-auto transition-[opacity,transform,translate] duration-200 ease data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
33
- className,
34
- )}
35
- >
36
- <slot />
37
- </div>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+
5
+ interface Props extends HTMLAttributes<"div"> {
6
+ class?: string;
7
+ align?: "start" | "center" | "end";
8
+ alignOffset?: number;
9
+ side?: "top" | "bottom";
10
+ sideOffset?: number;
11
+ }
12
+
13
+ const {
14
+ class: className = "",
15
+ align,
16
+ alignOffset,
17
+ side,
18
+ sideOffset = 6,
19
+ ...rest
20
+ } = Astro.props as Props;
21
+ ---
22
+
23
+ <div
24
+ {...rest}
25
+ data-slot="navigation-menu-content"
26
+ data-align={align}
27
+ data-align-offset={alignOffset}
28
+ data-side={side}
29
+ data-side-offset={sideOffset}
30
+ hidden
31
+ class={cn(
32
+ "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:border-border p-2 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:shadow-[0px_1px_1px_0px_rgba(5,23,41,0.06)] group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:duration-300 data-[ending-style]:data-[activation-direction=left]:translate-x-[50%] data-[ending-style]:data-[activation-direction=right]:translate-x-[-50%] data-[starting-style]:data-[activation-direction=left]:translate-x-[-50%] data-[starting-style]:data-[activation-direction=right]:translate-x-[50%] h-full w-auto transition-[opacity,transform,translate] duration-200 ease data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
33
+ className,
34
+ )}
35
+ >
36
+ <slot />
37
+ </div>
@@ -1,24 +1,24 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
-
5
- interface Props extends HTMLAttributes<"div"> {
6
- class?: string;
7
- }
8
-
9
- const { class: className = "", ...rest } = Astro.props as Props;
10
- ---
11
-
12
- <div
13
- {...rest}
14
- data-slot="navigation-menu-indicator"
15
- class={cn(
16
- "rounded-md data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in absolute left-0 top-0 z-0 pointer-events-none opacity-0 transition-[translate,width,height,opacity] duration-150 ease data-instant:transition-none data-[state=visible]:opacity-100",
17
- "translate-x-(--indicator-left,0px) translate-y-(--indicator-top,0px)",
18
- "w-(--indicator-width,0) h-(--indicator-height,0)",
19
- className,
20
- )}
21
- >
22
- <div class="bg-muted/60 ring-border/40 ring-1 absolute inset-0 rounded-[inherit]"></div>
23
- <div class="hidden bg-border rounded-tl-sm shadow-md absolute top-full left-1/2 h-2 w-2 -translate-x-1/2 -translate-y-[40%] rotate-45"></div>
24
- </div>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+
5
+ interface Props extends HTMLAttributes<"div"> {
6
+ class?: string;
7
+ }
8
+
9
+ const { class: className = "", ...rest } = Astro.props as Props;
10
+ ---
11
+
12
+ <div
13
+ {...rest}
14
+ data-slot="navigation-menu-indicator"
15
+ class={cn(
16
+ "rounded-md data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in absolute left-0 top-0 z-0 pointer-events-none opacity-0 transition-[translate,width,height,opacity] duration-150 ease data-instant:transition-none data-[state=visible]:opacity-100",
17
+ "translate-x-(--indicator-left,0px) translate-y-(--indicator-top,0px)",
18
+ "w-(--indicator-width,0) h-(--indicator-height,0)",
19
+ className,
20
+ )}
21
+ >
22
+ <div class="bg-muted/60 ring-border/40 ring-1 absolute inset-0 rounded-[inherit]"></div>
23
+ <div class="hidden bg-border rounded-tl-sm shadow-md absolute top-full left-1/2 h-2 w-2 -translate-x-1/2 -translate-y-[40%] rotate-45"></div>
24
+ </div>
@@ -1,22 +1,22 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
-
5
- interface Props extends HTMLAttributes<"li"> {
6
- class?: string;
7
- value?: string;
8
- align?: "start" | "center" | "end";
9
- }
10
-
11
- const { class: className = "", value, align, ...rest } = Astro.props as Props;
12
- ---
13
-
14
- <li
15
- {...rest}
16
- data-slot="navigation-menu-item"
17
- data-value={value}
18
- data-align={align}
19
- class={cn("relative z-10", className)}
20
- >
21
- <slot />
22
- </li>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+
5
+ interface Props extends HTMLAttributes<"li"> {
6
+ class?: string;
7
+ value?: string;
8
+ align?: "start" | "center" | "end";
9
+ }
10
+
11
+ const { class: className = "", value, align, ...rest } = Astro.props as Props;
12
+ ---
13
+
14
+ <li
15
+ {...rest}
16
+ data-slot="navigation-menu-item"
17
+ data-value={value}
18
+ data-align={align}
19
+ class={cn("relative z-10", className)}
20
+ >
21
+ <slot />
22
+ </li>
@@ -1,18 +1,18 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
-
5
- interface Props extends HTMLAttributes<"a"> {
6
- class?: string;
7
- }
8
-
9
- const { class: className = "", ...rest } = Astro.props as Props;
10
- ---
11
-
12
- <a
13
- {...rest}
14
- data-slot="navigation-menu-link"
15
- class={cn("data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 focus-visible:ring-ring/50 hover:bg-muted focus:bg-muted flex items-start gap-4 rounded-lg p-3 text-sm transition-all outline-none focus-visible:ring-3 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4", className)}
16
- >
17
- <slot />
18
- </a>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+
5
+ interface Props extends HTMLAttributes<"a"> {
6
+ class?: string;
7
+ }
8
+
9
+ const { class: className = "", ...rest } = Astro.props as Props;
10
+ ---
11
+
12
+ <a
13
+ {...rest}
14
+ data-slot="navigation-menu-link"
15
+ class={cn("data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 focus-visible:ring-ring/50 hover:bg-muted focus:bg-muted flex items-start gap-4 rounded-lg p-3 text-sm transition-all outline-none focus-visible:ring-3 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4", className)}
16
+ >
17
+ <slot />
18
+ </a>
@@ -1,21 +1,21 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
-
5
- interface Props extends HTMLAttributes<"ul"> {
6
- class?: string;
7
- }
8
-
9
- const { class: className = "", ...rest } = Astro.props as Props;
10
- ---
11
-
12
- <ul
13
- {...rest}
14
- data-slot="navigation-menu-list"
15
- class={cn(
16
- "gap-0 group flex flex-1 list-none items-center justify-center relative",
17
- className,
18
- )}
19
- >
20
- <slot />
21
- </ul>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+
5
+ interface Props extends HTMLAttributes<"ul"> {
6
+ class?: string;
7
+ }
8
+
9
+ const { class: className = "", ...rest } = Astro.props as Props;
10
+ ---
11
+
12
+ <ul
13
+ {...rest}
14
+ data-slot="navigation-menu-list"
15
+ class={cn(
16
+ "gap-0 group flex flex-1 list-none items-center justify-center relative",
17
+ className,
18
+ )}
19
+ >
20
+ <slot />
21
+ </ul>
@@ -1,44 +1,44 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
- import NavigationMenuViewport from "./NavigationMenuViewport.astro";
5
-
6
- interface Props extends HTMLAttributes<"div"> {
7
- class?: string;
8
- align?: "start" | "center" | "end";
9
- alignOffset?: number;
10
- side?: "top" | "bottom";
11
- sideOffset?: number;
12
- }
13
-
14
- const {
15
- class: className = "",
16
- side = "bottom",
17
- sideOffset = 8,
18
- align = "start",
19
- alignOffset = 0,
20
- ...rest
21
- } = Astro.props as Props;
22
- ---
23
-
24
- <div data-slot="navigation-menu-portal">
25
- <div
26
- {...rest}
27
- data-slot="navigation-menu-positioner"
28
- data-side={side}
29
- data-side-offset={sideOffset}
30
- data-align={align}
31
- data-align-offset={alignOffset}
32
- class={cn(
33
- "transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0 isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) duration-[0.35s] data-instant:transition-none",
34
- className,
35
- )}
36
- >
37
- <div
38
- data-slot="navigation-menu-popup"
39
- class="bg-popover text-popover-foreground border border-border rounded-lg shadow-[0px_1px_1px_0px_rgba(5,23,41,0.06)] transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0 data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) transition-[opacity,transform,width,height,scale,translate] duration-[0.35s]"
40
- >
41
- <NavigationMenuViewport />
42
- </div>
43
- </div>
44
- </div>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+ import NavigationMenuViewport from "./NavigationMenuViewport.astro";
5
+
6
+ interface Props extends HTMLAttributes<"div"> {
7
+ class?: string;
8
+ align?: "start" | "center" | "end";
9
+ alignOffset?: number;
10
+ side?: "top" | "bottom";
11
+ sideOffset?: number;
12
+ }
13
+
14
+ const {
15
+ class: className = "",
16
+ side = "bottom",
17
+ sideOffset = 8,
18
+ align = "start",
19
+ alignOffset = 0,
20
+ ...rest
21
+ } = Astro.props as Props;
22
+ ---
23
+
24
+ <div data-slot="navigation-menu-portal">
25
+ <div
26
+ {...rest}
27
+ data-slot="navigation-menu-positioner"
28
+ data-side={side}
29
+ data-side-offset={sideOffset}
30
+ data-align={align}
31
+ data-align-offset={alignOffset}
32
+ class={cn(
33
+ "transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0 isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) duration-[0.35s] data-instant:transition-none",
34
+ className,
35
+ )}
36
+ >
37
+ <div
38
+ data-slot="navigation-menu-popup"
39
+ class="bg-popover text-popover-foreground border border-border rounded-lg shadow-[0px_1px_1px_0px_rgba(5,23,41,0.06)] transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0 data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) transition-[opacity,transform,width,height,scale,translate] duration-[0.35s]"
40
+ >
41
+ <NavigationMenuViewport />
42
+ </div>
43
+ </div>
44
+ </div>
@@ -1,30 +1,30 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cva } from "class-variance-authority";
4
- import { cn } from "@cl-light-ds/ui/lib/utils";
5
-
6
- interface Props extends HTMLAttributes<"button"> {
7
- class?: string;
8
- }
9
-
10
- export const navigationMenuTriggerStyle = cva(
11
- "bg-background text-foreground hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-lg gap-1.5 px-4 py-2.5 text-base font-medium transition-all focus-visible:ring-3 focus-visible:outline-1 disabled:opacity-50 group/navigation-menu-trigger inline-flex h-11 w-max items-center justify-center outline-none disabled:pointer-events-none",
12
- );
13
-
14
- const {
15
- class: className = "",
16
- type = "button",
17
- ...rest
18
- } = Astro.props as Props;
19
- ---
20
-
21
- <button
22
- {...rest}
23
- data-slot="navigation-menu-trigger"
24
- type={type}
25
- class={cn(navigationMenuTriggerStyle(), "group", className)}
26
- >
27
- <slot />
28
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="relative top-px size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180"
29
- aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6 9l6 6l6-6"/></svg>
30
- </button>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "@cl-light-ds/ui/lib/utils";
5
+
6
+ interface Props extends HTMLAttributes<"button"> {
7
+ class?: string;
8
+ }
9
+
10
+ export const navigationMenuTriggerStyle = cva(
11
+ "bg-background text-foreground hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-lg gap-1.5 px-4 py-2.5 text-base font-medium transition-all focus-visible:ring-3 focus-visible:outline-1 disabled:opacity-50 group/navigation-menu-trigger inline-flex h-11 w-max items-center justify-center outline-none disabled:pointer-events-none",
12
+ );
13
+
14
+ const {
15
+ class: className = "",
16
+ type = "button",
17
+ ...rest
18
+ } = Astro.props as Props;
19
+ ---
20
+
21
+ <button
22
+ {...rest}
23
+ data-slot="navigation-menu-trigger"
24
+ type={type}
25
+ class={cn(navigationMenuTriggerStyle(), "group", className)}
26
+ >
27
+ <slot />
28
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="relative top-px size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180"
29
+ aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6 9l6 6l6-6"/></svg>
30
+ </button>
@@ -1,19 +1,19 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
-
5
- interface Props extends HTMLAttributes<"div"> {
6
- class?: string;
7
- }
8
-
9
- const { class: className = "", ...rest } = Astro.props as Props;
10
- ---
11
-
12
- <div
13
- {...rest}
14
- data-slot="navigation-menu-viewport"
15
- class={cn(
16
- "bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-90 data-open:zoom-in-90 border border-border rounded-lg shadow-[0px_1px_1px_0px_rgba(5,23,41,0.06)] duration-100 relative size-full overflow-hidden",
17
- className,
18
- )}
19
- ></div>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+
5
+ interface Props extends HTMLAttributes<"div"> {
6
+ class?: string;
7
+ }
8
+
9
+ const { class: className = "", ...rest } = Astro.props as Props;
10
+ ---
11
+
12
+ <div
13
+ {...rest}
14
+ data-slot="navigation-menu-viewport"
15
+ class={cn(
16
+ "bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-90 data-open:zoom-in-90 border border-border rounded-lg shadow-[0px_1px_1px_0px_rgba(5,23,41,0.06)] duration-100 relative size-full overflow-hidden",
17
+ className,
18
+ )}
19
+ ></div>
@@ -1,10 +1,10 @@
1
- export { default as NavigationMenu } from "./NavigationMenu.astro";
2
- export { default as NavigationMenuList } from "./NavigationMenuList.astro";
3
- export { default as NavigationMenuItem } from "./NavigationMenuItem.astro";
4
- export { default as NavigationMenuTrigger } from "./NavigationMenuTrigger.astro";
5
- export { default as NavigationMenuContent } from "./NavigationMenuContent.astro";
6
- export { default as NavigationMenuPositioner } from "./NavigationMenuPositioner.astro";
7
- export { default as NavigationMenuViewport } from "./NavigationMenuViewport.astro";
8
- export { default as NavigationMenuLink } from "./NavigationMenuLink.astro";
9
- export { default as NavigationMenuIndicator } from "./NavigationMenuIndicator.astro";
10
- export { navigationMenuTriggerStyle } from "./NavigationMenuTrigger.astro";
1
+ export { default as NavigationMenu } from "./NavigationMenu.astro";
2
+ export { default as NavigationMenuList } from "./NavigationMenuList.astro";
3
+ export { default as NavigationMenuItem } from "./NavigationMenuItem.astro";
4
+ export { default as NavigationMenuTrigger } from "./NavigationMenuTrigger.astro";
5
+ export { default as NavigationMenuContent } from "./NavigationMenuContent.astro";
6
+ export { default as NavigationMenuPositioner } from "./NavigationMenuPositioner.astro";
7
+ export { default as NavigationMenuViewport } from "./NavigationMenuViewport.astro";
8
+ export { default as NavigationMenuLink } from "./NavigationMenuLink.astro";
9
+ export { default as NavigationMenuIndicator } from "./NavigationMenuIndicator.astro";
10
+ export { navigationMenuTriggerStyle } from "./NavigationMenuTrigger.astro";
@@ -0,0 +1,50 @@
1
+ # Changelog
2
+
3
+ All notable changes to the `LightningSidebarNav` organism will be documented in this file.
4
+
5
+ ## Unreleased
6
+
7
+ ### Added
8
+
9
+ - New **Organisms** tier (`packages/ui/src/components/organisms/`). `LightningSidebarNav` is the first organism, composed from existing components: Avatar, DropdownMenu, Collapsible, Badge, Separator, Skeleton and Button.
10
+ - `LightningSidebarNav`: renders the whole sidebar from JSON-serialisable backend data (`workspace`, `workspaces`, `sections`, `footerItems`, `usage`, `upgrade`, `loading`).
11
+ - The active item is resolved from `activeId`, or the longest segment-prefix match of `currentPath` (defaults to `Astro.url.pathname`). It gets `aria-current="page"`.
12
+ - Groups containing the active link open automatically.
13
+ - Composable parts for custom layouts:
14
+ - `SidebarNav`: the shell
15
+ - `SidebarNavWorkspaceSwitcher`
16
+ - `SidebarNavSection`: `density` is `default` or `compact`, with an optional category `label`
17
+ - `SidebarNavItem`
18
+ - `SidebarNavGroup`
19
+ - `SidebarNavSubItem`
20
+ - `SidebarNavUsage`
21
+ - `SidebarNavSkeleton`
22
+ - `SidebarNavProBadge`
23
+ - `SidebarNavWorkspaceAvatar`
24
+ - `icons.ts`: a string → Lucide registry so backend data can name icons (`"house"`, `"video"`, …).
25
+ - `sidebar-nav:workspace-change` event (`{ id }`, bubbles, cancelable). Fired when a workspace is picked. If the workspace has an `href` and the event isn't cancelled, the browser navigates there.
26
+
27
+ ### Figma alignment (node 7513:60)
28
+
29
+ - **Group Item:**
30
+ - Default: `muted-foreground`, medium weight.
31
+ - Hover: `bg-muted`, foreground, semibold.
32
+ - Focus: 1px `sidebar-ring` inset ring.
33
+ - Active: `sidebar-accent` fill plus semibold `sidebar-accent-foreground`. Active is never shown by colour alone.
34
+ - **.nav item:** 12px medium label against a 1px guide rail at 7.5px. When active, a darker 28px rail segment is drawn over it and the label uses `sidebar-accent-foreground`.
35
+ - **Pro badge:** `Badge variant="accent" size="sm"` with a Lucide `zap` tail icon.
36
+ - **Skeleton:** the workspace switcher stays real. Rows are a 16px square plus an 80px bar.
37
+ - **Spacing:** primary list rows are 12px apart and footer links 2px apart. Separators take 16px of vertical space.
38
+
39
+ ### Tokens (`globals.css`)
40
+
41
+ - Mapped the previously unused `--sidebar*` variables in `@theme inline`, which gives utilities like `bg-sidebar` and `text-sidebar-accent-foreground`.
42
+ - Aligned the light values to Figma:
43
+ - `--sidebar`: zinc-50
44
+ - `--sidebar-accent`: primary-50
45
+ - `--sidebar-accent-foreground`: primary-950
46
+ - `--sidebar-border`: `--border`
47
+ - `--sidebar-ring`: `--ring`
48
+ - Dark mode uses a primary-tinted accent.
49
+ - Added `--sidebar-rail` (zinc-300 light / 15% white dark) for the sub-item guide line.
50
+ - The shared `--accent` token is unchanged.