@dillingerstaffing/strand-ui 0.5.1 → 0.7.0

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.
Files changed (44) hide show
  1. package/HTML_REFERENCE.md +79 -3
  2. package/README.md +1 -1
  3. package/dist/components/Alert/Alert.d.ts.map +1 -1
  4. package/dist/components/InstrumentViewport/InstrumentViewport.d.ts +10 -0
  5. package/dist/components/InstrumentViewport/InstrumentViewport.d.ts.map +1 -0
  6. package/dist/components/InstrumentViewport/index.d.ts +3 -0
  7. package/dist/components/InstrumentViewport/index.d.ts.map +1 -0
  8. package/dist/components/ScrollReveal/ScrollReveal.d.ts +12 -0
  9. package/dist/components/ScrollReveal/ScrollReveal.d.ts.map +1 -0
  10. package/dist/components/ScrollReveal/index.d.ts +3 -0
  11. package/dist/components/ScrollReveal/index.d.ts.map +1 -0
  12. package/dist/components/Toast/Toast.d.ts.map +1 -1
  13. package/dist/css/strand-ui.css +145 -54
  14. package/dist/index.d.ts +4 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +578 -534
  17. package/package.json +2 -2
  18. package/src/__tests__/build-output.test.ts +1 -0
  19. package/src/components/Alert/Alert.css +24 -13
  20. package/src/components/Alert/Alert.test.tsx +30 -0
  21. package/src/components/Alert/Alert.tsx +4 -0
  22. package/src/components/Avatar/Avatar.css +2 -2
  23. package/src/components/Button/Button.css +4 -4
  24. package/src/components/Checkbox/Checkbox.css +3 -2
  25. package/src/components/CodeBlock/CodeBlock.css +1 -1
  26. package/src/components/FormField/FormField.css +5 -3
  27. package/src/components/InstrumentViewport/InstrumentViewport.css +36 -0
  28. package/src/components/InstrumentViewport/InstrumentViewport.test.tsx +70 -0
  29. package/src/components/InstrumentViewport/InstrumentViewport.tsx +31 -0
  30. package/src/components/InstrumentViewport/index.ts +2 -0
  31. package/src/components/Nav/Nav.css +2 -2
  32. package/src/components/Radio/Radio.css +3 -2
  33. package/src/components/ScrollReveal/ScrollReveal.css +29 -0
  34. package/src/components/ScrollReveal/ScrollReveal.test.tsx +68 -0
  35. package/src/components/ScrollReveal/ScrollReveal.tsx +64 -0
  36. package/src/components/ScrollReveal/index.ts +2 -0
  37. package/src/components/Slider/Slider.css +10 -4
  38. package/src/components/Switch/Switch.css +1 -0
  39. package/src/components/Tabs/Tabs.css +1 -1
  40. package/src/components/Tag/Tag.css +3 -3
  41. package/src/components/Toast/Toast.css +15 -17
  42. package/src/components/Toast/Toast.test.tsx +28 -0
  43. package/src/components/Toast/Toast.tsx +8 -0
  44. package/src/index.ts +8 -0
package/HTML_REFERENCE.md CHANGED
@@ -6,13 +6,30 @@
6
6
 
