@orangecheck/design 0.22.0 → 0.24.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.
package/dist/index.mjs CHANGED
@@ -2509,11 +2509,11 @@ var COL_CLASS = {
2509
2509
  4: "md:grid-cols-2 lg:grid-cols-4"
2510
2510
  };
2511
2511
  function StatGrid({ items, columns = 3, className = "" }) {
2512
- return /* @__PURE__ */ jsx("div", { className: `bg-border grid gap-px border ${COL_CLASS[columns]} ${className}`, children: items.map((it, i) => /* @__PURE__ */ jsx(Tile, { item: it }, `${it.label}-${i}`)) });
2512
+ return /* @__PURE__ */ jsx("div", { className: `oc-stat-grid bg-border grid gap-px border ${COL_CLASS[columns]} ${className}`, children: items.map((it, i) => /* @__PURE__ */ jsx(Tile, { item: it }, `${it.label}-${i}`)) });
2513
2513
  }
2514
2514
  function Tile({ item }) {
2515
2515
  const tone = item.tone ?? (item.accent ? "primary" : "default");
2516
- return /* @__PURE__ */ jsxs("div", { className: "bg-background p-5", children: [
2516
+ return /* @__PURE__ */ jsxs("div", { className: "oc-stat-tile bg-background p-5", children: [
2517
2517
  /* @__PURE__ */ jsx("div", { className: "text-muted-foreground/80 font-mono text-[10px] tracking-widest uppercase", children: item.label }),
2518
2518
  /* @__PURE__ */ jsx(
2519
2519
  "div",
@@ -2532,7 +2532,7 @@ function StatTile({ children, ...item }) {
2532
2532
  ] });
2533
2533
  }
2534
2534
  function StatCard({ pad = "default", className, ...stat }) {
2535
- return /* @__PURE__ */ jsx("div", { className: cn("border bg-card", pad === "sm" ? "p-3 md:p-4" : "p-5", className), children: /* @__PURE__ */ jsx(StatBlock, { ...stat }) });
2535
+ return /* @__PURE__ */ jsx("div", { className: cn("oc-stat-card border bg-card", pad === "sm" ? "p-3 md:p-4" : "p-5", className), children: /* @__PURE__ */ jsx(StatBlock, { ...stat }) });
2536
2536
  }
2537
2537
  var FRAME = {
2538
2538
  info: "border-primary/30 bg-primary/5",
@@ -2569,7 +2569,7 @@ function DefinitionList({ items, className }) {
2569
2569
  "dl",
2570
2570
  {
2571
2571
  className: cn(
2572
- "grid gap-x-5 gap-y-2 text-sm sm:grid-cols-[auto_1fr] sm:items-baseline",
2572
+ "oc-deflist grid gap-x-5 gap-y-2 text-sm sm:grid-cols-[auto_1fr] sm:items-baseline",
2573
2573
  className
2574
2574
  ),
2575
2575
  children: items.map((item, i) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
@@ -2585,7 +2585,7 @@ function DataRow({ children, meta, action, as, className }) {
2585
2585
  Tag,
2586
2586
  {
2587
2587
  className: cn(
2588
- "flex flex-col gap-1 py-3 sm:flex-row sm:items-baseline sm:justify-between sm:gap-4",
2588
+ "oc-data-row flex flex-col gap-1 py-3 sm:flex-row sm:items-baseline sm:justify-between sm:gap-4",
2589
2589
  className
2590
2590
  ),
2591
2591
  children: [
@@ -2598,6 +2598,19 @@ function DataRow({ children, meta, action, as, className }) {
2598
2598
  }
2599
2599
  );
2600
2600
  }
2601
+ function Panel({ label, title, action, flush, className, children }) {
2602
+ const hasHeader = label || title || action;
2603
+ return /* @__PURE__ */ jsxs("section", { className: cn("oc-panel py-8", !flush && "border-t", className), children: [
2604
+ hasHeader && /* @__PURE__ */ jsxs("div", { className: "mb-4 flex items-start justify-between gap-3", children: [
2605
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
2606
+ label && /* @__PURE__ */ jsx("div", { className: "label-mono text-primary mb-1", children: label }),
2607
+ title && /* @__PURE__ */ jsx("h2", { className: "font-display text-lg font-bold tracking-tight", children: title })
2608
+ ] }),
2609
+ action && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: action })
2610
+ ] }),
2611
+ children
2612
+ ] });
2613
+ }
2601
2614
  function TwoToneHeading({
2602
2615
  lead,
2603
2616
  muted,
@@ -4837,7 +4850,131 @@ function OcAppBar({
4837
4850
  }
4838
4851
  );
4839
4852
  }
4853
+ var GRID = {
4854
+ 1: "md:grid-cols-[1.2fr_1fr]",
4855
+ 2: "md:grid-cols-[1.2fr_1fr_1fr]",
4856
+ 3: "md:grid-cols-[1.2fr_1fr_1fr_1fr]",
4857
+ 4: "md:grid-cols-[1.2fr_1fr_1fr_1fr_1fr]",
4858
+ 5: "md:grid-cols-[1.2fr_1fr_1fr_1fr_1fr_1fr]"
4859
+ };
4860
+ var LINK_CLS = "text-muted-foreground hover:text-foreground font-mono text-xs tracking-wide lowercase transition-colors";
4861
+ function FooterLinkItem({ link }) {
4862
+ if (link.external) {
4863
+ return /* @__PURE__ */ jsxs("a", { href: link.href, target: "_blank", rel: "noreferrer", className: LINK_CLS, children: [
4864
+ "> ",
4865
+ link.label,
4866
+ " \u2197"
4867
+ ] });
4868
+ }
4869
+ return /* @__PURE__ */ jsxs(Link6, { href: link.href, className: LINK_CLS, children: [
4870
+ "> ",
4871
+ link.label
4872
+ ] });
4873
+ }
4874
+ function FooterColumnView({ column }) {
4875
+ return /* @__PURE__ */ jsxs("div", { children: [
4876
+ /* @__PURE__ */ jsx("div", { className: "label-mono text-primary mb-3", children: column.label }),
4877
+ /* @__PURE__ */ jsx("ul", { className: "space-y-2", children: column.links.map((link) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(FooterLinkItem, { link }) }, `${column.label}:${link.href}`)) })
4878
+ ] });
4879
+ }
4880
+ function familyColumn(category, label) {
4881
+ return {
4882
+ label,
4883
+ links: FAMILY_PROPERTIES.filter((p) => p.category === category).map(
4884
+ (p) => ({
4885
+ href: p.origin,
4886
+ label: p.label,
4887
+ external: true
4888
+ })
4889
+ )
4890
+ };
4891
+ }
4892
+ function OcFamilyFooter({
4893
+ brand,
4894
+ columns = [],
4895
+ family,
4896
+ legalBase = "https://ochk.io",
4897
+ className
4898
+ }) {
4899
+ const familyCols = [];
4900
+ if (family === "products" || family === "both") {
4901
+ familyCols.push(familyColumn("product", "\xA7 products"));
4902
+ }
4903
+ if (family === "protocols" || family === "both") {
4904
+ familyCols.push(familyColumn("protocol", "\xA7 protocols"));
4905
+ }
4906
+ const allColumns = [...familyCols, ...columns];
4907
+ const grid = GRID[allColumns.length] ?? GRID[3];
4908
+ const year = (/* @__PURE__ */ new Date()).getFullYear();
4909
+ const legal = (path) => `${legalBase}${path}`;
4910
+ return /* @__PURE__ */ jsx("footer", { className: cn("border-t", className), children: /* @__PURE__ */ jsxs("div", { className: "container py-10 sm:py-12 md:py-16", children: [
4911
+ /* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 sm:grid-cols-2 sm:gap-10", grid), children: [
4912
+ /* @__PURE__ */ jsxs("div", { children: [
4913
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
4914
+ brand.mark,
4915
+ /* @__PURE__ */ jsx("span", { className: "font-display text-sm font-bold tracking-tight", children: brand.wordmark })
4916
+ ] }),
4917
+ /* @__PURE__ */ jsx("div", { className: "text-muted-foreground mt-3 max-w-[34ch] text-sm leading-relaxed", children: brand.tagline }),
4918
+ brand.meta && /* @__PURE__ */ jsx("div", { className: "mt-4", children: brand.meta })
4919
+ ] }),
4920
+ allColumns.map((column) => /* @__PURE__ */ jsx(FooterColumnView, { column }, column.label))
4921
+ ] }),
4922
+ /* @__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: [
4923
+ /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
4924
+ "\xA9 ",
4925
+ year,
4926
+ " orangecheck \xB7 mit + cc-by-4.0"
4927
+ ] }),
4928
+ /* @__PURE__ */ jsxs("div", { className: "text-muted-foreground/80 flex flex-wrap items-center gap-x-4 gap-y-1", children: [
4929
+ /* @__PURE__ */ jsx(
4930
+ "a",
4931
+ {
4932
+ href: legal("/privacy"),
4933
+ className: "hover:text-foreground transition-colors",
4934
+ children: "privacy"
4935
+ }
4936
+ ),
4937
+ /* @__PURE__ */ jsx(
4938
+ "a",
4939
+ {
4940
+ href: legal("/terms"),
4941
+ className: "hover:text-foreground transition-colors",
4942
+ children: "terms"
4943
+ }
4944
+ ),
4945
+ /* @__PURE__ */ jsx(
4946
+ "a",
4947
+ {
4948
+ href: legal("/security"),
4949
+ className: "hover:text-foreground transition-colors",
4950
+ children: "security"
4951
+ }
4952
+ ),
4953
+ /* @__PURE__ */ jsx(
4954
+ "a",
4955
+ {
4956
+ href: legal("/trademark"),
4957
+ className: "hover:text-foreground transition-colors",
4958
+ children: "trademarks"
4959
+ }
4960
+ ),
4961
+ /* @__PURE__ */ jsx(
4962
+ "a",
4963
+ {
4964
+ href: legal("/contact"),
4965
+ className: "hover:text-foreground transition-colors",
4966
+ children: "contact"
4967
+ }
4968
+ )
4969
+ ] }),
4970
+ /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground inline-flex items-center gap-1.5", children: [
4971
+ /* @__PURE__ */ jsx("span", { className: "text-primary text-[13px] leading-none", children: "\u20BF" }),
4972
+ /* @__PURE__ */ jsx("span", { children: "built with bitcoin" })
4973
+ ] })
4974
+ ] })
4975
+ ] }) });
4976
+ }
4840
4977
 
