anentrypoint-design 0.0.209 → 0.0.210

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 CHANGED
@@ -190,7 +190,7 @@ pre .n { color: var(--green-2); }
190
190
  body.canvas-host { background: transparent !important; }
191
191
 
192
192
  :root {
193
- --app-status-h: var(--size-base);
193
+ --app-status-h: 26px;
194
194
  --app-topbar-h: var(--size-lg);
195
195
  --app-crumb-h: var(--size-sm);
196
196
  }
@@ -384,14 +384,15 @@ body.canvas-host { background: transparent !important; }
384
384
  .app-status {
385
385
  display: flex; align-items: center; gap: var(--space-3);
386
386
  width: 100%;
387
- min-height: var(--app-status-h);
388
- padding: 10px var(--pad-x);
387
+ height: var(--app-status-h); min-height: var(--app-status-h);
388
+ /* A thin desktop status strip, not a webpage footer band. */
389
+ padding: 0 var(--space-4);
389
390
  /* Status chrome is prose, not code - mono is reserved for code/paths. */
390
- font-family: var(--ff-body); font-size: var(--fs-xs);
391
+ font-family: var(--ff-body); font-size: var(--fs-xs); line-height: 1.2;
391
392
  color: var(--fg-3);
392
393
  border-top: 1px solid var(--rule);
393
394
  }
