@warp-ds/elements 2.10.0-next.1 → 2.10.0-next.11

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 (254) hide show
  1. package/README.md +4 -0
  2. package/dist/api.js +1 -1
  3. package/dist/api.js.map +1 -1
  4. package/dist/custom-elements.json +233 -87
  5. package/dist/docs/affix/affix.md +2 -2
  6. package/dist/docs/affix/styling.md +1 -0
  7. package/dist/docs/alert/alert.md +2 -2
  8. package/dist/docs/alert/styling.md +1 -0
  9. package/dist/docs/attention/attention.md +2 -0
  10. package/dist/docs/attention/styling.md +1 -0
  11. package/dist/docs/badge/badge.md +2 -0
  12. package/dist/docs/badge/styling.md +1 -0
  13. package/dist/docs/box/box.md +22 -40
  14. package/dist/docs/box/examples.md +20 -38
  15. package/dist/docs/box/styling.md +1 -0
  16. package/dist/docs/breadcrumbs/breadcrumbs.md +8 -2
  17. package/dist/docs/breadcrumbs/examples.md +7 -1
  18. package/dist/docs/breadcrumbs/styling.md +1 -0
  19. package/dist/docs/button/button.md +73 -2
  20. package/dist/docs/button/styling.md +72 -0
  21. package/dist/docs/card/accessibility.md +74 -0
  22. package/dist/docs/card/api.md +9 -3
  23. package/dist/docs/card/card.md +236 -5
  24. package/dist/docs/card/examples.md +75 -0
  25. package/dist/docs/card/styling.md +1 -0
  26. package/dist/docs/card/usage.md +76 -0
  27. package/dist/docs/checkbox/api.md +128 -0
  28. package/dist/docs/checkbox/checkbox.md +134 -0
  29. package/dist/docs/checkbox-group/accessibility.md +71 -0
  30. package/dist/docs/checkbox-group/api.md +79 -0
  31. package/dist/docs/checkbox-group/checkbox-group.md +492 -0
  32. package/dist/docs/checkbox-group/examples.md +105 -0
  33. package/dist/docs/checkbox-group/styling.md +132 -0
  34. package/dist/docs/checkbox-group/usage.md +95 -0
  35. package/dist/docs/combobox/accessibility.md +71 -0
  36. package/dist/docs/combobox/api.md +60 -30
  37. package/dist/docs/combobox/combobox.md +205 -32
  38. package/dist/docs/combobox/examples.md +44 -0
  39. package/dist/docs/combobox/styling.md +1 -0
  40. package/dist/docs/combobox/usage.md +28 -0
  41. package/dist/docs/datepicker/accessibility.md +25 -0
  42. package/dist/docs/datepicker/api.md +22 -14
  43. package/dist/docs/datepicker/datepicker.md +208 -16
  44. package/dist/docs/datepicker/examples.md +75 -0
  45. package/dist/docs/datepicker/styling.md +1 -0
  46. package/dist/docs/datepicker/usage.md +84 -0
  47. package/dist/docs/expandable/api.md +20 -32
  48. package/dist/docs/expandable/examples.md +54 -0
  49. package/dist/docs/expandable/expandable.md +74 -32
  50. package/dist/docs/expandable/styling.md +1 -0
  51. package/dist/docs/icon/accessibility.md +5 -0
  52. package/dist/docs/icon/api.md +43 -0
  53. package/dist/docs/icon/examples.md +45 -0
  54. package/dist/docs/icon/icon.md +115 -0
  55. package/dist/docs/icon/styling.md +1 -0
  56. package/dist/docs/icon/usage.md +11 -0
  57. package/dist/docs/index.md +46 -0
  58. package/dist/docs/link/api.md +18 -22
  59. package/dist/docs/link/examples.md +75 -0
  60. package/dist/docs/link/link.md +113 -24
  61. package/dist/docs/link/styling.md +1 -0
  62. package/dist/docs/link/usage.md +18 -0
  63. package/dist/docs/modal/modal.md +2 -0
  64. package/dist/docs/modal/styling.md +1 -0
  65. package/dist/docs/modal-footer/modal-footer.md +0 -6
  66. package/dist/docs/modal-header/modal-header.md +0 -6
  67. package/dist/docs/page-indicator/page-indicator.md +2 -0
  68. package/dist/docs/page-indicator/styling.md +1 -0
  69. package/dist/docs/pagination/pagination.md +2 -0
  70. package/dist/docs/pagination/styling.md +1 -0
  71. package/dist/docs/pill/pill.md +2 -0
  72. package/dist/docs/pill/styling.md +1 -0
  73. package/dist/docs/radio/radio.md +1 -7
  74. package/dist/docs/select/select.md +2 -0
  75. package/dist/docs/select/styling.md +1 -0
  76. package/dist/docs/slider/slider.md +2 -0
  77. package/dist/docs/slider/styling.md +1 -0
  78. package/dist/docs/slider-thumb/slider-thumb.md +2 -0
  79. package/dist/docs/slider-thumb/styling.md +1 -0
  80. package/dist/docs/step-indicator/step-indicator.md +2 -0
  81. package/dist/docs/step-indicator/styling.md +1 -0
  82. package/dist/docs/switch/styling.md +1 -0
  83. package/dist/docs/switch/switch.md +2 -0
  84. package/dist/docs/tabs/styling.md +1 -0
  85. package/dist/docs/tabs/tabs.md +2 -0
  86. package/dist/docs/textarea/styling.md +1 -0
  87. package/dist/docs/textarea/textarea.md +2 -0
  88. package/dist/docs/textfield/styling.md +1 -0
  89. package/dist/docs/textfield/textfield.md +2 -0
  90. package/dist/index.d.ts +932 -341
  91. package/dist/packages/affix/affix.hydration.test.js +1 -1
  92. package/dist/packages/affix/affix.js +4 -4
  93. package/dist/packages/affix/affix.js.map +4 -4
  94. package/dist/packages/alert/alert.hydration.test.js +1 -1
  95. package/dist/packages/alert/alert.js +3 -3
  96. package/dist/packages/alert/alert.js.map +3 -3
  97. package/dist/packages/attention/attention.hydration.test.js +1 -1
  98. package/dist/packages/attention/attention.js +397 -446
  99. package/dist/packages/attention/attention.js.map +4 -4
  100. package/dist/packages/attention/attention.test.js +1 -1
  101. package/dist/packages/badge/badge.hydration.test.js +1 -1
  102. package/dist/packages/box/box.hydration.test.js +1 -1
  103. package/dist/packages/box/box.js +1 -1
  104. package/dist/packages/box/box.js.map +1 -1
  105. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.js +3 -2
  106. package/dist/packages/breadcrumbs/breadcrumbs.js +4 -4
  107. package/dist/packages/breadcrumbs/breadcrumbs.js.map +3 -3
  108. package/dist/packages/button/button.hydration.test.js +1 -1
  109. package/dist/packages/button/button.js +387 -436
  110. package/dist/packages/button/button.js.map +4 -4
  111. package/dist/packages/button/button.stories.d.ts +29 -0
  112. package/dist/packages/button/button.stories.js +176 -2
  113. package/dist/packages/button/styles.d.ts +22 -1
  114. package/dist/packages/button/styles.js +390 -1
  115. package/dist/packages/card/card.d.ts +9 -6
  116. package/dist/packages/card/card.hydration.test.js +1 -1
  117. package/dist/packages/card/card.js +3 -3
  118. package/dist/packages/card/card.js.map +4 -4
  119. package/dist/packages/checkbox/checkbox.d.ts +45 -14
  120. package/dist/packages/checkbox/checkbox.hydration.test.js +1 -1
  121. package/dist/packages/checkbox/checkbox.js +3 -3
  122. package/dist/packages/checkbox/checkbox.js.map +3 -3
  123. package/dist/packages/checkbox/checkbox.react.stories.d.ts +1 -1
  124. package/dist/packages/checkbox/checkbox.stories.d.ts +2 -2
  125. package/dist/packages/checkbox/checkbox.test.js +1 -1
  126. package/dist/packages/checkbox/react.d.ts +2 -2
  127. package/dist/packages/checkbox-group/checkbox-group.a11y.test.js +1 -1
  128. package/dist/packages/checkbox-group/checkbox-group.d.ts +35 -8
  129. package/dist/packages/checkbox-group/checkbox-group.hydration.test.js +1 -1
  130. package/dist/packages/checkbox-group/checkbox-group.js +6 -6
  131. package/dist/packages/checkbox-group/checkbox-group.js.map +4 -4
  132. package/dist/packages/checkbox-group/react.d.ts +3 -3
  133. package/dist/packages/combobox/combobox.a11y.test.js +24 -0
  134. package/dist/packages/combobox/combobox.d.ts +65 -45
  135. package/dist/packages/combobox/combobox.hydration.test.js +39 -1
  136. package/dist/packages/combobox/combobox.js +21 -21
  137. package/dist/packages/combobox/combobox.js.map +4 -4
  138. package/dist/packages/combobox/combobox.stories.js +28 -15
  139. package/dist/packages/combobox/combobox.test.js +110 -0
  140. package/dist/packages/datepicker/DatePicker.test.js +1 -1
  141. package/dist/packages/datepicker/datepicker.d.ts +22 -30
  142. package/dist/packages/datepicker/datepicker.hydration.test.js +1 -1
  143. package/dist/packages/datepicker/datepicker.js +49 -49
  144. package/dist/packages/datepicker/datepicker.js.map +4 -4
  145. package/dist/packages/datepicker/datepicker.test.js +1 -1
  146. package/dist/packages/expandable/expandable.d.ts +11 -32
  147. package/dist/packages/expandable/expandable.hydration.test.js +1 -1
  148. package/dist/packages/expandable/expandable.js +11 -11
  149. package/dist/packages/expandable/expandable.js.map +3 -3
  150. package/dist/packages/expandable/expandable.react.stories.d.ts +2 -2
  151. package/dist/packages/expandable/react.d.ts +1 -1
  152. package/dist/packages/icon/icon.d.ts +16 -4
  153. package/dist/packages/icon/icon.hydration.test.js +1 -1
  154. package/dist/packages/icon/icon.js +2 -2
  155. package/dist/packages/icon/icon.js.map +3 -3
  156. package/dist/packages/icon/icon.react.stories.d.ts +1 -1
  157. package/dist/packages/icon/react.d.ts +2 -2
  158. package/dist/packages/link/link.d.ts +15 -16
  159. package/dist/packages/link/link.hydration.test.js +1 -1
  160. package/dist/packages/link/link.js +420 -190
  161. package/dist/packages/link/link.js.map +4 -4
  162. package/dist/packages/link/link.test.js +1 -1
  163. package/dist/packages/link/styles.d.ts +5 -0
  164. package/dist/packages/link/styles.js +80 -0
  165. package/dist/packages/modal/modal.d.ts +1 -0
  166. package/dist/packages/modal/modal.hydration.test.js +1 -1
  167. package/dist/packages/modal/modal.js +4 -4
  168. package/dist/packages/modal/modal.js.map +3 -3
  169. package/dist/packages/modal/modal.react.stories.d.ts +4 -4
  170. package/dist/packages/modal/modal.react.stories.js +9 -1
  171. package/dist/packages/modal/react.d.ts +34 -4
  172. package/dist/packages/modal/react.js +30 -0
  173. package/dist/packages/modal-header/modal-header.js +11 -9
  174. package/dist/packages/modal-header/modal-header.js.map +4 -4
  175. package/dist/packages/page-indicator/page-indicator.hydration.test.js +1 -1
  176. package/dist/packages/page-indicator/page-indicator.js +5 -5
  177. package/dist/packages/page-indicator/page-indicator.js.map +3 -3
  178. package/dist/packages/pagination/pagination.hydration.test.js +1 -1
  179. package/dist/packages/pagination/pagination.js +4 -4
  180. package/dist/packages/pagination/pagination.js.map +4 -4
  181. package/dist/packages/pagination/pagination.test.js +1 -1
  182. package/dist/packages/pill/pill.hydration.test.js +1 -1
  183. package/dist/packages/pill/pill.js +3 -3
  184. package/dist/packages/pill/pill.js.map +4 -4
  185. package/dist/packages/radio/radio.hydration.test.js +1 -1
  186. package/dist/packages/radio/radio.js +3 -3
  187. package/dist/packages/radio/radio.js.map +3 -3
  188. package/dist/packages/radio/radio.test.js +1 -1
  189. package/dist/packages/radio-group/radio-group.a11y.test.js +7 -3
  190. package/dist/packages/radio-group/radio-group.hydration.test.js +6 -2
  191. package/dist/packages/radio-group/radio-group.js +11 -11
  192. package/dist/packages/radio-group/radio-group.js.map +4 -4
  193. package/dist/packages/select/select.a11y.test.js +6 -2
  194. package/dist/packages/select/select.hydration.test.js +1 -1
  195. package/dist/packages/select/select.js +7 -7
  196. package/dist/packages/select/select.js.map +4 -4
  197. package/dist/packages/select/select.test.js +4 -2
  198. package/dist/packages/slider/slider.hydration.test.js +7 -2
  199. package/dist/packages/slider/slider.js +5 -5
  200. package/dist/packages/slider/slider.js.map +4 -4
  201. package/dist/packages/slider/slider.react.stories.js +2 -2
  202. package/dist/packages/slider/slider.test.js +1 -1
  203. package/dist/packages/slider-thumb/slider-thumb.hydration.test.js +1 -1
  204. package/dist/packages/slider-thumb/slider-thumb.js +20 -20
  205. package/dist/packages/slider-thumb/slider-thumb.js.map +4 -4
  206. package/dist/packages/step/step.hydration.test.js +1 -1
  207. package/dist/packages/step/step.js +8 -8
  208. package/dist/packages/step/step.js.map +4 -4
  209. package/dist/packages/step-indicator/step-indicator.hydration.test.js +1 -1
  210. package/dist/packages/switch/switch.a11y.test.js +1 -1
  211. package/dist/packages/switch/switch.hydration.test.js +1 -1
  212. package/dist/packages/switch/switch.js +1 -1
  213. package/dist/packages/switch/switch.js.map +1 -1
  214. package/dist/packages/tab/tab.hydration.test.js +1 -1
  215. package/dist/packages/tab/tab.js +10 -10
  216. package/dist/packages/tab/tab.js.map +2 -2
  217. package/dist/packages/tab-panel/tab-panel.hydration.test.js +1 -1
  218. package/dist/packages/tab-panel/tab-panel.js +3 -3
  219. package/dist/packages/tab-panel/tab-panel.js.map +2 -2
  220. package/dist/packages/tabs/tabs.a11y.test.js +2 -2
  221. package/dist/packages/tabs/tabs.hydration.test.js +1 -1
  222. package/dist/packages/tabs/tabs.js +1 -1
  223. package/dist/packages/tabs/tabs.js.map +2 -2
  224. package/dist/packages/tabs/tabs.test.js +4 -4
  225. package/dist/packages/textarea/textarea.hydration.test.js +1 -1
  226. package/dist/packages/textarea/textarea.js +4 -4
  227. package/dist/packages/textarea/textarea.js.map +3 -3
  228. package/dist/packages/textarea/textarea.test.js +1 -1
  229. package/dist/packages/textfield/textfield.hydration.test.js +1 -1
  230. package/dist/packages/textfield/textfield.js +1 -1
  231. package/dist/packages/textfield/textfield.js.map +1 -1
  232. package/dist/packages/textfield/textfield.test.js +1 -1
  233. package/dist/packages/toast/toast.js +6 -6
  234. package/dist/packages/toast/toast.js.map +4 -4
  235. package/dist/packages/toast/toast.stories.d.ts +1 -5
  236. package/dist/packages/toast/toast.stories.js +0 -17
  237. package/dist/packages/toast-container/toast-container.js +2 -2
  238. package/dist/packages/toast-container/toast-container.js.map +2 -2
  239. package/dist/web-types.json +238 -103
  240. package/eik/index.js +2536 -0
  241. package/package.json +15 -9
  242. package/dist/docs/modal-footer/accessibility.md +0 -1
  243. package/dist/docs/modal-footer/examples.md +0 -1
  244. package/dist/docs/modal-footer/usage.md +0 -1
  245. package/dist/docs/modal-header/accessibility.md +0 -1
  246. package/dist/docs/modal-header/examples.md +0 -1
  247. package/dist/docs/modal-header/usage.md +0 -1
  248. package/dist/docs/radio/accessibility.md +0 -1
  249. package/dist/docs/radio/examples.md +0 -1
  250. package/dist/docs/radio/usage.md +0 -1
  251. package/dist/packages/button/styles/w-button.styles.d.ts +0 -1
  252. package/dist/packages/button/styles/w-button.styles.js +0 -282
  253. package/dist/packages/link/styles/w-link.styles.d.ts +0 -1
  254. package/dist/packages/link/styles/w-link.styles.js +0 -213
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { WIcon } from "./packages/icon/icon.ts";
1
+ import type { WarpIcon, WIcon } from "./packages/icon/icon.ts";
2
2
  import type { WarpTextField } from "./packages/textfield/textfield.ts";
