@orangecheck/app-design 0.5.2 → 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.mjs CHANGED
@@ -206,7 +206,7 @@ var buttonVariants = cva(
206
206
  brand: "bg-brand text-brand-foreground hover:bg-oca-orange-deep",
207
207
  ghost: "text-foreground hover:bg-accent",
208
208
  danger: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
209
- link: "h-auto rounded-none px-0 text-foreground underline decoration-border underline-offset-4 hover:decoration-foreground",
209
+ link: "h-auto rounded-none px-0 text-foreground underline decoration-foreground/35 underline-offset-4 hover:decoration-foreground",
210
210
  onInk: "bg-white text-oca-ink hover:bg-white/90",
211
211
  onInkOutline: "border border-white/20 text-white hover:bg-white/10"
212
212
  },
@@ -257,7 +257,8 @@ var badgeVariants = cva(
257
257
  // the brand accent, information is neutral.
258
258
  warning: "border-transparent bg-[color-mix(in_oklab,var(--oca-orange)_12%,var(--card))] text-oca-accent-ink",
259
259
  info: "border-border bg-card text-foreground",
260
- ink: "border-transparent bg-oca-ink text-oca-ink-foreground",
260
+ // Inverted in dark mode, where ink would sit on a card of nearly its own colour.
261
+ ink: "border-transparent bg-oca-ink text-oca-ink-foreground dark:bg-foreground dark:text-background",
261
262
  onInk: "border-white/15 bg-white/5 text-white/90"
262
263
  }
263
264
  },
@@ -1221,7 +1222,7 @@ function Prose({ className, ...props }) {
1221
1222
  "[&_h2]:oca-display-3 [&_h2]:mb-4 [&_h2]:mt-14 [&_h2]:scroll-mt-24 [&_h2]:text-foreground",
1222
1223
  "[&_h3]:oca-title [&_h3]:mb-3 [&_h3]:mt-10 [&_h3]:text-foreground",
1223
1224
  "[&_p]:my-4 [&_strong]:font-medium [&_strong]:text-foreground",
1224
- "[&_a]:text-foreground [&_a]:underline [&_a]:decoration-border [&_a]:underline-offset-4 hover:[&_a]:decoration-foreground",
1225
+ "[&_a]:text-foreground [&_a]:underline [&_a]:decoration-foreground/35 [&_a]:underline-offset-4 hover:[&_a]:decoration-foreground",
1225
1226
  "[&_ul]:my-4 [&_ul]:list-disc [&_ul]:pl-5 [&_li]:my-1.5 [&_code]:text-foreground",
1226
1227
  className
1227
1228
  ),
@@ -1568,7 +1569,16 @@ function StatCard({ label, value, hint, className }) {
1568
1569
  ),
1569
1570
  children: [
1570
1571
  /* @__PURE__ */ jsx("span", { className: "text-[0.875rem] leading-snug text-muted-foreground", children: label }),
1571
- /* @__PURE__ */ jsx("span", { className: "self-end break-words oca-tabular text-[1.5rem] leading-tight tracking-[-0.02em] md:text-[1.75rem]", children: value }),
1572
+ /* @__PURE__ */ jsx(
1573
+ "span",
1574
+ {
1575
+ className: cn(
1576
+ "break-words oca-tabular text-[1.5rem] leading-tight tracking-[-0.02em] md:text-[1.75rem]",
1577
+ inGrid && "self-end"
1578
+ ),
1579
+ children: value
1580
+ }
1581
+ ),
1572
1582
  hint ? /* @__PURE__ */ jsx("span", { className: "text-[0.8125rem] leading-snug text-muted-foreground", children: hint }) : inGrid ? /* @__PURE__ */ jsx("span", { "aria-hidden": true }) : null
1573
1583
  ]
1574
1584
  }
