@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,24 +1,24 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
3
|
-
import type { HTMLAttributes } from "astro/types";
|
|
4
|
-
|
|
5
|
-
interface Props extends HTMLAttributes<"div"> {
|
|
6
|
-
class?: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const {
|
|
10
|
-
class: className = "",
|
|
11
|
-
...rest
|
|
12
|
-
} = Astro.props as Props;
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<div
|
|
16
|
-
{...rest}
|
|
17
|
-
data-slot="alert-description"
|
|
18
|
-
class={cn(
|
|
19
|
-
"text-sm text-muted-foreground [&_p:not(:last-child)]:mb-1 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",
|
|
20
|
-
className,
|
|
21
|
-
)}
|
|
22
|
-
>
|
|
23
|
-
<slot />
|
|
24
|
-
</div>
|
|
1
|
+
---
|
|
2
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
3
|
+
import type { HTMLAttributes } from "astro/types";
|
|
4
|
+
|
|
5
|
+
interface Props extends HTMLAttributes<"div"> {
|
|
6
|
+
class?: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const {
|
|
10
|
+
class: className = "",
|
|
11
|
+
...rest
|
|
12
|
+
} = Astro.props as Props;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<div
|
|
16
|
+
{...rest}
|
|
17
|
+
data-slot="alert-description"
|
|
18
|
+
class={cn(
|
|
19
|
+
"text-sm text-muted-foreground [&_p:not(:last-child)]:mb-1 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",
|
|
20
|
+
className,
|
|
21
|
+
)}
|
|
22
|
+
>
|
|
23
|
+
<slot />
|
|
24
|
+
</div>
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
3
|
-
import type { HTMLAttributes } from "astro/types";
|
|
4
|
-
|
|
5
|
-
interface Props extends HTMLAttributes<"div"> {
|
|
6
|
-
class?: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const {
|
|
10
|
-
class: className = "",
|
|
11
|
-
...rest
|
|
12
|
-
} = Astro.props as Props;
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<div
|
|
16
|
-
{...rest}
|
|
17
|
-
data-slot="alert-title"
|
|
18
|
-
class={cn(
|
|
19
|
-
"text-sm font-semibold text-foreground [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground/80",
|
|
20
|
-
className,
|
|
21
|
-
)}
|
|
22
|
-
>
|
|
23
|
-
<slot />
|
|
24
|
-
</div>
|
|
1
|
+
---
|
|
2
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
3
|
+
import type { HTMLAttributes } from "astro/types";
|
|
4
|
+
|
|
5
|
+
interface Props extends HTMLAttributes<"div"> {
|
|
6
|
+
class?: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const {
|
|
10
|
+
class: className = "",
|
|
11
|
+
...rest
|
|
12
|
+
} = Astro.props as Props;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<div
|
|
16
|
+
{...rest}
|
|
17
|
+
data-slot="alert-title"
|
|
18
|
+
class={cn(
|
|
19
|
+
"text-sm font-semibold text-foreground [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground/80",
|
|
20
|
+
className,
|
|
21
|
+
)}
|
|
22
|
+
>
|
|
23
|
+
<slot />
|
|
24
|
+
</div>
|
|
@@ -1,197 +1,197 @@
|
|
|
1
|
-
---
|
|
2
|
-
/**
|
|
3
|
-
* @component Avatar
|
|
4
|
-
* @title Avatar
|
|
5
|
-
* @description An image, initials, or icon representing a user or entity, with an optional online/offline status badge.
|
|
6
|
-
* @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=113-1145
|
|
7
|
-
*
|
|
8
|
-
* @preview
|
|
9
|
-
* <div class="flex flex-wrap items-center gap-4">
|
|
10
|
-
* <Avatar status="active">
|
|
11
|
-
* <AvatarImage src="https://github.com/thomkrupa.png" alt="@thomkrupa" />
|
|
12
|
-
* <AvatarFallback>TK</AvatarFallback>
|
|
13
|
-
* </Avatar>
|
|
14
|
-
* <AvatarGroup>
|
|
15
|
-
* <Avatar>
|
|
16
|
-
* <AvatarImage src="https://github.com/withastro.png" alt="@withastro" />
|
|
17
|
-
* <AvatarFallback>WA</AvatarFallback>
|
|
18
|
-
* </Avatar>
|
|
19
|
-
* <Avatar>
|
|
20
|
-
* <AvatarImage src="https://github.com/bejamas.png" alt="@bejamas" />
|
|
21
|
-
* <AvatarFallback>BJ</AvatarFallback>
|
|
22
|
-
* </Avatar>
|
|
23
|
-
* <AvatarGroupCount>+2</AvatarGroupCount>
|
|
24
|
-
* </AvatarGroup>
|
|
25
|
-
* </div>
|
|
26
|
-
*
|
|
27
|
-
* @usage
|
|
28
|
-
*
|
|
29
|
-
* ```astro nocollapse
|
|
30
|
-
* ---
|
|
31
|
-
* import {
|
|
32
|
-
* Avatar,
|
|
33
|
-
* AvatarImage,
|
|
34
|
-
* AvatarFallback,
|
|
35
|
-
* AvatarGroup,
|
|
36
|
-
* AvatarGroupCount,
|
|
37
|
-
* } from '@bejamas/ui/components/avatar';
|
|
38
|
-
* ---
|
|
39
|
-
*
|
|
40
|
-
* <Avatar size="lg" status="active">
|
|
41
|
-
* <AvatarImage src="https://github.com/thomkrupa.png" alt="@thomkrupa" />
|
|
42
|
-
* <AvatarFallback>TK</AvatarFallback>
|
|
43
|
-
* </Avatar>
|
|
44
|
-
* ```
|
|
45
|
-
*
|
|
46
|
-
* @examples
|
|
47
|
-
*
|
|
48
|
-
* ### Sizes
|
|
49
|
-
*
|
|
50
|
-
* <div class="flex items-center gap-4">
|
|
51
|
-
* <Avatar size="sm">
|
|
52
|
-
* <AvatarImage src="https://github.com/bejamas.png" alt="small" />
|
|
53
|
-
* <AvatarFallback>SM</AvatarFallback>
|
|
54
|
-
* </Avatar>
|
|
55
|
-
* <Avatar>
|
|
56
|
-
* <AvatarImage src="https://github.com/bejamas.png" alt="default" />
|
|
57
|
-
* <AvatarFallback>MD</AvatarFallback>
|
|
58
|
-
* </Avatar>
|
|
59
|
-
* <Avatar size="lg">
|
|
60
|
-
* <AvatarImage src="https://github.com/bejamas.png" alt="large" />
|
|
61
|
-
* <AvatarFallback>LG</AvatarFallback>
|
|
62
|
-
* </Avatar>
|
|
63
|
-
* </div>
|
|
64
|
-
*
|
|
65
|
-
* ### Variants
|
|
66
|
-
*
|
|
67
|
-
* <div class="flex items-center gap-4">
|
|
68
|
-
* <Avatar variant="image">
|
|
69
|
-
* <AvatarImage src="https://github.com/thomkrupa.png" alt="@thomkrupa" />
|
|
70
|
-
* </Avatar>
|
|
71
|
-
* <Avatar variant="initials">
|
|
72
|
-
* <AvatarFallback>AB</AvatarFallback>
|
|
73
|
-
* </Avatar>
|
|
74
|
-
* <Avatar variant="icon" icon={User} />
|
|
75
|
-
* </div>
|
|
76
|
-
*
|
|
77
|
-
* ### Status
|
|
78
|
-
*
|
|
79
|
-
* <div class="flex items-center gap-4">
|
|
80
|
-
* <Avatar status="active">
|
|
81
|
-
* <AvatarImage src="https://github.com/thomkrupa.png" alt="@thomkrupa" />
|
|
82
|
-
* <AvatarFallback>TK</AvatarFallback>
|
|
83
|
-
* </Avatar>
|
|
84
|
-
* <Avatar status="inactive">
|
|
85
|
-
* <AvatarImage src="https://github.com/bejamas.png" alt="@bejamas" />
|
|
86
|
-
* <AvatarFallback>BJ</AvatarFallback>
|
|
87
|
-
* </Avatar>
|
|
88
|
-
* </div>
|
|
89
|
-
*
|
|
90
|
-
* ### Group
|
|
91
|
-
*
|
|
92
|
-
* <AvatarGroup>
|
|
93
|
-
* <Avatar>
|
|
94
|
-
* <AvatarImage src="https://github.com/withastro.png" alt="@withastro" />
|
|
95
|
-
* <AvatarFallback>WA</AvatarFallback>
|
|
96
|
-
* </Avatar>
|
|
97
|
-
* <Avatar>
|
|
98
|
-
* <AvatarImage src="https://github.com/bejamas.png" alt="@bejamas" />
|
|
99
|
-
* <AvatarFallback>BJ</AvatarFallback>
|
|
100
|
-
* </Avatar>
|
|
101
|
-
* <Avatar>
|
|
102
|
-
* <AvatarFallback>FS</AvatarFallback>
|
|
103
|
-
* </Avatar>
|
|
104
|
-
* <AvatarGroupCount>+3</AvatarGroupCount>
|
|
105
|
-
* </AvatarGroup>
|
|
106
|
-
*
|
|
107
|
-
* ### With `astro:assets` Image
|
|
108
|
-
*
|
|
109
|
-
* ```astro nopreview nocollapse
|
|
110
|
-
* ---
|
|
111
|
-
* import { Image } from "astro:assets";
|
|
112
|
-
* import profile from "@repo/assets/profile.jpg";
|
|
113
|
-
* import { Avatar, AvatarImage, AvatarFallback } from "@bejamas/ui/components/avatar";
|
|
114
|
-
* ---
|
|
115
|
-
*
|
|
116
|
-
* <Avatar>
|
|
117
|
-
* <AvatarImage>
|
|
118
|
-
* <Image src={profile} alt="Profile photo" />
|
|
119
|
-
* </AvatarImage>
|
|
120
|
-
* <AvatarFallback>PR</AvatarFallback>
|
|
121
|
-
* </Avatar>
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
|
|
125
|
-
import { cva } from "class-variance-authority";
|
|
126
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
127
|
-
import type { AstroComponent } from "@lucide/astro";
|
|
128
|
-
import type { HTMLAttributes } from "astro/types";
|
|
129
|
-
import AvatarBadge from "./AvatarBadge.astro";
|
|
130
|
-
|
|
131
|
-
type AvatarVariant = "image" | "initials" | "icon";
|
|
132
|
-
type AvatarStatus = "active" | "inactive";
|
|
133
|
-
|
|
134
|
-
interface Props extends HTMLAttributes<"span"> {
|
|
135
|
-
class?: string;
|
|
136
|
-
size?: "default" | "sm" | "lg";
|
|
137
|
-
variant?: AvatarVariant;
|
|
138
|
-
icon?: AstroComponent;
|
|
139
|
-
status?: AvatarStatus;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
const {
|
|
143
|
-
class: className = "",
|
|
144
|
-
size = "default",
|
|
145
|
-
variant = "image",
|
|
146
|
-
icon,
|
|
147
|
-
status,
|
|
148
|
-
...rest
|
|
149
|
-
} = Astro.props as Props;
|
|
150
|
-
|
|
151
|
-
const Icon = icon;
|
|
152
|
-
const hasIcon = variant === "icon" && Boolean(Icon);
|
|
153
|
-
|
|
154
|
-
const avatarVariants = cva(
|
|
155
|
-
"group/avatar relative z-1 flex shrink-0 select-none rounded-full border border-border after:absolute after:inset-0 after:rounded-full",
|
|
156
|
-
{
|
|
157
|
-
variants: {
|
|
158
|
-
size: {
|
|
159
|
-
default: "size-8 border-[1.5px]",
|
|
160
|
-
sm: "size-6 border",
|
|
161
|
-
lg: "size-10 border-2",
|
|
162
|
-
},
|
|
163
|
-
variant: {
|
|
164
|
-
image: "",
|
|
165
|
-
initials: "",
|
|
166
|
-
icon: "bg-primary-foreground",
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
defaultVariants: {
|
|
170
|
-
size: "default",
|
|
171
|
-
variant: "image",
|
|
172
|
-
},
|
|
173
|
-
},
|
|
174
|
-
);
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
<span
|
|
178
|
-
{...rest}
|
|
179
|
-
data-slot="avatar"
|
|
180
|
-
data-size={size}
|
|
181
|
-
data-variant={variant}
|
|
182
|
-
data-status={status}
|
|
183
|
-
class={cn(avatarVariants({ size, variant }), className)}
|
|
184
|
-
>
|
|
185
|
-
<slot />
|
|
186
|
-
{
|
|
187
|
-
hasIcon && (
|
|
188
|
-
<span
|
|
189
|
-
data-slot="avatar-icon"
|
|
190
|
-
class="text-foreground pointer-events-none absolute top-1/2 left-1/2 z-10 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center [&>svg]:size-3.5 group-data-[size=default]/avatar:[&>svg]:size-4 group-data-[size=lg]/avatar:[&>svg]:size-5"
|
|
191
|
-
>
|
|
192
|
-
<Icon />
|
|
193
|
-
</span>
|
|
194
|
-
)
|
|
195
|
-
}
|
|
196
|
-
{status && <AvatarBadge status={status} />}
|
|
197
|
-
</span>
|
|
1
|
+
---
|
|
2
|
+
/**
|
|
3
|
+
* @component Avatar
|
|
4
|
+
* @title Avatar
|
|
5
|
+
* @description An image, initials, or icon representing a user or entity, with an optional online/offline status badge.
|
|
6
|
+
* @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=113-1145
|
|
7
|
+
*
|
|
8
|
+
* @preview
|
|
9
|
+
* <div class="flex flex-wrap items-center gap-4">
|
|
10
|
+
* <Avatar status="active">
|
|
11
|
+
* <AvatarImage src="https://github.com/thomkrupa.png" alt="@thomkrupa" />
|
|
12
|
+
* <AvatarFallback>TK</AvatarFallback>
|
|
13
|
+
* </Avatar>
|
|
14
|
+
* <AvatarGroup>
|
|
15
|
+
* <Avatar>
|
|
16
|
+
* <AvatarImage src="https://github.com/withastro.png" alt="@withastro" />
|
|
17
|
+
* <AvatarFallback>WA</AvatarFallback>
|
|
18
|
+
* </Avatar>
|
|
19
|
+
* <Avatar>
|
|
20
|
+
* <AvatarImage src="https://github.com/bejamas.png" alt="@bejamas" />
|
|
21
|
+
* <AvatarFallback>BJ</AvatarFallback>
|
|
22
|
+
* </Avatar>
|
|
23
|
+
* <AvatarGroupCount>+2</AvatarGroupCount>
|
|
24
|
+
* </AvatarGroup>
|
|
25
|
+
* </div>
|
|
26
|
+
*
|
|
27
|
+
* @usage
|
|
28
|
+
*
|
|
29
|
+
* ```astro nocollapse
|
|
30
|
+
* ---
|
|
31
|
+
* import {
|
|
32
|
+
* Avatar,
|
|
33
|
+
* AvatarImage,
|
|
34
|
+
* AvatarFallback,
|
|
35
|
+
* AvatarGroup,
|
|
36
|
+
* AvatarGroupCount,
|
|
37
|
+
* } from '@bejamas/ui/components/avatar';
|
|
38
|
+
* ---
|
|
39
|
+
*
|
|
40
|
+
* <Avatar size="lg" status="active">
|
|
41
|
+
* <AvatarImage src="https://github.com/thomkrupa.png" alt="@thomkrupa" />
|
|
42
|
+
* <AvatarFallback>TK</AvatarFallback>
|
|
43
|
+
* </Avatar>
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @examples
|
|
47
|
+
*
|
|
48
|
+
* ### Sizes
|
|
49
|
+
*
|
|
50
|
+
* <div class="flex items-center gap-4">
|
|
51
|
+
* <Avatar size="sm">
|
|
52
|
+
* <AvatarImage src="https://github.com/bejamas.png" alt="small" />
|
|
53
|
+
* <AvatarFallback>SM</AvatarFallback>
|
|
54
|
+
* </Avatar>
|
|
55
|
+
* <Avatar>
|
|
56
|
+
* <AvatarImage src="https://github.com/bejamas.png" alt="default" />
|
|
57
|
+
* <AvatarFallback>MD</AvatarFallback>
|
|
58
|
+
* </Avatar>
|
|
59
|
+
* <Avatar size="lg">
|
|
60
|
+
* <AvatarImage src="https://github.com/bejamas.png" alt="large" />
|
|
61
|
+
* <AvatarFallback>LG</AvatarFallback>
|
|
62
|
+
* </Avatar>
|
|
63
|
+
* </div>
|
|
64
|
+
*
|
|
65
|
+
* ### Variants
|
|
66
|
+
*
|
|
67
|
+
* <div class="flex items-center gap-4">
|
|
68
|
+
* <Avatar variant="image">
|
|
69
|
+
* <AvatarImage src="https://github.com/thomkrupa.png" alt="@thomkrupa" />
|
|
70
|
+
* </Avatar>
|
|
71
|
+
* <Avatar variant="initials">
|
|
72
|
+
* <AvatarFallback>AB</AvatarFallback>
|
|
73
|
+
* </Avatar>
|
|
74
|
+
* <Avatar variant="icon" icon={User} />
|
|
75
|
+
* </div>
|
|
76
|
+
*
|
|
77
|
+
* ### Status
|
|
78
|
+
*
|
|
79
|
+
* <div class="flex items-center gap-4">
|
|
80
|
+
* <Avatar status="active">
|
|
81
|
+
* <AvatarImage src="https://github.com/thomkrupa.png" alt="@thomkrupa" />
|
|
82
|
+
* <AvatarFallback>TK</AvatarFallback>
|
|
83
|
+
* </Avatar>
|
|
84
|
+
* <Avatar status="inactive">
|
|
85
|
+
* <AvatarImage src="https://github.com/bejamas.png" alt="@bejamas" />
|
|
86
|
+
* <AvatarFallback>BJ</AvatarFallback>
|
|
87
|
+
* </Avatar>
|
|
88
|
+
* </div>
|
|
89
|
+
*
|
|
90
|
+
* ### Group
|
|
91
|
+
*
|
|
92
|
+
* <AvatarGroup>
|
|
93
|
+
* <Avatar>
|
|
94
|
+
* <AvatarImage src="https://github.com/withastro.png" alt="@withastro" />
|
|
95
|
+
* <AvatarFallback>WA</AvatarFallback>
|
|
96
|
+
* </Avatar>
|
|
97
|
+
* <Avatar>
|
|
98
|
+
* <AvatarImage src="https://github.com/bejamas.png" alt="@bejamas" />
|
|
99
|
+
* <AvatarFallback>BJ</AvatarFallback>
|
|
100
|
+
* </Avatar>
|
|
101
|
+
* <Avatar>
|
|
102
|
+
* <AvatarFallback>FS</AvatarFallback>
|
|
103
|
+
* </Avatar>
|
|
104
|
+
* <AvatarGroupCount>+3</AvatarGroupCount>
|
|
105
|
+
* </AvatarGroup>
|
|
106
|
+
*
|
|
107
|
+
* ### With `astro:assets` Image
|
|
108
|
+
*
|
|
109
|
+
* ```astro nopreview nocollapse
|
|
110
|
+
* ---
|
|
111
|
+
* import { Image } from "astro:assets";
|
|
112
|
+
* import profile from "@repo/assets/profile.jpg";
|
|
113
|
+
* import { Avatar, AvatarImage, AvatarFallback } from "@bejamas/ui/components/avatar";
|
|
114
|
+
* ---
|
|
115
|
+
*
|
|
116
|
+
* <Avatar>
|
|
117
|
+
* <AvatarImage>
|
|
118
|
+
* <Image src={profile} alt="Profile photo" />
|
|
119
|
+
* </AvatarImage>
|
|
120
|
+
* <AvatarFallback>PR</AvatarFallback>
|
|
121
|
+
* </Avatar>
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
|
|
125
|
+
import { cva } from "class-variance-authority";
|
|
126
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
127
|
+
import type { AstroComponent } from "@lucide/astro";
|
|
128
|
+
import type { HTMLAttributes } from "astro/types";
|
|
129
|
+
import AvatarBadge from "./AvatarBadge.astro";
|
|
130
|
+
|
|
131
|
+
type AvatarVariant = "image" | "initials" | "icon";
|
|
132
|
+
type AvatarStatus = "active" | "inactive";
|
|
133
|
+
|
|
134
|
+
interface Props extends HTMLAttributes<"span"> {
|
|
135
|
+
class?: string;
|
|
136
|
+
size?: "default" | "sm" | "lg";
|
|
137
|
+
variant?: AvatarVariant;
|
|
138
|
+
icon?: AstroComponent;
|
|
139
|
+
status?: AvatarStatus;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const {
|
|
143
|
+
class: className = "",
|
|
144
|
+
size = "default",
|
|
145
|
+
variant = "image",
|
|
146
|
+
icon,
|
|
147
|
+
status,
|
|
148
|
+
...rest
|
|
149
|
+
} = Astro.props as Props;
|
|
150
|
+
|
|
151
|
+
const Icon = icon;
|
|
152
|
+
const hasIcon = variant === "icon" && Boolean(Icon);
|
|
153
|
+
|
|
154
|
+
const avatarVariants = cva(
|
|
155
|
+
"group/avatar relative z-1 flex shrink-0 select-none rounded-full border border-border after:absolute after:inset-0 after:rounded-full",
|
|
156
|
+
{
|
|
157
|
+
variants: {
|
|
158
|
+
size: {
|
|
159
|
+
default: "size-8 border-[1.5px]",
|
|
160
|
+
sm: "size-6 border",
|
|
161
|
+
lg: "size-10 border-2",
|
|
162
|
+
},
|
|
163
|
+
variant: {
|
|
164
|
+
image: "",
|
|
165
|
+
initials: "",
|
|
166
|
+
icon: "bg-primary-foreground",
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
defaultVariants: {
|
|
170
|
+
size: "default",
|
|
171
|
+
variant: "image",
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
);
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
<span
|
|
178
|
+
{...rest}
|
|
179
|
+
data-slot="avatar"
|
|
180
|
+
data-size={size}
|
|
181
|
+
data-variant={variant}
|
|
182
|
+
data-status={status}
|
|
183
|
+
class={cn(avatarVariants({ size, variant }), className)}
|
|
184
|
+
>
|
|
185
|
+
<slot />
|
|
186
|
+
{
|
|
187
|
+
hasIcon && (
|
|
188
|
+
<span
|
|
189
|
+
data-slot="avatar-icon"
|
|
190
|
+
class="text-foreground pointer-events-none absolute top-1/2 left-1/2 z-10 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center [&>svg]:size-3.5 group-data-[size=default]/avatar:[&>svg]:size-4 group-data-[size=lg]/avatar:[&>svg]:size-5"
|
|
191
|
+
>
|
|
192
|
+
<Icon />
|
|
193
|
+
</span>
|
|
194
|
+
)
|
|
195
|
+
}
|
|
196
|
+
{status && <AvatarBadge status={status} />}
|
|
197
|
+
</span>
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { cva } from "class-variance-authority";
|
|
3
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
4
|
-
import type { HTMLAttributes } from "astro/types";
|
|
5
|
-
|
|
6
|
-
interface Props extends HTMLAttributes<"span"> {
|
|
7
|
-
class?: string;
|
|
8
|
-
status?: "active" | "inactive";
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const {
|
|
12
|
-
class: className = "",
|
|
13
|
-
status = "active",
|
|
14
|
-
...rest
|
|
15
|
-
} = Astro.props as Props;
|
|
16
|
-
|
|
17
|
-
const badgeVariants = cva(
|
|
18
|
-
"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center select-none rounded-full border-primary-foreground",
|
|
19
|
-
{
|
|
20
|
-
variants: {
|
|
21
|
-
status: {
|
|
22
|
-
active: "bg-success",
|
|
23
|
-
inactive: "bg-destructive",
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
defaultVariants: {
|
|
27
|
-
status: "active",
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
);
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
<span
|
|
34
|
-
{...rest}
|
|
35
|
-
data-slot="avatar-badge"
|
|
36
|
-
data-status={status}
|
|
37
|
-
class={cn(
|
|
38
|
-
badgeVariants({ status }),
|
|
39
|
-
"size-1.5 border group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:border-[1.5px] group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:border-2",
|
|
40
|
-
className,
|
|
41
|
-
)}
|
|
42
|
-
>
|
|
43
|
-
<slot />
|
|
44
|
-
</span>
|
|
1
|
+
---
|
|
2
|
+
import { cva } from "class-variance-authority";
|
|
3
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
4
|
+
import type { HTMLAttributes } from "astro/types";
|
|
5
|
+
|
|
6
|
+
interface Props extends HTMLAttributes<"span"> {
|
|
7
|
+
class?: string;
|
|
8
|
+
status?: "active" | "inactive";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const {
|
|
12
|
+
class: className = "",
|
|
13
|
+
status = "active",
|
|
14
|
+
...rest
|
|
15
|
+
} = Astro.props as Props;
|
|
16
|
+
|
|
17
|
+
const badgeVariants = cva(
|
|
18
|
+
"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center select-none rounded-full border-primary-foreground",
|
|
19
|
+
{
|
|
20
|
+
variants: {
|
|
21
|
+
status: {
|
|
22
|
+
active: "bg-success",
|
|
23
|
+
inactive: "bg-destructive",
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
defaultVariants: {
|
|
27
|
+
status: "active",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
);
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
<span
|
|
34
|
+
{...rest}
|
|
35
|
+
data-slot="avatar-badge"
|
|
36
|
+
data-status={status}
|
|
37
|
+
class={cn(
|
|
38
|
+
badgeVariants({ status }),
|
|
39
|
+
"size-1.5 border group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:border-[1.5px] group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:border-2",
|
|
40
|
+
className,
|
|
41
|
+
)}
|
|
42
|
+
>
|
|
43
|
+
<slot />
|
|
44
|
+
</span>
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
3
|
-
import type { HTMLAttributes } from "astro/types";
|
|
4
|
-
|
|
5
|
-
interface Props extends HTMLAttributes<"div"> {
|
|
6
|
-
class?: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const {
|
|
10
|
-
class: className = "",
|
|
11
|
-
...rest
|
|
12
|
-
} = Astro.props as Props;
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<div
|
|
16
|
-
{...rest}
|
|
17
|
-
data-slot="avatar-fallback"
|
|
18
|
-
class={cn(
|
|
19
|
-
"bg-primary-foreground text-foreground rounded-full font-semibold",
|
|
20
|
-
"absolute inset-0 flex size-full items-center justify-center",
|
|
21
|
-
"text-xs group-data-[size=lg]/avatar:text-sm",
|
|
22
|
-
className,
|
|
23
|
-
)}
|
|
24
|
-
>
|
|
25
|
-
<slot />
|
|
26
|
-
</div>
|
|
1
|
+
---
|
|
2
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
3
|
+
import type { HTMLAttributes } from "astro/types";
|
|
4
|
+
|
|
5
|
+
interface Props extends HTMLAttributes<"div"> {
|
|
6
|
+
class?: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const {
|
|
10
|
+
class: className = "",
|
|
11
|
+
...rest
|
|
12
|
+
} = Astro.props as Props;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<div
|
|
16
|
+
{...rest}
|
|
17
|
+
data-slot="avatar-fallback"
|
|
18
|
+
class={cn(
|
|
19
|
+
"bg-primary-foreground text-foreground rounded-full font-semibold",
|
|
20
|
+
"absolute inset-0 flex size-full items-center justify-center",
|
|
21
|
+
"text-xs group-data-[size=lg]/avatar:text-sm",
|
|
22
|
+
className,
|
|
23
|
+
)}
|
|
24
|
+
>
|
|
25
|
+
<slot />
|
|
26
|
+
</div>
|