@dillingerstaffing/strand-vue 0.17.0 → 0.17.2

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.
@@ -3356,11 +3356,16 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
3356
3356
  min-height: 100vh;
3357
3357
  }
3358
3358
 
3359
- /* Sidebar: sticky column, full viewport height, hairline right border. */
3359
+ /* Sidebar: sticky column. Height fills viewport from sticky-top to
3360
+ bottom so its bottom never falls below the viewport edge. dvh tracks
3361
+ mobile browser-chrome changes; vh fallback for older browsers. */
3360
3362
  .strand-ref-shell__sidebar {
3361
3363
  position: sticky;
3362
3364
  top: var(--strand-ref-sticky-top, 0);
3363
- height: 100vh;
3365
+ height: calc(100vh - var(--strand-ref-sticky-top, 0px));
3366
+ height: calc(100dvh - var(--strand-ref-sticky-top, 0px));
3367
+ max-height: calc(100vh - var(--strand-ref-sticky-top, 0px));
3368
+ max-height: calc(100dvh - var(--strand-ref-sticky-top, 0px));
3364
3369
  background: var(--strand-surface-elevated);
3365
3370
  border-right: 1px solid var(--strand-gray-200);
3366
3371
  display: flex;
@@ -3704,17 +3709,76 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
3704
3709
  max-width: 560px;
3705
3710
  }
3706
3711
 
3707
- /* Responsive: collapse to single column at 1040, further adjust at 560. */
3712
+ /* Mobile-trigger FAB: hidden by default; shown only inside the responsive
3713
+ breakpoint. Floats bottom-right and toggles the mobile drawer. The
3714
+ consumer pairs this with toggling `.is-nav-open` on the shell mount
3715
+ point. The button itself uses standard strand-btn primitives plus
3716
+ this class for FAB positioning. */
3717
+ .strand-ref-mobile-trigger {
3718
+ display: none;
3719
+ }
3720
+
3721
+ .strand-ref-shell__nav-scrim {
3722
+ display: none;
3723
+ }
3724
+
3725
+ /* Responsive: at <=1040px the sidebar becomes a slide-over drawer.
3726
+ Consumer toggles `.is-nav-open` on the shell mount point to open the
3727
+ drawer. The trigger button (.strand-ref-mobile-trigger) sits as a FAB
3728
+ bottom-right, and the scrim (.strand-ref-shell__nav-scrim) closes it
3729
+ on tap. */
3708
3730
  @media (max-width: 1040px) {
3709
3731
  .strand-ref-shell {
3710
3732
  grid-template-columns: 1fr;
3711
3733
  }
3712
3734
 
3713
3735
  .strand-ref-shell__sidebar {
3714
- position: static;
3736
+ position: fixed;
3737
+ top: var(--strand-ref-sticky-top, 0);
3738
+ left: 0;
3739
+ right: 0;
3740
+ bottom: 0;
3715
3741
  height: auto;
3742
+ max-height: none;
3743
+ width: 100%;
3744
+ z-index: 80;
3745
+ background: var(--strand-surface-elevated);
3746
+ box-shadow: var(--strand-elevation-3, 0 8px 28px rgba(15, 23, 42, 0.18));
3747
+ transform: translateX(-100%);
3748
+ transition: transform var(--strand-duration-normal, 200ms)
3749
+ var(--strand-ease-out-quart, ease-out);
3750
+ visibility: hidden;
3716
3751
  border-right: 0;
3717
- border-bottom: 1px solid var(--strand-gray-200);
3752
+ border-bottom: 0;
3753
+ }
3754
+
3755
+ .strand-ref-shell.is-nav-open .strand-ref-shell__sidebar {
3756
+ transform: translateX(0);
3757
+ visibility: visible;
3758
+ }
3759
+
3760
+ .strand-ref-shell__nav-scrim {
3761
+ position: fixed;
3762
+ top: var(--strand-ref-sticky-top, 0);
3763
+ left: 0;
3764
+ right: 0;
3765
+ bottom: 0;
3766
+ z-index: 75;
3767
+ background: rgba(15, 23, 42, 0.4);
3768
+ }
3769
+
3770
+ .strand-ref-shell.is-nav-open .strand-ref-shell__nav-scrim {
3771
+ display: block;
3772
+ }
3773
+
3774
+ .strand-ref-mobile-trigger {
3775
+ display: inline-flex;
3776
+ position: fixed;
3777
+ bottom: calc(env(safe-area-inset-bottom, 0px) + 16px);
3778
+ right: 16px;
3779
+ z-index: 85;
3780
+ box-shadow: var(--strand-elevation-3, 0 8px 24px rgba(15, 23, 42, 0.2));
3781
+ border-radius: var(--strand-radius-full, 9999px);
3718
3782
  }
3719
3783
 
3720
3784
  .strand-ref-shell__main {
@@ -3999,6 +4063,8 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
3999
4063
  identity on the page, so it carries the brand even at this small size. */
4000
4064
  .strand-nav__logo {
4001
4065
  flex-shrink: 0;
4066
+ display: inline-flex;
4067
+ align-items: center;
4002
4068
  margin-right: var(--strand-space-8);
4003
4069
  font-family: var(--strand-font-mono);
4004
4070
  font-size: var(--strand-text-sm);
@@ -4162,14 +4228,17 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
4162
4228
  }
4163
4229
 
4164
4230
  /* ── Mobile menu ──
4165
- Drops down from beneath the nav as an overlay. Hidden by default;
4166
- show via JS by adding strand-nav__mobile-menu--open. The position:
4167
- fixed (vs absolute on the parent nav) means the menu floats above
4168
- page content instead of pushing layout. */
4231
+ Docks immediately below its parent .strand-nav as an overlay (the
4232
+ parent has position: relative, so absolute positions against it).
4233
+ For .strand-nav--glass the parent is position: fixed, so the menu
4234
+ still anchors right under the fixed bar at viewport top. For inline
4235
+ specimens or any non-glass placement the menu drops below the nav
4236
+ in flow rather than jumping to viewport top. Hidden by default;
4237
+ show via JS by adding strand-nav__mobile-menu--open. */
4169
4238
  .strand-nav__mobile-menu {
4170
4239
  display: none;
4171
- position: fixed;
4172
- top: var(--strand-nav-height);
4240
+ position: absolute;
4241
+ top: 100%;
4173
4242
  left: 0;
4174
4243
  right: 0;
4175
4244
  flex-direction: column;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dillingerstaffing/strand-vue",
3
- "version": "0.17.0",
3
+ "version": "0.17.2",
4
4
  "description": "Strand UI - Vue 3 component library built on the Strand Design Language",
5
5
  "author": "Dillinger Staffing <engineering@dillingerstaffing.com> (https://dillingerstaffing.com)",
6
6
  "license": "MIT",
@@ -53,7 +53,7 @@
53
53
  "vue": "^3.4.0"
54
54
  },
55
55
  "dependencies": {
56
- "@dillingerstaffing/strand": "^0.17.0"
56
+ "@dillingerstaffing/strand": "^0.17.2"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@testing-library/jest-dom": "^6.6.0",