@visin/frontend-core 1.12.0 → 1.14.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/auth/AuthProvider.d.ts +2 -0
  2. package/dist/auth/AuthProvider.d.ts.map +1 -1
  3. package/dist/auth/AuthProvider.js +7 -1
  4. package/dist/auth/AuthProvider.js.map +1 -1
  5. package/dist/auth/authService.d.ts +11 -1
  6. package/dist/auth/authService.d.ts.map +1 -1
  7. package/dist/auth/authService.js +4 -2
  8. package/dist/auth/authService.js.map +1 -1
  9. package/dist/components/AppLayout/AppLayout.d.ts +42 -5
  10. package/dist/components/AppLayout/AppLayout.d.ts.map +1 -1
  11. package/dist/components/AppLayout/AppLayout.js +89 -33
  12. package/dist/components/AppLayout/AppLayout.js.map +1 -1
  13. package/dist/components/AppLayout/index.d.ts +1 -1
  14. package/dist/components/AppLayout/index.d.ts.map +1 -1
  15. package/dist/components/Markdown/Markdown.d.ts +11 -0
  16. package/dist/components/Markdown/Markdown.d.ts.map +1 -0
  17. package/dist/components/Markdown/Markdown.js +63 -0
  18. package/dist/components/Markdown/Markdown.js.map +1 -0
  19. package/dist/components/Markdown/index.d.ts +2 -0
  20. package/dist/components/Markdown/index.d.ts.map +1 -0
  21. package/dist/components/Markdown/index.js +2 -0
  22. package/dist/components/Markdown/index.js.map +1 -0
  23. package/dist/components/Markdown/parse.d.ts +65 -0
  24. package/dist/components/Markdown/parse.d.ts.map +1 -0
  25. package/dist/components/Markdown/parse.js +247 -0
  26. package/dist/components/Markdown/parse.js.map +1 -0
  27. package/dist/components/ShareButton.d.ts +5 -0
  28. package/dist/components/ShareButton.d.ts.map +1 -0
  29. package/dist/components/ShareButton.js +23 -0
  30. package/dist/components/ShareButton.js.map +1 -0
  31. package/dist/index.d.ts +6 -2
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +3 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/navigation.d.ts +12 -2
  36. package/dist/navigation.d.ts.map +1 -1
  37. package/dist/navigation.js +43 -7
  38. package/dist/navigation.js.map +1 -1
  39. package/dist/recentVisits.d.ts +26 -0
  40. package/dist/recentVisits.d.ts.map +1 -0
  41. package/dist/recentVisits.js +97 -0
  42. package/dist/recentVisits.js.map +1 -0
  43. package/package.json +8 -8
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Fragment, useMemo } from 'react';
3
+ import { Box, Link, Typography } from '@mui/material';
4
+ import { parseBlocks } from './parse';
5
+ /** More than a readme needs: the rest is not shown, so one cannot make every visitor's browser work on a book. */
6
+ export const MAX_MARKDOWN_LENGTH = 20_000;
7
+ const external = (href) => /^(https?:|mailto:)/i.test(href);
8
+ function renderInline(nodes) {
9
+ return nodes.map((node, index) => {
10
+ switch (node.type) {
11
+ case 'text':
12
+ return _jsx(Fragment, { children: node.text }, index);
13
+ case 'code':
14
+ return (_jsx(Box, { component: "code", sx: { fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace', fontSize: '0.9em', px: 0.5, borderRadius: 0.5, bgcolor: 'action.hover' }, children: node.text }, index));
15
+ case 'strong':
16
+ return _jsx("strong", { children: renderInline(node.children) }, index);
17
+ case 'em':
18
+ return _jsx("em", { children: renderInline(node.children) }, index);
19
+ case 'del':
20
+ return _jsx("del", { children: renderInline(node.children) }, index);
21
+ case 'br':
22
+ return _jsx("br", {}, index);
23
+ case 'link':
24
+ // Written by a stranger and read by everyone: no referrer, no endorsement, and `javascript:` never gets here.
25
+ return node.href ? (_jsx(Link, { href: node.href, ...(external(node.href) ? { target: '_blank', rel: 'noopener noreferrer nofollow ugc' } : {}), children: renderInline(node.children) }, index)) : (_jsx(Fragment, { children: renderInline(node.children) }, index));
26
+ case 'image':
27
+ // Never loaded: it would tell its author who read this, and from where. The reader gets the words, and a link.
28
+ return node.href ? (_jsxs(Link, { href: node.href, target: "_blank", rel: "noopener noreferrer nofollow ugc", children: [node.alt || node.href, " (image)"] }, index)) : (_jsx(Fragment, { children: node.alt }, index));
29
+ }
30
+ });
31
+ }
32
+ const alignOf = (align) => (align ? { textAlign: align } : {});
33
+ function renderBlock(block, index) {
34
+ switch (block.type) {
35
+ case 'heading': {
36
+ // The page has its own title, so `#` is the page's second level.
37
+ const level = Math.min(block.level + 1, 6);
38
+ return (_jsx(Typography, { component: `h${level}`, sx: { fontSize: ['1.5rem', '1.3rem', '1.15rem', '1.05rem', '1rem'][level - 2], fontWeight: 700, lineHeight: 1.3, mt: 3, mb: 1 }, children: renderInline(block.children) }, index));
39
+ }
40
+ case 'paragraph':
41
+ return (_jsx(Typography, { sx: { my: 1.5, overflowWrap: 'anywhere' }, children: renderInline(block.children) }, index));
42
+ case 'code':
43
+ return (_jsx(Box, { component: "pre", tabIndex: 0, sx: { my: 1.5, p: 1.5, overflowX: 'auto', borderRadius: 1, bgcolor: 'action.hover', fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace', fontSize: '0.875rem', lineHeight: 1.5 }, children: _jsx("code", { children: block.text }) }, index));
44
+ case 'quote':
45
+ return (_jsx(Box, { component: "blockquote", sx: { my: 1.5, mx: 0, pl: 2, borderLeft: 3, borderColor: 'divider', color: 'text.secondary' }, children: block.children.map(renderBlock) }, index));
46
+ case 'hr':
47
+ return _jsx(Box, { component: "hr", sx: { my: 3, border: 0, borderTop: 1, borderColor: 'divider' } }, index);
48
+ case 'list':
49
+ return (_jsx(Box, { component: block.ordered ? 'ol' : 'ul', start: block.ordered ? block.start : undefined, sx: { my: 1.5, pl: 3 }, children: block.items.map((item, itemIndex) => (_jsx("li", { children: item.map(renderBlock) }, itemIndex))) }, index));
50
+ case 'table':
51
+ return (_jsx(Box, { sx: { my: 1.5, overflowX: 'auto' }, children: _jsxs(Box, { component: "table", sx: { borderCollapse: 'collapse', minWidth: '50%', '& th, & td': { border: 1, borderColor: 'divider', px: 1.5, py: 0.75 }, '& th': { bgcolor: 'action.hover', fontWeight: 700 } }, children: [_jsx("thead", { children: _jsx("tr", { children: block.head.map((cell, column) => (_jsx("th", { scope: "col", style: alignOf(block.align[column]), children: renderInline(cell) }, column))) }) }), _jsx("tbody", { children: block.rows.map((row, rowIndex) => (_jsx("tr", { children: row.map((cell, column) => (_jsx("td", { style: alignOf(block.align[column]), children: renderInline(cell) }, column))) }, rowIndex))) })] }) }, index));
52
+ }
53
+ }
54
+ /**
55
+ * Text written in Markdown, shown safely. For what other people write (a project's readme): it renders to React
56
+ * elements, never to HTML, so nothing in it can run, raw HTML is shown as the text it is, images are not loaded,
57
+ * and a link must be http(s), mailto, an in-page anchor or an app path. See `parse.ts`.
58
+ */
59
+ export function Markdown({ children }) {
60
+ const blocks = useMemo(() => parseBlocks(children.slice(0, MAX_MARKDOWN_LENGTH)), [children]);
61
+ return _jsx(Box, { sx: { minWidth: 0, '& > :first-child': { mt: 0 }, '& > :last-child': { mb: 0 } }, children: blocks.map(renderBlock) });
62
+ }
63
+ //# sourceMappingURL=Markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../../src/components/Markdown/Markdown.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { Markdown, MAX_MARKDOWN_LENGTH } from './Markdown';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Markdown, MAX_MARKDOWN_LENGTH } from './Markdown';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Markdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * A small Markdown parser for text written by other people and shown to strangers (a project's readme).
3
+ *
4
+ * It produces a tree, never HTML: nothing here can inject markup, and raw HTML in the source is just text. It
5
+ * reads the part of Markdown a readme uses: headings, paragraphs, emphasis, code, links, lists (nested), quotes,
6
+ * rules and tables. Images are not loaded (see `Inline`), and a link must be http(s), mailto, an in-page `#anchor`
7
+ * or an app path.
8
+ */
9
+ export type Inline = {
10
+ type: 'text';
11
+ text: string;
12
+ } | {
13
+ type: 'code';
14
+ text: string;
15
+ } | {
16
+ type: 'strong' | 'em' | 'del';
17
+ children: Inline[];
18
+ }
19
+ /** `href` is null where the address is not one a link may have: the text is then shown without it. */
20
+ | {
21
+ type: 'link';
22
+ href: string | null;
23
+ children: Inline[];
24
+ }
25
+ /** Never fetched: a readme that could load images could tell its author who read it, and from where. */
26
+ | {
27
+ type: 'image';
28
+ alt: string;
29
+ href: string | null;
30
+ } | {
31
+ type: 'br';
32
+ };
33
+ export type Align = 'left' | 'center' | 'right' | undefined;
34
+ export type Block = {
35
+ type: 'heading';
36
+ level: 1 | 2 | 3 | 4 | 5 | 6;
37
+ children: Inline[];
38
+ } | {
39
+ type: 'paragraph';
40
+ children: Inline[];
41
+ } | {
42
+ type: 'code';
43
+ lang: string;
44
+ text: string;
45
+ } | {
46
+ type: 'quote';
47
+ children: Block[];
48
+ } | {
49
+ type: 'list';
50
+ ordered: boolean;
51
+ start: number;
52
+ items: Block[][];
53
+ } | {
54
+ type: 'table';
55
+ align: Align[];
56
+ head: Inline[][];
57
+ rows: Inline[][][];
58
+ } | {
59
+ type: 'hr';
60
+ };
61
+ /** The addresses a link may have; anything else (`javascript:`, `data:`, `vbscript:`) is shown as text. */
62
+ export declare function safeHref(href: string): string | null;
63
+ export declare function parseInline(text: string, depth?: number): Inline[];
64
+ export declare function parseBlocks(source: string, depth?: number): Block[];
65
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE;AACvD,sGAAsG;GACpG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE;AAC3D,wGAAwG;GACtG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAEnB,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,KAAK,EAAE,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAKnB,2GAA2G;AAC3G,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMpD;AA+DD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CA0C7D;AA0BD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,KAAK,EAAE,CAkH9D"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * A small Markdown parser for text written by other people and shown to strangers (a project's readme).
3
+ *
4
+ * It produces a tree, never HTML: nothing here can inject markup, and raw HTML in the source is just text. It
5
+ * reads the part of Markdown a readme uses: headings, paragraphs, emphasis, code, links, lists (nested), quotes,
6
+ * rules and tables. Images are not loaded (see `Inline`), and a link must be http(s), mailto, an in-page `#anchor`
7
+ * or an app path.
8
+ */
9
+ /** Quotes and lists inside quotes and lists stop here, so a hostile source cannot recurse without end. */
10
+ const MAX_DEPTH = 6;
11
+ /** The addresses a link may have; anything else (`javascript:`, `data:`, `vbscript:`) is shown as text. */
12
+ export function safeHref(href) {
13
+ const url = href.trim();
14
+ if (/^(https?:|mailto:)/i.test(url))
15
+ return url;
16
+ if (url.startsWith('#'))
17
+ return url;
18
+ if (url.startsWith('/') && !url.startsWith('//'))
19
+ return url;
20
+ return null;
21
+ }
22
+ const inlineRules = (depth) => [
23
+ { re: /\\([\\`*_{}[\]()#+\-.!~|>])/g, make: (m) => ({ node: { type: 'text', text: m[1] }, length: m[0].length }) },
24
+ {
25
+ // A run of backticks opens it and an equal run closes it; a longer or shorter run is just text. Bounded, or a page of
26
+ // backticks would take cubic time.
27
+ re: /(?<!`)(`{1,8})(?!`)([\s\S]{0,1000}?[^`])(?<!`)\1(?!`)/g,
28
+ make: (m) => ({ node: { type: 'code', text: m[2].replace(/^ (.*) $/, '$1') }, length: m[0].length })
29
+ },
30
+ {
31
+ re: /!\[([^\]\n]{0,300})\]\(\s*<?((?:[^\s()<>]|\([^\s()<>]*\)){1,2000})>?(?:\s+"[^"\n]{0,300}")?\s*\)/g,
32
+ make: (m) => ({ node: { type: 'image', alt: m[1], href: safeHref(m[2]) }, length: m[0].length })
33
+ },
34
+ {
35
+ re: /\[((?:[^\]\\\n]|\\.){1,500})\]\(\s*<?((?:[^\s()<>]|\([^\s()<>]*\)){1,2000})>?(?:\s+"[^"\n]{0,300}")?\s*\)/g,
36
+ make: (m) => ({ node: { type: 'link', href: safeHref(m[2]), children: parseInline(m[1], depth + 1) }, length: m[0].length })
37
+ },
38
+ {
39
+ re: /<((?:https?:\/\/|mailto:)[^\s<>]{1,2000})>/gi,
40
+ make: (m) => ({ node: { type: 'link', href: safeHref(m[1]), children: [{ type: 'text', text: m[1] }] }, length: m[0].length })
41
+ },
42
+ {
43
+ re: /\bhttps?:\/\/[^\s<]{1,2000}/gi,
44
+ make: (m) => {
45
+ // A sentence's own punctuation is not part of the address that ends it.
46
+ const url = m[0].replace(/[.,;:!?)'"\]]+$/, '');
47
+ return { node: { type: 'link', href: safeHref(url), children: [{ type: 'text', text: url }] }, length: url.length };
48
+ }
49
+ },
50
+ {
51
+ // The closing pair is the last two of a run, so `**bold *and italic***` closes at the end, not in the middle.
52
+ re: /\*\*(?=\S)([\s\S]{0,1000}?\S)\*\*(?!\*)/g,
53
+ make: (m) => ({ node: { type: 'strong', children: parseInline(m[1], depth + 1) }, length: m[0].length })
54
+ },
55
+ {
56
+ re: /(?<![\w_])__(?=\S)([\s\S]{0,1000}?\S)__(?![\w_])/g,
57
+ make: (m) => ({ node: { type: 'strong', children: parseInline(m[1], depth + 1) }, length: m[0].length })
58
+ },
59
+ {
60
+ re: /~~(?=\S)([\s\S]{0,1000}?\S)~~/g,
61
+ make: (m) => ({ node: { type: 'del', children: parseInline(m[1], depth + 1) }, length: m[0].length })
62
+ },
63
+ {
64
+ // `_` inside a word (snake_case) is not emphasis.
65
+ re: /(?:(?<![\w*])\*(?=[^\s*])([\s\S]{0,1000}?[^\s*])\*(?!\*)|(?<![\w_])_(?=[^\s_])([\s\S]{0,1000}?[^\s_])_(?![\w_]))/g,
66
+ make: (m) => ({ node: { type: 'em', children: parseInline(m[1] ?? m[2], depth + 1) }, length: m[0].length })
67
+ },
68
+ { re: /(?: {2,}|\\)\n/g, make: (m) => ({ node: { type: 'br' }, length: m[0].length }) }
69
+ ];
70
+ /** Longer than a paragraph needs: shown as the text it is, with no emphasis or links read out of it. */
71
+ const MAX_INLINE_LENGTH = 5000;
72
+ export function parseInline(text, depth = 0) {
73
+ if (depth > MAX_DEPTH)
74
+ return [{ type: 'text', text }];
75
+ if (text.length > MAX_INLINE_LENGTH)
76
+ return [{ type: 'text', text: text.replace(/\n/g, ' ') }];
77
+ const rules = inlineRules(depth);
78
+ // Where each pattern next matches, found once and kept until the scan passes it; null: nowhere ahead.
79
+ const next = rules.map(() => undefined);
80
+ const out = [];
81
+ const push = (value) => {
82
+ const plain = value.replace(/\n/g, ' ');
83
+ if (!plain)
84
+ return;
85
+ const last = out[out.length - 1];
86
+ if (last?.type === 'text')
87
+ last.text += plain;
88
+ else
89
+ out.push({ type: 'text', text: plain });
90
+ };
91
+ const find = (k, from) => {
92
+ const held = next[k];
93
+ if (held === null || (held && held.index >= from))
94
+ return held;
95
+ const rule = rules[k];
96
+ rule.re.lastIndex = from;
97
+ const m = rule.re.exec(text);
98
+ next[k] = m ? { index: m.index, ...rule.make(m) } : null;
99
+ return next[k];
100
+ };
101
+ let pos = 0;
102
+ while (pos < text.length) {
103
+ let best = null;
104
+ for (let k = 0; k < rules.length; k += 1) {
105
+ const found = find(k, pos);
106
+ if (found && (!best || found.index < best.index))
107
+ best = found;
108
+ }
109
+ if (!best) {
110
+ push(text.slice(pos));
111
+ break;
112
+ }
113
+ push(text.slice(pos, best.index));
114
+ if (best.node.type === 'text')
115
+ push(best.node.text);
116
+ else
117
+ out.push(best.node);
118
+ pos = best.index + best.length;
119
+ }
120
+ return out;
121
+ }
122
+ const FENCE = /^ {0,3}(`{3,}|~{3,})\s*([\w+-]*)[^\n]*$/;
123
+ const HEADING = /^ {0,3}(#{1,6})\s+(.*?)(?:\s+#+)?\s*$/;
124
+ const RULE = /^ {0,3}([-*_])(?:\s*\1){2,}\s*$/;
125
+ const QUOTE = /^ {0,3}>\s?(.*)$/;
126
+ const ITEM = /^(\s*)([-*+]|\d{1,9}[.)])\s+(.*)$/;
127
+ const TABLE_SEPARATOR = /^\s*\|?\s*:?-+:?\s*(?:\|\s*:?-+:?\s*)*\|?\s*$/;
128
+ const indentOf = (line) => line.match(/^\s*/)[0].replace(/\t/g, ' ').length;
129
+ const splitRow = (line) => {
130
+ const cells = line.trim().replace(/^\|/, '').replace(/\|$/, '').split(/(?<!\\)\|/);
131
+ return cells.map((cell) => cell.trim().replace(/\\\|/g, '|'));
132
+ };
133
+ /** A header row, then a delimiter row with as many cells: what makes a table a table. */
134
+ const isTableStart = (lines, i) => lines[i].includes('|') &&
135
+ i + 1 < lines.length &&
136
+ TABLE_SEPARATOR.test(lines[i + 1]) &&
137
+ splitRow(lines[i + 1]).length === splitRow(lines[i]).length;
138
+ const startsBlock = (line) => FENCE.test(line) || HEADING.test(line) || RULE.test(line) || QUOTE.test(line) || ITEM.test(line);
139
+ export function parseBlocks(source, depth = 0) {
140
+ if (depth > MAX_DEPTH)
141
+ return [{ type: 'paragraph', children: [{ type: 'text', text: source }] }];
142
+ const lines = source.replace(/\r\n?/g, '\n').split('\n');
143
+ const blocks = [];
144
+ let i = 0;
145
+ while (i < lines.length) {
146
+ const line = lines[i];
147
+ if (!line.trim()) {
148
+ i += 1;
149
+ continue;
150
+ }
151
+ const fence = FENCE.exec(line);
152
+ if (fence) {
153
+ const mark = fence[1];
154
+ const body = [];
155
+ i += 1;
156
+ while (i < lines.length && !new RegExp(`^ {0,3}${mark[0]}{${mark.length},}\\s*$`).test(lines[i])) {
157
+ body.push(lines[i]);
158
+ i += 1;
159
+ }
160
+ i += 1; // the closing fence, or the end of the text: an unclosed block runs to the end
161
+ blocks.push({ type: 'code', lang: fence[2], text: body.join('\n') });
162
+ continue;
163
+ }
164
+ const heading = HEADING.exec(line);
165
+ if (heading) {
166
+ blocks.push({ type: 'heading', level: heading[1].length, children: parseInline(heading[2]) });
167
+ i += 1;
168
+ continue;
169
+ }
170
+ if (RULE.test(line)) {
171
+ blocks.push({ type: 'hr' });
172
+ i += 1;
173
+ continue;
174
+ }
175
+ if (QUOTE.test(line)) {
176
+ const inner = [];
177
+ while (i < lines.length && QUOTE.test(lines[i])) {
178
+ inner.push(QUOTE.exec(lines[i])[1]);
179
+ i += 1;
180
+ }
181
+ blocks.push({ type: 'quote', children: parseBlocks(inner.join('\n'), depth + 1) });
182
+ continue;
183
+ }
184
+ if (isTableStart(lines, i)) {
185
+ const head = splitRow(line);
186
+ const align = splitRow(lines[i + 1]).map((cell) => cell.startsWith(':') && cell.endsWith(':') ? 'center' : cell.endsWith(':') ? 'right' : cell.startsWith(':') ? 'left' : undefined);
187
+ i += 2;
188
+ const rows = [];
189
+ while (i < lines.length && lines[i].trim() && lines[i].includes('|')) {
190
+ rows.push(splitRow(lines[i]));
191
+ i += 1;
192
+ }
193
+ blocks.push({
194
+ type: 'table',
195
+ align,
196
+ head: head.map((cell) => parseInline(cell)),
197
+ // A row has as many cells as the header: short ones are padded, long ones cut.
198
+ rows: rows.map((row) => head.map((_, column) => parseInline(row[column] ?? '')))
199
+ });
200
+ continue;
201
+ }
202
+ const item = ITEM.exec(line);
203
+ if (item) {
204
+ const base = indentOf(line);
205
+ const ordered = /\d/.test(item[2]);
206
+ const items = [];
207
+ const start = ordered ? parseInt(item[2], 10) : 1;
208
+ while (i < lines.length) {
209
+ const current = lines[i];
210
+ const marker = ITEM.exec(current);
211
+ if (marker && indentOf(current) === base) {
212
+ // A numbered list and a bullet list beside each other are two lists.
213
+ if (/\d/.test(marker[2]) !== ordered)
214
+ break;
215
+ items.push([marker[3]]);
216
+ i += 1;
217
+ }
218
+ else if (items.length > 0 && current.trim() && indentOf(current) > base) {
219
+ // Belongs to the item above: more of its text, or a list nested in it.
220
+ items[items.length - 1].push(current.slice(Math.min(indentOf(current), base + 2)));
221
+ i += 1;
222
+ }
223
+ else if (!current.trim() &&
224
+ i + 1 < lines.length &&
225
+ lines[i + 1].trim() &&
226
+ (indentOf(lines[i + 1]) > base || (ITEM.test(lines[i + 1]) && indentOf(lines[i + 1]) === base && /\d/.test(ITEM.exec(lines[i + 1])[2]) === ordered))) {
227
+ items[items.length - 1].push('');
228
+ i += 1;
229
+ }
230
+ else {
231
+ break;
232
+ }
233
+ }
234
+ blocks.push({ type: 'list', ordered, start, items: items.map((text) => parseBlocks(text.join('\n'), depth + 1)) });
235
+ continue;
236
+ }
237
+ const paragraph = [line];
238
+ i += 1;
239
+ while (i < lines.length && lines[i].trim() && !startsBlock(lines[i]) && !isTableStart(lines, i)) {
240
+ paragraph.push(lines[i]);
241
+ i += 1;
242
+ }
243
+ blocks.push({ type: 'paragraph', children: parseInline(paragraph.join('\n')) });
244
+ }
245
+ return blocks;
246
+ }
247
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/components/Markdown/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Copies the preview URL, with manual selection when clipboard access is unavailable. State belongs to one URL. */
2
+ export declare function ShareButton({ url }: {
3
+ url?: string;
4
+ }): import("react").JSX.Element | null;
5
+ //# sourceMappingURL=ShareButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareButton.d.ts","sourceRoot":"","sources":["../../src/components/ShareButton.tsx"],"names":[],"mappings":"AAuCA,oHAAoH;AACpH,wBAAgB,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,sCAEpD"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Alert, Button, Dialog, DialogContent, DialogTitle, TextField } from '@mui/material';
4
+ import { Share } from '@mui/icons-material';
5
+ function ShareButtonForUrl({ url }) {
6
+ const [copied, setCopied] = useState(false);
7
+ const [manual, setManual] = useState(false);
8
+ const copy = async () => {
9
+ try {
10
+ await navigator.clipboard.writeText(url);
11
+ setCopied(true);
12
+ }
13
+ catch {
14
+ setManual(true);
15
+ }
16
+ };
17
+ return (_jsxs(_Fragment, { children: [_jsx(Button, { size: "small", startIcon: _jsx(Share, {}), onClick: () => void copy(), onBlur: () => setCopied(false), children: copied ? 'Link copied' : 'Share' }), _jsxs(Dialog, { open: manual, onClose: () => setManual(false), fullWidth: true, maxWidth: "sm", children: [_jsx(DialogTitle, { children: "Share this page" }), _jsxs(DialogContent, { children: [_jsx(Alert, { severity: "info", sx: { mb: 2 }, children: "Copy this link to share the page." }), _jsx(TextField, { label: "Share link", value: url, fullWidth: true, slotProps: { input: { readOnly: true } }, onFocus: (event) => event.target.select() })] })] })] }));
18
+ }
19
+ /** Copies the preview URL, with manual selection when clipboard access is unavailable. State belongs to one URL. */
20
+ export function ShareButton({ url }) {
21
+ return url ? _jsx(ShareButtonForUrl, { url: url }, url) : null;
22
+ }
23
+ //# sourceMappingURL=ShareButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareButton.js","sourceRoot":"","sources":["../../src/components/ShareButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,SAAS,iBAAiB,CAAC,EAAE,GAAG,EAAmB;IACjD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACzC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CACL,8BACE,KAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,KAAC,KAAK,KAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,YAClG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,GAC1B,EACT,MAAC,MAAM,IAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,SAAS,QAAC,QAAQ,EAAC,IAAI,aAC5E,KAAC,WAAW,kCAA8B,EAC1C,MAAC,aAAa,eACZ,KAAC,KAAK,IAAC,QAAQ,EAAC,MAAM,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,kDAE5B,EACR,KAAC,SAAS,IACR,KAAK,EAAC,YAAY,EAClB,KAAK,EAAE,GAAG,EACV,SAAS,QACT,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GACzC,IACY,IACT,IACR,CACJ,CAAC;AACJ,CAAC;AAED,oHAAoH;AACpH,MAAM,UAAU,WAAW,CAAC,EAAE,GAAG,EAAoB;IACnD,OAAO,GAAG,CAAC,CAAC,CAAC,KAAC,iBAAiB,IAAW,GAAG,EAAE,GAAG,IAAb,GAAG,CAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  export { createApiClient, ApiError } from './apiClient';
2
+ export { clearVisits, readVisits, recordVisit, useRecentVisits, useTrackVisit } from './recentVisits';
3
+ export type { Visit, VisitKind } from './recentVisits';
2
4
  export type { ApiClientOptions, ApiRequestOptions, ApiClient } from './apiClient';
3
5
  export { Loader } from './components/Loader';
4
6
  export type { LoaderProps } from './components/Loader';
5
7
  export { ErrorPage } from './components/ErrorPage';
6
8
  export type { ErrorPageProps } from './components/ErrorPage';
7
9
  export { AppLayout } from './components/AppLayout';
8
- export type { AppLayoutProps, AppLayoutNavGroup, AppLayoutNavItem, AppLayoutInternalNavItem, AppLayoutExternalNavItem, AppLayoutUser } from './components/AppLayout';
10
+ export { Markdown, MAX_MARKDOWN_LENGTH } from './components/Markdown';
11
+ export type { AppLayoutProps, AppLayoutNavGroup, AppLayoutNavItem, AppLayoutInternalNavItem, AppLayoutExternalNavItem, AppLayoutRecent, AppLayoutUser } from './components/AppLayout';
9
12
  export { PageHeader, Panel, ListRow, RowIcon, SectionHeading, EmptyState, ResponsiveActions, TAB_BAR_HEIGHT, useCompactLayout } from './components/Page';
10
13
  export type { PageHeaderProps, PageAction, PanelProps, ListRowProps, SectionHeadingProps, EmptyStateProps, ResponsiveAction, ResponsiveActionsProps } from './components/Page';
11
14
  export { createVisinTheme, visinTheme, VISIN_COLORS, COLOR_SCHEME_ATTRIBUTE, COLOR_MODE_STORAGE_KEY, COLOR_SCHEME_STORAGE_KEY, brand, schemes, ink, surface, pageBackground, glass, glassInteractive, liftOnHover, raisedShadow, mainAction, chrome, onImage, tint, livePalette, chartSeries } from './theme';
@@ -15,7 +18,7 @@ export type { VisinThemeProviderProps, ColorMode, ColorModeSettingProps, ChartCo
15
18
  export { OwnerPicker, VisibilitySwitch, OwnerChip, TransferOwnershipDialog, transferTargets, ownerLabel } from './components/Ownership';
16
19
  export type { OwnerPickerProps, VisibilitySwitchProps, OwnerChipProps, TransferOwnershipDialogProps, OwnerRef, OwnerGroup, OwnerRole, Visibility } from './components/Ownership';
17
20
  export { createVisinNavigation } from './navigation';
18
- export type { VisinApp, VisinAppUrls, VisinNavigation } from './navigation';
21
+ export type { VisinApp, VisinAppUrls, VisinNavigation, VisinNavigationOptions } from './navigation';
19
22
  export { createProtectedRoute } from './components/ProtectedRoute';
20
23
  export type { ProtectedRouteProps, ProtectedRouteAuth } from './components/ProtectedRoute';
21
24
  export { createLoginRedirect } from './components/LoginRedirect';
@@ -26,4 +29,5 @@ export { createAuthContext } from './auth/AuthProvider';
26
29
  export type { AuthContextValue } from './auth/AuthProvider';
27
30
  export { createConfigProvider } from './config/createConfigProvider';
28
31
  export type { CreateConfigProviderOptions } from './config/createConfigProvider';
32
+ export { ShareButton } from './components/ShareButton';
29
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,UAAU,EACV,KAAK,EACL,OAAO,EACP,OAAO,EACP,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,eAAe,EACf,UAAU,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,EACL,OAAO,EACP,GAAG,EACH,OAAO,EACP,cAAc,EACd,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,MAAM,EACN,OAAO,EACP,IAAI,EACJ,WAAW,EACX,WAAW,EACZ,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,uBAAuB,EAAE,SAAS,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrH,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,uBAAuB,EACvB,eAAe,EACf,UAAU,EACX,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,4BAA4B,EAC5B,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,YAAY,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  // @visin/frontend-core - Shared frontend auth/API-client logic for Visin frontends
2
2
  export { createApiClient, ApiError } from './apiClient';
3
+ export { clearVisits, readVisits, recordVisit, useRecentVisits, useTrackVisit } from './recentVisits';
3
4
  export { Loader } from './components/Loader';
4
5
  export { ErrorPage } from './components/ErrorPage';
5
6
  export { AppLayout } from './components/AppLayout';
7
+ export { Markdown, MAX_MARKDOWN_LENGTH } from './components/Markdown';
6
8
  export { PageHeader, Panel, ListRow, RowIcon, SectionHeading, EmptyState, ResponsiveActions, TAB_BAR_HEIGHT, useCompactLayout } from './components/Page';
7
9
  export { createVisinTheme, visinTheme, VISIN_COLORS, COLOR_SCHEME_ATTRIBUTE, COLOR_MODE_STORAGE_KEY, COLOR_SCHEME_STORAGE_KEY, brand, schemes, ink, surface, pageBackground, glass, glassInteractive, liftOnHover, raisedShadow, mainAction, chrome, onImage, tint, livePalette, chartSeries } from './theme';
8
10
  export { VisinThemeProvider, ColorModeSetting, COLOR_MODE_OPTIONS, useThemeColorMeta, useActivePalette, useChartColors } from './components/ColorMode';
@@ -13,4 +15,5 @@ export { createLoginRedirect } from './components/LoginRedirect';
13
15
  export { createAuthService } from './auth/authService';
14
16
  export { createAuthContext } from './auth/AuthProvider';
15
17
  export { createConfigProvider } from './config/createConfigProvider';
18
+ export { ShareButton } from './components/ShareButton';
16
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AASnD,OAAO,EACL,UAAU,EACV,KAAK,EACL,OAAO,EACP,OAAO,EACP,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAW3B,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,EACL,OAAO,EACP,GAAG,EACH,OAAO,EACP,cAAc,EACd,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,MAAM,EACN,OAAO,EACP,IAAI,EACJ,WAAW,EACX,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,uBAAuB,EACvB,eAAe,EACf,UAAU,EACX,MAAM,wBAAwB,CAAC;AAWhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAItG,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAUtE,OAAO,EACL,UAAU,EACV,KAAK,EACL,OAAO,EACP,OAAO,EACP,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAW3B,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,EACL,OAAO,EACP,GAAG,EACH,OAAO,EACP,cAAc,EACd,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,MAAM,EACN,OAAO,EACP,IAAI,EACJ,WAAW,EACX,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,uBAAuB,EACvB,eAAe,EACf,UAAU,EACX,MAAM,wBAAwB,CAAC;AAWhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import type { AppLayoutNavGroup, AppLayoutNavItem } from './components/AppLayout';
2
2
  /** The fronts whose sections make up the shared menu. */
3
- export type VisinApp = 'vision' | 'label' | 'account';
3
+ export type VisinApp = 'shell' | 'vision' | 'label' | 'account';
4
4
  export interface VisinAppUrls {
5
+ /** Base URL of shell-front, which owns Home and Explore, e.g. https://app.example.com */
6
+ shell?: string;
5
7
  /** Base URL of vision-front, e.g. https://ml.example.com */
6
8
  vision?: string;
7
9
  /** Base URL of label-front, e.g. https://label.example.com */
@@ -13,6 +15,14 @@ export interface VisinNavigation {
13
15
  groups: AppLayoutNavGroup[];
14
16
  accountItems: AppLayoutNavItem[];
15
17
  }
18
+ export interface VisinNavigationOptions {
19
+ /**
20
+ * Whether the viewer has a session. A visitor's menu leaves out what needs an
21
+ * account (Labels, For you), so no entry leads to a sign-in wall. Defaults to
22
+ * true: label-front and account-front serve no visitors.
23
+ */
24
+ isAuthenticated?: boolean;
25
+ }
16
26
  /**
17
27
  * Builds the shared menu. `localApps` are the apps whose sections are routes of
18
28
  * the page drawing the menu: one app in a standalone front, all of them in
@@ -24,5 +34,5 @@ export interface VisinNavigation {
24
34
  * should hide Jobs, not leave entries that 404 inside Vision. A
25
35
  * group left with no sections is omitted with them.
26
36
  */
27
- export declare function createVisinNavigation(localApps: VisinApp | readonly VisinApp[] | null, urls: VisinAppUrls): VisinNavigation;
37
+ export declare function createVisinNavigation(localApps: VisinApp | readonly VisinApp[] | null, urls: VisinAppUrls, { isAuthenticated }?: VisinNavigationOptions): VisinNavigation;
28
38
  //# sourceMappingURL=navigation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAElF,yDAAyD;AACzD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AA6DD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,IAAI,EAChD,IAAI,EAAE,YAAY,GACjB,eAAe,CAqBjB"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAElF,yDAAyD;AACzD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AA2FD,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,IAAI,EAChD,IAAI,EAAE,YAAY,EAClB,EAAE,eAAsB,EAAE,GAAE,sBAA2B,GACtD,eAAe,CAmCjB"}