@returnless/focus-ui 0.0.2 → 0.0.4

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 (381) hide show
  1. package/dist/build-utils/generate-component-meta.d.ts +12 -0
  2. package/dist/build-utils/update-component-list.d.ts +1 -0
  3. package/dist/components/Accordion/Accordion.vue.d.ts +39 -0
  4. package/dist/components/Accordion/AccordionContent.vue.d.ts +9 -0
  5. package/dist/components/Accordion/AccordionItem.vue.d.ts +9 -0
  6. package/dist/components/Accordion/AccordionTrigger.vue.d.ts +9 -0
  7. package/dist/components/Accordion/index.d.ts +4 -0
  8. package/dist/components/ActionList/ActionList.vue.d.ts +9 -0
  9. package/dist/components/ActionList/ActionListBody.vue.d.ts +9 -0
  10. package/dist/components/ActionList/ActionListItem.vue.d.ts +48 -0
  11. package/dist/components/ActionList/ActionListSection.vue.d.ts +9 -0
  12. package/dist/components/ActionList/ActionListTrigger.vue.d.ts +9 -0
  13. package/dist/components/ActionList/index.d.ts +5 -0
  14. package/dist/components/Alert/Alert.vue.d.ts +57 -0
  15. package/dist/components/Alert/AlertDescription.vue.d.ts +9 -0
  16. package/dist/components/Alert/AlertTitle.vue.d.ts +9 -0
  17. package/dist/components/Alert/DismissableAlertButton.vue.d.ts +36 -0
  18. package/dist/components/Alert/index.d.ts +4 -0
  19. package/dist/components/Alert/types.d.ts +1 -0
  20. package/dist/components/AlertDialog/AlertDialog.vue.d.ts +42 -0
  21. package/dist/components/AlertDialog/AlertDialogActionButton.vue.d.ts +39 -0
  22. package/dist/components/AlertDialog/AlertDialogCancelButton.vue.d.ts +9 -0
  23. package/dist/components/AlertDialog/AlertDialogContent.vue.d.ts +9 -0
  24. package/dist/components/AlertDialog/AlertDialogDescription.vue.d.ts +9 -0
  25. package/dist/components/AlertDialog/AlertDialogFooter.vue.d.ts +9 -0
  26. package/dist/components/AlertDialog/AlertDialogHeader.vue.d.ts +9 -0
  27. package/dist/components/AlertDialog/AlertDialogTitle.vue.d.ts +9 -0
  28. package/dist/components/AlertDialog/index.d.ts +8 -0
  29. package/dist/components/AspectRatio/AspectRatio.vue.d.ts +38 -0
  30. package/dist/components/AspectRatio/index.d.ts +1 -0
  31. package/dist/components/Avatar/Avatar.vue.d.ts +59 -0
  32. package/dist/components/Avatar/index.d.ts +1 -0
  33. package/dist/components/Badge/Badge.vue.d.ts +49 -0
  34. package/dist/components/Badge/BadgeContent.vue.d.ts +9 -0
  35. package/dist/components/Badge/BadgeIcon.vue.d.ts +9 -0
  36. package/dist/components/Badge/index.d.ts +3 -0
  37. package/dist/components/BarChart/BarChart.vue.d.ts +27 -0
  38. package/dist/components/BarChart/BarChartContainer.vue.d.ts +9 -0
  39. package/dist/components/BarChart/BarChartStacked.vue.d.ts +27 -0
  40. package/dist/components/BarChart/index.d.ts +3 -0
  41. package/dist/components/Breadcrumbs/Breadcrumb.vue.d.ts +9 -0
  42. package/dist/components/Breadcrumbs/BreadcrumbItem.vue.d.ts +9 -0
  43. package/dist/components/Breadcrumbs/BreadcrumbLink.vue.d.ts +9 -0
  44. package/dist/components/Breadcrumbs/BreadcrumbList.vue.d.ts +9 -0
  45. package/dist/components/Breadcrumbs/BreadcrumbPage.vue.d.ts +9 -0
  46. package/dist/components/Breadcrumbs/BreadcrumbSeparator.vue.d.ts +2 -0
  47. package/dist/components/Breadcrumbs/index.d.ts +7 -0
  48. package/dist/components/Button/Button.vue.d.ts +57 -0
  49. package/dist/components/Button/ButtonContent.vue.d.ts +9 -0
  50. package/dist/components/Button/ButtonIcon.vue.d.ts +45 -0
  51. package/dist/components/Button/index.d.ts +4 -0
  52. package/dist/components/Button/types.d.ts +21 -0
  53. package/dist/components/ButtonGroup/ButtonGroup.vue.d.ts +9 -0
  54. package/dist/components/ButtonGroup/index.d.ts +1 -0
  55. package/dist/components/Card/Card.vue.d.ts +9 -0
  56. package/dist/components/Card/CardDescription.vue.d.ts +9 -0
  57. package/dist/components/Card/CardFooter.vue.d.ts +9 -0
  58. package/dist/components/Card/CardHeader.vue.d.ts +9 -0
  59. package/dist/components/Card/CardHelp.vue.d.ts +22 -0
  60. package/dist/components/Card/CardSection.vue.d.ts +36 -0
  61. package/dist/components/Card/CardTitle.vue.d.ts +9 -0
  62. package/dist/components/Card/index.d.ts +7 -0
  63. package/dist/components/Checkbox/Checkbox.vue.d.ts +50 -0
  64. package/dist/components/Checkbox/index.d.ts +1 -0
  65. package/dist/components/DatePicker/DatePicker.vue.d.ts +35 -0
  66. package/dist/components/DatePicker/DatePickerCard.vue.d.ts +9 -0
  67. package/dist/components/DatePicker/index.d.ts +2 -0
  68. package/dist/components/DescriptionList/DescriptionList.vue.d.ts +38 -0
  69. package/dist/components/DescriptionList/DescriptionListDescription.vue.d.ts +9 -0
  70. package/dist/components/DescriptionList/DescriptionListItem.vue.d.ts +9 -0
  71. package/dist/components/DescriptionList/DescriptionListTerm.vue.d.ts +9 -0
  72. package/dist/components/DescriptionList/index.d.ts +4 -0
  73. package/dist/components/Dialog/index.d.ts +0 -0
  74. package/dist/components/DropZone/DropZone.vue.d.ts +45 -0
  75. package/dist/components/DropZone/index.d.ts +1 -0
  76. package/dist/components/EmptyState/EmptyState.vue.d.ts +9 -0
  77. package/dist/components/EmptyState/EmptyStateActions.vue.d.ts +9 -0
  78. package/dist/components/EmptyState/EmptyStateContent.vue.d.ts +9 -0
  79. package/dist/components/EmptyState/EmptyStateDescription.vue.d.ts +9 -0
  80. package/dist/components/EmptyState/EmptyStateTitle.vue.d.ts +9 -0
  81. package/dist/components/EmptyState/index.d.ts +5 -0
  82. package/dist/components/Feed/Feed.vue.d.ts +9 -0
  83. package/dist/components/Feed/FeedItem.vue.d.ts +9 -0
  84. package/dist/components/Feed/FeedItemBlock.vue.d.ts +9 -0
  85. package/dist/components/Feed/FeedItemDateIndicator.vue.d.ts +9 -0
  86. package/dist/components/Feed/FeedItemIcon.vue.d.ts +32 -0
  87. package/dist/components/Feed/FeedItemSimple.vue.d.ts +9 -0
  88. package/dist/components/Feed/index.d.ts +6 -0
  89. package/dist/components/FileUploadButton/FileUploadButton.vue.d.ts +50 -0
  90. package/dist/components/FileUploadButton/index.d.ts +1 -0
  91. package/dist/components/Form/Form.vue.d.ts +56 -0
  92. package/dist/components/Form/index.d.ts +1 -0
  93. package/dist/components/FormLayout/FormLayout.vue.d.ts +36 -0
  94. package/dist/components/FormLayout/index.d.ts +1 -0
  95. package/dist/components/Heading/Heading.vue.d.ts +46 -0
  96. package/dist/components/Heading/index.d.ts +2 -0
  97. package/dist/components/Heading/types.d.ts +2 -0
  98. package/dist/components/Image/Image.vue.d.ts +45 -0
  99. package/dist/components/Image/index.d.ts +1 -0
  100. package/dist/components/InertiaLink/InertiaLink.vue.d.ts +19 -0
  101. package/dist/components/InertiaLink/index.d.ts +1 -0
  102. package/dist/components/InlineError/InlineError.vue.d.ts +21 -0
  103. package/dist/components/InlineError/index.d.ts +1 -0
  104. package/dist/components/InputLabel/InputLabel.vue.d.ts +39 -0
  105. package/dist/components/InputLabel/index.d.ts +1 -0
  106. package/dist/components/KPICard/KPICard.vue.d.ts +36 -0
  107. package/dist/components/KPICard/KPICardSection.vue.d.ts +24 -0
  108. package/dist/components/KPICard/index.d.ts +2 -0
  109. package/dist/components/Legend/Legend.vue.d.ts +9 -0
  110. package/dist/components/Legend/LegendItem.vue.d.ts +22 -0
  111. package/dist/components/Legend/index.d.ts +2 -0
  112. package/dist/components/Link/Link.vue.d.ts +49 -0
  113. package/dist/components/Link/index.d.ts +1 -0
  114. package/dist/components/Navigation/Navigation.vue.d.ts +9 -0
  115. package/dist/components/Navigation/NavigationItem.vue.d.ts +49 -0
  116. package/dist/components/Navigation/NavigationSecondarySection.vue.d.ts +9 -0
  117. package/dist/components/Navigation/NavigationSection.vue.d.ts +38 -0
  118. package/dist/components/Navigation/index.d.ts +4 -0
  119. package/dist/components/Page/Page.vue.d.ts +9 -0
  120. package/dist/components/Page/PageBody.vue.d.ts +26 -0
  121. package/dist/components/Page/PageDescription.vue.d.ts +9 -0
  122. package/dist/components/Page/PageHeader.vue.d.ts +43 -0
  123. package/dist/components/Page/PageTitle.vue.d.ts +9 -0
  124. package/dist/components/Page/index.d.ts +5 -0
  125. package/dist/components/Pagination/Pagination.vue.d.ts +9 -0
  126. package/dist/components/Pagination/PaginationNextButton.vue.d.ts +2 -0
  127. package/dist/components/Pagination/PaginationPreviousButton.vue.d.ts +2 -0
  128. package/dist/components/Pagination/index.d.ts +3 -0
  129. package/dist/components/PinInput/PinInput.vue.d.ts +33 -0
  130. package/dist/components/PinInput/index.d.ts +1 -0
  131. package/dist/components/Popover/Popover.vue.d.ts +25 -0
  132. package/dist/components/Popover/PopoverBody.vue.d.ts +9 -0
  133. package/dist/components/Popover/PopoverTrigger.vue.d.ts +9 -0
  134. package/dist/components/Popover/index.d.ts +3 -0
  135. package/dist/components/Popper/Popper.vue.d.ts +29 -0
  136. package/dist/components/Popper/PopperBody.vue.d.ts +9 -0
  137. package/dist/components/Popper/PopperTrigger.vue.d.ts +9 -0
  138. package/dist/components/Popper/index.d.ts +3 -0
  139. package/dist/components/ProgressBar/ProgressBar.vue.d.ts +50 -0
  140. package/dist/components/ProgressBar/ProgressBarIndicator.vue.d.ts +9 -0
  141. package/dist/components/ProgressBar/index.d.ts +2 -0
  142. package/dist/components/RadioButton/RadioButton.vue.d.ts +45 -0
  143. package/dist/components/RadioButton/index.d.ts +1 -0
  144. package/dist/components/ResourceList/ResourceList.vue.d.ts +9 -0
  145. package/dist/components/ResourceList/ResourceListItem.vue.d.ts +9 -0
  146. package/dist/components/ResourceList/ResourceListItemContent.vue.d.ts +9 -0
  147. package/dist/components/ResourceList/index.d.ts +3 -0
  148. package/dist/components/Select/Select.vue.d.ts +77 -0
  149. package/dist/components/Select/SelectGroup.vue.d.ts +24 -0
  150. package/dist/components/Select/SelectOption.vue.d.ts +24 -0
  151. package/dist/components/Select/index.d.ts +3 -0
  152. package/dist/{types/components/Accordion/Accordion.vue.d.ts → components/Separator/Separator.vue.d.ts} +7 -8
  153. package/dist/components/Separator/index.d.ts +1 -0
  154. package/dist/components/Spinner/Spinner.vue.d.ts +38 -0
  155. package/dist/components/Spinner/index.d.ts +1 -0
  156. package/dist/components/StatusIndicator/StatusIndicator.vue.d.ts +42 -0
  157. package/dist/components/StatusIndicator/index.d.ts +1 -0
  158. package/dist/components/Stepper/Stepper.vue.d.ts +43 -0
  159. package/dist/components/Stepper/index.d.ts +1 -0
  160. package/dist/components/Tabs/TabTrigger.vue.d.ts +38 -0
  161. package/dist/components/Tabs/Tabs.vue.d.ts +9 -0
  162. package/dist/components/Tabs/index.d.ts +2 -0
  163. package/dist/components/Tag/Tag.vue.d.ts +42 -0
  164. package/dist/components/Tag/index.d.ts +1 -0
  165. package/dist/components/TextField/TextField.vue.d.ts +95 -0
  166. package/dist/components/TextField/TextFieldIcon.vue.d.ts +15 -0
  167. package/dist/components/TextField/TextFieldPasswordIcon.vue.d.ts +2 -0
  168. package/dist/components/TextField/TextFieldSearchIcon.vue.d.ts +2 -0
  169. package/dist/components/TextField/index.d.ts +1 -0
  170. package/dist/components/TextStyle/TextStyle.vue.d.ts +24 -0
  171. package/dist/components/TextStyle/index.d.ts +1 -0
  172. package/dist/components/Toast/DismissToastAction.vue.d.ts +35 -0
  173. package/dist/components/Toast/Toast.vue.d.ts +49 -0
  174. package/dist/components/Toast/ToastGroup.vue.d.ts +9 -0
  175. package/dist/components/Toast/index.d.ts +2 -0
  176. package/dist/components/Toggle/Toggle.vue.d.ts +48 -0
  177. package/dist/components/Toggle/index.d.ts +1 -0
  178. package/dist/components/Tooltip/Tooltip.vue.d.ts +24 -0
  179. package/dist/components/Tooltip/index.d.ts +1 -0
  180. package/dist/components/TopBar/TopBar.vue.d.ts +9 -0
  181. package/dist/components/TopBar/TopBarLogo.vue.d.ts +2 -0
  182. package/dist/components/TopBar/TopBarNavigation.vue.d.ts +9 -0
  183. package/dist/components/TopBar/TopBarNavigationItem.vue.d.ts +9 -0
  184. package/dist/components/TopBar/TopBarSearch.vue.d.ts +2 -0
  185. package/dist/components/TopBar/TopBarUserMenu.vue.d.ts +2 -0
  186. package/dist/components/TopBar/index.d.ts +6 -0
  187. package/dist/components/VisuallyHidden/VisuallyHidden.vue.d.ts +9 -0
  188. package/dist/components/VisuallyHidden/index.d.ts +1 -0
  189. package/dist/components/index.d.ts +51 -0
  190. package/dist/components/types.d.ts +5 -0
  191. package/dist/composables/index.d.ts +4 -0
  192. package/dist/composables/useTailwindColor.d.ts +8 -0
  193. package/dist/composables/useTheme.d.ts +12 -0
  194. package/dist/composables/useToastNotifications.d.ts +13 -0
  195. package/dist/composables/useUniqueId.d.ts +1 -0
  196. package/dist/focus-ui.js +10851 -0
  197. package/dist/focus-ui.umd.cjs +26 -0
  198. package/dist/index.d.ts +1 -0
  199. package/dist/style.css +1 -0
  200. package/package.json +8 -6
  201. package/src/build-utils/generate-component-meta.ts +5 -1
  202. package/src/build-utils/update-component-list.ts +1 -1
  203. package/src/components/Accordion/AccordionContent.vue +34 -5
  204. package/src/components/Accordion/AccordionItem.vue +5 -2
  205. package/src/components/Accordion/AccordionTrigger.vue +5 -2
  206. package/src/components/Accordion/README.md +1 -1
  207. package/src/components/ActionList/ActionList.vue +9 -0
  208. package/src/components/ActionList/ActionListBody.vue +11 -0
  209. package/src/components/ActionList/ActionListItem.vue +37 -0
  210. package/src/components/ActionList/ActionListSection.vue +7 -0
  211. package/src/components/ActionList/ActionListTrigger.vue +9 -0
  212. package/src/components/ActionList/README.md +113 -0
  213. package/src/components/ActionList/index.ts +5 -0
  214. package/src/components/Alert/Alert.vue +23 -10
  215. package/src/components/Alert/AlertDescription.vue +13 -1
  216. package/src/components/Alert/AlertTitle.vue +1 -1
  217. package/src/components/Alert/DismissableAlertButton.vue +6 -4
  218. package/src/components/Alert/README.md +31 -2
  219. package/src/components/Alert/index.ts +2 -0
  220. package/src/components/Alert/types.ts +1 -0
  221. package/src/components/AlertDialog/AlertDialog.vue +10 -1
  222. package/src/components/AlertDialog/AlertDialogActionButton.vue +9 -2
  223. package/src/components/AlertDialog/AlertDialogCancelButton.vue +1 -1
  224. package/src/components/AlertDialog/AlertDialogDescription.vue +7 -1
  225. package/src/components/AlertDialog/AlertDialogTitle.vue +11 -3
  226. package/src/components/AlertDialog/README.md +15 -16
  227. package/src/components/AspectRatio/AspectRatio.vue +19 -0
  228. package/src/components/AspectRatio/README.md +36 -0
  229. package/src/components/AspectRatio/index.ts +1 -0
  230. package/src/components/Avatar/Avatar.vue +57 -13
  231. package/src/components/Avatar/README.md +3 -9
  232. package/src/components/Badge/Badge.vue +1 -1
  233. package/src/components/Badge/README.md +9 -9
  234. package/src/components/BarChart/BarChart.vue +80 -0
  235. package/src/components/{MetricCard/MetricCardHeader.vue → BarChart/BarChartContainer.vue} +1 -1
  236. package/src/components/BarChart/BarChartStacked.vue +93 -0
  237. package/src/components/BarChart/README.md +83 -0
  238. package/src/components/BarChart/index.ts +3 -0
  239. package/src/components/Breadcrumbs/Breadcrumb.vue +7 -0
  240. package/src/components/Breadcrumbs/BreadcrumbEllipsis.vue +12 -0
  241. package/src/components/{MetricCard/MetricCardValue.vue → Breadcrumbs/BreadcrumbItem.vue} +2 -2
  242. package/src/components/Breadcrumbs/BreadcrumbLink.vue +13 -0
  243. package/src/components/Breadcrumbs/BreadcrumbList.vue +8 -0
  244. package/src/components/Breadcrumbs/BreadcrumbPage.vue +13 -0
  245. package/src/components/Breadcrumbs/BreadcrumbSeparator.vue +12 -0
  246. package/src/components/Breadcrumbs/README.md +91 -0
  247. package/src/components/Breadcrumbs/index.ts +7 -0
  248. package/src/components/Button/Button.vue +53 -41
  249. package/src/components/Button/ButtonContent.vue +1 -1
  250. package/src/components/Button/ButtonIcon.vue +28 -3
  251. package/src/components/Button/README.md +32 -29
  252. package/src/components/Button/index.ts +2 -0
  253. package/src/components/Button/types.ts +30 -0
  254. package/src/components/ButtonGroup/README.md +1 -1
  255. package/src/components/Card/CardHelp.vue +23 -0
  256. package/src/components/Card/CardSection.vue +17 -2
  257. package/src/components/Card/CardTitle.vue +6 -3
  258. package/src/components/Card/README.md +97 -10
  259. package/src/components/Card/index.ts +2 -1
  260. package/src/components/Checkbox/Checkbox.vue +29 -5
  261. package/src/components/Checkbox/README.md +34 -5
  262. package/src/components/DatePicker/DatePicker.vue +7 -27
  263. package/src/components/DatePicker/README.md +1 -1
  264. package/src/components/DescriptionList/DescriptionList.vue +1 -1
  265. package/src/components/DescriptionList/DescriptionListItem.vue +1 -1
  266. package/src/components/DescriptionList/README.md +2 -2
  267. package/src/components/Dialog/README.md +2 -0
  268. package/src/components/Dialog/index.ts +0 -0
  269. package/src/components/DropZone/DropZone.vue +105 -0
  270. package/src/components/DropZone/README.md +48 -0
  271. package/src/components/DropZone/index.ts +1 -0
  272. package/src/components/EmptyState/README.md +1 -1
  273. package/src/components/Feed/FeedItem.vue +4 -1
  274. package/src/components/Feed/FeedItemBlock.vue +4 -1
  275. package/src/components/Feed/README.md +1 -1
  276. package/src/components/FileUploadButton/FileUploadButton.vue +62 -0
  277. package/src/components/FileUploadButton/index.ts +1 -0
  278. package/src/components/Form/Form.vue +7 -2
  279. package/src/components/Form/README.md +1 -1
  280. package/src/components/FormLayout/FormLayout.vue +20 -2
  281. package/src/components/FormLayout/README.md +39 -1
  282. package/src/components/Heading/Heading.vue +32 -0
  283. package/src/components/Heading/index.ts +3 -0
  284. package/src/components/Heading/types.ts +3 -0
  285. package/src/components/Image/Image.vue +30 -0
  286. package/src/components/Image/index.ts +1 -0
  287. package/src/components/InertiaLink/InertiaLink.vue +11 -0
  288. package/src/components/InertiaLink/index.ts +1 -0
  289. package/src/components/InlineError/InlineError.vue +21 -0
  290. package/src/components/InlineError/README.md +63 -0
  291. package/src/components/InlineError/index.ts +1 -0
  292. package/src/components/KPICard/KPICard.vue +28 -0
  293. package/src/components/KPICard/KPICardSection.vue +30 -0
  294. package/src/components/KPICard/README.md +124 -0
  295. package/src/components/KPICard/index.ts +2 -0
  296. package/src/components/Legend/Legend.vue +7 -0
  297. package/src/components/Legend/LegendItem.vue +34 -0
  298. package/src/components/Legend/README.md +32 -0
  299. package/src/components/Legend/index.ts +2 -0
  300. package/src/components/Link/Link.vue +4 -4
  301. package/src/components/Link/README.md +1 -1
  302. package/src/components/Navigation/Navigation.vue +2 -2
  303. package/src/components/Navigation/NavigationItem.vue +14 -10
  304. package/src/components/Navigation/NavigationSecondarySection.vue +12 -0
  305. package/src/components/Navigation/NavigationSection.vue +1 -1
  306. package/src/components/Navigation/README.md +10 -15
  307. package/src/components/Navigation/index.ts +1 -0
  308. package/src/components/Page/Page.vue +2 -33
  309. package/src/components/Page/PageBody.vue +36 -0
  310. package/src/components/Page/PageTitle.vue +6 -3
  311. package/src/components/Page/README.md +45 -39
  312. package/src/components/Page/index.ts +1 -0
  313. package/src/components/Pagination/README.md +1 -1
  314. package/src/components/PinInput/README.md +1 -1
  315. package/src/components/Popover/Popover.vue +18 -0
  316. package/src/components/Popover/PopoverBody.vue +11 -0
  317. package/src/components/Popover/PopoverTrigger.vue +9 -0
  318. package/src/components/Popover/README.md +34 -6
  319. package/src/components/Popover/index.ts +3 -0
  320. package/src/components/Popper/Popper.vue +91 -0
  321. package/src/components/Popper/PopperBody.vue +19 -0
  322. package/src/components/Popper/PopperTrigger.vue +14 -0
  323. package/src/components/Popper/README.md +42 -0
  324. package/src/components/Popper/index.ts +3 -0
  325. package/src/components/ProgressBar/ProgressBar.vue +24 -6
  326. package/src/components/RadioButton/README.md +1 -1
  327. package/src/components/RadioButton/RadioButton.vue +3 -2
  328. package/src/components/ResourceList/README.md +160 -0
  329. package/src/components/ResourceList/ResourceList.vue +7 -0
  330. package/src/components/ResourceList/ResourceListItem.vue +7 -0
  331. package/src/components/ResourceList/ResourceListItemContent.vue +7 -0
  332. package/src/components/ResourceList/index.ts +3 -0
  333. package/src/components/Select/README.md +1 -1
  334. package/src/components/Select/Select.vue +1 -1
  335. package/src/components/Separator/README.md +5 -1
  336. package/src/components/Separator/Separator.vue +20 -3
  337. package/src/components/Spinner/README.md +1 -1
  338. package/src/components/Spinner/Spinner.vue +10 -4
  339. package/src/components/StatusIndicator/README.md +2 -2
  340. package/src/components/StatusIndicator/StatusIndicator.vue +11 -5
  341. package/src/components/Stepper/README.md +38 -0
  342. package/src/components/Stepper/Stepper.vue +104 -0
  343. package/src/components/Stepper/index.ts +1 -0
  344. package/src/components/Tabs/README.md +1 -1
  345. package/src/components/Tabs/TabTrigger.vue +5 -4
  346. package/src/components/Tabs/Tabs.vue +4 -1
  347. package/src/components/Tag/Tag.vue +45 -0
  348. package/src/components/Tag/index.ts +1 -0
  349. package/src/components/TextField/README.md +24 -6
  350. package/src/components/TextField/TextField.vue +25 -5
  351. package/src/components/TextField/TextFieldIcon.vue +19 -0
  352. package/src/components/TextStyle/README.md +1 -1
  353. package/src/components/TextStyle/TextStyle.vue +1 -1
  354. package/src/components/Toast/DismissToastAction.vue +1 -1
  355. package/src/components/Toast/README.md +1 -1
  356. package/src/components/Toggle/README.md +1 -1
  357. package/src/components/Toggle/Toggle.vue +8 -5
  358. package/src/components/Tooltip/README.md +1 -1
  359. package/src/components/Tooltip/Tooltip.vue +15 -41
  360. package/src/components/TopBar/TopBarSearch.vue +2 -2
  361. package/src/components/index.ts +68 -12
  362. package/src/components/types.ts +5 -0
  363. package/src/composables/useTheme.ts +13 -1
  364. package/src/composables/useToastNotifications.ts +1 -1
  365. package/src/composables/useUniqueId.ts +4 -3
  366. package/src/index.css +17 -13
  367. package/src/index.ts +0 -11
  368. package/dist/focus-ui.es.js +0 -33
  369. package/dist/types/components/Accordion/index.d.ts +0 -2
  370. package/dist/types/components/index.d.ts +0 -1
  371. package/dist/types/index.d.ts +0 -7
  372. package/src/components/CategoryBar/CategoryBar.vue +0 -25
  373. package/src/components/CategoryBar/CategoryBarItem.vue +0 -34
  374. package/src/components/CategoryBar/README.md +0 -17
  375. package/src/components/CategoryBar/index.ts +0 -2
  376. package/src/components/MetricCard/MetricCard.vue +0 -11
  377. package/src/components/MetricCard/MetricCardLabel.vue +0 -9
  378. package/src/components/MetricCard/MetricCardSection.vue +0 -11
  379. package/src/components/MetricCard/README.md +0 -53
  380. package/src/components/MetricCard/index.ts +0 -5
  381. /package/dist/{types/components/Accordion/AccordionItem.vue.d.ts → components/Breadcrumbs/BreadcrumbEllipsis.vue.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ export * from './components';
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ ._visuallyHidden_o6qmb_6{position:absolute!important;width:1px!important;height:1px!important;margin:0!important;padding:0!important;overflow:hidden!important;clip-path:inset(50%)!important;border:0!important;white-space:nowrap!important}.spinner[data-v-07df7777]{display:inline-flex;animation:spinner-07df7777 .75s linear infinite}path[data-v-07df7777]{fill-opacity:0}.head[data-v-07df7777]{stroke:#000}@keyframes spinner-07df7777{0%{transform:rotate(0)}to{transform:rotate(1turn)}}input[type=number][data-v-7be10f19]::-webkit-inner-spin-button,input[type=number][data-v-7be10f19]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@returnless/focus-ui",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "license": "MIT",
5
+ "type": "module",
5
6
  "scripts": {
6
- "build": "rimraf dist && vue-tsc && vite build",
7
+ "build": "rimraf dist && vite build && vue-tsc --emitDeclarationOnly",
7
8
  "docs:dev": "npm run docs:generate-component-list && npm run docs:generate-component-meta && vitepress dev docs",
8
9
  "docs:generate-component-list": "npx tsx ./src/build-utils/update-component-list.ts",
9
10
  "docs:generate-component-meta": "npx tsx ./src/build-utils/generate-component-meta.ts",
@@ -40,12 +41,13 @@
40
41
  "src",
41
42
  "dist"
42
43
  ],
43
- "module": "./dist/focus-ui.es.js",
44
+ "module": "./dist/focus-ui.js",
44
45
  "exports": {
45
46
  ".": {
46
- "types": "./dist/types/index.d.ts",
47
- "import": "./dist/focus-ui.es.js"
48
- }
47
+ "import": "./dist/focus-ui.js",
48
+ "require": "./dist/focus-ui.umd.cjs"
49
+ },
50
+ "./style.css": "./dist/style.css"
49
51
  },
50
52
  "repository": {
51
53
  "type": "git",
@@ -1,9 +1,13 @@
1
1
  import fs, { existsSync, mkdirSync } from 'fs';
2
- import { join, parse, resolve } from 'path';
2
+ import { dirname, join, parse, resolve } from 'path';
3
+ import { fileURLToPath } from 'url';
3
4
  import fg from 'fast-glob';
4
5
  import type { ComponentMeta, MetaCheckerOptions } from 'vue-component-meta';
5
6
  import { createComponentMetaChecker } from 'vue-component-meta';
6
7
 
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = dirname(__filename);
10
+
7
11
  export interface ComponentApiProps {
8
12
  name: ComponentMeta['props'][number]['name'];
9
13
  description: ComponentMeta['props'][number]['description'];
@@ -22,7 +22,7 @@ const componentsFileContent = `\
22
22
  * Generated on: ${new Date().toDateString()}
23
23
  */
24
24
 
25
- module.exports = [
25
+ export default [
26
26
  ${componentList
27
27
  .map((component: string) => ` { text: '${component}', link: 'components/${component}' },`)
28
28
  .join('\n')}
@@ -2,13 +2,42 @@
2
2
  import { inject } from 'vue';
3
3
 
4
4
  const accordionItemActive = inject<boolean>('accordionItemActive');
5
+ const accordionItemId = inject<string>('accordionItemId')!;
6
+
7
+ function beforeEnter(element: Element): void {
8
+ (element as HTMLElement).style.height = '0';
9
+ }
10
+
11
+ function enter(element: Element): void {
12
+ (element as HTMLElement).style.height = element.scrollHeight + 'px';
13
+ }
14
+
15
+ function beforeLeave(element: Element): void {
16
+ (element as HTMLElement).style.height = element.scrollHeight + 'px';
17
+ }
18
+
19
+ function leave(element: Element): void {
20
+ (element as HTMLElement).style.height = '0';
21
+ }
5
22
  </script>
6
23
 
7
24
  <template>
8
- <div
9
- :class="{ 'hidden': !accordionItemActive }"
10
- class="py-3"
25
+ <transition
26
+ name="accordion"
27
+ @enter="enter"
28
+ @leave="leave"
29
+ @before-enter="beforeEnter"
30
+ @before-leave="beforeLeave"
11
31
  >
12
- <slot />
13
- </div>
32
+ <div
33
+ v-show="accordionItemActive"
34
+ :id="accordionItemId"
35
+ class="transition-all duration-200 ease-in-out overflow-hidden"
36
+ role="region"
37
+ >
38
+ <div class="py-3">
39
+ <slot />
40
+ </div>
41
+ </div>
42
+ </transition>
14
43
  </template>
@@ -2,7 +2,7 @@
2
2
  import { computed, inject, provide, Ref } from 'vue';
3
3
  import { useUniqueId } from '../../composables';
4
4
 
5
- const accordionItemId = useUniqueId('accordion-item');
5
+ const accordionItemId = useUniqueId('accordionItem');
6
6
  const activeAccordionItem = inject<Ref<string>>('activeAccordionItem')!;
7
7
 
8
8
  const accordionItemActive = computed((): boolean => activeAccordionItem.value === accordionItemId);
@@ -12,7 +12,10 @@ provide('accordionItemActive', accordionItemActive);
12
12
  </script>
13
13
 
14
14
  <template>
15
- <div class="border-b">
15
+ <div
16
+ class="border-b"
17
+ :aria-expanded="accordionItemActive"
18
+ >
16
19
  <slot />
17
20
  </div>
18
21
  </template>
@@ -3,17 +3,20 @@ import { inject, Ref } from 'vue';
3
3
  import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/vue/16/solid';
4
4
  import { TextStyle } from '../TextStyle';
5
5
 
6
- const activeAccordionItem = inject<Ref<string>>('activeAccordionItem')!;
6
+ const activeAccordionItem = inject<Ref<string | null>>('activeAccordionItem')!;
7
7
  const accordionItemId = inject<string>('accordionItemId')!;
8
8
  const accordionItemActive = inject<boolean>('accordionItemActive');
9
9
 
10
10
  function toggleAccordionItem(): void {
11
- activeAccordionItem.value = accordionItemId;
11
+ activeAccordionItem.value = activeAccordionItem.value !== accordionItemId
12
+ ? accordionItemId
13
+ : null;
12
14
  }
13
15
  </script>
14
16
 
15
17
  <template>
16
18
  <button
19
+ :aria-controls="accordionItemId"
17
20
  class="w-full flex flex-1 items-center justify-between group"
18
21
  @click="toggleAccordionItem"
19
22
  >
@@ -34,7 +34,7 @@ Use to display a list of questions and answers. The user can click on a question
34
34
 
35
35
  ```js-vue
36
36
  <script lang="ts" setup>
37
- import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from 'focus-ui';
37
+ import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from '@returnless/focus-ui';
38
38
  </script>
39
39
 
40
40
  <template>
@@ -0,0 +1,9 @@
1
+ <script lang="ts" setup>
2
+ import { Popover } from '../Popover';
3
+ </script>
4
+
5
+ <template>
6
+ <Popover alignment="start">
7
+ <slot />
8
+ </Popover>
9
+ </template>
@@ -0,0 +1,11 @@
1
+ <script lang="ts" setup>
2
+ import { PopoverBody } from '../Popover';
3
+ </script>
4
+
5
+ <template>
6
+ <PopoverBody>
7
+ <div class="min-w-[200px]">
8
+ <slot />
9
+ </div>
10
+ </PopoverBody>
11
+ </template>
@@ -0,0 +1,37 @@
1
+ <script lang="ts" setup>
2
+ import { Button, ButtonContent, ButtonVariant } from '../Button';
3
+
4
+ withDefaults(defineProps<{
5
+ /** Whether the action list item is active. */
6
+ active?: boolean;
7
+
8
+ /** The icon to display next to the action list item. */
9
+ icon: () => void | null;
10
+
11
+ variant?: ButtonVariant;
12
+ }>(), {
13
+ active: false,
14
+ variant: 'ghost',
15
+ });
16
+ </script>
17
+
18
+ <template>
19
+ <li class="block">
20
+ <Button
21
+ :active="active"
22
+ :variant="variant"
23
+ full-width
24
+ role="menuitem"
25
+ size="small"
26
+ >
27
+ <component
28
+ :is="icon"
29
+ v-if="icon"
30
+ class="w-4 h-4"
31
+ />
32
+ <ButtonContent>
33
+ <slot />
34
+ </ButtonContent>
35
+ </Button>
36
+ </li>
37
+ </template>
@@ -0,0 +1,7 @@
1
+ <script lang="ts" setup></script>
2
+
3
+ <template>
4
+ <ul class="[&:not(:last-child)]:border-b p-1.5 space-y-0.5">
5
+ <slot />
6
+ </ul>
7
+ </template>
@@ -0,0 +1,9 @@
1
+ <script lang="ts" setup>
2
+ import { PopoverTrigger } from '../Popover';
3
+ </script>
4
+
5
+ <template>
6
+ <PopoverTrigger>
7
+ <slot />
8
+ </PopoverTrigger>
9
+ </template>
@@ -0,0 +1,113 @@
1
+ <script lang="ts" setup>
2
+ import {
3
+ ActionList,
4
+ ActionListBody,
5
+ ActionListItem,
6
+ ActionListSection,
7
+ ActionListTrigger,
8
+ Button,
9
+ } from '../../src/components';
10
+ import { Link } from '@inertiajs/vue3';
11
+ import api from '../component-meta/ActionList.json';
12
+ import { TrashIcon, PencilIcon, ArrowUpTrayIcon, ArrowDownTrayIcon } from '@heroicons/vue/16/solid';
13
+ </script>
14
+
15
+ # Action list
16
+
17
+ Action lists render a list of actions or selectable options. This component is usually placed inside a popover container
18
+ to create a dropdown menu or let users select from a list of options.
19
+
20
+ <ComponentApi :api="api" />
21
+
22
+ ## Usage
23
+
24
+ <ComponentWrapper>
25
+ <ActionList>
26
+ <ActionListTrigger>
27
+ <Button disclosure variant="ghost">Action trigger</Button>
28
+ </ActionListTrigger>
29
+ <ActionListBody>
30
+ <ActionListSection label="File options">
31
+ <ActionListItem :icon="ArrowDownTrayIcon" href="#" as="link">
32
+ Import file
33
+ </ActionListItem>
34
+ <ActionListItem :icon="ArrowUpTrayIcon" active as="button">
35
+ Export file
36
+ </ActionListItem>
37
+ </ActionListSection>
38
+ <ActionListSection label="Bulk actions">
39
+ <ActionListItem :icon="PencilIcon" as="button">
40
+ Edit
41
+ </ActionListItem>
42
+ <ActionListItem :icon="TrashIcon" as="button" variant="destructive">
43
+ Delete
44
+ </ActionListItem>
45
+ </ActionListSection>
46
+ </ActionListBody>
47
+ </ActionList>
48
+ </ComponentWrapper>
49
+
50
+ ```js-vue
51
+ <script lang="ts" setup>
52
+ import {
53
+ ActionList,
54
+ ActionListBody,
55
+ ActionListItem,
56
+ ActionListSection,
57
+ ActionListTrigger,
58
+ Button,
59
+ } from '@returnless/focus-ui';
60
+ import { TrashIcon, PencilIcon, ArrowUpTrayIcon, ArrowDownTrayIcon } from '@heroicons/vue/16/solid';
61
+ </script>
62
+
63
+ <template>
64
+ <ActionList>
65
+ <ActionListTrigger>
66
+ <Button disclosure variant="ghost">Action trigger</Button>
67
+ </ActionListTrigger>
68
+ <ActionListBody>
69
+ <ActionListSection label="File options">
70
+ <ActionListItem :icon="ArrowDownTrayIcon" href="#" as="link">
71
+ Import file
72
+ </ActionListItem>
73
+ <ActionListItem :icon="ArrowUpTrayIcon" active as="button">
74
+ Export file
75
+ </ActionListItem>
76
+ </ActionListSection>
77
+ <ActionListSection label="Bulk actions">
78
+ <ActionListItem :icon="PencilIcon" as="button">
79
+ Edit
80
+ </ActionListItem>
81
+ <ActionListItem :icon="TrashIcon" as="button" variant="destructive">
82
+ Delete
83
+ </ActionListItem>
84
+ </ActionListSection>
85
+ </ActionListBody>
86
+ </ActionList>
87
+ </template>
88
+ ```
89
+
90
+ ## Best practices
91
+
92
+ Action lists should:
93
+
94
+ - Be used for secondary or less important information and actions since they're hidden until users expose them by
95
+ opening a popover
96
+ - Contain actions that are related to each other
97
+
98
+ ## Content guidelines
99
+
100
+ ### Action lists
101
+
102
+ Each item in an action list should be clear and predictable. Users should be able to anticipate what will happen
103
+ when they click on an action.
104
+
105
+ Each item in an action list should always lead with a strong verb that encourages action. To provide enough context
106
+ use the {verb}+{noun} format unless the action is clear with a single verb.
107
+
108
+ Each item in an action list should be scannable avoiding unnecessary words and articles such as "the", "an", or "a".
109
+
110
+ ## Accessibility
111
+
112
+ Items in an action list are organized as list items (`<li>`) in an unordered list (`<ul>`) and are conveyed as a
113
+ group of related elements to assistive technology users. Each item is implemented as a button.
@@ -0,0 +1,5 @@
1
+ export { default as ActionList } from './ActionList.vue';
2
+ export { default as ActionListBody } from './ActionListBody.vue';
3
+ export { default as ActionListItem } from './ActionListItem.vue';
4
+ export { default as ActionListSection } from './ActionListSection.vue';
5
+ export { default as ActionListTrigger } from './ActionListTrigger.vue';
@@ -1,14 +1,19 @@
1
1
  <script lang="ts" setup>
2
- import { computed, ref } from 'vue';
3
- import DismissableAlertButton from './DismissableAlertButton.vue';
2
+ import { computed, provide, ref } from 'vue';
3
+ import { AlertVariant } from './types';
4
+ import DismissibleAlertButton from './DismissableAlertButton.vue';
4
5
 
5
6
  const props = withDefaults(defineProps<{
7
+ /** Whether the alert is flush to the borders. */
8
+ flush?: boolean;
9
+
6
10
  /** Whether the alert can be dismissed. */
7
11
  dismissible?: boolean;
8
12
 
9
13
  /** The variant of the alert. */
10
- variant?: 'default' | 'destructive';
14
+ variant?: AlertVariant;
11
15
  }>(), {
16
+ flush: false,
12
17
  dismissible: true,
13
18
  variant: 'default',
14
19
  });
@@ -18,16 +23,23 @@ const emits = defineEmits<{
18
23
  dismiss: [];
19
24
  }>();
20
25
 
26
+ provide('alertVariant', props.variant);
27
+
21
28
  const alertDismissed = ref(false);
22
29
 
23
- const classList = computed(() => {
24
- return {
25
- 'border-red-500 text-red-900': props.variant === 'destructive',
26
- 'text-gray-900': props.variant === 'default',
27
- };
30
+ const classList = computed((): Record<string, boolean>[] => {
31
+ return [
32
+ { 'bg-white': props.variant === 'default' },
33
+ { 'bg-red-50 border-red-500/40 text-red-800': props.variant === 'destructive' },
34
+ { 'bg-yellow-50 border-yellow-500/40 text-yellow-800': props.variant === 'warning' },
35
+
36
+ { 'border rounded px-4 py-3': !props.flush },
37
+ { 'border-y px-6 py-3 mt-6': props.flush },
38
+ ];
28
39
  });
29
40
 
30
41
  const role = computed(() => props.variant === 'destructive' ? 'alert' : 'status');
42
+ const liveRegion = computed(() => props.variant === 'destructive' ? 'assertive' : 'polite');
31
43
 
32
44
  function dismissAlert(): void {
33
45
  emits('dismiss');
@@ -41,12 +53,13 @@ function dismissAlert(): void {
41
53
  v-if="! alertDismissed"
42
54
  :class="classList"
43
55
  :role="role"
44
- class="relative rounded border bg-white px-4 py-3 shadow-sm"
56
+ :aria-live="liveRegion"
57
+ class="relative shadow-sm"
45
58
  tabindex="0"
46
59
  >
47
60
  <slot />
48
61
 
49
- <DismissableAlertButton
62
+ <DismissibleAlertButton
50
63
  v-if="dismissible"
51
64
  :variant="variant"
52
65
  @dismiss="dismissAlert"
@@ -1,8 +1,20 @@
1
1
  <script setup lang="ts">
2
+ import { computed, inject } from 'vue';
3
+ import { AlertVariant } from './types';
4
+
5
+ const alertVariant = inject<AlertVariant>('alertVariant');
6
+
7
+ const classList = computed((): Record<string, boolean> => {
8
+ return {
9
+ 'text-red-900/80': alertVariant === 'destructive',
10
+ 'text-yellow-900/80': alertVariant === 'warning',
11
+ 'text-gray-900/80': alertVariant === 'default',
12
+ };
13
+ });
2
14
  </script>
3
15
 
4
16
  <template>
5
- <div>
17
+ <div :class="classList">
6
18
  <slot />
7
19
  </div>
8
20
  </template>
@@ -3,7 +3,7 @@ import { TextStyle } from '../TextStyle';
3
3
  </script>
4
4
 
5
5
  <template>
6
- <h5 class="mb-1 leading-none">
6
+ <h5 class="mb-4 leading-none">
7
7
  <TextStyle variant="strong">
8
8
  <slot />
9
9
  </TextStyle>
@@ -1,10 +1,11 @@
1
1
  <script setup lang="ts">
2
2
  import { XMarkIcon } from '@heroicons/vue/16/solid';
3
3
  import { computed } from 'vue';
4
+ import { AlertVariant } from './types';
4
5
 
5
6
  const props = withDefaults(defineProps<{
6
7
  /** The variant of the alert. */
7
- variant?: 'default' | 'destructive';
8
+ variant?: AlertVariant;
8
9
  }>(), {
9
10
  variant: 'default',
10
11
  });
@@ -13,9 +14,10 @@ defineEmits<{
13
14
  dismiss: [];
14
15
  }>();
15
16
 
16
- const classList = computed(() => {
17
+ const classList = computed((): Record<string, boolean> => {
17
18
  return {
18
- 'hover:bg-red-200': props.variant === 'destructive',
19
+ 'hover:bg-red-900/20': props.variant === 'destructive',
20
+ 'hover:bg-yellow-900/20': props.variant === 'warning',
19
21
  'hover:bg-slate-200': props.variant === 'default',
20
22
  };
21
23
  });
@@ -23,9 +25,9 @@ const classList = computed(() => {
23
25
 
24
26
  <template>
25
27
  <button
28
+ :class="classList"
26
29
  aria-label="Dismiss notification"
27
30
  class="absolute top-2 right-2 flex h-5 w-5 items-center justify-center rounded"
28
- :class="classList"
29
31
  type="button"
30
32
  @click="$emit('dismiss')"
31
33
  >
@@ -29,7 +29,7 @@ for users feedback. Default alerts contain lower priority information and should
29
29
 
30
30
  ```js-vue
31
31
  <script lang="ts" setup>
32
- import { Alert, AlertDescription, AlertTitle } from 'focus-ui';
32
+ import { Alert, AlertDescription, AlertTitle } from '@returnless/focus-ui';
33
33
  </script>
34
34
 
35
35
  <template>
@@ -58,7 +58,7 @@ alert that warns users about a critical system failure. Destructive alerts conta
58
58
 
59
59
  ```js-vue
60
60
  <script lang="ts" setup>
61
- import { Alert, AlertDescription, AlertTitle } from 'focus-ui';
61
+ import { Alert, AlertDescription, AlertTitle } from '@returnless/focus-ui';
62
62
  </script>
63
63
 
64
64
  <template>
@@ -71,6 +71,35 @@ import { Alert, AlertDescription, AlertTitle } from 'focus-ui';
71
71
  </template>
72
72
  ```
73
73
 
74
+ ### Warning
75
+
76
+ Use to display information that needs attention or that user need to take action on. Seeing these banners can be
77
+ stressful for user so be cautious about using them.
78
+
79
+ <ComponentWrapper>
80
+ <Alert variant="warning">
81
+ <AlertTitle>Before you can purchase a shipping label, this change needs to be made:</AlertTitle>
82
+ <AlertDescription>
83
+ The name of the city you’re shipping to has characters that aren’t allowed. City name can only include spaces and hyphens.
84
+ </AlertDescription>
85
+ </Alert>
86
+ </ComponentWrapper>
87
+
88
+ ```js-vue
89
+ <script lang="ts" setup>
90
+ import { Alert, AlertDescription, AlertTitle } from '@returnless/focus-ui';
91
+ </script>
92
+
93
+ <template>
94
+ <Alert variant="warning">
95
+ <AlertTitle>Before you can purchase a shipping label, this change needs to be made:</AlertTitle>
96
+ <AlertDescription>
97
+ The name of the city you’re shipping to has characters that aren’t allowed. City name can only include spaces and hyphens.
98
+ </AlertDescription>
99
+ </Alert>
100
+ </template>
101
+ ```
102
+
74
103
  ## Best practices
75
104
 
76
105
  Alerts should:
@@ -1,3 +1,5 @@
1
+ export { type AlertVariant } from './types';
2
+
1
3
  export { default as Alert } from './Alert.vue';
2
4
  export { default as AlertDescription } from './AlertDescription.vue';
3
5
  export { default as AlertTitle } from './AlertTitle.vue';
@@ -0,0 +1 @@
1
+ export type AlertVariant = 'default' | 'destructive' | 'warning';
@@ -1,5 +1,6 @@
1
1
  <script lang="ts" setup>
2
2
  import { onMounted, onUnmounted, provide } from 'vue';
3
+ import { useUniqueId } from '../../composables';
3
4
 
4
5
  withDefaults(defineProps<{
5
6
  /** Whether the alert dialog is open. */
@@ -30,13 +31,21 @@ onUnmounted((): void => {
30
31
  document.removeEventListener('keydown', onKeyDown);
31
32
  });
32
33
 
34
+ const alertDialogLabelledBy = useUniqueId('alertDialogLabel');
35
+ const alertDialogDescribedBy = useUniqueId('alertDialogDescription');
36
+
33
37
  provide('cancelAlertDialog', cancelAlertDialog);
38
+ provide('alertDialogLabelledBy', alertDialogLabelledBy);
39
+ provide('alertDialogDescribedBy', alertDialogDescribedBy);
34
40
  </script>
35
41
 
36
42
  <template>
37
43
  <div
38
44
  v-if="open"
39
- class="fixed top-0 left-0 z-10 h-screen w-screen bg-slate-500/50 text-sm"
45
+ :aria-describedby="alertDialogDescribedBy"
46
+ :aria-labelledby="alertDialogLabelledBy"
47
+ class="fixed top-0 left-0 z-10 h-screen w-screen bg-slate-500/50 px-2 text-sm"
48
+ role="alertdialog"
40
49
  >
41
50
  <div class="flex min-h-full items-center justify-center">
42
51
  <slot />
@@ -1,9 +1,16 @@
1
1
  <script lang="ts" setup>
2
- import { Button } from '../Button';
2
+ import { type ButtonVariant, Button } from '../Button';
3
+
4
+ withDefaults(defineProps<{
5
+ /** The variant of the button. */
6
+ variant?: ButtonVariant;
7
+ }>(), {
8
+ variant: 'primary',
9
+ });
3
10
  </script>
4
11
 
5
12
  <template>
6
- <Button variant="primary">
13
+ <Button :variant="variant">
7
14
  <slot />
8
15
  </Button>
9
16
  </template>
@@ -2,7 +2,7 @@
2
2
  import { Button } from '../Button';
3
3
  import { inject } from 'vue';
4
4
 
5
- const cancelAlertDialog = inject('cancelAlertDialog');
5
+ const cancelAlertDialog = inject<() => void>('cancelAlertDialog');
6
6
  </script>
7
7
 
8
8
  <template>
@@ -1,10 +1,16 @@
1
1
  <script lang="ts" setup>
2
2
  import { TextStyle } from '../TextStyle';
3
+ import { inject } from 'vue';
4
+
5
+ const alertDialogDescribedBy = inject<string>('alertDialogLabelledBy')!;
3
6
  </script>
4
7
 
5
8
  <template>
6
9
  <p>
7
- <TextStyle variant="subdued">
10
+ <TextStyle
11
+ :id="alertDialogDescribedBy"
12
+ variant="subdued"
13
+ >
8
14
  <slot />
9
15
  </TextStyle>
10
16
  </p>