@orangecheck/app-design 0.5.3 → 0.5.4

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.js CHANGED
@@ -240,7 +240,7 @@ var buttonVariants = classVarianceAuthority.cva(
240
240
  brand: "bg-brand text-brand-foreground hover:bg-oca-orange-deep",
241
241
  ghost: "text-foreground hover:bg-accent",
242
242
  danger: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
243
- link: "h-auto rounded-none px-0 text-foreground underline decoration-border underline-offset-4 hover:decoration-foreground",
243
+ link: "h-auto rounded-none px-0 text-foreground underline decoration-foreground/35 underline-offset-4 hover:decoration-foreground",
244
244
  onInk: "bg-white text-oca-ink hover:bg-white/90",
245
245
  onInkOutline: "border border-white/20 text-white hover:bg-white/10"
246
246
  },
@@ -291,7 +291,8 @@ var badgeVariants = classVarianceAuthority.cva(
291
291
  // the brand accent, information is neutral.
292
292
  warning: "border-transparent bg-[color-mix(in_oklab,var(--oca-orange)_12%,var(--card))] text-oca-accent-ink",
293
293
  info: "border-border bg-card text-foreground",
294
- ink: "border-transparent bg-oca-ink text-oca-ink-foreground",
294
+ // Inverted in dark mode, where ink would sit on a card of nearly its own colour.
295
+ ink: "border-transparent bg-oca-ink text-oca-ink-foreground dark:bg-foreground dark:text-background",
295
296
  onInk: "border-white/15 bg-white/5 text-white/90"
296
297
  }
297
298
  },
@@ -1255,7 +1256,7 @@ function Prose({ className, ...props }) {
1255
1256
  "[&_h2]:oca-display-3 [&_h2]:mb-4 [&_h2]:mt-14 [&_h2]:scroll-mt-24 [&_h2]:text-foreground",
1256
1257
  "[&_h3]:oca-title [&_h3]:mb-3 [&_h3]:mt-10 [&_h3]:text-foreground",
1257
1258
  "[&_p]:my-4 [&_strong]:font-medium [&_strong]:text-foreground",
1258
- "[&_a]:text-foreground [&_a]:underline [&_a]:decoration-border [&_a]:underline-offset-4 hover:[&_a]:decoration-foreground",
1259
+ "[&_a]:text-foreground [&_a]:underline [&_a]:decoration-foreground/35 [&_a]:underline-offset-4 hover:[&_a]:decoration-foreground",
1259
1260
  "[&_ul]:my-4 [&_ul]:list-disc [&_ul]:pl-5 [&_li]:my-1.5 [&_code]:text-foreground",
1260
1261
  className
1261
1262
  ),
@@ -1602,7 +1603,16 @@ function StatCard({ label, value, hint, className }) {
1602
1603
  ),
1603
1604
  children: [
1604
1605
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[0.875rem] leading-snug text-muted-foreground", children: label }),
1605
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "self-end break-words oca-tabular text-[1.5rem] leading-tight tracking-[-0.02em] md:text-[1.75rem]", children: value }),
1606
+ /* @__PURE__ */ jsxRuntime.jsx(
1607
+ "span",
1608
+ {
1609
+ className: cn(
1610
+ "break-words oca-tabular text-[1.5rem] leading-tight tracking-[-0.02em] md:text-[1.75rem]",
1611
+ inGrid && "self-end"
1612
+ ),
1613
+ children: value
1614
+ }
1615
+ ),
1606
1616
  hint ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[0.8125rem] leading-snug text-muted-foreground", children: hint }) : inGrid ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true }) : null
1607
1617
  ]
1608
1618
  }
@@ -1912,7 +1922,7 @@ function HashChip({
1912
1922
  const shown = middle(value, head, tail);
1913
1923
  const text = /* @__PURE__ */ jsxRuntime.jsx("span", { title: value, className: "font-mono text-[0.875rem]", children: shown });
1914
1924
  return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("inline-flex max-w-full items-center gap-1", className), children: [
1915
- href ? /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: "underline decoration-border underline-offset-4 hover:decoration-foreground", children: text }) : text,
1925
+ href ? /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: "underline decoration-foreground/35 underline-offset-4 hover:decoration-foreground", children: text }) : text,
1916
1926
  copy ? /* @__PURE__ */ jsxRuntime.jsx(CopyButton, { value, label: "Copy full value" }) : null
1917
1927
  ] });
1918
1928
  }
@@ -2029,7 +2039,7 @@ function CodeBlock({
2029
2039
  {
2030
2040
  className: cn(folded && "overflow-hidden"),
2031
2041
  style: folded ? { maxHeight: `calc(${maxLines} * 1.625em + 2.5rem)` } : void 0,
2032
- children: /* @__PURE__ */ jsxRuntime.jsx(ScrollFade, { fade: "var(--oca-code-surface)", children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "w-max min-w-full p-5 font-mono text-[0.875rem] leading-[1.625] text-oca-ink-muted", children: /* @__PURE__ */ jsxRuntime.jsx("code", { children: code }) }) })
2042
+ children: /* @__PURE__ */ jsxRuntime.jsx(ScrollFade, { fade: "var(--oca-code-surface)", children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "w-max min-w-full p-5 font-mono text-[0.875rem] leading-[1.625] text-oca-ink-muted [font-variant-ligatures:none]", children: /* @__PURE__ */ jsxRuntime.jsx("code", { children: code }) }) })
2033
2043
  }
