anentrypoint-design 0.0.121 → 0.0.124
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 +253 -253
- package/app-shell.css +931 -594
- package/colors_and_type.css +226 -226
- package/community.css +817 -1222
- package/dist/247420.css +2202 -2084
- package/dist/247420.js +13 -13
- package/package.json +80 -80
- package/src/bootstrap.js +25 -25
- package/src/components/chat.js +199 -199
- package/src/components/community.js +190 -208
- package/src/components/content.js +269 -269
- package/src/components/editor-primitives.js +100 -0
- package/src/components/files-modals.js +107 -107
- package/src/components/files.js +118 -118
- package/src/components/freddie/helpers.js +50 -50
- package/src/components/freddie.js +33 -33
- package/src/components/shell.js +117 -117
- package/src/components/theme-toggle.js +70 -70
- package/src/components.js +59 -57
- package/src/debug.js +30 -30
- package/src/deck-stage.js +21 -21
- package/src/highlight.js +65 -32
- package/src/index.js +86 -86
- package/src/kits/os/about-app.js +52 -52
- package/src/kits/os/app-panes.css +152 -152
- package/src/kits/os/browser-app.js +58 -58
- package/src/kits/os/files-app.js +44 -44
- package/src/kits/os/freddie/helpers.js +59 -59
- package/src/kits/os/freddie/pages-chat.js +143 -143
- package/src/kits/os/freddie/pages-core.js +101 -101
- package/src/kits/os/freddie/pages-os.js +51 -51
- package/src/kits/os/freddie/pages-tools.js +183 -183
- package/src/kits/os/freddie/routes.js +24 -24
- package/src/kits/os/freddie-dashboard.css +51 -51
- package/src/kits/os/freddie-dashboard.js +101 -101
- package/src/kits/os/icons.js +17 -17
- package/src/kits/os/index.js +17 -17
- package/src/kits/os/launcher.css +61 -61
- package/src/kits/os/launcher.js +79 -79
- package/src/kits/os/monitor-app.js +34 -34
- package/src/kits/os/shell.js +214 -214
- package/src/kits/os/terminal-app.js +45 -45
- package/src/kits/os/theme.css +450 -450
- package/src/kits/os/validate.css +19 -19
- package/src/kits/os/validator-app.js +55 -55
- package/src/kits/os/wm.css +115 -115
- package/src/kits/os/wm.js +111 -111
- package/src/markdown.js +39 -39
- package/src/motion.js +35 -35
- package/src/page-html.js +196 -196
- package/src/styles.js +25 -25
- package/src/theme.js +99 -99
- package/src/web-components/ds-chat.js +116 -116
- package/dist/.nojekyll +0 -0
- package/dist/app-shell.css +0 -594
- package/dist/colors_and_type.css +0 -197
- package/dist/favicon.svg +0 -1
- package/dist/index.html +0 -308
- package/dist/preview/buttons.html +0 -28
- package/dist/preview/colors-core.html +0 -45
- package/dist/preview/colors-lore.html +0 -28
- package/dist/preview/colors-semantic.html +0 -34
- package/dist/preview/dateline.html +0 -19
- package/dist/preview/dropzone.html +0 -30
- package/dist/preview/file-grid.html +0 -19
- package/dist/preview/file-row.html +0 -20
- package/dist/preview/file-toolbar.html +0 -40
- package/dist/preview/file-viewer.html +0 -31
- package/dist/preview/header.html +0 -24
- package/dist/preview/icons-unicode.html +0 -26
- package/dist/preview/index-row.html +0 -25
- package/dist/preview/inputs.html +0 -22
- package/dist/preview/manifesto.html +0 -52
- package/dist/preview/motion-default.js +0 -106
- package/dist/preview/rules.html +0 -16
- package/dist/preview/spacing.html +0 -18
- package/dist/preview/stamps-lore.html +0 -20
- package/dist/preview/stamps.html +0 -14
- package/dist/preview/theme-ink.html +0 -15
- package/dist/preview/type-display.html +0 -16
- package/dist/preview/type-mono.html +0 -15
- package/dist/preview/type-prose.html +0 -11
- package/dist/preview/type-scale.html +0 -20
- package/dist/preview/wordmarks.html +0 -28
- package/dist/robots.txt +0 -8
- package/dist/site/content/globals/navigation.yaml +0 -5
- package/dist/site/content/globals/site.yaml +0 -16
- package/dist/site/content/pages/freddie.yaml +0 -88
- package/dist/site/content/pages/home.yaml +0 -190
- package/dist/site/theme.mjs +0 -368
- package/dist/sitemap.xml +0 -31
- package/dist/slides/deck-stage-overlay.js +0 -63
- package/dist/slides/deck-stage-state.js +0 -81
- package/dist/slides/deck-stage-style.js +0 -117
- package/dist/slides/deck-stage.js +0 -159
- package/dist/slides/index.html +0 -276
- package/dist/src/bootstrap.js +0 -25
- package/dist/src/components/chat.js +0 -199
- package/dist/src/components/community.js +0 -167
- package/dist/src/components/content.js +0 -213
- package/dist/src/components/files-modals.js +0 -107
- package/dist/src/components/files.js +0 -118
- package/dist/src/components/freddie/helpers.js +0 -50
- package/dist/src/components/freddie.js +0 -33
- package/dist/src/components/shell.js +0 -117
- package/dist/src/components/theme-toggle.js +0 -70
- package/dist/src/components.js +0 -52
- package/dist/src/debug.js +0 -30
- package/dist/src/deck-stage.js +0 -21
- package/dist/src/highlight.js +0 -32
- package/dist/src/index.js +0 -86
- package/dist/src/kits/os/about-app.js +0 -52
- package/dist/src/kits/os/app-panes.css +0 -152
- package/dist/src/kits/os/browser-app.js +0 -58
- package/dist/src/kits/os/files-app.js +0 -44
- package/dist/src/kits/os/freddie/helpers.js +0 -59
- package/dist/src/kits/os/freddie/pages-chat.js +0 -143
- package/dist/src/kits/os/freddie/pages-core.js +0 -101
- package/dist/src/kits/os/freddie/pages-os.js +0 -51
- package/dist/src/kits/os/freddie/pages-tools.js +0 -183
- package/dist/src/kits/os/freddie/routes.js +0 -24
- package/dist/src/kits/os/freddie-dashboard.css +0 -51
- package/dist/src/kits/os/freddie-dashboard.js +0 -101
- package/dist/src/kits/os/icons.js +0 -17
- package/dist/src/kits/os/index.js +0 -5
- package/dist/src/kits/os/launcher.css +0 -61
- package/dist/src/kits/os/launcher.js +0 -79
- package/dist/src/kits/os/monitor-app.js +0 -34
- package/dist/src/kits/os/shell.js +0 -214
- package/dist/src/kits/os/terminal-app.js +0 -45
- package/dist/src/kits/os/theme.css +0 -412
- package/dist/src/kits/os/validate.css +0 -19
- package/dist/src/kits/os/validator-app.js +0 -55
- package/dist/src/kits/os/wm.css +0 -115
- package/dist/src/kits/os/wm.js +0 -111
- package/dist/src/markdown.js +0 -39
- package/dist/src/motion.js +0 -35
- package/dist/src/page-html.js +0 -196
- package/dist/src/styles.js +0 -25
- package/dist/src/theme.js +0 -99
- package/dist/src/web-components/ds-chat.js +0 -45
- package/dist/ui_kits/aicat/README.md +0 -7
- package/dist/ui_kits/aicat/app.js +0 -156
- package/dist/ui_kits/aicat/index.html +0 -26
- package/dist/ui_kits/aicat/sample-square.png +0 -0
- package/dist/ui_kits/aicat/sample-svg.svg +0 -1
- package/dist/ui_kits/aicat/sample.pdf +0 -32
- package/dist/ui_kits/blog/README.md +0 -3
- package/dist/ui_kits/blog/index.html +0 -90
- package/dist/ui_kits/chat/README.md +0 -5
- package/dist/ui_kits/chat/app.js +0 -110
- package/dist/ui_kits/chat/index.html +0 -26
- package/dist/ui_kits/chat/sample-square.png +0 -0
- package/dist/ui_kits/chat/sample-svg.svg +0 -1
- package/dist/ui_kits/chat/sample.pdf +0 -32
- package/dist/ui_kits/community/app.js +0 -134
- package/dist/ui_kits/community/index.html +0 -24
- package/dist/ui_kits/dashboard/app.js +0 -92
- package/dist/ui_kits/dashboard/index.html +0 -26
- package/dist/ui_kits/docs/README.md +0 -3
- package/dist/ui_kits/docs/index.html +0 -123
- package/dist/ui_kits/error_404/app.js +0 -56
- package/dist/ui_kits/error_404/index.html +0 -26
- package/dist/ui_kits/file_browser/README.md +0 -48
- package/dist/ui_kits/file_browser/app.js +0 -231
- package/dist/ui_kits/file_browser/index.html +0 -33
- package/dist/ui_kits/gallery/app.js +0 -121
- package/dist/ui_kits/gallery/index.html +0 -26
- package/dist/ui_kits/homepage/README.md +0 -7
- package/dist/ui_kits/homepage/app.js +0 -167
- package/dist/ui_kits/homepage/index.html +0 -46
- package/dist/ui_kits/project_page/README.md +0 -3
- package/dist/ui_kits/project_page/app.js +0 -154
- package/dist/ui_kits/project_page/index.html +0 -45
- package/dist/ui_kits/search/app.js +0 -107
- package/dist/ui_kits/search/index.html +0 -26
- package/dist/ui_kits/settings/app.js +0 -133
- package/dist/ui_kits/settings/index.html +0 -26
- package/dist/ui_kits/signin/app.js +0 -115
- package/dist/ui_kits/signin/index.html +0 -26
- package/dist/ui_kits/slide_deck/app.js +0 -174
- package/dist/ui_kits/slide_deck/index.html +0 -26
- package/dist/ui_kits/system_primer/app.js +0 -152
- package/dist/ui_kits/system_primer/index.html +0 -26
- package/dist/ui_kits/terminal/app.js +0 -150
- package/dist/ui_kits/terminal/index.html +0 -26
- package/dist/vendor/webjsx/applyDiff.js +0 -182
- package/dist/vendor/webjsx/attributes.js +0 -154
- package/dist/vendor/webjsx/constants.js +0 -4
- package/dist/vendor/webjsx/createDOMElement.js +0 -52
- package/dist/vendor/webjsx/createElement.js +0 -75
- package/dist/vendor/webjsx/elementTags.js +0 -115
- package/dist/vendor/webjsx/factory.js +0 -6
- package/dist/vendor/webjsx/index.js +0 -6
- package/dist/vendor/webjsx/jsx-dev-runtime.js +0 -2
- package/dist/vendor/webjsx/jsx-runtime.js +0 -30
- package/dist/vendor/webjsx/jsx.js +0 -2
- package/dist/vendor/webjsx/package.json +0 -39
- package/dist/vendor/webjsx/renderSuspension.js +0 -25
- package/dist/vendor/webjsx/types.js +0 -5
- package/dist/vendor/webjsx/utils.js +0 -84
- package/src/components/overlays.js +0 -151
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// Freddie page registry. Matches upstream shape:
|
|
2
|
-
// FREDDIE_PAGES is an OBJECT mapping id → page-renderer fn (not an array).
|
|
3
|
-
// Per-page renderer functions are stubs by default — consumers (gm-cc,
|
|
4
|
-
// foph, hermes-fork, etc.) provide their own page bodies or import the
|
|
5
|
-
// richer upstream renderers.
|
|
6
|
-
|
|
7
|
-
import { renderPageStub, getRecentPaths, saveRecentPath, skillLabel, renderChatMessages } from './freddie/helpers.js';
|
|
8
|
-
|
|
9
|
-
const make = (label) => (props) => renderPageStub({ id: label, ...props });
|
|
10
|
-
|
|
11
|
-
export const home = make('home');
|
|
12
|
-
export const chat = make('chat');
|
|
13
|
-
export const voice = make('voice');
|
|
14
|
-
export const sessions = make('sessions');
|
|
15
|
-
export const projects = make('projects');
|
|
16
|
-
export const agents = make('agents');
|
|
17
|
-
export const analytics = make('analytics');
|
|
18
|
-
export const models = make('models');
|
|
19
|
-
export const cron = make('cron');
|
|
20
|
-
export const skills = make('skills');
|
|
21
|
-
export const config = make('config');
|
|
22
|
-
export const env = make('env');
|
|
23
|
-
export const tools = make('tools');
|
|
24
|
-
export const batch = make('batch');
|
|
25
|
-
export const gateway = make('gateway');
|
|
26
|
-
export const chains = make('chains');
|
|
27
|
-
|
|
28
|
-
export const FREDDIE_PAGES = {
|
|
29
|
-
home, chat, voice, sessions, projects, agents, analytics,
|
|
30
|
-
models, cron, skills, config, env, tools, batch, gateway, chains
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export { skillLabel, getRecentPaths, saveRecentPath, renderChatMessages };
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
// Chrome: Topbar, Crumb, Side, Status, AppShell, plus primitives
|
|
2
|
-
// (Brand, Chip, Btn, Glyph, Heading, Lede). Pure factories — props in,
|
|
3
|
-
// webjsx vnode out. CSS in app-shell.css uses these class names.
|
|
4
|
-
|
|
5
|
-
import * as webjsx from '../../vendor/webjsx/index.js';
|
|
6
|
-
const h = webjsx.createElement;
|
|
7
|
-
|
|
8
|
-
export function Brand({ name = '247420', leaf } = {}) {
|
|
9
|
-
return h('span', { class: 'brand' }, name,
|
|
10
|
-
leaf ? h('span', { class: 'slash' }, ' / ') : null,
|
|
11
|
-
leaf || null);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export function Chip({ tone = '', children }) {
|
|
15
|
-
return h('span', { class: 'chip' + (tone ? ' tone-' + tone : '') }, children);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function Btn({ href = '#', primary, ghost, children, onClick }) {
|
|
19
|
-
const cls = primary ? 'btn-primary' : (ghost ? 'btn-ghost' : 'btn');
|
|
20
|
-
return h('a', { class: cls, href, onclick: onClick }, children);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export function Glyph({ children, color }) {
|
|
24
|
-
return h('span', { class: 'glyph', style: color ? `color:${color}` : '' }, children);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function Topbar({ brand = '247420', leaf = '', items = [], active = '', onNav, search } = {}) {
|
|
28
|
-
return h('header', { class: 'app-topbar' },
|
|
29
|
-
Brand({ name: brand, leaf }),
|
|
30
|
-
search ? h('label', { class: 'app-search' },
|
|
31
|
-
h('span', { class: 'icon' }, '⌕'),
|
|
32
|
-
h('input', { type: 'search', placeholder: search, 'aria-label': 'search' })
|
|
33
|
-
) : h('span', {}),
|
|
34
|
-
h('nav', {}, ...items.map(([label, href]) =>
|
|
35
|
-
h('a', {
|
|
36
|
-
key: label,
|
|
37
|
-
href,
|
|
38
|
-
class: active === String(label).replace(' ↗', '') ? 'active' : '',
|
|
39
|
-
onclick: (e) => {
|
|
40
|
-
if (!String(href).startsWith('http') && onNav) {
|
|
41
|
-
e.preventDefault();
|
|
42
|
-
onNav(String(label).replace(' ↗', ''));
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}, label)
|
|
46
|
-
))
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function Crumb({ trail = [], leaf = '', right } = {}) {
|
|
51
|
-
const parts = [];
|
|
52
|
-
trail.forEach((t, i) => {
|
|
53
|
-
parts.push(h('span', { key: 't' + i }, t));
|
|
54
|
-
parts.push(h('span', { key: 's' + i, class: 'sep' }, '›'));
|
|
55
|
-
});
|
|
56
|
-
parts.push(h('span', { key: 'leaf', class: 'leaf' }, leaf));
|
|
57
|
-
if (right) parts.push(h('span', { key: 'r', class: 'crumb-right' }, ...(Array.isArray(right) ? right : [right])));
|
|
58
|
-
return h('div', { class: 'app-crumb' }, ...parts);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export function Side({ sections = [] } = {}) {
|
|
62
|
-
return h('aside', { class: 'app-side' }, ...sections.flatMap(sec => [
|
|
63
|
-
h('div', { class: 'group', key: sec.group }, sec.group),
|
|
64
|
-
...sec.items.map((item, i) => {
|
|
65
|
-
const { glyph, label, href = '#', active, count, color, onClick } = item;
|
|
66
|
-
return h('a', {
|
|
67
|
-
key: sec.group + i,
|
|
68
|
-
href,
|
|
69
|
-
class: active ? 'active' : '',
|
|
70
|
-
onclick: onClick
|
|
71
|
-
},
|
|
72
|
-
glyph != null ? Glyph({ children: glyph, color }) : h('span', { class: 'glyph' }),
|
|
73
|
-
h('span', {}, label),
|
|
74
|
-
count != null ? h('span', { class: 'count' }, String(count)) : null
|
|
75
|
-
);
|
|
76
|
-
})
|
|
77
|
-
]));
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export function Status({ left = [], right = [] } = {}) {
|
|
81
|
-
return h('footer', { class: 'app-status' },
|
|
82
|
-
...left.map((t, i) => h('span', { key: 'l' + i, class: 'item' }, t)),
|
|
83
|
-
h('span', { class: 'spread' }),
|
|
84
|
-
...right.map((t, i) => h('span', { key: 'r' + i, class: 'item' }, t))
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export function AppShell({ topbar, crumb, side, main, status, narrow } = {}) {
|
|
89
|
-
const hasSide = Boolean(side);
|
|
90
|
-
const sideNode = hasSide ? side : h('aside', { class: 'app-side', 'aria-hidden': 'true' });
|
|
91
|
-
return h('div', { class: 'app' },
|
|
92
|
-
topbar || null,
|
|
93
|
-
crumb || null,
|
|
94
|
-
h('div', { class: 'app-body' + (hasSide ? '' : ' no-side') },
|
|
95
|
-
h('div', { class: 'app-side-shell' }, sideNode),
|
|
96
|
-
h('main', { class: 'app-main' + (narrow ? ' narrow' : '') }, ...(Array.isArray(main) ? main : [main]))
|
|
97
|
-
),
|
|
98
|
-
status || null
|
|
99
|
-
);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export function Heading({ level = 1, children, style = '' }) {
|
|
103
|
-
return h('h' + level, { style }, children);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export function Lede({ children }) {
|
|
107
|
-
return h('p', { class: 'lede' }, children);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export function Dot({ tone = 'live' }) {
|
|
111
|
-
const cls = tone === 'live' ? 'ds-dot-live' : 'ds-dot-idle';
|
|
112
|
-
return h('span', { class: cls }, tone === 'live' ? '●' : '○');
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export function Rail({ tone = 'green' }) {
|
|
116
|
-
return h('span', { class: 'ds-rail tone-' + tone, 'aria-hidden': 'true' });
|
|
117
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
// ThemeToggle — segmented auto/paper/ink radio bound to src/theme.js.
|
|
2
|
-
//
|
|
3
|
-
// Usage:
|
|
4
|
-
// import { ThemeToggle } from 'anentrypoint-design';
|
|
5
|
-
// ThemeToggle() // segmented control
|
|
6
|
-
// ThemeToggle({ compact: true }) // single cycling glyph button
|
|
7
|
-
//
|
|
8
|
-
// Reads current mode from the theme controller; clicks call applyTheme()
|
|
9
|
-
// which persists, updates <html data-theme>, and notifies listeners.
|
|
10
|
-
|
|
11
|
-
import * as webjsx from '../../vendor/webjsx/index.js';
|
|
12
|
-
import { applyTheme, getTheme, resolvedTheme, onThemeChange } from '../theme.js';
|
|
13
|
-
|
|
14
|
-
const h = webjsx.createElement;
|
|
15
|
-
|
|
16
|
-
const MODES = [
|
|
17
|
-
['auto', '⌗', 'auto'],
|
|
18
|
-
['paper', '☀', 'light'],
|
|
19
|
-
['ink', '☾', 'dark'],
|
|
20
|
-
];
|
|
21
|
-
|
|
22
|
-
// Track instances so an OS-theme change while in 'auto' re-renders the
|
|
23
|
-
// glyph in the compact variant (the segmented variant doesn't need it).
|
|
24
|
-
const refresh = new Set();
|
|
25
|
-
let _bound = false;
|
|
26
|
-
function bindOnce() {
|
|
27
|
-
if (_bound) return;
|
|
28
|
-
_bound = true;
|
|
29
|
-
onThemeChange(() => { for (const cb of refresh) cb(); });
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export function ThemeToggle({ compact = false, onChange } = {}) {
|
|
33
|
-
bindOnce();
|
|
34
|
-
const current = getTheme();
|
|
35
|
-
|
|
36
|
-
if (compact) {
|
|
37
|
-
const resolved = resolvedTheme();
|
|
38
|
-
const glyph = current === 'auto' ? '⌗' : (resolved === 'ink' ? '☾' : '☀');
|
|
39
|
-
const label = current === 'auto' ? `auto (${resolved})` : (current === 'ink' ? 'dark' : 'light');
|
|
40
|
-
return h('button', {
|
|
41
|
-
class: 'btn ds-theme-toggle',
|
|
42
|
-
type: 'button',
|
|
43
|
-
'aria-label': 'theme: ' + label,
|
|
44
|
-
title: 'theme: ' + label + ' — click to cycle',
|
|
45
|
-
onclick: () => {
|
|
46
|
-
const next = current === 'auto' ? 'paper' : (current === 'paper' ? 'ink' : 'auto');
|
|
47
|
-
applyTheme(next);
|
|
48
|
-
if (onChange) try { onChange(next); } catch {}
|
|
49
|
-
}
|
|
50
|
-
}, h('span', { class: 'glyph' }, glyph), ' ', label);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return h('div', {
|
|
54
|
-
class: 'ds-theme-toggle ds-segmented',
|
|
55
|
-
role: 'radiogroup',
|
|
56
|
-
'aria-label': 'theme'
|
|
57
|
-
}, ...MODES.map(([mode, glyph, label]) =>
|
|
58
|
-
h('button', {
|
|
59
|
-
key: mode,
|
|
60
|
-
type: 'button',
|
|
61
|
-
role: 'radio',
|
|
62
|
-
'aria-checked': current === mode ? 'true' : 'false',
|
|
63
|
-
class: 'ds-seg-btn' + (current === mode ? ' is-on' : ''),
|
|
64
|
-
onclick: () => {
|
|
65
|
-
applyTheme(mode);
|
|
66
|
-
if (onChange) try { onChange(mode); } catch {}
|
|
67
|
-
}
|
|
68
|
-
}, h('span', { class: 'glyph' }, glyph), ' ', label)
|
|
69
|
-
));
|
|
70
|
-
}
|
package/dist/src/components.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
// Component barrel — matches upstream export surface 1:1.
|
|
2
|
-
|
|
3
|
-
import * as webjsx from '../vendor/webjsx/index.js';
|
|
4
|
-
export const h = webjsx.createElement;
|
|
5
|
-
|
|
6
|
-
export {
|
|
7
|
-
Brand, Chip, Btn, Glyph,
|
|
8
|
-
Topbar, Crumb, Side, Status, AppShell,
|
|
9
|
-
Heading, Lede, Dot, Rail
|
|
10
|
-
} from './components/shell.js';
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
Panel, Row, RowLink,
|
|
14
|
-
Hero, Install, Receipt, Changelog,
|
|
15
|
-
WorksList, WritingList, Manifesto, Section,
|
|
16
|
-
Kpi, Table,
|
|
17
|
-
HomeView, ProjectView, Form
|
|
18
|
-
} from './components/content.js';
|
|
19
|
-
|
|
20
|
-
export {
|
|
21
|
-
fmtBytes, renderInline,
|
|
22
|
-
ChatMessage, ChatComposer, Chat,
|
|
23
|
-
AICAT_FACE, AICatPortrait, AICat
|
|
24
|
-
} from './components/chat.js';
|
|
25
|
-
|
|
26
|
-
export {
|
|
27
|
-
fileGlyph, fmtFileSize,
|
|
28
|
-
FileIcon, FileRow, FileGrid, FileToolbar,
|
|
29
|
-
DropZone, UploadProgress, EmptyState, BreadcrumbPath
|
|
30
|
-
} from './components/files.js';
|
|
31
|
-
|
|
32
|
-
export {
|
|
33
|
-
ConfirmDialog, PromptDialog,
|
|
34
|
-
FilePreviewMedia, FilePreviewCode, FilePreviewText, FileViewer
|
|
35
|
-
} from './components/files-modals.js';
|
|
36
|
-
|
|
37
|
-
export {
|
|
38
|
-
ServerIcon, ServerRail,
|
|
39
|
-
ChannelItem, ChannelCategory,
|
|
40
|
-
VoiceUser, UserPanel, ChannelSidebar,
|
|
41
|
-
MemberItem, MemberList,
|
|
42
|
-
ChatHeader, VoiceStrip, CommunityShell
|
|
43
|
-
} from './components/community.js';
|
|
44
|
-
|
|
45
|
-
export { ThemeToggle } from './components/theme-toggle.js';
|
|
46
|
-
|
|
47
|
-
export {
|
|
48
|
-
FREDDIE_PAGES,
|
|
49
|
-
home, chat, voice, sessions, projects, agents, analytics,
|
|
50
|
-
models, cron, skills, config, env, tools, batch, gateway, chains,
|
|
51
|
-
skillLabel, getRecentPaths, saveRecentPath, renderChatMessages
|
|
52
|
-
} from './components/freddie.js';
|
package/dist/src/debug.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
// Lightweight client-side registry. Subsystems register a snapshot fn;
|
|
2
|
-
// `window.__debug` exposes them all for live inspection.
|
|
3
|
-
|
|
4
|
-
const _registry = new Map();
|
|
5
|
-
|
|
6
|
-
export function register(name, snapshotFn) {
|
|
7
|
-
if (typeof name !== 'string' || typeof snapshotFn !== 'function') return;
|
|
8
|
-
_registry.set(name, snapshotFn);
|
|
9
|
-
if (typeof window !== 'undefined') {
|
|
10
|
-
if (!window.__debug) window.__debug = {};
|
|
11
|
-
Object.defineProperty(window.__debug, name, {
|
|
12
|
-
get() { try { return snapshotFn(); } catch (e) { return { error: String(e) }; } },
|
|
13
|
-
configurable: true,
|
|
14
|
-
enumerable: true,
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function unregister(name) {
|
|
20
|
-
_registry.delete(name);
|
|
21
|
-
if (typeof window !== 'undefined' && window.__debug) delete window.__debug[name];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export function snapshot() {
|
|
25
|
-
const out = {};
|
|
26
|
-
for (const [k, fn] of _registry) {
|
|
27
|
-
try { out[k] = fn(); } catch (e) { out[k] = { error: String(e) }; }
|
|
28
|
-
}
|
|
29
|
-
return out;
|
|
30
|
-
}
|
package/dist/src/deck-stage.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// deck-stage — lazy registration. Consumer calls registerDeckStage() in a
|
|
2
|
-
// browser context; we side-effect import the upstream slides/deck-stage.js
|
|
3
|
-
// (the starter-component web component that handles scaling + nav).
|
|
4
|
-
|
|
5
|
-
let _registered = false;
|
|
6
|
-
export async function registerDeckStage() {
|
|
7
|
-
if (_registered) return (typeof customElements !== 'undefined') ? customElements.get('deck-stage') : null;
|
|
8
|
-
if (typeof customElements === 'undefined' || typeof HTMLElement === 'undefined') return null;
|
|
9
|
-
try {
|
|
10
|
-
await import('../slides/deck-stage.js');
|
|
11
|
-
} catch (err) {
|
|
12
|
-
console.warn('[247420] deck-stage import failed:', err);
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
_registered = true;
|
|
16
|
-
return customElements.get('deck-stage');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function getDeckStage() {
|
|
20
|
-
return (typeof customElements !== 'undefined') ? customElements.get('deck-stage') : null;
|
|
21
|
-
}
|
package/dist/src/highlight.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
// Syntax highlighting — lazy-loads Prism on first call. No-op safe.
|
|
2
|
-
|
|
3
|
-
let _prism = null;
|
|
4
|
-
let _ready = null;
|
|
5
|
-
|
|
6
|
-
const PRISM_CORE = 'https://cdn.jsdelivr.net/npm/prismjs@1.30.0/components/prism-core.min.js';
|
|
7
|
-
|
|
8
|
-
export async function ensurePrism() {
|
|
9
|
-
if (_prism) return _prism;
|
|
10
|
-
if (_ready) return _ready;
|
|
11
|
-
_ready = (async () => {
|
|
12
|
-
try {
|
|
13
|
-
// Prism is UMD; fetch & exec on the global.
|
|
14
|
-
const res = await fetch(PRISM_CORE);
|
|
15
|
-
const code = await res.text();
|
|
16
|
-
// eslint-disable-next-line no-new-func
|
|
17
|
-
new Function('window', code)(window);
|
|
18
|
-
_prism = window.Prism || null;
|
|
19
|
-
return _prism;
|
|
20
|
-
} catch (err) {
|
|
21
|
-
console.warn('[247420] prism loader failed:', err);
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
})();
|
|
25
|
-
return _ready;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export async function highlightAllUnder(root) {
|
|
29
|
-
const Prism = await ensurePrism();
|
|
30
|
-
if (!Prism || !root) return;
|
|
31
|
-
if (typeof Prism.highlightAllUnder === 'function') Prism.highlightAllUnder(root);
|
|
32
|
-
}
|
package/dist/src/index.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
// 247420 design system — main entry.
|
|
2
|
-
// Drop-in replacement: same export surface as the published SDK.
|
|
3
|
-
// import { mount, components as C, h, applyDiff, scope } from 'anentrypoint-design';
|
|
4
|
-
|
|
5
|
-
import * as webjsx from '../vendor/webjsx/index.js';
|
|
6
|
-
import { loadCss, scope } from './styles.js';
|
|
7
|
-
import { registerDeckStage, getDeckStage } from './deck-stage.js';
|
|
8
|
-
import * as components from './components.js';
|
|
9
|
-
import * as motion from './motion.js';
|
|
10
|
-
import * as debug from './debug.js';
|
|
11
|
-
import { renderMarkdown, ensureReady as ensureMarkdownReady } from './markdown.js';
|
|
12
|
-
import { ensurePrism, highlightAllUnder } from './highlight.js';
|
|
13
|
-
import { renderPageHtml } from './page-html.js';
|
|
14
|
-
import { mountKit } from './bootstrap.js';
|
|
15
|
-
import * as theme from './theme.js';
|
|
16
|
-
import { registerChatElement, DsChat } from './web-components/ds-chat.js';
|
|
17
|
-
|
|
18
|
-
let _installed = false;
|
|
19
|
-
export async function installStyles(target) {
|
|
20
|
-
if (_installed && !target) return;
|
|
21
|
-
if (typeof document === 'undefined') return;
|
|
22
|
-
const css = await loadCss();
|
|
23
|
-
const root = target || document.head;
|
|
24
|
-
if (!target && document.querySelector('style[data-247420]')) { _installed = true; return; }
|
|
25
|
-
const tag = document.createElement('style');
|
|
26
|
-
tag.setAttribute('data-247420', '');
|
|
27
|
-
tag.textContent = css;
|
|
28
|
-
root.appendChild(tag);
|
|
29
|
-
if (!target) {
|
|
30
|
-
motion.installMotion();
|
|
31
|
-
_installed = true;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function mount(rootEl, viewFn, { autoScope = true } = {}) {
|
|
36
|
-
if (!rootEl) throw new Error('mount: rootEl required');
|
|
37
|
-
if (typeof viewFn !== 'function') throw new Error('mount: viewFn required');
|
|
38
|
-
if (autoScope && rootEl.classList && !rootEl.classList.contains(scope.slice(1))) {
|
|
39
|
-
const cls = scope.slice(1);
|
|
40
|
-
const inheritedFromAncestor = rootEl.closest && rootEl.closest('.' + cls);
|
|
41
|
-
if (!inheritedFromAncestor) rootEl.classList.add(cls);
|
|
42
|
-
}
|
|
43
|
-
// Auto-inject styles (idempotent) so single-line consumers don't need
|
|
44
|
-
// to remember installStyles() before mount.
|
|
45
|
-
installStyles().catch(() => {});
|
|
46
|
-
const render = () => {
|
|
47
|
-
webjsx.applyDiff(rootEl, viewFn(render));
|
|
48
|
-
requestAnimationFrame(() => motion.animateTree(rootEl));
|
|
49
|
-
};
|
|
50
|
-
render();
|
|
51
|
-
return render;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Side-effect: register <ds-chat> as soon as the SDK loads in a browser.
|
|
55
|
-
if (typeof window !== 'undefined' && typeof customElements !== 'undefined') {
|
|
56
|
-
registerChatElement();
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export {
|
|
60
|
-
webjsx, loadCss, scope,
|
|
61
|
-
registerDeckStage, getDeckStage,
|
|
62
|
-
components, motion, debug, mountKit,
|
|
63
|
-
renderMarkdown, ensureMarkdownReady,
|
|
64
|
-
ensurePrism, highlightAllUnder,
|
|
65
|
-
registerChatElement, DsChat,
|
|
66
|
-
renderPageHtml,
|
|
67
|
-
theme
|
|
68
|
-
};
|
|
69
|
-
export { applyTheme, getTheme, resolvedTheme, onThemeChange, initTheme } from './theme.js';
|
|
70
|
-
export const h = webjsx.createElement;
|
|
71
|
-
export const applyDiff = webjsx.applyDiff;
|
|
72
|
-
|
|
73
|
-
// Re-export freddie helpers so consumers can `import { FREDDIE_PAGES } from
|
|
74
|
-
// 'anentrypoint-design'` directly.
|
|
75
|
-
export {
|
|
76
|
-
FREDDIE_PAGES,
|
|
77
|
-
home, chat, voice, sessions, projects, agents, analytics,
|
|
78
|
-
models, cron, skills, config, env, tools, batch, gateway, chains,
|
|
79
|
-
skillLabel, getRecentPaths, saveRecentPath, renderChatMessages
|
|
80
|
-
} from './components.js';
|
|
81
|
-
|
|
82
|
-
export default {
|
|
83
|
-
webjsx, loadCss, scope, installStyles, mount, h, applyDiff,
|
|
84
|
-
registerDeckStage, getDeckStage, components, motion, debug, mountKit,
|
|
85
|
-
renderMarkdown, ensurePrism, registerChatElement, renderPageHtml
|
|
86
|
-
};
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
// About-app paint surface — static info card, bible classes.
|
|
2
|
-
// renderAboutApp({brand, tagline, bullets, links}) -> {node, dispose}.
|
|
3
|
-
// Consumer provides content; module owns layout + classes.
|
|
4
|
-
|
|
5
|
-
export function renderAboutApp(opts = {}) {
|
|
6
|
-
const {
|
|
7
|
-
brand = 'thebird / web os',
|
|
8
|
-
tagline = 'browser-native web OS. multi-instance, per-instance fs / worker / shell / browser. no server.',
|
|
9
|
-
bullets = [
|
|
10
|
-
'POSIX terminal · IndexedDB filesystem',
|
|
11
|
-
'OffscreenCanvas worker per instance',
|
|
12
|
-
'CDP-shaped browser pane',
|
|
13
|
-
'libsql via sql.js · freddie host',
|
|
14
|
-
'responsive: phone / tablet / desktop',
|
|
15
|
-
],
|
|
16
|
-
footer = 'open <code>validator</code> to run isolation harness · click apps menu for more.',
|
|
17
|
-
links = [
|
|
18
|
-
{ href: 'https://github.com/AnEntrypoint/thebird', text: 'source' },
|
|
19
|
-
{ href: './validate.html', text: 'validate' },
|
|
20
|
-
],
|
|
21
|
-
} = opts;
|
|
22
|
-
|
|
23
|
-
const node = document.createElement('div');
|
|
24
|
-
node.className = 'app-pane';
|
|
25
|
-
node.dataset.component = 'about-app';
|
|
26
|
-
|
|
27
|
-
const h2 = document.createElement('h2');
|
|
28
|
-
h2.textContent = brand;
|
|
29
|
-
const p = document.createElement('p');
|
|
30
|
-
p.textContent = tagline;
|
|
31
|
-
const ul = document.createElement('ul');
|
|
32
|
-
for (const b of bullets) {
|
|
33
|
-
const li = document.createElement('li');
|
|
34
|
-
li.textContent = b;
|
|
35
|
-
ul.appendChild(li);
|
|
36
|
-
}
|
|
37
|
-
const foot = document.createElement('p');
|
|
38
|
-
foot.innerHTML = footer;
|
|
39
|
-
const meta = document.createElement('p');
|
|
40
|
-
meta.className = 'meta';
|
|
41
|
-
links.forEach((l, i) => {
|
|
42
|
-
const a = document.createElement('a');
|
|
43
|
-
a.href = l.href;
|
|
44
|
-
a.textContent = l.text;
|
|
45
|
-
meta.appendChild(a);
|
|
46
|
-
if (i < links.length - 1) meta.appendChild(document.createTextNode(' · '));
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
node.append(h2, p, ul, foot, meta);
|
|
50
|
-
|
|
51
|
-
return { node, dispose() {} };
|
|
52
|
-
}
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
/* App-pane chrome for kit components rendered inside .wm-win bodies.
|
|
2
|
-
Bible tokens only — no hardcoded color, font, or radius. Focus = inset rail; no shadows, no gradients. */
|
|
3
|
-
|
|
4
|
-
/* ── terminal-app ───────────────────────────────────────────────────── */
|
|
5
|
-
.terminal-app {
|
|
6
|
-
display: flex;
|
|
7
|
-
flex-direction: column;
|
|
8
|
-
height: 100%;
|
|
9
|
-
background: var(--os-bg-1);
|
|
10
|
-
color: var(--os-fg);
|
|
11
|
-
font-family: var(--os-mono);
|
|
12
|
-
}
|
|
13
|
-
.terminal-app-head {
|
|
14
|
-
display: flex;
|
|
15
|
-
align-items: center;
|
|
16
|
-
justify-content: space-between;
|
|
17
|
-
padding: 4px 10px;
|
|
18
|
-
background: var(--os-bg-2);
|
|
19
|
-
font-family: var(--os-mono);
|
|
20
|
-
font-size: 11px;
|
|
21
|
-
color: var(--os-fg-2);
|
|
22
|
-
text-transform: lowercase;
|
|
23
|
-
flex: 0 0 auto;
|
|
24
|
-
}
|
|
25
|
-
.terminal-app-title { font-family: var(--os-mono); }
|
|
26
|
-
.terminal-app-status { font-family: var(--os-mono); color: var(--os-fg-3); }
|
|
27
|
-
.terminal-app-slot {
|
|
28
|
-
flex: 1 1 auto;
|
|
29
|
-
min-height: 0;
|
|
30
|
-
overflow: hidden;
|
|
31
|
-
background: var(--os-bg-0);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/* ── browser-app ────────────────────────────────────────────────────── */
|
|
35
|
-
.browser-app {
|
|
36
|
-
display: flex;
|
|
37
|
-
flex-direction: column;
|
|
38
|
-
height: 100%;
|
|
39
|
-
background: var(--os-bg-1);
|
|
40
|
-
color: var(--os-fg);
|
|
41
|
-
font-family: var(--os-font);
|
|
42
|
-
}
|
|
43
|
-
.browser-app-bar {
|
|
44
|
-
display: flex;
|
|
45
|
-
align-items: center;
|
|
46
|
-
gap: 6px;
|
|
47
|
-
padding: 6px 8px;
|
|
48
|
-
background: var(--os-bg-2);
|
|
49
|
-
flex: 0 0 auto;
|
|
50
|
-
}
|
|
51
|
-
.browser-app-btn {
|
|
52
|
-
height: 28px;
|
|
53
|
-
min-width: 28px;
|
|
54
|
-
padding: 0 8px;
|
|
55
|
-
background: var(--os-bg-3);
|
|
56
|
-
color: var(--os-fg);
|
|
57
|
-
border: none;
|
|
58
|
-
border-radius: var(--os-radius-sm);
|
|
59
|
-
font: 12px var(--os-mono);
|
|
60
|
-
cursor: pointer;
|
|
61
|
-
outline: none;
|
|
62
|
-
}
|
|
63
|
-
.browser-app-btn:hover { background: var(--os-accent-soft); }
|
|
64
|
-
.browser-app-url {
|
|
65
|
-
flex: 1 1 auto;
|
|
66
|
-
height: 28px;
|
|
67
|
-
padding: 0 10px;
|
|
68
|
-
background: var(--os-bg-0);
|
|
69
|
-
color: var(--os-fg);
|
|
70
|
-
border: none;
|
|
71
|
-
border-radius: var(--os-radius-sm);
|
|
72
|
-
font: 12px var(--os-mono);
|
|
73
|
-
outline: none;
|
|
74
|
-
}
|
|
75
|
-
.browser-app-url:focus { box-shadow: inset 4px 0 0 var(--os-accent); }
|
|
76
|
-
.browser-app-slot {
|
|
77
|
-
flex: 1 1 auto;
|
|
78
|
-
min-height: 0;
|
|
79
|
-
overflow: hidden;
|
|
80
|
-
background: var(--os-bg-0);
|
|
81
|
-
display: flex;
|
|
82
|
-
}
|
|
83
|
-
.browser-app-slot > * { flex: 1 1 auto; min-width: 0; min-height: 0; }
|
|
84
|
-
.browser-app-status {
|
|
85
|
-
flex: 0 0 auto;
|
|
86
|
-
padding: 2px 10px;
|
|
87
|
-
background: var(--os-bg-2);
|
|
88
|
-
font: 11px var(--os-mono);
|
|
89
|
-
color: var(--os-fg-3);
|
|
90
|
-
text-transform: lowercase;
|
|
91
|
-
min-height: 18px;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/* ── validator-app ──────────────────────────────────────────────────── */
|
|
95
|
-
.validator-app {
|
|
96
|
-
display: flex;
|
|
97
|
-
flex-direction: column;
|
|
98
|
-
height: 100%;
|
|
99
|
-
background: var(--os-bg-1);
|
|
100
|
-
color: var(--os-fg);
|
|
101
|
-
font-family: var(--os-font);
|
|
102
|
-
}
|
|
103
|
-
.validator-app-head {
|
|
104
|
-
display: flex;
|
|
105
|
-
align-items: center;
|
|
106
|
-
gap: 10px;
|
|
107
|
-
padding: 6px 10px;
|
|
108
|
-
background: var(--os-bg-2);
|
|
109
|
-
flex: 0 0 auto;
|
|
110
|
-
}
|
|
111
|
-
.validator-app-banner {
|
|
112
|
-
padding: 2px 10px;
|
|
113
|
-
border-radius: 999px;
|
|
114
|
-
font: 11px var(--os-mono);
|
|
115
|
-
text-transform: lowercase;
|
|
116
|
-
background: var(--os-bg-3);
|
|
117
|
-
color: var(--os-fg-2);
|
|
118
|
-
}
|
|
119
|
-
.validator-app-banner[data-state="pass"] { background: var(--os-accent-soft); color: var(--os-fg); }
|
|
120
|
-
.validator-app-banner[data-state="fail"] { background: var(--os-red); color: var(--os-bg-0); }
|
|
121
|
-
.validator-app-counts {
|
|
122
|
-
font: 11px var(--os-mono);
|
|
123
|
-
color: var(--os-fg-2);
|
|
124
|
-
}
|
|
125
|
-
.validator-app-rerun {
|
|
126
|
-
margin-left: auto;
|
|
127
|
-
height: 24px;
|
|
128
|
-
padding: 0 10px;
|
|
129
|
-
background: var(--os-bg-3);
|
|
130
|
-
color: var(--os-fg);
|
|
131
|
-
border: none;
|
|
132
|
-
border-radius: var(--os-radius-sm);
|
|
133
|
-
font: 11px var(--os-mono);
|
|
134
|
-
text-transform: lowercase;
|
|
135
|
-
cursor: pointer;
|
|
136
|
-
outline: none;
|
|
137
|
-
}
|
|
138
|
-
.validator-app-rerun:hover { background: var(--os-accent-soft); }
|
|
139
|
-
.validator-app-slot {
|
|
140
|
-
flex: 1 1 auto;
|
|
141
|
-
min-height: 0;
|
|
142
|
-
overflow: hidden;
|
|
143
|
-
display: flex;
|
|
144
|
-
background: var(--os-bg-0);
|
|
145
|
-
}
|
|
146
|
-
.validator-app-slot > * { flex: 1 1 auto; min-width: 0; min-height: 0; }
|
|
147
|
-
.validator-app-frame {
|
|
148
|
-
width: 100%;
|
|
149
|
-
height: 100%;
|
|
150
|
-
border: none;
|
|
151
|
-
background: var(--os-bg-0);
|
|
152
|
-
}
|