anentrypoint-design 0.0.413 → 0.0.415

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.
Files changed (103) hide show
  1. package/dist/247420.js +63 -13
  2. package/dist/app-shell.css +40 -594
  3. package/dist/colors_and_type.css +607 -47
  4. package/dist/index.html +227 -277
  5. package/dist/preview/buttons.html +39 -28
  6. package/dist/preview/colors-core.html +18 -8
  7. package/dist/preview/colors-lore.html +26 -17
  8. package/dist/preview/colors-semantic.html +24 -18
  9. package/dist/preview/dateline.html +6 -5
  10. package/dist/preview/dropzone.html +4 -3
  11. package/dist/preview/file-grid.html +10 -9
  12. package/dist/preview/file-row.html +14 -13
  13. package/dist/preview/file-toolbar.html +4 -3
  14. package/dist/preview/file-viewer.html +4 -3
  15. package/dist/preview/header.html +26 -24
  16. package/dist/preview/icons-unicode.html +8 -5
  17. package/dist/preview/index-row.html +17 -9
  18. package/dist/preview/inputs.html +4 -3
  19. package/dist/preview/manifesto.html +34 -17
  20. package/dist/preview/motion-default.js +77 -57
  21. package/dist/preview/rules.html +4 -3
  22. package/dist/preview/spacing.html +13 -12
  23. package/dist/preview/stamps-lore.html +5 -4
  24. package/dist/preview/stamps.html +4 -3
  25. package/dist/preview/theme-ink.html +7 -6
  26. package/dist/preview/type-display.html +14 -5
  27. package/dist/preview/type-mono.html +6 -5
  28. package/dist/preview/type-prose.html +12 -10
  29. package/dist/preview/type-scale.html +4 -3
  30. package/dist/preview/wordmarks.html +10 -7
  31. package/dist/site/content/globals/site.yaml +5 -3
  32. package/dist/site/content/pages/freddie.yaml +2 -2
  33. package/dist/site/content/pages/home.yaml +55 -55
  34. package/dist/site/theme.mjs +96 -348
  35. package/dist/slides/index.html +13 -13
  36. package/dist/src/bootstrap.js +10 -1
  37. package/dist/src/components/chat.js +43 -195
  38. package/dist/src/components/community.js +18 -166
  39. package/dist/src/components/content.js +30 -210
  40. package/dist/src/components/files-modals.js +14 -106
  41. package/dist/src/components/files.js +15 -116
  42. package/dist/src/components/freddie/helpers.js +53 -8
  43. package/dist/src/components/freddie.js +35 -25
  44. package/dist/src/components/shell.js +16 -114
  45. package/dist/src/components/theme-toggle.js +69 -25
  46. package/dist/src/components.js +92 -13
  47. package/dist/src/deck-stage.js +6 -4
  48. package/dist/src/highlight.js +51 -7
  49. package/dist/src/index.js +58 -12
  50. package/dist/src/kits/os/about-app.js +2 -3
  51. package/dist/src/kits/os/app-panes.css +46 -70
  52. package/dist/src/kits/os/browser-app.js +28 -1
  53. package/dist/src/kits/os/files-app.js +7 -0
  54. package/dist/src/kits/os/freddie/pages-chat.js +90 -75
  55. package/dist/src/kits/os/freddie/pages-core.js +9 -9
  56. package/dist/src/kits/os/freddie/pages-os.js +8 -8
  57. package/dist/src/kits/os/freddie/pages-tools.js +14 -14
  58. package/dist/src/kits/os/freddie/routes.js +21 -19
  59. package/dist/src/kits/os/freddie-dashboard.css +42 -21
  60. package/dist/src/kits/os/freddie-dashboard.js +6 -6
  61. package/dist/src/kits/os/icons.js +38 -16
  62. package/dist/src/kits/os/index.js +11 -0
  63. package/dist/src/kits/os/launcher.css +26 -10
  64. package/dist/src/kits/os/launcher.js +3 -0
  65. package/dist/src/kits/os/shell.js +72 -108
  66. package/dist/src/kits/os/terminal-app.js +1 -1
  67. package/dist/src/kits/os/theme.css +1330 -150
  68. package/dist/src/kits/os/wm.css +68 -15
  69. package/dist/src/kits/os/wm.js +93 -17
  70. package/dist/src/markdown.js +121 -12
  71. package/dist/src/motion.js +18 -2
  72. package/dist/src/page-html.js +62 -134
  73. package/dist/src/theme.js +106 -13
  74. package/dist/src/web-components/ds-chat.js +80 -9
  75. package/dist/ui_kits/aicat/app.js +54 -6
  76. package/dist/ui_kits/aicat/index.html +2 -0
  77. package/dist/ui_kits/blog/index.html +33 -17
  78. package/dist/ui_kits/chat/app.js +90 -22
  79. package/dist/ui_kits/chat/index.html +2 -0
  80. package/dist/ui_kits/community/app.js +86 -24
  81. package/dist/ui_kits/community/index.html +1 -0
  82. package/dist/ui_kits/dashboard/app.js +123 -34
  83. package/dist/ui_kits/dashboard/index.html +1 -0
  84. package/dist/ui_kits/docs/index.html +43 -33
  85. package/dist/ui_kits/error_404/app.js +78 -23
  86. package/dist/ui_kits/file_browser/README.md +1 -1
  87. package/dist/ui_kits/file_browser/app.js +45 -10
  88. package/dist/ui_kits/file_browser/index.html +1 -0
  89. package/dist/ui_kits/gallery/app.js +130 -51
  90. package/dist/ui_kits/homepage/app.js +156 -138
  91. package/dist/ui_kits/project_page/app.js +142 -125
  92. package/dist/ui_kits/project_page/index.html +2 -1
  93. package/dist/ui_kits/search/app.js +52 -15
  94. package/dist/ui_kits/settings/app.js +166 -39
  95. package/dist/ui_kits/signin/app.js +175 -49
  96. package/dist/ui_kits/signin/index.html +1 -0
  97. package/dist/ui_kits/slide_deck/app.js +83 -49
  98. package/dist/ui_kits/system_primer/app.js +57 -40
  99. package/dist/ui_kits/terminal/app.js +160 -43
  100. package/package.json +1 -1
  101. package/src/page-html/client-script.js +40 -11
  102. package/src/page-html/page-styles.js +22 -1
  103. package/src/page-html.js +10 -0