2034
2044
  ),
2035
2045
  foldable ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -2211,14 +2221,24 @@ function SatsFigure({
2211
2221
  label,
2212
2222
  value,
2213
2223
  hint,
2224
+ size = "md",
2214
2225
  className
2215
2226
  }) {
2216
2227
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-1.5", className), children: [
2217
2228
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[0.9375rem] text-muted-foreground", children: label }),
2218
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "oca-display-3 oca-tabular", children: [
2219
- /* @__PURE__ */ jsxRuntime.jsx(Sats, { value, unit: "none" }),
2220
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-[0.5em] tracking-normal text-muted-foreground", children: "sats" })
2221
- ] }),
2229
+ /* @__PURE__ */ jsxRuntime.jsxs(
2230
+ "span",
2231
+ {
2232
+ className: cn(
2233
+ "oca-tabular",
2234
+ size === "lg" ? "text-[clamp(3rem,2.2rem+3vw,4.75rem)] leading-[0.95] tracking-[-0.045em] [font-family:var(--oc-font-display)]" : "oca-display-3"
2235
+ ),
2236
+ children: [
2237
+ /* @__PURE__ */ jsxRuntime.jsx(Sats, { value, unit: "none" }),
2238
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-[0.5em] tracking-normal text-muted-foreground", children: "sats" })
2239
+ ]
2240
+ }
2241
+ ),
2222
2242
  hint ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[0.875rem] text-muted-foreground", children: hint }) : null
2223
2243
  ] });
2224
2244
  }
@@ -2227,7 +2247,8 @@ function PhoneFrame({ className, style, children }) {
2227
2247
  "div",
2228
2248
  {
2229
2249
  className: cn(
2230
- "relative w-[17.5rem] shrink-0 rounded-[2.9rem] bg-[#0b0b0c] p-[0.6rem]",
2250
+ // A lighter bezel in dark mode, or the phone dissolves into the page.
2251
+ "relative w-[17.5rem] shrink-0 rounded-[2.9rem] bg-[#0b0b0c] p-[0.6rem] dark:bg-[#2a2a2d]",
2231
2252
  "shadow-[0_50px_100px_-40px_rgb(10_10_10/0.55),0_0_0_1px_rgb(255_255_255/0.06)_inset]",
2232
2253
  className
2233
2254
  ),
@@ -2438,23 +2459,33 @@ function SiteFooter({
2438
2459
  /* @__PURE__ */ jsxRuntime.jsx(Lockup, { size: 26 }),
2439
2460
  fineprint ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "max-w-xs text-[0.9375rem] leading-relaxed text-muted-foreground", children: fineprint }) : null
2440
2461
  ] }),
2441
- columns.map((col) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [
2442
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-[0.875rem] font-medium", children: col.heading }),
2443
- col.links.map((l) => /* @__PURE__ */ jsxRuntime.jsx(
2444
- NavLink,
2462
+ columns.map((col, i) => {
2463
+ const spans = columns.length % 2 === 1 && i === columns.length - 1;
2464
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2465
+ "div",
2445
2466
  {
2446
- item: l,
2447
- className: "-mx-3 py-2.5 text-[0.9375rem] md:py-1.5"
2467
+ className: cn("flex min-w-0 flex-col gap-1", spans && "col-span-2 md:col-span-1"),
2468
+ children: [
2469
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-[0.875rem] font-medium", children: col.heading }),
2470
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-1", spans && "grid grid-cols-2 gap-x-6 md:flex md:flex-col"), children: col.links.map((l) => /* @__PURE__ */ jsxRuntime.jsx(
2471
+ NavLink,
2472
+ {
2473
+ item: l,
2474
+ className: "-mx-3 py-2.5 text-[0.9375rem] md:py-1.5"
2475
+ },
2476
+ l.href
2477
+ )) })
2478
+ ]
2448
2479
  },
2449
- l.href
2450
- ))
2451
- ] }, col.heading))
2480
+ col.heading
2481
+ );
2482
+ })
2452
2483
  ] }),
2453
- signature ? /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": true, className: "oca-container select-none overflow-hidden pb-6 md:pb-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-[0.18em] text-[clamp(3rem,11.5vw,10rem)] leading-[0.78] tracking-[-0.065em] [font-family:var(--oc-font-display)]", children: [
2484
+ signature ? /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": true, className: "oca-container select-none overflow-hidden pb-8 md:pb-12", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-[0.18em] text-[clamp(3rem,11.5vw,10rem)] leading-[0.78] tracking-[-0.065em] [font-family:var(--oc-font-display)]", children: [
2454
2485
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-[0.06em] inline-block w-[1.1em] shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(Mark, { className: "block h-auto w-full" }) }),
2455
2486
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "orangecheck" })
2456
2487
  ] }) }) : null,
2457
- meta ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "oca-container border-t border-border py-6 text-[0.875rem] text-muted-foreground", children: meta }) : null
2488
+ meta ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "oca-container", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border py-6 text-[0.875rem] text-muted-foreground", children: meta }) }) : null
2458
2489
  ] });
2459
2490
  }
2460
2491
  function SideNav({ groups, onNavigate }) {