394
- .app-status .item { color: inherit; white-space: nowrap; }
395
+ .app-status .item { color: inherit; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
395
396
  .app-status .item:first-of-type { color: var(--accent); }
396
397
  .app-status .spread { flex: 1; }
397
398
  /* The status bar NEVER wraps: at narrow widths the trailing items (hints,
@@ -406,13 +407,14 @@ body.canvas-host { background: transparent !important; }
406
407
  Primitives
407
408
  ============================================================ */
408
409
  .btn, .btn-primary, .btn-ghost {
409
- display: inline-flex; align-items: center; gap: 8px;
410
- padding: 13px 22px;
410
+ display: inline-flex; align-items: center; justify-content: center; gap: 6px;
411
+ padding: 8px 14px; min-height: 32px;
411
412
  font-family: var(--ff-body);
412
413
  font-weight: 600; font-size: var(--fs-sm);
413
414
  text-decoration: none;
414
415
  cursor: pointer;
415
- border-radius: var(--r-pill);
416
+ /* Rounded-rect app chrome, not a marketing-page stadium CTA. */
417
+ border-radius: var(--r-1);
416
418
  border: 0;
417
419
  transition: transform var(--dur-snap) var(--ease), background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
418
420
  }
@@ -3007,10 +3009,13 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3007
3009
  All sizing/colour from kit tokens; no hardcoded palette.
3008
3010
  ---------------------------------------------------------------------------- */
3009
3011
  .ws-shell {
3010
- --ws-rail-w: 232px;
3012
+ /* Fluid chrome columns: shrink on small laptops, breathe on ultrawide, so the
3013
+ ~848px of fixed chrome no longer eats a constant slab. An inline --ws-*-w
3014
+ written by a resize drag overrides these (inline wins), pinning the width. */
3015
+ --ws-rail-w: clamp(200px, 16vw, 260px);
3011
3016
  --ws-rail-w-collapsed: 60px;
3012
- --ws-sessions-w: 296px;
3013
- --ws-pane-w: 320px;
3017
+ --ws-sessions-w: clamp(248px, 22vw, 360px);
3018
+ --ws-pane-w: clamp(288px, 24vw, 420px);
3014
3019
  display: grid;
3015
3020
  grid-template-columns: var(--ws-rail-w) var(--ws-sessions-w) 1fr var(--ws-pane-w);
3016
3021
  grid-template-areas: "rail sessions content pane";
@@ -3031,6 +3036,21 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3031
3036
  .ws-shell.ws-no-pane.ws-pane-collapsed.ws-no-sessions { grid-template-columns: var(--ws-rail-w) 1fr var(--ws-pane-w); grid-template-areas: "rail content pane"; }
3032
3037
  .ws-shell.ws-rail-collapsed { --ws-rail-w: var(--ws-rail-w-collapsed); }
3033
3038
  .ws-shell.ws-pane-collapsed { --ws-pane-w: 0px; }
3039
+ /* Sessions column desktop collapse (parity with the pane collapse), reclaiming
3040
+ its width for a full-width thread/grid. */
3041
+ .ws-shell.ws-sessions-collapsed { --ws-sessions-w: 0px; }
3042
+ .ws-sessions-collapsed .ws-sessions { overflow: hidden; border-right: none; }
3043
+ .ws-sessions-collapsed .ws-sessions > * { display: none; }
3044
+ /* Column resize handles: a thin keyboard-accessible separator pinned to the
3045
+ right edge of each chrome track; drag (or ArrowLeft/Right) writes a clamped
3046
+ inline --ws-*-w. */
3047
+ .ws-resizer { grid-row: 1 / -1; align-self: stretch; justify-self: end; width: 8px; margin-right: -4px; z-index: 5; cursor: col-resize; background: transparent; border: none; padding: 0; touch-action: none; }
3048
+ .ws-resizer::after { content: ""; display: block; width: 2px; height: 100%; margin: 0 auto; background: transparent; transition: background var(--dur-snap) var(--ease); }
3049
+ .ws-resizer:hover::after, .ws-resizer:focus-visible::after { background: var(--accent); }
3050
+ .ws-resizer:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
3051
+ .ws-resizer.ws-resizer-rail { grid-column: 1; }
3052
+ .ws-resizer.ws-resizer-sessions { grid-column: 2; }
3053
+ .ws-resizer.ws-resizer-pane { grid-column: 3; justify-self: end; }
3034
3054
  /* Ease the rail/pane collapse. Track COUNT stays stable on collapse (only a
3035
3055
  width var flips), so grid-template-columns is animatable; reduced-motion
3036
3056
  drops it to an instant swap. */
@@ -3145,6 +3165,11 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3145
3165
  trailing display:none silently kills every drawer affordance (shipped bug:
3146
3166
  the mobile drawers were dead because these lines used to sit last). */
3147
3167
  .ws-drawer-toggle { display: none; align-items: center; justify-content: center; width: 40px; height: 40px; border: none; background: none; color: var(--fg-2); cursor: pointer; border-radius: var(--r-1); }
3168
+ /* Desktop-only chrome toggle (sessions collapse): inverse of the mobile drawer-toggle. */
3169
+ .ws-desktop-toggle { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: none; background: none; color: var(--fg-2); cursor: pointer; border-radius: var(--r-1); }
3170
+ .ws-desktop-toggle:hover { background: var(--bg-2); color: var(--fg); }
3171
+ .ws-desktop-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
3172
+ @media (max-width: 900px) { .ws-desktop-toggle { display: none; } }
3148
3173
  .ws-scrim { display: none; }
3149
3174
 
3150
3175
  /* Responsive: the columns yield to the CONTENT in stages - the main column is
package/chat.css CHANGED
@@ -125,7 +125,7 @@
125
125
  overflow-y: auto;
126
126
  display: flex;
127
127
  flex-direction: column;
128
- gap: var(--space-2, 8px);
128
+ gap: calc(var(--space-2, 8px) * var(--density, 1));
129
129
  }
130
130
 
131
131
  /* Jump-to-latest: hidden until the thread scroll listener adds .show. */
@@ -391,7 +391,8 @@
391
391
  background: color-mix(in oklab, var(--warn) 12%, transparent); color: var(--warn);
392
392
  }
393
393
  .ds-dash-header .btn-primary.danger.is-armed { background: var(--warn); color: var(--paper); border-color: var(--warn); }
394
- .ds-dash-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--space-3); padding: var(--space-4); }
394
+ .ds-dash-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--space-2); padding: var(--space-3); }
395
+ @media (min-width: 1500px) { .ds-dash-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); } }
395
396
  .ds-dash-card { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3); background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-2); }
396
397
  .ds-dash-card.is-error { border-color: var(--flame); }
397
398
  .ds-dash-card-head { display: flex; align-items: center; gap: var(--space-2); }
@@ -686,7 +687,10 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
686
687
  avatar-disc + colored-bubble layout. AgentChat passes flat:true; the demo