@@ -1878,7 +1888,7 @@ function HashChip({
1878
1888
  const shown = middle(value, head, tail);
1879
1889
  const text = /* @__PURE__ */ jsx("span", { title: value, className: "font-mono text-[0.875rem]", children: shown });
1880
1890
  return /* @__PURE__ */ jsxs("span", { className: cn("inline-flex max-w-full items-center gap-1", className), children: [
1881
- href ? /* @__PURE__ */ jsx("a", { href, className: "underline decoration-border underline-offset-4 hover:decoration-foreground", children: text }) : text,
1891
+ href ? /* @__PURE__ */ jsx("a", { href, className: "underline decoration-foreground/35 underline-offset-4 hover:decoration-foreground", children: text }) : text,
1882
1892
  copy ? /* @__PURE__ */ jsx(CopyButton, { value, label: "Copy full value" }) : null
1883
1893
  ] });
1884
1894
  }
@@ -1995,7 +2005,7 @@ function CodeBlock({
1995
2005
  {
1996
2006
  className: cn(folded && "overflow-hidden"),
1997
2007
  style: folded ? { maxHeight: `calc(${maxLines} * 1.625em + 2.5rem)` } : void 0,
1998
- children: /* @__PURE__ */ jsx(ScrollFade, { fade: "var(--oca-code-surface)", children: /* @__PURE__ */ jsx("pre", { className: "w-max min-w-full p-5 font-mono text-[0.875rem] leading-[1.625] text-oca-ink-muted", children: /* @__PURE__ */ jsx("code", { children: code }) }) })
2008
+ children: /* @__PURE__ */ jsx(ScrollFade, { fade: "var(--oca-code-surface)", children: /* @__PURE__ */ 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__ */ jsx("code", { children: code }) }) })
1999
2009
  }
2000
2010
  ),
2001
2011
  foldable ? /* @__PURE__ */ jsx(
@@ -2177,14 +2187,24 @@ function SatsFigure({
2177
2187
  label,
2178
2188
  value,
2179
2189
  hint,
2190
+ size = "md",
2180
2191
  className
2181
2192
  }) {
2182
2193
  return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-1.5", className), children: [
2183
2194
  /* @__PURE__ */ jsx("span", { className: "text-[0.9375rem] text-muted-foreground", children: label }),
2184
- /* @__PURE__ */ jsxs("span", { className: "oca-display-3 oca-tabular", children: [
2185
- /* @__PURE__ */ jsx(Sats, { value, unit: "none" }),
2186
- /* @__PURE__ */ jsx("span", { className: "ml-2 text-[0.5em] tracking-normal text-muted-foreground", children: "sats" })
2187
- ] }),
2195
+ /* @__PURE__ */ jsxs(
2196
+ "span",
2197
+ {
2198
+ className: cn(
2199
+ "oca-tabular",
2200
+ 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"
2201
+ ),
2202
+ children: [
2203
+ /* @__PURE__ */ jsx(Sats, { value, unit: "none" }),
2204
+ /* @__PURE__ */ jsx("span", { className: "ml-2 text-[0.5em] tracking-normal text-muted-foreground", children: "sats" })
2205
+ ]
2206
+ }
2207
+ ),
2188
2208
  hint ? /* @__PURE__ */ jsx("span", { className: "text-[0.875rem] text-muted-foreground", children: hint }) : null
2189
2209
  ] });
2190
2210
  }
