@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.
- package/dist/components/action-button.cjs +113 -0
- package/dist/components/action-button.cjs.map +1 -0
- package/dist/components/action-button.d.cts +20 -0
- package/dist/components/action-button.d.ts +20 -0
- package/dist/components/action-button.js +89 -0
- package/dist/components/action-button.js.map +1 -0
- package/dist/components/action-dialog.cjs +68 -0
- package/dist/components/action-dialog.cjs.map +1 -0
- package/dist/components/action-dialog.d.cts +12 -0
- package/dist/components/action-dialog.d.ts +12 -0
- package/dist/components/action-dialog.js +44 -0
- package/dist/components/action-dialog.js.map +1 -0
- package/dist/components/asset-marketplace-panel.cjs +134 -144
- package/dist/components/asset-marketplace-panel.cjs.map +1 -1
- package/dist/components/asset-marketplace-panel.js +134 -144
- package/dist/components/asset-marketplace-panel.js.map +1 -1
- package/dist/components/asset-overview-content.cjs +7 -17
- package/dist/components/asset-overview-content.cjs.map +1 -1
- package/dist/components/asset-overview-content.js +7 -17
- package/dist/components/asset-overview-content.js.map +1 -1
- package/dist/components/hero-slider.cjs +0 -2
- package/dist/components/hero-slider.cjs.map +1 -1
- package/dist/components/hero-slider.js +0 -2
- package/dist/components/hero-slider.js.map +1 -1
- package/dist/components/nav-command-menu.cjs +0 -40
- package/dist/components/nav-command-menu.cjs.map +1 -1
- package/dist/components/nav-command-menu.js +0 -40
- package/dist/components/nav-command-menu.js.map +1 -1
- package/dist/components/stat-tile.cjs +85 -0
- package/dist/components/stat-tile.cjs.map +1 -0
- package/dist/components/stat-tile.d.cts +25 -0
- package/dist/components/stat-tile.d.ts +25 -0
- package/dist/components/stat-tile.js +60 -0
- package/dist/components/stat-tile.js.map +1 -0
- package/dist/components/token-glyph.cjs +93 -0
- package/dist/components/token-glyph.cjs.map +1 -0
- package/dist/components/token-glyph.d.cts +21 -0
- package/dist/components/token-glyph.d.ts +21 -0
- package/dist/components/token-glyph.js +68 -0
- package/dist/components/token-glyph.js.map +1 -0
- package/dist/data/brand.cjs +26 -7
- package/dist/data/brand.cjs.map +1 -1
- package/dist/data/brand.d.cts +26 -7
- package/dist/data/brand.d.ts +26 -7
- package/dist/data/brand.js +26 -7
- package/dist/data/brand.js.map +1 -1
- package/dist/index.cjs +16 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/medialane.css +49 -35
- package/dist/preset/tailwind.cjs +8 -5
- package/dist/preset/tailwind.cjs.map +1 -1
- package/dist/preset/tailwind.js +8 -5
- package/dist/preset/tailwind.js.map +1 -1
- 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":[]}
|