@moveindustries/movement-design-system 1.2.0 → 1.2.2

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 (69) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/brand-faces.css +88 -0
  3. package/dist/{button-Dh2vlJOI.js → button-BE4Sonxr.js} +1 -1
  4. package/dist/button-DDuNM3Ni.cjs +1 -0
  5. package/dist/carousel.cjs +1 -1
  6. package/dist/carousel.js +147 -139
  7. package/dist/components/Footer/Footer.d.ts +49 -47
  8. package/dist/components/Footer/Footer.d.ts.map +1 -1
  9. package/dist/components/Footer/index.d.ts +2 -2
  10. package/dist/components/Footer/index.d.ts.map +1 -1
  11. package/dist/components/shadcn/typography.d.ts +1 -1
  12. package/dist/createLucideIcon-8yq_KgWS.cjs +1 -0
  13. package/dist/createLucideIcon-DFqdAswP.js +102 -0
  14. package/dist/fonts.css +32 -8
  15. package/dist/index.cjs +1 -1
  16. package/dist/index.d.ts +2 -2
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +709 -756
  19. package/dist/movement-design-system.css +90 -1
  20. package/dist/theme.css +21 -8
  21. package/dist/{use-mobile-C12jSU8y.cjs → use-mobile-1LviLXhw.cjs} +2 -2
  22. package/dist/{use-mobile-Da0X_fcF.js → use-mobile-CN6nNdj4.js} +63 -60
  23. package/dist/wallet.cjs +1 -1
  24. package/dist/wallet.js +36 -36
  25. package/package.json +1 -2
  26. package/dist/assets/fonts/NeueHaasUnicaPro.otf +0 -0
  27. package/dist/assets/fonts/TWKEverett-Black.otf +0 -0
  28. package/dist/assets/fonts/TWKEverett-BlackItalic.otf +0 -0
  29. package/dist/assets/fonts/TWKEverett-Bold.otf +0 -0
  30. package/dist/assets/fonts/TWKEverett-BoldItalic.otf +0 -0
  31. package/dist/assets/fonts/TWKEverett-Extrabold.otf +0 -0
  32. package/dist/assets/fonts/TWKEverett-ExtraboldItalic.otf +0 -0
  33. package/dist/assets/fonts/TWKEverett-Hairline.otf +0 -0
  34. package/dist/assets/fonts/TWKEverett-HairlineItalic.otf +0 -0
  35. package/dist/assets/fonts/TWKEverett-Light.otf +0 -0
  36. package/dist/assets/fonts/TWKEverett-LightItalic.otf +0 -0
  37. package/dist/assets/fonts/TWKEverett-Medium.otf +0 -0
  38. package/dist/assets/fonts/TWKEverett-MediumItalic.otf +0 -0
  39. package/dist/assets/fonts/TWKEverett-Regular.otf +0 -0
  40. package/dist/assets/fonts/TWKEverett-RegularItalic.otf +0 -0
  41. package/dist/assets/fonts/TWKEverett-Super.otf +0 -0
  42. package/dist/assets/fonts/TWKEverett-SuperItalic.otf +0 -0
  43. package/dist/assets/fonts/TWKEverett-Thin.otf +0 -0
  44. package/dist/assets/fonts/TWKEverett-ThinItalic.otf +0 -0
  45. package/dist/assets/fonts/TWKEverett-Ultralight.otf +0 -0
  46. package/dist/assets/fonts/TWKEverett-UltralightItalic.otf +0 -0
  47. package/dist/assets/fonts/TWKEverettMono-Black.otf +0 -0
  48. package/dist/assets/fonts/TWKEverettMono-BlackItalic.otf +0 -0
  49. package/dist/assets/fonts/TWKEverettMono-Bold.otf +0 -0
  50. package/dist/assets/fonts/TWKEverettMono-BoldItalic.otf +0 -0
  51. package/dist/assets/fonts/TWKEverettMono-Extrabold.otf +0 -0
  52. package/dist/assets/fonts/TWKEverettMono-ExtraboldItalic.otf +0 -0
  53. package/dist/assets/fonts/TWKEverettMono-Hairline.otf +0 -0
  54. package/dist/assets/fonts/TWKEverettMono-HairlineItalic.otf +0 -0
  55. package/dist/assets/fonts/TWKEverettMono-Light.otf +0 -0
  56. package/dist/assets/fonts/TWKEverettMono-LightItalic.otf +0 -0
  57. package/dist/assets/fonts/TWKEverettMono-Medium.otf +0 -0
  58. package/dist/assets/fonts/TWKEverettMono-MediumItalic.otf +0 -0
  59. package/dist/assets/fonts/TWKEverettMono-Regular.otf +0 -0
  60. package/dist/assets/fonts/TWKEverettMono-RegularItalic.otf +0 -0
  61. package/dist/assets/fonts/TWKEverettMono-Super.otf +0 -0
  62. package/dist/assets/fonts/TWKEverettMono-SuperItalic.otf +0 -0
  63. package/dist/assets/fonts/TWKEverettMono-Thin.otf +0 -0
  64. package/dist/assets/fonts/TWKEverettMono-ThinItalic.otf +0 -0
  65. package/dist/assets/fonts/TWKEverettMono-Ultralight.otf +0 -0
  66. package/dist/assets/fonts/TWKEverettMono-UltralightItalic.otf +0 -0
  67. package/dist/button-DZAlWvkC.cjs +0 -1
  68. package/dist/index-5va-8CrW.cjs +0 -1
  69. package/dist/index-uPOYJZpG.js +0 -34
