anentrypoint-design 0.0.59 → 0.0.61

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.59",
3
+ "version": "0.0.61",
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",
@@ -19,6 +19,7 @@
19
19
  "./desktop/theme.css": "./src/desktop/theme.css",
20
20
  "./desktop/wm.css": "./src/desktop/wm.css",
21
21
  "./desktop/launcher.css": "./src/desktop/launcher.css",
22
+ "./desktop/validate.css": "./src/desktop/validate.css",
22
23
  "./desktop/icons.js": "./src/desktop/icons.js",
23
24
  "./desktop/shell.js": "./src/desktop/shell.js",
24
25
  "./page-html": {
@@ -13,4 +13,5 @@ export const icons = {
13
13
  close: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12M18 6l-12 12"/></svg>',
14
14
  chat: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16v11H8l-4 4z"/><path d="M8 9h8M8 12h6"/></svg>',
15
15
  tools: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 7l3-3 3 3-3 3-3-3zM7 14l3 3-7 7-3-3 7-7zM5 7l3-3M14 14l6 6"/></svg>',
16
+ freddie: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2M8 12a4 4 0 008 0"/></svg>',
16
17
  };
@@ -1,13 +1,14 @@
1
1
  /* ============================================================
2
2
  Launcher dock — paired with createLauncher() (validation harness path)
3
+ Bible: tonal step from canvas, no borders, pill controls, lowercase.
3
4
  ============================================================ */
4
5
 
5
6
  .launcher-dock {
6
7
  position: fixed;
7
8
  left: 0; top: 0; bottom: 0;
8
9
  width: 56px;
9
- background: var(--os-bg-1);
10
- border-right: 1px solid var(--os-bg-3);
10
+ background: var(--os-bg-2);
11
+ border: none;
11
12
  display: flex;
12
13
  flex-direction: column;
13
14
  align-items: center;
@@ -30,10 +31,14 @@
30
31
  justify-content: center;
31
32
  padding: 0;
32
33
  font: inherit;
33
- transition: background 80ms ease, color 80ms ease;
34
+ transition: background 80ms ease, color 80ms ease, box-shadow 80ms ease;
35
+ }
36
+ .launcher-btn:hover { background: var(--panel-hover, var(--os-bg-1)); color: var(--os-fg); }
37
+ .launcher-btn.active {
38
+ background: var(--panel-select, var(--os-accent-soft));
39
+ color: var(--os-fg);
40
+ box-shadow: inset 4px 0 0 var(--os-accent);
34
41
  }
35
- .launcher-btn:hover { background: var(--os-accent); color: var(--panel-accent-fg, #000); }
36
- .launcher-btn.active { background: var(--os-accent); color: var(--panel-accent-fg, #000); }
37
42
  .launcher-add { font-size: 20px; }
38
43
 
39
44
  .launcher-dock + .wm-root { left: 56px !important; }
@@ -18,9 +18,9 @@
18
18
  --os-bar-h-mobile: 52px;
19
19
  --os-rail-w: 64px;
20
20
  --os-tap: 44px;
21
- --os-font: var(--ff-ui, 'Nunito', 'Inter', system-ui, sans-serif);
22
- --os-display: var(--ff-display, 'Archivo Black', 'Archivo', 'Nunito', system-ui, sans-serif);
23
- --os-mono: var(--ff-mono, 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace);
21
+ --os-font: var(--ff-ui, 'Nunito', sans-serif);
22
+ --os-display: var(--ff-display, 'Archivo Black', 'Archivo', sans-serif);
23
+ --os-mono: var(--ff-mono, 'JetBrains Mono', ui-monospace, monospace);
24
24
  }
25
25
 
26
26
  html, body {
@@ -32,7 +32,7 @@ html, body {
32
32
  }
33
33
 
34
34
  .os-menubar, .os-taskbar {
35
- background: var(--os-bg-1);
35
+ background: var(--os-bg-2);
36
36
  border: none;
37
37
  color: var(--os-fg);
38
38
  font: 13px var(--os-font);
@@ -40,9 +40,14 @@ html, body {
40
40
  padding: 0 12px;
41
41
  gap: 6px;
42
42
  box-shadow: none;
43
+ display: flex;
44
+ align-items: center;
45
+ flex-wrap: nowrap;
46
+ min-width: 0;
43
47
  }
44
- .os-menubar { border-bottom: 1px solid var(--os-bg-3); }
45
- .os-taskbar { border-top: 1px solid var(--os-bg-3); }
48
+ .os-menubar > *, .os-taskbar > * { flex-shrink: 0; }
49
+ .os-menubar .os-spacer { flex: 1 1 auto; min-width: 0; }
50
+ .os-menubar .os-tray { margin-left: auto; }
46
51
 
47
52
  .os-brand {
48
53
  color: var(--os-fg);
@@ -54,6 +59,7 @@ html, body {
54
59
  display: inline-flex;
55
60
  align-items: center;
56
61
  gap: 8px;
62
+ text-transform: lowercase;
57
63
  }
58
64
  .os-brand::before {
59
65
  content: '';
@@ -70,6 +76,7 @@ html, body {
70
76
  padding: 7px 14px;
71
77
  cursor: pointer;
72
78
  font: inherit;
79
+ font-family: var(--os-font);
73
80
  font-size: 13px;
74
81
  border-radius: 999px;
75
82
  transition: background 80ms ease, color 80ms ease;
@@ -77,9 +84,10 @@ html, body {
77
84
  align-items: center;
78
85
  gap: 6px;
79
86
  outline: none;
87
+ text-transform: lowercase;
80
88
  }
81
89
  .os-btn:hover { background: var(--panel-hover, var(--os-bg-2)); color: var(--os-fg); }
82
- .os-btn.active, .os-btn[aria-pressed="true"] { background: var(--os-accent); color: var(--panel-accent-fg, #fff); }
90
+ .os-btn.active, .os-btn[aria-pressed="true"] { background: var(--panel-select, var(--os-accent-soft)); color: var(--os-fg); }
83
91
  .os-btn:focus-visible { background: var(--panel-hover, var(--os-bg-2)); }
84
92
  .os-btn .ic { color: var(--os-accent); display: inline-flex; width: 16px; height: 16px; }
85
93
  .os-btn .ic svg { width: 16px; height: 16px; display: block; fill: none; stroke: currentColor; }
@@ -87,9 +95,9 @@ html, body {
87
95
  .os-menu {
88
96
  position: absolute;
89
97
  background: var(--os-bg-1);
90
- border: 1px solid var(--os-bg-3);
91
- border-radius: var(--os-radius);
92
- padding: 6px;
98
+ border: none;
99
+ border-radius: var(--r-3, 18px);
100
+ padding: 8px;
93
101
  min-width: 220px;
94
102
  top: calc(var(--os-bar-h) + 4px);
95
103
  left: 8px;
@@ -108,53 +116,56 @@ html, body {
108
116
  color: var(--os-fg);
109
117
  justify-content: flex-start;
110
118
  }
111
- .os-menu .os-btn:hover { background: var(--os-bg-2); color: var(--os-accent-2); }
119
+ .os-menu .os-btn:hover { background: var(--panel-hover, var(--os-bg-2)); color: var(--os-fg); }
112
120
 
113
121
  .os-clock {
114
122
  color: var(--os-fg-2);
115
123
  font-variant-numeric: tabular-nums;
124
+ font-family: var(--os-mono);
116
125
  padding: 0 10px;
117
126
  font-size: 12px;
118
127
  }
119
128
 
120
129
  .os-task {
121
130
  border: none;
122
- background: var(--os-bg-2);
131
+ background: var(--os-bg-1);
123
132
  color: var(--os-fg-2);
124
133
  border-radius: 999px;
125
134
  padding: 6px 14px;
126
135
  font-size: 12px;
127
136
  font-family: var(--os-font);
128
- transition: background 80ms ease, color 80ms ease;
137
+ transition: background 80ms ease, color 80ms ease, box-shadow 80ms ease;
129
138
  max-width: 200px;
130
139
  cursor: pointer;
131
140
  outline: none;
132
141
  white-space: nowrap;
133
142
  overflow: hidden;
134
143
  text-overflow: ellipsis;
144
+ text-transform: lowercase;
135
145
  }
136
- .os-task:hover { background: var(--panel-hover, var(--os-bg-3)); color: var(--os-fg); }
146
+ .os-task:hover { background: var(--panel-hover, var(--os-bg-2)); color: var(--os-fg); }
137
147
  .os-task.focused {
138
- background: var(--os-accent);
139
- color: var(--panel-accent-fg, #fff);
140
- font-weight: 500;
148
+ background: var(--panel-select, var(--os-accent-soft));
149
+ color: var(--os-fg);
150
+ font-weight: 600;
151
+ box-shadow: inset 4px 0 0 var(--os-accent);
141
152
  }
142
153
 
143
154
  .wm-win {
144
155
  background: var(--os-bg-1) !important;
145
- border: 1px solid var(--os-bg-3) !important;
146
- border-radius: var(--os-radius) !important;
156
+ border: none !important;
157
+ border-radius: var(--r-3, 18px) !important;
147
158
  box-shadow: none !important;
148
159
  overflow: hidden;
149
160
  }
150
161
  .wm-win.wm-focused {
151
- border-color: var(--os-accent) !important;
152
- box-shadow: none !important;
162
+ border: none !important;
163
+ box-shadow: inset 4px 0 0 var(--os-accent) !important;
153
164
  }
154
165
 
155
166
  .wm-bar {
156
167
  background: var(--os-bg-2) !important;
157
- border-bottom: 1px solid var(--os-bg-3) !important;
168
+ border: none !important;
158
169
  padding: 8px 12px !important;
159
170
  gap: 10px !important;
160
171
  }
@@ -163,38 +174,49 @@ html, body {
163
174
  color: var(--os-fg-2) !important;
164
175
  letter-spacing: 0.005em;
165
176
  text-align: center;
166
- font-weight: 500;
177
+ font-weight: 600;
178
+ text-transform: lowercase;
167
179
  }
168
180
  .wm-btns { gap: 6px !important; order: -1; }
169
181
  .wm-btn {
170
- width: 12px !important;
171
- height: 12px !important;
172
- border-radius: 50% !important;
182
+ width: 22px !important;
183
+ height: 22px !important;
184
+ border-radius: var(--r-1, 6px) !important;
173
185
  border: none !important;
186
+ background: var(--os-bg-3) !important;
187
+ color: var(--os-fg-2) !important;
174
188
  padding: 0 !important;
175
189
  cursor: pointer;
176
- font-size: 0 !important;
177
- transition: opacity 100ms ease;
190
+ font: 600 12px var(--os-mono) !important;
191
+ line-height: 1 !important;
192
+ display: inline-flex !important;
193
+ align-items: center;
194
+ justify-content: center;
195
+ transition: background 100ms ease, color 100ms ease;
178
196
  }
179
- .wm-btn:hover { opacity: 0.75; }
180
- .wm-btns .wm-btn:nth-child(1) { background: var(--os-amber) !important; }
181
- .wm-btns .wm-btn:nth-child(2) { background: var(--os-green) !important; }
182
- .wm-btns .wm-btn:nth-child(3) { background: var(--os-red) !important; }
197
+ .wm-btn:hover { background: var(--panel-hover, var(--os-bg-2)) !important; color: var(--os-fg) !important; }
183
198
 
184
199
  .wm-resize {
185
- background: var(--os-bg-3) !important;
200
+ background: transparent !important;
186
201
  width: 14px !important;
187
202
  height: 14px !important;
188
- clip-path: polygon(100% 0, 100% 100%, 0 100%);
203
+ color: var(--os-fg-3);
204
+ opacity: 0.4;
205
+ font: 10px var(--os-mono);
206
+ display: flex;
207
+ align-items: flex-end;
208
+ justify-content: flex-end;
209
+ line-height: 1;
189
210
  }
211
+ .wm-resize::after { content: '\25E2'; }
190
212
  .wm-body { background: var(--os-bg-1) !important; }
191
213
 
192
214
  .os-side-rail {
193
215
  position: fixed;
194
216
  left: 0; top: 0; bottom: 0;
195
217
  width: var(--os-rail-w);
196
- background: var(--os-bg-1);
197
- border-right: 1px solid var(--os-bg-3);
218
+ background: var(--os-bg-2);
219
+ border: none;
198
220
  display: none;
199
221
  flex-direction: column;
200
222
  align-items: center;
@@ -215,8 +237,8 @@ html, body {
215
237
  padding: 0;
216
238
  outline: none;
217
239
  }
218
- .os-rail-btn:hover { background: var(--os-bg-2); }
219
- .os-rail-btn:active { background: var(--os-bg-3); }
240
+ .os-rail-btn:hover { background: var(--panel-hover, var(--os-bg-1)); }
241
+ .os-rail-btn:active { background: var(--panel-select, var(--os-accent-soft)); }
220
242
  .os-rail-btn .ic { color: var(--os-accent); display: inline-flex; }
221
243
  .os-rail-btn .ic svg { width: 22px; height: 22px; fill: none; stroke: currentColor; }
222
244
 
@@ -238,11 +260,12 @@ html, body {
238
260
  .os-drawer-head {
239
261
  display: flex; align-items: center; justify-content: space-between;
240
262
  padding: 12px 16px;
241
- border-bottom: 1px solid var(--os-bg-3);
263
+ border: none;
242
264
  height: 56px;
243
265
  box-sizing: border-box;
266
+ background: var(--os-bg-2);
244
267
  }
245
- .os-drawer-title { color: var(--os-fg); font-family: var(--os-display); font-size: 22px; font-weight: 700; letter-spacing: -0.01em; }
268
+ .os-drawer-title { color: var(--os-fg); font-family: var(--os-display); font-size: 22px; font-weight: 700; letter-spacing: -0.01em; text-transform: lowercase; }
246
269
  .os-drawer-close {
247
270
  width: 44px; height: 44px;
248
271
  border: none; background: transparent;
@@ -252,7 +275,7 @@ html, body {
252
275
  border-radius: var(--os-radius-sm);
253
276
  outline: none;
254
277
  }
255
- .os-drawer-close:hover { background: var(--os-bg-2); color: var(--os-fg); }
278
+ .os-drawer-close:hover { background: var(--panel-hover, var(--os-bg-2)); color: var(--os-fg); }
256
279
  .os-drawer-close .ic svg { width: 22px; height: 22px; fill: none; stroke: currentColor; }
257
280
  .os-drawer-grid {
258
281
  display: grid;
@@ -275,12 +298,13 @@ html, body {
275
298
  transition: background 80ms ease;
276
299
  outline: none;
277
300
  border-radius: var(--r-3, 18px);
301
+ text-transform: lowercase;
278
302
  }
279
303
  .os-drawer-tile:hover { background: var(--panel-hover, var(--os-bg-2)); }
280
- .os-drawer-tile:active { background: var(--panel-select, var(--os-bg-3)); }
304
+ .os-drawer-tile:active, .os-drawer-tile.active { background: var(--panel-select, var(--os-accent-soft)); }
281
305
  .os-drawer-tile .ic { color: var(--os-accent); display: inline-flex; }
282
306
  .os-drawer-tile .ic svg { width: 32px; height: 32px; fill: none; stroke: currentColor; }
283
- .os-drawer-tile .lbl { color: var(--os-fg); font-weight: 500; }
307
+ .os-drawer-tile .lbl { color: var(--os-fg); font-weight: 600; }
284
308
 
285
309
  .os-spacer { flex: 1 1 auto; }
286
310
  .os-tray { display: flex; align-items: center; gap: 6px; }
@@ -305,6 +329,7 @@ html, body {
305
329
  .app-pane.mono .row:hover { background: var(--panel-hover, var(--os-bg-2)); }
306
330
  .app-pane.mono .head { color: var(--os-accent); margin-bottom: 8px; padding-bottom: 6px; font-weight: 600; letter-spacing: 0.02em; }
307
331
  .app-pane.mono pre { background: var(--os-bg-2); padding: 10px 12px; margin: 8px 0 0 0; max-height: 220px; overflow: auto; white-space: pre-wrap; font: 11.5px var(--os-mono); border-radius: var(--r-1, 6px); color: var(--os-fg); border: none; }
332
+ .app-shell-pane { margin: 0; padding: 8px; font: 12px var(--os-mono); color: var(--os-fg); background: var(--os-bg-0); height: 100%; overflow: auto; white-space: pre-wrap; box-sizing: border-box; }
308
333
  .app-canvas { width: 100%; height: 100%; background: var(--os-bg-0); display: block; cursor: default; }
309
334
  .app-canvas.x-display { background: #0b0d10; }
310
335
  .app-frame { width: 100%; height: 100%; border: 0; background: var(--os-bg-0); }
@@ -350,10 +375,9 @@ html, body {
350
375
  max-width: none;
351
376
  padding: 10px 14px;
352
377
  scroll-snap-align: start;
353
- border-left: 3px solid transparent;
354
378
  font-size: 13px;
355
379
  }
356
- .os-task.focused { border-left-color: var(--os-accent); background: var(--os-bg-2); }
380
+ .os-task.focused { background: var(--panel-select, var(--os-accent-soft)); box-shadow: inset 4px 0 0 var(--os-accent); }
357
381
  .os-side-rail { display: none !important; }
358
382
  .os-menu { left: 8px; right: 8px; min-width: 0; top: calc(var(--os-bar-h) + env(safe-area-inset-top, 0) + 4px); }
359
383
  .wm-root {
@@ -380,6 +404,6 @@ html, body {
380
404
  .wm-bar .wm-title { pointer-events: auto; font-size: 13px !important; }
381
405
  .wm-bar .wm-btns { pointer-events: auto; }
382
406
  .wm-btns .wm-btn:nth-child(1), .wm-btns .wm-btn:nth-child(2) { display: none !important; }
383
- .wm-btns .wm-btn:nth-child(3) { width: 44px !important; height: 44px !important; border-radius: 50% !important; }
407
+ .wm-btns .wm-btn:nth-child(3) { width: 44px !important; height: 44px !important; border-radius: var(--r-1, 6px) !important; background: var(--os-bg-3) !important; color: var(--os-fg) !important; }
384
408
  .wm-resize { display: none !important; }
385
409
  }
@@ -0,0 +1,19 @@
1
+ body { margin: 0; padding: 24px; font-family: var(--os-font); background: var(--os-bg-0); color: var(--os-fg); }
2
+ h1 { margin: 0 0 8px 0; font-size: 22px; font-weight: 600; }
3
+ h3 { margin: 18px 0 6px 0; color: var(--os-fg-2); font-size: 13px; font-weight: 600; }
4
+ .sub { color: var(--os-fg-2); margin-bottom: 20px; }
5
+ table { border-collapse: collapse; width: 100%; max-width: 760px; }
6
+ td { padding: 6px 12px; border-bottom: 1px solid var(--os-bg-3); }
7
+ td.k { width: 280px; color: var(--os-fg-2); }
8
+ td.v { font-weight: 600; }
9
+ td.v.pass { color: var(--os-accent); }
10
+ td.v.fail { color: var(--os-red); }
11
+ td.v.pending { color: var(--os-amber); }
12
+ .all { margin-top: 16px; padding: 12px; background: var(--os-bg-1); max-width: 760px; border-radius: var(--os-radius-sm); }
13
+ .all.green { color: var(--os-accent); }
14
+ .all.red { color: var(--os-red); }
15
+ .err { color: var(--os-red); white-space: pre-wrap; margin-top: 12px; }
16
+ a { color: var(--os-accent); text-decoration: none; }
17
+ a:hover { color: var(--os-accent-2); }
18
+ iframe.osframe { position: absolute; left: -9999px; top: 0; width: 1280px; height: 900px; border: 0; }
19
+ iframe.osframe-phone { position: absolute; left: -9999px; top: 0; width: 414px; height: 720px; border: 0; }
@@ -1,6 +1,7 @@
1
1
  /* ============================================================
2
2
  Window Manager visuals — paired with createWM() behavior
3
3
  Tokens: --os-* (defined by desktop/theme.css)
4
+ Bible: tonal surfaces, no borders for chrome, inset rail for focus.
4
5
  ============================================================ */
5
6
 
6
7
  .wm-root {
@@ -16,24 +17,25 @@
16
17
  min-height: 120px;
17
18
  background: var(--os-bg-1);
18
19
  color: var(--os-fg);
19
- border: 1px solid var(--os-bg-3);
20
- border-radius: var(--os-radius);
20
+ border: none;
21
+ border-radius: var(--r-3, 18px);
21
22
  display: flex;
22
23
  flex-direction: column;
23
24
  pointer-events: auto;
24
25
  overflow: hidden;
25
26
  }
26
- .wm-win.wm-focused { border-color: var(--os-accent); }
27
+ .wm-win.wm-focused { box-shadow: inset 4px 0 0 var(--os-accent); }
27
28
 
28
29
  .wm-bar {
29
30
  display: flex;
30
31
  align-items: center;
31
- padding: 4px 8px;
32
+ padding: 6px 10px;
32
33
  background: var(--os-bg-2);
33
34
  cursor: move;
34
35
  user-select: none;
35
36
  gap: 8px;
36
37
  touch-action: none;
38
+ border: none;
37
39
  }
38
40
  .wm-title {
39
41
  flex: 1;
@@ -41,23 +43,27 @@
41
43
  white-space: nowrap;
42
44
  overflow: hidden;
43
45
  text-overflow: ellipsis;
46
+ text-transform: lowercase;
44
47
  }
45
48
 
46
49
  .wm-btns { display: flex; gap: 4px; }
47
50
  .wm-btn {
48
- width: 14px;
49
- height: 14px;
50
- border: 1px solid currentColor;
51
- background: transparent;
51
+ width: 22px;
52
+ height: 22px;
53
+ border: none;
54
+ background: var(--os-bg-3);
55
+ color: var(--os-fg-2);
52
56
  cursor: pointer;
53
57
  padding: 0;
54
- font: 9px var(--os-font);
55
- display: flex;
58
+ font: 600 12px var(--os-mono);
59
+ line-height: 1;
60
+ display: inline-flex;
56
61
  align-items: center;
57
62
  justify-content: center;
58
- color: inherit;
63
+ border-radius: var(--r-1, 6px);
64
+ transition: background 100ms ease, color 100ms ease;
59
65
  }
60
- .wm-btn:hover { background: var(--os-accent); color: var(--panel-accent-fg, #000); }
66
+ .wm-btn:hover { background: var(--panel-hover, var(--os-bg-2)); color: var(--os-fg); }
61
67
 
62
68
  .wm-body {
63
69
  flex: 1;
@@ -70,13 +76,20 @@
70
76
  position: absolute;
71
77
  right: 0;
72
78
  bottom: 0;
73
- width: 18px;
74
- height: 18px;
79
+ width: 14px;
80
+ height: 14px;
75
81
  cursor: nwse-resize;
76
- background: var(--os-bg-3);
77
- clip-path: polygon(100% 0, 100% 100%, 0 100%);
82
+ background: transparent;
83
+ color: var(--os-fg-3);
84
+ opacity: 0.4;
85
+ font: 10px var(--os-mono);
86
+ line-height: 1;
87
+ display: flex;
88
+ align-items: flex-end;
89
+ justify-content: flex-end;
78
90
  touch-action: none;
79
91
  }
92
+ .wm-resize::after { content: '\25E2'; }
80
93
 
81
94
  .wm-win.wm-min .wm-body,
82
95
  .wm-win.wm-min .wm-resize { display: none; }