@rotki/ui-library 3.1.7 → 3.3.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 (418) hide show
  1. package/dist/components/accordions/accordion/RuiAccordion.js.map +1 -1
  2. package/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +4 -2
  3. package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js +3 -3
  4. package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/accordions/accordion/accordion-styles.d.ts +1 -0
  6. package/dist/components/accordions/accordion/accordion-styles.js +7 -0
  7. package/dist/components/accordions/accordion/accordion-styles.js.map +1 -0
  8. package/dist/components/accordions/accordions/RuiAccordions.js.map +1 -1
  9. package/dist/components/accordions/accordions/RuiAccordions.vue.d.ts +26 -9
  10. package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js +11 -10
  11. package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js.map +1 -1
  12. package/dist/components/alerts/RuiAlert.js.map +1 -1
  13. package/dist/components/alerts/RuiAlert.vue.d.ts +4 -2
  14. package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js +1 -65
  15. package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js.map +1 -1
  16. package/dist/components/alerts/alert-styles.d.ts +145 -0
  17. package/dist/components/alerts/alert-styles.js +70 -0
  18. package/dist/components/alerts/alert-styles.js.map +1 -0
  19. package/dist/components/avatars/RuiAvatar.js.map +1 -1
  20. package/dist/components/avatars/RuiAvatar.vue.d.ts +4 -2
  21. package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js +1 -38
  22. package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  23. package/dist/components/avatars/RuiAvatarGroup.js.map +1 -1
  24. package/dist/components/avatars/RuiAvatarGroup.vue.d.ts +3 -2
  25. package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js +1 -13
  26. package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/components/avatars/avatar-group-styles.d.ts +49 -0
  28. package/dist/components/avatars/avatar-group-styles.js +18 -0
  29. package/dist/components/avatars/avatar-group-styles.js.map +1 -0
  30. package/dist/components/avatars/avatar-styles.d.ts +181 -0
  31. package/dist/components/avatars/avatar-styles.js +43 -0
  32. package/dist/components/avatars/avatar-styles.js.map +1 -0
  33. package/dist/components/buttons/button/RuiButton.js.map +1 -1
  34. package/dist/components/buttons/button/RuiButton.vue.d.ts +2 -1
  35. package/dist/components/buttons/button/RuiButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/components/buttons/button-group/RuiButtonGroup.js.map +1 -1
  37. package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +10 -4
  38. package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js +9 -146
  39. package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/components/buttons/button-group/button-group-styles.d.ts +142 -0
  41. package/dist/components/buttons/button-group/button-group-styles.js +143 -0
  42. package/dist/components/buttons/button-group/button-group-styles.js.map +1 -0
  43. package/dist/components/calendar/RuiCalendar.js.map +1 -1
  44. package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js +1 -8
  45. package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  46. package/dist/components/calendar/RuiCalendarGrid.js.map +1 -1
  47. package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js +5 -25
  48. package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  49. package/dist/components/calendar/RuiCalendarHeader.js.map +1 -1
  50. package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js +3 -3
  51. package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  52. package/dist/components/calendar/RuiCalendarMenu.js.map +1 -1
  53. package/dist/components/calendar/RuiCalendarMenu.vue.d.ts +3 -3
  54. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js +10 -18
  55. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  56. package/dist/components/calendar/calendar-grid-styles.d.ts +43 -0
  57. package/dist/components/calendar/calendar-grid-styles.js +26 -0
  58. package/dist/components/calendar/calendar-grid-styles.js.map +1 -0
  59. package/dist/components/calendar/calendar-menu-styles.d.ts +34 -0
  60. package/dist/components/calendar/calendar-menu-styles.js +17 -0
  61. package/dist/components/calendar/calendar-menu-styles.js.map +1 -0
  62. package/dist/components/calendar/calendar-styles.d.ts +16 -0
  63. package/dist/components/calendar/calendar-styles.js +13 -0
  64. package/dist/components/calendar/calendar-styles.js.map +1 -0
  65. package/dist/components/calendar/state.d.ts +8 -1
  66. package/dist/components/calendar/state.js +13 -1
  67. package/dist/components/calendar/state.js.map +1 -1
  68. package/dist/components/cards/RuiCard.js.map +1 -1
  69. package/dist/components/cards/RuiCard.vue.d.ts +3 -1
  70. package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js +3 -58
  71. package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  72. package/dist/components/cards/RuiCardHeader.js.map +1 -1
  73. package/dist/components/cards/RuiCardHeader.vue.d.ts +3 -1
  74. package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js +2 -20
  75. package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  76. package/dist/components/cards/card-header-styles.d.ts +46 -0
  77. package/dist/components/cards/card-header-styles.js +24 -0
  78. package/dist/components/cards/card-header-styles.js.map +1 -0
  79. package/dist/components/cards/card-styles.d.ts +175 -0
  80. package/dist/components/cards/card-styles.js +62 -0
  81. package/dist/components/cards/card-styles.js.map +1 -0
  82. package/dist/components/chips/RuiChip.js.map +1 -1
  83. package/dist/components/chips/RuiChip.vue.d.ts +4 -2
  84. package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js +2 -241
  85. package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  86. package/dist/components/chips/chip-styles.d.ts +223 -0
  87. package/dist/components/chips/chip-styles.js +246 -0
  88. package/dist/components/chips/chip-styles.js.map +1 -0
  89. package/dist/components/color-picker/RuiColorBoard.js.map +1 -1
  90. package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js +3 -3
  91. package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  92. package/dist/components/color-picker/RuiColorHue.js.map +1 -1
  93. package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js +3 -3
  94. package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js.map +1 -1
  95. package/dist/components/color-picker/RuiColorPicker.js.map +1 -1
  96. package/dist/components/color-picker/RuiColorPicker.vue.d.ts +5 -2
  97. package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js +3 -3
  98. package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  99. package/dist/components/color-picker/color-board-styles.d.ts +1 -0
  100. package/dist/components/color-picker/color-board-styles.js +7 -0
  101. package/dist/components/color-picker/color-board-styles.js.map +1 -0
  102. package/dist/components/color-picker/color-hue-styles.d.ts +1 -0
  103. package/dist/components/color-picker/color-hue-styles.js +7 -0
  104. package/dist/components/color-picker/color-hue-styles.js.map +1 -0
  105. package/dist/components/color-picker/color-picker-styles.d.ts +1 -0
  106. package/dist/components/color-picker/color-picker-styles.js +7 -0
  107. package/dist/components/color-picker/color-picker-styles.js.map +1 -0
  108. package/dist/components/date-time-picker/RuiDateTimePicker.js.map +1 -1
  109. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +39 -30
  110. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js +8 -3
  111. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  112. package/dist/components/date-time-picker/RuiDateTimePickerMenu.js.map +1 -1
  113. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.d.ts +2 -1
  114. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  115. package/dist/components/date-time-picker/RuiTimezoneSelect.js.map +1 -1
  116. package/dist/components/date-time-picker/RuiTimezoneSelect.vue.d.ts +2 -1
  117. package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/components/divider/RuiDivider.js.map +1 -1
  119. package/dist/components/divider/RuiDivider.vue.d.ts +3 -1
  120. package/dist/components/divider/RuiDivider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  121. package/dist/components/forms/auto-complete/RuiAutoComplete.js.map +1 -1
  122. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +11 -5
  123. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js +5 -0
  124. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  125. package/dist/components/forms/auto-complete/RuiAutoCompleteOption.js.map +1 -1
  126. package/dist/components/forms/auto-complete/RuiAutoCompleteOption.vue.d.ts +2 -1
  127. package/dist/components/forms/auto-complete/RuiAutoCompleteOption.vue_vue_type_script_setup_true_lang.js.map +1 -1
  128. package/dist/components/forms/auto-complete/RuiAutoCompleteOptionList.js.map +1 -1
  129. package/dist/components/forms/auto-complete/RuiAutoCompleteOptionList.vue.d.ts +2 -2
  130. package/dist/components/forms/auto-complete/RuiAutoCompleteOptionList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  131. package/dist/components/forms/auto-complete/auto-complete-props.d.ts +0 -1
  132. package/dist/components/forms/category-picker/RuiCategoryPicker.js.map +1 -1
  133. package/dist/components/forms/category-picker/RuiCategoryPicker.vue.d.ts +2 -1
  134. package/dist/components/forms/category-picker/RuiCategoryPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  135. package/dist/components/forms/checkbox/RuiCheckbox.js.map +1 -1
  136. package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +2 -1
  137. package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js +4 -1
  138. package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.js.map +1 -1
  140. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue.d.ts +2 -1
  141. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/components/forms/field-label/RuiFieldLabel.js.map +1 -1
  143. package/dist/components/forms/field-label/RuiFieldLabel.vue_vue_type_script_setup_true_lang.js +1 -11
  144. package/dist/components/forms/field-label/RuiFieldLabel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  145. package/dist/components/forms/field-label/field-label-styles.d.ts +43 -0
  146. package/dist/components/forms/field-label/field-label-styles.js +16 -0
  147. package/dist/components/forms/field-label/field-label-styles.js.map +1 -0
  148. package/dist/components/forms/file-upload/RuiFileUpload.js.map +1 -1
  149. package/dist/components/forms/file-upload/RuiFileUpload.vue.d.ts +36 -29
  150. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js +5 -0
  151. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
  152. package/dist/components/forms/radio-button/radio/RuiRadio.js.map +1 -1
  153. package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +5 -3
  154. package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js +7 -8
  155. package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  156. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.js.map +1 -1
  157. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +5 -3
  158. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js +9 -10
  159. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  160. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.js.map +1 -1
  161. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +9 -2
  162. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  163. package/dist/components/forms/select/RuiMenuSelect.js.map +1 -1
  164. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +10 -4
  165. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js +5 -0
  166. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  167. package/dist/components/forms/select/RuiSimpleSelect.js.map +1 -1
  168. package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +22 -11
  169. package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js +2 -11
  170. package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  171. package/dist/components/forms/select/simple-select-styles.d.ts +2 -0
  172. package/dist/components/forms/select/simple-select-styles.js +15 -0
  173. package/dist/components/forms/select/simple-select-styles.js.map +1 -0
  174. package/dist/components/forms/slider/RuiSlider.js.map +1 -1
  175. package/dist/components/forms/slider/RuiSlider.vue.d.ts +2 -1
  176. package/dist/components/forms/slider/RuiSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  177. package/dist/components/forms/switch/RuiSwitch.js.map +1 -1
  178. package/dist/components/forms/switch/RuiSwitch.vue.d.ts +2 -1
  179. package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js +1 -126
  180. package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  181. package/dist/components/forms/switch/switch-styles.d.ts +151 -0
  182. package/dist/components/forms/switch/switch-styles.js +131 -0
  183. package/dist/components/forms/switch/switch-styles.js.map +1 -0
  184. package/dist/components/forms/text-area/RuiTextArea.js.map +1 -1
  185. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +3 -1
  186. package/dist/components/forms/text-area/RuiTextArea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  187. package/dist/components/forms/text-field/RuiTextField.js.map +1 -1
  188. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +3 -1
  189. package/dist/components/forms/text-field/RuiTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  190. package/dist/components/icons/RuiIcon.js.map +1 -1
  191. package/dist/components/icons/RuiIcon.vue.d.ts +3 -1
  192. package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js +2 -28
  193. package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  194. package/dist/components/icons/icon-styles.d.ts +44 -0
  195. package/dist/components/icons/icon-styles.js +33 -0
  196. package/dist/components/icons/icon-styles.js.map +1 -0
  197. package/dist/components/index.d.ts +2 -2
  198. package/dist/components/loaders/RuiSkeletonBase.js.map +1 -1
  199. package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js +2 -12
  200. package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js.map +1 -1
  201. package/dist/components/loaders/RuiSkeletonLoader.js.map +1 -1
  202. package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +3 -1
  203. package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js +3 -13
  204. package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  205. package/dist/components/loaders/skeleton-base-styles.d.ts +25 -0
  206. package/dist/components/loaders/skeleton-base-styles.js +16 -0
  207. package/dist/components/loaders/skeleton-base-styles.js.map +1 -0
  208. package/dist/components/loaders/skeleton-loader-styles.d.ts +37 -0
  209. package/dist/components/loaders/skeleton-loader-styles.js +18 -0
  210. package/dist/components/loaders/skeleton-loader-styles.js.map +1 -0
  211. package/dist/components/logos/RuiLogo.js.map +1 -1
  212. package/dist/components/logos/RuiLogo.vue.d.ts +3 -1
  213. package/dist/components/logos/RuiLogo.vue_vue_type_script_setup_true_lang.js.map +1 -1
  214. package/dist/components/overlays/badge/RuiBadge.js.map +1 -1
  215. package/dist/components/overlays/badge/RuiBadge.vue.d.ts +3 -1
  216. package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js +1 -83
  217. package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  218. package/dist/components/overlays/badge/badge-styles.d.ts +193 -0
  219. package/dist/components/overlays/badge/badge-styles.js +88 -0
  220. package/dist/components/overlays/badge/badge-styles.js.map +1 -0
  221. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.js.map +1 -1
  222. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.d.ts +11 -5
  223. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue_vue_type_script_setup_true_lang.js +6 -7
  224. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue_vue_type_script_setup_true_lang.js.map +1 -1
  225. package/dist/components/overlays/dialog/RuiDialog.js.map +1 -1
  226. package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +5 -3
  227. package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js +3 -14
  228. package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  229. package/dist/components/overlays/dialog/dialog-styles.d.ts +40 -0
  230. package/dist/components/overlays/dialog/dialog-styles.js +18 -0
  231. package/dist/components/overlays/dialog/dialog-styles.js.map +1 -0
  232. package/dist/components/overlays/menu/RuiMenu.js.map +1 -1
  233. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +11 -1
  234. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js +113 -58
  235. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  236. package/dist/components/overlays/menu/menu-styles.d.ts +58 -0
  237. package/dist/components/overlays/menu/menu-styles.js +25 -0
  238. package/dist/components/overlays/menu/menu-styles.js.map +1 -0
  239. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.js.map +1 -1
  240. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +2 -1
  241. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js +4 -69
  242. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  243. package/dist/components/overlays/navigation-drawer/navigation-drawer-styles.d.ts +76 -0
  244. package/dist/components/overlays/navigation-drawer/navigation-drawer-styles.js +72 -0
  245. package/dist/components/overlays/navigation-drawer/navigation-drawer-styles.js.map +1 -0
  246. package/dist/components/overlays/notification/RuiNotification.js.map +1 -1
  247. package/dist/components/overlays/notification/RuiNotification.vue.d.ts +2 -1
  248. package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js +3 -3
  249. package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js.map +1 -1
  250. package/dist/components/overlays/notification/notification-styles.d.ts +1 -0
  251. package/dist/components/overlays/notification/notification-styles.js +7 -0
  252. package/dist/components/overlays/notification/notification-styles.js.map +1 -0
  253. package/dist/components/overlays/tooltip/RuiTooltip.js.map +1 -1
  254. package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +8 -4
  255. package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js +42 -25
  256. package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  257. package/dist/components/overlays/tooltip/tooltip-styles.d.ts +2 -0
  258. package/dist/components/overlays/tooltip/tooltip-styles.js +3 -1
  259. package/dist/components/overlays/tooltip/tooltip-styles.js.map +1 -1
  260. package/dist/components/progress/RuiProgress.js.map +1 -1
  261. package/dist/components/progress/RuiProgress.vue.d.ts +3 -1
  262. package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js +1 -133
  263. package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js.map +1 -1
  264. package/dist/components/progress/progress-styles.d.ts +181 -0
  265. package/dist/components/progress/progress-styles.js +139 -0
  266. package/dist/components/progress/progress-styles.js.map +1 -0
  267. package/dist/components/steppers/RuiFooterStepper.js.map +1 -1
  268. package/dist/components/steppers/RuiFooterStepper.vue.d.ts +2 -1
  269. package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js +3 -13
  270. package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  271. package/dist/components/steppers/RuiStepper.js.map +1 -1
  272. package/dist/components/steppers/RuiStepper.vue.d.ts +3 -1
  273. package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js +4 -94
  274. package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  275. package/dist/components/steppers/RuiStepperIcon.js.map +1 -1
  276. package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js +2 -34
  277. package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  278. package/dist/components/steppers/footer-stepper-styles.d.ts +28 -0
  279. package/dist/components/steppers/footer-stepper-styles.js +16 -0
  280. package/dist/components/steppers/footer-stepper-styles.js.map +1 -0
  281. package/dist/components/steppers/stepper-icon-styles.d.ts +60 -0
  282. package/dist/components/steppers/stepper-icon-styles.js +39 -0
  283. package/dist/components/steppers/stepper-icon-styles.js.map +1 -0
  284. package/dist/components/steppers/stepper-styles.d.ts +202 -0
  285. package/dist/components/steppers/stepper-styles.js +98 -0
  286. package/dist/components/steppers/stepper-styles.js.map +1 -0
  287. package/dist/components/tables/RuiDataTable.js.map +1 -1
  288. package/dist/components/tables/RuiDataTable.vue.d.ts +14 -19
  289. package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js +25 -29
  290. package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  291. package/dist/components/tables/RuiExpandButton.js.map +1 -1
  292. package/dist/components/tables/RuiExpandButton.vue.d.ts +3 -1
  293. package/dist/components/tables/RuiExpandButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  294. package/dist/components/tables/RuiTable.js.map +1 -1
  295. package/dist/components/tables/RuiTable.vue.d.ts +4 -2
  296. package/dist/components/tables/RuiTable.vue_vue_type_script_setup_true_lang.js +1 -32
  297. package/dist/components/tables/RuiTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  298. package/dist/components/tables/RuiTableEmptyState.js.map +1 -1
  299. package/dist/components/tables/RuiTableEmptyState.vue.d.ts +3 -1
  300. package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js +1 -15
  301. package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  302. package/dist/components/tables/RuiTableErrorState.js.map +1 -1
  303. package/dist/components/tables/RuiTableErrorState.vue.d.ts +4 -2
  304. package/dist/components/tables/RuiTableErrorState.vue_vue_type_script_setup_true_lang.js +2 -5
  305. package/dist/components/tables/RuiTableErrorState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  306. package/dist/components/tables/RuiTableHead.js.map +1 -1
  307. package/dist/components/tables/RuiTableHead.vue.d.ts +3 -2
  308. package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js +4 -37
  309. package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js.map +1 -1
  310. package/dist/components/tables/RuiTableLoadingState.js.map +1 -1
  311. package/dist/components/tables/RuiTableLoadingState.vue.d.ts +3 -1
  312. package/dist/components/tables/RuiTableLoadingState.vue_vue_type_script_setup_true_lang.js +1 -8
  313. package/dist/components/tables/RuiTableLoadingState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  314. package/dist/components/tables/RuiTablePagination.js.map +1 -1
  315. package/dist/components/tables/RuiTablePagination.vue.d.ts +2 -1
  316. package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js +1 -30
  317. package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  318. package/dist/components/tables/data-table/RuiDataTableCell.js.map +1 -1
  319. package/dist/components/tables/data-table/RuiDataTableCell.vue_vue_type_script_setup_true_lang.js +2 -4
  320. package/dist/components/tables/data-table/RuiDataTableCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  321. package/dist/components/tables/data-table/RuiDataTableMobileSort.js.map +1 -1
  322. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue.d.ts +1 -1
  323. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue_vue_type_script_setup_true_lang.js +2 -3
  324. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue_vue_type_script_setup_true_lang.js.map +1 -1
  325. package/dist/components/tables/data-table/context.d.ts +6 -6
  326. package/dist/components/tables/data-table/context.js +1 -1
  327. package/dist/components/tables/data-table/context.js.map +1 -1
  328. package/dist/components/tables/table-empty-state-styles.d.ts +43 -0
  329. package/dist/components/tables/table-empty-state-styles.js +20 -0
  330. package/dist/components/tables/table-empty-state-styles.js.map +1 -0
  331. package/dist/components/tables/table-error-state-styles.d.ts +36 -0
  332. package/dist/components/tables/table-error-state-styles.js +15 -0
  333. package/dist/components/tables/table-error-state-styles.js.map +1 -0
  334. package/dist/components/tables/table-head-styles.d.ts +91 -0
  335. package/dist/components/tables/table-head-styles.js +39 -0
  336. package/dist/components/tables/table-head-styles.js.map +1 -0
  337. package/dist/components/tables/table-loading-state-styles.d.ts +34 -0
  338. package/dist/components/tables/table-loading-state-styles.js +13 -0
  339. package/dist/components/tables/table-loading-state-styles.js.map +1 -0
  340. package/dist/components/tables/table-pagination-styles.d.ts +82 -0
  341. package/dist/components/tables/table-pagination-styles.js +35 -0
  342. package/dist/components/tables/table-pagination-styles.js.map +1 -0
  343. package/dist/components/tables/table-props.d.ts +9 -0
  344. package/dist/components/tables/table-props.js +13 -1
  345. package/dist/components/tables/table-props.js.map +1 -1
  346. package/dist/components/tables/table-styles.d.ts +62 -0
  347. package/dist/components/tables/table-styles.js +37 -0
  348. package/dist/components/tables/table-styles.js.map +1 -0
  349. package/dist/components/tabs/tab/RuiTab.js.map +1 -1
  350. package/dist/components/tabs/tab/RuiTab.vue.d.ts +4 -2
  351. package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js +3 -84
  352. package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  353. package/dist/components/tabs/tab/tab-styles.d.ts +153 -0
  354. package/dist/components/tabs/tab/tab-styles.js +89 -0
  355. package/dist/components/tabs/tab/tab-styles.js.map +1 -0
  356. package/dist/components/tabs/tab-item/RuiTabItem.js.map +1 -1
  357. package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +3 -1
  358. package/dist/components/tabs/tab-item/RuiTabItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  359. package/dist/components/tabs/tab-items/RuiTabItems.js.map +1 -1
  360. package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +5 -12
  361. package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js +8 -14
  362. package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js.map +1 -1
  363. package/dist/components/tabs/tabs/RuiTabs.js.map +1 -1
  364. package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +26 -14
  365. package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js +13 -150
  366. package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  367. package/dist/components/tabs/tabs/tabs-styles.d.ts +168 -0
  368. package/dist/components/tabs/tabs/tabs-styles.js +142 -0
  369. package/dist/components/tabs/tabs/tabs-styles.js.map +1 -0
  370. package/dist/components/time-picker/RuiTimePicker.js.map +1 -1
  371. package/dist/components/time-picker/RuiTimePicker.vue.d.ts +2 -1
  372. package/dist/components/time-picker/RuiTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  373. package/dist/composables/dropdown-menu.js.map +1 -1
  374. package/dist/composables/floating.d.ts +3 -1
  375. package/dist/composables/floating.js +8 -9
  376. package/dist/composables/floating.js.map +1 -1
  377. package/dist/composables/forms/auto-complete/search.js.map +1 -1
  378. package/dist/composables/forms/auto-complete/value.d.ts +1 -1
  379. package/dist/composables/forms/auto-complete/value.js.map +1 -1
  380. package/dist/composables/prop-model.d.ts +21 -0
  381. package/dist/composables/prop-model.js +33 -0
  382. package/dist/composables/prop-model.js.map +1 -0
  383. package/dist/composables/tables/data-table/columns.d.ts +2 -1
  384. package/dist/composables/tables/data-table/columns.js.map +1 -1
  385. package/dist/composables/tables/data-table/types.d.ts +35 -0
  386. package/dist/composables/tables/data-table/types.js.map +1 -1
  387. package/dist/composables/use-rui-i18n.d.ts +6 -3
  388. package/dist/composables/use-rui-i18n.js +1 -1
  389. package/dist/composables/use-rui-i18n.js.map +1 -1
  390. package/dist/icons/icons_1.d.ts +1 -1
  391. package/dist/icons/icons_1.js +10 -9
  392. package/dist/icons/icons_1.js.map +1 -1
  393. package/dist/icons/icons_2.d.ts +1 -1
  394. package/dist/icons/icons_2.js +9 -11
  395. package/dist/icons/icons_2.js.map +1 -1
  396. package/dist/icons/icons_3.d.ts +1 -1
  397. package/dist/icons/icons_3.js +11 -5
  398. package/dist/icons/icons_3.js.map +1 -1
  399. package/dist/icons/icons_4.d.ts +1 -1
  400. package/dist/icons/icons_4.js +5 -10
  401. package/dist/icons/icons_4.js.map +1 -1
  402. package/dist/icons/icons_5.d.ts +1 -0
  403. package/dist/icons/icons_5.js +10 -1
  404. package/dist/icons/icons_5.js.map +1 -1
  405. package/dist/icons/index.d.ts +1 -1
  406. package/dist/icons/index.js +7 -6
  407. package/dist/icons/index.js.map +1 -1
  408. package/dist/index.d.ts +7 -1
  409. package/dist/index.js +20 -12
  410. package/dist/index.js.map +1 -1
  411. package/dist/types/attributes.d.ts +9 -0
  412. package/dist/utils/blockie.js +10 -9
  413. package/dist/utils/blockie.js.map +1 -1
  414. package/dist/utils/form-text-detail.d.ts +2 -0
  415. package/dist/utils/form-text-detail.js +5 -1
  416. package/dist/utils/form-text-detail.js.map +1 -1
  417. package/dist/web-types.json +290 -110
  418. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"RuiAccordion.js","names":["_sfc_main"],"sources":["../../../../src/components/accordions/accordion/RuiAccordion.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { VueClassValue } from '@/types/class-value';\nimport Icon from '@/components/icons/RuiIcon.vue';\nimport { useClipWhileResizing } from '@/composables/clip-while-resizing';\nimport { cn, tv } from '@/utils/tv';\n\nexport interface RuiAccordionClassNames {\n root?: VueClassValue;\n header?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface AccordionProps {\n open?: boolean;\n eager?: boolean;\n headerGrow?: boolean;\n classNames?: RuiAccordionClassNames;\n}\n\ndefineOptions({\n name: 'RuiAccordion',\n inheritAttrs: false,\n});\n\nconst {\n open = false,\n eager = false,\n headerGrow = false,\n classNames,\n} = defineProps<AccordionProps>();\n\nconst emit = defineEmits<{\n click: [];\n}>();\n\ndefineSlots<{\n header?: (props: { open: boolean }) => any;\n default?: () => any;\n}>();\n\nconst inner = useTemplateRef<HTMLDivElement>('inner');\nconst content = useTemplateRef<HTMLDivElement>('content');\n\nconst triggerId = useId();\nconst contentId = useId();\nconst { height: innerHeight } = useElementSize(inner);\n\nconst contentHeight = computed<string>(() => (open ? `${get(innerHeight)}px` : '0px'));\n\nconst resizing = useClipWhileResizing(content, contentHeight);\n\n// a closed `eager` panel keeps its content at height 0, so it clips; an open one only while it resizes, so sticky content works\nconst clipped = computed<boolean>(() => !open || get(resizing));\n\nfunction toggle(): void {\n emit('click');\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n toggle();\n }\n}\n\nconst rootStyle = tv({ base: 'flex flex-col items-start' });\n</script>\n\n<template>\n <div\n :class=\"rootStyle({ class: cn(classNames?.root ?? $attrs.class) })\"\n :data-state=\"open ? 'open' : 'closed'\"\n data-accordion\n v-bind=\"{ ...$attrs, class: undefined }\"\n >\n <!-- rounded only while focused: a permanent radius bent any border an app draws on the header -->\n <div\n v-if=\"$slots.header\"\n :id=\"triggerId\"\n class=\"group flex gap-2 items-center cursor-pointer outline-hidden focus-visible:focus-ring focus-visible:rounded-rui-control\"\n :class=\"[classNames?.header, { 'w-full': headerGrow }]\"\n role=\"button\"\n tabindex=\"0\"\n :aria-expanded=\"open\"\n :aria-controls=\"contentId\"\n data-accordion-trigger\n @click=\"toggle()\"\n @keydown=\"onKeydown($event)\"\n >\n <div :class=\"{ grow: headerGrow }\">\n <slot\n name=\"header\"\n :open=\"open\"\n />\n </div>\n <Icon\n class=\"shrink-0 text-rui-text-secondary transition-[rotate,color] duration-200 ease-out group-hover:text-rui-text motion-reduce:transition-none\"\n :class=\"{ '-rotate-180': open }\"\n name=\"lu-chevron-down\"\n :size=\"16\"\n />\n </div>\n <div\n v-if=\"open || eager\"\n :id=\"contentId\"\n ref=\"content\"\n class=\"grow transition-[height] duration-200 ease-out w-full motion-reduce:transition-none\"\n :class=\"[{ 'overflow-hidden': clipped }, classNames?.content]\"\n :data-clipped=\"clipped || undefined\"\n :style=\"{ height: contentHeight }\"\n role=\"region\"\n :aria-labelledby=\"triggerId\"\n data-accordion-content\n >\n <div ref=\"inner\">\n <slot name=\"default\" />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiAccordion.js","names":["_sfc_main"],"sources":["../../../../src/components/accordions/accordion/RuiAccordion.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { HTMLAttributes } from 'vue';\nimport type { VueClassValue } from '@/types/class-value';\nimport Icon from '@/components/icons/RuiIcon.vue';\nimport { useClipWhileResizing } from '@/composables/clip-while-resizing';\nimport { cn } from '@/utils/tv';\nimport { accordionStyles } from './accordion-styles';\n\nexport interface RuiAccordionClassNames {\n root?: VueClassValue;\n header?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface AccordionProps {\n open?: boolean;\n eager?: boolean;\n headerGrow?: boolean;\n classNames?: RuiAccordionClassNames;\n}\n\ndefineOptions({\n name: 'RuiAccordion',\n inheritAttrs: false,\n});\n\nconst {\n open = false,\n eager = false,\n headerGrow = false,\n classNames,\n} = defineProps<AccordionProps & /* @vue-ignore */ Omit<HTMLAttributes, keyof AccordionProps | 'onClick'>>();\n\nconst emit = defineEmits<{\n click: [];\n}>();\n\ndefineSlots<{\n header?: (props: { open: boolean }) => any;\n default?: () => any;\n}>();\n\nconst inner = useTemplateRef<HTMLDivElement>('inner');\nconst content = useTemplateRef<HTMLDivElement>('content');\n\nconst triggerId = useId();\nconst contentId = useId();\nconst { height: innerHeight } = useElementSize(inner);\n\nconst contentHeight = computed<string>(() => (open ? `${get(innerHeight)}px` : '0px'));\n\nconst resizing = useClipWhileResizing(content, contentHeight);\n\n// a closed `eager` panel keeps its content at height 0, so it clips; an open one only while it resizes, so sticky content works\nconst clipped = computed<boolean>(() => !open || get(resizing));\n\nfunction toggle(): void {\n emit('click');\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n toggle();\n }\n}\n</script>\n\n<template>\n <div\n :class=\"accordionStyles({ class: cn(classNames?.root ?? $attrs.class) })\"\n :data-state=\"open ? 'open' : 'closed'\"\n data-accordion\n v-bind=\"{ ...$attrs, class: undefined }\"\n >\n <!-- rounded only while focused: a permanent radius bent any border an app draws on the header -->\n <div\n v-if=\"$slots.header\"\n :id=\"triggerId\"\n class=\"group flex gap-2 items-center cursor-pointer outline-hidden focus-visible:focus-ring focus-visible:rounded-rui-control\"\n :class=\"[classNames?.header, { 'w-full': headerGrow }]\"\n role=\"button\"\n tabindex=\"0\"\n :aria-expanded=\"open\"\n :aria-controls=\"contentId\"\n data-accordion-trigger\n @click=\"toggle()\"\n @keydown=\"onKeydown($event)\"\n >\n <div :class=\"{ grow: headerGrow }\">\n <slot\n name=\"header\"\n :open=\"open\"\n />\n </div>\n <Icon\n class=\"shrink-0 text-rui-text-secondary transition-[rotate,color] duration-200 ease-out group-hover:text-rui-text motion-reduce:transition-none\"\n :class=\"{ '-rotate-180': open }\"\n name=\"lu-chevron-down\"\n :size=\"16\"\n />\n </div>\n <div\n v-if=\"open || eager\"\n :id=\"contentId\"\n ref=\"content\"\n class=\"grow transition-[height] duration-200 ease-out w-full motion-reduce:transition-none\"\n :class=\"[{ 'overflow-hidden': clipped }, classNames?.content]\"\n :data-clipped=\"clipped || undefined\"\n :style=\"{ height: contentHeight }\"\n role=\"region\"\n :aria-labelledby=\"triggerId\"\n data-accordion-content\n >\n <div ref=\"inner\">\n <slot name=\"default\" />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import type { HTMLAttributes } from 'vue';
1
2
  import type { VueClassValue } from '../../../types/class-value.js';
2
3
  export interface RuiAccordionClassNames {
3
4
  root?: VueClassValue;
@@ -10,15 +11,16 @@ export interface AccordionProps {
10
11
  headerGrow?: boolean;
11
12
  classNames?: RuiAccordionClassNames;
12
13
  }
14
+ type __VLS_Props = AccordionProps & /* @vue-ignore */ Omit<HTMLAttributes, keyof AccordionProps | 'onClick'>;
13
15
  type __VLS_Slots = {
14
16
  header?: (props: {
15
17
  open: boolean;
16
18
  }) => any;
17
19
  default?: () => any;
18
20
  };
19
- declare const __VLS_base: import("vue").DefineComponent<AccordionProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
21
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
20
22
  click: () => any;
21
- }, string, import("vue").PublicProps, Readonly<AccordionProps> & Readonly<{
23
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
22
24
  onClick?: (() => any) | undefined;
23
25
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
26
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,8 +1,9 @@
1
1
  import { get } from "../../../vendor/@vueuse/shared/dist/index.js";
2
2
  import { useElementSize } from "../../../vendor/@vueuse/core/dist/index.js";
3
- import { cn, tv } from "../../../utils/tv.js";
3
+ import { cn } from "../../../utils/tv.js";
4
4
  import RuiIcon_default from "../../icons/RuiIcon.js";
5
5
  import { useClipWhileResizing } from "../../../composables/clip-while-resizing.js";
6
+ import { accordionStyles } from "./accordion-styles.js";
6
7
  import { computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, openBlock, renderSlot, unref, useId, useTemplateRef } from "vue";
7
8
  //#region src/components/accordions/accordion/RuiAccordion.vue?vue&type=script&setup=true&lang.ts
8
9
  var _hoisted_1 = ["data-state"];
@@ -55,10 +56,9 @@ var RuiAccordion_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
55
56
  toggle();
56
57
  }
57
58
  }
58
- const rootStyle = tv({ base: "flex flex-col items-start" });
59
59
  return (_ctx, _cache) => {
60
60
  return openBlock(), createElementBlock("div", mergeProps({
61
- class: unref(rootStyle)({ class: unref(cn)(__props.classNames?.root ?? _ctx.$attrs.class) }),
61
+ class: unref(accordionStyles)({ class: unref(cn)(__props.classNames?.root ?? _ctx.$attrs.class) }),
62
62
  "data-state": __props.open ? "open" : "closed",
63
63
  "data-accordion": ""
64
64
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"RuiAccordion.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots","_openBlock","_createElementBlock","_mergeProps","_unref","_normalizeClass","_createElementVNode","_renderSlot","_createVNode","Icon","_createCommentVNode","_normalizeStyle"],"sources":["../../../../src/components/accordions/accordion/RuiAccordion.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { VueClassValue } from '@/types/class-value';\nimport Icon from '@/components/icons/RuiIcon.vue';\nimport { useClipWhileResizing } from '@/composables/clip-while-resizing';\nimport { cn, tv } from '@/utils/tv';\n\nexport interface RuiAccordionClassNames {\n root?: VueClassValue;\n header?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface AccordionProps {\n open?: boolean;\n eager?: boolean;\n headerGrow?: boolean;\n classNames?: RuiAccordionClassNames;\n}\n\ndefineOptions({\n name: 'RuiAccordion',\n inheritAttrs: false,\n});\n\nconst {\n open = false,\n eager = false,\n headerGrow = false,\n classNames,\n} = defineProps<AccordionProps>();\n\nconst emit = defineEmits<{\n click: [];\n}>();\n\ndefineSlots<{\n header?: (props: { open: boolean }) => any;\n default?: () => any;\n}>();\n\nconst inner = useTemplateRef<HTMLDivElement>('inner');\nconst content = useTemplateRef<HTMLDivElement>('content');\n\nconst triggerId = useId();\nconst contentId = useId();\nconst { height: innerHeight } = useElementSize(inner);\n\nconst contentHeight = computed<string>(() => (open ? `${get(innerHeight)}px` : '0px'));\n\nconst resizing = useClipWhileResizing(content, contentHeight);\n\n// a closed `eager` panel keeps its content at height 0, so it clips; an open one only while it resizes, so sticky content works\nconst clipped = computed<boolean>(() => !open || get(resizing));\n\nfunction toggle(): void {\n emit('click');\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n toggle();\n }\n}\n\nconst rootStyle = tv({ base: 'flex flex-col items-start' });\n</script>\n\n<template>\n <div\n :class=\"rootStyle({ class: cn(classNames?.root ?? $attrs.class) })\"\n :data-state=\"open ? 'open' : 'closed'\"\n data-accordion\n v-bind=\"{ ...$attrs, class: undefined }\"\n >\n <!-- rounded only while focused: a permanent radius bent any border an app draws on the header -->\n <div\n v-if=\"$slots.header\"\n :id=\"triggerId\"\n class=\"group flex gap-2 items-center cursor-pointer outline-hidden focus-visible:focus-ring focus-visible:rounded-rui-control\"\n :class=\"[classNames?.header, { 'w-full': headerGrow }]\"\n role=\"button\"\n tabindex=\"0\"\n :aria-expanded=\"open\"\n :aria-controls=\"contentId\"\n data-accordion-trigger\n @click=\"toggle()\"\n @keydown=\"onKeydown($event)\"\n >\n <div :class=\"{ grow: headerGrow }\">\n <slot\n name=\"header\"\n :open=\"open\"\n />\n </div>\n <Icon\n class=\"shrink-0 text-rui-text-secondary transition-[rotate,color] duration-200 ease-out group-hover:text-rui-text motion-reduce:transition-none\"\n :class=\"{ '-rotate-180': open }\"\n name=\"lu-chevron-down\"\n :size=\"16\"\n />\n </div>\n <div\n v-if=\"open || eager\"\n :id=\"contentId\"\n ref=\"content\"\n class=\"grow transition-[height] duration-200 ease-out w-full motion-reduce:transition-none\"\n :class=\"[{ 'overflow-hidden': clipped }, classNames?.content]\"\n :data-clipped=\"clipped || undefined\"\n :style=\"{ height: contentHeight }\"\n role=\"region\"\n :aria-labelledby=\"triggerId\"\n data-accordion-content\n >\n <div ref=\"inner\">\n <slot name=\"default\" />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BA,MAAM,OAAO;EASb,MAAM,QAAQ,eAA+B,OAAO;EACpD,MAAM,UAAU,eAA+B,SAAS;EAExD,MAAM,YAAY,MAAM;EACxB,MAAM,YAAY,MAAM;EACxB,MAAM,EAAE,QAAQ,gBAAgB,eAAe,KAAK;EAEpD,MAAM,gBAAgB,eAAwB,QAAA,OAAO,GAAG,IAAI,WAAW,EAAE,MAAM,KAAM;EAErF,MAAM,WAAW,qBAAqB,SAAS,aAAa;EAG5D,MAAM,UAAU,eAAwB,CAAC,QAAA,QAAQ,IAAI,QAAQ,CAAC;EAE9D,SAAS,SAAe;GACtB,KAAK,OAAO;EACd;EAEA,SAAS,UAAU,OAA4B;GAC7C,IAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;IAC9C,MAAM,eAAe;IACrB,OAAO;GACT;EACF;EAEA,MAAM,YAAY,GAAG,EAAE,MAAM,4BAA4B,CAAC;;GAIxD,OAAAE,UAAA,GAAAC,mBAiDM,OAjDNC,WAiDM;IAhDH,OAAOC,MAAA,SAAA,CAAS,CAAA,EAAA,OAAUA,MAAA,EAAA,CAAE,CAAC,QAAA,YAAY,QAAQL,KAAAA,OAAO,KAAK,EAAA,CAAA;IAC7D,cAAY,QAAA,OAAI,SAAA;IACjB,kBAAA;GACaA,GAAAA;IAAAA,GAAAA,KAAAA;IAAM,OAAS,KAAA;GAAS,CAAA,GAAA,CAI7BC,KAAAA,OAAO,UADfC,UAAA,GAAAC,mBAyBM,OAAA;;IAvBH,IAAIE,MAAA,SAAA;IACL,OAAKC,eAAA,CAAC,0HAAwH,CACrH,QAAA,YAAY,QAAM,EAAA,UAAc,QAAA,WAAU,CAAA,CAAA,CAAA;IACnD,MAAK;IACL,UAAS;IACR,iBAAe,QAAA;IACf,iBAAeD,MAAA,SAAA;IAChB,0BAAA;IACC,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAM;IACb,WAAO,OAAA,OAAA,OAAA,MAAA,WAAE,UAAU,MAAM;GAE1BE,GAAAA,CAAAA,mBAKM,OAAA,EALA,OAAKD,eAAA,EAAA,MAAU,QAAA,WAAU,CAAA,EAAA,GAAA,CAC7BE,WAGE,KAAA,QAAA,UAAA,EADC,MAAM,QAAA,KAAI,CAAA,CAAA,GAAA,CAAA,GAGfC,YAKEC,iBAAA;IAJA,OAAKJ,eAAA,CAAC,4IAA0I,EAAA,eACvH,QAAA,KAAI,CAAA,CAAA;IAC7B,MAAK;IACJ,MAAM;GAIH,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA,CAAA,GAAA,IAAA,UAAA,KAAA,mBAAA,IAAA,IAAA,GAAA,QAAA,QAAQ,QAAA,SADhBJ,UAAA,GAAAC,mBAeM,OAAA;;IAbH,IAAIE,MAAA,SAAA;IACD,SAAA;IAAJ,KAAI;IACJ,OAAKC,eAAA,CAAC,uFAAqF,CAAA,EAAA,mBAC7DD,MAAA,OAAA,EAAO,GAAI,QAAA,YAAY,OAAO,CAAA,CAAA;IAC3D,gBAAcA,MAAA,OAAA,KAAW,KAAA;IACzB,OAAKO,eAAA,EAAA,QAAYP,MAAA,aAAA,EAAa,CAAA;IAC/B,MAAK;IACJ,mBAAiBA,MAAA,SAAA;IAClB,0BAAA;GAEAE,GAAAA,CAAAA,mBAEM,OAAA;IAFG,SAAA;IAAJ,KAAI;GACPC,GAAAA,CAAAA,WAAuB,KAAA,QAAA,SAAA,CAAA,GAAA,GAAA,CAAA,GAAA,IAAA,UAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,IAAA,UAAA"}
1
+ {"version":3,"file":"RuiAccordion.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots","_openBlock","_createElementBlock","_mergeProps","_unref","_normalizeClass","_createElementVNode","_renderSlot","_createVNode","Icon","_createCommentVNode","_normalizeStyle"],"sources":["../../../../src/components/accordions/accordion/RuiAccordion.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { HTMLAttributes } from 'vue';\nimport type { VueClassValue } from '@/types/class-value';\nimport Icon from '@/components/icons/RuiIcon.vue';\nimport { useClipWhileResizing } from '@/composables/clip-while-resizing';\nimport { cn } from '@/utils/tv';\nimport { accordionStyles } from './accordion-styles';\n\nexport interface RuiAccordionClassNames {\n root?: VueClassValue;\n header?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface AccordionProps {\n open?: boolean;\n eager?: boolean;\n headerGrow?: boolean;\n classNames?: RuiAccordionClassNames;\n}\n\ndefineOptions({\n name: 'RuiAccordion',\n inheritAttrs: false,\n});\n\nconst {\n open = false,\n eager = false,\n headerGrow = false,\n classNames,\n} = defineProps<AccordionProps & /* @vue-ignore */ Omit<HTMLAttributes, keyof AccordionProps | 'onClick'>>();\n\nconst emit = defineEmits<{\n click: [];\n}>();\n\ndefineSlots<{\n header?: (props: { open: boolean }) => any;\n default?: () => any;\n}>();\n\nconst inner = useTemplateRef<HTMLDivElement>('inner');\nconst content = useTemplateRef<HTMLDivElement>('content');\n\nconst triggerId = useId();\nconst contentId = useId();\nconst { height: innerHeight } = useElementSize(inner);\n\nconst contentHeight = computed<string>(() => (open ? `${get(innerHeight)}px` : '0px'));\n\nconst resizing = useClipWhileResizing(content, contentHeight);\n\n// a closed `eager` panel keeps its content at height 0, so it clips; an open one only while it resizes, so sticky content works\nconst clipped = computed<boolean>(() => !open || get(resizing));\n\nfunction toggle(): void {\n emit('click');\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n toggle();\n }\n}\n</script>\n\n<template>\n <div\n :class=\"accordionStyles({ class: cn(classNames?.root ?? $attrs.class) })\"\n :data-state=\"open ? 'open' : 'closed'\"\n data-accordion\n v-bind=\"{ ...$attrs, class: undefined }\"\n >\n <!-- rounded only while focused: a permanent radius bent any border an app draws on the header -->\n <div\n v-if=\"$slots.header\"\n :id=\"triggerId\"\n class=\"group flex gap-2 items-center cursor-pointer outline-hidden focus-visible:focus-ring focus-visible:rounded-rui-control\"\n :class=\"[classNames?.header, { 'w-full': headerGrow }]\"\n role=\"button\"\n tabindex=\"0\"\n :aria-expanded=\"open\"\n :aria-controls=\"contentId\"\n data-accordion-trigger\n @click=\"toggle()\"\n @keydown=\"onKeydown($event)\"\n >\n <div :class=\"{ grow: headerGrow }\">\n <slot\n name=\"header\"\n :open=\"open\"\n />\n </div>\n <Icon\n class=\"shrink-0 text-rui-text-secondary transition-[rotate,color] duration-200 ease-out group-hover:text-rui-text motion-reduce:transition-none\"\n :class=\"{ '-rotate-180': open }\"\n name=\"lu-chevron-down\"\n :size=\"16\"\n />\n </div>\n <div\n v-if=\"open || eager\"\n :id=\"contentId\"\n ref=\"content\"\n class=\"grow transition-[height] duration-200 ease-out w-full motion-reduce:transition-none\"\n :class=\"[{ 'overflow-hidden': clipped }, classNames?.content]\"\n :data-clipped=\"clipped || undefined\"\n :style=\"{ height: contentHeight }\"\n role=\"region\"\n :aria-labelledby=\"triggerId\"\n data-accordion-content\n >\n <div ref=\"inner\">\n <slot name=\"default\" />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,OAAO;EASb,MAAM,QAAQ,eAA+B,OAAO;EACpD,MAAM,UAAU,eAA+B,SAAS;EAExD,MAAM,YAAY,MAAM;EACxB,MAAM,YAAY,MAAM;EACxB,MAAM,EAAE,QAAQ,gBAAgB,eAAe,KAAK;EAEpD,MAAM,gBAAgB,eAAwB,QAAA,OAAO,GAAG,IAAI,WAAW,EAAE,MAAM,KAAM;EAErF,MAAM,WAAW,qBAAqB,SAAS,aAAa;EAG5D,MAAM,UAAU,eAAwB,CAAC,QAAA,QAAQ,IAAI,QAAQ,CAAC;EAE9D,SAAS,SAAe;GACtB,KAAK,OAAO;EACd;EAEA,SAAS,UAAU,OAA4B;GAC7C,IAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;IAC9C,MAAM,eAAe;IACrB,OAAO;GACT;EACF;;GAIE,OAAAE,UAAA,GAAAC,mBAiDM,OAjDNC,WAiDM;IAhDH,OAAOC,MAAA,eAAA,CAAe,CAAA,EAAA,OAAUA,MAAA,EAAA,CAAE,CAAC,QAAA,YAAY,QAAQL,KAAAA,OAAO,KAAK,EAAA,CAAA;IACnE,cAAY,QAAA,OAAI,SAAA;IACjB,kBAAA;GACaA,GAAAA;IAAAA,GAAAA,KAAAA;IAAM,OAAS,KAAA;GAAS,CAAA,GAAA,CAI7BC,KAAAA,OAAO,UADfC,UAAA,GAAAC,mBAyBM,OAAA;;IAvBH,IAAIE,MAAA,SAAA;IACL,OAAKC,eAAA,CAAC,0HAAwH,CACrH,QAAA,YAAY,QAAM,EAAA,UAAc,QAAA,WAAU,CAAA,CAAA,CAAA;IACnD,MAAK;IACL,UAAS;IACR,iBAAe,QAAA;IACf,iBAAeD,MAAA,SAAA;IAChB,0BAAA;IACC,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAM;IACb,WAAO,OAAA,OAAA,OAAA,MAAA,WAAE,UAAU,MAAM;GAE1BE,GAAAA,CAAAA,mBAKM,OAAA,EALA,OAAKD,eAAA,EAAA,MAAU,QAAA,WAAU,CAAA,EAAA,GAAA,CAC7BE,WAGE,KAAA,QAAA,UAAA,EADC,MAAM,QAAA,KAAI,CAAA,CAAA,GAAA,CAAA,GAGfC,YAKEC,iBAAA;IAJA,OAAKJ,eAAA,CAAC,4IAA0I,EAAA,eACvH,QAAA,KAAI,CAAA,CAAA;IAC7B,MAAK;IACJ,MAAM;GAIH,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA,CAAA,GAAA,IAAA,UAAA,KAAA,mBAAA,IAAA,IAAA,GAAA,QAAA,QAAQ,QAAA,SADhBJ,UAAA,GAAAC,mBAeM,OAAA;;IAbH,IAAIE,MAAA,SAAA;IACD,SAAA;IAAJ,KAAI;IACJ,OAAKC,eAAA,CAAC,uFAAqF,CAAA,EAAA,mBAC7DD,MAAA,OAAA,EAAO,GAAI,QAAA,YAAY,OAAO,CAAA,CAAA;IAC3D,gBAAcA,MAAA,OAAA,KAAW,KAAA;IACzB,OAAKO,eAAA,EAAA,QAAYP,MAAA,aAAA,EAAa,CAAA;IAC/B,MAAK;IACJ,mBAAiBA,MAAA,SAAA;IAClB,0BAAA;GAEAE,GAAAA,CAAAA,mBAEM,OAAA;IAFG,SAAA;IAAJ,KAAI;GACPC,GAAAA,CAAAA,WAAuB,KAAA,QAAA,SAAA,CAAA,GAAA,GAAA,CAAA,GAAA,IAAA,UAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,IAAA,UAAA"}
@@ -0,0 +1 @@
1
+ export declare const accordionStyles: import("tailwind-variants").TVReturnType<{} | {} | {}, undefined, "flex flex-col items-start", {} | {}, undefined, import("tailwind-variants").TVReturnTypeLike<unknown, undefined>>;
@@ -0,0 +1,7 @@
1
+ import { tv } from "../../../utils/tv.js";
2
+ //#region src/components/accordions/accordion/accordion-styles.ts
3
+ var accordionStyles = tv({ base: "flex flex-col items-start" });
4
+ //#endregion
5
+ export { accordionStyles };
6
+
7
+ //# sourceMappingURL=accordion-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion-styles.js","names":[],"sources":["../../../../src/components/accordions/accordion/accordion-styles.ts"],"sourcesContent":["import { tv } from '@/utils/tv';\n\nexport const accordionStyles = tv({ base: 'flex flex-col items-start' });\n"],"mappings":";;AAEA,IAAa,kBAAkB,GAAG,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuiAccordions.js","names":["_sfc_main"],"sources":["../../../../src/components/accordions/accordions/RuiAccordions.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { Fragment, isVNode } from 'vue';\n\nexport interface Props {\n multiple?: boolean;\n}\n\ndefineOptions({\n name: 'RuiAccordions',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<number[] | number>({ default: -1 });\n\nconst { multiple = false } = defineProps<Props>();\n\nconst internalValue = ref<number[] | number>();\n\nconst slots = useSlots();\n\n/**\n * Unwraps the Fragments a `v-for` or `<template>` makes, so each accordion gets its own index.\n * The placeholder a false `v-if` leaves keeps its index, so hiding one does not renumber the rest.\n *\n * @param nodes - the slot's top-level vnodes\n * @returns the accordions in order\n */\nfunction flattenSlotContent(nodes: VNode[]): VNode[] {\n return nodes.flatMap((node) => {\n if (node.type === Fragment && Array.isArray(node.children))\n return flattenSlotContent(node.children.filter(isVNode));\n\n return [node];\n });\n}\n\nconst children = computed<VNode[]>(() => {\n const accordions = flattenSlotContent(slots.default?.() ?? []);\n const currentValue = get(internalValue);\n\n return accordions.map((accordion, index) => {\n const open =\n multiple && Array.isArray(currentValue)\n ? currentValue.includes(index)\n : currentValue === index;\n\n return {\n ...accordion,\n props: {\n open,\n ...accordion.props,\n },\n };\n });\n});\n\nfunction updateValue(newModelValue: number): void {\n let newValue: number[] | number;\n const internal = get(internalValue);\n if (multiple && Array.isArray(internal)) {\n const temp = [...internal];\n const index = temp.indexOf(newModelValue);\n if (index === -1)\n temp.push(newModelValue);\n else temp.splice(index, 1);\n newValue = temp;\n }\n else {\n if (internal === newModelValue)\n newValue = -1;\n else newValue = newModelValue;\n }\n set(modelValue, newValue);\n set(internalValue, newValue);\n}\n\nwatch(\n [modelValue, () => multiple],\n ([value, isMultiple]) => {\n let internal: number | number[] = value;\n if (isMultiple && !Array.isArray(internal))\n internal = internal === -1 ? [] : [internal];\n else if (!isMultiple && Array.isArray(internal))\n internal = internal[0] ?? -1;\n\n set(internalValue, internal);\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <div v-bind=\"$attrs\">\n <Component\n :is=\"child\"\n v-for=\"(child, i) in children\"\n :key=\"i\"\n @click=\"updateValue(i)\"\n />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiAccordions.js","names":["_sfc_main"],"sources":["../../../../src/components/accordions/accordions/RuiAccordions.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"T extends number | number[]\">\nimport { Fragment, type HTMLAttributes, isVNode, type Ref } from 'vue';\nimport { type ModelValueEmits, usePropModel } from '@/composables/prop-model';\n\nexport interface Props {\n multiple?: boolean;\n}\n\ndefineOptions({\n name: 'RuiAccordions',\n inheritAttrs: false,\n});\n\nconst {\n multiple = false,\n modelValue: modelValueProp,\n} = defineProps<Props & {\n /**\n * The open panel's index, `-1` for none; with `multiple`, the open indices in an array. `T` is the\n * bound value's type, so a `Ref<number[]>` takes the update as is. Unbound, it reads as `-1`.\n *\n * @defaultValue -1\n */\n modelValue?: T;\n} & /* @vue-ignore */ Omit<HTMLAttributes, keyof Props>>();\n\ndefineEmits<ModelValueEmits<T>>();\n\n/*\n * A prop and an event rather than `defineModel`: the `-1` default is no `T`, and without a default\n * the update would be typed with an `undefined` it never carries. The component writes through the\n * wider ref.\n */\nconst modelValue: Ref<number | number[] | undefined> = usePropModel('modelValue', () => modelValueProp);\n\nconst internalValue = ref<number[] | number>();\n\nconst slots = useSlots();\n\n/**\n * Unwraps the Fragments a `v-for` or `<template>` makes, so each accordion gets its own index.\n * The placeholder a false `v-if` leaves keeps its index, so hiding one does not renumber the rest.\n *\n * @param nodes - the slot's top-level vnodes\n * @returns the accordions in order\n */\nfunction flattenSlotContent(nodes: VNode[]): VNode[] {\n return nodes.flatMap((node) => {\n if (node.type === Fragment && Array.isArray(node.children))\n return flattenSlotContent(node.children.filter(isVNode));\n\n return [node];\n });\n}\n\nconst children = computed<VNode[]>(() => {\n const accordions = flattenSlotContent(slots.default?.() ?? []);\n const currentValue = get(internalValue);\n\n return accordions.map((accordion, index) => {\n const open =\n multiple && Array.isArray(currentValue)\n ? currentValue.includes(index)\n : currentValue === index;\n\n return {\n ...accordion,\n props: {\n open,\n ...accordion.props,\n },\n };\n });\n});\n\nfunction updateValue(newModelValue: number): void {\n let newValue: number[] | number;\n const internal = get(internalValue);\n if (multiple && Array.isArray(internal)) {\n const temp = [...internal];\n const index = temp.indexOf(newModelValue);\n if (index === -1)\n temp.push(newModelValue);\n else temp.splice(index, 1);\n newValue = temp;\n }\n else {\n if (internal === newModelValue)\n newValue = -1;\n else newValue = newModelValue;\n }\n set(modelValue, newValue);\n set(internalValue, newValue);\n}\n\nwatch(\n [modelValue, () => multiple],\n ([value, isMultiple]) => {\n let internal: number | number[] = value ?? -1;\n if (isMultiple && !Array.isArray(internal))\n internal = internal === -1 ? [] : [internal];\n else if (!isMultiple && Array.isArray(internal))\n internal = internal[0] ?? -1;\n\n set(internalValue, internal);\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <div v-bind=\"$attrs\">\n <component\n :is=\"child\"\n v-for=\"(child, i) in children\"\n :key=\"i\"\n @click=\"updateValue(i)\"\n />\n </div>\n</template>\n"],"mappings":""}
@@ -1,15 +1,32 @@
1
+ import { type HTMLAttributes } from 'vue';
1
2
  export interface Props {
2
3
  multiple?: boolean;
3
4
  }
4
- type __VLS_Props = Props;
5
- type __VLS_ModelProps = {
6
- modelValue?: number[] | number;
5
+ declare const __VLS_export: <T extends number | number[]>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
6
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(Props & {
7
+ /**
8
+ * The open panel's index, `-1` for none; with `multiple`, the open indices in an array. `T` is the
9
+ * bound value's type, so a `Ref<number[]>` takes the update as is. Unbound, it reads as `-1`.
10
+ *
11
+ * @defaultValue -1
12
+ */
13
+ modelValue?: T;
14
+ } & Omit<HTMLAttributes, "multiple">) & {
15
+ "onUpdate:modelValue"?: ((value: T) => any) | undefined;
16
+ }> & (typeof globalThis extends {
17
+ __VLS_PROPS_FALLBACK: infer P;
18
+ } ? P : {});
19
+ expose: (exposed: {}) => void;
20
+ attrs: any;
21
+ slots: {};
22
+ emit: (evt: "update:modelValue", value: T) => void;
23
+ }>) => import("vue").VNode & {
24
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
7
25
  };
8
- type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
9
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
- "update:modelValue": (value: number | number[]) => any;
11
- }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
12
- "onUpdate:modelValue"?: ((value: number | number[]) => any) | undefined;
13
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
26
  declare const _default: typeof __VLS_export;
15
27
  export default _default;
28
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
29
+ [K in keyof T]: T[K];
30
+ } : {
31
+ [K in keyof T as K]: T[K];
32
+ }) & {};
@@ -1,20 +1,21 @@
1
1
  import { get, set } from "../../../vendor/@vueuse/shared/dist/index.js";
