@fairmint/ui 0.4.3 → 0.4.5

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 (30) hide show
  1. package/dist/_virtual/index3.cjs +3 -5
  2. package/dist/_virtual/index3.cjs.map +1 -1
  3. package/dist/_virtual/index3.js +2 -5
  4. package/dist/_virtual/index3.js.map +1 -1
  5. package/dist/_virtual/index4.cjs +5 -3
  6. package/dist/_virtual/index4.cjs.map +1 -1
  7. package/dist/_virtual/index4.js +5 -2
  8. package/dist/_virtual/index4.js.map +1 -1
  9. package/dist/components/FairmintLogo/FairmintLogoMarkRounded.cjs +43 -4
  10. package/dist/components/FairmintLogo/FairmintLogoMarkRounded.cjs.map +1 -1
  11. package/dist/components/FairmintLogo/FairmintLogoMarkRounded.d.ts +8 -5
  12. package/dist/components/FairmintLogo/FairmintLogoMarkRounded.d.ts.map +1 -1
  13. package/dist/components/FairmintLogo/FairmintLogoMarkRounded.js +44 -5
  14. package/dist/components/FairmintLogo/FairmintLogoMarkRounded.js.map +1 -1
  15. package/dist/components/layout/MobileNav/MobileNavHeader.cjs +17 -5
  16. package/dist/components/layout/MobileNav/MobileNavHeader.cjs.map +1 -1
  17. package/dist/components/layout/MobileNav/MobileNavHeader.d.ts.map +1 -1
  18. package/dist/components/layout/MobileNav/MobileNavHeader.js +17 -5
  19. package/dist/components/layout/MobileNav/MobileNavHeader.js.map +1 -1
  20. package/dist/node_modules/@mantine/form/esm/hooks/use-form-status/use-form-status.cjs +1 -1
  21. package/dist/node_modules/@mantine/form/esm/hooks/use-form-status/use-form-status.js +1 -1
  22. package/dist/node_modules/prop-types/index.cjs +1 -1
  23. package/dist/node_modules/prop-types/index.js +1 -1
  24. package/dist/theme/logo.cjs +6 -2
  25. package/dist/theme/logo.cjs.map +1 -1
  26. package/dist/theme/logo.d.ts +6 -2
  27. package/dist/theme/logo.d.ts.map +1 -1
  28. package/dist/theme/logo.js +6 -2
  29. package/dist/theme/logo.js.map +1 -1
  30. package/package.json +1 -1
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
- const _commonjsHelpers = require("./_commonjsHelpers.cjs");
3
- const index = require("../node_modules/fast-deep-equal/index.cjs");
4
- var fastDeepEqualExports = index.__require();
5
- const isEqual = /* @__PURE__ */ _commonjsHelpers.getDefaultExportFromCjs(fastDeepEqualExports);
6
- module.exports = isEqual;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ var propTypes = { exports: {} };
4
+ exports.__module = propTypes;
7
5
  //# sourceMappingURL=index3.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index3.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"index3.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,8 +1,5 @@
1
- import { getDefaultExportFromCjs } from "./_commonjsHelpers.js";
2
- import { __require as requireFastDeepEqual } from "../node_modules/fast-deep-equal/index.js";
3
- var fastDeepEqualExports = requireFastDeepEqual();
4
- const isEqual = /* @__PURE__ */ getDefaultExportFromCjs(fastDeepEqualExports);
1
+ var propTypes = { exports: {} };
5
2
  export {
6
- isEqual as default
3
+ propTypes as __module
7
4
  };
8
5
  //# sourceMappingURL=index3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- var propTypes = { exports: {} };
4
- exports.__module = propTypes;
2
+ const _commonjsHelpers = require("./_commonjsHelpers.cjs");
3
+ const index = require("../node_modules/fast-deep-equal/index.cjs");
4
+ var fastDeepEqualExports = index.__require();
5
+ const isEqual = /* @__PURE__ */ _commonjsHelpers.getDefaultExportFromCjs(fastDeepEqualExports);
6
+ module.exports = isEqual;
5
7
  //# sourceMappingURL=index4.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,5 +1,8 @@
1
- var propTypes = { exports: {} };
1
+ import { getDefaultExportFromCjs } from "./_commonjsHelpers.js";
2
+ import { __require as requireFastDeepEqual } from "../node_modules/fast-deep-equal/index.js";
3
+ var fastDeepEqualExports = requireFastDeepEqual();
4
+ const isEqual = /* @__PURE__ */ getDefaultExportFromCjs(fastDeepEqualExports);
2
5
  export {
3
- propTypes as __module
6
+ isEqual as default
4
7
  };
5
8
  //# sourceMappingURL=index4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
4
5
  const logo = require("../../theme/logo.cjs");
5
6
  const LOGO_MARK_ROUNDED_VIEWBOX = { width: 36, height: 36 };
6
7
  const LOGO_MARK_ROUNDED_TILE = logo.logoColors.markRoundedTile;
@@ -16,15 +17,17 @@ function FairmintLogoMarkRounded({
16
17
  size = 32,
17
18
  frameSize,
18
19
  variant = "tile",
19
- tileColor = LOGO_MARK_ROUNDED_TILE,
20
+ tileColor,
20
21
  glyphColor,
21
22
  alt,
22
23
  className,
23
24
  style
24
25
  }) {
26
+ const gradientId = React.useId();
25
27
  const isDecorative = !alt;
26
28
  const resolvedFrame = frameSize && frameSize > size ? frameSize : void 0;
27
29
  const showTile = variant === "tile";
30
+ const showTileGlow = showTile && tileColor === void 0;
28
31
  const resolvedGlyph = resolveGlyphColor(variant, glyphColor);
29
32
  const mark = /* @__PURE__ */ jsxRuntime.jsxs(
30
33
  "svg",
@@ -40,8 +43,12 @@ function FairmintLogoMarkRounded({
40
43
  "aria-label": isDecorative ? void 0 : alt,
41
44
  children: [
42
45
  !isDecorative && /* @__PURE__ */ jsxRuntime.jsx("title", { children: alt }),
43
- showTile && /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "36", height: "36", rx: "8", fill: tileColor }),
44
- /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "translate(18 18.07) scale(1.12) translate(-18 -18.07)", children: [
46
+ showTile && /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "36", height: "36", rx: "8", fill: tileColor ?? LOGO_MARK_ROUNDED_TILE }),
47
+ showTileGlow && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
48
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "36", height: "36", rx: "8", fill: `url(#${gradientId}-indigo)` }),
49
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "36", height: "36", rx: "8", fill: `url(#${gradientId}-teal)` })
50
+ ] }),
51
+ /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "translate(18 18.39) scale(1.35) translate(-18 -18.39)", children: [
45
52
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12.4661 20.3562V26.446H15.1251V18.7954L12.4661 20.3562Z", fill: resolvedGlyph }),
46
53
  /* @__PURE__ */ jsxRuntime.jsx(
47
54
  "path",
@@ -57,8 +64,40 @@ function FairmintLogoMarkRounded({
57
64
  fill: resolvedGlyph
58
65
  }
59
66
  ),
60
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M22.5714 12.7273H19.9113V15.8081H22.5714V12.7273Z", fill: resolvedGlyph }),
67
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M22.5714 12.7273H19.9113V16H22.5714V12.7273Z", fill: resolvedGlyph }),
61
68
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M25.7283 15.8218H10.2717V18.0841H25.7283V15.8218Z", fill: resolvedGlyph })
69
+ ] }),
70
+ showTileGlow && /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
71
+ /* @__PURE__ */ jsxRuntime.jsxs(
72
+ "radialGradient",
73
+ {
74
+ id: `${gradientId}-indigo`,
75
+ cx: "36",
76
+ cy: "0",
77
+ r: "36",
78
+ gradientTransform: "matrix(1 0 0 0.6667 0 0)",
79
+ gradientUnits: "userSpaceOnUse",
80
+ children: [
81
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { stopColor: logo.logoColors.markRoundedGlowIndigo }),
82
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0.5", stopColor: logo.logoColors.markRoundedGlowIndigo, stopOpacity: "0.6" }),
83
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "1", stopColor: logo.logoColors.markRoundedGlowIndigo, stopOpacity: "0" })
84
+ ]
85
+ }
86
+ ),
87
+ /* @__PURE__ */ jsxRuntime.jsxs(
88
+ "radialGradient",
89
+ {
90
+ id: `${gradientId}-teal`,
91
+ cx: "0",
92
+ cy: "36",
93
+ r: "22.5",
94
+ gradientUnits: "userSpaceOnUse",
95
+ children: [
96
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { stopColor: logo.logoColors.markRoundedGlowTeal }),
97
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "1", stopColor: logo.logoColors.markRoundedGlowTeal, stopOpacity: "0" })
98
+ ]
99
+ }
100
+ )
62
101
  ] })
63
102
  ]
