@medialane/ui 0.100.1 → 0.100.3

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 (57) hide show
  1. package/dist/components/coin-launch-preview.cjs +1 -1
  2. package/dist/components/coin-launch-preview.cjs.map +1 -1
  3. package/dist/components/coin-launch-preview.js +1 -1
  4. package/dist/components/coin-launch-preview.js.map +1 -1
  5. package/dist/components/launchpad-services.cjs +4 -4
  6. package/dist/components/launchpad-services.cjs.map +1 -1
  7. package/dist/components/launchpad-services.js +4 -4
  8. package/dist/components/launchpad-services.js.map +1 -1
  9. package/dist/components/launchpad-strip.cjs +4 -4
  10. package/dist/components/launchpad-strip.cjs.map +1 -1
  11. package/dist/components/launchpad-strip.js +4 -4
  12. package/dist/components/launchpad-strip.js.map +1 -1
  13. package/dist/components/rewards/badge-catalog.cjs +49 -0
  14. package/dist/components/rewards/badge-catalog.cjs.map +1 -0
  15. package/dist/components/rewards/badge-catalog.d.cts +22 -0
  16. package/dist/components/rewards/badge-catalog.d.ts +22 -0
  17. package/dist/components/rewards/badge-catalog.js +25 -0
  18. package/dist/components/rewards/badge-catalog.js.map +1 -0
  19. package/dist/components/rewards/level-badge.cjs +7 -16
  20. package/dist/components/rewards/level-badge.cjs.map +1 -1
  21. package/dist/components/rewards/level-badge.d.cts +10 -4
  22. package/dist/components/rewards/level-badge.d.ts +10 -4
  23. package/dist/components/rewards/level-badge.js +8 -17
  24. package/dist/components/rewards/level-badge.js.map +1 -1
  25. package/dist/components/rewards/level-journey-list.cjs +52 -0
  26. package/dist/components/rewards/level-journey-list.cjs.map +1 -0
  27. package/dist/components/rewards/level-journey-list.d.cts +22 -0
  28. package/dist/components/rewards/level-journey-list.d.ts +22 -0
  29. package/dist/components/rewards/level-journey-list.js +28 -0
  30. package/dist/components/rewards/level-journey-list.js.map +1 -0
  31. package/dist/components/token-glyph.cjs.map +1 -1
  32. package/dist/components/token-glyph.d.cts +1 -1
  33. package/dist/components/token-glyph.d.ts +1 -1
  34. package/dist/components/token-glyph.js.map +1 -1
  35. package/dist/data/brand.cjs +4 -4
  36. package/dist/data/brand.cjs.map +1 -1
  37. package/dist/data/brand.d.cts +4 -4
  38. package/dist/data/brand.d.ts +4 -4
  39. package/dist/data/brand.js +4 -4
  40. package/dist/data/brand.js.map +1 -1
  41. package/dist/index.cjs +6 -3
  42. package/dist/index.cjs.map +1 -1
  43. package/dist/index.d.cts +2 -1
  44. package/dist/index.d.ts +2 -1
  45. package/dist/index.js +4 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/preset/tailwind.cjs +1 -1
  48. package/dist/preset/tailwind.cjs.map +1 -1
  49. package/dist/preset/tailwind.js +1 -1
  50. package/dist/preset/tailwind.js.map +1 -1
  51. package/package.json +1 -1
  52. package/dist/components/rewards/level-ladder.cjs +0 -54
  53. package/dist/components/rewards/level-ladder.cjs.map +0 -1
  54. package/dist/components/rewards/level-ladder.d.cts +0 -17
  55. package/dist/components/rewards/level-ladder.d.ts +0 -17
  56. package/dist/components/rewards/level-ladder.js +0 -30
  57. package/dist/components/rewards/level-ladder.js.map +0 -1
