@medialane/ui 0.49.0 → 0.50.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 (58) hide show
  1. package/dist/components/action-button.cjs +113 -0
  2. package/dist/components/action-button.cjs.map +1 -0
  3. package/dist/components/action-button.d.cts +20 -0
  4. package/dist/components/action-button.d.ts +20 -0
  5. package/dist/components/action-button.js +89 -0
  6. package/dist/components/action-button.js.map +1 -0
  7. package/dist/components/action-dialog.cjs +68 -0
  8. package/dist/components/action-dialog.cjs.map +1 -0
  9. package/dist/components/action-dialog.d.cts +12 -0
  10. package/dist/components/action-dialog.d.ts +12 -0
  11. package/dist/components/action-dialog.js +44 -0
  12. package/dist/components/action-dialog.js.map +1 -0
  13. package/dist/components/asset-marketplace-panel.cjs +134 -144
  14. package/dist/components/asset-marketplace-panel.cjs.map +1 -1
  15. package/dist/components/asset-marketplace-panel.js +134 -144
  16. package/dist/components/asset-marketplace-panel.js.map +1 -1
  17. package/dist/components/asset-overview-content.cjs +7 -17
  18. package/dist/components/asset-overview-content.cjs.map +1 -1
  19. package/dist/components/asset-overview-content.js +7 -17
  20. package/dist/components/asset-overview-content.js.map +1 -1
  21. package/dist/components/hero-slider.cjs +0 -2
  22. package/dist/components/hero-slider.cjs.map +1 -1
  23. package/dist/components/hero-slider.js +0 -2
  24. package/dist/components/hero-slider.js.map +1 -1
  25. package/dist/components/nav-command-menu.cjs +0 -40
  26. package/dist/components/nav-command-menu.cjs.map +1 -1
  27. package/dist/components/nav-command-menu.js +0 -40
  28. package/dist/components/nav-command-menu.js.map +1 -1
  29. package/dist/components/stat-tile.cjs +85 -0
  30. package/dist/components/stat-tile.cjs.map +1 -0
  31. package/dist/components/stat-tile.d.cts +25 -0
  32. package/dist/components/stat-tile.d.ts +25 -0
  33. package/dist/components/stat-tile.js +60 -0
  34. package/dist/components/stat-tile.js.map +1 -0
  35. package/dist/components/token-glyph.cjs +93 -0
  36. package/dist/components/token-glyph.cjs.map +1 -0
  37. package/dist/components/token-glyph.d.cts +21 -0
  38. package/dist/components/token-glyph.d.ts +21 -0
  39. package/dist/components/token-glyph.js +68 -0
  40. package/dist/components/token-glyph.js.map +1 -0
  41. package/dist/data/brand.cjs +26 -7
  42. package/dist/data/brand.cjs.map +1 -1
  43. package/dist/data/brand.d.cts +26 -7
  44. package/dist/data/brand.d.ts +26 -7
  45. package/dist/data/brand.js +26 -7
  46. package/dist/data/brand.js.map +1 -1
  47. package/dist/index.cjs +16 -0
  48. package/dist/index.cjs.map +1 -1
  49. package/dist/index.d.cts +4 -0
  50. package/dist/index.d.ts +4 -0
  51. package/dist/index.js +10 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/medialane.css +49 -35
  54. package/dist/preset/tailwind.cjs +8 -5
  55. package/dist/preset/tailwind.cjs.map +1 -1
  56. package/dist/preset/tailwind.js +8 -5
  57. package/dist/preset/tailwind.js.map +1 -1
  58. package/package.json +4 -3
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var action_button_exports = {};
21
+ __export(action_button_exports, {
22
+ ActionButton: () => ActionButton
23
+ });
24
+ module.exports = __toCommonJS(action_button_exports);
25
+ var import_jsx_runtime = require("react/jsx-runtime");
26
+ var import_cn = require("../utils/cn.js");
27
+ const ACTION_GRADIENTS = {
28
+ buy: ["#3b7bff", "#8a5cf6", "#3b7bff"],
29
+ submit: ["#d6359a", "#5b4ce6", "#d6359a"],
30
+ offer: ["#f6608f", "#fb8b46", "#f6608f"],
31
+ remix: ["#8a5cf6", "#f6608f", "#8a5cf6"],
32
+ license: ["#3b7bff", "#5b4ce6", "#3b7bff"]
33
+ };
34
+ const ACTION_FOREGROUNDS = {
35
+ buy: "#3b7bff",
36
+ submit: "#5b4ce6",
37
+ offer: "#fb7a32",
38
+ remix: "#8a3ff0",
39
+ license: "#3b7bff"
40
+ };
41
+ const TONE_GRADIENTS = {
42
+ blue: ["#3b7bff", "#5b4ce6", "#3b7bff"],
43
+ indigo: ["#5b4ce6", "#8a5cf6", "#5b4ce6"],
44
+ purple: ["#8a5cf6", "#f6608f", "#8a5cf6"],
45
+ orange: ["#fb8b46", "#f6608f", "#fb8b46"],
46
+ red: ["#ef5a5a", "#f6608f", "#ef5a5a"],
47
+ rose: ["#f6608f", "#fb8b46", "#f6608f"]
48
+ };
49
+ const TONE_FOREGROUNDS = {
50
+ blue: "#2f6bff",
51
+ indigo: "#5b4ce6",
52
+ purple: "#8a3ff0",
53
+ orange: "#fb7a32",
54
+ red: "#ef5a5a",
55
+ rose: "#f6608f"
56
+ };
57
+ function ActionButton({
58
+ action,
59
+ tone,
60
+ icon,
61
+ big,
62
+ ghost,
63
+ children,
64
+ className,
65
+ style,
66
+ ...rest
67
+ }) {
68
+ const sizeClass = big ? "h-[54px] px-5 rounded-[13px] text-[15px]" : "h-[46px] px-5 rounded-[13px] text-sm";
69
+ if (ghost) {
70
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
71
+ "button",
72
+ {
73
+ ...rest,
74
+ className: (0, import_cn.cn)(
75
+ "inline-flex items-center justify-center gap-2 font-semibold cursor-pointer whitespace-nowrap",
76
+ "bg-muted text-foreground border-none",
77
+ sizeClass,
78
+ className
79
+ ),
80
+ style,
81
+ children: [
82
+ icon,
83
+ children
84
+ ]
85
+ }
86
+ );
87
+ }
88
+ const gradColors = action ? ACTION_GRADIENTS[action] : tone ? TONE_GRADIENTS[tone] : ACTION_GRADIENTS.buy;
89
+ const fg = action ? ACTION_FOREGROUNDS[action] : tone ? TONE_FOREGROUNDS[tone] : ACTION_FOREGROUNDS.buy;
90
+ const grad = `linear-gradient(115deg, ${gradColors.join(",")})`;
91
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
92
+ "button",
93
+ {
94
+ ...rest,
95
+ className: (0, import_cn.cn)(
96
+ "ml-gbtn inline-flex items-center justify-center gap-2 font-semibold cursor-pointer whitespace-nowrap",
97
+ "bg-card text-foreground border-none relative",
98
+ sizeClass,
99
+ className
100
+ ),
101
+ style: { "--ml-grad": grad, ...style },
102
+ children: [
103
+ icon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "inline-flex", style: { color: fg }, children: icon }),
104
+ children
105
+ ]
106
+ }
107
+ );
108
+ }
109
+ // Annotate the CommonJS export names for ESM import in node:
110
+ 0 && (module.exports = {
111
+ ActionButton
112
+ });
113
+ //# sourceMappingURL=action-button.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/action-button.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"../utils/cn.js\";\n\nconst ACTION_GRADIENTS: Record<string, [string, string, string]> = {\n buy: ['#3b7bff', '#8a5cf6', '#3b7bff'],\n submit: ['#d6359a', '#5b4ce6', '#d6359a'],\n offer: ['#f6608f', '#fb8b46', '#f6608f'],\n remix: ['#8a5cf6', '#f6608f', '#8a5cf6'],\n license: ['#3b7bff', '#5b4ce6', '#3b7bff'],\n};\n\nconst ACTION_FOREGROUNDS: Record<string, string> = {\n buy: '#3b7bff',\n submit: '#5b4ce6',\n offer: '#fb7a32',\n remix: '#8a3ff0',\n license: '#3b7bff',\n};\n\nconst TONE_GRADIENTS: Record<string, [string, string, string]> = {\n blue: ['#3b7bff', '#5b4ce6', '#3b7bff'],\n indigo: ['#5b4ce6', '#8a5cf6', '#5b4ce6'],\n purple: ['#8a5cf6', '#f6608f', '#8a5cf6'],\n orange: ['#fb8b46', '#f6608f', '#fb8b46'],\n red: ['#ef5a5a', '#f6608f', '#ef5a5a'],\n rose: ['#f6608f', '#fb8b46', '#f6608f'],\n};\n\nconst TONE_FOREGROUNDS: Record<string, string> = {\n blue: '#2f6bff',\n indigo: '#5b4ce6',\n purple: '#8a3ff0',\n orange: '#fb7a32',\n red: '#ef5a5a',\n rose: '#f6608f',\n};\n\nexport type ActionKey = keyof typeof ACTION_GRADIENTS;\nexport type ToneKey = keyof typeof TONE_GRADIENTS;\n\nexport interface ActionButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Semantic action — hue signals the action, never decorative. */\n action?: ActionKey;\n /** Tone — for secondary/owner actions. Ignored when action is set. */\n tone?: ToneKey;\n icon?: React.ReactNode;\n /** Tall 54px variant for hero contexts. */\n big?: boolean;\n /** Ghost: no gradient border, muted surface fill. */\n ghost?: boolean;\n}\n\nexport function ActionButton({\n action,\n tone,\n icon,\n big,\n ghost,\n children,\n className,\n style,\n ...rest\n}: ActionButtonProps) {\n const sizeClass = big\n ? \"h-[54px] px-5 rounded-[13px] text-[15px]\"\n : \"h-[46px] px-5 rounded-[13px] text-sm\";\n\n if (ghost) {\n return (\n <button\n {...rest}\n className={cn(\n \"inline-flex items-center justify-center gap-2 font-semibold cursor-pointer whitespace-nowrap\",\n \"bg-muted text-foreground border-none\",\n sizeClass,\n className,\n )}\n style={style}\n >\n {icon}{children}\n </button>\n );\n }\n\n const gradColors =\n action ? ACTION_GRADIENTS[action] :\n tone ? TONE_GRADIENTS[tone] :\n ACTION_GRADIENTS.buy;\n\n const fg =\n action ? ACTION_FOREGROUNDS[action] :\n tone ? TONE_FOREGROUNDS[tone] :\n ACTION_FOREGROUNDS.buy;\n\n const grad = `linear-gradient(115deg, ${gradColors.join(',')})`;\n\n return (\n <button\n {...rest}\n className={cn(\n \"ml-gbtn inline-flex items-center justify-center gap-2 font-semibold cursor-pointer whitespace-nowrap\",\n \"bg-card text-foreground border-none relative\",\n sizeClass,\n className,\n )}\n style={{ '--ml-grad': grad, ...style } as React.CSSProperties}\n >\n {icon && <span className=\"inline-flex\" style={{ color: fg }}>{icon}</span>}\n {children}\n </button>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAsEM;AApEN,gBAAmB;AAEnB,MAAM,mBAA6D;AAAA,EACjE,KAAS,CAAC,WAAW,WAAW,SAAS;AAAA,EACzC,QAAS,CAAC,WAAW,WAAW,SAAS;AAAA,EACzC,OAAS,CAAC,WAAW,WAAW,SAAS;AAAA,EACzC,OAAS,CAAC,WAAW,WAAW,SAAS;AAAA,EACzC,SAAS,CAAC,WAAW,WAAW,SAAS;AAC3C;AAEA,MAAM,qBAA6C;AAAA,EACjD,KAAS;AAAA,EACT,QAAS;AAAA,EACT,OAAS;AAAA,EACT,OAAS;AAAA,EACT,SAAS;AACX;AAEA,MAAM,iBAA2D;AAAA,EAC/D,MAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,EACxC,QAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,EACxC,QAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,EACxC,QAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,EACxC,KAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,EACxC,MAAQ,CAAC,WAAW,WAAW,SAAS;AAC1C;AAEA,MAAM,mBAA2C;AAAA,EAC/C,MAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,KAAQ;AAAA,EACR,MAAQ;AACV;AAiBO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsB;AACpB,QAAM,YAAY,MACd,6CACA;AAEJ,MAAI,OAAO;AACT,WACE;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,eAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,QAEC;AAAA;AAAA,UAAM;AAAA;AAAA;AAAA,IACT;AAAA,EAEJ;AAEA,QAAM,aACJ,SAAS,iBAAiB,MAAM,IAChC,OAAS,eAAe,IAAI,IAC5B,iBAAiB;AAEnB,QAAM,KACJ,SAAS,mBAAmB,MAAM,IAClC,OAAS,iBAAiB,IAAI,IAC9B,mBAAmB;AAErB,QAAM,OAAO,2BAA2B,WAAW,KAAK,GAAG,CAAC;AAE5D,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,eAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,EAAE,aAAa,MAAM,GAAG,MAAM;AAAA,MAEpC;AAAA,gBAAQ,4CAAC,UAAK,WAAU,eAAc,OAAO,EAAE,OAAO,GAAG,GAAI,gBAAK;AAAA,QAClE;AAAA;AAAA;AAAA,EACH;AAEJ;","names":[]}
@@ -0,0 +1,20 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare const ACTION_GRADIENTS: Record<string, [string, string, string]>;
4
+ declare const TONE_GRADIENTS: Record<string, [string, string, string]>;
5
+ type ActionKey = keyof typeof ACTION_GRADIENTS;
6
+ type ToneKey = keyof typeof TONE_GRADIENTS;
7
+ interface ActionButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
8
+ /** Semantic action — hue signals the action, never decorative. */
9
+ action?: ActionKey;
10
+ /** Tone — for secondary/owner actions. Ignored when action is set. */
11
+ tone?: ToneKey;
12
+ icon?: React.ReactNode;
13
+ /** Tall 54px variant for hero contexts. */
14
+ big?: boolean;
15
+ /** Ghost: no gradient border, muted surface fill. */
16
+ ghost?: boolean;
17
+ }
18
+ declare function ActionButton({ action, tone, icon, big, ghost, children, className, style, ...rest }: ActionButtonProps): react_jsx_runtime.JSX.Element;
19
+
20
+ export { ActionButton, type ActionButtonProps, type ActionKey, type ToneKey };
@@ -0,0 +1,20 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare const ACTION_GRADIENTS: Record<string, [string, string, string]>;
4
+ declare const TONE_GRADIENTS: Record<string, [string, string, string]>;
5
+ type ActionKey = keyof typeof ACTION_GRADIENTS;
6
+ type ToneKey = keyof typeof TONE_GRADIENTS;
7
+ interface ActionButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
8
+ /** Semantic action — hue signals the action, never decorative. */
9
+ action?: ActionKey;
10
+ /** Tone — for secondary/owner actions. Ignored when action is set. */
11
+ tone?: ToneKey;
12
+ icon?: React.ReactNode;
13
+ /** Tall 54px variant for hero contexts. */
14
+ big?: boolean;
15
+ /** Ghost: no gradient border, muted surface fill. */
16
+ ghost?: boolean;
17
+ }
18
+ declare function ActionButton({ action, tone, icon, big, ghost, children, className, style, ...rest }: ActionButtonProps): react_jsx_runtime.JSX.Element;
19
+
20
+ export { ActionButton, type ActionButtonProps, type ActionKey, type ToneKey };
@@ -0,0 +1,89 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../utils/cn.js";
4
+ const ACTION_GRADIENTS = {
5
+ buy: ["#3b7bff", "#8a5cf6", "#3b7bff"],
6
+ submit: ["#d6359a", "#5b4ce6", "#d6359a"],
7
+ offer: ["#f6608f", "#fb8b46", "#f6608f"],
8
+ remix: ["#8a5cf6", "#f6608f", "#8a5cf6"],
9
+ license: ["#3b7bff", "#5b4ce6", "#3b7bff"]
10
+ };
11
+ const ACTION_FOREGROUNDS = {
12
+ buy: "#3b7bff",
13
+ submit: "#5b4ce6",
14
+ offer: "#fb7a32",
15
+ remix: "#8a3ff0",
16
+ license: "#3b7bff"
17
+ };
18
+ const TONE_GRADIENTS = {
19
+ blue: ["#3b7bff", "#5b4ce6", "#3b7bff"],
20
+ indigo: ["#5b4ce6", "#8a5cf6", "#5b4ce6"],
21
+ purple: ["#8a5cf6", "#f6608f", "#8a5cf6"],
22
+ orange: ["#fb8b46", "#f6608f", "#fb8b46"],
23
+ red: ["#ef5a5a", "#f6608f", "#ef5a5a"],
24
+ rose: ["#f6608f", "#fb8b46", "#f6608f"]
25
+ };
26
+ const TONE_FOREGROUNDS = {
27
+ blue: "#2f6bff",
28
+ indigo: "#5b4ce6",
29
+ purple: "#8a3ff0",
30
+ orange: "#fb7a32",
31
+ red: "#ef5a5a",
32
+ rose: "#f6608f"
33
+ };
34
+ function ActionButton({
35
+ action,
36
+ tone,
37
+ icon,
38
+ big,
39
+ ghost,
40
+ children,
41
+ className,
42
+ style,
43
+ ...rest
44
+ }) {
45
+ const sizeClass = big ? "h-[54px] px-5 rounded-[13px] text-[15px]" : "h-[46px] px-5 rounded-[13px] text-sm";
46
+ if (ghost) {
47
+ return /* @__PURE__ */ jsxs(
48
+ "button",
49
+ {
50
+ ...rest,
51
+ className: cn(
52
+ "inline-flex items-center justify-center gap-2 font-semibold cursor-pointer whitespace-nowrap",
53
+ "bg-muted text-foreground border-none",
54
+ sizeClass,
55
+ className
56
+ ),
57
+ style,
58
+ children: [
59
+ icon,
60
+ children
61
+ ]
62
+ }
63
+ );
64
+ }
65
+ const gradColors = action ? ACTION_GRADIENTS[action] : tone ? TONE_GRADIENTS[tone] : ACTION_GRADIENTS.buy;
66
+ const fg = action ? ACTION_FOREGROUNDS[action] : tone ? TONE_FOREGROUNDS[tone] : ACTION_FOREGROUNDS.buy;
67
+ const grad = `linear-gradient(115deg, ${gradColors.join(",")})`;
68
+ return /* @__PURE__ */ jsxs(
69
+ "button",
70
+ {
71
+ ...rest,
72
+ className: cn(
73
+ "ml-gbtn inline-flex items-center justify-center gap-2 font-semibold cursor-pointer whitespace-nowrap",
74
+ "bg-card text-foreground border-none relative",
75
+ sizeClass,
76
+ className
77
+ ),
78
+ style: { "--ml-grad": grad, ...style },
79
+ children: [
80
+ icon && /* @__PURE__ */ jsx("span", { className: "inline-flex", style: { color: fg }, children: icon }),
81
+ children
82
+ ]
83
+ }
84
+ );
85
+ }
86
+ export {
87
+ ActionButton
88
+ };
89
+ //# sourceMappingURL=action-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/action-button.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"../utils/cn.js\";\n\nconst ACTION_GRADIENTS: Record<string, [string, string, string]> = {\n buy: ['#3b7bff', '#8a5cf6', '#3b7bff'],\n submit: ['#d6359a', '#5b4ce6', '#d6359a'],\n offer: ['#f6608f', '#fb8b46', '#f6608f'],\n remix: ['#8a5cf6', '#f6608f', '#8a5cf6'],\n license: ['#3b7bff', '#5b4ce6', '#3b7bff'],\n};\n\nconst ACTION_FOREGROUNDS: Record<string, string> = {\n buy: '#3b7bff',\n submit: '#5b4ce6',\n offer: '#fb7a32',\n remix: '#8a3ff0',\n license: '#3b7bff',\n};\n\nconst TONE_GRADIENTS: Record<string, [string, string, string]> = {\n blue: ['#3b7bff', '#5b4ce6', '#3b7bff'],\n indigo: ['#5b4ce6', '#8a5cf6', '#5b4ce6'],\n purple: ['#8a5cf6', '#f6608f', '#8a5cf6'],\n orange: ['#fb8b46', '#f6608f', '#fb8b46'],\n red: ['#ef5a5a', '#f6608f', '#ef5a5a'],\n rose: ['#f6608f', '#fb8b46', '#f6608f'],\n};\n\nconst TONE_FOREGROUNDS: Record<string, string> = {\n blue: '#2f6bff',\n indigo: '#5b4ce6',\n purple: '#8a3ff0',\n orange: '#fb7a32',\n red: '#ef5a5a',\n rose: '#f6608f',\n};\n\nexport type ActionKey = keyof typeof ACTION_GRADIENTS;\nexport type ToneKey = keyof typeof TONE_GRADIENTS;\n\nexport interface ActionButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Semantic action — hue signals the action, never decorative. */\n action?: ActionKey;\n /** Tone — for secondary/owner actions. Ignored when action is set. */\n tone?: ToneKey;\n icon?: React.ReactNode;\n /** Tall 54px variant for hero contexts. */\n big?: boolean;\n /** Ghost: no gradient border, muted surface fill. */\n ghost?: boolean;\n}\n\nexport function ActionButton({\n action,\n tone,\n icon,\n big,\n ghost,\n children,\n className,\n style,\n ...rest\n}: ActionButtonProps) {\n const sizeClass = big\n ? \"h-[54px] px-5 rounded-[13px] text-[15px]\"\n : \"h-[46px] px-5 rounded-[13px] text-sm\";\n\n if (ghost) {\n return (\n <button\n {...rest}\n className={cn(\n \"inline-flex items-center justify-center gap-2 font-semibold cursor-pointer whitespace-nowrap\",\n \"bg-muted text-foreground border-none\",\n sizeClass,\n className,\n )}\n style={style}\n >\n {icon}{children}\n </button>\n );\n }\n\n const gradColors =\n action ? ACTION_GRADIENTS[action] :\n tone ? TONE_GRADIENTS[tone] :\n ACTION_GRADIENTS.buy;\n\n const fg =\n action ? ACTION_FOREGROUNDS[action] :\n tone ? TONE_FOREGROUNDS[tone] :\n ACTION_FOREGROUNDS.buy;\n\n const grad = `linear-gradient(115deg, ${gradColors.join(',')})`;\n\n return (\n <button\n {...rest}\n className={cn(\n \"ml-gbtn inline-flex items-center justify-center gap-2 font-semibold cursor-pointer whitespace-nowrap\",\n \"bg-card text-foreground border-none relative\",\n sizeClass,\n className,\n )}\n style={{ '--ml-grad': grad, ...style } as React.CSSProperties}\n >\n {icon && <span className=\"inline-flex\" style={{ color: fg }}>{icon}</span>}\n {children}\n </button>\n );\n}\n"],"mappings":";AAsEM,SAsCS,KAtCT;AApEN,SAAS,UAAU;AAEnB,MAAM,mBAA6D;AAAA,EACjE,KAAS,CAAC,WAAW,WAAW,SAAS;AAAA,EACzC,QAAS,CAAC,WAAW,WAAW,SAAS;AAAA,EACzC,OAAS,CAAC,WAAW,WAAW,SAAS;AAAA,EACzC,OAAS,CAAC,WAAW,WAAW,SAAS;AAAA,EACzC,SAAS,CAAC,WAAW,WAAW,SAAS;AAC3C;AAEA,MAAM,qBAA6C;AAAA,EACjD,KAAS;AAAA,EACT,QAAS;AAAA,EACT,OAAS;AAAA,EACT,OAAS;AAAA,EACT,SAAS;AACX;AAEA,MAAM,iBAA2D;AAAA,EAC/D,MAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,EACxC,QAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,EACxC,QAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,EACxC,QAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,EACxC,KAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,EACxC,MAAQ,CAAC,WAAW,WAAW,SAAS;AAC1C;AAEA,MAAM,mBAA2C;AAAA,EAC/C,MAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,KAAQ;AAAA,EACR,MAAQ;AACV;AAiBO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsB;AACpB,QAAM,YAAY,MACd,6CACA;AAEJ,MAAI,OAAO;AACT,WACE;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,QAEC;AAAA;AAAA,UAAM;AAAA;AAAA;AAAA,IACT;AAAA,EAEJ;AAEA,QAAM,aACJ,SAAS,iBAAiB,MAAM,IAChC,OAAS,eAAe,IAAI,IAC5B,iBAAiB;AAEnB,QAAM,KACJ,SAAS,mBAAmB,MAAM,IAClC,OAAS,iBAAiB,IAAI,IAC9B,mBAAmB;AAErB,QAAM,OAAO,2BAA2B,WAAW,KAAK,GAAG,CAAC;AAE5D,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,EAAE,aAAa,MAAM,GAAG,MAAM;AAAA,MAEpC;AAAA,gBAAQ,oBAAC,UAAK,WAAU,eAAc,OAAO,EAAE,OAAO,GAAG,GAAI,gBAAK;AAAA,QAClE;AAAA;AAAA;AAAA,EACH;AAEJ;","names":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var action_dialog_exports = {};
21
+ __export(action_dialog_exports, {
22
+ ActionDialog: () => ActionDialog
23
+ });
24
+ module.exports = __toCommonJS(action_dialog_exports);
25
+ var import_jsx_runtime = require("react/jsx-runtime");
26
+ function ActionDialog({ open, onClose, width = 540, children }) {
27
+ if (!open) return null;
28
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
29
+ "div",
30
+ {
31
+ onClick: onClose,
32
+ style: {
33
+ position: "fixed",
34
+ inset: 0,
35
+ zIndex: 1e3,
36
+ display: "flex",
37
+ alignItems: "center",
38
+ justifyContent: "center",
39
+ padding: 24,
40
+ backdropFilter: "blur(28px) saturate(150%)",
41
+ WebkitBackdropFilter: "blur(28px) saturate(150%)",
42
+ background: "rgba(6,7,15,0.55)",
43
+ animation: "mlFade .18s ease"
44
+ },
45
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
46
+ "div",
47
+ {
48
+ onClick: (e) => e.stopPropagation(),
49
+ className: "bg-card text-card-foreground border border-border overflow-y-auto",
50
+ style: {
51
+ width,
52
+ maxWidth: "100%",
53
+ maxHeight: "92vh",
54
+ borderRadius: 24,
55
+ boxShadow: "0 50px 120px rgba(0,0,0,0.6)",
56
+ animation: "mlPop .22s cubic-bezier(.2,.8,.3,1)"
57
+ },
58
+ children
59
+ }
60
+ )
61
+ }
62
+ );
63
+ }
64
+ // Annotate the CommonJS export names for ESM import in node:
65
+ 0 && (module.exports = {
66
+ ActionDialog
67
+ });
68
+ //# sourceMappingURL=action-dialog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/action-dialog.tsx"],"sourcesContent":["\"use client\";\n\n// The signature \"action focus\" dialog shell — the app recedes into a blurred,\n// oversaturated backdrop while a single clean decision panel floats centered.\n// Requires mlFade / mlPop keyframes from @medialane/ui/styles.\n\nexport interface ActionDialogProps {\n open: boolean;\n onClose: () => void;\n /** Card width in px. */\n width?: number;\n children: React.ReactNode;\n}\n\nexport function ActionDialog({ open, onClose, width = 540, children }: ActionDialogProps) {\n if (!open) return null;\n return (\n <div\n onClick={onClose}\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 1000,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 24,\n backdropFilter: 'blur(28px) saturate(150%)',\n WebkitBackdropFilter: 'blur(28px) saturate(150%)',\n background: 'rgba(6,7,15,0.55)',\n animation: 'mlFade .18s ease',\n }}\n >\n <div\n onClick={e => e.stopPropagation()}\n className=\"bg-card text-card-foreground border border-border overflow-y-auto\"\n style={{\n width,\n maxWidth: '100%',\n maxHeight: '92vh',\n borderRadius: 24,\n boxShadow: '0 50px 120px rgba(0,0,0,0.6)',\n animation: 'mlPop .22s cubic-bezier(.2,.8,.3,1)',\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCM;AAnBC,SAAS,aAAa,EAAE,MAAM,SAAS,QAAQ,KAAK,SAAS,GAAsB;AACxF,MAAI,CAAC,KAAM,QAAO;AAClB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,QACtB,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,OAAK,EAAE,gBAAgB;AAAA,UAChC,WAAU;AAAA,UACV,OAAO;AAAA,YACL;AAAA,YACA,UAAU;AAAA,YACV,WAAW;AAAA,YACX,cAAc;AAAA,YACd,WAAW;AAAA,YACX,WAAW;AAAA,UACb;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -0,0 +1,12 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface ActionDialogProps {
4
+ open: boolean;
5
+ onClose: () => void;
6
+ /** Card width in px. */
7
+ width?: number;
8
+ children: React.ReactNode;
9
+ }
10
+ declare function ActionDialog({ open, onClose, width, children }: ActionDialogProps): react_jsx_runtime.JSX.Element | null;
11
+
12
+ export { ActionDialog, type ActionDialogProps };
@@ -0,0 +1,12 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface ActionDialogProps {
4
+ open: boolean;
5
+ onClose: () => void;
6
+ /** Card width in px. */
7
+ width?: number;
8
+ children: React.ReactNode;
9
+ }
10
+ declare function ActionDialog({ open, onClose, width, children }: ActionDialogProps): react_jsx_runtime.JSX.Element | null;
11
+
12
+ export { ActionDialog, type ActionDialogProps };
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ function ActionDialog({ open, onClose, width = 540, children }) {
4
+ if (!open) return null;
5
+ return /* @__PURE__ */ jsx(
6
+ "div",
7
+ {
8
+ onClick: onClose,
9
+ style: {
10
+ position: "fixed",
11
+ inset: 0,
12
+ zIndex: 1e3,
13
+ display: "flex",
14
+ alignItems: "center",
15
+ justifyContent: "center",
16
+ padding: 24,
17
+ backdropFilter: "blur(28px) saturate(150%)",
18
+ WebkitBackdropFilter: "blur(28px) saturate(150%)",
19
+ background: "rgba(6,7,15,0.55)",
20
+ animation: "mlFade .18s ease"
21
+ },
22
+ children: /* @__PURE__ */ jsx(
23
+ "div",
24
+ {
25
+ onClick: (e) => e.stopPropagation(),
26
+ className: "bg-card text-card-foreground border border-border overflow-y-auto",
27
+ style: {
28
+ width,
29
+ maxWidth: "100%",
30
+ maxHeight: "92vh",
31
+ borderRadius: 24,
32
+ boxShadow: "0 50px 120px rgba(0,0,0,0.6)",
33
+ animation: "mlPop .22s cubic-bezier(.2,.8,.3,1)"
34
+ },
35
+ children
36
+ }
37
+ )
38
+ }
39
+ );
40
+ }
41
+ export {
42
+ ActionDialog
43
+ };
44
+ //# sourceMappingURL=action-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/action-dialog.tsx"],"sourcesContent":["\"use client\";\n\n// The signature \"action focus\" dialog shell — the app recedes into a blurred,\n// oversaturated backdrop while a single clean decision panel floats centered.\n// Requires mlFade / mlPop keyframes from @medialane/ui/styles.\n\nexport interface ActionDialogProps {\n open: boolean;\n onClose: () => void;\n /** Card width in px. */\n width?: number;\n children: React.ReactNode;\n}\n\nexport function ActionDialog({ open, onClose, width = 540, children }: ActionDialogProps) {\n if (!open) return null;\n return (\n <div\n onClick={onClose}\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 1000,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 24,\n backdropFilter: 'blur(28px) saturate(150%)',\n WebkitBackdropFilter: 'blur(28px) saturate(150%)',\n background: 'rgba(6,7,15,0.55)',\n animation: 'mlFade .18s ease',\n }}\n >\n <div\n onClick={e => e.stopPropagation()}\n className=\"bg-card text-card-foreground border border-border overflow-y-auto\"\n style={{\n width,\n maxWidth: '100%',\n maxHeight: '92vh',\n borderRadius: 24,\n boxShadow: '0 50px 120px rgba(0,0,0,0.6)',\n animation: 'mlPop .22s cubic-bezier(.2,.8,.3,1)',\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n"],"mappings":";AAiCM;AAnBC,SAAS,aAAa,EAAE,MAAM,SAAS,QAAQ,KAAK,SAAS,GAAsB;AACxF,MAAI,CAAC,KAAM,QAAO;AAClB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,QACtB,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,OAAK,EAAE,gBAAgB;AAAA,UAChC,WAAU;AAAA,UACV,OAAO;AAAA,YACL;AAAA,YACA,UAAU;AAAA,YACV,WAAW;AAAA,YACX,cAAc;AAAA,YACd,WAAW;AAAA,YACX,WAAW;AAAA,UACb;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;","names":[]}