64
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FairmintLogoMarkRounded.cjs","sources":["../../../src/components/FairmintLogo/FairmintLogoMarkRounded.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport { logoColors, logoFills } from \"../../theme/logo\";\n\n/** Product FT mark — rounded square tile from the brand icon asset. */\nexport const LOGO_MARK_ROUNDED_VIEWBOX = { width: 36, height: 36 } as const;\n\n/** Default tile fill from the FT Mark Rounded Square source asset. */\nexport const LOGO_MARK_ROUNDED_TILE = logoColors.markRoundedTile;\n\n/**\n * Collapsed SideNav layout: 48×48 frame with a 36×36 mark centered inside\n * (white/transparent padding around the tile).\n */\nexport const SIDE_NAV_COLLAPSED_LOGO_FRAME = 48;\nexport const SIDE_NAV_COLLAPSED_LOGO_SIZE = 36;\n\nexport type FairmintLogoMarkRoundedVariant = \"tile\" | \"black\" | \"white\";\n\nexport interface FairmintLogoMarkRoundedProps {\n /** Square size of the mark in pixels. @default 32 */\n size?: number;\n /**\n * Outer frame size. When set larger than `size`, centers the mark in a\n * transparent square (e.g. frame 48 + size 36 for collapsed SideNav).\n */\n frameSize?: number;\n /**\n * `tile` — purple rounded square with white FT glyph (collapsed nav / app icon).\n * `black` — standalone FT ligature for light mode.\n * `white` — standalone FT ligature for dark mode.\n * @default \"tile\"\n */\n variant?: FairmintLogoMarkRoundedVariant;\n /** Rounded tile fill. Applies to `variant=\"tile\"`. @default LOGO_MARK_ROUNDED_TILE */\n tileColor?: string;\n /** Glyph fill override. Defaults from `variant`. */\n glyphColor?: string;\n /**\n * Accessible name when the mark is standalone (collapsed nav, favicon).\n * Omit or pass `\"\"` when decorative inside a labeled lockup or link.\n */\n alt?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nfunction resolveGlyphColor(\n variant: FairmintLogoMarkRoundedVariant,\n glyphColor: string | undefined,\n): string {\n if (glyphColor) {\n return glyphColor;\n }\n return variant === \"black\" ? logoFills.black : logoFills.white;\n}\n\n/**\n * Fairmint FT mark — preferred collapsed SideNav / app-icon lockup.\n * Source geometry: FT Mark Rounded Square. `variant=\"tile\"` fills `size` with\n * the purple rounded square; `black` / `white` render the ligature alone for\n * light and dark surfaces. Optional `frameSize` adds transparent padding.\n */\nexport function FairmintLogoMarkRounded({\n size = 32,\n frameSize,\n variant = \"tile\",\n tileColor = LOGO_MARK_ROUNDED_TILE,\n glyphColor,\n alt,\n className,\n style,\n}: FairmintLogoMarkRoundedProps) {\n const isDecorative = !alt;\n const resolvedFrame = frameSize && frameSize > size ? frameSize : undefined;\n const showTile = variant === \"tile\";\n const resolvedGlyph = resolveGlyphColor(variant, glyphColor);\n\n const mark = (\n <svg\n viewBox={`0 0 ${LOGO_MARK_ROUNDED_VIEWBOX.width} ${LOGO_MARK_ROUNDED_VIEWBOX.height}`}\n width={size}\n height={size}\n className={resolvedFrame ? undefined : className}\n style={{ display: \"block\", flexShrink: 0, ...(resolvedFrame ? undefined : style) }}\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={isDecorative || undefined}\n role={isDecorative ? undefined : \"img\"}\n aria-label={isDecorative ? undefined : alt}\n >\n {!isDecorative && <title>{alt}</title>}\n {/* Tile fills the viewBox — padding belongs on `frameSize`, not inside the SVG. */}\n {showTile && <rect width=\"36\" height=\"36\" rx=\"8\" fill={tileColor} />}\n <g transform=\"translate(18 18.07) scale(1.12) translate(-18 -18.07)\">\n <path d=\"M12.4661 20.3562V26.446H15.1251V18.7954L12.4661 20.3562Z\" fill={resolvedGlyph} />\n <path\n d=\"M22.5714 22.7206V18.7932L19.9113 20.354V22.9428C19.9113 25.447 20.5768 26.7091 23.391 26.7091C24.0115 26.7091 24.9416 26.6194 25.4954 26.3556V24.1164C25.1627 24.3598 24.5198 24.4499 24.055 24.4499C22.8819 24.4499 22.5714 23.7836 22.5714 22.7206Z\"\n fill={resolvedGlyph}\n />\n <path\n d=\"M16.4329 9.42847C13.1307 9.42847 12.4656 11.3557 12.4656 14.3028V15.822H15.1254V13.8818C15.1254 12.7079 15.3456 11.6881 16.8315 11.6881C17.2086 11.6881 17.5629 11.7555 17.9388 11.8445L18.1148 9.5829C17.5625 9.47197 17.0071 9.42847 16.4329 9.42847Z\"\n fill={resolvedGlyph}\n />\n <path d=\"M22.5714 12.7273H19.9113V15.8081H22.5714V12.7273Z\" fill={resolvedGlyph} />\n <path d=\"M25.7283 15.8218H10.2717V18.0841H25.7283V15.8218Z\" fill={resolvedGlyph} />\n </g>\n </svg>\n );\n\n if (!resolvedFrame) {\n return mark;\n }\n\n return (\n <span\n className={className}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: resolvedFrame,\n height: resolvedFrame,\n flexShrink: 0,\n ...style,\n }}\n >\n {mark}\n </span>\n );\n}\n"],"names":["logoColors","logoFills","jsxs","jsx"],"mappings":";;;;AAIO,MAAM,4BAA4B,EAAE,OAAO,IAAI,QAAQ,GAAA;AAGvD,MAAM,yBAAyBA,KAAAA,WAAW;AAM1C,MAAM,gCAAgC;AACtC,MAAM,+BAA+B;AAgC5C,SAAS,kBACP,SACA,YACQ;AACR,MAAI,YAAY;AACd,WAAO;AAAA,EACT;AACA,SAAO,YAAY,UAAUC,KAAAA,UAAU,QAAQA,KAAAA,UAAU;AAC3D;AAQO,SAAS,wBAAwB;AAAA,EACtC,OAAO;AAAA,EACP;AAAA,EACA,UAAU;AAAA,EACV,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiC;AAC/B,QAAM,eAAe,CAAC;AACtB,QAAM,gBAAgB,aAAa,YAAY,OAAO,YAAY;AAClE,QAAM,WAAW,YAAY;AAC7B,QAAM,gBAAgB,kBAAkB,SAAS,UAAU;AAE3D,QAAM,OACJC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,OAAO,0BAA0B,KAAK,IAAI,0BAA0B,MAAM;AAAA,MACnF,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW,gBAAgB,SAAY;AAAA,MACvC,OAAO,EAAE,SAAS,SAAS,YAAY,GAAG,GAAI,gBAAgB,SAAY,MAAA;AAAA,MAC1E,OAAM;AAAA,MACN,eAAa,gBAAgB;AAAA,MAC7B,MAAM,eAAe,SAAY;AAAA,MACjC,cAAY,eAAe,SAAY;AAAA,MAEtC,UAAA;AAAA,QAAA,CAAC,gBAAgBC,2BAAAA,IAAC,SAAA,EAAO,UAAA,IAAA,CAAI;AAAA,QAE7B,YAAYA,2BAAAA,IAAC,QAAA,EAAK,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,MAAM,UAAA,CAAW;AAAA,QAClED,2BAAAA,KAAC,KAAA,EAAE,WAAU,yDACX,UAAA;AAAA,UAAAC,2BAAAA,IAAC,QAAA,EAAK,GAAE,4DAA2D,MAAM,eAAe;AAAA,UACxFA,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,GAAE;AAAA,cACF,MAAM;AAAA,YAAA;AAAA,UAAA;AAAA,UAERA,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,GAAE;AAAA,cACF,MAAM;AAAA,YAAA;AAAA,UAAA;AAAA,UAERA,2BAAAA,IAAC,QAAA,EAAK,GAAE,qDAAoD,MAAM,eAAe;AAAA,UACjFA,2BAAAA,IAAC,QAAA,EAAK,GAAE,qDAAoD,MAAM,cAAA,CAAe;AAAA,QAAA,EAAA,CACnF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIJ,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA,EACT;AAEA,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,GAAG;AAAA,MAAA;AAAA,MAGJ,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;;;;;;"}
1
+ {"version":3,"file":"FairmintLogoMarkRounded.cjs","sources":["../../../src/components/FairmintLogo/FairmintLogoMarkRounded.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport { useId } from \"react\";\nimport { logoColors, logoFills } from \"../../theme/logo\";\n\n/** Product FT mark — rounded square tile from the brand icon asset. */\nexport const LOGO_MARK_ROUNDED_VIEWBOX = { width: 36, height: 36 } as const;\n\n/** Base tile field from the FT Mark Rounded Square source asset. */\nexport const LOGO_MARK_ROUNDED_TILE = logoColors.markRoundedTile;\n\n/**\n * Collapsed SideNav layout: 48×48 frame with a 36×36 mark centered inside\n * (white/transparent padding around the tile).\n */\nexport const SIDE_NAV_COLLAPSED_LOGO_FRAME = 48;\nexport const SIDE_NAV_COLLAPSED_LOGO_SIZE = 36;\n\nexport type FairmintLogoMarkRoundedVariant = \"tile\" | \"black\" | \"white\";\n\nexport interface FairmintLogoMarkRoundedProps {\n /** Square size of the mark in pixels. @default 32 */\n size?: number;\n /**\n * Outer frame size. When set larger than `size`, centers the mark in a\n * transparent square (e.g. frame 48 + size 36 for collapsed SideNav).\n */\n frameSize?: number;\n /**\n * `tile` — dark rounded square with white FT glyph (collapsed nav / app icon).\n * `black` — standalone FT ligature for light mode.\n * `white` — standalone FT ligature for dark mode.\n * @default \"tile\"\n */\n variant?: FairmintLogoMarkRoundedVariant;\n /**\n * Flat tile fill for `variant=\"tile\"`. Setting it replaces the brand field —\n * base color plus corner blooms — with a single solid color.\n */\n tileColor?: string;\n /** Glyph fill override. Defaults from `variant`. */\n glyphColor?: string;\n /**\n * Accessible name when the mark is standalone (collapsed nav, favicon).\n * Omit or pass `\"\"` when decorative inside a labeled lockup or link.\n */\n alt?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nfunction resolveGlyphColor(\n variant: FairmintLogoMarkRoundedVariant,\n glyphColor: string | undefined,\n): string {\n if (glyphColor) {\n return glyphColor;\n }\n return variant === \"black\" ? logoFills.black : logoFills.white;\n}\n\n/**\n * Fairmint FT mark — preferred collapsed SideNav / app-icon lockup.\n * Source geometry: FT Mark Rounded Square. `variant=\"tile\"` fills `size` with\n * the dark rounded square; `black` / `white` render the ligature alone for\n * light and dark surfaces. Optional `frameSize` adds transparent padding.\n */\nexport function FairmintLogoMarkRounded({\n size = 32,\n frameSize,\n variant = \"tile\",\n tileColor,\n glyphColor,\n alt,\n className,\n style,\n}: FairmintLogoMarkRoundedProps) {\n const gradientId = useId();\n const isDecorative = !alt;\n const resolvedFrame = frameSize && frameSize > size ? frameSize : undefined;\n const showTile = variant === \"tile\";\n // Corner blooms belong to the brand field — a caller-supplied fill replaces both.\n const showTileGlow = showTile && tileColor === undefined;\n const resolvedGlyph = resolveGlyphColor(variant, glyphColor);\n\n const mark = (\n <svg\n viewBox={`0 0 ${LOGO_MARK_ROUNDED_VIEWBOX.width} ${LOGO_MARK_ROUNDED_VIEWBOX.height}`}\n width={size}\n height={size}\n className={resolvedFrame ? undefined : className}\n style={{ display: \"block\", flexShrink: 0, ...(resolvedFrame ? undefined : style) }}\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={isDecorative || undefined}\n role={isDecorative ? undefined : \"img\"}\n aria-label={isDecorative ? undefined : alt}\n >\n {!isDecorative && <title>{alt}</title>}\n {/* Tile fills the viewBox — padding belongs on `frameSize`, not inside the SVG. */}\n {showTile && (\n <rect width=\"36\" height=\"36\" rx=\"8\" fill={tileColor ?? LOGO_MARK_ROUNDED_TILE} />\n )}\n {showTileGlow && (\n <>\n <rect width=\"36\" height=\"36\" rx=\"8\" fill={`url(#${gradientId}-indigo)`} />\n <rect width=\"36\" height=\"36\" rx=\"8\" fill={`url(#${gradientId}-teal)`} />\n </>\n )}\n <g transform=\"translate(18 18.39) scale(1.35) translate(-18 -18.39)\">\n <path d=\"M12.4661 20.3562V26.446H15.1251V18.7954L12.4661 20.3562Z\" fill={resolvedGlyph} />\n <path\n d=\"M22.5714 22.7206V18.7932L19.9113 20.354V22.9428C19.9113 25.447 20.5768 26.7091 23.391 26.7091C24.0115 26.7091 24.9416 26.6194 25.4954 26.3556V24.1164C25.1627 24.3598 24.5198 24.4499 24.055 24.4499C22.8819 24.4499 22.5714 23.7836 22.5714 22.7206Z\"\n fill={resolvedGlyph}\n />\n <path\n d=\"M16.4329 9.42847C13.1307 9.42847 12.4656 11.3557 12.4656 14.3028V15.822H15.1254V13.8818C15.1254 12.7079 15.3456 11.6881 16.8315 11.6881C17.2086 11.6881 17.5629 11.7555 17.9388 11.8445L18.1148 9.5829C17.5625 9.47197 17.0071 9.42847 16.4329 9.42847Z\"\n fill={resolvedGlyph}\n />\n {/* Ascender runs under the crossbar — abutting edges leave a hairline seam. */}\n <path d=\"M22.5714 12.7273H19.9113V16H22.5714V12.7273Z\" fill={resolvedGlyph} />\n <path d=\"M25.7283 15.8218H10.2717V18.0841H25.7283V15.8218Z\" fill={resolvedGlyph} />\n </g>\n {showTileGlow && (\n <defs>\n {/* Wide-but-shallow ellipse: the indigo bloom runs the full top edge\n but fades out before the lower right corner. */}\n <radialGradient\n id={`${gradientId}-indigo`}\n cx=\"36\"\n cy=\"0\"\n r=\"36\"\n gradientTransform=\"matrix(1 0 0 0.6667 0 0)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={logoColors.markRoundedGlowIndigo} />\n <stop offset=\"0.5\" stopColor={logoColors.markRoundedGlowIndigo} stopOpacity=\"0.6\" />\n <stop offset=\"1\" stopColor={logoColors.markRoundedGlowIndigo} stopOpacity=\"0\" />\n </radialGradient>\n <radialGradient\n id={`${gradientId}-teal`}\n cx=\"0\"\n cy=\"36\"\n r=\"22.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={logoColors.markRoundedGlowTeal} />\n <stop offset=\"1\" stopColor={logoColors.markRoundedGlowTeal} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n )}\n </svg>\n );\n\n if (!resolvedFrame) {\n return mark;\n }\n\n return (\n <span\n className={className}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: resolvedFrame,\n height: resolvedFrame,\n flexShrink: 0,\n ...style,\n }}\n >\n {mark}\n </span>\n );\n}\n"],"names":["logoColors","logoFills","useId","jsxs","jsx","Fragment"],"mappings":"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"}
@@ -4,8 +4,8 @@ export declare const LOGO_MARK_ROUNDED_VIEWBOX: {
4
4
  readonly width: 36;
5
5
  readonly height: 36;
6
6
  };
