@cl-light-ds/ui 0.1.0 → 0.2.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 (171) hide show
  1. package/README.md +45 -45
  2. package/package.json +1 -1
  3. package/src/components/accordion/Accordion.astro +248 -248
  4. package/src/components/accordion/AccordionContent.astro +26 -26
  5. package/src/components/accordion/AccordionItem.astro +36 -36
  6. package/src/components/accordion/AccordionTrigger.astro +118 -118
  7. package/src/components/alert/Alert.astro +167 -167
  8. package/src/components/alert/AlertDescription.astro +24 -24
  9. package/src/components/alert/AlertTitle.astro +24 -24
  10. package/src/components/avatar/Avatar.astro +197 -197
  11. package/src/components/avatar/AvatarBadge.astro +44 -44
  12. package/src/components/avatar/AvatarFallback.astro +26 -26
  13. package/src/components/avatar/AvatarGroup.astro +26 -26
  14. package/src/components/avatar/AvatarGroupCount.astro +30 -30
  15. package/src/components/avatar/AvatarImage.astro +46 -46
  16. package/src/components/badge/Badge.astro +167 -167
  17. package/src/components/breadcrumb/Breadcrumb.astro +76 -76
  18. package/src/components/breadcrumb/BreadcrumbItem.astro +32 -32
  19. package/src/components/breadcrumb/BreadcrumbList.astro +26 -26
  20. package/src/components/breadcrumb/BreadcrumbSeparator.astro +26 -26
  21. package/src/components/button/Button.astro +233 -233
  22. package/src/components/button-group/ButtonGroup.astro +130 -130
  23. package/src/components/button-group/ButtonGroupSeparator.astro +30 -30
  24. package/src/components/button-group/ButtonGroupText.astro +21 -21
  25. package/src/components/card/Card.astro +182 -182
  26. package/src/components/card/CardAction.astro +26 -26
  27. package/src/components/card/CardContent.astro +28 -28
  28. package/src/components/card/CardDescription.astro +28 -28
  29. package/src/components/card/CardFooter.astro +24 -24
  30. package/src/components/card/CardHeader.astro +30 -30
  31. package/src/components/card/CardMedia.astro +27 -27
  32. package/src/components/card/CardOverlay.astro +32 -32
  33. package/src/components/card/CardTitle.astro +21 -21
  34. package/src/components/carousel/Carousel.astro +106 -106
  35. package/src/components/carousel/CarouselSlide.astro +22 -22
  36. package/src/components/checkbox/Checkbox.astro +159 -159
  37. package/src/components/collapsible/Collapsible.astro +202 -202
  38. package/src/components/collapsible/CollapsibleContent.astro +36 -36
  39. package/src/components/collapsible/CollapsibleTrigger.astro +34 -34
  40. package/src/components/combobox/Combobox.astro +365 -365
  41. package/src/components/combobox/ComboboxContent.astro +37 -37
  42. package/src/components/combobox/ComboboxEmpty.astro +18 -18
  43. package/src/components/combobox/ComboboxGroup.astro +19 -19
  44. package/src/components/combobox/ComboboxInput.astro +74 -74
  45. package/src/components/combobox/ComboboxItem.astro +39 -39
  46. package/src/components/combobox/ComboboxLabel.astro +18 -18
  47. package/src/components/combobox/ComboboxList.astro +21 -21
  48. package/src/components/combobox/ComboboxSeparator.astro +17 -17
  49. package/src/components/combobox/ComboboxTrigger.astro +30 -30
  50. package/src/components/combobox/ComboboxValue.astro +22 -22
  51. package/src/components/date/Date.astro +137 -137
  52. package/src/components/dialog/Dialog.astro +196 -196
  53. package/src/components/dialog/DialogClose.astro +23 -23
  54. package/src/components/dialog/DialogContent.astro +42 -42
  55. package/src/components/dialog/DialogDescription.astro +18 -18
  56. package/src/components/dialog/DialogFooter.astro +18 -18
  57. package/src/components/dialog/DialogHeader.astro +18 -18
  58. package/src/components/dialog/DialogOverlay.astro +19 -19
  59. package/src/components/dialog/DialogTitle.astro +18 -18
  60. package/src/components/dialog/DialogTrigger.astro +37 -37
  61. package/src/components/dropdown-menu/DropdownMenu.astro +226 -226
  62. package/src/components/dropdown-menu/DropdownMenuCheckboxItem.astro +114 -114
  63. package/src/components/dropdown-menu/DropdownMenuContent.astro +42 -42
  64. package/src/components/dropdown-menu/DropdownMenuGroup.astro +19 -19
  65. package/src/components/dropdown-menu/DropdownMenuItem.astro +220 -220
  66. package/src/components/dropdown-menu/DropdownMenuLabel.astro +20 -20
  67. package/src/components/dropdown-menu/DropdownMenuRadioItem.astro +101 -101
  68. package/src/components/dropdown-menu/DropdownMenuSeparator.astro +18 -18
  69. package/src/components/dropdown-menu/DropdownMenuShortcut.astro +18 -18
  70. package/src/components/dropdown-menu/DropdownMenuTrigger.astro +49 -49
  71. package/src/components/field/Field.astro +664 -664
  72. package/src/components/field/FieldContent.astro +20 -20
  73. package/src/components/field/FieldDescription.astro +22 -22
  74. package/src/components/field/FieldError.astro +51 -51
  75. package/src/components/field/FieldGroup.astro +20 -20
  76. package/src/components/field/FieldLabel.astro +22 -22
  77. package/src/components/field/FieldLegend.astro +23 -23
  78. package/src/components/field/FieldSeparator.astro +30 -30
  79. package/src/components/field/FieldSet.astro +20 -20
  80. package/src/components/field/FieldTitle.astro +20 -20
  81. package/src/components/hover-card/HoverCard.astro +235 -235
  82. package/src/components/hover-card/HoverCardContent.astro +54 -54
  83. package/src/components/hover-card/HoverCardTrigger.astro +38 -38
  84. package/src/components/input/Input.astro +130 -130
  85. package/src/components/input-group/InputGroup.astro +135 -135
  86. package/src/components/input-group/InputGroupAddon.astro +49 -49
  87. package/src/components/input-group/InputGroupButton.astro +58 -58
  88. package/src/components/input-group/InputGroupInput.astro +18 -18
  89. package/src/components/input-group/InputGroupText.astro +21 -21
  90. package/src/components/input-group/InputGroupTextarea.astro +17 -17
  91. package/src/components/item/Item.astro +122 -122
  92. package/src/components/item/ItemActions.astro +21 -21
  93. package/src/components/item/ItemContent.astro +25 -25
  94. package/src/components/item/ItemDescription.astro +25 -25
  95. package/src/components/item/ItemFooter.astro +24 -24
  96. package/src/components/item/ItemGroup.astro +24 -24
  97. package/src/components/item/ItemHeader.astro +24 -24
  98. package/src/components/item/ItemMedia.astro +47 -47
  99. package/src/components/item/ItemSeparator.astro +21 -21
  100. package/src/components/item/ItemTitle.astro +25 -25
  101. package/src/components/kbd/Kbd.astro +145 -145
  102. package/src/components/kbd/KbdGroup.astro +55 -55
  103. package/src/components/label/Label.astro +97 -97
  104. package/src/components/link-group/LinkGroup.astro +67 -67
  105. package/src/components/link-group/LinkGroupItem.astro +32 -32
  106. package/src/components/link-group/LinkGroupList.astro +25 -25
  107. package/src/components/link-group/LinkGroupTitle.astro +22 -22
  108. package/src/components/marquee/Marquee.astro +119 -119
  109. package/src/components/native-select/NativeSelect.astro +125 -125
  110. package/src/components/native-select/NativeSelectOptGroup.astro +14 -14
  111. package/src/components/navigation-menu/NavigationMenu.astro +414 -414
  112. package/src/components/navigation-menu/NavigationMenuContent.astro +37 -37
  113. package/src/components/navigation-menu/NavigationMenuIndicator.astro +24 -24
  114. package/src/components/navigation-menu/NavigationMenuItem.astro +22 -22
  115. package/src/components/navigation-menu/NavigationMenuLink.astro +18 -18
  116. package/src/components/navigation-menu/NavigationMenuList.astro +21 -21
  117. package/src/components/navigation-menu/NavigationMenuPositioner.astro +44 -44
  118. package/src/components/navigation-menu/NavigationMenuTrigger.astro +30 -30
  119. package/src/components/navigation-menu/NavigationMenuViewport.astro +19 -19
  120. package/src/components/popover/CHANGELOG.md +17 -2
  121. package/src/components/popover/Popover.astro +211 -210
  122. package/src/components/popover/PopoverClose.astro +18 -18
  123. package/src/components/popover/PopoverContent.astro +50 -49
  124. package/src/components/popover/PopoverDescription.astro +18 -18
  125. package/src/components/popover/PopoverHeader.astro +18 -18
  126. package/src/components/popover/PopoverTitle.astro +18 -18
  127. package/src/components/popover/PopoverTrigger.astro +35 -29
  128. package/src/components/radio-group/CHANGELOG.md +23 -1
  129. package/src/components/radio-group/RadioGroup.astro +81 -81
  130. package/src/components/radio-group/RadioGroupItem.astro +51 -42
  131. package/src/components/select/Select.astro +373 -373
  132. package/src/components/select/SelectContent.astro +91 -91
  133. package/src/components/select/SelectGroup.astro +19 -19
  134. package/src/components/select/SelectItem.astro +48 -48
  135. package/src/components/select/SelectLabel.astro +18 -18
  136. package/src/components/select/SelectSeparator.astro +17 -17
  137. package/src/components/select/SelectTrigger.astro +34 -34
  138. package/src/components/select/SelectValue.astro +22 -22
  139. package/src/components/separator/Separator.astro +60 -60
  140. package/src/components/skeleton/Skeleton.astro +121 -121
  141. package/src/components/slider/Slider.astro +198 -198
  142. package/src/components/spinner/CHANGELOG.md +14 -1
  143. package/src/components/spinner/Spinner.astro +135 -134
  144. package/src/components/sticky-surface/StickySurface.astro +152 -152
  145. package/src/components/switch/CHANGELOG.md +20 -0
  146. package/src/components/switch/Switch.astro +106 -106
  147. package/src/components/table/CHANGELOG.md +21 -2
  148. package/src/components/table/Table.astro +251 -250
  149. package/src/components/table/TableBody.astro +18 -18
  150. package/src/components/table/TableCaption.astro +17 -17
  151. package/src/components/table/TableCell.astro +21 -21
  152. package/src/components/table/TableFooter.astro +21 -21
  153. package/src/components/table/TableHead.astro +21 -21
  154. package/src/components/table/TableHeader.astro +17 -17
  155. package/src/components/table/TableRow.astro +21 -21
  156. package/src/components/tabs/Tabs.astro +306 -306
  157. package/src/components/tabs/TabsContent.astro +47 -47
  158. package/src/components/tabs/TabsList.astro +69 -69
  159. package/src/components/tabs/TabsTrigger.astro +40 -40
  160. package/src/components/textarea/CHANGELOG.md +18 -1
  161. package/src/components/textarea/Textarea.astro +58 -36
  162. package/src/components/toggle/CHANGELOG.md +19 -1
  163. package/src/components/toggle/Toggle.astro +150 -138
  164. package/src/components/toggle-group/CHANGELOG.md +14 -1
  165. package/src/components/toggle-group/ToggleGroup.astro +236 -224
  166. package/src/components/toggle-group/ToggleGroupItem.astro +48 -48
  167. package/src/components/tooltip/CHANGELOG.md +19 -2
  168. package/src/components/tooltip/Tooltip.astro +357 -331
  169. package/src/components/tooltip/TooltipContent.astro +85 -60
  170. package/src/components/tooltip/TooltipTrigger.astro +34 -34
  171. package/src/lib/toggle-shared.ts +3 -2
