@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.
- package/README.md +45 -45
- package/package.json +1 -1
- package/src/components/accordion/Accordion.astro +248 -248
- package/src/components/accordion/AccordionContent.astro +26 -26
- package/src/components/accordion/AccordionItem.astro +36 -36
- package/src/components/accordion/AccordionTrigger.astro +118 -118
- package/src/components/alert/Alert.astro +167 -167
- package/src/components/alert/AlertDescription.astro +24 -24
- package/src/components/alert/AlertTitle.astro +24 -24
- package/src/components/avatar/Avatar.astro +197 -197
- package/src/components/avatar/AvatarBadge.astro +44 -44
- package/src/components/avatar/AvatarFallback.astro +26 -26
- package/src/components/avatar/AvatarGroup.astro +26 -26
- package/src/components/avatar/AvatarGroupCount.astro +30 -30
- package/src/components/avatar/AvatarImage.astro +46 -46
- package/src/components/badge/Badge.astro +167 -167
- package/src/components/breadcrumb/Breadcrumb.astro +76 -76
- package/src/components/breadcrumb/BreadcrumbItem.astro +32 -32
- package/src/components/breadcrumb/BreadcrumbList.astro +26 -26
- package/src/components/breadcrumb/BreadcrumbSeparator.astro +26 -26
- package/src/components/button/Button.astro +233 -233
- package/src/components/button-group/ButtonGroup.astro +130 -130
- package/src/components/button-group/ButtonGroupSeparator.astro +30 -30
- package/src/components/button-group/ButtonGroupText.astro +21 -21
- package/src/components/card/Card.astro +182 -182
- package/src/components/card/CardAction.astro +26 -26
- package/src/components/card/CardContent.astro +28 -28
- package/src/components/card/CardDescription.astro +28 -28
- package/src/components/card/CardFooter.astro +24 -24
- package/src/components/card/CardHeader.astro +30 -30
- package/src/components/card/CardMedia.astro +27 -27
- package/src/components/card/CardOverlay.astro +32 -32
- package/src/components/card/CardTitle.astro +21 -21
- package/src/components/carousel/Carousel.astro +106 -106
- package/src/components/carousel/CarouselSlide.astro +22 -22
- package/src/components/checkbox/Checkbox.astro +159 -159
- package/src/components/collapsible/Collapsible.astro +202 -202
- package/src/components/collapsible/CollapsibleContent.astro +36 -36
- package/src/components/collapsible/CollapsibleTrigger.astro +34 -34
- package/src/components/combobox/Combobox.astro +365 -365
- package/src/components/combobox/ComboboxContent.astro +37 -37
- package/src/components/combobox/ComboboxEmpty.astro +18 -18
- package/src/components/combobox/ComboboxGroup.astro +19 -19
- package/src/components/combobox/ComboboxInput.astro +74 -74
- package/src/components/combobox/ComboboxItem.astro +39 -39
- package/src/components/combobox/ComboboxLabel.astro +18 -18
- package/src/components/combobox/ComboboxList.astro +21 -21
- package/src/components/combobox/ComboboxSeparator.astro +17 -17
- package/src/components/combobox/ComboboxTrigger.astro +30 -30
- package/src/components/combobox/ComboboxValue.astro +22 -22
- package/src/components/date/Date.astro +137 -137
- package/src/components/dialog/Dialog.astro +196 -196
- package/src/components/dialog/DialogClose.astro +23 -23
- package/src/components/dialog/DialogContent.astro +42 -42
- package/src/components/dialog/DialogDescription.astro +18 -18
- package/src/components/dialog/DialogFooter.astro +18 -18
- package/src/components/dialog/DialogHeader.astro +18 -18
- package/src/components/dialog/DialogOverlay.astro +19 -19
- package/src/components/dialog/DialogTitle.astro +18 -18
- package/src/components/dialog/DialogTrigger.astro +37 -37
- package/src/components/dropdown-menu/DropdownMenu.astro +226 -226
- package/src/components/dropdown-menu/DropdownMenuCheckboxItem.astro +114 -114
- package/src/components/dropdown-menu/DropdownMenuContent.astro +42 -42
- package/src/components/dropdown-menu/DropdownMenuGroup.astro +19 -19
- package/src/components/dropdown-menu/DropdownMenuItem.astro +220 -220
- package/src/components/dropdown-menu/DropdownMenuLabel.astro +20 -20
- package/src/components/dropdown-menu/DropdownMenuRadioItem.astro +101 -101
- package/src/components/dropdown-menu/DropdownMenuSeparator.astro +18 -18
- package/src/components/dropdown-menu/DropdownMenuShortcut.astro +18 -18
- package/src/components/dropdown-menu/DropdownMenuTrigger.astro +49 -49
- package/src/components/field/Field.astro +664 -664
- package/src/components/field/FieldContent.astro +20 -20
- package/src/components/field/FieldDescription.astro +22 -22
- package/src/components/field/FieldError.astro +51 -51
- package/src/components/field/FieldGroup.astro +20 -20
- package/src/components/field/FieldLabel.astro +22 -22
- package/src/components/field/FieldLegend.astro +23 -23
- package/src/components/field/FieldSeparator.astro +30 -30
- package/src/components/field/FieldSet.astro +20 -20
- package/src/components/field/FieldTitle.astro +20 -20
- package/src/components/hover-card/HoverCard.astro +235 -235
- package/src/components/hover-card/HoverCardContent.astro +54 -54
- package/src/components/hover-card/HoverCardTrigger.astro +38 -38
- package/src/components/input/Input.astro +130 -130
- package/src/components/input-group/InputGroup.astro +135 -135
- package/src/components/input-group/InputGroupAddon.astro +49 -49
- package/src/components/input-group/InputGroupButton.astro +58 -58
- package/src/components/input-group/InputGroupInput.astro +18 -18
- package/src/components/input-group/InputGroupText.astro +21 -21
- package/src/components/input-group/InputGroupTextarea.astro +17 -17
- package/src/components/item/Item.astro +122 -122
- package/src/components/item/ItemActions.astro +21 -21
- package/src/components/item/ItemContent.astro +25 -25
- package/src/components/item/ItemDescription.astro +25 -25
- package/src/components/item/ItemFooter.astro +24 -24
- package/src/components/item/ItemGroup.astro +24 -24
- package/src/components/item/ItemHeader.astro +24 -24
- package/src/components/item/ItemMedia.astro +47 -47
- package/src/components/item/ItemSeparator.astro +21 -21
- package/src/components/item/ItemTitle.astro +25 -25
- package/src/components/kbd/Kbd.astro +145 -145
- package/src/components/kbd/KbdGroup.astro +55 -55
- package/src/components/label/Label.astro +97 -97
- package/src/components/link-group/LinkGroup.astro +67 -67
- package/src/components/link-group/LinkGroupItem.astro +32 -32
- package/src/components/link-group/LinkGroupList.astro +25 -25
- package/src/components/link-group/LinkGroupTitle.astro +22 -22
- package/src/components/marquee/Marquee.astro +119 -119
- package/src/components/native-select/NativeSelect.astro +125 -125
- package/src/components/native-select/NativeSelectOptGroup.astro +14 -14
- package/src/components/navigation-menu/NavigationMenu.astro +414 -414
- package/src/components/navigation-menu/NavigationMenuContent.astro +37 -37
- package/src/components/navigation-menu/NavigationMenuIndicator.astro +24 -24
- package/src/components/navigation-menu/NavigationMenuItem.astro +22 -22
- package/src/components/navigation-menu/NavigationMenuLink.astro +18 -18
- package/src/components/navigation-menu/NavigationMenuList.astro +21 -21
- package/src/components/navigation-menu/NavigationMenuPositioner.astro +44 -44
- package/src/components/navigation-menu/NavigationMenuTrigger.astro +30 -30
- package/src/components/navigation-menu/NavigationMenuViewport.astro +19 -19
- package/src/components/popover/CHANGELOG.md +17 -2
- package/src/components/popover/Popover.astro +211 -210
- package/src/components/popover/PopoverClose.astro +18 -18
- package/src/components/popover/PopoverContent.astro +50 -49
- package/src/components/popover/PopoverDescription.astro +18 -18
- package/src/components/popover/PopoverHeader.astro +18 -18
- package/src/components/popover/PopoverTitle.astro +18 -18
- package/src/components/popover/PopoverTrigger.astro +35 -29
- package/src/components/radio-group/CHANGELOG.md +23 -1
- package/src/components/radio-group/RadioGroup.astro +81 -81
- package/src/components/radio-group/RadioGroupItem.astro +51 -42
- package/src/components/select/Select.astro +373 -373
- package/src/components/select/SelectContent.astro +91 -91
- package/src/components/select/SelectGroup.astro +19 -19
- package/src/components/select/SelectItem.astro +48 -48
- package/src/components/select/SelectLabel.astro +18 -18
- package/src/components/select/SelectSeparator.astro +17 -17
- package/src/components/select/SelectTrigger.astro +34 -34
- package/src/components/select/SelectValue.astro +22 -22
- package/src/components/separator/Separator.astro +60 -60
- package/src/components/skeleton/Skeleton.astro +121 -121
- package/src/components/slider/Slider.astro +198 -198
- package/src/components/spinner/CHANGELOG.md +14 -1
- package/src/components/spinner/Spinner.astro +135 -134
- package/src/components/sticky-surface/StickySurface.astro +152 -152
- package/src/components/switch/CHANGELOG.md +20 -0
- package/src/components/switch/Switch.astro +106 -106
- package/src/components/table/CHANGELOG.md +21 -2
- package/src/components/table/Table.astro +251 -250
- package/src/components/table/TableBody.astro +18 -18
- package/src/components/table/TableCaption.astro +17 -17
- package/src/components/table/TableCell.astro +21 -21
- package/src/components/table/TableFooter.astro +21 -21
- package/src/components/table/TableHead.astro +21 -21
- package/src/components/table/TableHeader.astro +17 -17
- package/src/components/table/TableRow.astro +21 -21
- package/src/components/tabs/Tabs.astro +306 -306
- package/src/components/tabs/TabsContent.astro +47 -47
- package/src/components/tabs/TabsList.astro +69 -69
- package/src/components/tabs/TabsTrigger.astro +40 -40
- package/src/components/textarea/CHANGELOG.md +18 -1
- package/src/components/textarea/Textarea.astro +58 -36
- package/src/components/toggle/CHANGELOG.md +19 -1
- package/src/components/toggle/Toggle.astro +150 -138
- package/src/components/toggle-group/CHANGELOG.md +14 -1
- package/src/components/toggle-group/ToggleGroup.astro +236 -224
- package/src/components/toggle-group/ToggleGroupItem.astro +48 -48
- package/src/components/tooltip/CHANGELOG.md +19 -2
- package/src/components/tooltip/Tooltip.astro +357 -331
- package/src/components/tooltip/TooltipContent.astro +85 -60
- package/src/components/tooltip/TooltipTrigger.astro +34 -34
- package/src/lib/toggle-shared.ts +3 -2
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
---
|
|
2
|
-
/**
|
|
3
|
-
* @component Marquee
|
|
4
|
-
* @title Marquee
|
|
5
|
-
* @description A horizontally auto-scrolling container for repeating content like logos or messages.
|
|
6
|
-
* @status stable
|
|
7
|
-
* @figmaUrl https://www.figma.com/design/koxai7zw5vIuBzuVxe5T2l/bejamas-ui?node-id=2511-7717&t=YFStJ3V8fXEO8QD8-4
|
|
8
|
-
*
|
|
9
|
-
* @preview
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* <Marquee class="dark:invert">
|
|
13
|
-
* <img src="/demo/logo/sonos.svg" alt="Netflix" class="h-5 self-center mx-10"/>
|
|
14
|
-
* <img src="/demo/logo/uber.svg" alt="Uber" class="h-5 self-center mx-10"/>
|
|
15
|
-
* <img src="/demo/logo/visa.svg" alt="Visa" class="h-5 self-center mx-10"/>
|
|
16
|
-
* <img src="/demo/logo/coca-cola.svg" alt="Coca-Cola" class="h-6 self-center mx-10"/>
|
|
17
|
-
* <img src="/demo/logo/nike.svg" alt="Nike" class="h-5 self-center mx-10"/>
|
|
18
|
-
* </Marquee>
|
|
19
|
-
*
|
|
20
|
-
* @usage
|
|
21
|
-
*
|
|
22
|
-
* ```astro nocollapse
|
|
23
|
-
* ---
|
|
24
|
-
* import { Marquee } from '@bejamas/ui/components/marquee';
|
|
25
|
-
* ---
|
|
26
|
-
* <Marquee>
|
|
27
|
-
* <!-- Your content here -->
|
|
28
|
-
* </Marquee>
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* @examples
|
|
32
|
-
*
|
|
33
|
-
* ### Direction
|
|
34
|
-
*
|
|
35
|
-
* <div class="flex gap-6 h-60">
|
|
36
|
-
* <Marquee class="[&_.marquee-content]:space-y-8 space-y-8" direction="top">
|
|
37
|
-
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/sonos.svg" alt="Sonos" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
38
|
-
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/uber.svg" alt="Uber" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
39
|
-
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/visa.svg" alt="Visa" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
40
|
-
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/coca-cola.svg" alt="Coca-Cola" class="h-6 self-center mx-10 dark:invert"/></div>
|
|
41
|
-
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/nike.svg" alt="Nike" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
42
|
-
* </Marquee>
|
|
43
|
-
* <Marquee class="[&_.marquee-content]:space-y-8 space-y-8" direction="bottom">
|
|
44
|
-
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/sonos.svg" alt="Sonos" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
45
|
-
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/uber.svg" alt="Uber" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
46
|
-
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/visa.svg" alt="Visa" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
47
|
-
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/coca-cola.svg" alt="Coca-Cola" class="h-6 self-center mx-10 dark:invert"/></div>
|
|
48
|
-
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/nike.svg" alt="Nike" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
49
|
-
* </Marquee>
|
|
50
|
-
* </div>
|
|
51
|
-
*/
|
|
52
|
-
|
|
53
|
-
import { cva } from "class-variance-authority";
|
|
54
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
55
|
-
|
|
56
|
-
interface Props {
|
|
57
|
-
direction?: "left" | "right" | "top" | "bottom";
|
|
58
|
-
time?: number | string;
|
|
59
|
-
variant?: "gradient" | "solid";
|
|
60
|
-
class?: string;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const {
|
|
64
|
-
class: className = "",
|
|
65
|
-
direction = "left",
|
|
66
|
-
time = 30,
|
|
67
|
-
variant = "gradient",
|
|
68
|
-
...props
|
|
69
|
-
} = Astro.props as Props;
|
|
70
|
-
|
|
71
|
-
const marqueeVariants = cva("relative w-full", {
|
|
72
|
-
variants: {
|
|
73
|
-
variant: {
|
|
74
|
-
gradient:
|
|
75
|
-
"[mask-image:linear-gradient(to_right,transparent,black_10%,black_90%,transparent)] [-webkit-mask-image:linear-gradient(to_right,transparent,black_10%,black_90%,transparent)] [&[data-direction=top]]:[mask-image:linear-gradient(to_bottom,transparent,black_10%,black_90%,transparent)] [&[data-direction=top]]:[-webkit-mask-image:linear-gradient(to_bottom,transparent,black_10%,black_90%,transparent)] [&[data-direction=bottom]]:[mask-image:linear-gradient(to_top,transparent,black_10%,black_90%,transparent)] [&[data-direction=bottom]]:[-webkit-mask-image:linear-gradient(to_top,transparent,black_10%,black_90%,transparent)]",
|
|
76
|
-
solid: "",
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
defaultVariants: {
|
|
80
|
-
variant: "gradient",
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
<div
|
|
86
|
-
data-marquee
|
|
87
|
-
data-direction={direction}
|
|
88
|
-
class={cn(
|
|
89
|
-
"",
|
|
90
|
-
// container utilities
|
|
91
|
-
"group flex overflow-hidden w-full [&[data-direction=top]]:flex-col [&[data-direction=bottom]]:flex-col",
|
|
92
|
-
marqueeVariants({ variant }),
|
|
93
|
-
className,
|
|
94
|
-
)}
|
|
95
|
-
style={` --duration:${typeof time === "number" ? `${time}s` : time};`}
|
|
96
|
-
{...props}
|
|
97
|
-
>
|
|
98
|
-
<div
|
|
99
|
-
class={cn(
|
|
100
|
-
"",
|
|
101
|
-
"marquee-content shrink-0 flex justify-around min-w-full will-change-transform whitespace-nowrap [animation:marquee-x_var(--duration,_20s)_linear_infinite] motion-reduce:[animation-play-state:paused] group-data-[direction=right]:[animation-direction:reverse] group-data-[direction=top]:[animation:marquee-y_var(--duration,_20s)_linear_infinite] group-data-[direction=bottom]:[animation:marquee-y_var(--duration,_20s)_linear_infinite] [&[data-direction=top]]:min-h-full [&[data-direction=bottom]]:min-h-full [&[data-direction=top]]:flex-col [&[data-direction=bottom]]:flex-col group-data-[direction=bottom]:[animation-direction:reverse]",
|
|
102
|
-
direction === "top" && "flex-col",
|
|
103
|
-
direction === "bottom" && "flex-col",
|
|
104
|
-
)}
|
|
105
|
-
>
|
|
106
|
-
<slot />
|
|
107
|
-
</div>
|
|
108
|
-
<div
|
|
109
|
-
class={cn(
|
|
110
|
-
"",
|
|
111
|
-
"marquee-content shrink-0 flex justify-around min-w-full will-change-transform whitespace-nowrap [animation:marquee-x_var(--duration,_20s)_linear_infinite] motion-reduce:[animation-play-state:paused] group-data-[direction=right]:[animation-direction:reverse] group-data-[direction=top]:[animation:marquee-y_var(--duration,_20s)_linear_infinite] group-data-[direction=bottom]:[animation:marquee-y_var(--duration,_20s)_linear_infinite] [&[data-direction=top]]:min-h-full [&[data-direction=bottom]]:min-h-full [&[data-direction=top]]:flex-col [&[data-direction=bottom]]:flex-col group-data-[direction=bottom]:[animation-direction:reverse]",
|
|
112
|
-
direction === "top" && "flex-col",
|
|
113
|
-
direction === "bottom" && "flex-col",
|
|
114
|
-
)}
|
|
115
|
-
aria-hidden="true"
|
|
116
|
-
>
|
|
117
|
-
<slot />
|
|
118
|
-
</div>
|
|
119
|
-
</div>
|
|
1
|
+
---
|
|
2
|
+
/**
|
|
3
|
+
* @component Marquee
|
|
4
|
+
* @title Marquee
|
|
5
|
+
* @description A horizontally auto-scrolling container for repeating content like logos or messages.
|
|
6
|
+
* @status stable
|
|
7
|
+
* @figmaUrl https://www.figma.com/design/koxai7zw5vIuBzuVxe5T2l/bejamas-ui?node-id=2511-7717&t=YFStJ3V8fXEO8QD8-4
|
|
8
|
+
*
|
|
9
|
+
* @preview
|
|
10
|
+
*
|
|
11
|
+
*
|
|
12
|
+
* <Marquee class="dark:invert">
|
|
13
|
+
* <img src="/demo/logo/sonos.svg" alt="Netflix" class="h-5 self-center mx-10"/>
|
|
14
|
+
* <img src="/demo/logo/uber.svg" alt="Uber" class="h-5 self-center mx-10"/>
|
|
15
|
+
* <img src="/demo/logo/visa.svg" alt="Visa" class="h-5 self-center mx-10"/>
|
|
16
|
+
* <img src="/demo/logo/coca-cola.svg" alt="Coca-Cola" class="h-6 self-center mx-10"/>
|
|
17
|
+
* <img src="/demo/logo/nike.svg" alt="Nike" class="h-5 self-center mx-10"/>
|
|
18
|
+
* </Marquee>
|
|
19
|
+
*
|
|
20
|
+
* @usage
|
|
21
|
+
*
|
|
22
|
+
* ```astro nocollapse
|
|
23
|
+
* ---
|
|
24
|
+
* import { Marquee } from '@bejamas/ui/components/marquee';
|
|
25
|
+
* ---
|
|
26
|
+
* <Marquee>
|
|
27
|
+
* <!-- Your content here -->
|
|
28
|
+
* </Marquee>
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @examples
|
|
32
|
+
*
|
|
33
|
+
* ### Direction
|
|
34
|
+
*
|
|
35
|
+
* <div class="flex gap-6 h-60">
|
|
36
|
+
* <Marquee class="[&_.marquee-content]:space-y-8 space-y-8" direction="top">
|
|
37
|
+
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/sonos.svg" alt="Sonos" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
38
|
+
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/uber.svg" alt="Uber" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
39
|
+
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/visa.svg" alt="Visa" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
40
|
+
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/coca-cola.svg" alt="Coca-Cola" class="h-6 self-center mx-10 dark:invert"/></div>
|
|
41
|
+
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/nike.svg" alt="Nike" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
42
|
+
* </Marquee>
|
|
43
|
+
* <Marquee class="[&_.marquee-content]:space-y-8 space-y-8" direction="bottom">
|
|
44
|
+
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/sonos.svg" alt="Sonos" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
45
|
+
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/uber.svg" alt="Uber" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
46
|
+
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/visa.svg" alt="Visa" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
47
|
+
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/coca-cola.svg" alt="Coca-Cola" class="h-6 self-center mx-10 dark:invert"/></div>
|
|
48
|
+
* <div class="bg-muted px-10 py-7 rounded-lg flex items-center justify-center"><img src="/demo/logo/nike.svg" alt="Nike" class="h-5 self-center mx-10 dark:invert"/></div>
|
|
49
|
+
* </Marquee>
|
|
50
|
+
* </div>
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
import { cva } from "class-variance-authority";
|
|
54
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
55
|
+
|
|
56
|
+
interface Props {
|
|
57
|
+
direction?: "left" | "right" | "top" | "bottom";
|
|
58
|
+
time?: number | string;
|
|
59
|
+
variant?: "gradient" | "solid";
|
|
60
|
+
class?: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const {
|
|
64
|
+
class: className = "",
|
|
65
|
+
direction = "left",
|
|
66
|
+
time = 30,
|
|
67
|
+
variant = "gradient",
|
|
68
|
+
...props
|
|
69
|
+
} = Astro.props as Props;
|
|
70
|
+
|
|
71
|
+
const marqueeVariants = cva("relative w-full", {
|
|
72
|
+
variants: {
|
|
73
|
+
variant: {
|
|
74
|
+
gradient:
|
|
75
|
+
"[mask-image:linear-gradient(to_right,transparent,black_10%,black_90%,transparent)] [-webkit-mask-image:linear-gradient(to_right,transparent,black_10%,black_90%,transparent)] [&[data-direction=top]]:[mask-image:linear-gradient(to_bottom,transparent,black_10%,black_90%,transparent)] [&[data-direction=top]]:[-webkit-mask-image:linear-gradient(to_bottom,transparent,black_10%,black_90%,transparent)] [&[data-direction=bottom]]:[mask-image:linear-gradient(to_top,transparent,black_10%,black_90%,transparent)] [&[data-direction=bottom]]:[-webkit-mask-image:linear-gradient(to_top,transparent,black_10%,black_90%,transparent)]",
|
|
76
|
+
solid: "",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
defaultVariants: {
|
|
80
|
+
variant: "gradient",
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
<div
|
|
86
|
+
data-marquee
|
|
87
|
+
data-direction={direction}
|
|
88
|
+
class={cn(
|
|
89
|
+
"",
|
|
90
|
+
// container utilities
|
|
91
|
+
"group flex overflow-hidden w-full [&[data-direction=top]]:flex-col [&[data-direction=bottom]]:flex-col",
|
|
92
|
+
marqueeVariants({ variant }),
|
|
93
|
+
className,
|
|
94
|
+
)}
|
|
95
|
+
style={` --duration:${typeof time === "number" ? `${time}s` : time};`}
|
|
96
|
+
{...props}
|
|
97
|
+
>
|
|
98
|
+
<div
|
|
99
|
+
class={cn(
|
|
100
|
+
"",
|
|
101
|
+
"marquee-content shrink-0 flex justify-around min-w-full will-change-transform whitespace-nowrap [animation:marquee-x_var(--duration,_20s)_linear_infinite] motion-reduce:[animation-play-state:paused] group-data-[direction=right]:[animation-direction:reverse] group-data-[direction=top]:[animation:marquee-y_var(--duration,_20s)_linear_infinite] group-data-[direction=bottom]:[animation:marquee-y_var(--duration,_20s)_linear_infinite] [&[data-direction=top]]:min-h-full [&[data-direction=bottom]]:min-h-full [&[data-direction=top]]:flex-col [&[data-direction=bottom]]:flex-col group-data-[direction=bottom]:[animation-direction:reverse]",
|
|
102
|
+
direction === "top" && "flex-col",
|
|
103
|
+
direction === "bottom" && "flex-col",
|
|
104
|
+
)}
|
|
105
|
+
>
|
|
106
|
+
<slot />
|
|
107
|
+
</div>
|
|
108
|
+
<div
|
|
109
|
+
class={cn(
|
|
110
|
+
"",
|
|
111
|
+
"marquee-content shrink-0 flex justify-around min-w-full will-change-transform whitespace-nowrap [animation:marquee-x_var(--duration,_20s)_linear_infinite] motion-reduce:[animation-play-state:paused] group-data-[direction=right]:[animation-direction:reverse] group-data-[direction=top]:[animation:marquee-y_var(--duration,_20s)_linear_infinite] group-data-[direction=bottom]:[animation:marquee-y_var(--duration,_20s)_linear_infinite] [&[data-direction=top]]:min-h-full [&[data-direction=bottom]]:min-h-full [&[data-direction=top]]:flex-col [&[data-direction=bottom]]:flex-col group-data-[direction=bottom]:[animation-direction:reverse]",
|
|
112
|
+
direction === "top" && "flex-col",
|
|
113
|
+
direction === "bottom" && "flex-col",
|
|
114
|
+
)}
|
|
115
|
+
aria-hidden="true"
|
|
116
|
+
>
|
|
117
|
+
<slot />
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
---
|
|
2
|
-
/**
|
|
3
|
-
* @component NativeSelect
|
|
4
|
-
* @title Native Select
|
|
5
|
-
* @description A styled native HTML select element with consistent design system integration.
|
|
6
|
-
*
|
|
7
|
-
* @preview
|
|
8
|
-
* <NativeSelect class="w-[200px]">
|
|
9
|
-
* <NativeSelectOption value="">Select a fruit</NativeSelectOption>
|
|
10
|
-
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
11
|
-
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
12
|
-
* <NativeSelectOption value="cherry">Cherry</NativeSelectOption>
|
|
13
|
-
* </NativeSelect>
|
|
14
|
-
*
|
|
15
|
-
* @usage
|
|
16
|
-
*
|
|
17
|
-
* ```astro nocollapse
|
|
18
|
-
* ---
|
|
19
|
-
* import {
|
|
20
|
-
* NativeSelect,
|
|
21
|
-
* NativeSelectOption,
|
|
22
|
-
* NativeSelectOptGroup,
|
|
23
|
-
* } from '@bejamas/ui/components/native-select';
|
|
24
|
-
* ---
|
|
25
|
-
*
|
|
26
|
-
* <NativeSelect>
|
|
27
|
-
* <NativeSelectOption value="">Select a fruit</NativeSelectOption>
|
|
28
|
-
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
29
|
-
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
30
|
-
* </NativeSelect>
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* ### Native Select vs Select
|
|
34
|
-
*
|
|
35
|
-
* Use **NativeSelect** when you need standard browser form behavior — native validation, mobile-optimized pickers, and zero JavaScript. Use **Select** when you need a custom-styled dropdown with keyboard navigation, grouped items, and rich content.
|
|
36
|
-
*
|
|
37
|
-
* @examples
|
|
38
|
-
*
|
|
39
|
-
* ### With Groups
|
|
40
|
-
*
|
|
41
|
-
* <NativeSelect class="w-[200px]">
|
|
42
|
-
* <NativeSelectOptGroup label="Fruits">
|
|
43
|
-
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
44
|
-
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
45
|
-
* </NativeSelectOptGroup>
|
|
46
|
-
* <NativeSelectOptGroup label="Vegetables">
|
|
47
|
-
* <NativeSelectOption value="carrot">Carrot</NativeSelectOption>
|
|
48
|
-
* <NativeSelectOption value="broccoli">Broccoli</NativeSelectOption>
|
|
49
|
-
* </NativeSelectOptGroup>
|
|
50
|
-
* </NativeSelect>
|
|
51
|
-
*
|
|
52
|
-
* ### Sizes
|
|
53
|
-
*
|
|
54
|
-
* <div class="flex flex-col items-start gap-4 sm:flex-row">
|
|
55
|
-
* <NativeSelect class="w-[180px]" size="sm">
|
|
56
|
-
* <NativeSelectOption value="">Small (h-8)</NativeSelectOption>
|
|
57
|
-
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
58
|
-
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
59
|
-
* </NativeSelect>
|
|
60
|
-
* <NativeSelect class="w-[180px]" size="default">
|
|
61
|
-
* <NativeSelectOption value="">Default (h-9)</NativeSelectOption>
|
|
62
|
-
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
63
|
-
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
64
|
-
* </NativeSelect>
|
|
65
|
-
* <NativeSelect class="w-[180px]" size="lg">
|
|
66
|
-
* <NativeSelectOption value="">Large (h-10)</NativeSelectOption>
|
|
67
|
-
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
68
|
-
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
69
|
-
* </NativeSelect>
|
|
70
|
-
* </div>
|
|
71
|
-
*
|
|
72
|
-
* ### Disabled
|
|
73
|
-
*
|
|
74
|
-
* <NativeSelect disabled class="w-[200px]">
|
|
75
|
-
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
76
|
-
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
77
|
-
* </NativeSelect>
|
|
78
|
-
*
|
|
79
|
-
* ### Invalid
|
|
80
|
-
*
|
|
81
|
-
* <NativeSelect aria-invalid="true" class="w-[200px]">
|
|
82
|
-
* <NativeSelectOption value="">Select a fruit</NativeSelectOption>
|
|
83
|
-
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
84
|
-
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
85
|
-
* </NativeSelect>
|
|
86
|
-
*
|
|
87
|
-
*/
|
|
88
|
-
|
|
89
|
-
import type { HTMLAttributes } from "astro/types";
|
|
90
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
91
|
-
|
|
92
|
-
interface Props extends HTMLAttributes<"select"> {
|
|
93
|
-
class?: string;
|
|
94
|
-
size?: "sm" | "default" | "lg";
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const {
|
|
98
|
-
class: className = "",
|
|
99
|
-
size = "default",
|
|
100
|
-
...rest
|
|
101
|
-
} = Astro.props as Props;
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
<div
|
|
105
|
-
data-slot="native-select-wrapper"
|
|
106
|
-
data-size={size}
|
|
107
|
-
class={cn("",
|
|
108
|
-
"group/native-select relative w-fit has-[select:disabled]:opacity-50",
|
|
109
|
-
className,
|
|
110
|
-
)}
|
|
111
|
-
>
|
|
112
|
-
<select
|
|
113
|
-
data-slot="native-select"
|
|
114
|
-
data-size={size}
|
|
115
|
-
class={cn(
|
|
116
|
-
"border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 w-full min-w-0 appearance-none rounded-md border bg-transparent py-1 pr-8 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-8 rounded-lg outline-none disabled:pointer-events-none disabled:cursor-not-allowed",
|
|
117
|
-
)}
|
|
118
|
-
{...rest}
|
|
119
|
-
>
|
|
120
|
-
<slot />
|
|
121
|
-
</select>
|
|
122
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2 pointer-events-none absolute select-none"
|
|
123
|
-
aria-hidden="true"
|
|
124
|
-
data-slot="native-select-icon"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6 9l6 6l6-6"/></svg>
|
|
125
|
-
</div>
|
|
1
|
+
---
|
|
2
|
+
/**
|
|
3
|
+
* @component NativeSelect
|
|
4
|
+
* @title Native Select
|
|
5
|
+
* @description A styled native HTML select element with consistent design system integration.
|
|
6
|
+
*
|
|
7
|
+
* @preview
|
|
8
|
+
* <NativeSelect class="w-[200px]">
|
|
9
|
+
* <NativeSelectOption value="">Select a fruit</NativeSelectOption>
|
|
10
|
+
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
11
|
+
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
12
|
+
* <NativeSelectOption value="cherry">Cherry</NativeSelectOption>
|
|
13
|
+
* </NativeSelect>
|
|
14
|
+
*
|
|
15
|
+
* @usage
|
|
16
|
+
*
|
|
17
|
+
* ```astro nocollapse
|
|
18
|
+
* ---
|
|
19
|
+
* import {
|
|
20
|
+
* NativeSelect,
|
|
21
|
+
* NativeSelectOption,
|
|
22
|
+
* NativeSelectOptGroup,
|
|
23
|
+
* } from '@bejamas/ui/components/native-select';
|
|
24
|
+
* ---
|
|
25
|
+
*
|
|
26
|
+
* <NativeSelect>
|
|
27
|
+
* <NativeSelectOption value="">Select a fruit</NativeSelectOption>
|
|
28
|
+
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
29
|
+
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
30
|
+
* </NativeSelect>
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* ### Native Select vs Select
|
|
34
|
+
*
|
|
35
|
+
* Use **NativeSelect** when you need standard browser form behavior — native validation, mobile-optimized pickers, and zero JavaScript. Use **Select** when you need a custom-styled dropdown with keyboard navigation, grouped items, and rich content.
|
|
36
|
+
*
|
|
37
|
+
* @examples
|
|
38
|
+
*
|
|
39
|
+
* ### With Groups
|
|
40
|
+
*
|
|
41
|
+
* <NativeSelect class="w-[200px]">
|
|
42
|
+
* <NativeSelectOptGroup label="Fruits">
|
|
43
|
+
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
44
|
+
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
45
|
+
* </NativeSelectOptGroup>
|
|
46
|
+
* <NativeSelectOptGroup label="Vegetables">
|
|
47
|
+
* <NativeSelectOption value="carrot">Carrot</NativeSelectOption>
|
|
48
|
+
* <NativeSelectOption value="broccoli">Broccoli</NativeSelectOption>
|
|
49
|
+
* </NativeSelectOptGroup>
|
|
50
|
+
* </NativeSelect>
|
|
51
|
+
*
|
|
52
|
+
* ### Sizes
|
|
53
|
+
*
|
|
54
|
+
* <div class="flex flex-col items-start gap-4 sm:flex-row">
|
|
55
|
+
* <NativeSelect class="w-[180px]" size="sm">
|
|
56
|
+
* <NativeSelectOption value="">Small (h-8)</NativeSelectOption>
|
|
57
|
+
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
58
|
+
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
59
|
+
* </NativeSelect>
|
|
60
|
+
* <NativeSelect class="w-[180px]" size="default">
|
|
61
|
+
* <NativeSelectOption value="">Default (h-9)</NativeSelectOption>
|
|
62
|
+
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
63
|
+
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
64
|
+
* </NativeSelect>
|
|
65
|
+
* <NativeSelect class="w-[180px]" size="lg">
|
|
66
|
+
* <NativeSelectOption value="">Large (h-10)</NativeSelectOption>
|
|
67
|
+
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
68
|
+
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
69
|
+
* </NativeSelect>
|
|
70
|
+
* </div>
|
|
71
|
+
*
|
|
72
|
+
* ### Disabled
|
|
73
|
+
*
|
|
74
|
+
* <NativeSelect disabled class="w-[200px]">
|
|
75
|
+
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
76
|
+
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
77
|
+
* </NativeSelect>
|
|
78
|
+
*
|
|
79
|
+
* ### Invalid
|
|
80
|
+
*
|
|
81
|
+
* <NativeSelect aria-invalid="true" class="w-[200px]">
|
|
82
|
+
* <NativeSelectOption value="">Select a fruit</NativeSelectOption>
|
|
83
|
+
* <NativeSelectOption value="apple">Apple</NativeSelectOption>
|
|
84
|
+
* <NativeSelectOption value="banana">Banana</NativeSelectOption>
|
|
85
|
+
* </NativeSelect>
|
|
86
|
+
*
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
import type { HTMLAttributes } from "astro/types";
|
|
90
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
91
|
+
|
|
92
|
+
interface Props extends HTMLAttributes<"select"> {
|
|
93
|
+
class?: string;
|
|
94
|
+
size?: "sm" | "default" | "lg";
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const {
|
|
98
|
+
class: className = "",
|
|
99
|
+
size = "default",
|
|
100
|
+
...rest
|
|
101
|
+
} = Astro.props as Props;
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
<div
|
|
105
|
+
data-slot="native-select-wrapper"
|
|
106
|
+
data-size={size}
|
|
107
|
+
class={cn("",
|
|
108
|
+
"group/native-select relative w-fit has-[select:disabled]:opacity-50",
|
|
109
|
+
className,
|
|
110
|
+
)}
|
|
111
|
+
>
|
|
112
|
+
<select
|
|
113
|
+
data-slot="native-select"
|
|
114
|
+
data-size={size}
|
|
115
|
+
class={cn(
|
|
116
|
+
"border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 w-full min-w-0 appearance-none rounded-md border bg-transparent py-1 pr-8 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-8 rounded-lg outline-none disabled:pointer-events-none disabled:cursor-not-allowed",
|
|
117
|
+
)}
|
|
118
|
+
{...rest}
|
|
119
|
+
>
|
|
120
|
+
<slot />
|
|
121
|
+
</select>
|
|
122
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2 pointer-events-none absolute select-none"
|
|
123
|
+
aria-hidden="true"
|
|
124
|
+
data-slot="native-select-icon"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6 9l6 6l6-6"/></svg>
|
|
125
|
+
</div>
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
---
|
|
2
|
-
import type { HTMLAttributes } from "astro/types";
|
|
3
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
4
|
-
|
|
5
|
-
interface Props extends HTMLAttributes<"optgroup"> {
|
|
6
|
-
class?: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const { class: className = "", ...rest } = Astro.props as Props;
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
<optgroup data-slot="native-select-optgroup" class={cn("", className)} {...rest}>
|
|
13
|
-
<slot />
|
|
14
|
-
</optgroup>
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types";
|
|
3
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
4
|
+
|
|
5
|
+
interface Props extends HTMLAttributes<"optgroup"> {
|
|
6
|
+
class?: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const { class: className = "", ...rest } = Astro.props as Props;
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<optgroup data-slot="native-select-optgroup" class={cn("", className)} {...rest}>
|
|
13
|
+
<slot />
|
|
14
|
+
</optgroup>
|