stimeo-ui 0.3.0 → 0.5.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 (148) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/dist/controllers/alert_dialog_controller.js +32 -5
  3. package/dist/controllers/alert_dialog_controller.js.map +1 -1
  4. package/dist/controllers/announcer_controller.d.ts +32 -6
  5. package/dist/controllers/announcer_controller.js +255 -20
  6. package/dist/controllers/announcer_controller.js.map +1 -1
  7. package/dist/controllers/aspect_ratio_controller.d.ts +2 -2
  8. package/dist/controllers/aspect_ratio_controller.js +1 -1
  9. package/dist/controllers/aspect_ratio_controller.js.map +1 -1
  10. package/dist/controllers/breadcrumb_controller.js +5 -1
  11. package/dist/controllers/breadcrumb_controller.js.map +1 -1
  12. package/dist/controllers/carousel_controller.js +5 -1
  13. package/dist/controllers/carousel_controller.js.map +1 -1
  14. package/dist/controllers/clipboard_controller.js +8 -3
  15. package/dist/controllers/clipboard_controller.js.map +1 -1
  16. package/dist/controllers/collapsible_controller.d.ts +1 -1
  17. package/dist/controllers/collapsible_controller.js +4 -1
  18. package/dist/controllers/collapsible_controller.js.map +1 -1
  19. package/dist/controllers/color_picker_controller.d.ts +4 -3
  20. package/dist/controllers/color_picker_controller.js +52 -2
  21. package/dist/controllers/color_picker_controller.js.map +1 -1
  22. package/dist/controllers/combobox_controller.js.map +1 -1
  23. package/dist/controllers/command_palette_controller.js +32 -5
  24. package/dist/controllers/command_palette_controller.js.map +1 -1
  25. package/dist/controllers/confirm_controller.js +32 -5
  26. package/dist/controllers/confirm_controller.js.map +1 -1
  27. package/dist/controllers/context_menu_controller.d.ts +1 -1
  28. package/dist/controllers/context_menu_controller.js +2 -2
  29. package/dist/controllers/context_menu_controller.js.map +1 -1
  30. package/dist/controllers/countdown_controller.d.ts +24 -8
  31. package/dist/controllers/countdown_controller.js +117 -13
  32. package/dist/controllers/countdown_controller.js.map +1 -1
  33. package/dist/controllers/date_range_picker_controller.d.ts +4 -1
  34. package/dist/controllers/date_range_picker_controller.js +55 -1
  35. package/dist/controllers/date_range_picker_controller.js.map +1 -1
  36. package/dist/controllers/dialog_controller.js +32 -5
  37. package/dist/controllers/dialog_controller.js.map +1 -1
  38. package/dist/controllers/direct_upload_controller.d.ts +1 -1
  39. package/dist/controllers/direct_upload_controller.js +3 -3
  40. package/dist/controllers/direct_upload_controller.js.map +1 -1
  41. package/dist/controllers/dismissible_controller.js.map +1 -1
  42. package/dist/controllers/drawer_controller.js +32 -5
  43. package/dist/controllers/drawer_controller.js.map +1 -1
  44. package/dist/controllers/empty_state_controller.d.ts +36 -11
  45. package/dist/controllers/empty_state_controller.js +128 -23
  46. package/dist/controllers/empty_state_controller.js.map +1 -1
  47. package/dist/controllers/flash_controller.d.ts +25 -5
  48. package/dist/controllers/flash_controller.js +161 -21
  49. package/dist/controllers/flash_controller.js.map +1 -1
  50. package/dist/controllers/focus_controller.js +32 -5
  51. package/dist/controllers/focus_controller.js.map +1 -1
  52. package/dist/controllers/form_validation_controller.js +8 -2
  53. package/dist/controllers/form_validation_controller.js.map +1 -1
  54. package/dist/controllers/frame_loading_controller.d.ts +31 -3
  55. package/dist/controllers/frame_loading_controller.js +261 -27
  56. package/dist/controllers/frame_loading_controller.js.map +1 -1
  57. package/dist/controllers/highlight_controller.d.ts +8 -4
  58. package/dist/controllers/highlight_controller.js +38 -1
  59. package/dist/controllers/highlight_controller.js.map +1 -1
  60. package/dist/controllers/idle_controller.d.ts +2 -1
  61. package/dist/controllers/idle_controller.js +13 -2
  62. package/dist/controllers/idle_controller.js.map +1 -1
  63. package/dist/controllers/listbox_controller.js.map +1 -1
  64. package/dist/controllers/local_time_controller.d.ts +19 -3
  65. package/dist/controllers/local_time_controller.js +102 -6
  66. package/dist/controllers/local_time_controller.js.map +1 -1
  67. package/dist/controllers/masonry_controller.d.ts +1 -1
  68. package/dist/controllers/masonry_controller.js +1 -1
  69. package/dist/controllers/masonry_controller.js.map +1 -1
  70. package/dist/controllers/meter_controller.d.ts +22 -2
  71. package/dist/controllers/meter_controller.js +147 -26
  72. package/dist/controllers/meter_controller.js.map +1 -1
  73. package/dist/controllers/multi_select_controller.js.map +1 -1
  74. package/dist/controllers/network_status_controller.d.ts +25 -11
  75. package/dist/controllers/network_status_controller.js +29 -11
  76. package/dist/controllers/network_status_controller.js.map +1 -1
  77. package/dist/controllers/number_input_controller.d.ts +8 -0
  78. package/dist/controllers/number_input_controller.js +191 -24
  79. package/dist/controllers/number_input_controller.js.map +1 -1
  80. package/dist/controllers/overflow_menu_controller.js +34 -7
  81. package/dist/controllers/overflow_menu_controller.js.map +1 -1
  82. package/dist/controllers/pagination_controller.js +5 -1
  83. package/dist/controllers/pagination_controller.js.map +1 -1
  84. package/dist/controllers/password_strength_controller.d.ts +1 -1
  85. package/dist/controllers/password_strength_controller.js +1 -1
  86. package/dist/controllers/password_strength_controller.js.map +1 -1
  87. package/dist/controllers/pointer_drag_controller.js +10 -0
  88. package/dist/controllers/pointer_drag_controller.js.map +1 -1
  89. package/dist/controllers/portal_controller.js +10 -0
  90. package/dist/controllers/portal_controller.js.map +1 -1
  91. package/dist/controllers/progress_controller.d.ts +17 -2
  92. package/dist/controllers/progress_controller.js +123 -12
  93. package/dist/controllers/progress_controller.js.map +1 -1
  94. package/dist/controllers/range_slider_controller.d.ts +27 -1
  95. package/dist/controllers/range_slider_controller.js +449 -93
  96. package/dist/controllers/range_slider_controller.js.map +1 -1
  97. package/dist/controllers/rating_controller.d.ts +4 -1
  98. package/dist/controllers/rating_controller.js +55 -0
  99. package/dist/controllers/rating_controller.js.map +1 -1
  100. package/dist/controllers/relative_time_controller.d.ts +13 -0
  101. package/dist/controllers/relative_time_controller.js +135 -12
  102. package/dist/controllers/relative_time_controller.js.map +1 -1
  103. package/dist/controllers/scroll_area_controller.d.ts +1 -1
  104. package/dist/controllers/scroll_area_controller.js +1 -1
  105. package/dist/controllers/scroll_area_controller.js.map +1 -1
  106. package/dist/controllers/separator_controller.js +13 -17
  107. package/dist/controllers/separator_controller.js.map +1 -1
  108. package/dist/controllers/sidebar_controller.d.ts +1 -11
  109. package/dist/controllers/sidebar_controller.js +37 -8
  110. package/dist/controllers/sidebar_controller.js.map +1 -1
  111. package/dist/controllers/skeleton_controller.d.ts +7 -2
  112. package/dist/controllers/skeleton_controller.js +143 -22
  113. package/dist/controllers/skeleton_controller.js.map +1 -1
  114. package/dist/controllers/slider_controller.d.ts +17 -1
  115. package/dist/controllers/slider_controller.js +342 -50
  116. package/dist/controllers/slider_controller.js.map +1 -1
  117. package/dist/controllers/spinner_controller.d.ts +50 -12
  118. package/dist/controllers/spinner_controller.js +244 -28
  119. package/dist/controllers/spinner_controller.js.map +1 -1
  120. package/dist/controllers/step_indicator_controller.d.ts +13 -2
  121. package/dist/controllers/step_indicator_controller.js +85 -6
  122. package/dist/controllers/step_indicator_controller.js.map +1 -1
  123. package/dist/controllers/stepper_controller.js +2 -0
  124. package/dist/controllers/stepper_controller.js.map +1 -1
  125. package/dist/controllers/stick_to_bottom_controller.d.ts +26 -2
  126. package/dist/controllers/stick_to_bottom_controller.js +60 -10
  127. package/dist/controllers/stick_to_bottom_controller.js.map +1 -1
  128. package/dist/controllers/switch_controller.d.ts +12 -8
  129. package/dist/controllers/switch_controller.js +162 -18
  130. package/dist/controllers/switch_controller.js.map +1 -1
  131. package/dist/controllers/textarea_autosize_controller.js +1 -1
  132. package/dist/controllers/textarea_autosize_controller.js.map +1 -1
  133. package/dist/controllers/time_picker_controller.d.ts +3 -0
  134. package/dist/controllers/time_picker_controller.js +6 -3
  135. package/dist/controllers/time_picker_controller.js.map +1 -1
  136. package/dist/controllers/tree_view_controller.d.ts +1 -2
  137. package/dist/controllers/tree_view_controller.js +19 -1
  138. package/dist/controllers/tree_view_controller.js.map +1 -1
  139. package/dist/index.js +2278 -596
  140. package/dist/index.js.map +1 -1
  141. package/dist/inspector/cli.d.ts +76 -1
  142. package/dist/inspector/cli.js +937 -76
  143. package/dist/inspector/cli.js.map +1 -1
  144. package/dist/inspector/cli_bin.js +997 -78
  145. package/dist/inspector/cli_bin.js.map +1 -1
  146. package/dist/inspector/examples.json +20 -20
  147. package/dist/inspector/manifest.json +428 -33
  148. package/package.json +3 -3