4841
- export { AccentList, AccentNote, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, AlertWithAction, AlertWithCountdown, AppShell, AppearanceControls, Badge, Bar, BitcoinAddress, BrandBand, Button, Callout, Card, CheckList, Checkbox, ComparisonTable, ConfirmHost, CopyButton, DEFAULT_OC_THEME, DataRow, DefinitionList, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, EcosystemSwitcher, EmailCapture, EmptyState, ErrorBoundary, FAMILY_PROPERTIES, Faq, FeatureCard, HelpHint, IconBadge, Input, Label, LayoutSubHeader, MarketingHeading, Modal, NumberedStep, OC_DEFAULT_ACCENT, OC_SKIN_COOKIE, OC_THEMES, OcAccountMenu, OcAccountMenuView, OcAppBar, OcAppearanceMenu, OcAurora, OcDashboardHub, OcDashboardShell, OcLogoDropdown, OcPrimaryNav, OcThemeBridge, OcThemePicker, OcThemeProvider, Pagination, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PromptHost, QrCode, REFERENCE_BTC_USD, RadioGroup, RadioGroupItem, SITE_STATE_LABEL, SatsAmount, Section, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Sparkline, StatBlock, StatCard, StatGrid, StatTile, StatusPill, StepList, Surface, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeToggle, ThemeToggleLink, Toaster, Tooltip, TwoToneHeading, VerifiedChip, Working, WorkingPanel, accentFor, asOf, badgeVariants, buttonVariants, cn, confirm, explorerUrl, findFamilyProperty, formatSats, formatSatsCompact, getOcThemeInitScript, iconBadgeVariants, isKnownTheme, makeStatusPill, priceBoth, prompt, relativeTime, resolveTheme, satsToUsd, shortenAddress, surfaceVariants, usdToSats, useOcSkin, useSpotPrice };
4978
+ export { AccentList, AccentNote, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, AlertWithAction, AlertWithCountdown, AppShell, AppearanceControls, Badge, Bar, BitcoinAddress, BrandBand, Button, Callout, Card, CheckList, Checkbox, ComparisonTable, ConfirmHost, CopyButton, DEFAULT_OC_THEME, DataRow, DefinitionList, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, EcosystemSwitcher, EmailCapture, EmptyState, ErrorBoundary, FAMILY_PROPERTIES, Faq, FeatureCard, HelpHint, IconBadge, Input, Label, LayoutSubHeader, MarketingHeading, Modal, NumberedStep, OC_DEFAULT_ACCENT, OC_SKIN_COOKIE, OC_THEMES, OcAccountMenu, OcAccountMenuView, OcAppBar, OcAppearanceMenu, OcAurora, OcDashboardHub, OcDashboardShell, OcFamilyFooter, OcLogoDropdown, OcPrimaryNav, OcThemeBridge, OcThemePicker, OcThemeProvider, Pagination, Panel, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PromptHost, QrCode, REFERENCE_BTC_USD, RadioGroup, RadioGroupItem, SITE_STATE_LABEL, SatsAmount, Section, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Sparkline, StatBlock, StatCard, StatGrid, StatTile, StatusPill, StepList, Surface, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeToggle, ThemeToggleLink, Toaster, Tooltip, TwoToneHeading, VerifiedChip, Working, WorkingPanel, accentFor, asOf, badgeVariants, buttonVariants, cn, confirm, explorerUrl, findFamilyProperty, formatSats, formatSatsCompact, getOcThemeInitScript, iconBadgeVariants, isKnownTheme, makeStatusPill, priceBoth, prompt, relativeTime, resolveTheme, satsToUsd, shortenAddress, surfaceVariants, usdToSats, useOcSkin, useSpotPrice };
4842
4979
  //# sourceMappingURL=index.mjs.map
4843
4980
  //# sourceMappingURL=index.mjs.map