@xmesh/system-design 0.0.4 → 0.0.5

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 +45 -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 +45 -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 +68 -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 +36 -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 +44 -0
  197. package/dist/react/XmCheckbox.d.ts +145 -0
  198. package/dist/react/XmCheckbox.js +58 -0
  199. package/dist/react/XmChip.d.ts +99 -0
  200. package/dist/react/XmChip.js +46 -0
  201. package/dist/react/XmChipGroup.d.ts +79 -0
  202. package/dist/react/XmChipGroup.js +35 -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 +52 -0
  207. package/dist/react/XmDataTable.d.ts +125 -0
  208. package/dist/react/XmDataTable.js +65 -0
  209. package/dist/react/XmDateRange.d.ts +93 -0
  210. package/dist/react/XmDateRange.js +41 -0
  211. package/dist/react/XmDialog.d.ts +87 -0
  212. package/dist/react/XmDialog.js +40 -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 +48 -0
  219. package/dist/react/XmFileInput.d.ts +151 -0
  220. package/dist/react/XmFileInput.js +68 -0
  221. package/dist/react/XmFileValidationBlock.d.ts +111 -0
  222. package/dist/react/XmFileValidationBlock.js +45 -0
  223. package/dist/react/XmForm.d.ts +91 -0
  224. package/dist/react/XmForm.js +37 -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 +37 -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 +42 -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 +72 -0
  239. package/dist/react/XmNavigationDrawer.d.ts +93 -0
  240. package/dist/react/XmNavigationDrawer.js +41 -0
  241. package/dist/react/XmOverlay.d.ts +120 -0
  242. package/dist/react/XmOverlay.js +54 -0
  243. package/dist/react/XmPagination.d.ts +117 -0
  244. package/dist/react/XmPagination.js +57 -0
  245. package/dist/react/XmPopover.d.ts +90 -0
  246. package/dist/react/XmPopover.js +40 -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 +41 -0
  251. package/dist/react/XmRadioGroup.d.ts +139 -0
  252. package/dist/react/XmRadioGroup.js +56 -0
  253. package/dist/react/XmSelect.d.ts +152 -0
  254. package/dist/react/XmSelect.js +68 -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 +74 -0
  261. package/dist/react/XmSnackbar.d.ts +110 -0
  262. package/dist/react/XmSnackbar.js +49 -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 +56 -0
  267. package/dist/react/XmTab.d.ts +79 -0
  268. package/dist/react/XmTab.js +37 -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 +37 -0
  275. package/dist/react/XmTextField.d.ts +147 -0
  276. package/dist/react/XmTextField.js +60 -0
  277. package/dist/react/XmTextarea.d.ts +155 -0
  278. package/dist/react/XmTextarea.js +64 -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,75 @@