@@ -0,0 +1,22 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface BadgeCatalogBadge {
4
+ key: string;
5
+ name: string;
6
+ description: string;
7
+ icon: string;
8
+ color: string;
9
+ category: string;
10
+ }
11
+ interface BadgeCatalogProps {
12
+ badges: BadgeCatalogBadge[];
13
+ className?: string;
14
+ }
15
+ /** Full badge catalog, grouped by category — "what's achievable," not
16
+ * "what you've done" (no earned/locked state; that's BadgeShelf's job on
17
+ * /rewards, which stays exactly as-is for the viewer's own progress).
18
+ * Groups render in whatever categories are actually present in the data,
19
+ * not a hardcoded list — new categories show up automatically. */
20
+ declare function BadgeCatalog({ badges, className }: BadgeCatalogProps): react_jsx_runtime.JSX.Element;
21
+
22
+ export { BadgeCatalog, type BadgeCatalogBadge, type BadgeCatalogProps };
@@ -0,0 +1,22 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface BadgeCatalogBadge {
4
+ key: string;
5
+ name: string;
6
+ description: string;
7
+ icon: string;
8
+ color: string;
9
+ category: string;
10
+ }
11
+ interface BadgeCatalogProps {
12
+ badges: BadgeCatalogBadge[];
13
+ className?: string;
14
+ }
15
+ /** Full badge catalog, grouped by category — "what's achievable," not
16
+ * "what you've done" (no earned/locked state; that's BadgeShelf's job on
17
+ * /rewards, which stays exactly as-is for the viewer's own progress).
18
+ * Groups render in whatever categories are actually present in the data,
19
+ * not a hardcoded list — new categories show up automatically. */
20
+ declare function BadgeCatalog({ badges, className }: BadgeCatalogProps): react_jsx_runtime.JSX.Element;
21
+
22
+ export { BadgeCatalog, type BadgeCatalogBadge, type BadgeCatalogProps };
@@ -0,0 +1,25 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../utils/cn.js";
3
+ import { BadgeIcon } from "./badge-shelf.js";
4
+ const CATEGORY_LABELS = {
5
+ creator: "Creator",
6
+ collector: "Collector",
7
+ community: "Community"
8
+ };
9
+ function BadgeCatalog({ badges, className }) {
10
+ const categories = [...new Set(badges.map((b) => b.category))];
11
+ return /* @__PURE__ */ jsx("div", { className: cn("space-y-8", className), children: categories.map((cat) => /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
12
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-black uppercase tracking-wide text-foreground/50", children: CATEGORY_LABELS[cat] ?? cat }),
13
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3", children: badges.filter((b) => b.category === cat).map((badge) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 rounded-2xl bg-foreground/[0.04] p-4", children: [
14
+ /* @__PURE__ */ jsx("span", { className: "flex h-10 w-10 items-center justify-center rounded-xl shrink-0 bg-gradient-to-br from-brand-orange to-brand-maeve", children: /* @__PURE__ */ jsx(BadgeIcon, { name: badge.icon, color: "#ffffff", className: "h-5 w-5" }) }),
15
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
16
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-bold", children: badge.name }),
17
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-foreground/60 truncate", children: badge.description })
18
+ ] })
19
+ ] }, badge.key)) })
20
+ ] }, cat)) });
21
+ }
22
+ export {
23
+ BadgeCatalog
24
+ };
25
+ //# sourceMappingURL=badge-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/rewards/badge-catalog.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn.js\";\nimport { BadgeIcon } from \"./badge-shelf.js\";\n\nexport interface BadgeCatalogBadge {\n key: string;\n name: string;\n description: string;\n icon: string;\n color: string;\n category: string;\n}\n\nexport interface BadgeCatalogProps {\n badges: BadgeCatalogBadge[];\n className?: string;\n}\n\nconst CATEGORY_LABELS: Record<string, string> = {\n creator: \"Creator\",\n collector: \"Collector\",\n community: \"Community\",\n};\n\n/** Full badge catalog, grouped by category — \"what's achievable,\" not\n * \"what you've done\" (no earned/locked state; that's BadgeShelf's job on\n * /rewards, which stays exactly as-is for the viewer's own progress).\n * Groups render in whatever categories are actually present in the data,\n * not a hardcoded list — new categories show up automatically. */\nexport function BadgeCatalog({ badges, className }: BadgeCatalogProps) {\n const categories = [...new Set(badges.map((b) => b.category))];\n\n return (\n <div className={cn(\"space-y-8\", className)}>\n {categories.map((cat) => (\n <div key={cat} className=\"space-y-3\">\n <p className=\"text-sm font-black uppercase tracking-wide text-foreground/50\">\n {CATEGORY_LABELS[cat] ?? cat}\n </p>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-3\">\n {badges\n .filter((b) => b.category === cat)\n .map((badge) => (\n <div key={badge.key} className=\"flex items-center gap-3 rounded-2xl bg-foreground/[0.04] p-4\">\n <span className=\"flex h-10 w-10 items-center justify-center rounded-xl shrink-0 bg-gradient-to-br from-brand-orange to-brand-maeve\">\n <BadgeIcon name={badge.icon} color=\"#ffffff\" className=\"h-5 w-5\" />\n </span>\n <div className=\"min-w-0\">\n <p className=\"text-sm font-bold\">{badge.name}</p>\n <p className=\"text-xs text-foreground/60 truncate\">{badge.description}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":"AAmCU,cAWQ,YAXR;AAnCV,SAAS,UAAU;AACnB,SAAS,iBAAiB;AAgB1B,MAAM,kBAA0C;AAAA,EAC9C,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AACb;AAOO,SAAS,aAAa,EAAE,QAAQ,UAAU,GAAsB;AACrE,QAAM,aAAa,CAAC,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE7D,SACE,oBAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACtC,qBAAW,IAAI,CAAC,QACf,qBAAC,SAAc,WAAU,aACvB;AAAA,wBAAC,OAAE,WAAU,iEACV,0BAAgB,GAAG,KAAK,KAC3B;AAAA,IACA,oBAAC,SAAI,WAAU,yCACZ,iBACE,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,EAChC,IAAI,CAAC,UACJ,qBAAC,SAAoB,WAAU,gEAC7B;AAAA,0BAAC,UAAK,WAAU,qHACd,8BAAC,aAAU,MAAM,MAAM,MAAM,OAAM,WAAU,WAAU,WAAU,GACnE;AAAA,MACA,qBAAC,SAAI,WAAU,WACb;AAAA,4BAAC,OAAE,WAAU,qBAAqB,gBAAM,MAAK;AAAA,QAC7C,oBAAC,OAAE,WAAU,uCAAuC,gBAAM,aAAY;AAAA,SACxE;AAAA,SAPQ,MAAM,GAQhB,CACD,GACL;AAAA,OAlBQ,GAmBV,CACD,GACH;AAEJ;","names":[]}
@@ -23,31 +23,22 @@ __export(level_badge_exports, {
23
23
  module.exports = __toCommonJS(level_badge_exports);
24
24
  var import_jsx_runtime = require("react/jsx-runtime");
25
25
  var import_cn = require("../../utils/cn.js");
26
- function LevelBadge({ level, name, badgeColor, size = "md", className }) {
26
+ function LevelBadge({ level, name, size = "md", className }) {
27
27
  const sizeClasses = {
28
- sm: "h-5 px-1.5 gap-1 text-2xs",
29
- md: "h-6 px-2 gap-1.5 text-xs",
30
- lg: "h-8 px-3 gap-2 text-sm"
28
+ sm: "h-5 px-2.5 text-2xs",
29
+ md: "h-6 px-3 text-xs",
30
+ lg: "h-8 px-4 text-sm"
31
31
  };
32
- const dotSizes = {
33
- sm: "h-1.5 w-1.5",
34
- md: "h-2 w-2",
35
- lg: "h-2.5 w-2.5"
36
- };
37
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
32
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
38
33
  "span",
39
34
  {
40
35
  title: `Level ${level}`,
41
36
  className: (0, import_cn.cn)(
42
- "inline-flex items-center rounded-full border font-semibold tracking-tight whitespace-nowrap",
37
+ "inline-flex items-center rounded-full font-bold tracking-tight whitespace-nowrap text-white bg-gradient-to-r from-brand-orange to-brand-maeve",
43
38
  sizeClasses[size],
44
39
  className
45
40
  ),
46
- style: { borderColor: `${badgeColor}60`, backgroundColor: `${badgeColor}18`, color: badgeColor },
47
- children: [
48
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: (0, import_cn.cn)("rounded-full shrink-0", dotSizes[size]), style: { backgroundColor: badgeColor } }),
49
- name
50
- ]
41
+ children: name
51
42
  }
52
43
  );
53
44
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/rewards/level-badge.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn.js\";\n\nexport interface LevelBadgeProps {\n level: number;\n name: string;\n badgeColor: string;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\n/** Color-coded level chip — shows the level's title only (\"Voyager\"), not\n * the raw number (\"Lv.6 Voyager\" read as UI noise). The level is still\n * available on hover via the native title tooltip. Pure presentation — the\n * consuming app supplies level data from the rewards API. */\nexport function LevelBadge({ level, name, badgeColor, size = \"md\", className }: LevelBadgeProps) {\n const sizeClasses = {\n sm: \"h-5 px-1.5 gap-1 text-2xs\",\n md: \"h-6 px-2 gap-1.5 text-xs\",\n lg: \"h-8 px-3 gap-2 text-sm\",\n };\n\n const dotSizes = {\n sm: \"h-1.5 w-1.5\",\n md: \"h-2 w-2\",\n lg: \"h-2.5 w-2.5\",\n };\n\n return (\n <span\n title={`Level ${level}`}\n className={cn(\n \"inline-flex items-center rounded-full border font-semibold tracking-tight whitespace-nowrap\",\n sizeClasses[size],\n className\n )}\n style={{ borderColor: `${badgeColor}60`, backgroundColor: `${badgeColor}18`, color: badgeColor }}\n >\n <span className={cn(\"rounded-full shrink-0\", dotSizes[size])} style={{ backgroundColor: badgeColor }} />\n {name}\n </span>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BI;AA5BJ,gBAAmB;AAcZ,SAAS,WAAW,EAAE,OAAO,MAAM,YAAY,OAAO,MAAM,UAAU,GAAoB;AAC/F,QAAM,cAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,WAAW;AAAA,IACf,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,SAAS,KAAK;AAAA,MACrB,eAAW;AAAA,QACT;AAAA,QACA,YAAY,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,MACA,OAAO,EAAE,aAAa,GAAG,UAAU,MAAM,iBAAiB,GAAG,UAAU,MAAM,OAAO,WAAW;AAAA,MAE/F;AAAA,oDAAC,UAAK,eAAW,cAAG,yBAAyB,SAAS,IAAI,CAAC,GAAG,OAAO,EAAE,iBAAiB,WAAW,GAAG;AAAA,QACrG;AAAA;AAAA;AAAA,EACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/rewards/level-badge.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn.js\";\n\nexport interface LevelBadgeProps {\n level: number;\n name: string;\n /** Kept for interface consistency with other rewards components that do\n * use per-level color (XpProgress, LevelUpCelebration, JourneyPath) —\n * this component intentionally ignores it in favor of one signature\n * brand gradient across every level, not 20+ flat per-level colors. */\n badgeColor: string;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\n/** Level chip — shows the level's title only (\"Voyager\"), not the raw\n * number (\"Lv.6 Voyager\" read as UI noise). The level is still available\n * on hover via the native title tooltip. One signature orange->maeve\n * gradient fill, white text — vivid and consistent regardless of level,\n * rather than a washed-out per-level tint. Pure presentation — the\n * consuming app supplies level data from the rewards API. */\nexport function LevelBadge({ level, name, size = \"md\", className }: LevelBadgeProps) {\n const sizeClasses = {\n sm: \"h-5 px-2.5 text-2xs\",\n md: \"h-6 px-3 text-xs\",\n lg: \"h-8 px-4 text-sm\",\n };\n\n return (\n <span\n title={`Level ${level}`}\n className={cn(\n \"inline-flex items-center rounded-full font-bold tracking-tight whitespace-nowrap text-white bg-gradient-to-r from-brand-orange to-brand-maeve\",\n sizeClasses[size],\n className\n )}\n >\n {name}\n </span>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BI;AA5BJ,gBAAmB;AAoBZ,SAAS,WAAW,EAAE,OAAO,MAAM,OAAO,MAAM,UAAU,GAAoB;AACnF,QAAM,cAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,SAAS,KAAK;AAAA,MACrB,eAAW;AAAA,QACT;AAAA,QACA,YAAY,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":[]}
@@ -3,14 +3,20 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  interface LevelBadgeProps {
4
4
  level: number;
5
5
  name: string;
6
+ /** Kept for interface consistency with other rewards components that do
7
+ * use per-level color (XpProgress, LevelUpCelebration, JourneyPath) —
8
+ * this component intentionally ignores it in favor of one signature
9
+ * brand gradient across every level, not 20+ flat per-level colors. */
6
10
  badgeColor: string;
7
11
  size?: "sm" | "md" | "lg";
8
12
  className?: string;
9
13
  }
