@cl-light-ds/ui 0.2.0 → 0.4.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 (293) hide show
  1. package/README.md +45 -45
  2. package/package.json +2 -2
  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/callout/CHANGELOG.md +32 -0
  40. package/src/components/callout/Callout.astro +147 -0
  41. package/src/components/callout/CalloutDescription.astro +16 -0
  42. package/src/components/callout/CalloutTitle.astro +16 -0
  43. package/src/components/callout/index.ts +3 -0
  44. package/src/components/card/CHANGELOG.md +162 -119
  45. package/src/components/card/Card.astro +197 -182
  46. package/src/components/card/CardAction.astro +26 -26
  47. package/src/components/card/CardContent.astro +28 -28
  48. package/src/components/card/CardDescription.astro +28 -28
  49. package/src/components/card/CardFooter.astro +24 -24
  50. package/src/components/card/CardHeader.astro +30 -30
  51. package/src/components/card/CardMedia.astro +27 -27
  52. package/src/components/card/CardMediaActions.astro +21 -0
  53. package/src/components/card/CardMediaSelect.astro +21 -0
  54. package/src/components/card/CardOverlay.astro +32 -32
  55. package/src/components/card/CardTitle.astro +21 -21
  56. package/src/components/card/index.ts +12 -10
  57. package/src/components/carousel/CHANGELOG.md +5 -5
  58. package/src/components/carousel/Carousel.astro +106 -106
  59. package/src/components/carousel/CarouselSlide.astro +22 -22
  60. package/src/components/carousel/index.ts +3 -3
  61. package/src/components/checkbox/CHANGELOG.md +58 -58
  62. package/src/components/checkbox/Checkbox.astro +159 -159
  63. package/src/components/checkbox/index.ts +1 -1
  64. package/src/components/collapsible/CHANGELOG.md +5 -5
  65. package/src/components/collapsible/Collapsible.astro +202 -202
  66. package/src/components/collapsible/CollapsibleContent.astro +36 -36
  67. package/src/components/collapsible/CollapsibleTrigger.astro +34 -34
  68. package/src/components/collapsible/index.ts +4 -4
  69. package/src/components/combobox/CHANGELOG.md +27 -27
  70. package/src/components/combobox/Combobox.astro +365 -365
  71. package/src/components/combobox/ComboboxContent.astro +37 -37
  72. package/src/components/combobox/ComboboxEmpty.astro +18 -18
  73. package/src/components/combobox/ComboboxGroup.astro +19 -19
  74. package/src/components/combobox/ComboboxInput.astro +74 -74
  75. package/src/components/combobox/ComboboxItem.astro +39 -39
  76. package/src/components/combobox/ComboboxLabel.astro +18 -18
  77. package/src/components/combobox/ComboboxList.astro +21 -21
  78. package/src/components/combobox/ComboboxSeparator.astro +17 -17
  79. package/src/components/combobox/ComboboxTrigger.astro +30 -30
  80. package/src/components/combobox/ComboboxValue.astro +22 -22
  81. package/src/components/combobox/index.ts +11 -11
  82. package/src/components/date/CHANGELOG.md +18 -18
  83. package/src/components/date/Date.astro +137 -137
  84. package/src/components/date/index.ts +2 -2
  85. package/src/components/dialog/CHANGELOG.md +39 -39
  86. package/src/components/dialog/Dialog.astro +196 -196
  87. package/src/components/dialog/DialogClose.astro +23 -23
  88. package/src/components/dialog/DialogContent.astro +42 -42
  89. package/src/components/dialog/DialogDescription.astro +18 -18
  90. package/src/components/dialog/DialogFooter.astro +18 -18
  91. package/src/components/dialog/DialogHeader.astro +18 -18
  92. package/src/components/dialog/DialogOverlay.astro +19 -19
  93. package/src/components/dialog/DialogTitle.astro +18 -18
  94. package/src/components/dialog/DialogTrigger.astro +37 -37
  95. package/src/components/dialog/index.ts +9 -9
  96. package/src/components/dropdown-menu/CHANGELOG.md +194 -194
  97. package/src/components/dropdown-menu/DropdownMenu.astro +226 -226
  98. package/src/components/dropdown-menu/DropdownMenuCheckboxItem.astro +114 -114
  99. package/src/components/dropdown-menu/DropdownMenuContent.astro +42 -42
  100. package/src/components/dropdown-menu/DropdownMenuGroup.astro +19 -19
  101. package/src/components/dropdown-menu/DropdownMenuItem.astro +220 -220
  102. package/src/components/dropdown-menu/DropdownMenuItemContent.astro +79 -79
  103. package/src/components/dropdown-menu/DropdownMenuLabel.astro +20 -20
  104. package/src/components/dropdown-menu/DropdownMenuPortal.astro +13 -13
  105. package/src/components/dropdown-menu/DropdownMenuRadioGroup.astro +13 -13
  106. package/src/components/dropdown-menu/DropdownMenuRadioItem.astro +101 -101
  107. package/src/components/dropdown-menu/DropdownMenuSeparator.astro +18 -18
  108. package/src/components/dropdown-menu/DropdownMenuShortcut.astro +18 -18
  109. package/src/components/dropdown-menu/DropdownMenuTrigger.astro +49 -49
  110. package/src/components/dropdown-menu/dropdown-menu-item-variants.ts +24 -24
  111. package/src/components/dropdown-menu/index.ts +12 -12
  112. package/src/components/field/CHANGELOG.md +33 -33
  113. package/src/components/field/Field.astro +664 -664
  114. package/src/components/field/FieldContent.astro +20 -20
  115. package/src/components/field/FieldDescription.astro +22 -22
  116. package/src/components/field/FieldError.astro +51 -51
  117. package/src/components/field/FieldGroup.astro +20 -20
  118. package/src/components/field/FieldLabel.astro +22 -22
  119. package/src/components/field/FieldLegend.astro +23 -23
  120. package/src/components/field/FieldSeparator.astro +30 -30
  121. package/src/components/field/FieldSet.astro +20 -20
  122. package/src/components/field/FieldTitle.astro +20 -20
  123. package/src/components/field/index.ts +10 -10
  124. package/src/components/hover-card/CHANGELOG.md +20 -20
  125. package/src/components/hover-card/HoverCard.astro +235 -235
  126. package/src/components/hover-card/HoverCardContent.astro +54 -54
  127. package/src/components/hover-card/HoverCardTrigger.astro +38 -38
  128. package/src/components/hover-card/index.ts +3 -3
  129. package/src/components/input/CHANGELOG.md +44 -29
  130. package/src/components/input/Input.astro +130 -130
  131. package/src/components/input/InputOTP.astro +211 -0
  132. package/src/components/input/index.ts +2 -2
  133. package/src/components/input-group/CHANGELOG.md +49 -49
  134. package/src/components/input-group/InputGroup.astro +135 -135
  135. package/src/components/input-group/InputGroupAddon.astro +49 -49
  136. package/src/components/input-group/InputGroupButton.astro +58 -58
  137. package/src/components/input-group/InputGroupInput.astro +18 -18
  138. package/src/components/input-group/InputGroupText.astro +21 -21
  139. package/src/components/input-group/InputGroupTextarea.astro +17 -17
  140. package/src/components/input-group/controlClasses.ts +2 -2
  141. package/src/components/input-group/index.ts +6 -6
  142. package/src/components/item/CHANGELOG.md +27 -27
  143. package/src/components/item/Item.astro +122 -122
  144. package/src/components/item/ItemActions.astro +21 -21
  145. package/src/components/item/ItemContent.astro +25 -25
  146. package/src/components/item/ItemDescription.astro +25 -25
  147. package/src/components/item/ItemFooter.astro +24 -24
  148. package/src/components/item/ItemGroup.astro +24 -24
  149. package/src/components/item/ItemHeader.astro +24 -24
  150. package/src/components/item/ItemMedia.astro +47 -47
  151. package/src/components/item/ItemSeparator.astro +21 -21
  152. package/src/components/item/ItemTitle.astro +25 -25
  153. package/src/components/item/index.ts +10 -10
  154. package/src/components/kbd/CHANGELOG.md +5 -5
  155. package/src/components/kbd/Kbd.astro +145 -145
  156. package/src/components/kbd/KbdGroup.astro +55 -55
  157. package/src/components/kbd/index.ts +2 -2
  158. package/src/components/label/CHANGELOG.md +28 -28
  159. package/src/components/label/Label.astro +97 -97
  160. package/src/components/label/index.ts +2 -2
  161. package/src/components/link-group/CHANGELOG.md +75 -75
  162. package/src/components/link-group/LinkGroup.astro +67 -67
  163. package/src/components/link-group/LinkGroupItem.astro +32 -32
  164. package/src/components/link-group/LinkGroupList.astro +25 -25
  165. package/src/components/link-group/LinkGroupTitle.astro +22 -22
  166. package/src/components/link-group/index.ts +5 -5
  167. package/src/components/link-group/link-group-list-variants.ts +15 -15
  168. package/src/components/logo/CHANGELOG.md +17 -0
  169. package/src/components/logo/Logo.astro +90 -0
  170. package/src/components/logo/index.ts +3 -0
  171. package/src/components/logo/logo-paths.ts +57 -0
  172. package/src/components/marquee/CHANGELOG.md +5 -5
  173. package/src/components/marquee/Marquee.astro +119 -119
  174. package/src/components/marquee/index.ts +2 -2
  175. package/src/components/native-select/CHANGELOG.md +5 -5
  176. package/src/components/native-select/NativeSelect.astro +125 -125
  177. package/src/components/native-select/NativeSelectOptGroup.astro +14 -14
  178. package/src/components/native-select/NativeSelectOption.astro +9 -9
  179. package/src/components/native-select/index.ts +3 -3
  180. package/src/components/navigation-menu/CHANGELOG.md +63 -63
  181. package/src/components/navigation-menu/NavigationMenu.astro +414 -414
  182. package/src/components/navigation-menu/NavigationMenuContent.astro +37 -37
  183. package/src/components/navigation-menu/NavigationMenuIndicator.astro +24 -24
  184. package/src/components/navigation-menu/NavigationMenuItem.astro +22 -22
  185. package/src/components/navigation-menu/NavigationMenuLink.astro +18 -18
  186. package/src/components/navigation-menu/NavigationMenuList.astro +21 -21
  187. package/src/components/navigation-menu/NavigationMenuPositioner.astro +44 -44
  188. package/src/components/navigation-menu/NavigationMenuTrigger.astro +30 -30
  189. package/src/components/navigation-menu/NavigationMenuViewport.astro +19 -19
  190. package/src/components/navigation-menu/index.ts +10 -10
  191. package/src/components/organisms/lightning-sidebar-nav/CHANGELOG.md +50 -0
  192. package/src/components/organisms/lightning-sidebar-nav/LightningSidebarNav.astro +176 -0
  193. package/src/components/organisms/lightning-sidebar-nav/SidebarNav.astro +50 -0
  194. package/src/components/organisms/lightning-sidebar-nav/SidebarNavGroup.astro +74 -0
  195. package/src/components/organisms/lightning-sidebar-nav/SidebarNavItem.astro +94 -0
  196. package/src/components/organisms/lightning-sidebar-nav/SidebarNavProBadge.astro +26 -0
  197. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSection.astro +71 -0
  198. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSkeleton.astro +67 -0
  199. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSubItem.astro +69 -0
  200. package/src/components/organisms/lightning-sidebar-nav/SidebarNavUsage.astro +78 -0
  201. package/src/components/organisms/lightning-sidebar-nav/SidebarNavWorkspaceAvatar.astro +46 -0
  202. package/src/components/organisms/lightning-sidebar-nav/SidebarNavWorkspaceSwitcher.astro +130 -0
  203. package/src/components/organisms/lightning-sidebar-nav/icons.ts +46 -0
  204. package/src/components/organisms/lightning-sidebar-nav/index.ts +18 -0
  205. package/src/components/organisms/lightning-sidebar-nav/types.ts +77 -0
  206. package/src/components/popover/CHANGELOG.md +20 -20
  207. package/src/components/popover/Popover.astro +211 -211
  208. package/src/components/popover/PopoverClose.astro +18 -18
  209. package/src/components/popover/PopoverContent.astro +50 -50
  210. package/src/components/popover/PopoverDescription.astro +18 -18
  211. package/src/components/popover/PopoverHeader.astro +18 -18
  212. package/src/components/popover/PopoverTitle.astro +18 -18
  213. package/src/components/popover/PopoverTrigger.astro +35 -35
  214. package/src/components/popover/index.ts +7 -7
  215. package/src/components/radio-group/CHANGELOG.md +31 -31
  216. package/src/components/radio-group/RadioGroup.astro +81 -81
  217. package/src/components/radio-group/RadioGroupItem.astro +51 -51
  218. package/src/components/radio-group/index.ts +3 -3
  219. package/src/components/select/CHANGELOG.md +39 -39
  220. package/src/components/select/Select.astro +373 -373
  221. package/src/components/select/SelectContent.astro +91 -91
  222. package/src/components/select/SelectGroup.astro +19 -19
  223. package/src/components/select/SelectItem.astro +48 -48
  224. package/src/components/select/SelectLabel.astro +18 -18
  225. package/src/components/select/SelectSeparator.astro +17 -17
  226. package/src/components/select/SelectTrigger.astro +34 -34
  227. package/src/components/select/SelectValue.astro +22 -22
  228. package/src/components/select/index.ts +8 -8
  229. package/src/components/separator/CHANGELOG.md +5 -5
  230. package/src/components/separator/Separator.astro +60 -60
  231. package/src/components/separator/index.ts +2 -2
  232. package/src/components/skeleton/CHANGELOG.md +5 -5
  233. package/src/components/skeleton/Skeleton.astro +121 -121
  234. package/src/components/skeleton/index.ts +1 -1
  235. package/src/components/slider/CHANGELOG.md +5 -5
  236. package/src/components/slider/Slider.astro +198 -198
  237. package/src/components/slider/index.ts +1 -1
  238. package/src/components/spinner/CHANGELOG.md +18 -18
  239. package/src/components/spinner/Spinner.astro +135 -135
  240. package/src/components/spinner/index.ts +1 -1
  241. package/src/components/sticky-surface/CHANGELOG.md +5 -5
  242. package/src/components/sticky-surface/StickySurface.astro +152 -152
  243. package/src/components/sticky-surface/index.ts +2 -2
  244. package/src/components/switch/CHANGELOG.md +29 -29
  245. package/src/components/switch/Switch.astro +106 -106
  246. package/src/components/switch/index.ts +1 -1
  247. package/src/components/table/CHANGELOG.md +24 -24
  248. package/src/components/table/Table.astro +358 -251
  249. package/src/components/table/TableBody.astro +17 -18
  250. package/src/components/table/TableBulkToolbar.astro +37 -0
  251. package/src/components/table/TableCaption.astro +17 -17
  252. package/src/components/table/TableCell.astro +45 -21
  253. package/src/components/table/TableCellText.astro +17 -0
  254. package/src/components/table/TableColumnMenu.astro +50 -0
  255. package/src/components/table/TableEditableCell.astro +287 -0
  256. package/src/components/table/TableEmpty.astro +17 -0
  257. package/src/components/table/TableFolderCell.astro +38 -0
  258. package/src/components/table/TableFooter.astro +21 -21
  259. package/src/components/table/TableHead.astro +90 -21
  260. package/src/components/table/TableHeader.astro +17 -17
  261. package/src/components/table/TablePagination.astro +57 -0
  262. package/src/components/table/TableRow.astro +52 -21
  263. package/src/components/table/TableSelectAllBanner.astro +34 -0
  264. package/src/components/table/TableSelectCell.astro +50 -0
  265. package/src/components/table/TableSkeletonRow.astro +21 -0
  266. package/src/components/table/index.ts +19 -9
  267. package/src/components/table/table-cell-variants.ts +29 -0
  268. package/src/components/tabs/CHANGELOG.md +5 -5
  269. package/src/components/tabs/Tabs.astro +306 -306
  270. package/src/components/tabs/TabsContent.astro +47 -47
  271. package/src/components/tabs/TabsList.astro +69 -69
  272. package/src/components/tabs/TabsTrigger.astro +40 -40
  273. package/src/components/tabs/index.ts +6 -6
  274. package/src/components/textarea/CHANGELOG.md +22 -22
  275. package/src/components/textarea/Textarea.astro +58 -58
  276. package/src/components/textarea/index.ts +2 -2
  277. package/src/components/toggle/CHANGELOG.md +23 -23
  278. package/src/components/toggle/Toggle.astro +150 -150
  279. package/src/components/toggle/index.ts +1 -1
  280. package/src/components/toggle-group/CHANGELOG.md +18 -18
  281. package/src/components/toggle-group/ToggleGroup.astro +236 -236
  282. package/src/components/toggle-group/ToggleGroupItem.astro +48 -48
  283. package/src/components/toggle-group/index.ts +2 -2
  284. package/src/components/tooltip/CHANGELOG.md +22 -22
  285. package/src/components/tooltip/Tooltip.astro +357 -357
  286. package/src/components/tooltip/TooltipContent.astro +85 -85
  287. package/src/components/tooltip/TooltipTrigger.astro +34 -34
  288. package/src/components/tooltip/index.ts +3 -3
  289. package/src/lib/table-controller.ts +1090 -0
  290. package/src/lib/toggle-group-controller.ts +113 -113
  291. package/src/lib/toggle-shared.ts +27 -27
  292. package/src/lib/utils.ts +6 -6
  293. package/src/styles/globals.css +209 -177