687
688
  Chat keeps the bubble layout. Turns are full-width to --measure; the user vs
688
689
  assistant distinction is a role label + a faint assistant background. */
689
- .chat-msg-flat { display: block; padding: var(--space-3) var(--space-4); margin: 0; background: none; border-radius: var(--r-2); }
690
+ /* Center the flat turn at the reading measure so a wide content column does not
691
+ dump a one-sided dead gutter (claude.ai/code centers the thread). Padding
692
+ scales through --density so data-density=compact tightens the thread. */
693
+ .chat-msg-flat { display: block; max-width: var(--measure); margin-inline: auto; padding: calc(var(--space-3) * var(--density, 1)) var(--space-4); margin-block: 0; background: none; border-radius: var(--r-2); }
690
694
  .chat-msg-flat.them { background: color-mix(in oklab, var(--fg) 3%, transparent); }
691
695
  .chat-msg-flat.you { background: none; }
692
696
  .chat-msg-flat .chat-stack { max-width: var(--measure); width: 100%; margin: 0; align-items: stretch; }
@@ -842,3 +846,8 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
842
846
  .row-act, .ds-dash-errors-toggle, .agentchat-export-act, .ds-file-more-btn,
843
847
  .agentchat-install-copy, .ds-upload-act, .ds-session-meta-copy { min-height: 44px; }
844
848
  }
849
+
850
+ /* 11th run: ultrawide widens the reading measure where there is room. */
851
+ @media (min-width: 1600px) {
852
+ .agentchat-thread { --measure: 84ch; }
853
+ }
package/dist/247420.css CHANGED
@@ -624,7 +624,7 @@
624
624
  .ds-247420 body.canvas-host { background: transparent !important; }
625
625
 
626
626
  .ds-247420 {
627
- --app-status-h: var(--size-base);
627
+ --app-status-h: 26px;
628
628
  --app-topbar-h: var(--size-lg);
629
629
  --app-crumb-h: var(--size-sm);
630
630
  }
@@ -818,14 +818,15 @@
818
818
  .ds-247420 .app-status {
819
819
  display: flex; align-items: center; gap: var(--space-3);
820
820
  width: 100%;
821
- min-height: var(--app-status-h);
822
- padding: 10px var(--pad-x);
821
+ height: var(--app-status-h); min-height: var(--app-status-h);
822
+ /* A thin desktop status strip, not a webpage footer band. */
823
+ padding: 0 var(--space-4);
823
824
  /* Status chrome is prose, not code - mono is reserved for code/paths. */
824
- font-family: var(--ff-body); font-size: var(--fs-xs);
825
+ font-family: var(--ff-body); font-size: var(--fs-xs); line-height: 1.2;
825
826
  color: var(--fg-3);
826
827
  border-top: 1px solid var(--rule);
827
828
  }