@@ -23,6 +23,14 @@ interface ControllerManifest {
23
23
  readonly targets: readonly string[];
24
24
  /** Value names (camelCase) declared via `static values`. */
25
25
  readonly values: readonly string[];
26
+ /**
27
+ * Authoring constraints for literal Stimulus Values (stage 1). Reflection can
28
+ * expose a Value's name and decoder, but not semantic bounds such as a
29
+ * strictly positive step, so those contracts stay explicit and reviewable.
30
+ */
31
+ readonly valueConstraints: readonly ValueConstraint[];
32
+ /** Statically decidable relationships between literal Stimulus Values. */
33
+ readonly valueRelations: readonly ValueRelation[];
26
34
  /**
27
35
  * Public action method names declared via `static actions`, wired by
28
36
  * consumers as `data-action="…-><identifier>#<action>"`.
@@ -57,6 +65,13 @@ interface ControllerManifest {
57
65
  * toolbar, radio group, …) are deliberately excluded.
58
66
  */
59
67
  readonly keyboard: readonly KeyboardRequirement[];
68
+ /**
69
+ * Host-element contracts (stage 3): scope or target elements that must avoid
70
+ * native interactive semantics the controller cannot safely compose with.
71
+ * A rule may explicitly admit non-submitting buttons when the controller
72
+ * delegates their native activation to the browser.
73
+ */
74
+ readonly hosts: readonly HostRequirement[];
60
75
  /**
61
76
  * Author-futile attributes (stage 3): ARIA the controller recomputes
62
77
  * wholesale at runtime, where an authored value can neither
@@ -328,6 +343,27 @@ interface KeyboardRequirement {
328
343
  /** Human-readable fix suggestion shown by the CLI (stage 4). */
329
344
  readonly suggestion: string;
330
345
  }