2
- import { Fragment, computed, createBlock, createElementBlock, defineComponent, guardReactiveProps, isVNode, mergeModels, normalizeProps, openBlock, ref, renderList, resolveDynamicComponent, unref, useModel, useSlots, watch } from "vue";
2
+ import { usePropModel } from "../../../composables/prop-model.js";
3
+ import { Fragment, computed, createBlock, createElementBlock, defineComponent, guardReactiveProps, isVNode, normalizeProps, openBlock, ref, renderList, resolveDynamicComponent, unref, useSlots, watch } from "vue";
3
4
  //#region src/components/accordions/accordions/RuiAccordions.vue?vue&type=script&setup=true&lang.ts
4
5
  var RuiAccordions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
6
  name: "RuiAccordions",
6
7
  inheritAttrs: false,
7
8
  __name: "RuiAccordions",
8
- props: /*@__PURE__*/ mergeModels({ multiple: {
9
- type: Boolean,
10
- default: false
11
- } }, {
12
- "modelValue": { default: -1 },
13
- "modelModifiers": {}
14
- }),
9
+ props: {
10
+ multiple: {
11
+ type: Boolean,
12
+ default: false
13
+ },
14
+ modelValue: {}
15
+ },
15
16
  emits: ["update:modelValue"],
16
17
  setup(__props) {
17
- const modelValue = useModel(__props, "modelValue");
18
+ const modelValue = usePropModel("modelValue", () => __props.modelValue);
18
19
  const internalValue = ref();
19
20
  const slots = useSlots();
20
21
  /**
@@ -59,7 +60,7 @@ var RuiAccordions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
59
60
  set(internalValue, newValue);
60
61
  }
61
62
  watch([modelValue, () => __props.multiple], ([value, isMultiple]) => {
62
- let internal = value;
63
+ let internal = value ?? -1;
63
64
  if (isMultiple && !Array.isArray(internal)) internal = internal === -1 ? [] : [internal];
64
65
  else if (!isMultiple && Array.isArray(internal)) internal = internal[0] ?? -1;
65
66
  set(internalValue, internal);
@@ -1 +1 @@
1
- {"version":3,"file":"RuiAccordions.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_useModel","_openBlock","_createElementBlock","_normalizeProps","_guardReactiveProps","_Fragment","_renderList","_unref","_createBlock","_resolveDynamicComponent"],"sources":["../../../../src/components/accordions/accordions/RuiAccordions.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { Fragment, isVNode } from 'vue';\n\nexport interface Props {\n multiple?: boolean;\n}\n\ndefineOptions({\n name: 'RuiAccordions',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<number[] | number>({ default: -1 });\n\nconst { multiple = false } = defineProps<Props>();\n\nconst internalValue = ref<number[] | number>();\n\nconst slots = useSlots();\n\n/**\n * Unwraps the Fragments a `v-for` or `<template>` makes, so each accordion gets its own index.\n * The placeholder a false `v-if` leaves keeps its index, so hiding one does not renumber the rest.\n *\n * @param nodes - the slot's top-level vnodes\n * @returns the accordions in order\n */\nfunction flattenSlotContent(nodes: VNode[]): VNode[] {\n return nodes.flatMap((node) => {\n if (node.type === Fragment && Array.isArray(node.children))\n return flattenSlotContent(node.children.filter(isVNode));\n\n return [node];\n });\n}\n\nconst children = computed<VNode[]>(() => {\n const accordions = flattenSlotContent(slots.default?.() ?? []);\n const currentValue = get(internalValue);\n\n return accordions.map((accordion, index) => {\n const open =\n multiple && Array.isArray(currentValue)\n ? currentValue.includes(index)\n : currentValue === index;\n\n return {\n ...accordion,\n props: {\n open,\n ...accordion.props,\n },\n };\n });\n});\n\nfunction updateValue(newModelValue: number): void {\n let newValue: number[] | number;\n const internal = get(internalValue);\n if (multiple && Array.isArray(internal)) {\n const temp = [...internal];\n const index = temp.indexOf(newModelValue);\n if (index === -1)\n temp.push(newModelValue);\n else temp.splice(index, 1);\n newValue = temp;\n }\n else {\n if (internal === newModelValue)\n newValue = -1;\n else newValue = newModelValue;\n }\n set(modelValue, newValue);\n set(internalValue, newValue);\n}\n\nwatch(\n [modelValue, () => multiple],\n ([value, isMultiple]) => {\n let internal: number | number[] = value;\n if (isMultiple && !Array.isArray(internal))\n internal = internal === -1 ? [] : [internal];\n else if (!isMultiple && Array.isArray(internal))\n internal = internal[0] ?? -1;\n\n set(internalValue, internal);\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <div v-bind=\"$attrs\">\n <Component\n :is=\"child\"\n v-for=\"(child, i) in children\"\n :key=\"i\"\n @click=\"updateValue(i)\"\n />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAYA,MAAM,aAAaC,SAA8B,SAAA,YAAgB;EAIjE,MAAM,gBAAgB,IAAuB;EAE7C,MAAM,QAAQ,SAAS;;;;;;;;EASvB,SAAS,mBAAmB,OAAyB;GACnD,OAAO,MAAM,SAAS,SAAS;IAC7B,IAAI,KAAK,SAAS,YAAY,MAAM,QAAQ,KAAK,QAAQ,GACvD,OAAO,mBAAmB,KAAK,SAAS,OAAO,OAAO,CAAC;IAEzD,OAAO,CAAC,IAAI;GACd,CAAC;EACH;EAEA,MAAM,WAAW,eAAwB;GACvC,MAAM,aAAa,mBAAmB,MAAM,UAAU,KAAK,CAAC,CAAC;GAC7D,MAAM,eAAe,IAAI,aAAa;GAEtC,OAAO,WAAW,KAAK,WAAW,UAAU;IAC1C,MAAM,OACJ,QAAA,YAAY,MAAM,QAAQ,YAAY,IAClC,aAAa,SAAS,KAAK,IAC3B,iBAAiB;IAEvB,OAAO;KACL,GAAG;KACH,OAAO;MACL;MACA,GAAG,UAAU;KACf;IACF;GACF,CAAC;EACH,CAAC;EAED,SAAS,YAAY,eAA6B;GAChD,IAAI;GACJ,MAAM,WAAW,IAAI,aAAa;GAClC,IAAI,QAAA,YAAY,MAAM,QAAQ,QAAQ,GAAG;IACvC,MAAM,OAAO,CAAC,GAAG,QAAQ;IACzB,MAAM,QAAQ,KAAK,QAAQ,aAAa;IACxC,IAAI,UAAU,IACZ,KAAK,KAAK,aAAa;SACpB,KAAK,OAAO,OAAO,CAAC;IACzB,WAAW;GACb,OAEE,IAAI,aAAa,eACf,WAAW;QACR,WAAW;GAElB,IAAI,YAAY,QAAQ;GACxB,IAAI,eAAe,QAAQ;EAC7B;EAEA,MACE,CAAC,kBAAkB,QAAA,QAAQ,IAC1B,CAAC,OAAO,gBAAgB;GACvB,IAAI,WAA8B;GAClC,IAAI,cAAc,CAAC,MAAM,QAAQ,QAAQ,GACvC,WAAW,aAAa,KAAK,CAAC,IAAI,CAAC,QAAQ;QACxC,IAAI,CAAC,cAAc,MAAM,QAAQ,QAAQ,GAC5C,WAAW,SAAS,MAAM;GAE5B,IAAI,eAAe,QAAQ;EAC7B,GACA,EAAE,WAAW,KAAK,CACpB;;GAIE,OAAAC,UAAA,GAAAC,mBAOM,OAAAC,eAAAC,mBAPOL,KAAAA,MAAM,CAAA,GAAA,EACjBE,UAAA,IAAA,GAAAC,mBAKEG,UAAA,MAAAC,WAHqBC,MAAA,QAAA,IAAb,OAAO,MAAC;IAFlB,OAAAN,UAAA,GAAAO,YAKEC,wBAJK,KAAK,GAAA;KAET,KAAK;KACL,UAAK,WAAE,YAAY,CAAC"}
1
+ {"version":3,"file":"RuiAccordions.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_openBlock","_createElementBlock","_normalizeProps","_guardReactiveProps","_Fragment","_renderList","_unref","_createBlock","_resolveDynamicComponent"],"sources":["../../../../src/components/accordions/accordions/RuiAccordions.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"T extends number | number[]\">\nimport { Fragment, type HTMLAttributes, isVNode, type Ref } from 'vue';\nimport { type ModelValueEmits, usePropModel } from '@/composables/prop-model';\n\nexport interface Props {\n multiple?: boolean;\n}\n\ndefineOptions({\n name: 'RuiAccordions',\n inheritAttrs: false,\n});\n\nconst {\n multiple = false,\n modelValue: modelValueProp,\n} = defineProps<Props & {\n /**\n * The open panel's index, `-1` for none; with `multiple`, the open indices in an array. `T` is the\n * bound value's type, so a `Ref<number[]>` takes the update as is. Unbound, it reads as `-1`.\n *\n * @defaultValue -1\n */\n modelValue?: T;\n} & /* @vue-ignore */ Omit<HTMLAttributes, keyof Props>>();\n\ndefineEmits<ModelValueEmits<T>>();\n\n/*\n * A prop and an event rather than `defineModel`: the `-1` default is no `T`, and without a default\n * the update would be typed with an `undefined` it never carries. The component writes through the\n * wider ref.\n */\nconst modelValue: Ref<number | number[] | undefined> = usePropModel('modelValue', () => modelValueProp);\n\nconst internalValue = ref<number[] | number>();\n\nconst slots = useSlots();\n\n/**\n * Unwraps the Fragments a `v-for` or `<template>` makes, so each accordion gets its own index.\n * The placeholder a false `v-if` leaves keeps its index, so hiding one does not renumber the rest.\n *\n * @param nodes - the slot's top-level vnodes\n * @returns the accordions in order\n */\nfunction flattenSlotContent(nodes: VNode[]): VNode[] {\n return nodes.flatMap((node) => {\n if (node.type === Fragment && Array.isArray(node.children))\n return flattenSlotContent(node.children.filter(isVNode));\n\n return [node];\n });\n}\n\nconst children = computed<VNode[]>(() => {\n const accordions = flattenSlotContent(slots.default?.() ?? []);\n const currentValue = get(internalValue);\n\n return accordions.map((accordion, index) => {\n const open =\n multiple && Array.isArray(currentValue)\n ? currentValue.includes(index)\n : currentValue === index;\n\n return {\n ...accordion,\n props: {\n open,\n ...accordion.props,\n },\n };\n });\n});\n\nfunction updateValue(newModelValue: number): void {\n let newValue: number[] | number;\n const internal = get(internalValue);\n if (multiple && Array.isArray(internal)) {\n const temp = [...internal];\n const index = temp.indexOf(newModelValue);\n if (index === -1)\n temp.push(newModelValue);\n else temp.splice(index, 1);\n newValue = temp;\n }\n else {\n if (internal === newModelValue)\n newValue = -1;\n else newValue = newModelValue;\n }\n set(modelValue, newValue);\n set(internalValue, newValue);\n}\n\nwatch(\n [modelValue, () => multiple],\n ([value, isMultiple]) => {\n let internal: number | number[] = value ?? -1;\n if (isMultiple && !Array.isArray(internal))\n internal = internal === -1 ? [] : [internal];\n else if (!isMultiple && Array.isArray(internal))\n internal = internal[0] ?? -1;\n\n set(internalValue, internal);\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <div v-bind=\"$attrs\">\n <component\n :is=\"child\"\n v-for=\"(child, i) in children\"\n :key=\"i\"\n @click=\"updateValue(i)\"\n />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;EAiCA,MAAM,aAAiD,aAAa,oBAAoB,QAAA,UAAc;EAEtG,MAAM,gBAAgB,IAAuB;EAE7C,MAAM,QAAQ,SAAS;;;;;;;;EASvB,SAAS,mBAAmB,OAAyB;GACnD,OAAO,MAAM,SAAS,SAAS;IAC7B,IAAI,KAAK,SAAS,YAAY,MAAM,QAAQ,KAAK,QAAQ,GACvD,OAAO,mBAAmB,KAAK,SAAS,OAAO,OAAO,CAAC;IAEzD,OAAO,CAAC,IAAI;GACd,CAAC;EACH;EAEA,MAAM,WAAW,eAAwB;GACvC,MAAM,aAAa,mBAAmB,MAAM,UAAU,KAAK,CAAC,CAAC;GAC7D,MAAM,eAAe,IAAI,aAAa;GAEtC,OAAO,WAAW,KAAK,WAAW,UAAU;IAC1C,MAAM,OACJ,QAAA,YAAY,MAAM,QAAQ,YAAY,IAClC,aAAa,SAAS,KAAK,IAC3B,iBAAiB;IAEvB,OAAO;KACL,GAAG;KACH,OAAO;MACL;MACA,GAAG,UAAU;KACf;IACF;GACF,CAAC;EACH,CAAC;EAED,SAAS,YAAY,eAA6B;GAChD,IAAI;GACJ,MAAM,WAAW,IAAI,aAAa;GAClC,IAAI,QAAA,YAAY,MAAM,QAAQ,QAAQ,GAAG;IACvC,MAAM,OAAO,CAAC,GAAG,QAAQ;IACzB,MAAM,QAAQ,KAAK,QAAQ,aAAa;IACxC,IAAI,UAAU,IACZ,KAAK,KAAK,aAAa;SACpB,KAAK,OAAO,OAAO,CAAC;IACzB,WAAW;GACb,OAEE,IAAI,aAAa,eACf,WAAW;QACR,WAAW;GAElB,IAAI,YAAY,QAAQ;GACxB,IAAI,eAAe,QAAQ;EAC7B;EAEA,MACE,CAAC,kBAAkB,QAAA,QAAQ,IAC1B,CAAC,OAAO,gBAAgB;GACvB,IAAI,WAA8B,SAAS;GAC3C,IAAI,cAAc,CAAC,MAAM,QAAQ,QAAQ,GACvC,WAAW,aAAa,KAAK,CAAC,IAAI,CAAC,QAAQ;QACxC,IAAI,CAAC,cAAc,MAAM,QAAQ,QAAQ,GAC5C,WAAW,SAAS,MAAM;GAE5B,IAAI,eAAe,QAAQ;EAC7B,GACA,EAAE,WAAW,KAAK,CACpB;;GAIE,OAAAC,UAAA,GAAAC,mBAOM,OAAAC,eAAAC,mBAPOJ,KAAAA,MAAM,CAAA,GAAA,EACjBC,UAAA,IAAA,GAAAC,mBAKEG,UAAA,MAAAC,WAHqBC,MAAA,QAAA,IAAb,OAAO,MAAC;IAFlB,OAAAN,UAAA,GAAAO,YAKEC,wBAJK,KAAK,GAAA;KAET,KAAK;KACL,UAAK,WAAE,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuiAlert.js","names":["_sfc_main"],"sources":["../../../src/components/alerts/RuiAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { tv } from '@/utils/tv';\n\nexport interface Props {\n title?: string;\n description?: string;\n type?: ContextColorsType;\n icon?: RuiIcons;\n variant?: 'default' | 'filled' | 'outlined';\n actionText?: string;\n closeable?: boolean;\n}\n\ndefineOptions({\n name: 'RuiAlert',\n inheritAttrs: false,\n});\n\nconst {\n title = '',\n description = '',\n type = 'primary',\n icon = undefined,\n variant = 'default',\n actionText = '',\n closeable = false,\n} = defineProps<Props>();\n\nconst emit = defineEmits<{\n action: [];\n close: [];\n}>();\n\nconst slots = defineSlots<{\n title?: () => any;\n default?: () => any;\n}>();\n\nconst alertStyles = tv({\n slots: {\n root: 'px-4 py-2.5 rounded-rui-panel flex between:ml-4 between:mr-0',\n content: 'flex between:ml-3 between:mr-0 py-1 grow',\n // as tall as the first line of text and centered in it, so the icon lines up however the text wraps\n icon: 'flex shrink-0 items-center',\n texts: 'between:mt-1 between:mb-0 grow',\n action: '',\n close: '',\n },\n variants: {\n // the first line is the title's (24px) when there is one, else the description's (text-sm, 20px)\n titled: {\n true: { icon: 'h-6' },\n false: { icon: 'h-5' },\n },\n variant: {\n default: {},\n filled: {\n icon: 'text-rui-dark-text!',\n texts: 'text-rui-dark-text!',\n action: 'text-rui-dark-text!',\n close: 'text-rui-dark-text!',\n },\n outlined: { root: 'border -m-px bg-transparent' },\n },\n /*\n * Each type names its color once, as `--rui-alert`, and the variants mix from it. Tints and\n * shades used to be paused CSS animations behind an `@supports (color-mix())` check that never\n * matched (not a valid condition); mixing directly gives the same colors without them.\n */\n type: {\n primary: { root: '[--rui-alert:var(--rui-primary-main)]' },\n secondary: { root: '[--rui-alert:var(--rui-secondary-main)]' },\n // a status color's dark `main` is a text tone, so a filled alert takes the deep `darker` there\n error: { root: '[--rui-alert:var(--rui-error-main)] [--rui-alert-fill:var(--rui-error-darker)]' },\n warning: { root: '[--rui-alert:var(--rui-warning-main)] [--rui-alert-fill:var(--rui-warning-darker)]' },\n info: { root: '[--rui-alert:var(--rui-info-main)] [--rui-alert-fill:var(--rui-info-darker)]' },\n success: { root: '[--rui-alert:var(--rui-success-main)] [--rui-alert-fill:var(--rui-success-darker)]' },\n },\n },\n compoundVariants: [\n // A tint of the type's color with a hairline of it, which reads on any surface in either theme\n {\n variant: 'default',\n class: { root: 'border -m-px bg-[color-mix(in_srgb,rgb(var(--rui-alert))_8%,transparent)] dark:bg-[color-mix(in_srgb,rgb(var(--rui-alert))_12%,transparent)] border-[color-mix(in_srgb,rgb(var(--rui-alert))_25%,transparent)]' },\n },\n { variant: 'filled', class: { root: 'bg-[rgb(var(--rui-alert))] dark:bg-[rgb(var(--rui-alert-fill,var(--rui-alert)))]' } },\n // without a tint behind it, the outlined alert carries its type in the icon too\n { variant: 'outlined', class: { root: 'border-[rgb(var(--rui-alert))]', icon: 'text-[rgb(var(--rui-alert))]' } },\n ],\n compoundSlots: [\n {\n slots: ['texts', 'action', 'close'],\n variant: ['default', 'outlined'],\n class: 'text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]',\n },\n {\n slots: ['icon'],\n variant: 'default',\n class: 'text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]',\n },\n ],\n});\n\nconst ui = computed<ReturnType<typeof alertStyles>>(() => alertStyles({ variant, type, titled: !!slots.title || !!title }));\n\nconst usedIcon = computed<RuiIcons | undefined>(() => {\n if (icon)\n return icon;\n\n const iconMap: Record<ContextColorsType, RuiIcons | undefined> = {\n primary: undefined,\n secondary: undefined,\n warning: 'lu-triangle-alert',\n info: 'lu-info',\n error: 'lu-circle-alert',\n success: 'lu-circle-check',\n };\n\n return iconMap[type];\n});\n</script>\n\n<template>\n <div\n :class=\"ui.root()\"\n v-bind=\"$attrs\"\n :data-variant=\"variant\"\n :data-type=\"type\"\n >\n <div :class=\"ui.content()\">\n <div\n v-if=\"usedIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon\n :name=\"usedIcon\"\n size=\"20\"\n />\n </div>\n <div :class=\"ui.texts()\">\n <div\n v-if=\"$slots.title || title\"\n :class=\"{\n 'font-medium': !!title,\n }\"\n >\n <slot name=\"title\">\n {{ title }}\n </slot>\n </div>\n\n <div\n v-if=\"$slots.default || description\"\n class=\"text-body-2\"\n >\n <slot>\n {{ description }}\n </slot>\n </div>\n </div>\n </div>\n <div v-if=\"actionText\">\n <RuiButton\n variant=\"text\"\n size=\"sm\"\n :color=\"variant === 'filled' ? undefined : type\"\n :class=\"ui.action()\"\n data-id=\"alert-action\"\n @click=\"emit('action')\"\n >\n {{ actionText }}\n </RuiButton>\n </div>\n <div v-if=\"closeable\">\n <RuiButton\n :color=\"variant === 'filled' ? undefined : type\"\n size=\"sm\"\n icon\n variant=\"text\"\n :class=\"ui.close()\"\n data-id=\"alert-close\"\n @click=\"emit('close')\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiAlert.js","names":["_sfc_main"],"sources":["../../../src/components/alerts/RuiAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { alertStyles } from './alert-styles';\n\nexport interface Props {\n title?: string;\n description?: string;\n type?: ContextColorsType;\n icon?: RuiIcons;\n variant?: 'default' | 'filled' | 'outlined';\n actionText?: string;\n closeable?: boolean;\n}\n\ndefineOptions({\n name: 'RuiAlert',\n inheritAttrs: false,\n});\n\nconst {\n title = '',\n description = '',\n type = 'primary',\n icon = undefined,\n variant = 'default',\n actionText = '',\n closeable = false,\n} = defineProps<Props & /* @vue-ignore */ Omit<HTMLAttributes, keyof Props>>();\n\nconst emit = defineEmits<{\n action: [];\n close: [];\n}>();\n\nconst slots = defineSlots<{\n title?: () => any;\n default?: () => any;\n}>();\n\nconst ui = computed<ReturnType<typeof alertStyles>>(() => alertStyles({ variant, type, titled: !!slots.title || !!title }));\n\nconst usedIcon = computed<RuiIcons | undefined>(() => {\n if (icon)\n return icon;\n\n const iconMap: Record<ContextColorsType, RuiIcons | undefined> = {\n primary: undefined,\n secondary: undefined,\n warning: 'lu-triangle-alert',\n info: 'lu-info',\n error: 'lu-circle-alert',\n success: 'lu-circle-check',\n };\n\n return iconMap[type];\n});\n</script>\n\n<template>\n <div\n :class=\"ui.root()\"\n v-bind=\"$attrs\"\n :data-variant=\"variant\"\n :data-type=\"type\"\n >\n <div :class=\"ui.content()\">\n <div\n v-if=\"usedIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon\n :name=\"usedIcon\"\n size=\"20\"\n />\n </div>\n <div :class=\"ui.texts()\">\n <div\n v-if=\"$slots.title || title\"\n :class=\"{\n 'font-medium': !!title,\n }\"\n >\n <slot name=\"title\">\n {{ title }}\n </slot>\n </div>\n\n <div\n v-if=\"$slots.default || description\"\n class=\"text-body-2\"\n >\n <slot>\n {{ description }}\n </slot>\n </div>\n </div>\n </div>\n <div v-if=\"actionText\">\n <RuiButton\n variant=\"text\"\n size=\"sm\"\n :color=\"variant === 'filled' ? undefined : type\"\n :class=\"ui.action()\"\n data-id=\"alert-action\"\n @click=\"emit('action')\"\n >\n {{ actionText }}\n </RuiButton>\n </div>\n <div v-if=\"closeable\">\n <RuiButton\n :color=\"variant === 'filled' ? undefined : type\"\n size=\"sm\"\n icon\n variant=\"text\"\n :class=\"ui.close()\"\n data-id=\"alert-close\"\n @click=\"emit('close')\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import type { HTMLAttributes } from 'vue';
1
2
  import type { ContextColorsType } from '../../consts/colors.js';
2
3
  import type { RuiIcons } from '../../icons/index.js';
3
4
  export interface Props {
@@ -9,14 +10,15 @@ export interface Props {
9
10
  actionText?: string;
10
11
  closeable?: boolean;
11
12
  }
13
+ type __VLS_Props = Props & /* @vue-ignore */ Omit<HTMLAttributes, keyof Props>;
12
14
  type __VLS_Slots = {
13
15
  title?: () => any;
14
16
  default?: () => any;
15
17
  };
16
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
18
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
19
  close: () => any;
18
20
  action: () => any;
19
- }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
21
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
20
22
  onClose?: (() => any) | undefined;
21
23
  onAction?: (() => any) | undefined;
22
24
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,6 +1,6 @@
1
- import { tv } from "../../utils/tv.js";
2
1
  import RuiIcon_default from "../icons/RuiIcon.js";
3
2
  import RuiButton_default from "../buttons/button/RuiButton.js";
3
+ import { alertStyles } from "./alert-styles.js";
4
4
  import { computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, renderSlot, toDisplayString, unref, useSlots, withCtx } from "vue";
5
5
  //#region src/components/alerts/RuiAlert.vue?vue&type=script&setup=true&lang.ts
6
6
  var _hoisted_1 = ["data-variant", "data-type"];
@@ -30,70 +30,6 @@ var RuiAlert_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
30
30
  setup(__props, { emit: __emit }) {
31
31
  const emit = __emit;
32
32
  const slots = useSlots();
33
- const alertStyles = tv({
34
- slots: {
35
- root: "px-4 py-2.5 rounded-rui-panel flex between:ml-4 between:mr-0",
36
- content: "flex between:ml-3 between:mr-0 py-1 grow",
37
- icon: "flex shrink-0 items-center",
38
- texts: "between:mt-1 between:mb-0 grow",
39
- action: "",
40
- close: ""
41
- },
42
- variants: {
43
- titled: {
44
- true: { icon: "h-6" },
45
- false: { icon: "h-5" }
46
- },
47
- variant: {
48
- default: {},
49
- filled: {
50
- icon: "text-rui-dark-text!",
51
- texts: "text-rui-dark-text!",
52
- action: "text-rui-dark-text!",
53
- close: "text-rui-dark-text!"
54
- },
55
- outlined: { root: "border -m-px bg-transparent" }
56
- },
57
- type: {
58
- primary: { root: "[--rui-alert:var(--rui-primary-main)]" },
59
- secondary: { root: "[--rui-alert:var(--rui-secondary-main)]" },
60
- error: { root: "[--rui-alert:var(--rui-error-main)] [--rui-alert-fill:var(--rui-error-darker)]" },
61
- warning: { root: "[--rui-alert:var(--rui-warning-main)] [--rui-alert-fill:var(--rui-warning-darker)]" },
62
- info: { root: "[--rui-alert:var(--rui-info-main)] [--rui-alert-fill:var(--rui-info-darker)]" },
63
- success: { root: "[--rui-alert:var(--rui-success-main)] [--rui-alert-fill:var(--rui-success-darker)]" }
64
- }
65
- },
66
- compoundVariants: [
67
- {
68
- variant: "default",
69
- class: { root: "border -m-px bg-[color-mix(in_srgb,rgb(var(--rui-alert))_8%,transparent)] dark:bg-[color-mix(in_srgb,rgb(var(--rui-alert))_12%,transparent)] border-[color-mix(in_srgb,rgb(var(--rui-alert))_25%,transparent)]" }
70
- },
71
- {
72
- variant: "filled",
73
- class: { root: "bg-[rgb(var(--rui-alert))] dark:bg-[rgb(var(--rui-alert-fill,var(--rui-alert)))]" }
74
- },
75
- {
76
- variant: "outlined",
77
- class: {
78
- root: "border-[rgb(var(--rui-alert))]",
79
- icon: "text-[rgb(var(--rui-alert))]"
80
- }
81
- }
82
- ],
83
- compoundSlots: [{
84
- slots: [
85
- "texts",
86
- "action",
87
- "close"
88
- ],
89
- variant: ["default", "outlined"],
90
- class: "text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]"
91
- }, {
92
- slots: ["icon"],
93
- variant: "default",
94
- class: "text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]"
95
- }]
96
- });
97
33
  const ui = computed(() => alertStyles({
98
34
  variant: __props.variant,
99
35
  type: __props.type,
@@ -1 +1 @@
1
- {"version":3,"file":"RuiAlert.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots","_useSlots","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_createVNode","RuiIcon","_createCommentVNode","_renderSlot","_createTextVNode","_toDisplayString","RuiButton","_withCtx"],"sources":["../../../src/components/alerts/RuiAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { tv } from '@/utils/tv';\n\nexport interface Props {\n title?: string;\n description?: string;\n type?: ContextColorsType;\n icon?: RuiIcons;\n variant?: 'default' | 'filled' | 'outlined';\n actionText?: string;\n closeable?: boolean;\n}\n\ndefineOptions({\n name: 'RuiAlert',\n inheritAttrs: false,\n});\n\nconst {\n title = '',\n description = '',\n type = 'primary',\n icon = undefined,\n variant = 'default',\n actionText = '',\n closeable = false,\n} = defineProps<Props>();\n\nconst emit = defineEmits<{\n action: [];\n close: [];\n}>();\n\nconst slots = defineSlots<{\n title?: () => any;\n default?: () => any;\n}>();\n\nconst alertStyles = tv({\n slots: {\n root: 'px-4 py-2.5 rounded-rui-panel flex between:ml-4 between:mr-0',\n content: 'flex between:ml-3 between:mr-0 py-1 grow',\n // as tall as the first line of text and centered in it, so the icon lines up however the text wraps\n icon: 'flex shrink-0 items-center',\n texts: 'between:mt-1 between:mb-0 grow',\n action: '',\n close: '',\n },\n variants: {\n // the first line is the title's (24px) when there is one, else the description's (text-sm, 20px)\n titled: {\n true: { icon: 'h-6' },\n false: { icon: 'h-5' },\n },\n variant: {\n default: {},\n filled: {\n icon: 'text-rui-dark-text!',\n texts: 'text-rui-dark-text!',\n action: 'text-rui-dark-text!',\n close: 'text-rui-dark-text!',\n },\n outlined: { root: 'border -m-px bg-transparent' },\n },\n /*\n * Each type names its color once, as `--rui-alert`, and the variants mix from it. Tints and\n * shades used to be paused CSS animations behind an `@supports (color-mix())` check that never\n * matched (not a valid condition); mixing directly gives the same colors without them.\n */\n type: {\n primary: { root: '[--rui-alert:var(--rui-primary-main)]' },\n secondary: { root: '[--rui-alert:var(--rui-secondary-main)]' },\n // a status color's dark `main` is a text tone, so a filled alert takes the deep `darker` there\n error: { root: '[--rui-alert:var(--rui-error-main)] [--rui-alert-fill:var(--rui-error-darker)]' },\n warning: { root: '[--rui-alert:var(--rui-warning-main)] [--rui-alert-fill:var(--rui-warning-darker)]' },\n info: { root: '[--rui-alert:var(--rui-info-main)] [--rui-alert-fill:var(--rui-info-darker)]' },\n success: { root: '[--rui-alert:var(--rui-success-main)] [--rui-alert-fill:var(--rui-success-darker)]' },\n },\n },\n compoundVariants: [\n // A tint of the type's color with a hairline of it, which reads on any surface in either theme\n {\n variant: 'default',\n class: { root: 'border -m-px bg-[color-mix(in_srgb,rgb(var(--rui-alert))_8%,transparent)] dark:bg-[color-mix(in_srgb,rgb(var(--rui-alert))_12%,transparent)] border-[color-mix(in_srgb,rgb(var(--rui-alert))_25%,transparent)]' },\n },\n { variant: 'filled', class: { root: 'bg-[rgb(var(--rui-alert))] dark:bg-[rgb(var(--rui-alert-fill,var(--rui-alert)))]' } },\n // without a tint behind it, the outlined alert carries its type in the icon too\n { variant: 'outlined', class: { root: 'border-[rgb(var(--rui-alert))]', icon: 'text-[rgb(var(--rui-alert))]' } },\n ],\n compoundSlots: [\n {\n slots: ['texts', 'action', 'close'],\n variant: ['default', 'outlined'],\n class: 'text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]',\n },\n {\n slots: ['icon'],\n variant: 'default',\n class: 'text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]',\n },\n ],\n});\n\nconst ui = computed<ReturnType<typeof alertStyles>>(() => alertStyles({ variant, type, titled: !!slots.title || !!title }));\n\nconst usedIcon = computed<RuiIcons | undefined>(() => {\n if (icon)\n return icon;\n\n const iconMap: Record<ContextColorsType, RuiIcons | undefined> = {\n primary: undefined,\n secondary: undefined,\n warning: 'lu-triangle-alert',\n info: 'lu-info',\n error: 'lu-circle-alert',\n success: 'lu-circle-check',\n };\n\n return iconMap[type];\n});\n</script>\n\n<template>\n <div\n :class=\"ui.root()\"\n v-bind=\"$attrs\"\n :data-variant=\"variant\"\n :data-type=\"type\"\n >\n <div :class=\"ui.content()\">\n <div\n v-if=\"usedIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon\n :name=\"usedIcon\"\n size=\"20\"\n />\n </div>\n <div :class=\"ui.texts()\">\n <div\n v-if=\"$slots.title || title\"\n :class=\"{\n 'font-medium': !!title,\n }\"\n >\n <slot name=\"title\">\n {{ title }}\n </slot>\n </div>\n\n <div\n v-if=\"$slots.default || description\"\n class=\"text-body-2\"\n >\n <slot>\n {{ description }}\n </slot>\n </div>\n </div>\n </div>\n <div v-if=\"actionText\">\n <RuiButton\n variant=\"text\"\n size=\"sm\"\n :color=\"variant === 'filled' ? undefined : type\"\n :class=\"ui.action()\"\n data-id=\"alert-action\"\n @click=\"emit('action')\"\n >\n {{ actionText }}\n </RuiButton>\n </div>\n <div v-if=\"closeable\">\n <RuiButton\n :color=\"variant === 'filled' ? undefined : type\"\n size=\"sm\"\n icon\n variant=\"text\"\n :class=\"ui.close()\"\n data-id=\"alert-close\"\n @click=\"emit('close')\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCA,MAAM,OAAO;EAKb,MAAM,QAAQE,SAAA;EAKd,MAAM,cAAc,GAAG;GACrB,OAAO;IACL,MAAM;IACN,SAAS;IAET,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;GACT;GACA,UAAU;IAER,QAAQ;KACN,MAAM,EAAE,MAAM,MAAM;KACpB,OAAO,EAAE,MAAM,MAAM;IACvB;IACA,SAAS;KACP,SAAS,CAAC;KACV,QAAQ;MACN,MAAM;MACN,OAAO;MACP,QAAQ;MACR,OAAO;KACT;KACA,UAAU,EAAE,MAAM,8BAA8B;IAClD;IAMA,MAAM;KACJ,SAAS,EAAE,MAAM,wCAAwC;KACzD,WAAW,EAAE,MAAM,0CAA0C;KAE7D,OAAO,EAAE,MAAM,iFAAiF;KAChG,SAAS,EAAE,MAAM,qFAAqF;KACtG,MAAM,EAAE,MAAM,+EAA+E;KAC7F,SAAS,EAAE,MAAM,qFAAqF;IACxG;GACF;GACA,kBAAkB;IAEhB;KACE,SAAS;KACT,OAAO,EAAE,MAAM,iNAAiN;IAClO;IACA;KAAE,SAAS;KAAU,OAAO,EAAE,MAAM,mFAAmF;IAAE;IAEzH;KAAE,SAAS;KAAY,OAAO;MAAE,MAAM;MAAkC,MAAM;KAA+B;IAAE;GACjH;GACA,eAAe,CACb;IACE,OAAO;KAAC;KAAS;KAAU;IAAO;IAClC,SAAS,CAAC,WAAW,UAAU;IAC/B,OAAO;GACT,GACA;IACE,OAAO,CAAC,MAAM;IACd,SAAS;IACT,OAAO;GACT,CACF;EACF,CAAC;EAED,MAAM,KAAK,eAA+C,YAAY;GAAE,SAAM,QAAA;GAAG,MAAG,QAAA;GAAG,QAAQ,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,QAAA;EAAM,CAAC,CAAC;EAE1H,MAAM,WAAW,eAAqC;GACpD,IAAI,QAAA,MACF,OAAO,QAAA;GAWT,OAAO;IARL,SAAS,KAAA;IACT,WAAW,KAAA;IACX,SAAS;IACT,MAAM;IACN,OAAO;IACP,SAAS;GAGJ,EAAQ,QAAA;EACjB,CAAC;;GAIC,OAAAC,UAAA,GAAAC,mBAkEM,OAlENC,WAkEM,EAjEH,OAAOC,MAAA,EAAA,CAAE,CAAC,KAAI,EACPN,GAAAA,KAAAA,QAAM;IACb,gBAAc,QAAA;IACd,aAAW,QAAA;;IAEZO,mBA+BM,OAAA,EA/BA,OAAKC,eAAEF,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA,EAAA,GAAA,CAEbA,MAAA,QAAA,KADRH,UAAA,GAAAC,mBAQM,OAAA;;KANH,OAAKI,eAAEF,MAAA,EAAA,CAAE,CAAC,KAAI,CAAA;IAEfG,GAAAA,CAAAA,YAGEC,iBAAA;KAFC,MAAMJ,MAAA,QAAA;KACP,MAAK;IAGTC,GAAAA,MAAAA,GAAAA,CAAAA,MAAAA,CAAAA,CAAAA,GAAAA,CAAAA,KAAAA,mBAAAA,IAAAA,IAAAA,GAAAA,mBAoBM,OAAA,EApBA,OAAKC,eAAEF,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA,EAAA,GAAA,CAEXL,KAAAA,OAAO,SAAS,QAAA,SADxBE,UAAA,GAAAC,mBASM,OAAA;;KAPH,OAAKI,eAAA,EAAiC,eAAA,CAAA,CAAA,QAAA,MAAA,CAAA;IAIvCI,GAAAA,CAAAA,WAEO,KAAA,QAAA,SAAA,CAAA,SAAA,CADFC,gBAAAC,gBAAA,QAAA,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,GAKJb,KAAAA,OAAO,WAAW,QAAA,eAD1BE,UAAA,GAAAC,mBAOM,OAPN,YAOM,CAHJQ,WAEO,KAAA,QAAA,WAAA,CAAA,SAAA,CADFC,gBAAAC,gBAAA,QAAA,WAAW,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA;IAKX,QAAA,cAAXX,UAAA,GAAAC,mBAWM,OAAA,YAAA,CAVJK,YASYM,mBAAA;KARV,SAAQ;KACR,MAAK;KACJ,OAAO,QAAA,YAAO,WAAgB,KAAA,IAAY,QAAA;KAC1C,OAAKP,eAAEF,MAAA,EAAA,CAAE,CAAC,OAAM,CAAA;KACjB,WAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAA;;KAEZ,SAAAU,cAAgB,CAAbH,gBAAAC,gBAAA,QAAA,UAAU,GAAA,CAAA,CAAA,CAAA;;;IAGN,QAAA,aAAXX,UAAA,GAAAC,mBAeM,OAAA,YAAA,CAdJK,YAaYM,mBAAA;KAZT,OAAO,QAAA,YAAO,WAAgB,KAAA,IAAY,QAAA;KAC3C,MAAK;KACL,MAAA;KACA,SAAQ;KACP,OAAKP,eAAEF,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA;KAChB,WAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,OAAA;;KAEZ,SAAAU,cAGE,CAHFP,YAGEC,iBAAA;MAFA,MAAK;MACL,MAAK"}
1
+ {"version":3,"file":"RuiAlert.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots","_useSlots","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_createVNode","RuiIcon","_createCommentVNode","_renderSlot","_createTextVNode","_toDisplayString","RuiButton","_withCtx"],"sources":["../../../src/components/alerts/RuiAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { alertStyles } from './alert-styles';\n\nexport interface Props {\n title?: string;\n description?: string;\n type?: ContextColorsType;\n icon?: RuiIcons;\n variant?: 'default' | 'filled' | 'outlined';\n actionText?: string;\n closeable?: boolean;\n}\n\ndefineOptions({\n name: 'RuiAlert',\n inheritAttrs: false,\n});\n\nconst {\n title = '',\n description = '',\n type = 'primary',\n icon = undefined,\n variant = 'default',\n actionText = '',\n closeable = false,\n} = defineProps<Props & /* @vue-ignore */ Omit<HTMLAttributes, keyof Props>>();\n\nconst emit = defineEmits<{\n action: [];\n close: [];\n}>();\n\nconst slots = defineSlots<{\n title?: () => any;\n default?: () => any;\n}>();\n\nconst ui = computed<ReturnType<typeof alertStyles>>(() => alertStyles({ variant, type, titled: !!slots.title || !!title }));\n\nconst usedIcon = computed<RuiIcons | undefined>(() => {\n if (icon)\n return icon;\n\n const iconMap: Record<ContextColorsType, RuiIcons | undefined> = {\n primary: undefined,\n secondary: undefined,\n warning: 'lu-triangle-alert',\n info: 'lu-info',\n error: 'lu-circle-alert',\n success: 'lu-circle-check',\n };\n\n return iconMap[type];\n});\n</script>\n\n<template>\n <div\n :class=\"ui.root()\"\n v-bind=\"$attrs\"\n :data-variant=\"variant\"\n :data-type=\"type\"\n >\n <div :class=\"ui.content()\">\n <div\n v-if=\"usedIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon\n :name=\"usedIcon\"\n size=\"20\"\n />\n </div>\n <div :class=\"ui.texts()\">\n <div\n v-if=\"$slots.title || title\"\n :class=\"{\n 'font-medium': !!title,\n }\"\n >\n <slot name=\"title\">\n {{ title }}\n </slot>\n </div>\n\n <div\n v-if=\"$slots.default || description\"\n class=\"text-body-2\"\n >\n <slot>\n {{ description }}\n </slot>\n </div>\n </div>\n </div>\n <div v-if=\"actionText\">\n <RuiButton\n variant=\"text\"\n size=\"sm\"\n :color=\"variant === 'filled' ? undefined : type\"\n :class=\"ui.action()\"\n data-id=\"alert-action\"\n @click=\"emit('action')\"\n >\n {{ actionText }}\n </RuiButton>\n </div>\n <div v-if=\"closeable\">\n <RuiButton\n :color=\"variant === 'filled' ? undefined : type\"\n size=\"sm\"\n icon\n variant=\"text\"\n :class=\"ui.close()\"\n data-id=\"alert-close\"\n @click=\"emit('close')\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,OAAO;EAKb,MAAM,QAAQE,SAAA;EAKd,MAAM,KAAK,eAA+C,YAAY;GAAE,SAAM,QAAA;GAAG,MAAG,QAAA;GAAG,QAAQ,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,QAAA;EAAM,CAAC,CAAC;EAE1H,MAAM,WAAW,eAAqC;GACpD,IAAI,QAAA,MACF,OAAO,QAAA;GAWT,OAAO;IARL,SAAS,KAAA;IACT,WAAW,KAAA;IACX,SAAS;IACT,MAAM;IACN,OAAO;IACP,SAAS;GAGJ,EAAQ,QAAA;EACjB,CAAC;;GAIC,OAAAC,UAAA,GAAAC,mBAkEM,OAlENC,WAkEM,EAjEH,OAAOC,MAAA,EAAA,CAAE,CAAC,KAAI,EACPN,GAAAA,KAAAA,QAAM;IACb,gBAAc,QAAA;IACd,aAAW,QAAA;;IAEZO,mBA+BM,OAAA,EA/BA,OAAKC,eAAEF,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA,EAAA,GAAA,CAEbA,MAAA,QAAA,KADRH,UAAA,GAAAC,mBAQM,OAAA;;KANH,OAAKI,eAAEF,MAAA,EAAA,CAAE,CAAC,KAAI,CAAA;IAEfG,GAAAA,CAAAA,YAGEC,iBAAA;KAFC,MAAMJ,MAAA,QAAA;KACP,MAAK;IAGTC,GAAAA,MAAAA,GAAAA,CAAAA,MAAAA,CAAAA,CAAAA,GAAAA,CAAAA,KAAAA,mBAAAA,IAAAA,IAAAA,GAAAA,mBAoBM,OAAA,EApBA,OAAKC,eAAEF,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA,EAAA,GAAA,CAEXL,KAAAA,OAAO,SAAS,QAAA,SADxBE,UAAA,GAAAC,mBASM,OAAA;;KAPH,OAAKI,eAAA,EAAiC,eAAA,CAAA,CAAA,QAAA,MAAA,CAAA;IAIvCI,GAAAA,CAAAA,WAEO,KAAA,QAAA,SAAA,CAAA,SAAA,CADFC,gBAAAC,gBAAA,QAAA,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,GAKJb,KAAAA,OAAO,WAAW,QAAA,eAD1BE,UAAA,GAAAC,mBAOM,OAPN,YAOM,CAHJQ,WAEO,KAAA,QAAA,WAAA,CAAA,SAAA,CADFC,gBAAAC,gBAAA,QAAA,WAAW,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA;IAKX,QAAA,cAAXX,UAAA,GAAAC,mBAWM,OAAA,YAAA,CAVJK,YASYM,mBAAA;KARV,SAAQ;KACR,MAAK;KACJ,OAAO,QAAA,YAAO,WAAgB,KAAA,IAAY,QAAA;KAC1C,OAAKP,eAAEF,MAAA,EAAA,CAAE,CAAC,OAAM,CAAA;KACjB,WAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAA;;KAEZ,SAAAU,cAAgB,CAAbH,gBAAAC,gBAAA,QAAA,UAAU,GAAA,CAAA,CAAA,CAAA;;;IAGN,QAAA,aAAXX,UAAA,GAAAC,mBAeM,OAAA,YAAA,CAdJK,YAaYM,mBAAA;KAZT,OAAO,QAAA,YAAO,WAAgB,KAAA,IAAY,QAAA;KAC3C,MAAK;KACL,MAAA;KACA,SAAQ;KACP,OAAKP,eAAEF,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA;KAChB,WAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,OAAA;;KAEZ,SAAAU,cAGE,CAHFP,YAGEC,iBAAA;MAFA,MAAK;MACL,MAAK"}
@@ -0,0 +1,145 @@
1
+ export declare const alertStyles: import("tailwind-variants").TVReturnType<{
2
+ titled: {
3
+ true: {
4
+ icon: string;
5
+ };
6
+ false: {
7
+ icon: string;
8
+ };
9
+ };
10
+ variant: {
11
+ default: {};
12
+ filled: {
13
+ icon: string;
14
+ texts: string;
15
+ action: string;
16
+ close: string;
17
+ };
18
+ outlined: {
19
+ root: string;
20
+ };
21
+ };
22
+ type: {
23
+ primary: {
24
+ root: string;
25
+ };
26
+ secondary: {
27
+ root: string;
28
+ };
29
+ error: {
30
+ root: string;
31
+ };
32
+ warning: {
33
+ root: string;
34
+ };
35
+ info: {
36
+ root: string;
37
+ };
38
+ success: {
39
+ root: string;
40
+ };
41
+ };
42
+ }, {
43
+ root: string;
44
+ content: string;
45
+ icon: string;
46
+ texts: string;
47
+ action: string;
48
+ close: string;
49
+ }, undefined, {
50
+ titled: {
51
+ true: {
52
+ icon: string;
53
+ };
54
+ false: {
55
+ icon: string;
56
+ };
57
+ };
58
+ variant: {
59
+ default: {};
60
+ filled: {
61
+ icon: string;
62
+ texts: string;
63
+ action: string;
64
+ close: string;
65
+ };
66
+ outlined: {
67
+ root: string;
68
+ };
69
+ };
70
+ type: {
71
+ primary: {
72
+ root: string;
73
+ };
74
+ secondary: {
75
+ root: string;
76
+ };
77
+ error: {
78
+ root: string;
79
+ };
80
+ warning: {
81
+ root: string;
82
+ };
83
+ info: {
84
+ root: string;
85
+ };
86
+ success: {
87
+ root: string;
88
+ };
89
+ };
90
+ }, {
91
+ root: string;
92
+ content: string;
93
+ icon: string;
94
+ texts: string;
95
+ action: string;
96
+ close: string;
97
+ }, import("tailwind-variants").TVReturnTypeLike<{
98
+ titled: {
99
+ true: {
100
+ icon: string;
101
+ };
102
+ false: {
103
+ icon: string;
104
+ };
105
+ };
106
+ variant: {
107
+ default: {};
108
+ filled: {
109
+ icon: string;
110
+ texts: string;
111
+ action: string;
112
+ close: string;
113
+ };
114
+ outlined: {
115
+ root: string;
116
+ };
117
+ };
118
+ type: {
119
+ primary: {
120
+ root: string;
121
+ };
122
+ secondary: {
123
+ root: string;
124
+ };
125
+ error: {
126
+ root: string;
127
+ };
128
+ warning: {
129
+ root: string;
130
+ };
131
+ info: {
132
+ root: string;
133
+ };
134
+ success: {
135
+ root: string;
136
+ };
137
+ };
138
+ }, {
139
+ root: string;
140
+ content: string;
141
+ icon: string;
142
+ texts: string;
143
+ action: string;
144
+ close: string;
145
+ }>>;