@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,83 @@
1
+ import React from "react";
2
+ import {
3
+ XmList as XmListElement,
4
+ CustomEvent,
5
+ } from "../lit/components/list/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
+ /** `XmList` component event */
16
+ export type XmListElementEvent<E = Event> = TypedEvent<XmListElement, E>;
17
+
18
+ export type { XmListElement, CustomEvent };
19
+
20
+ export interface XmListProps 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
+ interactive?: boolean;
37
+
38
+ /** undefined */
39
+ selectable?: boolean;
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<XmListElement>;
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
+ /** Fired on commit with the new value in `detail`. */
63
+ onChange?: (event: XmListElementEvent) => 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
+ * - `interactive`: undefined
74
+ * - `selectable`: undefined
75
+ * - `value`: undefined (property only)
76
+ *
77
+ * ## Events
78
+ *
79
+ * Events that will be emitted by the component.
80
+ *
81
+ * - `change`: Fired on commit with the new value in `detail`.
82
+ */
83
+ export const XmList: React.ForwardRefExoticComponent<XmListProps>;
@@ -0,0 +1,38 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/list/index.js";
3
+ import { useEventListener, createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmList = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ interactive,
9
+ selectable,
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-list",
24
+ {
25
+ ref: createForwardedRefHandler(ref, forwardedRef),
26
+ ...restProps,
27
+ class: className,
28
+ exportparts: exportparts,
29
+ for: htmlFor ?? props["for"],
30
+ part: part,
31
+ tabindex: tabIndex ?? props["tabindex"],
32
+ interactive: interactive ? true : undefined,
33
+ selectable: selectable ? true : undefined,
34
+ style: { ...props.style },
35
+ },
36
+ props.children,
37
+ );
38
+ });
@@ -0,0 +1,67 @@
1
+ import React from "react";
2
+ import { XmListItem as XmListItemElement } from "../lit/components/list-item/index.js";
3
+
4
+ export type { XmListItemElement };
5
+
6
+ export interface XmListItemProps 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
+ selected?: boolean;
23
+
24
+ /** undefined */
25
+ disabled?: boolean;
26
+
27
+ /** undefined */
28
+ value?: XmListItemElement["value"];
29
+
30
+ /** undefined */
31
+ secondary?: XmListItemElement["secondary"];
32
+
33
+ /** 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()`. */
34
+ className?: string;
35
+
36
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
37
+ exportparts?: string;
38
+
39
+ /** Used for labels to link them with their inputs (using input id). */
40
+ htmlFor?: string;
41
+
42
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
43
+ key?: number | string;
44
+
45
+ /** 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. */
46
+ part?: string;
47
+
48
+ /** 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. */
49
+ ref?: React.Ref<XmListItemElement>;
50
+
51
+ /** 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. */
52
+ tabIndex?: number;
53
+ }
54
+
55
+ /**
56
+ *
57
+ *
58
+ * ## Attributes & Properties
59
+ *
60
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
61
+ *
62
+ * - `value`: undefined
63
+ * - `selected`: undefined
64
+ * - `disabled`: undefined
65
+ * - `secondary`: undefined
66
+ */
67
+ export const XmListItem: React.ForwardRefExoticComponent<XmListItemProps>;
@@ -0,0 +1,38 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/list-item/index.js";
3
+ import { createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmListItem = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ selected,
9
+ disabled,
10
+ value,
11
+ secondary,
12
+ className,
13
+ exportparts,
14
+ htmlFor,
15
+ part,
16
+ tabIndex,
17
+ ...restProps
18
+ } = props;
19
+
20
+ return React.createElement(
21
+ "xm-list-item",
22
+ {
23
+ ref: createForwardedRefHandler(ref, forwardedRef),
24
+ ...restProps,
25
+ value: value,
26
+ secondary: secondary,
27
+ class: className,
28
+ exportparts: exportparts,
29
+ for: htmlFor ?? props["for"],
30
+ part: part,
31
+ tabindex: tabIndex ?? props["tabindex"],
32
+ selected: selected ? true : undefined,
33
+ disabled: disabled ? true : undefined,
34
+ style: { ...props.style },
35
+ },
36
+ props.children,
37
+ );
38
+ });
@@ -0,0 +1,98 @@
1
+ import React from "react";
2
+ import {
3
+ XmMenu as XmMenuElement,
4
+ CustomEvent,
5
+ } from "../lit/components/menu/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
+ /** `XmMenu` component event */
16
+ export type XmMenuElementEvent<E = Event> = TypedEvent<XmMenuElement, E>;
17
+
18
+ export type { XmMenuElement, CustomEvent };
19
+
20
+ export interface XmMenuProps 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
+ open?: boolean;
37
+
38
+ /** undefined */
39
+ placement?: XmMenuElement["placement"];
40
+
41
+ /** undefined */
42
+ label?: XmMenuElement["label"];
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<XmMenuElement>;
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 when the element requests to close. */
66
+ onClose?: (event: XmMenuElementEvent) => void;
67
+
68
+ /** Fired when a menu option is selected. */
69
+ onXmMenuSelect?: (event: XmMenuElementEvent) => void;
70
+
71
+ /** Fired when a menu item is activated. */
72
+ onXmMenuItemActivate?: (event: XmMenuElementEvent) => void;
73
+
74
+ /** Fired when a menu item is hovered. */
75
+ onXmMenuItemHover?: (event: XmMenuElementEvent) => void;
76
+ }
77
+
78
+ /**
79
+ *
80
+ *
81
+ * ## Attributes & Properties
82
+ *
83
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
84
+ *
85
+ * - `open`: undefined
86
+ * - `placement`: undefined
87
+ * - `label`: undefined
88
+ *
89
+ * ## Events
90
+ *
91
+ * Events that will be emitted by the component.
92
+ *
93
+ * - `close`: Fired when the element requests to close.
94
+ * - `xm-menu-select`: Fired when a menu option is selected.
95
+ * - `xm-menu-item-activate`: Fired when a menu item is activated.
96
+ * - `xm-menu-item-hover`: Fired when a menu item is hovered.
97
+ */
98
+ export const XmMenu: React.ForwardRefExoticComponent<XmMenuProps>;
@@ -0,0 +1,46 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/menu/index.js";
3
+ import { useEventListener, createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmMenu = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ open,
9
+ placement,
10
+ label,
11
+ className,
12
+ exportparts,
13
+ htmlFor,
14
+ part,
15
+ tabIndex,
16
+ onClose,
17
+ onXmMenuSelect,
18
+ onXmMenuItemActivate,
19
+ onXmMenuItemHover,
20
+ ...restProps
21
+ } = props;
22
+
23
+ /** Event listeners - run once */
24
+ useEventListener(ref, "close", props.onClose);
25
+ useEventListener(ref, "xm-menu-select", props.onXmMenuSelect);
26
+ useEventListener(ref, "xm-menu-item-activate", props.onXmMenuItemActivate);
27
+ useEventListener(ref, "xm-menu-item-hover", props.onXmMenuItemHover);
28
+
29
+ return React.createElement(
30
+ "xm-menu",
31
+ {
32
+ ref: createForwardedRefHandler(ref, forwardedRef),
33
+ ...restProps,
34
+ placement: placement,
35
+ label: label,
36
+ class: className,
37
+ exportparts: exportparts,
38
+ for: htmlFor ?? props["for"],
39
+ part: part,
40
+ tabindex: tabIndex ?? props["tabindex"],
41
+ open: open ? true : undefined,
42
+ style: { ...props.style },
43
+ },
44
+ props.children,
45
+ );
46
+ });
@@ -0,0 +1,63 @@
1
+ import React from "react";
2
+ import { XmMenuItem as XmMenuItemElement } from "../lit/components/menu/index.js";
3
+
4
+ export type { XmMenuItemElement };
5
+
6
+ export interface XmMenuItemProps 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
+ disabled?: boolean;
23
+
24
+ /** undefined */
25
+ active?: boolean;
26
+
27
+ /** undefined */
28
+ value?: XmMenuItemElement["value"];
29
+
30
+ /** 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()`. */
31
+ className?: string;
32
+
33
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
34
+ exportparts?: string;
35
+
36
+ /** Used for labels to link them with their inputs (using input id). */
37
+ htmlFor?: string;
38
+
39
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
40
+ key?: number | string;
41
+
42
+ /** 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. */
43
+ part?: string;
44
+
45
+ /** 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. */
46
+ ref?: React.Ref<XmMenuItemElement>;
47
+
48
+ /** 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. */
49
+ tabIndex?: number;
50
+ }
51
+
52
+ /**
53
+ *
54
+ *
55
+ * ## Attributes & Properties
56
+ *
57
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
58
+ *
59
+ * - `value`: undefined
60
+ * - `disabled`: undefined
61
+ * - `active`: undefined
62
+ */
63
+ export const XmMenuItem: React.ForwardRefExoticComponent<XmMenuItemProps>;
@@ -0,0 +1,36 @@
1
+ import React, { forwardRef, useRef } from "react";
2
+ import "../lit/components/menu/index.js";
3
+ import { createForwardedRefHandler } from "./react-utils.js";
4
+
5
+ export const XmMenuItem = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const {
8
+ disabled,
9
+ active,
10
+ value,
11
+ className,
12
+ exportparts,
13
+ htmlFor,
14
+ part,
15
+ tabIndex,
16
+ ...restProps
17
+ } = props;
18
+
19
+ return React.createElement(
20
+ "xm-menu-item",
21
+ {
22
+ ref: createForwardedRefHandler(ref, forwardedRef),
23
+ ...restProps,
24
+ value: value,
25
+ class: className,
26
+ exportparts: exportparts,
27
+ for: htmlFor ?? props["for"],
28
+ part: part,
29
+ tabindex: tabIndex ?? props["tabindex"],
30
+ disabled: disabled ? true : undefined,
31
+ active: active ? true : undefined,
32
+ style: { ...props.style },
33
+ },
34
+ props.children,
35
+ );
36
+ });
@@ -0,0 +1,161 @@
1
+ import React from "react";
2
+ import {
3
+ XmMultiSelect as XmMultiSelectElement,
4
+ CustomEvent,
5
+ } from "../lit/components/multi-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
+ /** `XmMultiSelect` component event */
16
+ export type XmMultiSelectElementEvent<E = Event> = TypedEvent<
17
+ XmMultiSelectElement,
18
+ E
19
+ >;
20
+
21
+ export type { XmMultiSelectElement, CustomEvent };
22
+
23
+ export interface XmMultiSelectProps 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
+ /** Render the in-panel search filter. */
39
+ searchable?: boolean;
40
+
41
+ /** undefined */
42
+ required?: boolean;
43
+
44
+ /** undefined */
45
+ disabled?: boolean;
46
+
47
+ /** undefined */
48
+ readOnly?: boolean;
49
+
50
+ /** undefined */
51
+ loading?: boolean;
52
+
53
+ /** INITIAL checked for toggle subclasses; mapped from attribute `checked`. */
54
+ initialChecked?: boolean;
55
+
56
+ /** Shown on the trigger when nothing is selected. */
57
+ placeholder?: XmMultiSelectElement["placeholder"];
58
+
59
+ /** Selection cap (0 = uncapped). At the cap, unselected options disable; selected stay removable. */
60
+ max?: XmMultiSelectElement["max"];
61
+
62
+ /** undefined */
63
+ label?: XmMultiSelectElement["label"];
64
+
65
+ /** undefined */
66
+ helper?: XmMultiSelectElement["helper"];
67
+
68
+ /** Severity copy. Non-empty ⇒ the field is in error (icon + copy, never color). */
69
+ error?: XmMultiSelectElement["error"];
70
+
71
+ /** undefined */
72
+ size?: XmMultiSelectElement["size"];
73
+
74
+ /** Form-control name — mirrors native <input name>. */
75
+ name?: XmMultiSelectElement["name"];
76
+
77
+ /** INITIAL value (uncontrolled-first, AD-6): the `value` attribute seeds the
78
+ live state once, then never overrides user input. Mapped from attribute
79
+ `value` so authors write `<xm-text-field value="…">`. */
80
+ initialValue?: XmMultiSelectElement["initialValue"];
81
+
82
+ /** 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()`. */
83
+ className?: string;
84
+
85
+ /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
86
+ exportparts?: string;
87
+
88
+ /** Used for labels to link them with their inputs (using input id). */
89
+ htmlFor?: string;
90
+
91
+ /** Used to help React identify which items have changed, are added, or are removed within a list. */
92
+ key?: number | string;
93
+
94
+ /** 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. */
95
+ part?: string;
96
+
97
+ /** 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. */
98
+ ref?: React.Ref<XmMultiSelectElement>;
99
+
100
+ /** 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. */
101
+ tabIndex?: number;
102
+
103
+ /** The option model — `{ label, value, disabled? }` shared with xm-select / radio-group. */
104
+ options?: XmMultiSelectElement["options"];
105
+
106
+ /** The selected primitives, in option order. The typed multi-value accessor
107
+ (the inherited string `value` stays a comma-joined mirror for plain consumers). */
108
+ selectedValues?: XmMultiSelectElement["selectedValues"];
109
+
110
+ /** Fired on every toggle; `detail.value` is the full selection as an Array<primitive>. */
111
+ onChange?: (event: XmMultiSelectElementEvent) => void;
112
+
113
+ /** Fired on each edit with the current value in `detail` (inherited by every field). */
114
+ onInput?: (event: XmMultiSelectElementEvent) => void;
115
+ }
116
+
117
+ /**
118
+ *
119
+ *
120
+ * ## Attributes & Properties
121
+ *
122
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
123
+ *
124
+ * - `placeholder`: Shown on the trigger when nothing is selected.
125
+ * - `max`: Selection cap (0 = uncapped). At the cap, unselected options disable; selected stay removable.
126
+ * - `searchable`: Render the in-panel search filter.
127
+ * - `label`: undefined
128
+ * - `helper`: undefined
129
+ * - `error`: Severity copy. Non-empty ⇒ the field is in error (icon + copy, never color).
130
+ * - `size`: undefined
131
+ * - `required`: undefined
132
+ * - `disabled`: undefined
133
+ * - `readonly`/`readOnly`: undefined
134
+ * - `loading`: undefined
135
+ * - `name`: Form-control name — mirrors native <input name>.
136
+ * - `value`/`initialValue`: INITIAL value (uncontrolled-first, AD-6): the `value` attribute seeds the
137
+ * live state once, then never overrides user input. Mapped from attribute
138
+ * `value` so authors write `<xm-text-field value="…">`.
139
+ * - `checked`/`initialChecked`: INITIAL checked for toggle subclasses; mapped from attribute `checked`.
140
+ * - `options`: The option model — `{ label, value, disabled? }` shared with xm-select / radio-group. (property only)
141
+ * - `selectedValues`: The selected primitives, in option order. The typed multi-value accessor
142
+ * (the inherited string `value` stays a comma-joined mirror for plain consumers). (property only) (readonly)
143
+ * - `readonly`: undefined (property only)
144
+ * - `value`: Programmatic reset support — setting `value` after first paint updates live state. (property only)
145
+ * - `checked`: Public read contract for toggle subclasses (AD-6a). (property only)
146
+ *
147
+ * ## Events
148
+ *
149
+ * Events that will be emitted by the component.
150
+ *
151
+ * - `change`: Fired on every toggle; `detail.value` is the full selection as an Array<primitive>.
152
+ * - `input`: Fired on each edit with the current value in `detail` (inherited by every field).
153
+ *
154
+ * ## Methods
155
+ *
156
+ * Methods that can be called to access component functionality.
157
+ *
158
+ * - `setFormDisabled(disabled: boolean) => void`: Down-propagation hook: xm-form (Story 2.10) sets this; it OR's with the
159
+ * field's own disabled and can never re-enable a self-disabled field.
160
+ */
161
+ export const XmMultiSelect: React.ForwardRefExoticComponent<XmMultiSelectProps>;