@orangecheck/design 0.19.0 → 0.20.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/components.d.mts +1 -1
- package/dist/components.d.ts +1 -1
- package/dist/components.js +814 -178
- package/dist/components.js.map +1 -1
- package/dist/components.mjs +764 -143
- package/dist/components.mjs.map +1 -1
- package/dist/composites.d.mts +142 -1
- package/dist/composites.d.ts +142 -1
- package/dist/composites.js +641 -3
- package/dist/composites.js.map +1 -1
- package/dist/composites.mjs +627 -4
- package/dist/composites.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +522 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +506 -13
- package/dist/index.mjs.map +1 -1
- package/dist/primitives.d.mts +24 -4
- package/dist/primitives.d.ts +24 -4
- package/dist/primitives.js +123 -11
- package/dist/primitives.js.map +1 -1
- package/dist/primitives.mjs +121 -13
- package/dist/primitives.mjs.map +1 -1
- package/dist/styles/fonts/hanken-grotesk-latin-ext.woff2 +0 -0
- package/dist/styles/fonts/hanken-grotesk-latin.woff2 +0 -0
- package/dist/styles/fonts.css +29 -0
- package/dist/styles/theme.css +43 -5
- package/dist/styles/themes/ember.css +223 -0
- package/dist/styles/themes.css +1 -0
- package/dist/styles.css +1 -0
- package/dist/tokens.js +6 -0
- package/dist/tokens.js.map +1 -1
- package/dist/tokens.mjs +6 -0
- package/dist/tokens.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import * as React2 from 'react';
|
|
|
4
4
|
import { createContext, useState, useRef, useEffect, useCallback, useMemo, useContext, Fragment as Fragment$1, useId } from 'react';
|
|
5
5
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
6
6
|
import { useTheme } from 'next-themes';
|
|
7
|
-
import { ChevronDown, Palette, Check, Sun, Moon, Monitor, CheckIcon, CircleIcon, X, XIcon, AlertTriangle, Pencil, ChevronLeft, ChevronRight, ChevronDownIcon, ChevronUpIcon, Maximize2, Copy, HelpCircle, Boxes, CornerDownLeft,
|
|
7
|
+
import { ChevronDown, Plus, Palette, Check, Sun, Moon, Monitor, CheckIcon, CircleIcon, X, XIcon, AlertTriangle, Pencil, ChevronLeft, ChevronRight, ChevronDownIcon, ChevronUpIcon, Maximize2, Copy, HelpCircle, Boxes, CornerDownLeft, Loader2, Menu } from 'lucide-react';
|
|
8
8
|
import { Slot } from '@radix-ui/react-slot';
|
|
9
9
|
import { cva } from 'class-variance-authority';
|
|
10
10
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
@@ -53,6 +53,12 @@ var OC_THEMES = [
|
|
|
53
53
|
label: "gold",
|
|
54
54
|
description: "sound money \u2014 digital gold, hard 0.125rem milled edge, mono ledger \xB7 21M",
|
|
55
55
|
accent: "#e3b831"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: "ember",
|
|
59
|
+
label: "ember",
|
|
60
|
+
description: "the warmth \u2014 burnt-sienna terracotta, soft 1rem corners, pill buttons, Hanken Grotesk \xB7 approachable, human",
|
|
61
|
+
accent: "#da6736"
|
|
56
62
|
}
|
|
57
63
|
];
|
|
58
64
|
var OC_DEFAULT_ACCENT = "#f97316";
|
|
@@ -421,7 +427,14 @@ var buttonVariants = cva(
|
|
|
421
427
|
outline: "bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border shadow-xs",
|
|
422
428
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
423
429
|
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
424
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
430
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
431
|
+
// For CTAs placed ON a saturated brand band or a dark section
|
|
432
|
+
// (e.g. a terracotta hero / footer / a forced-dark block) where
|
|
433
|
+
// the surface is dark+light-text in either mode. A neutral white
|
|
434
|
+
// pill + a translucent-white ghost read on any such surface;
|
|
435
|
+
// hardcoded white is deliberate (cf. destructive's text-white).
|
|
436
|
+
onBrand: "bg-white text-neutral-900 shadow-sm hover:bg-white/90",
|
|
437
|
+
onBrandOutline: "border border-white/40 bg-transparent text-white hover:bg-white/10"
|
|
425
438
|
},
|
|
426
439
|
size: {
|
|
427
440
|
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
@@ -464,7 +477,8 @@ var badgeVariants = cva(
|
|
|
464
477
|
warning: "bg-warning text-warning-foreground [a&]:hover:bg-warning/90 border-transparent",
|
|
465
478
|
success: "bg-success text-success-foreground [a&]:hover:bg-success/90 border-transparent",
|
|
466
479
|
info: "bg-info text-info-foreground [a&]:hover:bg-info/90 border-transparent",
|
|
467
|
-
brand: "bg-brand-soft text-
|
|
480
|
+
brand: "bg-brand-soft text-accent-foreground border-transparent",
|
|
481
|
+
neutral: "bg-foreground text-background [a&]:hover:bg-foreground/90 border-transparent",
|
|
468
482
|
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
469
483
|
}
|
|
470
484
|
},
|
|
@@ -489,7 +503,7 @@ function Input({ className, type, ...props }) {
|
|
|
489
503
|
className: cn(
|
|
490
504
|
"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground border-input bg-input/30 hover:bg-input/50 dark:bg-input/30 dark:hover:bg-input/50 h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow,background-color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
491
505
|
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
492
|
-
"aria-invalid:ring-
|
|
506
|
+
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
493
507
|
className
|
|
494
508
|
),
|
|
495
509
|
...props
|
|
@@ -519,7 +533,7 @@ function Checkbox({ className, ...props }) {
|
|
|
519
533
|
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
520
534
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
521
535
|
"data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground",
|
|
522
|
-
"aria-invalid:ring-
|
|
536
|
+
"aria-invalid:ring-2 aria-invalid:ring-destructive/50 aria-invalid:border-destructive",
|
|
523
537
|
className
|
|
524
538
|
),
|
|
525
539
|
...props,
|
|
@@ -560,7 +574,7 @@ function RadioGroupItem({
|
|
|
560
574
|
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
561
575
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
562
576
|
"data-[state=checked]:border-primary",
|
|
563
|
-
"aria-invalid:ring-
|
|
577
|
+
"aria-invalid:ring-2 aria-invalid:ring-destructive/50 aria-invalid:border-destructive",
|
|
564
578
|
className
|
|
565
579
|
),
|
|
566
580
|
...props,
|
|
@@ -585,7 +599,7 @@ function Switch({ className, ...props }) {
|
|
|
585
599
|
"data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
|
|
586
600
|
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
587
601
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
588
|
-
"aria-invalid:ring-
|
|
602
|
+
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
|
|
589
603
|
className
|
|
590
604
|
),
|
|
591
605
|
...props,
|
|
@@ -743,7 +757,7 @@ function Textarea({ className, ...props }) {
|
|
|
743
757
|
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
744
758
|
// aria-invalid parity with Input — error styling when a consumer
|
|
745
759
|
// marks the field invalid.
|
|
746
|
-
"aria-invalid:ring-
|
|
760
|
+
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
747
761
|
className
|
|
748
762
|
),
|
|
749
763
|
...props
|
|
@@ -1575,18 +1589,19 @@ function Tooltip({
|
|
|
1575
1589
|
var Accordion = AccordionPrimitive.Root;
|
|
1576
1590
|
var AccordionItem = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Item, { ref, className: cn("border-b", className), ...props }));
|
|
1577
1591
|
AccordionItem.displayName = "AccordionItem";
|
|
1578
|
-
var AccordionTrigger = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
1592
|
+
var AccordionTrigger = React2.forwardRef(({ className, children, icon = "chevron", ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
1579
1593
|
AccordionPrimitive.Trigger,
|
|
1580
1594
|
{
|
|
1581
1595
|
ref,
|
|
1582
1596
|
className: cn(
|
|
1583
|
-
"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline
|
|
1597
|
+
"flex flex-1 items-center justify-between gap-4 py-4 text-left font-medium transition-all hover:underline",
|
|
1598
|
+
icon === "chevron" ? "[&[data-state=open]>svg]:rotate-180" : "[&[data-state=open]>svg]:rotate-45",
|
|
1584
1599
|
className
|
|
1585
1600
|
),
|
|
1586
1601
|
...props,
|
|
1587
1602
|
children: [
|
|
1588
1603
|
children,
|
|
1589
|
-
/* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })
|
|
1604
|
+
icon === "chevron" ? /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" }) : /* @__PURE__ */ jsx(Plus, { className: "text-primary h-5 w-5 shrink-0 transition-transform duration-200" })
|
|
1590
1605
|
]
|
|
1591
1606
|
}
|
|
1592
1607
|
) }));
|
|
@@ -1779,6 +1794,105 @@ var Toaster = ({ ...props }) => {
|
|
|
1779
1794
|
}
|
|
1780
1795
|
);
|
|
1781
1796
|
};
|
|
1797
|
+
var surfaceVariants = cva("rounded-xl transition-colors", {
|
|
1798
|
+
variants: {
|
|
1799
|
+
tone: {
|
|
1800
|
+
/* Crisp panel floating on the page — the default soft card. */
|
|
1801
|
+
default: "bg-card text-card-foreground",
|
|
1802
|
+
/* Warm-gray recessed panel. */
|
|
1803
|
+
muted: "bg-muted text-foreground",
|
|
1804
|
+
/* Solid brand fill — small terracotta panel; inverts child text. */
|
|
1805
|
+
brand: "bg-brand text-brand-foreground",
|
|
1806
|
+
/* High-contrast neutral panel (near-black in light, near-white in dark). */
|
|
1807
|
+
contrast: "bg-foreground text-background",
|
|
1808
|
+
/* Translucent lightened tile for cards sitting ON a brand band. */
|
|
1809
|
+
onBrand: "text-brand-foreground [background:color-mix(in_oklch,white_16%,var(--brand))] [border-color:color-mix(in_oklch,white_24%,transparent)]",
|
|
1810
|
+
/* Frame only, transparent fill. */
|
|
1811
|
+
outline: "bg-transparent text-foreground"
|
|
1812
|
+
},
|
|
1813
|
+
elevation: {
|
|
1814
|
+
none: "shadow-none",
|
|
1815
|
+
sm: "shadow-sm",
|
|
1816
|
+
md: "shadow-md",
|
|
1817
|
+
lg: "shadow-lg",
|
|
1818
|
+
xl: "shadow-xl"
|
|
1819
|
+
},
|
|
1820
|
+
bordered: {
|
|
1821
|
+
true: "border",
|
|
1822
|
+
false: ""
|
|
1823
|
+
},
|
|
1824
|
+
pad: {
|
|
1825
|
+
none: "p-0",
|
|
1826
|
+
sm: "p-4",
|
|
1827
|
+
md: "p-5 sm:p-6",
|
|
1828
|
+
lg: "p-6 sm:p-8"
|
|
1829
|
+
}
|
|
1830
|
+
},
|
|
1831
|
+
defaultVariants: {
|
|
1832
|
+
tone: "default",
|
|
1833
|
+
elevation: "sm",
|
|
1834
|
+
bordered: true,
|
|
1835
|
+
pad: "md"
|
|
1836
|
+
}
|
|
1837
|
+
});
|
|
1838
|
+
function Surface({
|
|
1839
|
+
className,
|
|
1840
|
+
tone,
|
|
1841
|
+
elevation,
|
|
1842
|
+
bordered,
|
|
1843
|
+
pad,
|
|
1844
|
+
...props
|
|
1845
|
+
}) {
|
|
1846
|
+
return /* @__PURE__ */ jsx(
|
|
1847
|
+
"div",
|
|
1848
|
+
{
|
|
1849
|
+
"data-slot": "surface",
|
|
1850
|
+
className: cn(surfaceVariants({ tone, elevation, bordered, pad }), className),
|
|
1851
|
+
...props
|
|
1852
|
+
}
|
|
1853
|
+
);
|
|
1854
|
+
}
|
|
1855
|
+
var iconBadgeVariants = cva(
|
|
1856
|
+
"inline-flex shrink-0 items-center justify-center rounded-md font-semibold [&_svg]:pointer-events-none",
|
|
1857
|
+
{
|
|
1858
|
+
variants: {
|
|
1859
|
+
tone: {
|
|
1860
|
+
/* The signature peach tile — soft accent fill, terracotta glyph.
|
|
1861
|
+
Auto-swaps to warm-dark + light-peach in dark mode via tokens. */
|
|
1862
|
+
peach: "bg-accent text-accent-foreground",
|
|
1863
|
+
/* Inverted near-black tile, light glyph ("never do" promises). */
|
|
1864
|
+
dark: "bg-foreground text-background",
|
|
1865
|
+
/* Solid brand tile. */
|
|
1866
|
+
brand: "bg-primary text-primary-foreground",
|
|
1867
|
+
/* White tile on a brand band, terracotta glyph (numbered steps). */
|
|
1868
|
+
onBrand: "bg-brand-foreground text-primary",
|
|
1869
|
+
/* Quiet neutral tile. */
|
|
1870
|
+
muted: "bg-muted text-foreground",
|
|
1871
|
+
/* Crisp white (card-colored) tile with a terracotta glyph and a
|
|
1872
|
+
soft lift — the elevated icon chip on muted/colored cards. */
|
|
1873
|
+
surface: "bg-card text-primary shadow-sm"
|
|
1874
|
+
},
|
|
1875
|
+
size: {
|
|
1876
|
+
sm: "size-9 text-xs [&_svg]:size-4",
|
|
1877
|
+
md: "size-11 text-sm [&_svg]:size-5",
|
|
1878
|
+
lg: "size-12 text-base [&_svg]:size-6",
|
|
1879
|
+
xl: "size-14 text-lg [&_svg]:size-7"
|
|
1880
|
+
}
|
|
1881
|
+
},
|
|
1882
|
+
defaultVariants: { tone: "peach", size: "md" }
|
|
1883
|
+
}
|
|
1884
|
+
);
|
|
1885
|
+
function IconBadge({ className, tone, size, children, ...props }) {
|
|
1886
|
+
return /* @__PURE__ */ jsx(
|
|
1887
|
+
"span",
|
|
1888
|
+
{
|
|
1889
|
+
"data-slot": "icon-badge",
|
|
1890
|
+
className: cn(iconBadgeVariants({ tone, size }), className),
|
|
1891
|
+
...props,
|
|
1892
|
+
children
|
|
1893
|
+
}
|
|
1894
|
+
);
|
|
1895
|
+
}
|
|
1782
1896
|
function Card({
|
|
1783
1897
|
id,
|
|
1784
1898
|
title,
|
|
@@ -1891,7 +2005,7 @@ function Sparkline({ data, width = 96, height = 24, area = false, className }) {
|
|
|
1891
2005
|
function StatBlock({ label, value, sub, delta, tone = "default", className }) {
|
|
1892
2006
|
const toneClass = tone === "success" ? "text-success" : tone === "warning" ? "text-warning" : tone === "destructive" ? "text-destructive" : "text-foreground";
|
|
1893
2007
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-1", className), children: [
|
|
1894
|
-
/* @__PURE__ */ jsx("span", { className: "label-mono text-[10px]", children: label }),
|
|
2008
|
+
/* @__PURE__ */ jsx("span", { className: "label-mono text-muted-foreground text-[10px]", children: label }),
|
|
1895
2009
|
/* @__PURE__ */ jsx(
|
|
1896
2010
|
"span",
|
|
1897
2011
|
{
|
|
@@ -2484,6 +2598,385 @@ function DataRow({ children, meta, action, as, className }) {
|
|
|
2484
2598
|
}
|
|
2485
2599
|
);
|
|
2486
2600
|
}
|
|
2601
|
+
function TwoToneHeading({
|
|
2602
|
+
lead,
|
|
2603
|
+
muted,
|
|
2604
|
+
as,
|
|
2605
|
+
tone = "default",
|
|
2606
|
+
className
|
|
2607
|
+
}) {
|
|
2608
|
+
const Tag = as ?? "h2";
|
|
2609
|
+
const leadColor = tone === "onBrand" ? "text-primary-foreground" : "text-foreground";
|
|
2610
|
+
const mutedColor = tone === "onBrand" ? "text-primary-foreground/60" : "text-foreground/40";
|
|
2611
|
+
return /* @__PURE__ */ jsxs(
|
|
2612
|
+
Tag,
|
|
2613
|
+
{
|
|
2614
|
+
className: cn(
|
|
2615
|
+
"font-extrabold tracking-[-0.02em] leading-[1.0] text-balance",
|
|
2616
|
+
"text-3xl sm:text-4xl md:text-5xl",
|
|
2617
|
+
leadColor,
|
|
2618
|
+
className
|
|
2619
|
+
),
|
|
2620
|
+
children: [
|
|
2621
|
+
/* @__PURE__ */ jsx("span", { children: lead }),
|
|
2622
|
+
muted ? /* @__PURE__ */ jsxs("span", { className: mutedColor, children: [
|
|
2623
|
+
" ",
|
|
2624
|
+
muted
|
|
2625
|
+
] }) : null
|
|
2626
|
+
]
|
|
2627
|
+
}
|
|
2628
|
+
);
|
|
2629
|
+
}
|
|
2630
|
+
function MarketingHeading({
|
|
2631
|
+
eyebrow,
|
|
2632
|
+
lead,
|
|
2633
|
+
muted,
|
|
2634
|
+
body,
|
|
2635
|
+
align = "start",
|
|
2636
|
+
tone = "default",
|
|
2637
|
+
as,
|
|
2638
|
+
className
|
|
2639
|
+
}) {
|
|
2640
|
+
const centered = align === "center";
|
|
2641
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col", centered && "items-center text-center", className), children: [
|
|
2642
|
+
eyebrow && /* @__PURE__ */ jsx(
|
|
2643
|
+
"p",
|
|
2644
|
+
{
|
|
2645
|
+
className: cn(
|
|
2646
|
+
"label-mono mb-3",
|
|
2647
|
+
tone === "onBrand" ? "text-primary-foreground/80" : "text-primary"
|
|
2648
|
+
),
|
|
2649
|
+
children: eyebrow
|
|
2650
|
+
}
|
|
2651
|
+
),
|
|
2652
|
+
/* @__PURE__ */ jsx(
|
|
2653
|
+
TwoToneHeading,
|
|
2654
|
+
{
|
|
2655
|
+
lead,
|
|
2656
|
+
muted,
|
|
2657
|
+
as,
|
|
2658
|
+
tone,
|
|
2659
|
+
className: cn("max-w-4xl", centered && "mx-auto")
|
|
2660
|
+
}
|
|
2661
|
+
),
|
|
2662
|
+
body && /* @__PURE__ */ jsx(
|
|
2663
|
+
"p",
|
|
2664
|
+
{
|
|
2665
|
+
className: cn(
|
|
2666
|
+
"mt-4 max-w-2xl text-base sm:text-lg",
|
|
2667
|
+
tone === "onBrand" ? "text-primary-foreground/80" : "text-muted-foreground",
|
|
2668
|
+
centered && "mx-auto"
|
|
2669
|
+
),
|
|
2670
|
+
children: body
|
|
2671
|
+
}
|
|
2672
|
+
)
|
|
2673
|
+
] });
|
|
2674
|
+
}
|
|
2675
|
+
function FeatureCard({
|
|
2676
|
+
icon,
|
|
2677
|
+
iconTone = "peach",
|
|
2678
|
+
title,
|
|
2679
|
+
children,
|
|
2680
|
+
orientation = "vertical",
|
|
2681
|
+
align = "start",
|
|
2682
|
+
tone = "default",
|
|
2683
|
+
elevation = "sm",
|
|
2684
|
+
className
|
|
2685
|
+
}) {
|
|
2686
|
+
const horizontal = orientation === "horizontal";
|
|
2687
|
+
const centered = !horizontal && align === "center";
|
|
2688
|
+
return /* @__PURE__ */ jsxs(
|
|
2689
|
+
Surface,
|
|
2690
|
+
{
|
|
2691
|
+
tone,
|
|
2692
|
+
elevation,
|
|
2693
|
+
pad: horizontal ? "md" : "lg",
|
|
2694
|
+
className: cn(
|
|
2695
|
+
"flex h-full",
|
|
2696
|
+
horizontal ? "flex-row gap-4" : "flex-col",
|
|
2697
|
+
centered && "items-center text-center",
|
|
2698
|
+
className
|
|
2699
|
+
),
|
|
2700
|
+
children: [
|
|
2701
|
+
icon && /* @__PURE__ */ jsx(
|
|
2702
|
+
IconBadge,
|
|
2703
|
+
{
|
|
2704
|
+
tone: iconTone,
|
|
2705
|
+
size: "lg",
|
|
2706
|
+
className: cn(horizontal ? "shrink-0" : "mb-4"),
|
|
2707
|
+
children: icon
|
|
2708
|
+
}
|
|
2709
|
+
),
|
|
2710
|
+
/* @__PURE__ */ jsxs("div", { className: cn(horizontal && "min-w-0"), children: [
|
|
2711
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold", children: title }),
|
|
2712
|
+
children && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground mt-1.5 text-sm leading-relaxed", children })
|
|
2713
|
+
] })
|
|
2714
|
+
]
|
|
2715
|
+
}
|
|
2716
|
+
);
|
|
2717
|
+
}
|
|
2718
|
+
var TONE2 = {
|
|
2719
|
+
default: "bg-background text-foreground",
|
|
2720
|
+
muted: "bg-muted text-foreground",
|
|
2721
|
+
brand: "bg-brand text-brand-foreground",
|
|
2722
|
+
// `dark` activates the .dark variant locally so descendant package
|
|
2723
|
+
// components render their dark arm even on an otherwise light page.
|
|
2724
|
+
dark: "dark bg-background text-foreground"
|
|
2725
|
+
};
|
|
2726
|
+
var WIDTH = {
|
|
2727
|
+
default: "container",
|
|
2728
|
+
wide: "mx-auto w-full max-w-screen-2xl px-4 sm:px-6 lg:px-8",
|
|
2729
|
+
full: ""
|
|
2730
|
+
};
|
|
2731
|
+
function Section({
|
|
2732
|
+
tone = "default",
|
|
2733
|
+
width = "default",
|
|
2734
|
+
diagonal,
|
|
2735
|
+
id,
|
|
2736
|
+
className,
|
|
2737
|
+
innerClassName,
|
|
2738
|
+
children
|
|
2739
|
+
}) {
|
|
2740
|
+
const showDiagonal = diagonal ?? tone === "brand";
|
|
2741
|
+
return /* @__PURE__ */ jsx(
|
|
2742
|
+
"div",
|
|
2743
|
+
{
|
|
2744
|
+
id,
|
|
2745
|
+
className: cn("w-full", TONE2[tone], showDiagonal && "oc-diagonal", className),
|
|
2746
|
+
children: /* @__PURE__ */ jsx("div", { className: cn("py-16 sm:py-20 md:py-24", WIDTH[width], innerClassName), children })
|
|
2747
|
+
}
|
|
2748
|
+
);
|
|
2749
|
+
}
|
|
2750
|
+
function BrandBand(props) {
|
|
2751
|
+
return /* @__PURE__ */ jsx(Section, { tone: "brand", ...props });
|
|
2752
|
+
}
|
|
2753
|
+
function ComparisonTable({ rows, columns, className }) {
|
|
2754
|
+
const cols = { feature: "", theirs: "A normal login", ours: "OrangeCheck", ...columns };
|
|
2755
|
+
return /* @__PURE__ */ jsx("div", { className: cn("overflow-hidden rounded-xl border", className), children: /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs("div", { className: "min-w-[32rem]", children: [
|
|
2756
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[1.4fr_1fr_1fr]", children: [
|
|
2757
|
+
/* @__PURE__ */ jsx("div", { className: "label-mono text-muted-foreground px-4 py-3.5 sm:px-6", children: cols.feature }),
|
|
2758
|
+
/* @__PURE__ */ jsx("div", { className: "px-4 py-3.5 font-semibold text-foreground sm:px-6", children: cols.theirs }),
|
|
2759
|
+
/* @__PURE__ */ jsx("div", { className: "bg-accent/60 border-border/60 border-l px-4 py-3.5 font-semibold text-primary sm:px-6", children: cols.ours })
|
|
2760
|
+
] }),
|
|
2761
|
+
rows.map((row, i) => /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[1.4fr_1fr_1fr] border-t", children: [
|
|
2762
|
+
/* @__PURE__ */ jsx("div", { className: "px-4 py-3.5 font-medium text-foreground sm:px-6", children: row.label }),
|
|
2763
|
+
/* @__PURE__ */ jsxs("div", { className: "text-muted-foreground flex items-center gap-2 px-4 py-3.5 sm:px-6", children: [
|
|
2764
|
+
/* @__PURE__ */ jsx(X, { className: "text-muted-foreground/70 size-4" }),
|
|
2765
|
+
/* @__PURE__ */ jsx("span", { children: row.theirs })
|
|
2766
|
+
] }),
|
|
2767
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-accent/40 border-border/60 flex items-center gap-2 border-l px-4 py-3.5 text-foreground sm:px-6", children: [
|
|
2768
|
+
/* @__PURE__ */ jsx(Check, { className: "size-4 text-primary" }),
|
|
2769
|
+
/* @__PURE__ */ jsx("span", { children: row.ours })
|
|
2770
|
+
] })
|
|
2771
|
+
] }, i))
|
|
2772
|
+
] }) }) });
|
|
2773
|
+
}
|
|
2774
|
+
function NumberedStep({
|
|
2775
|
+
n,
|
|
2776
|
+
title,
|
|
2777
|
+
children,
|
|
2778
|
+
tone = "default",
|
|
2779
|
+
card = false,
|
|
2780
|
+
className
|
|
2781
|
+
}) {
|
|
2782
|
+
const onBrand = tone === "onBrand";
|
|
2783
|
+
const body = /* @__PURE__ */ jsxs("div", { className: cn(!card && className), children: [
|
|
2784
|
+
/* @__PURE__ */ jsx(IconBadge, { tone: onBrand ? "onBrand" : "peach", size: "sm", children: n }),
|
|
2785
|
+
/* @__PURE__ */ jsx("div", { className: "mt-4 text-lg font-semibold", children: title }),
|
|
2786
|
+
children && /* @__PURE__ */ jsx(
|
|
2787
|
+
"div",
|
|
2788
|
+
{
|
|
2789
|
+
className: cn(
|
|
2790
|
+
"mt-1.5 text-sm leading-relaxed",
|
|
2791
|
+
onBrand ? "text-brand-foreground/80" : "text-muted-foreground"
|
|
2792
|
+
),
|
|
2793
|
+
children
|
|
2794
|
+
}
|
|
2795
|
+
)
|
|
2796
|
+
] });
|
|
2797
|
+
if (!card) return body;
|
|
2798
|
+
return /* @__PURE__ */ jsx(
|
|
2799
|
+
Surface,
|
|
2800
|
+
{
|
|
2801
|
+
tone: onBrand ? "onBrand" : "default",
|
|
2802
|
+
elevation: onBrand ? "none" : "sm",
|
|
2803
|
+
pad: "md",
|
|
2804
|
+
className,
|
|
2805
|
+
children: body
|
|
2806
|
+
}
|
|
2807
|
+
);
|
|
2808
|
+
}
|
|
2809
|
+
var COLUMNS = {
|
|
2810
|
+
2: "md:grid-cols-2",
|
|
2811
|
+
3: "md:grid-cols-3",
|
|
2812
|
+
4: "md:grid-cols-4"
|
|
2813
|
+
};
|
|
2814
|
+
function StepList({
|
|
2815
|
+
steps,
|
|
2816
|
+
variant = "bare",
|
|
2817
|
+
tone = "default",
|
|
2818
|
+
columns = 3,
|
|
2819
|
+
className
|
|
2820
|
+
}) {
|
|
2821
|
+
return /* @__PURE__ */ jsx("div", { className: cn("grid gap-6 sm:grid-cols-2 sm:gap-8", COLUMNS[columns], className), children: steps.map((step, index) => /* @__PURE__ */ jsx(
|
|
2822
|
+
NumberedStep,
|
|
2823
|
+
{
|
|
2824
|
+
n: index + 1,
|
|
2825
|
+
title: step.title,
|
|
2826
|
+
tone,
|
|
2827
|
+
card: variant === "card",
|
|
2828
|
+
children: step.children
|
|
2829
|
+
},
|
|
2830
|
+
index
|
|
2831
|
+
)) });
|
|
2832
|
+
}
|
|
2833
|
+
function Faq({ items, defaultOpen, className }) {
|
|
2834
|
+
return /* @__PURE__ */ jsx(
|
|
2835
|
+
Accordion,
|
|
2836
|
+
{
|
|
2837
|
+
type: "single",
|
|
2838
|
+
collapsible: true,
|
|
2839
|
+
defaultValue: defaultOpen != null ? String(defaultOpen) : void 0,
|
|
2840
|
+
className: cn("w-full", className),
|
|
2841
|
+
children: items.map((item, i) => /* @__PURE__ */ jsxs(AccordionItem, { value: String(i), children: [
|
|
2842
|
+
/* @__PURE__ */ jsx(
|
|
2843
|
+
AccordionTrigger,
|
|
2844
|
+
{
|
|
2845
|
+
icon: "plusMinus",
|
|
2846
|
+
className: "text-foreground text-base font-semibold",
|
|
2847
|
+
children: item.q
|
|
2848
|
+
}
|
|
2849
|
+
),
|
|
2850
|
+
/* @__PURE__ */ jsx(AccordionContent, { className: "text-muted-foreground leading-relaxed", children: item.a })
|
|
2851
|
+
] }, i))
|
|
2852
|
+
}
|
|
2853
|
+
);
|
|
2854
|
+
}
|
|
2855
|
+
function EmailCapture({
|
|
2856
|
+
action,
|
|
2857
|
+
method,
|
|
2858
|
+
onSubmit,
|
|
2859
|
+
name = "email",
|
|
2860
|
+
placeholder = "you@email.com",
|
|
2861
|
+
cta = "Join the waitlist",
|
|
2862
|
+
note,
|
|
2863
|
+
tone = "default",
|
|
2864
|
+
className
|
|
2865
|
+
}) {
|
|
2866
|
+
const onBrand = tone === "onBrand";
|
|
2867
|
+
return /* @__PURE__ */ jsxs("form", { action, method, onSubmit, className: cn(className), children: [
|
|
2868
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 sm:flex-row sm:items-center", children: [
|
|
2869
|
+
/* @__PURE__ */ jsx(
|
|
2870
|
+
Input,
|
|
2871
|
+
{
|
|
2872
|
+
type: "email",
|
|
2873
|
+
name,
|
|
2874
|
+
required: true,
|
|
2875
|
+
placeholder,
|
|
2876
|
+
className: cn(
|
|
2877
|
+
"rounded-full text-base md:text-sm",
|
|
2878
|
+
onBrand && "[background:color-mix(in_oklch,white_18%,transparent)] placeholder:text-primary-foreground/60 border-transparent text-primary-foreground"
|
|
2879
|
+
)
|
|
2880
|
+
}
|
|
2881
|
+
),
|
|
2882
|
+
/* @__PURE__ */ jsx(Button, { type: "submit", variant: onBrand ? "onBrand" : "default", className: "rounded-full", children: cta })
|
|
2883
|
+
] }),
|
|
2884
|
+
note && /* @__PURE__ */ jsx(
|
|
2885
|
+
"p",
|
|
2886
|
+
{
|
|
2887
|
+
className: cn(
|
|
2888
|
+
"mt-3 text-sm",
|
|
2889
|
+
onBrand ? "text-primary-foreground/70" : "text-muted-foreground"
|
|
2890
|
+
),
|
|
2891
|
+
children: note
|
|
2892
|
+
}
|
|
2893
|
+
)
|
|
2894
|
+
] });
|
|
2895
|
+
}
|
|
2896
|
+
function CheckList({
|
|
2897
|
+
items,
|
|
2898
|
+
orientation = "horizontal",
|
|
2899
|
+
tone = "default",
|
|
2900
|
+
className
|
|
2901
|
+
}) {
|
|
2902
|
+
const glyph = tone === "onBrand" ? "text-brand-foreground" : "text-primary";
|
|
2903
|
+
const label = tone === "onBrand" ? "text-brand-foreground/90" : "text-foreground";
|
|
2904
|
+
return /* @__PURE__ */ jsx(
|
|
2905
|
+
"ul",
|
|
2906
|
+
{
|
|
2907
|
+
className: cn(
|
|
2908
|
+
orientation === "horizontal" ? "flex flex-wrap gap-x-6 gap-y-2 text-sm" : "flex flex-col gap-2 text-sm",
|
|
2909
|
+
className
|
|
2910
|
+
),
|
|
2911
|
+
children: items.map((item, i) => /* @__PURE__ */ jsxs("li", { className: cn("inline-flex items-center gap-2", label), children: [
|
|
2912
|
+
/* @__PURE__ */ jsx(Check, { className: cn("size-4 shrink-0", glyph) }),
|
|
2913
|
+
item
|
|
2914
|
+
] }, i))
|
|
2915
|
+
}
|
|
2916
|
+
);
|
|
2917
|
+
}
|
|
2918
|
+
function AccentNote({ lead, children, tone = "default", className }) {
|
|
2919
|
+
const onBrand = tone === "onBrand";
|
|
2920
|
+
return /* @__PURE__ */ jsxs(
|
|
2921
|
+
"div",
|
|
2922
|
+
{
|
|
2923
|
+
className: cn(
|
|
2924
|
+
"border-l-2 pl-4 text-sm leading-relaxed",
|
|
2925
|
+
onBrand ? "border-primary-foreground/60 text-primary-foreground/80" : "border-primary text-muted-foreground",
|
|
2926
|
+
className
|
|
2927
|
+
),
|
|
2928
|
+
children: [
|
|
2929
|
+
lead && /* @__PURE__ */ jsx(
|
|
2930
|
+
"strong",
|
|
2931
|
+
{
|
|
2932
|
+
className: cn(
|
|
2933
|
+
"mr-1.5 font-semibold",
|
|
2934
|
+
onBrand ? "text-primary-foreground" : "text-foreground"
|
|
2935
|
+
),
|
|
2936
|
+
children: lead
|
|
2937
|
+
}
|
|
2938
|
+
),
|
|
2939
|
+
children
|
|
2940
|
+
]
|
|
2941
|
+
}
|
|
2942
|
+
);
|
|
2943
|
+
}
|
|
2944
|
+
function AccentList({ items, className }) {
|
|
2945
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col", className), children: items.map((item, i) => /* @__PURE__ */ jsxs(
|
|
2946
|
+
"div",
|
|
2947
|
+
{
|
|
2948
|
+
className: cn("border-l-2 py-2 pl-5", item.active ? "border-primary" : "border-border"),
|
|
2949
|
+
children: [
|
|
2950
|
+
/* @__PURE__ */ jsx(
|
|
2951
|
+
"div",
|
|
2952
|
+
{
|
|
2953
|
+
className: cn(
|
|
2954
|
+
"font-semibold",
|
|
2955
|
+
item.active ? "text-foreground" : "text-muted-foreground"
|
|
2956
|
+
),
|
|
2957
|
+
children: item.title
|
|
2958
|
+
}
|
|
2959
|
+
),
|
|
2960
|
+
item.active && item.children && /* @__PURE__ */ jsx("div", { className: "text-muted-foreground mt-1 text-sm leading-relaxed", children: item.children })
|
|
2961
|
+
]
|
|
2962
|
+
},
|
|
2963
|
+
i
|
|
2964
|
+
)) });
|
|
2965
|
+
}
|
|
2966
|
+
function VerifiedChip({ icon, iconTone = "peach", label, className }) {
|
|
2967
|
+
return /* @__PURE__ */ jsxs(
|
|
2968
|
+
Surface,
|
|
2969
|
+
{
|
|
2970
|
+
elevation: "lg",
|
|
2971
|
+
pad: "none",
|
|
2972
|
+
className: cn("inline-flex items-center gap-3 rounded-full px-3 py-2", className),
|
|
2973
|
+
children: [
|
|
2974
|
+
/* @__PURE__ */ jsx(IconBadge, { tone: iconTone, size: "sm", children: icon ?? /* @__PURE__ */ jsx(Check, {}) }),
|
|
2975
|
+
/* @__PURE__ */ jsx("span", { className: "pr-2 text-sm font-semibold text-foreground", children: label })
|
|
2976
|
+
]
|
|
2977
|
+
}
|
|
2978
|
+
);
|
|
2979
|
+
}
|
|
2487
2980
|
var ENTRIES = [
|
|
2488
2981
|
{
|
|
2489
2982
|
slug: "home",
|
|
@@ -4329,6 +4822,6 @@ function OcAppBar({
|
|
|
4329
4822
|
);
|
|
4330
4823
|
}
|
|
4331
4824
|
|
|
4332
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, AlertWithAction, AlertWithCountdown, AppShell, AppearanceControls, Badge, Bar, BitcoinAddress, Button, Callout, Card, Checkbox, ConfirmHost, CopyButton, DEFAULT_OC_THEME, DataRow, DefinitionList, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, EcosystemSwitcher, EmptyState, ErrorBoundary, FAMILY_PROPERTIES, HelpHint, Input, Label, LayoutSubHeader, Modal, 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, 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, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeToggle, ThemeToggleLink, Toaster, Tooltip, Working, WorkingPanel, accentFor, asOf, badgeVariants, buttonVariants, cn, confirm, explorerUrl, findFamilyProperty, formatSats, formatSatsCompact, getOcThemeInitScript, isKnownTheme, makeStatusPill, priceBoth, prompt, relativeTime, resolveTheme, satsToUsd, shortenAddress, usdToSats, useOcSkin, useSpotPrice };
|
|
4825
|
+
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 };
|
|
4333
4826
|
//# sourceMappingURL=index.mjs.map
|
|
4334
4827
|
//# sourceMappingURL=index.mjs.map
|