828
- .ds-247420 .app-status .item { color: inherit; white-space: nowrap; }
829
+ .ds-247420 .app-status .item { color: inherit; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
829
830
  .ds-247420 .app-status .item:first-of-type { color: var(--accent); }
830
831
  .ds-247420 .app-status .spread { flex: 1; }
831
832
  /* The status bar NEVER wraps: at narrow widths the trailing items (hints,
@@ -840,13 +841,14 @@
840
841
  Primitives
841
842
  ============================================================ */
842
843
  .ds-247420 .btn, .ds-247420 .btn-primary, .ds-247420 .btn-ghost {
843
- display: inline-flex; align-items: center; gap: 8px;
844
- padding: 13px 22px;
844
+ display: inline-flex; align-items: center; justify-content: center; gap: 6px;
845
+ padding: 8px 14px; min-height: 32px;
845
846
  font-family: var(--ff-body);
846
847
  font-weight: 600; font-size: var(--fs-sm);
847
848
  text-decoration: none;
848
849
  cursor: pointer;
849
- border-radius: var(--r-pill);
850
+ /* Rounded-rect app chrome, not a marketing-page stadium CTA. */
851
+ border-radius: var(--r-1);
850
852
  border: 0;
851
853
  transition: transform var(--dur-snap) var(--ease), background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
852
854
  }
@@ -3432,10 +3434,13 @@
3432
3434
  All sizing/colour from kit tokens; no hardcoded palette.
3433
3435
  ---------------------------------------------------------------------------- */
3434
3436
  .ds-247420 .ws-shell {
3435
- --ws-rail-w: 232px;
3437
+ /* Fluid chrome columns: shrink on small laptops, breathe on ultrawide, so the
3438
+ ~848px of fixed chrome no longer eats a constant slab. An inline --ws-*-w
3439
+ written by a resize drag overrides these (inline wins), pinning the width. */
3440
+ --ws-rail-w: clamp(200px, 16vw, 260px);
3436
3441
  --ws-rail-w-collapsed: 60px;
3437
- --ws-sessions-w: 296px;
3438
- --ws-pane-w: 320px;
3442
+ --ws-sessions-w: clamp(248px, 22vw, 360px);
3443
+ --ws-pane-w: clamp(288px, 24vw, 420px);
3439
3444
  display: grid;
3440
3445
  grid-template-columns: var(--ws-rail-w) var(--ws-sessions-w) 1fr var(--ws-pane-w);
3441
3446
  grid-template-areas: "rail sessions content pane";
@@ -3456,6 +3461,21 @@
3456
3461
  .ds-247420 .ws-shell.ws-no-pane.ws-pane-collapsed.ws-no-sessions { grid-template-columns: var(--ws-rail-w) 1fr var(--ws-pane-w); grid-template-areas: "rail content pane"; }
3457
3462
  .ds-247420 .ws-shell.ws-rail-collapsed { --ws-rail-w: var(--ws-rail-w-collapsed); }
3458
3463
  .ds-247420 .ws-shell.ws-pane-collapsed { --ws-pane-w: 0px; }
3464
+ /* Sessions column desktop collapse (parity with the pane collapse), reclaiming
3465
+ its width for a full-width thread/grid. */
3466
+ .ds-247420 .ws-shell.ws-sessions-collapsed { --ws-sessions-w: 0px; }
3467
+ .ds-247420 .ws-sessions-collapsed .ws-sessions { overflow: hidden; border-right: none; }
3468
+ .ds-247420 .ws-sessions-collapsed .ws-sessions > * { display: none; }
3469
+ /* Column resize handles: a thin keyboard-accessible separator pinned to the
3470
+ right edge of each chrome track; drag (or ArrowLeft/Right) writes a clamped
3471
+ inline --ws-*-w. */
3472
+ .ds-247420 .ws-resizer { grid-row: 1 / -1; align-self: stretch; justify-self: end; width: 8px; margin-right: -4px; z-index: 5; cursor: col-resize; background: transparent; border: none; padding: 0; touch-action: none; }
3473
+ .ds-247420 .ws-resizer::after { content: ""; display: block; width: 2px; height: 100%; margin: 0 auto; background: transparent; transition: background var(--dur-snap) var(--ease); }
3474
+ .ds-247420 .ws-resizer:hover::after, .ds-247420 .ws-resizer:focus-visible::after { background: var(--accent); }
3475
+ .ds-247420 .ws-resizer:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
3476
+ .ds-247420 .ws-resizer.ws-resizer-rail { grid-column: 1; }
3477
+ .ds-247420 .ws-resizer.ws-resizer-sessions { grid-column: 2; }
3478
+ .ds-247420 .ws-resizer.ws-resizer-pane { grid-column: 3; justify-self: end; }
3459
3479
  /* Ease the rail/pane collapse. Track COUNT stays stable on collapse (only a
3460
3480
  width var flips), so grid-template-columns is animatable; reduced-motion
3461
3481
  drops it to an instant swap. */
@@ -3570,6 +3590,11 @@
3570
3590
  trailing display:none silently kills every drawer affordance (shipped bug:
3571
3591
  the mobile drawers were dead because these lines used to sit last). */
3572
3592
  .ds-247420 .ws-drawer-toggle { display: none; align-items: center; justify-content: center; width: 40px; height: 40px; border: none; background: none; color: var(--fg-2); cursor: pointer; border-radius: var(--r-1); }
3593
+ /* Desktop-only chrome toggle (sessions collapse): inverse of the mobile drawer-toggle. */
3594
+ .ds-247420 .ws-desktop-toggle { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: none; background: none; color: var(--fg-2); cursor: pointer; border-radius: var(--r-1); }
3595
+ .ds-247420 .ws-desktop-toggle:hover { background: var(--bg-2); color: var(--fg); }
3596
+ .ds-247420 .ws-desktop-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
3597
+ @media (max-width: 900px) { .ds-247420 .ws-desktop-toggle { display: none; } }
3573
3598
  .ds-247420 .ws-scrim { display: none; }
3574
3599
 
3575
3600
  /* Responsive: the columns yield to the CONTENT in stages - the main column is
@@ -5378,7 +5403,7 @@
5378
5403
  overflow-y: auto;
5379
5404
  display: flex;
5380
5405
  flex-direction: column;
5381
- gap: var(--space-2, 8px);
5406
+ gap: calc(var(--space-2, 8px) * var(--density, 1));
5382
5407
  }
5383
5408
 
5384
5409
  /* Jump-to-latest: hidden until the thread scroll listener adds .show. */
@@ -5644,7 +5669,8 @@
5644
5669
  background: color-mix(in oklab, var(--warn) 12%, transparent); color: var(--warn);
5645
5670
  }
5646
5671
  .ds-247420 .ds-dash-header .btn-primary.danger.is-armed { background: var(--warn); color: var(--paper); border-color: var(--warn); }
5647
- .ds-247420 .ds-dash-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--space-3); padding: var(--space-4); }
5672
+ .ds-247420 .ds-dash-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--space-2); padding: var(--space-3); }
5673
+ @media (min-width: 1500px) { .ds-247420 .ds-dash-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); } }
5648
5674
  .ds-247420 .ds-dash-card { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3); background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-2); }