@@ -1,414 +1,414 @@
1
- ---
2
- /**
3
- * @component NavigationMenu
4
- * @title Navigation Menu
5
- * @description A menu with dropdown content and optional viewport transitions.
6
- * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=5548-10862
7
- *
8
- * @preview
9
- *
10
- * <NavigationMenu>
11
- * <NavigationMenuList>
12
- * <NavigationMenuItem value="products">
13
- * <NavigationMenuTrigger>Products</NavigationMenuTrigger>
14
- * <NavigationMenuContent>
15
- * <div class="grid grid-cols-2 gap-2 w-[380px] p-2">
16
- * <NavigationMenuLink href="#">
17
- * <div class="flex flex-col gap-1">
18
- * <div class="text-base font-medium">Analytics</div>
19
- * <div class="line-clamp-2 font-medium text-muted-foreground">Real-time insights</div>
20
- * </div>
21
- * </NavigationMenuLink>
22
- * <NavigationMenuLink href="#">
23
- * <div class="flex flex-col gap-1">
24
- * <div class="text-base font-medium">Automation</div>
25
- * <div class="line-clamp-2 font-medium text-muted-foreground">Workflow builders</div>
26
- * </div>
27
- * </NavigationMenuLink>
28
- * <NavigationMenuLink href="#">
29
- * <div class="flex flex-col gap-1">
30
- * <div class="text-base font-medium">Security</div>
31
- * <div class="line-clamp-2 font-medium text-muted-foreground">Enterprise-grade</div>
32
- * </div>
33
- * </NavigationMenuLink>
34
- * <NavigationMenuLink href="#">
35
- * <div class="flex flex-col gap-1">
36
- * <div class="text-base font-medium">Integrations</div>
37
- * <div class="line-clamp-2 font-medium text-muted-foreground">Connect tools</div>
38
- * </div>
39
- * </NavigationMenuLink>
40
- * </div>
41
- * </NavigationMenuContent>
42
- * </NavigationMenuItem>
43
- * <NavigationMenuItem value="solutions">
44
- * <NavigationMenuTrigger>Solutions</NavigationMenuTrigger>
45
- * <NavigationMenuContent align="center">
46
- * <div class="grid grid-cols-2 gap-2 w-[380px] p-2">
47
- * <NavigationMenuLink href="#">
48
- * <div class="flex flex-col gap-1">
49
- * <div class="text-base font-medium">Startups</div>
50
- * <div class="line-clamp-2 font-medium text-muted-foreground">Move fast</div>
51
- * </div>
52
- * </NavigationMenuLink>
53
- * <NavigationMenuLink href="#">
54
- * <div class="flex flex-col gap-1">
55
- * <div class="text-base font-medium">Enterprise</div>
56
- * <div class="line-clamp-2 font-medium text-muted-foreground">Scale securely</div>
57
- * </div>
58
- * </NavigationMenuLink>
59
- * <NavigationMenuLink href="#">
60
- * <div class="flex flex-col gap-1">
61
- * <div class="text-base font-medium">Agencies</div>
62
- * <div class="line-clamp-2 font-medium text-muted-foreground">Client delivery</div>
63
- * </div>
64
- * </NavigationMenuLink>
65
- * <NavigationMenuLink href="#">
66
- * <div class="flex flex-col gap-1">
67
- * <div class="text-base font-medium">E-commerce</div>
68
- * <div class="line-clamp-2 font-medium text-muted-foreground">Sell online</div>
69
- * </div>
70
- * </NavigationMenuLink>
71
- * </div>
72
- * </NavigationMenuContent>
73
- * </NavigationMenuItem>
74
- * <NavigationMenuItem value="resources">
75
- * <NavigationMenuTrigger>Resources</NavigationMenuTrigger>
76
- * <NavigationMenuContent align="center">
77
- * <div class="grid grid-cols-3 gap-2 w-[520px] p-2">
78
- * <NavigationMenuLink href="/docs">
79
- * <div class="flex flex-col gap-1">
80
- * <div class="text-base font-medium">Docs</div>
81
- * <div class="line-clamp-2 font-medium text-muted-foreground">Get started</div>
82
- * </div>
83
- * </NavigationMenuLink>
84
- * <NavigationMenuLink href="#">
85
- * <div class="flex flex-col gap-1">
86
- * <div class="text-base font-medium">Blog</div>
87
- * <div class="line-clamp-2 font-medium text-muted-foreground">Latest updates</div>
88
- * </div>
89
- * </NavigationMenuLink>
90
- * <NavigationMenuLink href="#">
91
- * <div class="flex flex-col gap-1">
92
- * <div class="text-base font-medium">Support</div>
93
- * <div class="line-clamp-2 font-medium text-muted-foreground">Get help</div>
94
- * </div>
95
- * </NavigationMenuLink>
96
- * <NavigationMenuLink href="#">
97
- * <div class="flex flex-col gap-1">
98
- * <div class="text-base font-medium">Events</div>
99
- * <div class="line-clamp-2 font-medium text-muted-foreground">Upcoming webinars</div>
100
- * </div>
101
- * </NavigationMenuLink>
102
- * <NavigationMenuLink href="#">
103
- * <div class="flex flex-col gap-1">
104
- * <div class="text-base font-medium">Guides</div>
105
- * <div class="line-clamp-2 font-medium text-muted-foreground">Best practices</div>
106
- * </div>
107
- * </NavigationMenuLink>
108
- * <NavigationMenuLink href="#">
109
- * <div class="flex flex-col gap-1">
110
- * <div class="text-base font-medium">Contact</div>
111
- * <div class="line-clamp-2 font-medium text-muted-foreground">Talk to us</div>
112
- * </div>
113
- * </NavigationMenuLink>
114
- * </div>
115
- * </NavigationMenuContent>
116
- * </NavigationMenuItem>
117
- * <NavigationMenuItem value="company">
118
- * <NavigationMenuTrigger>Company</NavigationMenuTrigger>
119
- * <NavigationMenuContent align="end">
120
- * <div class="w-[180px] p-2">
121
- * <NavigationMenuLink href="#">
122
- * <div class="flex flex-col gap-1">
123
- * <div class="text-base font-medium">About</div>
124
- * <div class="line-clamp-2 font-medium text-muted-foreground">Our story</div>
125
- * </div>
126
- * </NavigationMenuLink>
127
- * <NavigationMenuLink href="#">
128
- * <div class="flex flex-col gap-1">
129
- * <div class="text-base font-medium">Careers</div>
130
- * <div class="line-clamp-2 font-medium text-muted-foreground">Join the team</div>
131
- * </div>
132
- * </NavigationMenuLink>
133
- * </div>
134
- * </NavigationMenuContent>
135
- * </NavigationMenuItem>
136
- * <NavigationMenuIndicator />
137
- * </NavigationMenuList>
138
- * </NavigationMenu>
139
- *
140
- * @usage
141
- *
142
- * ```astro nocollapse
143
- * ---
144
- * import {
145
- * NavigationMenu,
146
- * NavigationMenuList,
147
- * NavigationMenuItem,
148
- * NavigationMenuTrigger,
149
- * NavigationMenuContent,
150
- * NavigationMenuLink,
151
- * } from '@bejamas/ui/components/navigation-menu';
152
- * ---
153
- *
154
- * <NavigationMenu>
155
- * <NavigationMenuList>
156
- * <NavigationMenuItem value="products">
157
- * <NavigationMenuTrigger>Products</NavigationMenuTrigger>
158
- * <NavigationMenuContent>
159
- * <div class="grid grid-cols-2 gap-2 w-[380px] p-2">
160
- * <NavigationMenuLink href="#">
161
- * <div class="flex flex-col gap-1">
162
- * <div class="text-base font-medium">Analytics</div>
163
- * <div class="line-clamp-2 font-medium text-muted-foreground">Real-time insights</div>
164
- * </div>
165
- * </NavigationMenuLink>
166
- * <NavigationMenuLink href="#">
167
- * <div class="flex flex-col gap-1">
168
- * <div class="text-base font-medium">Automation</div>
169
- * <div class="line-clamp-2 font-medium text-muted-foreground">Workflow builders</div>
170
- * </div>
171
- * </NavigationMenuLink>
172
- * </div>
173
- * </NavigationMenuContent>
174
- * </NavigationMenuItem>
175
- * <NavigationMenuItem value="resources">
176
- * <NavigationMenuTrigger>Resources</NavigationMenuTrigger>
177
- * <NavigationMenuContent align="center">
178
- * <div class="grid grid-cols-2 gap-2 w-[380px] p-2">
179
- * <NavigationMenuLink href="/docs">
180
- * <div class="flex flex-col gap-1">
181
- * <div class="text-base font-medium">Docs</div>
182
- * <div class="line-clamp-2 font-medium text-muted-foreground">Get started</div>
183
- * </div>
184
- * </NavigationMenuLink>
185
- * <NavigationMenuLink href="#">
186
- * <div class="flex flex-col gap-1">
187
- * <div class="text-base font-medium">Support</div>
188
- * <div class="line-clamp-2 font-medium text-muted-foreground">Get help</div>
189
- * </div>
190
- * </NavigationMenuLink>
191
- * </div>
192
- * </NavigationMenuContent>
193
- * </NavigationMenuItem>
194
- * <NavigationMenuIndicator />
195
- * </NavigationMenuList>
196
- * </NavigationMenu>
197
- * ```
198
- *
199
- * @api
200
- *
201
- * ### NavigationMenu Props
202
- *
203
- * | Prop | Type | Default | Description |
204
- * |------|------|---------|-------------|
205
- * | `align` | `"start" \| "center" \| "end"` | `"start"` | Viewport alignment relative to the trigger row |
206
- * | `viewport` | `boolean` | `true` | Enable animated viewport container for content |
207
- * | `delayOpen` | `number` | `0` | Delay in ms before opening menu |
208
- * | `delayClose` | `number` | `0` | Delay in ms before closing menu |
209
- * | `openOnFocus` | `boolean` | `false` | Open menu on keyboard focus |
210
- *
211
- * ### NavigationMenuItem Props
212
- *
213
- * | Prop | Type | Default | Description |
214
- * |------|------|---------|-------------|
215
- * | `value` | `string` | — | Unique identifier for the item |
216
- * | `align` | `"start" \| "center" \| "end"` | `"start"` | Content alignment relative to trigger |
217
- *
218
- * ### Events
219
- *
220
- * | Event | Detail | Description |
221
- * |-------|--------|-------------|
222
- * | `navigation-menu:change` | `{ value: string \| null }` | Fired when active item changes |
223
- *
224
- * ### Programmatic Control
225
- *
226
- * ```js nocollapse
227
- * // Open a specific item
228
- * element.dispatchEvent(
229
- * new CustomEvent("navigation-menu:set", { detail: { value: "products" } })
230
- * );
231
- *
232
- * // Close the menu
233
- * element.dispatchEvent(
234
- * new CustomEvent("navigation-menu:set", { detail: { value: null } })
235
- * );
236
- * ```
237
- *
238
- * @examples
239
- *
240
- * ### With Icons
241
- *
242
- * Links with Lucide icons for visual enhancement.
243
- *
244
- * <NavigationMenu>
245
- * <NavigationMenuList>
246
- * <NavigationMenuItem value="features">
247
- * <NavigationMenuTrigger>Features</NavigationMenuTrigger>
248
- * <NavigationMenuContent>
249
- * <div class="grid gap-2 w-[320px] p-2">
250
- * <NavigationMenuLink href="#">
251
- * <ChartBarIcon class="size-5 mt-1 text-muted-foreground" />
252
- * <div class="flex flex-col gap-1">
253
- * <div class="text-base font-medium">Analytics</div>
254
- * <div class="line-clamp-2 font-medium text-muted-foreground">Track your metrics</div>
255
- * </div>
256
- * </NavigationMenuLink>
257
- * <NavigationMenuLink href="#">
258
- * <ZapIcon class="size-5 mt-1 text-muted-foreground" />
259
- * <div class="flex flex-col gap-1">
260
- * <div class="text-base font-medium">Automation</div>
261
- * <div class="line-clamp-2 font-medium text-muted-foreground">Streamline workflows</div>
262
- * </div>
263
- * </NavigationMenuLink>
264
- * <NavigationMenuLink href="#">
265
- * <ShieldIcon class="size-5 mt-1 text-muted-foreground" />
266
- * <div class="flex flex-col gap-1">
267
- * <div class="text-base font-medium">Security</div>
268
- * <div class="line-clamp-2 font-medium text-muted-foreground">Enterprise-grade protection</div>
269
- * </div>
270
- * </NavigationMenuLink>
271
- * </div>
272
- * </NavigationMenuContent>
273
- * </NavigationMenuItem>
274
- * <NavigationMenuIndicator />
275
- * </NavigationMenuList>
276
- * </NavigationMenu>
277
- *
278
- * ### Featured Card
279
- *
280
- * Hero-style layout with a featured item alongside regular links.
281
- *
282
- * <NavigationMenu>
283
- * <NavigationMenuList>
284
- * <NavigationMenuItem value="getting-started">
285
- * <NavigationMenuTrigger>Getting Started</NavigationMenuTrigger>
286
- * <NavigationMenuContent>
287
- * <div class="grid grid-cols-[1fr_200px] gap-2 w-[480px] p-2">
288
- * <div class="row-span-3">
289
- * <NavigationMenuLink href="#" class="flex h-full flex-col items-start rounded-lg bg-accent p-4 no-underline">
290
- * <div class="mb-2 text-base font-medium">Introduction</div>
291
- * <p class="text-sm font-medium text-muted-foreground">Learn the basics and get up to speed quickly with our comprehensive guides.</p>
292
- * </NavigationMenuLink>
293
- * </div>
294
- * <NavigationMenuLink href="#">
295
- * <div class="flex flex-col gap-1">
296
- * <div class="text-base font-medium">Installation</div>
297
- * <div class="line-clamp-2 font-medium text-muted-foreground">Step-by-step setup</div>
298
- * </div>
299
- * </NavigationMenuLink>
300
- * <NavigationMenuLink href="#">
301
- * <div class="flex flex-col gap-1">
302
- * <div class="text-base font-medium">Configuration</div>
303
- * <div class="line-clamp-2 font-medium text-muted-foreground">Customize settings</div>
304
- * </div>
305
- * </NavigationMenuLink>
306
- * <NavigationMenuLink href="#">
307
- * <div class="flex flex-col gap-1">
308
- * <div class="text-base font-medium">Examples</div>
309
- * <div class="line-clamp-2 font-medium text-muted-foreground">Code samples</div>
310
- * </div>
311
- * </NavigationMenuLink>
312
- * </div>
313
- * </NavigationMenuContent>
314
- * </NavigationMenuItem>
315
- * <NavigationMenuIndicator />
316
- * </NavigationMenuList>
317
- * </NavigationMenu>
318
- *
319
- * ### With Simple Links
320
- *
321
- * Use `navigationMenuTriggerStyle()` to style regular links to match triggers.
322
- *
323
- * <NavigationMenu>
324
- * <NavigationMenuList>
325
- * <NavigationMenuItem value="products">
326
- * <NavigationMenuTrigger>Products</NavigationMenuTrigger>
327
- * <NavigationMenuContent>
328
- * <div class="w-[200px] p-2">
329
- * <NavigationMenuLink href="#">Product One</NavigationMenuLink>
330
- * <NavigationMenuLink href="#">Product Two</NavigationMenuLink>
331
- * </div>
332
- * </NavigationMenuContent>
333
- * </NavigationMenuItem>
334
- * <NavigationMenuItem>
335
- * <NavigationMenuLink href="#" class={navigationMenuTriggerStyle()}>
336
- * Pricing
337
- * </NavigationMenuLink>
338
- * </NavigationMenuItem>
339
- * <NavigationMenuItem>
340
- * <NavigationMenuLink href="/docs" class={navigationMenuTriggerStyle()}>
341
- * Docs
342
- * </NavigationMenuLink>
343
- * </NavigationMenuItem>
344
- * <NavigationMenuIndicator />
345
- * </NavigationMenuList>
346
- * </NavigationMenu>
347
- *
348
- * ### Without Viewport
349
- *
350
- * Set `viewport={false}` to render content directly without the animated viewport container.
351
- *
352
- * <NavigationMenu viewport={false}>
353
- * <NavigationMenuList>
354
- * <NavigationMenuItem value="menu">
355
- * <NavigationMenuTrigger>Menu</NavigationMenuTrigger>
356
- * <NavigationMenuContent>
357
- * <div class="w-[200px] p-2 rounded-md border bg-popover shadow-md">
358
- * <NavigationMenuLink href="#">Option One</NavigationMenuLink>
359
- * <NavigationMenuLink href="#">Option Two</NavigationMenuLink>
360
- * </div>
361
- * </NavigationMenuContent>
362
- * </NavigationMenuItem>
363
- * </NavigationMenuList>
364
- * </NavigationMenu>
365
- */
366
- import type { HTMLAttributes } from "astro/types";
367
- import { cn } from "@cl-light-ds/ui/lib/utils";
368
- import NavigationMenuPositioner from "./NavigationMenuPositioner.astro";
369
-
370
- interface Props extends HTMLAttributes<"nav"> {
371
- class?: string;
372
- align?: "start" | "center" | "end";
373
- viewport?: boolean;
374
- delayOpen?: number;
375
- delayClose?: number;
376
- openOnFocus?: boolean;
377
- }
378
-
379
- const {
380
- class: className = "",
381
- align = "start",
382
- viewport = true,
383
- delayOpen = 0,
384
- delayClose = 0,
385
- openOnFocus,
386
- ...rest
387
- } = Astro.props as Props;
388
- ---
389
-
390
- <nav
391
- {...rest}
392
- data-slot="navigation-menu"
393
- data-viewport={viewport}
394
- data-delay-open={delayOpen}
395
- data-delay-close={delayClose}
396
- data-open-on-focus={openOnFocus}
397
- class={cn(
398
- "max-w-max group/navigation-menu relative flex flex-1 items-center justify-center",
399
- className,
400
- )}
401
- >
402
- <slot />
403
- {viewport && <NavigationMenuPositioner align={align} />}
404
- </nav>
405
-
406
- <script>
407
- import { createNavigationMenu } from "@data-slot/navigation-menu";
408
-
409
- document
410
- .querySelectorAll<HTMLElement>('[data-slot="navigation-menu"]')
411
- .forEach((el) => {
412
- createNavigationMenu(el);
413
- });
414
- </script>
1
+ ---
2
+ /**
3
+ * @component NavigationMenu
4
+ * @title Navigation Menu
5
+ * @description A menu with dropdown content and optional viewport transitions.
6
+ * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=5548-10862
7
+ *
8
+ * @preview
9
+ *
10
+ * <NavigationMenu>
11
+ * <NavigationMenuList>
12
+ * <NavigationMenuItem value="products">
13
+ * <NavigationMenuTrigger>Products</NavigationMenuTrigger>
14
+ * <NavigationMenuContent>
15
+ * <div class="grid grid-cols-2 gap-2 w-[380px] p-2">
16
+ * <NavigationMenuLink href="#">
17
+ * <div class="flex flex-col gap-1">
18
+ * <div class="text-base font-medium">Analytics</div>
19
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Real-time insights</div>
20
+ * </div>
21
+ * </NavigationMenuLink>
22
+ * <NavigationMenuLink href="#">
23
+ * <div class="flex flex-col gap-1">
24
+ * <div class="text-base font-medium">Automation</div>
25
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Workflow builders</div>
26
+ * </div>
27
+ * </NavigationMenuLink>
28
+ * <NavigationMenuLink href="#">
29
+ * <div class="flex flex-col gap-1">
30
+ * <div class="text-base font-medium">Security</div>
31
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Enterprise-grade</div>
32
+ * </div>
33
+ * </NavigationMenuLink>
34
+ * <NavigationMenuLink href="#">
35
+ * <div class="flex flex-col gap-1">
36
+ * <div class="text-base font-medium">Integrations</div>
37
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Connect tools</div>
38
+ * </div>
39
+ * </NavigationMenuLink>
40
+ * </div>
41
+ * </NavigationMenuContent>
42
+ * </NavigationMenuItem>
43
+ * <NavigationMenuItem value="solutions">
44
+ * <NavigationMenuTrigger>Solutions</NavigationMenuTrigger>
45
+ * <NavigationMenuContent align="center">
46
+ * <div class="grid grid-cols-2 gap-2 w-[380px] p-2">
47
+ * <NavigationMenuLink href="#">
48
+ * <div class="flex flex-col gap-1">
49
+ * <div class="text-base font-medium">Startups</div>
50
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Move fast</div>
51
+ * </div>
52
+ * </NavigationMenuLink>
53
+ * <NavigationMenuLink href="#">
54
+ * <div class="flex flex-col gap-1">
55
+ * <div class="text-base font-medium">Enterprise</div>
56
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Scale securely</div>
57
+ * </div>
58
+ * </NavigationMenuLink>
59
+ * <NavigationMenuLink href="#">
60
+ * <div class="flex flex-col gap-1">
61
+ * <div class="text-base font-medium">Agencies</div>
62
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Client delivery</div>
63
+ * </div>
64
+ * </NavigationMenuLink>
65
+ * <NavigationMenuLink href="#">
66
+ * <div class="flex flex-col gap-1">
67
+ * <div class="text-base font-medium">E-commerce</div>
68
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Sell online</div>
69
+ * </div>
70
+ * </NavigationMenuLink>
71
+ * </div>
72
+ * </NavigationMenuContent>
73
+ * </NavigationMenuItem>
74
+ * <NavigationMenuItem value="resources">
75
+ * <NavigationMenuTrigger>Resources</NavigationMenuTrigger>
76
+ * <NavigationMenuContent align="center">
77
+ * <div class="grid grid-cols-3 gap-2 w-[520px] p-2">
78
+ * <NavigationMenuLink href="/docs">
79
+ * <div class="flex flex-col gap-1">
80
+ * <div class="text-base font-medium">Docs</div>
81
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Get started</div>
82
+ * </div>
83
+ * </NavigationMenuLink>
84
+ * <NavigationMenuLink href="#">
85
+ * <div class="flex flex-col gap-1">
86
+ * <div class="text-base font-medium">Blog</div>
87
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Latest updates</div>
88
+ * </div>
89
+ * </NavigationMenuLink>
90
+ * <NavigationMenuLink href="#">
91
+ * <div class="flex flex-col gap-1">
92
+ * <div class="text-base font-medium">Support</div>
93
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Get help</div>
94
+ * </div>
95
+ * </NavigationMenuLink>
96
+ * <NavigationMenuLink href="#">
97
+ * <div class="flex flex-col gap-1">
98
+ * <div class="text-base font-medium">Events</div>
99
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Upcoming webinars</div>
100
+ * </div>
101
+ * </NavigationMenuLink>
102
+ * <NavigationMenuLink href="#">
103
+ * <div class="flex flex-col gap-1">
104
+ * <div class="text-base font-medium">Guides</div>
105
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Best practices</div>
106
+ * </div>
107
+ * </NavigationMenuLink>
108
+ * <NavigationMenuLink href="#">
109
+ * <div class="flex flex-col gap-1">
110
+ * <div class="text-base font-medium">Contact</div>
111
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Talk to us</div>
112
+ * </div>
113
+ * </NavigationMenuLink>
114
+ * </div>
115
+ * </NavigationMenuContent>
116
+ * </NavigationMenuItem>
117
+ * <NavigationMenuItem value="company">
118
+ * <NavigationMenuTrigger>Company</NavigationMenuTrigger>
119
+ * <NavigationMenuContent align="end">
120
+ * <div class="w-[180px] p-2">
121
+ * <NavigationMenuLink href="#">
122
+ * <div class="flex flex-col gap-1">
123
+ * <div class="text-base font-medium">About</div>
124
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Our story</div>
125
+ * </div>
126
+ * </NavigationMenuLink>
127
+ * <NavigationMenuLink href="#">
128
+ * <div class="flex flex-col gap-1">
129
+ * <div class="text-base font-medium">Careers</div>
130
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Join the team</div>
131
+ * </div>
132
+ * </NavigationMenuLink>
133
+ * </div>
134
+ * </NavigationMenuContent>
135
+ * </NavigationMenuItem>
136
+ * <NavigationMenuIndicator />
137
+ * </NavigationMenuList>
138
+ * </NavigationMenu>
139
+ *
140
+ * @usage
141
+ *
142
+ * ```astro nocollapse
143
+ * ---
144
+ * import {
145
+ * NavigationMenu,
146
+ * NavigationMenuList,
147
+ * NavigationMenuItem,
148
+ * NavigationMenuTrigger,
149
+ * NavigationMenuContent,
150
+ * NavigationMenuLink,
151
+ * } from '@bejamas/ui/components/navigation-menu';
152
+ * ---
153
+ *
154
+ * <NavigationMenu>
155
+ * <NavigationMenuList>
156
+ * <NavigationMenuItem value="products">
157
+ * <NavigationMenuTrigger>Products</NavigationMenuTrigger>
158
+ * <NavigationMenuContent>
159
+ * <div class="grid grid-cols-2 gap-2 w-[380px] p-2">
160
+ * <NavigationMenuLink href="#">
161
+ * <div class="flex flex-col gap-1">
162
+ * <div class="text-base font-medium">Analytics</div>
163
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Real-time insights</div>
164
+ * </div>
165
+ * </NavigationMenuLink>
166
+ * <NavigationMenuLink href="#">
167
+ * <div class="flex flex-col gap-1">
168
+ * <div class="text-base font-medium">Automation</div>
169
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Workflow builders</div>
170
+ * </div>
171
+ * </NavigationMenuLink>
172
+ * </div>
173
+ * </NavigationMenuContent>
174
+ * </NavigationMenuItem>
175
+ * <NavigationMenuItem value="resources">
176
+ * <NavigationMenuTrigger>Resources</NavigationMenuTrigger>
177
+ * <NavigationMenuContent align="center">
178
+ * <div class="grid grid-cols-2 gap-2 w-[380px] p-2">
179
+ * <NavigationMenuLink href="/docs">
180
+ * <div class="flex flex-col gap-1">
181
+ * <div class="text-base font-medium">Docs</div>
182
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Get started</div>
183
+ * </div>
184
+ * </NavigationMenuLink>
185
+ * <NavigationMenuLink href="#">
186
+ * <div class="flex flex-col gap-1">
187
+ * <div class="text-base font-medium">Support</div>
188
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Get help</div>
189
+ * </div>
190
+ * </NavigationMenuLink>
191
+ * </div>
192
+ * </NavigationMenuContent>
193
+ * </NavigationMenuItem>
194
+ * <NavigationMenuIndicator />
195
+ * </NavigationMenuList>
196
+ * </NavigationMenu>
197
+ * ```
198
+ *
199
+ * @api
200
+ *
201
+ * ### NavigationMenu Props
202
+ *
203
+ * | Prop | Type | Default | Description |
204
+ * |------|------|---------|-------------|
205
+ * | `align` | `"start" \| "center" \| "end"` | `"start"` | Viewport alignment relative to the trigger row |
206
+ * | `viewport` | `boolean` | `true` | Enable animated viewport container for content |
207
+ * | `delayOpen` | `number` | `0` | Delay in ms before opening menu |
208
+ * | `delayClose` | `number` | `0` | Delay in ms before closing menu |
209
+ * | `openOnFocus` | `boolean` | `false` | Open menu on keyboard focus |
210
+ *
211
+ * ### NavigationMenuItem Props
212
+ *
213
+ * | Prop | Type | Default | Description |
214
+ * |------|------|---------|-------------|
215
+ * | `value` | `string` | — | Unique identifier for the item |
216
+ * | `align` | `"start" \| "center" \| "end"` | `"start"` | Content alignment relative to trigger |
217
+ *
218
+ * ### Events
219
+ *
220
+ * | Event | Detail | Description |
221
+ * |-------|--------|-------------|
222
+ * | `navigation-menu:change` | `{ value: string \| null }` | Fired when active item changes |
223
+ *
224
+ * ### Programmatic Control
225
+ *
226
+ * ```js nocollapse
227
+ * // Open a specific item
228
+ * element.dispatchEvent(
229
+ * new CustomEvent("navigation-menu:set", { detail: { value: "products" } })
230
+ * );
231
+ *
232
+ * // Close the menu
233
+ * element.dispatchEvent(
234
+ * new CustomEvent("navigation-menu:set", { detail: { value: null } })
235
+ * );
236
+ * ```
237
+ *
238
+ * @examples
239
+ *
240
+ * ### With Icons
241
+ *
242
+ * Links with Lucide icons for visual enhancement.
243
+ *
244
+ * <NavigationMenu>
245
+ * <NavigationMenuList>
246
+ * <NavigationMenuItem value="features">
247
+ * <NavigationMenuTrigger>Features</NavigationMenuTrigger>
248
+ * <NavigationMenuContent>
249
+ * <div class="grid gap-2 w-[320px] p-2">
250
+ * <NavigationMenuLink href="#">
251
+ * <ChartBarIcon class="size-5 mt-1 text-muted-foreground" />
252
+ * <div class="flex flex-col gap-1">
253
+ * <div class="text-base font-medium">Analytics</div>
254
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Track your metrics</div>
255
+ * </div>
256
+ * </NavigationMenuLink>
257
+ * <NavigationMenuLink href="#">
258
+ * <ZapIcon class="size-5 mt-1 text-muted-foreground" />
259
+ * <div class="flex flex-col gap-1">
260
+ * <div class="text-base font-medium">Automation</div>
261
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Streamline workflows</div>
262
+ * </div>
263
+ * </NavigationMenuLink>
264
+ * <NavigationMenuLink href="#">
265
+ * <ShieldIcon class="size-5 mt-1 text-muted-foreground" />
266
+ * <div class="flex flex-col gap-1">
267
+ * <div class="text-base font-medium">Security</div>
268
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Enterprise-grade protection</div>
269
+ * </div>
270
+ * </NavigationMenuLink>
271
+ * </div>
272
+ * </NavigationMenuContent>
273
+ * </NavigationMenuItem>
274
+ * <NavigationMenuIndicator />
275
+ * </NavigationMenuList>
276
+ * </NavigationMenu>
277
+ *
278
+ * ### Featured Card
279
+ *
280
+ * Hero-style layout with a featured item alongside regular links.
281
+ *
282
+ * <NavigationMenu>
283
+ * <NavigationMenuList>
284
+ * <NavigationMenuItem value="getting-started">
285
+ * <NavigationMenuTrigger>Getting Started</NavigationMenuTrigger>
286
+ * <NavigationMenuContent>
287
+ * <div class="grid grid-cols-[1fr_200px] gap-2 w-[480px] p-2">
288
+ * <div class="row-span-3">
289
+ * <NavigationMenuLink href="#" class="flex h-full flex-col items-start rounded-lg bg-accent p-4 no-underline">
290
+ * <div class="mb-2 text-base font-medium">Introduction</div>
291
+ * <p class="text-sm font-medium text-muted-foreground">Learn the basics and get up to speed quickly with our comprehensive guides.</p>
292
+ * </NavigationMenuLink>
293
+ * </div>
294
+ * <NavigationMenuLink href="#">
295
+ * <div class="flex flex-col gap-1">
296
+ * <div class="text-base font-medium">Installation</div>
297
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Step-by-step setup</div>
298
+ * </div>
299
+ * </NavigationMenuLink>
300
+ * <NavigationMenuLink href="#">
301
+ * <div class="flex flex-col gap-1">
302
+ * <div class="text-base font-medium">Configuration</div>
303
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Customize settings</div>
304
+ * </div>
305
+ * </NavigationMenuLink>
306
+ * <NavigationMenuLink href="#">
307
+ * <div class="flex flex-col gap-1">
308
+ * <div class="text-base font-medium">Examples</div>
309
+ * <div class="line-clamp-2 font-medium text-muted-foreground">Code samples</div>
310
+ * </div>
311
+ * </NavigationMenuLink>
312
+ * </div>
313
+ * </NavigationMenuContent>
314
+ * </NavigationMenuItem>
315
+ * <NavigationMenuIndicator />
316
+ * </NavigationMenuList>
317
+ * </NavigationMenu>
318
+ *
319
+ * ### With Simple Links
320
+ *
321
+ * Use `navigationMenuTriggerStyle()` to style regular links to match triggers.
322
+ *
323
+ * <NavigationMenu>
324
+ * <NavigationMenuList>
325
+ * <NavigationMenuItem value="products">
326
+ * <NavigationMenuTrigger>Products</NavigationMenuTrigger>
327
+ * <NavigationMenuContent>
328
+ * <div class="w-[200px] p-2">
329
+ * <NavigationMenuLink href="#">Product One</NavigationMenuLink>
330
+ * <NavigationMenuLink href="#">Product Two</NavigationMenuLink>
331
+ * </div>
332
+ * </NavigationMenuContent>
333
+ * </NavigationMenuItem>
334
+ * <NavigationMenuItem>
335
+ * <NavigationMenuLink href="#" class={navigationMenuTriggerStyle()}>
336
+ * Pricing
337
+ * </NavigationMenuLink>
338
+ * </NavigationMenuItem>
339
+ * <NavigationMenuItem>
340
+ * <NavigationMenuLink href="/docs" class={navigationMenuTriggerStyle()}>
341
+ * Docs
342
+ * </NavigationMenuLink>
343
+ * </NavigationMenuItem>
344
+ * <NavigationMenuIndicator />
345
+ * </NavigationMenuList>
346
+ * </NavigationMenu>
347
+ *
348
+ * ### Without Viewport
349
+ *
350
+ * Set `viewport={false}` to render content directly without the animated viewport container.
351
+ *
352
+ * <NavigationMenu viewport={false}>
353
+ * <NavigationMenuList>
354
+ * <NavigationMenuItem value="menu">
355
+ * <NavigationMenuTrigger>Menu</NavigationMenuTrigger>
356
+ * <NavigationMenuContent>
357
+ * <div class="w-[200px] p-2 rounded-md border bg-popover shadow-md">
358
+ * <NavigationMenuLink href="#">Option One</NavigationMenuLink>
359
+ * <NavigationMenuLink href="#">Option Two</NavigationMenuLink>
360
+ * </div>
361
+ * </NavigationMenuContent>
362
+ * </NavigationMenuItem>
363
+ * </NavigationMenuList>
364
+ * </NavigationMenu>
365
+ */
366
+ import type { HTMLAttributes } from "astro/types";
367
+ import { cn } from "@cl-light-ds/ui/lib/utils";
368
+ import NavigationMenuPositioner from "./NavigationMenuPositioner.astro";
369
+
370
+ interface Props extends HTMLAttributes<"nav"> {
371
+ class?: string;
372
+ align?: "start" | "center" | "end";
373
+ viewport?: boolean;
374
+ delayOpen?: number;
375
+ delayClose?: number;
376
+ openOnFocus?: boolean;
377
+ }
378
+
379
+ const {
380
+ class: className = "",
381
+ align = "start",
382
+ viewport = true,
383
+ delayOpen = 0,
384
+ delayClose = 0,
385
+ openOnFocus,
386
+ ...rest
387
+ } = Astro.props as Props;
388
+ ---
389
+
390
+ <nav
391
+ {...rest}
392
+ data-slot="navigation-menu"
393
+ data-viewport={viewport}
394
+ data-delay-open={delayOpen}
395
+ data-delay-close={delayClose}
396
+ data-open-on-focus={openOnFocus}
397
+ class={cn(
398
+ "max-w-max group/navigation-menu relative flex flex-1 items-center justify-center",
399
+ className,
400
+ )}
401
+ >
402
+ <slot />
403
+ {viewport && <NavigationMenuPositioner align={align} />}
404
+ </nav>
405
+
406
+ <script>
407
+ import { createNavigationMenu } from "@data-slot/navigation-menu";
408
+
409
+ document
410
+ .querySelectorAll<HTMLElement>('[data-slot="navigation-menu"]')
411
+ .forEach((el) => {
412
+ createNavigationMenu(el);
413
+ });
414
+ </script>