@@ -1,72 +1,74 @@
1
1
  import { default as React } from 'react';
2
- declare const footerLinkVariants: (props?: ({
3
- variant?: "default" | "muted" | null | undefined;
4
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
5
- declare const socialIconVariants: (props?: ({
6
- variant?: "default" | null | undefined;
7
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
8
- declare const footerHeaderVariants: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
2
+ /**
3
+ * Footer the unified Movement footer shared across all Movement Network
4
+ * apps (Bridge, Staking, Explorer, Faucet). Solid-black slab:
5
+ * - "Powered by Movement" wordmark + monogram (left)
6
+ * - Three short link columns — Explore / Builders / Resource (right)
7
+ * - Hairline divider
8
+ * - Legal row: copyright + Terms/Privacy (left), X / Discord / GitHub /
9
+ * Telegram / LinkedIn social icons (right)
10
+ *
11
+ * Single responsive component — stacks vertically below 768px and lays out
12
+ * horizontally from 768px up (no separate desktop/mobile trees).
13
+ *
14
+ * SELF-CONTAINED: all styling lives in `footer.css` (compiled into the
15
+ * published `component-styles` bundle) under `.mvmt-footer*` classes with
16
+ * literal values and a fixed breakpoint. The footer uses NO ambient Tailwind
17
+ * utility classes and reads NO host CSS variables for layout/size — so it
18
+ * renders identically in every app regardless of that app's Tailwind config,
19
+ * theme, or stylesheet import order. Only the text font defers to the app's
20
+ * `--font-display` (every Movement app wires this to ABC Oracle), with an
21
+ * "ABC Oracle" → system-sans fallback. Framework-agnostic: plain `<a>`
22
+ * anchors (no router dep) and inline-SVG icons (no icon-lib dep).
23
+ */
9
24
  export interface FooterLink {
10
25
  label: string;
11
26
  href: string;
27
+ /** Open in a new tab with rel="noopener noreferrer". @default false */
28
+ external?: boolean;
12
29
  }
13
30
  export interface FooterColumn {
14
31
  title: string;
15
32
  links: FooterLink[];
16
33
  }
34
+ export type SocialPlatform = "x" | "discord" | "github" | "telegram" | "linkedin" | "reddit";
17
35
  export interface SocialLink {
18
- platform: "x" | "discord" | "github" | "linkedin" | "reddit" | "telegram";
36
+ platform: SocialPlatform;
19
37
  href: string;
38
+ /** Accessible label. Falls back to a sensible default per platform. */
39
+ label?: string;
20
40
  }
21
41
  export interface FooterProps extends React.HTMLAttributes<HTMLElement> {
22
42
  /**
23
- * Whether to show the heading tagline
24
- * @default true
43
+ * Navigation columns rendered on the right of the top row.
44
+ * @default Explore / Builders / Resource
25
45
  */
26
- showHeading?: boolean;
46
+ columns?: FooterColumn[];
27
47
  /**
28
- * Custom heading text
48
+ * Social media links rendered at the bottom right.
49
+ * @default X / Discord / GitHub / Telegram / LinkedIn
29
50
  */
30
- heading?: string;
51
+ socialLinks?: SocialLink[];
31
52
  /**
32
- * Footer navigation columns
53
+ * Legal links rendered next to the copyright at the bottom left.
54
+ * @default Terms of Service / Privacy Policy
33
55
  */
34
- columns?: FooterColumn[];
56
+ legalLinks?: FooterLink[];
35
57
  /**
36
- * Social media links
58
+ * Copyright text. When omitted, renders "Movement © {currentYear}".
37
59
  */
38
- socialLinks?: SocialLink[];
60
+ copyright?: string;
39
61
  /**
40
- * Copyright text
41
- * @default "© 2026 Movement Network Foundation. All rights reserved."
62
+ * Href for the "Powered by Movement" brand lockup.
63
+ * @default "https://www.movementnetwork.xyz"
42
64
  */
43
- copyright?: string;
44
- }
45
- interface DesktopFooterProps {
46
- showHeading: boolean;
47
- heading: string;
48
- columns: FooterColumn[];
49
- socialLinks: SocialLink[];
50
- copyright: string;
51
- className?: string;
52
- }
53
- declare function DesktopFooter({ showHeading, heading, columns, socialLinks, copyright, className, }: DesktopFooterProps): import("react/jsx-runtime").JSX.Element;
54
- interface MobileFooterProps {
55
- showHeading: boolean;
56
- heading: string;
57
- columns: FooterColumn[];
58
- socialLinks: SocialLink[];
59
- copyright: string;
60
- className?: string;
65
+ brandHref?: string;
66
+ /**
67
+ * Brand wordmark text shown next to the monogram.
68
+ * @default "Powered by Movement"
69
+ */
70
+ brandLabel?: string;
61
71
  }
62
- declare function MobileFooter({ showHeading, heading, columns, socialLinks, copyright, className, }: MobileFooterProps): import("react/jsx-runtime").JSX.Element;
63
- /**
64
- * Footer component for displaying site-wide footer with navigation, social links, and branding.
65
- * Automatically switches between desktop and mobile layouts based on screen size.
66
- *
67
- * - Desktop (≥768px): Horizontal layout with logo left, nav columns right
68
- * - Mobile (<768px): Centered layout with 2x2 grid for nav columns
69
- */
70
- declare function Footer({ className, showHeading, heading, columns, socialLinks, copyright, ...props }: FooterProps): import("react/jsx-runtime").JSX.Element;
71
- export { Footer, DesktopFooter, MobileFooter, footerLinkVariants, footerHeaderVariants, socialIconVariants, };
72
+ declare function Footer({ className, columns, socialLinks, legalLinks, copyright, brandHref, brandLabel, ...props }: FooterProps): import("react/jsx-runtime").JSX.Element;
73
+ export { Footer };
72
74
  //# sourceMappingURL=Footer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/components/Footer/Footer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAgF1B,QAAA,MAAM,kBAAkB;;8EAavB,CAAC;AAGF,QAAA,MAAM,kBAAkB;;8EAYvB,CAAC;AAGF,QAAA,MAAM,oBAAoB,oFAAoE,CAAC;AAG/F,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,GAAG,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC1E,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACpE;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyGD,UAAU,kBAAkB;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,aAAa,CAAC,EACrB,WAAW,EACX,OAAO,EACP,OAAO,EACP,WAAW,EACX,SAAS,EACT,SAAS,GACV,EAAE,kBAAkB,2CA0CpB;AAKD,UAAU,iBAAiB;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,YAAY,CAAC,EACpB,WAAW,EACX,OAAO,EACP,OAAO,EACP,WAAW,EACX,SAAS,EACT,SAAS,GACV,EAAE,iBAAiB,2CAqCnB;AAMD;;;;;;GAMG;AACH,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,WAAkB,EAClB,OAAwD,EACxD,OAAwB,EACxB,WAAgC,EAChC,SAAsE,EACtE,GAAG,KAAK,EACT,EAAE,WAAW,2CAqBb;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,GACnB,CAAC"}
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/components/Footer/Footer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GACtB,GAAG,GACH,SAAS,GACT,QAAQ,GACR,UAAU,GACV,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACpE;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB;;;OAGG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAE3B;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4DD,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAwB,EACxB,WAAgC,EAChC,UAA8B,EAC9B,SAAS,EACT,SAAwB,EACxB,UAAkC,EAClC,GAAG,KAAK,EACT,EAAE,WAAW,2CA+Db;AAgID,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -1,3 +1,3 @@
1
- export { Footer, DesktopFooter, MobileFooter, footerLinkVariants, footerHeaderVariants, socialIconVariants, } from './Footer';
2
- export type { FooterProps, FooterLink, FooterColumn, SocialLink, } from './Footer';
1
+ export { Footer } from './Footer';
2
+ export type { FooterProps, FooterLink, FooterColumn, SocialLink, SocialPlatform, } from './Footer';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Footer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,GACX,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Footer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,cAAc,GACf,MAAM,UAAU,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { VariantProps } from 'class-variance-authority';
2
2
  import * as React from "react";
3
3
  declare const typographyVariants: (props?: ({
4
- variant?: "small" | "blockquote" | "code" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "label" | "p" | "list" | "large" | "uppercase" | "muted" | "lead" | "inlineCode" | "mono" | null | undefined;
4
+ variant?: "small" | "blockquote" | "code" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "label" | "p" | "list" | "large" | "uppercase" | "lead" | "muted" | "inlineCode" | "mono" | null | undefined;
5
5
  affects?: "default" | "removePMargin" | "removeMargin" | null | undefined;
6
6
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
7
  export interface TypographyProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof typographyVariants> {
@@ -0,0 +1 @@
1
+ "use strict";const N=require("./utils-CikHldDD.cjs"),d=require("react"),y=r=>typeof r=="boolean"?`${r}`:r===0?"0":r,w=N.clsx,V=(r,t)=>e=>{var n;if(t?.variants==null)return w(r,e?.class,e?.className);const{variants:l,defaultVariants:a}=t,v=Object.keys(l).map(o=>{const s=e?.[o],c=a?.[o];if(s===null)return null;const i=y(s)||y(c);return l[o][i]}),u=e&&Object.entries(e).reduce((o,s)=>{let[c,i]=s;return i===void 0||(o[c]=i),o},{}),m=t==null||(n=t.compoundVariants)===null||n===void 0?void 0:n.reduce((o,s)=>{let{class:c,className:i,...b}=s;return Object.entries(b).every(k=>{let[f,C]=k;return Array.isArray(C)?C.includes({...a,...u}[f]):{...a,...u}[f]===C})?[...o,c,i]:o},[]);return w(r,v,m,e?.class,e?.className)};const g=r=>r.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),L=r=>r.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,e,n)=>n?n.toUpperCase():e.toLowerCase()),h=r=>{const t=L(r);return t.charAt(0).toUpperCase()+t.slice(1)},A=(...r)=>r.filter((t,e,n)=>!!t&&t.trim()!==""&&n.indexOf(t)===e).join(" ").trim(),j=r=>{for(const t in r)if(t.startsWith("aria-")||t==="role"||t==="title")return!0};var x={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const O=d.forwardRef(({color:r="currentColor",size:t=24,strokeWidth:e=2,absoluteStrokeWidth:n,className:l="",children:a,iconNode:v,...u},m)=>d.createElement("svg",{ref:m,...x,width:t,height:t,stroke:r,strokeWidth:n?Number(e)*24/Number(t):e,className:A("lucide",l),...!a&&!j(u)&&{"aria-hidden":"true"},...u},[...v.map(([o,s])=>d.createElement(o,s)),...Array.isArray(a)?a:[a]]));const _=(r,t)=>{const e=d.forwardRef(({className:n,...l},a)=>d.createElement(O,{ref:a,iconNode:t,className:A(`lucide-${g(h(r))}`,`lucide-${r}`,n),...l}));return e.displayName=h(r),e};exports.createLucideIcon=_;exports.cva=V;
@@ -0,0 +1,102 @@
1
+ import { a as V } from "./utils-eGXXUFl7.js";
2
+ import { forwardRef as A, createElement as C } from "react";
3
+ const y = (a) => typeof a == "boolean" ? `${a}` : a === 0 ? "0" : a, h = V, U = (a, t) => (e) => {
4
+ var r;
5
+ if (t?.variants == null) return h(a, e?.class, e?.className);
6
+ const { variants: l, defaultVariants: n } = t, d = Object.keys(l).map((o) => {
7
+ const s = e?.[o], c = n?.[o];
8
+ if (s === null) return null;
9
+ const i = y(s) || y(c);
10
+ return l[o][i];
11
+ }), u = e && Object.entries(e).reduce((o, s) => {
12
+ let [c, i] = s;
13
+ return i === void 0 || (o[c] = i), o;
14
+ }, {}), v = t == null || (r = t.compoundVariants) === null || r === void 0 ? void 0 : r.reduce((o, s) => {
15
+ let { class: c, className: i, ...k } = s;
16
+ return Object.entries(k).every((N) => {
17
+ let [f, m] = N;
18
+ return Array.isArray(m) ? m.includes({
19
+ ...n,
20
+ ...u
21
+ }[f]) : {
22
+ ...n,
23
+ ...u
24
+ }[f] === m;
25
+ }) ? [
26
+ ...o,
27
+ c,
28
+ i
29
+ ] : o;
30
+ }, []);
31
+ return h(a, d, v, e?.class, e?.className);
32
+ };
33
+ const g = (a) => a.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), x = (a) => a.replace(
34
+ /^([A-Z])|[\s-_]+(\w)/g,
35
+ (t, e, r) => r ? r.toUpperCase() : e.toLowerCase()
36
+ ), w = (a) => {
37
+ const t = x(a);
38
+ return t.charAt(0).toUpperCase() + t.slice(1);
39
+ }, b = (...a) => a.filter((t, e, r) => !!t && t.trim() !== "" && r.indexOf(t) === e).join(" ").trim(), j = (a) => {
40
+ for (const t in a)
41
+ if (t.startsWith("aria-") || t === "role" || t === "title")
42
+ return !0;
43
+ };
44
+ var L = {
45
+ xmlns: "http://www.w3.org/2000/svg",
46
+ width: 24,
47
+ height: 24,
48
+ viewBox: "0 0 24 24",
49
+ fill: "none",
50
+ stroke: "currentColor",
51
+ strokeWidth: 2,
52
+ strokeLinecap: "round",
53
+ strokeLinejoin: "round"
54
+ };
55
+ const O = A(
56
+ ({
57
+ color: a = "currentColor",
58
+ size: t = 24,
59
+ strokeWidth: e = 2,
60
+ absoluteStrokeWidth: r,
61
+ className: l = "",
62
+ children: n,
63
+ iconNode: d,
64
+ ...u
65
+ }, v) => C(
66
+ "svg",
67
+ {
68
+ ref: v,
69
+ ...L,
70
+ width: t,
71
+ height: t,
72
+ stroke: a,
73
+ strokeWidth: r ? Number(e) * 24 / Number(t) : e,
74
+ className: b("lucide", l),
75
+ ...!n && !j(u) && { "aria-hidden": "true" },
76
+ ...u
77
+ },
78
+ [
79
+ ...d.map(([o, s]) => C(o, s)),
80
+ ...Array.isArray(n) ? n : [n]
81
+ ]
82
+ )
83
+ );
84
+ const W = (a, t) => {
85
+ const e = A(
86
+ ({ className: r, ...l }, n) => C(O, {
87
+ ref: n,
88
+ iconNode: t,
89
+ className: b(
90
+ `lucide-${g(w(a))}`,
91
+ `lucide-${a}`,
92
+ r
93
+ ),
94
+ ...l
95
+ })
96
+ );
97
+ return e.displayName = w(a), e;
98
+ };
99
+ export {
100
+ W as a,
101
+ U as c
102
+ };
package/dist/fonts.css CHANGED
@@ -1,10 +1,16 @@
1
1
  /* ============================================================================
2
- * Movement brand fonts — ABC Oracle (Dinamo) + RecifeText (Bold Monkeys)
2
+ * Movement brand @font-face declarations — ABC Oracle + RecifeText.
3
3
  * ----------------------------------------------------------------------------
4
- * Optional. Next.js apps self-host these via next/font/local and provide
5
- * --font-display / --font-serif themselves, so they DON'T need this file.
6
- * Storybook and non-Next consumers import it to get the real brand faces:
7
- * @import "@moveindustries/movement-design-system/fonts";
4
+ * Single source of truth for the brand faces. Consumed two ways:
5
+ * 1. `fonts.css` @imports this (the standalone `/fonts` entry + Storybook).
6
+ * 2. The library build APPENDS this file to the published component-styles
7
+ * bundle (dist/movement-design-system.css) so every consumer that imports
8
+ * the bundle gets the real brand faces with no extra import — see
9
+ * `copyThemePlugin` in vite.config.ts.
10
+ * The `url()`s stay external (never base64-inlined): the woff2 ship in the
11
+ * package under dist/assets/fonts/** and download only when a face is used.
12
+ * Paths are relative to dist/ root, where this file, fonts.css, and the
13
+ * component-styles bundle all live alongside ./assets/fonts/.
8
14
  * ============================================================================ */
9
15
 
10
16
  /* ABC Oracle — primary sans / display */
@@ -81,10 +87,28 @@
81
87
  font-display: swap;
82
88
  }
83
89
 
84
- /* Semantic font vars — only applied when this file is imported. Apps that
85
- * self-host via next/font set these themselves and never load this file. */
90
+ /* ============================================================================
91
+ * Movement brand fonts ABC Oracle (Dinamo) + RecifeText (Bold Monkeys)
92
+ * ----------------------------------------------------------------------------
93
+ * The brand @font-face rules live in `brand-faces.css` (single source of
94
+ * truth) and are also appended to the published component-styles bundle by the
95
+ * library build — so the design system always ships the real brand faces and
96
+ * components never depend on the host app registering the font.
97
+ *
98
+ * This file is the standalone `/fonts` entry: it pulls in the faces and sets
99
+ * the brand default vars on :root, for Storybook / non-Next consumers:
100
+ * @import "@moveindustries/movement-design-system/fonts";
101
+ * Next.js apps may still self-host via next/font/local and override
102
+ * --font-display / --font-serif; both resolve to the same Oracle face.
103
+ * ============================================================================ */
104
+
105
+
106
+ /* Semantic font vars — the single source the design system's `.font-*`
107
+ * utilities resolve through (see the @theme block in theme.css). Only the two
108
+ * brand faces are defined; there is no brand monospace, so --font-mono is left
109
+ * unset and `.font-mono` falls back to the generic system monospace (a
110
+ * consuming app can set --font-mono itself if it wants a specific one). */
86
111
  :root {
87
112
  --font-display: "ABC Oracle", ui-sans-serif, system-ui, sans-serif;
88
113
  --font-serif: "RecifeText", ui-serif, Georgia, serif;
89
- --font-mono: "ABC Oracle", ui-monospace, monospace;
90
114
  }