@mila_studios/mycelia-design-system 0.1.1
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 +187 -0
- package/mycelia-ui.css +5545 -0
- package/package.json +127 -0
- package/packages/ui/dist/components/accordion.d.mts +9 -0
- package/packages/ui/dist/components/accordion.js +74 -0
- package/packages/ui/dist/components/accordion.js.map +1 -0
- package/packages/ui/dist/components/alert-dialog.d.mts +22 -0
- package/packages/ui/dist/components/alert-dialog.js +117 -0
- package/packages/ui/dist/components/alert-dialog.js.map +1 -0
- package/packages/ui/dist/components/alert.d.mts +28 -0
- package/packages/ui/dist/components/alert.js +140 -0
- package/packages/ui/dist/components/alert.js.map +1 -0
- package/packages/ui/dist/components/aspect-ratio.d.mts +7 -0
- package/packages/ui/dist/components/aspect-ratio.js +28 -0
- package/packages/ui/dist/components/aspect-ratio.js.map +1 -0
- package/packages/ui/dist/components/avatar-stack.d.mts +16 -0
- package/packages/ui/dist/components/avatar-stack.js +57 -0
- package/packages/ui/dist/components/avatar-stack.js.map +1 -0
- package/packages/ui/dist/components/avatar.d.mts +16 -0
- package/packages/ui/dist/components/avatar.js +108 -0
- package/packages/ui/dist/components/avatar.js.map +1 -0
- package/packages/ui/dist/components/badge.d.mts +16 -0
- package/packages/ui/dist/components/badge.js +61 -0
- package/packages/ui/dist/components/badge.js.map +1 -0
- package/packages/ui/dist/components/breadcrumb.d.mts +22 -0
- package/packages/ui/dist/components/breadcrumb.js +118 -0
- package/packages/ui/dist/components/breadcrumb.js.map +1 -0
- package/packages/ui/dist/components/button.d.mts +36 -0
- package/packages/ui/dist/components/button.js +204 -0
- package/packages/ui/dist/components/button.js.map +1 -0
- package/packages/ui/dist/components/calendar.d.mts +11 -0
- package/packages/ui/dist/components/calendar.js +27 -0
- package/packages/ui/dist/components/calendar.js.map +1 -0
- package/packages/ui/dist/components/card.d.mts +10 -0
- package/packages/ui/dist/components/card.js +84 -0
- package/packages/ui/dist/components/card.js.map +1 -0
- package/packages/ui/dist/components/carousel.d.mts +35 -0
- package/packages/ui/dist/components/carousel.js +362 -0
- package/packages/ui/dist/components/carousel.js.map +1 -0
- package/packages/ui/dist/components/chart.d.mts +88 -0
- package/packages/ui/dist/components/chart.js +249 -0
- package/packages/ui/dist/components/chart.js.map +1 -0
- package/packages/ui/dist/components/checkbox.d.mts +44 -0
- package/packages/ui/dist/components/checkbox.js +161 -0
- package/packages/ui/dist/components/checkbox.js.map +1 -0
- package/packages/ui/dist/components/combobox.d.mts +45 -0
- package/packages/ui/dist/components/combobox.js +148 -0
- package/packages/ui/dist/components/combobox.js.map +1 -0
- package/packages/ui/dist/components/command-menu.d.mts +88 -0
- package/packages/ui/dist/components/command-menu.js +414 -0
- package/packages/ui/dist/components/command-menu.js.map +1 -0
- package/packages/ui/dist/components/command.d.mts +84 -0
- package/packages/ui/dist/components/command.js +125 -0
- package/packages/ui/dist/components/command.js.map +1 -0
- package/packages/ui/dist/components/data-table.d.mts +23 -0
- package/packages/ui/dist/components/data-table.js +377 -0
- package/packages/ui/dist/components/data-table.js.map +1 -0
- package/packages/ui/dist/components/date-picker.d.mts +28 -0
- package/packages/ui/dist/components/date-picker.js +217 -0
- package/packages/ui/dist/components/date-picker.js.map +1 -0
- package/packages/ui/dist/components/dialog.d.mts +19 -0
- package/packages/ui/dist/components/dialog.js +146 -0
- package/packages/ui/dist/components/dialog.js.map +1 -0
- package/packages/ui/dist/components/drawer.d.mts +20 -0
- package/packages/ui/dist/components/drawer.js +159 -0
- package/packages/ui/dist/components/drawer.js.map +1 -0
- package/packages/ui/dist/components/hover-card.d.mts +9 -0
- package/packages/ui/dist/components/hover-card.js +35 -0
- package/packages/ui/dist/components/hover-card.js.map +1 -0
- package/packages/ui/dist/components/icon-button.d.mts +22 -0
- package/packages/ui/dist/components/icon-button.js +169 -0
- package/packages/ui/dist/components/icon-button.js.map +1 -0
- package/packages/ui/dist/components/input-file.d.mts +12 -0
- package/packages/ui/dist/components/input-file.js +209 -0
- package/packages/ui/dist/components/input-file.js.map +1 -0
- package/packages/ui/dist/components/input-otp.d.mts +85 -0
- package/packages/ui/dist/components/input-otp.js +254 -0
- package/packages/ui/dist/components/input-otp.js.map +1 -0
- package/packages/ui/dist/components/input.d.mts +17 -0
- package/packages/ui/dist/components/input.js +116 -0
- package/packages/ui/dist/components/input.js.map +1 -0
- package/packages/ui/dist/components/label.d.mts +14 -0
- package/packages/ui/dist/components/label.js +40 -0
- package/packages/ui/dist/components/label.js.map +1 -0
- package/packages/ui/dist/components/navigation-menu.d.mts +20 -0
- package/packages/ui/dist/components/navigation-menu.js +136 -0
- package/packages/ui/dist/components/navigation-menu.js.map +1 -0
- package/packages/ui/dist/components/pagination.d.mts +27 -0
- package/packages/ui/dist/components/pagination.js +159 -0
- package/packages/ui/dist/components/pagination.js.map +1 -0
- package/packages/ui/dist/components/popover.d.mts +9 -0
- package/packages/ui/dist/components/popover.js +34 -0
- package/packages/ui/dist/components/popover.js.map +1 -0
- package/packages/ui/dist/components/progress.d.mts +13 -0
- package/packages/ui/dist/components/progress.js +44 -0
- package/packages/ui/dist/components/progress.js.map +1 -0
- package/packages/ui/dist/components/radio-group.d.mts +42 -0
- package/packages/ui/dist/components/radio-group.js +125 -0
- package/packages/ui/dist/components/radio-group.js.map +1 -0
- package/packages/ui/dist/components/resizable.d.mts +9 -0
- package/packages/ui/dist/components/resizable.js +70 -0
- package/packages/ui/dist/components/resizable.js.map +1 -0
- package/packages/ui/dist/components/scroll-area.d.mts +15 -0
- package/packages/ui/dist/components/scroll-area.js +70 -0
- package/packages/ui/dist/components/scroll-area.js.map +1 -0
- package/packages/ui/dist/components/separator.d.mts +27 -0
- package/packages/ui/dist/components/separator.js +81 -0
- package/packages/ui/dist/components/separator.js.map +1 -0
- package/packages/ui/dist/components/sheet.d.mts +26 -0
- package/packages/ui/dist/components/sheet.js +158 -0
- package/packages/ui/dist/components/sheet.js.map +1 -0
- package/packages/ui/dist/components/sidebar.d.mts +63 -0
- package/packages/ui/dist/components/sidebar.js +271 -0
- package/packages/ui/dist/components/sidebar.js.map +1 -0
- package/packages/ui/dist/components/skeleton.d.mts +13 -0
- package/packages/ui/dist/components/skeleton.js +34 -0
- package/packages/ui/dist/components/skeleton.js.map +1 -0
- package/packages/ui/dist/components/slider.d.mts +7 -0
- package/packages/ui/dist/components/slider.js +70 -0
- package/packages/ui/dist/components/slider.js.map +1 -0
- package/packages/ui/dist/components/sonner.d.mts +8 -0
- package/packages/ui/dist/components/sonner.js +112 -0
- package/packages/ui/dist/components/sonner.js.map +1 -0
- package/packages/ui/dist/components/spinner.d.mts +6 -0
- package/packages/ui/dist/components/spinner.js +44 -0
- package/packages/ui/dist/components/spinner.js.map +1 -0
- package/packages/ui/dist/components/switch.d.mts +43 -0
- package/packages/ui/dist/components/switch.js +136 -0
- package/packages/ui/dist/components/switch.js.map +1 -0
- package/packages/ui/dist/components/table.d.mts +16 -0
- package/packages/ui/dist/components/table.js +115 -0
- package/packages/ui/dist/components/table.js.map +1 -0
- package/packages/ui/dist/components/tabs.d.mts +17 -0
- package/packages/ui/dist/components/tabs.js +104 -0
- package/packages/ui/dist/components/tabs.js.map +1 -0
- package/packages/ui/dist/components/textarea.d.mts +12 -0
- package/packages/ui/dist/components/textarea.js +76 -0
- package/packages/ui/dist/components/textarea.js.map +1 -0
- package/packages/ui/dist/components/tooltip.d.mts +17 -0
- package/packages/ui/dist/components/tooltip.js +46 -0
- package/packages/ui/dist/components/tooltip.js.map +1 -0
- package/packages/ui/dist/lib/utils.d.mts +5 -0
- package/packages/ui/dist/lib/utils.js +11 -0
- package/packages/ui/dist/lib/utils.js.map +1 -0
- package/packages/ui/dist/mycelia-ui.css +5545 -0
- package/packages/ui/postcss.config.mjs +6 -0
- package/packages/ui/src/styles/bundle-entry.css +2 -0
- package/packages/ui/src/styles/globals.css +651 -0
- package/scripts/prepare-build.mjs +32 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Children, isValidElement, cloneElement } from 'react';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
// src/components/avatar-stack.tsx
|
|
8
|
+
function cn(...inputs) {
|
|
9
|
+
return twMerge(clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
var avatarStackVariants = cva("flex items-center pr-2");
|
|
12
|
+
var avatarStackItemVariants = cva(
|
|
13
|
+
"box-border shrink-0 overflow-hidden rounded-full border-2 border-background bg-background -mr-2",
|
|
14
|
+
{
|
|
15
|
+
variants: {
|
|
16
|
+
size: {
|
|
17
|
+
small: "size-8",
|
|
18
|
+
regular: "size-10"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
defaultVariants: {
|
|
22
|
+
size: "small"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
function AvatarStack({
|
|
27
|
+
className,
|
|
28
|
+
size: sizeProp = "small",
|
|
29
|
+
children,
|
|
30
|
+
...props
|
|
31
|
+
}) {
|
|
32
|
+
const size = sizeProp ?? "small";
|
|
33
|
+
return /* @__PURE__ */ jsx(
|
|
34
|
+
"div",
|
|
35
|
+
{
|
|
36
|
+
"data-slot": "avatar-stack",
|
|
37
|
+
className: cn(avatarStackVariants(), className),
|
|
38
|
+
...props,
|
|
39
|
+
children: Children.map(children, (child, index) => /* @__PURE__ */ jsx("div", { className: avatarStackItemVariants({ size }), children: isValidElement(child) ? cloneElement(
|
|
40
|
+
child,
|
|
41
|
+
{
|
|
42
|
+
size,
|
|
43
|
+
shape: "round",
|
|
44
|
+
className: cn(
|
|
45
|
+
"size-full min-h-0 min-w-0 rounded-full",
|
|
46
|
+
child.props.className
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
) : child }, index))
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
AvatarStack.displayName = "AvatarStack";
|
|
54
|
+
|
|
55
|
+
export { AvatarStack, avatarStackItemVariants, avatarStackVariants };
|
|
56
|
+
//# sourceMappingURL=avatar-stack.js.map
|
|
57
|
+
//# sourceMappingURL=avatar-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/utils.ts","../../src/components/avatar-stack.tsx"],"names":[],"mappings":";;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACCA,IAAM,mBAAA,GAAsB,IAAI,wBAAwB;AAExD,IAAM,uBAAA,GAA0B,GAAA;AAAA,EAC9B,iGAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,MAAM,QAAA,GAAW,OAAA;AAAA,EACjB,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM,OAAO,QAAA,IAAY,OAAA;AACzB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAoB,EAAG,SAAS,CAAA;AAAA,MAC7C,GAAG,KAAA;AAAA,MAEH,mBAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,EAAO,0BAC9B,GAAA,CAAC,KAAA,EAAA,EAAgB,SAAA,EAAW,uBAAA,CAAwB,EAAE,IAAA,EAAM,CAAA,EACzD,QAAA,EAAA,cAAA,CAAe,KAAK,CAAA,GACjB,YAAA;AAAA,QACE,KAAA;AAAA,QAKA;AAAA,UACE,IAAA;AAAA,UACA,KAAA,EAAO,OAAA;AAAA,UACP,SAAA,EAAW,EAAA;AAAA,YACT,wCAAA;AAAA,YACC,MAAM,KAAA,CAAiC;AAAA;AAC1C;AACF,OACF,GACA,KAAA,EAAA,EAjBI,KAkBV,CACD;AAAA;AAAA,GACH;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"avatar-stack.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { Children, cloneElement, isValidElement } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../lib/utils.js\"\n\nconst avatarStackVariants = cva(\"flex items-center pr-2\")\n\nconst avatarStackItemVariants = cva(\n \"box-border shrink-0 overflow-hidden rounded-full border-2 border-background bg-background -mr-2\",\n {\n variants: {\n size: {\n small: \"size-8\",\n regular: \"size-10\",\n },\n },\n defaultVariants: {\n size: \"small\",\n },\n }\n)\n\nexport type AvatarStackProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof avatarStackItemVariants>\n\nfunction AvatarStack({\n className,\n size: sizeProp = \"small\",\n children,\n ...props\n}: AvatarStackProps) {\n const size = sizeProp ?? \"small\"\n return (\n <div\n data-slot=\"avatar-stack\"\n className={cn(avatarStackVariants(), className)}\n {...props}\n >\n {Children.map(children, (child, index) => (\n <div key={index} className={avatarStackItemVariants({ size })}>\n {isValidElement(child)\n ? cloneElement(\n child as React.ReactElement<{\n className?: string\n size?: \"regular\" | \"small\"\n shape?: \"round\" | \"roundrect\"\n }>,\n {\n size,\n shape: \"round\",\n className: cn(\n \"size-full min-h-0 min-w-0 rounded-full\",\n (child.props as { className?: string }).className\n ),\n }\n )\n : child}\n </div>\n ))}\n </div>\n )\n}\n\nAvatarStack.displayName = \"AvatarStack\"\n\nexport { AvatarStack, avatarStackItemVariants, avatarStackVariants }\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const avatarVariants: (props?: ({
|
|
6
|
+
size?: "small" | "regular" | null | undefined;
|
|
7
|
+
shape?: "round" | "roundrect" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
type AvatarProps = React.ComponentProps<"div"> & VariantProps<typeof avatarVariants>;
|
|
10
|
+
declare const Avatar: React.ForwardRefExoticComponent<Omit<AvatarProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
type AvatarImageProps = React.ComponentProps<"img">;
|
|
12
|
+
declare const AvatarImage: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "ref"> & React.RefAttributes<HTMLImageElement>>;
|
|
13
|
+
type AvatarFallbackProps = React.ComponentProps<"span">;
|
|
14
|
+
declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
15
|
+
|
|
16
|
+
export { Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarImageProps, type AvatarProps, avatarVariants };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
// src/components/avatar.tsx
|
|
8
|
+
function cn(...inputs) {
|
|
9
|
+
return twMerge(clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
var avatarVariants = cva(
|
|
12
|
+
"relative inline-flex shrink-0 overflow-hidden bg-[color:var(--mila-avatar-fallback-bg)] font-sans font-medium text-[color:var(--mila-avatar-fallback-fg)] select-none",
|
|
13
|
+
{
|
|
14
|
+
variants: {
|
|
15
|
+
size: {
|
|
16
|
+
regular: "size-10 text-sm tracking-[0.07px]",
|
|
17
|
+
small: "size-8 text-sm tracking-[0.07px]"
|
|
18
|
+
},
|
|
19
|
+
shape: {
|
|
20
|
+
round: "rounded-full",
|
|
21
|
+
roundrect: "rounded-lg"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
defaultVariants: {
|
|
25
|
+
size: "regular",
|
|
26
|
+
shape: "round"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
var AvatarContext = React.createContext(void 0);
|
|
31
|
+
function useAvatarContext(component) {
|
|
32
|
+
const ctx = React.useContext(AvatarContext);
|
|
33
|
+
if (!ctx) {
|
|
34
|
+
throw new Error(`${component} must be used within <Avatar>`);
|
|
35
|
+
}
|
|
36
|
+
return ctx;
|
|
37
|
+
}
|
|
38
|
+
var Avatar = React.forwardRef(function Avatar2({ className, size, shape, ...props }, ref) {
|
|
39
|
+
const [imageStatus, setImageStatus] = React.useState("idle");
|
|
40
|
+
const value = React.useMemo(
|
|
41
|
+
() => ({ imageStatus, setImageStatus }),
|
|
42
|
+
[imageStatus]
|
|
43
|
+
);
|
|
44
|
+
return /* @__PURE__ */ jsx(AvatarContext.Provider, { value, children: /* @__PURE__ */ jsx(
|
|
45
|
+
"div",
|
|
46
|
+
{
|
|
47
|
+
ref,
|
|
48
|
+
"data-slot": "avatar",
|
|
49
|
+
className: cn(avatarVariants({ size, shape }), className),
|
|
50
|
+
...props
|
|
51
|
+
}
|
|
52
|
+
) });
|
|
53
|
+
});
|
|
54
|
+
Avatar.displayName = "Avatar";
|
|
55
|
+
var AvatarImage = React.forwardRef(function AvatarImage2({ className, src, onLoad, onError, ...props }, ref) {
|
|
56
|
+
const { imageStatus, setImageStatus } = useAvatarContext("AvatarImage");
|
|
57
|
+
React.useEffect(() => {
|
|
58
|
+
setImageStatus("idle");
|
|
59
|
+
}, [src, setImageStatus]);
|
|
60
|
+
const visible = imageStatus === "loaded";
|
|
61
|
+
return /* @__PURE__ */ jsx(
|
|
62
|
+
"img",
|
|
63
|
+
{
|
|
64
|
+
ref,
|
|
65
|
+
"data-slot": "avatar-image",
|
|
66
|
+
src,
|
|
67
|
+
className: cn(
|
|
68
|
+
"absolute inset-0 z-10 aspect-square size-full object-cover",
|
|
69
|
+
!visible && "hidden",
|
|
70
|
+
className
|
|
71
|
+
),
|
|
72
|
+
onLoad: (e) => {
|
|
73
|
+
setImageStatus("loaded");
|
|
74
|
+
onLoad?.(e);
|
|
75
|
+
},
|
|
76
|
+
onError: (e) => {
|
|
77
|
+
setImageStatus("error");
|
|
78
|
+
onError?.(e);
|
|
79
|
+
},
|
|
80
|
+
...props
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
});
|
|
84
|
+
AvatarImage.displayName = "AvatarImage";
|
|
85
|
+
var AvatarFallback = React.forwardRef(
|
|
86
|
+
function AvatarFallback2({ className, ...props }, ref) {
|
|
87
|
+
const { imageStatus } = useAvatarContext("AvatarFallback");
|
|
88
|
+
const visible = imageStatus !== "loaded";
|
|
89
|
+
return /* @__PURE__ */ jsx(
|
|
90
|
+
"span",
|
|
91
|
+
{
|
|
92
|
+
ref,
|
|
93
|
+
"data-slot": "avatar-fallback",
|
|
94
|
+
className: cn(
|
|
95
|
+
"absolute inset-0 z-0 flex items-center justify-center",
|
|
96
|
+
!visible && "hidden",
|
|
97
|
+
className
|
|
98
|
+
),
|
|
99
|
+
...props
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
AvatarFallback.displayName = "AvatarFallback";
|
|
105
|
+
|
|
106
|
+
export { Avatar, AvatarFallback, AvatarImage, avatarVariants };
|
|
107
|
+
//# sourceMappingURL=avatar.js.map
|
|
108
|
+
//# sourceMappingURL=avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/utils.ts","../../src/components/avatar.tsx"],"names":["Avatar","AvatarImage","AvatarFallback"],"mappings":"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","file":"avatar.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../lib/utils.js\"\n\nconst avatarVariants = cva(\n \"relative inline-flex shrink-0 overflow-hidden bg-[color:var(--mila-avatar-fallback-bg)] font-sans font-medium text-[color:var(--mila-avatar-fallback-fg)] select-none\",\n {\n variants: {\n size: {\n regular: \"size-10 text-sm tracking-[0.07px]\",\n small: \"size-8 text-sm tracking-[0.07px]\",\n },\n shape: {\n round: \"rounded-full\",\n roundrect: \"rounded-lg\",\n },\n },\n defaultVariants: {\n size: \"regular\",\n shape: \"round\",\n },\n }\n)\n\ntype AvatarContextValue = {\n imageStatus: \"idle\" | \"loaded\" | \"error\"\n setImageStatus: React.Dispatch<React.SetStateAction<\"idle\" | \"loaded\" | \"error\">>\n}\n\nconst AvatarContext = React.createContext<AvatarContextValue | undefined>(undefined)\n\nfunction useAvatarContext(component: string) {\n const ctx = React.useContext(AvatarContext)\n if (!ctx) {\n throw new Error(`${component} must be used within <Avatar>`)\n }\n return ctx\n}\n\nexport type AvatarProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof avatarVariants>\n\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n { className, size, shape, ...props },\n ref\n) {\n const [imageStatus, setImageStatus] = React.useState<\"idle\" | \"loaded\" | \"error\">(\"idle\")\n\n const value = React.useMemo(\n () => ({ imageStatus, setImageStatus }),\n [imageStatus]\n )\n\n return (\n <AvatarContext.Provider value={value}>\n <div\n ref={ref}\n data-slot=\"avatar\"\n className={cn(avatarVariants({ size, shape }), className)}\n {...props}\n />\n </AvatarContext.Provider>\n )\n})\nAvatar.displayName = \"Avatar\"\n\nexport type AvatarImageProps = React.ComponentProps<\"img\">\n\nconst AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>(function AvatarImage(\n { className, src, onLoad, onError, ...props },\n ref\n) {\n const { imageStatus, setImageStatus } = useAvatarContext(\"AvatarImage\")\n\n React.useEffect(() => {\n setImageStatus(\"idle\")\n }, [src, setImageStatus])\n\n const visible = imageStatus === \"loaded\"\n\n return (\n <img\n ref={ref}\n data-slot=\"avatar-image\"\n src={src}\n className={cn(\n \"absolute inset-0 z-10 aspect-square size-full object-cover\",\n !visible && \"hidden\",\n className\n )}\n onLoad={(e) => {\n setImageStatus(\"loaded\")\n onLoad?.(e)\n }}\n onError={(e) => {\n setImageStatus(\"error\")\n onError?.(e)\n }}\n {...props}\n />\n )\n})\nAvatarImage.displayName = \"AvatarImage\"\n\nexport type AvatarFallbackProps = React.ComponentProps<\"span\">\n\nconst AvatarFallback = React.forwardRef<HTMLSpanElement, AvatarFallbackProps>(\n function AvatarFallback({ className, ...props }, ref) {\n const { imageStatus } = useAvatarContext(\"AvatarFallback\")\n const visible = imageStatus !== \"loaded\"\n\n return (\n <span\n ref={ref}\n data-slot=\"avatar-fallback\"\n className={cn(\n \"absolute inset-0 z-0 flex items-center justify-center\",\n !visible && \"hidden\",\n className\n )}\n {...props}\n />\n )\n }\n)\nAvatarFallback.displayName = \"AvatarFallback\"\n\nexport { Avatar, AvatarImage, AvatarFallback, avatarVariants }\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const badgeVariants: (props?: ({
|
|
6
|
+
variant?: "primary" | "secondary" | "outline" | "ghost" | "destructive" | "errorNumber" | "info" | null | undefined;
|
|
7
|
+
layout?: "default" | "dot" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
declare const badgeIconClass = "size-3 shrink-0 [&_svg]:size-3";
|
|
10
|
+
type BadgeProps = React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
|
|
11
|
+
startIcon?: React.ReactNode;
|
|
12
|
+
endIcon?: React.ReactNode;
|
|
13
|
+
};
|
|
14
|
+
declare const Badge: React.ForwardRefExoticComponent<Omit<BadgeProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
15
|
+
|
|
16
|
+
export { Badge, type BadgeProps, badgeIconClass, badgeVariants };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
// src/components/badge.tsx
|
|
8
|
+
function cn(...inputs) {
|
|
9
|
+
return twMerge(clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
var badgeVariants = cva(
|
|
12
|
+
[
|
|
13
|
+
"inline-flex min-h-6 shrink-0 items-center justify-center gap-1.5 rounded-lg px-2 py-[3px]",
|
|
14
|
+
"font-sans text-xs font-medium leading-normal tracking-[0.18px] whitespace-nowrap",
|
|
15
|
+
"transition-[box-shadow,color,background-color,border-color]",
|
|
16
|
+
"focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[color:var(--mila-input-ring-focus)]"
|
|
17
|
+
],
|
|
18
|
+
{
|
|
19
|
+
variants: {
|
|
20
|
+
variant: {
|
|
21
|
+
primary: "bg-[color:var(--mila-badge-primary-bg)] text-[color:var(--mila-badge-primary-fg)]",
|
|
22
|
+
secondary: "bg-[color:var(--mila-badge-secondary-bg)] text-[color:var(--mila-badge-secondary-fg)]",
|
|
23
|
+
outline: "border border-solid border-[color:var(--mila-badge-outline-border)] bg-transparent text-[color:var(--mila-badge-secondary-fg)]",
|
|
24
|
+
ghost: "bg-transparent text-[color:var(--mila-badge-secondary-fg)]",
|
|
25
|
+
destructive: "bg-[color:var(--mila-badge-destructive-bg)] text-[color:var(--mila-badge-destructive-fg)]",
|
|
26
|
+
errorNumber: "border border-solid border-[color:var(--mila-badge-error-number-border)] bg-[color:var(--mila-badge-error-number-bg)] text-[color:var(--mila-badge-error-number-fg)] focus-visible:text-[color:var(--mila-badge-error-number-fg-focus)]",
|
|
27
|
+
info: "bg-[color:var(--mila-badge-info-bg)] text-[color:var(--mila-badge-info-fg)]"
|
|
28
|
+
},
|
|
29
|
+
layout: {
|
|
30
|
+
default: "",
|
|
31
|
+
dot: "size-6 min-h-6 min-w-6 gap-0 rounded-full p-0 px-0 leading-none"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
defaultVariants: {
|
|
35
|
+
variant: "primary",
|
|
36
|
+
layout: "default"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
var badgeIconClass = "size-3 shrink-0 [&_svg]:size-3";
|
|
41
|
+
var Badge = React.forwardRef(function Badge2({ className, variant, layout, startIcon, endIcon, children, ...props }, ref) {
|
|
42
|
+
return /* @__PURE__ */ jsxs(
|
|
43
|
+
"span",
|
|
44
|
+
{
|
|
45
|
+
ref,
|
|
46
|
+
"data-slot": "badge",
|
|
47
|
+
className: cn(badgeVariants({ variant, layout }), className),
|
|
48
|
+
...props,
|
|
49
|
+
children: [
|
|
50
|
+
startIcon ? /* @__PURE__ */ jsx("span", { className: badgeIconClass, children: startIcon }) : null,
|
|
51
|
+
children,
|
|
52
|
+
endIcon ? /* @__PURE__ */ jsx("span", { className: badgeIconClass, children: endIcon }) : null
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
});
|
|
57
|
+
Badge.displayName = "Badge";
|
|
58
|
+
|
|
59
|
+
export { Badge, badgeIconClass, badgeVariants };
|
|
60
|
+
//# sourceMappingURL=badge.js.map
|
|
61
|
+
//# sourceMappingURL=badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/utils.ts","../../src/components/badge.tsx"],"names":["Badge"],"mappings":";;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACAA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB;AAAA,IACE,2FAAA;AAAA,IACA,kFAAA;AAAA,IACA,6DAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,mFAAA;AAAA,QACF,SAAA,EACE,uFAAA;AAAA,QACF,OAAA,EACE,gIAAA;AAAA,QACF,KAAA,EAAO,4DAAA;AAAA,QACP,WAAA,EACE,2FAAA;AAAA,QACF,WAAA,EACE,yOAAA;AAAA,QACF,IAAA,EAAM;AAAA,OACR;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,GAAA,EAAK;AAAA;AACP,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,MAAA,EAAQ;AAAA;AACV;AAEJ;AAEA,IAAM,cAAA,GAAiB;AAQvB,IAAM,KAAA,GAAc,KAAA,CAAA,UAAA,CAAwC,SAASA,MAAAA,CACnE,EAAE,SAAA,EAAW,OAAA,EAAS,MAAA,EAAQ,SAAA,EAAW,OAAA,EAAS,QAAA,EAAU,GAAG,KAAA,IAC/D,GAAA,EACA;AACA,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,GAAG,aAAA,CAAc,EAAE,SAAS,MAAA,EAAQ,GAAG,SAAS,CAAA;AAAA,MAC1D,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,SAAA,mBAAY,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAA,EAAiB,qBAAU,CAAA,GAAU,IAAA;AAAA,QAClE,QAAA;AAAA,QACA,0BAAU,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAA,EAAiB,mBAAQ,CAAA,GAAU;AAAA;AAAA;AAAA,GACjE;AAEJ,CAAC;AACD,KAAA,CAAM,WAAA,GAAc,OAAA","file":"badge.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../lib/utils.js\"\n\nconst badgeVariants = cva(\n [\n \"inline-flex min-h-6 shrink-0 items-center justify-center gap-1.5 rounded-lg px-2 py-[3px]\",\n \"font-sans text-xs font-medium leading-normal tracking-[0.18px] whitespace-nowrap\",\n \"transition-[box-shadow,color,background-color,border-color]\",\n \"focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[color:var(--mila-input-ring-focus)]\",\n ],\n {\n variants: {\n variant: {\n primary:\n \"bg-[color:var(--mila-badge-primary-bg)] text-[color:var(--mila-badge-primary-fg)]\",\n secondary:\n \"bg-[color:var(--mila-badge-secondary-bg)] text-[color:var(--mila-badge-secondary-fg)]\",\n outline:\n \"border border-solid border-[color:var(--mila-badge-outline-border)] bg-transparent text-[color:var(--mila-badge-secondary-fg)]\",\n ghost: \"bg-transparent text-[color:var(--mila-badge-secondary-fg)]\",\n destructive:\n \"bg-[color:var(--mila-badge-destructive-bg)] text-[color:var(--mila-badge-destructive-fg)]\",\n errorNumber:\n \"border border-solid border-[color:var(--mila-badge-error-number-border)] bg-[color:var(--mila-badge-error-number-bg)] text-[color:var(--mila-badge-error-number-fg)] focus-visible:text-[color:var(--mila-badge-error-number-fg-focus)]\",\n info: \"bg-[color:var(--mila-badge-info-bg)] text-[color:var(--mila-badge-info-fg)]\",\n },\n layout: {\n default: \"\",\n dot: \"size-6 min-h-6 min-w-6 gap-0 rounded-full p-0 px-0 leading-none\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n layout: \"default\",\n },\n }\n)\n\nconst badgeIconClass = \"size-3 shrink-0 [&_svg]:size-3\"\n\nexport type BadgeProps = React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & {\n startIcon?: React.ReactNode\n endIcon?: React.ReactNode\n }\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { className, variant, layout, startIcon, endIcon, children, ...props },\n ref\n) {\n return (\n <span\n ref={ref}\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant, layout }), className)}\n {...props}\n >\n {startIcon ? <span className={badgeIconClass}>{startIcon}</span> : null}\n {children}\n {endIcon ? <span className={badgeIconClass}>{endIcon}</span> : null}\n </span>\n )\n})\nBadge.displayName = \"Badge\"\n\nexport { Badge, badgeVariants, badgeIconClass }\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
|
|
4
|
+
declare function Breadcrumb({ className, ...props }: React.ComponentPropsWithoutRef<"nav">): react_jsx_runtime.JSX.Element;
|
|
5
|
+
declare const BreadcrumbList: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "ref"> & React.RefAttributes<HTMLOListElement>>;
|
|
6
|
+
declare const BreadcrumbItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
|
|
7
|
+
type BreadcrumbLinkProps = React.ComponentPropsWithoutRef<"a"> & {
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const BreadcrumbLink: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & {
|
|
11
|
+
asChild?: boolean;
|
|
12
|
+
} & React.RefAttributes<HTMLAnchorElement>>;
|
|
13
|
+
declare const BreadcrumbPage: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
14
|
+
type BreadcrumbSeparatorProps = React.ComponentPropsWithoutRef<"li"> & {
|
|
15
|
+
variant?: "chevron" | "slash";
|
|
16
|
+
};
|
|
17
|
+
declare const BreadcrumbSeparator: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & {
|
|
18
|
+
variant?: "chevron" | "slash";
|
|
19
|
+
} & React.RefAttributes<HTMLLIElement>>;
|
|
20
|
+
declare const BreadcrumbEllipsis: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
21
|
+
|
|
22
|
+
export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, type BreadcrumbSeparatorProps };
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
3
|
+
import { Slash, ChevronRight, MoreHorizontal } from 'lucide-react';
|
|
4
|
+
import { clsx } from 'clsx';
|
|
5
|
+
import { twMerge } from 'tailwind-merge';
|
|
6
|
+
import { jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function cn(...inputs) {
|
|
9
|
+
return twMerge(clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
function Breadcrumb({ className, ...props }) {
|
|
12
|
+
return /* @__PURE__ */ jsx("nav", { "aria-label": "Breadcrumb", "data-slot": "breadcrumb", className: cn("", className), ...props });
|
|
13
|
+
}
|
|
14
|
+
var BreadcrumbList = React.forwardRef(
|
|
15
|
+
function BreadcrumbList2({ className, ...props }, ref) {
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
"ol",
|
|
18
|
+
{
|
|
19
|
+
ref,
|
|
20
|
+
"data-slot": "breadcrumb-list",
|
|
21
|
+
className: cn(
|
|
22
|
+
"flex min-h-9 list-none flex-wrap items-center gap-2 px-3 py-0 font-sans text-sm font-medium leading-[1.5] tracking-[0.07px]",
|
|
23
|
+
className
|
|
24
|
+
),
|
|
25
|
+
...props
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
BreadcrumbList.displayName = "BreadcrumbList";
|
|
31
|
+
var BreadcrumbItem = React.forwardRef(
|
|
32
|
+
function BreadcrumbItem2({ className, ...props }, ref) {
|
|
33
|
+
return /* @__PURE__ */ jsx(
|
|
34
|
+
"li",
|
|
35
|
+
{
|
|
36
|
+
ref,
|
|
37
|
+
"data-slot": "breadcrumb-item",
|
|
38
|
+
className: cn("inline-flex items-center", className),
|
|
39
|
+
...props
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
45
|
+
var BreadcrumbLink = React.forwardRef(function BreadcrumbLink2({ className, asChild, ...props }, ref) {
|
|
46
|
+
const Comp = asChild ? Slot : "a";
|
|
47
|
+
return /* @__PURE__ */ jsx(
|
|
48
|
+
Comp,
|
|
49
|
+
{
|
|
50
|
+
ref,
|
|
51
|
+
"data-slot": "breadcrumb-link",
|
|
52
|
+
className: cn(
|
|
53
|
+
"rounded-sm text-[color:var(--mila-breadcrumb-muted-fg)] outline-none transition-colors",
|
|
54
|
+
"hover:text-[color:var(--mila-breadcrumb-current-fg)]",
|
|
55
|
+
"focus-visible:ring-2 focus-visible:ring-[color:var(--mila-input-ring-focus)] focus-visible:ring-offset-0",
|
|
56
|
+
className
|
|
57
|
+
),
|
|
58
|
+
...props
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
});
|
|
62
|
+
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
63
|
+
var BreadcrumbPage = React.forwardRef(
|
|
64
|
+
function BreadcrumbPage2({ className, ...props }, ref) {
|
|
65
|
+
return /* @__PURE__ */ jsx(
|
|
66
|
+
"span",
|
|
67
|
+
{
|
|
68
|
+
ref,
|
|
69
|
+
"aria-current": "page",
|
|
70
|
+
"data-slot": "breadcrumb-page",
|
|
71
|
+
className: cn("font-medium text-[color:var(--mila-breadcrumb-current-fg)]", className),
|
|
72
|
+
...props
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
78
|
+
var BreadcrumbSeparator = React.forwardRef(
|
|
79
|
+
function BreadcrumbSeparator2({ className, variant = "chevron", children, ...props }, ref) {
|
|
80
|
+
return /* @__PURE__ */ jsx(
|
|
81
|
+
"li",
|
|
82
|
+
{
|
|
83
|
+
ref,
|
|
84
|
+
role: "presentation",
|
|
85
|
+
"aria-hidden": "true",
|
|
86
|
+
"data-slot": "breadcrumb-separator",
|
|
87
|
+
className: cn("[&_svg]:size-4 text-[color:var(--mila-breadcrumb-separator-fg)]", className),
|
|
88
|
+
...props,
|
|
89
|
+
children: children ?? (variant === "slash" ? /* @__PURE__ */ jsx(Slash, { className: "shrink-0", "aria-hidden": true }) : /* @__PURE__ */ jsx(ChevronRight, { className: "shrink-0", "aria-hidden": true }))
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
95
|
+
var BreadcrumbEllipsis = React.forwardRef(
|
|
96
|
+
function BreadcrumbEllipsis2({ className, ...props }, ref) {
|
|
97
|
+
return /* @__PURE__ */ jsx(
|
|
98
|
+
"span",
|
|
99
|
+
{
|
|
100
|
+
ref,
|
|
101
|
+
role: "presentation",
|
|
102
|
+
"aria-hidden": "true",
|
|
103
|
+
"data-slot": "breadcrumb-ellipsis",
|
|
104
|
+
className: cn(
|
|
105
|
+
"inline-flex size-4 shrink-0 items-center justify-center text-[color:var(--mila-breadcrumb-muted-fg)]",
|
|
106
|
+
className
|
|
107
|
+
),
|
|
108
|
+
...props,
|
|
109
|
+
children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4 shrink-0", "aria-hidden": true })
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
|
|
115
|
+
|
|
116
|
+
export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
|
|
117
|
+
//# sourceMappingURL=breadcrumb.js.map
|
|
118
|
+
//# sourceMappingURL=breadcrumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/utils.ts","../../src/components/breadcrumb.tsx"],"names":["BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis"],"mappings":"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","file":"breadcrumb.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal, Slash } from \"lucide-react\"\n\nimport { cn } from \"../lib/utils.js\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentPropsWithoutRef<\"nav\">) {\n return (\n <nav aria-label=\"Breadcrumb\" data-slot=\"breadcrumb\" className={cn(\"\", className)} {...props} />\n )\n}\n\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<\"ol\">>(\n function BreadcrumbList({ className, ...props }, ref) {\n return (\n <ol\n ref={ref}\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex min-h-9 list-none flex-wrap items-center gap-2 px-3 py-0 font-sans text-sm font-medium leading-[1.5] tracking-[0.07px]\",\n className\n )}\n {...props}\n />\n )\n }\n)\nBreadcrumbList.displayName = \"BreadcrumbList\"\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<\"li\">>(\n function BreadcrumbItem({ className, ...props }, ref) {\n return (\n <li\n ref={ref}\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center\", className)}\n {...props}\n />\n )\n }\n)\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nexport type BreadcrumbLinkProps = React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean\n}\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(function BreadcrumbLink(\n { className, asChild, ...props },\n ref\n) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref as React.Ref<HTMLAnchorElement>}\n data-slot=\"breadcrumb-link\"\n className={cn(\n \"rounded-sm text-[color:var(--mila-breadcrumb-muted-fg)] outline-none transition-colors\",\n \"hover:text-[color:var(--mila-breadcrumb-current-fg)]\",\n \"focus-visible:ring-2 focus-visible:ring-[color:var(--mila-input-ring-focus)] focus-visible:ring-offset-0\",\n className\n )}\n {...props}\n />\n )\n})\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<\"span\">>(\n function BreadcrumbPage({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n aria-current=\"page\"\n data-slot=\"breadcrumb-page\"\n className={cn(\"font-medium text-[color:var(--mila-breadcrumb-current-fg)]\", className)}\n {...props}\n />\n )\n }\n)\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n\nexport type BreadcrumbSeparatorProps = React.ComponentPropsWithoutRef<\"li\"> & {\n variant?: \"chevron\" | \"slash\"\n}\n\nconst BreadcrumbSeparator = React.forwardRef<HTMLLIElement, BreadcrumbSeparatorProps>(\n function BreadcrumbSeparator({ className, variant = \"chevron\", children, ...props }, ref) {\n return (\n <li\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n data-slot=\"breadcrumb-separator\"\n className={cn(\"[&_svg]:size-4 text-[color:var(--mila-breadcrumb-separator-fg)]\", className)}\n {...props}\n >\n {children ??\n (variant === \"slash\" ? (\n <Slash className=\"shrink-0\" aria-hidden />\n ) : (\n <ChevronRight className=\"shrink-0\" aria-hidden />\n ))}\n </li>\n )\n }\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n\nconst BreadcrumbEllipsis = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<\"span\">>(\n function BreadcrumbEllipsis({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n data-slot=\"breadcrumb-ellipsis\"\n className={cn(\n \"inline-flex size-4 shrink-0 items-center justify-center text-[color:var(--mila-breadcrumb-muted-fg)]\",\n className\n )}\n {...props}\n >\n <MoreHorizontal className=\"size-4 shrink-0\" aria-hidden />\n </span>\n )\n }\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\"\n\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const buttonVariants: (props?: ({
|
|
6
|
+
variant?: "link" | "primary" | "secondary" | "outline" | "ghost" | "destructive" | null | undefined;
|
|
7
|
+
size?: "default" | "lg" | "sm" | "mini" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
declare const buttonIconSlotClass = "inline-flex shrink-0 items-center justify-center";
|
|
10
|
+
type ButtonProps = VariantProps<typeof buttonVariants> & {
|
|
11
|
+
asChild?: boolean;
|
|
12
|
+
startIcon?: React.ReactNode;
|
|
13
|
+
endIcon?: React.ReactNode;
|
|
14
|
+
/** Shows spinner, disables interaction; Figma MILA loading button (node 274:43182). */
|
|
15
|
+
loading?: boolean;
|
|
16
|
+
className?: string;
|
|
17
|
+
} & Omit<React.ComponentPropsWithoutRef<"button">, "className"> & Omit<React.ComponentPropsWithoutRef<"a">, "className"> & {
|
|
18
|
+
/** Renders as `<a>`; defaults variant to `link` when `variant` is omitted (Figma node 274:52937). */
|
|
19
|
+
href?: string;
|
|
20
|
+
};
|
|
21
|
+
declare const Button: React.ForwardRefExoticComponent<VariantProps<(props?: ({
|
|
22
|
+
variant?: "link" | "primary" | "secondary" | "outline" | "ghost" | "destructive" | null | undefined;
|
|
23
|
+
size?: "default" | "lg" | "sm" | "mini" | null | undefined;
|
|
24
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string> & {
|
|
25
|
+
asChild?: boolean;
|
|
26
|
+
startIcon?: React.ReactNode;
|
|
27
|
+
endIcon?: React.ReactNode;
|
|
28
|
+
/** Shows spinner, disables interaction; Figma MILA loading button (node 274:43182). */
|
|
29
|
+
loading?: boolean;
|
|
30
|
+
className?: string;
|
|
31
|
+
} & Omit<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "className"> & Omit<Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref">, "className"> & {
|
|
32
|
+
/** Renders as `<a>`; defaults variant to `link` when `variant` is omitted (Figma node 274:52937). */
|
|
33
|
+
href?: string;
|
|
34
|
+
} & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
|
|
35
|
+
|
|
36
|
+
export { Button, type ButtonProps, buttonIconSlotClass, buttonVariants };
|