@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
@@ -0,0 +1,193 @@
1
+ export declare const badgeStyles: import("tailwind-variants").TVReturnType<{
2
+ color: {
3
+ default: {
4
+ badge: string;
5
+ };
6
+ primary: {
7
+ badge: string;
8
+ };
9
+ secondary: {
10
+ badge: string;
11
+ };
12
+ error: {
13
+ badge: string;
14
+ };
15
+ warning: {
16
+ badge: string;
17
+ };
18
+ info: {
19
+ badge: string;
20
+ };
21
+ success: {
22
+ badge: string;
23
+ };
24
+ };
25
+ size: {
26
+ sm: {
27
+ badge: string;
28
+ };
29
+ md: {
30
+ badge: string;
31
+ };
32
+ lg: {
33
+ badge: string;
34
+ };
35
+ };
36
+ rounded: {
37
+ sm: {
38
+ badge: string;
39
+ };
40
+ md: {
41
+ badge: string;
42
+ };
43
+ lg: {
44
+ badge: string;
45
+ };
46
+ full: {
47
+ badge: string;
48
+ };
49
+ };
50
+ dot: {
51
+ true: {
52
+ badge: string;
53
+ };
54
+ };
55
+ iconOnly: {
56
+ true: {
57
+ content: string;
58
+ };
59
+ false: {};
60
+ };
61
+ }, {
62
+ wrapper: string;
63
+ badge: string;
64
+ content: string;
65
+ }, undefined, {
66
+ color: {
67
+ default: {
68
+ badge: string;
69
+ };
70
+ primary: {
71
+ badge: string;
72
+ };
73
+ secondary: {
74
+ badge: string;
75
+ };
76
+ error: {
77
+ badge: string;
78
+ };
79
+ warning: {
80
+ badge: string;
81
+ };
82
+ info: {
83
+ badge: string;
84
+ };
85
+ success: {
86
+ badge: string;
87
+ };
88
+ };
89
+ size: {
90
+ sm: {
91
+ badge: string;
92
+ };
93
+ md: {
94
+ badge: string;
95
+ };
96
+ lg: {
97
+ badge: string;
98
+ };
99
+ };
100
+ rounded: {
101
+ sm: {
102
+ badge: string;
103
+ };
104
+ md: {
105
+ badge: string;
106
+ };
107
+ lg: {
108
+ badge: string;
109
+ };
110
+ full: {
111
+ badge: string;
112
+ };
113
+ };
114
+ dot: {
115
+ true: {
116
+ badge: string;
117
+ };
118
+ };
119
+ iconOnly: {
120
+ true: {
121
+ content: string;
122
+ };
123
+ false: {};
124
+ };
125
+ }, {
126
+ wrapper: string;
127
+ badge: string;
128
+ content: string;
129
+ }, import("tailwind-variants").TVReturnTypeLike<{
130
+ color: {
131
+ default: {
132
+ badge: string;
133
+ };
134
+ primary: {
135
+ badge: string;
136
+ };
137
+ secondary: {
138
+ badge: string;
139
+ };
140
+ error: {
141
+ badge: string;
142
+ };
143
+ warning: {
144
+ badge: string;
145
+ };
146
+ info: {
147
+ badge: string;
148
+ };
149
+ success: {
150
+ badge: string;
151
+ };
152
+ };
153
+ size: {
154
+ sm: {
155
+ badge: string;
156
+ };
157
+ md: {
158
+ badge: string;
159
+ };
160
+ lg: {
161
+ badge: string;
162
+ };
163
+ };
164
+ rounded: {
165
+ sm: {
166
+ badge: string;
167
+ };
168
+ md: {
169
+ badge: string;
170
+ };
171
+ lg: {
172
+ badge: string;
173
+ };
174
+ full: {
175
+ badge: string;
176
+ };
177
+ };
178
+ dot: {
179
+ true: {
180
+ badge: string;
181
+ };
182
+ };
183
+ iconOnly: {
184
+ true: {
185
+ content: string;
186
+ };
187
+ false: {};
188
+ };
189
+ }, {
190
+ wrapper: string;
191
+ badge: string;
192
+ content: string;
193
+ }>>;
@@ -0,0 +1,88 @@
1
+ import { tv } from "../../../utils/tv.js";
2
+ //#region src/components/overlays/badge/badge-styles.ts
3
+ var badgeStyles = tv({
4
+ slots: {
5
+ wrapper: "relative inline-block",
6
+ badge: "flex items-center justify-center text-xs font-medium tabular-nums absolute bg-transparent text-rui-text",
7
+ content: "flex items-center gap-1 px-1.5"
8
+ },
9
+ variants: {
10
+ color: {
11
+ default: { badge: "bg-rui-neutral-200 dark:bg-rui-neutral-700" },
12
+ primary: { badge: "bg-rui-primary-fill text-rui-primary-foreground" },
13
+ secondary: { badge: "bg-rui-secondary-fill text-rui-secondary-foreground" },
14
+ error: { badge: "bg-rui-error-fill text-rui-error-foreground" },
15
+ warning: { badge: "bg-rui-warning-fill text-rui-warning-foreground" },
16
+ info: { badge: "bg-rui-info-fill text-rui-info-foreground" },
17
+ success: { badge: "bg-rui-success-fill text-rui-success-foreground" }
18
+ },
19
+ size: {
20
+ sm: { badge: "min-h-4 min-w-4 text-caption-2 [--rui-icon-size:0.625rem]" },
21
+ md: { badge: "min-h-5 min-w-5 [--rui-icon-size:0.75rem]" },
22
+ lg: { badge: "min-h-6 min-w-6 [--rui-icon-size:0.875rem]" }
23
+ },
24
+ rounded: {
25
+ sm: { badge: "rounded-xs" },
26
+ md: { badge: "rounded-rui-control" },
27
+ lg: { badge: "rounded-rui-card" },
28
+ full: { badge: "rounded-full" }
29
+ },
30
+ dot: { true: { badge: "ring-2 ring-rui-surface" } },
31
+ iconOnly: {
32
+ true: { content: "px-0" },
33
+ false: {}
34
+ }
35
+ },
36
+ compoundVariants: [
37
+ {
38
+ dot: true,
39
+ color: "default",
40
+ class: { badge: "bg-rui-neutral-500 dark:bg-rui-neutral-400" }
41
+ },
42
+ {
43
+ dot: true,
44
+ color: "error",
45
+ class: { badge: "dark:bg-rui-error" }
46
+ },
47
+ {
48
+ dot: true,
49
+ color: "warning",
50
+ class: { badge: "dark:bg-rui-warning" }
51
+ },
52
+ {
53
+ dot: true,
54
+ color: "info",
55
+ class: { badge: "dark:bg-rui-info" }
56
+ },
57
+ {
58
+ dot: true,
59
+ color: "success",
60
+ class: { badge: "dark:bg-rui-success" }
61
+ },
62
+ {
63
+ dot: true,
64
+ size: "sm",
65
+ class: { badge: "min-w-2 min-h-2" }
66
+ },
67
+ {
68
+ dot: true,
69
+ size: "md",
70
+ class: { badge: "min-w-2.5 min-h-2.5" }
71
+ },
72
+ {
73
+ dot: true,
74
+ size: "lg",
75
+ class: { badge: "min-w-3 min-h-3" }
76
+ }
77
+ ],
78
+ defaultVariants: {
79
+ color: "primary",
80
+ size: "md",
81
+ rounded: "full",
82
+ dot: false
83
+ }
84
+ });
85
+ //#endregion
86
+ export { badgeStyles };
87
+
88
+ //# sourceMappingURL=badge-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge-styles.js","names":[],"sources":["../../../../src/components/overlays/badge/badge-styles.ts"],"sourcesContent":["import { tv } from '@/utils/tv';\n\nexport const badgeStyles = tv({\n slots: {\n wrapper: 'relative inline-block',\n badge: 'flex items-center justify-center text-xs font-medium tabular-nums absolute bg-transparent text-rui-text',\n content: 'flex items-center gap-1 px-1.5',\n },\n variants: {\n // `-fill` is `main` in light and, for a status color, the deep `darker` in dark, where `main` is a text tone\n color: {\n default: { badge: 'bg-rui-neutral-200 dark:bg-rui-neutral-700' },\n primary: { badge: 'bg-rui-primary-fill text-rui-primary-foreground' },\n secondary: { badge: 'bg-rui-secondary-fill text-rui-secondary-foreground' },\n error: { badge: 'bg-rui-error-fill text-rui-error-foreground' },\n warning: { badge: 'bg-rui-warning-fill text-rui-warning-foreground' },\n info: { badge: 'bg-rui-info-fill text-rui-info-foreground' },\n success: { badge: 'bg-rui-success-fill text-rui-success-foreground' },\n },\n // the icon is 60% of the badge height, as the text is, rather than filling it\n size: {\n sm: { badge: 'min-h-4 min-w-4 text-caption-2 [--rui-icon-size:0.625rem]' },\n md: { badge: 'min-h-5 min-w-5 [--rui-icon-size:0.75rem]' },\n lg: { badge: 'min-h-6 min-w-6 [--rui-icon-size:0.875rem]' },\n },\n rounded: {\n sm: { badge: 'rounded-xs' },\n md: { badge: 'rounded-rui-control' },\n lg: { badge: 'rounded-rui-card' },\n full: { badge: 'rounded-full' },\n },\n // A surface ring keeps a dot apart from whatever it overlaps, such as an avatar edge\n dot: {\n true: { badge: 'ring-2 ring-rui-surface' },\n },\n // an icon alone needs no side padding, so the badge stays as wide as it is tall\n iconOnly: {\n true: { content: 'px-0' },\n false: {},\n },\n },\n compoundVariants: [\n // the default dot is a step lighter in dark, where neutral-500 nearly vanished against a dark control\n { dot: true, color: 'default', class: { badge: 'bg-rui-neutral-500 dark:bg-rui-neutral-400' } },\n // A dot carries no text, so it keeps the brighter `main`, which reads better as a small mark on a dark page\n { dot: true, color: 'error', class: { badge: 'dark:bg-rui-error' } },\n { dot: true, color: 'warning', class: { badge: 'dark:bg-rui-warning' } },\n { dot: true, color: 'info', class: { badge: 'dark:bg-rui-info' } },\n { dot: true, color: 'success', class: { badge: 'dark:bg-rui-success' } },\n\n // Dot sizes: 8, 10 and 12px, since half of a dot sits off the corner and reads smaller than it is\n { dot: true, size: 'sm', class: { badge: 'min-w-2 min-h-2' } },\n { dot: true, size: 'md', class: { badge: 'min-w-2.5 min-h-2.5' } },\n { dot: true, size: 'lg', class: { badge: 'min-w-3 min-h-3' } },\n ],\n defaultVariants: {\n color: 'primary',\n size: 'md',\n rounded: 'full',\n dot: false,\n },\n});\n"],"mappings":";;AAEA,IAAa,cAAc,GAAG;CAC5B,OAAO;EACL,SAAS;EACT,OAAO;EACP,SAAS;CACX;CACA,UAAU;EAER,OAAO;GACL,SAAS,EAAE,OAAO,6CAA6C;GAC/D,SAAS,EAAE,OAAO,kDAAkD;GACpE,WAAW,EAAE,OAAO,sDAAsD;GAC1E,OAAO,EAAE,OAAO,8CAA8C;GAC9D,SAAS,EAAE,OAAO,kDAAkD;GACpE,MAAM,EAAE,OAAO,4CAA4C;GAC3D,SAAS,EAAE,OAAO,kDAAkD;EACtE;EAEA,MAAM;GACJ,IAAI,EAAE,OAAO,4DAA4D;GACzE,IAAI,EAAE,OAAO,4CAA4C;GACzD,IAAI,EAAE,OAAO,6CAA6C;EAC5D;EACA,SAAS;GACP,IAAI,EAAE,OAAO,aAAa;GAC1B,IAAI,EAAE,OAAO,sBAAsB;GACnC,IAAI,EAAE,OAAO,mBAAmB;GAChC,MAAM,EAAE,OAAO,eAAe;EAChC;EAEA,KAAK,EACH,MAAM,EAAE,OAAO,0BAA0B,EAC3C;EAEA,UAAU;GACR,MAAM,EAAE,SAAS,OAAO;GACxB,OAAO,CAAC;EACV;CACF;CACA,kBAAkB;EAEhB;GAAE,KAAK;GAAM,OAAO;GAAW,OAAO,EAAE,OAAO,6CAA6C;EAAE;EAE9F;GAAE,KAAK;GAAM,OAAO;GAAS,OAAO,EAAE,OAAO,oBAAoB;EAAE;EACnE;GAAE,KAAK;GAAM,OAAO;GAAW,OAAO,EAAE,OAAO,sBAAsB;EAAE;EACvE;GAAE,KAAK;GAAM,OAAO;GAAQ,OAAO,EAAE,OAAO,mBAAmB;EAAE;EACjE;GAAE,KAAK;GAAM,OAAO;GAAW,OAAO,EAAE,OAAO,sBAAsB;EAAE;EAGvE;GAAE,KAAK;GAAM,MAAM;GAAM,OAAO,EAAE,OAAO,kBAAkB;EAAE;EAC7D;GAAE,KAAK;GAAM,MAAM;GAAM,OAAO,EAAE,OAAO,sBAAsB;EAAE;EACjE;GAAE,KAAK;GAAM,MAAM;GAAM,OAAO,EAAE,OAAO,kBAAkB;EAAE;CAC/D;CACA,iBAAiB;EACf,OAAO;EACP,MAAM;EACN,SAAS;EACT,KAAK;CACP;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuiBottomSheet.js","names":["_sfc_main"],"sources":["../../../../src/components/overlays/bottom-sheet/RuiBottomSheet.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport RuiDialog from '@/components/overlays/dialog/RuiDialog.vue';\n\n/** The sheet's props, which stay in step with RuiDialog's. */\nexport interface BottomSheetProps {\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n}\n\ndefineOptions({\n name: 'RuiBottomSheet',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst { persistent = false, width, maxWidth } = defineProps<BottomSheetProps>();\n</script>\n\n<template>\n <RuiDialog\n v-model=\"modelValue\"\n bottom-sheet\n v-bind=\"$attrs\"\n :persistent=\"persistent\"\n :width=\"width\"\n :max-width=\"maxWidth\"\n >\n <template\n v-for=\"slot in Object.keys($slots)\"\n #[slot]=\"scope\"\n >\n <slot\n v-bind=\"scope\"\n :name=\"slot\"\n />\n </template>\n </RuiDialog>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiBottomSheet.js","names":["_sfc_main"],"sources":["../../../../src/components/overlays/bottom-sheet/RuiBottomSheet.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport RuiDialog, { type DialogSlots } from '@/components/overlays/dialog/RuiDialog.vue';\n\n/** The sheet's props, which stay in step with RuiDialog's. */\nexport interface BottomSheetProps {\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n}\n\n/**\n * What the sheet forwards to its RuiDialog through `$attrs`: the dialog's other props and its events\n * (`click:esc`, `click:outside`, `closed`, `dismiss`), besides the HTML attributes.\n */\ntype DialogAttributes = Omit<InstanceType<typeof RuiDialog>['$props'], keyof BottomSheetProps | 'bottomSheet' | 'modelValue' | 'onUpdate:modelValue'>;\n\ndefineOptions({\n name: 'RuiBottomSheet',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst { persistent = false, width, maxWidth } = defineProps<BottomSheetProps & /* @vue-ignore */ DialogAttributes>();\n\ndefineSlots<{\n activator?: DialogSlots['activator'];\n default?: DialogSlots['default'];\n}>();\n</script>\n\n<template>\n <RuiDialog\n v-model=\"modelValue\"\n bottom-sheet\n v-bind=\"$attrs\"\n :persistent=\"persistent\"\n :width=\"width\"\n :max-width=\"maxWidth\"\n >\n <template #activator=\"scope\">\n <slot\n name=\"activator\"\n v-bind=\"scope\"\n />\n </template>\n <template #default=\"scope\">\n <slot v-bind=\"scope\" />\n </template>\n </RuiDialog>\n</template>\n"],"mappings":""}
@@ -1,18 +1,24 @@
1
+ import RuiDialog, { type DialogSlots } from '../dialog/RuiDialog.vue.js';
1
2
  /** The sheet's props, which stay in step with RuiDialog's. */
