@sentropic/design-system-vue 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/dist/Accordion.d.ts +66 -0
  2. package/dist/Accordion.d.ts.map +1 -0
  3. package/dist/Accordion.js +69 -0
  4. package/dist/Accordion.js.map +1 -0
  5. package/dist/Alert.d.ts +59 -0
  6. package/dist/Alert.d.ts.map +1 -0
  7. package/dist/Alert.js +36 -0
  8. package/dist/Alert.js.map +1 -0
  9. package/dist/AreaChart.d.ts +66 -0
  10. package/dist/AreaChart.d.ts.map +1 -0
  11. package/dist/AreaChart.js +54 -0
  12. package/dist/AreaChart.js.map +1 -0
  13. package/dist/AspectRatio.d.ts +29 -0
  14. package/dist/AspectRatio.d.ts.map +1 -0
  15. package/dist/AspectRatio.js +20 -0
  16. package/dist/AspectRatio.js.map +1 -0
  17. package/dist/Badge.d.ts +30 -0
  18. package/dist/Badge.d.ts.map +1 -0
  19. package/dist/Badge.js +16 -0
  20. package/dist/Badge.js.map +1 -0
  21. package/dist/BarChart.d.ts +66 -0
  22. package/dist/BarChart.d.ts.map +1 -0
  23. package/dist/BarChart.js +47 -0
  24. package/dist/BarChart.js.map +1 -0
  25. package/dist/Breadcrumb.d.ts +43 -0
  26. package/dist/Breadcrumb.d.ts.map +1 -0
  27. package/dist/Breadcrumb.js +29 -0
  28. package/dist/Breadcrumb.js.map +1 -0
  29. package/dist/Button.d.ts +61 -0
  30. package/dist/Button.d.ts.map +1 -0
  31. package/dist/Button.js +36 -0
  32. package/dist/Button.js.map +1 -0
  33. package/dist/Card.d.ts +29 -0
  34. package/dist/Card.d.ts.map +1 -0
  35. package/dist/Card.js +16 -0
  36. package/dist/Card.js.map +1 -0
  37. package/dist/ChatComposer.d.ts +51 -0
  38. package/dist/ChatComposer.d.ts.map +1 -0
  39. package/dist/ChatComposer.js +47 -0
  40. package/dist/ChatComposer.js.map +1 -0
  41. package/dist/ChatMessage.d.ts +71 -0
  42. package/dist/ChatMessage.d.ts.map +1 -0
  43. package/dist/ChatMessage.js +47 -0
  44. package/dist/ChatMessage.js.map +1 -0
  45. package/dist/ChatThread.d.ts +60 -0
  46. package/dist/ChatThread.d.ts.map +1 -0
  47. package/dist/ChatThread.js +41 -0
  48. package/dist/ChatThread.js.map +1 -0
  49. package/dist/Checkbox.d.ts +101 -0
  50. package/dist/Checkbox.d.ts.map +1 -0
  51. package/dist/Checkbox.js +45 -0
  52. package/dist/Checkbox.js.map +1 -0
  53. package/dist/CodeSnippet.d.ts +38 -0
  54. package/dist/CodeSnippet.d.ts.map +1 -0
  55. package/dist/CodeSnippet.js +20 -0
  56. package/dist/CodeSnippet.js.map +1 -0
  57. package/dist/Combobox.d.ts +109 -0
  58. package/dist/Combobox.d.ts.map +1 -0
  59. package/dist/Combobox.js +152 -0
  60. package/dist/Combobox.js.map +1 -0
  61. package/dist/ContentSwitcher.d.ts +67 -0
  62. package/dist/ContentSwitcher.d.ts.map +1 -0
  63. package/dist/ContentSwitcher.js +42 -0
  64. package/dist/ContentSwitcher.js.map +1 -0
  65. package/dist/CopyButton.d.ts +72 -0
  66. package/dist/CopyButton.d.ts.map +1 -0
  67. package/dist/CopyButton.js +28 -0
  68. package/dist/CopyButton.js.map +1 -0
  69. package/dist/DataTable.d.ts +100 -0
  70. package/dist/DataTable.d.ts.map +1 -0
  71. package/dist/DataTable.js +42 -0
  72. package/dist/DataTable.js.map +1 -0
  73. package/dist/DatePicker.d.ts +53 -0
  74. package/dist/DatePicker.d.ts.map +1 -0
  75. package/dist/DatePicker.js +46 -0
  76. package/dist/DatePicker.js.map +1 -0
  77. package/dist/DonutChart.d.ts +66 -0
  78. package/dist/DonutChart.d.ts.map +1 -0
  79. package/dist/DonutChart.js +42 -0
  80. package/dist/DonutChart.js.map +1 -0
  81. package/dist/Drawer.d.ts +62 -0
  82. package/dist/Drawer.d.ts.map +1 -0
  83. package/dist/Drawer.js +77 -0
  84. package/dist/Drawer.js.map +1 -0
  85. package/dist/Dropdown.d.ts +76 -0
  86. package/dist/Dropdown.d.ts.map +1 -0
  87. package/dist/Dropdown.js +81 -0
  88. package/dist/Dropdown.js.map +1 -0
  89. package/dist/EmptyState.d.ts +48 -0
  90. package/dist/EmptyState.d.ts.map +1 -0
  91. package/dist/EmptyState.js +33 -0
  92. package/dist/EmptyState.js.map +1 -0
  93. package/dist/FileUploader.d.ts +57 -0
  94. package/dist/FileUploader.d.ts.map +1 -0
  95. package/dist/FileUploader.js +39 -0
  96. package/dist/FileUploader.js.map +1 -0
  97. package/dist/Footer.d.ts +67 -0
  98. package/dist/Footer.d.ts.map +1 -0
  99. package/dist/Footer.js +39 -0
  100. package/dist/Footer.js.map +1 -0
  101. package/dist/ForceGraph.d.ts +86 -0
  102. package/dist/ForceGraph.d.ts.map +1 -0
  103. package/dist/ForceGraph.js +62 -0
  104. package/dist/ForceGraph.js.map +1 -0
  105. package/dist/Form.d.ts +42 -0
  106. package/dist/Form.d.ts.map +1 -0
  107. package/dist/Form.js +32 -0
  108. package/dist/Form.js.map +1 -0
  109. package/dist/FormGroup.d.ts +38 -0
  110. package/dist/FormGroup.d.ts.map +1 -0
  111. package/dist/FormGroup.js +23 -0
  112. package/dist/FormGroup.js.map +1 -0
  113. package/dist/Header.d.ts +89 -0
  114. package/dist/Header.d.ts.map +1 -0
  115. package/dist/Header.js +54 -0
  116. package/dist/Header.js.map +1 -0
  117. package/dist/Highlight.d.ts +40 -0
  118. package/dist/Highlight.d.ts.map +1 -0
  119. package/dist/Highlight.js +25 -0
  120. package/dist/Highlight.js.map +1 -0
  121. package/dist/IconButton.d.ts +61 -0
  122. package/dist/IconButton.d.ts.map +1 -0
  123. package/dist/IconButton.js +30 -0
  124. package/dist/IconButton.js.map +1 -0
  125. package/dist/InlineLoading.d.ts +40 -0
  126. package/dist/InlineLoading.d.ts.map +1 -0
  127. package/dist/InlineLoading.js +26 -0
  128. package/dist/InlineLoading.js.map +1 -0
  129. package/dist/Input.d.ts +126 -0
  130. package/dist/Input.d.ts.map +1 -0
  131. package/dist/Input.js +60 -0
  132. package/dist/Input.js.map +1 -0
  133. package/dist/LanguageSelector.d.ts +54 -0
  134. package/dist/LanguageSelector.d.ts.map +1 -0
  135. package/dist/LanguageSelector.js +34 -0
  136. package/dist/LanguageSelector.js.map +1 -0
  137. package/dist/LineChart.d.ts +66 -0
  138. package/dist/LineChart.d.ts.map +1 -0
  139. package/dist/LineChart.js +50 -0
  140. package/dist/LineChart.js.map +1 -0
  141. package/dist/Link.d.ts +59 -0
  142. package/dist/Link.d.ts.map +1 -0
  143. package/dist/Link.js +21 -0
  144. package/dist/Link.js.map +1 -0
  145. package/dist/LoadingState.d.ts +50 -0
  146. package/dist/LoadingState.d.ts.map +1 -0
  147. package/dist/LoadingState.js +28 -0
  148. package/dist/LoadingState.js.map +1 -0
  149. package/dist/Menu.d.ts +68 -0
  150. package/dist/Menu.d.ts.map +1 -0
  151. package/dist/Menu.js +95 -0
  152. package/dist/Menu.js.map +1 -0
  153. package/dist/MenuPopover.d.ts +52 -0
  154. package/dist/MenuPopover.d.ts.map +1 -0
  155. package/dist/MenuPopover.js +28 -0
  156. package/dist/MenuPopover.js.map +1 -0
  157. package/dist/MenuTriggerButton.d.ts +39 -0
  158. package/dist/MenuTriggerButton.d.ts.map +1 -0
  159. package/dist/MenuTriggerButton.js +22 -0
  160. package/dist/MenuTriggerButton.js.map +1 -0
  161. package/dist/MessageActions.d.ts +46 -0
  162. package/dist/MessageActions.d.ts.map +1 -0
  163. package/dist/MessageActions.js +30 -0
  164. package/dist/MessageActions.js.map +1 -0
  165. package/dist/MessageStatusBadge.d.ts +50 -0
  166. package/dist/MessageStatusBadge.d.ts.map +1 -0
  167. package/dist/MessageStatusBadge.js +44 -0
  168. package/dist/MessageStatusBadge.js.map +1 -0
  169. package/dist/Modal.d.ts +51 -0
  170. package/dist/Modal.d.ts.map +1 -0
  171. package/dist/Modal.js +66 -0
  172. package/dist/Modal.js.map +1 -0
  173. package/dist/MultiSelect.d.ts +88 -0
  174. package/dist/MultiSelect.d.ts.map +1 -0
  175. package/dist/MultiSelect.js +101 -0
  176. package/dist/MultiSelect.js.map +1 -0
  177. package/dist/NumberInput.d.ts +124 -0
  178. package/dist/NumberInput.d.ts.map +1 -0
  179. package/dist/NumberInput.js +65 -0
  180. package/dist/NumberInput.js.map +1 -0
  181. package/dist/OrderedList.d.ts +33 -0
  182. package/dist/OrderedList.d.ts.map +1 -0
  183. package/dist/OrderedList.js +52 -0
  184. package/dist/OrderedList.js.map +1 -0
  185. package/dist/OverflowMenu.d.ts +73 -0
  186. package/dist/OverflowMenu.d.ts.map +1 -0
  187. package/dist/OverflowMenu.js +57 -0
  188. package/dist/OverflowMenu.js.map +1 -0
  189. package/dist/Pagination.d.ts +70 -0
  190. package/dist/Pagination.d.ts.map +1 -0
  191. package/dist/Pagination.js +58 -0
  192. package/dist/Pagination.js.map +1 -0
  193. package/dist/PaginationNav.d.ts +59 -0
  194. package/dist/PaginationNav.d.ts.map +1 -0
  195. package/dist/PaginationNav.js +37 -0
  196. package/dist/PaginationNav.js.map +1 -0
  197. package/dist/PasswordInput.d.ts +94 -0
  198. package/dist/PasswordInput.d.ts.map +1 -0
  199. package/dist/PasswordInput.js +69 -0
  200. package/dist/PasswordInput.js.map +1 -0
  201. package/dist/Popover.d.ts +52 -0
  202. package/dist/Popover.d.ts.map +1 -0
  203. package/dist/Popover.js +66 -0
  204. package/dist/Popover.js.map +1 -0
  205. package/dist/ProgressBar.d.ts +81 -0
  206. package/dist/ProgressBar.d.ts.map +1 -0
  207. package/dist/ProgressBar.js +62 -0
  208. package/dist/ProgressBar.js.map +1 -0
  209. package/dist/ProgressIndicator.d.ts +46 -0
  210. package/dist/ProgressIndicator.d.ts.map +1 -0
  211. package/dist/ProgressIndicator.js +31 -0
  212. package/dist/ProgressIndicator.js.map +1 -0
  213. package/dist/Quote.d.ts +39 -0
  214. package/dist/Quote.d.ts.map +1 -0
  215. package/dist/Quote.js +29 -0
  216. package/dist/Quote.js.map +1 -0
  217. package/dist/Radio.d.ts +101 -0
  218. package/dist/Radio.d.ts.map +1 -0
  219. package/dist/Radio.js +46 -0
  220. package/dist/Radio.js.map +1 -0
  221. package/dist/ScatterPlot.d.ts +65 -0
  222. package/dist/ScatterPlot.d.ts.map +1 -0
  223. package/dist/ScatterPlot.js +41 -0
  224. package/dist/ScatterPlot.js.map +1 -0
  225. package/dist/Search.d.ts +85 -0
  226. package/dist/Search.d.ts.map +1 -0
  227. package/dist/Search.js +54 -0
  228. package/dist/Search.js.map +1 -0
  229. package/dist/Select.d.ts +108 -0
  230. package/dist/Select.d.ts.map +1 -0
  231. package/dist/Select.js +58 -0
  232. package/dist/Select.js.map +1 -0
  233. package/dist/SideNav.d.ts +44 -0
  234. package/dist/SideNav.d.ts.map +1 -0
  235. package/dist/SideNav.js +22 -0
  236. package/dist/SideNav.js.map +1 -0
  237. package/dist/SkeletonText.d.ts +39 -0
  238. package/dist/SkeletonText.d.ts.map +1 -0
  239. package/dist/SkeletonText.js +24 -0
  240. package/dist/SkeletonText.js.map +1 -0
  241. package/dist/SkipLink.d.ts +29 -0
  242. package/dist/SkipLink.d.ts.map +1 -0
  243. package/dist/SkipLink.js +17 -0
  244. package/dist/SkipLink.js.map +1 -0
  245. package/dist/Slider.d.ts +93 -0
  246. package/dist/Slider.d.ts.map +1 -0
  247. package/dist/Slider.js +45 -0
  248. package/dist/Slider.js.map +1 -0
  249. package/dist/Sparkline.d.ts +49 -0
  250. package/dist/Sparkline.d.ts.map +1 -0
  251. package/dist/Sparkline.js +42 -0
  252. package/dist/Sparkline.js.map +1 -0
  253. package/dist/StackedBarChart.d.ts +68 -0
  254. package/dist/StackedBarChart.d.ts.map +1 -0
  255. package/dist/StackedBarChart.js +55 -0
  256. package/dist/StackedBarChart.js.map +1 -0
  257. package/dist/StreamingMessage.d.ts +57 -0
  258. package/dist/StreamingMessage.d.ts.map +1 -0
  259. package/dist/StreamingMessage.js +25 -0
  260. package/dist/StreamingMessage.js.map +1 -0
  261. package/dist/StructuredList.d.ts +44 -0
  262. package/dist/StructuredList.d.ts.map +1 -0
  263. package/dist/StructuredList.js +20 -0
  264. package/dist/StructuredList.js.map +1 -0
  265. package/dist/Switch.d.ts +91 -0
  266. package/dist/Switch.d.ts.map +1 -0
  267. package/dist/Switch.js +48 -0
  268. package/dist/Switch.js.map +1 -0
  269. package/dist/Table.d.ts +53 -0
  270. package/dist/Table.d.ts.map +1 -0
  271. package/dist/Table.js +29 -0
  272. package/dist/Table.js.map +1 -0
  273. package/dist/Tabs.d.ts +67 -0
  274. package/dist/Tabs.d.ts.map +1 -0
  275. package/dist/Tabs.js +124 -0
  276. package/dist/Tabs.js.map +1 -0
  277. package/dist/Tag.d.ts +53 -0
  278. package/dist/Tag.d.ts.map +1 -0
  279. package/dist/Tag.js +21 -0
  280. package/dist/Tag.js.map +1 -0
  281. package/dist/Textarea.d.ts +113 -0
  282. package/dist/Textarea.d.ts.map +1 -0
  283. package/dist/Textarea.js +60 -0
  284. package/dist/Textarea.js.map +1 -0
  285. package/dist/ThemeProvider.d.ts +30 -0
  286. package/dist/ThemeProvider.d.ts.map +1 -0
  287. package/dist/ThemeProvider.js +43 -0
  288. package/dist/ThemeProvider.js.map +1 -0
  289. package/dist/Tile.d.ts +70 -0
  290. package/dist/Tile.d.ts.map +1 -0
  291. package/dist/Tile.js +30 -0
  292. package/dist/Tile.js.map +1 -0
  293. package/dist/TileGroup.d.ts +67 -0
  294. package/dist/TileGroup.d.ts.map +1 -0
  295. package/dist/TileGroup.js +48 -0
  296. package/dist/TileGroup.js.map +1 -0
  297. package/dist/Toast.d.ts +90 -0
  298. package/dist/Toast.d.ts.map +1 -0
  299. package/dist/Toast.js +80 -0
  300. package/dist/Toast.js.map +1 -0
  301. package/dist/Toggle.d.ts +102 -0
  302. package/dist/Toggle.d.ts.map +1 -0
  303. package/dist/Toggle.js +49 -0
  304. package/dist/Toggle.js.map +1 -0
  305. package/dist/Toggletip.d.ts +61 -0
  306. package/dist/Toggletip.d.ts.map +1 -0
  307. package/dist/Toggletip.js +53 -0
  308. package/dist/Toggletip.js.map +1 -0
  309. package/dist/Tooltip.d.ts +39 -0
  310. package/dist/Tooltip.d.ts.map +1 -0
  311. package/dist/Tooltip.js +37 -0
  312. package/dist/Tooltip.js.map +1 -0
  313. package/dist/TreeView.d.ts +64 -0
  314. package/dist/TreeView.d.ts.map +1 -0
  315. package/dist/TreeView.js +40 -0
  316. package/dist/TreeView.js.map +1 -0
  317. package/dist/UnorderedList.d.ts +33 -0
  318. package/dist/UnorderedList.d.ts.map +1 -0
  319. package/dist/UnorderedList.js +36 -0
  320. package/dist/UnorderedList.js.map +1 -0
  321. package/dist/classNames.d.ts +2 -0
  322. package/dist/classNames.d.ts.map +1 -0
  323. package/dist/classNames.js +4 -0
  324. package/dist/classNames.js.map +1 -0
  325. package/dist/index.d.ts +162 -0
  326. package/dist/index.d.ts.map +1 -0
  327. package/dist/index.js +82 -0
  328. package/dist/index.js.map +1 -0
  329. package/dist/styles.css +6366 -0
  330. package/package.json +50 -0
