@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.
Files changed (149) hide show
  1. package/README.md +187 -0
  2. package/mycelia-ui.css +5545 -0
  3. package/package.json +127 -0
  4. package/packages/ui/dist/components/accordion.d.mts +9 -0
  5. package/packages/ui/dist/components/accordion.js +74 -0
  6. package/packages/ui/dist/components/accordion.js.map +1 -0
  7. package/packages/ui/dist/components/alert-dialog.d.mts +22 -0
  8. package/packages/ui/dist/components/alert-dialog.js +117 -0
  9. package/packages/ui/dist/components/alert-dialog.js.map +1 -0
  10. package/packages/ui/dist/components/alert.d.mts +28 -0
  11. package/packages/ui/dist/components/alert.js +140 -0
  12. package/packages/ui/dist/components/alert.js.map +1 -0
  13. package/packages/ui/dist/components/aspect-ratio.d.mts +7 -0
  14. package/packages/ui/dist/components/aspect-ratio.js +28 -0
  15. package/packages/ui/dist/components/aspect-ratio.js.map +1 -0
  16. package/packages/ui/dist/components/avatar-stack.d.mts +16 -0
  17. package/packages/ui/dist/components/avatar-stack.js +57 -0
  18. package/packages/ui/dist/components/avatar-stack.js.map +1 -0
  19. package/packages/ui/dist/components/avatar.d.mts +16 -0
  20. package/packages/ui/dist/components/avatar.js +108 -0
  21. package/packages/ui/dist/components/avatar.js.map +1 -0
  22. package/packages/ui/dist/components/badge.d.mts +16 -0
  23. package/packages/ui/dist/components/badge.js +61 -0
  24. package/packages/ui/dist/components/badge.js.map +1 -0
  25. package/packages/ui/dist/components/breadcrumb.d.mts +22 -0
  26. package/packages/ui/dist/components/breadcrumb.js +118 -0
  27. package/packages/ui/dist/components/breadcrumb.js.map +1 -0
  28. package/packages/ui/dist/components/button.d.mts +36 -0
  29. package/packages/ui/dist/components/button.js +204 -0
  30. package/packages/ui/dist/components/button.js.map +1 -0
  31. package/packages/ui/dist/components/calendar.d.mts +11 -0
  32. package/packages/ui/dist/components/calendar.js +27 -0
  33. package/packages/ui/dist/components/calendar.js.map +1 -0
  34. package/packages/ui/dist/components/card.d.mts +10 -0
  35. package/packages/ui/dist/components/card.js +84 -0
  36. package/packages/ui/dist/components/card.js.map +1 -0
  37. package/packages/ui/dist/components/carousel.d.mts +35 -0
  38. package/packages/ui/dist/components/carousel.js +362 -0
  39. package/packages/ui/dist/components/carousel.js.map +1 -0
  40. package/packages/ui/dist/components/chart.d.mts +88 -0
  41. package/packages/ui/dist/components/chart.js +249 -0
  42. package/packages/ui/dist/components/chart.js.map +1 -0
  43. package/packages/ui/dist/components/checkbox.d.mts +44 -0
  44. package/packages/ui/dist/components/checkbox.js +161 -0
  45. package/packages/ui/dist/components/checkbox.js.map +1 -0
  46. package/packages/ui/dist/components/combobox.d.mts +45 -0
  47. package/packages/ui/dist/components/combobox.js +148 -0
  48. package/packages/ui/dist/components/combobox.js.map +1 -0
  49. package/packages/ui/dist/components/command-menu.d.mts +88 -0
  50. package/packages/ui/dist/components/command-menu.js +414 -0
  51. package/packages/ui/dist/components/command-menu.js.map +1 -0
  52. package/packages/ui/dist/components/command.d.mts +84 -0
  53. package/packages/ui/dist/components/command.js +125 -0
  54. package/packages/ui/dist/components/command.js.map +1 -0
  55. package/packages/ui/dist/components/data-table.d.mts +23 -0
  56. package/packages/ui/dist/components/data-table.js +377 -0
  57. package/packages/ui/dist/components/data-table.js.map +1 -0
  58. package/packages/ui/dist/components/date-picker.d.mts +28 -0
  59. package/packages/ui/dist/components/date-picker.js +217 -0
  60. package/packages/ui/dist/components/date-picker.js.map +1 -0
  61. package/packages/ui/dist/components/dialog.d.mts +19 -0
  62. package/packages/ui/dist/components/dialog.js +146 -0
  63. package/packages/ui/dist/components/dialog.js.map +1 -0
  64. package/packages/ui/dist/components/drawer.d.mts +20 -0
  65. package/packages/ui/dist/components/drawer.js +159 -0
  66. package/packages/ui/dist/components/drawer.js.map +1 -0
  67. package/packages/ui/dist/components/hover-card.d.mts +9 -0
  68. package/packages/ui/dist/components/hover-card.js +35 -0
  69. package/packages/ui/dist/components/hover-card.js.map +1 -0
  70. package/packages/ui/dist/components/icon-button.d.mts +22 -0
  71. package/packages/ui/dist/components/icon-button.js +169 -0
  72. package/packages/ui/dist/components/icon-button.js.map +1 -0
  73. package/packages/ui/dist/components/input-file.d.mts +12 -0
  74. package/packages/ui/dist/components/input-file.js +209 -0
  75. package/packages/ui/dist/components/input-file.js.map +1 -0
  76. package/packages/ui/dist/components/input-otp.d.mts +85 -0
  77. package/packages/ui/dist/components/input-otp.js +254 -0
  78. package/packages/ui/dist/components/input-otp.js.map +1 -0
  79. package/packages/ui/dist/components/input.d.mts +17 -0
  80. package/packages/ui/dist/components/input.js +116 -0
  81. package/packages/ui/dist/components/input.js.map +1 -0
  82. package/packages/ui/dist/components/label.d.mts +14 -0
  83. package/packages/ui/dist/components/label.js +40 -0
  84. package/packages/ui/dist/components/label.js.map +1 -0
  85. package/packages/ui/dist/components/navigation-menu.d.mts +20 -0
  86. package/packages/ui/dist/components/navigation-menu.js +136 -0
  87. package/packages/ui/dist/components/navigation-menu.js.map +1 -0
  88. package/packages/ui/dist/components/pagination.d.mts +27 -0
  89. package/packages/ui/dist/components/pagination.js +159 -0
  90. package/packages/ui/dist/components/pagination.js.map +1 -0
  91. package/packages/ui/dist/components/popover.d.mts +9 -0
  92. package/packages/ui/dist/components/popover.js +34 -0
  93. package/packages/ui/dist/components/popover.js.map +1 -0
  94. package/packages/ui/dist/components/progress.d.mts +13 -0
  95. package/packages/ui/dist/components/progress.js +44 -0
  96. package/packages/ui/dist/components/progress.js.map +1 -0
  97. package/packages/ui/dist/components/radio-group.d.mts +42 -0
  98. package/packages/ui/dist/components/radio-group.js +125 -0
  99. package/packages/ui/dist/components/radio-group.js.map +1 -0
  100. package/packages/ui/dist/components/resizable.d.mts +9 -0
  101. package/packages/ui/dist/components/resizable.js +70 -0
  102. package/packages/ui/dist/components/resizable.js.map +1 -0
  103. package/packages/ui/dist/components/scroll-area.d.mts +15 -0
  104. package/packages/ui/dist/components/scroll-area.js +70 -0
  105. package/packages/ui/dist/components/scroll-area.js.map +1 -0
  106. package/packages/ui/dist/components/separator.d.mts +27 -0
  107. package/packages/ui/dist/components/separator.js +81 -0
  108. package/packages/ui/dist/components/separator.js.map +1 -0
  109. package/packages/ui/dist/components/sheet.d.mts +26 -0
  110. package/packages/ui/dist/components/sheet.js +158 -0
  111. package/packages/ui/dist/components/sheet.js.map +1 -0
  112. package/packages/ui/dist/components/sidebar.d.mts +63 -0
  113. package/packages/ui/dist/components/sidebar.js +271 -0
  114. package/packages/ui/dist/components/sidebar.js.map +1 -0
  115. package/packages/ui/dist/components/skeleton.d.mts +13 -0
  116. package/packages/ui/dist/components/skeleton.js +34 -0
  117. package/packages/ui/dist/components/skeleton.js.map +1 -0
  118. package/packages/ui/dist/components/slider.d.mts +7 -0
  119. package/packages/ui/dist/components/slider.js +70 -0
  120. package/packages/ui/dist/components/slider.js.map +1 -0
  121. package/packages/ui/dist/components/sonner.d.mts +8 -0
  122. package/packages/ui/dist/components/sonner.js +112 -0
  123. package/packages/ui/dist/components/sonner.js.map +1 -0
  124. package/packages/ui/dist/components/spinner.d.mts +6 -0
  125. package/packages/ui/dist/components/spinner.js +44 -0
  126. package/packages/ui/dist/components/spinner.js.map +1 -0
  127. package/packages/ui/dist/components/switch.d.mts +43 -0
  128. package/packages/ui/dist/components/switch.js +136 -0
  129. package/packages/ui/dist/components/switch.js.map +1 -0
  130. package/packages/ui/dist/components/table.d.mts +16 -0
  131. package/packages/ui/dist/components/table.js +115 -0
  132. package/packages/ui/dist/components/table.js.map +1 -0
  133. package/packages/ui/dist/components/tabs.d.mts +17 -0
  134. package/packages/ui/dist/components/tabs.js +104 -0
  135. package/packages/ui/dist/components/tabs.js.map +1 -0
  136. package/packages/ui/dist/components/textarea.d.mts +12 -0
  137. package/packages/ui/dist/components/textarea.js +76 -0
  138. package/packages/ui/dist/components/textarea.js.map +1 -0
  139. package/packages/ui/dist/components/tooltip.d.mts +17 -0
  140. package/packages/ui/dist/components/tooltip.js +46 -0
  141. package/packages/ui/dist/components/tooltip.js.map +1 -0
  142. package/packages/ui/dist/lib/utils.d.mts +5 -0
  143. package/packages/ui/dist/lib/utils.js +11 -0
  144. package/packages/ui/dist/lib/utils.js.map +1 -0
  145. package/packages/ui/dist/mycelia-ui.css +5545 -0
  146. package/packages/ui/postcss.config.mjs +6 -0
  147. package/packages/ui/src/styles/bundle-entry.css +2 -0
  148. package/packages/ui/src/styles/globals.css +651 -0
  149. 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 };