346
+ /**
347
+ * A host-element contract (stage 3): the element carrying a controller or one
348
+ * of its targets must use semantics the controller can own without competing
349
+ * with another native interaction.
350
+ *
351
+ * `"non-interactive"` admits only generic, non-interactive elements.
352
+ * `"non-interactive-or-button"` additionally admits a `<button>` whose
353
+ * literal `type` is listed in {@link buttonTypes}. The explicit type matters:
354
+ * a missing or invalid button type defaults to `submit`, so treating it as an
355
+ * ordinary action button would silently submit an enclosing form.
356
+ */
357
+ interface HostRequirement {
358
+ /** Target name; the empty string `""` means the controller scope element. */
359
+ readonly target: string;
360
+ /** Static host shapes the controller supports. */
361
+ readonly mode: "non-interactive" | "non-interactive-or-button";
362
+ /** Literal button types admitted by `"non-interactive-or-button"`. */
363
+ readonly buttonTypes?: readonly string[];
364
+ /** Human-readable fix suggestion shown by the CLI (stage 4). */
365
+ readonly suggestion: string;
366
+ }
331
367
  /**
332
368
  * An author-futile attribute rule (stage 3): authoring any of {@link attrs} on
333
369
  * the {@link target} element draws a `managed-aria` **warning** — the
@@ -564,6 +600,45 @@ interface ConditionalTargetRule {
564
600
  /** Human-readable fix suggestion shown by the CLI (stage 4). */
