anentrypoint-design 0.0.238 → 0.0.239
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/app-shell.css +43 -6
- package/colors_and_type.css +17 -15
- package/dist/247420.css +94 -21
- package/dist/247420.js +10 -10
- package/package.json +1 -1
- package/src/community-app.js +6 -5
- package/src/kits/os/shell.js +0 -0
package/app-shell.css
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/* ============================================================
|
|
2
2
|
247420 design system — component sheet
|
|
3
|
-
"Acid Editorial":
|
|
4
|
-
Confident hierarchy, asymmetric grid tension, print
|
|
5
|
-
one electric lead accent. Indicator rails over
|
|
3
|
+
"Acid Editorial": Bricolage Grotesque display + Hanken Grotesk body +
|
|
4
|
+
JetBrains code. Confident hierarchy, asymmetric grid tension, print
|
|
5
|
+
texture over glow, one electric lead accent. Indicator rails over
|
|
6
|
+
hairlines.
|
|
6
7
|
============================================================ */
|
|
7
8
|
|
|
8
9
|
/* ============================================================
|
|
@@ -371,11 +372,17 @@ body.canvas-host { background: transparent !important; }
|
|
|
371
372
|
.app-main > .chat,
|
|
372
373
|
.app-main > .chat-area,
|
|
373
374
|
.app-main > .ds-file-stage,
|
|
375
|
+
.app-main > .ds-files-stack,
|
|
374
376
|
.app-main > .grow { flex: 1 1 auto; min-height: 0; }
|
|
375
377
|
.app-main.narrow { max-width: var(--measure-narrow); margin: 0 auto; }
|
|
376
378
|
|
|
377
379
|
@media (min-width: 1400px) {
|
|
378
|
-
|
|
380
|
+
/* Fluid ceiling, not a hard stop: scales from 1400px up to 1920px across the
|
|
381
|
+
1400-2200px viewport band (matches .ws-shell's 1920px ultrawide cap below)
|
|
382
|
+
instead of freezing at 1400px and leaving >1000px dead margin on a 2560px+
|
|
383
|
+
display. Row/prose measure caps (--measure-wide etc.) still own line-length
|
|
384
|
+
readability, so widening the shell itself does not create unreadable rows. */
|
|
385
|
+
.app { max-width: clamp(1400px, 92vw, 1920px); margin-left: auto; margin-right: auto; }
|
|
379
386
|
.app-main .chat,
|
|
380
387
|
.app-main > .chat-area,
|
|
381
388
|
.app-main > .main-content { max-width: none; margin: 0; width: 100%; }
|
|
@@ -385,6 +392,12 @@ body.canvas-host { background: transparent !important; }
|
|
|
385
392
|
/* Cap row text measure inside the wide capped main (ultrawide readability). */
|
|
386
393
|
.row .title, .row .sub { max-width: var(--measure-wide); }
|
|
387
394
|
}
|
|
395
|
+
/* Beyond 1920px the shell itself stops growing (matches .ws-shell's own cap) —
|
|
396
|
+
extra space becomes page margin rather than stretching sidebar/content grid
|
|
397
|
+
tracks to distances a pointer/eye shouldn't have to travel. */
|
|
398
|
+
@media (min-width: 2200px) {
|
|
399
|
+
.app { max-width: 1920px; }
|
|
400
|
+
}
|
|
388
401
|
|
|
389
402
|
.app-status {
|
|
390
403
|
display: flex; align-items: center; gap: var(--space-3);
|
|
@@ -1586,8 +1599,17 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1586
1599
|
|
|
1587
1600
|
/* Full-width files stack: the stage's space-3 vertical beat without its
|
|
1588
1601
|
920px cap/auto-margins, so the roots / toolbar / bulkbar / uploads / grid
|
|
1589
|
-
bands keep one consistent rhythm instead of touching edge-to-edge.
|
|
1590
|
-
|
|
1602
|
+
bands keep one consistent rhythm instead of touching edge-to-edge. Carries
|
|
1603
|
+
the same side/bottom padding as .ds-file-stage (top collapses the same way
|
|
1604
|
+
when mounted directly under .app-main, which already supplies top padding)
|
|
1605
|
+
so switching a consumer from the capped stage to this full-width stack is a
|
|
1606
|
+
pure width change, not a spacing regression. */
|
|
1607
|
+
.ds-files-stack {
|
|
1608
|
+
display: flex; flex-direction: column; gap: var(--space-3); min-height: 0;
|
|
1609
|
+
padding: 0 var(--space-3) var(--space-4);
|
|
1610
|
+
}
|
|
1611
|
+
.app-main > div > .ds-files-stack,
|
|
1612
|
+
.app-main .ds-files-stack { padding-top: 0; }
|
|
1591
1613
|
|
|
1592
1614
|
/* Breadcrumb path */
|
|
1593
1615
|
.ds-crumb-path {
|
|
@@ -4209,3 +4231,18 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
4209
4231
|
.ds-term-input { flex: 1; min-width: 0; background: transparent; border: 0; outline: 0; font-family: var(--ff-mono); font-size: 13px; color: var(--fg); }
|
|
4210
4232
|
/* full-viewport render root (community-app) */
|
|
4211
4233
|
.ds-root-viewport { height: 100vh; height: 100dvh; }
|
|
4234
|
+
|
|
4235
|
+
/* --- chat kit: widescreen detail pane -----------------------
|
|
4236
|
+
.chat itself stays single-column (shared component, untouched) and
|
|
4237
|
+
stretches full-width on ultrawide via the existing .app-main > .chat
|
|
4238
|
+
max-width:none rule above (~L380) — that's fine for a bare thread, but
|
|
4239
|
+
it leaves a lone thread column growing to 1400px+ with no other use of
|
|
4240
|
+
the extra width. This wrapper adds a persistent "thread info" rail once
|
|
4241
|
+
there is room to spare, instead of just widening the message column. */
|
|
4242
|
+
.ds-chat-layout { display: flex; flex-direction: column; flex: 1; min-height: 0; gap: var(--space-3); }
|
|
4243
|
+
.ds-chat-layout > .chat { min-width: 0; }
|
|
4244
|
+
.ds-chat-detail { display: none; }
|
|
4245
|
+
@media (min-width: 1100px) {
|
|
4246
|
+
.ds-chat-layout { display: grid; grid-template-columns: minmax(0, 1fr) 280px; align-items: start; gap: var(--space-4); }
|
|
4247
|
+
.ds-chat-detail { display: block; position: sticky; top: 0; }
|
|
4248
|
+
}
|
package/colors_and_type.css
CHANGED
|
@@ -5,17 +5,18 @@
|
|
|
5
5
|
Source-of-truth tokens. Component sheet lives in app-shell.css.
|
|
6
6
|
============================================================ */
|
|
7
7
|
|
|
8
|
-
@import url('https://fonts.googleapis.com/css2?family=
|
|
8
|
+
@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,200..800&family=Hanken+Grotesk:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400;1,700&display=swap');
|
|
9
9
|
|
|
10
|
-
/* Metric-matched fallback for the display face. While
|
|
11
|
-
text falls back to Arial with size-adjust tuned to its cap-height so
|
|
12
|
-
oversized hero does not reflow on swap. Referenced first in --ff-display
|
|
13
|
-
the '
|
|
10
|
+
/* Metric-matched fallback for the display face. While Bricolage Grotesque
|
|
11
|
+
loads, text falls back to Arial with size-adjust tuned to its cap-height so
|
|
12
|
+
the oversized hero does not reflow on swap. Referenced first in --ff-display
|
|
13
|
+
via the 'Bricolage Grotesque' family; this only kicks in for the fallback
|
|
14
|
+
glyphs. */
|
|
14
15
|
@font-face {
|
|
15
|
-
font-family: '
|
|
16
|
+
font-family: 'Bricolage Grotesque Fallback';
|
|
16
17
|
src: local('Arial');
|
|
17
|
-
size-adjust:
|
|
18
|
-
ascent-override:
|
|
18
|
+
size-adjust: 99%;
|
|
19
|
+
ascent-override: 94%;
|
|
19
20
|
descent-override: 24%;
|
|
20
21
|
}
|
|
21
22
|
|
|
@@ -129,13 +130,14 @@
|
|
|
129
130
|
--panel-accent-2: var(--accent-bright, var(--accent));
|
|
130
131
|
--panel-shadow: 0 1px 0 color-mix(in oklab, var(--fg) 6%, transparent), 0 4px 14px color-mix(in oklab, var(--fg) 8%, transparent);
|
|
131
132
|
|
|
132
|
-
/* Type —
|
|
133
|
-
character),
|
|
134
|
-
alias tracks the display face.
|
|
135
|
-
oversized hero from shifting while
|
|
136
|
-
|
|
137
|
-
--ff-
|
|
138
|
-
--ff-
|
|
133
|
+
/* Type — Bricolage Grotesque carries display/headings (variable editorial
|
|
134
|
+
grotesque with real character), Hanken Grotesk carries body and UI,
|
|
135
|
+
JetBrains carries code. The narrow alias tracks the display face.
|
|
136
|
+
size-adjust on the fallback keeps the oversized hero from shifting while
|
|
137
|
+
Bricolage Grotesque loads. */
|
|
138
|
+
--ff-display: 'Bricolage Grotesque', 'Bricolage Grotesque Fallback', 'Hanken Grotesk', system-ui, sans-serif;
|
|
139
|
+
--ff-narrow: 'Bricolage Grotesque', 'Bricolage Grotesque Fallback', 'Hanken Grotesk', system-ui, sans-serif;
|
|
140
|
+
--ff-body: 'Hanken Grotesk', system-ui, sans-serif;
|
|
139
141
|
--ff-mono: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
|
|
140
142
|
|
|
141
143
|
--fs-micro: 12px;
|
package/dist/247420.css
CHANGED
|
@@ -7,17 +7,18 @@
|
|
|
7
7
|
Source-of-truth tokens. Component sheet lives in app-shell.css.
|
|
8
8
|
============================================================ */
|
|
9
9
|
|
|
10
|
-
@import url('https://fonts.googleapis.com/css2?family=
|
|
10
|
+
@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,200..800&family=Hanken+Grotesk:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400;1,700&display=swap');
|
|
11
11
|
|
|
12
|
-
/* Metric-matched fallback for the display face. While
|
|
13
|
-
text falls back to Arial with size-adjust tuned to its cap-height so
|
|
14
|
-
oversized hero does not reflow on swap. Referenced first in --ff-display
|
|
15
|
-
the '
|
|
12
|
+
/* Metric-matched fallback for the display face. While Bricolage Grotesque
|
|
13
|
+
loads, text falls back to Arial with size-adjust tuned to its cap-height so
|
|
14
|
+
the oversized hero does not reflow on swap. Referenced first in --ff-display
|
|
15
|
+
via the 'Bricolage Grotesque' family; this only kicks in for the fallback
|
|
16
|
+
glyphs. */
|
|
16
17
|
@font-face {
|
|
17
|
-
font-family: '
|
|
18
|
+
font-family: 'Bricolage Grotesque Fallback';
|
|
18
19
|
src: local('Arial');
|
|
19
|
-
size-adjust:
|
|
20
|
-
ascent-override:
|
|
20
|
+
size-adjust: 99%;
|
|
21
|
+
ascent-override: 94%;
|
|
21
22
|
descent-override: 24%;
|
|
22
23
|
}
|
|
23
24
|
|
|
@@ -131,13 +132,14 @@
|
|
|
131
132
|
--panel-accent-2: var(--accent-bright, var(--accent));
|
|
132
133
|
--panel-shadow: 0 1px 0 color-mix(in oklab, var(--fg) 6%, transparent), 0 4px 14px color-mix(in oklab, var(--fg) 8%, transparent);
|
|
133
134
|
|
|
134
|
-
/* Type —
|
|
135
|
-
character),
|
|
136
|
-
alias tracks the display face.
|
|
137
|
-
oversized hero from shifting while
|
|
138
|
-
|
|
139
|
-
--ff-
|
|
140
|
-
--ff-
|
|
135
|
+
/* Type — Bricolage Grotesque carries display/headings (variable editorial
|
|
136
|
+
grotesque with real character), Hanken Grotesk carries body and UI,
|
|
137
|
+
JetBrains carries code. The narrow alias tracks the display face.
|
|
138
|
+
size-adjust on the fallback keeps the oversized hero from shifting while
|
|
139
|
+
Bricolage Grotesque loads. */
|
|
140
|
+
--ff-display: 'Bricolage Grotesque', 'Bricolage Grotesque Fallback', 'Hanken Grotesk', system-ui, sans-serif;
|
|
141
|
+
--ff-narrow: 'Bricolage Grotesque', 'Bricolage Grotesque Fallback', 'Hanken Grotesk', system-ui, sans-serif;
|
|
142
|
+
--ff-body: 'Hanken Grotesk', system-ui, sans-serif;
|
|
141
143
|
--ff-mono: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
|
|
142
144
|
|
|
143
145
|
--fs-micro: 12px;
|
|
@@ -500,9 +502,10 @@
|
|
|
500
502
|
/* app-shell.css */
|
|
501
503
|
/* ============================================================
|
|
502
504
|
247420 design system — component sheet
|
|
503
|
-
"Acid Editorial":
|
|
504
|
-
Confident hierarchy, asymmetric grid tension, print
|
|
505
|
-
one electric lead accent. Indicator rails over
|
|
505
|
+
"Acid Editorial": Bricolage Grotesque display + Hanken Grotesk body +
|
|
506
|
+
JetBrains code. Confident hierarchy, asymmetric grid tension, print
|
|
507
|
+
texture over glow, one electric lead accent. Indicator rails over
|
|
508
|
+
hairlines.
|
|
506
509
|
============================================================ */
|
|
507
510
|
|
|
508
511
|
/* ============================================================
|
|
@@ -871,11 +874,17 @@
|
|
|
871
874
|
.ds-247420 .app-main > .chat,
|
|
872
875
|
.ds-247420 .app-main > .chat-area,
|
|
873
876
|
.ds-247420 .app-main > .ds-file-stage,
|
|
877
|
+
.ds-247420 .app-main > .ds-files-stack,
|
|
874
878
|
.ds-247420 .app-main > .grow { flex: 1 1 auto; min-height: 0; }
|
|
875
879
|
.ds-247420 .app-main.narrow { max-width: var(--measure-narrow); margin: 0 auto; }
|
|
876
880
|
|
|
877
881
|
@media (min-width: 1400px) {
|
|
878
|
-
|
|
882
|
+
/* Fluid ceiling, not a hard stop: scales from 1400px up to 1920px across the
|
|
883
|
+
1400-2200px viewport band (matches .ws-shell's 1920px ultrawide cap below)
|
|
884
|
+
instead of freezing at 1400px and leaving >1000px dead margin on a 2560px+
|
|
885
|
+
display. Row/prose measure caps (--measure-wide etc.) still own line-length
|
|
886
|
+
readability, so widening the shell itself does not create unreadable rows. */
|
|
887
|
+
.ds-247420 .app { max-width: clamp(1400px, 92vw, 1920px); margin-left: auto; margin-right: auto; }
|
|
879
888
|
.ds-247420 .app-main .chat,
|
|
880
889
|
.ds-247420 .app-main > .chat-area,
|
|
881
890
|
.ds-247420 .app-main > .main-content { max-width: none; margin: 0; width: 100%; }
|
|
@@ -885,6 +894,12 @@
|
|
|
885
894
|
/* Cap row text measure inside the wide capped main (ultrawide readability). */
|
|
886
895
|
.ds-247420 .row .title, .ds-247420 .row .sub { max-width: var(--measure-wide); }
|
|
887
896
|
}
|
|
897
|
+
/* Beyond 1920px the shell itself stops growing (matches .ws-shell's own cap) —
|
|
898
|
+
extra space becomes page margin rather than stretching sidebar/content grid
|
|
899
|
+
tracks to distances a pointer/eye shouldn't have to travel. */
|
|
900
|
+
@media (min-width: 2200px) {
|
|
901
|
+
.ds-247420 .app { max-width: 1920px; }
|
|
902
|
+
}
|
|
888
903
|
|
|
889
904
|
.ds-247420 .app-status {
|
|
890
905
|
display: flex; align-items: center; gap: var(--space-3);
|
|
@@ -2086,8 +2101,17 @@
|
|
|
2086
2101
|
|
|
2087
2102
|
/* Full-width files stack: the stage's space-3 vertical beat without its
|
|
2088
2103
|
920px cap/auto-margins, so the roots / toolbar / bulkbar / uploads / grid
|
|
2089
|
-
bands keep one consistent rhythm instead of touching edge-to-edge.
|
|
2090
|
-
|
|
2104
|
+
bands keep one consistent rhythm instead of touching edge-to-edge. Carries
|
|
2105
|
+
the same side/bottom padding as .ds-file-stage (top collapses the same way
|
|
2106
|
+
when mounted directly under .app-main, which already supplies top padding)
|
|
2107
|
+
so switching a consumer from the capped stage to this full-width stack is a
|
|
2108
|
+
pure width change, not a spacing regression. */
|
|
2109
|
+
.ds-247420 .ds-files-stack {
|
|
2110
|
+
display: flex; flex-direction: column; gap: var(--space-3); min-height: 0;
|
|
2111
|
+
padding: 0 var(--space-3) var(--space-4);
|
|
2112
|
+
}
|
|
2113
|
+
.ds-247420 .app-main > div > .ds-files-stack,
|
|
2114
|
+
.ds-247420 .app-main .ds-files-stack { padding-top: 0; }
|
|
2091
2115
|
|
|
2092
2116
|
/* Breadcrumb path */
|
|
2093
2117
|
.ds-247420 .ds-crumb-path {
|
|
@@ -4699,6 +4723,21 @@
|
|
|
4699
4723
|
/* full-viewport render root (community-app) */
|
|
4700
4724
|
.ds-247420 .ds-root-viewport { height: 100vh; height: 100dvh; }
|
|
4701
4725
|
|
|
4726
|
+
/* --- chat kit: widescreen detail pane -----------------------
|
|
4727
|
+
.chat itself stays single-column (shared component, untouched) and
|
|
4728
|
+
stretches full-width on ultrawide via the existing .app-main > .chat
|
|
4729
|
+
max-width:none rule above (~L380) — that's fine for a bare thread, but
|
|
4730
|
+
it leaves a lone thread column growing to 1400px+ with no other use of
|
|
4731
|
+
the extra width. This wrapper adds a persistent "thread info" rail once
|
|
4732
|
+
there is room to spare, instead of just widening the message column. */
|
|
4733
|
+
.ds-247420 .ds-chat-layout { display: flex; flex-direction: column; flex: 1; min-height: 0; gap: var(--space-3); }
|
|
4734
|
+
.ds-247420 .ds-chat-layout > .chat { min-width: 0; }
|
|
4735
|
+
.ds-247420 .ds-chat-detail { display: none; }
|
|
4736
|
+
@media (min-width: 1100px) {
|
|
4737
|
+
.ds-247420 .ds-chat-layout { display: grid; grid-template-columns: minmax(0, 1fr) 280px; align-items: start; gap: var(--space-4); }
|
|
4738
|
+
.ds-247420 .ds-chat-detail { display: block; position: sticky; top: 0; }
|
|
4739
|
+
}
|
|
4740
|
+
|
|
4702
4741
|
/* community.css */
|
|
4703
4742
|
/* ============================================================
|
|
4704
4743
|
247420 design system — community surface (Discord-style chat)
|
|
@@ -8658,6 +8697,40 @@
|
|
|
8658
8697
|
align-content: start;
|
|
8659
8698
|
}
|
|
8660
8699
|
|
|
8700
|
+
/* ============================================================
|
|
8701
|
+
Responsive — collapse the server+channel rail on narrow viewports.
|
|
8702
|
+
community-app builds its own hand-rolled .ca-app/.app-body/.ca-rail tree
|
|
8703
|
+
(not AppShell()), so it does not inherit AppShell's @container drawer CSS
|
|
8704
|
+
(keyed off .app/.app-side-shell, which .ca-app/.ca-rail never establish).
|
|
8705
|
+
Mirrors the .cm-channel-sidebar off-canvas idiom in community.css 1:1: same
|
|
8706
|
+
breakpoint, same translateX(-110%) + .open reveal, same :has() scrim — so
|
|
8707
|
+
the .ca-rail drawer driven by MobileHeader's hamburger (mobileMenuOpen in
|
|
8708
|
+
the adapter snapshot) behaves identically to the community kit's sidebar.
|
|
8709
|
+
============================================================ */
|
|
8710
|
+
@media (max-width: 900px) {
|
|
8711
|
+
.ds-247420.ds-247420 .ca-rail {
|
|
8712
|
+
position: absolute;
|
|
8713
|
+
z-index: 20;
|
|
8714
|
+
top: 0; left: 0; bottom: 0;
|
|
8715
|
+
width: 240px; min-width: 240px;
|
|
8716
|
+
transform: translateX(-110%);
|
|
8717
|
+
transition: transform var(--dur-base, 240ms) var(--ease, ease);
|
|
8718
|
+
box-shadow: 2px 0 16px color-mix(in oklab, var(--ink, #000) 30%, transparent);
|
|
8719
|
+
}
|
|
8720
|
+
.ds-247420.ds-247420 .ca-rail.open { transform: translateX(0); }
|
|
8721
|
+
.ds-247420.ds-247420 .ca-app:has(.ca-rail.open) .app-main {
|
|
8722
|
+
position: relative;
|
|
8723
|
+
}
|
|
8724
|
+
.ds-247420.ds-247420 .ca-app:has(.ca-rail.open) .app-main::before {
|
|
8725
|
+
content: '';
|
|
8726
|
+
position: absolute;
|
|
8727
|
+
inset: 0;
|
|
8728
|
+
z-index: 15;
|
|
8729
|
+
background: color-mix(in oklab, var(--ink, #000) 40%, transparent);
|
|
8730
|
+
pointer-events: none;
|
|
8731
|
+
}
|
|
8732
|
+
}
|
|
8733
|
+
|
|
8661
8734
|
/* app-surfaces.css */
|
|
8662
8735
|
/* app-surfaces.css — agentgui application-surface styling.
|
|
8663
8736
|
*
|