@@ -2193,7 +2213,8 @@ function PhoneFrame({ className, style, children }) {
2193
2213
  "div",
2194
2214
  {
2195
2215
  className: cn(
2196
- "relative w-[17.5rem] shrink-0 rounded-[2.9rem] bg-[#0b0b0c] p-[0.6rem]",
2216
+ // A lighter bezel in dark mode, or the phone dissolves into the page.
2217
+ "relative w-[17.5rem] shrink-0 rounded-[2.9rem] bg-[#0b0b0c] p-[0.6rem] dark:bg-[#2a2a2d]",
2197
2218
  "shadow-[0_50px_100px_-40px_rgb(10_10_10/0.55),0_0_0_1px_rgb(255_255_255/0.06)_inset]",
2198
2219
  className
2199
2220
  ),
@@ -2269,8 +2290,9 @@ var GROUNDS = [
2269
2290
  dot: "rgb(10 10 10 / 0.22)"
2270
2291
  },
2271
2292
  {
2272
- className: "text-white ring-1 ring-inset ring-white/10",
2273
- background: "linear-gradient(145deg, #2a2a2a, #0a0a0a)",
2293
+ // Lifted at the top edge so the tile keeps its shape on a dark card.
2294
+ className: "text-white ring-1 ring-inset ring-white/15",
2295
+ background: "linear-gradient(145deg, #3d3d3d, #0d0d0d 70%)",
2274
2296
  dot: "rgb(255 255 255 / 0.16)"
2275
2297
  },
2276
2298
  {
@@ -2403,23 +2425,33 @@ function SiteFooter({
2403
2425
  /* @__PURE__ */ jsx(Lockup, { size: 26 }),
2404
2426
  fineprint ? /* @__PURE__ */ jsx("p", { className: "max-w-xs text-[0.9375rem] leading-relaxed text-muted-foreground", children: fineprint }) : null
2405
2427
  ] }),
2406
- columns.map((col) => /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [
2407
- /* @__PURE__ */ jsx("p", { className: "mb-2 text-[0.875rem] font-medium", children: col.heading }),
2408
- col.links.map((l) => /* @__PURE__ */ jsx(
2409
- NavLink,
2428
+ columns.map((col, i) => {
2429
+ const spans = columns.length % 2 === 1 && i === columns.length - 1;
2430
+ return /* @__PURE__ */ jsxs(
2431
+ "div",
2410
2432
  {
2411
- item: l,
2412
- className: "-mx-3 py-2.5 text-[0.9375rem] md:py-1.5"
2433
+ className: cn("flex min-w-0 flex-col gap-1", spans && "col-span-2 md:col-span-1"),
2434
+ children: [
2435
+ /* @__PURE__ */ jsx("p", { className: "mb-2 text-[0.875rem] font-medium", children: col.heading }),
2436
+ /* @__PURE__ */ 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__ */ jsx(
2437
+ NavLink,
2438
+ {
2439
+ item: l,
2440
+ className: "-mx-3 py-2.5 text-[0.9375rem] md:py-1.5"
2441
+ },
2442
+ l.href
2443
+ )) })
2444
+ ]
2413
2445
  },
2414
- l.href
2415
- ))
2416
- ] }, col.heading))
2446
+ col.heading
2447
+ );
2448
+ })
2417
2449
  ] }),
2418
- signature ? /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "oca-container select-none overflow-hidden pb-6 md:pb-8", children: /* @__PURE__ */ 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: [
2450
+ signature ? /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "oca-container select-none overflow-hidden pb-8 md:pb-12", children: /* @__PURE__ */ 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: [
2419
2451
  /* @__PURE__ */ jsx("span", { className: "mb-[0.06em] inline-block w-[1.1em] shrink-0", children: /* @__PURE__ */ jsx(Mark, { className: "block h-auto w-full" }) }),
2420
2452
  /* @__PURE__ */ jsx("span", { children: "orangecheck" })
2421
2453
  ] }) }) : null,
2422
- meta ? /* @__PURE__ */ jsx("div", { className: "oca-container border-t border-border py-6 text-[0.875rem] text-muted-foreground", children: meta }) : null
2454
+ meta ? /* @__PURE__ */ jsx("div", { className: "oca-container", children: /* @__PURE__ */ jsx("div", { className: "border-t border-border py-6 text-[0.875rem] text-muted-foreground", children: meta }) }) : null
2423
2455
  ] });
2424
2456
  }
2425
2457
  function SideNav({ groups, onNavigate }) {