@orangecheck/app-design 1.0.0 → 1.1.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 +21 -5
- package/dist/chrome.d.mts +31 -42
- package/dist/chrome.d.ts +31 -42
- package/dist/chrome.js +500 -23
- package/dist/chrome.js.map +1 -1
- package/dist/chrome.mjs +495 -25
- package/dist/chrome.mjs.map +1 -1
- package/dist/code.d.mts +52 -0
- package/dist/code.d.ts +52 -0
- package/dist/code.js +534 -0
- package/dist/code.js.map +1 -0
- package/dist/code.mjs +522 -0
- package/dist/code.mjs.map +1 -0
- package/dist/components.d.mts +61 -117
- package/dist/components.d.ts +61 -117
- package/dist/components.js +2170 -105
- package/dist/components.js.map +1 -1
- package/dist/components.mjs +2142 -109
- package/dist/components.mjs.map +1 -1
- package/dist/docs-DhnstueM.d.ts +219 -0
- package/dist/docs-DiR6s43s.d.mts +219 -0
- package/dist/format.d.mts +12 -0
- package/dist/format.d.ts +12 -0
- package/dist/format.js +65 -0
- package/dist/format.js.map +1 -0
- package/dist/format.mjs +58 -0
- package/dist/format.mjs.map +1 -0
- package/dist/hero-Dn37il-9.d.mts +31 -0
- package/dist/hero-Dn37il-9.d.ts +31 -0
- package/dist/index.d.mts +10 -3
- package/dist/index.d.ts +10 -3
- package/dist/index.js +2668 -131
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2614 -134
- package/dist/index.mjs.map +1 -1
- package/dist/mdx.d.mts +58 -0
- package/dist/mdx.d.ts +58 -0
- package/dist/mdx.js +1712 -0
- package/dist/mdx.js.map +1 -0
- package/dist/mdx.mjs +1685 -0
- package/dist/mdx.mjs.map +1 -0
- package/dist/primitives.d.mts +22 -5
- package/dist/primitives.d.ts +22 -5
- package/dist/primitives.js +51 -5
- package/dist/primitives.js.map +1 -1
- package/dist/primitives.mjs +51 -7
- package/dist/primitives.mjs.map +1 -1
- package/dist/session.d.mts +18 -0
- package/dist/session.d.ts +18 -0
- package/dist/session.js +432 -0
- package/dist/session.js.map +1 -0
- package/dist/session.mjs +401 -0
- package/dist/session.mjs.map +1 -0
- package/dist/styles/code.css +97 -0
- package/dist/styles/theme.css +2 -0
- package/dist/styles/tokens.css +40 -0
- package/dist/styles.css +1 -0
- package/dist/tool-shell-B1C7ahKE.d.ts +81 -0
- package/dist/tool-shell-BDx_N5ai.d.mts +81 -0
- package/dist/tools-BggNN5DV.d.ts +131 -0
- package/dist/tools-DFIxIj5p.d.mts +131 -0
- package/package.json +31 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/code/highlight.ts","../src/code/rehype.ts"],"names":[],"mappings":"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","file":"code.mjs","sourcesContent":["/*\n * Syntax highlighting with no dependency and no async step, so code is\n * coloured in the server's HTML: at build time in the docs (rehypeCode), and\n * in a page's own render for code made at run time (an envelope, an install\n * line). It reads the languages the family writes: TypeScript and JavaScript\n * (with JSX), JSON, shell, Python, YAML and diffs. Anything else is shown as\n * plain text, never guessed at.\n *\n * Each token names a kind; the kind is a class, and the class is a colour in\n * tokens.css (--oca-code-*). One palette for every highlighter: the shiki\n * theme in ./theme maps TextMate scopes onto the same variables.\n */\n\nexport type TokenKind =\n | 'keyword'\n | 'string'\n | 'number'\n | 'function'\n | 'type'\n | 'property'\n | 'comment'\n | 'tag'\n | 'url';\n\nexport interface Token {\n text: string;\n kind?: TokenKind;\n}\n\n/** One line of code, as tokens. */\nexport type CodeLine = Token[];\n\n/** The class each kind is drawn with (styles/code.css). */\nexport const TOKEN_CLASS: Record<TokenKind, string> = {\n keyword: 'oca-k',\n string: 'oca-s',\n number: 'oca-n',\n function: 'oca-f',\n type: 'oca-y',\n property: 'oca-p',\n comment: 'oca-c',\n tag: 'oca-g',\n url: 'oca-u',\n};\n\ntype Grammar = 'js' | 'json' | 'shell' | 'python' | 'yaml' | 'diff' | 'plain';\n\nconst ALIASES: Record<string, Grammar> = {\n ts: 'js',\n typescript: 'js',\n tsx: 'js',\n js: 'js',\n javascript: 'js',\n jsx: 'js',\n mjs: 'js',\n cjs: 'js',\n json: 'json',\n jsonc: 'json',\n json5: 'json',\n bash: 'shell',\n sh: 'shell',\n shell: 'shell',\n zsh: 'shell',\n console: 'shell',\n terminal: 'shell',\n py: 'python',\n python: 'python',\n yaml: 'yaml',\n yml: 'yaml',\n diff: 'diff',\n};\n\n/** The languages read, by the names a code fence uses. */\nexport const CODE_LANGS: readonly string[] = Object.keys(ALIASES);\n\nexport function grammarOf(lang?: string | null): Grammar {\n return (lang && ALIASES[lang.toLowerCase()]) || 'plain';\n}\n\n/* ── Scanner ─────────────────────────────────────────────────────────── */\n\ntype Emit = (text: string, kind?: TokenKind) => void;\n\n/** Collects tokens, merging neighbours of one kind so the markup stays small. */\nfunction collector(): { emit: Emit; tokens: Token[] } {\n const tokens: Token[] = [];\n const emit: Emit = (text, kind) => {\n if (!text) return;\n const last = tokens[tokens.length - 1];\n if (last && last.kind === kind) last.text += text;\n else tokens.push(kind ? { text, kind } : { text });\n };\n return { emit, tokens };\n}\n\nfunction at(re: RegExp, src: string, i: number): string | null {\n re.lastIndex = i;\n const m = re.exec(src);\n return m ? m[0] : null;\n}\n\nconst WS = /[ \\t]+/y;\nconst NEWLINE = /\\r?\\n/y;\n\n/* ── JavaScript, TypeScript, JSX ─────────────────────────────────────── */\n\nconst JS_KEYWORDS = new Set(\n (\n 'abstract as async await break case catch class const continue debugger declare default delete do else enum export ' +\n 'extends finally for from function get if implements import in infer instanceof interface is keyof let module ' +\n 'namespace new of override private protected public readonly return satisfies set static super switch this throw ' +\n 'try type typeof unique var void while with yield'\n ).split(' ')\n);\nconst JS_CONSTANTS = new Set(['true', 'false', 'null', 'undefined', 'NaN', 'Infinity']);\nconst TS_PRIMITIVES = new Set(['string', 'number', 'boolean', 'bigint', 'symbol', 'object', 'unknown', 'any', 'never']);\n\n/* MAX_SATS, DOCS_HREF: a constant. JSON, URL: a namespace, read as a type. */\nconst isConstant = (m: string) => /^[A-Z][A-Z\\d_]+$/.test(m) && (m.includes('_') || m.length > 4);\n\nconst JS_LINE_COMMENT = /\\/\\/[^\\n]*/y;\nconst JS_BLOCK_COMMENT = /\\/\\*[\\s\\S]*?(?:\\*\\/|$)/y;\nconst JS_TEMPLATE = /`(?:\\\\[\\s\\S]|[^\\\\`])*`?/y;\nconst JS_STRING = /'(?:\\\\.|[^\\\\'\\n])*'?|\"(?:\\\\.|[^\\\\\"\\n])*\"?/y;\nconst JS_NUMBER = /(?:0[xX][\\da-fA-F_]+|0[bB][01_]+|0[oO][0-7_]+|\\d[\\d_]*(?:\\.[\\d_]+)?(?:[eE][+-]?\\d+)?|\\.\\d[\\d_]*(?:[eE][+-]?\\d+)?)n?/y;\nconst JS_IDENT = /[A-Za-z_$][\\w$]*/y;\nconst JS_DECORATOR = /@[A-Za-z_$][\\w$.]*/y;\nconst JS_CALL_AFTER = /\\s*(?:<[\\w$\\s,.[\\]|&'\"]*>)?\\s*\\(/y;\nconst JS_TAG = /<\\/?(?=[A-Za-z])/y;\nconst JS_TAG_NAME = /[A-Za-z][\\w$.:-]*/y;\nconst JS_PUNCT = /=>|\\.\\.\\.|[{}()[\\];,.<>=+\\-*/%!?:&|^~#]/y;\n/* Where a JSX tag can start: after one of these, or at the start of a line. */\nconst JSX_BEFORE = new Set(['(', ',', '=', '?', ':', '{', '[', ';', '>', '&&', '||', '=>', 'return']);\n\nfunction scanJs(src: string, emit: Emit, jsx: boolean) {\n let i = 0;\n let prev = ''; // the last significant token, for property access and JSX starts\n let tagDepth = 0; // inside <Tag …> before its >\n let braceInTag = 0; // a {…} expression inside a tag's attributes\n const sig = (t: string) => {\n prev = t;\n };\n while (i < src.length) {\n let m: string | null;\n if ((m = at(WS, src, i)) || (m = at(NEWLINE, src, i))) {\n emit(m);\n i += m.length;\n continue;\n }\n if ((m = at(JS_LINE_COMMENT, src, i)) || (m = at(JS_BLOCK_COMMENT, src, i))) {\n emit(m, 'comment');\n i += m.length;\n continue;\n }\n if ((m = at(JS_TEMPLATE, src, i)) || (m = at(JS_STRING, src, i))) {\n emit(m, 'string');\n i += m.length;\n sig('\"');\n continue;\n }\n if (jsx && tagDepth === 0 && (m = at(JS_TAG, src, i)) && (prev === '' || JSX_BEFORE.has(prev))) {\n const name = at(JS_TAG_NAME, src, i + m.length);\n if (name) {\n emit(m);\n emit(name, 'tag');\n i += m.length + name.length;\n tagDepth = 1;\n braceInTag = 0;\n sig('tag');\n continue;\n }\n }\n if (jsx && tagDepth > 0 && braceInTag === 0) {\n if (src.startsWith('/>', i) || src[i] === '>') {\n const close = src[i] === '>' ? '>' : '/>';\n emit(close);\n i += close.length;\n tagDepth = 0;\n sig('>');\n continue;\n }\n if ((m = at(JS_IDENT, src, i)) && /^\\s*=/.test(src.slice(i + m.length, i + m.length + 4))) {\n emit(m, 'property');\n i += m.length;\n continue;\n }\n if ((m = at(JS_IDENT, src, i))) {\n emit(m, 'property');\n i += m.length;\n continue;\n }\n if (src[i] === '{') braceInTag = 1;\n } else if (jsx && tagDepth > 0 && braceInTag > 0) {\n if (src[i] === '{') braceInTag++;\n else if (src[i] === '}') braceInTag--;\n }\n if ((m = at(JS_DECORATOR, src, i))) {\n emit(m, 'function');\n i += m.length;\n sig('@');\n continue;\n }\n if ((m = at(JS_IDENT, src, i))) {\n const end = i + m.length;\n let kind: TokenKind | undefined;\n if (prev !== '.' && JS_CONSTANTS.has(m)) kind = 'number';\n else if (prev !== '.' && JS_KEYWORDS.has(m)) kind = 'keyword';\n else if (at(JS_CALL_AFTER, src, end) !== null) kind = 'function';\n else if (prev !== '.' && TS_PRIMITIVES.has(m)) kind = 'type';\n else if (isConstant(m)) kind = 'number';\n else if (/^[A-Z]/.test(m)) kind = 'type';\n emit(m, kind);\n i = end;\n sig(kind === 'keyword' ? m : 'id');\n continue;\n }\n if ((m = at(JS_NUMBER, src, i))) {\n emit(m, 'number');\n i += m.length;\n sig('0');\n continue;\n }\n if ((m = at(JS_PUNCT, src, i))) {\n emit(m);\n i += m.length;\n sig(m === '.' ? '.' : m);\n continue;\n }\n emit(src[i]!);\n i++;\n }\n}\n\n/* ── JSON ────────────────────────────────────────────────────────────── */\n\nconst JSON_STRING = /\"(?:\\\\.|[^\\\\\"\\n])*\"?/y;\nconst JSON_KEY_AFTER = /\\s*:/y;\nconst JSON_NUMBER = /-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/y;\nconst JSON_WORD = /true|false|null/y;\n\nfunction scanJson(src: string, emit: Emit) {\n let i = 0;\n while (i < src.length) {\n let m: string | null;\n if ((m = at(JS_LINE_COMMENT, src, i)) || (m = at(JS_BLOCK_COMMENT, src, i))) {\n emit(m, 'comment');\n } else if ((m = at(JSON_STRING, src, i))) {\n emit(m, at(JSON_KEY_AFTER, src, i + m.length) !== null ? 'property' : 'string');\n } else if ((m = at(JSON_NUMBER, src, i)) || (m = at(JSON_WORD, src, i))) {\n emit(m, 'number');\n } else {\n m = src[i]!;\n emit(m);\n }\n i += m.length;\n }\n}\n\n/* ── Shell ───────────────────────────────────────────────────────────── */\n\nconst SH_KEYWORDS = new Set(\n 'if then else elif fi for in do done case esac while until function return export local select time'.split(' ')\n);\nconst SH_PROMPT = /\\$ (?=\\S)/y;\nconst SH_COMMENT = /#[^\\n]*/y;\nconst SH_SINGLE = /'[^']*'?/y;\nconst SH_DOUBLE = /\"(?:\\\\.|[^\\\\\"])*\"?/y;\nconst SH_VAR = /\\$(?:\\{[^}\\n]*\\}?|[A-Za-z_][\\w]*|[@*#?$!\\d])/y;\nconst SH_URL = /https?:\\/\\/[^\\s'\"`)]+/y;\nconst SH_FLAG = /--?[A-Za-z][\\w-]*/y;\nconst SH_ASSIGN = /[A-Za-z_][\\w]*(?==)/y;\nconst SH_VALUE = /=[^\\s|&;()<>'\"`$]*/y;\nconst SH_WORD = /[^\\s|&;()<>'\"`$#]+/y;\nconst SH_OPERATOR = /\\|\\||&&|[|;&]|\\$\\(|[()<>]/y;\n\nfunction scanShell(src: string, emit: Emit) {\n let i = 0;\n let command = true; // the next word is a command\n let lineStart = true;\n while (i < src.length) {\n let m: string | null;\n if ((m = at(NEWLINE, src, i))) {\n emit(m);\n i += m.length;\n // A trailing backslash continues the command on the next line.\n command = !/\\\\\\s*$/.test(src.slice(0, i - m.length));\n lineStart = true;\n continue;\n }\n if ((m = at(WS, src, i))) {\n emit(m);\n i += m.length;\n continue;\n }\n if (lineStart && (m = at(SH_PROMPT, src, i))) {\n emit(m, 'comment');\n i += m.length;\n lineStart = false;\n continue;\n }\n lineStart = false;\n // A # starts a comment at the start of a word, not inside one (url#frag).\n if ((m = at(SH_COMMENT, src, i)) && (i === 0 || /\\s/.test(src[i - 1]!))) {\n emit(m, 'comment');\n i += m.length;\n continue;\n }\n if ((m = at(SH_SINGLE, src, i)) || (m = at(SH_DOUBLE, src, i))) {\n emit(m, 'string');\n i += m.length;\n command = false;\n continue;\n }\n if ((m = at(SH_OPERATOR, src, i))) {\n emit(m);\n i += m.length;\n command = m !== ')' && m !== '>' && m !== '<';\n continue;\n }\n if ((m = at(SH_VAR, src, i))) {\n emit(m, 'type');\n i += m.length;\n command = false;\n continue;\n }\n if ((m = at(SH_URL, src, i))) {\n emit(m, 'url');\n i += m.length;\n command = false;\n continue;\n }\n if (command && (m = at(SH_ASSIGN, src, i))) {\n // FOO=bar cmd: the name, then its value; the command comes after.\n emit(m, 'property');\n i += m.length;\n const v = at(SH_VALUE, src, i)!;\n emit(v);\n i += v.length;\n continue;\n }\n if ((m = at(SH_FLAG, src, i)) && !command) {\n emit(m, 'keyword');\n i += m.length;\n continue;\n }\n if ((m = at(SH_WORD, src, i))) {\n if (command && SH_KEYWORDS.has(m)) emit(m, 'keyword');\n else if (command) {\n emit(m, 'function');\n // `sudo npm …`, `npx tsx …`: the next word is the real command.\n command = m === 'sudo' || m === 'npx' || m === 'env' || m === 'time';\n i += m.length;\n continue;\n } else emit(m);\n i += m.length;\n continue;\n }\n emit(src[i]!);\n i++;\n }\n}\n\n/* ── Python ──────────────────────────────────────────────────────────── */\n\nconst PY_KEYWORDS = new Set(\n (\n 'and as assert async await break class continue def del elif else except finally for from global if import in is ' +\n 'lambda match case nonlocal not or pass raise return try while with yield self cls'\n ).split(' ')\n);\nconst PY_CONSTANTS = new Set(['True', 'False', 'None']);\nconst PY_TYPES = new Set(['int', 'str', 'bool', 'float', 'bytes', 'list', 'dict', 'tuple', 'set', 'object']);\nconst PY_COMMENT = /#[^\\n]*/y;\nconst PY_TRIPLE = /[rRbBuUfF]{0,2}(?:\"\"\"[\\s\\S]*?(?:\"\"\"|$)|'''[\\s\\S]*?(?:'''|$))/y;\nconst PY_STRING = /[rRbBuUfF]{0,2}(?:'(?:\\\\.|[^\\\\'\\n])*'?|\"(?:\\\\.|[^\\\\\"\\n])*\"?)/y;\nconst PY_NUMBER = /(?:0[xX][\\da-fA-F_]+|\\d[\\d_]*(?:\\.[\\d_]*)?(?:[eE][+-]?\\d+)?j?)/y;\nconst PY_IDENT = /[A-Za-z_]\\w*/y;\nconst PY_DECORATOR = /@[A-Za-z_][\\w.]*/y;\nconst PY_CALL_AFTER = /\\s*\\(/y;\n\nfunction scanPython(src: string, emit: Emit) {\n let i = 0;\n let prev = '';\n while (i < src.length) {\n let m: string | null;\n if ((m = at(WS, src, i)) || (m = at(NEWLINE, src, i))) {\n emit(m);\n i += m.length;\n continue;\n }\n if ((m = at(PY_COMMENT, src, i))) {\n emit(m, 'comment');\n } else if ((m = at(PY_TRIPLE, src, i)) || (m = at(PY_STRING, src, i))) {\n // An identifier like `f` or `rb` is only a prefix when a quote follows.\n if (/^[A-Za-z]+$/.test(m)) {\n emit(m);\n } else emit(m, 'string');\n prev = '\"';\n } else if ((m = at(PY_DECORATOR, src, i))) {\n emit(m, 'function');\n prev = '@';\n } else if ((m = at(PY_IDENT, src, i))) {\n let kind: TokenKind | undefined;\n if (PY_CONSTANTS.has(m)) kind = 'number';\n else if (prev !== '.' && PY_KEYWORDS.has(m)) kind = 'keyword';\n else if (prev === 'def' || at(PY_CALL_AFTER, src, i + m.length) !== null) kind = 'function';\n else if (prev === 'class' || /^[A-Z][a-z]/.test(m) || PY_TYPES.has(m)) kind = 'type';\n else if (isConstant(m)) kind = 'number';\n emit(m, kind);\n prev = kind === 'keyword' ? m : 'id';\n } else if ((m = at(PY_NUMBER, src, i))) {\n emit(m, 'number');\n prev = '0';\n } else {\n m = src[i]!;\n emit(m);\n prev = m;\n }\n i += m.length;\n }\n}\n\n/* ── YAML ────────────────────────────────────────────────────────────── */\n\nconst YAML_KEY = /[ \\t]*(?:- )?[\\w.$/-]+(?=[ \\t]*:(?:\\s|$))/y;\nconst YAML_VALUE_WORD = /(?:true|false|null|yes|no|~|-?\\d+(?:\\.\\d+)?)(?=\\s*(?:#|$))/y;\n\nfunction scanYaml(src: string, emit: Emit) {\n let i = 0;\n let lineStart = true;\n while (i < src.length) {\n let m: string | null;\n if ((m = at(NEWLINE, src, i))) {\n emit(m);\n i += m.length;\n lineStart = true;\n continue;\n }\n if (lineStart && (m = at(YAML_KEY, src, i))) {\n const dash = m.match(/^([ \\t]*(?:- )?)/)![1]!;\n emit(dash);\n emit(m.slice(dash.length), 'property');\n i += m.length;\n lineStart = false;\n continue;\n }\n lineStart = false;\n if ((m = at(SH_COMMENT, src, i)) && (i === 0 || /\\s/.test(src[i - 1]!))) emit(m, 'comment');\n else if ((m = at(SH_SINGLE, src, i)) || (m = at(JSON_STRING, src, i))) emit(m, 'string');\n else if ((m = at(YAML_VALUE_WORD, src, i))) emit(m, 'number');\n else if ((m = at(SH_URL, src, i))) emit(m, 'url');\n else {\n m = src[i]!;\n emit(m);\n }\n i += m.length;\n }\n}\n\n/* ── Lines ───────────────────────────────────────────────────────────── */\n\n/** Split tokens into lines; a token that spans lines (a block comment) is cut at each break. */\nfunction toLines(tokens: Token[]): CodeLine[] {\n const lines: CodeLine[] = [[]];\n for (const t of tokens) {\n const parts = t.text.split(/\\r?\\n/);\n parts.forEach((part, j) => {\n if (j > 0) lines.push([]);\n if (part) lines[lines.length - 1]!.push(t.kind ? { text: part, kind: t.kind } : { text: part });\n });\n }\n return lines;\n}\n\n/**\n * Highlight `code` written in `lang` (a fence name: ts, json, bash…). Returns\n * one array of tokens per line. An unknown language comes back as plain text.\n */\nexport function highlight(code: string, lang?: string | null): CodeLine[] {\n // A trailing newline (every fence has one) is not an extra empty line.\n const src = code.replace(/\\r?\\n$/, '');\n const grammar = grammarOf(lang);\n const { emit, tokens } = collector();\n const name = (lang ?? '').toLowerCase();\n switch (grammar) {\n case 'js':\n scanJs(src, emit, name === 'tsx' || name === 'jsx');\n break;\n case 'json':\n scanJson(src, emit);\n break;\n case 'shell':\n scanShell(src, emit);\n break;\n case 'python':\n scanPython(src, emit);\n break;\n case 'yaml':\n scanYaml(src, emit);\n break;\n default:\n emit(src);\n }\n return toLines(tokens);\n}\n\n/* ── Line marks: highlight, diff ─────────────────────────────────────── */\n\nexport type DiffMark = 'add' | 'remove';\n\nexport interface LineMarks {\n /** 1-based line numbers to mark as highlighted. */\n highlight?: ReadonlySet<number>;\n /** 1-based line numbers added or removed. */\n diff?: ReadonlyMap<number, DiffMark>;\n}\n\n/**\n * Read `+` and `-` at the start of each line as a diff, and return the code\n * without them and the marks. A line that starts with neither is context; a\n * single leading space (as `git diff` writes context) is dropped too.\n */\nexport function readDiff(code: string): { code: string; diff: Map<number, DiffMark> } {\n const diff = new Map<number, DiffMark>();\n const lines = code.replace(/\\r?\\n$/, '').split(/\\r?\\n/);\n const out = lines.map((line, i) => {\n const c = line[0];\n if (c === '+' || c === '-') {\n diff.set(i + 1, c === '+' ? 'add' : 'remove');\n return line.slice(1);\n }\n return c === ' ' ? line.slice(1) : line;\n });\n return { code: out.join('\\n'), diff };\n}\n\n/** \"1,3-5\" → {1, 3, 4, 5}. Out-of-order and repeated parts are fine. */\nexport function parseLineRanges(spec: string | readonly number[] | undefined | null): Set<number> {\n if (!spec) return new Set();\n if (typeof spec !== 'string') return new Set(spec);\n const out = new Set<number>();\n for (const part of spec.split(',')) {\n const m = part.trim().match(/^(\\d+)(?:\\s*-\\s*(\\d+))?$/);\n if (!m) continue;\n const a = Number(m[1]);\n const b = m[2] ? Number(m[2]) : a;\n for (let n = Math.min(a, b); n <= Math.max(a, b) && n - a < 10_000; n++) out.add(n);\n }\n return out;\n}\n\n/** What a fence's meta string says: ```ts title=\"gate.ts\" {2,4} diff showLineNumbers */\nexport interface CodeMeta {\n title?: string;\n highlight?: string;\n diff?: boolean;\n lineNumbers?: boolean;\n}\n\nexport function parseCodeMeta(meta?: string | null): CodeMeta {\n if (!meta) return {};\n const out: CodeMeta = {};\n const title = meta.match(/(?:title|filename)=(?:\"([^\"]*)\"|'([^']*)'|(\\S+))/);\n if (title) out.title = title[1] ?? title[2] ?? title[3];\n const lines = meta.match(/\\{([\\d,\\s-]+)\\}/);\n if (lines) out.highlight = lines[1]!.replace(/\\s+/g, '');\n const rest = meta.replace(/(?:title|filename)=(?:\"[^\"]*\"|'[^']*'|\\S+)/, '');\n if (/\\bdiff\\b/.test(rest)) out.diff = true;\n if (/\\b(?:showLineNumbers|lineNumbers|numbers)\\b/.test(rest)) out.lineNumbers = true;\n return out;\n}\n\n/* ── HTML ────────────────────────────────────────────────────────────── */\n\nconst ESCAPE: Record<string, string> = { '&': '&', '<': '<', '>': '>', '\"': '"' };\nexport function escapeHtml(s: string): string {\n return s.replace(/[&<>\"]/g, (c) => ESCAPE[c]!);\n}\n\n/**\n * Lines as markup for CodeBlock's `html`: one `<span data-line>` per line\n * (with `data-mark` or `data-diff` where marked), tokens as classed spans,\n * lines joined by newlines so selecting and copying keeps them.\n */\nexport function linesToHtml(lines: CodeLine[], marks: LineMarks = {}): string {\n return lines\n .map((line, i) => {\n const n = i + 1;\n const attrs = [\n 'data-line=\"\"',\n marks.highlight?.has(n) ? 'data-mark=\"\"' : '',\n marks.diff?.has(n) ? `data-diff=\"${marks.diff.get(n)}\"` : '',\n ]\n .filter(Boolean)\n .join(' ');\n const body = line\n .map((t) => (t.kind ? `<span class=\"${TOKEN_CLASS[t.kind]}\">${escapeHtml(t.text)}</span>` : escapeHtml(t.text)))\n .join('');\n return `<span ${attrs}>${body}</span>`;\n })\n .join('\\n');\n}\n\n/** Highlight and render in one step, reading `diff` and line ranges as CodeBlock does. */\nexport function highlightToHtml(\n code: string,\n lang?: string | null,\n opts: { highlight?: string | readonly number[]; diff?: boolean } = {}\n): string {\n const d = opts.diff ? readDiff(code) : null;\n return linesToHtml(highlight(d ? d.code : code, lang), {\n highlight: parseLineRanges(opts.highlight),\n diff: d?.diff,\n });\n}\n","import { highlight, linesToHtml, parseCodeMeta, parseLineRanges, readDiff, type CodeLine } from './highlight';\n\n/*\n * A rehype plugin for MDX (@next/mdx, @mdx-js/mdx): highlights every fenced\n * code block at build time and reads its meta, so a page ships coloured code\n * with no highlighter in the browser.\n *\n * ```ts title=\"gate.ts\" {2,4} a caption and two marked lines\n * ```diff + and - lines (or `diff` in the meta)\n * ```bash showLineNumbers numbered lines\n *\n * Each block becomes <pre data-oca-code data-html=\"…\" data-lang data-title\n * data-diff data-line-numbers>, which mdxComponents' `pre` hands to\n * CodeBlock. The highlighted markup travels as one string per block rather\n * than as an element per token, so a page's JavaScript grows by the size of\n * its code, not by a call for every word in it. No dependencies: it walks\n * the tree itself.\n */\n\ninterface HastNode {\n type: string;\n tagName?: string;\n value?: string;\n properties?: Record<string, unknown>;\n children?: HastNode[];\n data?: { meta?: string | null };\n}\n\nexport interface RehypeCodeOptions {\n /**\n * Replace the built-in highlighter, for instance with shiki's tokens\n * mapped onto these kinds. Return null to fall back to the built-in one.\n */\n tokenize?: (code: string, lang: string | undefined) => CodeLine[] | null;\n /** Fences to leave as they are. Default: mermaid (drawn by Diagram). */\n skip?: readonly string[];\n}\n\nfunction textOf(node: HastNode): string {\n if (node.type === 'text') return node.value ?? '';\n return (node.children ?? []).map(textOf).join('');\n}\n\nfunction langOf(code: HastNode): string | undefined {\n const cls = code.properties?.className;\n const list = Array.isArray(cls) ? cls : typeof cls === 'string' ? cls.split(' ') : [];\n for (const c of list) {\n const m = String(c).match(/^language-(.+)$/);\n if (m) return m[1];\n }\n return undefined;\n}\n\nexport function rehypeCode(options: RehypeCodeOptions = {}) {\n const skip = new Set(options.skip ?? ['mermaid']);\n const visit = (node: HastNode) => {\n for (const child of node.children ?? []) {\n const code = child.type === 'element' && child.tagName === 'pre' ? child.children?.[0] : undefined;\n if (code && code.type === 'element' && code.tagName === 'code' && child.children?.length === 1) {\n const lang = langOf(code);\n if (lang && skip.has(lang)) continue;\n const meta = parseCodeMeta(code.data?.meta);\n let source = textOf(code);\n const diff = meta.diff || lang === 'diff' ? readDiff(source) : null;\n if (diff) source = diff.code;\n const lines = options.tokenize?.(source, lang) ?? highlight(source, lang === 'diff' ? undefined : lang);\n child.properties = {\n ...child.properties,\n dataOcaCode: '',\n dataHtml: linesToHtml(lines, { highlight: parseLineRanges(meta.highlight), diff: diff?.diff }),\n ...(lang ? { dataLang: lang } : {}),\n ...(meta.title ? { dataTitle: meta.title } : {}),\n ...(diff ? { dataDiff: '' } : {}),\n ...(meta.lineNumbers ? { dataLineNumbers: '' } : {}),\n };\n child.children = [];\n continue;\n }\n visit(child);\n }\n };\n return (tree: HastNode) => visit(tree);\n}\n"]}
|
package/dist/components.d.mts
CHANGED
|
@@ -2,8 +2,12 @@ import * as react from 'react';
|
|
|
2
2
|
import { ReactNode, HTMLAttributes, ElementType, CSSProperties, Component, ErrorInfo } from 'react';
|
|
3
3
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
4
4
|
import { VariantProps } from 'class-variance-authority';
|
|
5
|
-
|
|
5
|
+
export { D as DocHeader, a as DocLayout, P as PageHero, b as PageHeroProps, T as TocItem, u as useActiveHeading } from './hero-Dn37il-9.mjs';
|
|
6
|
+
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
|
+
import { ExplorerKind, Network } from './format.mjs';
|
|
6
8
|
import { S as Statement } from './status-badge-DRwGhB0h.mjs';
|
|
9
|
+
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';
|
|
10
|
+
import './index-C6hDqOOS.mjs';
|
|
7
11
|
|
|
8
12
|
declare function Eyebrow({ className, onInk, ...props }: HTMLAttributes<HTMLParagraphElement> & {
|
|
9
13
|
onInk?: boolean;
|
|
@@ -317,31 +321,6 @@ declare function SectionIntro({ className, align, reveal, children, style, }: Pi
|
|
|
317
321
|
reveal?: boolean;
|
|
318
322
|
}): react.JSX.Element;
|
|
319
323
|
|
|
320
|
-
interface PageHeroProps {
|
|
321
|
-
eyebrow?: ReactNode;
|
|
322
|
-
title: ReactNode;
|
|
323
|
-
lead?: ReactNode;
|
|
324
|
-
actions?: ReactNode;
|
|
325
|
-
art?: ReactNode;
|
|
326
|
-
meta?: ReactNode;
|
|
327
|
-
children?: ReactNode;
|
|
328
|
-
variant?: 'page' | 'document';
|
|
329
|
-
size?: 'lg' | 'xl';
|
|
330
|
-
className?: string;
|
|
331
|
-
}
|
|
332
|
-
declare function PageHero({ eyebrow, title, lead, actions, art, meta, children, variant, size, className, }: PageHeroProps): react.JSX.Element;
|
|
333
|
-
declare function DocHeader({ eyebrow, title, lead, meta, actions, children, className, }: Pick<PageHeroProps, 'eyebrow' | 'title' | 'lead' | 'meta' | 'actions' | 'children' | 'className'>): react.JSX.Element;
|
|
334
|
-
interface TocItem {
|
|
335
|
-
id: string;
|
|
336
|
-
label: ReactNode;
|
|
337
|
-
}
|
|
338
|
-
declare function DocLayout({ toc, header, children, className, }: {
|
|
339
|
-
toc?: TocItem[];
|
|
340
|
-
header?: ReactNode;
|
|
341
|
-
children: ReactNode;
|
|
342
|
-
className?: string;
|
|
343
|
-
}): react.JSX.Element;
|
|
344
|
-
|
|
345
324
|
interface StepItem {
|
|
346
325
|
title: ReactNode;
|
|
347
326
|
body: ReactNode;
|
|
@@ -366,13 +345,6 @@ declare function PackageCard({ items, className }: {
|
|
|
366
345
|
items: PackageItem[];
|
|
367
346
|
className?: string;
|
|
368
347
|
}): react.JSX.Element;
|
|
369
|
-
declare function CodeBlock({ code, caption, copy, maxLines, className, }: {
|
|
370
|
-
code: string;
|
|
371
|
-
caption?: ReactNode;
|
|
372
|
-
copy?: boolean;
|
|
373
|
-
maxLines?: number;
|
|
374
|
-
className?: string;
|
|
375
|
-
}): react.JSX.Element;
|
|
376
348
|
|
|
377
349
|
interface SplitSegment {
|
|
378
350
|
pct: number;
|
|
@@ -433,9 +405,10 @@ interface StatCardProps {
|
|
|
433
405
|
value: ReactNode;
|
|
434
406
|
hint?: ReactNode;
|
|
435
407
|
raw?: number | null;
|
|
408
|
+
size?: 'md' | 'sm';
|
|
436
409
|
className?: string;
|
|
437
410
|
}
|
|
438
|
-
declare function StatCard({ label, value, hint, className }: StatCardProps): react.JSX.Element;
|
|
411
|
+
declare function StatCard({ label, value, hint, size, className }: StatCardProps): react.JSX.Element;
|
|
439
412
|
declare function EmptyLine({ children, className }: {
|
|
440
413
|
children: ReactNode;
|
|
441
414
|
className?: string;
|
|
@@ -451,8 +424,9 @@ interface KeyValueItem {
|
|
|
451
424
|
value: ReactNode;
|
|
452
425
|
mono?: boolean;
|
|
453
426
|
}
|
|
454
|
-
declare function KeyValueList({ items, className }: {
|
|
427
|
+
declare function KeyValueList({ items, dense, className, }: {
|
|
455
428
|
items: KeyValueItem[];
|
|
429
|
+
dense?: boolean;
|
|
456
430
|
className?: string;
|
|
457
431
|
}): react.JSX.Element;
|
|
458
432
|
interface Column<T> {
|
|
@@ -468,13 +442,14 @@ interface Column<T> {
|
|
|
468
442
|
primary?: boolean;
|
|
469
443
|
hideOnPhone?: boolean;
|
|
470
444
|
}
|
|
471
|
-
declare function DataTable<T>({ columns, rows, rowKey, empty, caption, phone, className, }: {
|
|
445
|
+
declare function DataTable<T>({ columns, rows, rowKey, empty, caption, phone, dense, className, }: {
|
|
472
446
|
columns: Column<T>[];
|
|
473
447
|
rows: T[];
|
|
474
448
|
rowKey: (row: T, i: number) => string;
|
|
475
449
|
empty?: ReactNode;
|
|
476
450
|
caption?: string;
|
|
477
451
|
phone?: 'cards' | 'scroll';
|
|
452
|
+
dense?: boolean;
|
|
478
453
|
className?: string;
|
|
479
454
|
}): react.JSX.Element;
|
|
480
455
|
declare function EmptyState({ title, children, action, icon, className, }: {
|
|
@@ -485,11 +460,12 @@ declare function EmptyState({ title, children, action, icon, className, }: {
|
|
|
485
460
|
className?: string;
|
|
486
461
|
}): react.JSX.Element;
|
|
487
462
|
type NoticeTone = 'neutral' | 'brand' | 'danger' | 'info' | 'success' | 'warning';
|
|
488
|
-
declare function Notice({ tone, title, children, action, className, }: {
|
|
463
|
+
declare function Notice({ tone, title, children, action, role, className, }: {
|
|
489
464
|
tone?: NoticeTone;
|
|
490
465
|
title?: ReactNode;
|
|
491
466
|
children?: ReactNode;
|
|
492
467
|
action?: ReactNode;
|
|
468
|
+
role?: 'alert' | 'status' | 'note';
|
|
493
469
|
className?: string;
|
|
494
470
|
}): react.JSX.Element;
|
|
495
471
|
declare function LoadingBlock({ rows, timeoutMs, onRetry, label, className, }: {
|
|
@@ -501,19 +477,26 @@ declare function LoadingBlock({ rows, timeoutMs, onRetry, label, className, }: {
|
|
|
501
477
|
}): react.JSX.Element;
|
|
502
478
|
declare function useCopy(timeoutMs?: number): {
|
|
503
479
|
copied: boolean;
|
|
504
|
-
copy: (text: string
|
|
480
|
+
copy: (text: string, opts?: {
|
|
481
|
+
clearAfter?: number;
|
|
482
|
+
}) => Promise<boolean>;
|
|
505
483
|
};
|
|
506
|
-
|
|
507
|
-
value: string;
|
|
484
|
+
interface CopyButtonProps {
|
|
485
|
+
value: string | (() => string);
|
|
508
486
|
label?: string;
|
|
487
|
+
clearAfter?: number;
|
|
488
|
+
onCopied?: () => void;
|
|
509
489
|
className?: string;
|
|
510
|
-
}
|
|
511
|
-
declare function
|
|
490
|
+
}
|
|
491
|
+
declare function CopyButton({ value, label, clearAfter, onCopied, className }: CopyButtonProps): react.JSX.Element;
|
|
492
|
+
declare function HashChip({ value, head, tail, copy, href, explorer, network, className, }: {
|
|
512
493
|
value: string;
|
|
513
494
|
head?: number;
|
|
514
495
|
tail?: number;
|
|
515
496
|
copy?: boolean;
|
|
516
497
|
href?: string;
|
|
498
|
+
explorer?: ExplorerKind;
|
|
499
|
+
network?: Network;
|
|
517
500
|
className?: string;
|
|
518
501
|
}): react.JSX.Element;
|
|
519
502
|
type StepState = 'done' | 'current' | 'upcoming' | 'blocked';
|
|
@@ -734,86 +717,13 @@ declare function LegalDocument({ doc, className }: {
|
|
|
734
717
|
className?: string;
|
|
735
718
|
}): react.JSX.Element;
|
|
736
719
|
|
|
737
|
-
declare function ProtocolGrid({ protocols, link, className, }: {
|
|
738
|
-
protocols?: readonly ProtocolSlug[];
|
|
739
|
-
link?: 'page' | 'tool';
|
|
740
|
-
className?: string;
|
|
741
|
-
}): react.JSX.Element;
|
|
742
|
-
interface AppCardProps {
|
|
743
|
-
name: ReactNode;
|
|
744
|
-
line: ReactNode;
|
|
745
|
-
href: string;
|
|
746
|
-
protocols?: readonly ProtocolSlug[];
|
|
747
|
-
status?: SiteStatus;
|
|
748
|
-
className?: string;
|
|
749
|
-
}
|
|
750
|
-
declare function AppCard({ name, line, href, protocols, status, className }: AppCardProps): react.JSX.Element;
|
|
751
|
-
declare function AppGrid({ group, sites, className, }: {
|
|
752
|
-
group?: Extract<FamilyGroup, 'app' | 'public-good'>;
|
|
753
|
-
sites?: readonly FamilySlug[];
|
|
754
|
-
className?: string;
|
|
755
|
-
}): react.JSX.Element;
|
|
756
|
-
|
|
757
|
-
declare function ProtocolHero({ protocol, title, lead, actions, art, children, className, }: {
|
|
758
|
-
protocol: ProtocolSlug;
|
|
759
|
-
title: ReactNode;
|
|
760
|
-
lead?: ReactNode;
|
|
761
|
-
actions?: ReactNode;
|
|
762
|
-
art?: ReactNode;
|
|
763
|
-
children?: ReactNode;
|
|
764
|
-
className?: string;
|
|
765
|
-
}): react.JSX.Element;
|
|
766
|
-
declare function ProtocolNav({ current, link, className, }: {
|
|
767
|
-
current?: ProtocolSlug;
|
|
768
|
-
link?: 'page' | 'tool';
|
|
769
|
-
className?: string;
|
|
770
|
-
}): react.JSX.Element;
|
|
771
|
-
declare function SpecCard({ protocol, version, license, vectors, size, className, }: {
|
|
772
|
-
protocol: ProtocolSlug;
|
|
773
|
-
version: string;
|
|
774
|
-
license?: string;
|
|
775
|
-
vectors?: number;
|
|
776
|
-
size?: 'md' | 'sm';
|
|
777
|
-
className?: string;
|
|
778
|
-
}): react.JSX.Element;
|
|
779
|
-
declare function VerifyBox({ action, param, title, description, label, placeholder, hint, submitLabel, multiline, onVerify, className, }: {
|
|
780
|
-
action: string;
|
|
781
|
-
param?: string;
|
|
782
|
-
title?: ReactNode;
|
|
783
|
-
description?: ReactNode;
|
|
784
|
-
label?: ReactNode;
|
|
785
|
-
placeholder?: string;
|
|
786
|
-
hint?: ReactNode;
|
|
787
|
-
submitLabel?: string;
|
|
788
|
-
multiline?: boolean;
|
|
789
|
-
onVerify?: (value: string) => void;
|
|
790
|
-
className?: string;
|
|
791
|
-
}): react.JSX.Element;
|
|
792
|
-
interface ComparisonColumn {
|
|
793
|
-
key: string;
|
|
794
|
-
label: ReactNode;
|
|
795
|
-
highlight?: boolean;
|
|
796
|
-
}
|
|
797
|
-
interface ComparisonRow {
|
|
798
|
-
label: ReactNode;
|
|
799
|
-
note?: ReactNode;
|
|
800
|
-
values: Record<string, ReactNode>;
|
|
801
|
-
}
|
|
802
|
-
declare function ComparisonTable({ columns, rows, label, propertyHeading, className, }: {
|
|
803
|
-
columns: ComparisonColumn[];
|
|
804
|
-
rows: ComparisonRow[];
|
|
805
|
-
label: string;
|
|
806
|
-
propertyHeading?: ReactNode;
|
|
807
|
-
className?: string;
|
|
808
|
-
}): react.JSX.Element;
|
|
809
|
-
|
|
810
720
|
type CheckState = 'ok' | 'fail' | 'pending' | 'skipped' | 'unchecked';
|
|
811
721
|
interface VerifyCheck {
|
|
812
722
|
label: ReactNode;
|
|
813
723
|
state: CheckState;
|
|
814
724
|
note?: ReactNode;
|
|
815
725
|
}
|
|
816
|
-
declare function VerifyReport({ verdict, title, summary, checks, facts, notChecked, actions, className, }: {
|
|
726
|
+
declare function VerifyReport({ verdict, title, summary, checks, facts, notChecked, actions, as: Heading, className, }: {
|
|
817
727
|
verdict: Statement;
|
|
818
728
|
title: ReactNode;
|
|
819
729
|
summary?: ReactNode;
|
|
@@ -821,6 +731,7 @@ declare function VerifyReport({ verdict, title, summary, checks, facts, notCheck
|
|
|
821
731
|
facts?: KeyValueItem[];
|
|
822
732
|
notChecked?: ReactNode[];
|
|
823
733
|
actions?: ReactNode;
|
|
734
|
+
as?: 'h2' | 'h3';
|
|
824
735
|
className?: string;
|
|
825
736
|
}): react.JSX.Element;
|
|
826
737
|
declare function SignMessage({ lead, address, message, wallets, busy, error, submitLabel, secondary, onSignature, className, }: {
|
|
@@ -843,4 +754,37 @@ declare function TextLink({ href, children, external, className, }: {
|
|
|
843
754
|
className?: string;
|
|
844
755
|
}): react.JSX.Element;
|
|
845
756
|
|
|
846
|
-
|
|
757
|
+
interface SearchResult {
|
|
758
|
+
id: string;
|
|
759
|
+
href: string;
|
|
760
|
+
title: ReactNode;
|
|
761
|
+
section?: ReactNode;
|
|
762
|
+
excerpt?: ReactNode;
|
|
763
|
+
excerptHtml?: string;
|
|
764
|
+
}
|
|
765
|
+
interface SearchGroup {
|
|
766
|
+
label: ReactNode;
|
|
767
|
+
results: SearchResult[];
|
|
768
|
+
}
|
|
769
|
+
type SearchQuery = (query: string, signal: AbortSignal) => Promise<SearchGroup[]> | SearchGroup[];
|
|
770
|
+
declare const SearchButton: react.ForwardRefExoticComponent<{
|
|
771
|
+
label?: string;
|
|
772
|
+
onClick?: () => void;
|
|
773
|
+
className?: string;
|
|
774
|
+
} & react.RefAttributes<HTMLButtonElement>>;
|
|
775
|
+
declare function SearchDialog({ onQuery, open: openProp, onOpenChange, onSelect, button, hotkey, label, placeholder, idle, defaultQuery, debounceMs, className, }: {
|
|
776
|
+
onQuery: SearchQuery;
|
|
777
|
+
open?: boolean;
|
|
778
|
+
onOpenChange?: (open: boolean) => void;
|
|
779
|
+
onSelect?: (result: SearchResult) => void;
|
|
780
|
+
button?: boolean;
|
|
781
|
+
hotkey?: boolean;
|
|
782
|
+
label?: string;
|
|
783
|
+
placeholder?: string;
|
|
784
|
+
idle?: ReactNode;
|
|
785
|
+
defaultQuery?: string;
|
|
786
|
+
debounceMs?: number;
|
|
787
|
+
className?: string;
|
|
788
|
+
}): react.JSX.Element;
|
|
789
|
+
|
|
790
|
+
export { Accent, type ActivityItem, ActivityList, BrowserFrame, type CheckState, Closing, type Column, Container, CopyButton, type CopyButtonProps, DataTable, Display, type DisplayProps, EmptyLine, EmptyState, type Endpoint, EndpointList, ErrorBoundary, ErrorPage, Eyebrow, FactBlock, type FactRow, FactRows, Faq, FloatChip, Footnote, HashChip, type KeyValueItem, KeyValueList, Lead, type LegalBlock, LegalDocument, type LegalSource, LoadingBlock, Monogram, Notice, PackageCard, type PackageItem, PageHeader, PhoneFrame, type ProgressStep, ProgressSteps, ProofStrip, Prose, Reveal, Sats, SatsFigure, type SatsProps, type SatsTextOptions, ScrollStory, SearchButton, SearchDialog, type SearchGroup, type SearchQuery, type SearchResult, Section, SectionHeading, SectionIntro, type SectionProps, SignMessage, SplitBar, type SplitSegment, StatCard, type StatCardProps, StatGrid, type StatGridProps, StepGrid, type StepGridProps, type StepItem, type StepState, TextLink, Ticker, type TruthRow, type TruthStatus, TruthTable, UsdApprox, type VerifyCheck, VerifyReport, monogramGround, monogramLetter, satsText, sectionVariants, useCopy, useInView };
|