@orangecheck/app-design 1.1.0 → 1.2.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.
Files changed (43) hide show
  1. package/dist/chrome.d.mts +4 -4
  2. package/dist/chrome.d.ts +4 -4
  3. package/dist/chrome.js +9 -7
  4. package/dist/chrome.js.map +1 -1
  5. package/dist/chrome.mjs +9 -7
  6. package/dist/chrome.mjs.map +1 -1
  7. package/dist/components.d.mts +3 -3
  8. package/dist/components.d.ts +3 -3
  9. package/dist/components.js +9 -2
  10. package/dist/components.js.map +1 -1
  11. package/dist/components.mjs +10 -3
  12. package/dist/components.mjs.map +1 -1
  13. package/dist/{docs-DhnstueM.d.ts → docs-Dxg4Tp_q.d.ts} +2 -2
  14. package/dist/{docs-DiR6s43s.d.mts → docs-wJBfLS08.d.mts} +2 -2
  15. package/dist/family.d.mts +1 -1
  16. package/dist/family.d.ts +1 -1
  17. package/dist/family.js +10 -1
  18. package/dist/family.js.map +1 -1
  19. package/dist/family.mjs +10 -2
  20. package/dist/family.mjs.map +1 -1
  21. package/dist/{index-C6hDqOOS.d.mts → index-DmfyPYe5.d.mts} +2 -1
  22. package/dist/{index-C6hDqOOS.d.ts → index-DmfyPYe5.d.ts} +2 -1
  23. package/dist/index.d.mts +4 -4
  24. package/dist/index.d.ts +4 -4
  25. package/dist/index.js +24 -8
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +24 -9
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/mdx.d.mts +3 -3
  30. package/dist/mdx.d.ts +3 -3
  31. package/dist/mdx.js +9 -2
  32. package/dist/mdx.js.map +1 -1
  33. package/dist/mdx.mjs +9 -2
  34. package/dist/mdx.mjs.map +1 -1
  35. package/dist/primitives.d.mts +2 -2
  36. package/dist/primitives.d.ts +2 -2
  37. package/dist/session.d.mts +3 -3
  38. package/dist/session.d.ts +3 -3
  39. package/dist/{status-badge-DRwGhB0h.d.mts → status-badge-BJ9Sdsx8.d.mts} +1 -1
  40. package/dist/{status-badge-BEOxeY9j.d.ts → status-badge-Bt8x3RhO.d.ts} +1 -1
  41. package/dist/{tool-shell-B1C7ahKE.d.ts → tool-shell-DLSwUxTD.d.ts} +1 -1
  42. package/dist/{tool-shell-BDx_N5ai.d.mts → tool-shell-kqGWMTep.d.mts} +1 -1
  43. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, HTMLAttributes, TableHTMLAttributes } from 'react';
3
- import { j as ProtocolSlug, S as SiteStatus, b as FamilyGroup, d as FamilySlug } from './index-C6hDqOOS.js';
4
- import { a as Status } from './status-badge-BEOxeY9j.js';
3
+ import { j as ProtocolSlug, k as SiteStatus, b as FamilyGroup, d as FamilySlug } from './index-DmfyPYe5.js';
4
+ import { a as Status } from './status-badge-Bt8x3RhO.js';
5
5
  import { T as TocItem } from './hero-Dn37il-9.js';
6
6
 
7
7
  declare function languageName(lang?: string): string | undefined;
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, HTMLAttributes, TableHTMLAttributes } from 'react';
3
- import { j as ProtocolSlug, S as SiteStatus, b as FamilyGroup, d as FamilySlug } from './index-C6hDqOOS.mjs';
4
- import { a as Status } from './status-badge-DRwGhB0h.mjs';
3
+ import { j as ProtocolSlug, k as SiteStatus, b as FamilyGroup, d as FamilySlug } from './index-DmfyPYe5.mjs';
4
+ import { a as Status } from './status-badge-BJ9Sdsx8.mjs';
5
5
  import { T as TocItem } from './hero-Dn37il-9.mjs';
6
6
 
7
7
  declare function languageName(lang?: string): string | undefined;
package/dist/family.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export { D as DOCS_HREF, F as FAMILY, a as FAMILY_GROUPS, b as FamilyGroup, c as FamilySite, d as FamilySlug, L as LEGAL_LINKS, O as OCHK_IO, f as OCHK_IO_FOOTER, g as OCHK_IO_NAV, P as PROTOCOLS, h as PROTOCOL_ORDER, i as ProtocolSite, j as ProtocolSlug, S as SiteStatus, k as familyByGroup, l as familySite, p as protocolSite } from './index-C6hDqOOS.mjs';
1
+ export { D as DOCS_HREF, F as FAMILY, a as FAMILY_GROUPS, b as FamilyGroup, c as FamilySite, d as FamilySlug, L as LEGAL_LINKS, O as OCHK_IO, f as OCHK_IO_FOOTER, g as OCHK_IO_NAV, P as PROTOCOLS, h as PROTOCOL_ORDER, i as ProtocolSite, j as ProtocolSlug, S as SELF_HOSTED_LEGAL_LINKS, k as SiteStatus, l as familyByGroup, m as familySite, p as protocolSite } from './index-DmfyPYe5.mjs';
2
2
  import 'react';
package/dist/family.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { D as DOCS_HREF, F as FAMILY, a as FAMILY_GROUPS, b as FamilyGroup, c as FamilySite, d as FamilySlug, L as LEGAL_LINKS, O as OCHK_IO, f as OCHK_IO_FOOTER, g as OCHK_IO_NAV, P as PROTOCOLS, h as PROTOCOL_ORDER, i as ProtocolSite, j as ProtocolSlug, S as SiteStatus, k as familyByGroup, l as familySite, p as protocolSite } from './index-C6hDqOOS.js';
1
+ export { D as DOCS_HREF, F as FAMILY, a as FAMILY_GROUPS, b as FamilyGroup, c as FamilySite, d as FamilySlug, L as LEGAL_LINKS, O as OCHK_IO, f as OCHK_IO_FOOTER, g as OCHK_IO_NAV, P as PROTOCOLS, h as PROTOCOL_ORDER, i as ProtocolSite, j as ProtocolSlug, S as SELF_HOSTED_LEGAL_LINKS, k as SiteStatus, l as familyByGroup, m as familySite, p as protocolSite } from './index-DmfyPYe5.js';
2
2
  import 'react';
package/dist/family.js CHANGED
@@ -78,7 +78,8 @@ var FAMILY = [
78
78
  group: "app",
79
79
  line: "Builders find co-founders and backers.",
80
80
  status: "testing",
81
- protocols: ["attest"]
81
+ // Signs in with an orangecheck account and a wallet; uses none of the six directly.
82
+ protocols: []
82
83
  },
