@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,357 +1,357 @@
1
- ---
2
- /**
3
- * @component Tooltip
4
- * @title Tooltip
5
- * @description A small popup that appears when hovering over or focusing on an element. Positioning is computed in JavaScript.
6
- * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=5275-137
7
- *
8
- * @preview
9
- *
10
- * <Tooltip>
11
- * <TooltipTrigger asChild>
12
- * <Button variant="outline">Hover</Button>
13
- * </TooltipTrigger>
14
- * <TooltipContent>
15
- * <p>Add to library</p>
16
- * </TooltipContent>
17
- * </Tooltip>
18
- *
19
- * @usage
20
- *
21
- * ```astro nocollapse
22
- * ---
23
- * import { Tooltip, TooltipTrigger, TooltipContent } from '@bejamas/ui/components/tooltip';
24
- * import { Button } from '@bejamas/ui/components/button';
25
- * ---
26
- *
27
- * <Tooltip>
28
- * <TooltipTrigger asChild>
29
- * <Button variant="outline">Hover</Button>
30
- * </TooltipTrigger>
31
- * <TooltipContent>
32
- * <p>Add to library</p>
33
- * </TooltipContent>
34
- * </Tooltip>
35
- * ```
36
- *
37
- * @examples
38
- *
39
- * ### Outline variant
40
- *
41
- * <Tooltip>
42
- * <TooltipTrigger asChild>
43
- * <Button variant="outline">Hover</Button>
44
- * </TooltipTrigger>
45
- * <TooltipContent variant="outline">
46
- * <p>Tooltip label</p>
47
- * </TooltipContent>
48
- * </Tooltip>
49
- *
50
- * ### Large size (with supportive text)
51
- *
52
- * <Tooltip>
53
- * <TooltipTrigger asChild>
54
- * <Button variant="outline">Hover</Button>
55
- * </TooltipTrigger>
56
- * <TooltipContent variant="outline" size="lg">
57
- * <div class="flex flex-col gap-1">
58
- * <p class="font-medium">Tooltip label</p>
59
- * <p class="opacity-70">Supportive text</p>
60
- * </div>
61
- * </TooltipContent>
62
- * </Tooltip>
63
- *
64
- * ### With delay
65
- *
66
- * <Tooltip delay={1000}>
67
- * <TooltipTrigger asChild>
68
- * <Button variant="outline">Hover with delay</Button>
69
- * </TooltipTrigger>
70
- * <TooltipContent>
71
- * <p>This tooltip appears after 1000ms</p>
72
- * </TooltipContent>
73
- * </Tooltip>
74
- *
75
- * ### Skip delay on subsequent tooltips
76
- *
77
- * When a tooltip is shown, hovering over other tooltip triggers will show their tooltips immediately without delay. Try hovering over the first button, then quickly move to the others.
78
- *
79
- * <div class="flex gap-2">
80
- * <Tooltip delay={500}>
81
- * <TooltipTrigger asChild>
82
- * <Button variant="outline">Bold</Button>
83
- * </TooltipTrigger>
84
- * <TooltipContent>
85
- * <p>Bold (Ctrl+B)</p>
86
- * </TooltipContent>
87
- * </Tooltip>
88
- * <Tooltip delay={500}>
89
- * <TooltipTrigger asChild>
90
- * <Button variant="outline">Italic</Button>
91
- * </TooltipTrigger>
92
- * <TooltipContent>
93
- * <p>Italic (Ctrl+I)</p>
94
- * </TooltipContent>
95
- * </Tooltip>
96
- * <Tooltip delay={500}>
97
- * <TooltipTrigger asChild>
98
- * <Button variant="outline">Underline</Button>
99
- * </TooltipTrigger>
100
- * <TooltipContent>
101
- * <p>Underline (Ctrl+U)</p>
102
- * </TooltipContent>
103
- * </Tooltip>
104
- * </div>
105
- *
106
- * ### Different sides
107
- *
108
- * Use the `side` prop to control which side the tooltip appears on.
109
- *
110
- * <div class="grid gap-4 py-8">
111
- * <div class="flex gap-4 items-center justify-center">
112
- * <Tooltip>
113
- * <TooltipTrigger asChild>
114
- * <Button variant="outline">Left</Button>
115
- * </TooltipTrigger>
116
- * <TooltipContent side="left">
117
- * <p>Tooltip on left</p>
118
- * </TooltipContent>
119
- * </Tooltip>
120
- * <Tooltip>
121
- * <TooltipTrigger asChild>
122
- * <Button variant="outline">Top</Button>
123
- * </TooltipTrigger>
124
- * <TooltipContent side="top">
125
- * <p>Tooltip on top</p>
126
- * </TooltipContent>
127
- * </Tooltip>
128
- * <Tooltip>
129
- * <TooltipTrigger asChild>
130
- * <Button variant="outline">Bottom</Button>
131
- * </TooltipTrigger>
132
- * <TooltipContent side="bottom">
133
- * <p>Tooltip on bottom</p>
134
- * </TooltipContent>
135
- * </Tooltip>
136
- * <Tooltip>
137
- * <TooltipTrigger asChild>
138
- * <Button variant="outline">Right</Button>
139
- * </TooltipTrigger>
140
- * <TooltipContent side="right">
141
- * <p>Tooltip on right</p>
142
- * </TooltipContent>
143
- * </Tooltip>
144
- * </div>
145
- * <div class="flex gap-4 items-center justify-center">
146
- * <Tooltip>
147
- * <TooltipTrigger asChild>
148
- * <Button variant="outline">Inline Start</Button>
149
- * </TooltipTrigger>
150
- * <TooltipContent side="inline-start">
151
- * <p>Tooltip on inline start</p>
152
- * </TooltipContent>
153
- * </Tooltip>
154
- * <Tooltip>
155
- * <TooltipTrigger asChild>
156
- * <Button variant="outline">Inline End</Button>
157
- * </TooltipTrigger>
158
- * <TooltipContent side="inline-end">
159
- * <p>Tooltip on inline end</p>
160
- * </TooltipContent>
161
- * </Tooltip>
162
- * </div>
163
- * </div>
164
- *
165
- * ### Alignment options
166
- *
167
- * Use the `align` prop to control how the tooltip aligns relative to the trigger.
168
- *
169
- * <div class="flex flex-col gap-4 items-center py-8">
170
- * <div class="flex gap-4">
171
- * <Tooltip>
172
- * <TooltipTrigger asChild>
173
- * <Button variant="outline">Top Start</Button>
174
- * </TooltipTrigger>
175
- * <TooltipContent side="top" align="start">
176
- * <p>Aligned to start</p>
177
- * </TooltipContent>
178
- * </Tooltip>
179
- * <Tooltip>
180
- * <TooltipTrigger asChild>
181
- * <Button variant="outline">Top Center</Button>
182
- * </TooltipTrigger>
183
- * <TooltipContent side="top" align="center">
184
- * <p>Aligned to center</p>
185
- * </TooltipContent>
186
- * </Tooltip>
187
- * <Tooltip>
188
- * <TooltipTrigger asChild>
189
- * <Button variant="outline">Top End</Button>
190
- * </TooltipTrigger>
191
- * <TooltipContent side="top" align="end">
192
- * <p>Aligned to end</p>
193
- * </TooltipContent>
194
- * </Tooltip>
195
- * </div>
196
- * <div class="flex gap-4">
197
- * <Tooltip>
198
- * <TooltipTrigger asChild>
199
- * <Button variant="outline">Bottom Start</Button>
200
- * </TooltipTrigger>
201
- * <TooltipContent side="bottom" align="start">
202
- * <p>Aligned to start</p>
203
- * </TooltipContent>
204
- * </Tooltip>
205
- * <Tooltip>
206
- * <TooltipTrigger asChild>
207
- * <Button variant="outline">Bottom Center</Button>
208
- * </TooltipTrigger>
209
- * <TooltipContent side="bottom" align="center">
210
- * <p>Aligned to center</p>
211
- * </TooltipContent>
212
- * </Tooltip>
213
- * <Tooltip>
214
- * <TooltipTrigger asChild>
215
- * <Button variant="outline">Bottom End</Button>
216
- * </TooltipTrigger>
217
- * <TooltipContent side="bottom" align="end">
218
- * <p>Aligned to end</p>
219
- * </TooltipContent>
220
- * </Tooltip>
221
- * </div>
222
- * </div>
223
- *
224
- * ### Positioning Options
225
- *
226
- * Use `TooltipContent` props to configure placement:
227
- *
228
- * <div class="flex gap-3">
229
- * <Tooltip>
230
- * <TooltipTrigger asChild>
231
- * <Button variant="outline">Offset</Button>
232
- * </TooltipTrigger>
233
- * <TooltipContent sideOffset={8}>
234
- * <p>More distance from trigger</p>
235
- * </TooltipContent>
236
- * </Tooltip>
237
- * <Tooltip>
238
- * <TooltipTrigger asChild>
239
- * <Button variant="outline">Align offset</Button>
240
- * </TooltipTrigger>
241
- * <TooltipContent side="bottom" align="start" alignOffset={12}>
242
- * <p>Shifted on alignment axis</p>
243
- * </TooltipContent>
244
- * </Tooltip>
245
- * </div>
246
- *
247
- * ### Disabled
248
- *
249
- * <Tooltip>
250
- * <TooltipTrigger asChild>
251
- * <Button variant="outline" disabled>Disabled</Button>
252
- * </TooltipTrigger>
253
- * <TooltipContent>
254
- * <p>This feature is currently unavailable</p>
255
- * </TooltipContent>
256
- * </Tooltip>
257
- *
258
- * @api
259
- *
260
- * ### Events
261
- *
262
- * The tooltip emits custom events that you can listen to:
263
- *
264
- * | Event | Detail | Description |
265
- * |-------|--------|-------------|
266
- * | `tooltip:change` | `{ open: boolean, trigger: HTMLElement, content: HTMLElement, reason: string }` | Fired when visibility changes |
267
- *
268
- * ```astro nocollapse
269
- * <Tooltip id="my-tooltip">
270
- * <TooltipTrigger asChild>
271
- * <Button variant="outline">Hover me</Button>
272
- * </TooltipTrigger>
273
- * <TooltipContent>
274
- * <p>Tooltip content</p>
275
- * </TooltipContent>
276
- * </Tooltip>
277
- * ```
278
- *
279
- * ```js nocollapse
280
- * const tooltip = document.getElementById('my-tooltip');
281
- *
282
- * tooltip.addEventListener('tooltip:change', (e) => {
283
- * console.log('Is open:', e.detail.open);
284
- * console.log('Reason:', e.detail.reason);
285
- * });
286
- * ```
287
- *
288
- * ### Programmatic Control
289
- *
290
- * You can control the tooltip programmatically by dispatching a `tooltip:set` event:
291
- *
292
- * ```js nocollapse
293
- * const tooltip = document.getElementById('my-tooltip');
294
- *
295
- * // Show the tooltip
296
- * tooltip.dispatchEvent(new CustomEvent('tooltip:set', {
297
- * detail: { open: true }
298
- * }));
299
- *
300
- * // Hide the tooltip
301
- * tooltip.dispatchEvent(new CustomEvent('tooltip:set', {
302
- * detail: { open: false }
303
- * }));
304
- * ```
305
- *
306
- * The deprecated `{ value: boolean }` detail shape is still supported temporarily for compatibility, but new code should always use `{ open: boolean }`.
307
- *
308
- * ### Data Attributes
309
- *
310
- * The tooltip sets these data attributes that you can use for styling or querying state:
311
- *
312
- * | Attribute | Element | Description |
313
- * |-----------|---------|-------------|
314
- * | `data-state` | tooltip, tooltip-content | Legacy `"open"` / `"closed"` compatibility shim. Prefer `data-open` / `data-closed`. |
315
- * | `data-open` / `data-closed` | tooltip, tooltip-content, tooltip-positioner, tooltip-arrow | Present while open/closed |
316
- * | `data-starting-style` / `data-ending-style` | tooltip-content | Present while opening or closing |
317
- * | `data-instant` | tooltip, tooltip-content, tooltip-positioner, tooltip-arrow | Interaction reason: `"delay"`, `"focus"`, or `"dismiss"` |
318
- * | `data-side` | tooltip-content, tooltip-positioner, tooltip-arrow | Runtime side (`top`, `right`, `bottom`, `left`, `inline-start`, or `inline-end`) after collision handling |
319
- * | `data-align` | tooltip-content, tooltip-positioner, tooltip-arrow | Runtime alignment (`start`, `center`, or `end`) |
320
- * | `data-side-offset` | tooltip-content | Distance from trigger in pixels (default `4`) |
321
- * | `data-align-offset` | tooltip-content | Alignment-axis offset in pixels (default `0`) |
322
- */
323
-
324
- import { cn } from "@cl-light-ds/ui/lib/utils";
325
- import type { HTMLAttributes } from "astro/types";
326
-
327
- interface Props extends HTMLAttributes<"div"> {
328
- class?: string;
329
- delay?: number;
330
- skipDelayDuration?: number;
331
- }
332
-
333
- const {
334
- class: className = "",
335
- delay = 300,
336
- skipDelayDuration = 300,
337
- ...rest
338
- } = Astro.props as Props;
339
- ---
340
-
341
- <div
342
- {...rest}
343
- data-slot="tooltip"
344
- data-delay={delay}
345
- data-skip-delay-duration={skipDelayDuration}
346
- class={cn("", "inline-block", className)}
347
- >
348
- <slot />
349
- </div>
350
-
351
- <script>
352
- import { createTooltip } from "@data-slot/tooltip";
353
-
354
- document
355
- .querySelectorAll('[data-slot="tooltip"]')
356
- .forEach((el) => createTooltip(el));
357
- </script>
1
+ ---
2
+ /**
3
+ * @component Tooltip
4
+ * @title Tooltip
5
+ * @description A small popup that appears when hovering over or focusing on an element. Positioning is computed in JavaScript.
6
+ * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=5275-137
7
+ *
8
+ * @preview
9
+ *
10
+ * <Tooltip>
11
+ * <TooltipTrigger asChild>
12
+ * <Button variant="outline">Hover</Button>
13
+ * </TooltipTrigger>
14
+ * <TooltipContent>
15
+ * <p>Add to library</p>
16
+ * </TooltipContent>
17
+ * </Tooltip>
18
+ *
19
+ * @usage
20
+ *
21
+ * ```astro nocollapse
22
+ * ---
23
+ * import { Tooltip, TooltipTrigger, TooltipContent } from '@bejamas/ui/components/tooltip';
24
+ * import { Button } from '@bejamas/ui/components/button';
25
+ * ---
26
+ *
27
+ * <Tooltip>
28
+ * <TooltipTrigger asChild>
29
+ * <Button variant="outline">Hover</Button>
30
+ * </TooltipTrigger>
31
+ * <TooltipContent>
32
+ * <p>Add to library</p>
33
+ * </TooltipContent>
34
+ * </Tooltip>
35
+ * ```
36
+ *
37
+ * @examples
38
+ *
39
+ * ### Outline variant
40
+ *
41
+ * <Tooltip>
42
+ * <TooltipTrigger asChild>
43
+ * <Button variant="outline">Hover</Button>
44
+ * </TooltipTrigger>
45
+ * <TooltipContent variant="outline">
46
+ * <p>Tooltip label</p>
47
+ * </TooltipContent>
48
+ * </Tooltip>
49
+ *
50
+ * ### Large size (with supportive text)
51
+ *
52
+ * <Tooltip>
53
+ * <TooltipTrigger asChild>
54
+ * <Button variant="outline">Hover</Button>
55
+ * </TooltipTrigger>
56
+ * <TooltipContent variant="outline" size="lg">
57
+ * <div class="flex flex-col gap-1">
58
+ * <p class="font-medium">Tooltip label</p>
59
+ * <p class="opacity-70">Supportive text</p>
60
+ * </div>
61
+ * </TooltipContent>
62
+ * </Tooltip>
63
+ *
64
+ * ### With delay
65
+ *
66
+ * <Tooltip delay={1000}>
67
+ * <TooltipTrigger asChild>
68
+ * <Button variant="outline">Hover with delay</Button>
69
+ * </TooltipTrigger>
70
+ * <TooltipContent>
71
+ * <p>This tooltip appears after 1000ms</p>
72
+ * </TooltipContent>
73
+ * </Tooltip>
74
+ *
75
+ * ### Skip delay on subsequent tooltips
76
+ *
77
+ * When a tooltip is shown, hovering over other tooltip triggers will show their tooltips immediately without delay. Try hovering over the first button, then quickly move to the others.
78
+ *
79
+ * <div class="flex gap-2">
80
+ * <Tooltip delay={500}>
81
+ * <TooltipTrigger asChild>
82
+ * <Button variant="outline">Bold</Button>
83
+ * </TooltipTrigger>
84
+ * <TooltipContent>
85
+ * <p>Bold (Ctrl+B)</p>
86
+ * </TooltipContent>
87
+ * </Tooltip>
88
+ * <Tooltip delay={500}>
89
+ * <TooltipTrigger asChild>
90
+ * <Button variant="outline">Italic</Button>
91
+ * </TooltipTrigger>
92
+ * <TooltipContent>
93
+ * <p>Italic (Ctrl+I)</p>
94
+ * </TooltipContent>
95
+ * </Tooltip>
96
+ * <Tooltip delay={500}>
97
+ * <TooltipTrigger asChild>
98
+ * <Button variant="outline">Underline</Button>
99
+ * </TooltipTrigger>
100
+ * <TooltipContent>
101
+ * <p>Underline (Ctrl+U)</p>
102
+ * </TooltipContent>
103
+ * </Tooltip>
104
+ * </div>
105
+ *
106
+ * ### Different sides
107
+ *
108
+ * Use the `side` prop to control which side the tooltip appears on.
109
+ *
110
+ * <div class="grid gap-4 py-8">
111
+ * <div class="flex gap-4 items-center justify-center">
112
+ * <Tooltip>
113
+ * <TooltipTrigger asChild>
114
+ * <Button variant="outline">Left</Button>
115
+ * </TooltipTrigger>
116
+ * <TooltipContent side="left">
117
+ * <p>Tooltip on left</p>
118
+ * </TooltipContent>
119
+ * </Tooltip>
120
+ * <Tooltip>
121
+ * <TooltipTrigger asChild>
122
+ * <Button variant="outline">Top</Button>
123
+ * </TooltipTrigger>
124
+ * <TooltipContent side="top">
125
+ * <p>Tooltip on top</p>
126
+ * </TooltipContent>
127
+ * </Tooltip>
128
+ * <Tooltip>
129
+ * <TooltipTrigger asChild>
130
+ * <Button variant="outline">Bottom</Button>
131
+ * </TooltipTrigger>
132
+ * <TooltipContent side="bottom">
133
+ * <p>Tooltip on bottom</p>
134
+ * </TooltipContent>
135
+ * </Tooltip>
136
+ * <Tooltip>
137
+ * <TooltipTrigger asChild>
138
+ * <Button variant="outline">Right</Button>
139
+ * </TooltipTrigger>
140
+ * <TooltipContent side="right">
141
+ * <p>Tooltip on right</p>
142
+ * </TooltipContent>
143
+ * </Tooltip>
144
+ * </div>
145
+ * <div class="flex gap-4 items-center justify-center">
146
+ * <Tooltip>
147
+ * <TooltipTrigger asChild>
148
+ * <Button variant="outline">Inline Start</Button>
149
+ * </TooltipTrigger>
150
+ * <TooltipContent side="inline-start">
151
+ * <p>Tooltip on inline start</p>
152
+ * </TooltipContent>
153
+ * </Tooltip>
154
+ * <Tooltip>
155
+ * <TooltipTrigger asChild>
156
+ * <Button variant="outline">Inline End</Button>
157
+ * </TooltipTrigger>
158
+ * <TooltipContent side="inline-end">
159
+ * <p>Tooltip on inline end</p>
160
+ * </TooltipContent>
161
+ * </Tooltip>
162
+ * </div>
163
+ * </div>
164
+ *
165
+ * ### Alignment options
166
+ *
167
+ * Use the `align` prop to control how the tooltip aligns relative to the trigger.
168
+ *
169
+ * <div class="flex flex-col gap-4 items-center py-8">
170
+ * <div class="flex gap-4">
171
+ * <Tooltip>
172
+ * <TooltipTrigger asChild>
173
+ * <Button variant="outline">Top Start</Button>
174
+ * </TooltipTrigger>
175
+ * <TooltipContent side="top" align="start">
176
+ * <p>Aligned to start</p>
177
+ * </TooltipContent>
178
+ * </Tooltip>
179
+ * <Tooltip>
180
+ * <TooltipTrigger asChild>
181
+ * <Button variant="outline">Top Center</Button>
182
+ * </TooltipTrigger>
183
+ * <TooltipContent side="top" align="center">
184
+ * <p>Aligned to center</p>
185
+ * </TooltipContent>
186
+ * </Tooltip>
187
+ * <Tooltip>
188
+ * <TooltipTrigger asChild>
189
+ * <Button variant="outline">Top End</Button>
190
+ * </TooltipTrigger>
191
+ * <TooltipContent side="top" align="end">
192
+ * <p>Aligned to end</p>
193
+ * </TooltipContent>
194
+ * </Tooltip>
195
+ * </div>
196
+ * <div class="flex gap-4">
197
+ * <Tooltip>
198
+ * <TooltipTrigger asChild>
199
+ * <Button variant="outline">Bottom Start</Button>
200
+ * </TooltipTrigger>
201
+ * <TooltipContent side="bottom" align="start">
202
+ * <p>Aligned to start</p>
203
+ * </TooltipContent>
204
+ * </Tooltip>
205
+ * <Tooltip>
206
+ * <TooltipTrigger asChild>
207
+ * <Button variant="outline">Bottom Center</Button>
208
+ * </TooltipTrigger>
209
+ * <TooltipContent side="bottom" align="center">
210
+ * <p>Aligned to center</p>
211
+ * </TooltipContent>
212
+ * </Tooltip>
213
+ * <Tooltip>
214
+ * <TooltipTrigger asChild>
215
+ * <Button variant="outline">Bottom End</Button>
216
+ * </TooltipTrigger>
217
+ * <TooltipContent side="bottom" align="end">
218
+ * <p>Aligned to end</p>
219
+ * </TooltipContent>
220
+ * </Tooltip>
221
+ * </div>
222
+ * </div>
223
+ *
224
+ * ### Positioning Options
225
+ *
226
+ * Use `TooltipContent` props to configure placement:
227
+ *
228
+ * <div class="flex gap-3">
229
+ * <Tooltip>
230
+ * <TooltipTrigger asChild>
231
+ * <Button variant="outline">Offset</Button>
232
+ * </TooltipTrigger>
233
+ * <TooltipContent sideOffset={8}>
234
+ * <p>More distance from trigger</p>
235
+ * </TooltipContent>
236
+ * </Tooltip>
237
+ * <Tooltip>
238
+ * <TooltipTrigger asChild>
239
+ * <Button variant="outline">Align offset</Button>
240
+ * </TooltipTrigger>
241
+ * <TooltipContent side="bottom" align="start" alignOffset={12}>
242
+ * <p>Shifted on alignment axis</p>
243
+ * </TooltipContent>
244
+ * </Tooltip>
245
+ * </div>
246
+ *
247
+ * ### Disabled
248
+ *
249
+ * <Tooltip>
250
+ * <TooltipTrigger asChild>
251
+ * <Button variant="outline" disabled>Disabled</Button>
252
+ * </TooltipTrigger>
253
+ * <TooltipContent>
254
+ * <p>This feature is currently unavailable</p>
255
+ * </TooltipContent>
256
+ * </Tooltip>
257
+ *
258
+ * @api
259
+ *
260
+ * ### Events
261
+ *
262
+ * The tooltip emits custom events that you can listen to:
263
+ *
264
+ * | Event | Detail | Description |
265
+ * |-------|--------|-------------|
266
+ * | `tooltip:change` | `{ open: boolean, trigger: HTMLElement, content: HTMLElement, reason: string }` | Fired when visibility changes |
267
+ *
268
+ * ```astro nocollapse
269
+ * <Tooltip id="my-tooltip">
270
+ * <TooltipTrigger asChild>
271
+ * <Button variant="outline">Hover me</Button>
272
+ * </TooltipTrigger>
273
+ * <TooltipContent>
274
+ * <p>Tooltip content</p>
275
+ * </TooltipContent>
276
+ * </Tooltip>
277
+ * ```
278
+ *
279
+ * ```js nocollapse
280
+ * const tooltip = document.getElementById('my-tooltip');
281
+ *
282
+ * tooltip.addEventListener('tooltip:change', (e) => {
283
+ * console.log('Is open:', e.detail.open);
284
+ * console.log('Reason:', e.detail.reason);
285
+ * });
286
+ * ```
287
+ *
288
+ * ### Programmatic Control
289
+ *
290
+ * You can control the tooltip programmatically by dispatching a `tooltip:set` event:
291
+ *
292
+ * ```js nocollapse
293
+ * const tooltip = document.getElementById('my-tooltip');
294
+ *
295
+ * // Show the tooltip
296
+ * tooltip.dispatchEvent(new CustomEvent('tooltip:set', {
297
+ * detail: { open: true }
298
+ * }));
299
+ *
300
+ * // Hide the tooltip
301
+ * tooltip.dispatchEvent(new CustomEvent('tooltip:set', {
302
+ * detail: { open: false }
303
+ * }));
304
+ * ```
305
+ *
306
+ * The deprecated `{ value: boolean }` detail shape is still supported temporarily for compatibility, but new code should always use `{ open: boolean }`.
307
+ *
308
+ * ### Data Attributes
309
+ *
310
+ * The tooltip sets these data attributes that you can use for styling or querying state:
311
+ *
312
+ * | Attribute | Element | Description |
313
+ * |-----------|---------|-------------|
314
+ * | `data-state` | tooltip, tooltip-content | Legacy `"open"` / `"closed"` compatibility shim. Prefer `data-open` / `data-closed`. |
315
+ * | `data-open` / `data-closed` | tooltip, tooltip-content, tooltip-positioner, tooltip-arrow | Present while open/closed |
316
+ * | `data-starting-style` / `data-ending-style` | tooltip-content | Present while opening or closing |
317
+ * | `data-instant` | tooltip, tooltip-content, tooltip-positioner, tooltip-arrow | Interaction reason: `"delay"`, `"focus"`, or `"dismiss"` |
318
+ * | `data-side` | tooltip-content, tooltip-positioner, tooltip-arrow | Runtime side (`top`, `right`, `bottom`, `left`, `inline-start`, or `inline-end`) after collision handling |
319
+ * | `data-align` | tooltip-content, tooltip-positioner, tooltip-arrow | Runtime alignment (`start`, `center`, or `end`) |
320
+ * | `data-side-offset` | tooltip-content | Distance from trigger in pixels (default `4`) |
321
+ * | `data-align-offset` | tooltip-content | Alignment-axis offset in pixels (default `0`) |
322
+ */
323
+
324
+ import { cn } from "@cl-light-ds/ui/lib/utils";
325
+ import type { HTMLAttributes } from "astro/types";
326
+
327
+ interface Props extends HTMLAttributes<"div"> {
328
+ class?: string;
329
+ delay?: number;
330
+ skipDelayDuration?: number;
331
+ }
332
+
333
+ const {
334
+ class: className = "",
335
+ delay = 300,
336
+ skipDelayDuration = 300,
337
+ ...rest
338
+ } = Astro.props as Props;
339
+ ---
340
+
341
+ <div
342
+ {...rest}
343
+ data-slot="tooltip"
344
+ data-delay={delay}
345
+ data-skip-delay-duration={skipDelayDuration}
346
+ class={cn("", "inline-block", className)}
347
+ >
348
+ <slot />
349
+ </div>
350
+
351
+ <script>
352
+ import { createTooltip } from "@data-slot/tooltip";
353
+
354
+ document
355
+ .querySelectorAll('[data-slot="tooltip"]')
356
+ .forEach((el) => createTooltip(el));
357
+ </script>