@medialane/ui 0.48.0 → 0.50.0

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 (52) 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/aurora.cjs +86 -0
  14. package/dist/components/aurora.cjs.map +1 -0
  15. package/dist/components/aurora.d.cts +13 -0
  16. package/dist/components/aurora.d.ts +13 -0
  17. package/dist/components/aurora.js +62 -0
  18. package/dist/components/aurora.js.map +1 -0
  19. package/dist/components/community-rewards-section.cjs +3 -3
  20. package/dist/components/community-rewards-section.cjs.map +1 -1
  21. package/dist/components/community-rewards-section.js +3 -3
  22. package/dist/components/community-rewards-section.js.map +1 -1
  23. package/dist/components/stat-tile.cjs +85 -0
  24. package/dist/components/stat-tile.cjs.map +1 -0
  25. package/dist/components/stat-tile.d.cts +25 -0
  26. package/dist/components/stat-tile.d.ts +25 -0
  27. package/dist/components/stat-tile.js +60 -0
  28. package/dist/components/stat-tile.js.map +1 -0
  29. package/dist/components/token-glyph.cjs +93 -0
  30. package/dist/components/token-glyph.cjs.map +1 -0
  31. package/dist/components/token-glyph.d.cts +21 -0
  32. package/dist/components/token-glyph.d.ts +21 -0
  33. package/dist/components/token-glyph.js +68 -0
  34. package/dist/components/token-glyph.js.map +1 -0
  35. package/dist/data/brand.cjs +26 -7
  36. package/dist/data/brand.cjs.map +1 -1
  37. package/dist/data/brand.d.cts +26 -7
  38. package/dist/data/brand.d.ts +26 -7
  39. package/dist/data/brand.js +26 -7
  40. package/dist/data/brand.js.map +1 -1
  41. package/dist/index.cjs +19 -0
  42. package/dist/index.cjs.map +1 -1
  43. package/dist/index.d.cts +5 -0
  44. package/dist/index.d.ts +5 -0
  45. package/dist/index.js +12 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/medialane.css +51 -8
  48. package/dist/preset/tailwind.cjs +8 -5
  49. package/dist/preset/tailwind.cjs.map +1 -1
  50. package/dist/preset/tailwind.js +8 -5
  51. package/dist/preset/tailwind.js.map +1 -1
  52. 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":[]}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var aurora_exports = {};
