@shipsite.dev/components 0.2.18 → 0.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { ThemeProvider } from './context/ThemeProvider';
4
4
  export { ThemeToggle } from './ui/theme-toggle';
5
5
  export { Header } from './layout/Header';
6
6
  export { Footer } from './layout/Footer';
7
+ export { LocaleSwitcher } from './ui/locale-switcher';
7
8
  export { Hero } from './marketing/Hero';
8
9
  export { PageHero } from './marketing/PageHero';
9
10
  export { Features, Feature } from './marketing/Features';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3J,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3J,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ export { ThemeToggle } from './ui/theme-toggle';
7
7
  // Layout
8
8
  export { Header } from './layout/Header';
9
9
  export { Footer } from './layout/Footer';
10
+ export { LocaleSwitcher } from './ui/locale-switcher';
10
11
  // Marketing
11
12
  export { Hero } from './marketing/Hero';
12
13
  export { PageHero } from './marketing/PageHero';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAGpC,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,YAAY;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,gBAAgB;AAChB,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3J,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAGpC,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,YAAY;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,gBAAgB;AAChB,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3J,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../src/layout/Footer.tsx"],"names":[],"mappings":"AAWA,wBAAgB,MAAM,4CAwDrB"}
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../src/layout/Footer.tsx"],"names":[],"mappings":"AAYA,wBAAgB,MAAM,4CAyDrB"}
@@ -2,10 +2,13 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useShipSite, useResolveHref } from '../context/ShipSiteProvider';
4
4
  import { FooterRoot, FooterContent, FooterColumn, FooterBottom, } from '../ui/footer';
