@dpa-id-components/dpa-shared-components 20.0.6 → 20.0.8

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 (276) hide show
  1. package/dist/_plugin-vue_export-helper-BTgDAbhb.js +8 -0
  2. package/dist/{activities-BdgBJTuA.js → activities-BxyZQp7R.js} +5 -4
  3. package/dist/{ai-CRKea4DD.js → ai-CvQQ6hUw.js} +5 -4
  4. package/dist/{alert-73LhoiBH.js → alert-BeP6nqRf.js} +5 -4
  5. package/dist/{alert-fill-CtKKZrZO.js → alert-fill-BHn_Z4vo.js} +5 -4
  6. package/dist/{alert-octagon-BFcCcEQq.js → alert-octagon-Cd-_T4ON.js} +5 -4
  7. package/dist/{apps-BcyMOR4e.js → apps-CtY6nO4d.js} +5 -4
  8. package/dist/{archive-CMuBva_u.js → archive-DmV6cQ50.js} +5 -4
  9. package/dist/{arrow-down-WJdG351R.js → arrow-down-Cfib5c-0.js} +5 -4
  10. package/dist/{arrow-left-H5cUyllC.js → arrow-left-CFSY8V--.js} +5 -4
  11. package/dist/{arrow-nav-left-CvZfWsrk.js → arrow-nav-left-BRYPr4oj.js} +5 -4
  12. package/dist/{arrow-nav-right-CUN92-9v.js → arrow-nav-right-PqR7W08e.js} +5 -4
  13. package/dist/{arrow-right-Dai72xIp.js → arrow-right-ByFSLzJb.js} +5 -4
  14. package/dist/{arrow-up-D9lAqZA8.js → arrow-up-DfhQKYKi.js} +5 -4
  15. package/dist/{arrowhead-left-SJXGjhbq.js → arrowhead-left-BxBCmhZy.js} +5 -4
  16. package/dist/{arrowhead-right-BhZbSG2r.js → arrowhead-right-D6Hk6b6x.js} +5 -4
  17. package/dist/{arrowhead-top-BEqJzGKA.js → arrowhead-top-wkcSxZmc.js} +5 -4
  18. package/dist/{atmo-CZCUnUYN.js → atmo-CqanVC-e.js} +5 -4
  19. package/dist/{audio-CnSs3MVV.js → audio-DLQLFJ3x.js} +5 -4
  20. package/dist/{audio-circled-Cku32Yiu.js → audio-circled-amRbTaDb.js} +5 -4
  21. package/dist/{audio-filled-CVOOatbn.js → audio-filled-C7m_-PTb.js} +5 -4
  22. package/dist/{bag-Cx7iHwPQ.js → bag-Br7SrnRJ.js} +5 -4
  23. package/dist/{bell-fill-D-dFYpLV.js → bell-fill-DHRfa4cC.js} +5 -4
  24. package/dist/{bell-CwI9Vb62.js → bell-kOosto6B.js} +5 -4
  25. package/dist/{book-B0ailmur.js → book-D0Xsp8As.js} +5 -4
  26. package/dist/{bookmark-CLdYV4f9.js → bookmark-DNJYJq0J.js} +5 -4
  27. package/dist/{bookmark-fill-wdEWET5w.js → bookmark-fill-DbkrXmPt.js} +5 -4
  28. package/dist/{bookmark-outlined-Dd7PyuTU.js → bookmark-outlined-D41PleT8.js} +5 -4
  29. package/dist/{box-CfW1bBum.js → box-Bw_tD7Nd.js} +5 -4
  30. package/dist/{bulb-K8jFZmfR.js → bulb-tXJKei6j.js} +5 -4
  31. package/dist/{call-CquDMWn4.js → call-BdzulBfZ.js} +5 -4
  32. package/dist/{camera-CB6fKe82.js → camera-D8so0Wqg.js} +5 -4
  33. package/dist/{check-BBMwdc1e.js → check-CTBqwPMY.js} +5 -4
  34. package/dist/{checklist-Df5fhkTx.js → checklist-CVBb2iLT.js} +5 -4
  35. package/dist/{checkmark-Bk3th8aU.js → checkmark-BkBvk5FP.js} +5 -4
  36. package/dist/{checkmark-double-JBEWrsse.js → checkmark-double-9tbcPPxC.js} +5 -4
  37. package/dist/{chevron-down-Sq-Omasi.js → chevron-down-BcjUrqWQ.js} +5 -4
  38. package/dist/{chevron-left-ka3w4LWP.js → chevron-left-DdChgK6Q.js} +5 -4
  39. package/dist/{chevron-right-DmvJo-Nn.js → chevron-right-BR3OVahz.js} +5 -4
  40. package/dist/{chevron-up-DakU_cBn.js → chevron-up-R3uiTZDq.js} +5 -4
  41. package/dist/{clipboard-DyMMjIVc.js → clipboard-BFi2VbBj.js} +5 -4
  42. package/dist/{clock-CtkOHG1g.js → clock-C3D4TRfx.js} +5 -4
  43. package/dist/{close-DjFVZt2u.js → close-CbIMNMG_.js} +5 -4
  44. package/dist/{cloud-save-acm4FjOr.js → cloud-save-CQCTGXxN.js} +5 -4
  45. package/dist/{code-BJgY-9g3.js → code-ChJ2qMcZ.js} +5 -4
  46. package/dist/{collapse-CalQPYhZ.js → collapse-DISUbIVr.js} +5 -4
  47. package/dist/{color-palette-DRN9z5Vz.js → color-palette-B4pqFFIE.js} +5 -4
  48. package/dist/{comment-CWIccK83.js → comment-CzF3hkpf.js} +5 -4
  49. package/dist/{comment-fill-BVza8Jz-.js → comment-fill-Dc-swkQu.js} +5 -4
  50. package/dist/{copy-Bk8cFSbJ.js → copy-CywrUiK2.js} +5 -4
  51. package/dist/{copy-link-DOfXU7RD.js → copy-link-DqcNlpUK.js} +5 -4
  52. package/dist/{delete-DsugmFOu.js → delete-Bl6aSpBn.js} +5 -4
  53. package/dist/{download-BeWUwd0y.js → download-BdnIOaET.js} +5 -4
  54. package/dist/{dpa-id-Ly2f4-Kw.js → dpa-id-4HKRxUEF.js} +5 -4
  55. package/dist/dpa-shared-components.js +4230 -4194
  56. package/dist/{edit-D69xOR64.js → edit-KtC1G-_s.js} +5 -4
  57. package/dist/{edit-add-C5WDTIjN.js → edit-add-DjUq6zXq.js} +5 -4
  58. package/dist/{eil-Cb4014LI.js → eil-CPA4kVQM.js} +5 -4
  59. package/dist/{emoji-D72nL3d1.js → emoji-C2BmBFxC.js} +5 -4
  60. package/dist/{emoji-add-BrzLAJ3E.js → emoji-add-NHqne_6m.js} +5 -4
  61. package/dist/{envelope-kda2hV7_.js → envelope-BDSOA_J7.js} +5 -4
  62. package/dist/{event-8phFSDv9.js → event-Bo_sb247.js} +5 -4
  63. package/dist/{expand-BtinEH3A.js → expand-BK_uzKmx.js} +5 -4
  64. package/dist/{external-link-CNYm-GlZ.js → external-link-BPYyKPIa.js} +5 -4
  65. package/dist/{file-BOEeXxXs.js → file-B97T9C2M.js} +5 -4
  66. package/dist/{file-pdf-DJaalWDa.js → file-pdf-lFk-5brY.js} +5 -4
  67. package/dist/{filter-BjVZbhND.js → filter-BIJnBkRa.js} +5 -4
  68. package/dist/{filter-outline-BoEVSezK.js → filter-outline-ChWKUbSt.js} +5 -4
  69. package/dist/{flag-DgOeofob.js → flag-DNP4L-y-.js} +5 -4
  70. package/dist/{flag-fill-BVhHWhiP.js → flag-fill-C3XgapYW.js} +5 -4
  71. package/dist/{flag-filled-CTSdIBWY.js → flag-filled-CdVD_QxY.js} +5 -4
  72. package/dist/{flag-outline-BgYyW8nX.js → flag-outline-ChGgKT6P.js} +5 -4
  73. package/dist/{flags-CMwN4aB0.js → flags-G-Nbo5ST.js} +5 -4
  74. package/dist/{flash-BhAeSS1k.js → flash-9TBwsdOx.js} +5 -4
  75. package/dist/{folder-add-Ya2GcM-i.js → folder-add-B-l2wmwY.js} +5 -4
  76. package/dist/{folder-fill-Ca6bXRw-.js → folder-fill-CnEmPx6c.js} +5 -4
  77. package/dist/{folder-filled-BBR8bJQL.js → folder-filled-zwvSw3Sd.js} +5 -4
  78. package/dist/{folder-D79ZQ9RA.js → folder-s6NWFqjh.js} +5 -4
  79. package/dist/{gallery-CsCgah-Q.js → gallery-B8I5lJ51.js} +5 -4
  80. package/dist/{graphic-circled-BYvbiPFv.js → graphic-circled-BtuNYmPh.js} +5 -4
  81. package/dist/{graphic-CZ1VEgbk.js → graphic-d-_5qmyr.js} +5 -4
  82. package/dist/{graphic-filled-B640yZW1.js → graphic-filled-DXQvxz4s.js} +5 -4
  83. package/dist/{graphics-DOD41Q2b.js → graphics-eur3JZ_7.js} +5 -4
  84. package/dist/{grid-1-reX52mXX.js → grid-1-DOm2nS5Y.js} +5 -4
  85. package/dist/{grid-2-biGoKZET.js → grid-2-D9XOIyFO.js} +5 -4
  86. package/dist/{grid-3-B8ccFfrT.js → grid-3-CR1E0m9u.js} +5 -4
  87. package/dist/{grid-4-CqTE5F_g.js → grid-4-QKKeiUGc.js} +5 -4
  88. package/dist/{grid-6-DbKV_eBX.js → grid-6-C5bCbXur.js} +5 -4
  89. package/dist/{grid-9-CTSAZ4UT.js → grid-9-FNxsRYRg.js} +5 -4
  90. package/dist/{grid-masonry-9-CKioEJuZ.js → grid-masonry-9-CxLBpKCz.js} +5 -4
  91. package/dist/{grid-masonry-B593q1l6.js → grid-masonry-CuwXzdZ6.js} +5 -4
  92. package/dist/{help-DiKackos.js → help-DkjfD818.js} +5 -4
  93. package/dist/{home-Do4YF4Dd.js → home-njHAfgwc.js} +5 -4
  94. package/dist/{image focus point-C0vK6FzN.js → image focus point-D_hUlTWi.js } +5 -4
  95. package/dist/{image-BWGxTMMW.js → image-C2RlXeDP.js} +5 -4
  96. package/dist/{impact-high-DdaQcLOu.js → impact-high-C0SywXT1.js} +5 -4
  97. package/dist/{impact-low-zbvAdhZ1.js → impact-low-yDd0jU4k.js} +5 -4
  98. package/dist/{impact-medium-BhfzSQAK.js → impact-medium-Cc_nInN7.js} +5 -4
  99. package/dist/{impact-very-high-qcPfp2yw.js → impact-very-high-DiOgG_Ji.js} +5 -4
  100. package/dist/{impact-very-low-Dz86WvEI.js → impact-very-low-CYW4RgJO.js} +5 -4
  101. package/dist/{info-9llr8kqZ.js → info-NBFIJ3YI.js} +5 -4
  102. package/dist/{info-fill-DvyOjyX-.js → info-fill-DlgeXJbI.js} +5 -4
  103. package/dist/{info-filled-c2KLORVR.js → info-filled-Btao1rhT.js} +5 -4
  104. package/dist/{label-DRVpH3Zf.js → label-CTr8hHIv.js} +5 -4
  105. package/dist/{label-filled-CTReJE3_.js → label-filled-CnTpOqvX.js} +5 -4
  106. package/dist/{language-CaK3obhv.js → language-UqPESR_Z.js} +5 -4
  107. package/dist/{latest-Bh5w8w2R.js → latest-Cq12zjMs.js} +5 -4
  108. package/dist/{lightbulb-D55X29rD.js → lightbulb-BpK9qU_u.js} +5 -4
  109. package/dist/{list-Dm0wrpKz.js → list-DKcsNf15.js} +5 -4
  110. package/dist/{list-search-BWPAGqHW.js → list-search-BzZuYf_P.js} +5 -4
  111. package/dist/{lock-Bair96dL.js → lock-BFfHVSog.js} +5 -4
  112. package/dist/{lock-filled-BNZJ0waC.js → lock-filled-C5I60_d0.js} +5 -4
  113. package/dist/{mail-Mn2wq1aV.js → mail-pagEqHtM.js} +5 -4
  114. package/dist/{map-D1irc7wN.js → map-BMOQGCce.js} +5 -4
  115. package/dist/{map-outline-B00hms9f.js → map-outline-uvK8An7m.js} +5 -4
  116. package/dist/{menu-CVkyyeDW.js → menu-j4cvnLP8.js} +5 -4
  117. package/dist/{minus-B89-4r0W.js → minus-CGsJ-jkT.js} +5 -4
  118. package/dist/{more-horizontal-BOq3UKiU.js → more-horizontal-CDZjG5h8.js} +5 -4
  119. package/dist/{more-vertical-CJOSDU6R.js → more-vertical-YUehtvol.js} +5 -4
  120. package/dist/{move-B7GHCUbm.js → move-CiU3PwqY.js} +5 -4
  121. package/dist/{move-up-down-Ch8L5sZC.js → move-up-down-H-qHtTwO.js} +5 -4
  122. package/dist/{navigation-BTddw232.js → navigation-DmqoQINO.js} +5 -4
  123. package/dist/{note-BvnqgyHg.js → note-BZ3q-D4L.js} +5 -4
  124. package/dist/{offline-YOyb2Tfr.js → offline-CLl0pwpv.js} +5 -4
  125. package/dist/{package-Ckm27fjL.js → package-iJOVTpPH.js} +5 -4
  126. package/dist/{paper-plane-BttsgNjZ.js → paper-plane-DcYms0cj.js} +5 -4
  127. package/dist/{paperplane-BqxbaXXQ.js → paperplane-ed0y9oB6.js} +5 -4
  128. package/dist/{pause-Du648vV9.js → pause-COAxeJRm.js} +5 -4
  129. package/dist/{pause-circle-C0ua224p.js → pause-circle-ab18LhX3.js} +5 -4
  130. package/dist/{pdf-Ddg3TU0B.js → pdf-BweFqxRM.js} +5 -4
  131. package/dist/{pen-CQhBRQVg.js → pen-CmBOMgX_.js} +5 -4
  132. package/dist/{pen-check-BZme3WMH.js → pen-check-BApB0Zi2.js} +5 -4
  133. package/dist/{people-COXR5CoD.js → people-D07vIou7.js} +5 -4
  134. package/dist/{phone-BauDKm-k.js → phone-B9TyVbBj.js} +5 -4
  135. package/dist/{picture-C3UMrriC.js → picture-DJRwU5Gl.js} +5 -4
  136. package/dist/{picture-circled-DBlYCjnY.js → picture-circled-DYsNZNYH.js} +5 -4
  137. package/dist/{picture-filled-O2z4--dy.js → picture-filled-CQYRN3Fa.js} +5 -4
  138. package/dist/{picture-gallery-C9c2zcxU.js → picture-gallery-BgWYQrqC.js} +5 -4
  139. package/dist/{pin-BMODlehD.js → pin-BlBzA8ov.js} +5 -4
  140. package/dist/{planning-Dtx9YzGr.js → planning-BhE-A4FO.js} +5 -4
  141. package/dist/{play-C5cuKZV0.js → play-BXy8WcYq.js} +5 -4
  142. package/dist/{play-circle-CL5tEg9v.js → play-circle-B88YxOh-.js} +5 -4
  143. package/dist/{play-fill-DSV0DW-T.js → play-fill-nWPoHjD3.js} +5 -4
  144. package/dist/{plus-DCPlMZXW.js → plus-CmEv_iHA.js} +5 -4
  145. package/dist/{plus-circle-DjR4qFC0.js → plus-circle-DKWKVMiq.js} +5 -4
  146. package/dist/{print-DXBUPTFP.js → print-ChdLXKHj.js} +5 -4
  147. package/dist/{refresh-BcwO7Jw6.js → refresh-C7k19NtO.js} +5 -4
  148. package/dist/{reset-B1yR8nzO.js → reset-CpXqaOj5.js} +5 -4
  149. package/dist/{responsive-DGZkLyEW.js → responsive-CKNXzAo1.js} +5 -4
  150. package/dist/{rubix-thema-CCIj5kn3.js → rubix-thema-Cmk-5-bm.js} +5 -4
  151. package/dist/{save-DvQxrVk-.js → save-BX3-Z5qP.js} +5 -4
  152. package/dist/{saved-search-BDu5PZQb.js → saved-search-Be8D9tJ9.js} +5 -4
  153. package/dist/{saved-search-fill-BffgdGo8.js → saved-search-fill-CPoyaMRU.js} +5 -4
  154. package/dist/{search-CXfaMRZ9.js → search-BeIwOzJl.js} +5 -4
  155. package/dist/{settings-D7xABZln.js → settings-CLChu_zl.js} +5 -4
  156. package/dist/{share-alternative-C4HzRC3B.js → share-alternative-BD-WQYvk.js} +5 -4
  157. package/dist/{share-BQm_gGv6.js → share-j6ezShBH.js} +5 -4
  158. package/dist/{sidebar-CwFxeKOh.js → sidebar-CPe20Xae.js} +5 -4
  159. package/dist/{sidebar-fill-BcquZLLX.js → sidebar-fill-CBSJYVQQ.js} +5 -4
  160. package/dist/{slack-CIhJ-_vs.js → slack-BjvLF16S.js} +5 -4
  161. package/dist/{slider-config-5UwhkENY.js → slider-config-CTzwxojK.js} +5 -4
  162. package/dist/{spellcheck-ClGD2dI8.js → spellcheck-thqRUMx9.js} +5 -4
  163. package/dist/{spinner-Ds5nod21.js → spinner-dy09pOOm.js} +5 -4
  164. package/dist/src/components/DpaMediaItem/DpaMediaItem.spec.ts +123 -0
  165. package/dist/src/components/DpaMediaItem/DpaMediaItem.stories.ts +140 -0
  166. package/dist/src/components/UiAutocomplete/UiAutocomplete.spec.ts +39 -0
  167. package/dist/src/components/UiAutocomplete/UiAutocomplete.stories.ts +46 -0
  168. package/dist/src/components/UiBadge/UiBadge.spec.ts +32 -0
  169. package/dist/src/components/UiBadge/UiBadge.stories.ts +80 -0
  170. package/dist/src/components/UiButton/UiButton.spec.ts +136 -0
  171. package/dist/src/components/UiButton/UiButton.stories.ts +57 -0
  172. package/dist/src/components/UiButtonGroup/UiButtonGroup.spec.ts +16 -0
  173. package/dist/src/components/UiButtonGroup/UiButtonGroup.stories.ts +50 -0
  174. package/dist/src/components/UiCard/UiCard.spec.ts +16 -0
  175. package/dist/src/components/UiCard/UiCard.stories.ts +30 -0
  176. package/dist/src/components/UiCheckBoxGroup/UiCheckBoxGroup.spec.ts +67 -0
  177. package/dist/src/components/UiCheckBoxGroup/UiCheckBoxGroup.stories.ts +59 -0
  178. package/dist/src/components/UiCheckbox/UiCheckbox.spec.ts +173 -0
  179. package/dist/src/components/UiCheckbox/UiCheckbox.stories.ts +99 -0
  180. package/dist/src/components/UiChip/UiChip.spec.ts +75 -0
  181. package/dist/src/components/UiChip/UiChip.stories.ts +39 -0
  182. package/dist/src/components/UiCollapseNavigation/UiCollapseNavigation.spec.ts +21 -0
  183. package/dist/src/components/UiCollapseNavigation/UiCollapseNavigation.stories.ts +66 -0
  184. package/dist/src/components/UiColorPicker/UiColorPicker.spec.ts +52 -0
  185. package/dist/src/components/UiColorPicker/UiColorPicker.stories.ts +44 -0
  186. package/dist/src/components/UiDatePicker/UiDatePicker.spec.ts +335 -0
  187. package/dist/src/components/UiDatePicker/UiDatePicker.stories.ts +273 -0
  188. package/dist/src/components/UiDialog/UiDialog.spec.ts +160 -0
  189. package/dist/src/components/UiDialog/UiDialog.stories.ts +79 -0
  190. package/dist/src/components/UiFilterBadge/UiFilterBadge.spec.ts +17 -0
  191. package/dist/src/components/UiFilterBadge/UiFilterBadge.stories.ts +44 -0
  192. package/dist/src/components/UiFilterBadgeButton/UiFilterBadgeButton.spec.ts +41 -0
  193. package/dist/src/components/UiFilterBadgeButton/UiFilterBadgeButton.stories.ts +55 -0
  194. package/dist/src/components/UiFilterButton/UiFilterButton.spec.ts +79 -0
  195. package/dist/src/components/UiFilterButton/UiFilterButton.stories.ts +88 -0
  196. package/dist/src/components/UiIcon/IconOverview.stories.vue +23 -0
  197. package/dist/src/components/UiIcon/UiIcon.spec.ts +56 -0
  198. package/dist/src/components/UiIcon/UiIcon.stories.ts +48 -0
  199. package/dist/src/components/UiIconButton/UiIconButton.spec.ts +78 -0
  200. package/dist/src/components/UiIconButton/UiIconButton.stories.ts +63 -0
  201. package/dist/src/components/UiInfoContent/UiInfoContent.spec.ts +43 -0
  202. package/dist/src/components/UiInfoContent/UiInfoContent.stories.ts +56 -0
  203. package/dist/src/components/UiInput/UiInput.spec.ts +239 -0
  204. package/dist/src/components/UiInput/UiInput.stories.ts +127 -0
  205. package/dist/src/components/UiList/UiList.spec.ts +22 -0
  206. package/dist/src/components/UiList/UiList.stories.ts +64 -0
  207. package/dist/src/components/UiListItem/UiListItem.spec.ts +99 -0
  208. package/dist/src/components/UiListItem/UiListItem.stories.ts +83 -0
  209. package/dist/src/components/UiMenu/UiMenu.spec.ts +319 -0
  210. package/dist/src/components/UiMenu/UiMenu.stories.ts +634 -0
  211. package/dist/src/components/UiOverlay/UiOverlay.spec.ts +16 -0
  212. package/dist/src/components/UiOverlay/UiOverlay.stories.ts +22 -0
  213. package/dist/src/components/UiOverlayMenu/UiOverlayMenu.spec.ts +32 -0
  214. package/dist/src/components/UiOverlayMenu/UiOverlayMenu.stories.ts +39 -0
  215. package/dist/src/components/UiRadioInputGroup/UiRadioInputGroup.spec.ts +66 -0
  216. package/dist/src/components/UiRadioInputGroup/UiRadioInputGroup.stories.ts +70 -0
  217. package/dist/src/components/UiSearchBar/UiSearchBar.spec.ts +82 -0
  218. package/dist/src/components/UiSearchBar/UiSearchBar.stories.ts +191 -0
  219. package/dist/src/components/UiSearchInput/UiSearchInput.spec.ts +45 -0
  220. package/dist/src/components/UiSearchInput/UiSearchInput.stories.ts +61 -0
  221. package/dist/src/components/UiSection/UiSection.spec.ts +49 -0
  222. package/dist/src/components/UiSection/UiSection.stories.ts +61 -0
  223. package/dist/src/components/UiSectionDivider/UiSectionDivider.spec.ts +19 -0
  224. package/dist/src/components/UiSectionDivider/UiSectionDivider.stories.ts +48 -0
  225. package/dist/src/components/UiSelect/UIiSelect.spec.ts +102 -0
  226. package/dist/src/components/UiSelect/UiSelect.stories.ts +94 -0
  227. package/dist/src/components/UiSimpleInput/UiSimpleInput.spec.ts +58 -0
  228. package/dist/src/components/UiSimpleInput/UiSimpleInput.stories.ts +53 -0
  229. package/dist/src/components/UiSkeletonBox/UiSkeletonBox.spec.ts +15 -0
  230. package/dist/src/components/UiSkeletonBox/UiSkeletonBox.stories.ts +33 -0
  231. package/dist/src/components/UiSnackbar/UiSnackbar.spec.ts +63 -0
  232. package/dist/src/components/UiSnackbar/UiSnackbar.stories.ts +65 -0
  233. package/dist/src/components/UiSpinner/UiSpinner.spec.ts +30 -0
  234. package/dist/src/components/UiSpinner/UiSpinner.stories.ts +48 -0
  235. package/dist/src/components/UiTextButton/UiTextButton.spec.ts +99 -0
  236. package/dist/src/components/UiTextButton/UiTextButton.stories.ts +60 -0
  237. package/dist/src/components/UiToggleButton/UiToggleButton.spec.ts +89 -0
  238. package/dist/src/components/UiToggleButton/UiToggleButton.stories.ts +102 -0
  239. package/dist/src/components/UiTooltip/UiTooltip.spec.ts +139 -0
  240. package/dist/src/components/UiTooltip/UiTooltip.stories.ts +107 -0
  241. package/dist/src/compositions/useBreakpoints/UseBreakpoints.stories.ts +23 -0
  242. package/dist/src/compositions/useBreakpoints/UseBreakpoints.stories.vue +12 -0
  243. package/dist/src/utils/index.spec.ts +12 -0
  244. package/dist/{standard-view-hRZ2UVqX.js → standard-view-dE52BPUm.js} +5 -4
  245. package/dist/{star-fill-B10bjB48.js → star-fill-DIXwg3gQ.js} +5 -4
  246. package/dist/{star-filled-BISydRRE.js → star-filled-BqrpxMqq.js} +5 -4
  247. package/dist/{star-DC_rTR6e.js → star-uv_o0S9H.js} +5 -4
  248. package/dist/{stop-D6NZK5EY.js → stop-CrmQCpqp.js} +5 -4
  249. package/dist/{story-B3kiPLs0.js → story-CUBTcSOv.js} +5 -4
  250. package/dist/{sync-B5v_sNSB.js → sync-CPmOdu5b.js} +5 -4
  251. package/dist/{tasks-COvP7FSq.js → tasks-TKH8SUBe.js} +5 -4
  252. package/dist/{text--clKJFHw.js → text-BMhu0paW.js} +5 -4
  253. package/dist/{text-circled-hElWfl5W.js → text-circled-Cykzn5-2.js} +5 -4
  254. package/dist/{text-filled-BpflMH5s.js → text-filled-BwOhn26K.js} +5 -4
  255. package/dist/{thumbs-down-BD3Dkcr3.js → thumbs-down-LH8SIeIF.js} +5 -4
  256. package/dist/{thumbs-up-A2jkWz64.js → thumbs-up-WZQzpqKr.js} +5 -4
  257. package/dist/{thumbs-up-double-Dm7agvTj.js → thumbs-up-double-SeGWEXZ_.js} +5 -4
  258. package/dist/{topic-CXey3AGT.js → topic-63EhQ_l1.js} +5 -4
  259. package/dist/{union-DZ2yepXw.js → union-DKjbjP-9.js} +5 -4
  260. package/dist/{upload-DPdFqQB3.js → upload-yjh9wxAA.js} +5 -4
  261. package/dist/{user-need-divert-me-DF4rOe6s.js → user-need-divert-me-B_cSVEIY.js} +5 -4
  262. package/dist/{user-need-educate-me-ClLznwAg.js → user-need-educate-me-DOgCmShA.js} +5 -4
  263. package/dist/{user-need-give-me-perspective-BfI5mb08.js → user-need-give-me-perspective-2wacZI2F.js} +5 -4
  264. package/dist/{user-need-help-me-D-lptTdN.js → user-need-help-me-D4VE0IcH.js} +5 -4
  265. package/dist/{user-need-touch-me-CikvxxHD.js → user-need-touch-me-u3n8c5IH.js} +5 -4
  266. package/dist/{user-need-update-me-Ua4YV9Bs.js → user-need-update-me-BcDyXzME.js} +5 -4
  267. package/dist/{video overlay-cYzYa_B7.js → video overlay-DfhF7VpE.js } +5 -4
  268. package/dist/{video-CydfS_mz.js → video-BViz7WnQ.js} +5 -4
  269. package/dist/{video-circled-DcD57AXc.js → video-circled-Bw9Miyyr.js} +5 -4
  270. package/dist/{video-filled-oePCRIdo.js → video-filled-B5Td1M5L.js} +5 -4
  271. package/dist/{video-rounded-DCwst-WS.js → video-rounded-ISWC3gUM.js} +5 -4
  272. package/dist/{view-CJdB2aJG.js → view-C9Xks5Gy.js} +5 -4
  273. package/dist/{view-off-gIw--Mbm.js → view-off-BuSbQwX0.js} +5 -4
  274. package/dist/{volume-up-BhnS1V_P.js → volume-up-BLQXZI5X.js} +5 -4
  275. package/package.json +5 -4
  276. package/dist/_plugin-vue_export-helper-CCTR5HVY.js +0 -2770