20
+ __export(aurora_exports, {
21
+ Aurora: () => Aurora
22
+ });
23
+ module.exports = __toCommonJS(aurora_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ const DARK_BLOBS = [
26
+ "radial-gradient(38% 50% at 22% 42%, rgba(59,123,255,0.85), transparent 70%)",
27
+ "radial-gradient(40% 52% at 74% 30%, rgba(138,92,246,0.80), transparent 70%)",
28
+ "radial-gradient(42% 48% at 64% 82%, rgba(246,96,143,0.70), transparent 70%)",
29
+ "radial-gradient(34% 40% at 30% 88%, rgba(251,139,70,0.55), transparent 70%)",
30
+ "radial-gradient(30% 38% at 88% 70%, rgba(91,76,230,0.40), transparent 70%)"
31
+ ];
32
+ const LIGHT_BLOBS = [
33
+ "radial-gradient(40% 52% at 20% 38%, rgba(59,123,255,0.55), transparent 70%)",
34
+ "radial-gradient(42% 52% at 76% 28%, rgba(138,92,246,0.48), transparent 70%)",
35
+ "radial-gradient(44% 50% at 66% 84%, rgba(246,96,143,0.42), transparent 70%)",
36
+ "radial-gradient(34% 40% at 28% 86%, rgba(251,139,70,0.40), transparent 70%)"
37
+ ];
38
+ function Aurora({ mode = "dark", children, height = 900, className, style }) {
39
+ const isDark = mode === "dark";
40
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
41
+ "div",
42
+ {
43
+ className,
44
+ style: {
45
+ position: "relative",
46
+ width: "100%",
47
+ height,
48
+ overflow: "hidden",
49
+ background: isDark ? "#06070f" : "#eef1f8",
50
+ isolation: "isolate",
51
+ ...style
52
+ },
53
+ children: [
54
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
55
+ "div",
56
+ {
57
+ "aria-hidden": "true",
58
+ style: {
59
+ position: "absolute",
60
+ inset: "-15%",
61
+ filter: "blur(90px) saturate(150%)",
62
+ backgroundImage: (isDark ? DARK_BLOBS : LIGHT_BLOBS).join(", ")
63
+ }
64
+ }
65
+ ),
66
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
67
+ "div",
68
+ {
69
+ "aria-hidden": "true",
70
+ style: {
71
+ position: "absolute",
72
+ inset: 0,
73
+ background: isDark ? "radial-gradient(ellipse at center, transparent 28%, rgba(6,7,15,0.62) 100%)" : "radial-gradient(ellipse at center, transparent 35%, rgba(238,241,248,0.5) 100%)"
74
+ }
75
+ }
76
+ ),
77
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { position: "relative", height: "100%" }, children })
78
+ ]
79
+ }
80
+ );
81
+ }
82
+ // Annotate the CommonJS export names for ESM import in node:
83
+ 0 && (module.exports = {
84
+ Aurora
85
+ });
86
+ //# sourceMappingURL=aurora.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/aurora.tsx"],"sourcesContent":["// Oversaturated, heavily-blurred aurora backdrop — the signature action-focus surface.\n// CSS-driven only; no 3D or mouse-reactive effects (no mobile story, too heavy).\n\nexport interface AuroraProps {\n /** Dark uses deep navy base; light uses off-white. */\n mode?: 'dark' | 'light';\n children?: React.ReactNode;\n height?: number | string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst DARK_BLOBS = [\n 'radial-gradient(38% 50% at 22% 42%, rgba(59,123,255,0.85), transparent 70%)',\n 'radial-gradient(40% 52% at 74% 30%, rgba(138,92,246,0.80), transparent 70%)',\n 'radial-gradient(42% 48% at 64% 82%, rgba(246,96,143,0.70), transparent 70%)',\n 'radial-gradient(34% 40% at 30% 88%, rgba(251,139,70,0.55), transparent 70%)',\n 'radial-gradient(30% 38% at 88% 70%, rgba(91,76,230,0.40), transparent 70%)',\n];\n\nconst LIGHT_BLOBS = [\n 'radial-gradient(40% 52% at 20% 38%, rgba(59,123,255,0.55), transparent 70%)',\n 'radial-gradient(42% 52% at 76% 28%, rgba(138,92,246,0.48), transparent 70%)',\n 'radial-gradient(44% 50% at 66% 84%, rgba(246,96,143,0.42), transparent 70%)',\n 'radial-gradient(34% 40% at 28% 86%, rgba(251,139,70,0.40), transparent 70%)',\n];\n\nexport function Aurora({ mode = 'dark', children, height = 900, className, style }: AuroraProps) {\n const isDark = mode === 'dark';\n return (\n <div\n className={className}\n style={{\n position: 'relative',\n width: '100%',\n height,\n overflow: 'hidden',\n background: isDark ? '#06070f' : '#eef1f8',\n isolation: 'isolate',\n ...style,\n }}\n >\n {/* Blurred blobs */}\n <div\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: '-15%',\n filter: 'blur(90px) saturate(150%)',\n backgroundImage: (isDark ? DARK_BLOBS : LIGHT_BLOBS).join(', '),\n }}\n />\n {/* Vignette */}\n <div\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: 0,\n background: isDark\n ? 'radial-gradient(ellipse at center, transparent 28%, rgba(6,7,15,0.62) 100%)'\n : 'radial-gradient(ellipse at center, transparent 35%, rgba(238,241,248,0.5) 100%)',\n }}\n />\n <div style={{ position: 'relative', height: '100%' }}>{children}</div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BI;AAlBJ,MAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,OAAO,EAAE,OAAO,QAAQ,UAAU,SAAS,KAAK,WAAW,MAAM,GAAgB;AAC/F,QAAM,SAAS,SAAS;AACxB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,UAAU;AAAA,QACV,YAAY,SAAS,YAAY;AAAA,QACjC,WAAW;AAAA,QACX,GAAG;AAAA,MACL;AAAA,MAGA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,kBAAkB,SAAS,aAAa,aAAa,KAAK,IAAI;AAAA,YAChE;AAAA;AAAA,QACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY,SACR,gFACA;AAAA,YACN;AAAA;AAAA,QACF;AAAA,QACA,4CAAC,SAAI,OAAO,EAAE,UAAU,YAAY,QAAQ,OAAO,GAAI,UAAS;AAAA;AAAA;AAAA,EAClE;AAEJ;","names":[]}
@@ -0,0 +1,13 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface AuroraProps {
4
+ /** Dark uses deep navy base; light uses off-white. */
5
+ mode?: 'dark' | 'light';
6
+ children?: React.ReactNode;
7
+ height?: number | string;
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ }
11
+ declare function Aurora({ mode, children, height, className, style }: AuroraProps): react_jsx_runtime.JSX.Element;
12
+
13
+ export { Aurora, type AuroraProps };
@@ -0,0 +1,13 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface AuroraProps {
4
+ /** Dark uses deep navy base; light uses off-white. */
5
+ mode?: 'dark' | 'light';
6
+ children?: React.ReactNode;
7
+ height?: number | string;
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ }
11
+ declare function Aurora({ mode, children, height, className, style }: AuroraProps): react_jsx_runtime.JSX.Element;
12
+
13
+ export { Aurora, type AuroraProps };
@@ -0,0 +1,62 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ const DARK_BLOBS = [
3
+ "radial-gradient(38% 50% at 22% 42%, rgba(59,123,255,0.85), transparent 70%)",
4
+ "radial-gradient(40% 52% at 74% 30%, rgba(138,92,246,0.80), transparent 70%)",
5
+ "radial-gradient(42% 48% at 64% 82%, rgba(246,96,143,0.70), transparent 70%)",
6
+ "radial-gradient(34% 40% at 30% 88%, rgba(251,139,70,0.55), transparent 70%)",
7
+ "radial-gradient(30% 38% at 88% 70%, rgba(91,76,230,0.40), transparent 70%)"
8
+ ];
9
+ const LIGHT_BLOBS = [
10
+ "radial-gradient(40% 52% at 20% 38%, rgba(59,123,255,0.55), transparent 70%)",
11
+ "radial-gradient(42% 52% at 76% 28%, rgba(138,92,246,0.48), transparent 70%)",
12
+ "radial-gradient(44% 50% at 66% 84%, rgba(246,96,143,0.42), transparent 70%)",
13
+ "radial-gradient(34% 40% at 28% 86%, rgba(251,139,70,0.40), transparent 70%)"
14
+ ];
15
+ function Aurora({ mode = "dark", children, height = 900, className, style }) {
16
+ const isDark = mode === "dark";
17
+ return /* @__PURE__ */ jsxs(
18
+ "div",
19
+ {
20
+ className,
21
+ style: {
22
+ position: "relative",
23
+ width: "100%",
24
+ height,
25
+ overflow: "hidden",
26
+ background: isDark ? "#06070f" : "#eef1f8",
27
+ isolation: "isolate",
28
+ ...style
29
+ },
30
+ children: [
31
+ /* @__PURE__ */ jsx(
32
+ "div",
33
+ {
34
+ "aria-hidden": "true",
35
+ style: {
36
+ position: "absolute",
37
+ inset: "-15%",
38
+ filter: "blur(90px) saturate(150%)",
39
+ backgroundImage: (isDark ? DARK_BLOBS : LIGHT_BLOBS).join(", ")
40
+ }
41
+ }
42
+ ),
43
+ /* @__PURE__ */ jsx(
44
+ "div",
45
+ {
46
+ "aria-hidden": "true",
47
+ style: {
48
+ position: "absolute",
49
+ inset: 0,
50
+ background: isDark ? "radial-gradient(ellipse at center, transparent 28%, rgba(6,7,15,0.62) 100%)" : "radial-gradient(ellipse at center, transparent 35%, rgba(238,241,248,0.5) 100%)"
51
+ }
52
+ }
53
+ ),
54
+ /* @__PURE__ */ jsx("div", { style: { position: "relative", height: "100%" }, children })
55
+ ]
56
+ }
57
+ );
58
+ }
59
+ export {
60
+ Aurora
61
+ };
62
+ //# sourceMappingURL=aurora.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/aurora.tsx"],"sourcesContent":["// Oversaturated, heavily-blurred aurora backdrop — the signature action-focus surface.\n// CSS-driven only; no 3D or mouse-reactive effects (no mobile story, too heavy).\n\nexport interface AuroraProps {\n /** Dark uses deep navy base; light uses off-white. */\n mode?: 'dark' | 'light';\n children?: React.ReactNode;\n height?: number | string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst DARK_BLOBS = [\n 'radial-gradient(38% 50% at 22% 42%, rgba(59,123,255,0.85), transparent 70%)',\n 'radial-gradient(40% 52% at 74% 30%, rgba(138,92,246,0.80), transparent 70%)',\n 'radial-gradient(42% 48% at 64% 82%, rgba(246,96,143,0.70), transparent 70%)',\n 'radial-gradient(34% 40% at 30% 88%, rgba(251,139,70,0.55), transparent 70%)',\n 'radial-gradient(30% 38% at 88% 70%, rgba(91,76,230,0.40), transparent 70%)',\n];\n\nconst LIGHT_BLOBS = [\n 'radial-gradient(40% 52% at 20% 38%, rgba(59,123,255,0.55), transparent 70%)',\n 'radial-gradient(42% 52% at 76% 28%, rgba(138,92,246,0.48), transparent 70%)',\n 'radial-gradient(44% 50% at 66% 84%, rgba(246,96,143,0.42), transparent 70%)',\n 'radial-gradient(34% 40% at 28% 86%, rgba(251,139,70,0.40), transparent 70%)',\n];\n\nexport function Aurora({ mode = 'dark', children, height = 900, className, style }: AuroraProps) {\n const isDark = mode === 'dark';\n return (\n <div\n className={className}\n style={{\n position: 'relative',\n width: '100%',\n height,\n overflow: 'hidden',\n background: isDark ? '#06070f' : '#eef1f8',\n isolation: 'isolate',\n ...style,\n }}\n >\n {/* Blurred blobs */}\n <div\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: '-15%',\n filter: 'blur(90px) saturate(150%)',\n backgroundImage: (isDark ? DARK_BLOBS : LIGHT_BLOBS).join(', '),\n }}\n />\n {/* Vignette */}\n <div\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: 0,\n background: isDark\n ? 'radial-gradient(ellipse at center, transparent 28%, rgba(6,7,15,0.62) 100%)'\n : 'radial-gradient(ellipse at center, transparent 35%, rgba(238,241,248,0.5) 100%)',\n }}\n />\n <div style={{ position: 'relative', height: '100%' }}>{children}</div>\n </div>\n );\n}\n"],"mappings":"AA8BI,SAaE,KAbF;AAlBJ,MAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,OAAO,EAAE,OAAO,QAAQ,UAAU,SAAS,KAAK,WAAW,MAAM,GAAgB;AAC/F,QAAM,SAAS,SAAS;AACxB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,UAAU;AAAA,QACV,YAAY,SAAS,YAAY;AAAA,QACjC,WAAW;AAAA,QACX,GAAG;AAAA,MACL;AAAA,MAGA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,kBAAkB,SAAS,aAAa,aAAa,KAAK,IAAI;AAAA,YAChE;AAAA;AAAA,QACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY,SACR,gFACA;AAAA,YACN;AAAA;AAAA,QACF;AAAA,QACA,oBAAC,SAAI,OAAO,EAAE,UAAU,YAAY,QAAQ,OAAO,GAAI,UAAS;AAAA;AAAA;AAAA,EAClE;AAEJ;","names":[]}
@@ -56,7 +56,7 @@ function CommunityRewardsSection({
56
56
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "grid lg:grid-cols-2 gap-px bg-border/40 rounded-2xl overflow-hidden", children: [
57
57
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "bg-card px-7 py-8 flex flex-col gap-6", children: [
58
58
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2.5", children: [
59
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-blue to-brand-purple text-white shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Sparkles, { className: "h-4 w-4" }) }),
59
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-rose to-brand-orange text-white shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Sparkles, { className: "h-4 w-4" }) }),
60
60
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-base font-black", children: "Community Rewards" })
61
61
  ] }),