2
3
  export interface BottomSheetProps {
3
4
  persistent?: boolean;
4
5
  width?: string | number;
5
6
  maxWidth?: string | number;
6
7
  }
7
- type __VLS_Props = BottomSheetProps;
8
+ /**
9
+ * What the sheet forwards to its RuiDialog through `$attrs`: the dialog's other props and its events
10
+ * (`click:esc`, `click:outside`, `closed`, `dismiss`), besides the HTML attributes.
11
+ */
12
+ type DialogAttributes = Omit<InstanceType<typeof RuiDialog>['$props'], keyof BottomSheetProps | 'bottomSheet' | 'modelValue' | 'onUpdate:modelValue'>;
13
+ type __VLS_Props = BottomSheetProps & /* @vue-ignore */ DialogAttributes;
14
+ type __VLS_Slots = {
15
+ activator?: DialogSlots['activator'];
16
+ default?: DialogSlots['default'];
17
+ };
8
18
  type __VLS_ModelProps = {
9
19
  modelValue?: boolean;
10
20
  };
11
21
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
12
- declare var __VLS_10: string, __VLS_11: any;
13
- type __VLS_Slots = {} & {
14
- [K in NonNullable<typeof __VLS_10>]?: (props: typeof __VLS_11) => any;
15
- };
16
22
  declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
