anentrypoint-design 0.0.166 → 0.0.168

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anentrypoint-design",
3
- "version": "0.0.166",
3
+ "version": "0.0.168",
4
4
  "description": "247420 design system SDK — webjsx + modified ripple-ui, single-file ESM bundle for reproducible use of the AnEntrypoint design.",
5
5
  "type": "module",
6
6
  "main": "./dist/247420.js",
@@ -11,6 +11,12 @@
11
11
  "default": "./dist/247420.js"
12
12
  },
13
13
  "./css": "./dist/247420.css",
14
+ "./kits/spoint": {
15
+ "import": "./src/kits/spoint/index.js",
16
+ "default": "./src/kits/spoint/index.js"
17
+ },
18
+ "./kits/spoint/loading-screen.js": "./src/kits/spoint/loading-screen.js",
19
+ "./kits/spoint/loading-screen.css": "./src/kits/spoint/loading-screen.css",
14
20
  "./kits/os": {
15
21
  "import": "./src/kits/os/index.js",
16
22
  "default": "./src/kits/os/index.js"
@@ -56,8 +62,8 @@
56
62
  "README.md"
57
63
  ],
58
64
  "scripts": {
59
- "build": "node scripts/build.mjs",
60
- "test": "node test.js"
65
+ "lint:tokens": "node scripts/lint-tokens.mjs",
66
+ "build": "node scripts/build.mjs"
61
67
  },
62
68
  "repository": {
63
69
  "type": "git",
@@ -186,7 +186,7 @@ export function mountCommunityApp(root, adapter = {}) {
186
186
  h('nav', {},
187
187
  h('a', { href: '../', title: 'Home', onclick: (e) => { if (A.goHome) { e.preventDefault(); A.goHome(); } } }, 'home'),
188
188
  h('a', { href: '#', title: 'Servers', onclick: (e) => { e.preventDefault(); A.openServers && A.openServers(); } }, 'servers'),
189
- h('a', { href: 'https://github.com/AnEntrypoint/zellous', target: '_blank', rel: 'noopener' }, 'source '),
189
+ h('a', { href: 'https://github.com/AnEntrypoint/zellous', target: '_blank', rel: 'noopener' }, 'source ->'),
190
190
  ),
191
191
  ),
192
192
  MobileHeader({ channelType: ch.type || 'text', channelName: ch.name || '', onMenu: () => A.openMobileMenu && A.openMobileMenu(), onMembers: () => A.toggleMembers && A.toggleMembers() }),
@@ -82,7 +82,7 @@ const PART_RENDERERS = {
82
82
  h('span', { class: 'glyph', 'aria-hidden': 'true' }, '▤'),
83
83
  h('span', { class: 'name' }, p.name || 'document.pdf'),
84
84
  p.size != null ? h('span', { class: 'size' }, fmtBytes(p.size)) : null,
85
- h('a', { class: 'open', href: p.src, target: '_blank', rel: 'noopener', 'aria-label': `open PDF: ${p.name || 'document.pdf'}` }, 'open ')
85
+ h('a', { class: 'open', href: p.src, target: '_blank', rel: 'noopener', 'aria-label': `open PDF: ${p.name || 'document.pdf'}` }, 'open ->')
86
86
  ),
87
87
  h('embed', { src: p.src, type: 'application/pdf', 'aria-label': `PDF document: ${p.name || 'document.pdf'}` })),