5649
5675
  .ds-247420 .ds-dash-card.is-error { border-color: var(--flame); }
5650
5676
  .ds-247420 .ds-dash-card-head { display: flex; align-items: center; gap: var(--space-2); }
@@ -5939,7 +5965,10 @@
5939
5965
  avatar-disc + colored-bubble layout. AgentChat passes flat:true; the demo
5940
5966
  Chat keeps the bubble layout. Turns are full-width to --measure; the user vs
5941
5967
  assistant distinction is a role label + a faint assistant background. */
5942
- .ds-247420 .chat-msg-flat { display: block; padding: var(--space-3) var(--space-4); margin: 0; background: none; border-radius: var(--r-2); }
5968
+ /* Center the flat turn at the reading measure so a wide content column does not
5969
+ dump a one-sided dead gutter (claude.ai/code centers the thread). Padding
5970
+ scales through --density so data-density=compact tightens the thread. */
5971
+ .ds-247420 .chat-msg-flat { display: block; max-width: var(--measure); margin-inline: auto; padding: calc(var(--space-3) * var(--density, 1)) var(--space-4); margin-block: 0; background: none; border-radius: var(--r-2); }
5943
5972
  .ds-247420 .chat-msg-flat.them { background: color-mix(in oklab, var(--fg) 3%, transparent); }
5944
5973
  .ds-247420 .chat-msg-flat.you { background: none; }
5945
5974
  .ds-247420 .chat-msg-flat .chat-stack { max-width: var(--measure); width: 100%; margin: 0; align-items: stretch; }
@@ -6095,6 +6124,11 @@
6095
6124
  .ds-247420 .row-act, .ds-247420 .ds-dash-errors-toggle, .ds-247420 .agentchat-export-act, .ds-247420 .ds-file-more-btn, .ds-247420 .agentchat-install-copy, .ds-247420 .ds-upload-act, .ds-247420 .ds-session-meta-copy { min-height: 44px; }
6096
6125
  }
6097
6126
 
6127
+ /* 11th run: ultrawide widens the reading measure where there is room. */
6128
+ @media (min-width: 1600px) {
6129
+ .ds-247420 .agentchat-thread { --measure: 84ch; }
6130
+ }
6131
+
6098
6132
  /* editor-primitives.css */
6099
6133
  /* editor-primitives.css — chrome for in-engine editors, inspectors, IDEs,
6100
6134
  debug HUDs. All rules under .ds-247420 scope (build prefixes). Tokens