7
- /** Default tile fill from the FT Mark Rounded Square source asset. */
8
- export declare const LOGO_MARK_ROUNDED_TILE: "#825BFF";
7
+ /** Base tile field from the FT Mark Rounded Square source asset. */
8
+ export declare const LOGO_MARK_ROUNDED_TILE: "#0D1023";
9
9
  /**
10
10
  * Collapsed SideNav layout: 48×48 frame with a 36×36 mark centered inside
11
11
  * (white/transparent padding around the tile).
@@ -22,13 +22,16 @@ export interface FairmintLogoMarkRoundedProps {
22
22
  */
23
23
  frameSize?: number;
24
24
  /**
25
- * `tile` — purple rounded square with white FT glyph (collapsed nav / app icon).
25
+ * `tile` — dark rounded square with white FT glyph (collapsed nav / app icon).
26
26
  * `black` — standalone FT ligature for light mode.
27
27
  * `white` — standalone FT ligature for dark mode.
28
28
  * @default "tile"
29
29
  */
30
30
  variant?: FairmintLogoMarkRoundedVariant;
31
- /** Rounded tile fill. Applies to `variant="tile"`. @default LOGO_MARK_ROUNDED_TILE */
31
+ /**
32
+ * Flat tile fill for `variant="tile"`. Setting it replaces the brand field —
33
+ * base color plus corner blooms — with a single solid color.
34
+ */
32
35
  tileColor?: string;
33
36
  /** Glyph fill override. Defaults from `variant`. */
34
37
  glyphColor?: string;