62
62
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm font-semibold text-muted-foreground leading-snug", children: "Earn XP. Share the Creator's Fund." }),
@@ -86,7 +86,7 @@ function CommunityRewardsSection({
86
86
  import_link.default,
87
87
  {
88
88
  href: rewardsHref,
89
- className: "mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-brand-blue to-brand-purple px-5 py-2.5 text-sm font-semibold text-white hover:opacity-90 transition-opacity",
89
+ className: "mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-brand-rose to-brand-orange px-5 py-2.5 text-sm font-semibold text-white hover:opacity-90 transition-opacity",
90
90
  children: [
91
91
  "Start earning XP",
92
92
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowRight, { className: "h-3.5 w-3.5" })
@@ -100,7 +100,7 @@ function CommunityRewardsSection({
100
100
  href: creatorHref(entry.address),
101
101
  className: "group relative rounded-xl border border-border/40 bg-muted/20 hover:bg-muted/40 hover:border-border/70 overflow-hidden transition-all flex flex-col justify-between p-4",
102
102
  children: [
103
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-brand-blue to-brand-purple" }),
103
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-brand-rose to-brand-orange" }),
104
104
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-0.5 pt-1", children: [
105
105
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-2xl font-black tabular-nums leading-none", children: entry.totalXp.toLocaleString() }),
106
106
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-[11px] text-muted-foreground", children: "XP earned" })