3
3
  import type { WarpAffix } from "./packages/affix/affix.ts";
4
4
  import type { WarpAlert } from "./packages/alert/alert.ts";
@@ -9,8 +9,11 @@ import type { WarpBadge } from "./packages/badge/badge.ts";
9
9
  import type { WarpBox } from "./packages/box/box.ts";
10
10
  import type { WarpBreadcrumbs } from "./packages/breadcrumbs/breadcrumbs.ts";
11
11
  import type { WarpCard } from "./packages/card/card.ts";
12
- import type { WCheckbox } from "./packages/checkbox/checkbox.ts";
13
- import type { WCheckboxGroup } from "./packages/checkbox-group/checkbox-group.ts";
12
+ import type { WarpCheckbox, WCheckbox } from "./packages/checkbox/checkbox.ts";
13
+ import type {
14
+ WarpCheckboxGroup,
15
+ WCheckboxGroup,
16
+ } from "./packages/checkbox-group/checkbox-group.ts";
14
17
  import type { WarpCombobox } from "./packages/combobox/combobox.ts";
15
18
  import type { WarpDatepicker } from "./packages/datepicker/datepicker.ts";
16
19
  import type { WarpExpandable } from "./packages/expandable/expandable.ts";
@@ -67,6 +70,15 @@ export type ScopedElements<
67
70
  [Key in keyof CustomElements as `${Prefix}${Key}${Suffix}`]: CustomElements[Key];
68
71
  };
69
72
 