10
- /** Color-coded level chip — shows the level's title only ("Voyager"), not
11
- * the raw number ("Lv.6 Voyager" read as UI noise). The level is still
12
- * available on hover via the native title tooltip. Pure presentation — the
14
+ /** Level chip — shows the level's title only ("Voyager"), not the raw
15
+ * number ("Lv.6 Voyager" read as UI noise). The level is still available
16
+ * on hover via the native title tooltip. One signature orange->maeve
17
+ * gradient fill, white text — vivid and consistent regardless of level,
18
+ * rather than a washed-out per-level tint. Pure presentation — the
13
19
  * consuming app supplies level data from the rewards API. */
14
- declare function LevelBadge({ level, name, badgeColor, size, className }: LevelBadgeProps): react_jsx_runtime.JSX.Element;
20
+ declare function LevelBadge({ level, name, size, className }: LevelBadgeProps): react_jsx_runtime.JSX.Element;
15
21
 
16
22
  export { LevelBadge, type LevelBadgeProps };
@@ -3,14 +3,20 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  interface LevelBadgeProps {
4
4
  level: number;
5
5
  name: string;
6
+ /** Kept for interface consistency with other rewards components that do
7
+ * use per-level color (XpProgress, LevelUpCelebration, JourneyPath) —
8
+ * this component intentionally ignores it in favor of one signature
9
+ * brand gradient across every level, not 20+ flat per-level colors. */
6
10
  badgeColor: string;
7
11
  size?: "sm" | "md" | "lg";
8
12
  className?: string;
9
13
  }
10
- /** Color-coded level chip — shows the level's title only ("Voyager"), not
11
- * the raw number ("Lv.6 Voyager" read as UI noise). The level is still
12
- * available on hover via the native title tooltip. Pure presentation — the
14
+ /** Level chip — shows the level's title only ("Voyager"), not the raw
15
+ * number ("Lv.6 Voyager" read as UI noise). The level is still available
16
+ * on hover via the native title tooltip. One signature orange->maeve
17
+ * gradient fill, white text — vivid and consistent regardless of level,
18
+ * rather than a washed-out per-level tint. Pure presentation — the
13
19
  * consuming app supplies level data from the rewards API. */
14
- declare function LevelBadge({ level, name, badgeColor, size, className }: LevelBadgeProps): react_jsx_runtime.JSX.Element;
20
+ declare function LevelBadge({ level, name, size, className }: LevelBadgeProps): react_jsx_runtime.JSX.Element;
15
21
 
16
22
  export { LevelBadge, type LevelBadgeProps };
@@ -1,30 +1,21 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
1
+ import { jsx } from "react/jsx-runtime";
2
2
  import { cn } from "../../utils/cn.js";