83
84
  {
84
85
  slug: "me-demo",
@@ -129,6 +130,13 @@ var LEGAL_LINKS = [
129
130
  { href: `${OCHK_IO}/trademark`, label: "Trademarks" },
130
131
  { href: `${OCHK_IO}/contact`, label: "Contact" }
131
132
  ];
133
+ var SELF_HOSTED_LEGAL_LINKS = [
134
+ { href: "/privacy", label: "Privacy" },
135
+ { href: "/terms", label: "Terms" },
136
+ { href: "/security", label: "Security" },
137
+ { href: `${OCHK_IO}/trademark`, label: "Trademarks" },
138
+ { href: "/contact", label: "Contact" }
139
+ ];
132
140
  var OCHK_IO_NAV = [
133
141
  {
134
142
  href: `${OCHK_IO}/protocols`,
@@ -160,6 +168,7 @@ exports.OCHK_IO_FOOTER = OCHK_IO_FOOTER;
160
168
  exports.OCHK_IO_NAV = OCHK_IO_NAV;
161
169
  exports.PROTOCOLS = PROTOCOLS;
162
170
  exports.PROTOCOL_ORDER = PROTOCOL_ORDER;
171
+ exports.SELF_HOSTED_LEGAL_LINKS = SELF_HOSTED_LEGAL_LINKS;
163
172
  exports.familyByGroup = familyByGroup;
164
173
  exports.familySite = familySite;
165
174
  exports.protocolSite = protocolSite;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/family/index.ts"],"names":[],"mappings":"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","file":"family.js","sourcesContent":["/*\n * The orangecheck family as data: every public site, its one line, its group\n * and its status. The family menu, the footer, the protocol grid and the app\n * grid all read it, so a site is added, renamed or retired here and nowhere\n * else. No React: OG renderers and server code import it too.\n *\n * Status is written here until the claims source exists; then it is read\n * from there. \"live\" shows no badge.\n */\nimport type { FooterColumn, NavItem } from '../lib/nav';\n\n/** The six protocols, in the family's fixed order. */\nexport type ProtocolSlug = 'attest' | 'lock' | 'vote' | 'stamp' | 'agent' | 'pledge';\n\n/** The same slugs as the classic system's, so a site's `current` carries over. */\nexport type FamilySlug =\n | 'home'\n | 'me'\n | 'docs'\n | ProtocolSlug\n | 'vault'\n | 'chat'\n | 'cosign'\n | 'me-demo'\n | 'globe'\n | 'btc';\n\nexport type FamilyGroup = 'orangecheck' | 'protocol' | 'app' | 'public-good';\n\n/** Where a site or feature stands, in the family's words. */\nexport type SiteStatus = 'live' | 'testing' | 'not-yet' | 'paused';\n\nexport interface FamilySite {\n slug: FamilySlug;\n /** The site's word, lowercase, as menus and lockups show it. */\n label: string;\n /** Where the family menu and footer send people. A protocol's is its page on ochk.io. */\n href: string;\n group: FamilyGroup;\n /** What it is, in one sentence. */\n line: string;\n status: SiteStatus;\n /** For an app: the protocols it shows. */\n protocols?: ProtocolSlug[];\n}\n\nexport interface ProtocolSite extends FamilySite {\n slug: ProtocolSlug;\n group: 'protocol';\n /** What it carries: identity, confidentiality, legitimacy, provenance, authority, commitment. */\n verb: string;\n /** The protocol's page on ochk.io. */\n pageHref: string;\n /** The tools, on the protocol's own host. */\n toolHref: string;\n /** The normative spec. */\n specHref: string;\n /** The Nostr event kinds it publishes. */\n kinds: string;\n}\n\nexport const OCHK_IO = 'https://ochk.io';\n/** The docs live under ochk.io; docs.ochk.io 308s here. */\nexport const DOCS_HREF = `${OCHK_IO}/docs`;\n\nfunction protocol(\n slug: ProtocolSlug,\n verb: string,\n line: string,\n kinds: string\n): ProtocolSite {\n return {\n slug,\n label: slug,\n href: `${OCHK_IO}/${slug}`,\n group: 'protocol',\n line,\n status: 'live',\n verb,\n pageHref: `${OCHK_IO}/${slug}`,\n toolHref: `https://${slug}.ochk.io`,\n specHref: `https://github.com/orangecheck/oc-${slug}-protocol`,\n kinds,\n };\n}\n\n/** Attest · Lock · Vote · Stamp · Agent · Pledge, everywhere. */\nexport const PROTOCOLS: readonly ProtocolSite[] = [\n protocol('attest', 'identity', 'Show that an address holds bitcoin, and for how long.', '30078'),\n protocol('lock', 'confidentiality', 'Encrypt to a Bitcoin address, so only its holder can open it.', '30078'),\n protocol('vote', 'legitimacy', 'Polls weighed in sats, that anyone can tally.', '30080–30082'),\n protocol('stamp', 'provenance', 'Prove who signed something, and when.', '30083'),\n protocol('agent', 'authority', 'Give software scoped, revocable permission to act for you.', '30083–30086'),\n protocol('pledge', 'commitment', 'Make a promise with bitcoin behind it, on a public record.', '30078'),\n];\n\nexport const PROTOCOL_ORDER: readonly ProtocolSlug[] = PROTOCOLS.map((p) => p.slug);\n\nexport const FAMILY: readonly FamilySite[] = [\n {\n slug: 'home',\n label: 'ochk.io',\n href: OCHK_IO,\n group: 'orangecheck',\n line: 'The open protocols, and the company behind them.',\n status: 'live',\n },\n {\n slug: 'me',\n label: 'ochk.app',\n href: 'https://ochk.app',\n group: 'orangecheck',\n line: 'One account, with Bitcoin behind it.',\n status: 'testing',\n },\n {\n slug: 'docs',\n label: 'docs',\n href: DOCS_HREF,\n group: 'orangecheck',\n line: 'Specs, SDKs and guides for every protocol.',\n status: 'live',\n },\n ...PROTOCOLS,\n {\n slug: 'vault',\n label: 'vault',\n href: 'https://vault.ochk.io',\n group: 'app',\n line: 'A password manager, encrypted in your browser.',\n status: 'live',\n protocols: ['lock'],\n },\n {\n slug: 'chat',\n label: 'chat',\n href: 'https://chat.ochk.io',\n group: 'app',\n line: 'Messages only the holder of a Bitcoin address can read.',\n status: 'testing',\n protocols: ['lock'],\n },\n {\n slug: 'cosign',\n label: 'cosign',\n href: 'https://cosign.ochk.io',\n group: 'app',\n line: 'Builders find co-founders and backers.',\n status: 'testing',\n protocols: ['attest'],\n },\n {\n slug: 'me-demo',\n // \"demo\", not the made-up app's own name, so nobody takes it for ours.\n label: 'demo',\n href: 'https://me-demo.ochk.io',\n group: 'app',\n line: 'Lumen Notes, a made-up app that signs in with orangecheck.',\n status: 'live',\n },\n {\n slug: 'globe',\n label: 'globe',\n href: 'https://globe.ochk.io',\n group: 'public-good',\n line: 'The Bitcoin network, live, on a globe.',\n status: 'live',\n },\n {\n slug: 'btc',\n label: 'btc',\n href: 'https://btc.ochk.io',\n group: 'public-good',\n line: 'A free desk for reading the Bitcoin market.',\n status: 'live',\n },\n];\n\nexport const FAMILY_GROUPS: readonly { id: FamilyGroup; label: string }[] = [\n { id: 'orangecheck', label: 'orangecheck' },\n { id: 'protocol', label: 'Protocols' },\n { id: 'app', label: 'Apps' },\n { id: 'public-good', label: 'Public goods' },\n];\n\nconst BY_SLUG = new Map(FAMILY.map((s) => [s.slug, s]));\n\nexport function familySite(slug: FamilySlug): FamilySite {\n return BY_SLUG.get(slug)!;\n}\n\nexport function protocolSite(slug: ProtocolSlug): ProtocolSite {\n return BY_SLUG.get(slug) as ProtocolSite;\n}\n\n/** The family in its groups, in order, for menus and footers. */\nexport function familyByGroup(): { id: FamilyGroup; label: string; sites: FamilySite[] }[] {\n return FAMILY_GROUPS.map((g) => ({ ...g, sites: FAMILY.filter((s) => s.group === g.id) }));\n}\n\n/** One fixed row on every footer, all on ochk.io. */\nexport const LEGAL_LINKS: readonly NavItem[] = [\n { href: `${OCHK_IO}/privacy`, label: 'Privacy' },\n { href: `${OCHK_IO}/terms`, label: 'Terms' },\n { href: `${OCHK_IO}/security`, label: 'Security' },\n { href: `${OCHK_IO}/trademark`, label: 'Trademarks' },\n { href: `${OCHK_IO}/contact`, label: 'Contact' },\n];\n\n/**\n * ochk.io's header navigation. oc-www and the docs (served under ochk.io/docs)\n * both draw it from here, so the two cannot drift. Absolute links work from\n * either; mark the active item where it is rendered.\n */\nexport const OCHK_IO_NAV: readonly NavItem[] = [\n {\n href: `${OCHK_IO}/protocols`,\n label: 'Protocols',\n children: PROTOCOLS.map((p) => ({ href: p.pageHref, label: p.label, description: p.line })),\n },\n { href: `${OCHK_IO}/apps`, label: 'Apps' },\n { href: DOCS_HREF, label: 'Docs' },\n { href: `${OCHK_IO}/trust`, label: 'Trust' },\n { href: `${OCHK_IO}/about`, label: 'About' },\n];\n\n/** ochk.io's own footer column; `SiteFooter family` adds the family's. */\nexport const OCHK_IO_FOOTER: readonly FooterColumn[] = [\n {\n heading: 'Company',\n links: [\n { href: `${OCHK_IO}/about`, label: 'About' },\n { href: `${OCHK_IO}/trust`, label: 'Trust' },\n { href: 'https://github.com/orangecheck', label: 'GitHub', external: true },\n ],\n },\n];\n"]}
1
+ {"version":3,"sources":["../src/family/index.ts"],"names":[],"mappings":"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","file":"family.js","sourcesContent":["/*\n * The orangecheck family as data: every public site, its one line, its group\n * and its status. The family menu, the footer, the protocol grid and the app\n * grid all read it, so a site is added, renamed or retired here and nowhere\n * else. No React: OG renderers and server code import it too.\n *\n * Status is written here until the claims source exists; then it is read\n * from there. \"live\" shows no badge.\n */\nimport type { FooterColumn, NavItem } from '../lib/nav';\n\n/** The six protocols, in the family's fixed order. */\nexport type ProtocolSlug = 'attest' | 'lock' | 'vote' | 'stamp' | 'agent' | 'pledge';\n\n/** The same slugs as the classic system's, so a site's `current` carries over. */\nexport type FamilySlug =\n | 'home'\n | 'me'\n | 'docs'\n | ProtocolSlug\n | 'vault'\n | 'chat'\n | 'cosign'\n | 'me-demo'\n | 'globe'\n | 'btc';\n\nexport type FamilyGroup = 'orangecheck' | 'protocol' | 'app' | 'public-good';\n\n/** Where a site or feature stands, in the family's words. */\nexport type SiteStatus = 'live' | 'testing' | 'not-yet' | 'paused';\n\nexport interface FamilySite {\n slug: FamilySlug;\n /** The site's word, lowercase, as menus and lockups show it. */\n label: string;\n /** Where the family menu and footer send people. A protocol's is its page on ochk.io. */\n href: string;\n group: FamilyGroup;\n /** What it is, in one sentence. */\n line: string;\n status: SiteStatus;\n /** For an app: the protocols it shows. */\n protocols?: ProtocolSlug[];\n}\n\nexport interface ProtocolSite extends FamilySite {\n slug: ProtocolSlug;\n group: 'protocol';\n /** What it carries: identity, confidentiality, legitimacy, provenance, authority, commitment. */\n verb: string;\n /** The protocol's page on ochk.io. */\n pageHref: string;\n /** The tools, on the protocol's own host. */\n toolHref: string;\n /** The normative spec. */\n specHref: string;\n /** The Nostr event kinds it publishes. */\n kinds: string;\n}\n\nexport const OCHK_IO = 'https://ochk.io';\n/** The docs live under ochk.io; docs.ochk.io 308s here. */\nexport const DOCS_HREF = `${OCHK_IO}/docs`;\n\nfunction protocol(\n slug: ProtocolSlug,\n verb: string,\n line: string,\n kinds: string\n): ProtocolSite {\n return {\n slug,\n label: slug,\n href: `${OCHK_IO}/${slug}`,\n group: 'protocol',\n line,\n status: 'live',\n verb,\n pageHref: `${OCHK_IO}/${slug}`,\n toolHref: `https://${slug}.ochk.io`,\n specHref: `https://github.com/orangecheck/oc-${slug}-protocol`,\n kinds,\n };\n}\n\n/** Attest · Lock · Vote · Stamp · Agent · Pledge, everywhere. */\nexport const PROTOCOLS: readonly ProtocolSite[] = [\n protocol('attest', 'identity', 'Show that an address holds bitcoin, and for how long.', '30078'),\n protocol('lock', 'confidentiality', 'Encrypt to a Bitcoin address, so only its holder can open it.', '30078'),\n protocol('vote', 'legitimacy', 'Polls weighed in sats, that anyone can tally.', '30080–30082'),\n protocol('stamp', 'provenance', 'Prove who signed something, and when.', '30083'),\n protocol('agent', 'authority', 'Give software scoped, revocable permission to act for you.', '30083–30086'),\n protocol('pledge', 'commitment', 'Make a promise with bitcoin behind it, on a public record.', '30078'),\n];\n\nexport const PROTOCOL_ORDER: readonly ProtocolSlug[] = PROTOCOLS.map((p) => p.slug);\n\nexport const FAMILY: readonly FamilySite[] = [\n {\n slug: 'home',\n label: 'ochk.io',\n href: OCHK_IO,\n group: 'orangecheck',\n line: 'The open protocols, and the company behind them.',\n status: 'live',\n },\n {\n slug: 'me',\n label: 'ochk.app',\n href: 'https://ochk.app',\n group: 'orangecheck',\n line: 'One account, with Bitcoin behind it.',\n status: 'testing',\n },\n {\n slug: 'docs',\n label: 'docs',\n href: DOCS_HREF,\n group: 'orangecheck',\n line: 'Specs, SDKs and guides for every protocol.',\n status: 'live',\n },\n ...PROTOCOLS,\n {\n slug: 'vault',\n label: 'vault',\n href: 'https://vault.ochk.io',\n group: 'app',\n line: 'A password manager, encrypted in your browser.',\n status: 'live',\n protocols: ['lock'],\n },\n {\n slug: 'chat',\n label: 'chat',\n href: 'https://chat.ochk.io',\n group: 'app',\n line: 'Messages only the holder of a Bitcoin address can read.',\n status: 'testing',\n protocols: ['lock'],\n },\n {\n slug: 'cosign',\n label: 'cosign',\n href: 'https://cosign.ochk.io',\n group: 'app',\n line: 'Builders find co-founders and backers.',\n status: 'testing',\n // Signs in with an orangecheck account and a wallet; uses none of the six directly.\n protocols: [],\n },\n {\n slug: 'me-demo',\n // \"demo\", not the made-up app's own name, so nobody takes it for ours.\n label: 'demo',\n href: 'https://me-demo.ochk.io',\n group: 'app',\n line: 'Lumen Notes, a made-up app that signs in with orangecheck.',\n status: 'live',\n },\n {\n slug: 'globe',\n label: 'globe',\n href: 'https://globe.ochk.io',\n group: 'public-good',\n line: 'The Bitcoin network, live, on a globe.',\n status: 'live',\n },\n {\n slug: 'btc',\n label: 'btc',\n href: 'https://btc.ochk.io',\n group: 'public-good',\n line: 'A free desk for reading the Bitcoin market.',\n status: 'live',\n },\n];\n\nexport const FAMILY_GROUPS: readonly { id: FamilyGroup; label: string }[] = [\n { id: 'orangecheck', label: 'orangecheck' },\n { id: 'protocol', label: 'Protocols' },\n { id: 'app', label: 'Apps' },\n { id: 'public-good', label: 'Public goods' },\n];\n\nconst BY_SLUG = new Map(FAMILY.map((s) => [s.slug, s]));\n\nexport function familySite(slug: FamilySlug): FamilySite {\n return BY_SLUG.get(slug)!;\n}\n\nexport function protocolSite(slug: ProtocolSlug): ProtocolSite {\n return BY_SLUG.get(slug) as ProtocolSite;\n}\n\n/** The family in its groups, in order, for menus and footers. */\nexport function familyByGroup(): { id: FamilyGroup; label: string; sites: FamilySite[] }[] {\n return FAMILY_GROUPS.map((g) => ({ ...g, sites: FAMILY.filter((s) => s.group === g.id) }));\n}\n\n/** One fixed row on every footer, all on ochk.io. */\nexport const LEGAL_LINKS: readonly NavItem[] = [\n { href: `${OCHK_IO}/privacy`, label: 'Privacy' },\n { href: `${OCHK_IO}/terms`, label: 'Terms' },\n { href: `${OCHK_IO}/security`, label: 'Security' },\n { href: `${OCHK_IO}/trademark`, label: 'Trademarks' },\n { href: `${OCHK_IO}/contact`, label: 'Contact' },\n];\n\n/**\n * The same row for a product that hosts its own documents (ochk.app, vault):\n * ochk.io's cover the free protocols, not a product that holds money, so its\n * privacy, terms, security and contact pages are its own. The trademarks are\n * the company's, on ochk.io.\n */\nexport const SELF_HOSTED_LEGAL_LINKS: readonly NavItem[] = [\n { href: '/privacy', label: 'Privacy' },\n { href: '/terms', label: 'Terms' },\n { href: '/security', label: 'Security' },\n { href: `${OCHK_IO}/trademark`, label: 'Trademarks' },\n { href: '/contact', label: 'Contact' },\n];\n\n/**\n * ochk.io's header navigation. oc-www and the docs (served under ochk.io/docs)\n * both draw it from here, so the two cannot drift. Absolute links work from\n * either; mark the active item where it is rendered.\n */\nexport const OCHK_IO_NAV: readonly NavItem[] = [\n {\n href: `${OCHK_IO}/protocols`,\n label: 'Protocols',\n children: PROTOCOLS.map((p) => ({ href: p.pageHref, label: p.label, description: p.line })),\n },\n { href: `${OCHK_IO}/apps`, label: 'Apps' },\n { href: DOCS_HREF, label: 'Docs' },\n { href: `${OCHK_IO}/trust`, label: 'Trust' },\n { href: `${OCHK_IO}/about`, label: 'About' },\n];\n\n/** ochk.io's own footer column; `SiteFooter family` adds the family's. */\nexport const OCHK_IO_FOOTER: readonly FooterColumn[] = [\n {\n heading: 'Company',\n links: [\n { href: `${OCHK_IO}/about`, label: 'About' },\n { href: `${OCHK_IO}/trust`, label: 'Trust' },\n { href: 'https://github.com/orangecheck', label: 'GitHub', external: true },\n ],\n },\n];\n"]}
package/dist/family.mjs CHANGED
@@ -76,7 +76,8 @@ var FAMILY = [
76
76
  group: "app",
77
77
  line: "Builders find co-founders and backers.",
78
78
  status: "testing",
79
- protocols: ["attest"]
79
+ // Signs in with an orangecheck account and a wallet; uses none of the six directly.
80
+ protocols: []
80
81
  },
81
82
  {
82
83
  slug: "me-demo",
@@ -127,6 +128,13 @@ var LEGAL_LINKS = [
127
128
  { href: `${OCHK_IO}/trademark`, label: "Trademarks" },
128
129
  { href: `${OCHK_IO}/contact`, label: "Contact" }
129
130
  ];
131
+ var SELF_HOSTED_LEGAL_LINKS = [
132
+ { href: "/privacy", label: "Privacy" },
133
+ { href: "/terms", label: "Terms" },
134
+ { href: "/security", label: "Security" },
135
+ { href: `${OCHK_IO}/trademark`, label: "Trademarks" },
136
+ { href: "/contact", label: "Contact" }
137
+ ];
130
138
  var OCHK_IO_NAV = [
131
139
  {
132
140
  href: `${OCHK_IO}/protocols`,
@@ -149,6 +157,6 @@ var OCHK_IO_FOOTER = [
149
157
  }
150
158
  ];
151
159
 
152
- export { DOCS_HREF, FAMILY, FAMILY_GROUPS, LEGAL_LINKS, OCHK_IO, OCHK_IO_FOOTER, OCHK_IO_NAV, PROTOCOLS, PROTOCOL_ORDER, familyByGroup, familySite, protocolSite };
160
+ export { DOCS_HREF, FAMILY, FAMILY_GROUPS, LEGAL_LINKS, OCHK_IO, OCHK_IO_FOOTER, OCHK_IO_NAV, PROTOCOLS, PROTOCOL_ORDER, SELF_HOSTED_LEGAL_LINKS, familyByGroup, familySite, protocolSite };
153
161
  //# sourceMappingURL=family.mjs.map
154
162
  //# sourceMappingURL=family.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/family/index.ts"],"names":[],"mappings":"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","file":"family.mjs","sourcesContent":["/*\n * The orangecheck family as data: every public site, its one line, its group\n * and its status. The family menu, the footer, the protocol grid and the app\n * grid all read it, so a site is added, renamed or retired here and nowhere\n * else. No React: OG renderers and server code import it too.\n *\n * Status is written here until the claims source exists; then it is read\n * from there. \"live\" shows no badge.\n */\nimport type { FooterColumn, NavItem } from '../lib/nav';\n\n/** The six protocols, in the family's fixed order. */\nexport type ProtocolSlug = 'attest' | 'lock' | 'vote' | 'stamp' | 'agent' | 'pledge';\n\n/** The same slugs as the classic system's, so a site's `current` carries over. */\nexport type FamilySlug =\n | 'home'\n | 'me'\n | 'docs'\n | ProtocolSlug\n | 'vault'\n | 'chat'\n | 'cosign'\n | 'me-demo'\n | 'globe'\n | 'btc';\n\nexport type FamilyGroup = 'orangecheck' | 'protocol' | 'app' | 'public-good';\n\n/** Where a site or feature stands, in the family's words. */\nexport type SiteStatus = 'live' | 'testing' | 'not-yet' | 'paused';\n\nexport interface FamilySite {\n slug: FamilySlug;\n /** The site's word, lowercase, as menus and lockups show it. */\n label: string;\n /** Where the family menu and footer send people. A protocol's is its page on ochk.io. */\n href: string;\n group: FamilyGroup;\n /** What it is, in one sentence. */\n line: string;\n status: SiteStatus;\n /** For an app: the protocols it shows. */\n protocols?: ProtocolSlug[];\n}\n\nexport interface ProtocolSite extends FamilySite {\n slug: ProtocolSlug;\n group: 'protocol';\n /** What it carries: identity, confidentiality, legitimacy, provenance, authority, commitment. */\n verb: string;\n /** The protocol's page on ochk.io. */\n pageHref: string;\n /** The tools, on the protocol's own host. */\n toolHref: string;\n /** The normative spec. */\n specHref: string;\n /** The Nostr event kinds it publishes. */\n kinds: string;\n}\n\nexport const OCHK_IO = 'https://ochk.io';\n/** The docs live under ochk.io; docs.ochk.io 308s here. */\nexport const DOCS_HREF = `${OCHK_IO}/docs`;\n\nfunction protocol(\n slug: ProtocolSlug,\n verb: string,\n line: string,\n kinds: string\n): ProtocolSite {\n return {\n slug,\n label: slug,\n href: `${OCHK_IO}/${slug}`,\n group: 'protocol',\n line,\n status: 'live',\n verb,\n pageHref: `${OCHK_IO}/${slug}`,\n toolHref: `https://${slug}.ochk.io`,\n specHref: `https://github.com/orangecheck/oc-${slug}-protocol`,\n kinds,\n };\n}\n\n/** Attest · Lock · Vote · Stamp · Agent · Pledge, everywhere. */\nexport const PROTOCOLS: readonly ProtocolSite[] = [\n protocol('attest', 'identity', 'Show that an address holds bitcoin, and for how long.', '30078'),\n protocol('lock', 'confidentiality', 'Encrypt to a Bitcoin address, so only its holder can open it.', '30078'),\n protocol('vote', 'legitimacy', 'Polls weighed in sats, that anyone can tally.', '30080–30082'),\n protocol('stamp', 'provenance', 'Prove who signed something, and when.', '30083'),\n protocol('agent', 'authority', 'Give software scoped, revocable permission to act for you.', '30083–30086'),\n protocol('pledge', 'commitment', 'Make a promise with bitcoin behind it, on a public record.', '30078'),\n];\n\nexport const PROTOCOL_ORDER: readonly ProtocolSlug[] = PROTOCOLS.map((p) => p.slug);\n\nexport const FAMILY: readonly FamilySite[] = [\n {\n slug: 'home',\n label: 'ochk.io',\n href: OCHK_IO,\n group: 'orangecheck',\n line: 'The open protocols, and the company behind them.',\n status: 'live',\n },\n {\n slug: 'me',\n label: 'ochk.app',\n href: 'https://ochk.app',\n group: 'orangecheck',\n line: 'One account, with Bitcoin behind it.',\n status: 'testing',\n },\n {\n slug: 'docs',\n label: 'docs',\n href: DOCS_HREF,\n group: 'orangecheck',\n line: 'Specs, SDKs and guides for every protocol.',\n status: 'live',\n },\n ...PROTOCOLS,\n {\n slug: 'vault',\n label: 'vault',\n href: 'https://vault.ochk.io',\n group: 'app',\n line: 'A password manager, encrypted in your browser.',\n status: 'live',\n protocols: ['lock'],\n },\n {\n slug: 'chat',\n label: 'chat',\n href: 'https://chat.ochk.io',\n group: 'app',\n line: 'Messages only the holder of a Bitcoin address can read.',\n status: 'testing',\n protocols: ['lock'],\n },\n {\n slug: 'cosign',\n label: 'cosign',\n href: 'https://cosign.ochk.io',\n group: 'app',\n line: 'Builders find co-founders and backers.',\n status: 'testing',\n protocols: ['attest'],\n },\n {\n slug: 'me-demo',\n // \"demo\", not the made-up app's own name, so nobody takes it for ours.\n label: 'demo',\n href: 'https://me-demo.ochk.io',\n group: 'app',\n line: 'Lumen Notes, a made-up app that signs in with orangecheck.',\n status: 'live',\n },\n {\n slug: 'globe',\n label: 'globe',\n href: 'https://globe.ochk.io',\n group: 'public-good',\n line: 'The Bitcoin network, live, on a globe.',\n status: 'live',\n },\n {\n slug: 'btc',\n label: 'btc',\n href: 'https://btc.ochk.io',\n group: 'public-good',\n line: 'A free desk for reading the Bitcoin market.',\n status: 'live',\n },\n];\n\nexport const FAMILY_GROUPS: readonly { id: FamilyGroup; label: string }[] = [\n { id: 'orangecheck', label: 'orangecheck' },\n { id: 'protocol', label: 'Protocols' },\n { id: 'app', label: 'Apps' },\n { id: 'public-good', label: 'Public goods' },\n];\n\nconst BY_SLUG = new Map(FAMILY.map((s) => [s.slug, s]));\n\nexport function familySite(slug: FamilySlug): FamilySite {\n return BY_SLUG.get(slug)!;\n}\n\nexport function protocolSite(slug: ProtocolSlug): ProtocolSite {\n return BY_SLUG.get(slug) as ProtocolSite;\n}\n\n/** The family in its groups, in order, for menus and footers. */\nexport function familyByGroup(): { id: FamilyGroup; label: string; sites: FamilySite[] }[] {\n return FAMILY_GROUPS.map((g) => ({ ...g, sites: FAMILY.filter((s) => s.group === g.id) }));\n}\n\n/** One fixed row on every footer, all on ochk.io. */\nexport const LEGAL_LINKS: readonly NavItem[] = [\n { href: `${OCHK_IO}/privacy`, label: 'Privacy' },\n { href: `${OCHK_IO}/terms`, label: 'Terms' },\n { href: `${OCHK_IO}/security`, label: 'Security' },\n { href: `${OCHK_IO}/trademark`, label: 'Trademarks' },\n { href: `${OCHK_IO}/contact`, label: 'Contact' },\n];\n\n/**\n * ochk.io's header navigation. oc-www and the docs (served under ochk.io/docs)\n * both draw it from here, so the two cannot drift. Absolute links work from\n * either; mark the active item where it is rendered.\n */\nexport const OCHK_IO_NAV: readonly NavItem[] = [\n {\n href: `${OCHK_IO}/protocols`,\n label: 'Protocols',\n children: PROTOCOLS.map((p) => ({ href: p.pageHref, label: p.label, description: p.line })),\n },\n { href: `${OCHK_IO}/apps`, label: 'Apps' },\n { href: DOCS_HREF, label: 'Docs' },\n { href: `${OCHK_IO}/trust`, label: 'Trust' },\n { href: `${OCHK_IO}/about`, label: 'About' },\n];\n\n/** ochk.io's own footer column; `SiteFooter family` adds the family's. */\nexport const OCHK_IO_FOOTER: readonly FooterColumn[] = [\n {\n heading: 'Company',\n links: [\n { href: `${OCHK_IO}/about`, label: 'About' },\n { href: `${OCHK_IO}/trust`, label: 'Trust' },\n { href: 'https://github.com/orangecheck', label: 'GitHub', external: true },\n ],\n },\n];\n"]}
1
+ {"version":3,"sources":["../src/family/index.ts"],"names":[],"mappings":"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","file":"family.mjs","sourcesContent":["/*\n * The orangecheck family as data: every public site, its one line, its group\n * and its status. The family menu, the footer, the protocol grid and the app\n * grid all read it, so a site is added, renamed or retired here and nowhere\n * else. No React: OG renderers and server code import it too.\n *\n * Status is written here until the claims source exists; then it is read\n * from there. \"live\" shows no badge.\n */\nimport type { FooterColumn, NavItem } from '../lib/nav';\n\n/** The six protocols, in the family's fixed order. */\nexport type ProtocolSlug = 'attest' | 'lock' | 'vote' | 'stamp' | 'agent' | 'pledge';\n\n/** The same slugs as the classic system's, so a site's `current` carries over. */\nexport type FamilySlug =\n | 'home'\n | 'me'\n | 'docs'\n | ProtocolSlug\n | 'vault'\n | 'chat'\n | 'cosign'\n | 'me-demo'\n | 'globe'\n | 'btc';\n\nexport type FamilyGroup = 'orangecheck' | 'protocol' | 'app' | 'public-good';\n\n/** Where a site or feature stands, in the family's words. */\nexport type SiteStatus = 'live' | 'testing' | 'not-yet' | 'paused';\n\nexport interface FamilySite {\n slug: FamilySlug;\n /** The site's word, lowercase, as menus and lockups show it. */\n label: string;\n /** Where the family menu and footer send people. A protocol's is its page on ochk.io. */\n href: string;\n group: FamilyGroup;\n /** What it is, in one sentence. */\n line: string;\n status: SiteStatus;\n /** For an app: the protocols it shows. */\n protocols?: ProtocolSlug[];\n}\n\nexport interface ProtocolSite extends FamilySite {\n slug: ProtocolSlug;\n group: 'protocol';\n /** What it carries: identity, confidentiality, legitimacy, provenance, authority, commitment. */\n verb: string;\n /** The protocol's page on ochk.io. */\n pageHref: string;\n /** The tools, on the protocol's own host. */\n toolHref: string;\n /** The normative spec. */\n specHref: string;\n /** The Nostr event kinds it publishes. */\n kinds: string;\n}\n\nexport const OCHK_IO = 'https://ochk.io';\n/** The docs live under ochk.io; docs.ochk.io 308s here. */\nexport const DOCS_HREF = `${OCHK_IO}/docs`;\n\nfunction protocol(\n slug: ProtocolSlug,\n verb: string,\n line: string,\n kinds: string\n): ProtocolSite {\n return {\n slug,\n label: slug,\n href: `${OCHK_IO}/${slug}`,\n group: 'protocol',\n line,\n status: 'live',\n verb,\n pageHref: `${OCHK_IO}/${slug}`,\n toolHref: `https://${slug}.ochk.io`,\n specHref: `https://github.com/orangecheck/oc-${slug}-protocol`,\n kinds,\n };\n}\n\n/** Attest · Lock · Vote · Stamp · Agent · Pledge, everywhere. */\nexport const PROTOCOLS: readonly ProtocolSite[] = [\n protocol('attest', 'identity', 'Show that an address holds bitcoin, and for how long.', '30078'),\n protocol('lock', 'confidentiality', 'Encrypt to a Bitcoin address, so only its holder can open it.', '30078'),\n protocol('vote', 'legitimacy', 'Polls weighed in sats, that anyone can tally.', '30080–30082'),\n protocol('stamp', 'provenance', 'Prove who signed something, and when.', '30083'),\n protocol('agent', 'authority', 'Give software scoped, revocable permission to act for you.', '30083–30086'),\n protocol('pledge', 'commitment', 'Make a promise with bitcoin behind it, on a public record.', '30078'),\n];\n\nexport const PROTOCOL_ORDER: readonly ProtocolSlug[] = PROTOCOLS.map((p) => p.slug);\n\nexport const FAMILY: readonly FamilySite[] = [\n {\n slug: 'home',\n label: 'ochk.io',\n href: OCHK_IO,\n group: 'orangecheck',\n line: 'The open protocols, and the company behind them.',\n status: 'live',\n },\n {\n slug: 'me',\n label: 'ochk.app',\n href: 'https://ochk.app',\n group: 'orangecheck',\n line: 'One account, with Bitcoin behind it.',\n status: 'testing',\n },\n {\n slug: 'docs',\n label: 'docs',\n href: DOCS_HREF,\n group: 'orangecheck',\n line: 'Specs, SDKs and guides for every protocol.',\n status: 'live',\n },\n ...PROTOCOLS,\n {\n slug: 'vault',\n label: 'vault',\n href: 'https://vault.ochk.io',\n group: 'app',\n line: 'A password manager, encrypted in your browser.',\n status: 'live',\n protocols: ['lock'],\n },\n {\n slug: 'chat',\n label: 'chat',\n href: 'https://chat.ochk.io',\n group: 'app',\n line: 'Messages only the holder of a Bitcoin address can read.',\n status: 'testing',\n protocols: ['lock'],\n },\n {\n slug: 'cosign',\n label: 'cosign',\n href: 'https://cosign.ochk.io',\n group: 'app',\n line: 'Builders find co-founders and backers.',\n status: 'testing',\n // Signs in with an orangecheck account and a wallet; uses none of the six directly.\n protocols: [],\n },\n {\n slug: 'me-demo',\n // \"demo\", not the made-up app's own name, so nobody takes it for ours.\n label: 'demo',\n href: 'https://me-demo.ochk.io',\n group: 'app',\n line: 'Lumen Notes, a made-up app that signs in with orangecheck.',\n status: 'live',\n },\n {\n slug: 'globe',\n label: 'globe',\n href: 'https://globe.ochk.io',\n group: 'public-good',\n line: 'The Bitcoin network, live, on a globe.',\n status: 'live',\n },\n {\n slug: 'btc',\n label: 'btc',\n href: 'https://btc.ochk.io',\n group: 'public-good',\n line: 'A free desk for reading the Bitcoin market.',\n status: 'live',\n },\n];\n\nexport const FAMILY_GROUPS: readonly { id: FamilyGroup; label: string }[] = [\n { id: 'orangecheck', label: 'orangecheck' },\n { id: 'protocol', label: 'Protocols' },\n { id: 'app', label: 'Apps' },\n { id: 'public-good', label: 'Public goods' },\n];\n\nconst BY_SLUG = new Map(FAMILY.map((s) => [s.slug, s]));\n\nexport function familySite(slug: FamilySlug): FamilySite {\n return BY_SLUG.get(slug)!;\n}\n\nexport function protocolSite(slug: ProtocolSlug): ProtocolSite {\n return BY_SLUG.get(slug) as ProtocolSite;\n}\n\n/** The family in its groups, in order, for menus and footers. */\nexport function familyByGroup(): { id: FamilyGroup; label: string; sites: FamilySite[] }[] {\n return FAMILY_GROUPS.map((g) => ({ ...g, sites: FAMILY.filter((s) => s.group === g.id) }));\n}\n\n/** One fixed row on every footer, all on ochk.io. */\nexport const LEGAL_LINKS: readonly NavItem[] = [\n { href: `${OCHK_IO}/privacy`, label: 'Privacy' },\n { href: `${OCHK_IO}/terms`, label: 'Terms' },\n { href: `${OCHK_IO}/security`, label: 'Security' },\n { href: `${OCHK_IO}/trademark`, label: 'Trademarks' },\n { href: `${OCHK_IO}/contact`, label: 'Contact' },\n];\n\n/**\n * The same row for a product that hosts its own documents (ochk.app, vault):\n * ochk.io's cover the free protocols, not a product that holds money, so its\n * privacy, terms, security and contact pages are its own. The trademarks are\n * the company's, on ochk.io.\n */\nexport const SELF_HOSTED_LEGAL_LINKS: readonly NavItem[] = [\n { href: '/privacy', label: 'Privacy' },\n { href: '/terms', label: 'Terms' },\n { href: '/security', label: 'Security' },\n { href: `${OCHK_IO}/trademark`, label: 'Trademarks' },\n { href: '/contact', label: 'Contact' },\n];\n\n/**\n * ochk.io's header navigation. oc-www and the docs (served under ochk.io/docs)\n * both draw it from here, so the two cannot drift. Absolute links work from\n * either; mark the active item where it is rendered.\n */\nexport const OCHK_IO_NAV: readonly NavItem[] = [\n {\n href: `${OCHK_IO}/protocols`,\n label: 'Protocols',\n children: PROTOCOLS.map((p) => ({ href: p.pageHref, label: p.label, description: p.line })),\n },\n { href: `${OCHK_IO}/apps`, label: 'Apps' },\n { href: DOCS_HREF, label: 'Docs' },\n { href: `${OCHK_IO}/trust`, label: 'Trust' },\n { href: `${OCHK_IO}/about`, label: 'About' },\n];\n\n/** ochk.io's own footer column; `SiteFooter family` adds the family's. */\nexport const OCHK_IO_FOOTER: readonly FooterColumn[] = [\n {\n heading: 'Company',\n links: [\n { href: `${OCHK_IO}/about`, label: 'About' },\n { href: `${OCHK_IO}/trust`, label: 'Trust' },\n { href: 'https://github.com/orangecheck', label: 'GitHub', external: true },\n ],\n },\n];\n"]}
@@ -52,7 +52,8 @@ declare function familyByGroup(): {
52
52
  sites: FamilySite[];
53
53
  }[];
54
54
  declare const LEGAL_LINKS: readonly NavItem[];
55
+ declare const SELF_HOSTED_LEGAL_LINKS: readonly NavItem[];
55
56
  declare const OCHK_IO_NAV: readonly NavItem[];
56
57
  declare const OCHK_IO_FOOTER: readonly FooterColumn[];
57
58
 
58
- export { DOCS_HREF as D, FAMILY as F, LEGAL_LINKS as L, type NavItem as N, OCHK_IO as O, PROTOCOLS as P, type SiteStatus as S, FAMILY_GROUPS as a, type FamilyGroup as b, type FamilySite as c, type FamilySlug as d, type FooterColumn as e, OCHK_IO_FOOTER as f, OCHK_IO_NAV as g, PROTOCOL_ORDER as h, type ProtocolSite as i, type ProtocolSlug as j, familyByGroup as k, familySite as l, protocolSite as p };
59
+ export { DOCS_HREF as D, FAMILY as F, LEGAL_LINKS as L, type NavItem as N, OCHK_IO as O, PROTOCOLS as P, SELF_HOSTED_LEGAL_LINKS as S, FAMILY_GROUPS as a, type FamilyGroup as b, type FamilySite as c, type FamilySlug as d, type FooterColumn as e, OCHK_IO_FOOTER as f, OCHK_IO_NAV as g, PROTOCOL_ORDER as h, type ProtocolSite as i, type ProtocolSlug as j, type SiteStatus as k, familyByGroup as l, familySite as m, protocolSite as p };
@@ -52,7 +52,8 @@ declare function familyByGroup(): {
52
52
  sites: FamilySite[];
53
53
  }[];
54
54
  declare const LEGAL_LINKS: readonly NavItem[];
55
+ declare const SELF_HOSTED_LEGAL_LINKS: readonly NavItem[];
55
56
  declare const OCHK_IO_NAV: readonly NavItem[];
56
57
  declare const OCHK_IO_FOOTER: readonly FooterColumn[];
57
58
 
58
- export { DOCS_HREF as D, FAMILY as F, LEGAL_LINKS as L, type NavItem as N, OCHK_IO as O, PROTOCOLS as P, type SiteStatus as S, FAMILY_GROUPS as a, type FamilyGroup as b, type FamilySite as c, type FamilySlug as d, type FooterColumn as e, OCHK_IO_FOOTER as f, OCHK_IO_NAV as g, PROTOCOL_ORDER as h, type ProtocolSite as i, type ProtocolSlug as j, familyByGroup as k, familySite as l, protocolSite as p };
59
+ export { DOCS_HREF as D, FAMILY as F, LEGAL_LINKS as L, type NavItem as N, OCHK_IO as O, PROTOCOLS as P, SELF_HOSTED_LEGAL_LINKS as S, FAMILY_GROUPS as a, type FamilyGroup as b, type FamilySite as c, type FamilySlug as d, type FooterColumn as e, OCHK_IO_FOOTER as f, OCHK_IO_NAV as g, PROTOCOL_ORDER as h, type ProtocolSite as i, type ProtocolSlug as j, type SiteStatus as k, familyByGroup as l, familySite as m, protocolSite as p };
package/dist/index.d.mts CHANGED
@@ -1,14 +1,14 @@
1
1
  export { APP_ATTRIBUTE, APP_ID, appColors, appFonts } from './tokens.mjs';
2
2
  export { Accordion, AccordionItem, Badge, BadgeProps, Button, ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardNumeral, CardProps, CardTitle, Checkbox, ConfirmOptions, Density, DensityProvider, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogHost, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, Field, FieldProps, Input, InputProps, Kbd, Label, Pagination, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PromptOptions, QrCode, RadioGroup, RadioGroupItem, ScrollFade, ScrollFadeProps, Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetTitle, SheetTrigger, Skeleton, Spinner, StatusDot, StatusPill, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cardVariants, cn, confirm, prompt, useDensity, useTimedOut } from './primitives.mjs';
3
- export { S as Statement, a as Status, b as StatusBadge, c as StatusBadgeProps, s as statusWord } from './status-badge-DRwGhB0h.mjs';
3
+ export { S as Statement, a as Status, b as StatusBadge, c as StatusBadgeProps, s as statusWord } from './status-badge-BJ9Sdsx8.mjs';
4
4
  export { AppIcon, AppIconProps, Crowd, CrowdProps, HalftoneCanvas, HalftoneCanvasProps, HalftoneSphere, HalftoneSphereProps, IsoCheck, IsoCheckProps, Lockup, LockupProps, MARK_FACES, Mark, MarkProps, SPHERE_GRADIENT, Tone, portraitTone } from './brand.mjs';
5
5
  export { Accent, ActivityItem, ActivityList, BrowserFrame, CheckState, Closing, Column, Container, CopyButton, CopyButtonProps, DataTable, Display, DisplayProps, EmptyLine, EmptyState, Endpoint, EndpointList, ErrorBoundary, ErrorPage, Eyebrow, FactBlock, FactRow, FactRows, Faq, FloatChip, Footnote, HashChip, KeyValueItem, KeyValueList, Lead, LegalBlock, LegalDocument, LegalSource, LoadingBlock, Monogram, Notice, PackageCard, PackageItem, PageHeader, PhoneFrame, ProgressStep, ProgressSteps, ProofStrip, Prose, Reveal, Sats, SatsFigure, SatsProps, SatsTextOptions, ScrollStory, SearchButton, SearchDialog, SearchGroup, SearchQuery, SearchResult, Section, SectionHeading, SectionIntro, SectionProps, SignMessage, SplitBar, SplitSegment, StatCard, StatCardProps, StatGrid, StatGridProps, StepGrid, StepGridProps, StepItem, StepState, TextLink, Ticker, TruthRow, TruthStatus, TruthTable, UsdApprox, VerifyCheck, VerifyReport, monogramGround, monogramLetter, satsText, sectionVariants, useCopy, useInView } from './components.mjs';
6
6
  export { D as DocHeader, a as DocLayout, P as PageHero, b as PageHeroProps, T as TocItem, u as useActiveHeading } from './hero-Dn37il-9.mjs';
7
- export { A as ApiRow, a as ApiTable, b as AppCard, c as AppCardProps, d as AppGrid, B as Breadcrumbs, C as Callout, e as CardGrid, f as CodeBlock, g as CodeBlockProps, h as CodeTab, i as CodeTabs, j as ComparisonColumn, k as ComparisonRow, l as ComparisonTable, m as Crumb, D as Diagram, n as DocsHeading, o as DocsPager, I as InstallTabs, L as LinkCard, M as MdxTable, p as MermaidLike, q as MermaidLoader, O as OnThisPage, P as PagerLink, r as ProtocolGrid, s as ProtocolHero, t as ProtocolNav, S as SpecCard, u as Step, v as Steps, V as VerifyBox, w as languageName, x as useHeadings } from './docs-DiR6s43s.mjs';
7
+ export { A as ApiRow, a as ApiTable, b as AppCard, c as AppCardProps, d as AppGrid, B as Breadcrumbs, C as Callout, e as CardGrid, f as CodeBlock, g as CodeBlockProps, h as CodeTab, i as CodeTabs, j as ComparisonColumn, k as ComparisonRow, l as ComparisonTable, m as Crumb, D as Diagram, n as DocsHeading, o as DocsPager, I as InstallTabs, L as LinkCard, M as MdxTable, p as MermaidLike, q as MermaidLoader, O as OnThisPage, P as PagerLink, r as ProtocolGrid, s as ProtocolHero, t as ProtocolNav, S as SpecCard, u as Step, v as Steps, V as VerifyBox, w as languageName, x as useHeadings } from './docs-wJBfLS08.mjs';
8
8
  export { A as AnchorState, a as AnchorStatus, b as ArtifactView, B as BlockCountdown, c as BlockHeight, C as ChosenFile, D as DropZone, F as FilterChips, d as FilterOption, e as FormSection, M as Meter, S as SectionStatus, f as StateBadge, g as StateDef, h as StateTone, T as ToolGrid, i as ToolItem, j as createStateBadge } from './tools-DFIxIj5p.mjs';
9
9
  export { DOCS_HEADER_NAV, DocsNav, DocsNavItem, DocsNavSection, DocsShell, DocsShellProps, FamilyMenu, ShellContext, ShellPlace, SignInFrame, SiteBanner, SiteFooter, SiteFooterProps, SiteHeader, SiteHeaderProps, SkipLink, useShellPlace } from './chrome.mjs';
10
- export { A as AccountMenu, a as AccountMenuItem, b as AppShell, O as OCHK_APP_ACCOUNT, S as SessionAccountView, c as SessionState, d as ShellNavGroup, e as ShellNavItem, f as ShellSection, T as ThemeToggle, g as ToolShell, h as ToolShellProps } from './tool-shell-BDx_N5ai.mjs';
11
- export { D as DOCS_HREF, F as FAMILY, a as FAMILY_GROUPS, b as FamilyGroup, c as FamilySite, d as FamilySlug, e as FooterColumn, L as LEGAL_LINKS, N as NavItem, O as OCHK_IO, f as OCHK_IO_FOOTER, g as OCHK_IO_NAV, P as PROTOCOLS, h as PROTOCOL_ORDER, i as ProtocolSite, j as ProtocolSlug, S as SiteStatus, k as familyByGroup, l as familySite, p as protocolSite } from './index-C6hDqOOS.mjs';
10
+ export { A as AccountMenu, a as AccountMenuItem, b as AppShell, O as OCHK_APP_ACCOUNT, S as SessionAccountView, c as SessionState, d as ShellNavGroup, e as ShellNavItem, f as ShellSection, T as ThemeToggle, g as ToolShell, h as ToolShellProps } from './tool-shell-kqGWMTep.mjs';
11
+ export { D as DOCS_HREF, F as FAMILY, a as FAMILY_GROUPS, b as FamilyGroup, c as FamilySite, d as FamilySlug, e as FooterColumn, L as LEGAL_LINKS, N as NavItem, O as OCHK_IO, f as OCHK_IO_FOOTER, g as OCHK_IO_NAV, P as PROTOCOLS, h as PROTOCOL_ORDER, i as ProtocolSite, j as ProtocolSlug, S as SELF_HOSTED_LEGAL_LINKS, k as SiteStatus, l as familyByGroup, m as familySite, p as protocolSite } from './index-DmfyPYe5.mjs';
12
12
  export { CODE_LANGS, CodeLine, CodeMeta, DiffMark, LineMarks, RehypeCodeOptions, TOKEN_CLASS, Token, TokenKind, escapeHtml, grammarOf, highlight, highlightToHtml, linesToHtml, parseCodeMeta, parseLineRanges, readDiff, rehypeCode } from './code.mjs';
13
13
  export { ExplorerKind, Network, blocksToDuration, explorerUrl, formatBlockHeight, formatBytes, formatUtc, shortenMiddle } from './format.mjs';
14
14
  export { MdxComponentMap, MdxOptions, createMdxComponents, mdxComponents } from './mdx.mjs';
package/dist/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  export { APP_ATTRIBUTE, APP_ID, appColors, appFonts } from './tokens.js';
2
2
  export { Accordion, AccordionItem, Badge, BadgeProps, Button, ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardNumeral, CardProps, CardTitle, Checkbox, ConfirmOptions, Density, DensityProvider, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogHost, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, Field, FieldProps, Input, InputProps, Kbd, Label, Pagination, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PromptOptions, QrCode, RadioGroup, RadioGroupItem, ScrollFade, ScrollFadeProps, Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetTitle, SheetTrigger, Skeleton, Spinner, StatusDot, StatusPill, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cardVariants, cn, confirm, prompt, useDensity, useTimedOut } from './primitives.js';
3
- export { S as Statement, a as Status, b as StatusBadge, c as StatusBadgeProps, s as statusWord } from './status-badge-BEOxeY9j.js';
3
+ export { S as Statement, a as Status, b as StatusBadge, c as StatusBadgeProps, s as statusWord } from './status-badge-Bt8x3RhO.js';
4
4
  export { AppIcon, AppIconProps, Crowd, CrowdProps, HalftoneCanvas, HalftoneCanvasProps, HalftoneSphere, HalftoneSphereProps, IsoCheck, IsoCheckProps, Lockup, LockupProps, MARK_FACES, Mark, MarkProps, SPHERE_GRADIENT, Tone, portraitTone } from './brand.js';
5
5
  export { Accent, ActivityItem, ActivityList, BrowserFrame, CheckState, Closing, Column, Container, CopyButton, CopyButtonProps, DataTable, Display, DisplayProps, EmptyLine, EmptyState, Endpoint, EndpointList, ErrorBoundary, ErrorPage, Eyebrow, FactBlock, FactRow, FactRows, Faq, FloatChip, Footnote, HashChip, KeyValueItem, KeyValueList, Lead, LegalBlock, LegalDocument, LegalSource, LoadingBlock, Monogram, Notice, PackageCard, PackageItem, PageHeader, PhoneFrame, ProgressStep, ProgressSteps, ProofStrip, Prose, Reveal, Sats, SatsFigure, SatsProps, SatsTextOptions, ScrollStory, SearchButton, SearchDialog, SearchGroup, SearchQuery, SearchResult, Section, SectionHeading, SectionIntro, SectionProps, SignMessage, SplitBar, SplitSegment, StatCard, StatCardProps, StatGrid, StatGridProps, StepGrid, StepGridProps, StepItem, StepState, TextLink, Ticker, TruthRow, TruthStatus, TruthTable, UsdApprox, VerifyCheck, VerifyReport, monogramGround, monogramLetter, satsText, sectionVariants, useCopy, useInView } from './components.js';
6
6
  export { D as DocHeader, a as DocLayout, P as PageHero, b as PageHeroProps, T as TocItem, u as useActiveHeading } from './hero-Dn37il-9.js';
7
- export { A as ApiRow, a as ApiTable, b as AppCard, c as AppCardProps, d as AppGrid, B as Breadcrumbs, C as Callout, e as CardGrid, f as CodeBlock, g as CodeBlockProps, h as CodeTab, i as CodeTabs, j as ComparisonColumn, k as ComparisonRow, l as ComparisonTable, m as Crumb, D as Diagram, n as DocsHeading, o as DocsPager, I as InstallTabs, L as LinkCard, M as MdxTable, p as MermaidLike, q as MermaidLoader, O as OnThisPage, P as PagerLink, r as ProtocolGrid, s as ProtocolHero, t as ProtocolNav, S as SpecCard, u as Step, v as Steps, V as VerifyBox, w as languageName, x as useHeadings } from './docs-DhnstueM.js';
7
+ export { A as ApiRow, a as ApiTable, b as AppCard, c as AppCardProps, d as AppGrid, B as Breadcrumbs, C as Callout, e as CardGrid, f as CodeBlock, g as CodeBlockProps, h as CodeTab, i as CodeTabs, j as ComparisonColumn, k as ComparisonRow, l as ComparisonTable, m as Crumb, D as Diagram, n as DocsHeading, o as DocsPager, I as InstallTabs, L as LinkCard, M as MdxTable, p as MermaidLike, q as MermaidLoader, O as OnThisPage, P as PagerLink, r as ProtocolGrid, s as ProtocolHero, t as ProtocolNav, S as SpecCard, u as Step, v as Steps, V as VerifyBox, w as languageName, x as useHeadings } from './docs-Dxg4Tp_q.js';
8
8
  export { A as AnchorState, a as AnchorStatus, b as ArtifactView, B as BlockCountdown, c as BlockHeight, C as ChosenFile, D as DropZone, F as FilterChips, d as FilterOption, e as FormSection, M as Meter, S as SectionStatus, f as StateBadge, g as StateDef, h as StateTone, T as ToolGrid, i as ToolItem, j as createStateBadge } from './tools-BggNN5DV.js';
9
9
  export { DOCS_HEADER_NAV, DocsNav, DocsNavItem, DocsNavSection, DocsShell, DocsShellProps, FamilyMenu, ShellContext, ShellPlace, SignInFrame, SiteBanner, SiteFooter, SiteFooterProps, SiteHeader, SiteHeaderProps, SkipLink, useShellPlace } from './chrome.js';
10
- export { A as AccountMenu, a as AccountMenuItem, b as AppShell, O as OCHK_APP_ACCOUNT, S as SessionAccountView, c as SessionState, d as ShellNavGroup, e as ShellNavItem, f as ShellSection, T as ThemeToggle, g as ToolShell, h as ToolShellProps } from './tool-shell-B1C7ahKE.js';
11
- export { D as DOCS_HREF, F as FAMILY, a as FAMILY_GROUPS, b as FamilyGroup, c as FamilySite, d as FamilySlug, e as FooterColumn, L as LEGAL_LINKS, N as NavItem, O as OCHK_IO, f as OCHK_IO_FOOTER, g as OCHK_IO_NAV, P as PROTOCOLS, h as PROTOCOL_ORDER, i as ProtocolSite, j as ProtocolSlug, S as SiteStatus, k as familyByGroup, l as familySite, p as protocolSite } from './index-C6hDqOOS.js';
10
+ export { A as AccountMenu, a as AccountMenuItem, b as AppShell, O as OCHK_APP_ACCOUNT, S as SessionAccountView, c as SessionState, d as ShellNavGroup, e as ShellNavItem, f as ShellSection, T as ThemeToggle, g as ToolShell, h as ToolShellProps } from './tool-shell-DLSwUxTD.js';
11
+ export { D as DOCS_HREF, F as FAMILY, a as FAMILY_GROUPS, b as FamilyGroup, c as FamilySite, d as FamilySlug, e as FooterColumn, L as LEGAL_LINKS, N as NavItem, O as OCHK_IO, f as OCHK_IO_FOOTER, g as OCHK_IO_NAV, P as PROTOCOLS, h as PROTOCOL_ORDER, i as ProtocolSite, j as ProtocolSlug, S as SELF_HOSTED_LEGAL_LINKS, k as SiteStatus, l as familyByGroup, m as familySite, p as protocolSite } from './index-DmfyPYe5.js';
12
12
  export { CODE_LANGS, CodeLine, CodeMeta, DiffMark, LineMarks, RehypeCodeOptions, TOKEN_CLASS, Token, TokenKind, escapeHtml, grammarOf, highlight, highlightToHtml, linesToHtml, parseCodeMeta, parseLineRanges, readDiff, rehypeCode } from './code.js';
13
13
  export { ExplorerKind, Network, blocksToDuration, explorerUrl, formatBlockHeight, formatBytes, formatUtc, shortenMiddle } from './format.js';
14
14
  export { MdxComponentMap, MdxOptions, createMdxComponents, mdxComponents } from './mdx.js';
package/dist/index.js CHANGED
@@ -3935,7 +3935,8 @@ var FAMILY = [
3935
3935
  group: "app",
3936
3936
  line: "Builders find co-founders and backers.",
3937
3937
  status: "testing",
3938
- protocols: ["attest"]
3938
+ // Signs in with an orangecheck account and a wallet; uses none of the six directly.
3939
+ protocols: []
3939
3940
  },
3940
3941
  {
3941
3942
  slug: "me-demo",
@@ -3986,6 +3987,13 @@ var LEGAL_LINKS = [
3986
3987
  { href: `${OCHK_IO}/trademark`, label: "Trademarks" },
3987
3988
  { href: `${OCHK_IO}/contact`, label: "Contact" }
3988
3989
  ];
3990
+ var SELF_HOSTED_LEGAL_LINKS = [
3991
+ { href: "/privacy", label: "Privacy" },
3992
+ { href: "/terms", label: "Terms" },
3993
+ { href: "/security", label: "Security" },
3994
+ { href: `${OCHK_IO}/trademark`, label: "Trademarks" },
3995
+ { href: "/contact", label: "Contact" }
3996
+ ];
3989
3997
  var OCHK_IO_NAV = [
3990
3998
  {
3991
3999
  href: `${OCHK_IO}/protocols`,
@@ -4041,12 +4049,18 @@ function ProtocolGrid({
4041
4049
  "Nostr kind ",
4042
4050
  p.kinds
4043
4051
  ] }),
4044
- /* @__PURE__ */ jsxRuntime.jsx(
4052
+ link === "tool" ? /* @__PURE__ */ jsxRuntime.jsx(
4045
4053
  lucideReact.ArrowUpRight,
4046
4054
  {
4047
4055
  "aria-hidden": true,
4048
4056
  className: "size-4 transition-transform duration-200 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 group-hover:text-foreground"
4049
4057
  }
4058
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
4059
+ lucideReact.ArrowRight,
4060
+ {
4061
+ "aria-hidden": true,
4062
+ className: "size-4 transition-transform duration-200 group-hover:translate-x-0.5 group-hover:text-foreground"
4063
+ }
4050
4064
  )
4051
4065
  ] })
4052
4066
  ] }) }, slug);
@@ -5929,9 +5943,9 @@ function SiteBanner({
5929
5943
  ] }) });