73
+ /**
74
+ * A generic type for strongly typing custom events with their targets
75
+ * @template T - The type of the event target (extends EventTarget)
76
+ * @template D - The type of the detail payload for the custom event
77
+ */
78
+ type TypedEvent<T extends EventTarget, E = Event> = E & {
79
+ target: T;
80
+ };
81
+
70
82
  type BaseProps<T extends HTMLElement> = {
71
83
  /** Content added between the opening and closing tags of the element */
72
84
  children?: any;
@@ -90,6 +102,8 @@ type BaseProps<T extends HTMLElement> = {
90
102
  key?: string | number;
91
103
  /** Specifies the language of the element. */
92
104
  lang?: string;
105
+ /** Defines the element's semantic role for accessibility APIs. */
106
+ role?: string;
93
107
  /** Contains a space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the ::part pseudo-element. */
94
108
  part?: string;
95
109
  /** Use the ref attribute with a variable to assign a DOM element to the variable once the element is rendered. */
@@ -112,24 +126,134 @@ type BaseProps<T extends HTMLElement> = {
112
126
  popovertargetaction?: "show" | "hide" | "toggle";
113
127
  };
114
128
 
115
- type BaseEvents = {};
129
+ type BaseEvents = {
130
+ // Mouse Events
131
+
132
+ /** Triggered when the element is clicked by the user by mouse or keyboard. */
133
+ onClick?: (event: MouseEvent) => void;
134
+ /** Fired when the context menu is triggered, often by right-clicking. */
135
+ onContextMenu?: (event: MouseEvent) => void;
136
+ /** Fired when the element is double-clicked. */
137
+ onDoubleClick?: (event: MouseEvent) => void;
138
+ /** Fired repeatedly as the draggable element is being dragged. */
139
+ onDrag?: (event: DragEvent) => void;
140
+ /** Fired when the dragging of a draggable element is finished. */
141
+ onDragEnd?: (event: DragEvent) => void;
142
+ /** Fired when a dragged element or text selection enters a valid drop target. */
143
+ onDragEnter?: (event: DragEvent) => void;
144
+ /** Fired when a dragged element or text selection leaves a valid drop target. */
145
+ onDragExit?: (event: DragEvent) => void;
146
+ /** Fired when a dragged element or text selection leaves a valid drop target. */
147
+ onDragLeave?: (event: DragEvent) => void;
148
+ /** Fired when an element or text selection is being dragged over a valid drop target (every few hundred milliseconds). */
149
+ onDragOver?: (event: DragEvent) => void;
150
+ /** Fired when a draggable element starts being dragged. */
151
+ onDragStart?: (event: DragEvent) => void;
152
+ /** Fired when a dragged element is dropped onto a drop target. */
153
+ onDrop?: (event: DragEvent) => void;
154
+ /** Fired when a mouse button is pressed down on the element. */
155
+ onMouseDown?: (event: MouseEvent) => void;
156
+ /** Fired when the mouse cursor enters the element. */
157
+ onMouseEnter?: (event: MouseEvent) => void;
158
+ /** Triggered when the mouse cursor leaves the element. */
159
+ onMouseLeave?: (event: MouseEvent) => void;
160
+ /** Fired at an element when a pointing device (usually a mouse) is moved while the cursor's hotspot is inside it. */
161
+ onMouseMove?: (event: MouseEvent) => void;
162
+ /** Fired at an Element when a pointing device (usually a mouse) is used to move the cursor so that it is no longer contained within the element or one of its children. */
163
+ onMouseOut?: (event: MouseEvent) => void;
164
+ /** Fired at an Element when a pointing device (such as a mouse or trackpad) is used to move the cursor onto the element or one of its child elements. */
165
+ onMouseOver?: (event: MouseEvent) => void;
166
+ /** Fired when a mouse button is released on the element. */
167
+ onMouseUp?: (event: MouseEvent) => void;
168
+
169
+ // Keyboard Events
170
+
171
+ /** Fired when a key is pressed down. */
172
+ onKeyDown?: (event: KeyboardEvent) => void;
173
+ /** Fired when a key is released.. */
174
+ onKeyUp?: (event: KeyboardEvent) => void;
175
+ /** Fired when a key is pressed down. */
176
+ onKeyPressed?: (event: KeyboardEvent) => void;
177
+
178
+ // Focus Events
179
+
180
+ /** Fired when the element receives focus, often triggered by tab navigation. */
181
+ onFocus?: (event: FocusEvent) => void;
182
+ /** Fired when the element loses focus. */
183
+ onBlur?: (event: FocusEvent) => void;
184
+
185
+ // Form Events
186
+
187
+ /** Fired when the value of an input element changes, such as with text inputs or select elements. */
188
+ onChange?: (event: Event) => void;
189
+ /** Fires when the value of an <input>, <select>, or <textarea> element has been changed. */
190
+ onInput?: (event: Event) => void;
191
+ /** Fired when a form is submitted, usually on pressing Enter in a text input. */
192
+ onSubmit?: (event: Event) => void;
193
+ /** Fired when a form is reset. */
194
+ onReset?: (event: Event) => void;
195
+
196
+ // UI Events
197
+
198
+ /** Fired when the content of an element is scrolled. */
199
+ onScroll?: (event: UIEvent) => void;
200
+
201
+ // Wheel Events
202
+
203
+ /** Fired when the mouse wheel is scrolled while the element is focused. */
204
+ onWheel?: (event: WheelEvent) => void;
205
+
206
+ // Animation Events
207
+
208
+ /** Fired when a CSS animation starts. */
209
+ onAnimationStart?: (event: AnimationEvent) => void;
210
+ /** Fired when a CSS animation completes. */
211
+ onAnimationEnd?: (event: AnimationEvent) => void;
212
+ /** Fired when a CSS animation completes one iteration. */
213
+ onAnimationIteration?: (event: AnimationEvent) => void;
214
+
215
+ // Transition Events
216
+
217
+ /** Fired when a CSS transition has completed. */
218
+ onTransitionEnd?: (event: TransitionEvent) => void;
219
+
220
+ // Media Events
221
+
222
+ /** Fired when an element (usually an image) finishes loading */
223
+ onLoad?: (event: Event) => void;
224
+ /** Fired when an error occurs during the loading of an element, like an image not being found. */
225
+ onError?: (event: Event) => void;
226
+
227
+ // Clipboard Events
228
+
229
+ /** Fires when the user initiates a copy action through the browser's user interface. */
230
+ onCopy?: (event: ClipboardEvent) => void;
231
+ /** Fired when the user has initiated a "cut" action through the browser's user interface. */
232
+ onCut?: (event: ClipboardEvent) => void;
233
+ /** Fired when the user has initiated a "paste" action through the browser's user interface. */
234
+ onPaste?: (event: ClipboardEvent) => void;
235
+ };
116
236
 
117
- export type WIconProps = {
237
+ export type WarpIconProps = {
118
238
  /** Icon filename (without .svg) */
119
- name?: WIcon["name"];
120
- /** Size: small, medium, large or pixel value (e.g. "32px") */
121
- size?: WIcon["size"];
122
- /** Locale used in CDN URL */
123
- locale?: WIcon["locale"];
239
+ name?: WarpIcon["name"];
240
+ /** Size: small, medium, large or pixel value (e.g. "32px"). */
241
+ size?: WarpIcon["size"];
242
+ /** Locale used for `<title>` text.
243
+
244
+ Reads the `lang` attribute from `<html>`, falls back to 'en'. */
245
+ locale?: WarpIcon["locale"];
124
246
  };
125
247
 
126
- export type WIconSolidJsProps = {
248
+ export type WarpIconSolidJsProps = {
127
249
  /** Icon filename (without .svg) */
128
- "prop:name"?: WIcon["name"];
129
- /** Size: small, medium, large or pixel value (e.g. "32px") */
130
- "prop:size"?: WIcon["size"];
131
- /** Locale used in CDN URL */
132
- "prop:locale"?: WIcon["locale"];
250
+ "prop:name"?: WarpIcon["name"];
251
+ /** Size: small, medium, large or pixel value (e.g. "32px"). */
252
+ "prop:size"?: WarpIcon["size"];
253
+ /** Locale used for `<title>` text.
254
+
255
+ Reads the `lang` attribute from `<html>`, falls back to 'en'. */
256
+ "prop:locale"?: WarpIcon["locale"];
133
257
 
134
258
  /** Set the innerHTML of the element */
135
259
  innerHTML?: string;
@@ -343,44 +467,52 @@ export type WarpAlertSolidJsProps = {
343
467
  };
344
468
 
345
469
  export type WarpLinkProps = {
346
- /** */
470
+ /** Focus the link after it is rendered */
347
471
  autofocus?: WarpLink["autofocus"];
348
- /** */
472
+ /** Visual style for the link/button. */
349
473
  variant?: WarpLink["variant"];
350
- /** */
474
+ /** Render a smaller version */
351
475
  small?: WarpLink["small"];
352
- /** */
476
+ /** The URL the link points to */
353
477
  href?: WarpLink["href"];
354
- /** */
478
+ /** Applies disabled styling, but you need to disable clicks on your own.
479
+
480
+ The component renders an `<a>` element; `disabled` affects styling, but does not inherently prevent navigation. If you need to fully disable interaction, omit `href` and/or prevent default click behavior. */
355
481
  disabled?: WarpLink["disabled"];
356
- /** */
482
+ /** Where to display the linked URL (e.g. `_blank`) */
357
483
  target?: WarpLink["target"];
358
- /** */
484
+ /** Relationship of the linked URL.
485
+
486
+ If `target="_blank"` and `rel` is not provided, the component uses `noopener`. */
359
487
  rel?: WarpLink["rel"];
360
- /** */
488
+ /** Makes the link take up the full width of its parent */
361
489
  "full-width"?: WarpLink["fullWidth"];
362
- /** */
490
+ /** Makes the link take up the full width of its parent */
363
491
  fullWidth?: WarpLink["fullWidth"];
364
492
  };
365
493
 
366
494
  export type WarpLinkSolidJsProps = {
367
- /** */
495
+ /** Focus the link after it is rendered */
368
496
  "prop:autofocus"?: WarpLink["autofocus"];
369
- /** */
497
+ /** Visual style for the link/button. */
370
498
  "prop:variant"?: WarpLink["variant"];
371
- /** */
499
+ /** Render a smaller version */
372
500
  "prop:small"?: WarpLink["small"];
373
- /** */
501
+ /** The URL the link points to */
374
502
  "prop:href"?: WarpLink["href"];
375
- /** */
503
+ /** Applies disabled styling, but you need to disable clicks on your own.
504
+
505
+ The component renders an `<a>` element; `disabled` affects styling, but does not inherently prevent navigation. If you need to fully disable interaction, omit `href` and/or prevent default click behavior. */
376
506
  "prop:disabled"?: WarpLink["disabled"];
377
- /** */
507
+ /** Where to display the linked URL (e.g. `_blank`) */
378
508
  "prop:target"?: WarpLink["target"];
379
- /** */
509
+ /** Relationship of the linked URL.
510
+
511
+ If `target="_blank"` and `rel` is not provided, the component uses `noopener`. */
380
512
  "prop:rel"?: WarpLink["rel"];
381
- /** */
513
+ /** Makes the link take up the full width of its parent */
382
514
  "bool:full-width"?: WarpLink["fullWidth"];
383
- /** */
515
+ /** Makes the link take up the full width of its parent */
384
516
  "prop:fullWidth"?: WarpLink["fullWidth"];
385
517
 
386
518
  /** Set the innerHTML of the element */
@@ -723,22 +855,34 @@ Defaults to the localized "You are here" label. Set `aria-label` when the defaul
723
855
  };
724
856
 
725
857
  export type WarpCardProps = {
726
- /** */
858
+ /** Whether the card is visually selected.
859
+
860
+ Use this when the card represents a selected item or choice. This only controls the visual selected state; update it from your application state when the selection changes. */
727
861
  selected?: WarpCard["selected"];
728
- /** */
862
+ /** Whether the card uses the flat visual treatment.
863
+
864
+ Flat cards use a bordered surface instead of the default elevated surface. Use this for denser layouts or when the card sits inside another surface. */
729
865
  flat?: WarpCard["flat"];
730
- /** */
866
+ /** Whether the whole card is interactive.
867
+
868
+ When set, the card becomes keyboard focusable and Enter or Space triggers a click on the card. Use this only when the whole card has one action or represents one selectable choice. */
731
869
  clickable?: WarpCard["clickable"];
732
870
  /** */
733
871
  buttonText?: WarpCard["buttonText"];
734
872
  };
735
873
 
736
874
  export type WarpCardSolidJsProps = {
737
- /** */
875
+ /** Whether the card is visually selected.
876
+
877
+ Use this when the card represents a selected item or choice. This only controls the visual selected state; update it from your application state when the selection changes. */
738
878
  "prop:selected"?: WarpCard["selected"];
739
- /** */
879
+ /** Whether the card uses the flat visual treatment.
880
+
881
+ Flat cards use a bordered surface instead of the default elevated surface. Use this for denser layouts or when the card sits inside another surface. */
740
882
  "prop:flat"?: WarpCard["flat"];
741
- /** */
883
+ /** Whether the whole card is interactive.
884
+
885
+ When set, the card becomes keyboard focusable and Enter or Space triggers a click on the card. Use this only when the whole card has one action or represents one selectable choice. */
742
886
  "prop:clickable"?: WarpCard["clickable"];
743
887
  /** */
744
888
  "prop:buttonText"?: WarpCard["buttonText"];
@@ -749,47 +893,78 @@ export type WarpCardSolidJsProps = {
749
893
  textContent?: string | number;
750
894
  };
751
895
 
752
- export type WCheckboxProps = {
753
- /** The name of the checkbox, submitted as a name/value pair with form data. */
754
- name?: WCheckbox["name"];
755
- /** The value of the checkbox, submitted as a name/value pair with form data. */
756
- value?: WCheckbox["value"];
757
- /** Draws the checkbox in an indeterminate state. */
758
- indeterminate?: WCheckbox["indeterminate"];
759
- /** Draws the checkbox in a checked state (reflected to attribute). */
760
- checked?: WCheckbox["checked"];
761
- /** Disables the checkbox. */
762
- disabled?: WCheckbox["disabled"];
763
- /** Makes the checkbox a required field. */
764
- required?: WCheckbox["required"];
765
- /** Draws the checkbox in an invalid state. */
766
- invalid?: WCheckbox["invalid"];
896
+ /** `WarpCheckbox` component event */
897
+ export type WarpCheckboxElementEvent<E = Event> = TypedEvent<WarpCheckbox, E>;
898
+
899
+ export type WarpCheckboxProps = {
900
+ /** The name of the checkbox.
901
+
902
+ When the checkbox is checked and belongs to a form, this name is submitted with the checkbox value. If the checkbox is inside a `w-checkbox-group` with a name, the group name is used when the checkbox does not have its own name. */
903
+ name?: WarpCheckbox["name"];
904
+ /** The value submitted when the checkbox is checked.
905
+
906
+ If no value attribute is set, the checkbox defaults to `on`. Unchecked and disabled checkboxes do not submit a value. */
907
+ value?: WarpCheckbox["value"];
908
+ /** Whether the checkbox is visually indeterminate.
909
+
910
+ Use this for parent options that represent a mixed set of child selections. Clicking the checkbox clears the indeterminate state and sets the checkbox to checked. */
911
+ indeterminate?: WarpCheckbox["indeterminate"];
912
+ /** Whether the checkbox is checked.
913
+
914
+ Checked checkboxes submit their value with form data. The property is reflected to the `checked` attribute. */
915
+ checked?: WarpCheckbox["checked"];
916
+ /** Whether the checkbox is disabled.
917
+
918
+ Disabled checkboxes cannot be focused, changed, or submitted with form data. */
919
+ disabled?: WarpCheckbox["disabled"];
920
+ /** Whether the checkbox must be checked before form submission.
921
+
922
+ A required checkbox is invalid until it is checked. For requiring at least one option in a set, use `required` on `w-checkbox-group`. */
923
+ required?: WarpCheckbox["required"];
924
+ /** Whether the checkbox is visually invalid.
925
+
926
+ Use this to show an externally managed validation error. Required validation also sets the invalid state after the user interacts with the checkbox or tries to submit the form. */
927
+ invalid?: WarpCheckbox["invalid"];
767
928
  /** */
768
- input?: WCheckbox["input"];
929
+ input?: WarpCheckbox["input"];
769
930
 
770
931
  /** */
771
- onchange?: (e: Event) => void;
772
- };
773
-
774
- export type WCheckboxSolidJsProps = {
775
- /** The name of the checkbox, submitted as a name/value pair with form data. */
776
- "prop:name"?: WCheckbox["name"];
777
- /** The value of the checkbox, submitted as a name/value pair with form data. */
778
- "prop:value"?: WCheckbox["value"];
779
- /** Draws the checkbox in an indeterminate state. */
780
- "prop:indeterminate"?: WCheckbox["indeterminate"];
781
- /** Draws the checkbox in a checked state (reflected to attribute). */
782
- "prop:checked"?: WCheckbox["checked"];
783
- /** Disables the checkbox. */
784
- "prop:disabled"?: WCheckbox["disabled"];
785
- /** Makes the checkbox a required field. */
786
- "prop:required"?: WCheckbox["required"];
787
- /** Draws the checkbox in an invalid state. */
788
- "prop:invalid"?: WCheckbox["invalid"];
932
+ onchange?: (e: WarpCheckboxElementEvent) => void;
933
+ };
934
+
935
+ export type WarpCheckboxSolidJsProps = {
936
+ /** The name of the checkbox.
937
+
938
+ When the checkbox is checked and belongs to a form, this name is submitted with the checkbox value. If the checkbox is inside a `w-checkbox-group` with a name, the group name is used when the checkbox does not have its own name. */
939
+ "prop:name"?: WarpCheckbox["name"];
940
+ /** The value submitted when the checkbox is checked.
941
+
942
+ If no value attribute is set, the checkbox defaults to `on`. Unchecked and disabled checkboxes do not submit a value. */
943
+ "prop:value"?: WarpCheckbox["value"];
944
+ /** Whether the checkbox is visually indeterminate.
945
+
946
+ Use this for parent options that represent a mixed set of child selections. Clicking the checkbox clears the indeterminate state and sets the checkbox to checked. */
947
+ "prop:indeterminate"?: WarpCheckbox["indeterminate"];
948
+ /** Whether the checkbox is checked.
949
+
950
+ Checked checkboxes submit their value with form data. The property is reflected to the `checked` attribute. */
951
+ "prop:checked"?: WarpCheckbox["checked"];
952
+ /** Whether the checkbox is disabled.
953
+
954
+ Disabled checkboxes cannot be focused, changed, or submitted with form data. */
955
+ "prop:disabled"?: WarpCheckbox["disabled"];
956
+ /** Whether the checkbox must be checked before form submission.
957
+
958
+ A required checkbox is invalid until it is checked. For requiring at least one option in a set, use `required` on `w-checkbox-group`. */
959
+ "prop:required"?: WarpCheckbox["required"];
960
+ /** Whether the checkbox is visually invalid.
961
+
962
+ Use this to show an externally managed validation error. Required validation also sets the invalid state after the user interacts with the checkbox or tries to submit the form. */
963
+ "prop:invalid"?: WarpCheckbox["invalid"];
789
964
  /** */
790
- "prop:input"?: WCheckbox["input"];
965
+ "prop:input"?: WarpCheckbox["input"];
791
966
  /** */
792
- "on:change"?: (e: Event) => void;
967
+ "on:change"?: (e: WarpCheckboxElementEvent) => void;
793
968
 
794
969
  /** Set the innerHTML of the element */
795
970
  innerHTML?: string;
@@ -797,38 +972,66 @@ export type WCheckboxSolidJsProps = {
797
972
  textContent?: string | number;
798
973
  };
799
974
 
800
- export type WCheckboxGroupProps = {
801
- /** The group label displayed above the checkboxes. */
802
- label?: WCheckboxGroup["label"];
803
- /** The name applied to child checkboxes when they do not provide one. */
804
- name?: WCheckboxGroup["name"];
805
- /** Whether to show optional text next to the label. */
806
- optional?: WCheckboxGroup["optional"];
807
- /** */
808
- "help-text"?: WCheckboxGroup["helpText"];
809
- /** */
810
- helpText?: WCheckboxGroup["helpText"];
811
- /** Makes the checkbox group required. */
812
- required?: WCheckboxGroup["required"];
813
- /** Marks the checkbox group as invalid. */
814
- invalid?: WCheckboxGroup["invalid"];
815
- };
816
-
817
- export type WCheckboxGroupSolidJsProps = {
818
- /** The group label displayed above the checkboxes. */
819
- "prop:label"?: WCheckboxGroup["label"];
820
- /** The name applied to child checkboxes when they do not provide one. */
821
- "prop:name"?: WCheckboxGroup["name"];
822
- /** Whether to show optional text next to the label. */
823
- "prop:optional"?: WCheckboxGroup["optional"];
824
- /** */
825
- "attr:help-text"?: WCheckboxGroup["helpText"];
826
- /** */
827
- "prop:helpText"?: WCheckboxGroup["helpText"];
828
- /** Makes the checkbox group required. */
829
- "prop:required"?: WCheckboxGroup["required"];
830
- /** Marks the checkbox group as invalid. */
831
- "prop:invalid"?: WCheckboxGroup["invalid"];
975
+ export type WarpCheckboxGroupProps = {
976
+ /** The group label displayed above the checkboxes.
977
+
978
+ Use this to describe the shared question or topic for the checkbox options. The label is connected to the internal group for assistive technologies. */
979
+ label?: WarpCheckboxGroup["label"];
980
+ /** The name applied to child checkboxes when they do not provide one.
981
+
982
+ Use this when the grouped checkboxes should submit values under the same form field name. Individual checkboxes can still override the group name with their own `name`. */
983
+ name?: WarpCheckboxGroup["name"];
984
+ /** Whether to show optional text next to the label.
985
+
986
+ Use this to indicate that selecting an option from the group is not required. */
987
+ optional?: WarpCheckboxGroup["optional"];
988
+ /** Help text displayed below the checkbox group.
989
+
990
+ Use this for supporting guidance or validation feedback. When required validation fails, the group replaces this text with the localized required message. */
991
+ "help-text"?: WarpCheckboxGroup["helpText"];
992
+ /** Help text displayed below the checkbox group.
993
+
994
+ Use this for supporting guidance or validation feedback. When required validation fails, the group replaces this text with the localized required message. */
995
+ helpText?: WarpCheckboxGroup["helpText"];
996
+ /** Whether at least one checkbox in the group must be selected.
997
+
998
+ Required validation is managed by the group. The individual checkboxes provide the submitted form values. */
999
+ required?: WarpCheckboxGroup["required"];
1000
+ /** Whether the checkbox group is visually invalid.
1001
+
1002
+ Use this to show an externally managed validation error for the group. The invalid state is also shared with child checkboxes for consistent styling and accessibility state. */
1003
+ invalid?: WarpCheckboxGroup["invalid"];
1004
+ };
1005
+
1006
+ export type WarpCheckboxGroupSolidJsProps = {
1007
+ /** The group label displayed above the checkboxes.
1008
+
1009
+ Use this to describe the shared question or topic for the checkbox options. The label is connected to the internal group for assistive technologies. */
1010
+ "prop:label"?: WarpCheckboxGroup["label"];
1011
+ /** The name applied to child checkboxes when they do not provide one.
1012
+
1013
+ Use this when the grouped checkboxes should submit values under the same form field name. Individual checkboxes can still override the group name with their own `name`. */
1014
+ "prop:name"?: WarpCheckboxGroup["name"];
1015
+ /** Whether to show optional text next to the label.
1016
+
1017
+ Use this to indicate that selecting an option from the group is not required. */
1018
+ "prop:optional"?: WarpCheckboxGroup["optional"];
1019
+ /** Help text displayed below the checkbox group.
1020
+
1021
+ Use this for supporting guidance or validation feedback. When required validation fails, the group replaces this text with the localized required message. */
1022
+ "attr:help-text"?: WarpCheckboxGroup["helpText"];
1023
+ /** Help text displayed below the checkbox group.
1024
+
1025
+ Use this for supporting guidance or validation feedback. When required validation fails, the group replaces this text with the localized required message. */
1026
+ "prop:helpText"?: WarpCheckboxGroup["helpText"];
1027
+ /** Whether at least one checkbox in the group must be selected.
1028
+
1029
+ Required validation is managed by the group. The individual checkboxes provide the submitted form values. */
1030
+ "prop:required"?: WarpCheckboxGroup["required"];
1031
+ /** Whether the checkbox group is visually invalid.
1032
+
1033
+ Use this to show an externally managed validation error for the group. The invalid state is also shared with child checkboxes for consistent styling and accessibility state. */
1034
+ "prop:invalid"?: WarpCheckboxGroup["invalid"];
832
1035
 
833
1036
  /** Set the innerHTML of the element */
834
1037
  innerHTML?: string;
@@ -837,88 +1040,168 @@ export type WCheckboxGroupSolidJsProps = {
837
1040
  };
838
1041
 
839
1042
  export type WarpComboboxProps = {
840
- /** The available options to select from */
1043
+ /** The available options to select from.
1044
+
1045
+ Use this for framework usage, application state, or remote search results. When `options` contains entries, it is used instead of child `<option>` elements. */
841
1046
  options?: WarpCombobox["options"];
842
- /** Label above input */
1047
+ /** The label displayed above the input.
1048
+
1049
+ Use this to give the combobox a visible and accessible name. */
843
1050
  label?: WarpCombobox["label"];
844
- /** Input placeholder */
1051
+ /** Placeholder text displayed when the input is empty.
1052
+
1053
+ Use this as a short hint for the expected input. Do not use placeholder text as a replacement for a label. */
845
1054
  placeholder?: WarpCombobox["placeholder"];
846
- /** The input value */
1055
+ /** The selected or typed value.
1056
+
1057
+ When an option is selected, this is set to the option value. The displayed text may differ when the option has a separate label. */
847
1058
  value?: WarpCombobox["value"];
848
- /** Whether the popover opens when focus is on the text field */
1059
+ /** Whether the option list opens when the input receives focus.
1060
+
1061
+ Use this when users should see available options before they start typing. */
849
1062
  "open-on-focus"?: WarpCombobox["openOnFocus"];
850
- /** Whether the popover opens when focus is on the text field */
1063
+ /** Whether the option list opens when the input receives focus.
1064
+
1065
+ Use this when users should see available options before they start typing. */
851
1066
  openOnFocus?: WarpCombobox["openOnFocus"];
852
- /** Select active option on blur */
1067
+ /** Whether the active option is selected when the input loses focus.
1068
+
1069
+ When enabled, the combobox selects the keyboard-highlighted option, or an option whose value exactly matches the current input value, on blur. */
853
1070
  "select-on-blur"?: WarpCombobox["selectOnBlur"];
854
- /** Select active option on blur */
1071
+ /** Whether the active option is selected when the input loses focus.
1072
+
1073
+ When enabled, the combobox selects the keyboard-highlighted option, or an option whose value exactly matches the current input value, on blur. */
855
1074
  selectOnBlur?: WarpCombobox["selectOnBlur"];
856
- /** Whether the matching text segments in the options should be highlighted */
1075
+ /** Whether matching text segments in options are highlighted.
1076
+
1077
+ Use this to visually emphasize the part of each option that matches the current input value. */
857
1078
  "match-text-segments"?: WarpCombobox["matchTextSegments"];
858
- /** Whether the matching text segments in the options should be highlighted */
1079
+ /** Whether matching text segments in options are highlighted.
1080
+
1081
+ Use this to visually emphasize the part of each option that matches the current input value. */
859
1082
  matchTextSegments?: WarpCombobox["matchTextSegments"];
860
- /** Disable client-side static filtering */
1083
+ /** Whether built-in client-side filtering is disabled.
1084
+
1085
+ Use this for remote search or externally filtered results. When disabled, all entries in `options` are rendered as provided. */
861
1086
  "disable-static-filtering"?: WarpCombobox["disableStaticFiltering"];
862
- /** Disable client-side static filtering */
1087
+ /** Whether built-in client-side filtering is disabled.
1088
+
1089
+ Use this for remote search or externally filtered results. When disabled, all entries in `options` are rendered as provided. */
863
1090
  disableStaticFiltering?: WarpCombobox["disableStaticFiltering"];
864
- /** Renders the input field in an invalid state */
1091
+ /** Whether the combobox is visually invalid.
1092
+
1093
+ Use this to show an externally managed validation error. Pair it with `help-text` to explain how to fix the error. */
865
1094
  invalid?: WarpCombobox["invalid"];
866
- /** The content to display as the help text */
1095
+ /** Help text displayed below the input.
1096
+
1097
+ Use this for supporting guidance or validation feedback. */
867
1098
  "help-text"?: WarpCombobox["helpText"];
868
- /** The content to display as the help text */
1099
+ /** Help text displayed below the input.
1100
+
1101
+ Use this for supporting guidance or validation feedback. */
869
1102
  helpText?: WarpCombobox["helpText"];
870
- /** Whether the element is disabled */
1103
+ /** Whether the combobox is disabled.
1104
+
1105
+ Disabled comboboxes cannot be focused, changed, or submitted with form data. */
871
1106
  disabled?: WarpCombobox["disabled"];
872
- /** Whether the element is required */
1107
+ /** Whether the combobox is required before form submission.
1108
+
1109
+ Use this when the user must provide a value before submitting the form. */
873
1110
  required?: WarpCombobox["required"];
874
- /** Whether to show optional text */
1111
+ /** Whether to show optional text next to the label.
1112
+
1113
+ Use this to indicate that the combobox is not required. */
875
1114
  optional?: WarpCombobox["optional"];
876
- /** Name attribute for form submission */
1115
+ /** The name submitted with the combobox value.
1116
+
1117
+ Use this when the combobox belongs to a form and its value should be included in form data. */
877
1118
  name?: WarpCombobox["name"];
878
- /** Autocomplete attribute for the input field */
1119
+ /** The autocomplete attribute passed to the internal input.
1120
+
1121
+ Defaults to `off`. Set this when browser autocomplete should be enabled or scoped to a specific autocomplete token. */
879
1122
  autocomplete?: WarpCombobox["autocomplete"];
880
1123
  };
881
1124
 
882
1125
  export type WarpComboboxSolidJsProps = {
883
- /** The available options to select from */
1126
+ /** The available options to select from.
1127
+
1128
+ Use this for framework usage, application state, or remote search results. When `options` contains entries, it is used instead of child `<option>` elements. */
884
1129
  "prop:options"?: WarpCombobox["options"];
885
- /** Label above input */
1130
+ /** The label displayed above the input.
1131
+
1132
+ Use this to give the combobox a visible and accessible name. */
886
1133
  "prop:label"?: WarpCombobox["label"];
887
- /** Input placeholder */
1134
+ /** Placeholder text displayed when the input is empty.
1135
+
1136
+ Use this as a short hint for the expected input. Do not use placeholder text as a replacement for a label. */
888
1137
  "prop:placeholder"?: WarpCombobox["placeholder"];
889
- /** The input value */
1138
+ /** The selected or typed value.
1139
+
1140
+ When an option is selected, this is set to the option value. The displayed text may differ when the option has a separate label. */
890
1141
  "prop:value"?: WarpCombobox["value"];
891
- /** Whether the popover opens when focus is on the text field */
1142
+ /** Whether the option list opens when the input receives focus.
1143
+
1144
+ Use this when users should see available options before they start typing. */
892
1145
  "bool:open-on-focus"?: WarpCombobox["openOnFocus"];
893
- /** Whether the popover opens when focus is on the text field */
1146
+ /** Whether the option list opens when the input receives focus.
1147
+
1148
+ Use this when users should see available options before they start typing. */
894
1149
  "prop:openOnFocus"?: WarpCombobox["openOnFocus"];
895
- /** Select active option on blur */
1150
+ /** Whether the active option is selected when the input loses focus.
1151
+
1152
+ When enabled, the combobox selects the keyboard-highlighted option, or an option whose value exactly matches the current input value, on blur. */
896
1153
  "bool:select-on-blur"?: WarpCombobox["selectOnBlur"];
897
- /** Select active option on blur */
1154
+ /** Whether the active option is selected when the input loses focus.
1155
+
1156
+ When enabled, the combobox selects the keyboard-highlighted option, or an option whose value exactly matches the current input value, on blur. */
898
1157
  "prop:selectOnBlur"?: WarpCombobox["selectOnBlur"];
899
- /** Whether the matching text segments in the options should be highlighted */
1158
+ /** Whether matching text segments in options are highlighted.
1159
+
1160
+ Use this to visually emphasize the part of each option that matches the current input value. */
900
1161
  "bool:match-text-segments"?: WarpCombobox["matchTextSegments"];
901
- /** Whether the matching text segments in the options should be highlighted */
1162
+ /** Whether matching text segments in options are highlighted.
1163
+
1164
+ Use this to visually emphasize the part of each option that matches the current input value. */
902
1165
  "prop:matchTextSegments"?: WarpCombobox["matchTextSegments"];
903
- /** Disable client-side static filtering */
1166
+ /** Whether built-in client-side filtering is disabled.
1167
+
1168
+ Use this for remote search or externally filtered results. When disabled, all entries in `options` are rendered as provided. */
904
1169
  "bool:disable-static-filtering"?: WarpCombobox["disableStaticFiltering"];
905
- /** Disable client-side static filtering */
1170
+ /** Whether built-in client-side filtering is disabled.
1171
+
1172
+ Use this for remote search or externally filtered results. When disabled, all entries in `options` are rendered as provided. */
906
1173
  "prop:disableStaticFiltering"?: WarpCombobox["disableStaticFiltering"];
907
- /** Renders the input field in an invalid state */
1174
+ /** Whether the combobox is visually invalid.
1175
+
1176
+ Use this to show an externally managed validation error. Pair it with `help-text` to explain how to fix the error. */
908
1177
  "prop:invalid"?: WarpCombobox["invalid"];
909
- /** The content to display as the help text */
1178
+ /** Help text displayed below the input.
1179
+
1180
+ Use this for supporting guidance or validation feedback. */
910
1181
  "attr:help-text"?: WarpCombobox["helpText"];
911
- /** The content to display as the help text */
1182
+ /** Help text displayed below the input.
1183
+
1184
+ Use this for supporting guidance or validation feedback. */
912
1185
  "prop:helpText"?: WarpCombobox["helpText"];
913
- /** Whether the element is disabled */
1186
+ /** Whether the combobox is disabled.
1187
+
1188
+ Disabled comboboxes cannot be focused, changed, or submitted with form data. */
914
1189
  "prop:disabled"?: WarpCombobox["disabled"];
915
- /** Whether the element is required */
1190
+ /** Whether the combobox is required before form submission.
1191
+
1192
+ Use this when the user must provide a value before submitting the form. */
916
1193
  "prop:required"?: WarpCombobox["required"];
917
- /** Whether to show optional text */
1194
+ /** Whether to show optional text next to the label.
1195
+
1196
+ Use this to indicate that the combobox is not required. */
918
1197
  "prop:optional"?: WarpCombobox["optional"];
919
- /** Name attribute for form submission */
1198
+ /** The name submitted with the combobox value.
1199
+
1200
+ Use this when the combobox belongs to a form and its value should be included in form data. */
920
1201
  "prop:name"?: WarpCombobox["name"];
921
- /** Autocomplete attribute for the input field */
1202
+ /** The autocomplete attribute passed to the internal input.
1203
+
1204
+ Defaults to `off`. Set this when browser autocomplete should be enabled or scoped to a specific autocomplete token. */
922
1205
  "prop:autocomplete"?: WarpCombobox["autocomplete"];
923
1206
 
924
1207
  /** Set the innerHTML of the element */
@@ -928,41 +1211,49 @@ export type WarpComboboxSolidJsProps = {
928
1211
  };
929
1212
 
930
1213
  export type WarpDatepickerProps = {
931
- /** */
1214
+ /** The label displayed above the date input.
1215
+
1216
+ Use this to give the datepicker a visible and accessible name. */
932
1217
  label?: WarpDatepicker["label"];
933
- /** Takes precedence over the `<html>` lang attribute. */
1218
+ /** The locale used for calendar labels and date formatting.
1219
+
1220
+ This takes precedence over the `<html>` `lang` attribute. Supported built-in locales are `en`, `nb`, `sv`, `da`, and `fi`. */
934
1221
  lang?: WarpDatepicker["lang"];
935
- /** */
1222
+ /** The name submitted with the date value.
1223
+
1224
+ Use this when the datepicker belongs to a form and its value should be included in form data. */
936
1225
  name?: WarpDatepicker["name"];
937
- /** */
1226
+ /** The selected date value.
1227
+
1228
+ Use an ISO date string in `YYYY-MM-DD` format. The value is submitted with the form and is reset to its initial value when the form resets. */
938
1229
  value?: WarpDatepicker["value"];
939
- /** Decides the format of the date as shown in the calendar header.
1230
+ /** The date format used in the calendar header.
940
1231
 
941
1232
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
942
1233
  "header-format"?: WarpDatepicker["headerFormat"];
943
- /** Decides the format of the date as shown in the calendar header.
1234
+ /** The date format used in the calendar header.
944
1235
 
945
1236
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
946
1237
  headerFormat?: WarpDatepicker["headerFormat"];
947
- /** Decides the format of the weekday as shown above the grid of dates in the calendar.
1238
+ /** The weekday format shown above the calendar grid.
948
1239
 
949
1240
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
950
1241
  "weekday-format"?: WarpDatepicker["weekdayFormat"];
951
- /** Decides the format of the weekday as shown above the grid of dates in the calendar.
1242
+ /** The weekday format shown above the calendar grid.
952
1243
 
953
1244
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
954
1245
  weekdayFormat?: WarpDatepicker["weekdayFormat"];
955
- /** Decides the format of the day in the calendar as read to screen readers.
1246
+ /** The date format used for calendar day accessible names.
956
1247
 
957
1248
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
958
1249
  "day-format"?: WarpDatepicker["dayFormat"];
959
- /** Decides the format of the day in the calendar as read to screen readers.
1250
+ /** The date format used for calendar day accessible names.
960
1251
 
961
1252
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
962
1253
  dayFormat?: WarpDatepicker["dayFormat"];
963
- /** Lets you control if a date in the calendar should be disabled.
1254
+ /** Function used to disable dates in the calendar.
964
1255
 
965
- This needs to be set on the element instance in JavaScript, not as an HTML attribute. */
1256
+ Set this on the element instance in JavaScript, not as an HTML attribute. Disabled dates cannot be selected from the calendar. */
966
1257
  isDayDisabled?: WarpDatepicker["isDayDisabled"];
967
1258
  /** */
968
1259
  isCalendarOpen?: WarpDatepicker["isCalendarOpen"];
@@ -989,41 +1280,49 @@ the query will point to an element that doesn't exist anymore. */
989
1280
  };
990
1281
 
991
1282
  export type WarpDatepickerSolidJsProps = {
992
- /** */
1283
+ /** The label displayed above the date input.
1284
+
1285
+ Use this to give the datepicker a visible and accessible name. */
993
1286
  "prop:label"?: WarpDatepicker["label"];
994
- /** Takes precedence over the `<html>` lang attribute. */
1287
+ /** The locale used for calendar labels and date formatting.
1288
+
1289
+ This takes precedence over the `<html>` `lang` attribute. Supported built-in locales are `en`, `nb`, `sv`, `da`, and `fi`. */
995
1290
  "prop:lang"?: WarpDatepicker["lang"];
996
- /** */
1291
+ /** The name submitted with the date value.
1292
+
1293
+ Use this when the datepicker belongs to a form and its value should be included in form data. */
997
1294
  "prop:name"?: WarpDatepicker["name"];
998
- /** */
1295
+ /** The selected date value.
1296
+
1297
+ Use an ISO date string in `YYYY-MM-DD` format. The value is submitted with the form and is reset to its initial value when the form resets. */
999
1298
  "prop:value"?: WarpDatepicker["value"];
1000
- /** Decides the format of the date as shown in the calendar header.
1299
+ /** The date format used in the calendar header.
1001
1300
 
1002
1301
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
1003
1302
  "attr:header-format"?: WarpDatepicker["headerFormat"];
1004
- /** Decides the format of the date as shown in the calendar header.
1303
+ /** The date format used in the calendar header.
1005
1304
 
1006
1305
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
1007
1306
  "prop:headerFormat"?: WarpDatepicker["headerFormat"];
1008
- /** Decides the format of the weekday as shown above the grid of dates in the calendar.
1307
+ /** The weekday format shown above the calendar grid.
1009
1308
 
1010
1309
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
1011
1310
  "attr:weekday-format"?: WarpDatepicker["weekdayFormat"];
1012
- /** Decides the format of the weekday as shown above the grid of dates in the calendar.
1311
+ /** The weekday format shown above the calendar grid.
1013
1312
 
1014
1313
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
1015
1314
  "prop:weekdayFormat"?: WarpDatepicker["weekdayFormat"];
1016
- /** Decides the format of the day in the calendar as read to screen readers.
1315
+ /** The date format used for calendar day accessible names.
1017
1316
 
1018
1317
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
1019
1318
  "attr:day-format"?: WarpDatepicker["dayFormat"];
1020
- /** Decides the format of the day in the calendar as read to screen readers.
1319
+ /** The date format used for calendar day accessible names.
1021
1320
 
1022
1321
  The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format). */
1023
1322
  "prop:dayFormat"?: WarpDatepicker["dayFormat"];
1024
- /** Lets you control if a date in the calendar should be disabled.
1323
+ /** Function used to disable dates in the calendar.
1025
1324
 
1026
- This needs to be set on the element instance in JavaScript, not as an HTML attribute. */
1325
+ Set this on the element instance in JavaScript, not as an HTML attribute. Disabled dates cannot be selected from the calendar. */
1027
1326
  "prop:isDayDisabled"?: WarpDatepicker["isDayDisabled"];
1028
1327
  /** */
1029
1328
  "prop:isCalendarOpen"?: WarpDatepicker["isCalendarOpen"];
@@ -1055,31 +1354,31 @@ the query will point to an element that doesn't exist anymore. */
1055
1354
  };
1056
1355
 
1057
1356
  export type WarpExpandableProps = {
1058
- /** */
1357
+ /** Controls component's expanded state */
1059
1358
  expanded?: WarpExpandable["expanded"];
1060
- /** */
1359
+ /** Component title. Used to display the title value which is always present regardless of whether the component is open or closed. */
1061
1360
  title?: WarpExpandable["title"];
1062
- /** */
1361
+ /** Will make the expandable a Box */
1063
1362
  box?: WarpExpandable["box"];
1064
- /** */
1363
+ /** Will make the expandable full-width on the sm breakpoint size */
1065
1364
  bleed?: WarpExpandable["bleed"];
1066
- /** */
1365
+ /** @deprecated Probably does not work the way you expect. The class must exist inside the shadow DOM of the component. */
1067
1366
  "button-class"?: WarpExpandable["buttonClass"];
1068
- /** */
1367
+ /** @deprecated Probably does not work the way you expect. The class must exist inside the shadow DOM of the component. */
1069
1368
  buttonClass?: WarpExpandable["buttonClass"];
1070
- /** */
1369
+ /** @deprecated Probably does not work the way you expect. The class must exist inside the shadow DOM of the component. */
1071
1370
  "content-class"?: WarpExpandable["contentClass"];
1072
- /** */
1371
+ /** @deprecated Probably does not work the way you expect. The class must exist inside the shadow DOM of the component. */
1073
1372
  contentClass?: WarpExpandable["contentClass"];
1074
- /** */
1373
+ /** Controls chevron visibility */
1075
1374
  "no-chevron"?: WarpExpandable["noChevron"];
1076
- /** */
1375
+ /** Controls chevron visibility */
1077
1376
  noChevron?: WarpExpandable["noChevron"];
1078
- /** */
1377
+ /** Will animate the expansion/collapse */
1079
1378
  animated?: WarpExpandable["animated"];
1080
- /** */
1379
+ /** Wrap the toggle button in a heading element with the specified level. If headingLevel is not specified, the button will not be wrapped by a heading element. */
1081
1380
  "heading-level"?: WarpExpandable["headingLevel"];
1082
- /** */
1381
+ /** Wrap the toggle button in a heading element with the specified level. If headingLevel is not specified, the button will not be wrapped by a heading element. */
1083
1382
  headingLevel?: WarpExpandable["headingLevel"];
1084
1383
  /** */
1085
1384
  _hasTitle?: WarpExpandable["_hasTitle"];
@@ -1088,31 +1387,31 @@ export type WarpExpandableProps = {
1088
1387
  };
1089
1388
 
1090
1389
  export type WarpExpandableSolidJsProps = {
1091
- /** */
1390
+ /** Controls component's expanded state */
1092
1391
  "prop:expanded"?: WarpExpandable["expanded"];
1093
- /** */
1392
+ /** Component title. Used to display the title value which is always present regardless of whether the component is open or closed. */
1094
1393
  "prop:title"?: WarpExpandable["title"];
1095
- /** */
1394
+ /** Will make the expandable a Box */
1096
1395
  "prop:box"?: WarpExpandable["box"];
1097
- /** */
1396
+ /** Will make the expandable full-width on the sm breakpoint size */
1098
1397
  "prop:bleed"?: WarpExpandable["bleed"];
1099
- /** */
1398
+ /** @deprecated Probably does not work the way you expect. The class must exist inside the shadow DOM of the component. */
1100
1399
  "attr:button-class"?: WarpExpandable["buttonClass"];
1101
- /** */
1400
+ /** @deprecated Probably does not work the way you expect. The class must exist inside the shadow DOM of the component. */
1102
1401
  "prop:buttonClass"?: WarpExpandable["buttonClass"];
1103
- /** */
1402
+ /** @deprecated Probably does not work the way you expect. The class must exist inside the shadow DOM of the component. */
1104
1403
  "attr:content-class"?: WarpExpandable["contentClass"];
1105
- /** */
1404
+ /** @deprecated Probably does not work the way you expect. The class must exist inside the shadow DOM of the component. */
1106
1405
  "prop:contentClass"?: WarpExpandable["contentClass"];
1107
- /** */
1406
+ /** Controls chevron visibility */
1108
1407
  "bool:no-chevron"?: WarpExpandable["noChevron"];
1109
- /** */
1408
+ /** Controls chevron visibility */
1110
1409
  "prop:noChevron"?: WarpExpandable["noChevron"];
1111
- /** */
1410
+ /** Will animate the expansion/collapse */
1112
1411
  "prop:animated"?: WarpExpandable["animated"];
1113
- /** */
1412
+ /** Wrap the toggle button in a heading element with the specified level. If headingLevel is not specified, the button will not be wrapped by a heading element. */
1114
1413
  "attr:heading-level"?: WarpExpandable["headingLevel"];
1115
- /** */
1414
+ /** Wrap the toggle button in a heading element with the specified level. If headingLevel is not specified, the button will not be wrapped by a heading element. */
1116
1415
  "prop:headingLevel"?: WarpExpandable["headingLevel"];
1117
1416
  /** */
1118
1417
  "prop:_hasTitle"?: WarpExpandable["_hasTitle"];
@@ -1125,6 +1424,9 @@ export type WarpExpandableSolidJsProps = {
1125
1424
  textContent?: string | number;
1126
1425
  };
1127
1426
 
1427
+ /** `WarpModal` component event */
1428
+ export type WarpModalElementEvent<E = Event> = TypedEvent<WarpModal, E>;
1429
+
1128
1430
  export type WarpModalProps = {
1129
1431
  /** Controls if the modal should show or hide.
1130
1432
 
@@ -1140,9 +1442,9 @@ You can also call the `open()` and `close()` methods. */
1140
1442
  ignoreBackdropClicks?: WarpModal["ignoreBackdropClicks"];
1141
1443
 
1142
1444
  /** */
1143
- onshown?: (e: CustomEvent) => void;
1445
+ onshown?: (e: WarpModalElementEvent) => void;
1144
1446
  /** */
1145
- onhidden?: (e: CustomEvent) => void;
1447
+ onhidden?: (e: WarpModalElementEvent) => void;
1146
1448
  };
1147
1449
 
1148
1450
  export type WarpModalSolidJsProps = {
@@ -1159,9 +1461,9 @@ You can also call the `open()` and `close()` methods. */
1159
1461
  /** Ignores clicks to the backdrop when set */
1160
1462
  "prop:ignoreBackdropClicks"?: WarpModal["ignoreBackdropClicks"];
1161
1463
  /** */
1162
- "on:shown"?: (e: CustomEvent) => void;
1464
+ "on:shown"?: (e: WarpModalElementEvent) => void;
1163
1465
  /** */
1164
- "on:hidden"?: (e: CustomEvent) => void;
1466
+ "on:hidden"?: (e: WarpModalElementEvent) => void;
1165
1467
 
1166
1468
  /** Set the innerHTML of the element */
1167
1469
  innerHTML?: string;
@@ -1178,6 +1480,12 @@ export type WarpModalFooterSolidJsProps = {
1178
1480
  textContent?: string | number;
1179
1481
  };
1180
1482
 
1483
+ /** `WarpModalHeader` component event */
1484
+ export type WarpModalHeaderElementEvent<E = Event> = TypedEvent<
1485
+ WarpModalHeader,
1486
+ E
1487
+ >;
1488
+
1181
1489
  export type WarpModalHeaderProps = {
1182
1490
  /** A short but descriptive title for the modal */
1183
1491
  title?: WarpModalHeader["title"];
@@ -1189,7 +1497,7 @@ export type WarpModalHeaderProps = {
1189
1497
  noClose?: WarpModalHeader["noClose"];
1190
1498
 
1191
1499
  /** */
1192
- onbackClicked?: (e: CustomEvent) => void;
1500
+ onbackClicked?: (e: WarpModalHeaderElementEvent) => void;
1193
1501
  };
1194
1502
 
1195
1503
  export type WarpModalHeaderSolidJsProps = {
@@ -1202,7 +1510,7 @@ export type WarpModalHeaderSolidJsProps = {
1202
1510
  /** Lets you hide the close button in the header */
1203
1511
  "prop:noClose"?: WarpModalHeader["noClose"];
1204
1512
  /** */
1205
- "on:backClicked"?: (e: CustomEvent) => void;
1513
+ "on:backClicked"?: (e: WarpModalHeaderElementEvent) => void;
1206
1514
 
1207
1515
  /** Set the innerHTML of the element */
1208
1516
  innerHTML?: string;
@@ -1237,6 +1545,12 @@ export type WarpPageIndicatorSolidJsProps = {
1237
1545
  textContent?: string | number;
1238
1546
  };
1239
1547
 
1548
+ /** `WarpPagination` component event */
1549
+ export type WarpPaginationElementEvent<E = Event> = TypedEvent<
1550
+ WarpPagination,
1551
+ E
1552
+ >;
1553
+
1240
1554
  export type WarpPaginationProps = {
1241
1555
  /** The base URL used to construct page links, for example `/search?page=`.
1242
1556
 
@@ -1258,7 +1572,7 @@ The page number is appended to this URL. */
1258
1572
  visiblePages?: WarpPagination["visiblePages"];
1259
1573
 
1260
1574
  /** Triggered when a link in the pagination is clicked. Contains the page number in `string` form. */
1261
- "onpage-click"?: (e: CustomEvent) => void;
1575
+ "onpage-click"?: (e: WarpPaginationElementEvent) => void;
1262
1576
  };
1263
1577
 
1264
1578
  export type WarpPaginationSolidJsProps = {
@@ -1281,7 +1595,7 @@ The page number is appended to this URL. */
1281
1595
  /** The maximum number of page numbers visible. */
1282
1596
  "prop:visiblePages"?: WarpPagination["visiblePages"];
1283
1597
  /** Triggered when a link in the pagination is clicked. Contains the page number in `string` form. */
1284
- "on:page-click"?: (e: CustomEvent) => void;
1598
+ "on:page-click"?: (e: WarpPaginationElementEvent) => void;
1285
1599
 
1286
1600
  /** Set the innerHTML of the element */
1287
1601
  innerHTML?: string;
@@ -1289,6 +1603,9 @@ The page number is appended to this URL. */
1289
1603
  textContent?: string | number;
1290
1604
  };
1291
1605
 
1606
+ /** `WarpPill` component event */
1607
+ export type WarpPillElementEvent<E = Event> = TypedEvent<WarpPill, E>;
1608
+
1292
1609
  export type WarpPillProps = {
1293
1610
  /** Whether the pill should be removable via a close button. */
1294
1611
  "can-close"?: WarpPill["canClose"];
@@ -1314,9 +1631,9 @@ export type WarpPillProps = {
1314
1631
  closeAriaLabel?: WarpPill["closeAriaLabel"];
1315
1632
 
1316
1633
  /** Fires when the pill itself is clicked. */
1317
- "onw-pill-click"?: (e: CustomEvent) => void;
1634
+ "onw-pill-click"?: (e: WarpPillElementEvent) => void;
1318
1635
  /** Fires when the pill's close button is clicked. */
1319
- "onw-pill-close"?: (e: CustomEvent) => void;
1636
+ "onw-pill-close"?: (e: WarpPillElementEvent) => void;
1320
1637
  };
1321
1638
 
1322
1639
  export type WarpPillSolidJsProps = {
@@ -1343,9 +1660,9 @@ export type WarpPillSolidJsProps = {
1343
1660
  /** Label read by screen readers when targeting the close button. */
1344
1661
  "prop:closeAriaLabel"?: WarpPill["closeAriaLabel"];
1345
1662
  /** Fires when the pill itself is clicked. */
1346
- "on:w-pill-click"?: (e: CustomEvent) => void;
1663
+ "on:w-pill-click"?: (e: WarpPillElementEvent) => void;
1347
1664
  /** Fires when the pill's close button is clicked. */
1348
- "on:w-pill-close"?: (e: CustomEvent) => void;
1665
+ "on:w-pill-close"?: (e: WarpPillElementEvent) => void;
1349
1666
 
1350
1667
  /** Set the innerHTML of the element */
1351
1668
  innerHTML?: string;
@@ -1439,6 +1756,9 @@ If you set `required` and `invalid` the group gets a default error message, but
1439
1756
  textContent?: string | number;
1440
1757
  };
1441
1758
 
1759
+ /** `WarpSelect` component event */
1760
+ export type WarpSelectElementEvent<E = Event> = TypedEvent<WarpSelect, E>;
1761
+
1442
1762
  export type WarpSelectProps = {
1443
1763
  /** @deprecated Use the native `autofocus` attribute instead. - Whether the element should receive focus on render. */
1444
1764
  "auto-focus"?: WarpSelect["autoFocus"];
@@ -1480,7 +1800,7 @@ Paired with `help-text` to provide feedback about the error. */
1480
1800
  value?: WarpSelect["value"];
1481
1801
 
1482
1802
  /** */
1483
- onchange?: (e: CustomEvent) => void;
1803
+ onchange?: (e: WarpSelectElementEvent) => void;
1484
1804
  };
1485
1805
 
1486
1806
  export type WarpSelectSolidJsProps = {
@@ -1523,7 +1843,7 @@ Paired with `help-text` to provide feedback about the error. */
1523
1843
  /** Lets you set the current value. */
1524
1844
  "prop:value"?: WarpSelect["value"];
1525
1845
  /** */
1526
- "on:change"?: (e: CustomEvent) => void;
1846
+ "on:change"?: (e: WarpSelectElementEvent) => void;
1527
1847
 
1528
1848
  /** Set the innerHTML of the element */
1529
1849
  innerHTML?: string;
@@ -1531,6 +1851,12 @@ Paired with `help-text` to provide feedback about the error. */
1531
1851
  textContent?: string | number;
1532
1852
  };
1533
1853
 
1854
+ /** `WarpSliderThumb` component event */
1855
+ export type WarpSliderThumbElementEvent<E = Event> = TypedEvent<
1856
+ WarpSliderThumb,
1857
+ E
1858
+ >;
1859
+
1534
1860
  export type WarpSliderThumbProps = {
1535
1861
  /** Label for the range input. */
1536
1862
  "aria-label"?: WarpSliderThumb["ariaLabel"];
@@ -1548,9 +1874,9 @@ export type WarpSliderThumbProps = {
1548
1874
  placeholder?: WarpSliderThumb["placeholder"];
1549
1875
 
1550
1876
  /** Internal event used by (and stopped by) `w-slider`. */
1551
- onthumbreset?: (e: CustomEvent) => void;
1877
+ onthumbreset?: (e: WarpSliderThumbElementEvent) => void;
1552
1878
  /** Internal event used by (and stopped by) `w-slider`. */
1553
- onslidervalidity?: (e: CustomEvent) => void;
1879
+ onslidervalidity?: (e: WarpSliderThumbElementEvent) => void;
1554
1880
  };
1555
1881
 
1556
1882
  export type WarpSliderThumbSolidJsProps = {
@@ -1569,9 +1895,9 @@ export type WarpSliderThumbSolidJsProps = {
1569
1895
  /** Placeholder in empty text fields */
1570
1896
  "prop:placeholder"?: WarpSliderThumb["placeholder"];
1571
1897
  /** Internal event used by (and stopped by) `w-slider`. */
1572
- "on:thumbreset"?: (e: CustomEvent) => void;
1898
+ "on:thumbreset"?: (e: WarpSliderThumbElementEvent) => void;
1573
1899
  /** Internal event used by (and stopped by) `w-slider`. */
1574
- "on:slidervalidity"?: (e: CustomEvent) => void;
1900
+ "on:slidervalidity"?: (e: WarpSliderThumbElementEvent) => void;
1575
1901
 
1576
1902
  /** Set the innerHTML of the element */
1577
1903
  innerHTML?: string;
@@ -1720,6 +2046,12 @@ export type WarpStepIndicatorSolidJsProps = {
1720
2046
  textContent?: string | number;
1721
2047
  };
1722
2048
 
2049
+ /** `WarpSwitch` component event */
2050
+ export type WarpSwitchElementEvent<E = Event> = TypedEvent<WarpSwitch, E>;
2051
+ /** `change` event type */
2052
+ export type WarpSwitchChangeElementEvent =
2053
+ WarpSwitchElementEvent<WarpSwitchChangeEvent>;
2054
+
1723
2055
  export type WarpSwitchProps = {
1724
2056
  /** Name used when submitting an HTML form. */
1725
2057
  name?: WarpSwitch["name"];
@@ -1733,7 +2065,7 @@ The component reports `null` as the value in the `change` event when `value` is
1733
2065
  disabled?: WarpSwitch["disabled"];
1734
2066
 
1735
2067
  /** Dispatched when the switch toggles. Includes boolean `checked` and string/null `value` on `details`. */
1736
- onchange?: (e: WarpSwitchChangeEvent) => void;
2068
+ onchange?: (e: WarpSwitchChangeElementEvent) => void;
1737
2069
  };
1738
2070
 
1739
2071
  export type WarpSwitchSolidJsProps = {
@@ -1748,7 +2080,7 @@ The component reports `null` as the value in the `change` event when `value` is
1748
2080
  /** Whether the switch is disabled. */
1749
2081
  "prop:disabled"?: WarpSwitch["disabled"];
1750
2082
  /** Dispatched when the switch toggles. Includes boolean `checked` and string/null `value` on `details`. */
1751
- "on:change"?: (e: WarpSwitchChangeEvent) => void;
2083
+ "on:change"?: (e: WarpSwitchChangeElementEvent) => void;
1752
2084
 
1753
2085
  /** Set the innerHTML of the element */
1754
2086
  innerHTML?: string;
@@ -1790,19 +2122,25 @@ export type WarpTabPanelSolidJsProps = {
1790
2122
  textContent?: string | number;
1791
2123
  };
1792
2124
 
2125
+ /** `WarpTabs` component event */
2126
+ export type WarpTabsElementEvent<E = Event> = TypedEvent<WarpTabs, E>;
2127
+ /** `change` event type */
2128
+ export type WarpTabsChangeElementEvent =
2129
+ WarpTabsElementEvent<WarpTabsChangeEvent>;
2130
+
1793
2131
  export type WarpTabsProps = {
1794
2132
  /** The `id` of the panel that should be active. */
1795
2133
  active?: WarpTabs["active"];
1796
2134
 
1797
2135
  /** Includes `details.panelId` with the now active tab's ID */
1798
- onchange?: (e: WarpTabsChangeEvent) => void;
2136
+ onchange?: (e: WarpTabsChangeElementEvent) => void;
1799
2137
  };
1800
2138
 
1801
2139
  export type WarpTabsSolidJsProps = {
1802
2140
  /** The `id` of the panel that should be active. */
1803
2141
  "prop:active"?: WarpTabs["active"];
1804
2142
  /** Includes `details.panelId` with the now active tab's ID */
1805
- "on:change"?: (e: WarpTabsChangeEvent) => void;
2143
+ "on:change"?: (e: WarpTabsChangeElementEvent) => void;
1806
2144
 
1807
2145
  /** Set the innerHTML of the element */
1808
2146
  innerHTML?: string;
@@ -1918,10 +2256,12 @@ export type CustomElements = {
1918
2256
  * Component attributes and properties that can be applied to the element or by using JavaScript.
1919
2257
  *
1920
2258
  * - `name`: Icon filename (without .svg)
1921
- * - `size`: Size: small, medium, large or pixel value (e.g. "32px")
1922
- * - `locale`: Locale used in CDN URL
2259
+ * - `size`: Size: small, medium, large or pixel value (e.g. "32px").
2260
+ * - `locale`: Locale used for `<title>` text.
2261
+ *
2262
+ * Reads the `lang` attribute from `<html>`, falls back to 'en'.
1923
2263
  */
1924
- "w-icon": Partial<WIconProps & BaseProps<WIcon> & BaseEvents>;
2264
+ "w-icon": Partial<WarpIconProps & BaseProps<WarpIcon> & BaseEvents>;
1925
2265
 
1926
2266
  /**
1927
2267
  * A single-line input component used for entering and editing textual or numeric data.
@@ -2032,14 +2372,18 @@ export type CustomElements = {
2032
2372
  *
2033
2373
  * Component attributes and properties that can be applied to the element or by using JavaScript.
2034
2374
  *
2035
- * - `autofocus`: undefined
2036
- * - `variant`: undefined
2037
- * - `small`: undefined
2038
- * - `href`: undefined
2039
- * - `disabled`: undefined
2040
- * - `target`: undefined
2041
- * - `rel`: undefined
2042
- * - `full-width`/`fullWidth`: undefined
2375
+ * - `autofocus`: Focus the link after it is rendered
2376
+ * - `variant`: Visual style for the link/button.
2377
+ * - `small`: Render a smaller version
2378
+ * - `href`: The URL the link points to
2379
+ * - `disabled`: Applies disabled styling, but you need to disable clicks on your own.
2380
+ *
2381
+ * The component renders an `<a>` element; `disabled` affects styling, but does not inherently prevent navigation. If you need to fully disable interaction, omit `href` and/or prevent default click behavior.
2382
+ * - `target`: Where to display the linked URL (e.g. `_blank`)
2383
+ * - `rel`: Relationship of the linked URL.
2384
+ *
2385
+ * If `target="_blank"` and `rel` is not provided, the component uses `noopener`.
2386
+ * - `full-width`/`fullWidth`: Makes the link take up the full width of its parent
2043
2387
  */
2044
2388
  "w-link": Partial<WarpLinkProps & BaseProps<WarpLink> & BaseEvents>;
2045
2389
 
@@ -2219,9 +2563,15 @@ export type CustomElements = {
2219
2563
  *
2220
2564
  * Component attributes and properties that can be applied to the element or by using JavaScript.
2221
2565
  *
2222
- * - `selected`: undefined
2223
- * - `flat`: undefined
2224
- * - `clickable`: undefined
2566
+ * - `selected`: Whether the card is visually selected.
2567
+ *
2568
+ * Use this when the card represents a selected item or choice. This only controls the visual selected state; update it from your application state when the selection changes.
2569
+ * - `flat`: Whether the card uses the flat visual treatment.
2570
+ *
2571
+ * Flat cards use a bordered surface instead of the default elevated surface. Use this for denser layouts or when the card sits inside another surface.
2572
+ * - `clickable`: Whether the whole card is interactive.
2573
+ *
2574
+ * When set, the card becomes keyboard focusable and Enter or Space triggers a click on the card. Use this only when the whole card has one action or represents one selectable choice.
2225
2575
  * - `buttonText`: undefined (property only)
2226
2576
  *
2227
2577
  * ## Methods
@@ -2239,13 +2589,27 @@ export type CustomElements = {
2239
2589
  *
2240
2590
  * Component attributes and properties that can be applied to the element or by using JavaScript.
2241
2591
  *
2242
- * - `name`: The name of the checkbox, submitted as a name/value pair with form data.
2243
- * - `value`: The value of the checkbox, submitted as a name/value pair with form data.
2244
- * - `indeterminate`: Draws the checkbox in an indeterminate state.
2245
- * - `checked`: Draws the checkbox in a checked state (reflected to attribute).
2246
- * - `disabled`: Disables the checkbox.
2247
- * - `required`: Makes the checkbox a required field.
2248
- * - `invalid`: Draws the checkbox in an invalid state.
2592
+ * - `name`: The name of the checkbox.
2593
+ *
2594
+ * When the checkbox is checked and belongs to a form, this name is submitted with the checkbox value. If the checkbox is inside a `w-checkbox-group` with a name, the group name is used when the checkbox does not have its own name.
2595
+ * - `value`: The value submitted when the checkbox is checked.
2596
+ *
2597
+ * If no value attribute is set, the checkbox defaults to `on`. Unchecked and disabled checkboxes do not submit a value.
2598
+ * - `indeterminate`: Whether the checkbox is visually indeterminate.
2599
+ *
2600
+ * Use this for parent options that represent a mixed set of child selections. Clicking the checkbox clears the indeterminate state and sets the checkbox to checked.
2601
+ * - `checked`: Whether the checkbox is checked.
2602
+ *
2603
+ * Checked checkboxes submit their value with form data. The property is reflected to the `checked` attribute.
2604
+ * - `disabled`: Whether the checkbox is disabled.
2605
+ *
2606
+ * Disabled checkboxes cannot be focused, changed, or submitted with form data.
2607
+ * - `required`: Whether the checkbox must be checked before form submission.
2608
+ *
2609
+ * A required checkbox is invalid until it is checked. For requiring at least one option in a set, use `required` on `w-checkbox-group`.
2610
+ * - `invalid`: Whether the checkbox is visually invalid.
2611
+ *
2612
+ * Use this to show an externally managed validation error. Required validation also sets the invalid state after the user interacts with the checkbox or tries to submit the form.
2249
2613
  * - `input`: undefined (property only)
2250
2614
  * - `_computedInvalid`: Computed invalid state: combines own invalid with group invalid (property only) (readonly)
2251
2615
  * - `validationMessage`: Returns the validation message if the checkbox is invalid, otherwise an empty string (property only) (readonly)
@@ -2268,7 +2632,9 @@ export type CustomElements = {
2268
2632
  * - `checkValidity() => boolean`: Checks whether the checkbox passes constraint validation
2269
2633
  * - `reportValidity() => boolean`: Checks validity and shows the browser's validation message if invalid
2270
2634
  */
2271
- "w-checkbox": Partial<WCheckboxProps & BaseProps<WCheckbox> & BaseEvents>;
2635
+ "w-checkbox": Partial<
2636
+ WarpCheckboxProps & BaseProps<WarpCheckbox> & BaseEvents
2637
+ >;
2272
2638
 
2273
2639
  /**
2274
2640
  *
@@ -2278,11 +2644,23 @@ export type CustomElements = {
2278
2644
  * Component attributes and properties that can be applied to the element or by using JavaScript.
2279
2645
  *
2280
2646
  * - `label`: The group label displayed above the checkboxes.
2647
+ *
2648
+ * Use this to describe the shared question or topic for the checkbox options. The label is connected to the internal group for assistive technologies.
2281
2649
  * - `name`: The name applied to child checkboxes when they do not provide one.
2650
+ *
2651
+ * Use this when the grouped checkboxes should submit values under the same form field name. Individual checkboxes can still override the group name with their own `name`.
2282
2652
  * - `optional`: Whether to show optional text next to the label.
2283
- * - `help-text`/`helpText`: undefined
2284
- * - `required`: Makes the checkbox group required.
2285
- * - `invalid`: Marks the checkbox group as invalid.
2653
+ *
2654
+ * Use this to indicate that selecting an option from the group is not required.
2655
+ * - `help-text`/`helpText`: Help text displayed below the checkbox group.
2656
+ *
2657
+ * Use this for supporting guidance or validation feedback. When required validation fails, the group replaces this text with the localized required message.
2658
+ * - `required`: Whether at least one checkbox in the group must be selected.
2659
+ *
2660
+ * Required validation is managed by the group. The individual checkboxes provide the submitted form values.
2661
+ * - `invalid`: Whether the checkbox group is visually invalid.
2662
+ *
2663
+ * Use this to show an externally managed validation error for the group. The invalid state is also shared with child checkboxes for consistent styling and accessibility state.
2286
2664
  *
2287
2665
  * ## Methods
2288
2666
  *
@@ -2293,7 +2671,7 @@ export type CustomElements = {
2293
2671
  * - `focus(options?: FocusOptions) => void`: Sets focus on the checkbox group.
2294
2672
  */
2295
2673
  "w-checkbox-group": Partial<
2296
- WCheckboxGroupProps & BaseProps<WCheckboxGroup> & BaseEvents
2674
+ WarpCheckboxGroupProps & BaseProps<WarpCheckboxGroup> & BaseEvents
2297
2675
  >;
2298
2676
 
2299
2677
  /**
@@ -2305,21 +2683,51 @@ export type CustomElements = {
2305
2683
  *
2306
2684
  * Component attributes and properties that can be applied to the element or by using JavaScript.
2307
2685
  *
2308
- * - `options`: The available options to select from
2309
- * - `label`: Label above input
2310
- * - `placeholder`: Input placeholder
2311
- * - `value`: The input value
2312
- * - `open-on-focus`/`openOnFocus`: Whether the popover opens when focus is on the text field
2313
- * - `select-on-blur`/`selectOnBlur`: Select active option on blur
2314
- * - `match-text-segments`/`matchTextSegments`: Whether the matching text segments in the options should be highlighted
2315
- * - `disable-static-filtering`/`disableStaticFiltering`: Disable client-side static filtering
2316
- * - `invalid`: Renders the input field in an invalid state
2317
- * - `help-text`/`helpText`: The content to display as the help text
2318
- * - `disabled`: Whether the element is disabled
2319
- * - `required`: Whether the element is required
2320
- * - `optional`: Whether to show optional text
2321
- * - `name`: Name attribute for form submission
2322
- * - `autocomplete`: Autocomplete attribute for the input field
2686
+ * - `options`: The available options to select from.
2687
+ *
2688
+ * Use this for framework usage, application state, or remote search results. When `options` contains entries, it is used instead of child `<option>` elements.
2689
+ * - `label`: The label displayed above the input.
2690
+ *
2691
+ * Use this to give the combobox a visible and accessible name.
2692
+ * - `placeholder`: Placeholder text displayed when the input is empty.
2693
+ *
2694
+ * Use this as a short hint for the expected input. Do not use placeholder text as a replacement for a label.
2695
+ * - `value`: The selected or typed value.
2696
+ *
2697
+ * When an option is selected, this is set to the option value. The displayed text may differ when the option has a separate label.
2698
+ * - `open-on-focus`/`openOnFocus`: Whether the option list opens when the input receives focus.
2699
+ *
2700
+ * Use this when users should see available options before they start typing.
2701
+ * - `select-on-blur`/`selectOnBlur`: Whether the active option is selected when the input loses focus.
2702
+ *
2703
+ * When enabled, the combobox selects the keyboard-highlighted option, or an option whose value exactly matches the current input value, on blur.
2704
+ * - `match-text-segments`/`matchTextSegments`: Whether matching text segments in options are highlighted.
2705
+ *
2706
+ * Use this to visually emphasize the part of each option that matches the current input value.
2707
+ * - `disable-static-filtering`/`disableStaticFiltering`: Whether built-in client-side filtering is disabled.
2708
+ *
2709
+ * Use this for remote search or externally filtered results. When disabled, all entries in `options` are rendered as provided.
2710
+ * - `invalid`: Whether the combobox is visually invalid.
2711
+ *
2712
+ * Use this to show an externally managed validation error. Pair it with `help-text` to explain how to fix the error.
2713
+ * - `help-text`/`helpText`: Help text displayed below the input.
2714
+ *
2715
+ * Use this for supporting guidance or validation feedback.
2716
+ * - `disabled`: Whether the combobox is disabled.
2717
+ *
2718
+ * Disabled comboboxes cannot be focused, changed, or submitted with form data.
2719
+ * - `required`: Whether the combobox is required before form submission.
2720
+ *
2721
+ * Use this when the user must provide a value before submitting the form.
2722
+ * - `optional`: Whether to show optional text next to the label.
2723
+ *
2724
+ * Use this to indicate that the combobox is not required.
2725
+ * - `name`: The name submitted with the combobox value.
2726
+ *
2727
+ * Use this when the combobox belongs to a form and its value should be included in form data.
2728
+ * - `autocomplete`: The autocomplete attribute passed to the internal input.
2729
+ *
2730
+ * Defaults to `off`. Set this when browser autocomplete should be enabled or scoped to a specific autocomplete token.
2323
2731
  *
2324
2732
  * ## Methods
2325
2733
  *
@@ -2342,22 +2750,30 @@ export type CustomElements = {
2342
2750
  *
2343
2751
  * Component attributes and properties that can be applied to the element or by using JavaScript.
2344
2752
  *
2345
- * - `label`: undefined
2346
- * - `lang`: Takes precedence over the `<html>` lang attribute.
2347
- * - `name`: undefined
2348
- * - `value`: undefined
2349
- * - `header-format`/`headerFormat`: Decides the format of the date as shown in the calendar header.
2753
+ * - `label`: The label displayed above the date input.
2754
+ *
2755
+ * Use this to give the datepicker a visible and accessible name.
2756
+ * - `lang`: The locale used for calendar labels and date formatting.
2757
+ *
2758
+ * This takes precedence over the `<html>` `lang` attribute. Supported built-in locales are `en`, `nb`, `sv`, `da`, and `fi`.
2759
+ * - `name`: The name submitted with the date value.
2760
+ *
2761
+ * Use this when the datepicker belongs to a form and its value should be included in form data.
2762
+ * - `value`: The selected date value.
2763
+ *
2764
+ * Use an ISO date string in `YYYY-MM-DD` format. The value is submitted with the form and is reset to its initial value when the form resets.
2765
+ * - `header-format`/`headerFormat`: The date format used in the calendar header.
2350
2766
  *
2351
2767
  * The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format).
2352
- * - `weekday-format`/`weekdayFormat`: Decides the format of the weekday as shown above the grid of dates in the calendar.
2768
+ * - `weekday-format`/`weekdayFormat`: The weekday format shown above the calendar grid.
2353
2769
  *
2354
2770
  * The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format).
2355
- * - `day-format`/`dayFormat`: Decides the format of the day in the calendar as read to screen readers.
2771
+ * - `day-format`/`dayFormat`: The date format used for calendar day accessible names.
2356
2772
  *
2357
2773
  * The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format).
2358
- * - `isDayDisabled`: Lets you control if a date in the calendar should be disabled.
2774
+ * - `isDayDisabled`: Function used to disable dates in the calendar.
2359
2775
  *
2360
- * This needs to be set on the element instance in JavaScript, not as an HTML attribute. (property only)
2776
+ * Set this on the element instance in JavaScript, not as an HTML attribute. Disabled dates cannot be selected from the calendar. (property only)
2361
2777
  * - `isCalendarOpen`: undefined (property only)
2362
2778
  * - `navigationDate`: undefined (property only)
2363
2779
  * - `selectedDate`: undefined (property only) (readonly)
@@ -2388,21 +2804,19 @@ export type CustomElements = {
2388
2804
  /**
2389
2805
  * Expandable is a layout component used for creating expandable content areas on a page.
2390
2806
  *
2391
- * [See Storybook for usage examples](https://warp-ds.github.io/elements/?path=/docs/layout-expandable--docs)
2392
- *
2393
2807
  * ## Attributes & Properties
2394
2808
  *
2395
2809
  * Component attributes and properties that can be applied to the element or by using JavaScript.
2396
2810
  *
2397
- * - `expanded`: undefined
2398
- * - `title`: undefined
2399
- * - `box`: undefined
2400
- * - `bleed`: undefined
2811
+ * - `expanded`: Controls component's expanded state
2812
+ * - `title`: Component title. Used to display the title value which is always present regardless of whether the component is open or closed.
2813
+ * - `box`: Will make the expandable a Box
2814
+ * - `bleed`: Will make the expandable full-width on the sm breakpoint size
2401
2815
  * - `button-class`/`buttonClass`: undefined
2402
2816
  * - `content-class`/`contentClass`: undefined
2403
- * - `no-chevron`/`noChevron`: undefined
2404
- * - `animated`: undefined
2405
- * - `heading-level`/`headingLevel`: undefined
2817
+ * - `no-chevron`/`noChevron`: Controls chevron visibility
2818
+ * - `animated`: Will animate the expansion/collapse
2819
+ * - `heading-level`/`headingLevel`: Wrap the toggle button in a heading element with the specified level. If headingLevel is not specified, the button will not be wrapped by a heading element.
2406
2820
  * - `_hasTitle`: undefined
2407
2821
  * - `_showChevronUp`: undefined
2408
2822
  *
@@ -2861,6 +3275,106 @@ export type CustomElements = {
2861
3275
  >;
2862
3276
  };
2863
3277
 
3278
+ type ReactElementProps<T extends HTMLElement> = import("react").DOMAttributes<T> &
3279
+ import("react").AriaAttributes &
3280
+ import("react").RefAttributes<T> &
3281
+ Pick<
3282
+ import("react").HTMLAttributes<T>,
3283
+ | "className"
3284
+ | "style"
3285
+ | "suppressContentEditableWarning"
3286
+ | "suppressHydrationWarning"
3287
+ >;
3288
+
3289
+ // Merge order matters: component props must win over React/global/base props
3290
+ // when names collide, e.g. w-attention's boolean popover prop.
3291
+ type ReactCustomElementProps<T extends HTMLElement, Props> = Omit<
3292
+ BaseProps<T> & BaseEvents,
3293
+ keyof ReactElementProps<T> | keyof Props
3294
+ > &
3295
+ Omit<ReactElementProps<T>, keyof Props> &
3296
+ Props;
3297
+
3298
+ type CustomElementInstances = {
3299
+ "w-icon": WarpIcon;
3300
+ "w-textfield": WarpTextField;
3301
+ "w-affix": WarpAffix;
3302
+ "w-alert": WarpAlert;
3303
+ "w-link": WarpLink;
3304
+ "w-button": WarpButton;
3305
+ "w-attention": WarpAttention;
3306
+ "w-badge": WarpBadge;
3307
+ "w-box": WarpBox;
3308
+ "w-breadcrumbs": WarpBreadcrumbs;
3309
+ "w-card": WarpCard;
3310
+ "w-checkbox": WarpCheckbox;
3311
+ "w-checkbox-group": WarpCheckboxGroup;
3312
+ "w-combobox": WarpCombobox;
3313
+ "w-datepicker": WarpDatepicker;
3314
+ "w-expandable": WarpExpandable;
3315
+ "w-modal": WarpModal;
3316
+ "w-modal-footer": WarpModalFooter;
3317
+ "w-modal-header": WarpModalHeader;
3318
+ "w-page-indicator": WarpPageIndicator;
3319
+ "w-pagination": WarpPagination;
3320
+ "w-pill": WarpPill;
3321
+ "w-radio": WarpRadio;
3322
+ "w-radio-group": WarpRadioGroup;
3323
+ "w-select": WarpSelect;
3324
+ "w-slider-thumb": WarpSliderThumb;
3325
+ "w-slider": WarpSlider;
3326
+ "w-step": WarpStep;
3327
+ "w-step-indicator": WarpStepIndicator;
3328
+ "w-switch": WarpSwitch;
3329
+ "w-tab": WarpTab;
3330
+ "w-tab-panel": WarpTabPanel;
3331
+ "w-tabs": WarpTabs;
3332
+ "w-textarea": WarpTextarea;
3333
+ };
3334
+
3335
+ type CustomElementComponentProps = {
3336
+ "w-icon": WarpIconProps;
3337
+ "w-textfield": WarpTextFieldProps;
3338
+ "w-affix": WarpAffixProps;
3339
+ "w-alert": WarpAlertProps;
3340
+ "w-link": WarpLinkProps;
3341
+ "w-button": WarpButtonProps;
3342
+ "w-attention": WarpAttentionProps;
3343
+ "w-badge": WarpBadgeProps;
3344
+ "w-box": WarpBoxProps;
3345
+ "w-breadcrumbs": WarpBreadcrumbsProps;
3346
+ "w-card": WarpCardProps;
3347
+ "w-checkbox": WarpCheckboxProps;
3348
+ "w-checkbox-group": WarpCheckboxGroupProps;
3349
+ "w-combobox": WarpComboboxProps;
3350
+ "w-datepicker": WarpDatepickerProps;
3351
+ "w-expandable": WarpExpandableProps;
3352
+ "w-modal": WarpModalProps;
3353
+ "w-modal-footer": WarpModalFooterProps;
3354
+ "w-modal-header": WarpModalHeaderProps;
3355
+ "w-page-indicator": WarpPageIndicatorProps;
3356
+ "w-pagination": WarpPaginationProps;
3357
+ "w-pill": WarpPillProps;
3358
+ "w-radio": WarpRadioProps;
3359
+ "w-radio-group": WarpRadioGroupProps;
3360
+ "w-select": WarpSelectProps;
3361
+ "w-slider-thumb": WarpSliderThumbProps;
3362
+ "w-slider": WarpSliderProps;
3363
+ "w-step": WarpStepProps;
3364
+ "w-step-indicator": WarpStepIndicatorProps;
3365
+ "w-switch": WarpSwitchProps;
3366
+ "w-tab": WarpTabProps;
3367
+ "w-tab-panel": WarpTabPanelProps;
3368
+ "w-tabs": WarpTabsProps;
3369
+ "w-textarea": WarpTextareaProps;
3370
+ };
3371
+
3372
+ export type ReactCustomElements = {
3373
+ [Tag in keyof CustomElementComponentProps]: Tag extends keyof CustomElementInstances
3374
+ ? Partial<ReactCustomElementProps<CustomElementInstances[Tag], CustomElementComponentProps[Tag]>>
3375
+ : never;
3376
+ };
3377
+
2864
3378
  export type CustomElementsSolidJs = {
2865
3379
  /**
2866
3380
  *
@@ -2870,11 +3384,13 @@ export type CustomElementsSolidJs = {
2870
3384
  * Component attributes and properties that can be applied to the element or by using JavaScript.
2871
3385
  *
2872
3386
  * - `name`: Icon filename (without .svg)
2873
- * - `size`: Size: small, medium, large or pixel value (e.g. "32px")
2874
- * - `locale`: Locale used in CDN URL
3387
+ * - `size`: Size: small, medium, large or pixel value (e.g. "32px").
3388
+ * - `locale`: Locale used for `<title>` text.
3389
+ *
3390
+ * Reads the `lang` attribute from `<html>`, falls back to 'en'.
2875
3391
  */
2876
3392
  "w-icon": Partial<
2877
- WIconProps & WIconSolidJsProps & BaseProps<WIcon> & BaseEvents
3393
+ WarpIconProps & WarpIconSolidJsProps & BaseProps<WarpIcon> & BaseEvents
2878
3394
  >;
2879
3395
 
2880
3396
  /**
@@ -2993,14 +3509,18 @@ export type CustomElementsSolidJs = {
2993
3509
  *
2994
3510
  * Component attributes and properties that can be applied to the element or by using JavaScript.
2995
3511
  *
2996
- * - `autofocus`: undefined
2997
- * - `variant`: undefined
2998
- * - `small`: undefined
2999
- * - `href`: undefined
3000
- * - `disabled`: undefined
3001
- * - `target`: undefined
3002
- * - `rel`: undefined
3003
- * - `full-width`/`fullWidth`: undefined
3512
+ * - `autofocus`: Focus the link after it is rendered
3513
+ * - `variant`: Visual style for the link/button.
3514
+ * - `small`: Render a smaller version
3515
+ * - `href`: The URL the link points to
3516
+ * - `disabled`: Applies disabled styling, but you need to disable clicks on your own.
3517
+ *
3518
+ * The component renders an `<a>` element; `disabled` affects styling, but does not inherently prevent navigation. If you need to fully disable interaction, omit `href` and/or prevent default click behavior.
3519
+ * - `target`: Where to display the linked URL (e.g. `_blank`)
3520
+ * - `rel`: Relationship of the linked URL.
3521
+ *
3522
+ * If `target="_blank"` and `rel` is not provided, the component uses `noopener`.
3523
+ * - `full-width`/`fullWidth`: Makes the link take up the full width of its parent
3004
3524
  */
3005
3525
  "w-link": Partial<
3006
3526
  WarpLinkProps & WarpLinkSolidJsProps & BaseProps<WarpLink> & BaseEvents
@@ -3197,9 +3717,15 @@ export type CustomElementsSolidJs = {
3197
3717
  *
3198
3718
  * Component attributes and properties that can be applied to the element or by using JavaScript.
3199
3719
  *
3200
- * - `selected`: undefined
3201
- * - `flat`: undefined
3202
- * - `clickable`: undefined
3720
+ * - `selected`: Whether the card is visually selected.
3721
+ *
3722
+ * Use this when the card represents a selected item or choice. This only controls the visual selected state; update it from your application state when the selection changes.
3723
+ * - `flat`: Whether the card uses the flat visual treatment.
3724
+ *
3725
+ * Flat cards use a bordered surface instead of the default elevated surface. Use this for denser layouts or when the card sits inside another surface.
3726
+ * - `clickable`: Whether the whole card is interactive.
3727
+ *
3728
+ * When set, the card becomes keyboard focusable and Enter or Space triggers a click on the card. Use this only when the whole card has one action or represents one selectable choice.
3203
3729
  * - `buttonText`: undefined (property only)
3204
3730
  *
3205
3731
  * ## Methods
@@ -3219,13 +3745,27 @@ export type CustomElementsSolidJs = {
3219
3745
  *
3220
3746
  * Component attributes and properties that can be applied to the element or by using JavaScript.
3221
3747
  *
3222
- * - `name`: The name of the checkbox, submitted as a name/value pair with form data.
3223
- * - `value`: The value of the checkbox, submitted as a name/value pair with form data.
3224
- * - `indeterminate`: Draws the checkbox in an indeterminate state.
3225
- * - `checked`: Draws the checkbox in a checked state (reflected to attribute).
3226
- * - `disabled`: Disables the checkbox.
3227
- * - `required`: Makes the checkbox a required field.
3228
- * - `invalid`: Draws the checkbox in an invalid state.
3748
+ * - `name`: The name of the checkbox.
3749
+ *
3750
+ * When the checkbox is checked and belongs to a form, this name is submitted with the checkbox value. If the checkbox is inside a `w-checkbox-group` with a name, the group name is used when the checkbox does not have its own name.
3751
+ * - `value`: The value submitted when the checkbox is checked.
3752
+ *
3753
+ * If no value attribute is set, the checkbox defaults to `on`. Unchecked and disabled checkboxes do not submit a value.
3754
+ * - `indeterminate`: Whether the checkbox is visually indeterminate.
3755
+ *
3756
+ * Use this for parent options that represent a mixed set of child selections. Clicking the checkbox clears the indeterminate state and sets the checkbox to checked.
3757
+ * - `checked`: Whether the checkbox is checked.
3758
+ *
3759
+ * Checked checkboxes submit their value with form data. The property is reflected to the `checked` attribute.
3760
+ * - `disabled`: Whether the checkbox is disabled.
3761
+ *
3762
+ * Disabled checkboxes cannot be focused, changed, or submitted with form data.
3763
+ * - `required`: Whether the checkbox must be checked before form submission.
3764
+ *
3765
+ * A required checkbox is invalid until it is checked. For requiring at least one option in a set, use `required` on `w-checkbox-group`.
3766
+ * - `invalid`: Whether the checkbox is visually invalid.
3767
+ *
3768
+ * Use this to show an externally managed validation error. Required validation also sets the invalid state after the user interacts with the checkbox or tries to submit the form.
3229
3769
  * - `input`: undefined (property only)
3230
3770
  * - `_computedInvalid`: Computed invalid state: combines own invalid with group invalid (property only) (readonly)
3231
3771
  * - `validationMessage`: Returns the validation message if the checkbox is invalid, otherwise an empty string (property only) (readonly)
@@ -3249,7 +3789,10 @@ export type CustomElementsSolidJs = {
3249
3789
  * - `reportValidity() => boolean`: Checks validity and shows the browser's validation message if invalid
3250
3790
  */
3251
3791
  "w-checkbox": Partial<
3252
- WCheckboxProps & WCheckboxSolidJsProps & BaseProps<WCheckbox> & BaseEvents
3792
+ WarpCheckboxProps &
3793
+ WarpCheckboxSolidJsProps &
3794
+ BaseProps<WarpCheckbox> &
3795
+ BaseEvents
3253
3796
  >;
3254
3797
 
3255
3798
  /**
@@ -3260,11 +3803,23 @@ export type CustomElementsSolidJs = {
3260
3803
  * Component attributes and properties that can be applied to the element or by using JavaScript.
3261
3804
  *
3262
3805
  * - `label`: The group label displayed above the checkboxes.
3806
+ *
3807
+ * Use this to describe the shared question or topic for the checkbox options. The label is connected to the internal group for assistive technologies.
3263
3808
  * - `name`: The name applied to child checkboxes when they do not provide one.
3809
+ *
3810
+ * Use this when the grouped checkboxes should submit values under the same form field name. Individual checkboxes can still override the group name with their own `name`.
3264
3811
  * - `optional`: Whether to show optional text next to the label.
3265
- * - `help-text`/`helpText`: undefined
3266
- * - `required`: Makes the checkbox group required.
3267
- * - `invalid`: Marks the checkbox group as invalid.
3812
+ *
3813
+ * Use this to indicate that selecting an option from the group is not required.
3814
+ * - `help-text`/`helpText`: Help text displayed below the checkbox group.
3815
+ *
3816
+ * Use this for supporting guidance or validation feedback. When required validation fails, the group replaces this text with the localized required message.
3817
+ * - `required`: Whether at least one checkbox in the group must be selected.
3818
+ *
3819
+ * Required validation is managed by the group. The individual checkboxes provide the submitted form values.
3820
+ * - `invalid`: Whether the checkbox group is visually invalid.
3821
+ *
3822
+ * Use this to show an externally managed validation error for the group. The invalid state is also shared with child checkboxes for consistent styling and accessibility state.
3268
3823
  *
3269
3824
  * ## Methods
3270
3825
  *
@@ -3275,9 +3830,9 @@ export type CustomElementsSolidJs = {
3275
3830
  * - `focus(options?: FocusOptions) => void`: Sets focus on the checkbox group.
3276
3831
  */
3277
3832
  "w-checkbox-group": Partial<
3278
- WCheckboxGroupProps &
3279
- WCheckboxGroupSolidJsProps &
3280
- BaseProps<WCheckboxGroup> &
3833
+ WarpCheckboxGroupProps &
3834
+ WarpCheckboxGroupSolidJsProps &
3835
+ BaseProps<WarpCheckboxGroup> &
3281
3836
  BaseEvents
3282
3837
  >;
3283
3838
 
@@ -3290,21 +3845,51 @@ export type CustomElementsSolidJs = {
3290
3845
  *
3291
3846
  * Component attributes and properties that can be applied to the element or by using JavaScript.
3292
3847
  *
3293
- * - `options`: The available options to select from
3294
- * - `label`: Label above input
3295
- * - `placeholder`: Input placeholder
3296
- * - `value`: The input value
3297
- * - `open-on-focus`/`openOnFocus`: Whether the popover opens when focus is on the text field
3298
- * - `select-on-blur`/`selectOnBlur`: Select active option on blur
3299
- * - `match-text-segments`/`matchTextSegments`: Whether the matching text segments in the options should be highlighted
3300
- * - `disable-static-filtering`/`disableStaticFiltering`: Disable client-side static filtering
3301
- * - `invalid`: Renders the input field in an invalid state
3302
- * - `help-text`/`helpText`: The content to display as the help text
3303
- * - `disabled`: Whether the element is disabled
3304
- * - `required`: Whether the element is required
3305
- * - `optional`: Whether to show optional text
3306
- * - `name`: Name attribute for form submission
3307
- * - `autocomplete`: Autocomplete attribute for the input field
3848
+ * - `options`: The available options to select from.
3849
+ *
3850
+ * Use this for framework usage, application state, or remote search results. When `options` contains entries, it is used instead of child `<option>` elements.
3851
+ * - `label`: The label displayed above the input.
3852
+ *
3853
+ * Use this to give the combobox a visible and accessible name.
3854
+ * - `placeholder`: Placeholder text displayed when the input is empty.
3855
+ *
3856
+ * Use this as a short hint for the expected input. Do not use placeholder text as a replacement for a label.
3857
+ * - `value`: The selected or typed value.
3858
+ *
3859
+ * When an option is selected, this is set to the option value. The displayed text may differ when the option has a separate label.
3860
+ * - `open-on-focus`/`openOnFocus`: Whether the option list opens when the input receives focus.
3861
+ *
3862
+ * Use this when users should see available options before they start typing.
3863
+ * - `select-on-blur`/`selectOnBlur`: Whether the active option is selected when the input loses focus.
3864
+ *
3865
+ * When enabled, the combobox selects the keyboard-highlighted option, or an option whose value exactly matches the current input value, on blur.
3866
+ * - `match-text-segments`/`matchTextSegments`: Whether matching text segments in options are highlighted.
3867
+ *
3868
+ * Use this to visually emphasize the part of each option that matches the current input value.
3869
+ * - `disable-static-filtering`/`disableStaticFiltering`: Whether built-in client-side filtering is disabled.
3870
+ *
3871
+ * Use this for remote search or externally filtered results. When disabled, all entries in `options` are rendered as provided.
3872
+ * - `invalid`: Whether the combobox is visually invalid.
3873
+ *
3874
+ * Use this to show an externally managed validation error. Pair it with `help-text` to explain how to fix the error.
3875
+ * - `help-text`/`helpText`: Help text displayed below the input.
3876
+ *
3877
+ * Use this for supporting guidance or validation feedback.
3878
+ * - `disabled`: Whether the combobox is disabled.
3879
+ *
3880
+ * Disabled comboboxes cannot be focused, changed, or submitted with form data.
3881
+ * - `required`: Whether the combobox is required before form submission.
3882
+ *
3883
+ * Use this when the user must provide a value before submitting the form.
3884
+ * - `optional`: Whether to show optional text next to the label.
3885
+ *
3886
+ * Use this to indicate that the combobox is not required.
3887
+ * - `name`: The name submitted with the combobox value.
3888
+ *
3889
+ * Use this when the combobox belongs to a form and its value should be included in form data.
3890
+ * - `autocomplete`: The autocomplete attribute passed to the internal input.
3891
+ *
3892
+ * Defaults to `off`. Set this when browser autocomplete should be enabled or scoped to a specific autocomplete token.
3308
3893
  *
3309
3894
  * ## Methods
3310
3895
  *
@@ -3330,22 +3915,30 @@ export type CustomElementsSolidJs = {
3330
3915
  *
3331
3916
  * Component attributes and properties that can be applied to the element or by using JavaScript.
3332
3917
  *
3333
- * - `label`: undefined
3334
- * - `lang`: Takes precedence over the `<html>` lang attribute.
3335
- * - `name`: undefined
3336
- * - `value`: undefined
3337
- * - `header-format`/`headerFormat`: Decides the format of the date as shown in the calendar header.
3918
+ * - `label`: The label displayed above the date input.
3919
+ *
3920
+ * Use this to give the datepicker a visible and accessible name.
3921
+ * - `lang`: The locale used for calendar labels and date formatting.
3922
+ *
3923
+ * This takes precedence over the `<html>` `lang` attribute. Supported built-in locales are `en`, `nb`, `sv`, `da`, and `fi`.
3924
+ * - `name`: The name submitted with the date value.
3925
+ *
3926
+ * Use this when the datepicker belongs to a form and its value should be included in form data.
3927
+ * - `value`: The selected date value.
3928
+ *
3929
+ * Use an ISO date string in `YYYY-MM-DD` format. The value is submitted with the form and is reset to its initial value when the form resets.
3930
+ * - `header-format`/`headerFormat`: The date format used in the calendar header.
3338
3931
  *
3339
3932
  * The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format).
3340
- * - `weekday-format`/`weekdayFormat`: Decides the format of the weekday as shown above the grid of dates in the calendar.
3933
+ * - `weekday-format`/`weekdayFormat`: The weekday format shown above the calendar grid.
3341
3934
  *
3342
3935
  * The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format).
3343
- * - `day-format`/`dayFormat`: Decides the format of the day in the calendar as read to screen readers.
3936
+ * - `day-format`/`dayFormat`: The date format used for calendar day accessible names.
3344
3937
  *
3345
3938
  * The syntax is defined by [date-fns/format](https://date-fns.org/v4.1.0/docs/format).
3346
- * - `isDayDisabled`: Lets you control if a date in the calendar should be disabled.
3939
+ * - `isDayDisabled`: Function used to disable dates in the calendar.
3347
3940
  *
3348
- * This needs to be set on the element instance in JavaScript, not as an HTML attribute. (property only)
3941
+ * Set this on the element instance in JavaScript, not as an HTML attribute. Disabled dates cannot be selected from the calendar. (property only)
3349
3942
  * - `isCalendarOpen`: undefined (property only)
3350
3943
  * - `navigationDate`: undefined (property only)
3351
3944
  * - `selectedDate`: undefined (property only) (readonly)
@@ -3379,21 +3972,19 @@ export type CustomElementsSolidJs = {
3379
3972
  /**
3380
3973
  * Expandable is a layout component used for creating expandable content areas on a page.
3381
3974
  *
3382
- * [See Storybook for usage examples](https://warp-ds.github.io/elements/?path=/docs/layout-expandable--docs)
3383
- *
3384
3975
  * ## Attributes & Properties
3385
3976
  *
3386
3977
  * Component attributes and properties that can be applied to the element or by using JavaScript.
3387
3978
  *
3388
- * - `expanded`: undefined
3389
- * - `title`: undefined
3390
- * - `box`: undefined
3391
- * - `bleed`: undefined
3979
+ * - `expanded`: Controls component's expanded state
3980
+ * - `title`: Component title. Used to display the title value which is always present regardless of whether the component is open or closed.
3981
+ * - `box`: Will make the expandable a Box
3982
+ * - `bleed`: Will make the expandable full-width on the sm breakpoint size
3392
3983
  * - `button-class`/`buttonClass`: undefined
3393
3984
  * - `content-class`/`contentClass`: undefined
3394
- * - `no-chevron`/`noChevron`: undefined
3395
- * - `animated`: undefined
3396
- * - `heading-level`/`headingLevel`: undefined
3985
+ * - `no-chevron`/`noChevron`: Controls chevron visibility
3986
+ * - `animated`: Will animate the expansion/collapse
3987
+ * - `heading-level`/`headingLevel`: Wrap the toggle button in a heading element with the specified level. If headingLevel is not specified, the button will not be wrapped by a heading element.
3397
3988
  * - `_hasTitle`: undefined
3398
3989
  * - `_showChevronUp`: undefined
3399
3990
  *
@@ -3913,7 +4504,7 @@ export type CustomCssProperties = {};
3913
4504
 
3914
4505
  declare module "react" {
3915
4506
  namespace JSX {
3916
- interface IntrinsicElements extends CustomElements {}
4507
+ interface IntrinsicElements extends ReactCustomElements {}
3917
4508
  }
3918
4509
  export interface CSSProperties extends CustomCssProperties {}
3919
4510
  }