3
- function LevelBadge({ level, name, badgeColor, size = "md", className }) {
3
+ function LevelBadge({ level, name, size = "md", className }) {
4
4
  const sizeClasses = {
5
- sm: "h-5 px-1.5 gap-1 text-2xs",
6
- md: "h-6 px-2 gap-1.5 text-xs",
7
- lg: "h-8 px-3 gap-2 text-sm"
5
+ sm: "h-5 px-2.5 text-2xs",
6
+ md: "h-6 px-3 text-xs",
7
+ lg: "h-8 px-4 text-sm"
8
8
  };
9
- const dotSizes = {
10
- sm: "h-1.5 w-1.5",
11
- md: "h-2 w-2",
12
- lg: "h-2.5 w-2.5"
13
- };
14
- return /* @__PURE__ */ jsxs(
9
+ return /* @__PURE__ */ jsx(
15
10
  "span",
16
11
  {
17
12
  title: `Level ${level}`,
18
13
  className: cn(
19
- "inline-flex items-center rounded-full border font-semibold tracking-tight whitespace-nowrap",
14
+ "inline-flex items-center rounded-full font-bold tracking-tight whitespace-nowrap text-white bg-gradient-to-r from-brand-orange to-brand-maeve",
20
15
  sizeClasses[size],
21
16
  className
22
17
  ),
23
- style: { borderColor: `${badgeColor}60`, backgroundColor: `${badgeColor}18`, color: badgeColor },
24
- children: [
25
- /* @__PURE__ */ jsx("span", { className: cn("rounded-full shrink-0", dotSizes[size]), style: { backgroundColor: badgeColor } }),
26
- name
27
- ]
18
+ children: name
28
19
  }
29
20
  );
30
21
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/rewards/level-badge.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn.js\";\n\nexport interface LevelBadgeProps {\n level: number;\n name: string;\n badgeColor: string;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\n/** Color-coded level chip — shows the level's title only (\"Voyager\"), not\n * the raw number (\"Lv.6 Voyager\" read as UI noise). The level is still\n * available on hover via the native title tooltip. Pure presentation — the\n * consuming app supplies level data from the rewards API. */\nexport function LevelBadge({ level, name, badgeColor, size = \"md\", className }: LevelBadgeProps) {\n const sizeClasses = {\n sm: \"h-5 px-1.5 gap-1 text-2xs\",\n md: \"h-6 px-2 gap-1.5 text-xs\",\n lg: \"h-8 px-3 gap-2 text-sm\",\n };\n\n const dotSizes = {\n sm: \"h-1.5 w-1.5\",\n md: \"h-2 w-2\",\n lg: \"h-2.5 w-2.5\",\n };\n\n return (\n <span\n title={`Level ${level}`}\n className={cn(\n \"inline-flex items-center rounded-full border font-semibold tracking-tight whitespace-nowrap\",\n sizeClasses[size],\n className\n )}\n style={{ borderColor: `${badgeColor}60`, backgroundColor: `${badgeColor}18`, color: badgeColor }}\n >\n <span className={cn(\"rounded-full shrink-0\", dotSizes[size])} style={{ backgroundColor: badgeColor }} />\n {name}\n </span>\n );\n}\n"],"mappings":"AA4BI,SASE,KATF;AA5BJ,SAAS,UAAU;AAcZ,SAAS,WAAW,EAAE,OAAO,MAAM,YAAY,OAAO,MAAM,UAAU,GAAoB;AAC/F,QAAM,cAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,WAAW;AAAA,IACf,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,SAAS,KAAK;AAAA,MACrB,WAAW;AAAA,QACT;AAAA,QACA,YAAY,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,MACA,OAAO,EAAE,aAAa,GAAG,UAAU,MAAM,iBAAiB,GAAG,UAAU,MAAM,OAAO,WAAW;AAAA,MAE/F;AAAA,4BAAC,UAAK,WAAW,GAAG,yBAAyB,SAAS,IAAI,CAAC,GAAG,OAAO,EAAE,iBAAiB,WAAW,GAAG;AAAA,QACrG;AAAA;AAAA;AAAA,EACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/rewards/level-badge.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn.js\";\n\nexport interface LevelBadgeProps {\n level: number;\n name: string;\n /** Kept for interface consistency with other rewards components that do\n * use per-level color (XpProgress, LevelUpCelebration, JourneyPath) —\n * this component intentionally ignores it in favor of one signature\n * brand gradient across every level, not 20+ flat per-level colors. */\n badgeColor: string;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\n/** Level chip — shows the level's title only (\"Voyager\"), not the raw\n * number (\"Lv.6 Voyager\" read as UI noise). The level is still available\n * on hover via the native title tooltip. One signature orange->maeve\n * gradient fill, white text — vivid and consistent regardless of level,\n * rather than a washed-out per-level tint. Pure presentation — the\n * consuming app supplies level data from the rewards API. */\nexport function LevelBadge({ level, name, size = \"md\", className }: LevelBadgeProps) {\n const sizeClasses = {\n sm: \"h-5 px-2.5 text-2xs\",\n md: \"h-6 px-3 text-xs\",\n lg: \"h-8 px-4 text-sm\",\n };\n\n return (\n <span\n title={`Level ${level}`}\n className={cn(\n \"inline-flex items-center rounded-full font-bold tracking-tight whitespace-nowrap text-white bg-gradient-to-r from-brand-orange to-brand-maeve\",\n sizeClasses[size],\n className\n )}\n >\n {name}\n </span>\n );\n}\n"],"mappings":"AA4BI;AA5BJ,SAAS,UAAU;AAoBZ,SAAS,WAAW,EAAE,OAAO,MAAM,OAAO,MAAM,UAAU,GAAoB;AACnF,QAAM,cAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,SAAS,KAAK;AAAA,MACrB,WAAW;AAAA,QACT;AAAA,QACA,YAAY,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":[]}
@@ -0,0 +1,52 @@
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 level_journey_list_exports = {};
20
+ __export(level_journey_list_exports, {
21
+ LevelJourneyList: () => LevelJourneyList
22
+ });
23
+ module.exports = __toCommonJS(level_journey_list_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_cn = require("../../utils/cn.js");
26
+ function LevelJourneyList({ levels, className }) {
27
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ol", { className: (0, import_cn.cn)("divide-y divide-foreground/[0.06]", className), children: levels.map((l, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { className: "flex items-start gap-4 py-4", children: [
28
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "flex items-center gap-1.5 w-8 shrink-0 pt-0.5", children: [
29
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-bold text-foreground/30 tabular-nums", children: l.level }),
30
+ (i + 1) % 10 === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
31
+ "span",
32
+ {
33
+ "aria-hidden": true,
34
+ className: "h-1.5 w-1.5 rounded-full bg-gradient-to-r from-brand-orange to-brand-maeve"
35
+ }
36
+ )
37
+ ] }),
38
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex-1 min-w-0", children: [
39
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-base font-bold", children: l.name }),
40
+ l.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-foreground/60 mt-0.5 leading-relaxed", children: l.description })
41
+ ] }),
42
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-sm font-black tabular-nums text-foreground/70 shrink-0", children: [
43
+ l.xpRequired.toLocaleString(),
44
+ " XP"
45
+ ] })
46
+ ] }, l.level)) });
47
+ }
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ LevelJourneyList
51
+ });
52
+ //# sourceMappingURL=level-journey-list.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/rewards/level-journey-list.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn.js\";\n\nexport interface LevelJourneyListLevel {\n level: number;\n name: string;\n xpRequired: number;\n description: string | null;\n}\n\nexport interface LevelJourneyListProps {\n levels: LevelJourneyListLevel[];\n className?: string;\n}\n\n/** The full level ladder as a vertical showcase list — not the old\n * horizontal chip rail, which doesn't scale past a handful of items and\n * was built for a dashboard strip, not a 50-row standalone page. No\n * current-level state: this is the system-wide view, not \"where am I.\"\n * Every 10th level gets a small gradient marker as a milestone cue;\n * colors are otherwise uniform (one signature identity, not 50 flat\n * per-level colors) — badgeColor is deliberately not consumed here. */\nexport function LevelJourneyList({ levels, className }: LevelJourneyListProps) {\n return (\n <ol className={cn(\"divide-y divide-foreground/[0.06]\", className)}>\n {levels.map((l, i) => (\n <li key={l.level} className=\"flex items-start gap-4 py-4\">\n <span className=\"flex items-center gap-1.5 w-8 shrink-0 pt-0.5\">\n <span className=\"text-xs font-bold text-foreground/30 tabular-nums\">{l.level}</span>\n {(i + 1) % 10 === 0 && (\n <span\n aria-hidden\n className=\"h-1.5 w-1.5 rounded-full bg-gradient-to-r from-brand-orange to-brand-maeve\"\n />\n )}\n </span>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-base font-bold\">{l.name}</p>\n {l.description && (\n <p className=\"text-sm text-foreground/60 mt-0.5 leading-relaxed\">{l.description}</p>\n )}\n </div>\n <span className=\"text-sm font-black tabular-nums text-foreground/70 shrink-0\">\n {l.xpRequired.toLocaleString()} XP\n </span>\n </li>\n ))}\n </ol>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BU;AA1BV,gBAAmB;AAqBZ,SAAS,iBAAiB,EAAE,QAAQ,UAAU,GAA0B;AAC7E,SACE,4CAAC,QAAG,eAAW,cAAG,qCAAqC,SAAS,GAC7D,iBAAO,IAAI,CAAC,GAAG,MACd,6CAAC,QAAiB,WAAU,+BAC1B;AAAA,iDAAC,UAAK,WAAU,iDACd;AAAA,kDAAC,UAAK,WAAU,qDAAqD,YAAE,OAAM;AAAA,OAC3E,IAAI,KAAK,OAAO,KAChB;AAAA,QAAC;AAAA;AAAA,UACC,eAAW;AAAA,UACX,WAAU;AAAA;AAAA,MACZ;AAAA,OAEJ;AAAA,IACA,6CAAC,SAAI,WAAU,kBACb;AAAA,kDAAC,OAAE,WAAU,uBAAuB,YAAE,MAAK;AAAA,MAC1C,EAAE,eACD,4CAAC,OAAE,WAAU,qDAAqD,YAAE,aAAY;AAAA,OAEpF;AAAA,IACA,6CAAC,UAAK,WAAU,+DACb;AAAA,QAAE,WAAW,eAAe;AAAA,MAAE;AAAA,OACjC;AAAA,OAlBO,EAAE,KAmBX,CACD,GACH;AAEJ;","names":[]}
@@ -0,0 +1,22 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface LevelJourneyListLevel {
4
+ level: number;
5
+ name: string;
6
+ xpRequired: number;
7
+ description: string | null;
8
+ }
9
+ interface LevelJourneyListProps {
10
+ levels: LevelJourneyListLevel[];
11
+ className?: string;
12
+ }
13
+ /** The full level ladder as a vertical showcase list — not the old
14
+ * horizontal chip rail, which doesn't scale past a handful of items and
15
+ * was built for a dashboard strip, not a 50-row standalone page. No
16
+ * current-level state: this is the system-wide view, not "where am I."
17
+ * Every 10th level gets a small gradient marker as a milestone cue;
18
+ * colors are otherwise uniform (one signature identity, not 50 flat
19
+ * per-level colors) — badgeColor is deliberately not consumed here. */
20
+ declare function LevelJourneyList({ levels, className }: LevelJourneyListProps): react_jsx_runtime.JSX.Element;
21
+
22
+ export { LevelJourneyList, type LevelJourneyListLevel, type LevelJourneyListProps };
@@ -0,0 +1,22 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface LevelJourneyListLevel {
4
+ level: number;
5
+ name: string;
6
+ xpRequired: number;
7
+ description: string | null;
8
+ }
9
+ interface LevelJourneyListProps {
10
+ levels: LevelJourneyListLevel[];
11
+ className?: string;
12
+ }
13
+ /** The full level ladder as a vertical showcase list — not the old
14
+ * horizontal chip rail, which doesn't scale past a handful of items and
15
+ * was built for a dashboard strip, not a 50-row standalone page. No
16
+ * current-level state: this is the system-wide view, not "where am I."
17
+ * Every 10th level gets a small gradient marker as a milestone cue;
18
+ * colors are otherwise uniform (one signature identity, not 50 flat
19
+ * per-level colors) — badgeColor is deliberately not consumed here. */
20
+ declare function LevelJourneyList({ levels, className }: LevelJourneyListProps): react_jsx_runtime.JSX.Element;
21
+
22
+ export { LevelJourneyList, type LevelJourneyListLevel, type LevelJourneyListProps };
@@ -0,0 +1,28 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../utils/cn.js";
3
+ function LevelJourneyList({ levels, className }) {
4
+ return /* @__PURE__ */ jsx("ol", { className: cn("divide-y divide-foreground/[0.06]", className), children: levels.map((l, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-4 py-4", children: [
5
+ /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5 w-8 shrink-0 pt-0.5", children: [
6
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-bold text-foreground/30 tabular-nums", children: l.level }),
7
+ (i + 1) % 10 === 0 && /* @__PURE__ */ jsx(
8
+ "span",
9
+ {
10
+ "aria-hidden": true,
11
+ className: "h-1.5 w-1.5 rounded-full bg-gradient-to-r from-brand-orange to-brand-maeve"
12
+ }
13
+ )
14
+ ] }),
15
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
16
+ /* @__PURE__ */ jsx("p", { className: "text-base font-bold", children: l.name }),
17
+ l.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-foreground/60 mt-0.5 leading-relaxed", children: l.description })
18
+ ] }),
19
+ /* @__PURE__ */ jsxs("span", { className: "text-sm font-black tabular-nums text-foreground/70 shrink-0", children: [
20
+ l.xpRequired.toLocaleString(),
21
+ " XP"
22
+ ] })
23
+ ] }, l.level)) });
24
+ }
25
+ export {
26
+ LevelJourneyList
27
+ };
28
+ //# sourceMappingURL=level-journey-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/rewards/level-journey-list.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn.js\";\n\nexport interface LevelJourneyListLevel {\n level: number;\n name: string;\n xpRequired: number;\n description: string | null;\n}\n\nexport interface LevelJourneyListProps {\n levels: LevelJourneyListLevel[];\n className?: string;\n}\n\n/** The full level ladder as a vertical showcase list — not the old\n * horizontal chip rail, which doesn't scale past a handful of items and\n * was built for a dashboard strip, not a 50-row standalone page. No\n * current-level state: this is the system-wide view, not \"where am I.\"\n * Every 10th level gets a small gradient marker as a milestone cue;\n * colors are otherwise uniform (one signature identity, not 50 flat\n * per-level colors) — badgeColor is deliberately not consumed here. */\nexport function LevelJourneyList({ levels, className }: LevelJourneyListProps) {\n return (\n <ol className={cn(\"divide-y divide-foreground/[0.06]\", className)}>\n {levels.map((l, i) => (\n <li key={l.level} className=\"flex items-start gap-4 py-4\">\n <span className=\"flex items-center gap-1.5 w-8 shrink-0 pt-0.5\">\n <span className=\"text-xs font-bold text-foreground/30 tabular-nums\">{l.level}</span>\n {(i + 1) % 10 === 0 && (\n <span\n aria-hidden\n className=\"h-1.5 w-1.5 rounded-full bg-gradient-to-r from-brand-orange to-brand-maeve\"\n />\n )}\n </span>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-base font-bold\">{l.name}</p>\n {l.description && (\n <p className=\"text-sm text-foreground/60 mt-0.5 leading-relaxed\">{l.description}</p>\n )}\n </div>\n <span className=\"text-sm font-black tabular-nums text-foreground/70 shrink-0\">\n {l.xpRequired.toLocaleString()} XP\n </span>\n </li>\n ))}\n </ol>\n );\n}\n"],"mappings":"AA0BU,SACE,KADF;AA1BV,SAAS,UAAU;AAqBZ,SAAS,iBAAiB,EAAE,QAAQ,UAAU,GAA0B;AAC7E,SACE,oBAAC,QAAG,WAAW,GAAG,qCAAqC,SAAS,GAC7D,iBAAO,IAAI,CAAC,GAAG,MACd,qBAAC,QAAiB,WAAU,+BAC1B;AAAA,yBAAC,UAAK,WAAU,iDACd;AAAA,0BAAC,UAAK,WAAU,qDAAqD,YAAE,OAAM;AAAA,OAC3E,IAAI,KAAK,OAAO,KAChB;AAAA,QAAC;AAAA;AAAA,UACC,eAAW;AAAA,UACX,WAAU;AAAA;AAAA,MACZ;AAAA,OAEJ;AAAA,IACA,qBAAC,SAAI,WAAU,kBACb;AAAA,0BAAC,OAAE,WAAU,uBAAuB,YAAE,MAAK;AAAA,MAC1C,EAAE,eACD,oBAAC,OAAE,WAAU,qDAAqD,YAAE,aAAY;AAAA,OAEpF;AAAA,IACA,qBAAC,UAAK,WAAU,+DACb;AAAA,QAAE,WAAW,eAAe;AAAA,MAAE;AAAA,OACjC;AAAA,OAlBO,EAAE,KAmBX,CACD,GACH;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/token-glyph.tsx"],"sourcesContent":["// Inline SVG token glyphs — self-contained, no external asset dependency.\n// Covers the five tokens active on the platform: STRK, ETH, USDC, USDT, WBTC.\n\nexport type TokenSymbol = 'strk' | 'eth' | 'usdc' | 'usdt' | 'wbtc';\n\nexport interface TokenGlyphProps {\n token?: TokenSymbol | string;\n size?: number;\n}\n\nexport function TokenGlyph({ token = 'strk', size = 20 }: TokenGlyphProps) {\n const gradId = `ml-tg-strk-${size}`;\n\n switch (token) {\n case 'eth':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#2b2f3a\"/>\n <path d=\"M12 4 7 12.2l5 3 5-3L12 4Z\" fill=\"#e6e8f0\"/>\n <path d=\"M7 13.3 12 20l5-6.7-5 3-5-3Z\" fill=\"#b9bdcc\"/>\n </svg>\n );\n case 'usdc':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#2775ca\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"13\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">$</text>\n </svg>\n );\n case 'usdt':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#26a17b\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"12\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">₮</text>\n </svg>\n );\n case 'wbtc':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#f09242\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"12\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">₿</text>\n </svg>\n );\n default:\n // STRK — magenta→orange gradient coin with swoosh\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <defs>\n <linearGradient id={gradId} x1=\"3\" y1=\"3\" x2=\"21\" y2=\"21\">\n <stop offset=\"0\" stopColor=\"#f6608f\"/>\n <stop offset=\"1\" stopColor=\"#fb8b46\"/>\n </linearGradient>\n </defs>\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={`url(#${gradId})`}/>\n <path d=\"M5.5 14.5c3.2-5 9.8-5 13 0\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"1.8\" strokeLinecap=\"round\"/>\n <circle cx=\"9\" cy=\"10.5\" r=\"0.9\" fill=\"#fff\"/>\n </svg>\n );\n }\n}\n\nexport interface TokenAmountProps {\n token?: TokenSymbol | string;\n amount: string;\n /** Icon size in px. Text size scales proportionally. */\n size?: number;\n /** Override the amount text color. Defaults to brand-price orange. */\n color?: string;\n bold?: boolean;\n className?: string;\n}\n\nexport function TokenAmount({\n token = 'strk',\n amount,\n size = 20,\n color,\n bold = true,\n className,\n}: TokenAmountProps) {\n return (\n <span className={`inline-flex items-center gap-1.5 ${className ?? ''}`}>\n <TokenGlyph token={token} size={size} />\n <span\n style={{\n fontVariantNumeric: 'tabular-nums',\n fontWeight: bold ? 700 : 500,\n fontSize: size * 0.92,\n color: color ?? '#f97316',\n letterSpacing: '-0.01em',\n }}\n >\n {amount}\n </span>\n </span>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBQ;AAND,SAAS,WAAW,EAAE,QAAQ,QAAQ,OAAO,GAAG,GAAoB;AACzE,QAAM,SAAS,cAAc,IAAI;AAEjC,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aACE,6CAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,oDAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,4CAAC,UAAK,GAAE,8BAA6B,MAAK,WAAS;AAAA,QACnD,4CAAC,UAAK,GAAE,gCAA+B,MAAK,WAAS;AAAA,SACvD;AAAA,IAEJ,KAAK;AACH,aACE,6CAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,oDAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,4CAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,eAAC;AAAA,SAC/G;AAAA,IAEJ,KAAK;AACH,aACE,6CAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,oDAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,4CAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,oBAAC;AAAA,SAC/G;AAAA,IAEJ,KAAK;AACH,aACE,6CAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,oDAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,4CAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,oBAAC;AAAA,SAC/G;AAAA,IAEJ;AAEE,aACE,6CAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,oDAAC,UACC,uDAAC,oBAAe,IAAI,QAAQ,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,MACnD;AAAA,sDAAC,UAAK,QAAO,KAAI,WAAU,WAAS;AAAA,UACpC,4CAAC,UAAK,QAAO,KAAI,WAAU,WAAS;AAAA,WACtC,GACF;AAAA,QACA,4CAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAM,QAAQ,MAAM,KAAI;AAAA,QACvD,4CAAC,UAAK,GAAE,8BAA6B,MAAK,QAAO,QAAO,QAAO,aAAY,OAAM,eAAc,SAAO;AAAA,QACtG,4CAAC,YAAO,IAAG,KAAI,IAAG,QAAO,GAAE,OAAM,MAAK,QAAM;AAAA,SAC9C;AAAA,EAEN;AACF;AAaO,SAAS,YAAY;AAAA,EAC1B,QAAQ;AAAA,EACR;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAAqB;AACnB,SACE,6CAAC,UAAK,WAAW,oCAAoC,aAAa,EAAE,IAClE;AAAA,gDAAC,cAAW,OAAc,MAAY;AAAA,IACtC;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,oBAAoB;AAAA,UACpB,YAAY,OAAO,MAAM;AAAA,UACzB,UAAU,OAAO;AAAA,UACjB,OAAO,SAAS;AAAA,UAChB,eAAe;AAAA,QACjB;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/token-glyph.tsx"],"sourcesContent":["// Inline SVG token glyphs — self-contained, no external asset dependency.\n// Covers the five tokens active on the platform: STRK, ETH, USDC, USDT, WBTC.\n\nexport type TokenSymbol = 'strk' | 'eth' | 'usdc' | 'usdt' | 'wbtc';\n\nexport interface TokenGlyphProps {\n token?: TokenSymbol | string;\n size?: number;\n}\n\nexport function TokenGlyph({ token = 'strk', size = 20 }: TokenGlyphProps) {\n const gradId = `ml-tg-strk-${size}`;\n\n switch (token) {\n case 'eth':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#2b2f3a\"/>\n <path d=\"M12 4 7 12.2l5 3 5-3L12 4Z\" fill=\"#e6e8f0\"/>\n <path d=\"M7 13.3 12 20l5-6.7-5 3-5-3Z\" fill=\"#b9bdcc\"/>\n </svg>\n );\n case 'usdc':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#2775ca\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"13\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">$</text>\n </svg>\n );\n case 'usdt':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#26a17b\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"12\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">₮</text>\n </svg>\n );\n case 'wbtc':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#f09242\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"12\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">₿</text>\n </svg>\n );\n default:\n // STRK — magenta→orange gradient coin with swoosh\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <defs>\n <linearGradient id={gradId} x1=\"3\" y1=\"3\" x2=\"21\" y2=\"21\">\n <stop offset=\"0\" stopColor=\"#f6608f\"/>\n <stop offset=\"1\" stopColor=\"#fb8b46\"/>\n </linearGradient>\n </defs>\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={`url(#${gradId})`}/>\n <path d=\"M5.5 14.5c3.2-5 9.8-5 13 0\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"1.8\" strokeLinecap=\"round\"/>\n <circle cx=\"9\" cy=\"10.5\" r=\"0.9\" fill=\"#fff\"/>\n </svg>\n );\n }\n}\n\nexport interface TokenAmountProps {\n token?: TokenSymbol | string;\n amount: string;\n /** Icon size in px. Text size scales proportionally. */\n size?: number;\n /** Override the amount text color. Defaults to brand-maeve orange. */\n color?: string;\n bold?: boolean;\n className?: string;\n}\n\nexport function TokenAmount({\n token = 'strk',\n amount,\n size = 20,\n color,\n bold = true,\n className,\n}: TokenAmountProps) {\n return (\n <span className={`inline-flex items-center gap-1.5 ${className ?? ''}`}>\n <TokenGlyph token={token} size={size} />\n <span\n style={{\n fontVariantNumeric: 'tabular-nums',\n fontWeight: bold ? 700 : 500,\n fontSize: size * 0.92,\n color: color ?? '#f97316',\n letterSpacing: '-0.01em',\n }}\n >\n {amount}\n </span>\n </span>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBQ;AAND,SAAS,WAAW,EAAE,QAAQ,QAAQ,OAAO,GAAG,GAAoB;AACzE,QAAM,SAAS,cAAc,IAAI;AAEjC,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aACE,6CAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,oDAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,4CAAC,UAAK,GAAE,8BAA6B,MAAK,WAAS;AAAA,QACnD,4CAAC,UAAK,GAAE,gCAA+B,MAAK,WAAS;AAAA,SACvD;AAAA,IAEJ,KAAK;AACH,aACE,6CAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,oDAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,4CAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,eAAC;AAAA,SAC/G;AAAA,IAEJ,KAAK;AACH,aACE,6CAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,oDAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,4CAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,oBAAC;AAAA,SAC/G;AAAA,IAEJ,KAAK;AACH,aACE,6CAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,oDAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,4CAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,oBAAC;AAAA,SAC/G;AAAA,IAEJ;AAEE,aACE,6CAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,oDAAC,UACC,uDAAC,oBAAe,IAAI,QAAQ,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,MACnD;AAAA,sDAAC,UAAK,QAAO,KAAI,WAAU,WAAS;AAAA,UACpC,4CAAC,UAAK,QAAO,KAAI,WAAU,WAAS;AAAA,WACtC,GACF;AAAA,QACA,4CAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAM,QAAQ,MAAM,KAAI;AAAA,QACvD,4CAAC,UAAK,GAAE,8BAA6B,MAAK,QAAO,QAAO,QAAO,aAAY,OAAM,eAAc,SAAO;AAAA,QACtG,4CAAC,YAAO,IAAG,KAAI,IAAG,QAAO,GAAE,OAAM,MAAK,QAAM;AAAA,SAC9C;AAAA,EAEN;AACF;AAaO,SAAS,YAAY;AAAA,EAC1B,QAAQ;AAAA,EACR;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAAqB;AACnB,SACE,6CAAC,UAAK,WAAW,oCAAoC,aAAa,EAAE,IAClE;AAAA,gDAAC,cAAW,OAAc,MAAY;AAAA,IACtC;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,oBAAoB;AAAA,UACpB,YAAY,OAAO,MAAM;AAAA,UACzB,UAAU,OAAO;AAAA,UACjB,OAAO,SAAS;AAAA,UAChB,eAAe;AAAA,QACjB;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;","names":[]}
@@ -11,7 +11,7 @@ interface TokenAmountProps {
11
11
  amount: string;
12
12
  /** Icon size in px. Text size scales proportionally. */
13
13
  size?: number;
14
- /** Override the amount text color. Defaults to brand-price orange. */
14
+ /** Override the amount text color. Defaults to brand-maeve orange. */
15
15
  color?: string;
16
16
  bold?: boolean;
17
17
  className?: string;
@@ -11,7 +11,7 @@ interface TokenAmountProps {
11
11
  amount: string;
12
12
  /** Icon size in px. Text size scales proportionally. */
13
13
  size?: number;
14
- /** Override the amount text color. Defaults to brand-price orange. */
14
+ /** Override the amount text color. Defaults to brand-maeve orange. */
15
15
  color?: string;
16
16
  bold?: boolean;
17
17
  className?: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/token-glyph.tsx"],"sourcesContent":["// Inline SVG token glyphs — self-contained, no external asset dependency.\n// Covers the five tokens active on the platform: STRK, ETH, USDC, USDT, WBTC.\n\nexport type TokenSymbol = 'strk' | 'eth' | 'usdc' | 'usdt' | 'wbtc';\n\nexport interface TokenGlyphProps {\n token?: TokenSymbol | string;\n size?: number;\n}\n\nexport function TokenGlyph({ token = 'strk', size = 20 }: TokenGlyphProps) {\n const gradId = `ml-tg-strk-${size}`;\n\n switch (token) {\n case 'eth':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#2b2f3a\"/>\n <path d=\"M12 4 7 12.2l5 3 5-3L12 4Z\" fill=\"#e6e8f0\"/>\n <path d=\"M7 13.3 12 20l5-6.7-5 3-5-3Z\" fill=\"#b9bdcc\"/>\n </svg>\n );\n case 'usdc':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#2775ca\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"13\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">$</text>\n </svg>\n );\n case 'usdt':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#26a17b\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"12\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">₮</text>\n </svg>\n );\n case 'wbtc':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#f09242\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"12\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">₿</text>\n </svg>\n );\n default:\n // STRK — magenta→orange gradient coin with swoosh\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <defs>\n <linearGradient id={gradId} x1=\"3\" y1=\"3\" x2=\"21\" y2=\"21\">\n <stop offset=\"0\" stopColor=\"#f6608f\"/>\n <stop offset=\"1\" stopColor=\"#fb8b46\"/>\n </linearGradient>\n </defs>\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={`url(#${gradId})`}/>\n <path d=\"M5.5 14.5c3.2-5 9.8-5 13 0\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"1.8\" strokeLinecap=\"round\"/>\n <circle cx=\"9\" cy=\"10.5\" r=\"0.9\" fill=\"#fff\"/>\n </svg>\n );\n }\n}\n\nexport interface TokenAmountProps {\n token?: TokenSymbol | string;\n amount: string;\n /** Icon size in px. Text size scales proportionally. */\n size?: number;\n /** Override the amount text color. Defaults to brand-price orange. */\n color?: string;\n bold?: boolean;\n className?: string;\n}\n\nexport function TokenAmount({\n token = 'strk',\n amount,\n size = 20,\n color,\n bold = true,\n className,\n}: TokenAmountProps) {\n return (\n <span className={`inline-flex items-center gap-1.5 ${className ?? ''}`}>\n <TokenGlyph token={token} size={size} />\n <span\n style={{\n fontVariantNumeric: 'tabular-nums',\n fontWeight: bold ? 700 : 500,\n fontSize: size * 0.92,\n color: color ?? '#f97316',\n letterSpacing: '-0.01em',\n }}\n >\n {amount}\n </span>\n </span>\n );\n}\n"],"mappings":"AAgBQ,SACE,KADF;AAND,SAAS,WAAW,EAAE,QAAQ,QAAQ,OAAO,GAAG,GAAoB;AACzE,QAAM,SAAS,cAAc,IAAI;AAEjC,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aACE,qBAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,4BAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,oBAAC,UAAK,GAAE,8BAA6B,MAAK,WAAS;AAAA,QACnD,oBAAC,UAAK,GAAE,gCAA+B,MAAK,WAAS;AAAA,SACvD;AAAA,IAEJ,KAAK;AACH,aACE,qBAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,4BAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,oBAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,eAAC;AAAA,SAC/G;AAAA,IAEJ,KAAK;AACH,aACE,qBAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,4BAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,oBAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,oBAAC;AAAA,SAC/G;AAAA,IAEJ,KAAK;AACH,aACE,qBAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,4BAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,oBAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,oBAAC;AAAA,SAC/G;AAAA,IAEJ;AAEE,aACE,qBAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,4BAAC,UACC,+BAAC,oBAAe,IAAI,QAAQ,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,MACnD;AAAA,8BAAC,UAAK,QAAO,KAAI,WAAU,WAAS;AAAA,UACpC,oBAAC,UAAK,QAAO,KAAI,WAAU,WAAS;AAAA,WACtC,GACF;AAAA,QACA,oBAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAM,QAAQ,MAAM,KAAI;AAAA,QACvD,oBAAC,UAAK,GAAE,8BAA6B,MAAK,QAAO,QAAO,QAAO,aAAY,OAAM,eAAc,SAAO;AAAA,QACtG,oBAAC,YAAO,IAAG,KAAI,IAAG,QAAO,GAAE,OAAM,MAAK,QAAM;AAAA,SAC9C;AAAA,EAEN;AACF;AAaO,SAAS,YAAY;AAAA,EAC1B,QAAQ;AAAA,EACR;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAAqB;AACnB,SACE,qBAAC,UAAK,WAAW,oCAAoC,aAAa,EAAE,IAClE;AAAA,wBAAC,cAAW,OAAc,MAAY;AAAA,IACtC;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,oBAAoB;AAAA,UACpB,YAAY,OAAO,MAAM;AAAA,UACzB,UAAU,OAAO;AAAA,UACjB,OAAO,SAAS;AAAA,UAChB,eAAe;AAAA,QACjB;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/token-glyph.tsx"],"sourcesContent":["// Inline SVG token glyphs — self-contained, no external asset dependency.\n// Covers the five tokens active on the platform: STRK, ETH, USDC, USDT, WBTC.\n\nexport type TokenSymbol = 'strk' | 'eth' | 'usdc' | 'usdt' | 'wbtc';\n\nexport interface TokenGlyphProps {\n token?: TokenSymbol | string;\n size?: number;\n}\n\nexport function TokenGlyph({ token = 'strk', size = 20 }: TokenGlyphProps) {\n const gradId = `ml-tg-strk-${size}`;\n\n switch (token) {\n case 'eth':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#2b2f3a\"/>\n <path d=\"M12 4 7 12.2l5 3 5-3L12 4Z\" fill=\"#e6e8f0\"/>\n <path d=\"M7 13.3 12 20l5-6.7-5 3-5-3Z\" fill=\"#b9bdcc\"/>\n </svg>\n );\n case 'usdc':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#2775ca\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"13\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">$</text>\n </svg>\n );\n case 'usdt':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#26a17b\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"12\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">₮</text>\n </svg>\n );\n case 'wbtc':\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"#f09242\"/>\n <text x=\"12\" y=\"16.5\" textAnchor=\"middle\" fontSize=\"12\" fontWeight=\"700\" fill=\"#fff\" fontFamily=\"system-ui\">₿</text>\n </svg>\n );\n default:\n // STRK — magenta→orange gradient coin with swoosh\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <defs>\n <linearGradient id={gradId} x1=\"3\" y1=\"3\" x2=\"21\" y2=\"21\">\n <stop offset=\"0\" stopColor=\"#f6608f\"/>\n <stop offset=\"1\" stopColor=\"#fb8b46\"/>\n </linearGradient>\n </defs>\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={`url(#${gradId})`}/>\n <path d=\"M5.5 14.5c3.2-5 9.8-5 13 0\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"1.8\" strokeLinecap=\"round\"/>\n <circle cx=\"9\" cy=\"10.5\" r=\"0.9\" fill=\"#fff\"/>\n </svg>\n );\n }\n}\n\nexport interface TokenAmountProps {\n token?: TokenSymbol | string;\n amount: string;\n /** Icon size in px. Text size scales proportionally. */\n size?: number;\n /** Override the amount text color. Defaults to brand-maeve orange. */\n color?: string;\n bold?: boolean;\n className?: string;\n}\n\nexport function TokenAmount({\n token = 'strk',\n amount,\n size = 20,\n color,\n bold = true,\n className,\n}: TokenAmountProps) {\n return (\n <span className={`inline-flex items-center gap-1.5 ${className ?? ''}`}>\n <TokenGlyph token={token} size={size} />\n <span\n style={{\n fontVariantNumeric: 'tabular-nums',\n fontWeight: bold ? 700 : 500,\n fontSize: size * 0.92,\n color: color ?? '#f97316',\n letterSpacing: '-0.01em',\n }}\n >\n {amount}\n </span>\n </span>\n );\n}\n"],"mappings":"AAgBQ,SACE,KADF;AAND,SAAS,WAAW,EAAE,QAAQ,QAAQ,OAAO,GAAG,GAAoB;AACzE,QAAM,SAAS,cAAc,IAAI;AAEjC,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aACE,qBAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,4BAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,oBAAC,UAAK,GAAE,8BAA6B,MAAK,WAAS;AAAA,QACnD,oBAAC,UAAK,GAAE,gCAA+B,MAAK,WAAS;AAAA,SACvD;AAAA,IAEJ,KAAK;AACH,aACE,qBAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,4BAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,oBAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,eAAC;AAAA,SAC/G;AAAA,IAEJ,KAAK;AACH,aACE,qBAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,4BAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,oBAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,oBAAC;AAAA,SAC/G;AAAA,IAEJ,KAAK;AACH,aACE,qBAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,4BAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,WAAS;AAAA,QAC7C,oBAAC,UAAK,GAAE,MAAK,GAAE,QAAO,YAAW,UAAS,UAAS,MAAK,YAAW,OAAM,MAAK,QAAO,YAAW,aAAY,oBAAC;AAAA,SAC/G;AAAA,IAEJ;AAEE,aACE,qBAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,eAAY,QAC9D;AAAA,4BAAC,UACC,+BAAC,oBAAe,IAAI,QAAQ,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,MACnD;AAAA,8BAAC,UAAK,QAAO,KAAI,WAAU,WAAS;AAAA,UACpC,oBAAC,UAAK,QAAO,KAAI,WAAU,WAAS;AAAA,WACtC,GACF;AAAA,QACA,oBAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAM,QAAQ,MAAM,KAAI;AAAA,QACvD,oBAAC,UAAK,GAAE,8BAA6B,MAAK,QAAO,QAAO,QAAO,aAAY,OAAM,eAAc,SAAO;AAAA,QACtG,oBAAC,YAAO,IAAG,KAAI,IAAG,QAAO,GAAE,OAAM,MAAK,QAAM;AAAA,SAC9C;AAAA,EAEN;AACF;AAaO,SAAS,YAAY;AAAA,EAC1B,QAAQ;AAAA,EACR;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAAqB;AACnB,SACE,qBAAC,UAAK,WAAW,oCAAoC,aAAa,EAAE,IAClE;AAAA,wBAAC,cAAW,OAAc,MAAY;AAAA,IACtC;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,oBAAoB;AAAA,UACpB,YAAY,OAAO,MAAM;AAAA,UACzB,UAAU,OAAO;AAAA,UACjB,OAAO,SAAS;AAAA,UAChB,eAAe;AAAA,QACjB;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;","names":[]}
@@ -50,10 +50,10 @@ const BRAND = {
50
50
  from: "from-brand-orange/20",
51
51
  to: "to-brand-orange/20"
52
52
  },
53
- price: {
54
- text: "text-brand-price",
55
- bg: "bg-brand-price/10",
56
- bgSolid: "bg-brand-price/15"
53
+ maeve: {
54
+ text: "text-brand-maeve",
55
+ bg: "bg-brand-maeve/10",
56
+ bgSolid: "bg-brand-maeve/15"
57
57
  },
58
58
  navy: {
59
59
  text: "text-brand-navy",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/data/brand.ts"],"sourcesContent":["/**\n * Typed Tailwind class constants for Medialane brand colors.\n * Mirrors the brand color extensions defined in the Tailwind preset.\n * Keeping these as string literals ensures JIT picks them up via the\n * consumer's content scan of node_modules/@medialane/ui/dist.\n */\nexport const BRAND = {\n blue: {\n text: \"text-brand-blue\",\n bg: \"bg-brand-blue/10\",\n bgSolid: \"bg-brand-blue/15\",\n from: \"from-brand-blue/20\",\n to: \"to-brand-blue/20\",\n },\n purple: {\n text: \"text-brand-purple\",\n bg: \"bg-brand-purple/10\",\n bgSolid: \"bg-brand-purple/15\",\n from: \"from-brand-purple/20\",\n to: \"to-brand-purple/20\",\n },\n rose: {\n text: \"text-brand-rose\",\n bg: \"bg-brand-rose/10\",\n bgSolid: \"bg-brand-rose/15\",\n from: \"from-brand-rose/20\",\n to: \"to-brand-rose/20\",\n },\n orange: {\n text: \"text-brand-orange\",\n bg: \"bg-brand-orange/10\",\n bgSolid: \"bg-brand-orange/15\",\n from: \"from-brand-orange/20\",\n to: \"to-brand-orange/20\",\n },\n price: {\n text: \"text-brand-price\",\n bg: \"bg-brand-price/10\",\n bgSolid: \"bg-brand-price/15\",\n },\n navy: {\n text: \"text-brand-navy\",\n bg: \"bg-brand-navy/10\",\n from: \"from-brand-navy/10\",\n to: \"to-brand-navy/10\",\n },\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,QAAQ;AAAA,EACnB,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/data/brand.ts"],"sourcesContent":["/**\n * Typed Tailwind class constants for Medialane brand colors.\n * Mirrors the brand color extensions defined in the Tailwind preset.\n * Keeping these as string literals ensures JIT picks them up via the\n * consumer's content scan of node_modules/@medialane/ui/dist.\n */\nexport const BRAND = {\n blue: {\n text: \"text-brand-blue\",\n bg: \"bg-brand-blue/10\",\n bgSolid: \"bg-brand-blue/15\",\n from: \"from-brand-blue/20\",\n to: \"to-brand-blue/20\",\n },\n purple: {\n text: \"text-brand-purple\",\n bg: \"bg-brand-purple/10\",\n bgSolid: \"bg-brand-purple/15\",\n from: \"from-brand-purple/20\",\n to: \"to-brand-purple/20\",\n },\n rose: {\n text: \"text-brand-rose\",\n bg: \"bg-brand-rose/10\",\n bgSolid: \"bg-brand-rose/15\",\n from: \"from-brand-rose/20\",\n to: \"to-brand-rose/20\",\n },\n orange: {\n text: \"text-brand-orange\",\n bg: \"bg-brand-orange/10\",\n bgSolid: \"bg-brand-orange/15\",\n from: \"from-brand-orange/20\",\n to: \"to-brand-orange/20\",\n },\n maeve: {\n text: \"text-brand-maeve\",\n bg: \"bg-brand-maeve/10\",\n bgSolid: \"bg-brand-maeve/15\",\n },\n navy: {\n text: \"text-brand-navy\",\n bg: \"bg-brand-navy/10\",\n from: \"from-brand-navy/10\",\n to: \"to-brand-navy/10\",\n },\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,QAAQ;AAAA,EACnB,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AACF;","names":[]}
@@ -33,10 +33,10 @@ declare const BRAND: {
33
33
  readonly from: "from-brand-orange/20";
34
34
  readonly to: "to-brand-orange/20";
35
35
  };
36
- readonly price: {
37
- readonly text: "text-brand-price";
38
- readonly bg: "bg-brand-price/10";
39
- readonly bgSolid: "bg-brand-price/15";
36
+ readonly maeve: {
37
+ readonly text: "text-brand-maeve";
38
+ readonly bg: "bg-brand-maeve/10";
39
+ readonly bgSolid: "bg-brand-maeve/15";
40
40
  };
41
41
  readonly navy: {
42
42
  readonly text: "text-brand-navy";
@@ -33,10 +33,10 @@ declare const BRAND: {
33
33
  readonly from: "from-brand-orange/20";
34
34
  readonly to: "to-brand-orange/20";
35
35
  };
36
- readonly price: {
37
- readonly text: "text-brand-price";
38
- readonly bg: "bg-brand-price/10";
39
- readonly bgSolid: "bg-brand-price/15";
36
+ readonly maeve: {
37
+ readonly text: "text-brand-maeve";
38
+ readonly bg: "bg-brand-maeve/10";
39
+ readonly bgSolid: "bg-brand-maeve/15";
40
40
  };
41
41
  readonly navy: {
42
42
  readonly text: "text-brand-navy";
@@ -27,10 +27,10 @@ const BRAND = {
27
27
  from: "from-brand-orange/20",
28
28
  to: "to-brand-orange/20"
29
29
  },
30
- price: {
31
- text: "text-brand-price",
32
- bg: "bg-brand-price/10",
33
- bgSolid: "bg-brand-price/15"
30
+ maeve: {
31
+ text: "text-brand-maeve",
32
+ bg: "bg-brand-maeve/10",
33
+ bgSolid: "bg-brand-maeve/15"
34
34
  },
35
35
  navy: {
36
36
  text: "text-brand-navy",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/data/brand.ts"],"sourcesContent":["/**\n * Typed Tailwind class constants for Medialane brand colors.\n * Mirrors the brand color extensions defined in the Tailwind preset.\n * Keeping these as string literals ensures JIT picks them up via the\n * consumer's content scan of node_modules/@medialane/ui/dist.\n */\nexport const BRAND = {\n blue: {\n text: \"text-brand-blue\",\n bg: \"bg-brand-blue/10\",\n bgSolid: \"bg-brand-blue/15\",\n from: \"from-brand-blue/20\",\n to: \"to-brand-blue/20\",\n },\n purple: {\n text: \"text-brand-purple\",\n bg: \"bg-brand-purple/10\",\n bgSolid: \"bg-brand-purple/15\",\n from: \"from-brand-purple/20\",\n to: \"to-brand-purple/20\",\n },\n rose: {\n text: \"text-brand-rose\",\n bg: \"bg-brand-rose/10\",\n bgSolid: \"bg-brand-rose/15\",\n from: \"from-brand-rose/20\",\n to: \"to-brand-rose/20\",\n },\n orange: {\n text: \"text-brand-orange\",\n bg: \"bg-brand-orange/10\",\n bgSolid: \"bg-brand-orange/15\",\n from: \"from-brand-orange/20\",\n to: \"to-brand-orange/20\",\n },\n price: {\n text: \"text-brand-price\",\n bg: \"bg-brand-price/10\",\n bgSolid: \"bg-brand-price/15\",\n },\n navy: {\n text: \"text-brand-navy\",\n bg: \"bg-brand-navy/10\",\n from: \"from-brand-navy/10\",\n to: \"to-brand-navy/10\",\n },\n} as const;\n"],"mappings":"AAMO,MAAM,QAAQ;AAAA,EACnB,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/data/brand.ts"],"sourcesContent":["/**\n * Typed Tailwind class constants for Medialane brand colors.\n * Mirrors the brand color extensions defined in the Tailwind preset.\n * Keeping these as string literals ensures JIT picks them up via the\n * consumer's content scan of node_modules/@medialane/ui/dist.\n */\nexport const BRAND = {\n blue: {\n text: \"text-brand-blue\",\n bg: \"bg-brand-blue/10\",\n bgSolid: \"bg-brand-blue/15\",\n from: \"from-brand-blue/20\",\n to: \"to-brand-blue/20\",\n },\n purple: {\n text: \"text-brand-purple\",\n bg: \"bg-brand-purple/10\",\n bgSolid: \"bg-brand-purple/15\",\n from: \"from-brand-purple/20\",\n to: \"to-brand-purple/20\",\n },\n rose: {\n text: \"text-brand-rose\",\n bg: \"bg-brand-rose/10\",\n bgSolid: \"bg-brand-rose/15\",\n from: \"from-brand-rose/20\",\n to: \"to-brand-rose/20\",\n },\n orange: {\n text: \"text-brand-orange\",\n bg: \"bg-brand-orange/10\",\n bgSolid: \"bg-brand-orange/15\",\n from: \"from-brand-orange/20\",\n to: \"to-brand-orange/20\",\n },\n maeve: {\n text: \"text-brand-maeve\",\n bg: \"bg-brand-maeve/10\",\n bgSolid: \"bg-brand-maeve/15\",\n },\n navy: {\n text: \"text-brand-navy\",\n bg: \"bg-brand-navy/10\",\n from: \"from-brand-navy/10\",\n to: \"to-brand-navy/10\",\n },\n} as const;\n"],"mappings":"AAMO,MAAM,QAAQ;AAAA,EACnB,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,MAAS;AAAA,IACT,IAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,MAAS;AAAA,IACT,IAAS;AAAA,IACT,MAAS;AAAA,IACT,IAAS;AAAA,EACX;AACF;","names":[]}