package/dist/Menu.d.ts ADDED
@@ -0,0 +1,68 @@
1
+ export type MenuActionItem = {
2
+ id?: string;
3
+ label: unknown;
4
+ disabled?: boolean;
5
+ variant?: "default" | "danger";
6
+ onClick?: () => void;
7
+ };
8
+ export type MenuDividerItem = {
9
+ type: "divider";
10
+ id?: string;
11
+ };
12
+ export type MenuGroupItem = {
13
+ type: "group";
14
+ id?: string;
15
+ label: unknown;
16
+ items: MenuActionItem[];
17
+ };
18
+ export type MenuItem = MenuActionItem | MenuDividerItem | MenuGroupItem;
19
+ export type MenuProps = {
20
+ items: MenuItem[];
21
+ dense?: boolean;
22
+ role?: string;
23
+ class?: string;
24
+ };
25
+ export declare const Menu: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
26
+ items: {
27
+ type: () => MenuItem[];
28
+ required: true;
29
+ };
30
+ dense: {
31
+ type: BooleanConstructor;
32
+ default: boolean;
33
+ };
34
+ role: {
35
+ type: StringConstructor;
36
+ default: undefined;
37
+ };
38
+ class: {
39
+ type: StringConstructor;
40
+ default: undefined;
41
+ };
42
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
43
+ [key: string]: any;
44
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "select"[], "select", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
45
+ items: {
46
+ type: () => MenuItem[];
47
+ required: true;
48
+ };
49
+ dense: {
50
+ type: BooleanConstructor;
51
+ default: boolean;
52
+ };
53
+ role: {
54
+ type: StringConstructor;
55
+ default: undefined;
56
+ };
57
+ class: {
58
+ type: StringConstructor;
59
+ default: undefined;
60
+ };
61
+ }>> & Readonly<{
62
+ onSelect?: ((...args: any[]) => any) | undefined;
63
+ }>, {
64
+ class: string;
65
+ role: string;
66
+ dense: boolean;
67
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
68
+ //# sourceMappingURL=Menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../src/Menu.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/D,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa,CAAC;AASxE,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAOF,eAAO,MAAM,IAAI;;cAGW,MAAM,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;cAAhB,MAAM,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;4EAmG1C,CAAC"}
package/dist/Menu.js ADDED
@@ -0,0 +1,95 @@
1
+ import { defineComponent, h, ref } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ function isDivider(item) {
4
+ return "type" in item && item.type === "divider";
5
+ }
6
+ function isGroup(item) {
7
+ return "type" in item && item.type === "group";
8
+ }
9
+ function moveIndex(index, max, delta) {
10
+ if (max <= 0)
11
+ return -1;
12
+ return (index + delta + max) % max;
13
+ }
14
+ export const Menu = defineComponent({
15
+ name: "Menu",
16
+ props: {
17
+ items: { type: Array, required: true },
18
+ dense: { type: Boolean, default: false },
19
+ role: { type: String, default: undefined },
20
+ class: { type: String, default: undefined },
21
+ },
22
+ emits: ["select"],
23
+ setup(props, { emit, attrs }) {
24
+ const rootRef = ref(null);
25
+ const handleItemKeyDown = (event, item) => {
26
+ const root = rootRef.value;
27
+ const focusable = Array.from(root?.querySelectorAll('[role="menuitem"]:not(:disabled)') ?? []);
28
+ const currentIndex = focusable.indexOf(event.currentTarget);
29
+ const focusAt = (index) => focusable[index]?.focus();
30
+ if (event.key === "ArrowDown") {
31
+ event.preventDefault();
32
+ focusAt(moveIndex(currentIndex, focusable.length, 1));
33
+ }
34
+ else if (event.key === "ArrowUp") {
35
+ event.preventDefault();
36
+ focusAt(moveIndex(currentIndex < 0 ? focusable.length : currentIndex, focusable.length, -1));
37
+ }
38
+ else if (event.key === "Home") {
39
+ event.preventDefault();
40
+ focusAt(0);
41
+ }
42
+ else if (event.key === "End") {
43
+ event.preventDefault();
44
+ focusAt(focusable.length - 1);
45
+ }
46
+ else if (event.key === "Enter" || event.key === " ") {
47
+ event.preventDefault();
48
+ if (!item.disabled)
49
+ emit("select", item);
50
+ }
51
+ };
52
+ return () => {
53
+ const children = props.items.map((item, index) => {
54
+ if (isDivider(item)) {
55
+ return h("div", {
56
+ key: item.id ?? index,
57
+ class: "st-menu__divider",
58
+ role: "separator",
59
+ });
60
+ }
61
+ if (isGroup(item)) {
62
+ return h("section", { key: item.id ?? index, class: "st-menu__group" }, [
63
+ h("h3", {}, item.label),
64
+ ...item.items.map((child) => h("button", {
65
+ key: child.id ?? String(child.label),
66
+ type: "button",
67
+ role: "menuitem",
68
+ class: "st-menu__item",
69
+ disabled: child.disabled,
70
+ onClick: () => emit("select", child),
71
+ onKeydown: (event) => handleItemKeyDown(event, child),
72
+ }, h("span", { class: "st-menu__itemLabel" }, child.label))),
73
+ ]);
74
+ }
75
+ const actionItem = item;
76
+ return h("button", {
77
+ key: actionItem.id ?? String(actionItem.label) ?? index,
78
+ type: "button",
79
+ role: "menuitem",
80
+ disabled: actionItem.disabled,
81
+ class: classNames("st-menu__item", actionItem.variant === "danger" && "st-menu__item--danger"),
82
+ onClick: () => emit("select", actionItem),
83
+ onKeydown: (event) => handleItemKeyDown(event, actionItem),
84
+ }, h("span", { class: "st-menu__itemLabel" }, actionItem.label));
85
+ });
86
+ return h("div", {
87
+ ...attrs,
88
+ ref: rootRef,
89
+ class: classNames("st-menu", props.dense && "st-menu--dense", props.class),
90
+ role: props.role ?? "menu",
91
+ }, children);
92
+ };
93
+ },
94
+ });
95
+ //# sourceMappingURL=Menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../src/Menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { MenuItem } from "./Menu.js";
2
+ export type MenuPopoverPlacement = "top-start" | "top-end" | "bottom-start" | "bottom-end";
3
+ export type MenuPopoverProps = {
4
+ items?: MenuItem[];
5
+ open?: boolean;
6
+ placement?: MenuPopoverPlacement;
7
+ class?: string;
8
+ };
9
+ export type { MenuItem };
10
+ export declare const MenuPopover: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
11
+ items: {
12
+ type: () => MenuItem[];
13
+ default: () => never[];
14
+ };
15
+ open: {
16
+ type: BooleanConstructor;
17
+ default: boolean;
18
+ };
19
+ placement: {
20
+ type: () => MenuPopoverPlacement;
21
+ default: string;
22
+ };
23
+ class: {
24
+ type: StringConstructor;
25
+ default: undefined;
26
+ };
27
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
28
+ [key: string]: any;
29
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
30
+ items: {
31
+ type: () => MenuItem[];
32
+ default: () => never[];
33
+ };
34
+ open: {
35
+ type: BooleanConstructor;
36
+ default: boolean;
37
+ };
38
+ placement: {
39
+ type: () => MenuPopoverPlacement;
40
+ default: string;
41
+ };
42
+ class: {
43
+ type: StringConstructor;
44
+ default: undefined;
45
+ };
46
+ }>> & Readonly<{}>, {
47
+ items: MenuItem[];
48
+ class: string;
49
+ open: boolean;
50
+ placement: MenuPopoverPlacement;
51
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
52
+ //# sourceMappingURL=MenuPopover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../src/MenuPopover.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,YAAY,CAAC;AAE3F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,YAAY,EAAE,QAAQ,EAAE,CAAC;AAEzB,eAAO,MAAM,WAAW;;cAGI,MAAM,QAAQ,EAAE;;;;;;;;cAEX,MAAM,oBAAoB;;;;;;;;;;;cAF/B,MAAM,QAAQ,EAAE;;;;;;;;cAEX,MAAM,oBAAoB;;;;;;;;;;;;4EA8BzD,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { defineComponent, h } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ import { Menu } from "./Menu.js";
4
+ export const MenuPopover = defineComponent({
5
+ name: "MenuPopover",
6
+ props: {
7
+ items: { type: Array, default: () => [] },
8
+ open: { type: Boolean, default: true },
9
+ placement: { type: String, default: "bottom-start" },
10
+ class: { type: String, default: undefined },
11
+ },
12
+ setup(props, { slots, attrs }) {
13
+ return () => {
14
+ return h("div", {
15
+ ...attrs,
16
+ class: classNames("st-menuPopover", `st-menuPopover--${props.placement}`, props.class),
17
+ }, [
18
+ slots.trigger?.(),
19
+ props.open
20
+ ? h("div", { class: "st-menuPopover__content" }, props.items && props.items.length
21
+ ? h(Menu, { items: props.items, role: "presentation" })
22
+ : slots.default?.())
23
+ : null,
24
+ ]);
25
+ };
26
+ },
27
+ });
28
+ //# sourceMappingURL=MenuPopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../src/MenuPopover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAcjC,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,KAAyB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QAC7D,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;QACtC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAoC,EAAE,OAAO,EAAE,cAAc,EAAE;QAClF,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;KAC5C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,CACN,KAAK,EACL;gBACE,GAAG,KAAK;gBACR,KAAK,EAAE,UAAU,CACf,gBAAgB,EAChB,mBAAmB,KAAK,CAAC,SAAS,EAAE,EACpC,KAAK,CAAC,KAAK,CACZ;aACF,EACD;gBACE,KAAK,CAAC,OAAO,EAAE,EAAE;gBACjB,KAAK,CAAC,IAAI;oBACR,CAAC,CAAC,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,yBAAyB,EAAE,EACpC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM;wBAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;wBACvD,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CACtB;oBACH,CAAC,CAAC,IAAI;aACT,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ export type MenuTriggerButtonProps = {
2
+ open?: boolean;
3
+ disabled?: boolean;
4
+ class?: string;
5
+ };
6
+ export declare const MenuTriggerButton: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
7
+ open: {
8
+ type: BooleanConstructor;
9
+ default: boolean;
10
+ };
11
+ disabled: {
12
+ type: BooleanConstructor;
13
+ default: boolean;
14
+ };
15
+ class: {
16
+ type: StringConstructor;
17
+ default: undefined;
18
+ };
19
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
20
+ [key: string]: any;
21
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
22
+ open: {
23
+ type: BooleanConstructor;
24
+ default: boolean;
25
+ };
26
+ disabled: {
27
+ type: BooleanConstructor;
28
+ default: boolean;
29
+ };
30
+ class: {
31
+ type: StringConstructor;
32
+ default: undefined;
33
+ };
34
+ }>> & Readonly<{}>, {
35
+ class: string;
36
+ disabled: boolean;
37
+ open: boolean;
38
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
39
+ //# sourceMappingURL=MenuTriggerButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuTriggerButton.d.ts","sourceRoot":"","sources":["../src/MenuTriggerButton.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAyB5B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { defineComponent, h } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ export const MenuTriggerButton = defineComponent({
4
+ name: "MenuTriggerButton",
5
+ props: {
6
+ open: { type: Boolean, default: false },
7
+ disabled: { type: Boolean, default: false },
8
+ class: { type: String, default: undefined },
9
+ },
10
+ setup(props, { slots, attrs }) {
11
+ return () => {
12
+ return h("button", {
13
+ ...attrs,
14
+ type: "button",
15
+ class: classNames("st-menuTriggerButton st-button st-button--secondary st-button--sm", props.class),
16
+ "aria-expanded": props.open,
17
+ disabled: props.disabled,
18
+ }, slots.default?.());
19
+ };
20
+ },
21
+ });
22
+ //# sourceMappingURL=MenuTriggerButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuTriggerButton.js","sourceRoot":"","sources":["../src/MenuTriggerButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQ7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;IAC/C,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE;QACL,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QACvC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;KAC5C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,CACN,QAAQ,EACR;gBACE,GAAG,KAAK;gBACR,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,UAAU,CACf,mEAAmE,EACnE,KAAK,CAAC,KAAK,CACZ;gBACD,eAAe,EAAE,KAAK,CAAC,IAAI;gBAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,EACD,KAAK,CAAC,OAAO,EAAE,EAAE,CAClB,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ export type MessageActionVariant = "default" | "danger";
2
+ export type MessageAction = {
3
+ id?: string;
4
+ label: unknown;
5
+ disabled?: boolean;
6
+ variant?: MessageActionVariant;
7
+ onClick?: () => void;
8
+ };
9
+ export type MessageActionsProps = {
10
+ actions: MessageAction[];
11
+ visibility?: "always" | "hover";
12
+ class?: string;
13
+ };
14
+ export declare const MessageActions: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
15
+ actions: {
16
+ type: () => MessageAction[];
17
+ required: true;
18
+ };
19
+ visibility: {
20
+ type: () => "always" | "hover";
21
+ default: string;
22
+ };
23
+ class: {
24
+ type: StringConstructor;
25
+ default: undefined;
26
+ };
27
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
28
+ [key: string]: any;
29
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
30
+ actions: {
31
+ type: () => MessageAction[];
32
+ required: true;
33
+ };
34
+ visibility: {
35
+ type: () => "always" | "hover";
36
+ default: string;
37
+ };
38
+ class: {
39
+ type: StringConstructor;
40
+ default: undefined;
41
+ };
42
+ }>> & Readonly<{}>, {
43
+ class: string;
44
+ visibility: "always" | "hover";
45
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
46
+ //# sourceMappingURL=MessageActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageActions.d.ts","sourceRoot":"","sources":["../src/MessageActions.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,cAAc;;cAGG,MAAM,aAAa,EAAE;;;;cAE7B,MAAM,QAAQ,GAAG,OAAO;;;;;;;;;;;cAFhB,MAAM,aAAa,EAAE;;;;cAE7B,MAAM,QAAQ,GAAG,OAAO;;;;;;;;;;4EAsC5C,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { defineComponent, h } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ export const MessageActions = defineComponent({
4
+ name: "MessageActions",
5
+ props: {
6
+ actions: { type: Array, required: true },
7
+ visibility: {
8
+ type: String,
9
+ default: "always",
10
+ },
11
+ class: { type: String, default: undefined },
12
+ },
13
+ setup(props, { attrs }) {
14
+ return () => {
15
+ const visibility = props.visibility ?? "always";
16
+ return h("nav", {
17
+ ...attrs,
18
+ class: classNames("st-messageActions", visibility === "hover" && "st-messageActions--hoverOnly", props.class),
19
+ "aria-label": "Message actions",
20
+ }, props.actions.map((action, index) => h("button", {
21
+ key: action.id ?? index,
22
+ type: "button",
23
+ class: classNames("st-button st-button--ghost st-button--sm", action.variant === "danger" && "st-button--danger"),
24
+ disabled: action.disabled,
25
+ onClick: action.onClick,
26
+ }, action.label)));
27
+ };
28
+ },
29
+ });
30
+ //# sourceMappingURL=MessageActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageActions.js","sourceRoot":"","sources":["../src/MessageActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiB7C,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;IAC5C,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE;QACL,OAAO,EAAE,EAAE,IAAI,EAAE,KAA8B,EAAE,QAAQ,EAAE,IAAI,EAAE;QACjE,UAAU,EAAE;YACV,IAAI,EAAE,MAAkC;YACxC,OAAO,EAAE,QAAQ;SAClB;QACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;KAC5C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,OAAO,GAAG,EAAE;YACV,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,QAAQ,CAAC;YAChD,OAAO,CAAC,CACN,KAAK,EACL;gBACE,GAAG,KAAK;gBACR,KAAK,EAAE,UAAU,CACf,mBAAmB,EACnB,UAAU,KAAK,OAAO,IAAI,8BAA8B,EACxD,KAAK,CAAC,KAAK,CACZ;gBACD,YAAY,EAAE,iBAAiB;aAChC,EACD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAClC,CAAC,CACC,QAAQ,EACR;gBACE,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK;gBACvB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,UAAU,CACf,0CAA0C,EAC1C,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,mBAAmB,CACnD;gBACD,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,EACD,MAAM,CAAC,KAAe,CACvB,CACF,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { ChatMessageStatus } from "./ChatMessage.js";
2
+ export type MessageStatusBadgeTone = "neutral" | "info" | "success" | "warning" | "error";
3
+ export type MessageStatusBadgeProps = {
4
+ status: ChatMessageStatus;
5
+ tone?: MessageStatusBadgeTone;
6
+ labels?: Partial<Record<ChatMessageStatus, unknown>>;
7
+ class?: string;
8
+ };
9
+ export declare const MessageStatusBadge: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
10
+ status: {
11
+ type: () => ChatMessageStatus;
12
+ required: true;
13
+ };
14
+ tone: {
15
+ type: () => MessageStatusBadgeTone;
16
+ default: undefined;
17
+ };
18
+ labels: {
19
+ type: () => Partial<Record<ChatMessageStatus, unknown>>;
20
+ default: undefined;
21
+ };
22
+ class: {
23
+ type: StringConstructor;
24
+ default: undefined;
25
+ };
26
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
27
+ [key: string]: any;
28
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
29
+ status: {
30
+ type: () => ChatMessageStatus;
31
+ required: true;
32
+ };
33
+ tone: {
34
+ type: () => MessageStatusBadgeTone;
35
+ default: undefined;
36
+ };
37
+ labels: {
38
+ type: () => Partial<Record<ChatMessageStatus, unknown>>;
39
+ default: undefined;
40
+ };
41
+ class: {
42
+ type: StringConstructor;
43
+ default: undefined;
44
+ };
45
+ }>> & Readonly<{}>, {
46
+ class: string;
47
+ tone: MessageStatusBadgeTone;
48
+ labels: Partial<Record<ChatMessageStatus, unknown>>;
49
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
50
+ //# sourceMappingURL=MessageStatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageStatusBadge.d.ts","sourceRoot":"","sources":["../src/MessageStatusBadge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1F,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;cAGD,MAAM,iBAAiB;;;;cACzB,MAAM,sBAAsB;;;;cAElC,MAAM,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;;;;;;;;;;;cAHzC,MAAM,iBAAiB;;;;cACzB,MAAM,sBAAsB;;;;cAElC,MAAM,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;;;;;;;;;;;4EA6CrE,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { defineComponent, h } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ export const MessageStatusBadge = defineComponent({
4
+ name: "MessageStatusBadge",
5
+ props: {
6
+ status: { type: String, required: true },
7
+ tone: { type: String, default: undefined },
8
+ labels: {
9
+ type: Object,
10
+ default: undefined,
11
+ },
12
+ class: { type: String, default: undefined },
13
+ },
14
+ setup(props, { attrs }) {
15
+ return () => {
16
+ const status = props.status;
17
+ const normalized = status === "sent"
18
+ ? "completed"
19
+ : status === "streaming"
20
+ ? "processing"
21
+ : status === "error"
22
+ ? "failed"
23
+ : status;
24
+ const resolvedTone = props.tone ??
25
+ (normalized === "completed"
26
+ ? "success"
27
+ : normalized === "failed"
28
+ ? "error"
29
+ : normalized === "processing"
30
+ ? "info"
31
+ : "neutral");
32
+ const label = (props.labels?.[status] ?? props.labels?.[normalized]) ??
33
+ (normalized.charAt(0).toUpperCase() + normalized.slice(1));
34
+ return h("span", {
35
+ ...attrs,
36
+ class: classNames("st-messageStatusBadge", `st-badge st-badge--${resolvedTone}`, props.class),
37
+ }, [
38
+ h("span", { class: "st-messageStatusBadge__dot", "aria-hidden": "true" }),
39
+ label,
40
+ ]);
41
+ };
42
+ },
43
+ });
44
+ //# sourceMappingURL=MessageStatusBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageStatusBadge.js","sourceRoot":"","sources":["../src/MessageStatusBadge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAY7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;IAChD,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE;QACL,MAAM,EAAE,EAAE,IAAI,EAAE,MAAiC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACnE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAsC,EAAE,OAAO,EAAE,SAAS,EAAE;QAC1E,MAAM,EAAE;YACN,IAAI,EAAE,MAA2D;YACjE,OAAO,EAAE,SAAS;SACnB;QACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;KAC5C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,OAAO,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,MAAM,UAAU,GACd,MAAM,KAAK,MAAM;gBACf,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,MAAM,KAAK,WAAW;oBACtB,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,MAAM,KAAK,OAAO;wBAClB,CAAC,CAAC,QAAQ;wBACV,CAAC,CAAC,MAAM,CAAC;YACjB,MAAM,YAAY,GAChB,KAAK,CAAC,IAAI;gBACV,CAAC,UAAU,KAAK,WAAW;oBACzB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,UAAU,KAAK,QAAQ;wBACvB,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,UAAU,KAAK,YAAY;4BAC3B,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,SAAS,CAAC,CAAC;YACrB,MAAM,KAAK,GACT,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,UAA+B,CAAC,CAAC;gBAC3E,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,CACN,MAAM,EACN;gBACE,GAAG,KAAK;gBACR,KAAK,EAAE,UAAU,CACf,uBAAuB,EACvB,sBAAsB,YAAY,EAAE,EACpC,KAAK,CAAC,KAAK,CACZ;aACF,EACD;gBACE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;gBACzE,KAAe;aAChB,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ export type ModalProps = {
2
+ open?: boolean;
3
+ title?: string;
4
+ description?: string;
5
+ class?: string;
6
+ };
7
+ export declare const Modal: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
8
+ open: {
9
+ type: BooleanConstructor;
10
+ default: boolean;
11
+ };
12
+ title: {
13
+ type: StringConstructor;
14
+ default: undefined;
15
+ };
16
+ description: {
17
+ type: StringConstructor;
18
+ default: undefined;
19
+ };
20
+ class: {
21
+ type: StringConstructor;
22
+ default: undefined;
23
+ };
24
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
25
+ [key: string]: any;
26
+ }> | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "close"[], "close", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
27
+ open: {
28
+ type: BooleanConstructor;
29
+ default: boolean;
30
+ };
31
+ title: {
32
+ type: StringConstructor;
33
+ default: undefined;
34
+ };
35
+ description: {
36
+ type: StringConstructor;
37
+ default: undefined;
38
+ };
39
+ class: {
40
+ type: StringConstructor;
41
+ default: undefined;
42
+ };
43
+ }>> & Readonly<{
44
+ onClose?: ((...args: any[]) => any) | undefined;
45
+ }>, {
46
+ class: string;
47
+ title: string;
48
+ open: boolean;
49
+ description: string;
50
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
51
+ //# sourceMappingURL=Modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../src/Modal.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAgFhB,CAAC"}
package/dist/Modal.js ADDED
@@ -0,0 +1,66 @@
1
+ import { defineComponent, h, onUnmounted, ref, watch } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ export const Modal = defineComponent({
4
+ name: "Modal",
5
+ props: {
6
+ open: { type: Boolean, default: false },
7
+ title: { type: String, default: undefined },
8
+ description: { type: String, default: undefined },
9
+ class: { type: String, default: undefined },
10
+ },
11
+ emits: ["close"],
12
+ setup(props, { emit, slots, attrs }) {
13
+ const dialogRef = ref(null);
14
+ const onKeyDown = (event) => {
15
+ if (event.key === "Escape") {
16
+ event.preventDefault();
17
+ emit("close");
18
+ }
19
+ };
20
+ watch(() => props.open, (open) => {
21
+ if (open) {
22
+ document.body.style.overflow = "hidden";
23
+ document.addEventListener("keydown", onKeyDown);
24
+ }
25
+ else {
26
+ document.body.style.overflow = "";
27
+ document.removeEventListener("keydown", onKeyDown);
28
+ }
29
+ });
30
+ onUnmounted(() => {
31
+ document.body.style.overflow = "";
32
+ document.removeEventListener("keydown", onKeyDown);
33
+ });
34
+ return () => {
35
+ if (!props.open)
36
+ return null;
37
+ return h("div", { class: "st-modal__backdrop" }, h("section", {
38
+ ...attrs,
39
+ ref: dialogRef,
40
+ class: classNames("st-modal", props.class),
41
+ role: "dialog",
42
+ "aria-modal": "true",
43
+ "aria-label": props.title || "Modal",
44
+ tabindex: -1,
45
+ }, [
46
+ h("div", { class: "st-modal__header" }, [
47
+ props.title ? h("h2", { class: "st-modal__title" }, props.title) : null,
48
+ h("button", {
49
+ type: "button",
50
+ class: "st-modal__close",
51
+ "aria-label": "Close",
52
+ onClick: () => emit("close"),
53
+ }, "x"),
54
+ ]),
55
+ props.description
56
+ ? h("p", { class: "st-modal__description" }, props.description)
57
+ : null,
58
+ h("div", { class: "st-modal__body" }, slots.default?.()),
59
+ slots.footer
60
+ ? h("div", { class: "st-modal__footer" }, slots.footer())
61
+ : null,
62
+ ]));
63
+ };
64
+ },
65
+ });
66
+ //# sourceMappingURL=Modal.js.map