@xmesh/system-design 0.0.4 → 0.0.6

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 (290) hide show
  1. package/README.md +2 -1
  2. package/custom-elements.json +18382 -0
  3. package/dist/lit/components/alert/index.d.ts +5 -0
  4. package/dist/lit/components/alert/index.js +8 -2
  5. package/dist/lit/components/alert/index.styles.js +215 -0
  6. package/dist/lit/components/app-bar/index.d.ts +1 -0
  7. package/dist/lit/components/app-bar/index.js +4 -2
  8. package/dist/lit/components/app-bar/index.styles.js +94 -0
  9. package/dist/lit/components/artifact/index.d.ts +5 -0
  10. package/dist/lit/components/artifact/index.js +14 -10
  11. package/dist/lit/components/artifact/index.styles.js +180 -0
  12. package/dist/lit/components/autocomplete/index.d.ts +5 -0
  13. package/dist/lit/components/autocomplete/index.js +11 -2
  14. package/dist/lit/components/autocomplete/index.styles.js +185 -0
  15. package/dist/lit/components/avatar/index.d.ts +1 -0
  16. package/dist/lit/components/avatar/index.js +4 -2
  17. package/dist/lit/components/avatar/index.styles.js +76 -0
  18. package/dist/lit/components/avatar-group/index.d.ts +1 -0
  19. package/dist/lit/components/avatar-group/index.js +4 -2
  20. package/dist/lit/components/avatar-group/index.styles.js +74 -0
  21. package/dist/lit/components/badge/index.d.ts +1 -0
  22. package/dist/lit/components/badge/index.js +4 -2
  23. package/dist/lit/components/badge/index.styles.js +86 -0
  24. package/dist/lit/components/brand-mark/index.js +8 -9
  25. package/dist/lit/components/brand-mark/index.styles.js +123 -0
  26. package/dist/lit/components/breadcrumbs/index.d.ts +1 -0
  27. package/dist/lit/components/breadcrumbs/index.js +5 -4
  28. package/dist/lit/components/breadcrumbs/index.styles.js +105 -0
  29. package/dist/lit/components/bubble/index.d.ts +4 -0
  30. package/dist/lit/components/bubble/index.js +14 -11
  31. package/dist/lit/components/bubble/index.styles.js +196 -0
  32. package/dist/lit/components/button/index.d.ts +1 -0
  33. package/dist/lit/components/button/index.js +6 -13
  34. package/dist/lit/components/button/index.styles.js +356 -0
  35. package/dist/lit/components/card/index.d.ts +1 -0
  36. package/dist/lit/components/card/index.js +4 -2
  37. package/dist/lit/components/card/index.styles.js +113 -0
  38. package/dist/lit/components/chat/index.d.ts +6 -0
  39. package/dist/lit/components/chat/index.js +15 -10
  40. package/dist/lit/components/chat/index.styles.js +306 -0
  41. package/dist/lit/components/checkbox/index.d.ts +1 -0
  42. package/dist/lit/components/checkbox/index.js +7 -4
  43. package/dist/lit/components/checkbox/index.styles.js +140 -0
  44. package/dist/lit/components/chip/index.d.ts +5 -0
  45. package/dist/lit/components/chip/index.js +8 -2
  46. package/dist/lit/components/chip/index.styles.js +159 -0
  47. package/dist/lit/components/chip-group/index.d.ts +4 -0
  48. package/dist/lit/components/chip-group/index.js +7 -2
  49. package/dist/lit/components/chip-group/index.styles.js +33 -0
  50. package/dist/lit/components/code/index.d.ts +1 -0
  51. package/dist/lit/components/code/index.js +4 -3
  52. package/dist/lit/components/code/index.styles.js +56 -0
  53. package/dist/lit/components/composer/index.d.ts +6 -0
  54. package/dist/lit/components/composer/index.js +15 -10
  55. package/dist/lit/components/composer/index.styles.js +562 -0
  56. package/dist/lit/components/data-table/index.css +18 -0
  57. package/dist/lit/components/data-table/index.d.ts +30 -0
  58. package/dist/lit/components/data-table/index.js +120 -34
  59. package/dist/lit/components/data-table/index.styles.js +198 -0
  60. package/dist/lit/components/date-range/index.d.ts +4 -0
  61. package/dist/lit/components/date-range/index.js +7 -2
  62. package/dist/lit/components/date-range/index.styles.js +338 -0
  63. package/dist/lit/components/dialog/index.d.ts +4 -0
  64. package/dist/lit/components/dialog/index.js +7 -2
  65. package/dist/lit/components/dialog/index.styles.js +138 -0
  66. package/dist/lit/components/divider/index.d.ts +1 -0
  67. package/dist/lit/components/divider/index.js +4 -2
  68. package/dist/lit/components/divider/index.styles.js +41 -0
  69. package/dist/lit/components/empty-state/index.d.ts +1 -0
  70. package/dist/lit/components/empty-state/index.js +4 -2
  71. package/dist/lit/components/empty-state/index.styles.js +83 -0
  72. package/dist/lit/components/expansion-panel/index.d.ts +5 -0
  73. package/dist/lit/components/expansion-panel/index.js +8 -2
  74. package/dist/lit/components/expansion-panel/index.styles.js +134 -0
  75. package/dist/lit/components/field/index.d.ts +4 -0
  76. package/dist/lit/components/field/index.js +9 -4
  77. package/dist/lit/components/field/index.styles.js +237 -0
  78. package/dist/lit/components/file-input/index.d.ts +4 -0
  79. package/dist/lit/components/file-input/index.js +10 -4
  80. package/dist/lit/components/file-input/index.styles.js +271 -0
  81. package/dist/lit/components/form/index.d.ts +4 -0
  82. package/dist/lit/components/form/index.js +7 -2
  83. package/dist/lit/components/form/index.styles.js +43 -0
  84. package/dist/lit/components/grid/index.d.ts +1 -0
  85. package/dist/lit/components/grid/index.js +4 -2
  86. package/dist/lit/components/grid/index.styles.js +67 -0
  87. package/dist/lit/components/kbd/index.d.ts +1 -0
  88. package/dist/lit/components/kbd/index.js +4 -2
  89. package/dist/lit/components/kbd/index.styles.js +49 -0
  90. package/dist/lit/components/list/index.d.ts +4 -0
  91. package/dist/lit/components/list/index.js +7 -2
  92. package/dist/lit/components/list/index.styles.js +29 -0
  93. package/dist/lit/components/list-item/index.d.ts +1 -0
  94. package/dist/lit/components/list-item/index.js +4 -2
  95. package/dist/lit/components/list-item/index.styles.js +133 -0
  96. package/dist/lit/components/menu/index.d.ts +8 -0
  97. package/dist/lit/components/menu/index.js +11 -3
  98. package/dist/lit/components/menu/index.styles.js +108 -0
  99. package/dist/lit/components/multi-select/index.css +156 -0
  100. package/dist/lit/components/multi-select/index.d.ts +70 -0
  101. package/dist/lit/components/multi-select/index.js +497 -0
  102. package/dist/lit/components/multi-select/index.styles.js +170 -0
  103. package/dist/lit/components/navigation-drawer/index.d.ts +4 -0
  104. package/dist/lit/components/navigation-drawer/index.js +7 -2
  105. package/dist/lit/components/navigation-drawer/index.styles.js +128 -0
  106. package/dist/lit/components/overlay/index.d.ts +5 -0
  107. package/dist/lit/components/overlay/index.js +8 -2
  108. package/dist/lit/components/overlay/index.styles.js +185 -0
  109. package/dist/lit/components/pagination/index.d.ts +17 -0
  110. package/dist/lit/components/pagination/index.js +53 -8
  111. package/dist/lit/components/pagination/index.styles.js +116 -0
  112. package/dist/lit/components/popover/index.d.ts +5 -0
  113. package/dist/lit/components/popover/index.js +8 -2
  114. package/dist/lit/components/popover/index.styles.js +48 -0
  115. package/dist/lit/components/primitives/index.js +8 -9
  116. package/dist/lit/components/primitives/index.styles.js +518 -0
  117. package/dist/lit/components/progress/index.d.ts +1 -0
  118. package/dist/lit/components/progress/index.js +4 -2
  119. package/dist/lit/components/progress/index.styles.js +157 -0
  120. package/dist/lit/components/radio-group/index.d.ts +5 -0
  121. package/dist/lit/components/radio-group/index.js +10 -6
  122. package/dist/lit/components/radio-group/index.styles.js +192 -0
  123. package/dist/lit/components/select/index.d.ts +4 -0
  124. package/dist/lit/components/select/index.js +10 -2
  125. package/dist/lit/components/select/index.styles.js +165 -0
  126. package/dist/lit/components/sidebar-item/index.js +8 -9
  127. package/dist/lit/components/sidebar-item/index.styles.js +147 -0
  128. package/dist/lit/components/skeleton/index.d.ts +1 -0
  129. package/dist/lit/components/skeleton/index.js +4 -2
  130. package/dist/lit/components/skeleton/index.styles.js +95 -0
  131. package/dist/lit/components/slider/index.d.ts +5 -0
  132. package/dist/lit/components/slider/index.js +11 -4
  133. package/dist/lit/components/slider/index.styles.js +185 -0
  134. package/dist/lit/components/snackbar/index.d.ts +4 -0
  135. package/dist/lit/components/snackbar/index.js +14 -10
  136. package/dist/lit/components/snackbar/index.styles.js +293 -0
  137. package/dist/lit/components/stack/index.d.ts +1 -0
  138. package/dist/lit/components/stack/index.js +4 -2
  139. package/dist/lit/components/stack/index.styles.js +55 -0
  140. package/dist/lit/components/switch/index.d.ts +1 -0
  141. package/dist/lit/components/switch/index.js +7 -4
  142. package/dist/lit/components/switch/index.styles.js +140 -0
  143. package/dist/lit/components/table/index.d.ts +1 -0
  144. package/dist/lit/components/table/index.js +4 -2
  145. package/dist/lit/components/table/index.styles.js +99 -0
  146. package/dist/lit/components/tabs/index.d.ts +4 -0
  147. package/dist/lit/components/tabs/index.js +8 -4
  148. package/dist/lit/components/tabs/index.styles.js +130 -0
  149. package/dist/lit/components/text-field/index.d.ts +1 -0
  150. package/dist/lit/components/text-field/index.js +7 -2
  151. package/dist/lit/components/text-field/index.styles.js +104 -0
  152. package/dist/lit/components/textarea/index.d.ts +1 -0
  153. package/dist/lit/components/textarea/index.js +7 -2
  154. package/dist/lit/components/textarea/index.styles.js +69 -0
  155. package/dist/lit/components/tooltip/index.d.ts +1 -0
  156. package/dist/lit/components/tooltip/index.js +4 -2
  157. package/dist/lit/components/tooltip/index.styles.js +51 -0
  158. package/dist/lit/components/validation/index.d.ts +6 -0
  159. package/dist/lit/components/validation/index.js +15 -10
  160. package/dist/lit/components/validation/index.styles.js +400 -0
  161. package/dist/lit/index.d.ts +1 -0
  162. package/dist/lit/index.js +1 -0
  163. package/dist/react/XmAlert.d.ts +99 -0
  164. package/dist/react/XmAlert.js +47 -0
  165. package/dist/react/XmAppBar.d.ts +59 -0
  166. package/dist/react/XmAppBar.js +34 -0
  167. package/dist/react/XmArtifact.d.ts +113 -0
  168. package/dist/react/XmArtifact.js +48 -0
  169. package/dist/react/XmArtifactChip.d.ts +56 -0
  170. package/dist/react/XmArtifactChip.js +32 -0
  171. package/dist/react/XmAutocomplete.d.ts +153 -0
  172. package/dist/react/XmAutocomplete.js +70 -0
  173. package/dist/react/XmAvatar.d.ts +71 -0
  174. package/dist/react/XmAvatar.js +40 -0
  175. package/dist/react/XmAvatarGroup.d.ts +59 -0
  176. package/dist/react/XmAvatarGroup.js +34 -0
  177. package/dist/react/XmBadge.d.ts +67 -0
  178. package/dist/react/XmBadge.js +38 -0
  179. package/dist/react/XmBrandGlyph.d.ts +46 -0
  180. package/dist/react/XmBrandGlyph.js +24 -0
  181. package/dist/react/XmBrandMark.d.ts +71 -0
  182. package/dist/react/XmBrandMark.js +40 -0
  183. package/dist/react/XmBreadcrumbs.d.ts +56 -0
  184. package/dist/react/XmBreadcrumbs.js +32 -0
  185. package/dist/react/XmBubble.d.ts +69 -0
  186. package/dist/react/XmBubble.js +38 -0
  187. package/dist/react/XmBubbleActions.d.ts +59 -0
  188. package/dist/react/XmBubbleActions.js +34 -0
  189. package/dist/react/XmBubbleGroup.d.ts +82 -0
  190. package/dist/react/XmBubbleGroup.js +38 -0
  191. package/dist/react/XmButton.d.ts +89 -0
  192. package/dist/react/XmButton.js +48 -0
  193. package/dist/react/XmCard.d.ts +59 -0
  194. package/dist/react/XmCard.js +34 -0
  195. package/dist/react/XmChatShell.d.ts +110 -0
  196. package/dist/react/XmChatShell.js +48 -0
  197. package/dist/react/XmCheckbox.d.ts +145 -0
  198. package/dist/react/XmCheckbox.js +60 -0
  199. package/dist/react/XmChip.d.ts +99 -0
  200. package/dist/react/XmChip.js +48 -0
  201. package/dist/react/XmChipGroup.d.ts +79 -0
  202. package/dist/react/XmChipGroup.js +36 -0
  203. package/dist/react/XmCode.d.ts +55 -0
  204. package/dist/react/XmCode.js +32 -0
  205. package/dist/react/XmComposer.d.ts +123 -0
  206. package/dist/react/XmComposer.js +56 -0
  207. package/dist/react/XmDataTable.d.ts +125 -0
  208. package/dist/react/XmDataTable.js +66 -0
  209. package/dist/react/XmDateRange.d.ts +93 -0
  210. package/dist/react/XmDateRange.js +42 -0
  211. package/dist/react/XmDialog.d.ts +87 -0
  212. package/dist/react/XmDialog.js +41 -0
  213. package/dist/react/XmDivider.d.ts +55 -0
  214. package/dist/react/XmDivider.js +32 -0
  215. package/dist/react/XmEmptyState.d.ts +61 -0
  216. package/dist/react/XmEmptyState.js +34 -0
  217. package/dist/react/XmExpansionPanel.d.ts +101 -0
  218. package/dist/react/XmExpansionPanel.js +49 -0
  219. package/dist/react/XmFileInput.d.ts +151 -0
  220. package/dist/react/XmFileInput.js +70 -0
  221. package/dist/react/XmFileValidationBlock.d.ts +111 -0
  222. package/dist/react/XmFileValidationBlock.js +50 -0
  223. package/dist/react/XmForm.d.ts +91 -0
  224. package/dist/react/XmForm.js +38 -0
  225. package/dist/react/XmGrid.d.ts +59 -0
  226. package/dist/react/XmGrid.js +34 -0
  227. package/dist/react/XmKbd.d.ts +46 -0
  228. package/dist/react/XmKbd.js +24 -0
  229. package/dist/react/XmList.d.ts +83 -0
  230. package/dist/react/XmList.js +38 -0
  231. package/dist/react/XmListItem.d.ts +67 -0
  232. package/dist/react/XmListItem.js +38 -0
  233. package/dist/react/XmMenu.d.ts +98 -0
  234. package/dist/react/XmMenu.js +46 -0
  235. package/dist/react/XmMenuItem.d.ts +63 -0
  236. package/dist/react/XmMenuItem.js +36 -0
  237. package/dist/react/XmMultiSelect.d.ts +161 -0
  238. package/dist/react/XmMultiSelect.js +74 -0
  239. package/dist/react/XmNavigationDrawer.d.ts +93 -0
  240. package/dist/react/XmNavigationDrawer.js +42 -0
  241. package/dist/react/XmOverlay.d.ts +120 -0
  242. package/dist/react/XmOverlay.js +56 -0
  243. package/dist/react/XmPagination.d.ts +117 -0
  244. package/dist/react/XmPagination.js +58 -0
  245. package/dist/react/XmPopover.d.ts +90 -0
  246. package/dist/react/XmPopover.js +42 -0
  247. package/dist/react/XmProgress.d.ts +75 -0
  248. package/dist/react/XmProgress.js +42 -0
  249. package/dist/react/XmRadio.d.ts +88 -0
  250. package/dist/react/XmRadio.js +42 -0
  251. package/dist/react/XmRadioGroup.d.ts +139 -0
  252. package/dist/react/XmRadioGroup.js +58 -0
  253. package/dist/react/XmSelect.d.ts +152 -0
  254. package/dist/react/XmSelect.js +70 -0
  255. package/dist/react/XmSidebarItem.d.ts +75 -0
  256. package/dist/react/XmSidebarItem.js +42 -0
  257. package/dist/react/XmSkeleton.d.ts +71 -0
  258. package/dist/react/XmSkeleton.js +40 -0
  259. package/dist/react/XmSlider.d.ts +160 -0
  260. package/dist/react/XmSlider.js +76 -0
  261. package/dist/react/XmSnackbar.d.ts +110 -0
  262. package/dist/react/XmSnackbar.js +51 -0
  263. package/dist/react/XmStack.d.ts +71 -0
  264. package/dist/react/XmStack.js +40 -0
  265. package/dist/react/XmSwitch.d.ts +136 -0
  266. package/dist/react/XmSwitch.js +58 -0
  267. package/dist/react/XmTab.d.ts +79 -0
  268. package/dist/react/XmTab.js +38 -0
  269. package/dist/react/XmTabPanel.d.ts +55 -0
  270. package/dist/react/XmTabPanel.js +32 -0
  271. package/dist/react/XmTable.d.ts +57 -0
  272. package/dist/react/XmTable.js +32 -0
  273. package/dist/react/XmTabs.d.ts +82 -0
  274. package/dist/react/XmTabs.js +38 -0
  275. package/dist/react/XmTextField.d.ts +147 -0
  276. package/dist/react/XmTextField.js +62 -0
  277. package/dist/react/XmTextarea.d.ts +155 -0
  278. package/dist/react/XmTextarea.js +66 -0
  279. package/dist/react/XmTooltip.d.ts +67 -0
  280. package/dist/react/XmTooltip.js +38 -0
  281. package/dist/react/index.d.ts +59 -0
  282. package/dist/react/index.js +59 -0
  283. package/dist/react/react-utils.js +67 -0
  284. package/package.json +37 -9
  285. package/styles/_base-typography.css +86 -0
  286. package/styles/_primitives.css +54 -0
  287. package/styles/_reset.css +58 -0
  288. package/styles/base.css +23 -0
  289. package/vscode.css-custom-data.json +6 -0
  290. package/vscode.html-custom-data.json +979 -0
