@rotki/ui-library 2.21.0 → 2.22.1

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 (324) hide show
  1. package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js +1 -1
  2. package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  3. package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js +2 -2
  4. package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js +1 -1
  6. package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js.map +1 -1
  7. package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js +1 -1
  8. package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  9. package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  10. package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  11. package/dist/components/avatars/avatar-props.js +1 -1
  12. package/dist/components/avatars/avatar-props.js.map +1 -1
  13. package/dist/components/avatars/use-avatar-group.js.map +1 -1
  14. package/dist/components/buttons/button/RuiButton.js.map +1 -1
  15. package/dist/components/buttons/button/RuiButton.vue.d.ts +2 -2
  16. package/dist/components/buttons/button/RuiButton.vue_vue_type_script_setup_true_lang.js +3 -3
  17. package/dist/components/buttons/button/RuiButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  18. package/dist/components/buttons/button/button-props.js.map +1 -1
  19. package/dist/components/buttons/button/button-styles.js.map +1 -1
  20. package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  21. package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js +3 -3
  23. package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  24. package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js +2 -2
  25. package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js +3 -3
  27. package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  28. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js +3 -3
  29. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  30. package/dist/components/calendar/state.js.map +1 -1
  31. package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js +1 -1
  32. package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js +1 -1
  34. package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  35. package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js +1 -1
  36. package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  37. package/dist/components/chips/chip-props.js.map +1 -1
  38. package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js +1 -1
  39. package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/components/color-picker/RuiColorDisplay.vue_vue_type_script_setup_true_lang.js +1 -1
  41. package/dist/components/color-picker/RuiColorDisplay.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js +1 -1
  43. package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js.map +1 -1
  44. package/dist/components/color-picker/RuiColorInput.vue_vue_type_script_setup_true_lang.js +1 -1
  45. package/dist/components/color-picker/RuiColorInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  46. package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js +1 -1
  47. package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  48. package/dist/components/color-picker/utils.js.map +1 -1
  49. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js +2 -2
  50. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js +3 -3
  52. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  53. package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js +2 -2
  54. package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  55. package/dist/components/date-time-picker/date-time-picker-styles.js.map +1 -1
  56. package/dist/components/date-time-picker/dayjs-setup.js.map +1 -1
  57. package/dist/components/date-time-picker/segment-config.js.map +1 -1
  58. package/dist/components/date-time-picker/segment-utils.js.map +1 -1
  59. package/dist/components/date-time-picker/timezones.js.map +1 -1
  60. package/dist/components/date-time-picker/types.js +1 -1
  61. package/dist/components/date-time-picker/types.js.map +1 -1
  62. package/dist/components/date-time-picker/use-date-time-selection.js +2 -2
  63. package/dist/components/date-time-picker/use-date-time-selection.js.map +1 -1
  64. package/dist/components/date-time-picker/use-input-handler.js.map +1 -1
  65. package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -1
  66. package/dist/components/date-time-picker/utils.js.map +1 -1
  67. package/dist/components/divider/RuiDivider.vue_vue_type_script_setup_true_lang.js +1 -1
  68. package/dist/components/divider/RuiDivider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/components/forms/auto-complete/RuiAutoComplete.js.map +1 -1
  70. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +14 -1
  71. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js +15 -5
  72. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/components/forms/auto-complete/auto-complete-styles.js.map +1 -1
  74. package/dist/components/forms/category-picker/RuiCategoryPicker.js +7 -0
  75. package/dist/components/forms/category-picker/RuiCategoryPicker.js.map +1 -0
  76. package/dist/components/forms/category-picker/RuiCategoryPicker.vue.d.ts +134 -0
  77. package/dist/components/forms/category-picker/RuiCategoryPicker.vue_vue_type_script_setup_true_lang.js +567 -0
  78. package/dist/components/forms/category-picker/RuiCategoryPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  79. package/dist/components/forms/category-picker/category-picker-styles.d.ts +432 -0
  80. package/dist/components/forms/category-picker/category-picker-styles.js +59 -0
  81. package/dist/components/forms/category-picker/category-picker-styles.js.map +1 -0
  82. package/dist/components/forms/check-control-styles.js.map +1 -1
  83. package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js +2 -2
  84. package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  85. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  86. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  87. package/dist/components/forms/checkbox/checkbox-group/context.js.map +1 -1
  88. package/dist/components/forms/file-upload/RuiFileUpload.js.map +1 -1
  89. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js +5 -5
  90. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
  91. package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js +2 -2
  92. package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  93. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  94. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  95. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue_vue_type_script_setup_true_lang.js +2 -2
  96. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  97. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js +2 -2
  98. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  99. package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js +2 -2
  100. package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  101. package/dist/components/forms/select/menu-select-styles.js.map +1 -1
  102. package/dist/components/forms/slider/RuiSlider.vue_vue_type_script_setup_true_lang.js +2 -2
  103. package/dist/components/forms/slider/RuiSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  104. package/dist/components/forms/slider/slider-styles.js.map +1 -1
  105. package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js +2 -2
  106. package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  107. package/dist/components/forms/text-area/RuiTextArea.vue_vue_type_script_setup_true_lang.js +3 -3
  108. package/dist/components/forms/text-area/RuiTextArea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  109. package/dist/components/forms/text-area/text-area-styles.js.map +1 -1
  110. package/dist/components/forms/text-field/RuiTextField.vue_vue_type_script_setup_true_lang.js +3 -3
  111. package/dist/components/forms/text-field/RuiTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  112. package/dist/components/forms/text-field/text-field-styles.js.map +1 -1
  113. package/dist/components/forms/text-input-styles.js.map +1 -1
  114. package/dist/components/helpers/RuiFormTextDetail.vue_vue_type_script_setup_true_lang.js +1 -1
  115. package/dist/components/helpers/RuiFormTextDetail.vue_vue_type_script_setup_true_lang.js.map +1 -1
  116. package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  117. package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/components/index.d.ts +3 -2
  119. package/dist/components/index.js +3 -2
  120. package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js +1 -1
  121. package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js.map +1 -1
  122. package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js +1 -1
  123. package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/loaders/skeleton-type.js.map +1 -1
  125. package/dist/components/logos/RuiLogo.vue_vue_type_script_setup_true_lang.js +1 -1
  126. package/dist/components/logos/RuiLogo.vue_vue_type_script_setup_true_lang.js.map +1 -1
  127. package/dist/components/logos/use-logo-sources.js.map +1 -1
  128. package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js +1 -1
  129. package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  130. package/dist/components/overlays/badge/badge-props.js.map +1 -1
  131. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue_vue_type_script_setup_true_lang.js +2 -2
  132. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue_vue_type_script_setup_true_lang.js.map +1 -1
  133. package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js +3 -3
  134. package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  135. package/dist/components/overlays/menu/RuiMenu.js.map +1 -1
  136. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +2 -0
  137. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js +3 -3
  138. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js +3 -3
  140. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  141. package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js +2 -2
  142. package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js.map +1 -1
  143. package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js +1 -1
  144. package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  145. package/dist/components/overlays/tooltip/tooltip-styles.js.map +1 -1
  146. package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js +1 -1
  147. package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js.map +1 -1
  148. package/dist/components/progress/progress-props.js.map +1 -1
  149. package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js +2 -2
  150. package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  151. package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js +1 -1
  152. package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  153. package/dist/components/steppers/RuiStepperCustomIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  154. package/dist/components/steppers/RuiStepperCustomIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  155. package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  156. package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  157. package/dist/components/steppers/footer-stepper-variant.js.map +1 -1
  158. package/dist/components/tables/RuiDataTable.js.map +1 -1
  159. package/dist/components/tables/RuiDataTable.vue.d.ts +23 -2
  160. package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js +186 -217
  161. package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  162. package/dist/components/tables/RuiExpandButton.vue_vue_type_script_setup_true_lang.js +1 -1
  163. package/dist/components/tables/RuiExpandButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  164. package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js +1 -1
  165. package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/components/tables/RuiTableHead.js.map +1 -1
  167. package/dist/components/tables/RuiTableHead.vue.d.ts +11 -1
  168. package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js +1 -2
  169. package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/components/tables/RuiTablePagination.js.map +1 -1
  171. package/dist/components/tables/RuiTablePagination.vue.d.ts +5 -0
  172. package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js +24 -8
  173. package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  174. package/dist/components/tables/data-table/RuiDataTableBody.js +7 -0
  175. package/dist/components/tables/data-table/RuiDataTableBody.js.map +1 -0
  176. package/dist/components/tables/data-table/RuiDataTableBody.vue.d.ts +55 -0
  177. package/dist/components/tables/data-table/RuiDataTableBody.vue_vue_type_script_setup_true_lang.js +78 -0
  178. package/dist/components/tables/data-table/RuiDataTableBody.vue_vue_type_script_setup_true_lang.js.map +1 -0
  179. package/dist/components/tables/data-table/RuiDataTableCell.js +7 -0
  180. package/dist/components/tables/data-table/RuiDataTableCell.js.map +1 -0
  181. package/dist/components/tables/data-table/RuiDataTableCell.vue.d.ts +30 -0
  182. package/dist/components/tables/data-table/RuiDataTableCell.vue_vue_type_script_setup_true_lang.js +54 -0
  183. package/dist/components/tables/data-table/RuiDataTableCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  184. package/dist/components/tables/data-table/RuiDataTableEmptyRow.js +7 -0
  185. package/dist/components/tables/data-table/RuiDataTableEmptyRow.js.map +1 -0
  186. package/dist/components/tables/data-table/RuiDataTableEmptyRow.vue.d.ts +19 -0
  187. package/dist/components/tables/data-table/RuiDataTableEmptyRow.vue_vue_type_script_setup_true_lang.js +43 -0
  188. package/dist/components/tables/data-table/RuiDataTableEmptyRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  189. package/dist/components/tables/data-table/RuiDataTableExpandedRow.js +7 -0
  190. package/dist/components/tables/data-table/RuiDataTableExpandedRow.js.map +1 -0
  191. package/dist/components/tables/data-table/RuiDataTableExpandedRow.vue.d.ts +26 -0
  192. package/dist/components/tables/data-table/RuiDataTableExpandedRow.vue_vue_type_script_setup_true_lang.js +31 -0
  193. package/dist/components/tables/data-table/RuiDataTableExpandedRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  194. package/dist/components/tables/data-table/RuiDataTableGroupRow.js +7 -0
  195. package/dist/components/tables/data-table/RuiDataTableGroupRow.js.map +1 -0
  196. package/dist/components/tables/data-table/RuiDataTableGroupRow.vue.d.ts +32 -0
  197. package/dist/components/tables/data-table/RuiDataTableGroupRow.vue_vue_type_script_setup_true_lang.js +85 -0
  198. package/dist/components/tables/data-table/RuiDataTableGroupRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  199. package/dist/components/tables/data-table/RuiDataTableLoadingRow.js +7 -0
  200. package/dist/components/tables/data-table/RuiDataTableLoadingRow.js.map +1 -0
  201. package/dist/components/tables/data-table/RuiDataTableLoadingRow.vue.d.ts +3 -0
  202. package/dist/components/tables/data-table/RuiDataTableLoadingRow.vue_vue_type_script_setup_true_lang.js +26 -0
  203. package/dist/components/tables/data-table/RuiDataTableLoadingRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  204. package/dist/components/tables/data-table/RuiDataTableMobileSort.js +7 -0
  205. package/dist/components/tables/data-table/RuiDataTableMobileSort.js.map +1 -0
  206. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue.d.ts +33 -0
  207. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue_vue_type_script_setup_true_lang.js +101 -0
  208. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue_vue_type_script_setup_true_lang.js.map +1 -0
  209. package/dist/components/tables/data-table/RuiDataTableRow.js +7 -0
  210. package/dist/components/tables/data-table/RuiDataTableRow.js.map +1 -0
  211. package/dist/components/tables/data-table/RuiDataTableRow.vue.d.ts +31 -0
  212. package/dist/components/tables/data-table/RuiDataTableRow.vue_vue_type_script_setup_true_lang.js +142 -0
  213. package/dist/components/tables/data-table/RuiDataTableRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  214. package/dist/components/tables/data-table/context.d.ts +73 -0
  215. package/dist/components/tables/data-table/context.js +100 -0
  216. package/dist/components/tables/data-table/context.js.map +1 -0
  217. package/dist/components/tables/data-table-styles.d.ts +30 -1
  218. package/dist/components/tables/data-table-styles.js +9 -2
  219. package/dist/components/tables/data-table-styles.js.map +1 -1
  220. package/dist/components/tables/table-props.d.ts +5 -0
  221. package/dist/components/tables/table-props.js +5 -1
  222. package/dist/components/tables/table-props.js.map +1 -1
  223. package/dist/components/tables/use-pagination-navigation.js.map +1 -1
  224. package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js +1 -1
  225. package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  226. package/dist/components/tabs/tab/use-tab-link.js.map +1 -1
  227. package/dist/components/tabs/tab-item/RuiTabItem.vue_vue_type_script_setup_true_lang.js +1 -1
  228. package/dist/components/tabs/tab-item/RuiTabItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  229. package/dist/components/tabs/tab-items/RuiTabItems.js.map +1 -1
  230. package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js +2 -2
  231. package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js.map +1 -1
  232. package/dist/components/tabs/tab-props.js.map +1 -1
  233. package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js +2 -2
  234. package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  235. package/dist/components/tabs/tabs/use-tab-routing.js +1 -1
  236. package/dist/components/tabs/tabs/use-tab-routing.js.map +1 -1
  237. package/dist/components/tabs/tabs/use-tab-scroll.js.map +1 -1
  238. package/dist/components/time-picker/RuiTimePicker.vue_vue_type_script_setup_true_lang.js +2 -2
  239. package/dist/components/time-picker/RuiTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  240. package/dist/components/time-picker/time-picker-styles.js.map +1 -1
  241. package/dist/composables/breakpoint.js.map +1 -1
  242. package/dist/composables/defaults/table.d.ts +12 -0
  243. package/dist/composables/defaults/table.js.map +1 -1
  244. package/dist/composables/dropdown-menu.js.map +1 -1
  245. package/dist/composables/floating.d.ts +11 -0
  246. package/dist/composables/floating.js +21 -2
  247. package/dist/composables/floating.js.map +1 -1
  248. package/dist/composables/forms/auto-complete/focus.js.map +1 -1
  249. package/dist/composables/forms/auto-complete/index.js +5 -4
  250. package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -1
  251. package/dist/composables/forms/auto-complete/search.d.ts +6 -1
  252. package/dist/composables/forms/auto-complete/search.js +12 -1
  253. package/dist/composables/forms/auto-complete/search.js.map +1 -1
  254. package/dist/composables/forms/auto-complete/value.js.map +1 -1
  255. package/dist/composables/forms/category-picker/use-category-picker.d.ts +76 -0
  256. package/dist/composables/forms/category-picker/use-category-picker.js +141 -0
  257. package/dist/composables/forms/category-picker/use-category-picker.js.map +1 -0
  258. package/dist/composables/forms/use-prepend-append-width.js.map +1 -1
  259. package/dist/composables/icons.js.map +1 -1
  260. package/dist/composables/popper.js.map +1 -1
  261. package/dist/composables/sticky-header.js.map +1 -1
  262. package/dist/composables/tables/data-table/columns.d.ts +7 -1
  263. package/dist/composables/tables/data-table/columns.js +18 -10
  264. package/dist/composables/tables/data-table/columns.js.map +1 -1
  265. package/dist/composables/tables/data-table/expansion.js.map +1 -1
  266. package/dist/composables/tables/data-table/grouping.d.ts +4 -6
  267. package/dist/composables/tables/data-table/grouping.js +38 -24
  268. package/dist/composables/tables/data-table/grouping.js.map +1 -1
  269. package/dist/composables/tables/data-table/pagination.d.ts +4 -4
  270. package/dist/composables/tables/data-table/pagination.js +63 -21
  271. package/dist/composables/tables/data-table/pagination.js.map +1 -1
  272. package/dist/composables/tables/data-table/selection.js +16 -6
  273. package/dist/composables/tables/data-table/selection.js.map +1 -1
  274. package/dist/composables/tables/data-table/sort.d.ts +4 -3
  275. package/dist/composables/tables/data-table/sort.js +78 -40
  276. package/dist/composables/tables/data-table/sort.js.map +1 -1
  277. package/dist/composables/tables/data-table/types.d.ts +3 -1
  278. package/dist/composables/tables/data-table/types.js +6 -2
  279. package/dist/composables/tables/data-table/types.js.map +1 -1
  280. package/dist/composables/theme.js.map +1 -1
  281. package/dist/composables/timeout-manager.js.map +1 -1
  282. package/dist/composables/use-rui-i18n.js.map +1 -1
  283. package/dist/consts/colors.js.map +1 -1
  284. package/dist/consts/time-accuracy.js.map +1 -1
  285. package/dist/i18n/keys.js.map +1 -1
  286. package/dist/icons/icons_1.d.ts +12 -12
  287. package/dist/icons/icons_1.js +140 -157
  288. package/dist/icons/icons_1.js.map +1 -1
  289. package/dist/icons/icons_2.d.ts +13 -13
  290. package/dist/icons/icons_2.js +128 -149
  291. package/dist/icons/icons_2.js.map +1 -1
  292. package/dist/icons/icons_3.d.ts +18 -18
  293. package/dist/icons/icons_3.js +244 -282
  294. package/dist/icons/icons_3.js.map +1 -1
  295. package/dist/icons/icons_4.d.ts +251 -6
  296. package/dist/icons/icons_4.js +3016 -75
  297. package/dist/icons/icons_4.js.map +1 -1
  298. package/dist/icons/icons_5.d.ts +20 -0
  299. package/dist/icons/icons_5.js +221 -0
  300. package/dist/icons/icons_5.js.map +1 -0
  301. package/dist/icons/index.d.ts +2 -1
  302. package/dist/icons/index.js +297 -32
  303. package/dist/icons/index.js.map +1 -1
  304. package/dist/index.js +8 -6
  305. package/dist/index.js.map +1 -1
  306. package/dist/library-icons.json +1 -0
  307. package/dist/style.css +157 -0
  308. package/dist/theme/index.js.map +1 -1
  309. package/dist/types/stepper.js.map +1 -1
  310. package/dist/types/theme.js.map +1 -1
  311. package/dist/utils/assert.js.map +1 -1
  312. package/dist/utils/blockie.js.map +1 -1
  313. package/dist/utils/form-text-detail.js.map +1 -1
  314. package/dist/utils/helpers.js.map +1 -1
  315. package/dist/utils/is-equal.js.map +1 -1
  316. package/dist/utils/tv.js.map +1 -1
  317. package/dist/vite-plugin/index.js +6 -5
  318. package/dist/vite-plugin/index.js.map +1 -1
  319. package/dist/vite-plugin/scanner.d.ts +1 -1
  320. package/dist/vite-plugin/scanner.js +10 -7
  321. package/dist/vite-plugin/scanner.js.map +1 -1
  322. package/dist/vite-plugin/types.d.ts +9 -0
  323. package/dist/web-types.json +2042 -1108
  324. package/package.json +35 -35