@@ -0,0 +1,160 @@
1
+ import { mount } from "@vue/test-utils";
2
+ import { describe, expect, it } from "vitest";
3
+
4
+ import UiDialog from "./UiDialog.vue";
5
+
6
+ describe("UiDialog", () => {
7
+ it("renders dialog with default slot content", () => {
8
+ const wrapper = mount(UiDialog, {
9
+ slots: {
10
+ default: "Default Slot",
11
+ },
12
+ });
13
+
14
+ expect(wrapper.find("main").text()).toBe("Default Slot");
15
+ });
16
+
17
+ it("renders dialog with header slot content", () => {
18
+ const wrapper = mount(UiDialog, {
19
+ slots: {
20
+ header: "Header Slot",
21
+ default: "Default Slot",
22
+ },
23
+ });
24
+
25
+ expect(wrapper.find("header").text()).toBe("Header Slot");
26
+ });
27
+
28
+ it("renders dialog with close button if by prop provided", () => {
29
+ const wrapper = mount(UiDialog, {
30
+ slots: {
31
+ header: "Header Slot",
32
+ default: "Default Slot",
33
+ },
34
+ props: {
35
+ hasCloseButton: true,
36
+ },
37
+ });
38
+
39
+ expect(wrapper.find("button")).toBeTruthy();
40
+ });
41
+
42
+ it("renders dialog with footer slot content", () => {
43
+ const wrapper = mount(UiDialog, {
44
+ slots: {
45
+ default: "Default Slot",
46
+ footer: "Footer Slot",
47
+ },
48
+ });
49
+
50
+ expect(wrapper.find("footer").text()).toBe("Footer Slot");
51
+ });
52
+
53
+ it("has maximum height set if provided through prop", () => {
54
+ const wrapper = mount(UiDialog, {
55
+ slots: {
56
+ default: "Default Slot",
57
+ },
58
+ props: {
59
+ maxHeight: "100px",
60
+ },
61
+ });
62
+
63
+ expect(
64
+ wrapper
65
+ .find('[data-testid="container"]')
66
+ .attributes()
67
+ .style.includes("max-height: 100px;"),
68
+ ).toBeTruthy();
69
+ });
70
+
71
+ it("has maximum width set if provided through prop", () => {
72
+ const wrapper = mount(UiDialog, {
73
+ slots: {
74
+ default: "Default Slot",
75
+ },
76
+ props: {
77
+ maxWidth: "700px",
78
+ },
79
+ });
80
+
81
+ expect(
82
+ wrapper
83
+ .find('[data-testid="container"]')
84
+ .attributes()
85
+ .style.includes("max-width: 700px;"),
86
+ ).toBeTruthy();
87
+ });
88
+
89
+ it("is scrollable through prop", () => {
90
+ const wrapper = mount(UiDialog, {
91
+ slots: {
92
+ default: "Default Slot",
93
+ },
94
+ props: {
95
+ scrollable: true,
96
+ },
97
+ });
98
+
99
+ expect(wrapper.find('[data-testid="container"]').classes()).toContain(
100
+ "overflow-y-auto",
101
+ );
102
+ });
103
+
104
+ it("fires 'close' event when background is clicked", async () => {
105
+ const wrapper = mount(UiDialog, {
106
+ slots: {
107
+ default: "Default Slot",
108
+ },
109
+ props: {
110
+ closeOnClickOutside: true,
111
+ },
112
+ });
113
+ const bg = wrapper.find('[data-testid="background"]');
114
+
115
+ await bg.trigger("click");
116
+ await wrapper.vm.$nextTick();
117
+ expect(wrapper.emitted().close).toBeTruthy();
118
+ });
119
+
120
+ it("fires 'close' event when close button is clicked", async () => {
121
+ const wrapper = mount(UiDialog, {
122
+ slots: {
123
+ header: "Header Slot",
124
+ default: "Default Slot",
125
+ },
126
+ props: {
127
+ hasCloseButton: true,
128
+ },
129
+ });
130
+ const btn = wrapper.find("button");
131
+
132
+ await btn.trigger("click");
133
+ await wrapper.vm.$nextTick();
134
+ expect(wrapper.emitted().close).toBeTruthy();
135
+ });
136
+
137
+ it("fires 'close' event when esc key is pressed and prop is set", async () => {
138
+ // Workaround to make events on `Document` Level work. See: https://test-utils.vuejs.org/api/#attachTo
139
+
140
+ document.body.innerHTML = `
141
+ <div>
142
+ <div id="app"></div>
143
+ </div>
144
+ `;
145
+
146
+ const wrapper = mount(UiDialog, {
147
+ attachTo: "#app",
148
+ slots: {
149
+ header: "Header Slot",
150
+ default: "Default Slot",
151
+ },
152
+ props: {
153
+ closeOnEsc: true,
154
+ },
155
+ });
156
+ await wrapper.trigger("keyup.Escape");
157
+ await wrapper.vm.$nextTick();
158
+ expect(wrapper.emitted().close).toBeTruthy();
159
+ });
160
+ });
@@ -0,0 +1,79 @@
1
+ import type { Meta, StoryObj } from "@storybook/vue3-vite";
2
+ import { action } from "storybook/actions";
3
+
4
+ import UiDialog from "./UiDialog.vue";
5
+
6
+ const meta = {
7
+ title: "Ui/UiDialog",
8
+ component: UiDialog,
9
+ argTypes: {
10
+ scrollable: { control: "boolean" },
11
+ roundedBorder: { control: "boolean" },
12
+ hasPaddingX: { control: "boolean" },
13
+ hasPaddingY: { control: "boolean" },
14
+ hasCloseButton: { control: "boolean" },
15
+ maxHeight: { control: "text" },
16
+ maxWidth: { control: "text" },
17
+ headerClasses: { control: "text" },
18
+ mainClasses: { control: "text" },
19
+ closeOnClickOutside: { control: "boolean" },
20
+ positionTop: {
21
+ control: "select",
22
+ options: ["50%", "20%", "40%"],
23
+ },
24
+ },
25
+ args: {
26
+ scrollable: false,
27
+ roundedBorder: false,
28
+ hasPaddingX: true,
29
+ hasPaddingY: true,
30
+ hasCloseButton: true,
31
+ maxHeight: "",
32
+ maxWidth: "600px",
33
+ headerClasses: "",
34
+ mainClasses: "",
35
+ closeOnClickOutside: true,
36
+ positionTop: "50%",
37
+ },
38
+ render: (args) => ({
39
+ setup() {
40
+ return { args };
41
+ },
42
+ components: { UiDialog },
43
+ template:
44
+ "<UiDialog v-bind='args' @close='close'>" +
45
+ "<template #header>Dialog header</template>" +
46
+ "Dialog main" +
47
+ "<template #footer>Dialog footer</template>" +
48
+ "</UiDialog>",
49
+ methods: {
50
+ close: action("close"),
51
+ },
52
+ }),
53
+ } satisfies Meta<typeof UiDialog>;
54
+
55
+ export default meta;
56
+ type Story = StoryObj<typeof meta>;
57
+
58
+ export const Default: Story = {};
59
+
60
+ export const Scrollable: Story = {
61
+ args: {
62
+ scrollable: true,
63
+ maxHeight: "100px",
64
+ },
65
+ };
66
+
67
+ export const RoundedBorder: Story = {
68
+ args: {
69
+ roundedBorder: true,
70
+ },
71
+ };
72
+
73
+ export const CustomClasses: Story = {
74
+ args: {
75
+ headerClasses: "bg-transparent",
76
+ mainClasses:
77
+ "h-16 flex flex-row justify-center items-center bg-green-night text-white mx-4 rounded-lg",
78
+ },
79
+ };
@@ -0,0 +1,17 @@
1
+ import { mount } from "@vue/test-utils";
2
+ import { describe, expect, it } from "vitest";
3
+
4
+ import UiFilterBadge from "./UiFilterBadge.vue";
5
+ describe("UiFilterBadge", () => {
6
+ it("renders with colors set", () => {
7
+ const wrapper = mount(UiFilterBadge, {
8
+ props: {
9
+ color: "#000",
10
+ fill: "#fff",
11
+ },
12
+ });
13
+ expect(wrapper.attributes().style).toBe("color: rgb(255, 255, 255);");
14
+ const innerText = wrapper.find('[data-testid="innerText"]');
15
+ expect(innerText.attributes().style).toBe("color: rgb(0, 0, 0);");
16
+ });
17
+ });
@@ -0,0 +1,44 @@
1
+ import type { Meta, StoryObj } from "@storybook/vue3-vite";
2
+
3
+ import UiIconButton from "../UiIconButton/UiIconButton.vue";
4
+ import UiFilterBadge from "./UiFilterBadge.vue";
5
+
6
+ const meta = {
7
+ title: "Ui/UiFilterBadge",
8
+ component: UiFilterBadge,
9
+ argTypes: {
10
+ size: {
11
+ control: "select",
12
+ options: ["small", "medium", "large", "xl"],
13
+ },
14
+ color: {
15
+ control: "color",
16
+ },
17
+ fill: {
18
+ control: "color",
19
+ },
20
+ iconIsFilled: {
21
+ control: "boolean",
22
+ },
23
+ },
24
+ args: {
25
+ size: "medium",
26
+ color: "#666",
27
+ fill: "#666",
28
+ iconIsFilled: true,
29
+ },
30
+ render: (args) => ({
31
+ setup() {
32
+ return { args };
33
+ },
34
+ components: { UiFilterBadge, UiIconButton },
35
+ template: "<UiFilterBadge v-bind='args'> slot </UiFilterBadge>",
36
+ }),
37
+ } satisfies Meta<typeof UiFilterBadge>;
38
+
39
+ export default meta;
40
+ type Story = StoryObj<typeof meta>;
41
+
42
+ export const Default: Story = {};
43
+
44
+ export const WithIsOutlined: Story = { args: { iconIsFilled: false } };
@@ -0,0 +1,41 @@
1
+ import { mount } from "@vue/test-utils";
2
+ import { describe, expect, it } from "vitest";
3
+
4
+ import UiFilterBadgeButton from "./UiFilterBadgeButton.vue";
5
+
6
+ describe("UiFilterBadgeButton", () => {
7
+ it("renders with colors set", () => {
8
+ const wrapper = mount(UiFilterBadgeButton, {
9
+ props: {
10
+ color: "#000",
11
+ fill: "#fff",
12
+ label: "Foo",
13
+ },
14
+ });
15
+ expect(wrapper.attributes().style).toBe("color: rgb(255, 255, 255);");
16
+ const innerText = wrapper.find('[data-testid="labelText"]');
17
+ expect(innerText.attributes().style).toBe("color: rgb(0, 0, 0);");
18
+ });
19
+
20
+ it("renders the label correctly", () => {
21
+ const wrapper = mount(UiFilterBadgeButton, {
22
+ props: {
23
+ label: "Foo",
24
+ },
25
+ });
26
+
27
+ expect(wrapper.text()).toBe("Foo");
28
+ });
29
+
30
+ it("should emit click event when clicked", async () => {
31
+ const wrapper = mount(UiFilterBadgeButton, {
32
+ props: {
33
+ label: "Foo",
34
+ },
35
+ });
36
+ const label = wrapper.find('[data-testid="labelText"]');
37
+ await label.trigger("click");
38
+
39
+ expect(wrapper.emitted().click).toBeTruthy();
40
+ });
41
+ });
@@ -0,0 +1,55 @@
1
+ import type { Meta, StoryObj } from "@storybook/vue3-vite";
2
+ import { action } from "storybook/actions";
3
+
4
+ import UiIconButton from "../UiIconButton/UiIconButton.vue";
5
+ import UiFilterBadgeButton from "./UiFilterBadgeButton.vue";
6
+
7
+ const meta = {
8
+ title: "Ui/UiFilterBadgeButton",
9
+ component: UiFilterBadgeButton,
10
+ argTypes: {
11
+ color: {
12
+ control: "color",
13
+ defaultValue: "#666",
14
+ },
15
+ fill: {
16
+ control: "color",
17
+ defaultValue: "#666",
18
+ },
19
+ iconIsFilled: {
20
+ control: "boolean",
21
+ defaultValue: true,
22
+ },
23
+ label: {
24
+ control: "text",
25
+ defaultValue: "Example Label",
26
+ },
27
+ isActive: {
28
+ control: "boolean",
29
+ defaultValue: false,
30
+ },
31
+ },
32
+ args: {
33
+ color: "#666",
34
+ fill: "#666",
35
+ iconIsFilled: true,
36
+ label: "Example Label",
37
+ isActive: false,
38
+ },
39
+ render: (args) => ({
40
+ setup() {
41
+ return { args };
42
+ },
43
+ components: { UiFilterBadgeButton, UiIconButton },
44
+ template:
45
+ "<UiFilterBadgeButton v-bind='args' @click='click'> <UiIconButton icon-color='gray' background-color='none' icon-name='more-horizontal'/> </UiFilterBadgeButton>",
46
+ methods: {
47
+ click: action("click"),
48
+ },
49
+ }),
50
+ } satisfies Meta<typeof UiFilterBadgeButton>;
51
+
52
+ export default meta;
53
+ type Story = StoryObj<typeof meta>;
54
+
55
+ export const Default: Story = {};
@@ -0,0 +1,79 @@
1
+ import { type ComponentMountingOptions, mount } from "@vue/test-utils";
2
+ import { describe, expect, it } from "vitest";
3
+
4
+ import UiFilterButton from "./UiFilterButton.vue";
5
+
6
+ function createWrapper(
7
+ options: ComponentMountingOptions<typeof UiFilterButton> = {},
8
+ ) {
9
+ return mount(UiFilterButton, {
10
+ ...options,
11
+ props: {
12
+ title: "Foo Bar",
13
+ ...options.props,
14
+ },
15
+ });
16
+ }
17
+
18
+ describe("UiFilterBadge", () => {
19
+ it("renders attributes on correct element", () => {
20
+ const wrapper = createWrapper({
21
+ props: {
22
+ id: "id",
23
+ class: "testClass",
24
+ "data-testid": "testId",
25
+ },
26
+ });
27
+
28
+ const root = wrapper.find(":first-child");
29
+ expect(root.element.classList.contains("testClass")).toBe(true);
30
+ expect(root.element.getAttribute("data-testid")).toBe("testId");
31
+ expect(root.element.getAttribute("id")).toBe("id");
32
+
33
+ const button = wrapper.find('[data-testid="filter-button"]');
34
+ expect(button.element.classList.contains("testClass")).toBe(false);
35
+ expect(button.element.getAttribute("data-testid")).not.toBe("testId");
36
+ });
37
+
38
+ it("renders with given Title", () => {
39
+ const wrapper = createWrapper();
40
+ expect(wrapper.text()).toBe("Foo Bar");
41
+ });
42
+
43
+ it("changes colour according to prop change", () => {
44
+ const wrapper = createWrapper({
45
+ props: {
46
+ variant: "blue-rounded",
47
+ },
48
+ });
49
+ expect(wrapper.classes("bg-blue-default")).toBe(true);
50
+ });
51
+
52
+ it("emits click event", async () => {
53
+ const wrapper = createWrapper();
54
+ const button = wrapper.find('[data-testid="filter-button"]');
55
+ await button.trigger("click");
56
+
57
+ const lastEvent = (wrapper.emitted("click") ?? []).at(-1);
58
+ expect(lastEvent).toEqual([]);
59
+ });
60
+
61
+ it("renders attributes on correct element", () => {
62
+ const wrapper = mount(UiFilterButton, {
63
+ props: {
64
+ options: [],
65
+ groupName: "",
66
+ id: "id",
67
+ class: "testClass pr-8",
68
+ "data-testid": "testId",
69
+ },
70
+ });
71
+
72
+ const root = wrapper.find(":first-child");
73
+ expect(root.attributes("id")).toBe("id");
74
+ expect(root.element.classList.contains("testClass")).toBe(true);
75
+ expect(root.element.classList.contains("pr-4")).toBe(false);
76
+ expect(root.element.classList.contains("pr-8")).toBe(true);
77
+ expect(root.attributes("data-testid")).toBe("testId");
78
+ });
79
+ });
@@ -0,0 +1,88 @@
1
+ import type { Meta, StoryObj } from "@storybook/vue3-vite";
2
+
3
+ import { icons } from "../UiIcon/icons.js";
4
+ import UiFilterButton from "./UiFilterButton.vue";
5
+
6
+ const meta = {
7
+ title: "Ui/UiFilterButton",
8
+ component: UiFilterButton,
9
+ argTypes: {
10
+ title: {
11
+ control: "text",
12
+ },
13
+ variant: {
14
+ control: "select",
15
+ options: [
16
+ "blue-rounded",
17
+ "white-rounded",
18
+ "blank",
19
+ "blue-blank",
20
+ "transparent-rounded",
21
+ ],
22
+ },
23
+ buttonWidth: {
24
+ control: "select",
25
+ options: ["max", "full"],
26
+ },
27
+ chevronIcon: {
28
+ control: "select",
29
+ options: Object.keys(icons),
30
+ },
31
+ rotateIcon: {
32
+ control: "boolean",
33
+ },
34
+ disabled: {
35
+ control: "boolean",
36
+ },
37
+ active: {
38
+ control: "boolean",
39
+ },
40
+ hasIcon: {
41
+ control: "boolean",
42
+ },
43
+ iconLeft: {
44
+ control: "select",
45
+ options: Object.keys(icons),
46
+ },
47
+ iconSize: {
48
+ control: "select",
49
+ options: ["xs", "small", "large"],
50
+ },
51
+ size: {
52
+ control: "select",
53
+ options: ["xs", "small"],
54
+ },
55
+ iconLeftClass: {
56
+ control: "text",
57
+ },
58
+ iconRightClass: {
59
+ control: "text",
60
+ },
61
+ },
62
+ args: {
63
+ title: "Filter",
64
+ variant: "white-rounded",
65
+ buttonWidth: "max",
66
+ chevronIcon: "chevron-down",
67
+ rotateIcon: false,
68
+ disabled: false,
69
+ active: false,
70
+ hasIcon: true,
71
+ iconSize: "xs",
72
+ iconLeft: null,
73
+ iconLeftClass: undefined,
74
+ iconRightClass: undefined,
75
+ },
76
+ render: (args) => ({
77
+ setup() {
78
+ return { args };
79
+ },
80
+ components: { UiFilterButton },
81
+ template: "<UiFilterButton v-bind='args'>Slot</UiFilterButton>",
82
+ }),
83
+ } satisfies Meta<typeof UiFilterButton>;
84
+
85
+ export default meta;
86
+ type Story = StoryObj<typeof meta>;
87
+
88
+ export const Default: Story = {};
@@ -0,0 +1,23 @@
1
+ <template>
2
+ <div class="grid grid-cols-6 gap-8">
3
+ <div
4
+ v-for="(_import, icon) in icons"
5
+ :key="icon"
6
+ class="h-25 content-center border-2 p-2 text-center"
7
+ >
8
+ <h2 class="mb-2">{{ icon }}</h2>
9
+ <UiIcon :name="icon" :size="props.size"></UiIcon>
10
+ </div>
11
+ </div>
12
+ </template>
13
+ <script setup lang="ts">
14
+ import { icons } from "./icons.js";
15
+ import UiIcon from "./UiIcon.vue";
16
+
17
+ const props = withDefaults(
18
+ defineProps<{
19
+ size: "xs" | "small" | "medium" | "large" | "xl";
20
+ }>(),
21
+ {},
22
+ );
23
+ </script>
@@ -0,0 +1,56 @@
1
+ import { type ComponentMountingOptions, mount } from "@vue/test-utils";
2
+ import { beforeEach, describe, expect, it, vi } from "vitest";
3
+
4
+ import { icons } from "./icons.js";
5
+ import UiIcon from "./UiIcon.vue";
6
+
7
+ function createWrapper(options: ComponentMountingOptions<typeof UiIcon> = {}) {
8
+ return mount(UiIcon, {
9
+ ...options,
10
+ });
11
+ }
12
+
13
+ describe("UiIcon", () => {
14
+ beforeEach(() => {
15
+ // Important to get isolated tests for this component as it dynamically imports components which will be cached in subsequent tests.
16
+ vi.resetModules();
17
+ });
18
+
19
+ it.each<[Partial<InstanceType<typeof UiIcon>["$props"]>, string]>([
20
+ [{ size: "xs" }, "size-3"],
21
+ [{ size: "small" }, "size-4"],
22
+ [{ size: "medium" }, "size-5"],
23
+ [{}, "size-6"],
24
+ [{ size: "large" }, "size-6"],
25
+ [{ size: "xl" }, "size-10"],
26
+ [{ size: "2xl" }, "size-14"],
27
+ ])("renders large size by default", (props, expectedClassNames) => {
28
+ const wrapper = createWrapper({
29
+ props: {
30
+ name: "alert",
31
+ ...props,
32
+ },
33
+ });
34
+
35
+ expect(wrapper.classes(expectedClassNames)).toBe(true);
36
+ });
37
+
38
+ it("should be able to resolve all icons", async () => {
39
+ await Promise.all(Object.values(icons));
40
+ });
41
+
42
+ it("throws on non-existing icon name", async () => {
43
+ function callback() {
44
+ createWrapper({
45
+ props: {
46
+ // @ts-expect-error
47
+ name: "does-not-exist",
48
+ },
49
+ });
50
+ }
51
+
52
+ expect(callback).toThrowError(
53
+ "UiIcon: No icon named “does-not-exist” exists.",
54
+ );
55
+ });
56
+ });
@@ -0,0 +1,48 @@
1
+ import type { Meta, StoryObj } from "@storybook/vue3-vite";
2
+
3
+ import IconOverview from "./IconOverview.stories.vue";
4
+ import { icons } from "./icons.js";
5
+ import UiIcon from "./UiIcon.vue";
6
+
7
+ const meta = {
8
+ title: "Ui/UiIcon",
9
+ component: UiIcon,
10
+ argTypes: {
11
+ name: {
12
+ control: "select",
13
+ options: Object.keys(icons),
14
+ },
15
+ size: {
16
+ control: "select",
17
+ options: ["xs", "small", "medium", "large", "xl", "2xl"],
18
+ },
19
+ },
20
+ args: {
21
+ name: "alert",
22
+ size: "large",
23
+ },
24
+ } satisfies Meta<typeof UiIcon>;
25
+
26
+ export default meta;
27
+ type Story = StoryObj<typeof meta>;
28
+
29
+ export const Default: Story = {
30
+ render: (args) => ({
31
+ setup() {
32
+ return { args };
33
+ },
34
+ components: { UiIcon },
35
+ template: "<UiIcon v-bind='args'></UiIcon>",
36
+ }),
37
+ };
38
+
39
+ export const Overview: Story = {
40
+ render: (args) => ({
41
+ setup() {
42
+ const size = args.size || "large";
43
+ return { args, size };
44
+ },
45
+ components: { IconOverview },
46
+ template: "<IconOverview :size='size'></IconOverview>",
47
+ }),
48
+ };