anentrypoint-design 0.0.197 → 0.0.199

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.197",
3
+ "version": "0.0.199",
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",
@@ -330,7 +330,10 @@ export function ShortcutHelpDialog({ open = false, onClose, registry } = {}) {
330
330
  ...Object.entries(groups).map(([scope, rows]) =>
331
331
  h('section', { class: 'ds-kbd-group' },
332
332
  h('h3', null, scope),
333
- h('ul', null, ...rows.map(r => h('li', null, h(ShortcutHint, { combo: r.combo }))))
333
+ h('ul', null, ...rows.map(r => h('li', { class: 'ds-kbd-row' },
334
+ h(ShortcutHint, { combo: r.combo }),
335
+ (r.label || r.description) ? h('span', { class: 'ds-kbd-label' }, r.label || r.description) : null
336
+ )))
334
337
  )
335
338
  )
336
339
  )
@@ -182,3 +182,13 @@
182
182
  border: none;
183
183
  background: var(--os-bg-0);
184
184
  }
185
+
186
+ /* Touch tap-target floor for the browser pane toolbar. The back/forward/reload
187
+ * buttons and the URL field are 28px by default (no @media anywhere), below the
188
+ * 44px touch minimum on tablets and phones. Lift them on coarse pointers and
189
+ * grow the bar so the controls fit with breathing room. */
190
+ @media (hover: none), (pointer: coarse) {
191
+ .browser-app-bar { min-height: 52px; padding: 6px var(--space-2); }
192
+ .browser-app-btn { min-height: var(--os-tap, 44px); height: var(--os-tap, 44px); min-width: var(--os-tap, 44px); }
193
+ .browser-app-url { height: var(--os-tap, 44px); }
194
+ }
@@ -1307,3 +1307,179 @@ html.ds-247420 { touch-action: pan-x pan-y; overscroll-behavior: none; -webkit-t
1307
1307
  line-height: 1.2;
1308
1308
  margin: 0;
1309
1309
  }
