anentrypoint-design 0.0.202 → 0.0.204

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
@@ -154,6 +154,9 @@ pre .n { color: var(--green-2); }
154
154
  ============================================================ */
155
155
  .app {
156
156
  display: flex; flex-direction: column;
157
+ /* Offset parent for the sidebar drawer/scrim/toggle, which are absolute so
158
+ they overlay THIS shell (a thebird WM window) rather than the viewport. */
159
+ position: relative;
157
160
  min-height: 100vh;
158
161
  /* Definite height so the flex column resolves height:100% for descendants
159
162
  (e.g. a full-height chat) at every breakpoint, not just where a desktop
@@ -2072,6 +2075,12 @@ button:disabled, [disabled] {
2072
2075
  from { transform: rotate(0deg); }
2073
2076
  to { transform: rotate(360deg); }
2074
2077
  }
2078
+ /* Reusable spin utility: rotates the element (e.g. a refresh Icon used as a
2079
+ busy indicator) via the shared spinner-rotate keyframe. Respects reduced
2080
+ motion. Use instead of a decorative rotation glyph. */
2081
+ .ds-spin { animation: spinner-rotate 0.8s linear infinite; transform-origin: center; }
2082
+ @media (prefers-reduced-motion: reduce) { .ds-spin { animation: none; } }
2083
+
2075
2084
  .loading { position: relative; }
2076
2085
  .loading::after {
2077
2086
  content: '';
@@ -2662,14 +2671,20 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
2662
2671
  ============================================================ */
2663
2672
 
2664
2673
  /* Tablet + Mobile: side rail becomes off-canvas drawer (≤900px) */
2665
- @media (max-width: 900px) {
2674
+ /* Sidebar drawer collapse keys on the SHELL width (@container on .app, which is
2675
+ container-type:inline-size) — NOT the viewport. Full-page (freddie) the shell
2676
+ == viewport so this is identical to the old @media(max-width:900px); embedded
2677
+ in a thebird WM window the drawer + hamburger appear when the WINDOW is narrow
2678
+ even on a wide desktop. Drawer/scrim/toggle are absolute (anchored to .app), so
2679
+ they overlay the window, not the page. */
2680
+ @container (max-width: 900px) {
2666
2681
  .app-body,
2667
2682
  .app-body.no-side { grid-template-columns: 1fr !important; }
2668
2683
  .app-side-shell {
2669
- position: fixed;
2684
+ position: absolute;
2670
2685
  left: 0; top: var(--app-topbar-h);
2671
- height: calc(100vh - var(--app-topbar-h) - var(--app-status-h));
2672
- width: 280px; max-width: 80vw;
2686
+ height: calc(100% - var(--app-topbar-h) - var(--app-status-h));
2687
+ width: 280px; max-width: 80%;
2673
2688
  transform: translateX(-100%);
2674
2689
  transition: transform var(--dur-base, 240ms) var(--ease, ease);
2675
2690
  z-index: 50;
@@ -2703,21 +2718,24 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
2703
2718
  .app-main { padding-left: var(--space-3); padding-right: var(--space-3); }
2704
2719
  }
2705
2720
 
2706
- /* Drawer scrim — lives inside .app-body, shown when drawer open ≤900px */
2721
+ /* Drawer scrim — absolute so it covers THIS shell, shown when drawer open and
2722
+ the shell is narrow (@container on .app). */
2707
2723
  .app-side-scrim {
2708
2724
  display: none;
2709
- position: fixed; inset: 0;
2725
+ position: absolute; inset: 0;
2710
2726
  background: color-mix(in oklab, var(--bg) 60%, transparent);
2711
2727
  z-index: 49;
2712
2728
  }
2713
- @media (max-width: 900px) {
2729
+ @container (max-width: 900px) {
2714
2730
  .app-body.side-open .app-side-scrim { display: block; }
2715
2731
  }
2716
2732
 
2717
- /* Mobile nav toggle (hamburger) — hidden on desktop, shown ≤900px */
2733
+ /* Nav toggle (hamburger) — hidden when the shell is wide, shown when the shell
2734
+ itself is narrow (@container on .app). Absolute so it sits in THIS shell's
2735
+ topbar, not pinned to the viewport corner. */
2718
2736
  .app-side-toggle {
2719
2737
  display: none;
2720
- position: fixed; top: calc((var(--app-topbar-h) - 44px) / 2); left: 10px;
2738
+ position: absolute; top: calc((var(--app-topbar-h) - 44px) / 2); left: 10px;
2721
2739
  z-index: 51;
2722
2740
  /* 44x44 minimum hit area (WCAG 2.5.5 / Apple HIG) - 36px is below the
2723
2741
  reliable-tap threshold on touch. */
@@ -2730,7 +2748,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
2730
2748
  cursor: pointer;
2731
2749
  }
2732
2750
  .app-side-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
2733
- @media (max-width: 900px) {
2751
+ @container (max-width: 900px) {
2734
2752
  .app-side-toggle { display: inline-flex; }
2735
2753
  .app-topbar .brand { margin-left: 44px; }
2736
2754
  }
package/dist/247420.css CHANGED
@@ -555,6 +555,9 @@
555
555
  ============================================================ */
556
556
  .ds-247420 .app {
557
557
  display: flex; flex-direction: column;
558
+ /* Offset parent for the sidebar drawer/scrim/toggle, which are absolute so
559
+ they overlay THIS shell (a thebird WM window) rather than the viewport. */
560
+ position: relative;
558
561
  min-height: 100vh;
559
562
  /* Definite height so the flex column resolves height:100% for descendants
560
563
  (e.g. a full-height chat) at every breakpoint, not just where a desktop
@@ -2472,6 +2475,12 @@
2472
2475
  from { transform: rotate(0deg); }
2473
2476
  to { transform: rotate(360deg); }
2474
2477
  }
2478
+ /* Reusable spin utility: rotates the element (e.g. a refresh Icon used as a
2479
+ busy indicator) via the shared spinner-rotate keyframe. Respects reduced
2480
+ motion. Use instead of a decorative rotation glyph. */
2481
+ .ds-247420 .ds-spin { animation: spinner-rotate 0.8s linear infinite; transform-origin: center; }
2482
+ @media (prefers-reduced-motion: reduce) { .ds-247420 .ds-spin { animation: none; } }
2483
+
2475
2484
  .ds-247420 .loading { position: relative; }
2476
2485
  .ds-247420 .loading::after {
2477
2486
  content: '';
@@ -3054,14 +3063,20 @@
3054
3063
  ============================================================ */
3055
3064
 
3056
3065
  /* Tablet + Mobile: side rail becomes off-canvas drawer (≤900px) */
3057
- @media (max-width: 900px) {
3066
+ /* Sidebar drawer collapse keys on the SHELL width (@container on .app, which is
3067
+ container-type:inline-size) — NOT the viewport. Full-page (freddie) the shell
3068
+ == viewport so this is identical to the old @media(max-width:900px); embedded
3069
+ in a thebird WM window the drawer + hamburger appear when the WINDOW is narrow
3070
+ even on a wide desktop. Drawer/scrim/toggle are absolute (anchored to .app), so
3071
+ they overlay the window, not the page. */
3072
+ @container (max-width: 900px) {
3058
3073
  .ds-247420 .app-body,
3059
3074
  .ds-247420 .app-body.no-side { grid-template-columns: 1fr !important; }
3060
3075
  .ds-247420 .app-side-shell {
3061
- position: fixed;
3076
+ position: absolute;
3062
3077
  left: 0; top: var(--app-topbar-h);
3063
- height: calc(100vh - var(--app-topbar-h) - var(--app-status-h));
3064
- width: 280px; max-width: 80vw;
3078
+ height: calc(100% - var(--app-topbar-h) - var(--app-status-h));
3079
+ width: 280px; max-width: 80%;
3065
3080
  transform: translateX(-100%);
3066
3081
  transition: transform var(--dur-base, 240ms) var(--ease, ease);
3067
3082
  z-index: 50;
@@ -3095,21 +3110,24 @@
3095
3110
  .ds-247420 .app-main { padding-left: var(--space-3); padding-right: var(--space-3); }
3096
3111
  }
3097
3112
 
3098
- /* Drawer scrim — lives inside .app-body, shown when drawer open ≤900px */
3113
+ /* Drawer scrim — absolute so it covers THIS shell, shown when drawer open and
3114
+ the shell is narrow (@container on .app). */
3099
3115
  .ds-247420 .app-side-scrim {
3100
3116
  display: none;
3101
- position: fixed; inset: 0;
3117
+ position: absolute; inset: 0;
3102
3118
  background: color-mix(in oklab, var(--bg) 60%, transparent);
3103
3119
  z-index: 49;
3104
3120
  }
3105
- @media (max-width: 900px) {
3121
+ @container (max-width: 900px) {
3106
3122
  .ds-247420 .app-body.side-open .app-side-scrim { display: block; }
3107
3123
  }
3108
3124
 
3109
- /* Mobile nav toggle (hamburger) — hidden on desktop, shown ≤900px */
3125
+ /* Nav toggle (hamburger) — hidden when the shell is wide, shown when the shell
3126
+ itself is narrow (@container on .app). Absolute so it sits in THIS shell's
3127
+ topbar, not pinned to the viewport corner. */
3110
3128
  .ds-247420 .app-side-toggle {
3111
3129
  display: none;
3112
- position: fixed; top: calc((var(--app-topbar-h) - 44px) / 2); left: 10px;
3130
+ position: absolute; top: calc((var(--app-topbar-h) - 44px) / 2); left: 10px;
3113
3131
  z-index: 51;
3114
3132
  /* 44x44 minimum hit area (WCAG 2.5.5 / Apple HIG) - 36px is below the
3115
3133
  reliable-tap threshold on touch. */
@@ -3122,7 +3140,7 @@
3122
3140
  cursor: pointer;
3123
3141
  }
3124
3142
  .ds-247420 .app-side-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
3125
- @media (max-width: 900px) {
3143
+ @container (max-width: 900px) {
3126
3144
  .ds-247420 .app-side-toggle { display: inline-flex; }
3127
3145
  .ds-247420 .app-topbar .brand { margin-left: 44px; }
3128
3146
  }