23
  "update:modelValue": (value: boolean) => any;
18
24
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
@@ -1,5 +1,5 @@
1
1
  import RuiDialog_default from "../dialog/RuiDialog.js";
2
- import { createBlock, createSlots, defineComponent, guardReactiveProps, mergeModels, mergeProps, normalizeProps, openBlock, renderList, renderSlot, useModel, withCtx } from "vue";
2
+ import { createBlock, defineComponent, guardReactiveProps, mergeModels, mergeProps, normalizeProps, openBlock, renderSlot, useModel, withCtx } from "vue";
3
3
  //#region src/components/overlays/bottom-sheet/RuiBottomSheet.vue?vue&type=script&setup=true&lang.ts
4
4
  var RuiBottomSheet_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
5
  name: "RuiBottomSheet",
@@ -31,12 +31,11 @@ var RuiBottomSheet_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
31
31
  persistent: __props.persistent,
32
32
  width: __props.width,
33
33
  "max-width": __props.maxWidth
34
- }), createSlots({ _: 2 }, [renderList(Object.keys(_ctx.$slots), (slot) => {
35
- return {
36
- name: slot,
37
- fn: withCtx((scope) => [renderSlot(_ctx.$slots, slot, normalizeProps(guardReactiveProps(scope)))])
38
- };
39
- })]), 1040, [
34
+ }), {
35
+ activator: withCtx((scope) => [renderSlot(_ctx.$slots, "activator", normalizeProps(guardReactiveProps(scope)))]),
36
+ default: withCtx((scope) => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(scope)))]),
37
+ _: 3
38
+ }, 16, [
40
39
  "modelValue",
41
40
  "persistent",
42
41
  "width",
@@ -1 +1 @@
1
- {"version":3,"file":"RuiBottomSheet.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots","_useModel","_openBlock","_createBlock","RuiDialog","_mergeProps","_createSlots","_renderList","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps"],"sources":["../../../../src/components/overlays/bottom-sheet/RuiBottomSheet.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport RuiDialog from '@/components/overlays/dialog/RuiDialog.vue';\n\n/** The sheet's props, which stay in step with RuiDialog's. */\nexport interface BottomSheetProps {\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n}\n\ndefineOptions({\n name: 'RuiBottomSheet',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst { persistent = false, width, maxWidth } = defineProps<BottomSheetProps>();\n</script>\n\n<template>\n <RuiDialog\n v-model=\"modelValue\"\n bottom-sheet\n v-bind=\"$attrs\"\n :persistent=\"persistent\"\n :width=\"width\"\n :max-width=\"maxWidth\"\n >\n <template\n v-for=\"slot in Object.keys($slots)\"\n #[slot]=\"scope\"\n >\n <slot\n v-bind=\"scope\"\n :name=\"slot\"\n />\n </template>\n </RuiDialog>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAeA,MAAM,aAAaE,SAAoB,SAAA,YAAmB;;GAMxD,OAAAC,UAAA,GAAAC,YAiBYC,mBAjBZC,WAiBY;IAhBD,YAAA,WAAA;IAAA,uBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,WAAU,QAAA;IACnB,gBAAA;GACQN,GAAAA,KAAAA,QAAM;IACb,YAAY,QAAA;IACZ,OAAO,QAAA;IACP,aAAW,QAAA;GAGKQ,CAAAA,GAAAA,YAAAA,EAAAA,GAAAA,EAAAA,GAAAA,CAAAA,WAAA,OAAO,KAAKP,KAAAA,MAAM,IAA1B,SAAI;;KACV,MAAA;KAED,IAAAQ,SAFS,UAAK,CAEdC,WAGE,KAAA,QADO,MAAIC,eAAAC,mBADH,KAAK,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"RuiBottomSheet.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_useModel","_openBlock","_createBlock","RuiDialog","_mergeProps","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps"],"sources":["../../../../src/components/overlays/bottom-sheet/RuiBottomSheet.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport RuiDialog, { type DialogSlots } from '@/components/overlays/dialog/RuiDialog.vue';\n\n/** The sheet's props, which stay in step with RuiDialog's. */\nexport interface BottomSheetProps {\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n}\n\n/**\n * What the sheet forwards to its RuiDialog through `$attrs`: the dialog's other props and its events\n * (`click:esc`, `click:outside`, `closed`, `dismiss`), besides the HTML attributes.\n */\ntype DialogAttributes = Omit<InstanceType<typeof RuiDialog>['$props'], keyof BottomSheetProps | 'bottomSheet' | 'modelValue' | 'onUpdate:modelValue'>;\n\ndefineOptions({\n name: 'RuiBottomSheet',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst { persistent = false, width, maxWidth } = defineProps<BottomSheetProps & /* @vue-ignore */ DialogAttributes>();\n\ndefineSlots<{\n activator?: DialogSlots['activator'];\n default?: DialogSlots['default'];\n}>();\n</script>\n\n<template>\n <RuiDialog\n v-model=\"modelValue\"\n bottom-sheet\n v-bind=\"$attrs\"\n :persistent=\"persistent\"\n :width=\"width\"\n :max-width=\"maxWidth\"\n >\n <template #activator=\"scope\">\n <slot\n name=\"activator\"\n v-bind=\"scope\"\n />\n </template>\n <template #default=\"scope\">\n <slot v-bind=\"scope\" />\n </template>\n </RuiDialog>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAqBA,MAAM,aAAaC,SAAoB,SAAA,YAAmB;;GAWxD,OAAAC,UAAA,GAAAC,YAiBYC,mBAjBZC,WAiBY;IAhBD,YAAA,WAAA;IAAA,uBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,WAAU,QAAA;IACnB,gBAAA;GACQL,GAAAA,KAAAA,QAAM;IACb,YAAY,QAAA;IACZ,OAAO,QAAA;IACP,aAAW,QAAA;;IAED,WAASM,SAAE,UAAK,CACzBC,WAGE,KAAA,QAAA,aAAAC,eAAAC,mBADQ,KAAK,CAAA,CAAA,CAAA,CAAA;IAGN,SAAOH,SAAE,UAAK,CACvBC,WAAuB,KAAA,QAAA,WAAAC,eAAAC,mBAAT,KAAK,CAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDialog.js","names":["_sfc_main"],"sources":["../../../../src/components/overlays/dialog/RuiDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { DialogSize } from '@/consts/tokens';\nimport type { VueClassValue } from '@/types/class-value';\nimport { ButtonGroupBoundary } from '@/components/buttons/button-group/button-group-context';\nimport { useDismissableOverlay } from '@/composables/overlay-stack';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { getNonRootAttrs, getRootAttrs, transformPropsUnit } from '@/utils/helpers';\nimport { cn, tv } from '@/utils/tv';\n\nexport interface RuiDialogClassNames {\n root?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface DialogProps {\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n /** A preset max width, `--rui-dialog-<size>`; an explicit `maxWidth` wins */\n size?: DialogSize;\n bottomSheet?: boolean;\n classNames?: RuiDialogClassNames;\n zIndex?: string | number;\n ariaLabel?: string;\n}\n\ndefineOptions({\n name: 'RuiDialog',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n persistent = false,\n width = '98%',\n maxWidth,\n size,\n bottomSheet = false,\n classNames,\n zIndex = 'var(--rui-z-dialog)',\n ariaLabel,\n} = defineProps<DialogProps>();\n\nconst emit = defineEmits<{\n 'closed': [];\n 'click:outside': [];\n 'click:esc': [];\n /**\n * The overlay stack asked this dialog to go, which is what a back gesture\n * reaches it as. Closes unless persistent, like escape does, so a dialog that\n * has to ask before discarding should bind `persistent` and answer here.\n */\n 'dismiss': [];\n}>();\n\ndefineSlots<{\n activator?: (props: { attrs: { onClick: () => void }; isOpen: boolean }) => any;\n default?: (props: { isOpen: boolean; close: () => void }) => any;\n}>();\n\nconst transitioning = ref<boolean>(false);\nconst contentRef = useTemplateRef<HTMLDivElement>('contentRef');\n\nconst leaveTimeout = useTimeoutManager();\n\nconst alive = computed<boolean>(() => get(modelValue) || get(transitioning));\n\nconst style = computed<{ width: string | undefined; maxWidth: string | undefined }>(() => ({\n width: transformPropsUnit(width),\n maxWidth: transformPropsUnit(maxWidth) ?? (size ? `var(--rui-dialog-${size})` : undefined),\n}));\n\nconst dialog = tv({\n slots: {\n root: 'fixed inset-0',\n overlay: 'absolute inset-0 backdrop-blur-sm bg-rui-neutral-950/40 dark:bg-black/60',\n content: 'absolute left-1/2 bottom-0 -translate-x-1/2 outline-hidden overflow-y-auto max-h-(--rui-dialog-max-height)',\n },\n variants: {\n /*\n * The corners match a RuiCard's, the usual content, which the box clips while it scrolls.\n * A sheet sits on the screen's bottom edge, so its content's bottom corners are squared.\n */\n bottomSheet: {\n true: { content: 'rounded-t-rui-card shadow-rui-drawer *:rounded-b-none' },\n false: { content: 'top-1/2 -translate-y-1/2 bottom-auto rounded-rui-card shadow-rui-menu' },\n },\n },\n defaultVariants: { bottomSheet: false },\n});\n\nconst ui = computed<ReturnType<typeof dialog>>(() => dialog({ bottomSheet }));\n\nconst dialogAttrs: { onClick: () => void } = {\n onClick: toggle,\n};\n\nconst contentTransition = computed<Record<string, string>>(() => {\n if (!bottomSheet) {\n return {\n enterFromClass: 'opacity-0 scale-95',\n enterActiveClass: 'transition-all ease-out duration-200',\n enterToClass: 'opacity-100 scale-100',\n leaveFromClass: 'opacity-100 scale-100',\n leaveActiveClass: 'transition-all ease-in duration-150',\n leaveToClass: 'opacity-0 scale-95',\n };\n }\n\n return {\n enterFromClass: 'translate-y-full',\n enterActiveClass: 'transition-transform ease-out duration-300',\n enterToClass: 'translate-y-0',\n leaveFromClass: 'translate-y-0',\n leaveActiveClass: 'transition-transform ease-in duration-200',\n leaveToClass: 'translate-y-full',\n };\n});\n\nfunction toggle(): void {\n set(modelValue, !get(modelValue));\n}\n\nfunction close(): void {\n set(modelValue, false);\n}\n\n/**\n * Closes on Escape unless persistent, and reports the press as `click:esc`.\n *\n * @remarks\n * An Escape that arrives while an IME is composing belongs to the IME, which\n * cancels the candidate with it. The dialog leaves that key alone entirely: no\n * close, no `click:esc`, and no `stopPropagation`, so a search field inside the\n * dialog does not lose the dialog mid-word.\n */\nfunction onEscKeydown(event: KeyboardEvent): void {\n if (event.isComposing)\n return;\n\n event.stopPropagation();\n if (!persistent) {\n close();\n }\n emit('click:esc');\n}\n\nfunction onClickOutside(): void {\n if (!persistent) {\n close();\n }\n emit('click:outside');\n}\n\nfunction onDismiss(): void {\n if (!persistent) {\n close();\n }\n emit('dismiss');\n}\n\n/**\n * Registration follows `modelValue` alone, never `persistent`: a dialog that\n * turns persistent partway through its life has to stay in the stack and refuse\n * in `onDismiss`, or the gesture starts passing through exactly once there is\n * work to lose. A dialog playing its leave transition is already on its way out\n * and does not hold the stack.\n */\nuseDismissableOverlay(modelValue, onDismiss);\n\nfunction onLeaveComplete(): void {\n leaveTimeout.clear();\n if (get(transitioning)) {\n set(transitioning, false);\n emit('closed');\n }\n}\n\nwatch(modelValue, (value) => {\n if (!value) {\n set(transitioning, true);\n // Safety fallback if transitionend is not detected\n leaveTimeout.create(onLeaveComplete, 400);\n }\n});\n\nwatch(contentRef, (ref) => {\n if (ref) {\n nextTick(() => ref.focus());\n }\n else {\n onLeaveComplete();\n }\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <slot\n name=\"activator\"\n v-bind=\"{ attrs: dialogAttrs, isOpen: modelValue }\"\n />\n <Teleport to=\"body\">\n <div\n v-if=\"alive\"\n :class=\"ui.root({ class: cn(classNames?.root) })\"\n :style=\"{ zIndex }\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-label=\"ariaLabel\"\n tabindex=\"0\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @keydown.esc=\"onEscKeydown($event)\"\n >\n <Transition\n enter-from-class=\"opacity-0\"\n enter-active-class=\"transition-opacity ease-out duration-200\"\n enter-to-class=\"opacity-100\"\n leave-from-class=\"opacity-100\"\n leave-active-class=\"transition-opacity ease-in duration-150\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"modelValue\"\n data-id=\"overlay\"\n :class=\"ui.overlay()\"\n @click.stop=\"onClickOutside()\"\n />\n </Transition>\n <Transition\n v-bind=\"contentTransition\"\n @after-leave=\"onLeaveComplete()\"\n >\n <div\n v-if=\"modelValue\"\n ref=\"contentRef\"\n data-id=\"content\"\n :style=\"style\"\n tabindex=\"0\"\n :data-bottom-sheet=\"bottomSheet || undefined\"\n :class=\"ui.content({ class: cn(classNames?.content) })\"\n >\n <ButtonGroupBoundary>\n <slot v-bind=\"{ isOpen: modelValue, close }\" />\n </ButtonGroupBoundary>\n </div>\n </Transition>\n </div>\n </Teleport>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiDialog.js","names":["_sfc_main"],"sources":["../../../../src/components/overlays/dialog/RuiDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport type { DialogSize } from '@/consts/tokens';\nimport type { VueClassValue } from '@/types/class-value';\nimport { ButtonGroupBoundary } from '@/components/buttons/button-group/button-group-context';\nimport { useDismissableOverlay } from '@/composables/overlay-stack';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { getNonRootAttrs, getRootAttrs, transformPropsUnit } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\nimport { dialogStyles } from './dialog-styles';\n\nexport interface RuiDialogClassNames {\n root?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface DialogProps {\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n /** A preset max width, `--rui-dialog-<size>`; an explicit `maxWidth` wins */\n size?: DialogSize;\n bottomSheet?: boolean;\n classNames?: RuiDialogClassNames;\n zIndex?: string | number;\n ariaLabel?: string;\n}\n\nexport interface DialogSlots {\n activator?: (props: { attrs: { onClick: () => void }; isOpen: boolean }) => any;\n default?: (props: { isOpen: boolean; close: () => void }) => any;\n}\n\ndefineOptions({\n name: 'RuiDialog',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n persistent = false,\n width = '98%',\n maxWidth,\n size,\n bottomSheet = false,\n classNames,\n zIndex = 'var(--rui-z-dialog)',\n ariaLabel,\n} = defineProps<DialogProps & /* @vue-ignore */ Omit<HTMLAttributes, keyof DialogProps>>();\n\nconst emit = defineEmits<{\n 'closed': [];\n 'click:outside': [];\n 'click:esc': [];\n /**\n * The overlay stack asked this dialog to go, which is what a back gesture\n * reaches it as. Closes unless persistent, like escape does, so a dialog that\n * has to ask before discarding should bind `persistent` and answer here.\n */\n 'dismiss': [];\n}>();\n\ndefineSlots<DialogSlots>();\n\nconst transitioning = ref<boolean>(false);\nconst contentRef = useTemplateRef<HTMLDivElement>('contentRef');\n\nconst leaveTimeout = useTimeoutManager();\n\nconst alive = computed<boolean>(() => get(modelValue) || get(transitioning));\n\nconst style = computed<{ width: string | undefined; maxWidth: string | undefined }>(() => ({\n width: transformPropsUnit(width),\n maxWidth: transformPropsUnit(maxWidth) ?? (size ? `var(--rui-dialog-${size})` : undefined),\n}));\n\nconst ui = computed<ReturnType<typeof dialogStyles>>(() => dialogStyles({ bottomSheet }));\n\nconst dialogAttrs: { onClick: () => void } = {\n onClick: toggle,\n};\n\nconst contentTransition = computed<Record<string, string>>(() => {\n if (!bottomSheet) {\n return {\n enterFromClass: 'opacity-0 scale-95',\n enterActiveClass: 'transition-all ease-out duration-200',\n enterToClass: 'opacity-100 scale-100',\n leaveFromClass: 'opacity-100 scale-100',\n leaveActiveClass: 'transition-all ease-in duration-150',\n leaveToClass: 'opacity-0 scale-95',\n };\n }\n\n return {\n enterFromClass: 'translate-y-full',\n enterActiveClass: 'transition-transform ease-out duration-300',\n enterToClass: 'translate-y-0',\n leaveFromClass: 'translate-y-0',\n leaveActiveClass: 'transition-transform ease-in duration-200',\n leaveToClass: 'translate-y-full',\n };\n});\n\nfunction toggle(): void {\n set(modelValue, !get(modelValue));\n}\n\nfunction close(): void {\n set(modelValue, false);\n}\n\n/**\n * Closes on Escape unless persistent, and reports the press as `click:esc`.\n *\n * @remarks\n * An Escape that arrives while an IME is composing belongs to the IME, which\n * cancels the candidate with it. The dialog leaves that key alone entirely: no\n * close, no `click:esc`, and no `stopPropagation`, so a search field inside the\n * dialog does not lose the dialog mid-word.\n */\nfunction onEscKeydown(event: KeyboardEvent): void {\n if (event.isComposing)\n return;\n\n event.stopPropagation();\n if (!persistent) {\n close();\n }\n emit('click:esc');\n}\n\nfunction onClickOutside(): void {\n if (!persistent) {\n close();\n }\n emit('click:outside');\n}\n\nfunction onDismiss(): void {\n if (!persistent) {\n close();\n }\n emit('dismiss');\n}\n\n/**\n * Registration follows `modelValue` alone, never `persistent`: a dialog that\n * turns persistent partway through its life has to stay in the stack and refuse\n * in `onDismiss`, or the gesture starts passing through exactly once there is\n * work to lose. A dialog playing its leave transition is already on its way out\n * and does not hold the stack.\n */\nuseDismissableOverlay(modelValue, onDismiss);\n\nfunction onLeaveComplete(): void {\n leaveTimeout.clear();\n if (get(transitioning)) {\n set(transitioning, false);\n emit('closed');\n }\n}\n\nwatch(modelValue, (value) => {\n if (!value) {\n set(transitioning, true);\n // Safety fallback if transitionend is not detected\n leaveTimeout.create(onLeaveComplete, 400);\n }\n});\n\nwatch(contentRef, (ref) => {\n if (ref) {\n nextTick(() => ref.focus());\n }\n else {\n onLeaveComplete();\n }\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <slot\n name=\"activator\"\n v-bind=\"{ attrs: dialogAttrs, isOpen: modelValue }\"\n />\n <Teleport to=\"body\">\n <div\n v-if=\"alive\"\n :class=\"ui.root({ class: cn(classNames?.root) })\"\n :style=\"{ zIndex }\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-label=\"ariaLabel\"\n tabindex=\"0\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @keydown.esc=\"onEscKeydown($event)\"\n >\n <Transition\n enter-from-class=\"opacity-0\"\n enter-active-class=\"transition-opacity ease-out duration-200\"\n enter-to-class=\"opacity-100\"\n leave-from-class=\"opacity-100\"\n leave-active-class=\"transition-opacity ease-in duration-150\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"modelValue\"\n data-id=\"overlay\"\n :class=\"ui.overlay()\"\n @click.stop=\"onClickOutside()\"\n />\n </Transition>\n <Transition\n v-bind=\"contentTransition\"\n @after-leave=\"onLeaveComplete()\"\n >\n <div\n v-if=\"modelValue\"\n ref=\"contentRef\"\n data-id=\"content\"\n :style=\"style\"\n tabindex=\"0\"\n :data-bottom-sheet=\"bottomSheet || undefined\"\n :class=\"ui.content({ class: cn(classNames?.content) })\"\n >\n <ButtonGroupBoundary>\n <slot v-bind=\"{ isOpen: modelValue, close }\" />\n </ButtonGroupBoundary>\n </div>\n </Transition>\n </div>\n </Teleport>\n </div>\n</template>\n"],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import type { HTMLAttributes } from 'vue';
1
2
  import type { DialogSize } from '../../../consts/tokens.js';
2
3
  import type { VueClassValue } from '../../../types/class-value.js';
3
4
  export interface RuiDialogClassNames {
@@ -15,8 +16,7 @@ export interface DialogProps {
15
16
  zIndex?: string | number;
16
17
  ariaLabel?: string;
17
18
  }
18
- type __VLS_Props = DialogProps;
19
- type __VLS_Slots = {
19
+ export interface DialogSlots {
20
20
  activator?: (props: {
21
21
  attrs: {
22
22
  onClick: () => void;
@@ -27,7 +27,9 @@ type __VLS_Slots = {
27
27
  isOpen: boolean;
28
28
  close: () => void;
29
29
  }) => any;
30
- };
30
+ }
31
+ type __VLS_Props = DialogProps & /* @vue-ignore */ Omit<HTMLAttributes, keyof DialogProps>;
32
+ type __VLS_Slots = DialogSlots;
31
33
  type __VLS_ModelProps = {
32
34
  modelValue?: boolean;
33
35
  };
@@ -1,9 +1,10 @@
1
1
  import { get, set } from "../../../vendor/@vueuse/shared/dist/index.js";
2
- import { cn, tv } from "../../../utils/tv.js";
2
+ import { cn } from "../../../utils/tv.js";
3
3
  import { ButtonGroupBoundary } from "../../buttons/button-group/button-group-context.js";
4
4
  import { useTimeoutManager } from "../../../composables/timeout-manager.js";
5
5
  import { getNonRootAttrs, getRootAttrs, transformPropsUnit } from "../../../utils/helpers.js";
6
6
  import { useDismissableOverlay } from "../../../composables/overlay-stack.js";
7
+ import { dialogStyles } from "./dialog-styles.js";
7
8
  import { Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, openBlock, ref, renderSlot, unref, useModel, useTemplateRef, watch, withCtx, withKeys, withModifiers } from "vue";
8
9
  //#region src/components/overlays/dialog/RuiDialog.vue?vue&type=script&setup=true&lang.ts
9
10
  var _hoisted_1 = ["aria-label"];
@@ -51,19 +52,7 @@ var RuiDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
51
52
  width: transformPropsUnit(__props.width),
52
53
  maxWidth: transformPropsUnit(__props.maxWidth) ?? (__props.size ? `var(--rui-dialog-${__props.size})` : void 0)
53
54
  }));
54
- const dialog = tv({
55
- slots: {
56
- root: "fixed inset-0",
57
- overlay: "absolute inset-0 backdrop-blur-sm bg-rui-neutral-950/40 dark:bg-black/60",
58
- content: "absolute left-1/2 bottom-0 -translate-x-1/2 outline-hidden overflow-y-auto max-h-(--rui-dialog-max-height)"
59
- },
60
- variants: { bottomSheet: {
61
- true: { content: "rounded-t-rui-card shadow-rui-drawer *:rounded-b-none" },
62
- false: { content: "top-1/2 -translate-y-1/2 bottom-auto rounded-rui-card shadow-rui-menu" }
63
- } },
64
- defaultVariants: { bottomSheet: false }
65
- });
66
- const ui = computed(() => dialog({ bottomSheet: __props.bottomSheet }));
55
+ const ui = computed(() => dialogStyles({ bottomSheet: __props.bottomSheet }));
67
56
  const dialogAttrs = { onClick: toggle };
68
57
  const contentTransition = computed(() => {
69
58
  if (!__props.bottomSheet) return {
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDialog.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_useModel","_openBlock","_createElementBlock","_normalizeProps","_guardReactiveProps","_unref","_renderSlot","_createBlock","_Teleport","_mergeProps","_withKeys","_createVNode","_Transition","_withCtx","_normalizeClass","_withModifiers","_createCommentVNode","_normalizeStyle"],"sources":["../../../../src/components/overlays/dialog/RuiDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { DialogSize } from '@/consts/tokens';\nimport type { VueClassValue } from '@/types/class-value';\nimport { ButtonGroupBoundary } from '@/components/buttons/button-group/button-group-context';\nimport { useDismissableOverlay } from '@/composables/overlay-stack';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { getNonRootAttrs, getRootAttrs, transformPropsUnit } from '@/utils/helpers';\nimport { cn, tv } from '@/utils/tv';\n\nexport interface RuiDialogClassNames {\n root?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface DialogProps {\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n /** A preset max width, `--rui-dialog-<size>`; an explicit `maxWidth` wins */\n size?: DialogSize;\n bottomSheet?: boolean;\n classNames?: RuiDialogClassNames;\n zIndex?: string | number;\n ariaLabel?: string;\n}\n\ndefineOptions({\n name: 'RuiDialog',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n persistent = false,\n width = '98%',\n maxWidth,\n size,\n bottomSheet = false,\n classNames,\n zIndex = 'var(--rui-z-dialog)',\n ariaLabel,\n} = defineProps<DialogProps>();\n\nconst emit = defineEmits<{\n 'closed': [];\n 'click:outside': [];\n 'click:esc': [];\n /**\n * The overlay stack asked this dialog to go, which is what a back gesture\n * reaches it as. Closes unless persistent, like escape does, so a dialog that\n * has to ask before discarding should bind `persistent` and answer here.\n */\n 'dismiss': [];\n}>();\n\ndefineSlots<{\n activator?: (props: { attrs: { onClick: () => void }; isOpen: boolean }) => any;\n default?: (props: { isOpen: boolean; close: () => void }) => any;\n}>();\n\nconst transitioning = ref<boolean>(false);\nconst contentRef = useTemplateRef<HTMLDivElement>('contentRef');\n\nconst leaveTimeout = useTimeoutManager();\n\nconst alive = computed<boolean>(() => get(modelValue) || get(transitioning));\n\nconst style = computed<{ width: string | undefined; maxWidth: string | undefined }>(() => ({\n width: transformPropsUnit(width),\n maxWidth: transformPropsUnit(maxWidth) ?? (size ? `var(--rui-dialog-${size})` : undefined),\n}));\n\nconst dialog = tv({\n slots: {\n root: 'fixed inset-0',\n overlay: 'absolute inset-0 backdrop-blur-sm bg-rui-neutral-950/40 dark:bg-black/60',\n content: 'absolute left-1/2 bottom-0 -translate-x-1/2 outline-hidden overflow-y-auto max-h-(--rui-dialog-max-height)',\n },\n variants: {\n /*\n * The corners match a RuiCard's, the usual content, which the box clips while it scrolls.\n * A sheet sits on the screen's bottom edge, so its content's bottom corners are squared.\n */\n bottomSheet: {\n true: { content: 'rounded-t-rui-card shadow-rui-drawer *:rounded-b-none' },\n false: { content: 'top-1/2 -translate-y-1/2 bottom-auto rounded-rui-card shadow-rui-menu' },\n },\n },\n defaultVariants: { bottomSheet: false },\n});\n\nconst ui = computed<ReturnType<typeof dialog>>(() => dialog({ bottomSheet }));\n\nconst dialogAttrs: { onClick: () => void } = {\n onClick: toggle,\n};\n\nconst contentTransition = computed<Record<string, string>>(() => {\n if (!bottomSheet) {\n return {\n enterFromClass: 'opacity-0 scale-95',\n enterActiveClass: 'transition-all ease-out duration-200',\n enterToClass: 'opacity-100 scale-100',\n leaveFromClass: 'opacity-100 scale-100',\n leaveActiveClass: 'transition-all ease-in duration-150',\n leaveToClass: 'opacity-0 scale-95',\n };\n }\n\n return {\n enterFromClass: 'translate-y-full',\n enterActiveClass: 'transition-transform ease-out duration-300',\n enterToClass: 'translate-y-0',\n leaveFromClass: 'translate-y-0',\n leaveActiveClass: 'transition-transform ease-in duration-200',\n leaveToClass: 'translate-y-full',\n };\n});\n\nfunction toggle(): void {\n set(modelValue, !get(modelValue));\n}\n\nfunction close(): void {\n set(modelValue, false);\n}\n\n/**\n * Closes on Escape unless persistent, and reports the press as `click:esc`.\n *\n * @remarks\n * An Escape that arrives while an IME is composing belongs to the IME, which\n * cancels the candidate with it. The dialog leaves that key alone entirely: no\n * close, no `click:esc`, and no `stopPropagation`, so a search field inside the\n * dialog does not lose the dialog mid-word.\n */\nfunction onEscKeydown(event: KeyboardEvent): void {\n if (event.isComposing)\n return;\n\n event.stopPropagation();\n if (!persistent) {\n close();\n }\n emit('click:esc');\n}\n\nfunction onClickOutside(): void {\n if (!persistent) {\n close();\n }\n emit('click:outside');\n}\n\nfunction onDismiss(): void {\n if (!persistent) {\n close();\n }\n emit('dismiss');\n}\n\n/**\n * Registration follows `modelValue` alone, never `persistent`: a dialog that\n * turns persistent partway through its life has to stay in the stack and refuse\n * in `onDismiss`, or the gesture starts passing through exactly once there is\n * work to lose. A dialog playing its leave transition is already on its way out\n * and does not hold the stack.\n */\nuseDismissableOverlay(modelValue, onDismiss);\n\nfunction onLeaveComplete(): void {\n leaveTimeout.clear();\n if (get(transitioning)) {\n set(transitioning, false);\n emit('closed');\n }\n}\n\nwatch(modelValue, (value) => {\n if (!value) {\n set(transitioning, true);\n // Safety fallback if transitionend is not detected\n leaveTimeout.create(onLeaveComplete, 400);\n }\n});\n\nwatch(contentRef, (ref) => {\n if (ref) {\n nextTick(() => ref.focus());\n }\n else {\n onLeaveComplete();\n }\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <slot\n name=\"activator\"\n v-bind=\"{ attrs: dialogAttrs, isOpen: modelValue }\"\n />\n <Teleport to=\"body\">\n <div\n v-if=\"alive\"\n :class=\"ui.root({ class: cn(classNames?.root) })\"\n :style=\"{ zIndex }\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-label=\"ariaLabel\"\n tabindex=\"0\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @keydown.esc=\"onEscKeydown($event)\"\n >\n <Transition\n enter-from-class=\"opacity-0\"\n enter-active-class=\"transition-opacity ease-out duration-200\"\n enter-to-class=\"opacity-100\"\n leave-from-class=\"opacity-100\"\n leave-active-class=\"transition-opacity ease-in duration-150\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"modelValue\"\n data-id=\"overlay\"\n :class=\"ui.overlay()\"\n @click.stop=\"onClickOutside()\"\n />\n </Transition>\n <Transition\n v-bind=\"contentTransition\"\n @after-leave=\"onLeaveComplete()\"\n >\n <div\n v-if=\"modelValue\"\n ref=\"contentRef\"\n data-id=\"content\"\n :style=\"style\"\n tabindex=\"0\"\n :data-bottom-sheet=\"bottomSheet || undefined\"\n :class=\"ui.content({ class: cn(classNames?.content) })\"\n >\n <ButtonGroupBoundary>\n <slot v-bind=\"{ isOpen: modelValue, close }\" />\n </ButtonGroupBoundary>\n </div>\n </Transition>\n </div>\n </Teleport>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiDialog.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_useModel","_openBlock","_createElementBlock","_normalizeProps","_guardReactiveProps","_unref","_renderSlot","_createBlock","_Teleport","_mergeProps","_withKeys","_createVNode","_Transition","_withCtx","_normalizeClass","_withModifiers","_createCommentVNode","_normalizeStyle"],"sources":["../../../../src/components/overlays/dialog/RuiDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport type { DialogSize } from '@/consts/tokens';\nimport type { VueClassValue } from '@/types/class-value';\nimport { ButtonGroupBoundary } from '@/components/buttons/button-group/button-group-context';\nimport { useDismissableOverlay } from '@/composables/overlay-stack';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { getNonRootAttrs, getRootAttrs, transformPropsUnit } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\nimport { dialogStyles } from './dialog-styles';\n\nexport interface RuiDialogClassNames {\n root?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface DialogProps {\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n /** A preset max width, `--rui-dialog-<size>`; an explicit `maxWidth` wins */\n size?: DialogSize;\n bottomSheet?: boolean;\n classNames?: RuiDialogClassNames;\n zIndex?: string | number;\n ariaLabel?: string;\n}\n\nexport interface DialogSlots {\n activator?: (props: { attrs: { onClick: () => void }; isOpen: boolean }) => any;\n default?: (props: { isOpen: boolean; close: () => void }) => any;\n}\n\ndefineOptions({\n name: 'RuiDialog',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n persistent = false,\n width = '98%',\n maxWidth,\n size,\n bottomSheet = false,\n classNames,\n zIndex = 'var(--rui-z-dialog)',\n ariaLabel,\n} = defineProps<DialogProps & /* @vue-ignore */ Omit<HTMLAttributes, keyof DialogProps>>();\n\nconst emit = defineEmits<{\n 'closed': [];\n 'click:outside': [];\n 'click:esc': [];\n /**\n * The overlay stack asked this dialog to go, which is what a back gesture\n * reaches it as. Closes unless persistent, like escape does, so a dialog that\n * has to ask before discarding should bind `persistent` and answer here.\n */\n 'dismiss': [];\n}>();\n\ndefineSlots<DialogSlots>();\n\nconst transitioning = ref<boolean>(false);\nconst contentRef = useTemplateRef<HTMLDivElement>('contentRef');\n\nconst leaveTimeout = useTimeoutManager();\n\nconst alive = computed<boolean>(() => get(modelValue) || get(transitioning));\n\nconst style = computed<{ width: string | undefined; maxWidth: string | undefined }>(() => ({\n width: transformPropsUnit(width),\n maxWidth: transformPropsUnit(maxWidth) ?? (size ? `var(--rui-dialog-${size})` : undefined),\n}));\n\nconst ui = computed<ReturnType<typeof dialogStyles>>(() => dialogStyles({ bottomSheet }));\n\nconst dialogAttrs: { onClick: () => void } = {\n onClick: toggle,\n};\n\nconst contentTransition = computed<Record<string, string>>(() => {\n if (!bottomSheet) {\n return {\n enterFromClass: 'opacity-0 scale-95',\n enterActiveClass: 'transition-all ease-out duration-200',\n enterToClass: 'opacity-100 scale-100',\n leaveFromClass: 'opacity-100 scale-100',\n leaveActiveClass: 'transition-all ease-in duration-150',\n leaveToClass: 'opacity-0 scale-95',\n };\n }\n\n return {\n enterFromClass: 'translate-y-full',\n enterActiveClass: 'transition-transform ease-out duration-300',\n enterToClass: 'translate-y-0',\n leaveFromClass: 'translate-y-0',\n leaveActiveClass: 'transition-transform ease-in duration-200',\n leaveToClass: 'translate-y-full',\n };\n});\n\nfunction toggle(): void {\n set(modelValue, !get(modelValue));\n}\n\nfunction close(): void {\n set(modelValue, false);\n}\n\n/**\n * Closes on Escape unless persistent, and reports the press as `click:esc`.\n *\n * @remarks\n * An Escape that arrives while an IME is composing belongs to the IME, which\n * cancels the candidate with it. The dialog leaves that key alone entirely: no\n * close, no `click:esc`, and no `stopPropagation`, so a search field inside the\n * dialog does not lose the dialog mid-word.\n */\nfunction onEscKeydown(event: KeyboardEvent): void {\n if (event.isComposing)\n return;\n\n event.stopPropagation();\n if (!persistent) {\n close();\n }\n emit('click:esc');\n}\n\nfunction onClickOutside(): void {\n if (!persistent) {\n close();\n }\n emit('click:outside');\n}\n\nfunction onDismiss(): void {\n if (!persistent) {\n close();\n }\n emit('dismiss');\n}\n\n/**\n * Registration follows `modelValue` alone, never `persistent`: a dialog that\n * turns persistent partway through its life has to stay in the stack and refuse\n * in `onDismiss`, or the gesture starts passing through exactly once there is\n * work to lose. A dialog playing its leave transition is already on its way out\n * and does not hold the stack.\n */\nuseDismissableOverlay(modelValue, onDismiss);\n\nfunction onLeaveComplete(): void {\n leaveTimeout.clear();\n if (get(transitioning)) {\n set(transitioning, false);\n emit('closed');\n }\n}\n\nwatch(modelValue, (value) => {\n if (!value) {\n set(transitioning, true);\n // Safety fallback if transitionend is not detected\n leaveTimeout.create(onLeaveComplete, 400);\n }\n});\n\nwatch(contentRef, (ref) => {\n if (ref) {\n nextTick(() => ref.focus());\n }\n else {\n onLeaveComplete();\n }\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <slot\n name=\"activator\"\n v-bind=\"{ attrs: dialogAttrs, isOpen: modelValue }\"\n />\n <Teleport to=\"body\">\n <div\n v-if=\"alive\"\n :class=\"ui.root({ class: cn(classNames?.root) })\"\n :style=\"{ zIndex }\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-label=\"ariaLabel\"\n tabindex=\"0\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @keydown.esc=\"onEscKeydown($event)\"\n >\n <Transition\n enter-from-class=\"opacity-0\"\n enter-active-class=\"transition-opacity ease-out duration-200\"\n enter-to-class=\"opacity-100\"\n leave-from-class=\"opacity-100\"\n leave-active-class=\"transition-opacity ease-in duration-150\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"modelValue\"\n data-id=\"overlay\"\n :class=\"ui.overlay()\"\n @click.stop=\"onClickOutside()\"\n />\n </Transition>\n <Transition\n v-bind=\"contentTransition\"\n @after-leave=\"onLeaveComplete()\"\n >\n <div\n v-if=\"modelValue\"\n ref=\"contentRef\"\n data-id=\"content\"\n :style=\"style\"\n tabindex=\"0\"\n :data-bottom-sheet=\"bottomSheet || undefined\"\n :class=\"ui.content({ class: cn(classNames?.content) })\"\n >\n <ButtonGroupBoundary>\n <slot v-bind=\"{ isOpen: modelValue, close }\" />\n </ButtonGroupBoundary>\n </div>\n </Transition>\n </div>\n </Teleport>\n </div>\n</template>\n"],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export declare const dialogStyles: import("tailwind-variants").TVReturnType<{
2
+ bottomSheet: {
3
+ true: {
4
+ content: string;
5
+ };
6
+ false: {
7
+ content: string;
8
+ };
9
+ };
10
+ }, {
11
+ root: string;
12
+ overlay: string;
13
+ content: string;
14
+ }, undefined, {
15
+ bottomSheet: {
16
+ true: {
17
+ content: string;
18
+ };
19
+ false: {
20
+ content: string;
21
+ };
22
+ };
23
+ }, {
24
+ root: string;
25
+ overlay: string;
26
+ content: string;
27
+ }, import("tailwind-variants").TVReturnTypeLike<{
28
+ bottomSheet: {
29
+ true: {
30
+ content: string;
31
+ };
32
+ false: {
33
+ content: string;
34
+ };
35
+ };
36
+ }, {
37
+ root: string;
38
+ overlay: string;
39
+ content: string;
40
+ }>>;
@@ -0,0 +1,18 @@
1
+ import { tv } from "../../../utils/tv.js";
2
+ //#region src/components/overlays/dialog/dialog-styles.ts
3
+ var dialogStyles = tv({
4
+ slots: {
5
+ root: "fixed inset-0",
6
+ overlay: "absolute inset-0 backdrop-blur-sm bg-rui-neutral-950/40 dark:bg-black/60",
7
+ content: "absolute left-1/2 bottom-0 -translate-x-1/2 outline-hidden overflow-y-auto max-h-(--rui-dialog-max-height)"
8
+ },
9
+ variants: { bottomSheet: {
10
+ true: { content: "rounded-t-rui-card shadow-rui-drawer *:rounded-b-none" },
11
+ false: { content: "top-1/2 -translate-y-1/2 bottom-auto rounded-rui-card shadow-rui-menu" }
12
+ } },
13
+ defaultVariants: { bottomSheet: false }
14
+ });
15
+ //#endregion
16
+ export { dialogStyles };
17
+
18
+ //# sourceMappingURL=dialog-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-styles.js","names":[],"sources":["../../../../src/components/overlays/dialog/dialog-styles.ts"],"sourcesContent":["import { tv } from '@/utils/tv';\n\nexport const dialogStyles = tv({\n slots: {\n root: 'fixed inset-0',\n overlay: 'absolute inset-0 backdrop-blur-sm bg-rui-neutral-950/40 dark:bg-black/60',\n content: 'absolute left-1/2 bottom-0 -translate-x-1/2 outline-hidden overflow-y-auto max-h-(--rui-dialog-max-height)',\n },\n variants: {\n /*\n * The corners match a RuiCard's, the usual content, which the box clips while it scrolls.\n * A sheet sits on the screen's bottom edge, so its content's bottom corners are squared.\n */\n bottomSheet: {\n true: { content: 'rounded-t-rui-card shadow-rui-drawer *:rounded-b-none' },\n false: { content: 'top-1/2 -translate-y-1/2 bottom-auto rounded-rui-card shadow-rui-menu' },\n },\n },\n defaultVariants: { bottomSheet: false },\n});\n"],"mappings":";;AAEA,IAAa,eAAe,GAAG;CAC7B,OAAO;EACL,MAAM;EACN,SAAS;EACT,SAAS;CACX;CACA,UAAU,EAKR,aAAa;EACX,MAAM,EAAE,SAAS,wDAAwD;EACzE,OAAO,EAAE,SAAS,wEAAwE;CAC5F,EACF;CACA,iBAAiB,EAAE,aAAa,MAAM;AACxC,CAAC"}