@@ -1 +1 @@
1
- {"version":3,"file":"RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/overlays/navigation-drawer/RuiNavigationDrawer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { MaybeElement } from '@vueuse/core';\nimport type { VueClassValue } from '@/types/class-value';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { getRootAttrs, transformPropsUnit } from '@/utils/helpers';\nimport { tv } from '@/utils/tv';\n\nexport interface RuiNavigationDrawerClassNames {\n root?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface NavigationDrawerProps {\n temporary?: boolean;\n stateless?: boolean;\n width?: string | number;\n miniVariant?: boolean;\n overlay?: boolean;\n position?: 'left' | 'right';\n classNames?: RuiNavigationDrawerClassNames;\n /** @deprecated Use `classNames.content` instead */\n contentClass?: string | object | string[];\n ariaLabel?: string;\n}\n\ndefineOptions({\n name: 'RuiNavigationDrawer',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n temporary = false,\n stateless = false,\n width = 360,\n miniVariant = false,\n overlay = false,\n position = 'left',\n classNames,\n contentClass = '',\n ariaLabel,\n} = defineProps<NavigationDrawerProps>();\n\nconst emit = defineEmits<{\n closed: [];\n}>();\n\ndefineSlots<{\n activator?: (props: { open: boolean; attrs: { onClick: () => void } }) => any;\n default?: (props: { attrs: { onClick: () => void }; close: () => void }) => any;\n}>();\n\nconst transitioning = ref<boolean>(false);\nconst content = useTemplateRef<MaybeElement>('content');\nconst leaveTimeout = useTimeoutManager();\nconst clickOutsideTimeout = useTimeoutManager();\n\nconst alive = computed<boolean>(() => get(modelValue) || get(transitioning) || miniVariant);\n\nconst style = computed<{ width: string | undefined }>(() => ({\n width: transformPropsUnit(width),\n}));\n\nconst activatorAttrs: { onClick: () => void } = {\n onClick: toggle,\n};\n\nconst drawer = tv({\n base: 'transition-[transform,width] duration-200 ease-in-out top-0 h-full fixed text-rui-text bg-white dark:bg-[#363636]',\n variants: {\n position: {\n left: 'left-0',\n right: 'right-0',\n },\n visible: {\n true: 'translate-x-0',\n false: '',\n },\n mini: {\n true: 'translate-x-0',\n false: '',\n },\n withOverlay: {\n true: 'z-[10000]',\n false: 'z-[7]',\n },\n },\n compoundVariants: [\n { position: 'left', visible: false, mini: false, class: '-translate-x-full' },\n { position: 'right', visible: false, mini: false, class: 'translate-x-full' },\n { mini: true, visible: false, class: '!w-14' },\n ],\n defaultVariants: { position: 'left', visible: false, mini: false, withOverlay: false },\n});\n\nconst ui = computed<string>(() => drawer({ position, visible: modelValue.value, mini: miniVariant, withOverlay: overlay }));\n\nfunction toggle(): void {\n set(modelValue, !get(modelValue));\n}\n\nfunction close(): void {\n set(modelValue, false);\n}\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 // Match CSS transition duration (200ms) + buffer\n leaveTimeout.create(onLeaveComplete, 250);\n }\n});\n\n// Debounce prevents activator click from immediately triggering close\n// (click bubbles to body → onClickOutside fires in the same tick)\nonClickOutside(content, () => {\n if (get(modelValue) && temporary && !stateless) {\n clickOutsideTimeout.create(close, 50);\n }\n});\n</script>\n\n<template>\n <div>\n <slot\n name=\"activator\"\n v-bind=\"{ open: modelValue, attrs: activatorAttrs }\"\n />\n <Teleport to=\"body\">\n <Transition\n v-if=\"overlay\"\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-200\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"modelValue\"\n data-id=\"overlay\"\n class=\"absolute inset-0 backdrop-blur bg-rui-grey-500/50 dark:bg-black/50 z-[10000]\"\n @click.stop=\"close()\"\n />\n </Transition>\n <aside\n v-if=\"alive\"\n ref=\"content\"\n data-id=\"drawer-content\"\n :style=\"style\"\n :data-visible=\"modelValue || undefined\"\n :data-position=\"position\"\n :data-mini=\"miniVariant || undefined\"\n :class=\"[\n ui,\n temporary && modelValue && 'shadow-5',\n classNames?.content ?? contentClass,\n classNames?.root,\n ]\"\n :aria-label=\"ariaLabel\"\n :aria-hidden=\"miniVariant && !modelValue ? 'true' : undefined\"\n v-bind=\"getRootAttrs($attrs)\"\n >\n <slot v-bind=\"{ attrs: activatorAttrs, close }\" />\n </aside>\n </Teleport>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/overlays/navigation-drawer/RuiNavigationDrawer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { MaybeElement } from '@vueuse/core';\nimport type { VueClassValue } from '@/types/class-value';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { getRootAttrs, transformPropsUnit } from '@/utils/helpers';\nimport { tv } from '@/utils/tv';\n\nexport interface RuiNavigationDrawerClassNames {\n root?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface NavigationDrawerProps {\n temporary?: boolean;\n stateless?: boolean;\n width?: string | number;\n miniVariant?: boolean;\n overlay?: boolean;\n position?: 'left' | 'right';\n classNames?: RuiNavigationDrawerClassNames;\n /** @deprecated Use `classNames.content` instead */\n contentClass?: string | object | string[];\n ariaLabel?: string;\n}\n\ndefineOptions({\n name: 'RuiNavigationDrawer',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n temporary = false,\n stateless = false,\n width = 360,\n miniVariant = false,\n overlay = false,\n position = 'left',\n classNames,\n contentClass = '',\n ariaLabel,\n} = defineProps<NavigationDrawerProps>();\n\nconst emit = defineEmits<{\n closed: [];\n}>();\n\ndefineSlots<{\n activator?: (props: { open: boolean; attrs: { onClick: () => void } }) => any;\n default?: (props: { attrs: { onClick: () => void }; close: () => void }) => any;\n}>();\n\nconst transitioning = ref<boolean>(false);\nconst content = useTemplateRef<MaybeElement>('content');\nconst leaveTimeout = useTimeoutManager();\nconst clickOutsideTimeout = useTimeoutManager();\n\nconst alive = computed<boolean>(() => get(modelValue) || get(transitioning) || miniVariant);\n\nconst style = computed<{ width: string | undefined }>(() => ({\n width: transformPropsUnit(width),\n}));\n\nconst activatorAttrs: { onClick: () => void } = {\n onClick: toggle,\n};\n\nconst drawer = tv({\n base: 'transition-[transform,width] duration-200 ease-in-out top-0 h-full fixed text-rui-text bg-white dark:bg-[#363636]',\n variants: {\n position: {\n left: 'left-0',\n right: 'right-0',\n },\n visible: {\n true: 'translate-x-0',\n false: '',\n },\n mini: {\n true: 'translate-x-0',\n false: '',\n },\n withOverlay: {\n true: 'z-[10000]',\n false: 'z-[7]',\n },\n },\n compoundVariants: [\n { position: 'left', visible: false, mini: false, class: '-translate-x-full' },\n { position: 'right', visible: false, mini: false, class: 'translate-x-full' },\n { mini: true, visible: false, class: '!w-14' },\n ],\n defaultVariants: { position: 'left', visible: false, mini: false, withOverlay: false },\n});\n\nconst ui = computed<string>(() => drawer({ position, visible: modelValue.value, mini: miniVariant, withOverlay: overlay }));\n\nfunction toggle(): void {\n set(modelValue, !get(modelValue));\n}\n\nfunction close(): void {\n set(modelValue, false);\n}\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 // Match CSS transition duration (200ms) + buffer\n leaveTimeout.create(onLeaveComplete, 250);\n }\n});\n\n// Debounce prevents activator click from immediately triggering close\n// (click bubbles to body → onClickOutside fires in the same tick)\nonClickOutside(content, () => {\n if (get(modelValue) && temporary && !stateless) {\n clickOutsideTimeout.create(close, 50);\n }\n});\n</script>\n\n<template>\n <div>\n <slot\n name=\"activator\"\n v-bind=\"{ open: modelValue, attrs: activatorAttrs }\"\n />\n <Teleport to=\"body\">\n <Transition\n v-if=\"overlay\"\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-200\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"modelValue\"\n data-id=\"overlay\"\n class=\"absolute inset-0 backdrop-blur bg-rui-grey-500/50 dark:bg-black/50 z-[10000]\"\n @click.stop=\"close()\"\n />\n </Transition>\n <aside\n v-if=\"alive\"\n ref=\"content\"\n data-id=\"drawer-content\"\n :style=\"style\"\n :data-visible=\"modelValue || undefined\"\n :data-position=\"position\"\n :data-mini=\"miniVariant || undefined\"\n :class=\"[\n ui,\n temporary && modelValue && 'shadow-5',\n classNames?.content ?? contentClass,\n classNames?.root,\n ]\"\n :aria-label=\"ariaLabel\"\n :aria-hidden=\"miniVariant && !modelValue ? 'true' : undefined\"\n v-bind=\"getRootAttrs($attrs)\"\n >\n <slot v-bind=\"{ attrs: activatorAttrs, close }\" />\n </aside>\n </Teleport>\n </div>\n</template>\n"],"mappings":"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"}
@@ -4,11 +4,11 @@ import { Teleport, Transition, computed, createBlock, createCommentVNode, create
4
4
  import { useTimeoutFn, watchImmediate } from "@vueuse/core";
5
5
  import { set as set$1 } from "@vueuse/shared";
6
6
  //#region src/components/overlays/notification/RuiNotification.vue?vue&type=script&setup=true&lang.ts
7
- var RuiNotification_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ var RuiNotification_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
8
8
  name: "RuiNotification",
9
9
  inheritAttrs: false,
10
10
  __name: "RuiNotification",
11
- props: /* @__PURE__ */ mergeModels({
11
+ props: /*@__PURE__*/ mergeModels({
12
12
  timeout: {},
13
13
  width: { default: 400 },
14
14
  theme: {}
@@ -1 +1 @@
1
- {"version":3,"file":"RuiNotification.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/overlays/notification/RuiNotification.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useTimeoutFn } from '@vueuse/core';\nimport { transformPropsUnit } from '@/utils/helpers';\nimport { cn, tv } from '@/utils/tv';\n\nexport interface NotificationProps {\n timeout: number;\n width?: number | string;\n theme?: 'light' | 'dark';\n}\n\ndefineOptions({\n name: 'RuiNotification',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ required: true });\n\nconst { timeout, width = 400, theme } = defineProps<NotificationProps>();\n\ndefineSlots<{\n default?: () => any;\n}>();\n\nconst style = computed<{ width: string | undefined }>(() => ({\n width: transformPropsUnit(width),\n}));\n\nconst rootStyle = tv({ base: 'top-2 right-2 fixed drop-shadow-lg rounded-sm z-50' });\n\nconst { start, stop } = useTimeoutFn(() => {\n set(modelValue, false);\n}, timeout, { immediate: false });\n\nfunction dismiss(): void {\n if (timeout < 0)\n return;\n\n set(modelValue, false);\n}\n\nwatchImmediate(modelValue, (display) => {\n if (!display) {\n stop();\n return;\n }\n\n if (timeout > 0) {\n stop();\n start();\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <Transition\n enter-from-class=\"opacity-0\"\n enter-active-class=\"ease-out duration-150\"\n enter-to-class=\"opacity-100\"\n leave-from-class=\"opacity-100\"\n leave-active-class=\"ease-in duration-100\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"modelValue\"\n role=\"alert\"\n aria-live=\"polite\"\n :class=\"rootStyle({ class: cn([$attrs.class, {\n 'bg-white dark:bg-[#363636]': !theme,\n 'bg-white text-rui-light-text': theme === 'light',\n 'bg-[#363636] text-rui-dark-text': theme === 'dark',\n }]) })\"\n :style=\"style\"\n v-bind=\"{ ...$attrs, class: undefined }\"\n @click=\"dismiss()\"\n >\n <slot />\n </div>\n </Transition>\n </Teleport>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,aAAa,SAAoB,SAAA,aAAoB;EAQ3D,MAAM,QAAQ,gBAA+C,EAC3D,OAAO,mBAAmB,QAAA,MAAM,EACjC,EAAE;EAEH,MAAM,YAAY,GAAG,EAAE,MAAM,sDAAsD,CAAC;EAEpF,MAAM,EAAE,OAAO,SAAS,mBAAmB;AACzC,SAAI,YAAY,MAAM;KACrB,QAAA,SAAS,EAAE,WAAW,OAAO,CAAC;EAEjC,SAAS,UAAgB;AACvB,OAAI,QAAA,UAAU,EACZ;AAEF,SAAI,YAAY,MAAM;;AAGxB,iBAAe,aAAa,YAAY;AACtC,OAAI,CAAC,SAAS;AACZ,UAAM;AACN;;AAGF,OAAI,QAAA,UAAU,GAAG;AACf,UAAM;AACN,WAAO;;IAET;;uBAIA,YAyBW,UAAA,EAzBD,IAAG,QAAM,EAAA,CACjB,YAuBa,YAAA;IAtBX,oBAAiB;IACjB,sBAAmB;IACnB,kBAAe;IACf,oBAAiB;IACjB,sBAAmB;IACnB,kBAAe;;2BAgBT,CAbE,WAAA,SAAA,WAAA,EADR,mBAcM,OAdN,WAcM;;KAZJ,MAAK;KACL,aAAU;KACT,OAAO,MAAA,UAAS,CAAA,EAAA,OAAU,MAAA,GAAE,CAAA,CAAEA,KAAAA,OAAO,OAAK;qCAA6C,QAAA;sCAAiD,QAAA,UAAK;yCAA2D,QAAA,UAAK;;KAK7M,OAAO,MAAA,MAAA;;QACKA,KAAAA;KAAM,OAAS,KAAA;KAAS,EAAA,EACpC,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,SAAO,GAAA,CAAA,EAAA,CAEf,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"RuiNotification.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/overlays/notification/RuiNotification.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useTimeoutFn } from '@vueuse/core';\nimport { transformPropsUnit } from '@/utils/helpers';\nimport { cn, tv } from '@/utils/tv';\n\nexport interface NotificationProps {\n timeout: number;\n width?: number | string;\n theme?: 'light' | 'dark';\n}\n\ndefineOptions({\n name: 'RuiNotification',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ required: true });\n\nconst { timeout, width = 400, theme } = defineProps<NotificationProps>();\n\ndefineSlots<{\n default?: () => any;\n}>();\n\nconst style = computed<{ width: string | undefined }>(() => ({\n width: transformPropsUnit(width),\n}));\n\nconst rootStyle = tv({ base: 'top-2 right-2 fixed drop-shadow-lg rounded-sm z-50' });\n\nconst { start, stop } = useTimeoutFn(() => {\n set(modelValue, false);\n}, timeout, { immediate: false });\n\nfunction dismiss(): void {\n if (timeout < 0)\n return;\n\n set(modelValue, false);\n}\n\nwatchImmediate(modelValue, (display) => {\n if (!display) {\n stop();\n return;\n }\n\n if (timeout > 0) {\n stop();\n start();\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <Transition\n enter-from-class=\"opacity-0\"\n enter-active-class=\"ease-out duration-150\"\n enter-to-class=\"opacity-100\"\n leave-from-class=\"opacity-100\"\n leave-active-class=\"ease-in duration-100\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"modelValue\"\n role=\"alert\"\n aria-live=\"polite\"\n :class=\"rootStyle({ class: cn([$attrs.class, {\n 'bg-white dark:bg-[#363636]': !theme,\n 'bg-white text-rui-light-text': theme === 'light',\n 'bg-[#363636] text-rui-dark-text': theme === 'dark',\n }]) })\"\n :style=\"style\"\n v-bind=\"{ ...$attrs, class: undefined }\"\n @click=\"dismiss()\"\n >\n <slot />\n </div>\n </Transition>\n </Teleport>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,aAAa,SAAoB,SAAA,YAAmB;EAQ1D,MAAM,QAAQ,gBAA+C,EAC3D,OAAO,mBAAmB,QAAA,KAAK,EACjC,EAAE;EAEF,MAAM,YAAY,GAAG,EAAE,MAAM,qDAAqD,CAAC;EAEnF,MAAM,EAAE,OAAO,SAAS,mBAAmB;GACzC,MAAI,YAAY,KAAK;EACvB,GAAG,QAAA,SAAS,EAAE,WAAW,MAAM,CAAC;EAEhC,SAAS,UAAgB;GACvB,IAAI,QAAA,UAAU,GACZ;GAEF,MAAI,YAAY,KAAK;EACvB;EAEA,eAAe,aAAa,YAAY;GACtC,IAAI,CAAC,SAAS;IACZ,KAAK;IACL;GACF;GAEA,IAAI,QAAA,UAAU,GAAG;IACf,KAAK;IACL,MAAM;GACR;EACF,CAAC;;uBAIC,YAyBW,UAAA,EAzBD,IAAG,OAAM,GAAA,CACjB,YAuBa,YAAA;IAtBX,oBAAiB;IACjB,sBAAmB;IACnB,kBAAe;IACf,oBAAiB;IACjB,sBAAmB;IACnB,kBAAe;;2BAgBT,CAbE,WAAA,SAAA,UAAA,GADR,mBAcM,OAdN,WAcM;;KAZJ,MAAK;KACL,aAAU;KACT,OAAO,MAAA,SAAA,CAAS,CAAA,EAAA,OAAU,MAAA,EAAA,CAAE,CAAA,CAAEA,KAAAA,OAAO,OAAK;qCAA6C,QAAA;sCAAiD,QAAA,UAAK;yCAA2D,QAAA,UAAK;;KAK7M,OAAO,MAAA,KAAA;;QACKA,KAAAA;KAAM,OAAS,KAAA;IAAS,GAAA,EACpC,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAO,GAAA,CAAA,GAAA,CAEf,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,EAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,CAAA"}
@@ -7,7 +7,7 @@ import { get } from "@vueuse/shared";
7
7
  //#region src/components/overlays/tooltip/RuiTooltip.vue?vue&type=script&setup=true&lang.ts
8
8
  var _hoisted_1 = ["data-tooltip-disabled", "aria-describedby"];
9
9
  var _hoisted_2 = ["id", "data-placement"];
10
- var RuiTooltip_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ var RuiTooltip_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
11
11
  name: "RuiTooltip",
12
12
  inheritAttrs: false,
13
13
  __name: "RuiTooltip",
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTooltip.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/overlays/tooltip/RuiTooltip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { VueClassValue } from '@/types/class-value';\nimport { type FloatingOptions, useFloating } from '@/composables/floating';\nimport { type PopperOptions, toFloatingOptions } from '@/composables/popper';\nimport { cn, tv } from '@/utils/tv';\nimport { tooltipStyles } from './tooltip-styles';\n\nexport interface RuiTooltipClassNames {\n root?: VueClassValue;\n tooltip?: VueClassValue;\n}\n\nexport interface Props {\n text?: string | null;\n disabled?: boolean;\n hideArrow?: boolean;\n openDelay?: number;\n closeDelay?: number;\n persistOnTooltipHover?: boolean;\n options?: FloatingOptions;\n /** @deprecated Use `options` instead */\n popper?: PopperOptions;\n classNames?: RuiTooltipClassNames;\n /** @deprecated Use `classNames.tooltip` instead */\n tooltipClass?: string;\n}\n\ndefineOptions({\n name: 'RuiTooltip',\n inheritAttrs: false,\n});\n\nconst {\n text = null,\n disabled = false,\n hideArrow = false,\n openDelay = 0,\n closeDelay = 500,\n persistOnTooltipHover = false,\n options,\n popper,\n classNames,\n tooltipClass = '',\n} = defineProps<Props>();\n\ndefineSlots<{\n activator?: (props: { open: boolean; close: () => void }) => any;\n default?: () => any;\n}>();\n\nconst rootStyle = tv({ base: 'relative inline-flex' });\n\nconst tooltipId = useId();\n\nconst {\n reference: activator,\n popover: tooltip,\n open,\n visible,\n currentPlacement,\n onOpen,\n onClose,\n onLeaveComplete,\n updatePosition,\n} = useFloating(\n () => popper ? toFloatingOptions(popper) : (options ?? {}),\n () => disabled,\n () => openDelay,\n () => closeDelay,\n);\n\ntype PlacementSide = 'bottom' | 'left' | 'right' | 'top';\n\nconst placementSide = computed<PlacementSide>(() => {\n const placement = get(currentPlacement);\n if (placement.startsWith('top'))\n return 'top';\n if (placement.startsWith('left'))\n return 'left';\n if (placement.startsWith('right'))\n return 'right';\n return 'bottom';\n});\n\ndefineExpose({\n onOpen,\n onClose,\n});\n</script>\n\n<template>\n <div\n ref=\"activator\"\n v-bind=\"{ ...$attrs, class: undefined }\"\n :class=\"rootStyle({ class: cn($attrs.class) })\"\n :data-tooltip-disabled=\"disabled\"\n :aria-describedby=\"!disabled && open ? tooltipId : undefined\"\n @mouseover=\"onOpen()\"\n @mouseleave=\"onClose()\"\n @focusin=\"onOpen()\"\n @focusout=\"onClose()\"\n >\n <slot\n name=\"activator\"\n :open=\"open\"\n :close=\"onClose\"\n />\n\n <Teleport\n v-if=\"!disabled\"\n to=\"body\"\n >\n <div\n v-if=\"visible\"\n :id=\"tooltipId\"\n ref=\"tooltip\"\n class=\"w-max z-[9999]\"\n :class=\"classNames?.tooltip ?? tooltipClass\"\n role=\"tooltip\"\n :data-placement=\"currentPlacement\"\n >\n <TransitionGroup\n enter-active-class=\"transition ease-out duration-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n @before-enter=\"updatePosition()\"\n @after-leave=\"onLeaveComplete()\"\n >\n <div\n v-if=\"open\"\n key=\"tooltip\"\n class=\"px-2 py-2 text-xs font-normal bg-rui-grey-700/90 text-white rounded shadow\"\n data-id=\"content\"\n @mouseover=\"persistOnTooltipHover && onOpen()\"\n @mouseleave=\"persistOnTooltipHover && onClose()\"\n >\n <slot>\n {{ text }}\n </slot>\n </div>\n <span\n v-if=\"!hideArrow\"\n key=\"arrow\"\n :class=\"tooltipStyles({ open, side: placementSide }).arrow()\"\n data-id=\"arrow\"\n >\n <span :class=\"tooltipStyles({ open, side: placementSide }).diamond()\" />\n </span>\n </TransitionGroup>\n </div>\n </Teleport>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiTooltip.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/overlays/tooltip/RuiTooltip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { VueClassValue } from '@/types/class-value';\nimport { type FloatingOptions, useFloating } from '@/composables/floating';\nimport { type PopperOptions, toFloatingOptions } from '@/composables/popper';\nimport { cn, tv } from '@/utils/tv';\nimport { tooltipStyles } from './tooltip-styles';\n\nexport interface RuiTooltipClassNames {\n root?: VueClassValue;\n tooltip?: VueClassValue;\n}\n\nexport interface Props {\n text?: string | null;\n disabled?: boolean;\n hideArrow?: boolean;\n openDelay?: number;\n closeDelay?: number;\n persistOnTooltipHover?: boolean;\n options?: FloatingOptions;\n /** @deprecated Use `options` instead */\n popper?: PopperOptions;\n classNames?: RuiTooltipClassNames;\n /** @deprecated Use `classNames.tooltip` instead */\n tooltipClass?: string;\n}\n\ndefineOptions({\n name: 'RuiTooltip',\n inheritAttrs: false,\n});\n\nconst {\n text = null,\n disabled = false,\n hideArrow = false,\n openDelay = 0,\n closeDelay = 500,\n persistOnTooltipHover = false,\n options,\n popper,\n classNames,\n tooltipClass = '',\n} = defineProps<Props>();\n\ndefineSlots<{\n activator?: (props: { open: boolean; close: () => void }) => any;\n default?: () => any;\n}>();\n\nconst rootStyle = tv({ base: 'relative inline-flex' });\n\nconst tooltipId = useId();\n\nconst {\n reference: activator,\n popover: tooltip,\n open,\n visible,\n currentPlacement,\n onOpen,\n onClose,\n onLeaveComplete,\n updatePosition,\n} = useFloating(\n () => popper ? toFloatingOptions(popper) : (options ?? {}),\n () => disabled,\n () => openDelay,\n () => closeDelay,\n);\n\ntype PlacementSide = 'bottom' | 'left' | 'right' | 'top';\n\nconst placementSide = computed<PlacementSide>(() => {\n const placement = get(currentPlacement);\n if (placement.startsWith('top'))\n return 'top';\n if (placement.startsWith('left'))\n return 'left';\n if (placement.startsWith('right'))\n return 'right';\n return 'bottom';\n});\n\ndefineExpose({\n onOpen,\n onClose,\n});\n</script>\n\n<template>\n <div\n ref=\"activator\"\n v-bind=\"{ ...$attrs, class: undefined }\"\n :class=\"rootStyle({ class: cn($attrs.class) })\"\n :data-tooltip-disabled=\"disabled\"\n :aria-describedby=\"!disabled && open ? tooltipId : undefined\"\n @mouseover=\"onOpen()\"\n @mouseleave=\"onClose()\"\n @focusin=\"onOpen()\"\n @focusout=\"onClose()\"\n >\n <slot\n name=\"activator\"\n :open=\"open\"\n :close=\"onClose\"\n />\n\n <Teleport\n v-if=\"!disabled\"\n to=\"body\"\n >\n <div\n v-if=\"visible\"\n :id=\"tooltipId\"\n ref=\"tooltip\"\n class=\"w-max z-[9999]\"\n :class=\"classNames?.tooltip ?? tooltipClass\"\n role=\"tooltip\"\n :data-placement=\"currentPlacement\"\n >\n <TransitionGroup\n enter-active-class=\"transition ease-out duration-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n @before-enter=\"updatePosition()\"\n @after-leave=\"onLeaveComplete()\"\n >\n <div\n v-if=\"open\"\n key=\"tooltip\"\n class=\"px-2 py-2 text-xs font-normal bg-rui-grey-700/90 text-white rounded shadow\"\n data-id=\"content\"\n @mouseover=\"persistOnTooltipHover && onOpen()\"\n @mouseleave=\"persistOnTooltipHover && onClose()\"\n >\n <slot>\n {{ text }}\n </slot>\n </div>\n <span\n v-if=\"!hideArrow\"\n key=\"arrow\"\n :class=\"tooltipStyles({ open, side: placementSide }).arrow()\"\n data-id=\"arrow\"\n >\n <span :class=\"tooltipStyles({ open, side: placementSide }).diamond()\" />\n </span>\n </TransitionGroup>\n </div>\n </Teleport>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-styles.js","names":[],"sources":["../../../../src/components/overlays/tooltip/tooltip-styles.ts"],"sourcesContent":["import { tv } from '@/utils/tv';\n\nexport const tooltipStyles = tv({\n slots: {\n arrow: 'absolute block w-2.5 h-2.5 transition-opacity',\n diamond: 'block border-[0.3125rem] origin-center border-l-transparent border-b-transparent border-t-rui-grey-700/90 border-r-rui-grey-700/90 rounded-[0_0.125rem_0_0]',\n },\n variants: {\n open: {\n true: { arrow: 'opacity-100' },\n false: { arrow: 'opacity-0' },\n },\n side: {\n top: {\n arrow: 'bottom-[calc(0.5px-0.3125rem)]',\n diamond: 'rotate-[135deg]',\n },\n bottom: {\n arrow: 'top-[calc(0.5px-0.3125rem)]',\n diamond: '-rotate-45',\n },\n left: {\n arrow: 'right-[calc(0.5px-0.3125rem)]',\n diamond: 'rotate-45',\n },\n right: {\n arrow: 'left-[calc(0.5px-0.3125rem)]',\n diamond: '-rotate-[135deg]',\n },\n },\n },\n defaultVariants: { open: false, side: 'bottom' },\n});\n"],"mappings":";;AAEA,IAAa,gBAAgB,GAAG;CAC9B,OAAO;EACL,OAAO;EACP,SAAS;EACV;CACD,UAAU;EACR,MAAM;GACJ,MAAM,EAAE,OAAO,eAAe;GAC9B,OAAO,EAAE,OAAO,aAAa;GAC9B;EACD,MAAM;GACJ,KAAK;IACH,OAAO;IACP,SAAS;IACV;GACD,QAAQ;IACN,OAAO;IACP,SAAS;IACV;GACD,MAAM;IACJ,OAAO;IACP,SAAS;IACV;GACD,OAAO;IACL,OAAO;IACP,SAAS;IACV;GACF;EACF;CACD,iBAAiB;EAAE,MAAM;EAAO,MAAM;EAAU;CACjD,CAAC"}
1
+ {"version":3,"file":"tooltip-styles.js","names":[],"sources":["../../../../src/components/overlays/tooltip/tooltip-styles.ts"],"sourcesContent":["import { tv } from '@/utils/tv';\n\nexport const tooltipStyles = tv({\n slots: {\n arrow: 'absolute block w-2.5 h-2.5 transition-opacity',\n diamond: 'block border-[0.3125rem] origin-center border-l-transparent border-b-transparent border-t-rui-grey-700/90 border-r-rui-grey-700/90 rounded-[0_0.125rem_0_0]',\n },\n variants: {\n open: {\n true: { arrow: 'opacity-100' },\n false: { arrow: 'opacity-0' },\n },\n side: {\n top: {\n arrow: 'bottom-[calc(0.5px-0.3125rem)]',\n diamond: 'rotate-[135deg]',\n },\n bottom: {\n arrow: 'top-[calc(0.5px-0.3125rem)]',\n diamond: '-rotate-45',\n },\n left: {\n arrow: 'right-[calc(0.5px-0.3125rem)]',\n diamond: 'rotate-45',\n },\n right: {\n arrow: 'left-[calc(0.5px-0.3125rem)]',\n diamond: '-rotate-[135deg]',\n },\n },\n },\n defaultVariants: { open: false, side: 'bottom' },\n});\n"],"mappings":";;AAEA,IAAa,gBAAgB,GAAG;CAC9B,OAAO;EACL,OAAO;EACP,SAAS;CACX;CACA,UAAU;EACR,MAAM;GACJ,MAAM,EAAE,OAAO,cAAc;GAC7B,OAAO,EAAE,OAAO,YAAY;EAC9B;EACA,MAAM;GACJ,KAAK;IACH,OAAO;IACP,SAAS;GACX;GACA,QAAQ;IACN,OAAO;IACP,SAAS;GACX;GACA,MAAM;IACJ,OAAO;IACP,SAAS;GACX;GACA,OAAO;IACL,OAAO;IACP,SAAS;GACX;EACF;CACF;CACA,iBAAiB;EAAE,MAAM;EAAO,MAAM;CAAS;AACjD,CAAC"}
@@ -16,7 +16,7 @@ var _hoisted_4 = [
16
16
  "data-color"
17
17
  ];
18
18
  var CIRCLE_RADIUS = 20;
19
- var RuiProgress_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
19
+ var RuiProgress_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
20
20
  name: "RuiProgress",
21
21
  __name: "RuiProgress",
22
22
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"RuiProgress.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/progress/RuiProgress.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport { ProgressVariant } from '@/components/progress/progress-props';\nimport { tv } from '@/utils/tv';\n\nexport interface Props {\n /**\n * in percentage value, required when variant === determinate or buffer\n * @example - 0 <= value <= 100\n */\n value?: number;\n /**\n * in percentage value, required when variant === buffer\n * @example - 0 <= value <= 100\n */\n bufferValue?: number;\n variant?: ProgressVariant;\n color?: ContextColorsType | 'inherit';\n circular?: boolean;\n showLabel?: boolean;\n /**\n * Sets the stroke thickness in pixels\n */\n thickness?: number | string;\n /**\n * only used for circular progress\n */\n size?: number | string;\n}\n\ndefineOptions({\n name: 'RuiProgress',\n});\n\nconst {\n value = 0,\n bufferValue = 0,\n variant = ProgressVariant.determinate,\n color = 'inherit',\n circular = false,\n showLabel = false,\n thickness = 4,\n size = 40,\n} = defineProps<Props>();\n\ndefineSlots<Record<string, never>>();\n\nconst CIRCLE_RADIUS = 20;\nconst CIRCLE_CIRCUMFERENCE = 2 * Math.PI * CIRCLE_RADIUS; // ~125.66\n\nfunction clampPercent(val: number | undefined): number {\n return Math.max(0, Math.min(val ?? 100, 100));\n}\n\nconst progressStyles = tv({\n slots: {\n wrapper: '',\n progressbar: 'w-full overflow-hidden relative',\n rail: 'w-full h-full',\n bar: 'transition-all duration-150 ease-in-out absolute left-0 top-0 h-full w-full',\n indeterminateBar: 'absolute left-0 top-0 h-full w-auto transition-transform duration-200 ease-linear origin-left animate-slide-rail',\n bufferDots: 'absolute h-0 w-[200%] -top-px -left-full border-dashed border-y-[0.2rem] animate-buffer-pulse',\n bufferRail: 'w-full h-full transition-transform duration-200 ease-linear origin-left',\n circularContainer: 'inline-block relative',\n svg: 'block',\n circle: 'stroke-current',\n label: 'dark:text-white',\n },\n variants: {\n color: {\n primary: { circularContainer: 'text-rui-primary' },\n secondary: { circularContainer: 'text-rui-secondary' },\n error: { circularContainer: 'text-rui-error' },\n warning: { circularContainer: 'text-rui-warning' },\n info: { circularContainer: 'text-rui-info' },\n success: { circularContainer: 'text-rui-success' },\n inherit: { circularContainer: 'text-current' },\n },\n variant: {\n [ProgressVariant.determinate]: { svg: '-rotate-90' },\n [ProgressVariant.indeterminate]: {\n svg: 'animate-circular-spin',\n circle: 'animate-collapse-stroke [stroke-dasharray:80px,200px] [stroke-linecap:round]',\n },\n [ProgressVariant.buffer]: {},\n },\n circular: {\n true: { wrapper: 'inline-flex' },\n false: { wrapper: 'w-full' },\n },\n hasLabel: {\n true: { wrapper: 'inline-flex items-center relative' },\n },\n },\n compoundVariants: [\n // Linear label\n { circular: false, hasLabel: true, class: { label: 'block text-sm ml-4' } },\n // Circular label (overlays the circle)\n { circular: true, hasLabel: true, class: { label: 'absolute inset-0 flex items-center justify-center text-[0.6rem] leading-none' } },\n ],\n compoundSlots: [\n // Rail background (track behind the bar)\n { slots: ['rail', 'bufferDots'], color: 'primary', class: 'bg-rui-primary/20 border-rui-primary/20' },\n { slots: ['rail', 'bufferDots'], color: 'secondary', class: 'bg-rui-secondary/20 border-rui-secondary/20' },\n { slots: ['rail', 'bufferDots'], color: 'error', class: 'bg-rui-error/20 border-rui-error/20' },\n { slots: ['rail', 'bufferDots'], color: 'warning', class: 'bg-rui-warning/20 border-rui-warning/20' },\n { slots: ['rail', 'bufferDots'], color: 'info', class: 'bg-rui-info/20 border-rui-info/20' },\n { slots: ['rail', 'bufferDots'], color: 'success', class: 'bg-rui-success/20 border-rui-success/20' },\n { slots: ['rail', 'bufferDots'], color: 'inherit', class: 'bg-current opacity-20 border-current' },\n\n // Bar fill (active progress)\n { slots: ['bar', 'indeterminateBar'], color: 'primary', class: 'bg-rui-primary' },\n { slots: ['bar', 'indeterminateBar'], color: 'secondary', class: 'bg-rui-secondary' },\n { slots: ['bar', 'indeterminateBar'], color: 'error', class: 'bg-rui-error' },\n { slots: ['bar', 'indeterminateBar'], color: 'warning', class: 'bg-rui-warning' },\n { slots: ['bar', 'indeterminateBar'], color: 'info', class: 'bg-rui-info' },\n { slots: ['bar', 'indeterminateBar'], color: 'success', class: 'bg-rui-success' },\n { slots: ['bar', 'indeterminateBar'], color: 'inherit', class: 'bg-current' },\n ],\n});\n\nconst hasLabel = computed<boolean>(() => showLabel && variant !== ProgressVariant.indeterminate);\n\nconst ui = computed<ReturnType<typeof progressStyles>>(() => progressStyles({\n color,\n variant,\n circular,\n hasLabel: get(hasLabel),\n}));\n\nconst currentValue = computed<number>(() => clampPercent(value));\n\nconst label = computed<string>(() => `${Math.floor(get(currentValue))}%`);\n\nconst progress = computed<number>(() => -100 + get(currentValue));\n\nconst barStyle = computed<Record<string, string>>(() => ({\n transform: `translateX(${get(progress)}%)`,\n}));\n\nconst bufferRailStyle = computed<Record<string, string>>(() => ({\n transform: `translateX(${-100 + clampPercent(bufferValue)}%)`,\n}));\n\nconst linearStyle = computed<Record<string, string>>(() => ({\n height: `${+thickness}px`,\n}));\n\nconst circularSize = computed<Record<string, string>>(() => ({\n width: `${+size}px`,\n height: `${+size}px`,\n}));\n\nconst circularGeometry = computed<{ scaledThickness: number; viewSize: number }>(() => {\n const scaledThickness = (+thickness * 32) / +size;\n return { scaledThickness, viewSize: 40 + scaledThickness };\n});\n\nconst circularStrokeStyle = computed<Record<string, string>>(() => ({\n strokeDasharray: `${CIRCLE_CIRCUMFERENCE}`,\n strokeDashoffset: `${(get(progress) / 100) * -CIRCLE_CIRCUMFERENCE}`,\n transition: 'stroke-dashoffset 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n}));\n</script>\n\n<template>\n <div :class=\"ui.wrapper()\">\n <!-- Circular progress (not supported for buffer variant) -->\n <div\n v-if=\"circular && variant !== ProgressVariant.buffer\"\n :aria-valuenow=\"value\"\n :class=\"ui.circularContainer()\"\n :style=\"circularSize\"\n :data-variant=\"variant\"\n :data-color=\"color\"\n aria-valuemax=\"100\"\n aria-valuemin=\"0\"\n role=\"progressbar\"\n >\n <svg\n :class=\"ui.svg()\"\n :viewBox=\"`0 0 ${circularGeometry.viewSize} ${circularGeometry.viewSize}`\"\n >\n <circle\n cx=\"50%\"\n cy=\"50%\"\n fill=\"none\"\n :r=\"CIRCLE_RADIUS\"\n :class=\"ui.circle()\"\n :style=\"variant === ProgressVariant.determinate ? circularStrokeStyle : undefined\"\n :stroke-width=\"circularGeometry.scaledThickness\"\n />\n </svg>\n <div\n v-if=\"hasLabel\"\n :class=\"ui.label()\"\n >\n {{ label }}\n </div>\n </div>\n\n <!-- Linear progress (also used as fallback for circular + buffer) -->\n <div\n v-else\n :aria-valuenow=\"value\"\n :class=\"ui.progressbar()\"\n :style=\"linearStyle\"\n :data-variant=\"variant\"\n :data-color=\"color\"\n aria-valuemax=\"100\"\n aria-valuemin=\"0\"\n role=\"progressbar\"\n >\n <div\n v-if=\"variant === ProgressVariant.buffer\"\n :class=\"ui.bufferDots()\"\n />\n <div\n :class=\"variant === ProgressVariant.buffer ? [ui.rail(), ui.bufferRail()] : ui.rail()\"\n :style=\"variant === ProgressVariant.buffer ? bufferRailStyle : undefined\"\n />\n <div\n v-if=\"variant === ProgressVariant.indeterminate\"\n :class=\"ui.indeterminateBar()\"\n />\n <div\n v-else\n :class=\"ui.bar()\"\n :style=\"barStyle\"\n />\n </div>\n\n <!-- Linear label -->\n <div\n v-if=\"hasLabel && !circular\"\n :class=\"ui.label()\"\n >\n {{ label }}\n </div>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiProgress.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/progress/RuiProgress.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport { ProgressVariant } from '@/components/progress/progress-props';\nimport { tv } from '@/utils/tv';\n\nexport interface Props {\n /**\n * in percentage value, required when variant === determinate or buffer\n * @example - 0 <= value <= 100\n */\n value?: number;\n /**\n * in percentage value, required when variant === buffer\n * @example - 0 <= value <= 100\n */\n bufferValue?: number;\n variant?: ProgressVariant;\n color?: ContextColorsType | 'inherit';\n circular?: boolean;\n showLabel?: boolean;\n /**\n * Sets the stroke thickness in pixels\n */\n thickness?: number | string;\n /**\n * only used for circular progress\n */\n size?: number | string;\n}\n\ndefineOptions({\n name: 'RuiProgress',\n});\n\nconst {\n value = 0,\n bufferValue = 0,\n variant = ProgressVariant.determinate,\n color = 'inherit',\n circular = false,\n showLabel = false,\n thickness = 4,\n size = 40,\n} = defineProps<Props>();\n\ndefineSlots<Record<string, never>>();\n\nconst CIRCLE_RADIUS = 20;\nconst CIRCLE_CIRCUMFERENCE = 2 * Math.PI * CIRCLE_RADIUS; // ~125.66\n\nfunction clampPercent(val: number | undefined): number {\n return Math.max(0, Math.min(val ?? 100, 100));\n}\n\nconst progressStyles = tv({\n slots: {\n wrapper: '',\n progressbar: 'w-full overflow-hidden relative',\n rail: 'w-full h-full',\n bar: 'transition-all duration-150 ease-in-out absolute left-0 top-0 h-full w-full',\n indeterminateBar: 'absolute left-0 top-0 h-full w-auto transition-transform duration-200 ease-linear origin-left animate-slide-rail',\n bufferDots: 'absolute h-0 w-[200%] -top-px -left-full border-dashed border-y-[0.2rem] animate-buffer-pulse',\n bufferRail: 'w-full h-full transition-transform duration-200 ease-linear origin-left',\n circularContainer: 'inline-block relative',\n svg: 'block',\n circle: 'stroke-current',\n label: 'dark:text-white',\n },\n variants: {\n color: {\n primary: { circularContainer: 'text-rui-primary' },\n secondary: { circularContainer: 'text-rui-secondary' },\n error: { circularContainer: 'text-rui-error' },\n warning: { circularContainer: 'text-rui-warning' },\n info: { circularContainer: 'text-rui-info' },\n success: { circularContainer: 'text-rui-success' },\n inherit: { circularContainer: 'text-current' },\n },\n variant: {\n [ProgressVariant.determinate]: { svg: '-rotate-90' },\n [ProgressVariant.indeterminate]: {\n svg: 'animate-circular-spin',\n circle: 'animate-collapse-stroke [stroke-dasharray:80px,200px] [stroke-linecap:round]',\n },\n [ProgressVariant.buffer]: {},\n },\n circular: {\n true: { wrapper: 'inline-flex' },\n false: { wrapper: 'w-full' },\n },\n hasLabel: {\n true: { wrapper: 'inline-flex items-center relative' },\n },\n },\n compoundVariants: [\n // Linear label\n { circular: false, hasLabel: true, class: { label: 'block text-sm ml-4' } },\n // Circular label (overlays the circle)\n { circular: true, hasLabel: true, class: { label: 'absolute inset-0 flex items-center justify-center text-[0.6rem] leading-none' } },\n ],\n compoundSlots: [\n // Rail background (track behind the bar)\n { slots: ['rail', 'bufferDots'], color: 'primary', class: 'bg-rui-primary/20 border-rui-primary/20' },\n { slots: ['rail', 'bufferDots'], color: 'secondary', class: 'bg-rui-secondary/20 border-rui-secondary/20' },\n { slots: ['rail', 'bufferDots'], color: 'error', class: 'bg-rui-error/20 border-rui-error/20' },\n { slots: ['rail', 'bufferDots'], color: 'warning', class: 'bg-rui-warning/20 border-rui-warning/20' },\n { slots: ['rail', 'bufferDots'], color: 'info', class: 'bg-rui-info/20 border-rui-info/20' },\n { slots: ['rail', 'bufferDots'], color: 'success', class: 'bg-rui-success/20 border-rui-success/20' },\n { slots: ['rail', 'bufferDots'], color: 'inherit', class: 'bg-current opacity-20 border-current' },\n\n // Bar fill (active progress)\n { slots: ['bar', 'indeterminateBar'], color: 'primary', class: 'bg-rui-primary' },\n { slots: ['bar', 'indeterminateBar'], color: 'secondary', class: 'bg-rui-secondary' },\n { slots: ['bar', 'indeterminateBar'], color: 'error', class: 'bg-rui-error' },\n { slots: ['bar', 'indeterminateBar'], color: 'warning', class: 'bg-rui-warning' },\n { slots: ['bar', 'indeterminateBar'], color: 'info', class: 'bg-rui-info' },\n { slots: ['bar', 'indeterminateBar'], color: 'success', class: 'bg-rui-success' },\n { slots: ['bar', 'indeterminateBar'], color: 'inherit', class: 'bg-current' },\n ],\n});\n\nconst hasLabel = computed<boolean>(() => showLabel && variant !== ProgressVariant.indeterminate);\n\nconst ui = computed<ReturnType<typeof progressStyles>>(() => progressStyles({\n color,\n variant,\n circular,\n hasLabel: get(hasLabel),\n}));\n\nconst currentValue = computed<number>(() => clampPercent(value));\n\nconst label = computed<string>(() => `${Math.floor(get(currentValue))}%`);\n\nconst progress = computed<number>(() => -100 + get(currentValue));\n\nconst barStyle = computed<Record<string, string>>(() => ({\n transform: `translateX(${get(progress)}%)`,\n}));\n\nconst bufferRailStyle = computed<Record<string, string>>(() => ({\n transform: `translateX(${-100 + clampPercent(bufferValue)}%)`,\n}));\n\nconst linearStyle = computed<Record<string, string>>(() => ({\n height: `${+thickness}px`,\n}));\n\nconst circularSize = computed<Record<string, string>>(() => ({\n width: `${+size}px`,\n height: `${+size}px`,\n}));\n\nconst circularGeometry = computed<{ scaledThickness: number; viewSize: number }>(() => {\n const scaledThickness = (+thickness * 32) / +size;\n return { scaledThickness, viewSize: 40 + scaledThickness };\n});\n\nconst circularStrokeStyle = computed<Record<string, string>>(() => ({\n strokeDasharray: `${CIRCLE_CIRCUMFERENCE}`,\n strokeDashoffset: `${(get(progress) / 100) * -CIRCLE_CIRCUMFERENCE}`,\n transition: 'stroke-dashoffset 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n}));\n</script>\n\n<template>\n <div :class=\"ui.wrapper()\">\n <!-- Circular progress (not supported for buffer variant) -->\n <div\n v-if=\"circular && variant !== ProgressVariant.buffer\"\n :aria-valuenow=\"value\"\n :class=\"ui.circularContainer()\"\n :style=\"circularSize\"\n :data-variant=\"variant\"\n :data-color=\"color\"\n aria-valuemax=\"100\"\n aria-valuemin=\"0\"\n role=\"progressbar\"\n >\n <svg\n :class=\"ui.svg()\"\n :viewBox=\"`0 0 ${circularGeometry.viewSize} ${circularGeometry.viewSize}`\"\n >\n <circle\n cx=\"50%\"\n cy=\"50%\"\n fill=\"none\"\n :r=\"CIRCLE_RADIUS\"\n :class=\"ui.circle()\"\n :style=\"variant === ProgressVariant.determinate ? circularStrokeStyle : undefined\"\n :stroke-width=\"circularGeometry.scaledThickness\"\n />\n </svg>\n <div\n v-if=\"hasLabel\"\n :class=\"ui.label()\"\n >\n {{ label }}\n </div>\n </div>\n\n <!-- Linear progress (also used as fallback for circular + buffer) -->\n <div\n v-else\n :aria-valuenow=\"value\"\n :class=\"ui.progressbar()\"\n :style=\"linearStyle\"\n :data-variant=\"variant\"\n :data-color=\"color\"\n aria-valuemax=\"100\"\n aria-valuemin=\"0\"\n role=\"progressbar\"\n >\n <div\n v-if=\"variant === ProgressVariant.buffer\"\n :class=\"ui.bufferDots()\"\n />\n <div\n :class=\"variant === ProgressVariant.buffer ? [ui.rail(), ui.bufferRail()] : ui.rail()\"\n :style=\"variant === ProgressVariant.buffer ? bufferRailStyle : undefined\"\n />\n <div\n v-if=\"variant === ProgressVariant.indeterminate\"\n :class=\"ui.indeterminateBar()\"\n />\n <div\n v-else\n :class=\"ui.bar()\"\n :style=\"barStyle\"\n />\n </div>\n\n <!-- Linear label -->\n <div\n v-if=\"hasLabel && !circular\"\n :class=\"ui.label()\"\n >\n {{ label }}\n </div>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"progress-props.js","names":[],"sources":["../../../src/components/progress/progress-props.ts"],"sourcesContent":["export const ProgressVariant = {\n determinate: 'determinate',\n indeterminate: 'indeterminate',\n buffer: 'buffer',\n} as const;\n\nexport type ProgressVariant = (typeof ProgressVariant)[keyof typeof ProgressVariant];\n"],"mappings":";AAAA,IAAa,kBAAkB;CAC7B,aAAa;CACb,eAAe;CACf,QAAQ;CACT"}
1
+ {"version":3,"file":"progress-props.js","names":[],"sources":["../../../src/components/progress/progress-props.ts"],"sourcesContent":["export const ProgressVariant = {\n determinate: 'determinate',\n indeterminate: 'indeterminate',\n buffer: 'buffer',\n} as const;\n\nexport type ProgressVariant = (typeof ProgressVariant)[keyof typeof ProgressVariant];\n"],"mappings":";AAAA,IAAa,kBAAkB;CAC7B,aAAa;CACb,eAAe;CACf,QAAQ;AACV"}
@@ -26,10 +26,10 @@ var _hoisted_6 = {
26
26
  };
27
27
  var _hoisted_7 = ["aria-current", "onClick"];
28
28
  var _hoisted_8 = { key: 0 };
29
- var RuiFooterStepper_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
29
+ var RuiFooterStepper_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
30
30
  name: "RuiFooterStepper",
31
31
  __name: "RuiFooterStepper",
32
- props: /* @__PURE__ */ mergeModels({
32
+ props: /*@__PURE__*/ mergeModels({
33
33
  pages: {},
34
34
  variant: { default: () => FooterStepperVariant.numeric },
35
35
  arrowButtons: {
@@ -1 +1 @@
1
- {"version":3,"file":"RuiFooterStepper.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/steppers/RuiFooterStepper.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { FooterStepperVariant } from '@/components/steppers/footer-stepper-variant';\nimport { tv } from '@/utils/tv';\n\nexport interface Props {\n pages: number;\n variant?: FooterStepperVariant;\n arrowButtons?: boolean;\n hideButtons?: boolean;\n}\n\ndefineOptions({\n name: 'RuiFooterStepper',\n});\n\nconst modelValue = defineModel<number>({ default: 1 });\n\nconst {\n pages,\n variant: variantProp = FooterStepperVariant.numeric,\n arrowButtons = false,\n hideButtons = false,\n} = defineProps<Props>();\n\nconst footerStepper = {\n arrowButton: '!bg-white !disabled:bg-white/60 dark:!disabled:bg-[rgb(50,50,50)]',\n bullet: tv({\n base: 'rounded-full h-2 w-2 bg-black/[0.26] dark:bg-white/30 transition-colors cursor-pointer hover:bg-rui-grey-300 dark:hover:bg-rui-grey-400',\n variants: {\n active: {\n true: 'bg-rui-primary dark:bg-rui-primary hover:bg-rui-primary dark:hover:bg-rui-primary',\n },\n },\n }),\n pill: tv({\n base: 'rounded-full h-2 w-full bg-rui-grey-200 dark:bg-rui-grey-300 transition-colors',\n variants: {\n active: {\n true: 'bg-rui-primary dark:bg-rui-primary',\n },\n },\n }),\n};\n\nfunction onChange(delta: number): void {\n set(modelValue, get(modelValue) + delta);\n}\n\nfunction onPrev(): void {\n if (get(modelValue) > 1)\n onChange(-1);\n}\n\nfunction onNext(): void {\n if (get(modelValue) < pages)\n onChange(1);\n}\n\nfunction onClick(index: number): void {\n onChange(index - get(modelValue));\n}\n</script>\n\n<template>\n <div\n role=\"navigation\"\n aria-label=\"Step navigation\"\n class=\"flex items-center justify-between gap-x-4 transition-all duration-150\"\n :data-variant=\"variantProp\"\n >\n <template v-if=\"variantProp === FooterStepperVariant.pill\">\n <div\n data-id=\"pills\"\n class=\"flex w-full gap-x-3\"\n >\n <span\n v-for=\"i in pages\"\n :key=\"i\"\n :aria-current=\"modelValue === i ? 'step' : undefined\"\n :class=\"footerStepper.pill({ active: modelValue === i })\"\n />\n </div>\n </template>\n <template v-else>\n <RuiButton\n v-if=\"!hideButtons\"\n aria-label=\"Previous\"\n :class=\"arrowButtons ? footerStepper.arrowButton : undefined\"\n :disabled=\"modelValue <= 1\"\n :icon=\"arrowButtons\"\n :variant=\"arrowButtons ? 'outlined' : 'text'\"\n color=\"primary\"\n @click=\"onPrev()\"\n >\n <template\n v-if=\"!arrowButtons\"\n #prepend\n >\n <RuiIcon\n :size=\"18\"\n name=\"lu-chevron-left\"\n />\n </template>\n <span v-if=\"!arrowButtons\">Back</span>\n <RuiIcon\n v-else\n :size=\"24\"\n name=\"lu-arrow-left\"\n />\n </RuiButton>\n <span\n v-if=\"variantProp === FooterStepperVariant.numeric\"\n data-id=\"numeric\"\n class=\"text-rui-text\"\n >\n {{ modelValue }}/{{ pages }}\n </span>\n <div\n v-else-if=\"variantProp === FooterStepperVariant.bullet\"\n data-id=\"bullets\"\n class=\"flex gap-x-1\"\n >\n <span\n v-for=\"i in pages\"\n :key=\"i\"\n :aria-current=\"modelValue === i ? 'step' : undefined\"\n :class=\"footerStepper.bullet({ active: modelValue === i })\"\n @click=\"onClick(i)\"\n />\n </div>\n <RuiProgress\n v-else-if=\"variantProp === FooterStepperVariant.progress\"\n class=\"max-w-[60%]\"\n color=\"primary\"\n :value=\"(modelValue / pages) * 100\"\n />\n <RuiButton\n v-if=\"!hideButtons\"\n aria-label=\"Next\"\n :class=\"arrowButtons ? footerStepper.arrowButton : undefined\"\n :disabled=\"modelValue >= pages\"\n :icon=\"arrowButtons\"\n :variant=\"arrowButtons ? 'outlined' : 'text'\"\n color=\"primary\"\n @click=\"onNext()\"\n >\n <span v-if=\"!arrowButtons\">Next</span>\n <RuiIcon\n v-else\n :size=\"24\"\n name=\"lu-arrow-right\"\n />\n <template\n v-if=\"!arrowButtons\"\n #append\n >\n <RuiIcon\n :size=\"18\"\n name=\"lu-chevron-right\"\n />\n </template>\n </RuiButton>\n </template>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiFooterStepper.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/steppers/RuiFooterStepper.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { FooterStepperVariant } from '@/components/steppers/footer-stepper-variant';\nimport { tv } from '@/utils/tv';\n\nexport interface Props {\n pages: number;\n variant?: FooterStepperVariant;\n arrowButtons?: boolean;\n hideButtons?: boolean;\n}\n\ndefineOptions({\n name: 'RuiFooterStepper',\n});\n\nconst modelValue = defineModel<number>({ default: 1 });\n\nconst {\n pages,\n variant: variantProp = FooterStepperVariant.numeric,\n arrowButtons = false,\n hideButtons = false,\n} = defineProps<Props>();\n\nconst footerStepper = {\n arrowButton: '!bg-white !disabled:bg-white/60 dark:!disabled:bg-[rgb(50,50,50)]',\n bullet: tv({\n base: 'rounded-full h-2 w-2 bg-black/[0.26] dark:bg-white/30 transition-colors cursor-pointer hover:bg-rui-grey-300 dark:hover:bg-rui-grey-400',\n variants: {\n active: {\n true: 'bg-rui-primary dark:bg-rui-primary hover:bg-rui-primary dark:hover:bg-rui-primary',\n },\n },\n }),\n pill: tv({\n base: 'rounded-full h-2 w-full bg-rui-grey-200 dark:bg-rui-grey-300 transition-colors',\n variants: {\n active: {\n true: 'bg-rui-primary dark:bg-rui-primary',\n },\n },\n }),\n};\n\nfunction onChange(delta: number): void {\n set(modelValue, get(modelValue) + delta);\n}\n\nfunction onPrev(): void {\n if (get(modelValue) > 1)\n onChange(-1);\n}\n\nfunction onNext(): void {\n if (get(modelValue) < pages)\n onChange(1);\n}\n\nfunction onClick(index: number): void {\n onChange(index - get(modelValue));\n}\n</script>\n\n<template>\n <div\n role=\"navigation\"\n aria-label=\"Step navigation\"\n class=\"flex items-center justify-between gap-x-4 transition-all duration-150\"\n :data-variant=\"variantProp\"\n >\n <template v-if=\"variantProp === FooterStepperVariant.pill\">\n <div\n data-id=\"pills\"\n class=\"flex w-full gap-x-3\"\n >\n <span\n v-for=\"i in pages\"\n :key=\"i\"\n :aria-current=\"modelValue === i ? 'step' : undefined\"\n :class=\"footerStepper.pill({ active: modelValue === i })\"\n />\n </div>\n </template>\n <template v-else>\n <RuiButton\n v-if=\"!hideButtons\"\n aria-label=\"Previous\"\n :class=\"arrowButtons ? footerStepper.arrowButton : undefined\"\n :disabled=\"modelValue <= 1\"\n :icon=\"arrowButtons\"\n :variant=\"arrowButtons ? 'outlined' : 'text'\"\n color=\"primary\"\n @click=\"onPrev()\"\n >\n <template\n v-if=\"!arrowButtons\"\n #prepend\n >\n <RuiIcon\n :size=\"18\"\n name=\"lu-chevron-left\"\n />\n </template>\n <span v-if=\"!arrowButtons\">Back</span>\n <RuiIcon\n v-else\n :size=\"24\"\n name=\"lu-arrow-left\"\n />\n </RuiButton>\n <span\n v-if=\"variantProp === FooterStepperVariant.numeric\"\n data-id=\"numeric\"\n class=\"text-rui-text\"\n >\n {{ modelValue }}/{{ pages }}\n </span>\n <div\n v-else-if=\"variantProp === FooterStepperVariant.bullet\"\n data-id=\"bullets\"\n class=\"flex gap-x-1\"\n >\n <span\n v-for=\"i in pages\"\n :key=\"i\"\n :aria-current=\"modelValue === i ? 'step' : undefined\"\n :class=\"footerStepper.bullet({ active: modelValue === i })\"\n @click=\"onClick(i)\"\n />\n </div>\n <RuiProgress\n v-else-if=\"variantProp === FooterStepperVariant.progress\"\n class=\"max-w-[60%]\"\n color=\"primary\"\n :value=\"(modelValue / pages) * 100\"\n />\n <RuiButton\n v-if=\"!hideButtons\"\n aria-label=\"Next\"\n :class=\"arrowButtons ? footerStepper.arrowButton : undefined\"\n :disabled=\"modelValue >= pages\"\n :icon=\"arrowButtons\"\n :variant=\"arrowButtons ? 'outlined' : 'text'\"\n color=\"primary\"\n @click=\"onNext()\"\n >\n <span v-if=\"!arrowButtons\">Next</span>\n <RuiIcon\n v-else\n :size=\"24\"\n name=\"lu-arrow-right\"\n />\n <template\n v-if=\"!arrowButtons\"\n #append\n >\n <RuiIcon\n :size=\"18\"\n name=\"lu-chevron-right\"\n />\n </template>\n </RuiButton>\n </template>\n </div>\n</template>\n"],"mappings":"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"}
@@ -17,7 +17,7 @@ var _hoisted_2 = [
17
17
  "data-active"
18
18
  ];
19
19
  var _hoisted_3 = { class: "relative flex py-2" };
20
- var RuiStepper_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
20
+ var RuiStepper_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
21
21
  name: "RuiStepper",
22
22
  __name: "RuiStepper",
23
23
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"RuiStepper.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/steppers/RuiStepper.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { VueClassValue } from '@/types/class-value';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport RuiStepperCustomIcon from '@/components/steppers/RuiStepperCustomIcon.vue';\nimport RuiStepperIcon from '@/components/steppers/RuiStepperIcon.vue';\nimport { StepperOrientation, StepperState, type StepperStep } from '@/types/stepper';\nimport { tv } from '@/utils/tv';\n\nexport interface RuiStepperClassNames {\n root?: VueClassValue;\n title?: VueClassValue;\n subtitle?: VueClassValue;\n}\n\nexport interface Props {\n step?: number;\n steps: StepperStep[];\n iconTop?: boolean;\n custom?: boolean;\n classNames?: RuiStepperClassNames;\n /** @deprecated Use `classNames.title` instead */\n titleClass?: string;\n /** @deprecated Use `classNames.subtitle` instead */\n subtitleClass?: string;\n orientation?: StepperOrientation;\n keepActiveVisible?: boolean;\n}\n\ndefineOptions({\n name: 'RuiStepper',\n});\n\nconst {\n step,\n steps,\n iconTop = false,\n custom = false,\n classNames,\n titleClass = '',\n subtitleClass = '',\n orientation = StepperOrientation.horizontal,\n keepActiveVisible = true,\n} = defineProps<Props>();\n\ndefineSlots<{\n icon?: (props: { state: StepperState | undefined; index: number }) => any;\n}>();\n\nconst wrapperRef = useTemplateRef<HTMLDivElement>('wrapperRef');\n\nconst stepper = tv({\n slots: {\n root: 'flex no-scrollbar overflow-auto',\n step: 'flex items-center px-6 relative',\n title: '',\n subtitle: '',\n label: 'flex flex-col items-start text-left ml-2',\n divider: 'border-rui-grey-400',\n },\n variants: {\n orientation: {\n [StepperOrientation.horizontal]: {\n root: 'whitespace-nowrap lg:whitespace-normal',\n step: '',\n divider: 'block max-w-full min-w-[1rem] h-0 max-h-0 self-center -mx-4 my-0 border-t [flex:1_1_0]',\n },\n [StepperOrientation.vertical]: {\n root: 'flex-col inline-flex',\n step: 'px-0 py-6',\n divider: 'block min-h-[3rem] min-w-0 max-h-full h-full self-start -my-4 mx-3 border-l',\n },\n },\n state: {\n [StepperState.inactive]: {\n step: 'text-rui-text-disabled',\n title: 'text-rui-text-secondary',\n subtitle: 'text-rui-text',\n },\n [StepperState.active]: {\n step: 'text-rui-text',\n title: '',\n subtitle: 'text-rui-text-secondary',\n },\n [StepperState.done]: {\n step: 'text-rui-text',\n title: '',\n subtitle: 'text-rui-text-secondary',\n },\n [StepperState.error]: {\n step: 'text-rui-error',\n title: '',\n subtitle: '',\n },\n [StepperState.warning]: {\n step: 'text-rui-warning',\n title: '',\n subtitle: '',\n },\n [StepperState.info]: {\n step: 'text-rui-info',\n title: '',\n subtitle: '',\n },\n [StepperState.success]: {\n step: 'text-rui-success',\n title: '',\n subtitle: '',\n },\n },\n iconTop: {\n true: {\n step: 'flex-col',\n label: 'ml-0 mt-4 items-center text-center',\n },\n },\n custom: {\n true: {},\n false: {},\n },\n },\n compoundVariants: [\n { custom: true, state: StepperState.inactive, class: { step: 'text-rui-text' } },\n { orientation: StepperOrientation.vertical, custom: true, class: { divider: 'mx-5' } },\n { orientation: StepperOrientation.vertical, iconTop: true, class: { divider: 'self-center mx-auto' } },\n ],\n defaultVariants: {\n state: StepperState.inactive,\n orientation: StepperOrientation.horizontal,\n custom: false,\n },\n});\n\n// Shared UI for layout props (no per-item state)\nconst ui = computed<ReturnType<typeof stepper>>(() => stepper({ orientation, custom, iconTop }));\n\n// Per-item UI that includes the step's state\nfunction stepUi(state: StepperState): ReturnType<typeof stepper> {\n return stepper({ orientation, custom, iconTop, state });\n}\n\n// automatically set step state to stepper.\nconst renderedStep = computed<StepperStep[]>(() => {\n if (step === undefined)\n return steps;\n\n return steps.map((item, index) => {\n let stepStatus: StepperState = StepperState.inactive;\n\n if (index + 1 === step)\n stepStatus = StepperState.active;\n\n if (index + 1 < step)\n stepStatus = StepperState.done;\n\n return {\n ...item,\n state: stepStatus,\n };\n });\n});\n\nfunction resolveState(state: StepperState | undefined): StepperState {\n return state ?? StepperState.inactive;\n}\n\nwatch(() => step, () => {\n if (!keepActiveVisible || orientation !== StepperOrientation.horizontal) {\n return;\n }\n\n nextTick(() => {\n const elem = get(wrapperRef);\n if (!elem) {\n return;\n }\n const activeStep = elem.querySelector('[data-active]');\n activeStep?.scrollIntoView?.({\n behavior: 'smooth',\n inline: 'center',\n });\n });\n});\n</script>\n\n<template>\n <div\n ref=\"wrapperRef\"\n role=\"list\"\n aria-label=\"Progress steps\"\n :class=\"ui.root()\"\n :data-orientation=\"orientation\"\n :data-icon-top=\"iconTop || undefined\"\n :data-custom=\"custom || undefined\"\n >\n <template\n v-for=\"({ title, description, state, loading }, index) in renderedStep\"\n :key=\"index\"\n >\n <hr\n v-if=\"index > 0\"\n :class=\"ui.divider()\"\n />\n <div\n role=\"listitem\"\n :aria-current=\"state === StepperState.active ? 'step' : undefined\"\n :data-state=\"resolveState(state)\"\n :data-active=\"state === StepperState.active || undefined\"\n :class=\"stepUi(resolveState(state)).step()\"\n >\n <slot\n name=\"icon\"\n v-bind=\"{ state, index: index + 1 }\"\n >\n <div class=\"relative flex py-2\">\n <RuiStepperCustomIcon\n v-if=\"custom\"\n :index=\"index + 1\"\n :state=\"state\"\n />\n <RuiStepperIcon\n v-else\n :index=\"index + 1\"\n :state=\"state\"\n />\n <RuiProgress\n v-if=\"loading\"\n class=\"absolute left-1/2 top-1/2 transform -translate-x-1/2 -translate-y-1/2\"\n size=\"32\"\n variant=\"indeterminate\"\n circular\n thickness=\"2\"\n color=\"primary\"\n />\n </div>\n </slot>\n <div\n v-if=\"title || description\"\n :class=\"ui.label()\"\n data-id=\"stepper-label\"\n >\n <span\n v-if=\"title\"\n :class=\"[stepUi(resolveState(state)).title(), custom && (classNames?.title ?? titleClass)]\"\n class=\"text-subtitle-2\"\n >\n {{ title }}\n </span>\n <span\n v-if=\"description\"\n :class=\"[stepUi(resolveState(state)).subtitle(), custom && (classNames?.subtitle ?? subtitleClass)]\"\n class=\"text-caption\"\n >\n {{ description }}\n </span>\n </div>\n </div>\n </template>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiStepper.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/steppers/RuiStepper.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { VueClassValue } from '@/types/class-value';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport RuiStepperCustomIcon from '@/components/steppers/RuiStepperCustomIcon.vue';\nimport RuiStepperIcon from '@/components/steppers/RuiStepperIcon.vue';\nimport { StepperOrientation, StepperState, type StepperStep } from '@/types/stepper';\nimport { tv } from '@/utils/tv';\n\nexport interface RuiStepperClassNames {\n root?: VueClassValue;\n title?: VueClassValue;\n subtitle?: VueClassValue;\n}\n\nexport interface Props {\n step?: number;\n steps: StepperStep[];\n iconTop?: boolean;\n custom?: boolean;\n classNames?: RuiStepperClassNames;\n /** @deprecated Use `classNames.title` instead */\n titleClass?: string;\n /** @deprecated Use `classNames.subtitle` instead */\n subtitleClass?: string;\n orientation?: StepperOrientation;\n keepActiveVisible?: boolean;\n}\n\ndefineOptions({\n name: 'RuiStepper',\n});\n\nconst {\n step,\n steps,\n iconTop = false,\n custom = false,\n classNames,\n titleClass = '',\n subtitleClass = '',\n orientation = StepperOrientation.horizontal,\n keepActiveVisible = true,\n} = defineProps<Props>();\n\ndefineSlots<{\n icon?: (props: { state: StepperState | undefined; index: number }) => any;\n}>();\n\nconst wrapperRef = useTemplateRef<HTMLDivElement>('wrapperRef');\n\nconst stepper = tv({\n slots: {\n root: 'flex no-scrollbar overflow-auto',\n step: 'flex items-center px-6 relative',\n title: '',\n subtitle: '',\n label: 'flex flex-col items-start text-left ml-2',\n divider: 'border-rui-grey-400',\n },\n variants: {\n orientation: {\n [StepperOrientation.horizontal]: {\n root: 'whitespace-nowrap lg:whitespace-normal',\n step: '',\n divider: 'block max-w-full min-w-[1rem] h-0 max-h-0 self-center -mx-4 my-0 border-t [flex:1_1_0]',\n },\n [StepperOrientation.vertical]: {\n root: 'flex-col inline-flex',\n step: 'px-0 py-6',\n divider: 'block min-h-[3rem] min-w-0 max-h-full h-full self-start -my-4 mx-3 border-l',\n },\n },\n state: {\n [StepperState.inactive]: {\n step: 'text-rui-text-disabled',\n title: 'text-rui-text-secondary',\n subtitle: 'text-rui-text',\n },\n [StepperState.active]: {\n step: 'text-rui-text',\n title: '',\n subtitle: 'text-rui-text-secondary',\n },\n [StepperState.done]: {\n step: 'text-rui-text',\n title: '',\n subtitle: 'text-rui-text-secondary',\n },\n [StepperState.error]: {\n step: 'text-rui-error',\n title: '',\n subtitle: '',\n },\n [StepperState.warning]: {\n step: 'text-rui-warning',\n title: '',\n subtitle: '',\n },\n [StepperState.info]: {\n step: 'text-rui-info',\n title: '',\n subtitle: '',\n },\n [StepperState.success]: {\n step: 'text-rui-success',\n title: '',\n subtitle: '',\n },\n },\n iconTop: {\n true: {\n step: 'flex-col',\n label: 'ml-0 mt-4 items-center text-center',\n },\n },\n custom: {\n true: {},\n false: {},\n },\n },\n compoundVariants: [\n { custom: true, state: StepperState.inactive, class: { step: 'text-rui-text' } },\n { orientation: StepperOrientation.vertical, custom: true, class: { divider: 'mx-5' } },\n { orientation: StepperOrientation.vertical, iconTop: true, class: { divider: 'self-center mx-auto' } },\n ],\n defaultVariants: {\n state: StepperState.inactive,\n orientation: StepperOrientation.horizontal,\n custom: false,\n },\n});\n\n// Shared UI for layout props (no per-item state)\nconst ui = computed<ReturnType<typeof stepper>>(() => stepper({ orientation, custom, iconTop }));\n\n// Per-item UI that includes the step's state\nfunction stepUi(state: StepperState): ReturnType<typeof stepper> {\n return stepper({ orientation, custom, iconTop, state });\n}\n\n// automatically set step state to stepper.\nconst renderedStep = computed<StepperStep[]>(() => {\n if (step === undefined)\n return steps;\n\n return steps.map((item, index) => {\n let stepStatus: StepperState = StepperState.inactive;\n\n if (index + 1 === step)\n stepStatus = StepperState.active;\n\n if (index + 1 < step)\n stepStatus = StepperState.done;\n\n return {\n ...item,\n state: stepStatus,\n };\n });\n});\n\nfunction resolveState(state: StepperState | undefined): StepperState {\n return state ?? StepperState.inactive;\n}\n\nwatch(() => step, () => {\n if (!keepActiveVisible || orientation !== StepperOrientation.horizontal) {\n return;\n }\n\n nextTick(() => {\n const elem = get(wrapperRef);\n if (!elem) {\n return;\n }\n const activeStep = elem.querySelector('[data-active]');\n activeStep?.scrollIntoView?.({\n behavior: 'smooth',\n inline: 'center',\n });\n });\n});\n</script>\n\n<template>\n <div\n ref=\"wrapperRef\"\n role=\"list\"\n aria-label=\"Progress steps\"\n :class=\"ui.root()\"\n :data-orientation=\"orientation\"\n :data-icon-top=\"iconTop || undefined\"\n :data-custom=\"custom || undefined\"\n >\n <template\n v-for=\"({ title, description, state, loading }, index) in renderedStep\"\n :key=\"index\"\n >\n <hr\n v-if=\"index > 0\"\n :class=\"ui.divider()\"\n />\n <div\n role=\"listitem\"\n :aria-current=\"state === StepperState.active ? 'step' : undefined\"\n :data-state=\"resolveState(state)\"\n :data-active=\"state === StepperState.active || undefined\"\n :class=\"stepUi(resolveState(state)).step()\"\n >\n <slot\n name=\"icon\"\n v-bind=\"{ state, index: index + 1 }\"\n >\n <div class=\"relative flex py-2\">\n <RuiStepperCustomIcon\n v-if=\"custom\"\n :index=\"index + 1\"\n :state=\"state\"\n />\n <RuiStepperIcon\n v-else\n :index=\"index + 1\"\n :state=\"state\"\n />\n <RuiProgress\n v-if=\"loading\"\n class=\"absolute left-1/2 top-1/2 transform -translate-x-1/2 -translate-y-1/2\"\n size=\"32\"\n variant=\"indeterminate\"\n circular\n thickness=\"2\"\n color=\"primary\"\n />\n </div>\n </slot>\n <div\n v-if=\"title || description\"\n :class=\"ui.label()\"\n data-id=\"stepper-label\"\n >\n <span\n v-if=\"title\"\n :class=\"[stepUi(resolveState(state)).title(), custom && (classNames?.title ?? titleClass)]\"\n class=\"text-subtitle-2\"\n >\n {{ title }}\n </span>\n <span\n v-if=\"description\"\n :class=\"[stepUi(resolveState(state)).subtitle(), custom && (classNames?.subtitle ?? subtitleClass)]\"\n class=\"text-caption\"\n >\n {{ description }}\n </span>\n </div>\n </div>\n </template>\n </div>\n</template>\n"],"mappings":"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"}
@@ -8,7 +8,7 @@ var _hoisted_1 = {
8
8
  class: "text-rui-primary dark:text-white"
9
9
  };
10
10
  var _hoisted_2 = { key: 3 };
11
- var RuiStepperCustomIcon_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
11
+ var RuiStepperCustomIcon_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
12
12
  __name: "RuiStepperCustomIcon",
13
13
  props: {
14
14
  state: { default: () => StepperState.inactive },
@@ -1 +1 @@
1
- {"version":3,"file":"RuiStepperCustomIcon.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/steppers/RuiStepperCustomIcon.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { StepperState } from '@/types/stepper';\nimport { tv } from '@/utils/tv';\n\ntype IndicatorState = typeof StepperState.inactive | typeof StepperState.active;\n\nconst { state = StepperState.inactive } = defineProps<{\n state?: StepperState;\n index: number;\n}>();\n\nconst stepperCustomIcon = tv({\n base: 'inline-flex items-center justify-center rounded-full h-10 w-10 shrink-0 border border-rui-primary',\n variants: {\n state: {\n [StepperState.inactive]: 'text-xs bg-white dark:bg-rui-primary dark:text-white dark:border-white',\n [StepperState.active]: 'text-white bg-rui-primary dark:bg-white dark:text-rui-primary',\n },\n },\n defaultVariants: { state: StepperState.active },\n});\n\nconst indicatorState = computed<IndicatorState>(() => state === StepperState.inactive ? StepperState.inactive : StepperState.active);\n</script>\n\n<template>\n <span :class=\"stepperCustomIcon({ state: indicatorState })\">\n <span\n v-if=\"state === StepperState.inactive\"\n class=\"text-rui-primary dark:text-white\"\n >\n {{ index }}\n </span>\n <RuiIcon\n v-else-if=\"state === StepperState.active\"\n name=\"lu-checkbox-blank-circle-fill\"\n :size=\"20\"\n />\n <RuiIcon\n v-else-if=\"state === StepperState.done\"\n :size=\"20\"\n name=\"lu-check\"\n />\n <span v-else>\n {{ index }}\n </span>\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;EAYA,MAAM,oBAAoB,GAAG;GAC3B,MAAM;GACN,UAAU,EACR,OAAO;KACJ,aAAa,WAAW;KACxB,aAAa,SAAS;IACxB,EACF;GACD,iBAAiB,EAAE,OAAO,aAAa,QAAA;GACxC,CAAC;EAEF,MAAM,iBAAiB,eAA+B,QAAA,UAAU,aAAa,WAAW,aAAa,WAAW,aAAa,OAAO;;uBAIlI,mBAoBO,QAAA,EApBA,OAAK,eAAE,MAAA,kBAAiB,CAAA,EAAA,OAAU,MAAA,eAAc,EAAA,CAAA,CAAA,EAAA,EAAA,CAE7C,QAAA,UAAU,MAAA,aAAY,CAAC,YAAA,WAAA,EAD/B,mBAKO,QALP,YAKO,gBADF,QAAA,MAAK,EAAA,EAAA,IAGG,QAAA,UAAU,MAAA,aAAY,CAAC,UAAA,WAAA,EADpC,YAIE,iBAAA;;IAFA,MAAK;IACJ,MAAM;SAGI,QAAA,UAAU,MAAA,aAAY,CAAC,QAAA,WAAA,EADpC,YAIE,iBAAA;;IAFC,MAAM;IACP,MAAK;uBAEP,mBAEO,QAAA,YAAA,gBADF,QAAA,MAAK,EAAA,EAAA,EAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"RuiStepperCustomIcon.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/steppers/RuiStepperCustomIcon.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { StepperState } from '@/types/stepper';\nimport { tv } from '@/utils/tv';\n\ntype IndicatorState = typeof StepperState.inactive | typeof StepperState.active;\n\nconst { state = StepperState.inactive } = defineProps<{\n state?: StepperState;\n index: number;\n}>();\n\nconst stepperCustomIcon = tv({\n base: 'inline-flex items-center justify-center rounded-full h-10 w-10 shrink-0 border border-rui-primary',\n variants: {\n state: {\n [StepperState.inactive]: 'text-xs bg-white dark:bg-rui-primary dark:text-white dark:border-white',\n [StepperState.active]: 'text-white bg-rui-primary dark:bg-white dark:text-rui-primary',\n },\n },\n defaultVariants: { state: StepperState.active },\n});\n\nconst indicatorState = computed<IndicatorState>(() => state === StepperState.inactive ? StepperState.inactive : StepperState.active);\n</script>\n\n<template>\n <span :class=\"stepperCustomIcon({ state: indicatorState })\">\n <span\n v-if=\"state === StepperState.inactive\"\n class=\"text-rui-primary dark:text-white\"\n >\n {{ index }}\n </span>\n <RuiIcon\n v-else-if=\"state === StepperState.active\"\n name=\"lu-checkbox-blank-circle-fill\"\n :size=\"20\"\n />\n <RuiIcon\n v-else-if=\"state === StepperState.done\"\n :size=\"20\"\n name=\"lu-check\"\n />\n <span v-else>\n {{ index }}\n </span>\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;EAYA,MAAM,oBAAoB,GAAG;GAC3B,MAAM;GACN,UAAU,EACR,OAAO;KACJ,aAAa,WAAW;KACxB,aAAa,SAAS;GACzB,EACF;GACA,iBAAiB,EAAE,OAAO,aAAa,OAAO;EAChD,CAAC;EAED,MAAM,iBAAiB,eAA+B,QAAA,UAAU,aAAa,WAAW,aAAa,WAAW,aAAa,MAAM;;uBAIjI,mBAoBO,QAAA,EApBA,OAAK,eAAE,MAAA,iBAAA,CAAiB,CAAA,EAAA,OAAU,MAAA,cAAA,EAAc,CAAA,CAAA,EAAA,GAAA,CAE7C,QAAA,UAAU,MAAA,YAAA,CAAY,CAAC,YAAA,UAAA,GAD/B,mBAKO,QALP,YAKO,gBADF,QAAA,KAAK,GAAA,CAAA,KAGG,QAAA,UAAU,MAAA,YAAA,CAAY,CAAC,UAAA,UAAA,GADpC,YAIE,iBAAA;;IAFA,MAAK;IACJ,MAAM;SAGI,QAAA,UAAU,MAAA,YAAA,CAAY,CAAC,QAAA,UAAA,GADpC,YAIE,iBAAA;;IAFC,MAAM;IACP,MAAK;uBAEP,mBAEO,QAAA,YAAA,gBADF,QAAA,KAAK,GAAA,CAAA,EAAA,GAAA,CAAA"}
@@ -3,7 +3,7 @@ import { tv } from "../../utils/tv.js";
3
3
  import RuiIcon_default from "../icons/RuiIcon.js";
4
4
  import { computed, createBlock, createCommentVNode, createElementBlock, defineComponent, normalizeClass, openBlock, toDisplayString, unref } from "vue";
5
5
  //#region src/components/steppers/RuiStepperIcon.vue?vue&type=script&setup=true&lang.ts
6
- var RuiStepperIcon_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
+ var RuiStepperIcon_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
7
  __name: "RuiStepperIcon",
8
8
  props: {
9
9
  state: { default: () => StepperState.inactive },
@@ -1 +1 @@
1
- {"version":3,"file":"RuiStepperIcon.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/steppers/RuiStepperIcon.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { RuiIcons } from '@/icons';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { StepperState } from '@/types/stepper';\nimport { tv } from '@/utils/tv';\n\ninterface StateIconProps {\n name: RuiIcons;\n class?: string;\n size?: number;\n}\n\nconst { state = StepperState.inactive, index } = defineProps<{\n state?: StepperState;\n index: number;\n}>();\n\nconst stateIconMap: Partial<Record<StepperState, StateIconProps>> = {\n [StepperState.done]: { name: 'lu-check', class: 'text-rui-dark-text dark:text-rui-light-text', size: 20 },\n [StepperState.success]: { name: 'lu-circle-check' },\n [StepperState.error]: { name: 'lu-circle-alert' },\n [StepperState.warning]: { name: 'lu-triangle-alert' },\n [StepperState.info]: { name: 'lu-info' },\n};\n\nconst stepperIcon = tv({\n slots: {\n indicator: 'inline-flex items-center justify-center rounded-full h-6 w-6',\n label: 'text-rui-dark-text',\n },\n variants: {\n state: {\n [StepperState.inactive]: {\n indicator: 'bg-current text-xs',\n label: 'dark:text-rui-light-text-secondary',\n },\n [StepperState.active]: {\n indicator: 'bg-rui-primary text-xs',\n label: 'dark:text-rui-light-text',\n },\n [StepperState.done]: {\n indicator: 'bg-rui-primary text-xs',\n label: 'dark:text-rui-light-text',\n },\n [StepperState.error]: {},\n [StepperState.warning]: {},\n [StepperState.info]: {},\n [StepperState.success]: {},\n },\n },\n defaultVariants: { state: StepperState.inactive },\n});\n\nconst ui = computed<ReturnType<typeof stepperIcon>>(() => stepperIcon({ state }));\n\nconst showLabel = computed<boolean>(() => state === StepperState.inactive || state === StepperState.active);\n\nconst iconProps = computed<StateIconProps | undefined>(() => stateIconMap[state]);\n</script>\n\n<template>\n <span :class=\"ui.indicator()\">\n <span\n v-if=\"showLabel\"\n :class=\"ui.label()\"\n >\n {{ index }}\n </span>\n <RuiIcon\n v-else-if=\"iconProps\"\n :name=\"iconProps.name\"\n :class=\"iconProps.class\"\n :size=\"iconProps.size\"\n />\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;EAiBA,MAAM,eAA8D;IACjE,aAAa,OAAO;IAAE,MAAM;IAAY,OAAO;IAA+C,MAAM;IAAI;IACxG,aAAa,UAAU,EAAE,MAAM,mBAAmB;IAClD,aAAa,QAAQ,EAAE,MAAM,mBAAmB;IAChD,aAAa,UAAU,EAAE,MAAM,qBAAqB;IACpD,aAAa,OAAO,EAAE,MAAM,WAAA;GAC9B;EAED,MAAM,cAAc,GAAG;GACrB,OAAO;IACL,WAAW;IACX,OAAO;IACR;GACD,UAAU,EACR,OAAO;KACJ,aAAa,WAAW;KACvB,WAAW;KACX,OAAO;KACR;KACA,aAAa,SAAS;KACrB,WAAW;KACX,OAAO;KACR;KACA,aAAa,OAAO;KACnB,WAAW;KACX,OAAO;KACR;KACA,aAAa,QAAQ,EAAE;KACvB,aAAa,UAAU,EAAE;KACzB,aAAa,OAAO,EAAE;KACtB,aAAa,UAAU,EAAA;IACzB,EACF;GACD,iBAAiB,EAAE,OAAO,aAAa,UAAA;GACxC,CAAC;EAEF,MAAM,KAAK,eAA+C,YAAY,EAAE,OAAI,QAAA,OAAG,CAAC,CAAC;EAEjF,MAAM,YAAY,eAAwB,QAAA,UAAU,aAAa,YAAY,QAAA,UAAU,aAAa,OAAO;EAE3G,MAAM,YAAY,eAA2C,aAAa,QAAA,OAAO;;uBAI/E,mBAaO,QAAA,EAbA,OAAK,eAAE,MAAA,GAAE,CAAC,WAAS,CAAA,EAAA,EAAA,CAEhB,MAAA,UAAS,IAAA,WAAA,EADjB,mBAKO,QAAA;;IAHJ,OAAK,eAAE,MAAA,GAAE,CAAC,OAAK,CAAA;sBAEb,QAAA,MAAK,EAAA,EAAA,IAGG,MAAA,UAAS,IAAA,WAAA,EADtB,YAKE,iBAAA;;IAHC,MAAM,MAAA,UAAS,CAAC;IAChB,OAAK,eAAE,MAAA,UAAS,CAAC,MAAK;IACtB,MAAM,MAAA,UAAS,CAAC"}
1
+ {"version":3,"file":"RuiStepperIcon.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/steppers/RuiStepperIcon.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { RuiIcons } from '@/icons';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { StepperState } from '@/types/stepper';\nimport { tv } from '@/utils/tv';\n\ninterface StateIconProps {\n name: RuiIcons;\n class?: string;\n size?: number;\n}\n\nconst { state = StepperState.inactive, index } = defineProps<{\n state?: StepperState;\n index: number;\n}>();\n\nconst stateIconMap: Partial<Record<StepperState, StateIconProps>> = {\n [StepperState.done]: { name: 'lu-check', class: 'text-rui-dark-text dark:text-rui-light-text', size: 20 },\n [StepperState.success]: { name: 'lu-circle-check' },\n [StepperState.error]: { name: 'lu-circle-alert' },\n [StepperState.warning]: { name: 'lu-triangle-alert' },\n [StepperState.info]: { name: 'lu-info' },\n};\n\nconst stepperIcon = tv({\n slots: {\n indicator: 'inline-flex items-center justify-center rounded-full h-6 w-6',\n label: 'text-rui-dark-text',\n },\n variants: {\n state: {\n [StepperState.inactive]: {\n indicator: 'bg-current text-xs',\n label: 'dark:text-rui-light-text-secondary',\n },\n [StepperState.active]: {\n indicator: 'bg-rui-primary text-xs',\n label: 'dark:text-rui-light-text',\n },\n [StepperState.done]: {\n indicator: 'bg-rui-primary text-xs',\n label: 'dark:text-rui-light-text',\n },\n [StepperState.error]: {},\n [StepperState.warning]: {},\n [StepperState.info]: {},\n [StepperState.success]: {},\n },\n },\n defaultVariants: { state: StepperState.inactive },\n});\n\nconst ui = computed<ReturnType<typeof stepperIcon>>(() => stepperIcon({ state }));\n\nconst showLabel = computed<boolean>(() => state === StepperState.inactive || state === StepperState.active);\n\nconst iconProps = computed<StateIconProps | undefined>(() => stateIconMap[state]);\n</script>\n\n<template>\n <span :class=\"ui.indicator()\">\n <span\n v-if=\"showLabel\"\n :class=\"ui.label()\"\n >\n {{ index }}\n </span>\n <RuiIcon\n v-else-if=\"iconProps\"\n :name=\"iconProps.name\"\n :class=\"iconProps.class\"\n :size=\"iconProps.size\"\n />\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;EAiBA,MAAM,eAA8D;IACjE,aAAa,OAAO;IAAE,MAAM;IAAY,OAAO;IAA+C,MAAM;GAAG;IACvG,aAAa,UAAU,EAAE,MAAM,kBAAkB;IACjD,aAAa,QAAQ,EAAE,MAAM,kBAAkB;IAC/C,aAAa,UAAU,EAAE,MAAM,oBAAoB;IACnD,aAAa,OAAO,EAAE,MAAM,UAAU;EACzC;EAEA,MAAM,cAAc,GAAG;GACrB,OAAO;IACL,WAAW;IACX,OAAO;GACT;GACA,UAAU,EACR,OAAO;KACJ,aAAa,WAAW;KACvB,WAAW;KACX,OAAO;IACT;KACC,aAAa,SAAS;KACrB,WAAW;KACX,OAAO;IACT;KACC,aAAa,OAAO;KACnB,WAAW;KACX,OAAO;IACT;KACC,aAAa,QAAQ,CAAC;KACtB,aAAa,UAAU,CAAC;KACxB,aAAa,OAAO,CAAC;KACrB,aAAa,UAAU,CAAC;GAC3B,EACF;GACA,iBAAiB,EAAE,OAAO,aAAa,SAAS;EAClD,CAAC;EAED,MAAM,KAAK,eAA+C,YAAY,EAAE,OAAI,QAAA,MAAE,CAAC,CAAC;EAEhF,MAAM,YAAY,eAAwB,QAAA,UAAU,aAAa,YAAY,QAAA,UAAU,aAAa,MAAM;EAE1G,MAAM,YAAY,eAA2C,aAAa,QAAA,MAAM;;uBAI9E,mBAaO,QAAA,EAbA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,UAAS,CAAA,EAAA,GAAA,CAEhB,MAAA,SAAA,KAAA,UAAA,GADR,mBAKO,QAAA;;IAHJ,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA;sBAEb,QAAA,KAAK,GAAA,CAAA,KAGG,MAAA,SAAA,KAAA,UAAA,GADb,YAKE,iBAAA;;IAHC,MAAM,MAAA,SAAA,CAAS,CAAC;IAChB,OAAK,eAAE,MAAA,SAAA,CAAS,CAAC,KAAK;IACtB,MAAM,MAAA,SAAA,CAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"footer-stepper-variant.js","names":[],"sources":["../../../src/components/steppers/footer-stepper-variant.ts"],"sourcesContent":["export const FooterStepperVariant = {\n numeric: 'numeric',\n bullet: 'bullet',\n progress: 'progress',\n pill: 'pill',\n} as const;\n\nexport type FooterStepperVariant = (typeof FooterStepperVariant)[keyof typeof FooterStepperVariant];\n"],"mappings":";AAAA,IAAa,uBAAuB;CAClC,SAAS;CACT,QAAQ;CACR,UAAU;CACV,MAAM;CACP"}
1
+ {"version":3,"file":"footer-stepper-variant.js","names":[],"sources":["../../../src/components/steppers/footer-stepper-variant.ts"],"sourcesContent":["export const FooterStepperVariant = {\n numeric: 'numeric',\n bullet: 'bullet',\n progress: 'progress',\n pill: 'pill',\n} as const;\n\nexport type FooterStepperVariant = (typeof FooterStepperVariant)[keyof typeof FooterStepperVariant];\n"],"mappings":";AAAA,IAAa,uBAAuB;CAClC,SAAS;CACT,QAAQ;CACR,UAAU;CACV,MAAM;AACR"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDataTable.js","names":[],"sources":["../../../src/components/tables/RuiDataTable.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"T extends object, IdType extends keyof T = keyof T\">\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCheckbox from '@/components/forms/checkbox/RuiCheckbox.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiTooltip from '@/components/overlays/tooltip/RuiTooltip.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { dataTableStyles, getAlignClass } from '@/components/tables/data-table-styles';\nimport RuiExpandButton from '@/components/tables/RuiExpandButton.vue';\nimport RuiTableEmptyState from '@/components/tables/RuiTableEmptyState.vue';\nimport RuiTableHead, {\n type GroupData,\n type TableColumn,\n type TableRowKeyData,\n type TableSortData,\n} from '@/components/tables/RuiTableHead.vue';\nimport RuiTablePagination, {\n type TablePaginationData,\n} from '@/components/tables/RuiTablePagination.vue';\nimport { useTable } from '@/composables/defaults/table';\nimport { useStickyTableHeader } from '@/composables/sticky-header';\nimport { useTableColumns } from '@/composables/tables/data-table/columns';\nimport { useTableExpansion } from '@/composables/tables/data-table/expansion';\nimport { useTableGrouping } from '@/composables/tables/data-table/grouping';\nimport { useTablePagination } from '@/composables/tables/data-table/pagination';\nimport { useTableSelection } from '@/composables/tables/data-table/selection';\nimport { useTableSort } from '@/composables/tables/data-table/sort';\nimport { type GroupHeader, isRow } from '@/composables/tables/data-table/types';\n\nexport type { GroupedTableRow, GroupHeader, TableOptions } from '@/composables/tables/data-table/types';\n\nexport interface Props<T, K extends keyof T> {\n /**\n * list of items for each row\n */\n rows: readonly T[];\n /**\n * the attribute used to identify each row uniquely for selection, usually `id`\n */\n rowAttr: K;\n /**\n * model for internal searching\n */\n search?: string;\n /**\n * model for items per page\n * will be used if the `pagination` model isn't specified\n */\n itemsPerPage?: number;\n /**\n * list of column definitions\n */\n cols?: TableColumn<T>[];\n /**\n * attribute to use from column definitions to display column titles\n */\n columnAttr?: keyof TableColumn<T>;\n /**\n * flag to show a more or less spacious table\n */\n dense?: boolean;\n /**\n * flag to outline the flag with a border\n */\n outlined?: boolean;\n /**\n * should add zebra-striping to the table row\n */\n striped?: boolean;\n /**\n * flag to show loading state of the table\n * triggers indefinite progress at the bottom of the table header\n */\n loading?: boolean;\n disablePerPage?: boolean;\n /**\n * Maximum number of pages before the jump-to-page dropdown is replaced with\n * a numeric input. Defaults to `500`. Forwarded to `RuiTablePagination`.\n */\n rangesThreshold?: number;\n /**\n * data to display for empty state\n * text and icon\n * @example :empty=\"{ icon: 'transactions-line', label: 'No transactions found' }\"\n */\n empty?: {\n label?: string;\n description?: string;\n };\n /**\n * should hide the header navigation\n */\n hideDefaultHeader?: boolean;\n /**\n * should hide the footer navigation\n */\n hideDefaultFooter?: boolean;\n\n rounded?: 'sm' | 'md' | 'lg';\n /**\n * make expansion work like accordion\n */\n singleExpand?: boolean;\n /**\n * make table head stick to top on scroll\n */\n stickyHeader?: boolean;\n stickyOffset?: number;\n /**\n * Affects how the items per page work across the app.\n * When true, changing the items per page setting in one table will affect other tables.\n */\n globalItemsPerPage?: boolean;\n groupExpandButtonPosition?: 'start' | 'end';\n disabledRows?: readonly T[];\n multiPageSelect?: boolean;\n itemClass?: ((item: T) => string) | string;\n}\n\ndefineOptions({\n name: 'RuiDataTable',\n});\n\nconst selectedData = defineModel<T[IdType][]>();\n\nconst expanded = defineModel<T[]>('expanded');\n\nconst [pagination, paginationModifiers] = defineModel<TablePaginationData, 'external'>('pagination');\n\nconst [sort, sortModifiers] = defineModel<TableSortData<T>, 'external'>('sort');\n\nconst group = defineModel<TableRowKeyData<T>>('group');\n\nconst collapsed = defineModel<T[]>('collapsed');\n\nconst {\n rows,\n rowAttr,\n search = '',\n itemsPerPage = 10,\n cols,\n columnAttr = 'label',\n dense = false,\n outlined = false,\n striped = false,\n loading = false,\n disablePerPage = false,\n rangesThreshold = 500,\n empty = { label: 'No item found' },\n hideDefaultHeader = false,\n hideDefaultFooter = false,\n rounded = 'md',\n singleExpand = false,\n stickyHeader = false,\n stickyOffset,\n globalItemsPerPage = undefined,\n groupExpandButtonPosition = 'start',\n disabledRows,\n multiPageSelect = false,\n itemClass = '',\n} = defineProps<Props<T, IdType>>();\n\nconst emit = defineEmits<{\n 'update:options': [value: { pagination?: TablePaginationData; sort?: TableSortData<T> }];\n 'copy:group': [value: GroupData<T>];\n}>();\n\nconst slots = defineSlots<Partial<\n Record<`header.${string}`, (props: { column: TableColumn<T> }) => any> &\n Record<`item.${string}`, (props: { column: TableColumn<T>; row: T; index: number }) => any> & {\n 'body.prepend': (props: { colspan: number }) => any;\n 'body.append': (props: { colspan: number }) => any;\n 'group.header': (props: {\n colspan: number;\n header: GroupHeader<T>;\n isOpen: boolean;\n toggle: () => void;\n }) => any;\n 'group.header.content': (props: { header: GroupHeader<T>; groupKey: string }) => any;\n 'expanded-item': (props: { row: T; index: number }) => any;\n 'no-data': () => any;\n 'empty-description': () => any;\n 'tfoot': () => any;\n }\n>>();\n\nconst tableDefaults = useTable();\n\nconst stickyHeaderOffset = computed<number | undefined>(() =>\n stickyOffset !== undefined ? stickyOffset : get(tableDefaults.stickyOffset),\n);\n\nconst table = useTemplateRef<HTMLTableElement>('table');\nconst tableScroller = useTemplateRef<HTMLElement>('tableScroller');\n\nconst { stick } = useStickyTableHeader(\n () => stickyHeader,\n stickyHeaderOffset,\n { table, tableScroller },\n);\n\nconst { expandable, isExpanded, onToggleExpand } = useTableExpansion<T, IdType>(\n { rowAttr, singleExpand },\n { expanded },\n);\n\nfunction emitUpdateOptions(opts: { sort?: TableSortData<T>; pagination?: TablePaginationData }): void {\n emit('update:options', opts);\n}\n\nconst {\n sortData,\n sortedMap,\n sorted,\n onSort: applySort,\n} = useTableSort<T>(\n { rows: () => rows, search: () => search, sortModifiersExternal: sortModifiers.external },\n {\n sort,\n pagination,\n emitUpdateOptions,\n },\n);\n\nconst {\n groupKeys,\n groupKey,\n grouped,\n isExpandedGroup,\n isHiddenRow,\n onToggleExpandGroup,\n onUngroup,\n onCopyGroup,\n} = useTableGrouping<T, IdType>(\n { rowAttr },\n {\n group,\n collapsed,\n sorted,\n emitCopyGroup: (value: GroupData<T>) => emit('copy:group', value),\n },\n);\n\nconst {\n paginationData,\n filtered,\n setInternalTotal,\n resetPagination,\n} = useTablePagination<T>(\n {\n itemsPerPage,\n paginationModifiersExternal: paginationModifiers.external,\n globalItemsPerPage,\n },\n {\n pagination,\n grouped,\n isHiddenRow,\n sort,\n emitUpdateOptions,\n tableDefaults,\n },\n);\n\nconst noData = computed<boolean>(() => get(filtered).length === 0);\n\nconst { columns, colspan, headerSlots, cellValue } = useTableColumns<T, IdType>({\n cols: () => cols,\n columnAttr,\n rows: () => rows,\n expandable,\n groupKeys,\n selectedData,\n slots,\n});\n\nconst {\n isAllSelected,\n indeterminate,\n isSelected,\n isDisabledRow,\n onToggleAll,\n onSelect,\n onCheckboxClick,\n deselectRemovedRows,\n resetCheckboxShiftState,\n} = useTableSelection<T, IdType>(\n { rowAttr, multiPageSelect, disabledRows: () => disabledRows },\n { selectedData, filtered },\n);\n\n// Sort triggers selection reset — handled here to avoid circular dependency between sort and selection\nfunction onSort(payload: Parameters<typeof applySort>[0]): void {\n applySort(payload);\n if (!multiPageSelect)\n onToggleAll(false);\n resetCheckboxShiftState();\n}\n\nfunction onPaginate(): void {\n if (get(expanded))\n set(expanded, []);\n if (!multiPageSelect)\n onToggleAll(false);\n resetCheckboxShiftState();\n}\n\n// Reset pagination page to 1 on search query change\nwatch(() => search, () => {\n resetPagination();\n onToggleAll(false);\n resetCheckboxShiftState();\n});\n\nwatch(sorted, (items) => {\n if (!multiPageSelect)\n deselectRemovedRows();\n setInternalTotal(items);\n});\n\nonMounted(() => {\n setInternalTotal(get(sorted));\n});\n\nconst ui = computed<ReturnType<typeof dataTableStyles>>(() => dataTableStyles({\n outlined,\n rounded,\n dense,\n striped,\n}));\n</script>\n\n<template>\n <div\n :class=\"ui.wrapper()\"\n data-id=\"table-wrapper\"\n >\n <RuiTablePagination\n v-if=\"paginationData && !hideDefaultHeader\"\n v-model=\"paginationData\"\n :dense=\"dense\"\n :loading=\"loading\"\n :disable-per-page=\"disablePerPage\"\n :ranges-threshold=\"rangesThreshold\"\n data-id=\"table-pagination\"\n @update:model-value=\"onPaginate()\"\n />\n <div\n ref=\"tableScroller\"\n :class=\"ui.scroller()\"\n data-id=\"table-scroller\"\n >\n <table\n ref=\"table\"\n :class=\"ui.table()\"\n :aria-busy=\"loading\"\n >\n <RuiTableHead\n :loading=\"loading\"\n :indeterminate=\"indeterminate\"\n :capitalize-headers=\"!cols\"\n :colspan=\"colspan\"\n :column-attr=\"columnAttr\"\n :columns=\"columns\"\n :dense=\"dense\"\n :disable-check-all=\"!filtered?.length\"\n :is-all-selected=\"isAllSelected\"\n :no-data=\"noData\"\n :selectable=\"!!selectedData\"\n :sort-data=\"sortData\"\n :sorted-map=\"sortedMap\"\n :stick=\"stick\"\n :sticky-header=\"stickyHeader\"\n @sort=\"onSort($event)\"\n @select:all=\"onToggleAll($event)\"\n >\n <template\n v-for=\"headerSlot in headerSlots\"\n #[headerSlot]=\"slotData\"\n >\n <slot\n :name=\"headerSlot\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiTableHead>\n <RuiTableHead\n v-if=\"stickyHeader\"\n :loading=\"loading\"\n :capitalize-headers=\"!cols\"\n :colspan=\"colspan\"\n :column-attr=\"columnAttr\"\n :columns=\"columns\"\n :dense=\"dense\"\n :no-data=\"noData\"\n :selectable=\"!!selectedData\"\n :sort-data=\"sortData\"\n :sorted-map=\"sortedMap\"\n data-id=\"head-clone\"\n class=\"opacity-0 invisible\"\n >\n <template\n v-for=\"headerSlot in headerSlots\"\n #[headerSlot]=\"slotData\"\n >\n <slot\n :name=\"headerSlot\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiTableHead>\n <tbody :class=\"ui.tbody()\">\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n v-if=\"slots['body.prepend']\"\n :colspan=\"colspan\"\n name=\"body.prepend\"\n />\n <template v-for=\"(row, index) in filtered\">\n <tr\n v-if=\"!isRow(row)\"\n :key=\"`row-${index}`\"\n :class=\"[ui.tr({ rowVariant: 'group' })]\"\n data-id=\"row-group\"\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n name=\"group.header\"\n :colspan=\"colspan\"\n :header=\"row\"\n :is-open=\"isExpandedGroup(row.group)\"\n :toggle=\"() => onToggleExpandGroup(row.group, row.identifier)\"\n >\n <td\n :class=\"[ui.td()]\"\n class=\"!p-2\"\n :colspan=\"colspan\"\n >\n <div class=\"flex items-center gap-2\">\n <RuiExpandButton\n v-if=\"groupExpandButtonPosition === 'start'\"\n :expanded=\"isExpandedGroup(row.group)\"\n @click=\"onToggleExpandGroup(row.group, row.identifier)\"\n />\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n :group-key=\"groupKey\"\n name=\"group.header.content\"\n :header=\"row\"\n >\n <span>{{ groupKey }}: {{ row.identifier }}</span>\n <RuiButton\n size=\"sm\"\n variant=\"text\"\n icon\n data-id=\"group-copy-button\"\n @click=\"onCopyGroup({ key: groupKey, value: row.group })\"\n >\n <RuiIcon\n name=\"lu-copy\"\n size=\"16\"\n />\n </RuiButton>\n </slot>\n <RuiTooltip\n :options=\"{ placement: 'top' }\"\n class=\"ml-auto mr-2\"\n >\n <template #activator>\n <RuiButton\n size=\"sm\"\n variant=\"text\"\n icon\n data-id=\"group-ungroup-button\"\n @click=\"onUngroup()\"\n >\n <RuiIcon\n name=\"lu-trash-2\"\n size=\"14\"\n />\n </RuiButton>\n </template>\n Ungroup\n </RuiTooltip>\n <RuiExpandButton\n v-if=\"groupExpandButtonPosition === 'end'\"\n :expanded=\"isExpandedGroup(row.group)\"\n @click=\"onToggleExpandGroup(row.group, row.identifier)\"\n />\n </div>\n </td>\n </slot>\n </tr>\n <template v-else>\n <tr\n :key=\"`row-${index}`\"\n :class=\"[\n ui.tr({ rowVariant: isSelected(row[rowAttr]) ? 'selected' : undefined }),\n typeof itemClass === 'string' ? itemClass : itemClass(row),\n ]\"\n :aria-selected=\"selectedData ? isSelected(row[rowAttr]) : undefined\"\n data-id=\"row\"\n >\n <td\n v-if=\"selectedData\"\n :class=\"ui.checkbox()\"\n colspan=\"1\"\n rowspan=\"1\"\n >\n <RuiCheckbox\n :data-id=\"`table-toggle-check-${index}`\"\n :model-value=\"isSelected(row[rowAttr])\"\n :disabled=\"isDisabledRow(row[rowAttr])\"\n :size=\"dense ? 'sm' : undefined\"\n color=\"primary\"\n class=\"select-none\"\n hide-details\n @update:model-value=\"onSelect($event, row[rowAttr], true)\"\n @click=\"onCheckboxClick($event, row[rowAttr], index)\"\n />\n </td>\n\n <td\n v-for=\"(column, subIndex) in columns\"\n :key=\"subIndex\"\n :class=\"[\n ui.td({ class: getAlignClass(column.align) }),\n column.cellClass,\n ]\"\n :colspan=\"column.colspan ?? 1\"\n :rowspan=\"column.rowspan ?? 1\"\n >\n <slot\n v-if=\"column.key === 'expand'\"\n :name=\"`item.${column.key.toString()}`\"\n :column=\"column\"\n :row=\"row\"\n :index=\"index\"\n >\n <RuiExpandButton\n v-if=\"!slots['item.expand']\"\n :expanded=\"isExpanded(row[rowAttr])\"\n @click=\"onToggleExpand(row)\"\n />\n </slot>\n <slot\n v-else\n :column=\"column\"\n :index=\"index\"\n :name=\"`item.${column.key.toString()}`\"\n :row=\"row\"\n >\n {{ cellValue(row, column.key) }}\n </slot>\n </td>\n </tr>\n\n <tr\n v-if=\"expandable && !!$slots['expanded-item'] && isExpanded(row[rowAttr])\"\n :key=\"`row-expand-${index}`\"\n :class=\"ui.tr({ rowVariant: 'expandable' })\"\n data-id=\"row-expanded\"\n >\n <td\n :colspan=\"colspan\"\n :class=\"[ui.td()]\"\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n name=\"expanded-item\"\n :row=\"row\"\n :index=\"index\"\n />\n </td>\n </tr>\n </template>\n </template>\n <tr v-if=\"loading && noData\">\n <td\n :class=\"ui.tbodyLoader()\"\n :colspan=\"colspan\"\n data-id=\"tbody-loader\"\n >\n <div :class=\"ui.tbodyLoaderContent()\">\n <RuiProgress\n color=\"primary\"\n variant=\"indeterminate\"\n circular\n />\n </div>\n </td>\n </tr>\n <tr\n v-if=\"noData && empty && !loading\"\n :class=\"ui.tr({ rowVariant: 'empty' })\"\n data-id=\"row-empty\"\n >\n <Transition\n appear\n enter-active-class=\"transition ease-out duration-200 delay-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n >\n <td\n :class=\"ui.td()\"\n :colspan=\"colspan\"\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot name=\"no-data\">\n <RuiTableEmptyState\n :label=\"empty.label\"\n :description=\"empty.description\"\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <template\n v-if=\"slots['empty-description']\"\n #description\n >\n <slot name=\"empty-description\" />\n </template>\n </RuiTableEmptyState>\n </slot>\n </td>\n </Transition>\n </tr>\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n v-if=\"slots['body.append']\"\n :colspan=\"colspan\"\n name=\"body.append\"\n />\n </tbody>\n <tfoot>\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot name=\"tfoot\" />\n </tfoot>\n </table>\n </div>\n <RuiTablePagination\n v-if=\"paginationData && !hideDefaultFooter\"\n v-model=\"paginationData\"\n :dense=\"dense\"\n :loading=\"loading\"\n :disable-per-page=\"disablePerPage\"\n :ranges-threshold=\"rangesThreshold\"\n data-id=\"table-pagination\"\n @update:model-value=\"onPaginate()\"\n />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiDataTable.js","names":[],"sources":["../../../src/components/tables/RuiDataTable.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"T extends object, IdType extends keyof T = keyof T\">\nimport type { GroupHeader } from '@/composables/tables/data-table/types';\nimport { dataTableStyles } from '@/components/tables/data-table-styles';\nimport { type DataTableClasses, provideDataTableContext, provideDataTableNested, useDataTableNested } from '@/components/tables/data-table/context';\nimport RuiDataTableBody from '@/components/tables/data-table/RuiDataTableBody.vue';\nimport RuiDataTableMobileSort from '@/components/tables/data-table/RuiDataTableMobileSort.vue';\nimport RuiTableHead, {\n type GroupData,\n type TableColumn,\n type TableRowKeyData,\n type TableSortData,\n} from '@/components/tables/RuiTableHead.vue';\nimport RuiTablePagination, {\n type TablePaginationData,\n} from '@/components/tables/RuiTablePagination.vue';\nimport { GroupExpandButtonPosition } from '@/components/tables/table-props';\nimport { useTable } from '@/composables/defaults/table';\nimport { useStickyTableHeader } from '@/composables/sticky-header';\nimport { useTableColumns } from '@/composables/tables/data-table/columns';\nimport { useTableExpansion } from '@/composables/tables/data-table/expansion';\nimport { useTableGrouping } from '@/composables/tables/data-table/grouping';\nimport { useTablePagination } from '@/composables/tables/data-table/pagination';\nimport { useTableSelection } from '@/composables/tables/data-table/selection';\nimport { useTableSort } from '@/composables/tables/data-table/sort';\n\nexport type { GroupedTableRow, GroupHeader, TableOptions } from '@/composables/tables/data-table/types';\n\nexport interface Props<T, K extends keyof T> {\n /**\n * list of items for each row\n */\n rows: readonly T[];\n /**\n * the attribute used to identify each row uniquely for selection, usually `id`\n */\n rowAttr: K;\n /**\n * model for internal searching\n */\n search?: string;\n /**\n * model for items per page\n * will be used if the `pagination` model isn't specified\n */\n itemsPerPage?: number;\n /**\n * list of column definitions\n */\n cols?: TableColumn<T>[];\n /**\n * attribute to use from column definitions to display column titles\n */\n columnAttr?: keyof TableColumn<T>;\n /**\n * flag to show a more or less spacious table\n */\n dense?: boolean;\n /**\n * flag to outline the flag with a border\n */\n outlined?: boolean;\n /**\n * should add zebra-striping to the table row\n */\n striped?: boolean;\n /**\n * flag to show loading state of the table\n * triggers indefinite progress at the bottom of the table header\n */\n loading?: boolean;\n disablePerPage?: boolean;\n /**\n * Maximum number of pages before the jump-to-page dropdown is replaced with\n * a numeric input. Defaults to `500`. Forwarded to `RuiTablePagination`.\n */\n rangesThreshold?: number;\n /**\n * data to display for empty state\n * text and icon\n * @example :empty=\"{ icon: 'transactions-line', label: 'No transactions found' }\"\n */\n empty?: {\n label?: string;\n description?: string;\n };\n /**\n * should hide the header navigation\n */\n hideDefaultHeader?: boolean;\n /**\n * should hide the footer navigation\n */\n hideDefaultFooter?: boolean;\n\n rounded?: 'sm' | 'md' | 'lg';\n /**\n * make expansion work like accordion\n */\n singleExpand?: boolean;\n /**\n * make table head stick to top on scroll\n */\n stickyHeader?: boolean;\n stickyOffset?: number;\n /**\n * Affects how the items per page work across the app.\n * When true, changing the items per page setting in one table will affect other tables.\n */\n globalItemsPerPage?: boolean;\n groupExpandButtonPosition?: GroupExpandButtonPosition;\n disabledRows?: readonly T[];\n multiPageSelect?: boolean;\n itemClass?: ((item: T) => string) | string;\n /**\n * Render each row as a stacked card instead of a table row once the measured\n * width is narrower than this width (in pixels). Columns flagged with\n * `mobileHidden` are dropped in this layout. Falls back to the global\n * `mobileBreakpoint` table default; leave both unset to keep the default table\n * layout at every width.\n */\n mobileBreakpoint?: number;\n /**\n * What the `mobileBreakpoint` is measured against: the browser `viewport`\n * (default) or this table's own `container` width. Use `container` when the\n * table lives in a narrow region of a wider window. Falls back to the global\n * `mobileBreakpointBasis` table default.\n */\n mobileBreakpointBasis?: 'viewport' | 'container';\n /**\n * Force the stacked mobile card layout on (`true`) or off (`false`),\n * regardless of `mobileBreakpoint`. Leave unset to derive it from the width.\n */\n mobile?: boolean;\n}\n\ndefineOptions({\n name: 'RuiDataTable',\n});\n\nconst selectedData = defineModel<T[IdType][]>();\n\nconst expanded = defineModel<T[]>('expanded');\n\nconst [pagination, paginationModifiers] = defineModel<TablePaginationData, 'external'>('pagination');\n\nconst [sort, sortModifiers] = defineModel<TableSortData<T>, 'external'>('sort');\n\nconst group = defineModel<TableRowKeyData<T>>('group');\n\nconst collapsed = defineModel<T[]>('collapsed');\n\nconst {\n rows,\n rowAttr,\n search = '',\n itemsPerPage = 10,\n cols,\n columnAttr = 'label',\n dense = false,\n outlined = false,\n striped = false,\n loading = false,\n disablePerPage = false,\n rangesThreshold = 500,\n empty = { label: 'No item found' },\n hideDefaultHeader = false,\n hideDefaultFooter = false,\n rounded = 'md',\n singleExpand = false,\n stickyHeader = false,\n stickyOffset,\n globalItemsPerPage = undefined,\n groupExpandButtonPosition = GroupExpandButtonPosition.start,\n disabledRows,\n multiPageSelect = false,\n itemClass = '',\n mobileBreakpoint,\n mobileBreakpointBasis,\n mobile,\n} = defineProps<Props<T, IdType>>();\n\nconst emit = defineEmits<{\n 'update:options': [value: { pagination?: TablePaginationData; sort?: TableSortData<T> }];\n 'copy:group': [value: GroupData<T>];\n}>();\n\nconst slots = defineSlots<Partial<\n Record<`header.${string}`, (props: { column: TableColumn<T> }) => any> &\n Record<`item.${string}`, (props: { column: TableColumn<T>; row: T; index: number }) => any> & {\n 'body.prepend': (props: { colspan: number }) => any;\n 'body.append': (props: { colspan: number }) => any;\n 'group.header': (props: {\n colspan: number;\n header: GroupHeader<T>;\n isOpen: boolean;\n toggle: () => void;\n }) => any;\n 'group.header.content': (props: { header: GroupHeader<T>; groupKey: string }) => any;\n 'expanded-item': (props: { row: T; index: number }) => any;\n 'no-data': () => any;\n 'empty-description': () => any;\n 'tfoot': () => any;\n }\n>>();\n\nconst tableDefaults = useTable();\n\nconst tableWrapper = useTemplateRef<HTMLElement>('tableWrapper');\nconst { width: windowWidth } = useWindowSize();\nconst { width: containerWidth } = useElementSize(tableWrapper);\n\n// Per-table props win, then the global table defaults.\nconst resolvedMobileBreakpoint = computed<number | undefined>(() => {\n if (mobileBreakpoint !== undefined)\n return mobileBreakpoint;\n const globalBreakpoint = tableDefaults.mobileBreakpoint;\n return globalBreakpoint === undefined ? undefined : get(globalBreakpoint);\n});\nconst resolvedMobileBasis = computed<'viewport' | 'container'>(() => {\n if (mobileBreakpointBasis !== undefined)\n return mobileBreakpointBasis;\n const globalBasis = tableDefaults.mobileBreakpointBasis;\n return globalBasis === undefined ? 'viewport' : get(globalBasis);\n});\n\nconst isMobile = computed<boolean>(() => {\n const breakpoint = get(resolvedMobileBreakpoint);\n // Vue coerces an absent Boolean prop to `false`, so `mobile` cannot be used to\n // detect \"unset\". When no breakpoint is configured, `mobile` is the manual\n // switch (defaulting to desktop). When a breakpoint is configured it drives\n // the layout, and `mobile === true` can still force the stacked layout on.\n if (breakpoint === undefined)\n return mobile;\n if (mobile)\n return true;\n // Before the container is measured, `containerWidth` is 0; fall back to the\n // viewport so the layout does not flash to mobile on first paint.\n const width = get(resolvedMobileBasis) === 'container'\n ? (get(containerWidth) || get(windowWidth))\n : get(windowWidth);\n return width < breakpoint;\n});\n\nconst stickyHeaderOffset = computed<number | undefined>(() =>\n stickyOffset !== undefined ? stickyOffset : get(tableDefaults.stickyOffset),\n);\n\n// Nested tables (e.g. rendered inside an expanded row) must not pin their own\n// toolbar: only the outermost table sticks, otherwise the bars stack and\n// collide. Detect nesting via inject, then mark descendants as nested.\nconst isNestedTable = useDataTableNested();\nprovideDataTableNested();\n\n// On mobile there is no column header to pin, so `stickyHeader` instead keeps\n// the pagination + sort toolbar pinned to the top while the card list scrolls.\nconst stickyMobileToolbar = computed<boolean>(() => stickyHeader && get(isMobile) && !isNestedTable);\n\nconst table = useTemplateRef<HTMLTableElement>('table');\nconst tableScroller = useTemplateRef<HTMLElement>('tableScroller');\n\nconst { stick } = useStickyTableHeader(\n () => stickyHeader,\n stickyHeaderOffset,\n { table, tableScroller },\n);\n\nconst { expandable, isExpanded, onToggleExpand } = useTableExpansion<T, IdType>(\n { rowAttr, singleExpand },\n { expanded },\n);\n\nfunction emitUpdateOptions(opts: { sort?: TableSortData<T>; pagination?: TablePaginationData }): void {\n emit('update:options', opts);\n}\n\nconst {\n sortData,\n sortedMap,\n sorted,\n onSort: applySort,\n} = useTableSort<T>(\n { rows: () => rows, search: () => search, sortModifiersExternal: sortModifiers.external },\n {\n sort,\n pagination,\n emitUpdateOptions,\n },\n);\n\nconst {\n groupKeys,\n groupKey,\n grouped,\n isExpandedGroup,\n isHiddenRow,\n onToggleExpandGroup,\n onUngroup,\n} = useTableGrouping<T, IdType>(\n { rowAttr },\n {\n group,\n collapsed,\n sorted,\n },\n);\n\nconst {\n paginationData,\n filtered,\n setInternalTotal,\n resetPagination,\n} = useTablePagination<T>(\n {\n itemsPerPage,\n paginationModifiersExternal: paginationModifiers.external,\n globalItemsPerPage,\n },\n {\n pagination,\n grouped,\n isHiddenRow,\n sort,\n emitUpdateOptions,\n tableDefaults,\n },\n);\n\nconst noData = computed<boolean>(() => get(filtered).length === 0);\n\nconst { columns, colspan, headerSlots, cellValue } = useTableColumns<T, IdType>({\n cols: () => cols,\n columnAttr,\n rows: () => rows,\n expandable,\n groupKeys,\n selectedData,\n slots,\n isMobile,\n tdResolver: options => get(ui).td(options),\n});\n\nconst showMobileSort = computed<boolean>(() =>\n get(isMobile) && !!get(sortData) && get(columns).some(column => column.sortable),\n);\n\nconst ITEM_SLOT_PREFIX = 'item.';\n\n// Slot keys are static for the component lifetime — no reactivity needed\nconst itemSlotKeys: Set<string> = new Set(\n Object.keys(slots)\n .filter((key): key is `item.${string}` => key.startsWith(ITEM_SLOT_PREFIX))\n .map(key => key.slice(ITEM_SLOT_PREFIX.length)),\n);\n\nconst {\n isAllSelected,\n indeterminate,\n isSelected,\n isDisabledRow,\n onToggleAll,\n onSelect,\n onCheckboxClick,\n deselectRemovedRows,\n resetCheckboxShiftState,\n} = useTableSelection<T, IdType>(\n { rowAttr, multiPageSelect, disabledRows: () => disabledRows },\n { selectedData, filtered },\n);\n\n// Sort triggers selection reset — handled here to avoid circular dependency between sort and selection\nfunction onSort(payload: Parameters<typeof applySort>[0]): void {\n applySort(payload);\n if (!multiPageSelect)\n onToggleAll(false);\n resetCheckboxShiftState();\n}\n\nfunction onPaginate(): void {\n if ((get(expanded)?.length ?? 0) > 0)\n set(expanded, []);\n if (!multiPageSelect)\n onToggleAll(false);\n resetCheckboxShiftState();\n}\n\n// Reset pagination page to 1 on search query change\nwatch(() => search, () => {\n resetPagination();\n onToggleAll(false);\n resetCheckboxShiftState();\n});\n\nwatch(sorted, (items) => {\n if (!multiPageSelect)\n deselectRemovedRows();\n setInternalTotal(items);\n});\n\nonMounted(() => {\n setInternalTotal(get(sorted));\n});\n\nconst ui = computed<ReturnType<typeof dataTableStyles>>(() => dataTableStyles({\n outlined,\n rounded,\n dense,\n striped,\n mobile: get(isMobile),\n}));\n\nconst classes = computed<DataTableClasses>(() => {\n const s = get(ui);\n return {\n td: s.td(),\n tr: s.tr(),\n trSelected: s.tr({ rowVariant: 'selected' }),\n trExpandable: s.tr({ rowVariant: 'expandable' }),\n trGroup: s.tr({ rowVariant: 'group' }),\n trEmpty: s.tr({ rowVariant: 'empty' }),\n checkbox: s.checkbox(),\n tbody: s.tbody(),\n tbodyLoader: s.tbodyLoader(),\n tbodyLoaderContent: s.tbodyLoaderContent(),\n };\n});\n\nprovideDataTableContext<T, IdType>({\n // Reactive (ComputedRef/Ref) — destructuring preserves reactivity via Vue template auto-unwrap\n classes,\n columns,\n colspan,\n expandable,\n groupKey,\n isMobile,\n selectedData,\n // Static values\n cellValue,\n columnAttr,\n dense,\n getRowId: (row: T) => row[rowAttr],\n itemSlotKeys,\n groupExpandButtonPosition,\n isDisabledRow,\n isExpanded,\n isExpandedGroup,\n isSelected,\n itemClass,\n onCheckboxClick,\n onCopyGroup: (header: GroupHeader<T>) => emit('copy:group', { key: get(groupKey) ?? '', value: header.group }),\n onSelect,\n onToggleExpand,\n onToggleExpandGroup,\n onUngroup,\n});\n</script>\n\n<template>\n <div\n ref=\"tableWrapper\"\n :class=\"ui.wrapper()\"\n data-id=\"table-wrapper\"\n >\n <div\n :class=\"stickyMobileToolbar ? 'sticky z-10 bg-white dark:bg-[#121212] pt-2' : 'contents'\"\n :style=\"stickyMobileToolbar ? { top: `${stickyHeaderOffset ?? 0}px` } : undefined\"\n data-id=\"table-mobile-toolbar-sticky\"\n >\n <RuiTablePagination\n v-if=\"paginationData && !hideDefaultHeader\"\n v-model=\"paginationData\"\n :dense=\"dense\"\n :loading=\"loading\"\n :mobile=\"isMobile\"\n :disable-per-page=\"disablePerPage\"\n :ranges-threshold=\"rangesThreshold\"\n data-id=\"table-pagination\"\n @update:model-value=\"onPaginate()\"\n />\n <div\n v-if=\"showMobileSort\"\n class=\"flex justify-end p-2\"\n data-id=\"table-mobile-toolbar\"\n >\n <RuiDataTableMobileSort\n :columns=\"columns\"\n :column-attr=\"columnAttr\"\n :sorted-map=\"sortedMap\"\n :dense=\"dense\"\n @sort=\"onSort($event)\"\n />\n </div>\n </div>\n <div\n ref=\"tableScroller\"\n :class=\"[ui.scroller(), isMobile && !showMobileSort ? 'pt-2' : '']\"\n data-id=\"table-scroller\"\n >\n <table\n ref=\"table\"\n :class=\"ui.table()\"\n :aria-busy=\"loading\"\n >\n <RuiTableHead\n v-if=\"!isMobile\"\n :loading=\"loading\"\n :indeterminate=\"indeterminate\"\n :capitalize-headers=\"!cols\"\n :colspan=\"colspan\"\n :column-attr=\"columnAttr\"\n :columns=\"columns\"\n :dense=\"dense\"\n :disable-check-all=\"!filtered?.length\"\n :is-all-selected=\"isAllSelected\"\n :selectable=\"!!selectedData\"\n :sort-data=\"sortData\"\n :sorted-map=\"sortedMap\"\n :stick=\"stick\"\n :sticky-header=\"stickyHeader\"\n @sort=\"onSort($event)\"\n @select:all=\"onToggleAll($event)\"\n >\n <template\n v-for=\"headerSlot in headerSlots\"\n #[headerSlot]=\"slotData\"\n >\n <slot\n :name=\"headerSlot\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiTableHead>\n <RuiTableHead\n v-if=\"stickyHeader && !isMobile\"\n :loading=\"loading\"\n :capitalize-headers=\"!cols\"\n :colspan=\"colspan\"\n :column-attr=\"columnAttr\"\n :columns=\"columns\"\n :dense=\"dense\"\n :selectable=\"!!selectedData\"\n :sort-data=\"sortData\"\n :sorted-map=\"sortedMap\"\n data-id=\"head-clone\"\n class=\"opacity-0 invisible\"\n >\n <template\n v-for=\"headerSlot in headerSlots\"\n #[headerSlot]=\"slotData\"\n >\n <slot\n :name=\"headerSlot\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiTableHead>\n <RuiDataTableBody\n :filtered=\"filtered\"\n :loading=\"loading\"\n :no-data=\"noData\"\n :empty=\"empty\"\n >\n <template\n v-if=\"slots['body.prepend']\"\n #body.prepend=\"slotData\"\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n name=\"body.prepend\"\n v-bind=\"slotData\"\n />\n </template>\n <template\n v-if=\"slots['group.header']\"\n #group.header=\"slotData\"\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n name=\"group.header\"\n v-bind=\"slotData\"\n />\n </template>\n <template\n v-if=\"slots['group.header.content']\"\n #group.header.content=\"slotData\"\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n name=\"group.header.content\"\n v-bind=\"slotData\"\n />\n </template>\n <template\n v-for=\"key in itemSlotKeys\"\n #[`item.${key}`]=\"slotData\"\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n :name=\"`item.${key}`\"\n v-bind=\"slotData\"\n />\n </template>\n <template\n v-if=\"slots['expanded-item']\"\n #expanded-item=\"slotData\"\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n name=\"expanded-item\"\n v-bind=\"slotData\"\n />\n </template>\n <template\n v-if=\"slots['no-data']\"\n #no-data\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot name=\"no-data\" />\n </template>\n <template\n v-if=\"slots['empty-description']\"\n #empty-description\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot name=\"empty-description\" />\n </template>\n <template\n v-if=\"slots['body.append']\"\n #body.append=\"slotData\"\n >\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot\n name=\"body.append\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiDataTableBody>\n <tfoot>\n <!-- eslint-disable-next-line vue/require-explicit-slots -- defined via Partial<Record<...>> in defineSlots -->\n <slot name=\"tfoot\" />\n </tfoot>\n </table>\n </div>\n <RuiTablePagination\n v-if=\"paginationData && !hideDefaultFooter\"\n v-model=\"paginationData\"\n :dense=\"dense\"\n :loading=\"loading\"\n :mobile=\"isMobile\"\n :disable-per-page=\"disablePerPage\"\n :ranges-threshold=\"rangesThreshold\"\n data-id=\"table-pagination\"\n @update:model-value=\"onPaginate()\"\n />\n </div>\n</template>\n"],"mappings":""}