1310
+
1311
+ /* gm memory browser — recall hits rendered as interactive, prunable cards
1312
+ (thebird's gm app, docs/apps.js recall panel). */
1313
+ .ds-247420 .gm-recall-hits {
1314
+ display: flex;
1315
+ flex-direction: column;
1316
+ gap: 6px;
1317
+ margin: 8px 0;
1318
+ }
1319
+ .ds-247420 .gm-recall-hit {
1320
+ border: 1px solid color-mix(in oklab, var(--fg) 14%, transparent);
1321
+ border-radius: 6px;
1322
+ padding: 8px 10px;
1323
+ background: color-mix(in oklab, var(--bg) 92%, var(--fg) 2%);
1324
+ }
1325
+ .ds-247420 .gm-recall-hit.is-pruned {
1326
+ opacity: 0.45;
1327
+ text-decoration: line-through;
1328
+ }
1329
+ .ds-247420 .gm-recall-meta {
1330
+ font-family: var(--os-mono, ui-monospace, monospace);
1331
+ font-size: 11px;
1332
+ color: color-mix(in oklab, var(--fg) 60%, transparent);
1333
+ margin-bottom: 4px;
1334
+ }
1335
+ .ds-247420 .gm-recall-text {
1336
+ font-size: 13px;
1337
+ line-height: 1.4;
1338
+ white-space: pre-wrap;
1339
+ word-break: break-word;
1340
+ }
1341
+ .ds-247420 .gm-recall-acts {
1342
+ display: flex;
1343
+ justify-content: flex-end;
1344
+ margin-top: 6px;
1345
+ }
1346
+ .ds-247420 .gm-recall-forget {
1347
+ font-size: 11px;
1348
+ padding: 2px 8px;
1349
+ }
1350
+
1351
+ /* ============================================================
1352
+ * thebird RESPONSIVE PERFECTION layer (desk / tablet / mobile).
1353
+ * Appended LAST so .ds-247420-scoped rules here win source order over the
1354
+ * earlier brand overrides (.ds-247420 .wm-root{inset:0!important} at the
1355
+ * "bars overlay" block, .ds-247420 .wm-bar{height:34px!important}, the
1356
+ * unconditional .ds-247420 .os-instances{display:flex}) that were silently
1357
+ * defeating the @media(max-width:767px)/(768-1023px) contracts. Every rule
1358
+ * below is a measured fix for a confirmed responsive-audit finding.
1359
+ *
1360
+ * View classes: desktop >1023px (free-float windows, full menubar);
1361
+ * tablet 768..1023px (side-rail, wm-root left-offset); mobile <=767px AND
1362
+ * short landscape phones (full-screen windows, collapsed menubar, bottom
1363
+ * scroll-snap taskbar). Touch sizing is driven by (pointer:coarse) so it
1364
+ * also covers the landscape-phone band that width-only queries miss.
1365
+ * ============================================================ */
1366
+
1367
+ /* --- mobile bar height: the kit intends a touch-friendly 52px; the brand
1368
+ * layer pinned --os-bar-h-mobile to 34px which left no room for 44px tap
1369
+ * targets in the bar. Restore 52px on mobile/touch. --- */
1370
+ @media (max-width: 767px), (max-height: 500px) and (orientation: landscape) {
1371
+ .ds-247420 { --os-bar-h-mobile: 52px !important; --os-bar-h: 52px !important; }
1372
+ }
1373
+
1374
+ /* --- mobile + landscape-phone full-screen windows. The earlier
1375
+ * .ds-247420 .wm-root{inset:0!important} forced windows over the bars so the
1376
+ * titlebar close button landed under the menubar (occluded, untappable) and
1377
+ * window content underlapped the taskbar. Re-assert the bar-inset at scoped
1378
+ * specificity so windows sit BETWEEN the bars. --- */
1379
+ @media (max-width: 767px), (max-height: 500px) and (orientation: landscape) {
1380
+ .ds-247420 .wm-root {
1381
+ top: calc(var(--os-bar-h) + env(safe-area-inset-top, 0px)) !important;
1382
+ bottom: calc(var(--os-bar-h) + env(safe-area-inset-bottom, 0px)) !important;
1383
+ inset: calc(var(--os-bar-h) + env(safe-area-inset-top, 0px)) 0
1384
+ calc(var(--os-bar-h) + env(safe-area-inset-bottom, 0px)) 0 !important;
1385
+ }
1386
+ .ds-247420 .wm-win {
1387
+ position: absolute !important;
1388
+ left: 0 !important; top: 0 !important;
1389
+ width: 100% !important; height: 100% !important;
1390
+ border: none !important; border-radius: 0 !important; box-shadow: none !important;
1391
+ }
1392
+ /* titlebar must host a 44px close button -> 44px bar (beats the 34px brand clamp) */
1393
+ .ds-247420 .wm-bar {
1394
+ height: 44px !important; min-height: 44px !important;
1395
+ padding: 0 10px !important; align-items: center !important;
1396
+ pointer-events: none;
1397
+ }
1398
+ .ds-247420 .wm-bar .wm-title { pointer-events: auto; }
1399
+ .ds-247420 .wm-bar .wm-btns { pointer-events: auto; }
1400
+ /* hide min+max on mobile full-screen; keep close at 44x44 fully inside the bar */
1401
+ .ds-247420 .wm-btns .wm-btn:nth-child(1),
1402
+ .ds-247420 .wm-btns .wm-btn:nth-child(2) { display: none !important; }
1403
+ .ds-247420 .wm-btns .wm-btn:nth-child(3) {
1404
+ width: 44px !important; height: 44px !important;
1405
+ border-radius: var(--r-1, 6px) !important;
1406
+ background: var(--os-bg-3) !important; color: var(--os-fg) !important;
1407
+ }
1408
+ .ds-247420 .wm-resize { display: none !important; }
1409
+ /* collapse the menubar workspace cluster on mobile (the unconditional
1410
+ * .ds-247420 .os-instances{display:flex} otherwise leaves it visible) */
1411
+ .ds-247420 .os-menubar .os-instances,
1412
+ .ds-247420 .os-instances { display: none !important; }
1413
+ .ds-247420 .os-menubar [data-role="add"],
1414
+ .ds-247420 .tb-sess-add { display: none !important; }
1415
+ }
1416
+
1417
+ /* --- landscape-phone (short + wide + touch): also hide the side-rail that the
1418
+ * 768-1023 tablet band would otherwise show, and force the mobile menubar. --- */
1419
+ @media (max-height: 500px) and (orientation: landscape) and (pointer: coarse) {
1420
+ .ds-247420 .os-side-rail { display: none !important; }
1421
+ }
1422
+
1423
+ /* --- tablet (768..1023): the side-rail offset for .wm-root was defeated by
1424
+ * the scoped inset:0; re-assert it at scoped specificity using the inset
1425
+ * shorthand so it actually wins. --- */
1426
+ @media (min-width: 768px) and (max-width: 1023px) {
1427
+ .ds-247420 .wm-root {
1428
+ left: var(--os-rail-w) !important;
1429
+ inset: 0 0 0 var(--os-rail-w) !important;
1430
+ }
1431
+ }
1432
+
1433
+ /* --- universal touch tap-target floor (pointer:coarse covers tablets AND
1434
+ * landscape phones that width-only queries miss). Every interactive control
1435
+ * the audit measured below 44px is lifted to the --os-tap (44px) token. --- */
1436
+ @media (pointer: coarse) {
1437
+ /* window chrome */
1438
+ .ds-247420 .wm-btns .wm-btn { min-width: var(--os-tap, 44px); min-height: var(--os-tap, 44px); }
1439
+ .ds-247420 .wm-resize { width: var(--os-tap, 44px); height: var(--os-tap, 44px); }
1440
+ /* taskbar tasks (also widen and snap on the whole touch band, not mobile-only) */
1441
+ .ds-247420 .os-task {
1442
+ min-height: var(--os-tap, 44px); min-width: 120px;
1443
+ padding: 10px 14px; scroll-snap-align: start;
1444
+ }
1445
+ .ds-247420 .os-taskbar { scroll-snap-type: x proximity; }
1446
+ /* menubar workspace controls (when shown on tablet) */
1447
+ .ds-247420 .os-menubar .tb-sess-x { min-width: var(--os-tap, 44px); min-height: var(--os-tap, 44px); }
1448
+ .ds-247420 .tb-sess-chip { min-height: var(--os-tap, 44px); }
1449
+ .ds-247420 .tb-sess-add { min-height: var(--os-tap, 44px); }
1450
+ /* modal controls */
1451
+ .ds-247420 .tb-sess-modal-input { height: var(--os-tap, 44px); min-height: var(--os-tap, 44px); }
1452
+ .ds-247420 .tb-sess-modal-btn { min-height: var(--os-tap, 44px); }
1453
+ .ds-247420 .tb-sess-modal-x { min-width: var(--os-tap, 44px); min-height: var(--os-tap, 44px); }
1454
+ /* files-app rows + per-row actions */
1455
+ .ds-247420 .fsb-row { min-height: var(--os-tap, 44px); }
1456
+ .ds-247420 .fsb-act {
1457
+ min-width: var(--os-tap, 44px); min-height: var(--os-tap, 44px);
1458
+ display: inline-flex; align-items: center; justify-content: center;
1459
+ }
1460
+ /* chat composer controls */
1461
+ .ds-247420 .chat-composer .send { width: var(--os-tap, 44px); height: var(--os-tap, 44px); }
1462
+ .ds-247420 .cc-toggle { min-height: var(--os-tap, 44px); }
1463
+ }
1464
+
1465
+ /* --- files-app row actions must reveal on coarse pointers too (the existing
1466
+ * trigger keyed only on hover:none, which fails on hybrid touch+hover
1467
+ * tablets that also report a hover-capable pointer). --- */
1468
+ @media (hover: none), (pointer: coarse) {
1469
+ .ds-247420 .fsb-actions { opacity: 1; }
1470
+ }
1471
+
1472
+ /* --- modals: a content-tall card had no max-height and the overlay did not
1473
+ * scroll, so the footer (primary action) was stranded off-canvas. Cap the
1474
+ * card to the visible viewport, scroll the body, honor safe-area. --- */
1475
+ .ds-247420 .tb-sess-overlay {
1476
+ overflow-y: auto;
1477
+ padding: max(12px, env(safe-area-inset-top, 0px)) max(12px, env(safe-area-inset-right, 0px))
1478
+ max(12px, env(safe-area-inset-bottom, 0px)) max(12px, env(safe-area-inset-left, 0px));
1479
+ }
1480
+ .ds-247420 .tb-sess-modal { max-height: calc(100svh - 24px); display: flex; flex-direction: column; }
1481
+ .ds-247420 .tb-sess-modal-body { overflow-y: auto; min-height: 0; }
1482
+
1483
+ /* --- browser-pane: the generic .app-pane 16px prose padding stranded the
1484
+ * iframe 16px on every side; the browser pane is full-bleed. --- */
1485
+ .ds-247420 .app-pane.browser-app { padding: 0 !important; }