5930
5944
  }
5931
5945
  var FOOT_LINK = "inline-flex min-h-11 items-center transition-colors hover:text-foreground md:min-h-0";
5932
- function LegalRow() {
5946
+ function LegalRow({ links }) {
5933
5947
  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: [
5934
- /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Legal", children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-wrap gap-x-5", children: LEGAL_LINKS.map((l) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: l.href, className: FOOT_LINK, children: l.label }) }, l.href)) }) }),
5948
+ /* @__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(Link8__default.default, { href: l.href, className: FOOT_LINK, children: l.label }) : /* @__PURE__ */ jsxRuntime.jsx("a", { href: l.href, className: FOOT_LINK, children: l.label }) }, l.href)) }) }),
5935
5949
  /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
5936
5950
  "\xA9 ",
5937
5951
  (/* @__PURE__ */ new Date()).getFullYear(),
@@ -5949,14 +5963,15 @@ function SiteFooter({
5949
5963
  signature = true,
5950
5964
  className
5951
5965
  }) {
5966
+ const legalLinks = legal === true ? LEGAL_LINKS : legal || null;
5952
5967
  if (compact) {
5953
5968
  return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: cn("border-t border-border bg-background text-[0.875rem] text-muted-foreground", className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "oca-container flex flex-col gap-x-8 gap-y-3 py-5 lg:flex-row lg:items-center lg:justify-between", children: [
5954
5969
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-6 gap-y-1", children: [
5955
5970
  /* @__PURE__ */ jsxRuntime.jsx("a", { href: OCHK_IO, className: "rounded-lg text-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Lockup, { size: 22 }) }),
5956
5971
  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
5957
5972
  ] }),
5958
- legal || 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: [
5959
- legal ? /* @__PURE__ */ jsxRuntime.jsx(LegalRow, {}) : null,
5973
+ 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: [
5974
+ legalLinks ? /* @__PURE__ */ jsxRuntime.jsx(LegalRow, { links: legalLinks }) : null,
5960
5975
  meta
5961
5976
  ] }) : null
5962
5977
  ] }) });