@@ -0,0 +1,40 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/stack/index.js";
3
+ import { createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmStack = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ wrap,
9
+ direction,
10
+ gap,
11
+ align,
12
+ justify,
13
+ className,
14
+ exportparts,
15
+ htmlFor,
16
+ part,
17
+ tabIndex,
18
+ ...restProps
19
+ } = props;
20
+
21
+ return React.createElement(
22
+ "xm-stack",
23
+ {
24
+ ref: createForwardedRefHandler(ref, forwardedRef),
25
+ ...restProps,
26
+ direction: direction,
27
+ gap: gap,
28
+ align: align,
29
+ justify: justify,
30
+ class: className,
31
+ exportparts: exportparts,
32
+ for: htmlFor ?? props["for"],
33
+ part: part,
34
+ tabindex: tabIndex ?? props["tabindex"],
35
+ wrap: wrap ? true : undefined,
36
+ style: { ...props.style },
37
+ },
38
+ props.children,
39
+ );
40
+ });
@@ -0,0 +1,136 @@
1
+ import React from "react";
2
+ import {
3
+ XmSwitch as XmSwitchElement,
4
+ CustomEvent,
5
+ } from "../lit/components/switch/index.js";
6
+
7
+ /**
8
+ * A generic type for strongly typing custom events with their targets
9
+ * @template T - The type of the event target (extends EventTarget)
10
+ * @template D - The type of the detail payload for the custom event
11
+ */
12
+ type TypedEvent<T extends EventTarget, E = Event> = E & {
13
+ target: T;
14
+ };
15
+ /** `XmSwitch` component event */
16
+ export type XmSwitchElementEvent<E = Event> = TypedEvent<XmSwitchElement, E>;
17
+
18
+ export type { XmSwitchElement, CustomEvent };
19
+
20
+ export interface XmSwitchProps extends Pick<
21
+ React.AllHTMLAttributes<HTMLElement>,
22
+ | "children"
23
+ | "dir"
24
+ | "hidden"
25
+ | "id"
26
+ | "lang"
27
+ | "slot"
28
+ | "style"
29
+ | "title"
30
+ | "translate"
31
+ | "onClick"
32
+ | "onFocus"
33
+ | "onBlur"
34
+ > {
35
+ /** undefined */
36
+ required?: boolean;
37
+
38
+ /** undefined */
39
+ disabled?: boolean;
40
+
41
+ /** undefined */
42
+ readOnly?: boolean;
43
+
44
+ /** undefined */
45
+ loading?: boolean;
46
+
47
+ /** INITIAL checked for toggle subclasses; mapped from attribute `checked`. */
48
+ initialChecked?: boolean;
49
+
50
+ /** undefined */
51
+ label?: XmSwitchElement["label"];
52
+
53
+ /** undefined */
54
+ helper?: XmSwitchElement["helper"];
55
+
56
+ /** Severity copy. Non-empty ⇒ the field is in error (icon + copy, never color). */
57
+ error?: XmSwitchElement["error"];
58
+
59
+ /** undefined */
60
+ size?: XmSwitchElement["size"];
61
+
62
+ /** Form-control name — mirrors native <input name>. */
63
+ name?: XmSwitchElement["name"];
64
+
65
+ /** INITIAL value (uncontrolled-first, AD-6): the `value` attribute seeds the
66
+ live state once, then never overrides user input. Mapped from attribute
67
+ `value` so authors write `<xm-text-field value="…">`. */
68
+ initialValue?: XmSwitchElement["initialValue"];
69
+
70
+ /** A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors or functions like the method `Document.getElementsByClassName()`. */
71
+ className?: string;
72
+
73
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
74
+ exportparts?: string;
75
+
76
+ /** Used for labels to link them with their inputs (using input id). */
77
+ htmlFor?: string;
78
+
79
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
80
+ key?: number | string;
81
+
82
+ /** 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. */
83
+ part?: string;
84
+
85
+ /** A mutable ref object whose `.current` property is initialized to the passed argument (`initialValue`). The returned object will persist for the full lifetime of the component. */
86
+ ref?: React.Ref<XmSwitchElement>;
87
+
88
+ /** Allows developers to make HTML elements focusable, allow or prevent them from being sequentially focusable (usually with the `Tab` key, hence the name) and determine their relative ordering for sequential focus navigation. */
89
+ tabIndex?: number;
90
+
91
+ /** Fired on each edit with the current value in `detail` (inherited by every field). */
92
+ onInput?: (event: XmSwitchElementEvent) => void;
93
+
94
+ /** Fired on commit with the new value in `detail` (inherited by every field). */
95
+ onChange?: (event: XmSwitchElementEvent) => void;
96
+ }
97
+
98
+ /**
99
+ *
100
+ *
101
+ * ## Attributes & Properties
102
+ *
103
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
104
+ *
105
+ * - `label`: undefined
106
+ * - `helper`: undefined
107
+ * - `error`: Severity copy. Non-empty ⇒ the field is in error (icon + copy, never color).
108
+ * - `size`: undefined
109
+ * - `required`: undefined
110
+ * - `disabled`: undefined
111
+ * - `readonly`/`readOnly`: undefined
112
+ * - `loading`: undefined
113
+ * - `name`: Form-control name — mirrors native <input name>.
114
+ * - `value`/`initialValue`: INITIAL value (uncontrolled-first, AD-6): the `value` attribute seeds the
115
+ * live state once, then never overrides user input. Mapped from attribute
116
+ * `value` so authors write `<xm-text-field value="…">`.
117
+ * - `checked`/`initialChecked`: INITIAL checked for toggle subclasses; mapped from attribute `checked`.
118
+ * - `readonly`: undefined (property only)
119
+ * - `value`: Programmatic reset support — setting `value` after first paint updates live state. (property only)
120
+ * - `checked`: Public read contract for toggle subclasses (AD-6a). (property only)
121
+ *
122
+ * ## Events
123
+ *
124
+ * Events that will be emitted by the component.
125
+ *
126
+ * - `input`: Fired on each edit with the current value in `detail` (inherited by every field).
127
+ * - `change`: Fired on commit with the new value in `detail` (inherited by every field).
128
+ *
129
+ * ## Methods
130
+ *
131
+ * Methods that can be called to access component functionality.
132
+ *
133
+ * - `setFormDisabled(disabled: boolean) => void`: Down-propagation hook: xm-form (Story 2.10) sets this; it OR's with the
134
+ * field's own disabled and can never re-enable a self-disabled field.
135
+ */
136
+ export const XmSwitch: React.ForwardRefExoticComponent<XmSwitchProps>;
@@ -0,0 +1,58 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/switch/index.js";
3
+ import { useEventListener, createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmSwitch = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ required,
9
+ disabled,
10
+ readOnly,
11
+ loading,
12
+ initialChecked,
13
+ label,
14
+ helper,
15
+ error,
16
+ size,
17
+ name,
18
+ initialValue,
19
+ className,
20
+ exportparts,
21
+ htmlFor,
22
+ part,
23
+ tabIndex,
24
+ onInput,
25
+ onChange,
26
+ ...restProps
27
+ } = props;
28
+
29
+ /** Event listeners - run once */
30
+ useEventListener(ref, "input", props.onInput);
31
+ useEventListener(ref, "change", props.onChange);
32
+
33
+ return React.createElement(
34
+ "xm-switch",
35
+ {
36
+ ref: createForwardedRefHandler(ref, forwardedRef),
37
+ ...restProps,
38
+ label: label,
39
+ helper: helper,
40
+ error: error,
41
+ size: size,
42
+ name: name,
43
+ value: initialValue ?? props["value"],
44
+ class: className,
45
+ exportparts: exportparts,
46
+ for: htmlFor ?? props["for"],
47
+ part: part,
48
+ tabindex: tabIndex ?? props["tabindex"],
49
+ required: required ? true : undefined,
50
+ disabled: disabled ? true : undefined,
51
+ readonly: readOnly ? true : undefined,
52
+ loading: loading ? true : undefined,
53
+ checked: initialChecked ? true : undefined,
54
+ style: { ...props.style },
55
+ },
56
+ props.children,
57
+ );
58
+ });
@@ -0,0 +1,79 @@
1
+ import React from "react";
2
+ import { XmTab as XmTabElement } from "../lit/components/tabs/index.js";
3
+
4
+ /**
5
+ * A generic type for strongly typing custom events with their targets
6
+ * @template T - The type of the event target (extends EventTarget)
7
+ * @template D - The type of the detail payload for the custom event
8
+ */
9
+ type TypedEvent<T extends EventTarget, E = Event> = E & {
10
+ target: T;
11
+ };
12
+ /** `XmTab` component event */
13
+ export type XmTabElementEvent<E = Event> = TypedEvent<XmTabElement, E>;
14
+
15
+ export type { XmTabElement };
16
+
17
+ export interface XmTabProps extends Pick<
18
+ React.AllHTMLAttributes<HTMLElement>,
19
+ | "children"
20
+ | "dir"
21
+ | "hidden"
22
+ | "id"
23
+ | "lang"
24
+ | "slot"
25
+ | "style"
26
+ | "title"
27
+ | "translate"
28
+ | "onClick"
29
+ | "onFocus"
30
+ | "onBlur"
31
+ > {
32
+ /** undefined */
33
+ disabled?: boolean;
34
+
35
+ /** undefined */
36
+ value?: XmTabElement["value"];
37
+
38
+ /** A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors or functions like the method `Document.getElementsByClassName()`. */
39
+ className?: string;
40
+
41
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
42
+ exportparts?: string;
43
+
44
+ /** Used for labels to link them with their inputs (using input id). */
45
+ htmlFor?: string;
46
+
47
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
48
+ key?: number | string;
49
+
50
+ /** 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. */
51
+ part?: string;
52
+
53
+ /** A mutable ref object whose `.current` property is initialized to the passed argument (`initialValue`). The returned object will persist for the full lifetime of the component. */
54
+ ref?: React.Ref<XmTabElement>;
55
+
56
+ /** Allows developers to make HTML elements focusable, allow or prevent them from being sequentially focusable (usually with the `Tab` key, hence the name) and determine their relative ordering for sequential focus navigation. */
57
+ tabIndex?: number;
58
+
59
+ /** Fired on commit with the new value in `detail`. */
60
+ onChange?: (event: XmTabElementEvent) => void;
61
+ }
62
+
63
+ /**
64
+ *
65
+ *
66
+ * ## Attributes & Properties
67
+ *
68
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
69
+ *
70
+ * - `value`: undefined
71
+ * - `disabled`: undefined
72
+ *
73
+ * ## Events
74
+ *
75
+ * Events that will be emitted by the component.
76
+ *
77
+ * - `change`: Fired on commit with the new value in `detail`.
78
+ */
79
+ export const XmTab: React.ForwardRefExoticComponent<XmTabProps>;
@@ -0,0 +1,38 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/tabs/index.js";
3
+ import { useEventListener, createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmTab = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ disabled,
9
+ value,
10
+ className,
11
+ exportparts,
12
+ htmlFor,
13
+ part,
14
+ tabIndex,
15
+ onChange,
16
+ ...restProps
17
+ } = props;
18
+
19
+ /** Event listeners - run once */
20
+ useEventListener(ref, "change", props.onChange);
21
+
22
+ return React.createElement(
23
+ "xm-tab",
24
+ {
25
+ ref: createForwardedRefHandler(ref, forwardedRef),
26
+ ...restProps,
27
+ value: value,
28
+ class: className,
29
+ exportparts: exportparts,
30
+ for: htmlFor ?? props["for"],
31
+ part: part,
32
+ tabindex: tabIndex ?? props["tabindex"],
33
+ disabled: disabled ? true : undefined,
34
+ style: { ...props.style },
35
+ },
36
+ props.children,
37
+ );
38
+ });
@@ -0,0 +1,55 @@
1
+ import React from "react";
2
+ import { XmTabPanel as XmTabPanelElement } from "../lit/components/tabs/index.js";
3
+
4
+ export type { XmTabPanelElement };
5
+
6
+ export interface XmTabPanelProps extends Pick<
7
+ React.AllHTMLAttributes<HTMLElement>,
8
+ | "children"
9
+ | "dir"
10
+ | "hidden"
11
+ | "id"
12
+ | "lang"
13
+ | "slot"
14
+ | "style"
15
+ | "title"
16
+ | "translate"
17
+ | "onClick"
18
+ | "onFocus"
19
+ | "onBlur"
20
+ > {
21
+ /** undefined */
22
+ value?: XmTabPanelElement["value"];
23
+
24
+ /** A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors or functions like the method `Document.getElementsByClassName()`. */
25
+ className?: string;
26
+
27
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
28
+ exportparts?: string;
29
+
30
+ /** Used for labels to link them with their inputs (using input id). */
31
+ htmlFor?: string;
32
+
33
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
34
+ key?: number | string;
35
+
36
+ /** 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. */
37
+ part?: string;
38
+
39
+ /** A mutable ref object whose `.current` property is initialized to the passed argument (`initialValue`). The returned object will persist for the full lifetime of the component. */
40
+ ref?: React.Ref<XmTabPanelElement>;
41
+
42
+ /** Allows developers to make HTML elements focusable, allow or prevent them from being sequentially focusable (usually with the `Tab` key, hence the name) and determine their relative ordering for sequential focus navigation. */
43
+ tabIndex?: number;
44
+ }
45
+
46
+ /**
47
+ *
48
+ *
49
+ * ## Attributes & Properties
50
+ *
51
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
52
+ *
53
+ * - `value`: undefined
54
+ */
55
+ export const XmTabPanel: React.ForwardRefExoticComponent<XmTabPanelProps>;
@@ -0,0 +1,32 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/tabs/index.js";
3
+ import { createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmTabPanel = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ value,
9
+ className,
10
+ exportparts,
11
+ htmlFor,
12
+ part,
13
+ tabIndex,
14
+ ...restProps
15
+ } = props;
16
+
17
+ return React.createElement(
18
+ "xm-tab-panel",
19
+ {
20
+ ref: createForwardedRefHandler(ref, forwardedRef),
21
+ ...restProps,
22
+ value: value,
23
+ class: className,
24
+ exportparts: exportparts,
25
+ for: htmlFor ?? props["for"],
26
+ part: part,
27
+ tabindex: tabIndex ?? props["tabindex"],
28
+ style: { ...props.style },
29
+ },
30
+ props.children,
31
+ );
32
+ });
@@ -0,0 +1,57 @@
1
+ import React from "react";
2
+ import { XmTable as XmTableElement } from "../lit/components/table/index.js";
3
+
4
+ export type { XmTableElement };
5
+
6
+ export interface XmTableProps extends Pick<
7
+ React.AllHTMLAttributes<HTMLElement>,
8
+ | "children"
9
+ | "dir"
10
+ | "hidden"
11
+ | "id"
12
+ | "lang"
13
+ | "slot"
14
+ | "style"
15
+ | "title"
16
+ | "translate"
17
+ | "onClick"
18
+ | "onFocus"
19
+ | "onBlur"
20
+ > {
21
+ /** undefined */
22
+ caption?: XmTableElement["caption"];
23
+
24
+ /** A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors or functions like the method `Document.getElementsByClassName()`. */
25
+ className?: string;
26
+
27
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
28
+ exportparts?: string;
29
+
30
+ /** Used for labels to link them with their inputs (using input id). */
31
+ htmlFor?: string;
32
+
33
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
34
+ key?: number | string;
35
+
36
+ /** 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. */
37
+ part?: string;
38
+
39
+ /** A mutable ref object whose `.current` property is initialized to the passed argument (`initialValue`). The returned object will persist for the full lifetime of the component. */
40
+ ref?: React.Ref<XmTableElement>;
41
+
42
+ /** Allows developers to make HTML elements focusable, allow or prevent them from being sequentially focusable (usually with the `Tab` key, hence the name) and determine their relative ordering for sequential focus navigation. */
43
+ tabIndex?: number;
44
+ }
45
+
46
+ /**
47
+ *
48
+ *
49
+ * ## Attributes & Properties
50
+ *
51
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
52
+ *
53
+ * - `caption`: undefined
54
+ * - `columns`: undefined (property only)
55
+ * - `rows`: undefined (property only)
56
+ */
57
+ export const XmTable: React.ForwardRefExoticComponent<XmTableProps>;
@@ -0,0 +1,32 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/table/index.js";
3
+ import { createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmTable = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ caption,
9
+ className,
10
+ exportparts,
11
+ htmlFor,
12
+ part,
13
+ tabIndex,
14
+ ...restProps
15
+ } = props;
16
+
17
+ return React.createElement(
18
+ "xm-table",
19
+ {
20
+ ref: createForwardedRefHandler(ref, forwardedRef),
21
+ ...restProps,
22
+ caption: caption,
23
+ class: className,
24
+ exportparts: exportparts,
25
+ for: htmlFor ?? props["for"],
26
+ part: part,
27
+ tabindex: tabIndex ?? props["tabindex"],
28
+ style: { ...props.style },
29
+ },
30
+ props.children,
31
+ );
32
+ });
@@ -0,0 +1,82 @@
1
+ import React from "react";
2
+ import {
3
+ XmTabs as XmTabsElement,
4
+ CustomEvent,
5
+ } from "../lit/components/tabs/index.js";
6
+
7
+ /**
8
+ * A generic type for strongly typing custom events with their targets
9
+ * @template T - The type of the event target (extends EventTarget)
10
+ * @template D - The type of the detail payload for the custom event
11
+ */
12
+ type TypedEvent<T extends EventTarget, E = Event> = E & {
13
+ target: T;
14
+ };
15
+ /** `XmTabs` component event */
16
+ export type XmTabsElementEvent<E = Event> = TypedEvent<XmTabsElement, E>;
17
+
18
+ export type { XmTabsElement, CustomEvent };
19
+
20
+ export interface XmTabsProps extends Pick<
21
+ React.AllHTMLAttributes<HTMLElement>,
22
+ | "children"
23
+ | "dir"
24
+ | "hidden"
25
+ | "id"
26
+ | "lang"
27
+ | "slot"
28
+ | "style"
29
+ | "title"
30
+ | "translate"
31
+ | "onClick"
32
+ | "onFocus"
33
+ | "onBlur"
34
+ > {
35
+ /** undefined */
36
+ value?: XmTabsElement["value"];
37
+
38
+ /** undefined */
39
+ size?: XmTabsElement["size"];
40
+
41
+ /** A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors or functions like the method `Document.getElementsByClassName()`. */
42
+ className?: string;
43
+
44
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
45
+ exportparts?: string;
46
+
47
+ /** Used for labels to link them with their inputs (using input id). */
48
+ htmlFor?: string;
49
+
50
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
51
+ key?: number | string;
52
+
53
+ /** 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. */
54
+ part?: string;
55
+
56
+ /** A mutable ref object whose `.current` property is initialized to the passed argument (`initialValue`). The returned object will persist for the full lifetime of the component. */
57
+ ref?: React.Ref<XmTabsElement>;
58
+
59
+ /** Allows developers to make HTML elements focusable, allow or prevent them from being sequentially focusable (usually with the `Tab` key, hence the name) and determine their relative ordering for sequential focus navigation. */
60
+ tabIndex?: number;
61
+
62
+ /** undefined */
63
+ onChange?: (event: XmTabsElementEvent) => void;
64
+ }
65
+
66
+ /**
67
+ *
68
+ *
69
+ * ## Attributes & Properties
70
+ *
71
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
72
+ *
73
+ * - `value`: undefined
74
+ * - `size`: undefined
75
+ *
76
+ * ## Events
77
+ *
78
+ * Events that will be emitted by the component.
79
+ *
80
+ * - `change`: undefined
81
+ */
82
+ export const XmTabs: React.ForwardRefExoticComponent<XmTabsProps>;
@@ -0,0 +1,38 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/tabs/index.js";
3
+ import { useEventListener, createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmTabs = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ value,
9
+ size,
10
+ className,
11
+ exportparts,
12
+ htmlFor,
13
+ part,
14
+ tabIndex,
15
+ onChange,
16
+ ...restProps
17
+ } = props;
18
+
19
+ /** Event listeners - run once */
20
+ useEventListener(ref, "change", props.onChange);
21
+
22
+ return React.createElement(
23
+ "xm-tabs",
24
+ {
25
+ ref: createForwardedRefHandler(ref, forwardedRef),
26
+ ...restProps,
27
+ value: value,
28
+ size: size,
29
+ class: className,
30
+ exportparts: exportparts,
31
+ for: htmlFor ?? props["for"],
32
+ part: part,
33
+ tabindex: tabIndex ?? props["tabindex"],
34
+ style: { ...props.style },
35
+ },
36
+ props.children,
37
+ );
38
+ });