88
88
  file: (p) => h('a', { class: 'chat-file', href: p.src, target: '_blank', rel: 'noopener', download: p.name || true, 'aria-label': `download file: ${p.name || 'attachment'} (${p.kindLabel || (p.name || '').split('.').pop().toUpperCase()})` },
@@ -109,7 +109,7 @@ export function WorksList({ works = [], openedIndex = -1, onToggle }) {
109
109
  Row({
110
110
  code: w.code,
111
111
  title: w.title, sub: w.sub,
112
- meta: w.meta + ' ' + (isOpen ? '' : '+'),
112
+ meta: w.meta + ' ' + (isOpen ? '-' : '+'),
113
113
  active: isOpen,
114
114
  onClick: () => onToggle && onToggle(isOpen ? -1 : i)
115
115
  }),
@@ -118,7 +118,7 @@ export function WorksList({ works = [], openedIndex = -1, onToggle }) {
118
118
  h('p', { class: 'ds-work-body' }, w.body)
119
119
  ),
120
120
  h('div', { class: 'ds-work-actions' },
121
- Btn({ primary: true, href: w.href || '#', children: 'open ' }),
121
+ Btn({ primary: true, href: w.href || '#', children: 'open ->' }),
122
122
  Btn({ href: w.source || '#', children: 'source' })
123
123
  )
124
124
  ) : null
@@ -147,7 +147,7 @@ export const voice = makePage((ctx) => {
147
147
  PageHeader({ eyebrow: 'freddie', title: 'voice', lede: 'voice surfaces', right: enabled ? Chip({ tone: 'ok', children: 'enabled' }) : Chip({ tone: 'neutral', children: 'not configured' }) }),
148
148
  enabled
149
149
  ? section('backends', Table({ headers: ['capability', 'status'], rows: [['transcription', v.transcription ? Chip({ tone: 'ok', children: 'on' }) : Chip({ tone: 'neutral', children: 'off' })], ['tts', v.tts ? Chip({ tone: 'ok', children: 'on' }) : Chip({ tone: 'neutral', children: 'off' })]] }))
150
- : section('status', emptyState('no voice backend wired in this build. configure a transcription/tts plugin to enable.', '🎙')),
150
+ : section('status', emptyState('no voice backend wired in this build. configure a transcription/tts plugin to enable.')),
151
151
  ];
152
152
  };
153
153
  });