5
+ import { LocaleSwitcher } from '../ui/locale-switcher';
5
6
  export function Footer() {
6
7
  const { siteName, footer } = useShipSite();
7
8
  const resolveHref = useResolveHref();
8
9
  return (_jsx("footer", { className: "border-t border-border", children: _jsx(FooterRoot, { children: _jsxs("div", { className: "container-main", children: [_jsx(FooterContent, { children: footer.columns?.map((column) => (_jsxs(FooterColumn, { children: [_jsx("h3", { className: "text-sm font-semibold text-foreground", children: column.title }), _jsx("ul", { className: "flex flex-col gap-2", children: column.links.map((link) => (_jsx("li", { children: _jsx("a", { href: resolveHref(link.href), className: "text-sm text-muted-foreground hover:text-foreground transition-colors", children: link.label }) }, link.href))) })] }, column.title))) }), _jsxs(FooterBottom, { children: [_jsx("p", { children: footer.copyright ||
9
- `\u00A9 ${new Date().getFullYear()} ${siteName}` }), footer.social && footer.social.length > 0 && (_jsx("div", { className: "flex items-center gap-4", children: footer.social.map((social) => (_jsx("a", { href: social.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-foreground transition-colors capitalize", children: social.platform }, social.href))) }))] })] }) }) }));
10
+ `\u00A9 ${new Date().getFullYear()} ${siteName}` }), _jsxs("div", { className: "flex items-center gap-4", children: [footer.social &&
11
+ footer.social.length > 0 &&
12
+ footer.social.map((social) => (_jsx("a", { href: social.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-foreground transition-colors capitalize", children: social.platform }, social.href))), _jsx(LocaleSwitcher, {})] })] })] }) }) }));
10
13
  }
11
14
  //# sourceMappingURL=Footer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../src/layout/Footer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,MAAM;IACpB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,CACL,iBAAQ,SAAS,EAAC,wBAAwB,YACxC,KAAC,UAAU,cACT,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,aAAa,cACX,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,MAAC,YAAY,eACX,aAAI,SAAS,EAAC,uCAAuC,YAClD,MAAM,CAAC,KAAK,GACV,EACL,aAAI,SAAS,EAAC,qBAAqB,YAChC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,uBACE,YACE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5B,SAAS,EAAC,uEAAuE,YAEhF,IAAI,CAAC,KAAK,GACT,IANG,IAAI,CAAC,IAAI,CAOb,CACN,CAAC,GACC,KAfY,MAAM,CAAC,KAAK,CAgBhB,CAChB,CAAC,GACY,EAEhB,MAAC,YAAY,eACX,sBACG,MAAM,CAAC,SAAS;oCACf,UAAU,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,GAChD,EAEH,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5C,cAAK,SAAS,EAAC,yBAAyB,YACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC7B,YAEE,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,oDAAoD,YAE7D,MAAM,CAAC,QAAQ,IANX,MAAM,CAAC,IAAI,CAOd,CACL,CAAC,GACE,CACP,IACY,IACX,GACK,GACN,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../src/layout/Footer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,UAAU,MAAM;IACpB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,CACL,iBAAQ,SAAS,EAAC,wBAAwB,YACxC,KAAC,UAAU,cACT,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,aAAa,cACX,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,MAAC,YAAY,eACX,aAAI,SAAS,EAAC,uCAAuC,YAClD,MAAM,CAAC,KAAK,GACV,EACL,aAAI,SAAS,EAAC,qBAAqB,YAChC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,uBACE,YACE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5B,SAAS,EAAC,uEAAuE,YAEhF,IAAI,CAAC,KAAK,GACT,IANG,IAAI,CAAC,IAAI,CAOb,CACN,CAAC,GACC,KAfY,MAAM,CAAC,KAAK,CAgBhB,CAChB,CAAC,GACY,EAEhB,MAAC,YAAY,eACX,sBACG,MAAM,CAAC,SAAS;oCACf,UAAU,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,GAChD,EAEJ,eAAK,SAAS,EAAC,yBAAyB,aACrC,MAAM,CAAC,MAAM;wCACZ,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;wCACxB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC5B,YAEE,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,oDAAoD,YAE7D,MAAM,CAAC,QAAQ,IANX,MAAM,CAAC,IAAI,CAOd,CACL,CAAC,EACJ,KAAC,cAAc,KAAG,IACd,IACO,IACX,GACK,GACN,CACV,CAAC;AACJ,CAAC"}
@@ -5,6 +5,6 @@ import { Button } from '../ui/button';
5
5
  import { Mockup } from '../ui/mockup';
6
6
  import Glow from '../ui/glow';
7
7
  export function Hero({ title, description, primaryCta, secondaryCta, badge, image, children }) {
8
- return (_jsxs(Section, { className: "relative overflow-hidden", children: [_jsx(Glow, { variant: "top" }), _jsxs("div", { className: "container-main relative z-10", children: [_jsxs("div", { className: "max-w-3xl mx-auto text-center", children: [badge && (_jsx(Badge, { variant: "outline", className: "animate-appear mb-6", children: badge })), _jsx("h1", { className: "text-4xl md:text-6xl font-bold tracking-tight text-foreground mb-6 animate-appear [animation-delay:100ms]", children: title }), _jsx("p", { className: "text-lg md:text-xl text-muted-foreground mb-8 max-w-2xl mx-auto animate-appear [animation-delay:200ms]", children: description }), _jsxs("div", { className: "flex items-center justify-center gap-4 animate-appear [animation-delay:300ms]", children: [primaryCta && (_jsx(Button, { asChild: true, size: "lg", children: _jsx("a", { href: primaryCta.href, children: primaryCta.label }) })), secondaryCta && (_jsx(Button, { asChild: true, variant: "glow", size: "lg", children: _jsx("a", { href: secondaryCta.href, children: secondaryCta.label }) }))] }), children] }), image && (_jsx("div", { className: "mt-16 animate-appear-zoom [animation-delay:400ms]", children: _jsx(Mockup, { type: "responsive", className: "shadow-mockup w-full", children: _jsx("img", { src: image, alt: "", className: "w-full" }) }) }))] })] }));
8
+ return (_jsxs(Section, { className: "relative overflow-hidden", children: [_jsx(Glow, { variant: "top" }), _jsxs("div", { className: "container-main relative z-10", children: [_jsxs("div", { className: "max-w-3xl mx-auto text-center", children: [badge && (_jsx(Badge, { variant: "outline", className: "animate-appear mb-6", children: badge })), _jsx("h1", { className: "text-4xl md:text-6xl font-bold tracking-tight text-foreground mb-6 animate-appear [animation-delay:100ms]", children: title }), _jsx("p", { className: "text-lg md:text-xl text-muted-foreground mb-8 max-w-2xl mx-auto animate-appear [animation-delay:200ms]", children: description }), _jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-center gap-4 animate-appear [animation-delay:300ms]", children: [primaryCta && (_jsx(Button, { asChild: true, size: "lg", children: _jsx("a", { href: primaryCta.href, children: primaryCta.label }) })), secondaryCta && (_jsx(Button, { asChild: true, variant: "glow", size: "lg", children: _jsx("a", { href: secondaryCta.href, children: secondaryCta.label }) }))] }), children] }), image && (_jsx("div", { className: "mt-16 animate-appear-zoom [animation-delay:400ms]", children: _jsx(Mockup, { type: "responsive", className: "shadow-mockup w-full", children: _jsx("img", { src: image, alt: "", className: "w-full" }) }) }))] })] }));
9
9
  }
10
10
  //# sourceMappingURL=Hero.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Hero.js","sourceRoot":"","sources":["../../src/marketing/Hero.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,YAAY,CAAC;AAY9B,MAAM,UAAU,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAa;IACtG,OAAO,CACL,MAAC,OAAO,IAAC,SAAS,EAAC,0BAA0B,aAC3C,KAAC,IAAI,IAAC,OAAO,EAAC,KAAK,GAAG,EACtB,eAAK,SAAS,EAAC,8BAA8B,aAC3C,eAAK,SAAS,EAAC,+BAA+B,aAC3C,KAAK,IAAI,CACR,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,qBAAqB,YACrD,KAAK,GACA,CACT,EACD,aAAI,SAAS,EAAC,2GAA2G,YACtH,KAAK,GACH,EACL,YAAG,SAAS,EAAC,wGAAwG,YAClH,WAAW,GACV,EACJ,eAAK,SAAS,EAAC,+EAA+E,aAC3F,UAAU,IAAI,CACb,KAAC,MAAM,IAAC,OAAO,QAAC,IAAI,EAAC,IAAI,YACvB,YAAG,IAAI,EAAE,UAAU,CAAC,IAAI,YAAG,UAAU,CAAC,KAAK,GAAK,GACzC,CACV,EACA,YAAY,IAAI,CACf,KAAC,MAAM,IAAC,OAAO,QAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,YACtC,YAAG,IAAI,EAAE,YAAY,CAAC,IAAI,YAAG,YAAY,CAAC,KAAK,GAAK,GAC7C,CACV,IACG,EACL,QAAQ,IACL,EACL,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,mDAAmD,YAChE,KAAC,MAAM,IAAC,IAAI,EAAC,YAAY,EAAC,SAAS,EAAC,sBAAsB,YACxD,cAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,QAAQ,GAAG,GACtC,GACL,CACP,IACG,IACE,CACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Hero.js","sourceRoot":"","sources":["../../src/marketing/Hero.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,YAAY,CAAC;AAY9B,MAAM,UAAU,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAa;IACtG,OAAO,CACL,MAAC,OAAO,IAAC,SAAS,EAAC,0BAA0B,aAC3C,KAAC,IAAI,IAAC,OAAO,EAAC,KAAK,GAAG,EACtB,eAAK,SAAS,EAAC,8BAA8B,aAC3C,eAAK,SAAS,EAAC,+BAA+B,aAC3C,KAAK,IAAI,CACR,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,qBAAqB,YACrD,KAAK,GACA,CACT,EACD,aAAI,SAAS,EAAC,2GAA2G,YACtH,KAAK,GACH,EACL,YAAG,SAAS,EAAC,wGAAwG,YAClH,WAAW,GACV,EACJ,eAAK,SAAS,EAAC,oGAAoG,aAChH,UAAU,IAAI,CACb,KAAC,MAAM,IAAC,OAAO,QAAC,IAAI,EAAC,IAAI,YACvB,YAAG,IAAI,EAAE,UAAU,CAAC,IAAI,YAAG,UAAU,CAAC,KAAK,GAAK,GACzC,CACV,EACA,YAAY,IAAI,CACf,KAAC,MAAM,IAAC,OAAO,QAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,YACtC,YAAG,IAAI,EAAE,YAAY,CAAC,IAAI,YAAG,YAAY,CAAC,KAAK,GAAK,GAC7C,CACV,IACG,EACL,QAAQ,IACL,EACL,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,mDAAmD,YAChE,KAAC,MAAM,IAAC,IAAI,EAAC,YAAY,EAAC,SAAS,EAAC,sBAAsB,YACxD,cAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,QAAQ,GAAG,GACtC,GACL,CACP,IACG,IACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function LocaleSwitcher(): import("react/jsx-runtime").JSX.Element | null;
2
+ //# sourceMappingURL=locale-switcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale-switcher.d.ts","sourceRoot":"","sources":["../../src/ui/locale-switcher.tsx"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,mDA4C7B"}
@@ -0,0 +1,25 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import React from 'react';
4
+ import { useShipSite, useAlternateLinks } from '../context/ShipSiteProvider';
5
+ export function LocaleSwitcher() {
6
+ const { locale, locales } = useShipSite();
7
+ const alternatePathMap = useAlternateLinks();
8
+ if (locales.length <= 1)
9
+ return null;
10
+ const pathname = typeof window !== 'undefined' ? window.location.pathname : '';
11
+ // Find the alternatePathMap entry where the current locale's path matches
12
+ let alternates;
13
+ for (const entry of Object.values(alternatePathMap)) {
14
+ if (entry[locale] === pathname) {
15
+ alternates = entry;
16
+ break;
17
+ }
18
+ }
19
+ return (_jsx("div", { className: "flex items-center gap-1.5 text-xs", children: locales.map((loc, i) => {
20
+ const href = alternates?.[loc] ?? `/${loc}`;
21
+ const isActive = loc === locale;
22
+ return (_jsxs(React.Fragment, { children: [i > 0 && _jsx("span", { className: "text-muted-foreground", children: "\u00B7" }), isActive ? (_jsx("span", { className: "font-semibold text-foreground uppercase", children: loc })) : (_jsx("a", { href: href, className: "text-muted-foreground hover:text-foreground transition-colors uppercase", children: loc }))] }, loc));
23
+ }) }));
24
+ }
25
+ //# sourceMappingURL=locale-switcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale-switcher.js","sourceRoot":"","sources":["../../src/ui/locale-switcher.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;IAC1C,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,CAAC;IAE7C,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,QAAQ,GACZ,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhE,0EAA0E;IAC1E,IAAI,UAA8C,CAAC;IACnD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/B,UAAU,GAAG,KAAK,CAAC;YACnB,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,mCAAmC,YAC/C,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,GAAG,KAAK,MAAM,CAAC;YAEhC,OAAO,CACL,MAAC,KAAK,CAAC,QAAQ,eACZ,CAAC,GAAG,CAAC,IAAI,eAAM,SAAS,EAAC,uBAAuB,uBAAS,EACzD,QAAQ,CAAC,CAAC,CAAC,CACV,eAAM,SAAS,EAAC,yCAAyC,YACtD,GAAG,GACC,CACR,CAAC,CAAC,CAAC,CACF,YACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAC,yEAAyE,YAElF,GAAG,GACF,CACL,KAbkB,GAAG,CAcP,CAClB,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
package/dist/ui/table.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cn } from "../lib/utils";
3
3
  function Table({ className, ...props }) {
4
- return (_jsx("div", { "data-slot": "table-container", className: "prose-container my-8 mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)] overflow-x-auto", children: _jsx("div", { className: "rounded-xl border border-border bg-card shadow-sm", children: _jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom text-sm", className), ...props }) }) }));
4
+ return (_jsx("div", { "data-slot": "table-container", className: "prose-container my-8 mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)]", children: _jsx("div", { className: "rounded-xl border border-border bg-card shadow-sm overflow-x-auto", children: _jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom text-sm", className), ...props }) }) }));
5
5
  }
6
6
  function TableHeader({ className, ...props }) {
7
7
  return (_jsx("thead", { "data-slot": "table-header", className: cn("bg-muted/50 [&_tr]:border-b", className), ...props }));
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/ui/table.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACnE,OAAO,CACL,2BAAe,iBAAiB,EAAC,SAAS,EAAC,6FAA6F,YACtI,cAAK,SAAS,EAAC,mDAAmD,YAChE,6BACY,OAAO,EACjB,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,KACrD,KAAK,GACT,GACE,GACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,6BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,KACnD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACvE,OAAO,CACL,6BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,KAClD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,6BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACnE,OAAO,CACL,0BACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,2FAA2F,EAC3F,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACL,0BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,wKAAwK,EACxK,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACL,0BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAmC;IAC5E,OAAO,CACL,+BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,KAC1D,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,CAAC"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/ui/table.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACnE,OAAO,CACL,2BAAe,iBAAiB,EAAC,SAAS,EAAC,6EAA6E,YACtH,cAAK,SAAS,EAAC,mEAAmE,YAChF,6BACY,OAAO,EACjB,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,KACrD,KAAK,GACT,GACE,GACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,6BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,KACnD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACvE,OAAO,CACL,6BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,KAClD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,6BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACnE,OAAO,CACL,0BACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,2FAA2F,EAC3F,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACL,0BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,wKAAwK,EACxK,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACL,0BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAmC;IAC5E,OAAO,CACL,+BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,KAC1D,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shipsite.dev/components",
3
- "version": "0.2.18",
3
+ "version": "0.2.20",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/shipsite/shipsite",
package/src/index.ts CHANGED
@@ -17,6 +17,7 @@ export { ThemeToggle } from './ui/theme-toggle';
17
17
  // Layout
18
18
  export { Header } from './layout/Header';
19
19
  export { Footer } from './layout/Footer';
20
+ export { LocaleSwitcher } from './ui/locale-switcher';
20
21
 
21
22
  // Marketing
22
23
  export { Hero } from './marketing/Hero';
@@ -8,6 +8,7 @@ import {
8
8
  FooterColumn,
9
9
  FooterBottom,
10
10
  } from '../ui/footer';
11
+ import { LocaleSwitcher } from '../ui/locale-switcher';
11
12
 
12
13
  export function Footer() {
13
14
  const { siteName, footer } = useShipSite();
@@ -45,9 +46,10 @@ export function Footer() {
45
46
  `\u00A9 ${new Date().getFullYear()} ${siteName}`}
46
47
  </p>
47
48
 
48
- {footer.social && footer.social.length > 0 && (
49
- <div className="flex items-center gap-4">
50
- {footer.social.map((social) => (
49
+ <div className="flex items-center gap-4">
50
+ {footer.social &&
51
+ footer.social.length > 0 &&
52
+ footer.social.map((social) => (
51
53
  <a
52
54
  key={social.href}
53
55
  href={social.href}
@@ -58,8 +60,8 @@ export function Footer() {
58
60
  {social.platform}
59
61
  </a>
60
62
  ))}
61
- </div>
62
- )}
63
+ <LocaleSwitcher />
64
+ </div>
63
65
  </FooterBottom>
64
66
  </div>
65
67
  </FooterRoot>
@@ -33,7 +33,7 @@ export function Hero({ title, description, primaryCta, secondaryCta, badge, imag
33
33
  <p className="text-lg md:text-xl text-muted-foreground mb-8 max-w-2xl mx-auto animate-appear [animation-delay:200ms]">
34
34
  {description}
35
35
  </p>
36
- <div className="flex items-center justify-center gap-4 animate-appear [animation-delay:300ms]">
36
+ <div className="flex flex-col sm:flex-row items-center justify-center gap-4 animate-appear [animation-delay:300ms]">
37
37
  {primaryCta && (
38
38
  <Button asChild size="lg">
39
39
  <a href={primaryCta.href}>{primaryCta.label}</a>
@@ -0,0 +1,50 @@
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+ import { useShipSite, useAlternateLinks } from '../context/ShipSiteProvider';
5
+
6
+ export function LocaleSwitcher() {
7
+ const { locale, locales } = useShipSite();
8
+ const alternatePathMap = useAlternateLinks();
9
+
10
+ if (locales.length <= 1) return null;
11
+
12
+ const pathname =
13
+ typeof window !== 'undefined' ? window.location.pathname : '';
14
+
15
+ // Find the alternatePathMap entry where the current locale's path matches
16
+ let alternates: Record<string, string> | undefined;
17
+ for (const entry of Object.values(alternatePathMap)) {
18
+ if (entry[locale] === pathname) {
19
+ alternates = entry;
20
+ break;
21
+ }
22
+ }
23
+
24
+ return (
25
+ <div className="flex items-center gap-1.5 text-xs">
26
+ {locales.map((loc, i) => {
27
+ const href = alternates?.[loc] ?? `/${loc}`;
28
+ const isActive = loc === locale;
29
+
30
+ return (
31
+ <React.Fragment key={loc}>
32
+ {i > 0 && <span className="text-muted-foreground">·</span>}
33
+ {isActive ? (
34
+ <span className="font-semibold text-foreground uppercase">
35
+ {loc}
36
+ </span>
37
+ ) : (
38
+ <a
39
+ href={href}
40
+ className="text-muted-foreground hover:text-foreground transition-colors uppercase"
41
+ >
42
+ {loc}
43
+ </a>
44
+ )}
45
+ </React.Fragment>
46
+ );
47
+ })}
48
+ </div>
49
+ );
50
+ }
package/src/ui/table.tsx CHANGED
@@ -4,8 +4,8 @@ import { cn } from "../lib/utils";
4
4
 
5
5
  function Table({ className, ...props }: React.ComponentProps<"table">) {
6
6
  return (
7
- <div data-slot="table-container" className="prose-container my-8 mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)] overflow-x-auto">
8
- <div className="rounded-xl border border-border bg-card shadow-sm">
7
+ <div data-slot="table-container" className="prose-container my-8 mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)]">
8
+ <div className="rounded-xl border border-border bg-card shadow-sm overflow-x-auto">
9
9
  <table
10
10
  data-slot="table"
11
11
  className={cn("w-full caption-bottom text-sm", className)}