@orangecheck/design 0.24.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as Popover from '@radix-ui/react-popover';
2
- import { ChevronDown, Plus, HelpCircle, X, Check, Boxes, CornerDownLeft, Loader2, Copy, Menu, Sun, Moon, Monitor } from 'lucide-react';
2
+ import { ChevronDown, Plus, HelpCircle, X, Check, Boxes, CornerDownLeft, Loader2, Copy, Menu, Sun, Moon, Monitor, Waves, Pause } from 'lucide-react';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
@@ -1675,6 +1675,10 @@ function useOcSkin() {
1675
1675
  }
1676
1676
  return ctx;
1677
1677
  }
1678
+ function useOcMotion() {
1679
+ const { motion, setMotion } = useOcSkin();
1680
+ return { motion, setMotion };
1681
+ }
1678
1682
  var MODES = [
1679
1683
  { id: "light", label: "light", Icon: Sun },
1680
1684
  { id: "dark", label: "dark", Icon: Moon },
@@ -1682,10 +1686,12 @@ var MODES = [
1682
1686
  ];
1683
1687
  function AppearanceControls({ className }) {
1684
1688
  const { skin, setSkin, themes } = useOcSkin();
1689
+ const { motion, setMotion } = useOcMotion();
1685
1690
  const { theme, setTheme } = useTheme();
1686
1691
  const [mounted, setMounted] = useState(false);
1687
1692
  useEffect(() => setMounted(true), []);
1688
1693
  const activeMode = mounted ? theme ?? "system" : null;
1694
+ const activeMotion = mounted ? motion : null;
1689
1695
  return /* @__PURE__ */ jsxs("div", { className, children: [
1690
1696
  /* @__PURE__ */ jsx("div", { className: "label-mono text-muted-foreground px-3 pt-3 pb-2", children: "mode" }),
1691
1697
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-1 px-2 pb-2", children: MODES.map(({ id, label, Icon: Icon2 }) => {
@@ -1732,6 +1738,32 @@ function AppearanceControls({ className }) {
1732
1738
  ]
1733
1739
  }
1734
1740
  ) }, t.id);
1741
+ }) }),
1742
+ /* @__PURE__ */ jsx("div", { className: "label-mono text-muted-foreground border-t px-3 pt-3 pb-2", children: "ambient motion" }),
1743
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-1 px-2 pb-3", children: [
1744
+ { id: "on", label: "on", Icon: Waves },
1745
+ { id: "off", label: "off", Icon: Pause }
1746
+ ].map(({ id, label, Icon: Icon2 }) => {
1747
+ const active = activeMotion === id;
1748
+ return /* @__PURE__ */ jsxs(
1749
+ "button",
1750
+ {
1751
+ type: "button",
1752
+ role: "menuitemradio",
1753
+ "aria-checked": active,
1754
+ "aria-label": id === "off" ? "pause ambient motion" : "ambient motion on",
1755
+ onClick: () => setMotion(id),
1756
+ className: cn(
1757
+ "flex flex-col items-center gap-1 rounded-md border py-2 text-[11px] transition-colors",
1758
+ active ? "border-primary text-foreground bg-accent" : "border-transparent text-muted-foreground hover:bg-accent hover:text-accent-foreground"
1759
+ ),
1760
+ children: [
1761
+ /* @__PURE__ */ jsx(Icon2, { className: "size-4", "aria-hidden": true }),
1762
+ label
1763
+ ]
1764
+ },
1765
+ id
1766
+ );
1735
1767
  }) })
1736
1768
  ] });
1737
1769
  }