565
601
  readonly suggestion: string;
566
602
  }
603
+ /**
604
+ * A statically checkable numeric contract on one declared Stimulus Value.
605
+ *
606
+ * The Inspector decodes literals like Stimulus (`Number(raw.replace(/_/g,
607
+ * ""))`) before applying these bounds. ERB-generated values are undecidable and
608
+ * skipped rather than guessed.
609
+ */
610
+ interface ValueConstraint {
611
+ /** Value name (camelCase, as declared in `static values`). */
612
+ readonly value: string;
613
+ /** Decoder family. Numeric bounds are the first supported semantic family. */
614
+ readonly type: "number";
615
+ /** Reject `NaN` and infinities when true. */
616
+ readonly finite?: boolean;
617
+ /** Require a decoded number strictly greater than this bound. */
618
+ readonly greaterThan?: number;
619
+ /** Human-readable fix suggestion shown by the CLI (stage 4). */
620
+ readonly suggestion: string;
621
+ }
622
+ /**
623
+ * A statically checkable relationship between two numeric Stimulus Values.
624
+ *
625
+ * Missing attributes use the controller's public defaults. If either authored
626
+ * value is dynamic, the Inspector skips the relation rather than guessing.
627
+ */
628
+ interface ValueRelation {
629
+ /** Value on the left side of the comparison (camelCase). */
630
+ readonly left: string;
631
+ /** Supported numeric comparison. */
632
+ readonly operator: "less-than-or-equal";
633
+ /** Value on the right side of the comparison (camelCase). */
634
+ readonly right: string;
635
+ /** Effective left value when its attribute is absent. */
636
+ readonly leftDefault: number;
637
+ /** Effective right value when its attribute is absent. */
638
+ readonly rightDefault: number;
639
+ /** Human-readable fix suggestion shown by the CLI (stage 4). */
640
+ readonly suggestion: string;
641
+ }
567
642
  /** Severity of a diagnostic. Only `error` affects the process exit code. */
568
643
  type DiagnosticSeverity = "error" | "warning";
569
644
  /**
@@ -571,7 +646,7 @@ type DiagnosticSeverity = "error" | "warning";
571
646
  * for testing, machine-readable output, and `data-stimeo-ignore` suppression
572
647
  * lists (which is why the set also exists as a runtime array).
573
648
  */
574
- declare const DIAGNOSTIC_CODES: readonly ["unknown-controller", "unknown-target", "unknown-value", "unknown-action-controller", "unknown-action-method", "orphan-target", "missing-required-target", "missing-conditional-target", "missing-aria", "invalid-aria-value", "keyboard-inaccessible", "unresolved-idref", "managed-aria", "composition-mismatch", "missing-companion", "undeclared-target", "cardinality-violation", "forbidden-aria", "unknown-ignore-code"];
649
+ declare const DIAGNOSTIC_CODES: readonly ["unknown-controller", "unknown-target", "unknown-value", "invalid-value", "unknown-action-controller", "unknown-action-method", "orphan-target", "missing-required-target", "missing-conditional-target", "missing-aria", "invalid-aria-value", "keyboard-inaccessible", "invalid-host", "unresolved-idref", "managed-aria", "composition-mismatch", "missing-companion", "undeclared-target", "cardinality-violation", "forbidden-aria", "unknown-ignore-code"];
575
650
  /** See {@link DIAGNOSTIC_CODES}. */
576
651
  type DiagnosticCode = (typeof DIAGNOSTIC_CODES)[number];
577
652
  /**