@@ -6014,8 +6029,8 @@ function SiteFooter({
6014
6029
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-[0.06em] inline-block w-[1.1em] shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(Mark, { className: "block h-auto w-full" }) }),
6015
6030
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "orangecheck" })
6016
6031
  ] }) }) : null,
6017
- legal || meta ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "oca-container", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3 border-t border-border py-6 text-[0.875rem] text-muted-foreground", children: [
6018
- legal ? /* @__PURE__ */ jsxRuntime.jsx(LegalRow, {}) : null,
6032
+ legalLinks || meta ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "oca-container", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3 border-t border-border py-6 text-[0.875rem] text-muted-foreground", children: [
6033
+ legalLinks ? /* @__PURE__ */ jsxRuntime.jsx(LegalRow, { links: legalLinks }) : null,
6019
6034
  meta
6020
6035
  ] }) }) : null
6021
6036
  ] });
@@ -6899,6 +6914,7 @@ exports.QrCode = QrCode;
6899
6914
  exports.RadioGroup = RadioGroup;
6900
6915
  exports.RadioGroupItem = RadioGroupItem;
6901
6916
  exports.Reveal = Reveal;
6917
+ exports.SELF_HOSTED_LEGAL_LINKS = SELF_HOSTED_LEGAL_LINKS;
6902
6918
  exports.SPHERE_GRADIENT = SPHERE_GRADIENT;
6903
6919
  exports.Sats = Sats;
6904
6920
  exports.SatsFigure = SatsFigure;