@@ -1,210 +1,211 @@
1
- ---
2
- /**
3
- * @component Popover
4
- * @title Popover
5
- * @description A floating panel that appears on trigger click, useful for displaying rich content like forms or additional information.
6
- *
7
- * @preview
8
- * <Popover>
9
- * <PopoverTrigger variant="outline">Open popover</PopoverTrigger>
10
- * <PopoverContent>
11
- * <PopoverHeader>
12
- * <PopoverTitle>Dimensions</PopoverTitle>
13
- * <PopoverDescription>Set the dimensions for the layer.</PopoverDescription>
14
- * </PopoverHeader>
15
- * <div class="grid gap-2">
16
- * <div class="grid grid-cols-3 items-center gap-4">
17
- * <Label>Width</Label>
18
- * <Input class="col-span-2 h-8" value="100%" />
19
- * </div>
20
- * <div class="grid grid-cols-3 items-center gap-4">
21
- * <Label>Height</Label>
22
- * <Input class="col-span-2 h-8" value="25px" />
23
- * </div>
24
- * </div>
25
- * </PopoverContent>
26
- * </Popover>
27
- *
28
- * @usage
29
- *
30
- * ```astro nocollapse
31
- * ---
32
- * import { Popover, PopoverTrigger, PopoverContent, PopoverHeader, PopoverTitle, PopoverDescription } from '@bejamas/ui/components/popover';
33
- * ---
34
- *
35
- * <Popover>
36
- * <PopoverTrigger variant="outline">Open</PopoverTrigger>
37
- * <PopoverContent>
38
- * <PopoverHeader>
39
- * <PopoverTitle>Title</PopoverTitle>
40
- * <PopoverDescription>Description text.</PopoverDescription>
41
- * </PopoverHeader>
42
- * <p>Popover body content.</p>
43
- * </PopoverContent>
44
- * </Popover>
45
- * ```
46
- *
47
- * @api
48
- *
49
- * ### Events
50
- *
51
- * The popover emits custom events that you can listen to:
52
- *
53
- * | Event | Detail | Description |
54
- * |-------|--------|-------------|
55
- * | `popover:change` | `{ open: boolean }` | Fired when the popover opens or closes |
56
- *
57
- * ```astro nocollapse console
58
- * <Popover id="my-popover">
59
- * <PopoverTrigger variant="outline">Open</PopoverTrigger>
60
- * <PopoverContent>
61
- * <p>Content</p>
62
- * </PopoverContent>
63
- * </Popover>
64
- * ```
65
- *
66
- * ```js nocollapse
67
- * const popover = document.getElementById('my-popover');
68
- *
69
- * popover.addEventListener('popover:change', (e) => {
70
- * console.log('Is open:', e.detail.open);
71
- * });
72
- * ```
73
- *
74
- * ### Programmatic Control
75
- *
76
- * You can control the popover programmatically by dispatching a `popover:set` event:
77
- *
78
- * ```js nocollapse
79
- * const popover = document.getElementById('my-popover');
80
- *
81
- * // Open the popover
82
- * popover.dispatchEvent(new CustomEvent('popover:set', {
83
- * detail: { open: true }
84
- * }));
85
- *
86
- * // Close the popover
87
- * popover.dispatchEvent(new CustomEvent('popover:set', {
88
- * detail: { open: false }
89
- * }));
90
- * ```
91
- *
92
- * ### Data Attributes
93
- *
94
- * The popover sets these data attributes that you can use for styling or querying state:
95
- *
96
- * | Attribute | Element | Description |
97
- * |-----------|---------|-------------|
98
- * | `data-state` | popover, popover-content | Current state (`open` or `closed`) |
99
- * | `data-side` | popover, popover-content | Position relative to trigger (`top`, `bottom`, `left`, `right`) |
100
- * | `data-align` | popover, popover-content | Alignment (`start`, `center`, or `end`) |
101
- *
102
- * @examples
103
- *
104
- * ### Basic
105
- *
106
- * <Popover>
107
- * <PopoverTrigger variant="outline">Open popover</PopoverTrigger>
108
- * <PopoverContent>
109
- * <PopoverHeader>
110
- * <PopoverTitle>Popover Title</PopoverTitle>
111
- * <PopoverDescription>This is a simple popover.</PopoverDescription>
112
- * </PopoverHeader>
113
- * </PopoverContent>
114
- * </Popover>
115
- *
116
- * ### Side Variants
117
- *
118
- * <div class="flex gap-4 items-center justify-center py-8">
119
- * <Popover>
120
- * <PopoverTrigger variant="outline">Left</PopoverTrigger>
121
- * <PopoverContent side="left">
122
- * <p>Popover on the left</p>
123
- * </PopoverContent>
124
- * </Popover>
125
- * <Popover>
126
- * <PopoverTrigger variant="outline">Top</PopoverTrigger>
127
- * <PopoverContent side="top">
128
- * <p>Popover on top</p>
129
- * </PopoverContent>
130
- * </Popover>
131
- * <Popover>
132
- * <PopoverTrigger variant="outline">Bottom</PopoverTrigger>
133
- * <PopoverContent side="bottom">
134
- * <p>Popover on bottom</p>
135
- * </PopoverContent>
136
- * </Popover>
137
- * <Popover>
138
- * <PopoverTrigger variant="outline">Right</PopoverTrigger>
139
- * <PopoverContent side="right">
140
- * <p>Popover on the right</p>
141
- * </PopoverContent>
142
- * </Popover>
143
- * </div>
144
- *
145
- * ### Alignment Variants
146
- *
147
- * <div class="flex gap-8">
148
- * <Popover>
149
- * <PopoverTrigger variant="outline">Start</PopoverTrigger>
150
- * <PopoverContent side="bottom" align="start">
151
- * <p>Start-aligned content</p>
152
- * </PopoverContent>
153
- * </Popover>
154
- * <Popover>
155
- * <PopoverTrigger variant="outline">Center</PopoverTrigger>
156
- * <PopoverContent side="bottom" align="center">
157
- * <p>Center-aligned content</p>
158
- * </PopoverContent>
159
- * </Popover>
160
- * <Popover>
161
- * <PopoverTrigger variant="outline">End</PopoverTrigger>
162
- * <PopoverContent side="bottom" align="end">
163
- * <p>End-aligned content</p>
164
- * </PopoverContent>
165
- * </Popover>
166
- * </div>
167
- *
168
- * ### With Form
169
- *
170
- * <Popover>
171
- * <PopoverTrigger variant="outline">Open form</PopoverTrigger>
172
- * <PopoverContent>
173
- * <PopoverHeader>
174
- * <PopoverTitle>Dimensions</PopoverTitle>
175
- * <PopoverDescription>Set the dimensions for the layer.</PopoverDescription>
176
- * </PopoverHeader>
177
- * <div class="grid gap-2">
178
- * <div class="grid grid-cols-3 items-center gap-4">
179
- * <Label>Width</Label>
180
- * <Input class="col-span-2 h-8" value="100%" />
181
- * </div>
182
- * <div class="grid grid-cols-3 items-center gap-4">
183
- * <Label>Height</Label>
184
- * <Input class="col-span-2 h-8" value="25px" />
185
- * </div>
186
- * </div>
187
- * </PopoverContent>
188
- * </Popover>
189
- */
190
-
191
- import type { HTMLAttributes } from "astro/types";
192
- import { cn } from "@cl-light-ds/ui/lib/utils";
193
-
194
- interface Props extends HTMLAttributes<"div"> {
195
- class?: string;
196
- }
197
-
198
- const { class: className = "", ...rest } = Astro.props as Props;
199
- ---
200
-
201
- <div {...rest} data-slot="popover" class={cn("", "inline-block", className)}>
202
- <slot />
203
- </div>
204
-
205
- <script>
206
- import { createPopover } from "@data-slot/popover";
207
- document
208
- .querySelectorAll('[data-slot="popover"]')
209
- .forEach((el) => createPopover(el));
210
- </script>
1
+ ---
2
+ /**
3
+ * @component Popover
4
+ * @title Popover
5
+ * @description A floating panel that appears on trigger click, useful for displaying rich content like forms or additional information.
6
+ * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=5548-11795
7
+ *
8
+ * @preview
9
+ * <Popover>
10
+ * <PopoverTrigger variant="outline">Open popover</PopoverTrigger>
11
+ * <PopoverContent>
12
+ * <PopoverHeader>
13
+ * <PopoverTitle>Dimensions</PopoverTitle>
14
+ * <PopoverDescription>Set the dimensions for the layer.</PopoverDescription>
15
+ * </PopoverHeader>
16
+ * <div class="grid gap-2">
17
+ * <div class="grid grid-cols-3 items-center gap-4">
18
+ * <Label>Width</Label>
19
+ * <Input class="col-span-2 h-8" value="100%" />
20
+ * </div>
21
+ * <div class="grid grid-cols-3 items-center gap-4">
22
+ * <Label>Height</Label>
23
+ * <Input class="col-span-2 h-8" value="25px" />
24
+ * </div>
25
+ * </div>
26
+ * </PopoverContent>
27
+ * </Popover>
28
+ *
29
+ * @usage
30
+ *
31
+ * ```astro nocollapse
32
+ * ---
33
+ * import { Popover, PopoverTrigger, PopoverContent, PopoverHeader, PopoverTitle, PopoverDescription } from '@bejamas/ui/components/popover';
34
+ * ---
35
+ *
36
+ * <Popover>
37
+ * <PopoverTrigger variant="outline">Open</PopoverTrigger>
38
+ * <PopoverContent>
39
+ * <PopoverHeader>
40
+ * <PopoverTitle>Title</PopoverTitle>
41
+ * <PopoverDescription>Description text.</PopoverDescription>
42
+ * </PopoverHeader>
43
+ * <p>Popover body content.</p>
44
+ * </PopoverContent>
45
+ * </Popover>
46
+ * ```
47
+ *
48
+ * @api
49
+ *
50
+ * ### Events
51
+ *
52
+ * The popover emits custom events that you can listen to:
53
+ *
54
+ * | Event | Detail | Description |
55
+ * |-------|--------|-------------|
56
+ * | `popover:change` | `{ open: boolean }` | Fired when the popover opens or closes |
57
+ *
58
+ * ```astro nocollapse console
59
+ * <Popover id="my-popover">
60
+ * <PopoverTrigger variant="outline">Open</PopoverTrigger>
61
+ * <PopoverContent>
62
+ * <p>Content</p>
63
+ * </PopoverContent>
64
+ * </Popover>
65
+ * ```
66
+ *
67
+ * ```js nocollapse
68
+ * const popover = document.getElementById('my-popover');
69
+ *
70
+ * popover.addEventListener('popover:change', (e) => {
71
+ * console.log('Is open:', e.detail.open);
72
+ * });
73
+ * ```
74
+ *
75
+ * ### Programmatic Control
76
+ *
77
+ * You can control the popover programmatically by dispatching a `popover:set` event:
78
+ *
79
+ * ```js nocollapse
80
+ * const popover = document.getElementById('my-popover');
81
+ *
82
+ * // Open the popover
83
+ * popover.dispatchEvent(new CustomEvent('popover:set', {
84
+ * detail: { open: true }
85
+ * }));
86
+ *
87
+ * // Close the popover
88
+ * popover.dispatchEvent(new CustomEvent('popover:set', {
89
+ * detail: { open: false }
90
+ * }));
91
+ * ```
92
+ *
93
+ * ### Data Attributes
94
+ *
95
+ * The popover sets these data attributes that you can use for styling or querying state:
96
+ *
97
+ * | Attribute | Element | Description |
98
+ * |-----------|---------|-------------|
99
+ * | `data-state` | popover, popover-content | Current state (`open` or `closed`) |
100
+ * | `data-side` | popover, popover-content | Position relative to trigger (`top`, `bottom`, `left`, `right`) |
101
+ * | `data-align` | popover, popover-content | Alignment (`start`, `center`, or `end`) |
102
+ *
103
+ * @examples
104
+ *
105
+ * ### Basic
106
+ *
107
+ * <Popover>
108
+ * <PopoverTrigger variant="outline">Open popover</PopoverTrigger>
109
+ * <PopoverContent>
110
+ * <PopoverHeader>
111
+ * <PopoverTitle>Popover Title</PopoverTitle>
112
+ * <PopoverDescription>This is a simple popover.</PopoverDescription>
113
+ * </PopoverHeader>
114
+ * </PopoverContent>
115
+ * </Popover>
116
+ *
117
+ * ### Side Variants
118
+ *
119
+ * <div class="flex gap-4 items-center justify-center py-8">
120
+ * <Popover>
121
+ * <PopoverTrigger variant="outline">Left</PopoverTrigger>
122
+ * <PopoverContent side="left">
123
+ * <p>Popover on the left</p>
124
+ * </PopoverContent>
125
+ * </Popover>
126
+ * <Popover>
127
+ * <PopoverTrigger variant="outline">Top</PopoverTrigger>
128
+ * <PopoverContent side="top">
129
+ * <p>Popover on top</p>
130
+ * </PopoverContent>
131
+ * </Popover>
132
+ * <Popover>
133
+ * <PopoverTrigger variant="outline">Bottom</PopoverTrigger>
134
+ * <PopoverContent side="bottom">
135
+ * <p>Popover on bottom</p>
136
+ * </PopoverContent>
137
+ * </Popover>
138
+ * <Popover>
139
+ * <PopoverTrigger variant="outline">Right</PopoverTrigger>
140
+ * <PopoverContent side="right">
141
+ * <p>Popover on the right</p>
142
+ * </PopoverContent>
143
+ * </Popover>
144
+ * </div>
145
+ *
146
+ * ### Alignment Variants
147
+ *
148
+ * <div class="flex gap-8">
149
+ * <Popover>
150
+ * <PopoverTrigger variant="outline">Start</PopoverTrigger>
151
+ * <PopoverContent side="bottom" align="start">
152
+ * <p>Start-aligned content</p>
153
+ * </PopoverContent>
154
+ * </Popover>
155
+ * <Popover>
156
+ * <PopoverTrigger variant="outline">Center</PopoverTrigger>
157
+ * <PopoverContent side="bottom" align="center">
158
+ * <p>Center-aligned content</p>
159
+ * </PopoverContent>
160
+ * </Popover>
161
+ * <Popover>
162
+ * <PopoverTrigger variant="outline">End</PopoverTrigger>
163
+ * <PopoverContent side="bottom" align="end">
164
+ * <p>End-aligned content</p>
165
+ * </PopoverContent>
166
+ * </Popover>
167
+ * </div>
168
+ *
169
+ * ### With Form
170
+ *
171
+ * <Popover>
172
+ * <PopoverTrigger variant="outline">Open form</PopoverTrigger>
173
+ * <PopoverContent>
174
+ * <PopoverHeader>
175
+ * <PopoverTitle>Dimensions</PopoverTitle>
176
+ * <PopoverDescription>Set the dimensions for the layer.</PopoverDescription>
177
+ * </PopoverHeader>
178
+ * <div class="grid gap-2">
179
+ * <div class="grid grid-cols-3 items-center gap-4">
180
+ * <Label>Width</Label>
181
+ * <Input class="col-span-2 h-8" value="100%" />
182
+ * </div>
183
+ * <div class="grid grid-cols-3 items-center gap-4">
184
+ * <Label>Height</Label>
185
+ * <Input class="col-span-2 h-8" value="25px" />
186
+ * </div>
187
+ * </div>
188
+ * </PopoverContent>
189
+ * </Popover>
190
+ */
191
+
192
+ import type { HTMLAttributes } from "astro/types";
193
+ import { cn } from "@cl-light-ds/ui/lib/utils";
194
+
195
+ interface Props extends HTMLAttributes<"div"> {
196
+ class?: string;
197
+ }
198
+
199
+ const { class: className = "", ...rest } = Astro.props as Props;
200
+ ---
201
+
202
+ <div {...rest} data-slot="popover" class={cn("", "inline-block", className)}>
203
+ <slot />
204
+ </div>
205
+
206
+ <script>
207
+ import { createPopover } from "@data-slot/popover";
208
+ document
209
+ .querySelectorAll('[data-slot="popover"]')
210
+ .forEach((el) => createPopover(el));
211
+ </script>
@@ -1,18 +1,18 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
-
5
- interface Props extends HTMLAttributes<"button"> {
6
- class?: string;
7
- }
8
-
9
- const { class: className = "", ...rest } = Astro.props as Props;
10
- ---
11
-
12
- <button
13
- {...rest}
14
- data-slot="popover-close"
15
- class={cn("", className)}
16
- >
17
- <slot />
18
- </button>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+
5
+ interface Props extends HTMLAttributes<"button"> {
6
+ class?: string;
7
+ }
8
+
9
+ const { class: className = "", ...rest } = Astro.props as Props;
10
+ ---
11
+
12
+ <button
13
+ {...rest}
14
+ data-slot="popover-close"
15
+ class={cn("", className)}
16
+ >
17
+ <slot />
18
+ </button>
@@ -1,49 +1,50 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
- import { cva } from "class-variance-authority";
5
-
6
- interface Props extends HTMLAttributes<"div"> {
7
- side?: "top" | "bottom" | "left" | "right";
8
- align?: "start" | "center" | "end";
9
- alignOffset?: number;
10
- sideOffset?: number;
11
- class?: string;
12
- }
13
-
14
- const {
15
- side = "bottom",
16
- align = "center",
17
- sideOffset = 6,
18
- alignOffset = 0,
19
- class: className = "",
20
- ...rest
21
- } = Astro.props as Props;
22
-
23
- const contentVariants = cva([
24
- "z-50 duration-150 ease transition-discrete outline-hidden flex flex-col",
25
- "data-[state=open]:animate-in data-[state=closed]:animate-out",
26
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
27
- "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
28
- "data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2",
29
- "origin-(--transform-origin) [--tw-animation-fill-mode:both]",
30
- ]);
31
- ---
32
-
33
- <div
34
- {...rest}
35
- hidden
36
- data-slot="popover-content"
37
- data-align={align}
38
- data-align-offset={alignOffset}
39
- data-side={side}
40
- data-side-offset={sideOffset}
41
- style={`--side-offset: ${sideOffset}px`}
42
- class={cn(
43
- "bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-4 rounded-md p-4 text-sm shadow-md ring-1 duration-100 rounded-lg data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2",
44
- contentVariants(),
45
- className,
46
- )}
47
- >
48
- <slot />
49
- </div>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+ import { cva } from "class-variance-authority";
5
+
6
+ interface Props extends HTMLAttributes<"div"> {
7
+ side?: "top" | "bottom" | "left" | "right";
8
+ align?: "start" | "center" | "end";
9
+ alignOffset?: number;
10
+ sideOffset?: number;
11
+ class?: string;
12
+ }
13
+
14
+ const {
15
+ side = "bottom",
16
+ align = "center",
17
+ sideOffset = 6,
18
+ alignOffset = 0,
19
+ class: className = "",
20
+ ...rest
21
+ } = Astro.props as Props;
22
+
23
+ const contentVariants = cva([
24
+ // visibility
25
+ "z-50 duration-150 ease transition-discrete outline-hidden flex flex-col",
26
+ // animations
27
+ "data-[state=open]:animate-in data-[state=closed]:animate-out",
28
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
29
+ "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
30
+ "data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2",
31
+ // styles
32
+ "bg-popover text-popover-foreground gap-4 rounded-lg border border-border p-4 text-sm shadow-lg",
33
+ // origin from positioner
34
+ "origin-(--transform-origin) [--tw-animation-fill-mode:both]",
35
+ ]);
36
+ ---
37
+
38
+ <div
39
+ {...rest}
40
+ hidden
41
+ data-slot="popover-content"
42
+ data-align={align}
43
+ data-align-offset={alignOffset}
44
+ data-side={side}
45
+ data-side-offset={sideOffset}
46
+ style={`--side-offset: ${sideOffset}px`}
47
+ class={cn(contentVariants(), className)}
48
+ >
49
+ <slot />
50
+ </div>
@@ -1,18 +1,18 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
-
5
- interface Props extends HTMLAttributes<"p"> {
6
- class?: string;
7
- }
8
-
9
- const { class: className = "", ...rest } = Astro.props as Props;
10
- ---
11
-
12
- <p
13
- {...rest}
14
- data-slot="popover-description"
15
- class={cn("text-muted-foreground", className)}
16
- >
17
- <slot />
18
- </p>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+
5
+ interface Props extends HTMLAttributes<"p"> {
6
+ class?: string;
7
+ }
8
+
9
+ const { class: className = "", ...rest } = Astro.props as Props;
10
+ ---
11
+
12
+ <p
13
+ {...rest}
14
+ data-slot="popover-description"
15
+ class={cn("text-muted-foreground", className)}
16
+ >
17
+ <slot />
18
+ </p>
@@ -1,18 +1,18 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cn } from "@cl-light-ds/ui/lib/utils";
4
-
5
- interface Props extends HTMLAttributes<"div"> {
6
- class?: string;
7
- }
8
-
9
- const { class: className = "", ...rest } = Astro.props as Props;
10
- ---
11
-
12
- <div
13
- {...rest}
14
- data-slot="popover-header"
15
- class={cn("flex flex-col gap-1 text-sm", className)}
16
- >
17
- <slot />
18
- </div>
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cn } from "@cl-light-ds/ui/lib/utils";
4
+
5
+ interface Props extends HTMLAttributes<"div"> {
6
+ class?: string;
7
+ }
8
+
9
+ const { class: className = "", ...rest } = Astro.props as Props;
10
+ ---
11
+
12
+ <div
13
+ {...rest}
14
+ data-slot="popover-header"
15
+ class={cn("flex flex-col gap-0.5 text-sm", className)}
16
+ >
17
+ <slot />
18
+ </div>