@@ -3004,6 +3036,9 @@ function OcFamilyFooter({
3004
3036
  columns = [],
3005
3037
  family,
3006
3038
  legalBase = "https://ochk.io",
3039
+ legalCopyright,
3040
+ legalLinks,
3041
+ builtWith,
3007
3042
  className
3008
3043
  }) {
3009
3044
  const familyCols = [];
@@ -3017,6 +3052,13 @@ function OcFamilyFooter({
3017
3052
  const grid = GRID[allColumns.length] ?? GRID[3];
3018
3053
  const year = (/* @__PURE__ */ new Date()).getFullYear();
3019
3054
  const legal = (path) => `${legalBase}${path}`;
3055
+ const links = legalLinks ?? [
3056
+ { href: legal("/privacy"), label: "privacy" },
3057
+ { href: legal("/terms"), label: "terms" },
3058
+ { href: legal("/security"), label: "security" },
3059
+ { href: legal("/trademark"), label: "trademarks" },
3060
+ { href: legal("/contact"), label: "contact" }
3061
+ ];
3020
3062
  return /* @__PURE__ */ jsx("footer", { className: cn("border-t", className), children: /* @__PURE__ */ jsxs("div", { className: "container py-10 sm:py-12 md:py-16", children: [
3021
3063
  /* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 sm:grid-cols-2 sm:gap-10", grid), children: [
3022
3064
  /* @__PURE__ */ jsxs("div", { children: [
@@ -3030,56 +3072,24 @@ function OcFamilyFooter({
3030
3072
  allColumns.map((column) => /* @__PURE__ */ jsx(FooterColumnView, { column }, column.label))
3031
3073
  ] }),
3032
3074
  /* @__PURE__ */ jsxs("div", { className: "mt-10 flex flex-col items-start justify-between gap-3 border-t pt-6 font-mono text-[11px] tracking-widest uppercase sm:flex-row sm:items-center", children: [
3033
- /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
3075
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: legalCopyright ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
3034
3076
  "\xA9 ",
3035
3077
  year,
3036
3078
  " orangecheck \xB7 mit + cc-by-4.0"
3037
- ] }),
3038
- /* @__PURE__ */ jsxs("div", { className: "text-muted-foreground/80 flex flex-wrap items-center gap-x-4 gap-y-1", children: [
3039
- /* @__PURE__ */ jsx(
3040
- "a",
3041
- {
3042
- href: legal("/privacy"),
3043
- className: "hover:text-foreground transition-colors",
3044
- children: "privacy"
3045
- }
3046
- ),
3047
- /* @__PURE__ */ jsx(
3048
- "a",
3049
- {
3050
- href: legal("/terms"),
3051
- className: "hover:text-foreground transition-colors",
3052
- children: "terms"
3053
- }
3054
- ),
3055
- /* @__PURE__ */ jsx(
3056
- "a",
3057
- {
3058
- href: legal("/security"),
3059
- className: "hover:text-foreground transition-colors",
3060
- children: "security"
3061
- }
3062
- ),
3063
- /* @__PURE__ */ jsx(
3064
- "a",
3065
- {
3066
- href: legal("/trademark"),
3067
- className: "hover:text-foreground transition-colors",
3068
- children: "trademarks"
3069
- }
3070
- ),
3071
- /* @__PURE__ */ jsx(
3072
- "a",
3073
- {
3074
- href: legal("/contact"),
3075
- className: "hover:text-foreground transition-colors",
3076
- children: "contact"
3077
- }
3078
- )
3079
- ] }),
3079
+ ] }) }),
3080
+ /* @__PURE__ */ jsx("div", { className: "text-muted-foreground/80 flex flex-wrap items-center gap-x-4 gap-y-1", children: links.map((link) => /* @__PURE__ */ jsx(
3081
+ "a",
3082
+ {
3083
+ href: link.href,
3084
+ ...link.external ? { target: "_blank", rel: "noreferrer" } : {},
3085
+ className: "hover:text-foreground transition-colors",
3086
+ children: link.label
3087
+ },
3088
+ link.label
3089
+ )) }),
3080
3090
  /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground inline-flex items-center gap-1.5", children: [
3081
3091
  /* @__PURE__ */ jsx("span", { className: "text-primary text-[13px] leading-none", children: "\u20BF" }),
3082
- /* @__PURE__ */ jsx("span", { children: "built with bitcoin" })
3092
+ /* @__PURE__ */ jsx("span", { children: builtWith ?? "built with bitcoin" })
3083
3093
  ] })
3084
3094
  ] })
3085
3095
  ] }) });