@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
package/package.json
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mila_studios/mycelia-design-system",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"private": false,
|
|
6
|
+
"packageManager": "npm@10.9.2",
|
|
7
|
+
"sideEffects": [
|
|
8
|
+
"**/*.css"
|
|
9
|
+
],
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/mila-studios/mila-design-components.git"
|
|
13
|
+
},
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public",
|
|
16
|
+
"registry": "https://registry.npmjs.org/"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "cd packages/ui && tsup && postcss ./src/styles/bundle-entry.css -o ./dist/mycelia-ui.css && cp ./dist/mycelia-ui.css ../../mycelia-ui.css",
|
|
20
|
+
"prepare": "node scripts/prepare-build.mjs",
|
|
21
|
+
"prepack": "npm run build",
|
|
22
|
+
"dev:demo:css": "postcss ./packages/ui/src/demo/styles.css -o ./packages/ui/demo-public/styles.css --watch",
|
|
23
|
+
"dev:demo:js": "esbuild packages/ui/src/demo/main.tsx --bundle --outfile=packages/ui/demo-public/bundle.js --format=esm --jsx=automatic --loader:.tsx=tsx --watch --servedir=packages/ui/demo-public",
|
|
24
|
+
"dev:demo": "concurrently -k -n css,js \"npm run dev:demo:css\" \"npm run dev:demo:js\"",
|
|
25
|
+
"dev": "npm run dev:demo",
|
|
26
|
+
"demo:build": "postcss ./packages/ui/src/demo/styles.css -o ./packages/ui/demo-dist/styles.css && esbuild packages/ui/src/demo/main.tsx --bundle --outfile=packages/ui/demo-dist/bundle.js --format=esm --jsx=automatic --loader:.tsx=tsx --minify && cp packages/ui/demo-public/index.html packages/ui/demo-dist/index.html",
|
|
27
|
+
"demo:preview": "serve packages/ui/demo-dist -l 4173",
|
|
28
|
+
"lint": "cd packages/ui && eslint .",
|
|
29
|
+
"format": "prettier --write \"packages/ui/**/*.{ts,tsx}\"",
|
|
30
|
+
"typecheck": "cd packages/ui && tsc --noEmit"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
34
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@radix-ui/react-aspect-ratio": "^1.1.7",
|
|
38
|
+
"@radix-ui/react-checkbox": "^1.3.3",
|
|
39
|
+
"@radix-ui/react-hover-card": "^1.1.15",
|
|
40
|
+
"@radix-ui/react-radio-group": "^1.3.8",
|
|
41
|
+
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
42
|
+
"@radix-ui/react-separator": "^1.1.7",
|
|
43
|
+
"@radix-ui/react-slot": "^1.2.3",
|
|
44
|
+
"@radix-ui/react-tooltip": "^1.2.8",
|
|
45
|
+
"@tanstack/react-table": "^8.21.3",
|
|
46
|
+
"class-variance-authority": "^0.7.1",
|
|
47
|
+
"clsx": "^2.1.1",
|
|
48
|
+
"cmdk": "^1.1.1",
|
|
49
|
+
"date-fns": "^4.1.0",
|
|
50
|
+
"embla-carousel-react": "^8.6.0",
|
|
51
|
+
"input-otp": "^1.4.2",
|
|
52
|
+
"lucide-react": "^1.7.0",
|
|
53
|
+
"next-themes": "^0.4.6",
|
|
54
|
+
"radix-ui": "^1.4.3",
|
|
55
|
+
"react-day-picker": "^9.14.0",
|
|
56
|
+
"react-resizable-panels": "^2.1.9",
|
|
57
|
+
"recharts": "^2.15.4",
|
|
58
|
+
"shadcn": "^4.1.0",
|
|
59
|
+
"sonner": "^2.0.7",
|
|
60
|
+
"tailwind-merge": "^3.5.0",
|
|
61
|
+
"tw-animate-css": "^1.4.0",
|
|
62
|
+
"zod": "^3.25.76"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
66
|
+
"@semantic-release/git": "^10.0.1",
|
|
67
|
+
"@tailwindcss/postcss": "^4.1.18",
|
|
68
|
+
"@types/node": "^25.1.0",
|
|
69
|
+
"@types/react": "^19.2.10",
|
|
70
|
+
"@types/react-dom": "^19.2.3",
|
|
71
|
+
"@workspace/eslint-config": "*",
|
|
72
|
+
"@workspace/typescript-config": "*",
|
|
73
|
+
"concurrently": "^9.2.1",
|
|
74
|
+
"esbuild": "^0.25.8",
|
|
75
|
+
"eslint": "^9.39.2",
|
|
76
|
+
"postcss": "^8.5.6",
|
|
77
|
+
"postcss-cli": "^11.0.1",
|
|
78
|
+
"prettier": "^3.8.1",
|
|
79
|
+
"prettier-plugin-tailwindcss": "^0.7.2",
|
|
80
|
+
"react": "^19.2.4",
|
|
81
|
+
"react-dom": "^19.2.4",
|
|
82
|
+
"semantic-release": "^24.2.9",
|
|
83
|
+
"serve": "^14.2.5",
|
|
84
|
+
"tailwindcss": "^4.1.18",
|
|
85
|
+
"tinyglobby": "^0.2.15",
|
|
86
|
+
"tsup": "^8.5.0",
|
|
87
|
+
"turbo": "^2.8.17",
|
|
88
|
+
"typescript": "5.9.3"
|
|
89
|
+
},
|
|
90
|
+
"exports": {
|
|
91
|
+
"./package.json": "./package.json",
|
|
92
|
+
"./styles.css": {
|
|
93
|
+
"import": "./mycelia-ui.css",
|
|
94
|
+
"default": "./mycelia-ui.css"
|
|
95
|
+
},
|
|
96
|
+
"./mycelia-ui.css": {
|
|
97
|
+
"import": "./mycelia-ui.css",
|
|
98
|
+
"default": "./mycelia-ui.css"
|
|
99
|
+
},
|
|
100
|
+
"./globals.css": "./packages/ui/src/styles/globals.css",
|
|
101
|
+
"./postcss.config": "./packages/ui/postcss.config.mjs",
|
|
102
|
+
"./lib/*": {
|
|
103
|
+
"types": "./packages/ui/dist/lib/*.d.mts",
|
|
104
|
+
"import": "./packages/ui/dist/lib/*.js",
|
|
105
|
+
"default": "./packages/ui/dist/lib/*.js"
|
|
106
|
+
},
|
|
107
|
+
"./components/*": {
|
|
108
|
+
"types": "./packages/ui/dist/components/*.d.mts",
|
|
109
|
+
"import": "./packages/ui/dist/components/*.js",
|
|
110
|
+
"default": "./packages/ui/dist/components/*.js"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"files": [
|
|
114
|
+
"mycelia-ui.css",
|
|
115
|
+
"packages/ui/dist",
|
|
116
|
+
"packages/ui/src/styles",
|
|
117
|
+
"packages/ui/postcss.config.mjs",
|
|
118
|
+
"scripts/prepare-build.mjs"
|
|
119
|
+
],
|
|
120
|
+
"engines": {
|
|
121
|
+
"node": ">=20"
|
|
122
|
+
},
|
|
123
|
+
"workspaces": [
|
|
124
|
+
"packages/eslint-config",
|
|
125
|
+
"packages/typescript-config"
|
|
126
|
+
]
|
|
127
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Accordion as Accordion$1 } from 'radix-ui';
|
|
3
|
+
|
|
4
|
+
declare const Accordion: React.ForwardRefExoticComponent<(Accordion$1.AccordionSingleProps | Accordion$1.AccordionMultipleProps) & React.RefAttributes<HTMLDivElement>>;
|
|
5
|
+
declare const AccordionItem: React.ForwardRefExoticComponent<Omit<Accordion$1.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<Accordion$1.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
declare const AccordionContent: React.ForwardRefExoticComponent<Omit<Accordion$1.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
|
|
9
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Accordion as Accordion$1 } from 'radix-ui';
|
|
3
|
+
import { ChevronDown } from 'lucide-react';
|
|
4
|
+
import { clsx } from 'clsx';
|
|
5
|
+
import { twMerge } from 'tailwind-merge';
|
|
6
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function cn(...inputs) {
|
|
9
|
+
return twMerge(clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
var Accordion = Accordion$1.Root;
|
|
12
|
+
var AccordionItem = React.forwardRef(function AccordionItem2({ className, ...props }, ref) {
|
|
13
|
+
return /* @__PURE__ */ jsx(
|
|
14
|
+
Accordion$1.Item,
|
|
15
|
+
{
|
|
16
|
+
ref,
|
|
17
|
+
"data-slot": "accordion-item",
|
|
18
|
+
className: cn(
|
|
19
|
+
"border-b border-solid border-[color:var(--mila-accordion-border)] last:border-b-0",
|
|
20
|
+
className
|
|
21
|
+
),
|
|
22
|
+
...props
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
});
|
|
26
|
+
AccordionItem.displayName = "AccordionItem";
|
|
27
|
+
var AccordionTrigger = React.forwardRef(function AccordionTrigger2({ className, children, ...props }, ref) {
|
|
28
|
+
return /* @__PURE__ */ jsx(Accordion$1.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
29
|
+
Accordion$1.Trigger,
|
|
30
|
+
{
|
|
31
|
+
ref,
|
|
32
|
+
"data-slot": "accordion-trigger",
|
|
33
|
+
className: cn(
|
|
34
|
+
"flex flex-1 items-center gap-2 rounded-lg border-2 border-transparent py-[13.5px] text-left font-sans text-sm font-medium leading-[1.5] tracking-[0.07px] text-[color:var(--mila-accordion-trigger-fg)] outline-none transition-[color,border-color]",
|
|
35
|
+
"focus-visible:border-solid focus-visible:border-[color:var(--mila-accordion-trigger-focus-border)]",
|
|
36
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
37
|
+
"[&[data-state=open]>svg]:rotate-180",
|
|
38
|
+
className
|
|
39
|
+
),
|
|
40
|
+
...props,
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1", children }),
|
|
43
|
+
/* @__PURE__ */ jsx(
|
|
44
|
+
ChevronDown,
|
|
45
|
+
{
|
|
46
|
+
className: "pointer-events-none size-4 shrink-0 transition-transform duration-200",
|
|
47
|
+
"aria-hidden": true
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
) });
|
|
53
|
+
});
|
|
54
|
+
AccordionTrigger.displayName = "AccordionTrigger";
|
|
55
|
+
var AccordionContent = React.forwardRef(function AccordionContent2({ className, children, ...props }, ref) {
|
|
56
|
+
return /* @__PURE__ */ jsx(
|
|
57
|
+
Accordion$1.Content,
|
|
58
|
+
{
|
|
59
|
+
ref,
|
|
60
|
+
"data-slot": "accordion-content",
|
|
61
|
+
className: cn(
|
|
62
|
+
"overflow-hidden font-sans text-sm font-medium leading-[1.5] tracking-[0.07px] text-[color:var(--mila-accordion-content-fg)]",
|
|
63
|
+
"data-[state=closed]:animate-mila-accordion-up data-[state=open]:animate-mila-accordion-down"
|
|
64
|
+
),
|
|
65
|
+
...props,
|
|
66
|
+
children: /* @__PURE__ */ jsx("div", { className: cn("pb-4 pt-0", className), children })
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
AccordionContent.displayName = "AccordionContent";
|
|
71
|
+
|
|
72
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
|
|
73
|
+
//# sourceMappingURL=accordion.js.map
|
|
74
|
+
//# sourceMappingURL=accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/utils.ts","../../src/components/accordion.tsx"],"names":["AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent"],"mappings":";;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACGA,IAAM,YAAYA,WAAA,CAAmB;AAErC,IAAM,aAAA,GAAsB,iBAG1B,SAASC,cAAAA,CAAc,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACrD,EAAA,uBACE,GAAA;AAAA,IAACD,WAAA,CAAmB,IAAA;AAAA,IAAnB;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,mFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,gBAAA,GAAyB,KAAA,CAAA,UAAA,CAG7B,SAASE,iBAAAA,CAAiB,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAClE,EAAA,uBACE,GAAA,CAACF,WAAA,CAAmB,MAAA,EAAnB,EAA0B,WAAU,MAAA,EACnC,QAAA,kBAAA,IAAA;AAAA,IAACA,WAAA,CAAmB,OAAA;AAAA,IAAnB;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,sPAAA;AAAA,QACA,oGAAA;AAAA,QACA,kDAAA;AAAA,QACA,qCAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAS,CAAA;AAAA,wBAC3C,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,uEAAA;AAAA,YACV,aAAA,EAAW;AAAA;AAAA;AACb;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAC;AACD,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAE/B,IAAM,gBAAA,GAAyB,KAAA,CAAA,UAAA,CAG7B,SAASG,iBAAAA,CAAiB,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAClE,EAAA,uBACE,GAAA;AAAA,IAACH,WAAA,CAAmB,OAAA;AAAA,IAAnB;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6HAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,8BAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,GAAI,QAAA,EAAS;AAAA;AAAA,GACxD;AAEJ,CAAC;AACD,gBAAA,CAAiB,WAAA,GAAc,kBAAA","file":"accordion.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 { Accordion as AccordionPrimitive } from \"radix-ui\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../lib/utils.js\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(function AccordionItem({ className, ...props }, ref) {\n return (\n <AccordionPrimitive.Item\n ref={ref}\n data-slot=\"accordion-item\"\n className={cn(\n \"border-b border-solid border-[color:var(--mila-accordion-border)] last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n})\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(function AccordionTrigger({ className, children, ...props }, ref) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n data-slot=\"accordion-trigger\"\n className={cn(\n \"flex flex-1 items-center gap-2 rounded-lg border-2 border-transparent py-[13.5px] text-left font-sans text-sm font-medium leading-[1.5] tracking-[0.07px] text-[color:var(--mila-accordion-trigger-fg)] outline-none transition-[color,border-color]\",\n \"focus-visible:border-solid focus-visible:border-[color:var(--mila-accordion-trigger-focus-border)]\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n <span className=\"min-w-0 flex-1\">{children}</span>\n <ChevronDown\n className=\"pointer-events-none size-4 shrink-0 transition-transform duration-200\"\n aria-hidden\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n})\nAccordionTrigger.displayName = \"AccordionTrigger\"\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(function AccordionContent({ className, children, ...props }, ref) {\n return (\n <AccordionPrimitive.Content\n ref={ref}\n data-slot=\"accordion-content\"\n className={cn(\n \"overflow-hidden font-sans text-sm font-medium leading-[1.5] tracking-[0.07px] text-[color:var(--mila-accordion-content-fg)]\",\n \"data-[state=closed]:animate-mila-accordion-up data-[state=open]:animate-mila-accordion-down\"\n )}\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n})\nAccordionContent.displayName = \"AccordionContent\"\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { AlertDialog as AlertDialog$1 } from 'radix-ui';
|
|
3
|
+
|
|
4
|
+
declare const AlertDialog: React.FC<AlertDialog$1.AlertDialogProps>;
|
|
5
|
+
declare const AlertDialogTrigger: React.ForwardRefExoticComponent<AlertDialog$1.AlertDialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
6
|
+
declare const AlertDialogPortal: React.FC<AlertDialog$1.AlertDialogPortalProps>;
|
|
7
|
+
declare const AlertDialogOverlay: React.ForwardRefExoticComponent<Omit<AlertDialog$1.AlertDialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
declare const AlertDialogContent: React.ForwardRefExoticComponent<Omit<AlertDialog$1.AlertDialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare const AlertDialogHeader: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
declare const AlertDialogFooter: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
11
|
+
/**
|
|
12
|
+
* Destructive flows (Figma mobile): stack with primary action first; desktop shows Cancel left, action right.
|
|
13
|
+
* Pass children in order: `AlertDialogAction` (destructive), then `AlertDialogCancel`.
|
|
14
|
+
*/
|
|
15
|
+
destructiveOrder?: boolean;
|
|
16
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
17
|
+
declare const AlertDialogTitle: React.ForwardRefExoticComponent<Omit<AlertDialog$1.AlertDialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
18
|
+
declare const AlertDialogDescription: React.ForwardRefExoticComponent<Omit<AlertDialog$1.AlertDialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
19
|
+
declare const AlertDialogAction: React.ForwardRefExoticComponent<AlertDialog$1.AlertDialogActionProps & React.RefAttributes<HTMLButtonElement>>;
|
|
20
|
+
declare const AlertDialogCancel: React.ForwardRefExoticComponent<AlertDialog$1.AlertDialogCancelProps & React.RefAttributes<HTMLButtonElement>>;
|
|
21
|
+
|
|
22
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { AlertDialog as AlertDialog$1 } from 'radix-ui';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function cn(...inputs) {
|
|
8
|
+
return twMerge(clsx(inputs));
|
|
9
|
+
}
|
|
10
|
+
var AlertDialog = AlertDialog$1.AlertDialog;
|
|
11
|
+
var AlertDialogTrigger = AlertDialog$1.AlertDialogTrigger;
|
|
12
|
+
var AlertDialogPortal = AlertDialog$1.AlertDialogPortal;
|
|
13
|
+
var AlertDialogOverlay = React.forwardRef(function AlertDialogOverlay2({ className, ...props }, ref) {
|
|
14
|
+
return /* @__PURE__ */ jsx(
|
|
15
|
+
AlertDialog$1.AlertDialogOverlay,
|
|
16
|
+
{
|
|
17
|
+
ref,
|
|
18
|
+
"data-slot": "alert-dialog-overlay",
|
|
19
|
+
className: cn(
|
|
20
|
+
"fixed inset-0 z-50 bg-[color:var(--mila-dialog-overlay-bg)]",
|
|
21
|
+
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
|
|
22
|
+
className
|
|
23
|
+
),
|
|
24
|
+
...props
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
});
|
|
28
|
+
AlertDialogOverlay.displayName = "AlertDialogOverlay";
|
|
29
|
+
var AlertDialogContent = React.forwardRef(function AlertDialogContent2({ className, children, ...props }, ref) {
|
|
30
|
+
return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
31
|
+
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
32
|
+
/* @__PURE__ */ jsx(
|
|
33
|
+
AlertDialog$1.AlertDialogContent,
|
|
34
|
+
{
|
|
35
|
+
ref,
|
|
36
|
+
"data-slot": "alert-dialog-content",
|
|
37
|
+
className: cn(
|
|
38
|
+
"fixed left-[50%] top-[50%] z-50 flex w-[calc(100vw-2rem)] max-w-[320px] translate-x-[-50%] translate-y-[-50%] flex-col gap-4 rounded-[16px] border border-solid border-[color:var(--mila-alert-dialog-border)] bg-[color:var(--mila-alert-dialog-bg)] p-8 shadow-[var(--mila-alert-dialog-shadow)] outline-none sm:max-w-[480px]",
|
|
39
|
+
"focus-visible:ring-[3px] focus-visible:ring-[color:var(--mila-alert-dialog-content-focus-ring)] focus-visible:ring-offset-0",
|
|
40
|
+
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
|
|
41
|
+
className
|
|
42
|
+
),
|
|
43
|
+
...props,
|
|
44
|
+
children
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
] });
|
|
48
|
+
});
|
|
49
|
+
AlertDialogContent.displayName = "AlertDialogContent";
|
|
50
|
+
var AlertDialogHeader = React.forwardRef(
|
|
51
|
+
function AlertDialogHeader2({ className, ...props }, ref) {
|
|
52
|
+
return /* @__PURE__ */ jsx(
|
|
53
|
+
"div",
|
|
54
|
+
{
|
|
55
|
+
ref,
|
|
56
|
+
"data-slot": "alert-dialog-header",
|
|
57
|
+
className: cn("flex flex-col gap-4", className),
|
|
58
|
+
...props
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
AlertDialogHeader.displayName = "AlertDialogHeader";
|
|
64
|
+
var AlertDialogFooter = React.forwardRef(
|
|
65
|
+
function AlertDialogFooter2({ className, destructiveOrder = false, ...props }, ref) {
|
|
66
|
+
return /* @__PURE__ */ jsx(
|
|
67
|
+
"div",
|
|
68
|
+
{
|
|
69
|
+
ref,
|
|
70
|
+
"data-slot": "alert-dialog-footer",
|
|
71
|
+
className: cn(
|
|
72
|
+
"flex w-full gap-2",
|
|
73
|
+
destructiveOrder ? "flex-col sm:flex-row-reverse sm:justify-start [&>*]:w-full sm:[&>*]:w-auto" : "flex-col sm:flex-row sm:justify-end [&>*]:w-full sm:[&>*]:w-auto",
|
|
74
|
+
className
|
|
75
|
+
),
|
|
76
|
+
...props
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
82
|
+
var AlertDialogTitle = React.forwardRef(function AlertDialogTitle2({ className, ...props }, ref) {
|
|
83
|
+
return /* @__PURE__ */ jsx(
|
|
84
|
+
AlertDialog$1.AlertDialogTitle,
|
|
85
|
+
{
|
|
86
|
+
ref,
|
|
87
|
+
"data-slot": "alert-dialog-title",
|
|
88
|
+
className: cn(
|
|
89
|
+
"text-center font-sans text-[20px] font-semibold leading-[1.2] tracking-[-0.4px] text-[color:var(--mila-alert-dialog-title-fg)] sm:text-left",
|
|
90
|
+
className
|
|
91
|
+
),
|
|
92
|
+
...props
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
});
|
|
96
|
+
AlertDialogTitle.displayName = "AlertDialogTitle";
|
|
97
|
+
var AlertDialogDescription = React.forwardRef(function AlertDialogDescription2({ className, ...props }, ref) {
|
|
98
|
+
return /* @__PURE__ */ jsx(
|
|
99
|
+
AlertDialog$1.AlertDialogDescription,
|
|
100
|
+
{
|
|
101
|
+
ref,
|
|
102
|
+
"data-slot": "alert-dialog-description",
|
|
103
|
+
className: cn(
|
|
104
|
+
"text-center font-sans text-sm font-medium leading-[1.5] tracking-[0.07px] text-[color:var(--mila-alert-dialog-description-fg)] sm:text-left",
|
|
105
|
+
className
|
|
106
|
+
),
|
|
107
|
+
...props
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
});
|
|
111
|
+
AlertDialogDescription.displayName = "AlertDialogDescription";
|
|
112
|
+
var AlertDialogAction = AlertDialog$1.AlertDialogAction;
|
|
113
|
+
var AlertDialogCancel = AlertDialog$1.AlertDialogCancel;
|
|
114
|
+
|
|
115
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
|
|
116
|
+
//# sourceMappingURL=alert-dialog.js.map
|
|
117
|
+
//# sourceMappingURL=alert-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/utils.ts","../../src/components/alert-dialog.tsx"],"names":["AlertDialogPrimitive","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription"],"mappings":"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","file":"alert-dialog.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 { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../lib/utils.js\"\n\nconst AlertDialog = AlertDialogPrimitive.AlertDialog\n\nconst AlertDialogTrigger = AlertDialogPrimitive.AlertDialogTrigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.AlertDialogPortal\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.AlertDialogOverlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.AlertDialogOverlay>\n>(function AlertDialogOverlay({ className, ...props }, ref) {\n return (\n <AlertDialogPrimitive.AlertDialogOverlay\n ref={ref}\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-[color:var(--mila-dialog-overlay-bg)]\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n})\nAlertDialogOverlay.displayName = \"AlertDialogOverlay\"\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.AlertDialogContent>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.AlertDialogContent>\n>(function AlertDialogContent({ className, children, ...props }, ref) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.AlertDialogContent\n ref={ref}\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 flex w-[calc(100vw-2rem)] max-w-[320px] translate-x-[-50%] translate-y-[-50%] flex-col gap-4 rounded-[16px] border border-solid border-[color:var(--mila-alert-dialog-border)] bg-[color:var(--mila-alert-dialog-bg)] p-8 shadow-[var(--mila-alert-dialog-shadow)] outline-none sm:max-w-[480px]\",\n \"focus-visible:ring-[3px] focus-visible:ring-[color:var(--mila-alert-dialog-content-focus-ring)] focus-visible:ring-offset-0\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n >\n {children}\n </AlertDialogPrimitive.AlertDialogContent>\n </AlertDialogPortal>\n )\n})\nAlertDialogContent.displayName = \"AlertDialogContent\"\n\nconst AlertDialogHeader = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<\"div\">>(\n function AlertDialogHeader({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-4\", className)}\n {...props}\n />\n )\n }\n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\ntype AlertDialogFooterProps = React.ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Destructive flows (Figma mobile): stack with primary action first; desktop shows Cancel left, action right.\n * Pass children in order: `AlertDialogAction` (destructive), then `AlertDialogCancel`.\n */\n destructiveOrder?: boolean\n}\n\nconst AlertDialogFooter = React.forwardRef<HTMLDivElement, AlertDialogFooterProps>(\n function AlertDialogFooter({ className, destructiveOrder = false, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex w-full gap-2\",\n destructiveOrder\n ? \"flex-col sm:flex-row-reverse sm:justify-start [&>*]:w-full sm:[&>*]:w-auto\"\n : \"flex-col sm:flex-row sm:justify-end [&>*]:w-full sm:[&>*]:w-auto\",\n className\n )}\n {...props}\n />\n )\n }\n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.AlertDialogTitle>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.AlertDialogTitle>\n>(function AlertDialogTitle({ className, ...props }, ref) {\n return (\n <AlertDialogPrimitive.AlertDialogTitle\n ref={ref}\n data-slot=\"alert-dialog-title\"\n className={cn(\n \"text-center font-sans text-[20px] font-semibold leading-[1.2] tracking-[-0.4px] text-[color:var(--mila-alert-dialog-title-fg)] sm:text-left\",\n className\n )}\n {...props}\n />\n )\n})\nAlertDialogTitle.displayName = \"AlertDialogTitle\"\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.AlertDialogDescription>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.AlertDialogDescription>\n>(function AlertDialogDescription({ className, ...props }, ref) {\n return (\n <AlertDialogPrimitive.AlertDialogDescription\n ref={ref}\n data-slot=\"alert-dialog-description\"\n className={cn(\n \"text-center font-sans text-sm font-medium leading-[1.5] tracking-[0.07px] text-[color:var(--mila-alert-dialog-description-fg)] sm:text-left\",\n className\n )}\n {...props}\n />\n )\n})\nAlertDialogDescription.displayName = \"AlertDialogDescription\"\n\nconst AlertDialogAction = AlertDialogPrimitive.AlertDialogAction\n\nconst AlertDialogCancel = AlertDialogPrimitive.AlertDialogCancel\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { VariantProps } from 'class-variance-authority';
|
|
5
|
+
|
|
6
|
+
declare const alertVariants: (props?: ({
|
|
7
|
+
variant?: "neutral" | "error" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
type AlertProps = React.ComponentProps<"div"> & VariantProps<typeof alertVariants> & {
|
|
10
|
+
icon?: React.ReactNode;
|
|
11
|
+
/** Figma “Flip icon”: icon after the text block (still inside the main row). */
|
|
12
|
+
iconPlacement?: "start" | "end";
|
|
13
|
+
action?: React.ReactNode;
|
|
14
|
+
};
|
|
15
|
+
declare const Alert: React.ForwardRefExoticComponent<Omit<AlertProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
16
|
+
type AlertIconProps = React.ComponentProps<"div">;
|
|
17
|
+
declare const AlertIcon: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
type AlertTitleProps = React.ComponentProps<"p">;
|
|
19
|
+
declare const AlertTitle: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
20
|
+
type AlertDescriptionProps = React.ComponentProps<"p">;
|
|
21
|
+
declare const AlertDescription: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
22
|
+
type AlertActionProps = React.ComponentProps<"div">;
|
|
23
|
+
declare function AlertAction({ className, ...props }: AlertActionProps): react_jsx_runtime.JSX.Element;
|
|
24
|
+
declare namespace AlertAction {
|
|
25
|
+
var displayName: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { Alert, AlertAction, type AlertActionProps, AlertDescription, type AlertDescriptionProps, AlertIcon, type AlertIconProps, type AlertProps, AlertTitle, type AlertTitleProps, alertVariants };
|
|
@@ -0,0 +1,140 @@
|
|
|
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, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
// src/components/alert.tsx
|
|
8
|
+
function cn(...inputs) {
|
|
9
|
+
return twMerge(clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
var alertVariants = cva(
|
|
12
|
+
"flex w-full items-center gap-4 rounded-lg border border-solid bg-background p-4 font-sans",
|
|
13
|
+
{
|
|
14
|
+
variants: {
|
|
15
|
+
variant: {
|
|
16
|
+
neutral: "border-[color:var(--mila-alert-border)]",
|
|
17
|
+
error: "border-[color:var(--mila-alert-border)]"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
defaultVariants: {
|
|
21
|
+
variant: "neutral"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
var AlertContext = React.createContext(null);
|
|
26
|
+
function useAlertContext(component) {
|
|
27
|
+
const ctx = React.useContext(AlertContext);
|
|
28
|
+
if (!ctx) {
|
|
29
|
+
throw new Error(`${component} must be used within <Alert>`);
|
|
30
|
+
}
|
|
31
|
+
return ctx;
|
|
32
|
+
}
|
|
33
|
+
var Alert = React.forwardRef(function Alert2({
|
|
34
|
+
className,
|
|
35
|
+
variant: variantProp = "neutral",
|
|
36
|
+
icon,
|
|
37
|
+
iconPlacement = "start",
|
|
38
|
+
action,
|
|
39
|
+
children,
|
|
40
|
+
role = "alert",
|
|
41
|
+
...props
|
|
42
|
+
}, ref) {
|
|
43
|
+
const variant = variantProp ?? "neutral";
|
|
44
|
+
const value = React.useMemo(() => ({ variant }), [variant]);
|
|
45
|
+
const iconSlot = icon ? /* @__PURE__ */ jsx(
|
|
46
|
+
"div",
|
|
47
|
+
{
|
|
48
|
+
"data-slot": "alert-icon",
|
|
49
|
+
className: cn(
|
|
50
|
+
"flex shrink-0 items-center pt-[3px] [&_svg]:size-4 [&_svg]:shrink-0",
|
|
51
|
+
variant === "error" && "text-[color:var(--mila-alert-error-fg)]",
|
|
52
|
+
variant === "neutral" && "text-foreground"
|
|
53
|
+
),
|
|
54
|
+
children: icon
|
|
55
|
+
}
|
|
56
|
+
) : null;
|
|
57
|
+
return /* @__PURE__ */ jsx(AlertContext.Provider, { value, children: /* @__PURE__ */ jsxs(
|
|
58
|
+
"div",
|
|
59
|
+
{
|
|
60
|
+
ref,
|
|
61
|
+
role,
|
|
62
|
+
"data-slot": "alert",
|
|
63
|
+
className: cn(alertVariants({ variant }), className),
|
|
64
|
+
...props,
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 items-start gap-3", children: [
|
|
67
|
+
iconPlacement === "start" ? iconSlot : null,
|
|
68
|
+
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 flex-col gap-px text-sm font-medium leading-normal tracking-[0.07px]", children }),
|
|
69
|
+
iconPlacement === "end" ? iconSlot : null
|
|
70
|
+
] }),
|
|
71
|
+
action ? /* @__PURE__ */ jsx("div", { "data-slot": "alert-action", className: "shrink-0", children: action }) : null
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
) });
|
|
75
|
+
});
|
|
76
|
+
Alert.displayName = "Alert";
|
|
77
|
+
var AlertIcon = React.forwardRef(function AlertIcon2({ className, ...props }, ref) {
|
|
78
|
+
const { variant } = useAlertContext("AlertIcon");
|
|
79
|
+
return /* @__PURE__ */ jsx(
|
|
80
|
+
"div",
|
|
81
|
+
{
|
|
82
|
+
ref,
|
|
83
|
+
"data-slot": "alert-icon",
|
|
84
|
+
className: cn(
|
|
85
|
+
"flex shrink-0 items-center pt-[3px] [&_svg]:size-4 [&_svg]:shrink-0",
|
|
86
|
+
variant === "error" && "text-[color:var(--mila-alert-error-fg)]",
|
|
87
|
+
variant === "neutral" && "text-foreground",
|
|
88
|
+
className
|
|
89
|
+
),
|
|
90
|
+
...props
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
});
|
|
94
|
+
AlertIcon.displayName = "AlertIcon";
|
|
95
|
+
var AlertTitle = React.forwardRef(function AlertTitle2({ className, ...props }, ref) {
|
|
96
|
+
const { variant } = useAlertContext("AlertTitle");
|
|
97
|
+
return /* @__PURE__ */ jsx(
|
|
98
|
+
"p",
|
|
99
|
+
{
|
|
100
|
+
ref,
|
|
101
|
+
"data-slot": "alert-title",
|
|
102
|
+
className: cn(
|
|
103
|
+
"w-full shrink-0 font-medium",
|
|
104
|
+
variant === "neutral" && "text-[color:var(--mila-alert-neutral-title)]",
|
|
105
|
+
variant === "error" && "text-[color:var(--mila-alert-error-fg)]",
|
|
106
|
+
className
|
|
107
|
+
),
|
|
108
|
+
...props
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
});
|
|
112
|
+
AlertTitle.displayName = "AlertTitle";
|
|
113
|
+
var AlertDescription = React.forwardRef(
|
|
114
|
+
function AlertDescription2({ className, ...props }, ref) {
|
|
115
|
+
const { variant } = useAlertContext("AlertDescription");
|
|
116
|
+
return /* @__PURE__ */ jsx(
|
|
117
|
+
"p",
|
|
118
|
+
{
|
|
119
|
+
ref,
|
|
120
|
+
"data-slot": "alert-description",
|
|
121
|
+
className: cn(
|
|
122
|
+
"w-full shrink-0 font-medium",
|
|
123
|
+
variant === "neutral" && "text-[color:var(--mila-alert-neutral-description)]",
|
|
124
|
+
variant === "error" && "text-[color:var(--mila-alert-error-fg)]",
|
|
125
|
+
className
|
|
126
|
+
),
|
|
127
|
+
...props
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
);
|
|
132
|
+
AlertDescription.displayName = "AlertDescription";
|
|
133
|
+
function AlertAction({ className, ...props }) {
|
|
134
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "alert-action", className: cn("shrink-0", className), ...props });
|
|
135
|
+
}
|
|
136
|
+
AlertAction.displayName = "AlertAction";
|
|
137
|
+
|
|
138
|
+
export { Alert, AlertAction, AlertDescription, AlertIcon, AlertTitle, alertVariants };
|
|
139
|
+
//# sourceMappingURL=alert.js.map
|
|
140
|
+
//# sourceMappingURL=alert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/utils.ts","../../src/components/alert.tsx"],"names":["Alert","AlertIcon","AlertTitle","AlertDescription"],"mappings":"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","file":"alert.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 alertVariants = cva(\n \"flex w-full items-center gap-4 rounded-lg border border-solid bg-background p-4 font-sans\",\n {\n variants: {\n variant: {\n neutral: \"border-[color:var(--mila-alert-border)]\",\n error: \"border-[color:var(--mila-alert-border)]\",\n },\n },\n defaultVariants: {\n variant: \"neutral\",\n },\n }\n)\n\ntype AlertVariant = \"neutral\" | \"error\"\n\ntype AlertContextValue = {\n variant: AlertVariant\n}\n\nconst AlertContext = React.createContext<AlertContextValue | null>(null)\n\nfunction useAlertContext(component: string) {\n const ctx = React.useContext(AlertContext)\n if (!ctx) {\n throw new Error(`${component} must be used within <Alert>`)\n }\n return ctx\n}\n\nexport type AlertProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof alertVariants> & {\n icon?: React.ReactNode\n /** Figma “Flip icon”: icon after the text block (still inside the main row). */\n iconPlacement?: \"start\" | \"end\"\n action?: React.ReactNode\n }\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(function Alert(\n {\n className,\n variant: variantProp = \"neutral\",\n icon,\n iconPlacement = \"start\",\n action,\n children,\n role = \"alert\",\n ...props\n },\n ref\n) {\n const variant: AlertVariant = variantProp ?? \"neutral\"\n const value = React.useMemo(() => ({ variant }), [variant])\n\n const iconSlot = icon ? (\n <div\n data-slot=\"alert-icon\"\n className={cn(\n \"flex shrink-0 items-center pt-[3px] [&_svg]:size-4 [&_svg]:shrink-0\",\n variant === \"error\" && \"text-[color:var(--mila-alert-error-fg)]\",\n variant === \"neutral\" && \"text-foreground\"\n )}\n >\n {icon}\n </div>\n ) : null\n\n return (\n <AlertContext.Provider value={value}>\n <div\n ref={ref}\n role={role}\n data-slot=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n >\n <div className=\"flex min-w-0 flex-1 items-start gap-3\">\n {iconPlacement === \"start\" ? iconSlot : null}\n <div className=\"flex min-w-0 flex-1 flex-col gap-px text-sm font-medium leading-normal tracking-[0.07px]\">\n {children}\n </div>\n {iconPlacement === \"end\" ? iconSlot : null}\n </div>\n {action ? (\n <div data-slot=\"alert-action\" className=\"shrink-0\">\n {action}\n </div>\n ) : null}\n </div>\n </AlertContext.Provider>\n )\n})\nAlert.displayName = \"Alert\"\n\nexport type AlertIconProps = React.ComponentProps<\"div\">\n\nconst AlertIcon = React.forwardRef<HTMLDivElement, AlertIconProps>(function AlertIcon(\n { className, ...props },\n ref\n) {\n const { variant } = useAlertContext(\"AlertIcon\")\n return (\n <div\n ref={ref}\n data-slot=\"alert-icon\"\n className={cn(\n \"flex shrink-0 items-center pt-[3px] [&_svg]:size-4 [&_svg]:shrink-0\",\n variant === \"error\" && \"text-[color:var(--mila-alert-error-fg)]\",\n variant === \"neutral\" && \"text-foreground\",\n className\n )}\n {...props}\n />\n )\n})\nAlertIcon.displayName = \"AlertIcon\"\n\nexport type AlertTitleProps = React.ComponentProps<\"p\">\n\nconst AlertTitle = React.forwardRef<HTMLParagraphElement, AlertTitleProps>(function AlertTitle(\n { className, ...props },\n ref\n) {\n const { variant } = useAlertContext(\"AlertTitle\")\n return (\n <p\n ref={ref}\n data-slot=\"alert-title\"\n className={cn(\n \"w-full shrink-0 font-medium\",\n variant === \"neutral\" && \"text-[color:var(--mila-alert-neutral-title)]\",\n variant === \"error\" && \"text-[color:var(--mila-alert-error-fg)]\",\n className\n )}\n {...props}\n />\n )\n})\nAlertTitle.displayName = \"AlertTitle\"\n\nexport type AlertDescriptionProps = React.ComponentProps<\"p\">\n\nconst AlertDescription = React.forwardRef<HTMLParagraphElement, AlertDescriptionProps>(\n function AlertDescription({ className, ...props }, ref) {\n const { variant } = useAlertContext(\"AlertDescription\")\n return (\n <p\n ref={ref}\n data-slot=\"alert-description\"\n className={cn(\n \"w-full shrink-0 font-medium\",\n variant === \"neutral\" && \"text-[color:var(--mila-alert-neutral-description)]\",\n variant === \"error\" && \"text-[color:var(--mila-alert-error-fg)]\",\n className\n )}\n {...props}\n />\n )\n }\n)\nAlertDescription.displayName = \"AlertDescription\"\n\nexport type AlertActionProps = React.ComponentProps<\"div\">\n\nfunction AlertAction({ className, ...props }: AlertActionProps) {\n return <div data-slot=\"alert-action\" className={cn(\"shrink-0\", className)} {...props} />\n}\nAlertAction.displayName = \"AlertAction\"\n\nexport { Alert, AlertAction, AlertDescription, AlertIcon, AlertTitle, alertVariants }\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
|
|
3
|
+
|
|
4
|
+
/** Radix places `className` on the inner absolute layer; `max-w-*` there does not shrink the outer padding-bottom box—constrain width on a parent wrapper. */
|
|
5
|
+
declare const AspectRatio: React.ForwardRefExoticComponent<Omit<AspectRatioPrimitive.AspectRatioProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
|
|
7
|
+
export { AspectRatio };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function cn(...inputs) {
|
|
8
|
+
return twMerge(clsx(inputs));
|
|
9
|
+
}
|
|
10
|
+
var AspectRatio = React.forwardRef(function AspectRatio2({ className, ...props }, ref) {
|
|
11
|
+
return /* @__PURE__ */ jsx(
|
|
12
|
+
AspectRatioPrimitive.Root,
|
|
13
|
+
{
|
|
14
|
+
ref,
|
|
15
|
+
"data-slot": "aspect-ratio",
|
|
16
|
+
className: cn(
|
|
17
|
+
"overflow-hidden [&_img]:block [&_picture]:block [&_picture>img]:block [&_video]:block",
|
|
18
|
+
className
|
|
19
|
+
),
|
|
20
|
+
...props
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
});
|
|
24
|
+
AspectRatio.displayName = AspectRatioPrimitive.Root.displayName;
|
|
25
|
+
|
|
26
|
+
export { AspectRatio };
|
|
27
|
+
//# sourceMappingURL=aspect-ratio.js.map
|
|
28
|
+
//# sourceMappingURL=aspect-ratio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/utils.ts","../../src/components/aspect-ratio.tsx"],"names":["AspectRatio"],"mappings":";;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACGA,IAAM,WAAA,GAAoB,iBAGxB,SAASA,YAAAA,CAAY,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACnD,EAAA,uBACE,GAAA;AAAA,IAAsB,oBAAA,CAAA,IAAA;AAAA,IAArB;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,uFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,WAAA,CAAY,cAAmC,oBAAA,CAAA,IAAA,CAAK,WAAA","file":"aspect-ratio.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 * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nimport { cn } from \"../lib/utils.js\"\n\n/** Radix places `className` on the inner absolute layer; `max-w-*` there does not shrink the outer padding-bottom box—constrain width on a parent wrapper. */\nconst AspectRatio = React.forwardRef<\n React.ElementRef<typeof AspectRatioPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AspectRatioPrimitive.Root>\n>(function AspectRatio({ className, ...props }, ref) {\n return (\n <AspectRatioPrimitive.Root\n ref={ref}\n data-slot=\"aspect-ratio\"\n className={cn(\n \"overflow-hidden [&_img]:block [&_picture]:block [&_picture>img]:block [&_video]:block\",\n className\n )}\n {...props}\n />\n )\n})\nAspectRatio.displayName = AspectRatioPrimitive.Root.displayName\n\nexport { AspectRatio }\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { VariantProps } from 'class-variance-authority';
|
|
5
|
+
|
|
6
|
+
declare const avatarStackVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
7
|
+
declare const avatarStackItemVariants: (props?: ({
|
|
8
|
+
size?: "small" | "regular" | null | undefined;
|
|
9
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
10
|
+
type AvatarStackProps = React.ComponentProps<"div"> & VariantProps<typeof avatarStackItemVariants>;
|
|
11
|
+
declare function AvatarStack({ className, size: sizeProp, children, ...props }: AvatarStackProps): react_jsx_runtime.JSX.Element;
|
|
12
|
+
declare namespace AvatarStack {
|
|
13
|
+
var displayName: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { AvatarStack, type AvatarStackProps, avatarStackItemVariants, avatarStackVariants };
|