@orangecheck/app-design 1.6.2 → 1.8.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/README.md +3 -3
- package/dist/chrome.d.mts +11 -6
- package/dist/chrome.d.ts +11 -6
- package/dist/chrome.js +158 -129
- package/dist/chrome.js.map +1 -1
- package/dist/chrome.mjs +156 -130
- package/dist/chrome.mjs.map +1 -1
- package/dist/components.d.mts +75 -8
- package/dist/components.d.ts +75 -8
- package/dist/components.js +255 -12
- package/dist/components.js.map +1 -1
- package/dist/components.mjs +251 -14
- package/dist/components.mjs.map +1 -1
- package/dist/{docs-CFE5mU_6.d.mts → docs-B9G1BNXI.d.mts} +2 -2
- package/dist/{docs-ByUx4t-D.d.ts → docs-BWWnm5Jv.d.ts} +2 -2
- package/dist/family.d.mts +1 -1
- package/dist/family.d.ts +1 -1
- package/dist/family.js +7 -1
- package/dist/family.js.map +1 -1
- package/dist/family.mjs +5 -2
- package/dist/family.mjs.map +1 -1
- package/dist/{index-DmfyPYe5.d.mts → index-Bkl49Vgy.d.mts} +4 -1
- package/dist/{index-DmfyPYe5.d.ts → index-Bkl49Vgy.d.ts} +4 -1
- package/dist/index.d.mts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +338 -66
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +327 -67
- package/dist/index.mjs.map +1 -1
- package/dist/mdx.d.mts +3 -3
- package/dist/mdx.d.ts +3 -3
- package/dist/mdx.js +15 -3
- package/dist/mdx.js.map +1 -1
- package/dist/mdx.mjs +15 -3
- package/dist/mdx.mjs.map +1 -1
- package/dist/primitives.d.mts +2 -2
- package/dist/primitives.d.ts +2 -2
- package/dist/primitives.js +2 -1
- package/dist/primitives.js.map +1 -1
- package/dist/primitives.mjs +2 -1
- package/dist/primitives.mjs.map +1 -1
- package/dist/session.d.mts +4 -4
- package/dist/session.d.ts +4 -4
- package/dist/session.js +124 -2
- package/dist/session.js.map +1 -1
- package/dist/session.mjs +124 -2
- package/dist/session.mjs.map +1 -1
- package/dist/{status-badge-BJ9Sdsx8.d.mts → status-badge-BBbCO6ZA.d.mts} +1 -1
- package/dist/{status-badge-Bt8x3RhO.d.ts → status-badge-CHHxtFkP.d.ts} +1 -1
- package/dist/styles/swagger.css +24 -1
- package/dist/styles/tokens.css +11 -0
- package/dist/{tool-shell-CQZNRUgH.d.mts → tool-shell-Cg51cRHJ.d.ts} +14 -4
- package/dist/{tool-shell-CRmceGrV.d.ts → tool-shell-Dxw5o2rH.d.mts} +14 -4
- package/dist/{tools-Bg1gi2HO.d.mts → tools-CKO8IseL.d.mts} +2 -2
- package/dist/{tools-Bw7RhO92.d.ts → tools-CzjFPng4.d.ts} +2 -2
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -21,7 +21,7 @@ var PopoverPrimitive = require('@radix-ui/react-popover');
|
|
|
21
21
|
var TooltipPrimitive = require('@radix-ui/react-tooltip');
|
|
22
22
|
var TabsPrimitive = require('@radix-ui/react-tabs');
|
|
23
23
|
var QRCode = require('qrcode');
|
|
24
|
-
var
|
|
24
|
+
var Link7 = require('next/link');
|
|
25
25
|
var router = require('next/compat/router');
|
|
26
26
|
|
|
27
27
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -56,7 +56,7 @@ var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitiv
|
|
|
56
56
|
var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
|
|
57
57
|
var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
|
|
58
58
|
var QRCode__default = /*#__PURE__*/_interopDefault(QRCode);
|
|
59
|
-
var
|
|
59
|
+
var Link7__default = /*#__PURE__*/_interopDefault(Link7);
|
|
60
60
|
|
|
61
61
|
// src/tokens/palette.ts
|
|
62
62
|
var lightPalette = {
|
|
@@ -906,7 +906,8 @@ var DropdownMenuItem = react.forwardRef(function DropdownMenuItem2({ className,
|
|
|
906
906
|
{
|
|
907
907
|
ref,
|
|
908
908
|
className: cn(
|
|
909
|
-
|
|
909
|
+
// A thumb's 44px on a phone.
|
|
910
|
+
"flex h-10 cursor-default select-none items-center gap-2.5 rounded-xl px-3 text-[0.9375rem] outline-none max-md:h-11",
|
|
910
911
|
"data-[highlighted]:bg-accent data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:text-muted-foreground",
|
|
911
912
|
destructive && "text-destructive [&_svg]:text-destructive",
|
|
912
913
|
className
|
|
@@ -2202,7 +2203,7 @@ var JS_TAG = /<\/?(?=[A-Za-z])/y;
|
|
|
2202
2203
|
var JS_TAG_NAME = /[A-Za-z][\w$.:-]*/y;
|
|
2203
2204
|
var JS_PUNCT = /=>|\.\.\.|[{}()[\];,.<>=+\-*/%!?:&|^~#]/y;
|
|
2204
2205
|
var JSX_BEFORE = /* @__PURE__ */ new Set(["(", ",", "=", "?", ":", "{", "[", ";", ">", "&&", "||", "=>", "return"]);
|
|
2205
|
-
function scanJs(src, emit2,
|
|
2206
|
+
function scanJs(src, emit2, jsx54) {
|
|
2206
2207
|
let i = 0;
|
|
2207
2208
|
let prev = "";
|
|
2208
2209
|
let tagDepth = 0;
|
|
@@ -2228,7 +2229,7 @@ function scanJs(src, emit2, jsx52) {
|
|
|
2228
2229
|
sig('"');
|
|
2229
2230
|
continue;
|
|
2230
2231
|
}
|
|
2231
|
-
if (
|
|
2232
|
+
if (jsx54 && tagDepth === 0 && (m = at(JS_TAG, src, i)) && (prev === "" || JSX_BEFORE.has(prev))) {
|
|
2232
2233
|
const name = at(JS_TAG_NAME, src, i + m.length);
|
|
2233
2234
|
if (name) {
|
|
2234
2235
|
emit2(m);
|
|
@@ -2240,7 +2241,7 @@ function scanJs(src, emit2, jsx52) {
|
|
|
2240
2241
|
continue;
|
|
2241
2242
|
}
|
|
2242
2243
|
}
|
|
2243
|
-
if (
|
|
2244
|
+
if (jsx54 && tagDepth > 0 && braceInTag === 0) {
|
|
2244
2245
|
if (src.startsWith("/>", i) || src[i] === ">") {
|
|
2245
2246
|
const close = src[i] === ">" ? ">" : "/>";
|
|
2246
2247
|
emit2(close);
|
|
@@ -2260,7 +2261,7 @@ function scanJs(src, emit2, jsx52) {
|
|
|
2260
2261
|
continue;
|
|
2261
2262
|
}
|
|
2262
2263
|
if (src[i] === "{") braceInTag = 1;
|
|
2263
|
-
} else if (
|
|
2264
|
+
} else if (jsx54 && tagDepth > 0 && braceInTag > 0) {
|
|
2264
2265
|
if (src[i] === "{") braceInTag++;
|
|
2265
2266
|
else if (src[i] === "}") braceInTag--;
|
|
2266
2267
|
}
|
|
@@ -2977,6 +2978,7 @@ function Notice({
|
|
|
2977
2978
|
title,
|
|
2978
2979
|
children,
|
|
2979
2980
|
action,
|
|
2981
|
+
icon,
|
|
2980
2982
|
role,
|
|
2981
2983
|
className
|
|
2982
2984
|
}) {
|
|
@@ -2993,7 +2995,17 @@ function Notice({
|
|
|
2993
2995
|
),
|
|
2994
2996
|
children: [
|
|
2995
2997
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 gap-3", children: [
|
|
2996
|
-
|
|
2998
|
+
icon ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2999
|
+
"span",
|
|
3000
|
+
{
|
|
3001
|
+
"aria-hidden": true,
|
|
3002
|
+
className: cn(
|
|
3003
|
+
"mt-0.5 shrink-0 [&_svg]:size-[1.125rem]",
|
|
3004
|
+
kind === "brand" ? "text-oca-accent-ink" : kind === "danger" ? "text-destructive" : "text-muted-foreground"
|
|
3005
|
+
),
|
|
3006
|
+
children: icon
|
|
3007
|
+
}
|
|
3008
|
+
) : kind !== "neutral" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2997
3009
|
"span",
|
|
2998
3010
|
{
|
|
2999
3011
|
"aria-hidden": true,
|
|
@@ -3288,7 +3300,7 @@ function Well({
|
|
|
3288
3300
|
] });
|
|
3289
3301
|
}
|
|
3290
3302
|
var FRAME = "overflow-hidden rounded-[1.25rem] border border-[var(--oca-code-line)] bg-[var(--oca-code-surface)]";
|
|
3291
|
-
var COPY_ON_INK = "text-oca-ink-subtle hover:bg-white/10 hover:text-white";
|
|
3303
|
+
var COPY_ON_INK = "text-oca-ink-subtle hover:bg-white/10 hover:text-white max-md:size-11";
|
|
3292
3304
|
function CodeBlock({
|
|
3293
3305
|
code,
|
|
3294
3306
|
html,
|
|
@@ -3716,6 +3728,9 @@ var GROUNDS = [
|
|
|
3716
3728
|
}
|
|
3717
3729
|
];
|
|
3718
3730
|
var SIZES = {
|
|
3731
|
+
// A list row's avatar, a facepile.
|
|
3732
|
+
"2xs": "size-7 rounded-[0.55rem] text-[0.75rem]",
|
|
3733
|
+
xs: "size-8 rounded-[0.6rem] text-[0.875rem]",
|
|
3719
3734
|
sm: "size-9 rounded-[0.7rem] text-[0.9375rem]",
|
|
3720
3735
|
md: "size-11 rounded-[0.85rem] text-[1.125rem]",
|
|
3721
3736
|
lg: "size-14 rounded-[1.05rem] text-[1.5rem]"
|
|
@@ -3803,6 +3818,9 @@ var ErrorBoundary = class extends react.Component {
|
|
|
3803
3818
|
// src/family/index.ts
|
|
3804
3819
|
var OCHK_IO = "https://ochk.io";
|
|
3805
3820
|
var DOCS_HREF = `${OCHK_IO}/docs`;
|
|
3821
|
+
var OCHK_APP = "https://ochk.app";
|
|
3822
|
+
var GET_AN_ACCOUNT = { href: OCHK_APP, label: "Get an account" };
|
|
3823
|
+
var SIGN_IN_LABEL = "Sign in";
|
|
3806
3824
|
function protocol(slug, verb, line, kinds) {
|
|
3807
3825
|
return {
|
|
3808
3826
|
slug,
|
|
@@ -3839,7 +3857,7 @@ var FAMILY = [
|
|
|
3839
3857
|
{
|
|
3840
3858
|
slug: "me",
|
|
3841
3859
|
label: "ochk.app",
|
|
3842
|
-
href:
|
|
3860
|
+
href: OCHK_APP,
|
|
3843
3861
|
group: "orangecheck",
|
|
3844
3862
|
line: "One account, with Bitcoin behind it.",
|
|
3845
3863
|
status: "testing"
|
|
@@ -3958,6 +3976,10 @@ var OCHK_IO_FOOTER = [
|
|
|
3958
3976
|
]
|
|
3959
3977
|
}
|
|
3960
3978
|
];
|
|
3979
|
+
var InColumnContext = sharedContext("in-column", false);
|
|
3980
|
+
function useInColumn() {
|
|
3981
|
+
return react.useContext(InColumnContext);
|
|
3982
|
+
}
|
|
3961
3983
|
var SiteHomeContext = sharedContext("site-home", void 0);
|
|
3962
3984
|
function useSiteHome() {
|
|
3963
3985
|
return react.useContext(SiteHomeContext);
|
|
@@ -3985,10 +4007,11 @@ function ErrorPage({
|
|
|
3985
4007
|
className
|
|
3986
4008
|
}) {
|
|
3987
4009
|
const shellHome = useSiteHome();
|
|
4010
|
+
const inColumn = useInColumn();
|
|
3988
4011
|
const homeHref = home ?? (protocol2 ? protocolSite(protocol2).pageHref : shellHome ?? OCHK_IO);
|
|
3989
4012
|
const words = WORDS[code] ?? (code >= 500 ? WORDS[500] : WORDS[404]);
|
|
3990
4013
|
const server = code >= 500;
|
|
3991
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Section, { space: "none", className: cn("flex min-h-[min(40rem,72dvh)] items-center py-16 md:py-24", className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-12 md:grid-cols-12", children: [
|
|
4014
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Section, { space: "none", contained: !inColumn, className: cn("flex min-h-[min(40rem,72dvh)] items-center py-16 md:py-24", className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-12 md:grid-cols-12", children: [
|
|
3992
4015
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex max-w-[40rem] flex-col items-start gap-6 md:col-span-7", children: [
|
|
3993
4016
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "oca-eyebrow oca-enter", children: [
|
|
3994
4017
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "oca-tabular", children: code }),
|
|
@@ -3999,7 +4022,7 @@ function ErrorPage({
|
|
|
3999
4022
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "oca-lead oca-enter [--enter-delay:150ms]", children: detail ?? words.detail }),
|
|
4000
4023
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "oca-enter flex flex-wrap gap-3 [--enter-delay:230ms]", children: actions ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4001
4024
|
server ? /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: () => window.location.reload(), children: "Try again" }) : null,
|
|
4002
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { asChild: true, variant: server ? "secondary" : "primary", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4025
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { asChild: true, variant: server ? "secondary" : "primary", children: /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: homeHref, children: "Go home" }) })
|
|
4003
4026
|
] }) })
|
|
4004
4027
|
] }),
|
|
4005
4028
|
art !== null ? /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": true, className: "oca-enter hidden justify-center md:col-span-5 md:flex [--enter-delay:120ms]", children: art ?? /* @__PURE__ */ jsxRuntime.jsx(MarkOutline, { className: "w-full max-w-[20rem] text-oca-hairline-strong" }) }) : null
|
|
@@ -4440,7 +4463,7 @@ function TextLink({
|
|
|
4440
4463
|
const internal = href.startsWith("/") && !href.startsWith("/api/") && !href.startsWith("/.well-known/");
|
|
4441
4464
|
const offsite = external ?? /^https?:\/\//.test(href);
|
|
4442
4465
|
if (internal && !offsite) {
|
|
4443
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4466
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href, className: cn(LINK, className), children });
|
|
4444
4467
|
}
|
|
4445
4468
|
return /* @__PURE__ */ jsxRuntime.jsxs("a", { href, className: cn(LINK, className), ...offsite ? { target: "_blank", rel: "noreferrer" } : {}, children: [
|
|
4446
4469
|
children,
|
|
@@ -4574,7 +4597,7 @@ function ProtocolGrid({
|
|
|
4574
4597
|
] }),
|
|
4575
4598
|
p.status !== "live" ? /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: p.status }) : null
|
|
4576
4599
|
] }),
|
|
4577
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "oca-display-3", children: link === "docs" && inDocs ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4600
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "oca-display-3", children: link === "docs" && inDocs ? /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: `/${p.slug}`, className: STRETCH, children: p.label }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
4578
4601
|
"a",
|
|
4579
4602
|
{
|
|
4580
4603
|
href: link === "tool" ? p.toolHref : link === "docs" ? `${DOCS_HREF}/${p.slug}` : p.pageHref,
|
|
@@ -4634,7 +4657,7 @@ function AppGrid({
|
|
|
4634
4657
|
}
|
|
4635
4658
|
var isInternal = (href) => href.startsWith("/") || href.startsWith("#");
|
|
4636
4659
|
function DocLink({ href, className, children, ...rest }) {
|
|
4637
|
-
return isInternal(href) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4660
|
+
return isInternal(href) ? /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href, className, ...rest, children }) : /* @__PURE__ */ jsxRuntime.jsx("a", { href, className, ...rest, children });
|
|
4638
4661
|
}
|
|
4639
4662
|
function Breadcrumbs({ items, action, className }) {
|
|
4640
4663
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex min-h-11 items-center justify-between gap-4 sm:min-h-0", className), children: [
|
|
@@ -5424,6 +5447,220 @@ function SignMessage({
|
|
|
5424
5447
|
)
|
|
5425
5448
|
] });
|
|
5426
5449
|
}
|
|
5450
|
+
function SectionTitle({
|
|
5451
|
+
title,
|
|
5452
|
+
meta,
|
|
5453
|
+
description,
|
|
5454
|
+
action,
|
|
5455
|
+
as: Tag = "h2",
|
|
5456
|
+
size = "md",
|
|
5457
|
+
tone = "default",
|
|
5458
|
+
id,
|
|
5459
|
+
className
|
|
5460
|
+
}) {
|
|
5461
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-wrap items-end justify-between gap-x-4 gap-y-3", className), children: [
|
|
5462
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 max-w-[40rem] flex-[1_1_16rem] flex-col gap-1", children: [
|
|
5463
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5464
|
+
Tag,
|
|
5465
|
+
{
|
|
5466
|
+
id,
|
|
5467
|
+
className: cn(
|
|
5468
|
+
"flex scroll-mt-24 flex-wrap items-baseline gap-x-3",
|
|
5469
|
+
size === "sm" ? "oca-title-sm" : "oca-title",
|
|
5470
|
+
tone === "danger" && "text-destructive"
|
|
5471
|
+
),
|
|
5472
|
+
children: [
|
|
5473
|
+
title,
|
|
5474
|
+
meta ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "oca-tabular text-[0.875rem] font-normal tracking-normal text-muted-foreground", children: meta }) : null
|
|
5475
|
+
]
|
|
5476
|
+
}
|
|
5477
|
+
),
|
|
5478
|
+
description ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[0.9375rem] leading-relaxed text-muted-foreground", children: description }) : null
|
|
5479
|
+
] }),
|
|
5480
|
+
action ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 flex-wrap items-center gap-2", children: action }) : null
|
|
5481
|
+
] });
|
|
5482
|
+
}
|
|
5483
|
+
function ListCard({
|
|
5484
|
+
as: Tag = "ul",
|
|
5485
|
+
className,
|
|
5486
|
+
...props
|
|
5487
|
+
}) {
|
|
5488
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Tag, { className: cn("divide-y divide-border overflow-clip rounded-[1.25rem] border border-border bg-card", className), ...props });
|
|
5489
|
+
}
|
|
5490
|
+
var ROW_LOOK = {
|
|
5491
|
+
// In a ListCard: full width, the card's hairlines between rows.
|
|
5492
|
+
card: { box: "px-5", hover: "hover:bg-accent/60", current: "bg-accent" },
|
|
5493
|
+
// In a pane's list (threads, contacts): rounded, lifted when current.
|
|
5494
|
+
pane: { box: "rounded-xl px-3", hover: "hover:bg-accent", current: "bg-card shadow-sm ring-1 ring-border" }
|
|
5495
|
+
};
|
|
5496
|
+
function ListRow({
|
|
5497
|
+
title,
|
|
5498
|
+
meta,
|
|
5499
|
+
description,
|
|
5500
|
+
leading,
|
|
5501
|
+
trailing,
|
|
5502
|
+
actions,
|
|
5503
|
+
revealActions = "always",
|
|
5504
|
+
href,
|
|
5505
|
+
onSelect,
|
|
5506
|
+
current: current2 = false,
|
|
5507
|
+
unread = false,
|
|
5508
|
+
variant = "card",
|
|
5509
|
+
as: Tag = "li",
|
|
5510
|
+
className
|
|
5511
|
+
}) {
|
|
5512
|
+
const tight = useDensity() === "compact";
|
|
5513
|
+
const look = ROW_LOOK[variant];
|
|
5514
|
+
const interactive = href !== void 0 || onSelect !== void 0;
|
|
5515
|
+
const cls = cn(
|
|
5516
|
+
"flex min-h-11 w-full min-w-0 items-center gap-3 text-left outline-none transition-colors",
|
|
5517
|
+
"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
|
|
5518
|
+
look.box,
|
|
5519
|
+
variant === "pane" ? "py-2" : tight ? "py-3" : "py-4",
|
|
5520
|
+
interactive && !current2 && look.hover,
|
|
5521
|
+
current2 && look.current,
|
|
5522
|
+
actions && "pr-14"
|
|
5523
|
+
);
|
|
5524
|
+
const body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5525
|
+
leading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex shrink-0", children: leading }) : null,
|
|
5526
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
|
|
5527
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 items-baseline justify-between gap-3", children: [
|
|
5528
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("truncate text-[0.9375rem] text-foreground", unread ? "font-semibold" : "font-medium"), children: title }),
|
|
5529
|
+
meta ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "oca-tabular shrink-0 text-[0.8125rem] text-muted-foreground", children: meta }) : null
|
|
5530
|
+
] }),
|
|
5531
|
+
description ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("truncate text-[0.875rem]", unread ? "text-foreground" : "text-muted-foreground"), children: description }) : null
|
|
5532
|
+
] }),
|
|
5533
|
+
trailing ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex shrink-0 items-center gap-2", children: trailing }) : null
|
|
5534
|
+
] });
|
|
5535
|
+
const aria = current2 ? { "aria-current": "true" } : {};
|
|
5536
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Tag, { className: cn("group/row relative", className), children: [
|
|
5537
|
+
href !== void 0 ? href.startsWith("/") ? /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href, className: cls, ...aria, children: body }) : /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: cls, ...aria, children: body }) : onSelect ? /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: onSelect, className: cls, ...aria, children: body }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cls, children: body }),
|
|
5538
|
+
actions ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5539
|
+
"div",
|
|
5540
|
+
{
|
|
5541
|
+
className: cn(
|
|
5542
|
+
"absolute right-2 top-1/2 flex -translate-y-1/2 items-center",
|
|
5543
|
+
revealActions === "hover" && "transition-opacity md:opacity-0 md:focus-within:opacity-100 md:group-hover/row:opacity-100 md:has-[[data-state=open]]:opacity-100"
|
|
5544
|
+
),
|
|
5545
|
+
children: actions
|
|
5546
|
+
}
|
|
5547
|
+
) : null
|
|
5548
|
+
] });
|
|
5549
|
+
}
|
|
5550
|
+
var ChoiceSize = react.createContext("md");
|
|
5551
|
+
var COLUMNS = { 1: "", 2: "sm:grid-cols-2", 3: "sm:grid-cols-2 lg:grid-cols-3" };
|
|
5552
|
+
function ChoiceGroup({
|
|
5553
|
+
value,
|
|
5554
|
+
onValueChange,
|
|
5555
|
+
label,
|
|
5556
|
+
columns = 1,
|
|
5557
|
+
size = "md",
|
|
5558
|
+
disabled,
|
|
5559
|
+
className,
|
|
5560
|
+
children
|
|
5561
|
+
}) {
|
|
5562
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ChoiceSize.Provider, { value: size, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5563
|
+
RadioGroupPrimitive__namespace.Root,
|
|
5564
|
+
{
|
|
5565
|
+
value: value ?? "",
|
|
5566
|
+
onValueChange: (v) => onValueChange(v),
|
|
5567
|
+
"aria-label": label,
|
|
5568
|
+
disabled,
|
|
5569
|
+
className: cn("grid", size === "sm" ? "gap-1.5" : "gap-3", COLUMNS[columns], className),
|
|
5570
|
+
children
|
|
5571
|
+
}
|
|
5572
|
+
) });
|
|
5573
|
+
}
|
|
5574
|
+
function ChoiceCard({
|
|
5575
|
+
value,
|
|
5576
|
+
title,
|
|
5577
|
+
description,
|
|
5578
|
+
icon,
|
|
5579
|
+
disabled,
|
|
5580
|
+
className
|
|
5581
|
+
}) {
|
|
5582
|
+
const sm = react.useContext(ChoiceSize) === "sm";
|
|
5583
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5584
|
+
RadioGroupPrimitive__namespace.Item,
|
|
5585
|
+
{
|
|
5586
|
+
value,
|
|
5587
|
+
disabled,
|
|
5588
|
+
className: cn(
|
|
5589
|
+
"group flex w-full min-w-0 items-start gap-3 border text-left outline-none transition-colors",
|
|
5590
|
+
"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
5591
|
+
"border-border bg-card data-[state=checked]:border-foreground data-[state=checked]:bg-accent data-[state=unchecked]:hover:border-oca-hairline-strong",
|
|
5592
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
5593
|
+
sm ? "min-h-11 rounded-xl px-3.5 py-2.5" : "rounded-[1.25rem] p-5",
|
|
5594
|
+
className
|
|
5595
|
+
),
|
|
5596
|
+
children: [
|
|
5597
|
+
icon ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5598
|
+
"span",
|
|
5599
|
+
{
|
|
5600
|
+
"aria-hidden": true,
|
|
5601
|
+
className: cn(
|
|
5602
|
+
"shrink-0 text-muted-foreground group-data-[state=checked]:text-oca-accent-ink [&_svg]:size-full",
|
|
5603
|
+
sm ? "mt-0.5 size-4" : "size-6"
|
|
5604
|
+
),
|
|
5605
|
+
children: icon
|
|
5606
|
+
}
|
|
5607
|
+
) : null,
|
|
5608
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-col gap-1", children: [
|
|
5609
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: sm ? "text-[0.9375rem] font-medium" : "oca-title-sm", children: title }),
|
|
5610
|
+
description ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[0.875rem] leading-relaxed text-muted-foreground", children: description }) : null
|
|
5611
|
+
] })
|
|
5612
|
+
]
|
|
5613
|
+
}
|
|
5614
|
+
);
|
|
5615
|
+
}
|
|
5616
|
+
var SIZES2 = {
|
|
5617
|
+
"2xs": "size-7 text-[0.6875rem] [&_svg]:size-3.5",
|
|
5618
|
+
xs: "size-8 text-[0.75rem] [&_svg]:size-4",
|
|
5619
|
+
sm: "size-9 text-[0.8125rem] [&_svg]:size-4",
|
|
5620
|
+
md: "size-11 text-[0.9375rem] [&_svg]:size-5",
|
|
5621
|
+
lg: "size-14 text-[1.1875rem] [&_svg]:size-6"
|
|
5622
|
+
};
|
|
5623
|
+
function personInitials(name) {
|
|
5624
|
+
return name.trim().split(/\s+/).slice(0, 2).map((w) => w.match(/[\p{L}\p{N}]/u)?.[0] ?? "").join("").toLocaleUpperCase();
|
|
5625
|
+
}
|
|
5626
|
+
function avatarHue(seed) {
|
|
5627
|
+
let h = 2166136261;
|
|
5628
|
+
for (let i = 0; i < seed.length; i++) {
|
|
5629
|
+
h ^= seed.charCodeAt(i);
|
|
5630
|
+
h = Math.imul(h, 16777619);
|
|
5631
|
+
}
|
|
5632
|
+
return (h >>> 0) % 360;
|
|
5633
|
+
}
|
|
5634
|
+
function Avatar({
|
|
5635
|
+
seed,
|
|
5636
|
+
name,
|
|
5637
|
+
src,
|
|
5638
|
+
size = "sm",
|
|
5639
|
+
className
|
|
5640
|
+
}) {
|
|
5641
|
+
const [failed, setFailed] = react.useState(null);
|
|
5642
|
+
const box = cn("inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full", SIZES2[size], className);
|
|
5643
|
+
if (src && failed !== src) {
|
|
5644
|
+
return (
|
|
5645
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
5646
|
+
/* @__PURE__ */ jsxRuntime.jsx("img", { src, alt: "", "aria-hidden": true, className: cn(box, "object-cover"), onError: () => setFailed(src) })
|
|
5647
|
+
);
|
|
5648
|
+
}
|
|
5649
|
+
const initials = name ? personInitials(name) : "";
|
|
5650
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5651
|
+
"span",
|
|
5652
|
+
{
|
|
5653
|
+
"aria-hidden": true,
|
|
5654
|
+
className: cn(box, "font-medium leading-none"),
|
|
5655
|
+
style: {
|
|
5656
|
+
"--oca-avatar-h": avatarHue(seed),
|
|
5657
|
+
backgroundColor: "hsl(var(--oca-avatar-h) 60% var(--oca-avatar-bg-l))",
|
|
5658
|
+
color: "hsl(var(--oca-avatar-h) 45% var(--oca-avatar-fg-l))"
|
|
5659
|
+
},
|
|
5660
|
+
children: initials || /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserRound, {})
|
|
5661
|
+
}
|
|
5662
|
+
);
|
|
5663
|
+
}
|
|
5427
5664
|
function useMacKeys() {
|
|
5428
5665
|
const [mac, setMac] = react.useState(true);
|
|
5429
5666
|
react.useEffect(() => {
|
|
@@ -5699,7 +5936,7 @@ function download(content, filename, mime) {
|
|
|
5699
5936
|
a.remove();
|
|
5700
5937
|
setTimeout(() => URL.revokeObjectURL(url), 0);
|
|
5701
5938
|
}
|
|
5702
|
-
var BAR_BUTTON = "inline-flex h-7 items-center gap-1.5 rounded-full px-2.5 text-[0.75rem] text-oca-ink-subtle transition-colors hover:bg-white/10 hover:text-white";
|
|
5939
|
+
var BAR_BUTTON = "inline-flex h-7 items-center gap-1.5 rounded-full px-2.5 text-[0.75rem] text-oca-ink-subtle transition-colors hover:bg-white/10 hover:text-white max-md:h-11 max-md:min-w-11 max-md:justify-center max-md:px-3";
|
|
5703
5940
|
function ArtifactView({
|
|
5704
5941
|
content,
|
|
5705
5942
|
title,
|
|
@@ -5729,7 +5966,8 @@ function ArtifactView({
|
|
|
5729
5966
|
"aria-pressed": view === v,
|
|
5730
5967
|
onClick: () => setView(v),
|
|
5731
5968
|
className: cn(
|
|
5732
|
-
|
|
5969
|
+
// The pill stays 28px; its target reaches the bar's 44.
|
|
5970
|
+
"relative h-7 rounded-full px-2.5 text-[0.75rem] transition-colors before:absolute before:inset-x-0 before:top-1/2 before:h-11 before:-translate-y-1/2",
|
|
5733
5971
|
view === v ? "bg-white/[0.12] text-white" : "text-oca-ink-subtle hover:text-white"
|
|
5734
5972
|
),
|
|
5735
5973
|
children: v === "formatted" ? "Formatted" : "Raw"
|
|
@@ -6199,7 +6437,8 @@ function FilterChips({
|
|
|
6199
6437
|
onClick: () => press(o.value),
|
|
6200
6438
|
className: cn(
|
|
6201
6439
|
"inline-flex shrink-0 items-center gap-1.5 rounded-full border px-3.5 text-[0.875rem] transition-colors",
|
|
6202
|
-
|
|
6440
|
+
// A thumb's 44px on a phone.
|
|
6441
|
+
tight ? "h-11 md:h-8" : "h-11 md:h-9",
|
|
6203
6442
|
on ? "border-foreground bg-foreground text-background" : "border-border bg-card text-muted-foreground hover:border-oca-hairline-strong hover:text-foreground"
|
|
6204
6443
|
),
|
|
6205
6444
|
children: [
|
|
@@ -6249,7 +6488,7 @@ function ToolGrid({
|
|
|
6249
6488
|
] }),
|
|
6250
6489
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
6251
6490
|
/* @__PURE__ */ jsxRuntime.jsx(Heading, { className: "oca-title-sm", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6252
|
-
|
|
6491
|
+
Link7__default.default,
|
|
6253
6492
|
{
|
|
6254
6493
|
href: t.href,
|
|
6255
6494
|
className: "outline-none after:absolute after:inset-0 after:rounded-[1.25rem] after:content-['']",
|
|
@@ -6346,7 +6585,7 @@ function SideNav({ groups, onNavigate }) {
|
|
|
6346
6585
|
return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Pages", className: "flex flex-col gap-5", children: groups.map((g, gi) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5", children: [
|
|
6347
6586
|
g.label ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-3 pb-1 text-[0.8125rem] text-muted-foreground", children: g.label }) : null,
|
|
6348
6587
|
g.items.map((it) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6349
|
-
|
|
6588
|
+
Link7__default.default,
|
|
6350
6589
|
{
|
|
6351
6590
|
href: it.href,
|
|
6352
6591
|
onClick: onNavigate,
|
|
@@ -6381,7 +6620,7 @@ function SectionSwitch({
|
|
|
6381
6620
|
children: sections.map((sec) => {
|
|
6382
6621
|
const on = sec.id === current2.id;
|
|
6383
6622
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6384
|
-
|
|
6623
|
+
Link7__default.default,
|
|
6385
6624
|
{
|
|
6386
6625
|
href: sec.href,
|
|
6387
6626
|
onClick: onNavigate,
|
|
@@ -6454,7 +6693,7 @@ function TabBar({ items }) {
|
|
|
6454
6693
|
style: { gridTemplateColumns: `repeat(${shown.length + (overflow ? 1 : 0)}, minmax(0, 1fr))` },
|
|
6455
6694
|
children: [
|
|
6456
6695
|
shown.map((it) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6457
|
-
|
|
6696
|
+
Link7__default.default,
|
|
6458
6697
|
{
|
|
6459
6698
|
href: it.href,
|
|
6460
6699
|
"aria-current": it.active ? "page" : void 0,
|
|
@@ -6474,7 +6713,7 @@ function TabBar({ items }) {
|
|
|
6474
6713
|
/* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { side: "bottom", className: "pb-[calc(1.5rem+env(safe-area-inset-bottom))]", children: [
|
|
6475
6714
|
/* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { className: "px-1 text-[1.0625rem] font-medium", children: "More" }),
|
|
6476
6715
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 grid grid-cols-3 gap-2", children: rest.map((it) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6477
|
-
|
|
6716
|
+
Link7__default.default,
|
|
6478
6717
|
{
|
|
6479
6718
|
href: it.href,
|
|
6480
6719
|
onClick: () => setMore(false),
|
|
@@ -6588,7 +6827,7 @@ function SidebarShell({
|
|
|
6588
6827
|
footer ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto flex flex-col gap-3", children: footer }) : null
|
|
6589
6828
|
] })
|
|
6590
6829
|
] }),
|
|
6591
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6830
|
+
/* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: home, "aria-label": "Home", className: "rounded-lg p-1", children: /* @__PURE__ */ jsxRuntime.jsx(Lockup, { size: 22 }) }),
|
|
6592
6831
|
familyMenu,
|
|
6593
6832
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-auto flex items-center", children: account })
|
|
6594
6833
|
] }),
|
|
@@ -6613,7 +6852,7 @@ function SidebarShell({
|
|
|
6613
6852
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto flex w-full max-w-[90rem]", children: [
|
|
6614
6853
|
/* @__PURE__ */ jsxRuntime.jsxs("aside", { className: "sticky top-0 hidden h-dvh w-[17rem] shrink-0 flex-col gap-6 overflow-y-auto px-4 py-6 lg:flex", children: [
|
|
6615
6854
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
6616
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6855
|
+
/* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: home, className: "px-2", "aria-label": "Home", children: /* @__PURE__ */ jsxRuntime.jsx(Lockup, { size: 26 }) }),
|
|
6617
6856
|
familyMenu
|
|
6618
6857
|
] }),
|
|
6619
6858
|
switcher,
|
|
@@ -6623,7 +6862,7 @@ function SidebarShell({
|
|
|
6623
6862
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
6624
6863
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden h-[4.5rem] items-center justify-end gap-3 px-8 lg:flex", children: account }),
|
|
6625
6864
|
banner ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-2 pt-4 md:px-8 lg:pt-0", children: banner }) : null,
|
|
6626
|
-
/* @__PURE__ */ jsxRuntime.jsx("main", { id: "main-content", className: "flex-1 px-4 pb-16 pt-6 md:px-8 lg:pt-2", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto w-full max-w-[72rem]", children }) })
|
|
6865
|
+
/* @__PURE__ */ jsxRuntime.jsx("main", { id: "main-content", className: "flex-1 px-4 pb-16 pt-6 md:px-8 lg:pt-2", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto w-full max-w-[72rem]", children: /* @__PURE__ */ jsxRuntime.jsx(InColumnContext.Provider, { value: true, children }) }) })
|
|
6627
6866
|
] })
|
|
6628
6867
|
] }),
|
|
6629
6868
|
tabs ? /* @__PURE__ */ jsxRuntime.jsx(TabBar, { items: tabs }) : null
|
|
@@ -6634,7 +6873,7 @@ function SidebarShell({
|
|
|
6634
6873
|
function RailItem({ item }) {
|
|
6635
6874
|
return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
|
|
6636
6875
|
/* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6637
|
-
|
|
6876
|
+
Link7__default.default,
|
|
6638
6877
|
{
|
|
6639
6878
|
href: item.href,
|
|
6640
6879
|
"aria-current": item.active ? "page" : void 0,
|
|
@@ -6689,6 +6928,9 @@ function RailShell({ nav = [], persistent = [], page: pageOverride, header, acco
|
|
|
6689
6928
|
tabs ? /* @__PURE__ */ jsxRuntime.jsx(TabBar, { items: tabs }) : null
|
|
6690
6929
|
] }) }) });
|
|
6691
6930
|
}
|
|
6931
|
+
function PaneHeader({ children, className }) {
|
|
6932
|
+
return /* @__PURE__ */ jsxRuntime.jsx("header", { className: cn("flex h-14 shrink-0 items-center gap-3 border-b border-border px-4 md:px-5", className), children });
|
|
6933
|
+
}
|
|
6692
6934
|
function AccountMenu({
|
|
6693
6935
|
name,
|
|
6694
6936
|
detail,
|
|
@@ -6725,7 +6967,7 @@ function AccountMenu({
|
|
|
6725
6967
|
] }),
|
|
6726
6968
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
|
|
6727
6969
|
items.map(
|
|
6728
|
-
(it, i) => it === "separator" ? /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}, `sep-${i}`) : it.href ? /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, destructive: it.destructive, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6970
|
+
(it, i) => it === "separator" ? /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}, `sep-${i}`) : it.href ? /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, destructive: it.destructive, children: /* @__PURE__ */ jsxRuntime.jsxs(Link7__default.default, { href: it.href, children: [
|
|
6729
6971
|
it.icon,
|
|
6730
6972
|
it.label
|
|
6731
6973
|
] }) }, it.label) : /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuItem, { onSelect: it.onSelect, destructive: it.destructive, children: [
|
|
@@ -6774,7 +7016,7 @@ function NavLink({
|
|
|
6774
7016
|
if (item.external) {
|
|
6775
7017
|
return /* @__PURE__ */ jsxRuntime.jsx("a", { href: item.href, className: cls, rel: "noreferrer", onClick: onNavigate, children: item.label });
|
|
6776
7018
|
}
|
|
6777
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7019
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: item.href, className: cls, "aria-current": item.active ? "page" : void 0, onClick: onNavigate, children: item.label });
|
|
6778
7020
|
}
|
|
6779
7021
|
function NavRow({ item, onNavigate }) {
|
|
6780
7022
|
const body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -6785,7 +7027,7 @@ function NavRow({ item, onNavigate }) {
|
|
|
6785
7027
|
"flex flex-col gap-0.5 rounded-xl px-3 py-2 transition-colors hover:bg-accent",
|
|
6786
7028
|
item.active && "bg-muted hover:bg-muted dark:bg-white/[0.06]"
|
|
6787
7029
|
);
|
|
6788
|
-
return item.external ? /* @__PURE__ */ jsxRuntime.jsx("a", { href: item.href, className: cls, rel: "noreferrer", onClick: onNavigate, children: body }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
7030
|
+
return item.external ? /* @__PURE__ */ jsxRuntime.jsx("a", { href: item.href, className: cls, rel: "noreferrer", onClick: onNavigate, children: body }) : /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: item.href, className: cls, "aria-current": item.active ? "page" : void 0, onClick: onNavigate, children: body });
|
|
6789
7031
|
}
|
|
6790
7032
|
var seeAll = (item) => typeof item.label === "string" ? `All ${item.label.toLowerCase()}` : "See all";
|
|
6791
7033
|
function NavDropdown({ item }) {
|
|
@@ -6818,6 +7060,18 @@ function NavDropdown({ item }) {
|
|
|
6818
7060
|
] })
|
|
6819
7061
|
] });
|
|
6820
7062
|
}
|
|
7063
|
+
function AccountCta({ href = GET_AN_ACCOUNT.href, className }) {
|
|
7064
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Button, { asChild: true, size: "sm", className, children: /* @__PURE__ */ jsxRuntime.jsx("a", { href, children: GET_AN_ACCOUNT.label }) });
|
|
7065
|
+
}
|
|
7066
|
+
function ProductLockup({ size, product }) {
|
|
7067
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center", children: [
|
|
7068
|
+
/* @__PURE__ */ jsxRuntime.jsx(Lockup, { size }),
|
|
7069
|
+
product ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7070
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "mx-3 h-5 w-px bg-oca-hairline-strong" }),
|
|
7071
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium tracking-[-0.01em]", style: { fontSize: size * 0.56 }, children: product })
|
|
7072
|
+
] }) : null
|
|
7073
|
+
] });
|
|
7074
|
+
}
|
|
6821
7075
|
function SiteHeader({
|
|
6822
7076
|
home = "/",
|
|
6823
7077
|
brand,
|
|
@@ -6837,13 +7091,7 @@ function SiteHeader({
|
|
|
6837
7091
|
const current2 = typeof family === "string" ? family : void 0;
|
|
6838
7092
|
const phoneNav = navOnPhone ? nav : [];
|
|
6839
7093
|
const menu = phoneNav.length > 0 || Boolean(family) || Boolean(menuExtra);
|
|
6840
|
-
const brandNode = brand ?? /* @__PURE__ */ jsxRuntime.
|
|
6841
|
-
/* @__PURE__ */ jsxRuntime.jsx(Lockup, { size }),
|
|
6842
|
-
product ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6843
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "mx-3 h-5 w-px bg-oca-hairline-strong" }),
|
|
6844
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium tracking-[-0.01em]", style: { fontSize: size * 0.56 }, children: product })
|
|
6845
|
-
] }) : null
|
|
6846
|
-
] });
|
|
7094
|
+
const brandNode = brand ?? /* @__PURE__ */ jsxRuntime.jsx(ProductLockup, { size, product });
|
|
6847
7095
|
const navigation = nav.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Main", className: "hidden items-center gap-1 md:flex", children: nav.map(
|
|
6848
7096
|
(n) => n.children?.length ? /* @__PURE__ */ jsxRuntime.jsx(NavDropdown, { item: n }, n.href) : (
|
|
6849
7097
|
// Between md and lg the family menu and the actions share the row: tighter.
|
|
@@ -6871,7 +7119,7 @@ function SiteHeader({
|
|
|
6871
7119
|
),
|
|
6872
7120
|
children: [
|
|
6873
7121
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex min-w-0 items-center gap-1", tool ? "md:gap-1" : "justify-self-start"), children: [
|
|
6874
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7122
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Link7__default.default, { href: home, className: "-ml-1 min-w-0 rounded-lg p-1", children: [
|
|
6875
7123
|
brandNode,
|
|
6876
7124
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: " home" })
|
|
6877
7125
|
] }),
|
|
@@ -6973,7 +7221,7 @@ function SiteBanner({
|
|
|
6973
7221
|
var FOOT_LINK = "inline-flex min-h-11 items-center transition-colors hover:text-foreground md:min-h-0";
|
|
6974
7222
|
function LegalRow({ links }) {
|
|
6975
7223
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-x-6 gap-y-2 sm:flex-row sm:items-center sm:justify-between", children: [
|
|
6976
|
-
/* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Legal", children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-wrap gap-x-5", children: links.map((l) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: l.href.startsWith("/") ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7224
|
+
/* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Legal", children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-wrap gap-x-5", children: links.map((l, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: l.href.startsWith("/") ? /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: l.href, className: FOOT_LINK, children: l.label }) : /* @__PURE__ */ jsxRuntime.jsx("a", { href: l.href, className: FOOT_LINK, children: l.label }) }, `${i}:${l.label}`)) }) }),
|
|
6977
7225
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
6978
7226
|
"\xA9 ",
|
|
6979
7227
|
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
@@ -6993,16 +7241,26 @@ function SiteFooter({
|
|
|
6993
7241
|
}) {
|
|
6994
7242
|
const legalLinks = legal === true ? LEGAL_LINKS : legal || null;
|
|
6995
7243
|
if (compact) {
|
|
6996
|
-
return
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
|
|
7001
|
-
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
7244
|
+
return (
|
|
7245
|
+
// The tools' column (ToolColumn): the lockup lines up with the page's title.
|
|
7246
|
+
/* @__PURE__ */ jsxRuntime.jsx("footer", { className: cn("border-t border-border bg-background px-4 text-[0.875rem] text-muted-foreground md:px-8", className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto flex w-full max-w-[72rem] flex-col gap-x-8 gap-y-3 py-5 lg:flex-row lg:items-center lg:justify-between", children: [
|
|
7247
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-6 gap-y-3", children: [
|
|
7248
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7249
|
+
"a",
|
|
7250
|
+
{
|
|
7251
|
+
href: OCHK_IO,
|
|
7252
|
+
className: "relative rounded-lg text-foreground before:absolute before:inset-x-0 before:top-1/2 before:h-11 before:-translate-y-1/2",
|
|
7253
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Lockup, { size: 22 })
|
|
7254
|
+
}
|
|
7255
|
+
),
|
|
7256
|
+
family ? /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Protocols", children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-wrap gap-x-4", children: PROTOCOLS.map((p) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: p.pageHref, className: FOOT_LINK, children: p.label }) }, p.slug)) }) }) : null
|
|
7257
|
+
] }),
|
|
7258
|
+
legalLinks || meta ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-x-6 gap-y-2 sm:flex-row sm:flex-wrap sm:items-center", children: [
|
|
7259
|
+
legalLinks ? /* @__PURE__ */ jsxRuntime.jsx(LegalRow, { links: legalLinks }) : null,
|
|
7260
|
+
meta
|
|
7261
|
+
] }) : null
|
|
7262
|
+
] }) })
|
|
7263
|
+
);
|
|
7006
7264
|
}
|
|
7007
7265
|
const cols = [
|
|
7008
7266
|
...columns,
|
|
@@ -7037,17 +7295,17 @@ function SiteFooter({
|
|
|
7037
7295
|
className: cn("flex min-w-0 flex-col gap-1", spans && "col-span-2 md:col-span-1"),
|
|
7038
7296
|
children: [
|
|
7039
7297
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-[0.875rem] font-medium", children: col.heading }),
|
|
7040
|
-
/* @__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(
|
|
7298
|
+
/* @__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, j) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7041
7299
|
NavLink,
|
|
7042
7300
|
{
|
|
7043
7301
|
item: l,
|
|
7044
7302
|
className: "-mx-3 py-2.5 text-[0.9375rem] md:py-1.5"
|
|
7045
7303
|
},
|
|
7046
|
-
l.
|
|
7304
|
+
`${j}:${l.label}`
|
|
7047
7305
|
)) })
|
|
7048
7306
|
]
|
|
7049
7307
|
},
|
|
7050
|
-
col.heading
|
|
7308
|
+
`${i}:${col.heading}`
|
|
7051
7309
|
);
|
|
7052
7310
|
})
|
|
7053
7311
|
]
|
|
@@ -7083,12 +7341,13 @@ function OchkIoFooter({ columns = OCHK_IO_FOOTER, className }) {
|
|
|
7083
7341
|
);
|
|
7084
7342
|
}
|
|
7085
7343
|
function SignInFrame({
|
|
7086
|
-
title =
|
|
7344
|
+
title = SIGN_IN_LABEL,
|
|
7087
7345
|
lead,
|
|
7088
7346
|
children,
|
|
7089
7347
|
error,
|
|
7090
7348
|
fineprint,
|
|
7091
7349
|
brand,
|
|
7350
|
+
product,
|
|
7092
7351
|
home,
|
|
7093
7352
|
protocol: protocol2,
|
|
7094
7353
|
back,
|
|
@@ -7105,12 +7364,12 @@ function SignInFrame({
|
|
|
7105
7364
|
children: [
|
|
7106
7365
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex flex-col px-4 pb-8 pt-5 sm:px-8 lg:px-14 lg:pt-8", children: [
|
|
7107
7366
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "flex items-center justify-between gap-4", children: [
|
|
7108
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7109
|
-
brand ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7367
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Link7__default.default, { href: homeHref, className: "w-fit rounded-lg", children: [
|
|
7368
|
+
brand ?? /* @__PURE__ */ jsxRuntime.jsx(ProductLockup, { size: 28, product: product ?? (protocol2 ? protocolSite(protocol2).label : void 0) }),
|
|
7110
7369
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: " home" })
|
|
7111
7370
|
] }),
|
|
7112
7371
|
back === void 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7113
|
-
|
|
7372
|
+
Link7__default.default,
|
|
7114
7373
|
{
|
|
7115
7374
|
href: homeHref,
|
|
7116
7375
|
className: "text-[0.9375rem] text-muted-foreground underline-offset-4 hover:text-foreground hover:underline",
|
|
@@ -7205,7 +7464,7 @@ function DocsNav({
|
|
|
7205
7464
|
const on = pathOf(item.href) === here;
|
|
7206
7465
|
const badge = typeof item.badge === "string" && STATUS_WORDS.has(item.badge) ? /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status: item.badge }) : item.badge ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { tone: "muted", children: item.badge }) : null;
|
|
7207
7466
|
return /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7208
|
-
|
|
7467
|
+
Link7__default.default,
|
|
7209
7468
|
{
|
|
7210
7469
|
href: item.href,
|
|
7211
7470
|
ref: on ? activeRef : void 0,
|
|
@@ -7317,7 +7576,7 @@ function SessionAccountView({
|
|
|
7317
7576
|
items = [],
|
|
7318
7577
|
signInHref,
|
|
7319
7578
|
signInPath,
|
|
7320
|
-
signInLabel =
|
|
7579
|
+
signInLabel = SIGN_IN_LABEL,
|
|
7321
7580
|
accountHref = OCHK_APP_ACCOUNT,
|
|
7322
7581
|
onSignOut,
|
|
7323
7582
|
nameFrom = "lg"
|
|
@@ -7348,6 +7607,13 @@ function SessionAccountView({
|
|
|
7348
7607
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: state === "checking" ? "contents invisible" : "contents", "aria-hidden": state === "checking" || void 0, children: /* @__PURE__ */ jsxRuntime.jsx(Button, { asChild: true, size: "sm", variant: "secondary", tabIndex: state === "checking" ? -1 : void 0, children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: signInHref ?? inPlace ?? "https://ochk.io/signin", children: signInLabel }) }) })
|
|
7349
7608
|
);
|
|
7350
7609
|
}
|
|
7610
|
+
function ToolColumn({
|
|
7611
|
+
measure = "wide",
|
|
7612
|
+
className,
|
|
7613
|
+
children
|
|
7614
|
+
}) {
|
|
7615
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("px-4 pb-16 pt-8 md:px-8 md:pt-10", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto w-full max-w-[72rem]", children: /* @__PURE__ */ jsxRuntime.jsx(InColumnContext.Provider, { value: true, children: measure === "narrow" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-[48rem]", children }) : children }) }) });
|
|
7616
|
+
}
|
|
7351
7617
|
function ToolShell({
|
|
7352
7618
|
protocol: protocol2,
|
|
7353
7619
|
tools,
|
|
@@ -7356,6 +7622,7 @@ function ToolShell({
|
|
|
7356
7622
|
rail = false,
|
|
7357
7623
|
railFooter,
|
|
7358
7624
|
variant = "tool",
|
|
7625
|
+
measure = "wide",
|
|
7359
7626
|
banner,
|
|
7360
7627
|
footer,
|
|
7361
7628
|
children
|
|
@@ -7413,14 +7680,7 @@ function ToolShell({
|
|
|
7413
7680
|
/* @__PURE__ */ jsxRuntime.jsx(SideNav, { groups: [{ label: "Tools", items: tools.map(({ href, label, icon, active }) => ({ href, label, icon, active })) }] }),
|
|
7414
7681
|
railFooter ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto flex flex-col gap-0.5 px-3 text-[0.875rem] text-muted-foreground [&_a:hover]:text-foreground [&_a]:py-1.5 [&_a]:transition-colors", children: railFooter }) : null
|
|
7415
7682
|
] }) : null,
|
|
7416
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7417
|
-
"main",
|
|
7418
|
-
{
|
|
7419
|
-
id: "main-content",
|
|
7420
|
-
className: cn("min-w-0 flex-1", app ? "flex min-h-0 flex-col" : "px-4 pb-16 pt-8 md:px-8 md:pt-10"),
|
|
7421
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(SiteHomeContext.Provider, { value: homeHref, children: app ? children : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto w-full max-w-[72rem]", children }) })
|
|
7422
|
-
}
|
|
7423
|
-
)
|
|
7683
|
+
/* @__PURE__ */ jsxRuntime.jsx("main", { id: "main-content", className: cn("min-w-0 flex-1", app && "flex min-h-0 flex-col"), children: /* @__PURE__ */ jsxRuntime.jsx(SiteHomeContext.Provider, { value: homeHref, children: app ? children : /* @__PURE__ */ jsxRuntime.jsx(ToolColumn, { measure, children }) }) })
|
|
7424
7684
|
] }),
|
|
7425
7685
|
app || footer === false ? null : footer ?? /* @__PURE__ */ jsxRuntime.jsx(SiteFooter, { compact: true, family: true, legal: true }),
|
|
7426
7686
|
tabs ? /* @__PURE__ */ jsxRuntime.jsx(TabBar, { items: tabs }) : null
|
|
@@ -7606,6 +7866,7 @@ exports.APP_ID = APP_ID;
|
|
|
7606
7866
|
exports.Accent = Accent;
|
|
7607
7867
|
exports.Accordion = Accordion;
|
|
7608
7868
|
exports.AccordionItem = AccordionItem;
|
|
7869
|
+
exports.AccountCta = AccountCta;
|
|
7609
7870
|
exports.AccountMenu = AccountMenu;
|
|
7610
7871
|
exports.ActivityList = ActivityList;
|
|
7611
7872
|
exports.AnchorStatus = AnchorStatus;
|
|
@@ -7615,6 +7876,7 @@ exports.AppGrid = AppGrid;
|
|
|
7615
7876
|
exports.AppIcon = AppIcon;
|
|
7616
7877
|
exports.AppShell = AppShell;
|
|
7617
7878
|
exports.ArtifactView = ArtifactView;
|
|
7879
|
+
exports.Avatar = Avatar;
|
|
7618
7880
|
exports.Badge = Badge;
|
|
7619
7881
|
exports.BlockCountdown = BlockCountdown;
|
|
7620
7882
|
exports.BlockHeight = BlockHeight;
|
|
@@ -7633,6 +7895,8 @@ exports.CardNumeral = CardNumeral;
|
|
|
7633
7895
|
exports.CardTitle = CardTitle;
|
|
7634
7896
|
exports.ChartFrame = ChartFrame;
|
|
7635
7897
|
exports.Checkbox = Checkbox;
|
|
7898
|
+
exports.ChoiceCard = ChoiceCard;
|
|
7899
|
+
exports.ChoiceGroup = ChoiceGroup;
|
|
7636
7900
|
exports.Closing = Closing;
|
|
7637
7901
|
exports.CodeBlock = CodeBlock;
|
|
7638
7902
|
exports.CodeTabs = CodeTabs;
|
|
@@ -7688,6 +7952,7 @@ exports.FilterChips = FilterChips;
|
|
|
7688
7952
|
exports.FloatChip = FloatChip;
|
|
7689
7953
|
exports.Footnote = Footnote;
|
|
7690
7954
|
exports.FormSection = FormSection;
|
|
7955
|
+
exports.GET_AN_ACCOUNT = GET_AN_ACCOUNT;
|
|
7691
7956
|
exports.HalftoneCanvas = HalftoneCanvas;
|
|
7692
7957
|
exports.HalftoneSphere = HalftoneSphere;
|
|
7693
7958
|
exports.HashChip = HashChip;
|
|
@@ -7702,6 +7967,8 @@ exports.Label = Label;
|
|
|
7702
7967
|
exports.Lead = Lead;
|
|
7703
7968
|
exports.LegalDocument = LegalDocument;
|
|
7704
7969
|
exports.LinkCard = LinkCard;
|
|
7970
|
+
exports.ListCard = ListCard;
|
|
7971
|
+
exports.ListRow = ListRow;
|
|
7705
7972
|
exports.LoadingBlock = LoadingBlock;
|
|
7706
7973
|
exports.LockedPreview = LockedPreview;
|
|
7707
7974
|
exports.Lockup = Lockup;
|
|
@@ -7711,6 +7978,7 @@ exports.MdxTable = MdxTable;
|
|
|
7711
7978
|
exports.Meter = Meter;
|
|
7712
7979
|
exports.Monogram = Monogram;
|
|
7713
7980
|
exports.Notice = Notice;
|
|
7981
|
+
exports.OCHK_APP = OCHK_APP;
|
|
7714
7982
|
exports.OCHK_APP_ACCOUNT = OCHK_APP_ACCOUNT;
|
|
7715
7983
|
exports.OCHK_IO = OCHK_IO;
|
|
7716
7984
|
exports.OCHK_IO_FOOTER = OCHK_IO_FOOTER;
|
|
@@ -7723,6 +7991,7 @@ exports.PackageCard = PackageCard;
|
|
|
7723
7991
|
exports.PageHeader = PageHeader;
|
|
7724
7992
|
exports.PageHero = PageHero;
|
|
7725
7993
|
exports.Pagination = Pagination;
|
|
7994
|
+
exports.PaneHeader = PaneHeader;
|
|
7726
7995
|
exports.Panel = Panel;
|
|
7727
7996
|
exports.PhoneFrame = PhoneFrame;
|
|
7728
7997
|
exports.PlanCard = PlanCard;
|
|
@@ -7741,6 +8010,7 @@ exports.RadioGroup = RadioGroup;
|
|
|
7741
8010
|
exports.RadioGroupItem = RadioGroupItem;
|
|
7742
8011
|
exports.Reveal = Reveal;
|
|
7743
8012
|
exports.SELF_HOSTED_LEGAL_LINKS = SELF_HOSTED_LEGAL_LINKS;
|
|
8013
|
+
exports.SIGN_IN_LABEL = SIGN_IN_LABEL;
|
|
7744
8014
|
exports.SPHERE_GRADIENT = SPHERE_GRADIENT;
|
|
7745
8015
|
exports.Sats = Sats;
|
|
7746
8016
|
exports.SatsFigure = SatsFigure;
|
|
@@ -7751,6 +8021,7 @@ exports.SearchDialog = SearchDialog;
|
|
|
7751
8021
|
exports.Section = Section;
|
|
7752
8022
|
exports.SectionHeading = SectionHeading;
|
|
7753
8023
|
exports.SectionIntro = SectionIntro;
|
|
8024
|
+
exports.SectionTitle = SectionTitle;
|
|
7754
8025
|
exports.Select = Select;
|
|
7755
8026
|
exports.SelectContent = SelectContent;
|
|
7756
8027
|
exports.SelectGroup = SelectGroup;
|
|
@@ -7798,6 +8069,7 @@ exports.Textarea = Textarea;
|
|
|
7798
8069
|
exports.ThemeToggle = ThemeToggle;
|
|
7799
8070
|
exports.Ticker = Ticker;
|
|
7800
8071
|
exports.Toaster = Toaster;
|
|
8072
|
+
exports.ToolColumn = ToolColumn;
|
|
7801
8073
|
exports.ToolGrid = ToolGrid;
|
|
7802
8074
|
exports.ToolShell = ToolShell;
|
|
7803
8075
|
exports.Tooltip = Tooltip;
|