1
+ import React from "react";
2
+ import { XmProgress as XmProgressElement } from "../lit/components/progress/index.js";
3
+
4
+ export type { XmProgressElement };
5
+
6
+ export interface XmProgressProps 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
+ indeterminate?: boolean;
23
+
24
+ /** undefined */
25
+ showLabel?: boolean;
26
+
27
+ /** undefined */
28
+ variant?: XmProgressElement["variant"];
29
+
30
+ /** undefined */
31
+ value?: XmProgressElement["value"];
32
+
33
+ /** undefined */
34
+ size?: XmProgressElement["size"];
35
+
36
+ /** undefined */
37
+ label?: XmProgressElement["label"];
38
+
39
+ /** 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()`. */
40
+ className?: string;
41
+
42
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
43
+ exportparts?: string;
44
+
45
+ /** Used for labels to link them with their inputs (using input id). */
46
+ htmlFor?: string;
47
+
48
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
49
+ key?: number | string;
50
+
51
+ /** 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. */
52
+ part?: string;
53
+
54
+ /** 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. */
55
+ ref?: React.Ref<XmProgressElement>;
56
+
57
+ /** 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. */
58
+ tabIndex?: number;
59
+ }
60
+
61
+ /**
62
+ *
63
+ *
64
+ * ## Attributes & Properties
65
+ *
66
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
67
+ *
68
+ * - `variant`: undefined
69
+ * - `value`: undefined
70
+ * - `indeterminate`: undefined
71
+ * - `size`: undefined
72
+ * - `label`: undefined
73
+ * - `show-label`/`showLabel`: undefined
74
+ */
75
+ export const XmProgress: React.ForwardRefExoticComponent<XmProgressProps>;
@@ -0,0 +1,42 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/progress/index.js";
3
+ import { createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmProgress = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ indeterminate,
9
+ showLabel,
10
+ variant,
11
+ value,
12
+ size,
13
+ label,
14
+ className,
15
+ exportparts,
16
+ htmlFor,
17
+ part,
18
+ tabIndex,
19
+ ...restProps
20
+ } = props;
21
+
22
+ return React.createElement(
23
+ "xm-progress",
24
+ {
25
+ ref: createForwardedRefHandler(ref, forwardedRef),
26
+ ...restProps,
27
+ variant: variant,
28
+ value: value,
29
+ size: size,
30
+ label: label,
31
+ class: className,
32
+ exportparts: exportparts,
33
+ for: htmlFor ?? props["for"],
34
+ part: part,
35
+ tabindex: tabIndex ?? props["tabindex"],
36
+ indeterminate: indeterminate ? true : undefined,
37
+ "show-label": showLabel ? true : undefined,
38
+ style: { ...props.style },
39
+ },
40
+ props.children,
41
+ );
42
+ });
@@ -0,0 +1,88 @@
1
+ import React from "react";
2
+ import { XmRadio as XmRadioElement } from "../lit/components/radio-group/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
+ /** `XmRadio` component event */
13
+ export type XmRadioElementEvent<E = Event> = TypedEvent<XmRadioElement, E>;
14
+
15
+ export type { XmRadioElement };
16
+
17
+ export interface XmRadioProps 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
+ /** Own disabled — OR'd with the group's disabled by the group. */
33
+ disabled?: boolean;
34
+
35
+ /** Driven by the group; never set directly by authors. */
36
+ checked?: boolean;
37
+
38
+ /** Effective disabled the group computes (group OR own). */
39
+ groupDisabled?: boolean;
40
+
41
+ /** The primitive value this radio contributes to the group when selected. */
42
+ value?: XmRadioElement["value"];
43
+
44
+ /** 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()`. */
45
+ className?: string;
46
+
47
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
48
+ exportparts?: string;
49
+
50
+ /** Used for labels to link them with their inputs (using input id). */
51
+ htmlFor?: string;
52
+
53
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
54
+ key?: number | string;
55
+
56
+ /** 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. */
57
+ part?: string;
58
+
59
+ /** 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. */
60
+ ref?: React.Ref<XmRadioElement>;
61
+
62
+ /** 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. */
63
+ tabIndex?: number;
64
+
65
+ /** Fired on commit with the new value in `detail`. */
66
+ onChange?: (event: XmRadioElementEvent) => void;
67
+ }
68
+
69
+ /**
70
+ *
71
+ *
72
+ * ## Attributes & Properties
73
+ *
74
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
75
+ *
76
+ * - `value`: The primitive value this radio contributes to the group when selected.
77
+ * - `disabled`: Own disabled — OR'd with the group's disabled by the group.
78
+ * - `checked`: Driven by the group; never set directly by authors.
79
+ * - `group-disabled`/`groupDisabled`: Effective disabled the group computes (group OR own).
80
+ * - `effectiveDisabled`: undefined (property only) (readonly)
81
+ *
82
+ * ## Events
83
+ *
84
+ * Events that will be emitted by the component.
85
+ *
86
+ * - `change`: Fired on commit with the new value in `detail`.
87
+ */
88
+ export const XmRadio: React.ForwardRefExoticComponent<XmRadioProps>;
@@ -0,0 +1,41 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/radio-group/index.js";
3
+ import { useEventListener, createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmRadio = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ disabled,
9
+ checked,
10
+ groupDisabled,
11
+ value,
12
+ className,
13
+ exportparts,
14
+ htmlFor,
15
+ part,
16
+ tabIndex,
17
+ ...restProps
18
+ } = props;
19
+
20
+ /** Event listeners - run once */
21
+ useEventListener(ref, "change", props.onChange);
22
+
23
+ return React.createElement(
24
+ "xm-radio",
25
+ {
26
+ ref: createForwardedRefHandler(ref, forwardedRef),
27
+ ...restProps,
28
+ value: value,
29
+ class: className,
30
+ exportparts: exportparts,
31
+ for: htmlFor ?? props["for"],
32
+ part: part,
33
+ tabindex: tabIndex ?? props["tabindex"],
34
+ disabled: disabled ? true : undefined,
35
+ checked: checked ? true : undefined,
36
+ "group-disabled": groupDisabled ? true : undefined,
37
+ style: { ...props.style },
38
+ },
39
+ props.children,
40
+ );
41
+ });
@@ -0,0 +1,139 @@
1
+ import React from "react";
2
+ import {
3
+ XmRadioGroup as XmRadioGroupElement,
4
+ CustomEvent,
5
+ } from "../lit/components/radio-group/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
+ /** `XmRadioGroup` component event */
16
+ export type XmRadioGroupElementEvent<E = Event> = TypedEvent<
17
+ XmRadioGroupElement,
18
+ E
19
+ >;
20
+
21
+ export type { XmRadioGroupElement, CustomEvent };
22
+
23
+ export interface XmRadioGroupProps extends Pick<
24
+ React.AllHTMLAttributes<HTMLElement>,
25
+ | "children"
26
+ | "dir"
27
+ | "hidden"
28
+ | "id"
29
+ | "lang"
30
+ | "slot"
31
+ | "style"
32
+ | "title"
33
+ | "translate"
34
+ | "onClick"
35
+ | "onFocus"
36
+ | "onBlur"
37
+ > {
38
+ /** undefined */
39
+ required?: boolean;
40
+
41
+ /** undefined */
42
+ disabled?: boolean;
43
+
44
+ /** undefined */
45
+ readOnly?: boolean;
46
+
47
+ /** undefined */
48
+ loading?: boolean;
49
+
50
+ /** INITIAL checked for toggle subclasses; mapped from attribute `checked`. */
51
+ initialChecked?: boolean;
52
+
53
+ /** undefined */
54
+ label?: XmRadioGroupElement["label"];
55
+
56
+ /** undefined */
57
+ helper?: XmRadioGroupElement["helper"];
58
+
59
+ /** Severity copy. Non-empty ⇒ the field is in error (icon + copy, never color). */
60
+ error?: XmRadioGroupElement["error"];
61
+
62
+ /** undefined */
63
+ size?: XmRadioGroupElement["size"];
64
+
65
+ /** Form-control name — mirrors native <input name>. */
66
+ name?: XmRadioGroupElement["name"];
67
+
68
+ /** INITIAL value (uncontrolled-first, AD-6): the `value` attribute seeds the
69
+ live state once, then never overrides user input. Mapped from attribute
70
+ `value` so authors write `<xm-text-field value="…">`. */
71
+ initialValue?: XmRadioGroupElement["initialValue"];
72
+
73
+ /** 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()`. */
74
+ className?: string;
75
+
76
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
77
+ exportparts?: string;
78
+
79
+ /** Used for labels to link them with their inputs (using input id). */
80
+ htmlFor?: string;
81
+
82
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
83
+ key?: number | string;
84
+
85
+ /** 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. */
86
+ part?: string;
87
+
88
+ /** 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. */
89
+ ref?: React.Ref<XmRadioGroupElement>;
90
+
91
+ /** 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. */
92
+ tabIndex?: number;
93
+
94
+ /** Fired on commit with the new value in `detail` (inherited by every field). */
95
+ onChange?: (event: XmRadioGroupElementEvent) => void;
96
+
97
+ /** Fired on each edit with the current value in `detail` (inherited by every field). */
98
+ onInput?: (event: XmRadioGroupElementEvent) => void;
99
+ }
100
+
101
+ /**
102
+ *
103
+ *
104
+ * ## Attributes & Properties
105
+ *
106
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
107
+ *
108
+ * - `label`: undefined
109
+ * - `helper`: undefined
110
+ * - `error`: Severity copy. Non-empty ⇒ the field is in error (icon + copy, never color).
111
+ * - `size`: undefined
112
+ * - `required`: undefined
113
+ * - `disabled`: undefined
114
+ * - `readonly`/`readOnly`: undefined
115
+ * - `loading`: undefined
116
+ * - `name`: Form-control name — mirrors native <input name>.
117
+ * - `value`/`initialValue`: INITIAL value (uncontrolled-first, AD-6): the `value` attribute seeds the
118
+ * live state once, then never overrides user input. Mapped from attribute
119
+ * `value` so authors write `<xm-text-field value="…">`.
120
+ * - `checked`/`initialChecked`: INITIAL checked for toggle subclasses; mapped from attribute `checked`.
121
+ * - `readonly`: undefined (property only)
122
+ * - `value`: Programmatic reset support — setting `value` after first paint updates live state. (property only)
123
+ * - `checked`: Public read contract for toggle subclasses (AD-6a). (property only)
124
+ *
125
+ * ## Events
126
+ *
127
+ * Events that will be emitted by the component.
128
+ *
129
+ * - `change`: Fired on commit with the new value in `detail` (inherited by every field).
130
+ * - `input`: Fired on each edit with the current value in `detail` (inherited by every field).
131
+ *
132
+ * ## Methods
133
+ *
134
+ * Methods that can be called to access component functionality.
135
+ *
136
+ * - `setFormDisabled(disabled: boolean) => void`: Down-propagation hook: xm-form (Story 2.10) sets this; it OR's with the
137
+ * field's own disabled and can never re-enable a self-disabled field.
138
+ */
139
+ export const XmRadioGroup: React.ForwardRefExoticComponent<XmRadioGroupProps>;
@@ -0,0 +1,56 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/radio-group/index.js";
3
+ import { useEventListener, createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmRadioGroup = 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
+ ...restProps
25
+ } = props;
26
+
27
+ /** Event listeners - run once */
28
+ useEventListener(ref, "change", props.onChange);
29
+ useEventListener(ref, "input", props.onInput);
30
+
31
+ return React.createElement(
32
+ "xm-radio-group",
33
+ {
34
+ ref: createForwardedRefHandler(ref, forwardedRef),
35
+ ...restProps,
36
+ label: label,
37
+ helper: helper,
38
+ error: error,
39
+ size: size,
40
+ name: name,
41
+ value: initialValue ?? props["value"],
42
+ class: className,
43
+ exportparts: exportparts,
44
+ for: htmlFor ?? props["for"],
45
+ part: part,
46
+ tabindex: tabIndex ?? props["tabindex"],
47
+ required: required ? true : undefined,
48
+ disabled: disabled ? true : undefined,
49
+ readonly: readOnly ? true : undefined,
50
+ loading: loading ? true : undefined,
51
+ checked: initialChecked ? true : undefined,
52
+ style: { ...props.style },
53
+ },
54
+ props.children,
55
+ );
56
+ });
@@ -0,0 +1,152 @@
1
+ import React from "react";
2
+ import {
3
+ XmSelect as XmSelectElement,
4
+ CustomEvent,
5
+ } from "../lit/components/select/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
+ /** `XmSelect` component event */
16
+ export type XmSelectElementEvent<E = Event> = TypedEvent<XmSelectElement, E>;
17
+
18
+ export type { XmSelectElement, CustomEvent };
19
+
20
+ export interface XmSelectProps 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
+ /** Shown on the closed control when nothing is selected. */
51
+ placeholder?: XmSelectElement["placeholder"];
52
+
53
+ /** undefined */
54
+ label?: XmSelectElement["label"];
55
+
56
+ /** undefined */
57
+ helper?: XmSelectElement["helper"];
58
+
59
+ /** Severity copy. Non-empty ⇒ the field is in error (icon + copy, never color). */
60
+ error?: XmSelectElement["error"];
61
+
62
+ /** undefined */
63
+ size?: XmSelectElement["size"];
64
+
65
+ /** Form-control name — mirrors native <input name>. */
66
+ name?: XmSelectElement["name"];
67
+
68
+ /** INITIAL value (uncontrolled-first, AD-6): the `value` attribute seeds the
69
+ live state once, then never overrides user input. Mapped from attribute
70
+ `value` so authors write `<xm-text-field value="…">`. */
71
+ initialValue?: XmSelectElement["initialValue"];
72
+
73
+ /** 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()`. */
74
+ className?: string;
75
+
76
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
77
+ exportparts?: string;
78
+
79
+ /** Used for labels to link them with their inputs (using input id). */
80
+ htmlFor?: string;
81
+
82
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
83
+ key?: number | string;
84
+
85
+ /** 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. */
86
+ part?: string;
87
+
88
+ /** 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. */
89
+ ref?: React.Ref<XmSelectElement>;
90
+
91
+ /** 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. */
92
+ tabIndex?: number;
93
+
94
+ /** The option model — `{ label, value, disabled? }` shared across
95
+ select / autocomplete / radio-group so one host handler is safe. */
96
+ options?: XmSelectElement["options"];
97
+
98
+ /** Live read for the closed control + xm-form. The inherited string `value`
99
+ stays in sync; this returns the typed primitive for consumers that want it. */
100
+ selectedValue?: XmSelectElement["selectedValue"];
101
+
102
+ /** Fired on commit with the new value in `detail`. */
103
+ onChange?: (event: XmSelectElementEvent) => void;
104
+
105
+ /** Fired on each edit with the current value in `detail` (inherited by every field). */
106
+ onInput?: (event: XmSelectElementEvent) => void;
107
+ }
108
+
109
+ /**
110
+ *
111
+ *
112
+ * ## Attributes & Properties
113
+ *
114
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
115
+ *
116
+ * - `placeholder`: Shown on the closed control when nothing is selected.
117
+ * - `label`: undefined
118
+ * - `helper`: undefined
119
+ * - `error`: Severity copy. Non-empty ⇒ the field is in error (icon + copy, never color).
120
+ * - `size`: undefined
121
+ * - `required`: undefined
122
+ * - `disabled`: undefined
123
+ * - `readonly`/`readOnly`: undefined
124
+ * - `loading`: undefined
125
+ * - `name`: Form-control name — mirrors native <input name>.
126
+ * - `value`/`initialValue`: INITIAL value (uncontrolled-first, AD-6): the `value` attribute seeds the
127
+ * live state once, then never overrides user input. Mapped from attribute
128
+ * `value` so authors write `<xm-text-field value="…">`.
129
+ * - `checked`/`initialChecked`: INITIAL checked for toggle subclasses; mapped from attribute `checked`.
130
+ * - `options`: The option model — `{ label, value, disabled? }` shared across
131
+ * select / autocomplete / radio-group so one host handler is safe. (property only)
132
+ * - `selectedValue`: Live read for the closed control + xm-form. The inherited string `value`
133
+ * stays in sync; this returns the typed primitive for consumers that want it. (property only) (readonly)
134
+ * - `readonly`: undefined (property only)
135
+ * - `value`: Programmatic reset support — setting `value` after first paint updates live state. (property only)
136
+ * - `checked`: Public read contract for toggle subclasses (AD-6a). (property only)
137
+ *
138
+ * ## Events
139
+ *
140
+ * Events that will be emitted by the component.
141
+ *
142
+ * - `change`: Fired on commit with the new value in `detail`.
143
+ * - `input`: Fired on each edit with the current value in `detail` (inherited by every field).
144
+ *
145
+ * ## Methods
146
+ *
147
+ * Methods that can be called to access component functionality.
148
+ *
149
+ * - `setFormDisabled(disabled: boolean) => void`: Down-propagation hook: xm-form (Story 2.10) sets this; it OR's with the
150
+ * field's own disabled and can never re-enable a self-disabled field.
151
+ */
152
+ export const XmSelect: React.ForwardRefExoticComponent<XmSelectProps>;
@@ -0,0 +1,68 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/select/index.js";
3
+ import {
4
+ useEventListener,
5
+ useProperties,
6
+ createForwardedRefHandler,
7
+ } from "./react-utils.js";
8
+
9
+ export const XmSelect = forwardRef((props, forwardedRef) => {
10
+ const ref = useRef(null);
11
+ const {
12
+ required,
13
+ disabled,
14
+ readOnly,
15
+ loading,
16
+ initialChecked,
17
+ placeholder,
18
+ label,
19
+ helper,
20
+ error,
21
+ size,
22
+ name,
23
+ initialValue,
24
+ className,
25
+ exportparts,
26
+ htmlFor,
27
+ part,
28
+ tabIndex,
29
+ options,
30
+ selectedValue,
31
+ ...restProps
32
+ } = props;
33
+
34
+ /** Event listeners - run once */
35
+ useEventListener(ref, "change", props.onChange);
36
+ useEventListener(ref, "input", props.onInput);
37
+
38
+ /** Properties - run whenever a property has changed */
39
+ useProperties(ref, "options", options);
40
+ useProperties(ref, "selectedValue", selectedValue);
41
+
42
+ return React.createElement(
43
+ "xm-select",
44
+ {
45
+ ref: createForwardedRefHandler(ref, forwardedRef),
46
+ ...restProps,
47
+ placeholder: placeholder,
48
+ label: label,
49
+ helper: helper,
50
+ error: error,
51
+ size: size,
52
+ name: name,
53
+ value: initialValue ?? props["value"],
54
+ class: className,
55
+ exportparts: exportparts,
56
+ for: htmlFor ?? props["for"],
57
+ part: part,
58
+ tabindex: tabIndex ?? props["tabindex"],
59
+ required: required ? true : undefined,
60
+ disabled: disabled ? true : undefined,
61
+ readonly: readOnly ? true : undefined,
62
+ loading: loading ? true : undefined,
63
+ checked: initialChecked ? true : undefined,
64
+ style: { ...props.style },
65
+ },
66
+ props.children,
67
+ );
68
+ });