anentrypoint-design 1.0.26 → 1.0.28
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/colors_and_type.css +3 -3
- package/dist/247420.css +97 -47
- package/dist/247420.js +26 -26
- package/package.json +1 -1
- package/src/components/chat/threads.js +2 -2
- package/src/css/app-shell/chat-polish.css +24 -4
- package/src/css/app-shell/data-density.css +1 -1
- package/src/css/app-shell/files.css +2 -2
- package/src/css/app-shell/hero-content.css +15 -28
- package/src/css/app-shell/otp-input.css +1 -1
- package/src/css/app-shell/plugins-config.css +1 -1
- package/src/css/app-shell/primitives.css +1 -1
- package/src/css/app-shell/sidebar-misc.css +44 -0
- package/src/css/app-shell/slider.css +1 -1
- package/src/css/app-shell/topbar.css +4 -5
- package/types/components.d.ts +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anentrypoint-design",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.28",
|
|
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",
|
|
@@ -91,7 +91,7 @@ export function AICatPortrait({ name = 'aicat', status, face } = {}) {
|
|
|
91
91
|
);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
export function AICat({ name = 'aicat', messages = [], thinking, composer, status = 'online · purring' } = {}) {
|
|
94
|
+
export function AICat({ name = 'aicat', messages = [], thinking, composer, status = 'online · purring', header } = {}) {
|
|
95
95
|
ensureCachesInit();
|
|
96
96
|
const annotated = messages.map((m) =>
|
|
97
97
|
m.who === 'them' ? { ...m, aicat: true, avatar: m.avatar || '=^.^=' } : m);
|
|
@@ -100,7 +100,7 @@ export function AICat({ name = 'aicat', messages = [], thinking, composer, statu
|
|
|
100
100
|
: annotated;
|
|
101
101
|
const threadRef = makeThreadAutoScroll(() => all.length);
|
|
102
102
|
return h('div', { class: 'chat' },
|
|
103
|
-
h('div', { class: 'chat-head', role: 'banner' },
|
|
103
|
+
header || h('div', { class: 'chat-head', role: 'banner' },
|
|
104
104
|
h('span', { class: 'dot', 'aria-hidden': 'true' }),
|
|
105
105
|
h('h2', { class: 'ds-chat-title' }, name),
|
|
106
106
|
h('span', { class: 'sub', 'aria-label': `status: ${status}` }, ' · ' + status),
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
width: 36px; height: 36px; flex-shrink: 0;
|
|
56
56
|
border-radius: 50%; background: var(--bg-3); color: var(--fg);
|
|
57
57
|
display: inline-flex; align-items: center; justify-content: center;
|
|
58
|
-
font-family: var(--ff-body); font-size: var(--fs-micro); font-weight:
|
|
58
|
+
font-family: var(--ff-body); font-size: var(--fs-micro); font-weight: var(--fw-medium, 500);
|
|
59
59
|
text-transform: lowercase; letter-spacing: 0.02em; user-select: none;
|
|
60
60
|
transition: transform 0.12s ease, box-shadow 0.12s ease;
|
|
61
61
|
position: relative;
|
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3);
|
|
365
365
|
padding: 0 var(--space-1-75); letter-spacing: 0.02em;
|
|
366
366
|
}
|
|
367
|
-
.chat-meta .who { font-weight:
|
|
367
|
+
.chat-meta .who { font-weight: var(--fw-medium, 500); color: var(--fg-2); }
|
|
368
368
|
.chat-meta .who::after { content: ' ·'; color: var(--fg-3); font-weight: 400; }
|
|
369
369
|
.chat-meta .t { color: var(--fg-3); }
|
|
370
370
|
.chat-meta .tick { color: var(--fg-3); margin-left: var(--space-hair); letter-spacing: -2px; font-family: var(--ff-body); }
|
|
@@ -390,7 +390,7 @@
|
|
|
390
390
|
color: var(--accent-ink);
|
|
391
391
|
}
|
|
392
392
|
.chat-reactions .rxn .e { font-size: var(--fs-xs); line-height: 1; }
|
|
393
|
-
.chat-reactions .rxn .n { font-family: var(--ff-mono); font-weight:
|
|
393
|
+
.chat-reactions .rxn .n { font-family: var(--ff-mono); font-weight: var(--fw-medium, 500); font-size: var(--fs-nano); color: var(--fg-2); }
|
|
394
394
|
.chat-reactions .rxn.you .n { color: var(--accent-ink); }
|
|
395
395
|
|
|
396
396
|
/* Typing indicator renders through the same .chat-bubble container as a real
|
|
@@ -562,7 +562,27 @@
|
|
|
562
562
|
[data-theme="dark"],[data-theme="ink"] override missed data-theme="auto"
|
|
563
563
|
under OS-dark, which is how the kits actually render — the author name
|
|
564
564
|
fell back to the paper tone at 3.13:1 on ink. */
|
|
565
|
-
.aicat-meta .name { color: var(--mascot-deep, var(--mascot)); font-weight:
|
|
565
|
+
.aicat-meta .name { color: var(--mascot-deep, var(--mascot)); font-weight: var(--fw-medium, 500); }
|
|
566
|
+
|
|
567
|
+
/* Mascot identity folded into AICat's own .chat-head row (passed as its
|
|
568
|
+
`header` prop) instead of a standalone .aicat-portrait block stacked above
|
|
569
|
+
the chat panel -- reuses the existing 32px .aicat-face circle, just placed
|
|
570
|
+
inline before the title instead of above the whole surface. */
|
|
571
|
+
.aicat-portrait-head { gap: var(--space-2-5); }
|
|
572
|
+
.aicat-face-inline { margin-right: var(--space-1); }
|
|
573
|
+
|
|
574
|
+
/* Centers the transcript+composer as the page's dominant focal surface
|
|
575
|
+
(hero-composer framing): a bounded column with generous top margin so the
|
|
576
|
+
chat panel reads as the first thing the eye lands on, not one card in a
|
|
577
|
+
top-aligned marketing stack. Docs/heading content is demoted into
|
|
578
|
+
.ds-kit-controls below it (see kits-appended.css) so nothing above the
|
|
579
|
+
panel competes with it. */
|
|
580
|
+
.aicat-focus-col {
|
|
581
|
+
max-width: 720px;
|
|
582
|
+
margin-left: auto;
|
|
583
|
+
margin-right: auto;
|
|
584
|
+
padding-top: var(--space-6);
|
|
585
|
+
}
|
|
566
586
|
|
|
567
587
|
/* ============================================================
|
|
568
588
|
Composer attachment-detected badge, context line, hint, toolbar,
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
@media (max-width: 640px) {
|
|
159
159
|
.ds-session-row-span { flex-basis: 100%; }
|
|
160
160
|
}
|
|
161
|
-
.ds-session-row-devcnt { color: var(--warn); font-weight:
|
|
161
|
+
.ds-session-row-devcnt { color: var(--warn); font-weight: var(--fw-medium, 500); }
|
|
162
162
|
.ds-session-row-span { font-size: var(--fs-micro); color: var(--fg-3); }
|
|
163
163
|
|
|
164
164
|
/* DevRow */
|
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
padding: var(--space-1) var(--space-2);
|
|
221
221
|
background: var(--bg-2); border: var(--bw-hair) solid var(--rule); border-radius: var(--r-2);
|
|
222
222
|
}
|
|
223
|
-
.ds-bulkbar-count { font-size: var(--fs-sm); font-weight:
|
|
223
|
+
.ds-bulkbar-count { font-size: var(--fs-sm); font-weight: var(--fw-medium, 500); color: var(--fg-2); }
|
|
224
224
|
/* BulkBar is a toolbar (it even declares role=toolbar): compact rect buttons,
|
|
225
225
|
quiet destructive outline - the app arm-confirms destructive bulk actions
|
|
226
226
|
via ConfirmDialog, so the strip never needs a loud CTA. */
|
|
@@ -445,7 +445,7 @@
|
|
|
445
445
|
design; dashed was this system's OTHER "drop target" vocabulary
|
|
446
446
|
(.panel-docs, kits-appended.css) leaking in here by copy-paste. */
|
|
447
447
|
.ds-dropzone {
|
|
448
|
-
border: var(--bw-
|
|
448
|
+
border: var(--bw-hair) solid var(--rule);
|
|
449
449
|
border-radius: var(--r-3); background: var(--bg);
|
|
450
450
|
transition: border-color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
|
|
451
451
|
}
|
|
@@ -10,30 +10,21 @@
|
|
|
10
10
|
and each part's own layout (aside becomes a full-width card below the body
|
|
11
11
|
instead of a right-column card) changed. Centered text, capped measure.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
hero the moment the oversized display type is involved, regardless of
|
|
19
|
-
architecture. Swapping to flex-start + left text-align, plus a
|
|
20
|
-
--space-6 left inset inside the unchanged --stage-wide container, pushes
|
|
21
|
-
the whole block toward the left edge so the oversized title crops against
|
|
22
|
-
real whitespace on the right instead of sitting symmetric in the middle --
|
|
23
|
-
editorial tension from a one-axis asymmetry, no grid architecture
|
|
24
|
-
reintroduced. */
|
|
13
|
+
RE-CENTERED 2026-08-09: reverted the 2026-07-31 de-centering (flex-start +
|
|
14
|
+
left text-align + left inset) back to a centered stack -- the airy,
|
|
15
|
+
dead-centered arrangement is the intended house look after all, matching
|
|
16
|
+
the plain centered-lead reference this hero is now aligned to. Aside card
|
|
17
|
+
dropped its filled background/accent bar for a plain top-rule divider. */
|
|
25
18
|
.ds-hero {
|
|
26
19
|
padding: var(--space-9) 0 var(--space-8);
|
|
27
|
-
display: flex; flex-direction: column; align-items:
|
|
20
|
+
display: flex; flex-direction: column; align-items: center;
|
|
28
21
|
gap: var(--space-5);
|
|
29
22
|
max-width: var(--stage-wide);
|
|
30
|
-
|
|
31
|
-
padding-inline-start: var(--space-6);
|
|
32
|
-
text-align: left;
|
|
23
|
+
text-align: center;
|
|
33
24
|
position: relative; isolation: isolate;
|
|
34
25
|
}
|
|
35
|
-
.ds-hero-head { display: grid; gap: var(--space-3); justify-items:
|
|
36
|
-
.ds-hero-body { margin-inline:
|
|
26
|
+
.ds-hero-head { display: grid; gap: var(--space-3); justify-items: center; margin-inline: auto; }
|
|
27
|
+
.ds-hero-body { margin-inline: auto; }
|
|
37
28
|
/* The stat/badge/CTA cluster now sits as a full-width card BELOW the body
|
|
38
29
|
copy, left-aligned with the rest of the stack, rather than a right-offset
|
|
39
30
|
column -- still carries its own visual weight via the top accent bar
|
|
@@ -42,18 +33,14 @@
|
|
|
42
33
|
.ds-hero-aside {
|
|
43
34
|
position: relative; isolation: isolate;
|
|
44
35
|
width: 100%; max-width: 46ch;
|
|
36
|
+
margin-inline: auto;
|
|
45
37
|
display: flex; flex-direction: column;
|
|
46
38
|
justify-content: space-between; gap: var(--space-5);
|
|
47
|
-
background:
|
|
48
|
-
border-
|
|
49
|
-
padding:
|
|
39
|
+
background: transparent;
|
|
40
|
+
border-top: var(--bw-hair, 1px) solid var(--rule);
|
|
41
|
+
padding: var(--space-4) var(--space-5) var(--space-5);
|
|
50
42
|
text-align: left;
|
|
51
43
|
}
|
|
52
|
-
.ds-hero-aside::before {
|
|
53
|
-
content: ''; position: absolute; left: 0; right: 0; top: 0;
|
|
54
|
-
height: var(--bw-chunk); background: var(--accent);
|
|
55
|
-
border-radius: var(--bw-chunk) var(--bw-chunk) 0 0;
|
|
56
|
-
}
|
|
57
44
|
.ds-hero-stats { display: flex; flex-direction: column; gap: var(--space-2); }
|
|
58
45
|
.ds-hero-stat {
|
|
59
46
|
font-family: var(--ff-mono); font-size: var(--fs-sm);
|
|
@@ -81,7 +68,7 @@
|
|
|
81
68
|
feel this title wants while clearing enough vertical room that letters
|
|
82
69
|
stop colliding. */
|
|
83
70
|
line-height: 1.02; letter-spacing: var(--tr-tighter);
|
|
84
|
-
margin: 0; max-width:
|
|
71
|
+
margin: 0; max-width: 16ch; margin-inline: auto; text-wrap: balance;
|
|
85
72
|
}
|
|
86
73
|
.ds-hero-body {
|
|
87
74
|
font-family: var(--ff-body); font-size: var(--fs-xl);
|
|
@@ -175,7 +162,7 @@
|
|
|
175
162
|
============================================================ */
|
|
176
163
|
.ds-marquee {
|
|
177
164
|
overflow: hidden; width: 100%;
|
|
178
|
-
border-block: var(--bw-
|
|
165
|
+
border-block: var(--bw-hair) solid var(--rule-strong);
|
|
179
166
|
padding: var(--space-2) 0;
|
|
180
167
|
font-family: var(--ff-display); font-weight: 600;
|
|
181
168
|
text-transform: uppercase; letter-spacing: var(--tr-caps);
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
font-weight: 600;
|
|
11
11
|
color: var(--fg);
|
|
12
12
|
background: var(--bg-2);
|
|
13
|
-
border: var(--bw-
|
|
13
|
+
border: var(--bw-hair) solid var(--rule);
|
|
14
14
|
border-radius: var(--r-1);
|
|
15
15
|
transition: border-color var(--dur-snap) var(--ease), background var(--dur-snap) var(--ease), box-shadow var(--dur-snap) var(--ease);
|
|
16
16
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
padding: var(--space-3) var(--space-4);
|
|
20
20
|
border-bottom: var(--bw-hair) solid var(--rule); flex: 0 0 auto;
|
|
21
21
|
}
|
|
22
|
-
.ds-plugins-title { font-size: var(--fs-md); font-weight:
|
|
22
|
+
.ds-plugins-title { font-size: var(--fs-md); font-weight: 600; color: var(--fg); }
|
|
23
23
|
.ds-plugins-close {
|
|
24
24
|
background: none; border: none; color: var(--fg-3); cursor: pointer;
|
|
25
25
|
font-size: 20px; line-height: 1; padding: 2px 6px; border-radius: var(--r-1);
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
.btn:hover { background: var(--bg-3); color: var(--fg); transform: translateY(-1px); box-shadow: var(--shadow-1); }
|
|
19
19
|
.btn-primary {
|
|
20
20
|
background: var(--accent); color: var(--accent-fg);
|
|
21
|
-
font-weight:
|
|
21
|
+
font-weight: 600;
|
|
22
22
|
}
|
|
23
23
|
.btn-primary:hover { background: var(--fg); color: var(--bg); transform: translateY(-1px); box-shadow: var(--shadow-2); }
|
|
24
24
|
.btn-ghost { background: transparent; color: var(--fg); box-shadow: inset 0 0 0 var(--bw-hair) var(--fg); }
|
|
@@ -27,6 +27,50 @@
|
|
|
27
27
|
.app-side a .glyph { font-family: var(--ff-body); font-size: 13px; font-weight: 600; color: var(--fg-3); text-align: center; }
|
|
28
28
|
.app-side a.active .glyph { color: var(--accent-ink); }
|
|
29
29
|
|
|
30
|
+
/* .ds-side-tree — two-level project-tree group (parent <details> + nested
|
|
31
|
+
child rows), the sidebar's hierarchy primitive. Sits alongside Side()'s
|
|
32
|
+
own flat .app-side-group rows but carries genuine nesting: a summary row
|
|
33
|
+
(parent) disclosing child conversation rows, closer to a project-tree
|
|
34
|
+
sidebar than a single flat list. */
|
|
35
|
+
.ds-side-tree { border: 0; }
|
|
36
|
+
.ds-side-tree-summary {
|
|
37
|
+
display: flex; align-items: center; gap: var(--space-2);
|
|
38
|
+
padding: var(--space-1-5) var(--space-2);
|
|
39
|
+
border-radius: var(--r-1);
|
|
40
|
+
font-family: var(--ff-mono); font-size: var(--fs-sm); color: var(--fg-2);
|
|
41
|
+
cursor: pointer; list-style: none;
|
|
42
|
+
}
|
|
43
|
+
.ds-side-tree-summary::-webkit-details-marker { display: none; }
|
|
44
|
+
.ds-side-tree-summary:hover { background: var(--bg-2); color: var(--fg); }
|
|
45
|
+
.ds-side-tree-summary:focus-visible {
|
|
46
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
47
|
+
outline-offset: var(--focus-offset);
|
|
48
|
+
}
|
|
49
|
+
.ds-side-tree-summary .glyph { font-family: var(--ff-body); font-size: 13px; font-weight: 600; color: var(--fg-3); }
|
|
50
|
+
.ds-side-tree-summary .count {
|
|
51
|
+
margin-left: auto; padding: 1px 8px; font-size: var(--fs-micro); font-weight: 700;
|
|
52
|
+
font-family: var(--ff-body); letter-spacing: 0.04em; min-width: 18px; text-align: center;
|
|
53
|
+
color: var(--fg-3); background: var(--bg-2); border-radius: var(--r-pill, 999px);
|
|
54
|
+
}
|
|
55
|
+
.ds-side-tree-children {
|
|
56
|
+
display: flex; flex-direction: column;
|
|
57
|
+
padding-left: var(--space-4);
|
|
58
|
+
gap: var(--space-hair);
|
|
59
|
+
}
|
|
60
|
+
.ds-side-tree-child {
|
|
61
|
+
display: flex; align-items: center; gap: var(--space-2);
|
|
62
|
+
padding: var(--space-1) var(--space-2);
|
|
63
|
+
border-radius: var(--r-1);
|
|
64
|
+
font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3);
|
|
65
|
+
text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
66
|
+
}
|
|
67
|
+
.ds-side-tree-child:hover, .ds-side-tree-child:focus-visible { background: var(--bg-2); color: var(--fg); }
|
|
68
|
+
.ds-side-tree-child:focus-visible {
|
|
69
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
70
|
+
outline-offset: var(--focus-offset);
|
|
71
|
+
}
|
|
72
|
+
.ds-side-tree-child .glyph { font-family: var(--ff-body); color: var(--fg-3); }
|
|
73
|
+
|
|
30
74
|
/* -- select primitive --------------------------------------------------- */
|
|
31
75
|
.ds-select {
|
|
32
76
|
width: 100%;
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
width: 18px; height: 18px;
|
|
28
28
|
border-radius: var(--r-pill);
|
|
29
29
|
background: var(--bg-1);
|
|
30
|
-
border: var(--bw-
|
|
30
|
+
border: var(--bw-hair) solid var(--accent);
|
|
31
31
|
box-shadow: var(--shadow-1);
|
|
32
32
|
transform: translate(-50%, -50%);
|
|
33
33
|
pointer-events: none;
|
|
@@ -41,8 +41,8 @@ body.canvas-host { background: transparent !important; }
|
|
|
41
41
|
|
|
42
42
|
:root {
|
|
43
43
|
--app-status-h: 26px;
|
|
44
|
-
--app-topbar-h:
|
|
45
|
-
--app-crumb-h:
|
|
44
|
+
--app-topbar-h: 64px;
|
|
45
|
+
--app-crumb-h: 56px;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
.app-topbar {
|
|
@@ -51,7 +51,7 @@ body.canvas-host { background: transparent !important; }
|
|
|
51
51
|
align-items: center; gap: var(--space-4);
|
|
52
52
|
min-height: var(--app-topbar-h);
|
|
53
53
|
padding: var(--space-2-5) var(--pad-x);
|
|
54
|
-
|
|
54
|
+
border-bottom: var(--bw-hair, 1px) solid var(--rule);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/* Merged chrome: when AppShell gets both a topbar and a crumb it wraps them
|
|
@@ -64,7 +64,7 @@ body.canvas-host { background: transparent !important; }
|
|
|
64
64
|
display: flex; flex-wrap: wrap; align-items: center;
|
|
65
65
|
gap: var(--space-2) var(--space-4);
|
|
66
66
|
padding: var(--space-2) var(--pad-x);
|
|
67
|
-
|
|
67
|
+
border-bottom: var(--bw-hair, 1px) solid var(--rule);
|
|
68
68
|
}
|
|
69
69
|
.app-chrome > .app-topbar,
|
|
70
70
|
.app-chrome > .app-crumb {
|
|
@@ -134,7 +134,6 @@ body.canvas-host { background: transparent !important; }
|
|
|
134
134
|
change. */
|
|
135
135
|
.app-topbar nav a.active {
|
|
136
136
|
color: var(--accent-ink);
|
|
137
|
-
background: color-mix(in oklab, var(--accent) 16%, transparent);
|
|
138
137
|
box-shadow: inset 0 -2px 0 0 var(--accent);
|
|
139
138
|
font-weight: 600;
|
|
140
139
|
}
|