anentrypoint-design 0.0.128 → 0.0.132
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 +120 -32
- package/colors_and_type.css +33 -1
- package/community.css +45 -0
- package/dist/247420.css +470 -33
- package/dist/247420.js +15 -15
- package/package.json +1 -1
- package/src/components/community.js +21 -8
- package/src/components/content.js +28 -8
- package/src/components/editor-primitives.js +75 -8
- package/src/components/form-primitives.js +168 -0
- package/src/components/interaction-primitives.js +217 -0
- package/src/components/overlay-primitives.js +219 -0
- package/src/components/shell.js +24 -3
- package/src/components.js +14 -0
package/app-shell.css
CHANGED
|
@@ -157,11 +157,18 @@ pre .n { color: var(--green-2); }
|
|
|
157
157
|
padding-right: env(safe-area-inset-right);
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
+
:root {
|
|
161
|
+
--app-status-h: 42px;
|
|
162
|
+
--app-topbar-h: 56px;
|
|
163
|
+
--app-crumb-h: 32px;
|
|
164
|
+
}
|
|
165
|
+
|
|
160
166
|
.app-topbar {
|
|
161
167
|
position: sticky; top: 0; z-index: var(--z-header);
|
|
162
168
|
display: grid; grid-template-columns: auto 1fr auto;
|
|
163
169
|
align-items: center; gap: var(--space-4);
|
|
164
|
-
|
|
170
|
+
min-height: var(--app-topbar-h);
|
|
171
|
+
padding: 10px var(--pad-x);
|
|
165
172
|
background: color-mix(in oklab, var(--bg) 88%, transparent);
|
|
166
173
|
backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
|
|
167
174
|
}
|
|
@@ -212,7 +219,8 @@ pre .n { color: var(--green-2); }
|
|
|
212
219
|
}
|
|
213
220
|
|
|
214
221
|
.app-crumb {
|
|
215
|
-
|
|
222
|
+
min-height: var(--app-crumb-h);
|
|
223
|
+
padding: 6px var(--pad-x);
|
|
216
224
|
display: flex; align-items: center; gap: 8px;
|
|
217
225
|
font-size: var(--fs-sm); color: var(--fg-3);
|
|
218
226
|
}
|
|
@@ -256,14 +264,23 @@ pre .n { color: var(--green-2); }
|
|
|
256
264
|
}
|
|
257
265
|
|
|
258
266
|
.app-main {
|
|
259
|
-
padding: var(--space-
|
|
267
|
+
padding: var(--space-5) var(--pad-x) 0;
|
|
260
268
|
min-width: 0;
|
|
261
269
|
}
|
|
262
270
|
.app-main.narrow { max-width: 760px; margin: 0 auto; }
|
|
263
271
|
|
|
272
|
+
@media (min-width: 1400px) {
|
|
273
|
+
.app { max-width: 1400px; margin-left: auto; margin-right: auto; }
|
|
274
|
+
.app-main .chat,
|
|
275
|
+
.app-main > .chat-area,
|
|
276
|
+
.app-main > .main-content { max-width: none; margin: 0; width: 100%; }
|
|
277
|
+
.app-status { max-width: 1400px; margin-left: auto; margin-right: auto; left: 0; right: 0; }
|
|
278
|
+
}
|
|
279
|
+
|
|
264
280
|
.app-status {
|
|
265
281
|
display: flex; align-items: center; gap: var(--space-3);
|
|
266
|
-
|
|
282
|
+
min-height: var(--app-status-h);
|
|
283
|
+
padding: 10px var(--pad-x);
|
|
267
284
|
font-family: var(--ff-mono); font-size: var(--fs-xs);
|
|
268
285
|
color: var(--fg-3);
|
|
269
286
|
}
|
|
@@ -569,24 +586,9 @@ table tr.clickable:hover td { background: var(--bg-2); }
|
|
|
569
586
|
Mobile Portrait Breakpoint (480px and below)
|
|
570
587
|
────────────────────────────────────────────────────────────────────── */
|
|
571
588
|
@media (max-width: 480px) {
|
|
572
|
-
/* App Layout */
|
|
589
|
+
/* App Layout — drawer handled in 900px block below */
|
|
573
590
|
.app-body { grid-template-columns: 1fr !important; }
|
|
574
591
|
.app-body.no-side { grid-template-columns: 1fr; }
|
|
575
|
-
.app-side-shell { border-right: 0; border-bottom: 1px solid var(--rule); }
|
|
576
|
-
.app-side {
|
|
577
|
-
padding: var(--space-3) var(--space-2);
|
|
578
|
-
font-size: var(--fs-xs);
|
|
579
|
-
flex-direction: row; flex-wrap: wrap; gap: var(--space-2);
|
|
580
|
-
}
|
|
581
|
-
.app-side .group {
|
|
582
|
-
width: 100%; font-size: var(--fs-micro); margin-bottom: 4px;
|
|
583
|
-
}
|
|
584
|
-
.app-side a {
|
|
585
|
-
flex: 1; min-width: 100px; padding: 12px 10px; gap: 6px;
|
|
586
|
-
grid-template-columns: 14px 1fr;
|
|
587
|
-
min-height: 44px;
|
|
588
|
-
}
|
|
589
|
-
.app-side a .glyph { font-size: 12px; }
|
|
590
592
|
|
|
591
593
|
/* Topbar Navigation */
|
|
592
594
|
.app-topbar {
|
|
@@ -714,13 +716,7 @@ table tr.clickable:hover td { background: var(--bg-2); }
|
|
|
714
716
|
Tablet Landscape Breakpoint (768px to 1024px)
|
|
715
717
|
────────────────────────────────────────────────────────────────────── */
|
|
716
718
|
@media (min-width: 481px) and (max-width: 1024px) {
|
|
717
|
-
/* App Layout */
|
|
718
|
-
.app-body { grid-template-columns: 200px minmax(0, 1fr); }
|
|
719
|
-
.app-side {
|
|
720
|
-
padding: var(--space-4) var(--space-2);
|
|
721
|
-
font-size: var(--fs-xs);
|
|
722
|
-
flex-direction: column; gap: var(--space-3);
|
|
723
|
-
}
|
|
719
|
+
/* App Layout — side handled by 900px drawer block; restore for 901-1024 */
|
|
724
720
|
.app-side a {
|
|
725
721
|
padding: 12px 12px; gap: 8px;
|
|
726
722
|
grid-template-columns: 16px 1fr auto;
|
|
@@ -914,14 +910,15 @@ table tr.clickable:hover td { background: var(--bg-2); }
|
|
|
914
910
|
.chat {
|
|
915
911
|
display: flex; flex-direction: column;
|
|
916
912
|
flex: 1; min-height: 0; gap: var(--space-3);
|
|
913
|
+
padding-bottom: calc(var(--app-status-h, 42px) + var(--space-2));
|
|
917
914
|
}
|
|
918
915
|
.chat-head {
|
|
919
916
|
display: flex; align-items: baseline; gap: 8px;
|
|
920
|
-
padding:
|
|
917
|
+
padding: var(--space-3) 0 var(--space-2);
|
|
921
918
|
font-family: var(--ff-mono); font-size: var(--fs-xs);
|
|
922
919
|
color: var(--fg-3); text-transform: lowercase; letter-spacing: 0.02em;
|
|
923
920
|
border-bottom: 1px solid color-mix(in oklab, var(--fg) 8%, transparent);
|
|
924
|
-
margin-bottom: var(--space-
|
|
921
|
+
margin-bottom: var(--space-2);
|
|
925
922
|
}
|
|
926
923
|
.chat-head .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); flex-shrink: 0; }
|
|
927
924
|
.chat-head > span:nth-child(2) {
|
|
@@ -953,7 +950,7 @@ table tr.clickable:hover td { background: var(--bg-2); }
|
|
|
953
950
|
pointer-events: none;
|
|
954
951
|
}
|
|
955
952
|
|
|
956
|
-
.chat-msg { display: flex; gap: 12px; align-items: flex-start; padding: 2px 0; position: relative; }
|
|
953
|
+
.chat-msg { display: flex; gap: 12px; align-items: flex-start; padding: 2px 0; position: relative; min-width: 0; }
|
|
957
954
|
.chat-msg.you { flex-direction: row-reverse; }
|
|
958
955
|
.chat-msg.you .chat-stack { align-items: flex-end; }
|
|
959
956
|
.chat-msg:hover { background: color-mix(in oklab, var(--fg) 1%, transparent); padding: 2px 0; margin: 0; border-radius: 8px; transition: background var(--dur-base) var(--ease); }
|
|
@@ -980,6 +977,7 @@ table tr.clickable:hover td { background: var(--bg-2); }
|
|
|
980
977
|
.chat-stack {
|
|
981
978
|
display: flex; flex-direction: column; gap: 4px;
|
|
982
979
|
max-width: min(70%, 56ch); min-width: 0;
|
|
980
|
+
flex: 0 1 auto; overflow: hidden;
|
|
983
981
|
}
|
|
984
982
|
|
|
985
983
|
.chat-bubble {
|
|
@@ -987,7 +985,8 @@ table tr.clickable:hover td { background: var(--bg-2); }
|
|
|
987
985
|
border-radius: 14px; line-height: 1.55;
|
|
988
986
|
word-wrap: break-word; overflow-wrap: anywhere;
|
|
989
987
|
font-size: var(--fs-sm);
|
|
990
|
-
max-width:
|
|
988
|
+
max-width: 100%;
|
|
989
|
+
min-width: 0;
|
|
991
990
|
transition: transform 0.12s ease, box-shadow 0.12s ease;
|
|
992
991
|
}
|
|
993
992
|
.chat-msg:hover .chat-bubble { transform: translateY(-1px); box-shadow: 0 2px 8px color-mix(in oklab, var(--fg) 6%, transparent); transition: transform var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease); }
|
|
@@ -1045,7 +1044,21 @@ table tr.clickable:hover td { background: var(--bg-2); }
|
|
|
1045
1044
|
padding: 0; background: var(--bg);
|
|
1046
1045
|
color: var(--fg);
|
|
1047
1046
|
border: 1px solid color-mix(in oklab, var(--fg) 12%, transparent);
|
|
1048
|
-
overflow: hidden; max-width: min
|
|
1047
|
+
overflow: hidden; max-width: 100%; min-width: 0;
|
|
1048
|
+
}
|
|
1049
|
+
.chat-bubble.chat-code pre,
|
|
1050
|
+
.chat-bubble pre,
|
|
1051
|
+
.chat-msg pre {
|
|
1052
|
+
max-width: 100%;
|
|
1053
|
+
overflow-x: auto;
|
|
1054
|
+
scrollbar-width: thin;
|
|
1055
|
+
scrollbar-color: var(--bg-3) transparent;
|
|
1056
|
+
}
|
|
1057
|
+
.chat-bubble pre code,
|
|
1058
|
+
.chat-msg pre code {
|
|
1059
|
+
display: block;
|
|
1060
|
+
white-space: pre;
|
|
1061
|
+
min-width: 0;
|
|
1049
1062
|
}
|
|
1050
1063
|
.chat-code-head {
|
|
1051
1064
|
display: flex; align-items: center; gap: 10px;
|
|
@@ -1881,3 +1894,78 @@ body {
|
|
|
1881
1894
|
transition: color var(--dur-snap) var(--ease);
|
|
1882
1895
|
}
|
|
1883
1896
|
.ds-alert-dismiss:hover { color: var(--fg); }
|
|
1897
|
+
|
|
1898
|
+
/* ============================================================
|
|
1899
|
+
Responsive Perfection — Drawer rail, ultrawide cap, mobile compact
|
|
1900
|
+
============================================================ */
|
|
1901
|
+
|
|
1902
|
+
/* Tablet + Mobile: side rail becomes off-canvas drawer (≤900px) */
|
|
1903
|
+
@media (max-width: 900px) {
|
|
1904
|
+
.app-body,
|
|
1905
|
+
.app-body.no-side { grid-template-columns: 1fr !important; }
|
|
1906
|
+
.app-side-shell {
|
|
1907
|
+
position: fixed;
|
|
1908
|
+
left: 0; top: var(--app-topbar-h);
|
|
1909
|
+
height: calc(100vh - var(--app-topbar-h) - var(--app-status-h));
|
|
1910
|
+
width: 280px; max-width: 80vw;
|
|
1911
|
+
transform: translateX(-100%);
|
|
1912
|
+
transition: transform var(--dur-base, 240ms) var(--ease, ease);
|
|
1913
|
+
z-index: 50;
|
|
1914
|
+
background: var(--bg);
|
|
1915
|
+
border-right: 1px solid color-mix(in oklab, var(--fg) 8%, transparent);
|
|
1916
|
+
overflow-y: auto;
|
|
1917
|
+
}
|
|
1918
|
+
.app-side-shell.open,
|
|
1919
|
+
.app-side.open,
|
|
1920
|
+
.app-body.side-open .app-side-shell { transform: translateX(0); }
|
|
1921
|
+
.app-side {
|
|
1922
|
+
flex-direction: column !important;
|
|
1923
|
+
flex-wrap: nowrap !important;
|
|
1924
|
+
gap: var(--space-2);
|
|
1925
|
+
padding: var(--space-3);
|
|
1926
|
+
font-size: var(--fs-sm);
|
|
1927
|
+
}
|
|
1928
|
+
.app-side a {
|
|
1929
|
+
flex: 0 0 auto; min-width: 0;
|
|
1930
|
+
grid-template-columns: 18px 1fr auto;
|
|
1931
|
+
padding: 10px 12px;
|
|
1932
|
+
}
|
|
1933
|
+
.app-side .group { width: 100%; }
|
|
1934
|
+
.app-crumb { display: none; }
|
|
1935
|
+
.chat-head { padding: var(--space-2) var(--space-3) var(--space-2); margin-bottom: var(--space-2); }
|
|
1936
|
+
.app-main { padding-left: var(--space-3); padding-right: var(--space-3); }
|
|
1937
|
+
}
|
|
1938
|
+
|
|
1939
|
+
/* Drawer scrim */
|
|
1940
|
+
.app-side-scrim {
|
|
1941
|
+
display: none;
|
|
1942
|
+
position: fixed; inset: 0;
|
|
1943
|
+
background: color-mix(in oklab, var(--bg) 60%, transparent);
|
|
1944
|
+
z-index: 49;
|
|
1945
|
+
}
|
|
1946
|
+
@media (max-width: 900px) {
|
|
1947
|
+
.app-body.side-open ~ .app-side-scrim,
|
|
1948
|
+
.app-side-shell.open ~ .app-side-scrim { display: block; }
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
/* Mobile (≤480) status bar compact; hide tail item */
|
|
1952
|
+
@media (max-width: 480px) {
|
|
1953
|
+
.app-status {
|
|
1954
|
+
font-size: var(--fs-micro);
|
|
1955
|
+
padding: 4px var(--space-2);
|
|
1956
|
+
gap: var(--space-2);
|
|
1957
|
+
}
|
|
1958
|
+
.app-status > :last-child:not(:only-child) { display: none; }
|
|
1959
|
+
}
|
|
1960
|
+
|
|
1961
|
+
/* Tiny phone (≤360) topbar compact */
|
|
1962
|
+
@media (max-width: 360px) {
|
|
1963
|
+
.app-topbar {
|
|
1964
|
+
padding: 8px var(--space-2);
|
|
1965
|
+
font-size: var(--fs-xs);
|
|
1966
|
+
gap: var(--space-2);
|
|
1967
|
+
}
|
|
1968
|
+
.app-topbar nav,
|
|
1969
|
+
.app-topbar > :last-child { display: none; }
|
|
1970
|
+
.brand { font-size: var(--fs-tiny); }
|
|
1971
|
+
}
|
package/colors_and_type.css
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
--paper-3: #DFDED9;
|
|
14
14
|
--ink: #131318;
|
|
15
15
|
--ink-2: #25252C;
|
|
16
|
-
--ink-3: #6A6A70
|
|
16
|
+
--ink-3: #54545A; /* WCAG AAA on --paper (~7.1:1); was #6A6A70 (AA only) */
|
|
17
17
|
|
|
18
18
|
/* Lore palette */
|
|
19
19
|
--green: #247420;
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
--flame: #FF5A1F;
|
|
34
34
|
--sky: #3A6EFF;
|
|
35
35
|
--warn: #E0241A;
|
|
36
|
+
--danger: oklch(0.55 0.18 25);
|
|
37
|
+
--success: var(--green-2);
|
|
36
38
|
--live: var(--green);
|
|
37
39
|
|
|
38
40
|
/* Semantic surfaces */
|
|
@@ -192,6 +194,7 @@ select:focus-visible {
|
|
|
192
194
|
--accent: var(--accent-bright, var(--green-2));
|
|
193
195
|
--accent-fg: var(--ink);
|
|
194
196
|
--accent-bright: var(--green-2);
|
|
197
|
+
--danger: oklch(0.68 0.19 25);
|
|
195
198
|
}
|
|
196
199
|
|
|
197
200
|
@media (prefers-color-scheme: dark) {
|
|
@@ -263,3 +266,32 @@ select:focus-visible {
|
|
|
263
266
|
linear-gradient(to bottom, rgba(232,75,138,0.15) 1px, transparent 1px);
|
|
264
267
|
background-size: 8px 8px;
|
|
265
268
|
}
|
|
269
|
+
|
|
270
|
+
/* Reduced-motion guard — neutralizes every transition/animation/transform
|
|
271
|
+
inside the design-system scope when the user requests reduced motion.
|
|
272
|
+
Components remain free to opt back in with
|
|
273
|
+
`@media (prefers-reduced-motion: no-preference) { ... }`. */
|
|
274
|
+
@media (prefers-reduced-motion: reduce) {
|
|
275
|
+
.ds-247420 *,
|
|
276
|
+
.ds-247420 *::before,
|
|
277
|
+
.ds-247420 *::after {
|
|
278
|
+
animation-duration: 0.001ms !important;
|
|
279
|
+
animation-iteration-count: 1 !important;
|
|
280
|
+
transition-duration: 0.001ms !important;
|
|
281
|
+
scroll-behavior: auto !important;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/* Elevation tokens consumed by overlays (Tooltip, Popover, Dropdown, Dialog). */
|
|
286
|
+
:root {
|
|
287
|
+
--shadow-1: 0 1px 2px color-mix(in oklab, var(--fg) 8%, transparent);
|
|
288
|
+
--shadow-2: 0 4px 12px color-mix(in oklab, var(--fg) 10%, transparent),
|
|
289
|
+
0 2px 4px color-mix(in oklab, var(--fg) 6%, transparent);
|
|
290
|
+
--shadow-3: 0 12px 32px color-mix(in oklab, var(--fg) 14%, transparent),
|
|
291
|
+
0 4px 8px color-mix(in oklab, var(--fg) 8%, transparent);
|
|
292
|
+
--z-dropdown: 600;
|
|
293
|
+
--z-popover: 700;
|
|
294
|
+
--z-modal: 800;
|
|
295
|
+
--z-toast: 900;
|
|
296
|
+
--z-tooltip: 1000;
|
|
297
|
+
}
|
package/community.css
CHANGED
|
@@ -1005,3 +1005,48 @@
|
|
|
1005
1005
|
height: 24px;
|
|
1006
1006
|
}
|
|
1007
1007
|
}
|
|
1008
|
+
|
|
1009
|
+
/* ---------- a11y polish: focus-visible coverage on community interactive elements ---------- */
|
|
1010
|
+
/* Every interactive surface with a :hover state must also have a :focus-visible state so
|
|
1011
|
+
keyboard users get equivalent feedback. The selectors here mirror the existing :hover rules. */
|
|
1012
|
+
|
|
1013
|
+
.cm-server-icon:focus-visible,
|
|
1014
|
+
.cm-server-back:focus-visible,
|
|
1015
|
+
.cm-server-add:focus-visible {
|
|
1016
|
+
outline: 2px solid var(--accent);
|
|
1017
|
+
outline-offset: 2px;
|
|
1018
|
+
border-radius: var(--r-2);
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
.cm-channel-item:focus-visible {
|
|
1022
|
+
outline: 2px solid var(--accent);
|
|
1023
|
+
outline-offset: -2px;
|
|
1024
|
+
border-radius: var(--r-1);
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
.cm-member-item:focus-visible {
|
|
1028
|
+
outline: 2px solid var(--accent);
|
|
1029
|
+
outline-offset: -2px;
|
|
1030
|
+
border-radius: var(--r-1);
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
.cm-vs-btn:focus-visible,
|
|
1034
|
+
.cm-user-btn:focus-visible {
|
|
1035
|
+
outline: 2px solid var(--accent);
|
|
1036
|
+
outline-offset: 2px;
|
|
1037
|
+
border-radius: var(--r-1);
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
/* ---------- prefers-reduced-motion: kill the transitions that were not previously guarded ---------- */
|
|
1041
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1042
|
+
.cm-server-icon,
|
|
1043
|
+
.cm-channel-item,
|
|
1044
|
+
.cm-member-item,
|
|
1045
|
+
.cm-vs-btn,
|
|
1046
|
+
.cm-user-btn,
|
|
1047
|
+
.cm-ch-spinner,
|
|
1048
|
+
.cm-ch-voice-badge {
|
|
1049
|
+
transition: none !important;
|
|
1050
|
+
animation: none !important;
|
|
1051
|
+
}
|
|
1052
|
+
}
|