@@ -405,7 +405,7 @@ export const config = makePage((ctx) => {
405
405
  }
406
406
  async function setSkin(name) {
407
407
  ctx.set({ busy: true, note: null });
408
- try { await api('/api/config', { method: 'POST', body: { skin: name } }); await load(); ctx.set({ note: { kind: 'success', msg: 'skin ' + name } }); }
408
+ try { await api('/api/config', { method: 'POST', body: { skin: name } }); await load(); ctx.set({ note: { kind: 'success', msg: 'skin -> ' + name } }); }
409
409
  catch (e) { ctx.set({ note: { kind: 'error', msg: String(e.message || e) } }); }
410
410
  ctx.set({ busy: false });
411
411
  }
@@ -574,7 +574,7 @@ export const chains = makePage((ctx) => {
574
574
  PageHeader({ eyebrow: 'freddie', title: 'chains', lede: 'acptoapi fallback chains', right: up ? Chip({ tone: 'ok', children: 'acptoapi up' }) : Chip({ tone: 'miss', children: 'acptoapi down' }) }),
575
575
  noteAlert(s.note),
576
576
  section('chains', Array.isArray(chainsList) && chainsList.length ? chainsList.map((c, i) => Row({
577
- key: i, title: c.name || c, sub: Array.isArray(c.links) ? c.links.join(' ') : '',
577
+ key: i, title: c.name || c, sub: Array.isArray(c.links) ? c.links.join(' -> ') : '',
578
578
  trailing: Btn({ danger: true, children: 'delete', onClick: () => del(c.name || c) }),
579
579
  })) : emptyState('no chains defined')),
580
580
  section('new chain',
@@ -117,7 +117,7 @@ export function Topbar({ brand = '247420', leaf = '', items = [], active = '', o
117
117
  h('input', { type: 'search', placeholder: search, 'aria-label': `search ${search}` })
118
118
  ) : null,
119
119
  h('nav', { 'aria-label': 'main navigation' }, ...items.map(([label, href]) => {
120
- const cleanLabel = String(label).replace(' ', '');
120
+ const cleanLabel = String(label).replace(' ->', '');
121
121
  return h('a', {
122
122
  key: label,
123
123
  href,
@@ -181,7 +181,7 @@ export function Status({ left = [], right = [] } = {}) {
181
181
  }
182
182
 
183
183
  // Toggle the mobile sidebar drawer. Pure-DOM because AppShell is stateless
184
- // chrome; the class lives on .app-body and is read by the 900px media query.
184
+ // chrome; the class lives on .app-body and is read by the <=900px media query.
185
185
  function toggleSide(open) {
186
186
  const body = document.querySelector('.app-body');
187
187
  if (!body) return;
package/src/index.js CHANGED
@@ -69,10 +69,14 @@ export {
69
69
  renderPageHtml,
70
70
  theme
71
71
  };
72
- export { applyTheme, getTheme, resolvedTheme, onThemeChange, initTheme } from './theme.js';
72
+ export { applyTheme, getTheme, resolvedTheme, onThemeChange, initTheme,
73
+ applyAccent, getAccent, applyDensity, getDensity } from './theme.js';
73
74
  export const h = webjsx.createElement;
74
75
  export const applyDiff = webjsx.applyDiff;
75
76
 
77
+ // spoint kit paint surfaces (loading screen, HUD, editor chrome).
78
+ export { renderLoadingScreen } from './kits/spoint/loading-screen.js';
79
+
76
80
  // Re-export freddie helpers so consumers can `import { FREDDIE_PAGES } from
77
81
  // 'anentrypoint-design'` directly.
78
82
  export {
@@ -51,9 +51,9 @@ export function makeCorePages(ctx) {
51
51
  ['open chat', "click 'chat' in sidebar — set a working directory and pick a skill"],
52
52
  ['pick skill', "software dev, research, planning — shown with descriptions"],
53
53
  ['pick model', "select a configured provider + model in the chat bar"],
54
- ['list tools', '/tools in chat tools tab'],
55
- ['set api key', 'keys tab click chip to set value'],
56
- ['add cron', 'cron tab form'],
54
+ ['list tools', '/tools in chat -> tools tab'],
55
+ ['set api key', 'keys tab -> click chip to set value'],
56
+ ['add cron', 'cron tab -> form'],
57
57
  ] }) }),
58
58
  Panel({ title: 'host', children: Receipt({ rows: Object.entries(health).map(([k, v]) => [k, String(v)]) }) }),
59
59
  ];
@@ -43,7 +43,7 @@ export function makeOsPages(ctx) {
43
43
  return [
44
44
  Kpi({ items: [[list.length, 'paths'], [instance.id, 'instance']] }),
45
45
  Panel({ title: 'paths', count: list.length, children: list.length === 0
46
- ? EmptyState({ text: 'empty fs', glyph: '📁' })
46
+ ? EmptyState({ text: 'empty fs', glyph: '' })
47
47
  : pre(list.join('\n')) }),
48
48
  ];
49
49
  },
@@ -115,7 +115,7 @@ export function makeToolsPages(ctx) {
115
115
  if (typeof h0.pi.env.set === 'function') { h0.pi.env.set(k.key, v); rerender(); }
116
116
  },
117
117
  },
118
- Chip({ tone: k.set ? 'ok' : 'miss', children: k.key + (k.set ? ' ' : ' ·') })
118
+ Chip({ tone: k.set ? 'ok' : 'miss', children: k.key + (k.set ? ' [x]' : ' [ ]') })
119
119
  ));
120
120
  return [
121
121
  Kpi({ items: [[setCount, 'set'], [list.length - setCount, 'missing'], [list.length, 'total known']] }),
@@ -20,5 +20,5 @@ export const OS_ROUTE_DEFS = [
20
20
  { path: 'os-instances', label: 'instances', glyph: '◫' },
21
21
  { path: 'os-windows', label: 'windows', glyph: '▭' },
22
22
  { path: 'os-x', label: 'x-server', glyph: '✕' },
23
- { path: 'os-fs', label: 'fs', glyph: '📁' },
23
+ { path: 'os-fs', label: 'fs', glyph: '' },
24
24
  ];
@@ -15,7 +15,7 @@
15
15
  margin: 0;
16
16
  max-height: 320px;
17
17
  overflow: auto;
18
- background: var(--os-bg-2, #F0E9DA);
18
+ background: var(--os-bg-2);
19
19
  padding: var(--space-2, 8px) var(--space-3, 16px);
20
20
  border-radius: var(--os-radius-sm, 6px);
21
21
  }
@@ -29,7 +29,7 @@
29
29
  .fd-chat-row { display: flex; gap: var(--space-3, 16px); flex-wrap: wrap; }
30
30
  .fd-chat-field { display: flex; flex-direction: column; gap: var(--space-1, 4px); min-width: 120px; }
31
31
  .fd-chat-field-grow { flex: 2; min-width: 140px; }
32
- .fd-chat-field > label { font-family: var(--os-mono, JetBrains Mono, monospace); font-size: var(--fs-micro, 11px); color: var(--os-fg-3, #857B6C); letter-spacing: var(--tr-label, 0.10em); text-transform: uppercase; }
32
+ .fd-chat-field > label { font-family: var(--os-mono, JetBrains Mono, monospace); font-size: var(--fs-micro, 11px); color: var(--os-fg-3); letter-spacing: var(--tr-label, 0.10em); text-transform: uppercase; }
33
33
  .fd-chat-field > input { width: 100%; box-sizing: border-box; }
34
34
  .fd-chat-submit { display: flex; gap: var(--space-3, 16px); align-items: flex-end; }
35
35
  .fd-chat-submit textarea { flex: 1; resize: none; min-height: 80px; }
@@ -38,14 +38,14 @@
38
38
  /* chatlog (legacy fd-chat-msgs container) */
39
39
  .fd-chatlog {
40
40
  max-height: 420px; overflow-y: auto;
41
- background: var(--os-bg-2, #F0E9DA);
41
+ background: var(--os-bg-2);
42
42
  border-radius: var(--os-radius-sm, 6px);
43
43
  padding: var(--space-1, 4px); margin-top: var(--space-2, 8px);
44
44
  }
45
- .fd-chatlog-msg { padding: var(--space-1, 4px) var(--space-3, 16px); background: var(--os-bg-2, #F0E9DA); white-space: pre-wrap; word-break: break-word; }
46
- .fd-chatlog-assistant { color: var(--os-accent, #3F8A4A); }
47
- .fd-chatlog-tool { margin: var(--space-1, 4px) 0; padding: var(--space-1, 4px) var(--space-2, 8px); background: var(--os-bg-3, #E3DAC7); border-radius: var(--os-radius-sm, 6px); font-family: var(--os-mono, JetBrains Mono, monospace); font-size: var(--fs-tiny, 12px); }
48
- .fd-chatlog-tool-sum { cursor: pointer; color: var(--os-red, #FF6B4A); padding: var(--space-1, 4px) 0; }
45
+ .fd-chatlog-msg { padding: var(--space-1, 4px) var(--space-3, 16px); background: var(--os-bg-2); white-space: pre-wrap; word-break: break-word; }
46
+ .fd-chatlog-assistant { color: var(--os-accent); }
47
+ .fd-chatlog-tool { margin: var(--space-1, 4px) 0; padding: var(--space-1, 4px) var(--space-2, 8px); background: var(--os-bg-3); border-radius: var(--os-radius-sm, 6px); font-family: var(--os-mono, JetBrains Mono, monospace); font-size: var(--fs-tiny, 12px); }
48
+ .fd-chatlog-tool-sum { cursor: pointer; color: var(--os-red); padding: var(--space-1, 4px) 0; }
49
49
  .fd-chatlog-tool-body { margin: var(--space-1, 4px) 0 0; white-space: pre-wrap; word-break: break-all; max-height: 200px; overflow-y: auto; }
50
50
 
51
51
  /* chip wraps (providers, env) */