@@ -1,594 +1,40 @@
1
- /* ============================================================
2
- 247420 design system component sheet
3
- Tonal surfaces over borders. Indicator rails over hairlines.
4
- Friendly rounded sans body; mono only on real code.
5
- ============================================================ */
6
-
7
- /* ============================================================
8
- Base
9
- ============================================================ */
10
- * { box-sizing: border-box; }
11
- html, body { margin: 0; padding: 0; }
12
- body {
13
- background: var(--bg);
14
- color: var(--fg);
15
- font-family: var(--ff-body);
16
- font-size: var(--fs-body);
17
- line-height: var(--lh-base);
18
- -webkit-font-smoothing: antialiased;
19
- text-rendering: optimizeLegibility;
20
- }
21
- ::selection { background: var(--mascot); color: var(--ink); }
22
-
23
- /* Every root has a CQ container so fluid type can resolve to a meaningful inline-size. */
24
- .app, [class*="kit-"], .ds-stage {
25
- container-type: inline-size;
26
- overflow-x: clip;
27
- min-width: 0;
28
- }
29
- .app *, [class*="kit-"] * { min-width: 0; }
30
-
31
- /* ============================================================
32
- Typography
33
- ============================================================ */
34
- h1, .t-h1 { font-family: var(--ff-body); font-size: var(--fs-h1); line-height: var(--lh-snug); letter-spacing: var(--tr-tight); font-weight: 600; margin: 0; }
35
- h2, .t-h2 { font-family: var(--ff-body); font-size: var(--fs-h2); line-height: var(--lh-snug); letter-spacing: var(--tr-tight); font-weight: 600; margin: 0; }
36
- h3, .t-h3 { font-family: var(--ff-body); font-size: var(--fs-h3); line-height: var(--lh-snug); letter-spacing: -0.01em; font-weight: 600; margin: 0; }
37
- h4, .t-h4 { font-family: var(--ff-body); font-size: var(--fs-h4); line-height: var(--lh-snug); font-weight: 600; margin: 0; }
38
-
39
- .t-hero { font-family: var(--ff-body); font-size: var(--fs-hero); line-height: var(--lh-tight); letter-spacing: var(--tr-tighter); font-weight: 600; margin: 0; }
40
- .t-mega { font-family: var(--ff-body); font-size: var(--fs-mega); line-height: 0.95; letter-spacing: var(--tr-tighter); font-weight: 600; margin: 0; }
41
-
42
- .t-display { font-family: var(--ff-body); font-weight: 600; letter-spacing: var(--tr-tight); }
43
- .t-mono { font-family: var(--ff-mono); }
44
- .t-body { font-family: var(--ff-body); }
45
-
46
- .t-label { font-family: var(--ff-mono); font-size: var(--fs-tiny); text-transform: uppercase; letter-spacing: var(--tr-label); font-weight: 500; }
47
- .t-micro { font-family: var(--ff-mono); font-size: var(--fs-micro); text-transform: uppercase; letter-spacing: var(--tr-label); color: var(--fg-3); }
48
- .t-meta { font-family: var(--ff-body); font-size: var(--fs-sm); color: var(--fg-3); }
49
-
50
- .lede, .t-lede {
51
- font-family: var(--ff-body); font-size: var(--fs-xl);
52
- line-height: 1.4; max-width: 38ch; font-weight: 400; color: var(--fg-2);
53
- margin: 0;
54
- }
55
-
56
- .eyebrow {
57
- font-family: var(--ff-body);
58
- font-size: var(--fs-tiny);
59
- font-weight: 600;
60
- letter-spacing: var(--tr-caps);
61
- text-transform: uppercase;
62
- color: var(--accent);
63
- display: inline-flex; align-items: center; gap: 10px;
64
- }
65
- .eyebrow::before {
66
- content: '';
67
- width: 18px; height: 2px; background: currentColor;
68
- }
69
-
70
- .ds-prose {
71
- font-family: var(--ff-body);
72
- font-size: var(--fs-lg);
73
- line-height: var(--lh-long);
74
- max-width: var(--measure);
75
- text-wrap: pretty;
76
- }
77
- .ds-prose p { margin: 0 0 var(--space-4); }
78
- .ds-prose h1 { font-size: clamp(34px, 5.4cqi, 64px); margin-bottom: var(--space-3); }
79
- .ds-prose h2 { margin: var(--space-6) 0 var(--space-3); }
80
- .ds-prose h3 { margin: var(--space-5) 0 var(--space-2); font-size: var(--fs-lg); font-weight: 600; }
81
-
82
- .dim { color: var(--fg-3); }
83
-
84
- /* Links */
85
- a { color: inherit; text-decoration: none; }
86
- a.ds-link-accent, .ds-prose a {
87
- color: var(--accent);
88
- text-decoration: underline;
89
- text-underline-offset: 4px;
90
- text-decoration-thickness: 2px;
91
- }
92
- a.ds-link-accent:hover, .ds-prose a:hover {
93
- background: var(--accent); color: var(--accent-fg); text-decoration-color: transparent;
94
- }
95
-
96
- kbd {
97
- font-family: var(--ff-mono); font-size: 0.85em;
98
- background: var(--bg-2); padding: 2px 6px; border-radius: var(--r-1);
99
- }
100
-
101
- code {
102
- font-family: var(--ff-mono); font-size: 0.92em;
103
- background: var(--bg-2); padding: 0.15em 0.5em; border-radius: var(--r-1);
104
- }
105
-
106
- pre {
107
- font-family: var(--ff-mono);
108
- background: var(--ink);
109
- color: var(--paper);
110
- padding: var(--space-5);
111
- overflow-x: auto;
112
- line-height: 1.55;
113
- font-size: var(--fs-sm);
114
- margin: 0;
115
- border-radius: var(--r-3);
116
- }
117
- pre .k { color: var(--mascot); }
118
- pre .s { color: var(--sun); }
119
- pre .c { color: #9A9AA2; }
120
- pre .n { color: var(--green-2); }
121
-
122
- /* ============================================================
123
- AppShell — page frame. The topbar floats above a soft background;
124
- the body sits inside a rounded inner shell for a friendlier feel.
125
- ============================================================ */
126
- .app {
127
- display: flex; flex-direction: column;
128
- min-height: 100vh;
129
- background: var(--bg);
130
- color: var(--fg);
131
- }
132
-
133
- .app-topbar {
134
- position: sticky; top: 0; z-index: var(--z-header);
135
- display: grid; grid-template-columns: auto 1fr auto;
136
- align-items: center; gap: var(--space-4);
137
- padding: 18px var(--pad-x);
138
- background: color-mix(in oklab, var(--bg) 88%, transparent);
139
- backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
140
- }
141
- .app-topbar nav { display: flex; gap: 4px; font-size: var(--fs-sm); }
142
- .app-topbar nav a {
143
- color: var(--fg-2);
144
- padding: 8px 14px;
145
- border-radius: var(--r-pill);
146
- transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
147
- }
148
- .app-topbar nav a:hover { background: var(--bg-2); color: var(--fg); }
149
- .app-topbar nav a.active {
150
- color: var(--accent-fg);
151
- background: var(--accent);
152
- font-weight: 600;
153
- }
154
-
155
- .brand {
156
- font-family: var(--ff-body);
157
- font-weight: 700; font-size: var(--fs-sm);
158
- letter-spacing: -0.01em;
159
- }
160
- .brand .slash { color: var(--fg-3); font-weight: 400; margin: 0 2px; }
161
-
162
- .app-search {
163
- display: inline-flex; align-items: center; gap: 10px;
164
- padding: 9px 16px; background: var(--bg-2);
165
- border-radius: var(--r-pill);
166
- font-size: var(--fs-sm); color: var(--fg-3);
167
- max-width: 360px;
168
- }
169
- .app-search .icon { opacity: 0.6; }
170
- .app-search input {
171
- border: 0; outline: 0; background: transparent;
172
- font-family: inherit; font-size: inherit; color: var(--fg);
173
- width: 100%;
174
- }
175
-
176
- .app-crumb {
177
- padding: 0 var(--pad-x) 14px;
178
- display: flex; align-items: center; gap: 8px;
179
- font-size: var(--fs-sm); color: var(--fg-3);
180
- }
181
- .app-crumb .sep { opacity: 0.5; }
182
- .app-crumb .leaf { color: var(--fg); font-weight: 600; }
183
- .app-crumb .crumb-right { margin-left: auto; color: var(--fg-3); }
184
-
185
- .app-side-shell { background: var(--bg); }
186
- .app-body { display: grid; grid-template-columns: 220px minmax(0, 1fr); flex: 1; min-height: 0; }
187
- .app-body.no-side { grid-template-columns: minmax(0, 1fr); }
188
-
189
- .app-side {
190
- display: flex; flex-direction: column; gap: var(--space-4);
191
- padding: var(--space-5) var(--space-3);
192
- font-size: var(--fs-sm);
193
- }
194
- .app-side .group {
195
- font-size: var(--fs-xs); font-weight: 600;
196
- color: var(--fg-3); padding: 0 var(--space-3);
197
- margin-bottom: 6px;
198
- }
199
- .app-side a {
200
- display: grid; grid-template-columns: 18px 1fr auto;
201
- gap: 10px; align-items: center;
202
- padding: 10px 14px;
203
- border-radius: var(--r-pill);
204
- color: var(--fg-2);
205
- margin-bottom: 2px;
206
- }
207
- .app-side a:hover { background: var(--bg-2); color: var(--fg); }
208
- .app-side a.active {
209
- color: var(--accent-fg);
210
- background: var(--accent);
211
- font-weight: 600;
212
- }
213
- .app-side .count {
214
- background: var(--mascot); color: var(--ink);
215
- padding: 1px 9px; font-size: var(--fs-micro); font-weight: 700;
216
- border-radius: var(--r-pill);
217
- }
218
-
219
- .app-main {
220
- padding: var(--space-7) var(--pad-x);
221
- min-width: 0;
222
- }
223
- .app-main.narrow { max-width: 760px; margin: 0 auto; }
224
-
225
- .app-status {
226
- display: flex; align-items: center; gap: var(--space-3);
227
- padding: 14px var(--pad-x);
228
- font-family: var(--ff-mono); font-size: var(--fs-xs);
229
- color: var(--fg-3);
230
- }
231
- .app-status .item { color: inherit; }
232
- .app-status .item:first-of-type { color: var(--accent); }
233
- .app-status .spread { flex: 1; }
234
-
235
- /* ============================================================
236
- Primitives
237
- ============================================================ */
238
- .btn, .btn-primary, .btn-ghost {
239
- display: inline-flex; align-items: center; gap: 8px;
240
- padding: 13px 22px;
241
- font-family: var(--ff-body);
242
- font-weight: 600; font-size: var(--fs-sm);
243
- text-decoration: none;
244
- cursor: pointer;
245
- border-radius: var(--r-pill);
246
- border: 0;
247
- transition: transform var(--dur-snap) var(--ease), background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
248
- }
249
- .btn { background: var(--bg-2); color: var(--fg); }
250
- .btn:hover { background: var(--bg-3); color: var(--fg); }
251
- .btn-primary { background: var(--accent); color: var(--accent-fg); }
252
- .btn-primary:hover { background: var(--fg); color: var(--bg); }
253
- .btn-ghost { background: transparent; color: var(--fg); box-shadow: inset 0 0 0 1.5px var(--rule-strong); }
254
- .btn-ghost:hover { background: var(--bg-2); }
255
- .btn:active, .btn-primary:active, .btn-ghost:active { transform: translateY(1px); }
256
-
257
- .chip {
258
- display: inline-flex; align-items: center; gap: 6px;
259
- padding: 3px 10px;
260
- background: var(--bg-2); color: var(--fg-2);
261
- font-family: var(--ff-body);
262
- font-size: var(--fs-tiny); font-weight: 600;
263
- letter-spacing: var(--tr-caps); text-transform: uppercase;
264
- border-radius: var(--r-pill);
265
- }
266
- .chip.tone-green { background: var(--green-tint); color: var(--green-deep); }
267
- .chip.tone-purple { background: var(--purple-tint); color: var(--purple-deep); }
268
- .chip.tone-mascot { background: var(--mascot-tint); color: var(--ink); }
269
- .chip.tone-sun { background: var(--sun); color: var(--ink); }
270
- .chip.tone-flame { background: var(--flame); color: var(--paper); }
271
- .chip.tone-live { background: var(--green-tint); color: var(--green-deep); }
272
- .chip.tone-wip { background: var(--bg-3); color: var(--fg-2); }
273
-
274
- .glyph {
275
- display: inline-flex; align-items: center; justify-content: center;
276
- width: 18px; height: 18px;
277
- font-family: var(--ff-mono); font-size: 13px;
278
- opacity: 0.8;
279
- }
280
-
281
- /* ============================================================
282
- Panel — soft tonal container, no border decoration
283
- ============================================================ */
284
- .panel {
285
- background: var(--bg);
286
- border-radius: var(--r-3);
287
- margin: 0 0 var(--space-5);
288
- position: relative;
289
- }
290
- .panel.panel-inline { background: var(--bg-2); padding: var(--space-3) var(--space-3); }
291
- .panel.panel-wide { background: transparent; }
292
- .panel-head {
293
- display: flex; align-items: baseline; justify-content: space-between;
294
- padding: var(--space-4) var(--space-5) var(--space-3);
295
- font-size: var(--fs-xs); font-weight: 600;
296
- color: var(--fg-3);
297
- letter-spacing: var(--tr-caps); text-transform: uppercase;
298
- }
299
- .panel-head > :last-child {
300
- font-weight: 500; color: var(--fg-3);
301
- font-family: var(--ff-mono); letter-spacing: 0;
302
- }
303
- .panel-body { padding: var(--space-2) var(--space-3) var(--space-3); }
304
- .panel.panel-wide .panel-body { padding: 0; }
305
-
306
- /* ============================================================
307
- Row — primary list pattern. Indicator rail on the left,
308
- no hairlines between rows.
309
- ============================================================ */
310
- .row {
311
- display: grid;
312
- grid-template-columns: minmax(80px, 12ch) minmax(0, 1fr) auto;
313
- gap: var(--space-3);
314
- align-items: baseline;
315
- padding: 18px 22px;
316
- background: var(--bg);
317
- border-radius: var(--r-2);
318
- color: var(--fg);
319
- position: relative;
320
- transition: background var(--dur-snap) var(--ease), padding var(--dur-base) var(--ease);
321
- }
322
- .row + .row { margin-top: 4px; }
323
- .row::before {
324
- content: '';
325
- position: absolute; left: 6px; top: 22%; bottom: 22%; width: 3px;
326
- background: transparent; border-radius: 3px;
327
- transition: background var(--dur-snap) var(--ease);
328
- }
329
- .row:hover { background: var(--bg-2); }
330
- .row:hover::before { background: var(--rule-strong); }
331
- .row.active { background: color-mix(in oklab, var(--accent) 10%, var(--bg-2)); }
332
- .row.active::before { background: var(--accent); }
333
- .row-grid { /* explicit grid-template-columns set inline */ }
334
-
335
- .row .code { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
336
- .row .title { font-family: var(--ff-body); font-weight: 600; font-size: var(--fs-lg); display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
337
- .row .sub { font-family: var(--ff-body); font-weight: 400; font-size: var(--fs-sm); color: var(--fg-3); }
338
- .row .meta { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); text-align: right; }
339
-
340
- a.row { text-decoration: none; }
341
-
342
- /* ============================================================
343
- Hero
344
- ============================================================ */
345
- .ds-hero {
346
- padding: var(--space-9) 0 var(--space-8);
347
- display: grid; gap: var(--space-5);
348
- max-width: 940px;
349
- }
350
- .ds-hero-title {
351
- font-family: var(--ff-body); font-weight: 600;
352
- font-size: clamp(34px, 6.4cqi, 80px);
353
- line-height: 1.05; letter-spacing: var(--tr-tight);
354
- margin: 0; max-width: 18ch;
355
- }
356
- .ds-hero-body {
357
- font-family: var(--ff-body); font-size: var(--fs-xl);
358
- line-height: 1.45; margin: 0; max-width: 52ch;
359
- color: var(--fg-2);
360
- }
361
- .ds-hero-accent { color: var(--accent); font-weight: 500; }
362
-
363
- /* ============================================================
364
- Section grouping
365
- ============================================================ */
366
- .ds-section { margin: var(--space-8) 0; }
367
- .ds-section > h3 {
368
- font-family: var(--ff-body); font-weight: 600; font-size: var(--fs-h3);
369
- margin: 0 0 var(--space-5);
370
- letter-spacing: -0.01em;
371
- }
372
-
373
- /* ============================================================
374
- Install — single CLI command card
375
- ============================================================ */
376
- .cli {
377
- display: flex; align-items: center; gap: 14px;
378
- padding: 20px 24px;
379
- background: var(--ink); color: var(--paper);
380
- border-radius: var(--r-3);
381
- font-family: var(--ff-mono); font-size: var(--fs-lg);
382
- }
383
- .cli .prompt { color: var(--green-2); }
384
- .cli .cmd { flex: 1; color: var(--paper); }
385
- .cli .copy {
386
- padding: 8px 16px; background: transparent; color: var(--paper);
387
- font-size: var(--fs-tiny); text-transform: uppercase; letter-spacing: var(--tr-caps);
388
- cursor: pointer; box-shadow: inset 0 0 0 1px #6A6A70;
389
- border-radius: var(--r-pill);
390
- }
391
- .cli .copy:hover { background: #6A6A70; }
392
-
393
- /* ============================================================
394
- Receipt — key/value table
395
- ============================================================ */
396
- table.kv { width: 100%; border-collapse: collapse; }
397
- table.kv td {
398
- padding: 8px 0;
399
- font-family: var(--ff-body); font-size: var(--fs-sm);
400
- }
401
- table.kv tr + tr td { border-top: 1px solid var(--rule); }
402
- table.kv td:first-child {
403
- color: var(--fg-3);
404
- font-size: var(--fs-xs);
405
- text-transform: uppercase; letter-spacing: var(--tr-caps);
406
- width: 14ch;
407
- }
408
- table.kv td:last-child {
409
- font-weight: 600;
410
- }
411
-
412
- /* ============================================================
413
- Generic table
414
- ============================================================ */
415
- table {
416
- width: 100%; border-collapse: collapse;
417
- font-family: var(--ff-body); font-size: var(--fs-sm);
418
- border-radius: var(--r-3); overflow: hidden;
419
- }
420
- table th {
421
- text-align: left;
422
- padding: 12px 16px;
423
- font-size: var(--fs-xs); font-weight: 600;
424
- color: var(--fg-3); text-transform: uppercase; letter-spacing: var(--tr-caps);
425
- background: var(--bg-2);
426
- }
427
- table td { padding: 14px 16px; border-top: 1px solid var(--rule); }
428
- table tr.clickable { cursor: pointer; }
429
- table tr.clickable:hover td { background: var(--bg-2); }
430
-
431
- /* ============================================================
432
- Changelog
433
- ============================================================ */
434
- .ds-changelog-row {
435
- grid-template-columns: minmax(110px, 14ch) minmax(60px, 9ch) minmax(0, 1fr) !important;
436
- }
437
- .ds-changelog-ver {
438
- font-family: var(--ff-body); font-weight: 600; font-size: var(--fs-sm);
439
- }
440
-
441
- /* ============================================================
442
- Works
443
- ============================================================ */
444
- .work-detail {
445
- padding: var(--space-4) var(--space-5) var(--space-5);
446
- margin: 4px 0 var(--space-2);
447
- background: var(--bg-2);
448
- border-radius: var(--r-3);
449
- display: flex; flex-direction: column; gap: var(--space-3);
450
- }
451
- .ds-work-body { margin: 0; max-width: 60ch; }
452
- .ds-work-actions { display: flex; gap: 10px; flex-wrap: wrap; }
453
-
454
- /* ============================================================
455
- Manifesto / pull moment
456
- ============================================================ */
457
- .ds-manifesto { max-width: 60ch; }
458
- .ds-manifesto-para {
459
- font-family: var(--ff-body); font-size: var(--fs-lg);
460
- line-height: var(--lh-long); margin: 0 0 var(--space-3);
461
- }
462
- .ds-manifesto-para.dim { color: var(--fg-3); }
463
-
464
- /* ============================================================
465
- Currently shipping dots
466
- ============================================================ */
467
- .ds-dot-live { color: var(--green-2); }
468
- .ds-dot-idle { color: var(--fg-3); }
469
-
470
- /* ============================================================
471
- KPI
472
- ============================================================ */
473
- .kpi {
474
- display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
475
- gap: var(--space-2);
476
- }
477
- .kpi-card {
478
- padding: var(--space-5);
479
- background: var(--bg-2);
480
- border-radius: var(--r-3);
481
- }
482
- .kpi-card .num {
483
- font-family: var(--ff-body); font-weight: 600;
484
- font-size: clamp(30px, 3.6cqi, 48px); line-height: 1;
485
- letter-spacing: var(--tr-tight);
486
- }
487
- .kpi-card .lbl {
488
- font-size: var(--fs-xs); color: var(--fg-3);
489
- font-weight: 600; margin-top: 8px;
490
- letter-spacing: var(--tr-caps); text-transform: uppercase;
491
- }
492
-
493
- /* ============================================================
494
- Empty state
495
- ============================================================ */
496
- .empty {
497
- padding: var(--space-8);
498
- text-align: center;
499
- color: var(--fg-3);
500
- background: var(--bg-2);
501
- border-radius: var(--r-3);
502
- font-size: var(--fs-sm);
503
- }
504
-
505
- /* ============================================================
506
- Form
507
- ============================================================ */
508
- .row-form {
509
- display: grid; gap: 12px;
510
- padding: var(--space-5);
511
- background: var(--bg-2);
512
- border-radius: var(--r-3);
513
- }
514
- .row-form input,
515
- .row-form textarea {
516
- font-family: inherit; font-size: var(--fs-sm);
517
- padding: 12px 16px;
518
- background: var(--bg); color: var(--fg);
519
- border: 0; border-radius: var(--r-2); outline: 0;
520
- box-shadow: inset 0 0 0 1px var(--rule);
521
- }
522
- .row-form input:focus,
523
- .row-form textarea:focus { box-shadow: inset 0 0 0 2px var(--accent); }
524
-
525
- /* ============================================================
526
- Responsive
527
- ============================================================ */
528
- @container (max-width: 760px) {
529
- .app-body { grid-template-columns: 1fr !important; }
530
- .app-side-shell { border-right: 0; border-bottom: 1px solid var(--rule); }
531
- .app-topbar { grid-template-columns: 1fr auto; }
532
- .app-topbar nav { font-size: var(--fs-xs); gap: 14px; }
533
- .row { grid-template-columns: minmax(0, 1fr) auto !important; row-gap: 4px !important; }
534
- .row .sub { grid-column: 1 / -1; order: 3; }
535
- }
536
-
537
- /* ============================================================
538
- Chat — minimal styles (placeholder for full chat surface)
539
- ============================================================ */
540
- .ds-chat { display: flex; flex-direction: column; gap: 12px; padding: var(--space-4); }
541
- .ds-chat-msg { padding: 12px 18px; background: var(--bg-2); border-radius: var(--r-3); max-width: 36em; }
542
- .ds-chat-msg.user { background: var(--accent); color: var(--accent-fg); align-self: flex-end; }
543
- .ds-chat-md { font-size: var(--fs-sm); line-height: 1.6; }
544
- .ds-chat-composer { display: flex; gap: 8px; padding: var(--space-4); }
545
- .ds-chat-composer input { flex: 1; padding: 13px 18px; background: var(--bg-2); border: 0; border-radius: var(--r-pill); font-family: inherit; font-size: var(--fs-sm); color: var(--fg); outline: 0; }
546
- .ds-chat-composer input:focus { box-shadow: inset 0 0 0 2px var(--accent); }
547
-
548
- /* ============================================================
549
- File surface — minimal placeholder
550
- ============================================================ */
551
- .ds-file-row {
552
- display: grid; grid-template-columns: 28px minmax(0, 1fr) auto auto;
553
- gap: 14px; align-items: center;
554
- padding: 12px 18px; background: var(--bg);
555
- border-radius: var(--r-2); color: var(--fg);
556
- }
557
- .ds-file-row + .ds-file-row { margin-top: 3px; }
558
- .ds-file-row:hover { background: var(--bg-2); }
559
- .ds-file-row[data-file-type="dir"] { border-left: 3px solid var(--accent); padding-left: 11px; }
560
- .ds-file-row[data-file-type="image"] { border-left: 3px solid var(--mascot); padding-left: 11px; }
561
- .ds-file-row[data-file-type="video"] { border-left: 3px solid var(--purple-2); padding-left: 11px; }
562
- .ds-file-row[data-file-type="audio"] { border-left: 3px solid var(--sky); padding-left: 11px; }
563
- .ds-file-row[data-file-type="code"] { border-left: 3px solid var(--green-2); padding-left: 11px; }
564
- .ds-file-row[data-file-type="text"] { border-left: 3px solid var(--ink-3); padding-left: 11px; }
565
- .ds-file-row[data-file-type="archive"] { border-left: 3px solid var(--flame); padding-left: 11px; }
566
- .ds-file-row[data-file-type="document"] { border-left: 3px solid var(--sun); padding-left: 11px; }
567
- .ds-file-row[data-file-type="other"] { border-left: 3px solid var(--fg-3); padding-left: 11px; }
568
- .ds-file-row .name { font-weight: 500; }
569
- .ds-file-row .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
570
- .ds-file-row .time { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
571
-
572
- /* ============================================================
573
- Theme toggle (segmented + compact) — bound to src/theme.js
574
- ============================================================ */
575
- .ds-segmented {
576
- display: inline-flex; gap: 0; padding: 2px;
577
- background: var(--bg-2); border-radius: var(--r-pill);
578
- font-family: var(--ff-mono); font-size: var(--fs-xs);
579
- }
580
- .ds-segmented .ds-seg-btn {
581
- background: transparent; border: 0; color: var(--fg-3);
582
- padding: 4px 12px; border-radius: var(--r-pill); cursor: pointer;
583
- display: inline-flex; align-items: center; gap: 6px;
584
- transition: color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
585
- }
586
- .ds-segmented .ds-seg-btn:hover { color: var(--fg); }
587
- .ds-segmented .ds-seg-btn.is-on {
588
- background: var(--bg); color: var(--fg);
589
- box-shadow: 0 1px 2px rgba(0,0,0,0.08);
590
- }
591
- .ds-theme-toggle.btn {
592
- font-family: var(--ff-mono); font-size: var(--fs-xs);
593
- display: inline-flex; align-items: center; gap: 6px;
594
- }
1
+ /* app-shell.css -- re-exports the split source sheets in src/css/app-shell/
2
+ in their original order. This file is a published package export consumed
3
+ directly via <link rel="stylesheet" href="app-shell.css"> by preview and
4
+ ui_kits index pages (never through the build step, which reads the split
5
+ files directly for byte-identical dist output -- see scripts/build.mjs).
6
+ Splitting only: no rule was added, removed, or reordered versus the
7
+ original monolithic app-shell.css. */
8
+ @import url('./src/css/app-shell/base.css');
9
+ @import url('./src/css/app-shell/topbar.css');
10
+ @import url('./src/css/app-shell/primitives.css');
11
+ @import url('./src/css/app-shell/panel-row.css');
12
+ @import url('./src/css/app-shell/hero-content.css');
13
+ @import url('./src/css/app-shell/responsive.css');
14
+ @import url('./src/css/app-shell/chat-basic.css');
15
+ @import url('./src/css/app-shell/files.css');
16
+ @import url('./src/css/app-shell/catalog-theme.css');
17
+ @import url('./src/css/app-shell/chat-polish.css');
18
+ @import url('./src/css/app-shell/sidebar-misc.css');
19
+ @import url('./src/css/app-shell/states-interactions.css');
20
+ @import url('./src/css/app-shell/loading-alerts.css');
21
+ @import url('./src/css/app-shell/responsive2-workspace.css');
22
+ @import url('./src/css/app-shell/row-print.css');
23
+ @import url('./src/css/app-shell/data-density.css');
24
+ @import url('./src/css/app-shell/kits-appended.css');
25
+ /* The four below were bundled into dist by the appShellSplitFiles list in
26
+ scripts/build.mjs but were never imported here, so the two delivery paths
27
+ disagreed: the dist bundle carried their rules while every consumer that
28
+ links this barrel directly -- the preview pages and the per-kit index pages
29
+ -- rendered those components unstyled. 113 class names across 471 lines,
30
+ used by the skills-config, plugins-config, models-config and git-status
31
+ components under src/components/. Importing them here makes the barrel the
32
+ complete set again, which is the invariant the header comment above already
33
+ claims. scripts/lint-tokens.mjs now enforces that every sheet in
34
+ src/css/app-shell/ is reachable from this file, so the set cannot silently
35
+ diverge again. Order matches appShellSplitFiles exactly; the two must stay
36
+ identical or a page cascades differently depending on which path loaded it. */
37
+ @import url('./src/css/app-shell/git-status.css');
38
+ @import url('./src/css/app-shell/plugins-config.css');
39
+ @import url('./src/css/app-shell/models-config.css');
40
+ @import url('./src/css/app-shell/skills-config.css');