7
7
  > **Before writing any Strand HTML**, read [DESIGN_LANGUAGE.md Part II: Named Principles (L57-L193)](./DESIGN_LANGUAGE.md#L57). These 10 principles are hard constraints, not guidelines. Violating them produces valid HTML that looks wrong.
8
8
 
9
+ > **Principle 1 (Cognitive Economy):** Every element must earn its place. Test: remove an element. If the task still works, it was decoration. If you're not adding back 10% of what you delete, you're not deleting enough. See [DL L61-69](./DESIGN_LANGUAGE.md#L61).
10
+
11
+ > **Principle 2 (Biosynthetic Restraint):** Max 12 distinct visual elements per screen. See [DL L71-79](./DESIGN_LANGUAGE.md#L71).
12
+
9
13
  ## Required CSS
10
14
 
15
+ **CDN (no install):**
16
+
17
+ ```html
18
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@dillingerstaffing/strand@0.5/css/tokens.css">
19
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@dillingerstaffing/strand@0.5/css/reset.css">
20
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@dillingerstaffing/strand@0.5/css/base.css">
21
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@dillingerstaffing/strand-ui@0.5/dist/css/strand-ui.css">
22
+ ```
23
+
24
+ **npm:**
25
+
11
26
  ```html
12
- <link rel="stylesheet" href="path/to/@dillingerstaffing/strand/css/tokens.css">
13
- <link rel="stylesheet" href="path/to/@dillingerstaffing/strand-ui/dist/css/strand-ui.css">
27
+ <link rel="stylesheet" href="node_modules/@dillingerstaffing/strand/css/tokens.css">
28
+ <link rel="stylesheet" href="node_modules/@dillingerstaffing/strand-ui/dist/css/strand-ui.css">
14
29
  ```
15
30
 
31
+ > **Principle 7 (Grain of Precision):** Include reset.css and base.css for the laboratory surface texture (dot grid, LED glow, grain). Without these, the page is a blank canvas, not a lab. See [DL L141-147](./DESIGN_LANGUAGE.md#L141).
32
+
16
33
  > **Token roles:** Don't guess which token to use. See [DESIGN_LANGUAGE.md 3.8: Color Roles (L290-L311)](./DESIGN_LANGUAGE.md#L290) for which color in which context, and [Appendix B: Token Quick Reference (L1372-L1431)](./DESIGN_LANGUAGE.md#L1372) for the full lookup table.
17
34
 
18
35
  ## Presentation Mode
@@ -64,6 +81,10 @@ All container components (Grid, Stack, Card, Container) enforce boundary integri
64
81
 
65
82
  ## Input Components
66
83
 
84
+ > **Principle 10 (Instrument Principle):** Forms are specimen collection instruments. Labels use monospace uppercase tracking. The form should feel like filling out a specimen record, not a generic web form. See [DL L171-192](./DESIGN_LANGUAGE.md#L171).
85
+
86
+ > **Microcopy voice:** Use instrument language. "Processing..." not "Loading...". "Format unrecognized" not "Invalid input". See [DL L1034-1049](./DESIGN_LANGUAGE.md#L1034).
87
+
67
88
  > **Interaction states for all inputs** (hover, focus, pressed, disabled, loading): [DESIGN_LANGUAGE.md Part XII: Interaction State System (L1013-L1067)](./DESIGN_LANGUAGE.md#L1013).
68
89
 
69
90
  ### Button
@@ -440,7 +461,9 @@ All container components (Grid, Stack, Card, Container) enforce boundary integri
440
461
  **Gap:** `strand-grid--gap-1` through `strand-grid--gap-8`
441
462
  **Note:** For column counts beyond 4, use inline style: `style="grid-template-columns: repeat(6, 1fr); gap: var(--strand-space-4);"`.
442
463
 
443
- > **Composability:** Before nesting grids inside cards inside previews, check content width. See [DESIGN_LANGUAGE.md 10.5: Composability Constraint (L873-L877)](./DESIGN_LANGUAGE.md#L873).
464
+ > **Principle 6 (Compound Silence):** Gap between siblings must exceed padding within components. If card padding is md (24px), card-to-card gap must be at least 32px. See [DL L127-140](./DESIGN_LANGUAGE.md#L127).
465
+
466
+ > **Composability (DL 10.5):** Before nesting more than 2 padded containers, calculate remaining content width at narrowest viewport. See [DL L873-877](./DESIGN_LANGUAGE.md#L873).
444
467
 
445
468
  ---
446
469
 
@@ -604,10 +627,13 @@ All container components (Grid, Stack, Card, Container) enforce boundary integri
604
627
 
605
628
  ## Feedback Components
606
629
 
630
+ > **Microcopy voice:** Alerts are diagnostic events. Use "Process interrupted" not "Something went wrong". Use "Retry sequence" not "Please try again". See [DL L1034-1049](./DESIGN_LANGUAGE.md#L1034).
631
+
607
632
  ### Toast
608
633
 
609
634
  ```html
610
635
  <div class="strand-toast strand-toast--info" role="status" aria-live="polite">
636
+ <span class="strand-toast__status">INFO</span>
611
637
  <span class="strand-toast__message">Changes saved successfully.</span>
612
638
  <button type="button" class="strand-toast__dismiss" aria-label="Dismiss">&times;</button>
613
639
  </div>
@@ -622,6 +648,7 @@ All container components (Grid, Stack, Card, Container) enforce boundary integri
622
648
  </div>
623
649
  ```
624
650
 
651
+ **Status prefix:** Include `<span class="strand-toast__status">LABEL</span>` before the message. Labels: `INFO`, `COMPLETE` (success), `WARNING`, `ERROR`.
625
652
  **Note:** Container is fixed to bottom-right. Use `aria-live="assertive"` for `warning` and `error`.
626
653
 
627
654
  ---
@@ -630,11 +657,13 @@ All container components (Grid, Stack, Card, Container) enforce boundary integri
630
657
 
631
658
  ```html
632
659
  <div class="strand-alert strand-alert--info" role="status">
660
+ <span class="strand-alert__status">INFO</span>
633
661
  <div class="strand-alert__content">This is an informational message.</div>
634
662
  </div>
635
663
  ```
636
664
 
637
665
  **Statuses:** `strand-alert--info` | `strand-alert--success` | `strand-alert--warning` | `strand-alert--error`
666
+ **Status prefix:** Include `<span class="strand-alert__status">LABEL</span>` before the content div. Labels: `INFO`, `COMPLETE` (success), `WARNING`, `ERROR`.
638
667
  **Dismissible:** Add `<button type="button" class="strand-alert__dismiss" aria-label="Dismiss">&times;</button>` after content.
639
668
  **Note:** Use `role="alert"` for `warning` and `error`, `role="status"` for `info` and `success`.
640
669
 
@@ -758,3 +787,50 @@ All container components (Grid, Stack, Card, Container) enforce boundary integri
758
787
  **Note:** Always include `aria-hidden="true"`. Skeletons are placeholder visuals, not interactive.
759
788
 
760
789
  > **Animation:** Shimmer is 1.8s cycle. All animations respect `prefers-reduced-motion`. See [DESIGN_LANGUAGE.md 6.7: Reduced Motion (L656-L669)](./DESIGN_LANGUAGE.md#L656).
790
+
791
+ ---
792
+
793
+ ## InstrumentViewport
794
+
795
+ ```html
796
+ <div class="strand-instrument-viewport">
797
+ <!-- Dark data-dense content -->
798
+ </div>
799
+
800
+ <!-- With grid overlay -->
801
+ <div class="strand-instrument-viewport strand-instrument-viewport--grid">
802
+ <!-- Dark content with grid lines -->
803
+ </div>
804
+ ```
805
+
806
+ > **Dual-surface principle:** The white lab frame contains dark instrument viewports for data-dense contexts (maps, charts, terminal displays). The viewport is recessed INTO the lab, not floating above it. See [DL L795-814](./DESIGN_LANGUAGE.md#L795).
807
+
808
+ > **Decision framework:** Use dark viewport for data-dense displays. Use clean white for dashboards. Use lab surface for content pages. See [DL L816-825](./DESIGN_LANGUAGE.md#L816).
809
+
810
+ ---
811
+
812
+ ## ScrollReveal
813
+
814
+ ```html
815
+ <div class="strand-reveal">Fades up on scroll</div>
816
+
817
+ <div class="strand-reveal-group">
818
+ <div class="strand-reveal">Staggers 0ms</div>
819
+ <div class="strand-reveal">Staggers 80ms</div>
820
+ <div class="strand-reveal">Staggers 160ms</div>
821
+ </div>
822
+ ```
823
+
824
+ > **Scientific reveal:** Scroll-triggered entrance. 24px translate, trigger once. Stagger 80ms between siblings. See [DL L538-563](./DESIGN_LANGUAGE.md#L538).
825
+
826
+ ---
827
+
828
+ ## Accessibility and Motion
829
+
830
+ > **Accessibility checklist:** Exactly one h1 per page. Heading hierarchy (no skipping levels). All form inputs have visible labels. ARIA labels on non-text controls. ARIA live regions on dynamic content. Landmark regions (nav, main, footer). See [DL L1206-1213](./DESIGN_LANGUAGE.md#L1206).
831
+
832
+ > **Touch targets:** All interactive elements must be at least 44x44px. See [DL L1215-1217](./DESIGN_LANGUAGE.md#L1215).
833
+
834
+ > **Keyboard navigation:** Tab/Shift+Tab reaches all interactive elements. Arrow keys navigate within Tabs and menus (requires JavaScript). Escape closes overlays. Enter/Space activates buttons. Dialog must trap focus. See [DL L1197-1204](./DESIGN_LANGUAGE.md#L1197).
835
+
836
+ > **Motion anti-patterns (never do):** Never re-animate on viewport exit/re-enter. Never hijack scroll. Never animate width/height/margin/padding (use transform). Never use bounce/elastic easing. Never animate more than 3-4 elements simultaneously. Never use parallax on text. See [DL L671-680](./DESIGN_LANGUAGE.md#L671).
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @dillingerstaffing/strand-ui
2
2
 
3
- Preact/React component library built on the [Strand Design Language](https://github.com/dillingerstaffing/strand/blob/main/DESIGN_LANGUAGE.md). 32 components. Zero-runtime CSS. WCAG 2.2 AA.
3
+ Preact/React component library built on the [Strand Design Language](https://github.com/dillingerstaffing/strand/blob/main/DESIGN_LANGUAGE.md). 34 components. Zero-runtime CSS. WCAG 2.2 AA.
4
4
 
5
5
  ## Install
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/components/Alert/Alert.tsx"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAGrD,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1D,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAClD,0BAA0B;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,KAAK;;EAuCjB,CAAC"}
1
+ {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/components/Alert/Alert.tsx"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAGrD,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1D,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAClD,0BAA0B;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,KAAK;;EA2CjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /*! Strand UI | MIT License | dillingerstaffing.com */
2
+ import type { JSX } from "preact";
3
+ export interface InstrumentViewportProps extends JSX.HTMLAttributes<HTMLDivElement> {
4
+ /** Show subtle grid overlay */
5
+ grid?: boolean;
6
+ }
7
+ export declare const InstrumentViewport: import("preact").FunctionalComponent<import("preact/compat").PropsWithoutRef<InstrumentViewportProps> & {
8
+ ref?: import("preact").Ref<HTMLDivElement> | undefined;
9
+ }>;
10
+ //# sourceMappingURL=InstrumentViewport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InstrumentViewport.d.ts","sourceRoot":"","sources":["../../../src/components/InstrumentViewport/InstrumentViewport.tsx"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAGlC,MAAM,WAAW,uBACf,SAAQ,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1C,+BAA+B;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,kBAAkB;;EAiB7B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { InstrumentViewport } from "./InstrumentViewport.js";
2
+ export type { InstrumentViewportProps } from "./InstrumentViewport.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/InstrumentViewport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /*! Strand UI | MIT License | dillingerstaffing.com */
2
+ import type { JSX } from "preact";
3
+ export interface ScrollRevealProps extends JSX.HTMLAttributes<HTMLDivElement> {
4
+ /** IntersectionObserver visibility threshold (0-1) */
5
+ threshold?: number;
6
+ /** Only trigger reveal once */
7
+ once?: boolean;
8
+ }
9
+ export declare const ScrollReveal: import("preact").FunctionalComponent<import("preact/compat").PropsWithoutRef<ScrollRevealProps> & {
10
+ ref?: import("preact").Ref<HTMLDivElement> | undefined;
11
+ }>;
12
+ //# sourceMappingURL=ScrollReveal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollReveal.d.ts","sourceRoot":"","sources":["../../../src/components/ScrollReveal/ScrollReveal.tsx"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAIlC,MAAM,WAAW,iBACf,SAAQ,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1C,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,YAAY;;EA+CxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ScrollReveal } from "./ScrollReveal.js";
2
+ export type { ScrollRevealProps } from "./ScrollReveal.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ScrollReveal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAKrD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD,UAAU,iBAAiB;IACzB,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;CACxC;AAID,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,aAAa;8BAAkC,kBAAkB;;CAqC7E,CAAC;AAoDF,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1D,oBAAoB;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,KAAK;;EAkCjB,CAAC"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAKrD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD,UAAU,iBAAiB;IACzB,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;CACxC;AAID,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,aAAa;8BAAkC,kBAAkB;;CAqC7E,CAAC;AAwDF,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1D,oBAAoB;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,KAAK;;EAsCjB,CAAC"}
@@ -11,34 +11,45 @@
11
11
  justify-content: space-between;
12
12
  width: 100%;
13
13
  padding: var(--strand-space-6);
14
- padding-left: var(--strand-space-5);
15
14
  border-radius: var(--strand-radius-md);
16
- border-left: 4px solid transparent;
17
15
  font-family: var(--strand-font-sans);
18
16
  font-size: var(--strand-text-sm);
17
+ background: var(--strand-surface-recessed);
19
18
  }
20
19
 
21
- /* ── Status variants ── */
20
+ /* ── Status variants (neutral background, status color on prefix only) ── */
22
21
  .strand-alert--info {
23
- background: var(--strand-blue-glow);
24
- border-left-color: var(--strand-blue-primary);
22
+ background: var(--strand-surface-recessed);
25
23
  }
26
24
 
27
25
  .strand-alert--success {
28
- background: rgba(34, 197, 94, 0.08);
29
- border-left-color: var(--strand-green-positive);
26
+ background: var(--strand-surface-recessed);
30
27
  }
31
28
 
32
29
  .strand-alert--warning {
33
- background: rgba(245, 158, 11, 0.08);
34
- border-left-color: var(--strand-amber-caution);
30
+ background: var(--strand-surface-recessed);
35
31
  }
36
32
 
37
33
  .strand-alert--error {
38
- background: rgba(239, 68, 68, 0.08);
39
- border-left-color: var(--strand-red-alert);
34
+ background: var(--strand-surface-recessed);
35
+ }
36
+
37
+ /* ── Status prefix ── */
38
+ .strand-alert__status {
39
+ font-family: var(--strand-font-mono);
40
+ font-size: var(--strand-text-xs);
41
+ font-weight: var(--strand-weight-semibold);
42
+ letter-spacing: var(--strand-tracking-wider);
43
+ text-transform: uppercase;
44
+ margin-right: var(--strand-space-3);
45
+ flex-shrink: 0;
40
46
  }
41
47
 
48
+ .strand-alert--info .strand-alert__status { color: var(--strand-blue-primary); }
49
+ .strand-alert--success .strand-alert__status { color: var(--strand-teal-vital); }
50
+ .strand-alert--warning .strand-alert__status { color: var(--strand-amber-caution); }
51
+ .strand-alert--error .strand-alert__status { color: var(--strand-red-alert); }
52
+
42
53
  /* ── Content ── */
43
54
  .strand-alert__content {
44
55
  flex: 1;
@@ -51,8 +62,8 @@
51
62
  display: inline-flex;
52
63
  align-items: center;
53
64
  justify-content: center;
54
- width: 24px;
55
- height: 24px;
65
+ width: var(--strand-space-6);
66
+ height: var(--strand-space-6);
56
67
  margin-left: var(--strand-space-4);
57
68
  padding: 0;
58
69
  border: none;
@@ -130,8 +141,8 @@
130
141
  }
131
142
 
132
143
  .strand-avatar--xl {
133
- width: 64px;
134
- height: 64px;
144
+ width: var(--strand-space-16);
145
+ height: var(--strand-space-16);
135
146
  font-size: var(--strand-text-lg);
136
147
  }
137
148
 
@@ -304,13 +315,13 @@
304
315
  .strand-btn--sm {
305
316
  padding: var(--strand-space-1) var(--strand-space-3);
306
317
  font-size: var(--strand-text-sm);
307
- min-height: 32px;
318
+ min-height: var(--strand-touch-target);
308
319
  }
309
320
 
310
321
  .strand-btn--md {
311
322
  padding: calc(var(--strand-space-2) + var(--strand-space-1) / 2) var(--strand-space-5);
312
323
  font-size: var(--strand-text-sm);
313
- min-height: 40px;
324
+ min-height: var(--strand-touch-target);
314
325
  }
315
326
 
316
327
  .strand-btn--lg {
@@ -322,12 +333,12 @@
322
333
  /* ── Icon-only ── */
323
334
  .strand-btn--icon-only.strand-btn--sm {
324
335
  padding: var(--strand-space-1);
325
- min-width: 32px;
336
+ min-width: var(--strand-touch-target);
326
337
  }
327
338
 
328
339
  .strand-btn--icon-only.strand-btn--md {
329
340
  padding: var(--strand-space-2);
330
- min-width: 40px;
341
+ min-width: var(--strand-touch-target);
331
342
  }
332
343
 
333
344
  .strand-btn--icon-only.strand-btn--lg {
@@ -541,6 +552,7 @@
541
552
  display: inline-flex;
542
553
  align-items: center;
543
554
  gap: var(--strand-space-2);
555
+ min-height: var(--strand-touch-target);
544
556
  cursor: pointer;
545
557
  user-select: none;
546
558
  font-family: var(--strand-font-sans);
@@ -567,8 +579,8 @@
567
579
  display: flex;
568
580
  align-items: center;
569
581
  justify-content: center;
570
- width: 18px;
571
- height: 18px;
582
+ width: var(--strand-control-size);
583
+ height: var(--strand-control-size);
572
584
  border: 1px solid var(--strand-gray-200);
573
585
  border-radius: var(--strand-radius-sm);
574
586
  background: var(--strand-surface-elevated);
@@ -660,7 +672,7 @@
660
672
  line-height: var(--strand-leading-relaxed);
661
673
  color: var(--strand-blue-midnight);
662
674
  background: var(--strand-surface-recessed);
663
- box-shadow: inset 0 1px 3px rgba(15, 23, 42, 0.06);
675
+ box-shadow: inset 0 1px 3px rgba(15, 23, 42, 0.06); /* strand-blue-abyss at 6% opacity */
664
676
  border-radius: var(--strand-radius-lg);
665
677
  padding: var(--strand-space-3) var(--strand-space-4);
666
678
  overflow-x: auto;
@@ -893,10 +905,12 @@
893
905
 
894
906
  /* ── Label ── */
895
907
  .strand-form-field__label {
896
- font-family: var(--strand-font-sans);
897
- font-size: var(--strand-text-sm);
908
+ font-family: var(--strand-font-mono);
909
+ font-size: var(--strand-text-xs);
898
910
  font-weight: var(--strand-weight-medium);
899
- color: var(--strand-gray-700);
911
+ letter-spacing: var(--strand-tracking-widest);
912
+ text-transform: uppercase;
913
+ color: var(--strand-gray-500);
900
914
  line-height: var(--strand-leading-snug);
901
915
  }
902
916
 
@@ -1051,6 +1065,45 @@
1051
1065
  }
1052
1066
 
1053
1067
 
1068
+ /* InstrumentViewport */
1069
+ /*! Strand UI | MIT License | dillingerstaffing.com */
1070
+
1071
+ .strand-instrument-viewport {
1072
+ background: var(--strand-blue-abyss);
1073
+ color: var(--strand-gray-100);
1074
+ border-radius: var(--strand-radius-lg);
1075
+ overflow: hidden;
1076
+ position: relative;
1077
+ }
1078
+
1079
+ .strand-instrument-viewport__label {
1080
+ color: var(--strand-gray-400);
1081
+ font-family: var(--strand-font-mono);
1082
+ font-size: var(--strand-text-xs);
1083
+ font-weight: var(--strand-weight-medium);
1084
+ letter-spacing: var(--strand-tracking-widest);
1085
+ text-transform: uppercase;
1086
+ }
1087
+
1088
+ .strand-instrument-viewport__value {
1089
+ color: var(--strand-on-blue-primary);
1090
+ font-family: var(--strand-font-mono);
1091
+ font-variant-numeric: tabular-nums;
1092
+ }
1093
+
1094
+ /* Optional grid overlay */
1095
+ .strand-instrument-viewport--grid::before {
1096
+ content: '';
1097
+ position: absolute;
1098
+ inset: 0;
1099
+ background:
1100
+ linear-gradient(rgba(59, 142, 246, 0.04) 1px, transparent 1px),
1101
+ linear-gradient(90deg, rgba(59, 142, 246, 0.04) 1px, transparent 1px);
1102
+ background-size: var(--strand-viewport-grid-size) var(--strand-viewport-grid-size);
1103
+ pointer-events: none;
1104
+ }
1105
+
1106
+
1054
1107
  /* Link */
1055
1108
  /*! Strand UI | MIT License | dillingerstaffing.com */
1056
1109
 
@@ -1091,7 +1144,7 @@
1091
1144
  .strand-nav {
1092
1145
  position: relative;
1093
1146
  width: 100%;
1094
- height: 64px;
1147
+ height: var(--strand-nav-height);
1095
1148
  background: var(--strand-surface-elevated);
1096
1149
  border-bottom: 1px solid var(--strand-gray-200);
1097
1150
  font-family: var(--strand-font-sans);
@@ -1252,7 +1305,7 @@
1252
1305
 
1253
1306
  .strand-nav {
1254
1307
  height: auto;
1255
- min-height: 64px;
1308
+ min-height: var(--strand-nav-height);
1256
1309
  }
1257
1310
  }
1258
1311
 
@@ -1370,6 +1423,7 @@
1370
1423
  display: inline-flex;
1371
1424
  align-items: center;
1372
1425
  gap: var(--strand-space-2);
1426
+ min-height: var(--strand-touch-target);
1373
1427
  cursor: pointer;
1374
1428
  user-select: none;
1375
1429
  font-family: var(--strand-font-sans);
@@ -1396,8 +1450,8 @@
1396
1450
  display: flex;
1397
1451
  align-items: center;
1398
1452
  justify-content: center;
1399
- width: 18px;
1400
- height: 18px;
1453
+ width: var(--strand-control-size);
1454
+ height: var(--strand-control-size);
1401
1455
  border: 1px solid var(--strand-gray-200);
1402
1456
  border-radius: var(--strand-radius-full);
1403
1457
  background: var(--strand-surface-elevated);
@@ -1463,6 +1517,38 @@
1463
1517
  }
1464
1518
 
1465
1519
 
1520
+ /* ScrollReveal */
1521
+ /*! Strand UI | MIT License | dillingerstaffing.com */
1522
+
1523
+ .strand-reveal {
1524
+ opacity: 0;
1525
+ transform: translateY(24px);
1526
+ transition: opacity var(--strand-duration-glacial) var(--strand-ease-out-expo),
1527
+ transform var(--strand-duration-glacial) var(--strand-ease-out-expo);
1528
+ }
1529
+
1530
+ .strand-reveal--visible {
1531
+ opacity: 1;
1532
+ transform: translateY(0);
1533
+ }
1534
+
1535
+ /* Stagger children */
1536
+ .strand-reveal-group > .strand-reveal:nth-child(1) { transition-delay: 0ms; }
1537
+ .strand-reveal-group > .strand-reveal:nth-child(2) { transition-delay: var(--strand-stagger-delay); }
1538
+ .strand-reveal-group > .strand-reveal:nth-child(3) { transition-delay: calc(var(--strand-stagger-delay) * 2); }
1539
+ .strand-reveal-group > .strand-reveal:nth-child(4) { transition-delay: calc(var(--strand-stagger-delay) * 3); }
1540
+ .strand-reveal-group > .strand-reveal:nth-child(5) { transition-delay: calc(var(--strand-stagger-delay) * 4); }
1541
+ .strand-reveal-group > .strand-reveal:nth-child(6) { transition-delay: var(--strand-duration-slow); }
1542
+
1543
+ @media (prefers-reduced-motion: reduce) {
1544
+ .strand-reveal {
1545
+ opacity: 1;
1546
+ transform: none;
1547
+ transition: none;
1548
+ }
1549
+ }
1550
+
1551
+
1466
1552
  /* Section */
1467
1553
  /*! Strand UI | MIT License | dillingerstaffing.com */
1468
1554
 
@@ -1650,14 +1736,15 @@
1650
1736
  transition: background var(--strand-duration-fast) var(--strand-ease-out-quart);
1651
1737
  }
1652
1738
 
1653
- /* ── Thumb: Webkit ── */
1739
+ /* ── Thumb: Webkit (44px touch target, 20px visual) ── */
1654
1740
  .strand-slider__field::-webkit-slider-thumb {
1655
1741
  appearance: none;
1656
1742
  width: 20px;
1657
1743
  height: 20px;
1658
1744
  background: var(--strand-blue-primary);
1659
- border: 2px solid var(--strand-surface-elevated);
1745
+ border: 12px solid transparent;
1660
1746
  border-radius: var(--strand-radius-full);
1747
+ background-clip: padding-box;
1661
1748
  cursor: pointer;
1662
1749
  box-shadow: var(--strand-elevation-1);
1663
1750
  transition:
@@ -1667,21 +1754,24 @@
1667
1754
 
1668
1755
  .strand-slider__field:hover:not(:disabled)::-webkit-slider-thumb {
1669
1756
  background: var(--strand-blue-vivid);
1757
+ background-clip: padding-box;
1670
1758
  transform: scale(1.15);
1671
1759
  }
1672
1760
 
1673
1761
  .strand-slider__field:active:not(:disabled)::-webkit-slider-thumb {
1674
1762
  background: var(--strand-blue-deep);
1763
+ background-clip: padding-box;
1675
1764
  transform: scale(1.05);
1676
1765
  }
1677
1766
 
1678
- /* ── Thumb: Firefox ── */
1767
+ /* ── Thumb: Firefox (44px touch target, 20px visual) ── */
1679
1768
  .strand-slider__field::-moz-range-thumb {
1680
1769
  width: 20px;
1681
1770
  height: 20px;
1682
1771
  background: var(--strand-blue-primary);
1683
- border: 2px solid var(--strand-surface-elevated);
1772
+ border: 12px solid transparent;
1684
1773
  border-radius: var(--strand-radius-full);
1774
+ background-clip: padding-box;
1685
1775
  cursor: pointer;
1686
1776
  box-shadow: var(--strand-elevation-1);
1687
1777
  transition:
@@ -1691,11 +1781,13 @@
1691
1781
 
1692
1782
  .strand-slider__field:hover:not(:disabled)::-moz-range-thumb {
1693
1783
  background: var(--strand-blue-vivid);
1784
+ background-clip: padding-box;
1694
1785
  transform: scale(1.15);
1695
1786
  }
1696
1787
 
1697
1788
  .strand-slider__field:active:not(:disabled)::-moz-range-thumb {
1698
1789
  background: var(--strand-blue-deep);
1790
+ background-clip: padding-box;
1699
1791
  transform: scale(1.05);
1700
1792
  }
1701
1793
 
@@ -1883,6 +1975,7 @@
1883
1975
  display: inline-flex;
1884
1976
  align-items: center;
1885
1977
  gap: var(--strand-space-2);
1978
+ min-height: var(--strand-touch-target);
1886
1979
  cursor: pointer;
1887
1980
  user-select: none;
1888
1981
  font-family: var(--strand-font-sans);
@@ -2065,7 +2158,7 @@
2065
2158
  .strand-tabs [role="tablist"] {
2066
2159
  display: flex;
2067
2160
  gap: var(--strand-space-1);
2068
- border-bottom: 1px solid var(--strand-gray-400);
2161
+ border-bottom: 1px solid var(--strand-gray-200);
2069
2162
  }
2070
2163
 
2071
2164
  /* ── Tab button ── */
@@ -2137,7 +2230,7 @@
2137
2230
  }
2138
2231
 
2139
2232
  .strand-tag--solid.strand-tag--teal {
2140
- background: rgba(20, 184, 166, 0.1);
2233
+ background: var(--strand-surface-recessed);
2141
2234
  color: var(--strand-on-teal-tint);
2142
2235
  }
2143
2236
 
@@ -2147,12 +2240,12 @@
2147
2240
  }
2148
2241
 
2149
2242
  .strand-tag--solid.strand-tag--amber {
2150
- background: rgba(245, 158, 11, 0.1);
2243
+ background: var(--strand-surface-recessed);
2151
2244
  color: var(--strand-on-amber-tint);
2152
2245
  }
2153
2246
 
2154
2247
  .strand-tag--solid.strand-tag--red {
2155
- background: rgba(239, 68, 68, 0.1);
2248
+ background: var(--strand-surface-recessed);
2156
2249
  color: var(--strand-on-red-tint);
2157
2250
  }
2158
2251
 
@@ -2321,7 +2414,6 @@
2321
2414
  padding: var(--strand-space-4) var(--strand-space-5);
2322
2415
  background: var(--strand-surface-elevated);
2323
2416
  border-radius: var(--strand-radius-lg);
2324
- border-left: 4px solid transparent;
2325
2417
  box-shadow: var(--strand-elevation-3);
2326
2418
  font-family: var(--strand-font-sans);
2327
2419
  font-size: var(--strand-text-sm);
@@ -2329,22 +2421,21 @@
2329
2421
  animation: strand-toast-in var(--strand-duration-normal) var(--strand-ease-out-expo);
2330
2422
  }
2331
2423
 
2332
- /* ── Status accents ── */
2333
- .strand-toast--info {
2334
- border-left-color: var(--strand-blue-primary);
2335
- }
2336
-
2337
- .strand-toast--success {
2338
- border-left-color: var(--strand-green-positive);
2339
- }
2340
-
2341
- .strand-toast--warning {
2342
- border-left-color: var(--strand-amber-caution);
2424
+ /* ── Status prefix ── */
2425
+ .strand-toast__status {
2426
+ font-family: var(--strand-font-mono);
2427
+ font-size: var(--strand-text-xs);
2428
+ font-weight: var(--strand-weight-semibold);
2429
+ letter-spacing: var(--strand-tracking-wider);
2430
+ text-transform: uppercase;
2431
+ margin-right: var(--strand-space-3);
2432
+ flex-shrink: 0;
2343
2433
  }
2344
2434
 
2345
- .strand-toast--error {
2346
- border-left-color: var(--strand-red-alert);
2347
- }
2435
+ .strand-toast--info .strand-toast__status { color: var(--strand-blue-primary); }
2436
+ .strand-toast--success .strand-toast__status { color: var(--strand-teal-vital); }
2437
+ .strand-toast--warning .strand-toast__status { color: var(--strand-amber-caution); }
2438
+ .strand-toast--error .strand-toast__status { color: var(--strand-red-alert); }
2348
2439
 
2349
2440
  /* ── Message ── */
2350
2441
  .strand-toast__message {
@@ -2359,8 +2450,8 @@
2359
2450
  display: inline-flex;
2360
2451
  align-items: center;
2361
2452
  justify-content: center;
2362
- width: 24px;
2363
- height: 24px;
2453
+ width: var(--strand-space-6);
2454
+ height: var(--strand-space-6);
2364
2455
  margin-left: var(--strand-space-3);
2365
2456
  padding: 0;
2366
2457
  border: none;
package/dist/index.d.ts CHANGED
@@ -63,4 +63,8 @@ export { Spinner } from "./components/Spinner/index.js";
63
63
  export type { SpinnerProps } from "./components/Spinner/index.js";
64
64
  export { Skeleton } from "./components/Skeleton/index.js";
65
65
  export type { SkeletonProps } from "./components/Skeleton/index.js";
66
+ export { InstrumentViewport } from "./components/InstrumentViewport/index.js";
67
+ export type { InstrumentViewportProps } from "./components/InstrumentViewport/index.js";
68
+ export { ScrollReveal } from "./components/ScrollReveal/index.js";
69
+ export type { ScrollRevealProps } from "./components/ScrollReveal/index.js";
66
70
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}