@@ -43,7 +46,7 @@ export interface FairmintLogoMarkRoundedProps {
43
46
  /**
44
47
  * Fairmint FT mark — preferred collapsed SideNav / app-icon lockup.
45
48
  * Source geometry: FT Mark Rounded Square. `variant="tile"` fills `size` with
46
- * the purple rounded square; `black` / `white` render the ligature alone for
49
+ * the dark rounded square; `black` / `white` render the ligature alone for
47
50
  * light and dark surfaces. Optional `frameSize` adds transparent padding.
48
51
  */
49
52
  export declare function FairmintLogoMarkRounded({ size, frameSize, variant, tileColor, glyphColor, alt, className, style, }: FairmintLogoMarkRoundedProps): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"FairmintLogoMarkRounded.d.ts","sourceRoot":"","sources":["../../../src/components/FairmintLogo/FairmintLogoMarkRounded.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,uEAAuE;AACvE,eAAO,MAAM,yBAAyB;;;CAAqC,CAAC;AAE5E,sEAAsE;AACtE,eAAO,MAAM,sBAAsB,WAA6B,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAExE,MAAM,WAAW,4BAA4B;IAC3C,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,8BAA8B,CAAC;IACzC,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAYD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,IAAS,EACT,SAAS,EACT,OAAgB,EAChB,SAAkC,EAClC,UAAU,EACV,GAAG,EACH,SAAS,EACT,KAAK,GACN,EAAE,4BAA4B,+BAyD9B"}
1
+ {"version":3,"file":"FairmintLogoMarkRounded.d.ts","sourceRoot":"","sources":["../../../src/components/FairmintLogo/FairmintLogoMarkRounded.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,uEAAuE;AACvE,eAAO,MAAM,yBAAyB;;;CAAqC,CAAC;AAE5E,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,WAA6B,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAExE,MAAM,WAAW,4BAA4B;IAC3C,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,8BAA8B,CAAC;IACzC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAYD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,IAAS,EACT,SAAS,EACT,OAAgB,EAChB,SAAS,EACT,UAAU,EACV,GAAG,EACH,SAAS,EACT,KAAK,GACN,EAAE,4BAA4B,+BAiG9B"}
@@ -1,4 +1,5 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import { useId } from "react";
2
3
  import { logoColors, logoFills } from "../../theme/logo.js";
3
4
  const LOGO_MARK_ROUNDED_VIEWBOX = { width: 36, height: 36 };
4
5
  const LOGO_MARK_ROUNDED_TILE = logoColors.markRoundedTile;
@@ -14,15 +15,17 @@ function FairmintLogoMarkRounded({
14
15
  size = 32,
15
16
  frameSize,
16
17
  variant = "tile",
17
- tileColor = LOGO_MARK_ROUNDED_TILE,
18
+ tileColor,
18
19
  glyphColor,
19
20
  alt,
20
21
  className,
21
22
  style
22
23
  }) {
24
+ const gradientId = useId();
23
25
  const isDecorative = !alt;
24
26
  const resolvedFrame = frameSize && frameSize > size ? frameSize : void 0;
25
27
  const showTile = variant === "tile";
28
+ const showTileGlow = showTile && tileColor === void 0;
26
29
  const resolvedGlyph = resolveGlyphColor(variant, glyphColor);
27
30
  const mark = /* @__PURE__ */ jsxs(
28
31
  "svg",
@@ -38,8 +41,12 @@ function FairmintLogoMarkRounded({
38
41
  "aria-label": isDecorative ? void 0 : alt,
39
42
  children: [
40
43
  !isDecorative && /* @__PURE__ */ jsx("title", { children: alt }),
41
- showTile && /* @__PURE__ */ jsx("rect", { width: "36", height: "36", rx: "8", fill: tileColor }),
42
- /* @__PURE__ */ jsxs("g", { transform: "translate(18 18.07) scale(1.12) translate(-18 -18.07)", children: [
44
+ showTile && /* @__PURE__ */ jsx("rect", { width: "36", height: "36", rx: "8", fill: tileColor ?? LOGO_MARK_ROUNDED_TILE }),
45
+ showTileGlow && /* @__PURE__ */ jsxs(Fragment, { children: [
46
+ /* @__PURE__ */ jsx("rect", { width: "36", height: "36", rx: "8", fill: `url(#${gradientId}-indigo)` }),
47
+ /* @__PURE__ */ jsx("rect", { width: "36", height: "36", rx: "8", fill: `url(#${gradientId}-teal)` })
48
+ ] }),
49
+ /* @__PURE__ */ jsxs("g", { transform: "translate(18 18.39) scale(1.35) translate(-18 -18.39)", children: [
43
50
  /* @__PURE__ */ jsx("path", { d: "M12.4661 20.3562V26.446H15.1251V18.7954L12.4661 20.3562Z", fill: resolvedGlyph }),
44
51
  /* @__PURE__ */ jsx(
45
52
  "path",
@@ -55,8 +62,40 @@ function FairmintLogoMarkRounded({
55
62
  fill: resolvedGlyph
56
63
  }
57
64
  ),
58
- /* @__PURE__ */ jsx("path", { d: "M22.5714 12.7273H19.9113V15.8081H22.5714V12.7273Z", fill: resolvedGlyph }),
65
+ /* @__PURE__ */ jsx("path", { d: "M22.5714 12.7273H19.9113V16H22.5714V12.7273Z", fill: resolvedGlyph }),
59
66
  /* @__PURE__ */ jsx("path", { d: "M25.7283 15.8218H10.2717V18.0841H25.7283V15.8218Z", fill: resolvedGlyph })
67
+ ] }),
68
+ showTileGlow && /* @__PURE__ */ jsxs("defs", { children: [
69
+ /* @__PURE__ */ jsxs(
70
+ "radialGradient",
71
+ {
72
+ id: `${gradientId}-indigo`,
73
+ cx: "36",
74
+ cy: "0",
75
+ r: "36",
76
+ gradientTransform: "matrix(1 0 0 0.6667 0 0)",
77
+ gradientUnits: "userSpaceOnUse",
78
+ children: [
79
+ /* @__PURE__ */ jsx("stop", { stopColor: logoColors.markRoundedGlowIndigo }),
80
+ /* @__PURE__ */ jsx("stop", { offset: "0.5", stopColor: logoColors.markRoundedGlowIndigo, stopOpacity: "0.6" }),
81
+ /* @__PURE__ */ jsx("stop", { offset: "1", stopColor: logoColors.markRoundedGlowIndigo, stopOpacity: "0" })
82
+ ]
83
+ }
84
+ ),
85
+ /* @__PURE__ */ jsxs(
86
+ "radialGradient",
87
+ {
88
+ id: `${gradientId}-teal`,
89
+ cx: "0",
90
+ cy: "36",
91
+ r: "22.5",
92
+ gradientUnits: "userSpaceOnUse",
93
+ children: [
94
+ /* @__PURE__ */ jsx("stop", { stopColor: logoColors.markRoundedGlowTeal }),
95
+ /* @__PURE__ */ jsx("stop", { offset: "1", stopColor: logoColors.markRoundedGlowTeal, stopOpacity: "0" })
96
+ ]
97
+ }
98
+ )
60
99
  ] })
61
100
  ]
62
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FairmintLogoMarkRounded.js","sources":["../../../src/components/FairmintLogo/FairmintLogoMarkRounded.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport { logoColors, logoFills } from \"../../theme/logo\";\n\n/** Product FT mark — rounded square tile from the brand icon asset. */\nexport const LOGO_MARK_ROUNDED_VIEWBOX = { width: 36, height: 36 } as const;\n\n/** Default tile fill from the FT Mark Rounded Square source asset. */\nexport const LOGO_MARK_ROUNDED_TILE = logoColors.markRoundedTile;\n\n/**\n * Collapsed SideNav layout: 48×48 frame with a 36×36 mark centered inside\n * (white/transparent padding around the tile).\n */\nexport const SIDE_NAV_COLLAPSED_LOGO_FRAME = 48;\nexport const SIDE_NAV_COLLAPSED_LOGO_SIZE = 36;\n\nexport type FairmintLogoMarkRoundedVariant = \"tile\" | \"black\" | \"white\";\n\nexport interface FairmintLogoMarkRoundedProps {\n /** Square size of the mark in pixels. @default 32 */\n size?: number;\n /**\n * Outer frame size. When set larger than `size`, centers the mark in a\n * transparent square (e.g. frame 48 + size 36 for collapsed SideNav).\n */\n frameSize?: number;\n /**\n * `tile` — purple rounded square with white FT glyph (collapsed nav / app icon).\n * `black` — standalone FT ligature for light mode.\n * `white` — standalone FT ligature for dark mode.\n * @default \"tile\"\n */\n variant?: FairmintLogoMarkRoundedVariant;\n /** Rounded tile fill. Applies to `variant=\"tile\"`. @default LOGO_MARK_ROUNDED_TILE */\n tileColor?: string;\n /** Glyph fill override. Defaults from `variant`. */\n glyphColor?: string;\n /**\n * Accessible name when the mark is standalone (collapsed nav, favicon).\n * Omit or pass `\"\"` when decorative inside a labeled lockup or link.\n */\n alt?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nfunction resolveGlyphColor(\n variant: FairmintLogoMarkRoundedVariant,\n glyphColor: string | undefined,\n): string {\n if (glyphColor) {\n return glyphColor;\n }\n return variant === \"black\" ? logoFills.black : logoFills.white;\n}\n\n/**\n * Fairmint FT mark — preferred collapsed SideNav / app-icon lockup.\n * Source geometry: FT Mark Rounded Square. `variant=\"tile\"` fills `size` with\n * the purple rounded square; `black` / `white` render the ligature alone for\n * light and dark surfaces. Optional `frameSize` adds transparent padding.\n */\nexport function FairmintLogoMarkRounded({\n size = 32,\n frameSize,\n variant = \"tile\",\n tileColor = LOGO_MARK_ROUNDED_TILE,\n glyphColor,\n alt,\n className,\n style,\n}: FairmintLogoMarkRoundedProps) {\n const isDecorative = !alt;\n const resolvedFrame = frameSize && frameSize > size ? frameSize : undefined;\n const showTile = variant === \"tile\";\n const resolvedGlyph = resolveGlyphColor(variant, glyphColor);\n\n const mark = (\n <svg\n viewBox={`0 0 ${LOGO_MARK_ROUNDED_VIEWBOX.width} ${LOGO_MARK_ROUNDED_VIEWBOX.height}`}\n width={size}\n height={size}\n className={resolvedFrame ? undefined : className}\n style={{ display: \"block\", flexShrink: 0, ...(resolvedFrame ? undefined : style) }}\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={isDecorative || undefined}\n role={isDecorative ? undefined : \"img\"}\n aria-label={isDecorative ? undefined : alt}\n >\n {!isDecorative && <title>{alt}</title>}\n {/* Tile fills the viewBox — padding belongs on `frameSize`, not inside the SVG. */}\n {showTile && <rect width=\"36\" height=\"36\" rx=\"8\" fill={tileColor} />}\n <g transform=\"translate(18 18.07) scale(1.12) translate(-18 -18.07)\">\n <path d=\"M12.4661 20.3562V26.446H15.1251V18.7954L12.4661 20.3562Z\" fill={resolvedGlyph} />\n <path\n d=\"M22.5714 22.7206V18.7932L19.9113 20.354V22.9428C19.9113 25.447 20.5768 26.7091 23.391 26.7091C24.0115 26.7091 24.9416 26.6194 25.4954 26.3556V24.1164C25.1627 24.3598 24.5198 24.4499 24.055 24.4499C22.8819 24.4499 22.5714 23.7836 22.5714 22.7206Z\"\n fill={resolvedGlyph}\n />\n <path\n d=\"M16.4329 9.42847C13.1307 9.42847 12.4656 11.3557 12.4656 14.3028V15.822H15.1254V13.8818C15.1254 12.7079 15.3456 11.6881 16.8315 11.6881C17.2086 11.6881 17.5629 11.7555 17.9388 11.8445L18.1148 9.5829C17.5625 9.47197 17.0071 9.42847 16.4329 9.42847Z\"\n fill={resolvedGlyph}\n />\n <path d=\"M22.5714 12.7273H19.9113V15.8081H22.5714V12.7273Z\" fill={resolvedGlyph} />\n <path d=\"M25.7283 15.8218H10.2717V18.0841H25.7283V15.8218Z\" fill={resolvedGlyph} />\n </g>\n </svg>\n );\n\n if (!resolvedFrame) {\n return mark;\n }\n\n return (\n <span\n className={className}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: resolvedFrame,\n height: resolvedFrame,\n flexShrink: 0,\n ...style,\n }}\n >\n {mark}\n </span>\n );\n}\n"],"names":[],"mappings":";;AAIO,MAAM,4BAA4B,EAAE,OAAO,IAAI,QAAQ,GAAA;AAGvD,MAAM,yBAAyB,WAAW;AAM1C,MAAM,gCAAgC;AACtC,MAAM,+BAA+B;AAgC5C,SAAS,kBACP,SACA,YACQ;AACR,MAAI,YAAY;AACd,WAAO;AAAA,EACT;AACA,SAAO,YAAY,UAAU,UAAU,QAAQ,UAAU;AAC3D;AAQO,SAAS,wBAAwB;AAAA,EACtC,OAAO;AAAA,EACP;AAAA,EACA,UAAU;AAAA,EACV,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiC;AAC/B,QAAM,eAAe,CAAC;AACtB,QAAM,gBAAgB,aAAa,YAAY,OAAO,YAAY;AAClE,QAAM,WAAW,YAAY;AAC7B,QAAM,gBAAgB,kBAAkB,SAAS,UAAU;AAE3D,QAAM,OACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,OAAO,0BAA0B,KAAK,IAAI,0BAA0B,MAAM;AAAA,MACnF,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW,gBAAgB,SAAY;AAAA,MACvC,OAAO,EAAE,SAAS,SAAS,YAAY,GAAG,GAAI,gBAAgB,SAAY,MAAA;AAAA,MAC1E,OAAM;AAAA,MACN,eAAa,gBAAgB;AAAA,MAC7B,MAAM,eAAe,SAAY;AAAA,MACjC,cAAY,eAAe,SAAY;AAAA,MAEtC,UAAA;AAAA,QAAA,CAAC,gBAAgB,oBAAC,SAAA,EAAO,UAAA,IAAA,CAAI;AAAA,QAE7B,YAAY,oBAAC,QAAA,EAAK,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,MAAM,UAAA,CAAW;AAAA,QAClE,qBAAC,KAAA,EAAE,WAAU,yDACX,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,GAAE,4DAA2D,MAAM,eAAe;AAAA,UACxF;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,GAAE;AAAA,cACF,MAAM;AAAA,YAAA;AAAA,UAAA;AAAA,UAER;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,GAAE;AAAA,cACF,MAAM;AAAA,YAAA;AAAA,UAAA;AAAA,UAER,oBAAC,QAAA,EAAK,GAAE,qDAAoD,MAAM,eAAe;AAAA,UACjF,oBAAC,QAAA,EAAK,GAAE,qDAAoD,MAAM,cAAA,CAAe;AAAA,QAAA,EAAA,CACnF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIJ,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,GAAG;AAAA,MAAA;AAAA,MAGJ,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"FairmintLogoMarkRounded.js","sources":["../../../src/components/FairmintLogo/FairmintLogoMarkRounded.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport { useId } from \"react\";\nimport { logoColors, logoFills } from \"../../theme/logo\";\n\n/** Product FT mark — rounded square tile from the brand icon asset. */\nexport const LOGO_MARK_ROUNDED_VIEWBOX = { width: 36, height: 36 } as const;\n\n/** Base tile field from the FT Mark Rounded Square source asset. */\nexport const LOGO_MARK_ROUNDED_TILE = logoColors.markRoundedTile;\n\n/**\n * Collapsed SideNav layout: 48×48 frame with a 36×36 mark centered inside\n * (white/transparent padding around the tile).\n */\nexport const SIDE_NAV_COLLAPSED_LOGO_FRAME = 48;\nexport const SIDE_NAV_COLLAPSED_LOGO_SIZE = 36;\n\nexport type FairmintLogoMarkRoundedVariant = \"tile\" | \"black\" | \"white\";\n\nexport interface FairmintLogoMarkRoundedProps {\n /** Square size of the mark in pixels. @default 32 */\n size?: number;\n /**\n * Outer frame size. When set larger than `size`, centers the mark in a\n * transparent square (e.g. frame 48 + size 36 for collapsed SideNav).\n */\n frameSize?: number;\n /**\n * `tile` — dark rounded square with white FT glyph (collapsed nav / app icon).\n * `black` — standalone FT ligature for light mode.\n * `white` — standalone FT ligature for dark mode.\n * @default \"tile\"\n */\n variant?: FairmintLogoMarkRoundedVariant;\n /**\n * Flat tile fill for `variant=\"tile\"`. Setting it replaces the brand field —\n * base color plus corner blooms — with a single solid color.\n */\n tileColor?: string;\n /** Glyph fill override. Defaults from `variant`. */\n glyphColor?: string;\n /**\n * Accessible name when the mark is standalone (collapsed nav, favicon).\n * Omit or pass `\"\"` when decorative inside a labeled lockup or link.\n */\n alt?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nfunction resolveGlyphColor(\n variant: FairmintLogoMarkRoundedVariant,\n glyphColor: string | undefined,\n): string {\n if (glyphColor) {\n return glyphColor;\n }\n return variant === \"black\" ? logoFills.black : logoFills.white;\n}\n\n/**\n * Fairmint FT mark — preferred collapsed SideNav / app-icon lockup.\n * Source geometry: FT Mark Rounded Square. `variant=\"tile\"` fills `size` with\n * the dark rounded square; `black` / `white` render the ligature alone for\n * light and dark surfaces. Optional `frameSize` adds transparent padding.\n */\nexport function FairmintLogoMarkRounded({\n size = 32,\n frameSize,\n variant = \"tile\",\n tileColor,\n glyphColor,\n alt,\n className,\n style,\n}: FairmintLogoMarkRoundedProps) {\n const gradientId = useId();\n const isDecorative = !alt;\n const resolvedFrame = frameSize && frameSize > size ? frameSize : undefined;\n const showTile = variant === \"tile\";\n // Corner blooms belong to the brand field — a caller-supplied fill replaces both.\n const showTileGlow = showTile && tileColor === undefined;\n const resolvedGlyph = resolveGlyphColor(variant, glyphColor);\n\n const mark = (\n <svg\n viewBox={`0 0 ${LOGO_MARK_ROUNDED_VIEWBOX.width} ${LOGO_MARK_ROUNDED_VIEWBOX.height}`}\n width={size}\n height={size}\n className={resolvedFrame ? undefined : className}\n style={{ display: \"block\", flexShrink: 0, ...(resolvedFrame ? undefined : style) }}\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={isDecorative || undefined}\n role={isDecorative ? undefined : \"img\"}\n aria-label={isDecorative ? undefined : alt}\n >\n {!isDecorative && <title>{alt}</title>}\n {/* Tile fills the viewBox — padding belongs on `frameSize`, not inside the SVG. */}\n {showTile && (\n <rect width=\"36\" height=\"36\" rx=\"8\" fill={tileColor ?? LOGO_MARK_ROUNDED_TILE} />\n )}\n {showTileGlow && (\n <>\n <rect width=\"36\" height=\"36\" rx=\"8\" fill={`url(#${gradientId}-indigo)`} />\n <rect width=\"36\" height=\"36\" rx=\"8\" fill={`url(#${gradientId}-teal)`} />\n </>\n )}\n <g transform=\"translate(18 18.39) scale(1.35) translate(-18 -18.39)\">\n <path d=\"M12.4661 20.3562V26.446H15.1251V18.7954L12.4661 20.3562Z\" fill={resolvedGlyph} />\n <path\n d=\"M22.5714 22.7206V18.7932L19.9113 20.354V22.9428C19.9113 25.447 20.5768 26.7091 23.391 26.7091C24.0115 26.7091 24.9416 26.6194 25.4954 26.3556V24.1164C25.1627 24.3598 24.5198 24.4499 24.055 24.4499C22.8819 24.4499 22.5714 23.7836 22.5714 22.7206Z\"\n fill={resolvedGlyph}\n />\n <path\n d=\"M16.4329 9.42847C13.1307 9.42847 12.4656 11.3557 12.4656 14.3028V15.822H15.1254V13.8818C15.1254 12.7079 15.3456 11.6881 16.8315 11.6881C17.2086 11.6881 17.5629 11.7555 17.9388 11.8445L18.1148 9.5829C17.5625 9.47197 17.0071 9.42847 16.4329 9.42847Z\"\n fill={resolvedGlyph}\n />\n {/* Ascender runs under the crossbar — abutting edges leave a hairline seam. */}\n <path d=\"M22.5714 12.7273H19.9113V16H22.5714V12.7273Z\" fill={resolvedGlyph} />\n <path d=\"M25.7283 15.8218H10.2717V18.0841H25.7283V15.8218Z\" fill={resolvedGlyph} />\n </g>\n {showTileGlow && (\n <defs>\n {/* Wide-but-shallow ellipse: the indigo bloom runs the full top edge\n but fades out before the lower right corner. */}\n <radialGradient\n id={`${gradientId}-indigo`}\n cx=\"36\"\n cy=\"0\"\n r=\"36\"\n gradientTransform=\"matrix(1 0 0 0.6667 0 0)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={logoColors.markRoundedGlowIndigo} />\n <stop offset=\"0.5\" stopColor={logoColors.markRoundedGlowIndigo} stopOpacity=\"0.6\" />\n <stop offset=\"1\" stopColor={logoColors.markRoundedGlowIndigo} stopOpacity=\"0\" />\n </radialGradient>\n <radialGradient\n id={`${gradientId}-teal`}\n cx=\"0\"\n cy=\"36\"\n r=\"22.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={logoColors.markRoundedGlowTeal} />\n <stop offset=\"1\" stopColor={logoColors.markRoundedGlowTeal} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n )}\n </svg>\n );\n\n if (!resolvedFrame) {\n return mark;\n }\n\n return (\n <span\n className={className}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: resolvedFrame,\n height: resolvedFrame,\n flexShrink: 0,\n ...style,\n }}\n >\n {mark}\n </span>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -57,16 +57,28 @@ function MobileNavHeader({
57
57
  children: menuIcon ?? defaultMenuIcon
58
58
  }
59
59
  ) : null;
60
- const trailing = rightSection != null || menu != null ? /* @__PURE__ */ jsxRuntime.jsxs(Group.Group, { wrap: "nowrap", gap: MOBILE_NAV_BRAND_GAP, align: "center", children: [
61
- rightSection,
62
- menu
63
- ] }) : null;
60
+ const trailing = rightSection != null || menu != null ? (
61
+ // Auto margin rather than `justify="space-between"` on the row: desktop
62
+ // shells pass no logo and no menu, leaving this as the only child.
63
+ /* @__PURE__ */ jsxRuntime.jsxs(
64
+ Group.Group,
65
+ {
66
+ style: { marginInlineStart: "auto" },
67
+ wrap: "nowrap",
68
+ gap: MOBILE_NAV_BRAND_GAP,
69
+ align: "center",
70
+ children: [
71
+ rightSection,
72
+ menu
73
+ ]
74
+ }
75
+ )
76
+ ) : null;
64
77
  return /* @__PURE__ */ jsxRuntime.jsxs(
65
78
  Group.Group,
66
79
  {
67
80
  h: MOBILE_NAV_HEADER_HEIGHT,
68
81
  px: MOBILE_NAV_HEADER_PADDING_X,
69
- justify: "space-between",
70
82
  wrap: "nowrap",
71
83
  align: "center",
72
84
  gap: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"MobileNavHeader.cjs","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme\";\nimport { FairmintLogo } from \"../../FairmintLogo/FairmintLogo\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Group } from \"../../primitives/layout\";\n\n/** Product-shell mobile header height (Studio + Investor). */\nexport const MOBILE_NAV_HEADER_HEIGHT = 60;\n/** Fairmint wordmark width in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_WIDTH = 120;\n/** Fairmint wordmark height in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_HEIGHT = 28;\n/** Space between trailing actions and the menu control. */\nexport const MOBILE_NAV_BRAND_GAP = 16;\n/** Header horizontal padding. */\nexport const MOBILE_NAV_HEADER_PADDING_X = 16;\n/** Menu control hit target (Mantine `lg`). */\nexport const MOBILE_NAV_MENU_SIZE = 36;\n\nconst defaultMenuIcon = (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6h16\" />\n <path d=\"M4 12h16\" />\n <path d=\"M4 18h16\" />\n </svg>\n);\n\nexport interface MobileNavHeaderProps {\n /**\n * Override the default Fairmint wordmark (white-label portals).\n * When omitted and `onMenuClick` is set, the canonical 120×28 Fairmint logo is used.\n */\n logo?: ReactNode;\n /** Opens the MobileNav sheet. Omit on desktop where SideNav owns destinations. */\n onMenuClick?: () => void;\n /** Trailing header actions before the hamburger (notifications, Ask AI). */\n rightSection?: ReactNode;\n /** Menu glyph. Defaults to an outlined hamburger so the component never imports an icon library. */\n menuIcon?: ReactNode;\n}\n\n/**\n * Canonical mobile page header for Fairmint product shells.\n *\n * Logo on the left; optional `rightSection` then hamburger on the far right.\n * Pixel metrics are fixed so Studio and Investor cannot drift via theme tokens\n * or extra wrappers. Sign out belongs in AccountSheet / the user menu — not here.\n */\nexport function MobileNavHeader({\n logo,\n onMenuClick,\n rightSection,\n menuIcon,\n}: MobileNavHeaderProps) {\n const mark =\n logo ??\n (onMenuClick ? (\n <FairmintLogo\n width={MOBILE_NAV_LOGO_WIDTH}\n height={MOBILE_NAV_LOGO_HEIGHT}\n style={{ display: \"block\" }}\n />\n ) : null);\n\n const menu =\n onMenuClick != null ? (\n <ActionIcon\n type=\"button\"\n aria-label=\"Open navigation\"\n color={colors.neutral}\n variant=\"subtle\"\n w={MOBILE_NAV_MENU_SIZE}\n h={MOBILE_NAV_MENU_SIZE}\n onClick={onMenuClick}\n >\n {menuIcon ?? defaultMenuIcon}\n </ActionIcon>\n ) : null;\n\n const trailing =\n rightSection != null || menu != null ? (\n <Group wrap=\"nowrap\" gap={MOBILE_NAV_BRAND_GAP} align=\"center\">\n {rightSection}\n {menu}\n </Group>\n ) : null;\n\n return (\n <Group\n h={MOBILE_NAV_HEADER_HEIGHT}\n px={MOBILE_NAV_HEADER_PADDING_X}\n justify=\"space-between\"\n wrap=\"nowrap\"\n align=\"center\"\n gap={0}\n w=\"100%\"\n bg=\"body\"\n >\n {mark}\n {trailing}\n </Group>\n );\n}\n"],"names":["jsxs","jsx","FairmintLogo","ActionIcon","colors","Group"],"mappings":";;;;;;;AAOO,MAAM,2BAA2B;AAEjC,MAAM,wBAAwB;AAE9B,MAAM,yBAAyB;AAE/B,MAAM,uBAAuB;AAE7B,MAAM,8BAA8B;AAEpC,MAAM,uBAAuB;AAEpC,MAAM,kBACJA,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,eAAY;AAAA,IAEZ,UAAA;AAAA,MAAAC,2BAAAA,IAAC,QAAA,EAAK,GAAE,UAAA,CAAU;AAAA,MAClBA,2BAAAA,IAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,MACnBA,2BAAAA,IAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,IAAA;AAAA,EAAA;AACrB;AAwBK,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,OACJ,SACC,cACCA,2BAAAA;AAAAA,IAACC,aAAAA;AAAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,EAAE,SAAS,QAAA;AAAA,IAAQ;AAAA,EAAA,IAE1B;AAEN,QAAM,OACJ,eAAe,OACbD,2BAAAA;AAAAA,IAACE,WAAAA;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAOC,OAAAA,OAAO;AAAA,MACd,SAAQ;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,MACH,SAAS;AAAA,MAER,UAAA,YAAY;AAAA,IAAA;AAAA,EAAA,IAEb;AAEN,QAAM,WACJ,gBAAgB,QAAQ,QAAQ,OAC9BJ,2BAAAA,KAACK,MAAAA,OAAA,EAAM,MAAK,UAAS,KAAK,sBAAsB,OAAM,UACnD,UAAA;AAAA,IAAA;AAAA,IACA;AAAA,EAAA,EAAA,CACH,IACE;AAEN,SACEL,2BAAAA;AAAAA,IAACK,MAAAA;AAAAA,IAAA;AAAA,MACC,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,KAAK;AAAA,MACL,GAAE;AAAA,MACF,IAAG;AAAA,MAEF,UAAA;AAAA,QAAA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;;;;;;;;"}
1
+ {"version":3,"file":"MobileNavHeader.cjs","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme\";\nimport { FairmintLogo } from \"../../FairmintLogo/FairmintLogo\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Group } from \"../../primitives/layout\";\n\n/** Product-shell mobile header height (Studio + Investor). */\nexport const MOBILE_NAV_HEADER_HEIGHT = 60;\n/** Fairmint wordmark width in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_WIDTH = 120;\n/** Fairmint wordmark height in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_HEIGHT = 28;\n/** Space between trailing actions and the menu control. */\nexport const MOBILE_NAV_BRAND_GAP = 16;\n/** Header horizontal padding. */\nexport const MOBILE_NAV_HEADER_PADDING_X = 16;\n/** Menu control hit target (Mantine `lg`). */\nexport const MOBILE_NAV_MENU_SIZE = 36;\n\nconst defaultMenuIcon = (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6h16\" />\n <path d=\"M4 12h16\" />\n <path d=\"M4 18h16\" />\n </svg>\n);\n\nexport interface MobileNavHeaderProps {\n /**\n * Override the default Fairmint wordmark (white-label portals).\n * When omitted and `onMenuClick` is set, the canonical 120×28 Fairmint logo is used.\n */\n logo?: ReactNode;\n /** Opens the MobileNav sheet. Omit on desktop where SideNav owns destinations. */\n onMenuClick?: () => void;\n /** Trailing header actions before the hamburger (notifications, Ask AI). */\n rightSection?: ReactNode;\n /** Menu glyph. Defaults to an outlined hamburger so the component never imports an icon library. */\n menuIcon?: ReactNode;\n}\n\n/**\n * Canonical mobile page header for Fairmint product shells.\n *\n * Logo on the left; optional `rightSection` then hamburger on the far right.\n * Pixel metrics are fixed so Studio and Investor cannot drift via theme tokens\n * or extra wrappers. Sign out belongs in AccountSheet / the user menu — not here.\n */\nexport function MobileNavHeader({\n logo,\n onMenuClick,\n rightSection,\n menuIcon,\n}: MobileNavHeaderProps) {\n const mark =\n logo ??\n (onMenuClick ? (\n <FairmintLogo\n width={MOBILE_NAV_LOGO_WIDTH}\n height={MOBILE_NAV_LOGO_HEIGHT}\n style={{ display: \"block\" }}\n />\n ) : null);\n\n const menu =\n onMenuClick != null ? (\n <ActionIcon\n type=\"button\"\n aria-label=\"Open navigation\"\n color={colors.neutral}\n variant=\"subtle\"\n w={MOBILE_NAV_MENU_SIZE}\n h={MOBILE_NAV_MENU_SIZE}\n onClick={onMenuClick}\n >\n {menuIcon ?? defaultMenuIcon}\n </ActionIcon>\n ) : null;\n\n const trailing =\n rightSection != null || menu != null ? (\n // Auto margin rather than `justify=\"space-between\"` on the row: desktop\n // shells pass no logo and no menu, leaving this as the only child.\n <Group\n style={{ marginInlineStart: \"auto\" }}\n wrap=\"nowrap\"\n gap={MOBILE_NAV_BRAND_GAP}\n align=\"center\"\n >\n {rightSection}\n {menu}\n </Group>\n ) : null;\n\n return (\n <Group\n h={MOBILE_NAV_HEADER_HEIGHT}\n px={MOBILE_NAV_HEADER_PADDING_X}\n wrap=\"nowrap\"\n align=\"center\"\n gap={0}\n w=\"100%\"\n bg=\"body\"\n >\n {mark}\n {trailing}\n </Group>\n );\n}\n"],"names":["jsxs","jsx","FairmintLogo","ActionIcon","colors","Group"],"mappings":";;;;;;;AAOO,MAAM,2BAA2B;AAEjC,MAAM,wBAAwB;AAE9B,MAAM,yBAAyB;AAE/B,MAAM,uBAAuB;AAE7B,MAAM,8BAA8B;AAEpC,MAAM,uBAAuB;AAEpC,MAAM,kBACJA,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,eAAY;AAAA,IAEZ,UAAA;AAAA,MAAAC,2BAAAA,IAAC,QAAA,EAAK,GAAE,UAAA,CAAU;AAAA,MAClBA,2BAAAA,IAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,MACnBA,2BAAAA,IAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,IAAA;AAAA,EAAA;AACrB;AAwBK,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,OACJ,SACC,cACCA,2BAAAA;AAAAA,IAACC,aAAAA;AAAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,EAAE,SAAS,QAAA;AAAA,IAAQ;AAAA,EAAA,IAE1B;AAEN,QAAM,OACJ,eAAe,OACbD,2BAAAA;AAAAA,IAACE,WAAAA;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAOC,OAAAA,OAAO;AAAA,MACd,SAAQ;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,MACH,SAAS;AAAA,MAER,UAAA,YAAY;AAAA,IAAA;AAAA,EAAA,IAEb;AAEN,QAAM,WACJ,gBAAgB,QAAQ,QAAQ;AAAA;AAAA;AAAA,IAG9BJ,2BAAAA;AAAAA,MAACK,MAAAA;AAAAA,MAAA;AAAA,QACC,OAAO,EAAE,mBAAmB,OAAA;AAAA,QAC5B,MAAK;AAAA,QACL,KAAK;AAAA,QACL,OAAM;AAAA,QAEL,UAAA;AAAA,UAAA;AAAA,UACA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,MAED;AAEN,SACEL,2BAAAA;AAAAA,IAACK,MAAAA;AAAAA,IAAA;AAAA,MACC,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,MAAK;AAAA,MACL,OAAM;AAAA,MACN,KAAK;AAAA,MACL,GAAE;AAAA,MACF,IAAG;AAAA,MAEF,UAAA;AAAA,QAAA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MobileNavHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,iCAAiC;AACjC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAoBvC,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,GACT,EAAE,oBAAoB,+BAiDtB"}
1
+ {"version":3,"file":"MobileNavHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,iCAAiC;AACjC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAoBvC,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,GACT,EAAE,oBAAoB,+BAuDtB"}
@@ -55,16 +55,28 @@ function MobileNavHeader({
55
55
  children: menuIcon ?? defaultMenuIcon
56
56
  }
57
57
  ) : null;
58
- const trailing = rightSection != null || menu != null ? /* @__PURE__ */ jsxs(Group, { wrap: "nowrap", gap: MOBILE_NAV_BRAND_GAP, align: "center", children: [
59
- rightSection,
60
- menu
61
- ] }) : null;
58
+ const trailing = rightSection != null || menu != null ? (
59
+ // Auto margin rather than `justify="space-between"` on the row: desktop
60
+ // shells pass no logo and no menu, leaving this as the only child.
61
+ /* @__PURE__ */ jsxs(
62
+ Group,
63
+ {
64
+ style: { marginInlineStart: "auto" },
65
+ wrap: "nowrap",
66
+ gap: MOBILE_NAV_BRAND_GAP,
67
+ align: "center",
68
+ children: [
69
+ rightSection,
70
+ menu
71
+ ]
72
+ }
73
+ )
74
+ ) : null;
62
75
  return /* @__PURE__ */ jsxs(
63
76
  Group,
64
77
  {
65
78
  h: MOBILE_NAV_HEADER_HEIGHT,
66
79
  px: MOBILE_NAV_HEADER_PADDING_X,
67
- justify: "space-between",
68
80
  wrap: "nowrap",
69
81
  align: "center",
70
82
  gap: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"MobileNavHeader.js","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme\";\nimport { FairmintLogo } from \"../../FairmintLogo/FairmintLogo\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Group } from \"../../primitives/layout\";\n\n/** Product-shell mobile header height (Studio + Investor). */\nexport const MOBILE_NAV_HEADER_HEIGHT = 60;\n/** Fairmint wordmark width in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_WIDTH = 120;\n/** Fairmint wordmark height in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_HEIGHT = 28;\n/** Space between trailing actions and the menu control. */\nexport const MOBILE_NAV_BRAND_GAP = 16;\n/** Header horizontal padding. */\nexport const MOBILE_NAV_HEADER_PADDING_X = 16;\n/** Menu control hit target (Mantine `lg`). */\nexport const MOBILE_NAV_MENU_SIZE = 36;\n\nconst defaultMenuIcon = (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6h16\" />\n <path d=\"M4 12h16\" />\n <path d=\"M4 18h16\" />\n </svg>\n);\n\nexport interface MobileNavHeaderProps {\n /**\n * Override the default Fairmint wordmark (white-label portals).\n * When omitted and `onMenuClick` is set, the canonical 120×28 Fairmint logo is used.\n */\n logo?: ReactNode;\n /** Opens the MobileNav sheet. Omit on desktop where SideNav owns destinations. */\n onMenuClick?: () => void;\n /** Trailing header actions before the hamburger (notifications, Ask AI). */\n rightSection?: ReactNode;\n /** Menu glyph. Defaults to an outlined hamburger so the component never imports an icon library. */\n menuIcon?: ReactNode;\n}\n\n/**\n * Canonical mobile page header for Fairmint product shells.\n *\n * Logo on the left; optional `rightSection` then hamburger on the far right.\n * Pixel metrics are fixed so Studio and Investor cannot drift via theme tokens\n * or extra wrappers. Sign out belongs in AccountSheet / the user menu — not here.\n */\nexport function MobileNavHeader({\n logo,\n onMenuClick,\n rightSection,\n menuIcon,\n}: MobileNavHeaderProps) {\n const mark =\n logo ??\n (onMenuClick ? (\n <FairmintLogo\n width={MOBILE_NAV_LOGO_WIDTH}\n height={MOBILE_NAV_LOGO_HEIGHT}\n style={{ display: \"block\" }}\n />\n ) : null);\n\n const menu =\n onMenuClick != null ? (\n <ActionIcon\n type=\"button\"\n aria-label=\"Open navigation\"\n color={colors.neutral}\n variant=\"subtle\"\n w={MOBILE_NAV_MENU_SIZE}\n h={MOBILE_NAV_MENU_SIZE}\n onClick={onMenuClick}\n >\n {menuIcon ?? defaultMenuIcon}\n </ActionIcon>\n ) : null;\n\n const trailing =\n rightSection != null || menu != null ? (\n <Group wrap=\"nowrap\" gap={MOBILE_NAV_BRAND_GAP} align=\"center\">\n {rightSection}\n {menu}\n </Group>\n ) : null;\n\n return (\n <Group\n h={MOBILE_NAV_HEADER_HEIGHT}\n px={MOBILE_NAV_HEADER_PADDING_X}\n justify=\"space-between\"\n wrap=\"nowrap\"\n align=\"center\"\n gap={0}\n w=\"100%\"\n bg=\"body\"\n >\n {mark}\n {trailing}\n </Group>\n );\n}\n"],"names":[],"mappings":";;;;;AAOO,MAAM,2BAA2B;AAEjC,MAAM,wBAAwB;AAE9B,MAAM,yBAAyB;AAE/B,MAAM,uBAAuB;AAE7B,MAAM,8BAA8B;AAEpC,MAAM,uBAAuB;AAEpC,MAAM,kBACJ;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,eAAY;AAAA,IAEZ,UAAA;AAAA,MAAA,oBAAC,QAAA,EAAK,GAAE,UAAA,CAAU;AAAA,MAClB,oBAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,MACnB,oBAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,IAAA;AAAA,EAAA;AACrB;AAwBK,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,OACJ,SACC,cACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,EAAE,SAAS,QAAA;AAAA,IAAQ;AAAA,EAAA,IAE1B;AAEN,QAAM,OACJ,eAAe,OACb;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAO,OAAO;AAAA,MACd,SAAQ;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,MACH,SAAS;AAAA,MAER,UAAA,YAAY;AAAA,IAAA;AAAA,EAAA,IAEb;AAEN,QAAM,WACJ,gBAAgB,QAAQ,QAAQ,OAC9B,qBAAC,OAAA,EAAM,MAAK,UAAS,KAAK,sBAAsB,OAAM,UACnD,UAAA;AAAA,IAAA;AAAA,IACA;AAAA,EAAA,EAAA,CACH,IACE;AAEN,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,KAAK;AAAA,MACL,GAAE;AAAA,MACF,IAAG;AAAA,MAEF,UAAA;AAAA,QAAA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"MobileNavHeader.js","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme\";\nimport { FairmintLogo } from \"../../FairmintLogo/FairmintLogo\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Group } from \"../../primitives/layout\";\n\n/** Product-shell mobile header height (Studio + Investor). */\nexport const MOBILE_NAV_HEADER_HEIGHT = 60;\n/** Fairmint wordmark width in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_WIDTH = 120;\n/** Fairmint wordmark height in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_HEIGHT = 28;\n/** Space between trailing actions and the menu control. */\nexport const MOBILE_NAV_BRAND_GAP = 16;\n/** Header horizontal padding. */\nexport const MOBILE_NAV_HEADER_PADDING_X = 16;\n/** Menu control hit target (Mantine `lg`). */\nexport const MOBILE_NAV_MENU_SIZE = 36;\n\nconst defaultMenuIcon = (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6h16\" />\n <path d=\"M4 12h16\" />\n <path d=\"M4 18h16\" />\n </svg>\n);\n\nexport interface MobileNavHeaderProps {\n /**\n * Override the default Fairmint wordmark (white-label portals).\n * When omitted and `onMenuClick` is set, the canonical 120×28 Fairmint logo is used.\n */\n logo?: ReactNode;\n /** Opens the MobileNav sheet. Omit on desktop where SideNav owns destinations. */\n onMenuClick?: () => void;\n /** Trailing header actions before the hamburger (notifications, Ask AI). */\n rightSection?: ReactNode;\n /** Menu glyph. Defaults to an outlined hamburger so the component never imports an icon library. */\n menuIcon?: ReactNode;\n}\n\n/**\n * Canonical mobile page header for Fairmint product shells.\n *\n * Logo on the left; optional `rightSection` then hamburger on the far right.\n * Pixel metrics are fixed so Studio and Investor cannot drift via theme tokens\n * or extra wrappers. Sign out belongs in AccountSheet / the user menu — not here.\n */\nexport function MobileNavHeader({\n logo,\n onMenuClick,\n rightSection,\n menuIcon,\n}: MobileNavHeaderProps) {\n const mark =\n logo ??\n (onMenuClick ? (\n <FairmintLogo\n width={MOBILE_NAV_LOGO_WIDTH}\n height={MOBILE_NAV_LOGO_HEIGHT}\n style={{ display: \"block\" }}\n />\n ) : null);\n\n const menu =\n onMenuClick != null ? (\n <ActionIcon\n type=\"button\"\n aria-label=\"Open navigation\"\n color={colors.neutral}\n variant=\"subtle\"\n w={MOBILE_NAV_MENU_SIZE}\n h={MOBILE_NAV_MENU_SIZE}\n onClick={onMenuClick}\n >\n {menuIcon ?? defaultMenuIcon}\n </ActionIcon>\n ) : null;\n\n const trailing =\n rightSection != null || menu != null ? (\n // Auto margin rather than `justify=\"space-between\"` on the row: desktop\n // shells pass no logo and no menu, leaving this as the only child.\n <Group\n style={{ marginInlineStart: \"auto\" }}\n wrap=\"nowrap\"\n gap={MOBILE_NAV_BRAND_GAP}\n align=\"center\"\n >\n {rightSection}\n {menu}\n </Group>\n ) : null;\n\n return (\n <Group\n h={MOBILE_NAV_HEADER_HEIGHT}\n px={MOBILE_NAV_HEADER_PADDING_X}\n wrap=\"nowrap\"\n align=\"center\"\n gap={0}\n w=\"100%\"\n bg=\"body\"\n >\n {mark}\n {trailing}\n </Group>\n );\n}\n"],"names":[],"mappings":";;;;;AAOO,MAAM,2BAA2B;AAEjC,MAAM,wBAAwB;AAE9B,MAAM,yBAAyB;AAE/B,MAAM,uBAAuB;AAE7B,MAAM,8BAA8B;AAEpC,MAAM,uBAAuB;AAEpC,MAAM,kBACJ;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,eAAY;AAAA,IAEZ,UAAA;AAAA,MAAA,oBAAC,QAAA,EAAK,GAAE,UAAA,CAAU;AAAA,MAClB,oBAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,MACnB,oBAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,IAAA;AAAA,EAAA;AACrB;AAwBK,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,OACJ,SACC,cACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,EAAE,SAAS,QAAA;AAAA,IAAQ;AAAA,EAAA,IAE1B;AAEN,QAAM,OACJ,eAAe,OACb;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAO,OAAO;AAAA,MACd,SAAQ;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,MACH,SAAS;AAAA,MAER,UAAA,YAAY;AAAA,IAAA;AAAA,EAAA,IAEb;AAEN,QAAM,WACJ,gBAAgB,QAAQ,QAAQ;AAAA;AAAA;AAAA,IAG9B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO,EAAE,mBAAmB,OAAA;AAAA,QAC5B,MAAK;AAAA,QACL,KAAK;AAAA,QACL,OAAM;AAAA,QAEL,UAAA;AAAA,UAAA;AAAA,UACA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,MAED;AAEN,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,MAAK;AAAA,MACL,OAAM;AAAA,MACN,KAAK;AAAA,MACL,GAAE;AAAA,MACF,IAAG;AAAA,MAEF,UAAA;AAAA,QAAA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const React = require("react");
4
- const index = require("../../../../../../_virtual/index3.cjs");
4
+ const index = require("../../../../../../_virtual/index4.cjs");
5
5
  const getStatus = require("../../get-status/get-status.cjs");
6
6
  const clearListState = require("../../lists/clear-list-state.cjs");
7
7
  const getPath = require("../../paths/get-path.cjs");
@@ -1,5 +1,5 @@
1
1
  import { useState, useRef, useCallback } from "react";
2
- import isEqual from "../../../../../../_virtual/index3.js";
2
+ import isEqual from "../../../../../../_virtual/index4.js";
3
3
  import { getStatus } from "../../get-status/get-status.js";
4
4
  import { clearListState } from "../../lists/clear-list-state.js";
5
5
  import { getPath } from "../../paths/get-path.js";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const index$1 = require("../../_virtual/index4.cjs");
3
+ const index$1 = require("../../_virtual/index3.cjs");
4
4
  const index = require("./node_modules/react-is/index.cjs");
5
5
  const factoryWithTypeCheckers = require("./factoryWithTypeCheckers.cjs");
6
6
  const factoryWithThrowingShims = require("./factoryWithThrowingShims.cjs");
@@ -1,4 +1,4 @@
1
- import { __module as propTypes } from "../../_virtual/index4.js";
1
+ import { __module as propTypes } from "../../_virtual/index3.js";
2
2
  import { __require as requireReactIs } from "./node_modules/react-is/index.js";
3
3
  import { __require as requireFactoryWithTypeCheckers } from "./factoryWithTypeCheckers.js";
4
4
  import { __require as requireFactoryWithThrowingShims } from "./factoryWithThrowingShims.js";
@@ -7,8 +7,12 @@ const logoFills = {
7
7
  };
8
8
  const logoColors = {
9
9
  wordmark: "#202020",
10
- /** FT Mark Rounded Square tile — product collapsed-nav / app-icon lockup. */
11
- markRoundedTile: "#825BFF",
10
+ /** FT Mark Rounded Square base field — product collapsed-nav / app-icon lockup. */
11
+ markRoundedTile: "#0D1023",
12
+ /** Indigo bloom anchored at the tile's top-right corner. */
13
+ markRoundedGlowIndigo: "#212153",
14
+ /** Cool teal bloom anchored at the tile's bottom-left corner. */
15
+ markRoundedGlowTeal: "#162434",
12
16
  gradientStops: [
13
17
  { offset: "0%", color: "#AC00FF" },
14
18
  { offset: "14.5833%", color: "#A200FF" },
@@ -1 +1 @@
1
- {"version":3,"file":"logo.cjs","sources":["../../src/theme/logo.ts"],"sourcesContent":["/** CDN-hosted black wordmark — legacy default for img-based `<FairmintLogo />` usage. */\nexport const DEFAULT_FAIRMINT_LOGO_SRC =\n \"https://imagedelivery.net/Lm6ChJXR4cIKKycsNMvGjA/0367be38-c9d8-4206-aaae-eba5ff830600/public\";\n\n/** Solid fills for logo mark and wordmark variants — matches `commonColors` in theme/index. */\nexport const logoFills = {\n black: \"#000000\",\n white: \"#ffffff\",\n} as const;\n\n/** Fairmint wordmark colors from design/Assets/Logos (canonical 215×48 geometry). */\nexport const logoColors = {\n wordmark: \"#202020\",\n /** FT Mark Rounded Square tile — product collapsed-nav / app-icon lockup. */\n markRoundedTile: \"#825BFF\",\n gradientStops: [\n { offset: \"0%\", color: \"#AC00FF\" },\n { offset: \"14.5833%\", color: \"#A200FF\" },\n { offset: \"34.8958%\", color: \"#6F00FF\" },\n { offset: \"52.0733%\", color: \"#4C00FF\" },\n { offset: \"64.5833%\", color: \"#0044FF\" },\n { offset: \"80.2083%\", color: \"#1768FF\" },\n { offset: \"94.2708%\", color: \"#409CFF\" },\n ],\n} as const;\n\n/** Canonical wordmark viewBox — all variants share this frame for pixel-aligned sizing. */\nexport const LOGO_VIEWBOX = { width: 215, height: 48 } as const;\n\n/** Simplified logo mark viewBox — flat bars for small lockups and favicons. */\nexport const LOGO_MARK_VIEWBOX = { width: 48, height: 48 } as const;\n\n/**\n * Right-aligned ascending bars (bottom widest). Mirrors wordmark accent geometry\n * and the equity-stack metaphor without chart-fidelity curves.\n */\nexport const LOGO_MARK_BARS = [\n { x: 6, y: 38, width: 38, height: 6 },\n { x: 12, y: 28, width: 32, height: 6 },\n { x: 18, y: 18, width: 26, height: 6 },\n { x: 24, y: 8, width: 20, height: 6 },\n] as const;\n"],"names":[],"mappings":";;AACO,MAAM,4BACX;AAGK,MAAM,YAAY;AAAA,EACvB,OAAO;AAAA,EACP,OAAO;AACT;AAGO,MAAM,aAAa;AAAA,EACxB,UAAU;AAAA;AAAA,EAEV,iBAAiB;AAAA,EACjB,eAAe;AAAA,IACb,EAAE,QAAQ,MAAM,OAAO,UAAA;AAAA,IACvB,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,EAAU;AAE3C;AAGO,MAAM,eAAe,EAAE,OAAO,KAAK,QAAQ,GAAA;AAG3C,MAAM,oBAAoB,EAAE,OAAO,IAAI,QAAQ,GAAA;AAM/C,MAAM,iBAAiB;AAAA,EAC5B,EAAE,GAAG,GAAG,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EAClC,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EACnC,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EACnC,EAAE,GAAG,IAAI,GAAG,GAAG,OAAO,IAAI,QAAQ,EAAA;AACpC;;;;;;;"}
1
+ {"version":3,"file":"logo.cjs","sources":["../../src/theme/logo.ts"],"sourcesContent":["/** CDN-hosted black wordmark — legacy default for img-based `<FairmintLogo />` usage. */\nexport const DEFAULT_FAIRMINT_LOGO_SRC =\n \"https://imagedelivery.net/Lm6ChJXR4cIKKycsNMvGjA/0367be38-c9d8-4206-aaae-eba5ff830600/public\";\n\n/** Solid fills for logo mark and wordmark variants — matches `commonColors` in theme/index. */\nexport const logoFills = {\n black: \"#000000\",\n white: \"#ffffff\",\n} as const;\n\n/** Fairmint wordmark colors from design/Assets/Logos (canonical 215×48 geometry). */\nexport const logoColors = {\n wordmark: \"#202020\",\n /** FT Mark Rounded Square base field — product collapsed-nav / app-icon lockup. */\n markRoundedTile: \"#0D1023\",\n /** Indigo bloom anchored at the tile's top-right corner. */\n markRoundedGlowIndigo: \"#212153\",\n /** Cool teal bloom anchored at the tile's bottom-left corner. */\n markRoundedGlowTeal: \"#162434\",\n gradientStops: [\n { offset: \"0%\", color: \"#AC00FF\" },\n { offset: \"14.5833%\", color: \"#A200FF\" },\n { offset: \"34.8958%\", color: \"#6F00FF\" },\n { offset: \"52.0733%\", color: \"#4C00FF\" },\n { offset: \"64.5833%\", color: \"#0044FF\" },\n { offset: \"80.2083%\", color: \"#1768FF\" },\n { offset: \"94.2708%\", color: \"#409CFF\" },\n ],\n} as const;\n\n/** Canonical wordmark viewBox — all variants share this frame for pixel-aligned sizing. */\nexport const LOGO_VIEWBOX = { width: 215, height: 48 } as const;\n\n/** Simplified logo mark viewBox — flat bars for small lockups and favicons. */\nexport const LOGO_MARK_VIEWBOX = { width: 48, height: 48 } as const;\n\n/**\n * Right-aligned ascending bars (bottom widest). Mirrors wordmark accent geometry\n * and the equity-stack metaphor without chart-fidelity curves.\n */\nexport const LOGO_MARK_BARS = [\n { x: 6, y: 38, width: 38, height: 6 },\n { x: 12, y: 28, width: 32, height: 6 },\n { x: 18, y: 18, width: 26, height: 6 },\n { x: 24, y: 8, width: 20, height: 6 },\n] as const;\n"],"names":[],"mappings":";;AACO,MAAM,4BACX;AAGK,MAAM,YAAY;AAAA,EACvB,OAAO;AAAA,EACP,OAAO;AACT;AAGO,MAAM,aAAa;AAAA,EACxB,UAAU;AAAA;AAAA,EAEV,iBAAiB;AAAA;AAAA,EAEjB,uBAAuB;AAAA;AAAA,EAEvB,qBAAqB;AAAA,EACrB,eAAe;AAAA,IACb,EAAE,QAAQ,MAAM,OAAO,UAAA;AAAA,IACvB,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,EAAU;AAE3C;AAGO,MAAM,eAAe,EAAE,OAAO,KAAK,QAAQ,GAAA;AAG3C,MAAM,oBAAoB,EAAE,OAAO,IAAI,QAAQ,GAAA;AAM/C,MAAM,iBAAiB;AAAA,EAC5B,EAAE,GAAG,GAAG,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EAClC,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EACnC,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EACnC,EAAE,GAAG,IAAI,GAAG,GAAG,OAAO,IAAI,QAAQ,EAAA;AACpC;;;;;;;"}
@@ -8,8 +8,12 @@ export declare const logoFills: {
8
8
  /** Fairmint wordmark colors from design/Assets/Logos (canonical 215×48 geometry). */
9
9
  export declare const logoColors: {
10
10
  readonly wordmark: "#202020";
11
- /** FT Mark Rounded Square tile — product collapsed-nav / app-icon lockup. */
12
- readonly markRoundedTile: "#825BFF";
11
+ /** FT Mark Rounded Square base field — product collapsed-nav / app-icon lockup. */
12
+ readonly markRoundedTile: "#0D1023";
13
+ /** Indigo bloom anchored at the tile's top-right corner. */
14
+ readonly markRoundedGlowIndigo: "#212153";
15
+ /** Cool teal bloom anchored at the tile's bottom-left corner. */
16
+ readonly markRoundedGlowTeal: "#162434";
13
17
  readonly gradientStops: readonly [{
14
18
  readonly offset: "0%";
15
19
  readonly color: "#AC00FF";
@@ -1 +1 @@
1
- {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/theme/logo.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,eAAO,MAAM,yBAAyB,iGAC0D,CAAC;AAEjG,+FAA+F;AAC/F,eAAO,MAAM,SAAS;;;CAGZ,CAAC;AAEX,qFAAqF;AACrF,eAAO,MAAM,UAAU;;IAErB,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;CAWrE,CAAC;AAEX,2FAA2F;AAC3F,eAAO,MAAM,YAAY;;;CAAsC,CAAC;AAEhE,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB;;;CAAqC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;EAKjB,CAAC"}
1
+ {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/theme/logo.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,eAAO,MAAM,yBAAyB,iGAC0D,CAAC;AAEjG,+FAA+F;AAC/F,eAAO,MAAM,SAAS;;;CAGZ,CAAC;AAEX,qFAAqF;AACrF,eAAO,MAAM,UAAU;;IAErB,mFAAmF;;IAEnF,4DAA4D;;IAE5D,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;CAWzD,CAAC;AAEX,2FAA2F;AAC3F,eAAO,MAAM,YAAY;;;CAAsC,CAAC;AAEhE,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB;;;CAAqC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;EAKjB,CAAC"}
@@ -5,8 +5,12 @@ const logoFills = {
5
5
  };
6
6
  const logoColors = {
7
7
  wordmark: "#202020",
8
- /** FT Mark Rounded Square tile — product collapsed-nav / app-icon lockup. */
9
- markRoundedTile: "#825BFF",
8
+ /** FT Mark Rounded Square base field — product collapsed-nav / app-icon lockup. */
9
+ markRoundedTile: "#0D1023",
10
+ /** Indigo bloom anchored at the tile's top-right corner. */
11
+ markRoundedGlowIndigo: "#212153",
12
+ /** Cool teal bloom anchored at the tile's bottom-left corner. */
13
+ markRoundedGlowTeal: "#162434",
10
14
  gradientStops: [
11
15
  { offset: "0%", color: "#AC00FF" },
12
16
  { offset: "14.5833%", color: "#A200FF" },
@@ -1 +1 @@
1
- {"version":3,"file":"logo.js","sources":["../../src/theme/logo.ts"],"sourcesContent":["/** CDN-hosted black wordmark — legacy default for img-based `<FairmintLogo />` usage. */\nexport const DEFAULT_FAIRMINT_LOGO_SRC =\n \"https://imagedelivery.net/Lm6ChJXR4cIKKycsNMvGjA/0367be38-c9d8-4206-aaae-eba5ff830600/public\";\n\n/** Solid fills for logo mark and wordmark variants — matches `commonColors` in theme/index. */\nexport const logoFills = {\n black: \"#000000\",\n white: \"#ffffff\",\n} as const;\n\n/** Fairmint wordmark colors from design/Assets/Logos (canonical 215×48 geometry). */\nexport const logoColors = {\n wordmark: \"#202020\",\n /** FT Mark Rounded Square tile — product collapsed-nav / app-icon lockup. */\n markRoundedTile: \"#825BFF\",\n gradientStops: [\n { offset: \"0%\", color: \"#AC00FF\" },\n { offset: \"14.5833%\", color: \"#A200FF\" },\n { offset: \"34.8958%\", color: \"#6F00FF\" },\n { offset: \"52.0733%\", color: \"#4C00FF\" },\n { offset: \"64.5833%\", color: \"#0044FF\" },\n { offset: \"80.2083%\", color: \"#1768FF\" },\n { offset: \"94.2708%\", color: \"#409CFF\" },\n ],\n} as const;\n\n/** Canonical wordmark viewBox — all variants share this frame for pixel-aligned sizing. */\nexport const LOGO_VIEWBOX = { width: 215, height: 48 } as const;\n\n/** Simplified logo mark viewBox — flat bars for small lockups and favicons. */\nexport const LOGO_MARK_VIEWBOX = { width: 48, height: 48 } as const;\n\n/**\n * Right-aligned ascending bars (bottom widest). Mirrors wordmark accent geometry\n * and the equity-stack metaphor without chart-fidelity curves.\n */\nexport const LOGO_MARK_BARS = [\n { x: 6, y: 38, width: 38, height: 6 },\n { x: 12, y: 28, width: 32, height: 6 },\n { x: 18, y: 18, width: 26, height: 6 },\n { x: 24, y: 8, width: 20, height: 6 },\n] as const;\n"],"names":[],"mappings":"AACO,MAAM,4BACX;AAGK,MAAM,YAAY;AAAA,EACvB,OAAO;AAAA,EACP,OAAO;AACT;AAGO,MAAM,aAAa;AAAA,EACxB,UAAU;AAAA;AAAA,EAEV,iBAAiB;AAAA,EACjB,eAAe;AAAA,IACb,EAAE,QAAQ,MAAM,OAAO,UAAA;AAAA,IACvB,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,EAAU;AAE3C;AAGO,MAAM,eAAe,EAAE,OAAO,KAAK,QAAQ,GAAA;AAG3C,MAAM,oBAAoB,EAAE,OAAO,IAAI,QAAQ,GAAA;AAM/C,MAAM,iBAAiB;AAAA,EAC5B,EAAE,GAAG,GAAG,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EAClC,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EACnC,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EACnC,EAAE,GAAG,IAAI,GAAG,GAAG,OAAO,IAAI,QAAQ,EAAA;AACpC;"}
1
+ {"version":3,"file":"logo.js","sources":["../../src/theme/logo.ts"],"sourcesContent":["/** CDN-hosted black wordmark — legacy default for img-based `<FairmintLogo />` usage. */\nexport const DEFAULT_FAIRMINT_LOGO_SRC =\n \"https://imagedelivery.net/Lm6ChJXR4cIKKycsNMvGjA/0367be38-c9d8-4206-aaae-eba5ff830600/public\";\n\n/** Solid fills for logo mark and wordmark variants — matches `commonColors` in theme/index. */\nexport const logoFills = {\n black: \"#000000\",\n white: \"#ffffff\",\n} as const;\n\n/** Fairmint wordmark colors from design/Assets/Logos (canonical 215×48 geometry). */\nexport const logoColors = {\n wordmark: \"#202020\",\n /** FT Mark Rounded Square base field — product collapsed-nav / app-icon lockup. */\n markRoundedTile: \"#0D1023\",\n /** Indigo bloom anchored at the tile's top-right corner. */\n markRoundedGlowIndigo: \"#212153\",\n /** Cool teal bloom anchored at the tile's bottom-left corner. */\n markRoundedGlowTeal: \"#162434\",\n gradientStops: [\n { offset: \"0%\", color: \"#AC00FF\" },\n { offset: \"14.5833%\", color: \"#A200FF\" },\n { offset: \"34.8958%\", color: \"#6F00FF\" },\n { offset: \"52.0733%\", color: \"#4C00FF\" },\n { offset: \"64.5833%\", color: \"#0044FF\" },\n { offset: \"80.2083%\", color: \"#1768FF\" },\n { offset: \"94.2708%\", color: \"#409CFF\" },\n ],\n} as const;\n\n/** Canonical wordmark viewBox — all variants share this frame for pixel-aligned sizing. */\nexport const LOGO_VIEWBOX = { width: 215, height: 48 } as const;\n\n/** Simplified logo mark viewBox — flat bars for small lockups and favicons. */\nexport const LOGO_MARK_VIEWBOX = { width: 48, height: 48 } as const;\n\n/**\n * Right-aligned ascending bars (bottom widest). Mirrors wordmark accent geometry\n * and the equity-stack metaphor without chart-fidelity curves.\n */\nexport const LOGO_MARK_BARS = [\n { x: 6, y: 38, width: 38, height: 6 },\n { x: 12, y: 28, width: 32, height: 6 },\n { x: 18, y: 18, width: 26, height: 6 },\n { x: 24, y: 8, width: 20, height: 6 },\n] as const;\n"],"names":[],"mappings":"AACO,MAAM,4BACX;AAGK,MAAM,YAAY;AAAA,EACvB,OAAO;AAAA,EACP,OAAO;AACT;AAGO,MAAM,aAAa;AAAA,EACxB,UAAU;AAAA;AAAA,EAEV,iBAAiB;AAAA;AAAA,EAEjB,uBAAuB;AAAA;AAAA,EAEvB,qBAAqB;AAAA,EACrB,eAAe;AAAA,IACb,EAAE,QAAQ,MAAM,OAAO,UAAA;AAAA,IACvB,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,IAC7B,EAAE,QAAQ,YAAY,OAAO,UAAA;AAAA,EAAU;AAE3C;AAGO,MAAM,eAAe,EAAE,OAAO,KAAK,QAAQ,GAAA;AAG3C,MAAM,oBAAoB,EAAE,OAAO,IAAI,QAAQ,GAAA;AAM/C,MAAM,iBAAiB;AAAA,EAC5B,EAAE,GAAG,GAAG,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EAClC,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EACnC,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAA;AAAA,EACnC,EAAE,GAAG,IAAI,GAAG,GAAG,OAAO,IAAI,QAAQ,EAAA;AACpC;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fairmint/ui",
3
- "version": "0.4.3",
3
+ "version": "0.4.5",
4
4
  "type": "module",
5
5
  "description": "Fairmint design system and UI component library",
6
6
  "license": "UNLICENSED",