@rotki/ui-library 2.20.2 → 2.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/dist/__test__/options.d.ts +7 -0
  2. package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js +1 -1
  3. package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  4. package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js +2 -2
  5. package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js.map +1 -1
  6. package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js +1 -1
  7. package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js.map +1 -1
  8. package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js +1 -1
  9. package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  11. package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  12. package/dist/components/avatars/avatar-props.js +1 -1
  13. package/dist/components/avatars/avatar-props.js.map +1 -1
  14. package/dist/components/avatars/use-avatar-group.js.map +1 -1
  15. package/dist/components/buttons/button/RuiButton.js.map +1 -1
  16. package/dist/components/buttons/button/RuiButton.vue.d.ts +2 -2
  17. package/dist/components/buttons/button/RuiButton.vue_vue_type_script_setup_true_lang.js +3 -3
  18. package/dist/components/buttons/button/RuiButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/buttons/button/button-props.js.map +1 -1
  20. package/dist/components/buttons/button/button-styles.js.map +1 -1
  21. package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  22. package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  23. package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js +3 -3
  24. package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js +2 -2
  26. package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js +3 -3
  28. package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/components/calendar/RuiCalendarMenu.js.map +1 -1
  30. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js +6 -4
  31. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  32. package/dist/components/calendar/state.js.map +1 -1
  33. package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js +1 -1
  34. package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  35. package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js +1 -1
  36. package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  37. package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js +1 -1
  38. package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  39. package/dist/components/chips/chip-props.js.map +1 -1
  40. package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js +1 -1
  41. package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/components/color-picker/RuiColorDisplay.vue_vue_type_script_setup_true_lang.js +1 -1
  43. package/dist/components/color-picker/RuiColorDisplay.vue_vue_type_script_setup_true_lang.js.map +1 -1
  44. package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js +1 -1
  45. package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js.map +1 -1
  46. package/dist/components/color-picker/RuiColorInput.vue_vue_type_script_setup_true_lang.js +1 -1
  47. package/dist/components/color-picker/RuiColorInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  48. package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js +1 -1
  49. package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  50. package/dist/components/color-picker/utils.js.map +1 -1
  51. package/dist/components/date-time-picker/RuiDateTimePicker.js.map +1 -1
  52. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js +5 -3
  53. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  54. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js +3 -3
  55. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  56. package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js +2 -2
  57. package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  58. package/dist/components/date-time-picker/date-time-picker-styles.js.map +1 -1
  59. package/dist/components/date-time-picker/dayjs-setup.js.map +1 -1
  60. package/dist/components/date-time-picker/segment-config.js.map +1 -1
  61. package/dist/components/date-time-picker/segment-utils.js.map +1 -1
  62. package/dist/components/date-time-picker/timezones.js.map +1 -1
  63. package/dist/components/date-time-picker/types.js +1 -1
  64. package/dist/components/date-time-picker/types.js.map +1 -1
  65. package/dist/components/date-time-picker/use-date-time-selection.js +2 -2
  66. package/dist/components/date-time-picker/use-date-time-selection.js.map +1 -1
  67. package/dist/components/date-time-picker/use-input-handler.js.map +1 -1
  68. package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -1
  69. package/dist/components/date-time-picker/utils.js.map +1 -1
  70. package/dist/components/divider/RuiDivider.vue_vue_type_script_setup_true_lang.js +1 -1
  71. package/dist/components/divider/RuiDivider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  72. package/dist/components/forms/auto-complete/RuiAutoComplete.js.map +1 -1
  73. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +26 -2
  74. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js +150 -54
  75. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  76. package/dist/components/forms/auto-complete/auto-complete-styles.js.map +1 -1
  77. package/dist/components/forms/category-picker/RuiCategoryPicker.js +7 -0
  78. package/dist/components/forms/category-picker/RuiCategoryPicker.js.map +1 -0
  79. package/dist/components/forms/category-picker/RuiCategoryPicker.vue.d.ts +134 -0
  80. package/dist/components/forms/category-picker/RuiCategoryPicker.vue_vue_type_script_setup_true_lang.js +561 -0
  81. package/dist/components/forms/category-picker/RuiCategoryPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  82. package/dist/components/forms/category-picker/category-picker-styles.d.ts +432 -0
  83. package/dist/components/forms/category-picker/category-picker-styles.js +59 -0
  84. package/dist/components/forms/category-picker/category-picker-styles.js.map +1 -0
  85. package/dist/components/forms/check-control-styles.js.map +1 -1
  86. package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js +2 -2
  87. package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  89. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  90. package/dist/components/forms/checkbox/checkbox-group/context.js.map +1 -1
  91. package/dist/components/forms/file-upload/RuiFileUpload.js +7 -0
  92. package/dist/components/forms/file-upload/RuiFileUpload.js.map +1 -0
  93. package/dist/components/forms/file-upload/RuiFileUpload.vue.d.ts +61 -0
  94. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js +269 -0
  95. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -0
  96. package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js +2 -2
  97. package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  99. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  100. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue_vue_type_script_setup_true_lang.js +2 -2
  101. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  102. package/dist/components/forms/select/RuiMenuSelect.js.map +1 -1
  103. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js +9 -3
  104. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  105. package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js +2 -2
  106. package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  107. package/dist/components/forms/select/menu-select-styles.js.map +1 -1
  108. package/dist/components/forms/slider/RuiSlider.vue_vue_type_script_setup_true_lang.js +2 -2
  109. package/dist/components/forms/slider/RuiSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  110. package/dist/components/forms/slider/slider-styles.js.map +1 -1
  111. package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js +2 -2
  112. package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  113. package/dist/components/forms/text-area/RuiTextArea.vue_vue_type_script_setup_true_lang.js +3 -3
  114. package/dist/components/forms/text-area/RuiTextArea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  115. package/dist/components/forms/text-area/text-area-styles.js.map +1 -1
  116. package/dist/components/forms/text-field/RuiTextField.vue_vue_type_script_setup_true_lang.js +3 -3
  117. package/dist/components/forms/text-field/RuiTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/components/forms/text-field/text-field-styles.js.map +1 -1
  119. package/dist/components/forms/text-input-styles.js.map +1 -1
  120. package/dist/components/helpers/RuiFormTextDetail.vue_vue_type_script_setup_true_lang.js +1 -1
  121. package/dist/components/helpers/RuiFormTextDetail.vue_vue_type_script_setup_true_lang.js.map +1 -1
  122. package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  123. package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/index.d.ts +4 -2
  125. package/dist/components/index.js +4 -2
  126. package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js +1 -1
  127. package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js.map +1 -1
  128. package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js +1 -1
  129. package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  130. package/dist/components/loaders/skeleton-type.js.map +1 -1
  131. package/dist/components/logos/RuiLogo.vue_vue_type_script_setup_true_lang.js +1 -1
  132. package/dist/components/logos/RuiLogo.vue_vue_type_script_setup_true_lang.js.map +1 -1
  133. package/dist/components/logos/use-logo-sources.js.map +1 -1
  134. package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js +1 -1
  135. package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/components/overlays/badge/badge-props.js.map +1 -1
  137. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue_vue_type_script_setup_true_lang.js +2 -2
  138. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js +3 -3
  140. package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  141. package/dist/components/overlays/menu/RuiMenu.js.map +1 -1
  142. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +6 -0
  143. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js +5 -4
  144. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  145. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js +3 -3
  146. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  147. package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js +2 -2
  148. package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js.map +1 -1
  149. package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js +1 -1
  150. package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  151. package/dist/components/overlays/tooltip/tooltip-styles.js.map +1 -1
  152. package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js +1 -1
  153. package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js.map +1 -1
  154. package/dist/components/progress/progress-props.js.map +1 -1
  155. package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js +2 -2
  156. package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  157. package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js +1 -1
  158. package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  159. package/dist/components/steppers/RuiStepperCustomIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  160. package/dist/components/steppers/RuiStepperCustomIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  161. package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  162. package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  163. package/dist/components/steppers/footer-stepper-variant.js.map +1 -1
  164. package/dist/components/tables/RuiDataTable.js.map +1 -1
  165. package/dist/components/tables/RuiDataTable.vue.d.ts +23 -2
  166. package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js +186 -217
  167. package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  168. package/dist/components/tables/RuiExpandButton.vue_vue_type_script_setup_true_lang.js +1 -1
  169. package/dist/components/tables/RuiExpandButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js +1 -1
  171. package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  172. package/dist/components/tables/RuiTableHead.js.map +1 -1
  173. package/dist/components/tables/RuiTableHead.vue.d.ts +11 -1
  174. package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js +1 -2
  175. package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js.map +1 -1
  176. package/dist/components/tables/RuiTablePagination.js.map +1 -1
  177. package/dist/components/tables/RuiTablePagination.vue.d.ts +5 -0
  178. package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js +24 -8
  179. package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  180. package/dist/components/tables/data-table/RuiDataTableBody.js +7 -0
  181. package/dist/components/tables/data-table/RuiDataTableBody.js.map +1 -0
  182. package/dist/components/tables/data-table/RuiDataTableBody.vue.d.ts +55 -0
  183. package/dist/components/tables/data-table/RuiDataTableBody.vue_vue_type_script_setup_true_lang.js +78 -0
  184. package/dist/components/tables/data-table/RuiDataTableBody.vue_vue_type_script_setup_true_lang.js.map +1 -0
  185. package/dist/components/tables/data-table/RuiDataTableCell.js +7 -0
  186. package/dist/components/tables/data-table/RuiDataTableCell.js.map +1 -0
  187. package/dist/components/tables/data-table/RuiDataTableCell.vue.d.ts +30 -0
  188. package/dist/components/tables/data-table/RuiDataTableCell.vue_vue_type_script_setup_true_lang.js +54 -0
  189. package/dist/components/tables/data-table/RuiDataTableCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  190. package/dist/components/tables/data-table/RuiDataTableEmptyRow.js +7 -0
  191. package/dist/components/tables/data-table/RuiDataTableEmptyRow.js.map +1 -0
  192. package/dist/components/tables/data-table/RuiDataTableEmptyRow.vue.d.ts +19 -0
  193. package/dist/components/tables/data-table/RuiDataTableEmptyRow.vue_vue_type_script_setup_true_lang.js +43 -0
  194. package/dist/components/tables/data-table/RuiDataTableEmptyRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  195. package/dist/components/tables/data-table/RuiDataTableExpandedRow.js +7 -0
  196. package/dist/components/tables/data-table/RuiDataTableExpandedRow.js.map +1 -0
  197. package/dist/components/tables/data-table/RuiDataTableExpandedRow.vue.d.ts +26 -0
  198. package/dist/components/tables/data-table/RuiDataTableExpandedRow.vue_vue_type_script_setup_true_lang.js +31 -0
  199. package/dist/components/tables/data-table/RuiDataTableExpandedRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  200. package/dist/components/tables/data-table/RuiDataTableGroupRow.js +7 -0
  201. package/dist/components/tables/data-table/RuiDataTableGroupRow.js.map +1 -0
  202. package/dist/components/tables/data-table/RuiDataTableGroupRow.vue.d.ts +32 -0
  203. package/dist/components/tables/data-table/RuiDataTableGroupRow.vue_vue_type_script_setup_true_lang.js +85 -0
  204. package/dist/components/tables/data-table/RuiDataTableGroupRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  205. package/dist/components/tables/data-table/RuiDataTableLoadingRow.js +7 -0
  206. package/dist/components/tables/data-table/RuiDataTableLoadingRow.js.map +1 -0
  207. package/dist/components/tables/data-table/RuiDataTableLoadingRow.vue.d.ts +3 -0
  208. package/dist/components/tables/data-table/RuiDataTableLoadingRow.vue_vue_type_script_setup_true_lang.js +26 -0
  209. package/dist/components/tables/data-table/RuiDataTableLoadingRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  210. package/dist/components/tables/data-table/RuiDataTableMobileSort.js +7 -0
  211. package/dist/components/tables/data-table/RuiDataTableMobileSort.js.map +1 -0
  212. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue.d.ts +33 -0
  213. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue_vue_type_script_setup_true_lang.js +101 -0
  214. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue_vue_type_script_setup_true_lang.js.map +1 -0
  215. package/dist/components/tables/data-table/RuiDataTableRow.js +7 -0
  216. package/dist/components/tables/data-table/RuiDataTableRow.js.map +1 -0
  217. package/dist/components/tables/data-table/RuiDataTableRow.vue.d.ts +31 -0
  218. package/dist/components/tables/data-table/RuiDataTableRow.vue_vue_type_script_setup_true_lang.js +142 -0
  219. package/dist/components/tables/data-table/RuiDataTableRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  220. package/dist/components/tables/data-table/context.d.ts +73 -0
  221. package/dist/components/tables/data-table/context.js +100 -0
  222. package/dist/components/tables/data-table/context.js.map +1 -0
  223. package/dist/components/tables/data-table-styles.d.ts +30 -1
  224. package/dist/components/tables/data-table-styles.js +9 -2
  225. package/dist/components/tables/data-table-styles.js.map +1 -1
  226. package/dist/components/tables/table-props.d.ts +5 -0
  227. package/dist/components/tables/table-props.js +5 -1
  228. package/dist/components/tables/table-props.js.map +1 -1
  229. package/dist/components/tables/use-pagination-navigation.js.map +1 -1
  230. package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js +1 -1
  231. package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  232. package/dist/components/tabs/tab/use-tab-link.js.map +1 -1
  233. package/dist/components/tabs/tab-item/RuiTabItem.vue_vue_type_script_setup_true_lang.js +1 -1
  234. package/dist/components/tabs/tab-item/RuiTabItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  235. package/dist/components/tabs/tab-items/RuiTabItems.js.map +1 -1
  236. package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js +2 -2
  237. package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js.map +1 -1
  238. package/dist/components/tabs/tab-props.js.map +1 -1
  239. package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js +2 -2
  240. package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  241. package/dist/components/tabs/tabs/use-tab-routing.js +1 -1
  242. package/dist/components/tabs/tabs/use-tab-routing.js.map +1 -1
  243. package/dist/components/tabs/tabs/use-tab-scroll.js.map +1 -1
  244. package/dist/components/time-picker/RuiTimePicker.vue_vue_type_script_setup_true_lang.js +2 -2
  245. package/dist/components/time-picker/RuiTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  246. package/dist/components/time-picker/time-picker-styles.js.map +1 -1
  247. package/dist/composables/breakpoint.js.map +1 -1
  248. package/dist/composables/defaults/table.d.ts +12 -0
  249. package/dist/composables/defaults/table.js.map +1 -1
  250. package/dist/composables/dropdown-menu.d.ts +12 -1
  251. package/dist/composables/dropdown-menu.js +46 -7
  252. package/dist/composables/dropdown-menu.js.map +1 -1
  253. package/dist/composables/floating.js +1 -1
  254. package/dist/composables/floating.js.map +1 -1
  255. package/dist/composables/forms/auto-complete/focus.js.map +1 -1
  256. package/dist/composables/forms/auto-complete/index.js +5 -4
  257. package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -1
  258. package/dist/composables/forms/auto-complete/search.d.ts +6 -1
  259. package/dist/composables/forms/auto-complete/search.js +12 -1
  260. package/dist/composables/forms/auto-complete/search.js.map +1 -1
  261. package/dist/composables/forms/auto-complete/value.js.map +1 -1
  262. package/dist/composables/forms/category-picker/use-category-picker.d.ts +76 -0
  263. package/dist/composables/forms/category-picker/use-category-picker.js +141 -0
  264. package/dist/composables/forms/category-picker/use-category-picker.js.map +1 -0
  265. package/dist/composables/forms/use-prepend-append-width.js.map +1 -1
  266. package/dist/composables/icons.js.map +1 -1
  267. package/dist/composables/popper.js.map +1 -1
  268. package/dist/composables/sticky-header.js.map +1 -1
  269. package/dist/composables/tables/data-table/columns.d.ts +7 -1
  270. package/dist/composables/tables/data-table/columns.js +18 -10
  271. package/dist/composables/tables/data-table/columns.js.map +1 -1
  272. package/dist/composables/tables/data-table/expansion.js.map +1 -1
  273. package/dist/composables/tables/data-table/grouping.d.ts +4 -6
  274. package/dist/composables/tables/data-table/grouping.js +38 -24
  275. package/dist/composables/tables/data-table/grouping.js.map +1 -1
  276. package/dist/composables/tables/data-table/pagination.d.ts +4 -4
  277. package/dist/composables/tables/data-table/pagination.js +63 -21
  278. package/dist/composables/tables/data-table/pagination.js.map +1 -1
  279. package/dist/composables/tables/data-table/selection.js +16 -6
  280. package/dist/composables/tables/data-table/selection.js.map +1 -1
  281. package/dist/composables/tables/data-table/sort.d.ts +4 -3
  282. package/dist/composables/tables/data-table/sort.js +78 -40
  283. package/dist/composables/tables/data-table/sort.js.map +1 -1
  284. package/dist/composables/tables/data-table/types.d.ts +3 -1
  285. package/dist/composables/tables/data-table/types.js +6 -2
  286. package/dist/composables/tables/data-table/types.js.map +1 -1
  287. package/dist/composables/theme.js.map +1 -1
  288. package/dist/composables/timeout-manager.js.map +1 -1
  289. package/dist/composables/use-rui-i18n.js.map +1 -1
  290. package/dist/consts/colors.js.map +1 -1
  291. package/dist/consts/time-accuracy.js.map +1 -1
  292. package/dist/i18n/keys.js.map +1 -1
  293. package/dist/icons/icons_1.d.ts +12 -12
  294. package/dist/icons/icons_1.js +140 -157
  295. package/dist/icons/icons_1.js.map +1 -1
  296. package/dist/icons/icons_2.d.ts +13 -13
  297. package/dist/icons/icons_2.js +128 -149
  298. package/dist/icons/icons_2.js.map +1 -1
  299. package/dist/icons/icons_3.d.ts +18 -18
  300. package/dist/icons/icons_3.js +244 -282
  301. package/dist/icons/icons_3.js.map +1 -1
  302. package/dist/icons/icons_4.d.ts +251 -6
  303. package/dist/icons/icons_4.js +3016 -75
  304. package/dist/icons/icons_4.js.map +1 -1
  305. package/dist/icons/icons_5.d.ts +20 -0
  306. package/dist/icons/icons_5.js +221 -0
  307. package/dist/icons/icons_5.js.map +1 -0
  308. package/dist/icons/index.d.ts +2 -1
  309. package/dist/icons/index.js +297 -32
  310. package/dist/icons/index.js.map +1 -1
  311. package/dist/index.js +9 -6
  312. package/dist/index.js.map +1 -1
  313. package/dist/library-icons.json +3 -0
  314. package/dist/style.css +200 -0
  315. package/dist/theme/index.js.map +1 -1
  316. package/dist/types/stepper.js.map +1 -1
  317. package/dist/types/theme.js.map +1 -1
  318. package/dist/utils/assert.js.map +1 -1
  319. package/dist/utils/blockie.js.map +1 -1
  320. package/dist/utils/form-text-detail.js.map +1 -1
  321. package/dist/utils/helpers.d.ts +4 -0
  322. package/dist/utils/helpers.js +21 -1
  323. package/dist/utils/helpers.js.map +1 -1
  324. package/dist/utils/is-equal.js.map +1 -1
  325. package/dist/utils/tv.js.map +1 -1
  326. package/dist/vite-plugin/index.js +6 -5
  327. package/dist/vite-plugin/index.js.map +1 -1
  328. package/dist/vite-plugin/scanner.d.ts +1 -1
  329. package/dist/vite-plugin/scanner.js +10 -7
  330. package/dist/vite-plugin/scanner.js.map +1 -1
  331. package/dist/vite-plugin/types.d.ts +9 -0
  332. package/dist/web-types.json +2283 -1088
  333. package/package.json +35 -35
@@ -1 +1 @@
1
- {"version":3,"file":"RuiMenuSelect.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/forms/select/RuiMenuSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport type { VueClassValue } from '@/types/class-value';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { menuSelectStyles, type MenuSelectVariant } from '@/components/forms/select/menu-select-styles';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiMenu, { type MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { type KeyOfType, useDropdownMenu } from '@/composables/dropdown-menu';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\n\nexport interface RuiMenuSelectClassNames {\n root?: VueClassValue;\n label?: VueClassValue;\n menu?: VueClassValue;\n option?: VueClassValue;\n}\n\nexport interface MenuSelectProps<TValue, TItem> {\n options: TItem[];\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem;\n disabled?: boolean;\n loading?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n menuOptions?: MenuProps;\n classNames?: RuiMenuSelectClassNames;\n /** @deprecated Use `classNames.label` instead */\n labelClass?: string;\n /** @deprecated Use `classNames.menu` instead */\n menuClass?: string;\n /** @deprecated Use `classNames.option` instead */\n optionClass?: string;\n prependWidth?: number;\n appendWidth?: number;\n itemHeight?: number;\n variant?: MenuSelectVariant;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n autoSelectFirst?: boolean;\n hideNoData?: boolean;\n noDataText?: string;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiMenuSelect',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<TValue | undefined>({ required: true });\n\nconst {\n options,\n disabled = false,\n loading = false,\n readOnly = false,\n dense = false,\n clearable = false,\n hideDetails = false,\n label = 'Select',\n menuOptions,\n classNames,\n labelClass,\n menuClass,\n variant = 'default',\n hint,\n keyAttr,\n textAttr,\n itemHeight,\n errorMessages = [],\n successMessages = [],\n autoSelectFirst = false,\n hideNoData = false,\n noDataText = 'No data available',\n required = false,\n} = defineProps<MenuSelectProps<TValue, TItem>>();\n\ndefineSlots<{\n 'activator'?: (props: {\n disabled: boolean;\n value: TItem | undefined;\n variant: string;\n readOnly: boolean;\n attrs: Record<string, unknown>;\n open: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n 'activator.label'?: (props: { value: TItem | undefined }) => any;\n 'selection.prepend'?: (props: { item: TItem }) => any;\n 'selection'?: (props: { item: TItem }) => any;\n 'item.prepend'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'item'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'item.append'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'no-data'?: () => any;\n}>();\n\nconst menuRef = useTemplateRef<HTMLDivElement>('menuRef');\nconst activator = useTemplateRef<HTMLDivElement>('activator');\nconst { focused } = useFocus(activator);\nconst isHovered = ref<boolean>(false);\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst value = computed<TItem | undefined>({\n get: () => {\n const value = get(modelValue);\n if (keyAttr)\n return options.find(option => option[keyAttr] === value);\n return value as unknown as TItem;\n },\n set: (selected?: TItem) => {\n const selection = keyAttr && selected ? selected[keyAttr] : selected;\n set(modelValue, selection as TValue);\n },\n});\n\nfunction setValue(val: TItem): void {\n set(value, val);\n set(focused, true);\n}\n\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n isOpen,\n menuWidth,\n getText,\n getIdentifier,\n isActiveItem,\n highlightedIndex,\n moveHighlight,\n applyHighlighted,\n valueKey,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: itemHeight ?? (dense ? 30 : 48),\n keyAttr,\n textAttr,\n options: () => options,\n dense: () => dense,\n value,\n menuRef,\n disabled: () => disabled,\n autoSelectFirst,\n setValue,\n});\n\nconst outlined = computed<boolean>(() => variant === 'outlined');\nconst float = computed<boolean>(() => (get(isOpen) || !!get(value)) && get(outlined));\n\nconst legendText = computed<string>(() => {\n if (!get(float) || !label)\n return '';\n return required ? `${label} ﹡` : label;\n});\n\nconst ui = computed<ReturnType<typeof menuSelectStyles>>(() => menuSelectStyles({\n filled: variant === 'filled',\n outlined: get(outlined),\n float: get(float),\n opened: get(isOpen),\n hovered: get(isHovered),\n dense,\n disabled,\n readonly: readOnly,\n hasError: get(hasError),\n hasSuccess: get(hasSuccess) && !get(hasError),\n}));\n\nconst highlightedClass = menuSelectStyles({}).highlighted();\n\nfunction clear(): void {\n set(modelValue, undefined);\n}\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n v-bind=\"{ ...getRootAttrs($attrs, []), ...menuOptions }\"\n :class=\"ui.wrapper({ class: cn($attrs.class) })\"\n placement=\"bottom-start\"\n :close-on-content-click=\"true\"\n :full-width=\"true\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n :dense=\"dense\"\n :show-details=\"!hideDetails\"\n :disabled=\"disabled\"\n disable-auto-focus\n >\n <template #activator=\"{ attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, variant, readOnly, attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\"\n >\n <button\n ref=\"activator\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled\"\n :aria-expanded=\"isOpen\"\n :aria-readonly=\"readOnly || undefined\"\n :aria-required=\"required || undefined\"\n :aria-busy=\"loading || undefined\"\n type=\"button\"\n :tabindex=\"disabled || readOnly ? -1 : 0\"\n :class=\"ui.activator({ class: cn(classNames?.label) ?? labelClass })\"\n v-bind=\"{\n ...getNonRootAttrs($attrs),\n ...(readOnly ? {} : attrs),\n }\"\n data-id=\"activator\"\n :aria-invalid=\"hasError\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n @keydown.enter.prevent=\"applyHighlighted()\"\n @keydown.space.prevent=\"applyHighlighted()\"\n @keydown.home.prevent=\"highlightedIndex = 0\"\n @keydown.end.prevent=\"highlightedIndex = options.length - 1\"\n >\n <span\n v-if=\"outlined || !value\"\n :class=\"[\n ui.label(),\n { 'pr-2': !value && !open && outlined },\n ]\"\n >\n <slot\n name=\"activator.label\"\n v-bind=\"{ value }\"\n >\n {{ label }}\n </slot>\n <span\n v-if=\"required\"\n :class=\"ui.required()\"\n >\n ﹡\n </span>\n </span>\n <span\n v-if=\"value\"\n :class=\"ui.value()\"\n >\n <slot\n name=\"selection.prepend\"\n v-bind=\"{ item: value }\"\n />\n <slot\n name=\"selection\"\n v-bind=\"{ item: value }\"\n >\n {{ getText(value) }}\n </slot>\n </span>\n\n <span\n v-if=\"clearable && value && !disabled\"\n data-id=\"clear\"\n :class=\"[ui.clear(), focused && '!visible']\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n color=\"error\"\n name=\"lu-x\"\n size=\"18\"\n />\n </span>\n\n <span :class=\"ui.iconWrapper()\">\n <RuiIcon\n :class=\"ui.icon()\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n :class=\"ui.progress()\"\n color=\"primary\"\n thickness=\"3\"\n variant=\"indeterminate\"\n />\n </button>\n <fieldset\n v-if=\"outlined\"\n :class=\"ui.fieldset()\"\n >\n <legend :class=\"ui.legend()\">\n {{ legendText }}\n </legend>\n </fieldset>\n </slot>\n <input\n :value=\"valueKey\"\n class=\"hidden\"\n type=\"hidden\"\n />\n </template>\n <template #default=\"{ width }\">\n <div\n v-if=\"options.length > 0\"\n :ref=\"containerProps.ref\"\n :class=\"ui.menu({ class: cn(classNames?.menu) ?? menuClass })\"\n :style=\"[containerProps.style, { width: `${width}px`, minWidth: menuWidth }]\"\n @scroll=\"containerProps.onScroll\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n >\n <div\n v-bind=\"wrapperProps\"\n ref=\"menuRef\"\n >\n <RuiButton\n v-for=\"{ item, _index } in renderedData\"\n :key=\"getIdentifier(item)\"\n :active=\"isActiveItem(item)\"\n :aria-selected=\"isActiveItem(item)\"\n :size=\"dense ? 'sm' : undefined\"\n variant=\"list\"\n :data-highlighted=\"highlightedIndex === _index\"\n :class=\"{\n [highlightedClass]: !isActiveItem(item) && highlightedIndex === _index,\n }\"\n @click=\"setValue(item)\"\n >\n <template #prepend>\n <slot\n name=\"item.prepend\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n <slot\n name=\"item\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n >\n {{ getText(item) }}\n </slot>\n <template #append>\n <slot\n name=\"item.append\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n </RuiButton>\n </div>\n </div>\n\n <div\n v-else-if=\"!hideNoData\"\n data-id=\"no-data\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"classNames?.menu ?? menuClass\"\n >\n <slot name=\"no-data\">\n <div class=\"p-4\">\n {{ noDataText }}\n </div>\n </slot>\n </div>\n </template>\n </RuiMenu>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiMenuSelect.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/forms/select/RuiMenuSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport type { VueClassValue } from '@/types/class-value';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { menuSelectStyles, type MenuSelectVariant } from '@/components/forms/select/menu-select-styles';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiMenu, { type MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { type KeyOfType, useDropdownMenu } from '@/composables/dropdown-menu';\nimport { type FloatingOptions, Placement } from '@/composables/floating';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\n\nexport interface RuiMenuSelectClassNames {\n root?: VueClassValue;\n label?: VueClassValue;\n menu?: VueClassValue;\n option?: VueClassValue;\n}\n\nexport interface MenuSelectProps<TValue, TItem> {\n options: TItem[];\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem;\n disabled?: boolean;\n loading?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n menuOptions?: MenuProps;\n classNames?: RuiMenuSelectClassNames;\n /** @deprecated Use `classNames.label` instead */\n labelClass?: string;\n /** @deprecated Use `classNames.menu` instead */\n menuClass?: string;\n /** @deprecated Use `classNames.option` instead */\n optionClass?: string;\n prependWidth?: number;\n appendWidth?: number;\n itemHeight?: number;\n variant?: MenuSelectVariant;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n autoSelectFirst?: boolean;\n hideNoData?: boolean;\n noDataText?: string;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiMenuSelect',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<TValue | undefined>({ required: true });\n\nconst {\n options,\n disabled = false,\n loading = false,\n readOnly = false,\n dense = false,\n clearable = false,\n hideDetails = false,\n label = 'Select',\n menuOptions,\n classNames,\n labelClass,\n menuClass,\n variant = 'default',\n hint,\n keyAttr,\n textAttr,\n itemHeight,\n errorMessages = [],\n successMessages = [],\n autoSelectFirst = false,\n hideNoData = false,\n noDataText = 'No data available',\n required = false,\n} = defineProps<MenuSelectProps<TValue, TItem>>();\n\ndefineSlots<{\n 'activator'?: (props: {\n disabled: boolean;\n value: TItem | undefined;\n variant: string;\n readOnly: boolean;\n attrs: Record<string, unknown>;\n open: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n 'activator.label'?: (props: { value: TItem | undefined }) => any;\n 'selection.prepend'?: (props: { item: TItem }) => any;\n 'selection'?: (props: { item: TItem }) => any;\n 'item.prepend'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'item'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'item.append'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'no-data'?: () => any;\n}>();\n\nconst menuRef = useTemplateRef<HTMLDivElement>('menuRef');\nconst activator = useTemplateRef<HTMLDivElement>('activator');\nconst { focused } = useFocus(activator);\nconst isHovered = ref<boolean>(false);\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst value = computed<TItem | undefined>({\n get: () => {\n const value = get(modelValue);\n if (keyAttr)\n return options.find(option => option[keyAttr] === value);\n return value as unknown as TItem;\n },\n set: (selected?: TItem) => {\n const selection = keyAttr && selected ? selected[keyAttr] : selected;\n set(modelValue, selection as TValue);\n },\n});\n\nfunction setValue(val: TItem): void {\n set(value, val);\n set(focused, true);\n}\n\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n isOpen,\n menuWidth,\n getText,\n getIdentifier,\n isActiveItem,\n highlightedIndex,\n moveHighlight,\n applyHighlighted,\n valueKey,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: itemHeight ?? (dense ? 30 : 48),\n keyAttr,\n textAttr,\n options: () => options,\n dense: () => dense,\n value,\n menuRef,\n disabled: () => disabled,\n autoSelectFirst,\n setValue,\n});\n\nconst outlined = computed<boolean>(() => variant === 'outlined');\nconst float = computed<boolean>(() => (get(isOpen) || !!get(value)) && get(outlined));\n\nconst legendText = computed<string>(() => {\n if (!get(float) || !label)\n return '';\n return required ? `${label} ﹡` : label;\n});\n\nconst ui = computed<ReturnType<typeof menuSelectStyles>>(() => menuSelectStyles({\n filled: variant === 'filled',\n outlined: get(outlined),\n float: get(float),\n opened: get(isOpen),\n hovered: get(isHovered),\n dense,\n disabled,\n readonly: readOnly,\n hasError: get(hasError),\n hasSuccess: get(hasSuccess) && !get(hasError),\n}));\n\nconst highlightedClass = menuSelectStyles({}).highlighted();\n\nfunction clear(): void {\n set(modelValue, undefined);\n}\n\nconst menuFloatingOptions = computed<FloatingOptions>(() => ({\n placement: Placement.bottomStart,\n ...menuOptions?.options,\n}));\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n v-bind=\"{ ...getRootAttrs($attrs, []), ...menuOptions }\"\n :class=\"ui.wrapper({ class: cn($attrs.class) })\"\n :options=\"menuFloatingOptions\"\n :close-on-content-click=\"true\"\n :full-width=\"true\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n :dense=\"dense\"\n :show-details=\"!hideDetails\"\n :disabled=\"disabled\"\n disable-auto-focus\n >\n <template #activator=\"{ attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, variant, readOnly, attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\"\n >\n <button\n ref=\"activator\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled\"\n :aria-expanded=\"isOpen\"\n :aria-readonly=\"readOnly || undefined\"\n :aria-required=\"required || undefined\"\n :aria-busy=\"loading || undefined\"\n type=\"button\"\n :tabindex=\"disabled || readOnly ? -1 : 0\"\n :class=\"ui.activator({ class: cn(classNames?.label) ?? labelClass })\"\n v-bind=\"{\n ...getNonRootAttrs($attrs),\n ...(readOnly ? {} : attrs),\n }\"\n data-id=\"activator\"\n :aria-invalid=\"hasError\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n @keydown.enter.prevent=\"applyHighlighted()\"\n @keydown.space.prevent=\"applyHighlighted()\"\n @keydown.home.prevent=\"highlightedIndex = 0\"\n @keydown.end.prevent=\"highlightedIndex = options.length - 1\"\n >\n <span\n v-if=\"outlined || !value\"\n :class=\"[\n ui.label(),\n { 'pr-2': !value && !open && outlined },\n ]\"\n >\n <slot\n name=\"activator.label\"\n v-bind=\"{ value }\"\n >\n {{ label }}\n </slot>\n <span\n v-if=\"required\"\n :class=\"ui.required()\"\n >\n ﹡\n </span>\n </span>\n <span\n v-if=\"value\"\n :class=\"ui.value()\"\n >\n <slot\n name=\"selection.prepend\"\n v-bind=\"{ item: value }\"\n />\n <slot\n name=\"selection\"\n v-bind=\"{ item: value }\"\n >\n {{ getText(value) }}\n </slot>\n </span>\n\n <span\n v-if=\"clearable && value && !disabled\"\n data-id=\"clear\"\n :class=\"[ui.clear(), focused && '!visible']\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n color=\"error\"\n name=\"lu-x\"\n size=\"18\"\n />\n </span>\n\n <span :class=\"ui.iconWrapper()\">\n <RuiIcon\n :class=\"ui.icon()\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n :class=\"ui.progress()\"\n color=\"primary\"\n thickness=\"3\"\n variant=\"indeterminate\"\n />\n </button>\n <fieldset\n v-if=\"outlined\"\n :class=\"ui.fieldset()\"\n >\n <legend :class=\"ui.legend()\">\n {{ legendText }}\n </legend>\n </fieldset>\n </slot>\n <input\n :value=\"valueKey\"\n class=\"hidden\"\n type=\"hidden\"\n />\n </template>\n <template #default=\"{ width }\">\n <div\n v-if=\"options.length > 0\"\n :ref=\"containerProps.ref\"\n :class=\"ui.menu({ class: cn(classNames?.menu) ?? menuClass })\"\n :style=\"[containerProps.style, { width: `${width}px`, minWidth: menuWidth }]\"\n @scroll=\"containerProps.onScroll\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n >\n <div\n v-bind=\"wrapperProps\"\n ref=\"menuRef\"\n >\n <RuiButton\n v-for=\"{ item, _index } in renderedData\"\n :key=\"getIdentifier(item)\"\n :active=\"isActiveItem(item)\"\n :aria-selected=\"isActiveItem(item)\"\n :size=\"dense ? 'sm' : undefined\"\n variant=\"list\"\n :data-highlighted=\"highlightedIndex === _index\"\n :class=\"{\n [highlightedClass]: !isActiveItem(item) && highlightedIndex === _index,\n }\"\n @click=\"setValue(item)\"\n >\n <template #prepend>\n <slot\n name=\"item.prepend\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n <slot\n name=\"item\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n >\n {{ getText(item) }}\n </slot>\n <template #append>\n <slot\n name=\"item.append\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n </RuiButton>\n </div>\n </div>\n\n <div\n v-else-if=\"!hideNoData\"\n data-id=\"no-data\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"classNames?.menu ?? menuClass\"\n >\n <slot name=\"no-data\">\n <div class=\"p-4\">\n {{ noDataText }}\n </div>\n </slot>\n </div>\n </template>\n </RuiMenu>\n</template>\n"],"mappings":"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"}
@@ -12,11 +12,11 @@ var _hoisted_3 = {
12
12
  class: "flex items-center justify-end absolute right-1 top-px bottom-0 pointer-events-none",
13
13
  "aria-hidden": "true"
14
14
  };
15
- var RuiSimpleSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
15
+ var RuiSimpleSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
16
16
  name: "RuiSimpleSelect",
17
17
  inheritAttrs: false,
18
18
  __name: "RuiSimpleSelect",
19
- props: /* @__PURE__ */ mergeModels({
19
+ props: /*@__PURE__*/ mergeModels({
20
20
  options: {},
21
21
  disabled: {
22
22
  type: Boolean,
@@ -1 +1 @@
1
- {"version":3,"file":"RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/forms/select/RuiSimpleSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { tv } from '@/utils/tv';\n\nexport interface Props {\n options: string[] | number[];\n disabled?: boolean;\n label?: string;\n name?: string;\n variant?: 'default' | 'outlined';\n}\n\ndefineOptions({\n name: 'RuiSimpleSelect',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<string | number>({ required: true });\n\nconst { options, disabled = false, label, name = '', variant: selectVariant = 'default' } = defineProps<Props>();\n\nconst selectClass = tv({\n base: [\n 'outline-none focus:outline-none appearance-none cursor-pointer pl-2 py-1 pr-8 rounded',\n 'm-0 w-full transition [font:inherit]',\n 'bg-white hover:bg-gray-50',\n 'dark:bg-transparent dark:hover:bg-white/10 dark:text-rui-text-disabled',\n 'disabled:bg-black/[.12] disabled:text-rui-text-disabled disabled:active:text-rui-text-disabled disabled:cursor-default',\n 'dark:disabled:bg-white/10',\n ].join(' '),\n variants: {\n variant: {\n default: '',\n outlined: 'border border-rui-text-disabled disabled:border-transparent dark:border-rui-text-disabled',\n },\n },\n defaultVariants: { variant: 'default' },\n});\n\nconst ui = computed<string>(() => selectClass({ variant: selectVariant }));\n</script>\n\n<template>\n <div\n class=\"relative inline-flex\"\n v-bind=\"$attrs\"\n >\n <select\n v-model=\"modelValue\"\n :class=\"ui\"\n :name=\"name\"\n :disabled=\"disabled\"\n :aria-label=\"label\"\n data-id=\"select\"\n >\n <option\n v-for=\"option in options\"\n :key=\"option\"\n :value=\"option\"\n >\n {{ option }}\n </option>\n </select>\n <span\n class=\"flex items-center justify-end absolute right-1 top-px bottom-0 pointer-events-none\"\n aria-hidden=\"true\"\n >\n <RuiIcon\n class=\"text-rui-text-disabled pointer-events-none\"\n name=\"lu-chevron-down\"\n size=\"16\"\n />\n </span>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,aAAa,SAA4B,SAAA,aAAoB;EAInE,MAAM,cAAc,GAAG;GACrB,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACD,CAAC,KAAK,IAAI;GACX,UAAU,EACR,SAAS;IACP,SAAS;IACT,UAAU;IACX,EACF;GACD,iBAAiB,EAAE,SAAS,WAAA;GAC7B,CAAC;EAEF,MAAM,KAAK,eAAuB,YAAY,EAAE,SAAS,QAAA,SAAe,CAAC,CAAC;;uBAIxE,mBA8BM,OA9BN,WA8BM,EA7BJ,OAAM,wBAAsB,EACpBA,KAAAA,OAAM,EAAA,CAAA,eAEd,mBAeS,UAAA;4EAdY,QAAA;IAClB,OAAK,eAAE,MAAA,GAAE,CAAA;IACT,MAAM,QAAA;IACN,UAAU,QAAA;IACV,cAAY,QAAA;IACb,WAAQ;yBAER,mBAMS,UAAA,MAAA,WALU,QAAA,UAAV,WAAM;wBADf,mBAMS,UAAA;KAJN,KAAK;KACL,OAAO;uBAEL,OAAM,EAAA,GAAA,WAAA;gDAZF,WAAA,MAAU,CAAA,CAAA,EAerB,mBASO,QATP,YASO,CALL,YAIE,iBAAA;IAHA,OAAM;IACN,MAAK;IACL,MAAK"}
1
+ {"version":3,"file":"RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/forms/select/RuiSimpleSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { tv } from '@/utils/tv';\n\nexport interface Props {\n options: string[] | number[];\n disabled?: boolean;\n label?: string;\n name?: string;\n variant?: 'default' | 'outlined';\n}\n\ndefineOptions({\n name: 'RuiSimpleSelect',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<string | number>({ required: true });\n\nconst { options, disabled = false, label, name = '', variant: selectVariant = 'default' } = defineProps<Props>();\n\nconst selectClass = tv({\n base: [\n 'outline-none focus:outline-none appearance-none cursor-pointer pl-2 py-1 pr-8 rounded',\n 'm-0 w-full transition [font:inherit]',\n 'bg-white hover:bg-gray-50',\n 'dark:bg-transparent dark:hover:bg-white/10 dark:text-rui-text-disabled',\n 'disabled:bg-black/[.12] disabled:text-rui-text-disabled disabled:active:text-rui-text-disabled disabled:cursor-default',\n 'dark:disabled:bg-white/10',\n ].join(' '),\n variants: {\n variant: {\n default: '',\n outlined: 'border border-rui-text-disabled disabled:border-transparent dark:border-rui-text-disabled',\n },\n },\n defaultVariants: { variant: 'default' },\n});\n\nconst ui = computed<string>(() => selectClass({ variant: selectVariant }));\n</script>\n\n<template>\n <div\n class=\"relative inline-flex\"\n v-bind=\"$attrs\"\n >\n <select\n v-model=\"modelValue\"\n :class=\"ui\"\n :name=\"name\"\n :disabled=\"disabled\"\n :aria-label=\"label\"\n data-id=\"select\"\n >\n <option\n v-for=\"option in options\"\n :key=\"option\"\n :value=\"option\"\n >\n {{ option }}\n </option>\n </select>\n <span\n class=\"flex items-center justify-end absolute right-1 top-px bottom-0 pointer-events-none\"\n aria-hidden=\"true\"\n >\n <RuiIcon\n class=\"text-rui-text-disabled pointer-events-none\"\n name=\"lu-chevron-down\"\n size=\"16\"\n />\n </span>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,aAAa,SAA4B,SAAA,YAAmB;EAIlE,MAAM,cAAc,GAAG;GACrB,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;GACF,CAAC,CAAC,KAAK,GAAG;GACV,UAAU,EACR,SAAS;IACP,SAAS;IACT,UAAU;GACZ,EACF;GACA,iBAAiB,EAAE,SAAS,UAAU;EACxC,CAAC;EAED,MAAM,KAAK,eAAuB,YAAY,EAAE,SAAS,QAAA,QAAc,CAAC,CAAC;;uBAIvE,mBA8BM,OA9BN,WA8BM,EA7BJ,OAAM,uBAAsB,GACpBA,KAAAA,MAAM,GAAA,CAAA,eAEd,mBAeS,UAAA;4EAdY,QAAA;IAClB,OAAK,eAAE,MAAA,EAAA,CAAE;IACT,MAAM,QAAA;IACN,UAAU,QAAA;IACV,cAAY,QAAA;IACb,WAAQ;yBAER,mBAMS,UAAA,MAAA,WALU,QAAA,UAAV,WAAM;wBADf,mBAMS,UAAA;KAJN,KAAK;KACL,OAAO;uBAEL,MAAM,GAAA,GAAA,UAAA;gDAZF,WAAA,KAAU,CAAA,CAAA,GAerB,mBASO,QATP,YASO,CALL,YAIE,iBAAA;IAHA,OAAM;IACN,MAAK;IACL,MAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"menu-select-styles.js","names":[],"sources":["../../../../src/components/forms/select/menu-select-styles.ts"],"sourcesContent":["import { activatorStyles, type TextInputVariant } from '@/components/forms/text-input-styles';\nimport { tv } from '@/utils/tv';\n\nexport type MenuSelectVariant = TextInputVariant;\n\nexport const menuSelectStyles = tv({\n extend: activatorStyles,\n variants: {\n // Re-declare for type inference — actual styles are in activatorStyles\n filled: { true: {} },\n },\n});\n"],"mappings":";;;AAKA,IAAa,mBAAmB,GAAG;CACjC,QAAQ;CACR,UAAU,EAER,QAAQ,EAAE,MAAM,EAAE,EAAE,EACrB;CACF,CAAC"}
1
+ {"version":3,"file":"menu-select-styles.js","names":[],"sources":["../../../../src/components/forms/select/menu-select-styles.ts"],"sourcesContent":["import { activatorStyles, type TextInputVariant } from '@/components/forms/text-input-styles';\nimport { tv } from '@/utils/tv';\n\nexport type MenuSelectVariant = TextInputVariant;\n\nexport const menuSelectStyles = tv({\n extend: activatorStyles,\n variants: {\n // Re-declare for type inference — actual styles are in activatorStyles\n filled: { true: {} },\n },\n});\n"],"mappings":";;;AAKA,IAAa,mBAAmB,GAAG;CACjC,QAAQ;CACR,UAAU,EAER,QAAQ,EAAE,MAAM,CAAC,EAAE,EACrB;AACF,CAAC"}
@@ -22,11 +22,11 @@ var _hoisted_3 = [
22
22
  "aria-valuetext"
23
23
  ];
24
24
  var BIG_TICK_THRESHOLD = 4;
25
- var RuiSlider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
25
+ var RuiSlider_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
26
26
  name: "RuiSlider",
27
27
  inheritAttrs: false,
28
28
  __name: "RuiSlider",
29
- props: /* @__PURE__ */ mergeModels({
29
+ props: /*@__PURE__*/ mergeModels({
30
30
  min: { default: 0 },
31
31
  max: { default: 100 },
32
32
  step: { default: 1 },
@@ -1 +1 @@
1
- {"version":3,"file":"RuiSlider.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/forms/slider/RuiSlider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { VueClassValue } from '@/types/class-value';\nimport { HIGHLIGHT_COLOR_MAP, HIGHLIGHT_DEFAULT, SliderInteraction, sliderStyles } from '@/components/forms/slider/slider-styles';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\n\nexport interface RuiSliderClassNames {\n root?: VueClassValue;\n slider?: VueClassValue;\n tick?: VueClassValue;\n}\n\nexport interface Props {\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n showThumbLabel?: boolean;\n showTicks?: boolean;\n hideTrack?: boolean;\n tickSize?: number;\n vertical?: boolean;\n color?: ContextColorsType;\n label?: string;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n classNames?: RuiSliderClassNames;\n /** @deprecated Use `classNames.slider` instead */\n sliderClass?: string;\n /** @deprecated Use `classNames.tick` instead */\n tickClass?: string;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiSlider',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<number>({ default: 0 });\n\nconst {\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n showThumbLabel = false,\n showTicks = false,\n hideTrack = false,\n vertical = false,\n tickSize = 2,\n color = 'primary',\n label = '',\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n classNames,\n sliderClass = '',\n tickClass = '',\n required = false,\n} = defineProps<Props>();\n\nconst BIG_TICK_THRESHOLD = 4;\n\nconst isHovered = ref<boolean>(false);\nconst isFocused = ref<boolean>(false);\nconst isActive = ref<boolean>(false);\n\nconst outer = useTemplateRef<HTMLDivElement>('outer');\n\nconst { hasError, validation } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst { width, height } = useElementBounding(outer);\n\nconst bigTick = computed<boolean>(() => tickSize > BIG_TICK_THRESHOLD);\n\nuseEventListener(document, 'mouseup', () => set(isActive, false));\n\nconst interaction = computed<SliderInteraction>(() => {\n if (disabled)\n return SliderInteraction.idle;\n if (get(isActive))\n return SliderInteraction.active;\n if (get(isFocused))\n return SliderInteraction.focus;\n if (get(isHovered))\n return SliderInteraction.hover;\n return SliderInteraction.idle;\n});\n\n// Layout ui: stable props only (not interaction), used for wrapper/label/outer/inner/input\nconst ui = computed<ReturnType<typeof sliderStyles>>(() => sliderStyles({\n disabled,\n vertical,\n validation: get(validation),\n color,\n bigTick: get(bigTick),\n}));\n\n// Track ui: includes interaction state, used for slider/thumb/ticks (changes on hover/focus/active)\nconst trackUi = computed<ReturnType<typeof sliderStyles>>(() => sliderStyles({\n disabled,\n vertical,\n interaction: get(interaction),\n color,\n bigTick: get(bigTick),\n}));\n\nconst totalTicks = computed<number>(() => (max - min) / step);\n\nconst currentTick = computed<number>(() => Math.round((get(modelValue) - min) / step));\n\nconst trackWidth = computed<string>(() => {\n const percentage = Math.min(100, Math.max(0, Math.round((get(currentTick) / get(totalTicks)) * 100)));\n return `${percentage}%`;\n});\n\nconst innerStyle = computed<Record<string, string>>(() => {\n const w = `${get(width)}px`;\n const h = `${get(height)}px`;\n const style: Record<string, string> = { width: vertical ? h : w, height: vertical ? w : h };\n if (vertical) {\n style['transform-origin'] = '0 0';\n style['--tw-translate-y'] = h;\n }\n return style;\n});\n\nconst tickSizePx = computed<string>(() => `${tickSize}px`);\n\nconst ticksStyle = computed<Record<string, string>>(() => {\n const size = get(tickSizePx);\n return { margin: `0 calc(${size} / -2)`, width: `calc(100% + ${size})` };\n});\n\nconst tickStyle = computed<Record<string, string>>(() => {\n const size = get(tickSizePx);\n return { width: size, height: size };\n});\n\nconst highlightClass = computed<string>(() => get(bigTick) ? HIGHLIGHT_COLOR_MAP[color] : HIGHLIGHT_DEFAULT);\n\nconst tickClassOverride = computed<string | undefined>(() => cn(classNames?.tick) ?? (tickClass || undefined));\n\nfunction isHighlightedTick(index: number): boolean {\n return index <= get(currentTick);\n}\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <label\n :class=\"ui.wrapper()\"\n :data-error=\"hasError ? '' : undefined\"\n >\n <div\n v-if=\"label\"\n :class=\"ui.label()\"\n >\n {{ label }}\n <span\n v-if=\"required\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </div>\n <div\n ref=\"outer\"\n :class=\"ui.outer()\"\n >\n <div\n :class=\"ui.inner()\"\n :style=\"innerStyle\"\n >\n <input\n v-model=\"modelValue\"\n :class=\"ui.input()\"\n type=\"range\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n :disabled=\"disabled\"\n :aria-invalid=\"hasError\"\n :aria-label=\"label || undefined\"\n :aria-valuetext=\"String(modelValue)\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n @mousedown=\"isActive = true\"\n @mouseup=\"isActive = false\"\n />\n <div :class=\"trackUi.slider()\">\n <div :class=\"trackUi.sliderInner()\">\n <div :class=\"trackUi.container({ class: cn(classNames?.slider) ?? sliderClass })\">\n <div\n v-if=\"!hideTrack\"\n :class=\"trackUi.track()\"\n :style=\"{ width: trackWidth }\"\n data-id=\"slider-track\"\n />\n <div\n v-if=\"showTicks && !disabled\"\n :class=\"trackUi.ticks()\"\n :style=\"ticksStyle\"\n data-id=\"slider-ticks\"\n >\n <span\n v-for=\"i in totalTicks + 1\"\n :key=\"i\"\n :class=\"[\n trackUi.tick(),\n hideTrack\n ? tickClassOverride\n : [\n isHighlightedTick(i - 1) && highlightClass,\n !isHighlightedTick(i - 1) && tickClassOverride,\n ],\n ]\"\n :style=\"tickStyle\"\n />\n </div>\n </div>\n <div\n :class=\"[trackUi.thumb(), trackUi.thumbRipple()]\"\n :style=\"{ left: trackWidth }\"\n data-id=\"slider-thumb\"\n />\n <div\n v-if=\"showThumbLabel && !disabled\"\n :class=\"trackUi.thumbLabel()\"\n :style=\"{ left: trackWidth }\"\n data-id=\"slider-thumb-label\"\n >\n {{ modelValue }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </label>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n class=\"pt-1\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiSlider.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/forms/slider/RuiSlider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { VueClassValue } from '@/types/class-value';\nimport { HIGHLIGHT_COLOR_MAP, HIGHLIGHT_DEFAULT, SliderInteraction, sliderStyles } from '@/components/forms/slider/slider-styles';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\n\nexport interface RuiSliderClassNames {\n root?: VueClassValue;\n slider?: VueClassValue;\n tick?: VueClassValue;\n}\n\nexport interface Props {\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n showThumbLabel?: boolean;\n showTicks?: boolean;\n hideTrack?: boolean;\n tickSize?: number;\n vertical?: boolean;\n color?: ContextColorsType;\n label?: string;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n classNames?: RuiSliderClassNames;\n /** @deprecated Use `classNames.slider` instead */\n sliderClass?: string;\n /** @deprecated Use `classNames.tick` instead */\n tickClass?: string;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiSlider',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<number>({ default: 0 });\n\nconst {\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n showThumbLabel = false,\n showTicks = false,\n hideTrack = false,\n vertical = false,\n tickSize = 2,\n color = 'primary',\n label = '',\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n classNames,\n sliderClass = '',\n tickClass = '',\n required = false,\n} = defineProps<Props>();\n\nconst BIG_TICK_THRESHOLD = 4;\n\nconst isHovered = ref<boolean>(false);\nconst isFocused = ref<boolean>(false);\nconst isActive = ref<boolean>(false);\n\nconst outer = useTemplateRef<HTMLDivElement>('outer');\n\nconst { hasError, validation } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst { width, height } = useElementBounding(outer);\n\nconst bigTick = computed<boolean>(() => tickSize > BIG_TICK_THRESHOLD);\n\nuseEventListener(document, 'mouseup', () => set(isActive, false));\n\nconst interaction = computed<SliderInteraction>(() => {\n if (disabled)\n return SliderInteraction.idle;\n if (get(isActive))\n return SliderInteraction.active;\n if (get(isFocused))\n return SliderInteraction.focus;\n if (get(isHovered))\n return SliderInteraction.hover;\n return SliderInteraction.idle;\n});\n\n// Layout ui: stable props only (not interaction), used for wrapper/label/outer/inner/input\nconst ui = computed<ReturnType<typeof sliderStyles>>(() => sliderStyles({\n disabled,\n vertical,\n validation: get(validation),\n color,\n bigTick: get(bigTick),\n}));\n\n// Track ui: includes interaction state, used for slider/thumb/ticks (changes on hover/focus/active)\nconst trackUi = computed<ReturnType<typeof sliderStyles>>(() => sliderStyles({\n disabled,\n vertical,\n interaction: get(interaction),\n color,\n bigTick: get(bigTick),\n}));\n\nconst totalTicks = computed<number>(() => (max - min) / step);\n\nconst currentTick = computed<number>(() => Math.round((get(modelValue) - min) / step));\n\nconst trackWidth = computed<string>(() => {\n const percentage = Math.min(100, Math.max(0, Math.round((get(currentTick) / get(totalTicks)) * 100)));\n return `${percentage}%`;\n});\n\nconst innerStyle = computed<Record<string, string>>(() => {\n const w = `${get(width)}px`;\n const h = `${get(height)}px`;\n const style: Record<string, string> = { width: vertical ? h : w, height: vertical ? w : h };\n if (vertical) {\n style['transform-origin'] = '0 0';\n style['--tw-translate-y'] = h;\n }\n return style;\n});\n\nconst tickSizePx = computed<string>(() => `${tickSize}px`);\n\nconst ticksStyle = computed<Record<string, string>>(() => {\n const size = get(tickSizePx);\n return { margin: `0 calc(${size} / -2)`, width: `calc(100% + ${size})` };\n});\n\nconst tickStyle = computed<Record<string, string>>(() => {\n const size = get(tickSizePx);\n return { width: size, height: size };\n});\n\nconst highlightClass = computed<string>(() => get(bigTick) ? HIGHLIGHT_COLOR_MAP[color] : HIGHLIGHT_DEFAULT);\n\nconst tickClassOverride = computed<string | undefined>(() => cn(classNames?.tick) ?? (tickClass || undefined));\n\nfunction isHighlightedTick(index: number): boolean {\n return index <= get(currentTick);\n}\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <label\n :class=\"ui.wrapper()\"\n :data-error=\"hasError ? '' : undefined\"\n >\n <div\n v-if=\"label\"\n :class=\"ui.label()\"\n >\n {{ label }}\n <span\n v-if=\"required\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </div>\n <div\n ref=\"outer\"\n :class=\"ui.outer()\"\n >\n <div\n :class=\"ui.inner()\"\n :style=\"innerStyle\"\n >\n <input\n v-model=\"modelValue\"\n :class=\"ui.input()\"\n type=\"range\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n :disabled=\"disabled\"\n :aria-invalid=\"hasError\"\n :aria-label=\"label || undefined\"\n :aria-valuetext=\"String(modelValue)\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n @mousedown=\"isActive = true\"\n @mouseup=\"isActive = false\"\n />\n <div :class=\"trackUi.slider()\">\n <div :class=\"trackUi.sliderInner()\">\n <div :class=\"trackUi.container({ class: cn(classNames?.slider) ?? sliderClass })\">\n <div\n v-if=\"!hideTrack\"\n :class=\"trackUi.track()\"\n :style=\"{ width: trackWidth }\"\n data-id=\"slider-track\"\n />\n <div\n v-if=\"showTicks && !disabled\"\n :class=\"trackUi.ticks()\"\n :style=\"ticksStyle\"\n data-id=\"slider-ticks\"\n >\n <span\n v-for=\"i in totalTicks + 1\"\n :key=\"i\"\n :class=\"[\n trackUi.tick(),\n hideTrack\n ? tickClassOverride\n : [\n isHighlightedTick(i - 1) && highlightClass,\n !isHighlightedTick(i - 1) && tickClassOverride,\n ],\n ]\"\n :style=\"tickStyle\"\n />\n </div>\n </div>\n <div\n :class=\"[trackUi.thumb(), trackUi.thumbRipple()]\"\n :style=\"{ left: trackWidth }\"\n data-id=\"slider-thumb\"\n />\n <div\n v-if=\"showThumbLabel && !disabled\"\n :class=\"trackUi.thumbLabel()\"\n :style=\"{ left: trackWidth }\"\n data-id=\"slider-thumb-label\"\n >\n {{ modelValue }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </label>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n class=\"pt-1\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"slider-styles.js","names":[],"sources":["../../../../src/components/forms/slider/slider-styles.ts"],"sourcesContent":["import type { ContextColorsType } from '@/consts/colors';\nimport { tv } from '@/utils/tv';\n\nexport const SliderInteraction = {\n idle: 'idle',\n hover: 'hover',\n focus: 'focus',\n active: 'active',\n} as const;\n\nexport type SliderInteraction = (typeof SliderInteraction)[keyof typeof SliderInteraction];\n\n/** Static class map for highlighted big-tick colors (avoids dynamic class construction) */\nexport const HIGHLIGHT_COLOR_MAP: Record<ContextColorsType, string> = {\n primary: '!bg-rui-primary',\n secondary: '!bg-rui-secondary',\n error: '!bg-rui-error',\n warning: '!bg-rui-warning',\n info: '!bg-rui-info',\n success: '!bg-rui-success',\n};\n\n/** Default highlighted tick color (non-big-tick) */\nexport const HIGHLIGHT_DEFAULT = 'bg-rui-grey-100 dark:bg-[#121212]';\n\nexport const sliderStyles = tv({\n slots: {\n wrapper: 'flex items-start gap-3',\n label: 'mt-1 text-rui-text text-body-1',\n outer: 'relative h-8 flex-1 min-w-[7.5rem]',\n inner: 'relative',\n input: 'h-full w-full opacity-0 cursor-pointer',\n slider: 'absolute h-full w-full top-0 px-2 pointer-events-none',\n sliderInner: 'relative h-full w-full cursor-pointer',\n container: 'absolute top-1/2 -translate-y-1/2 w-full h-1 rounded-full',\n track: 'transition-all ease-linear duration-75 h-full rounded-full',\n ticks: 'h-full absolute top-0 flex justify-between items-center',\n tick: 'rounded-full',\n thumb: 'absolute top-1/2 transition-all ease-linear duration-75 -translate-y-1/2 -translate-x-1/2 w-3 h-3 rounded-full shadow-2',\n thumbRipple: [\n `before:content-[''] before:w-8 before:h-8 before:rounded-full before:absolute before:top-1/2 before:left-1/2`,\n 'before:opacity-10 before:transition before:-translate-x-1/2 before:-translate-y-1/2 before:scale-0',\n ].join(' '),\n thumbLabel: [\n 'invisible opacity-0',\n 'absolute -mt-7 transition-all ease-linear duration-75 -translate-x-1/2',\n 'px-2 py-1 text-xs font-normal',\n 'bg-rui-grey-700/90 text-white rounded shadow',\n ].join(' '),\n },\n variants: {\n disabled: {\n true: {\n label: 'text-rui-text-disabled',\n container: '!bg-rui-grey-300 dark:!bg-rui-grey-800',\n track: '!bg-rui-grey-400 dark:!bg-rui-grey-700',\n thumb: '!bg-rui-grey-400 dark:!bg-rui-grey-700',\n },\n },\n vertical: {\n true: {\n wrapper: 'flex-col-reverse items-center h-full',\n label: 'mb-2 text-center',\n outer: 'min-w-0 min-h-[7.5rem] w-8',\n inner: '-rotate-90',\n thumbLabel: 'mt-6 rotate-90 translate-x-0 [transform-origin:0_50%]',\n },\n },\n interaction: {\n idle: {},\n hover: { thumbRipple: 'before:scale-100' },\n focus: { thumbRipple: 'before:scale-100 before:opacity-15' },\n active: { thumbRipple: 'before:scale-100 before:opacity-30', thumbLabel: 'visible opacity-100' },\n },\n validation: {\n error: { label: 'text-rui-error' },\n success: { label: 'text-rui-success' },\n },\n color: {\n primary: {},\n secondary: {},\n error: {},\n warning: {},\n info: {},\n success: {},\n },\n bigTick: {\n true: {},\n },\n },\n compoundSlots: [\n // Container bg (with opacity)\n { slots: ['container'], color: 'primary', class: 'bg-rui-primary bg-opacity-40' },\n { slots: ['container'], color: 'secondary', class: 'bg-rui-secondary bg-opacity-40' },\n { slots: ['container'], color: 'error', class: 'bg-rui-error bg-opacity-40' },\n { slots: ['container'], color: 'warning', class: 'bg-rui-warning bg-opacity-40' },\n { slots: ['container'], color: 'info', class: 'bg-rui-info bg-opacity-40' },\n { slots: ['container'], color: 'success', class: 'bg-rui-success bg-opacity-40' },\n\n // Track + thumb + thumb ripple + tick color\n { slots: ['track', 'thumb', 'tick'], color: 'primary', class: 'bg-rui-primary' },\n { slots: ['track', 'thumb', 'tick'], color: 'secondary', class: 'bg-rui-secondary' },\n { slots: ['track', 'thumb', 'tick'], color: 'error', class: 'bg-rui-error' },\n { slots: ['track', 'thumb', 'tick'], color: 'warning', class: 'bg-rui-warning' },\n { slots: ['track', 'thumb', 'tick'], color: 'info', class: 'bg-rui-info' },\n { slots: ['track', 'thumb', 'tick'], color: 'success', class: 'bg-rui-success' },\n\n // Thumb ripple (before pseudo) color\n { slots: ['thumbRipple'], color: 'primary', class: 'before:bg-rui-primary' },\n { slots: ['thumbRipple'], color: 'secondary', class: 'before:bg-rui-secondary' },\n { slots: ['thumbRipple'], color: 'error', class: 'before:bg-rui-error' },\n { slots: ['thumbRipple'], color: 'warning', class: 'before:bg-rui-warning' },\n { slots: ['thumbRipple'], color: 'info', class: 'before:bg-rui-info' },\n { slots: ['thumbRipple'], color: 'success', class: 'before:bg-rui-success' },\n ],\n compoundVariants: [\n // Big tick: lighter default, color highlighted\n { bigTick: true, color: 'primary', class: { tick: '!bg-rui-primary-lighter' } },\n { bigTick: true, color: 'secondary', class: { tick: '!bg-rui-secondary-lighter' } },\n { bigTick: true, color: 'error', class: { tick: '!bg-rui-error-lighter' } },\n { bigTick: true, color: 'warning', class: { tick: '!bg-rui-warning-lighter' } },\n { bigTick: true, color: 'info', class: { tick: '!bg-rui-info-lighter' } },\n { bigTick: true, color: 'success', class: { tick: '!bg-rui-success-lighter' } },\n ],\n defaultVariants: {\n interaction: 'idle',\n color: 'primary',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"slider-styles.js","names":[],"sources":["../../../../src/components/forms/slider/slider-styles.ts"],"sourcesContent":["import type { ContextColorsType } from '@/consts/colors';\nimport { tv } from '@/utils/tv';\n\nexport const SliderInteraction = {\n idle: 'idle',\n hover: 'hover',\n focus: 'focus',\n active: 'active',\n} as const;\n\nexport type SliderInteraction = (typeof SliderInteraction)[keyof typeof SliderInteraction];\n\n/** Static class map for highlighted big-tick colors (avoids dynamic class construction) */\nexport const HIGHLIGHT_COLOR_MAP: Record<ContextColorsType, string> = {\n primary: '!bg-rui-primary',\n secondary: '!bg-rui-secondary',\n error: '!bg-rui-error',\n warning: '!bg-rui-warning',\n info: '!bg-rui-info',\n success: '!bg-rui-success',\n};\n\n/** Default highlighted tick color (non-big-tick) */\nexport const HIGHLIGHT_DEFAULT = 'bg-rui-grey-100 dark:bg-[#121212]';\n\nexport const sliderStyles = tv({\n slots: {\n wrapper: 'flex items-start gap-3',\n label: 'mt-1 text-rui-text text-body-1',\n outer: 'relative h-8 flex-1 min-w-[7.5rem]',\n inner: 'relative',\n input: 'h-full w-full opacity-0 cursor-pointer',\n slider: 'absolute h-full w-full top-0 px-2 pointer-events-none',\n sliderInner: 'relative h-full w-full cursor-pointer',\n container: 'absolute top-1/2 -translate-y-1/2 w-full h-1 rounded-full',\n track: 'transition-all ease-linear duration-75 h-full rounded-full',\n ticks: 'h-full absolute top-0 flex justify-between items-center',\n tick: 'rounded-full',\n thumb: 'absolute top-1/2 transition-all ease-linear duration-75 -translate-y-1/2 -translate-x-1/2 w-3 h-3 rounded-full shadow-2',\n thumbRipple: [\n `before:content-[''] before:w-8 before:h-8 before:rounded-full before:absolute before:top-1/2 before:left-1/2`,\n 'before:opacity-10 before:transition before:-translate-x-1/2 before:-translate-y-1/2 before:scale-0',\n ].join(' '),\n thumbLabel: [\n 'invisible opacity-0',\n 'absolute -mt-7 transition-all ease-linear duration-75 -translate-x-1/2',\n 'px-2 py-1 text-xs font-normal',\n 'bg-rui-grey-700/90 text-white rounded shadow',\n ].join(' '),\n },\n variants: {\n disabled: {\n true: {\n label: 'text-rui-text-disabled',\n container: '!bg-rui-grey-300 dark:!bg-rui-grey-800',\n track: '!bg-rui-grey-400 dark:!bg-rui-grey-700',\n thumb: '!bg-rui-grey-400 dark:!bg-rui-grey-700',\n },\n },\n vertical: {\n true: {\n wrapper: 'flex-col-reverse items-center h-full',\n label: 'mb-2 text-center',\n outer: 'min-w-0 min-h-[7.5rem] w-8',\n inner: '-rotate-90',\n thumbLabel: 'mt-6 rotate-90 translate-x-0 [transform-origin:0_50%]',\n },\n },\n interaction: {\n idle: {},\n hover: { thumbRipple: 'before:scale-100' },\n focus: { thumbRipple: 'before:scale-100 before:opacity-15' },\n active: { thumbRipple: 'before:scale-100 before:opacity-30', thumbLabel: 'visible opacity-100' },\n },\n validation: {\n error: { label: 'text-rui-error' },\n success: { label: 'text-rui-success' },\n },\n color: {\n primary: {},\n secondary: {},\n error: {},\n warning: {},\n info: {},\n success: {},\n },\n bigTick: {\n true: {},\n },\n },\n compoundSlots: [\n // Container bg (with opacity)\n { slots: ['container'], color: 'primary', class: 'bg-rui-primary bg-opacity-40' },\n { slots: ['container'], color: 'secondary', class: 'bg-rui-secondary bg-opacity-40' },\n { slots: ['container'], color: 'error', class: 'bg-rui-error bg-opacity-40' },\n { slots: ['container'], color: 'warning', class: 'bg-rui-warning bg-opacity-40' },\n { slots: ['container'], color: 'info', class: 'bg-rui-info bg-opacity-40' },\n { slots: ['container'], color: 'success', class: 'bg-rui-success bg-opacity-40' },\n\n // Track + thumb + thumb ripple + tick color\n { slots: ['track', 'thumb', 'tick'], color: 'primary', class: 'bg-rui-primary' },\n { slots: ['track', 'thumb', 'tick'], color: 'secondary', class: 'bg-rui-secondary' },\n { slots: ['track', 'thumb', 'tick'], color: 'error', class: 'bg-rui-error' },\n { slots: ['track', 'thumb', 'tick'], color: 'warning', class: 'bg-rui-warning' },\n { slots: ['track', 'thumb', 'tick'], color: 'info', class: 'bg-rui-info' },\n { slots: ['track', 'thumb', 'tick'], color: 'success', class: 'bg-rui-success' },\n\n // Thumb ripple (before pseudo) color\n { slots: ['thumbRipple'], color: 'primary', class: 'before:bg-rui-primary' },\n { slots: ['thumbRipple'], color: 'secondary', class: 'before:bg-rui-secondary' },\n { slots: ['thumbRipple'], color: 'error', class: 'before:bg-rui-error' },\n { slots: ['thumbRipple'], color: 'warning', class: 'before:bg-rui-warning' },\n { slots: ['thumbRipple'], color: 'info', class: 'before:bg-rui-info' },\n { slots: ['thumbRipple'], color: 'success', class: 'before:bg-rui-success' },\n ],\n compoundVariants: [\n // Big tick: lighter default, color highlighted\n { bigTick: true, color: 'primary', class: { tick: '!bg-rui-primary-lighter' } },\n { bigTick: true, color: 'secondary', class: { tick: '!bg-rui-secondary-lighter' } },\n { bigTick: true, color: 'error', class: { tick: '!bg-rui-error-lighter' } },\n { bigTick: true, color: 'warning', class: { tick: '!bg-rui-warning-lighter' } },\n { bigTick: true, color: 'info', class: { tick: '!bg-rui-info-lighter' } },\n { bigTick: true, color: 'success', class: { tick: '!bg-rui-success-lighter' } },\n ],\n defaultVariants: {\n interaction: 'idle',\n color: 'primary',\n },\n});\n"],"mappings":"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"}
@@ -19,11 +19,11 @@ var _hoisted_3 = {
19
19
  key: 0,
20
20
  class: "text-rui-error"
21
21
  };
22
- var RuiSwitch_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
22
+ var RuiSwitch_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
23
23
  name: "RuiSwitch",
24
24
  inheritAttrs: false,
25
25
  __name: "RuiSwitch",
26
- props: /* @__PURE__ */ mergeModels({
26
+ props: /*@__PURE__*/ mergeModels({
27
27
  disabled: {
28
28
  type: Boolean,
29
29
  default: false
@@ -1 +1 @@
1
- {"version":3,"file":"RuiSwitch.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../../src/components/forms/switch/RuiSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { tv } from '@/utils/tv';\n\nexport interface Props {\n disabled?: boolean;\n color?: ContextColorsType;\n size?: 'sm';\n label?: string;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiSwitch',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n disabled = false,\n color = undefined,\n size = undefined,\n label = '',\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n required = false,\n} = defineProps<Props>();\n\ndefineSlots<{\n default?: () => any;\n}>();\n\nconst switchStyles = tv({\n slots: {\n wrapper: 'relative flex gap-2 items-start cursor-pointer group/switch',\n inner: 'relative w-[2.6875rem] h-6 shrink-0',\n input: 'peer appearance-none relative w-full h-full rounded-full bg-rui-grey-400 dark:bg-rui-grey-700 transition-all duration-75 ease-in-out cursor-pointer',\n toggle: [\n 'absolute w-5 h-5 transition-all duration-75 ease-in-out -translate-y-1/2 top-1/2 rounded-full pointer-events-none',\n 'bg-white left-0.5',\n `before:content-[''] before:absolute before:size-10 before:bg-black dark:before:bg-white before:rounded-full`,\n 'before:top-1/2 before:left-1/2 before:-translate-x-1/2 before:-translate-y-1/2 before:transition-all before:ease-in-out before:opacity-0',\n 'peer-active:before:opacity-20',\n 'group-hover/switch:shadow-1',\n ].join(' '),\n label: 'text-rui-text text-body-1',\n },\n variants: {\n checked: {\n true: {\n toggle: 'left-[1.3125rem]',\n },\n false: {},\n },\n disabled: {\n true: {\n wrapper: 'cursor-not-allowed',\n input: '!bg-rui-grey-300 dark:!bg-rui-grey-800 cursor-not-allowed',\n toggle: '!bg-rui-grey-500 dark:!bg-rui-grey-600 before:!content-none group-hover/switch:!shadow-none',\n label: 'text-rui-text-disabled',\n },\n },\n size: {\n sm: {\n inner: 'w-10 h-5 mt-0.5',\n toggle: 'w-4 h-4 before:size-6',\n },\n },\n validation: {\n error: {\n input: '!bg-rui-error dark:!bg-rui-error/[0.5]',\n label: 'text-rui-error',\n toggle: 'dark:!bg-rui-error',\n },\n success: {\n input: '!bg-rui-success dark:!bg-rui-success/[0.5]',\n label: 'text-rui-success',\n toggle: 'dark:!bg-rui-success',\n },\n },\n color: {\n primary: {},\n secondary: {},\n error: {},\n warning: {},\n info: {},\n success: {},\n },\n },\n compoundVariants: [\n // Checked (no color): track + toggle dark mode\n { checked: true, disabled: false, class: { input: 'bg-black dark:bg-white' } },\n { checked: true, disabled: false, class: { toggle: 'dark:bg-black' } },\n\n // Checked + color (light: track bg, dark: track bg/50 + toggle bg)\n { checked: true, disabled: false, color: 'primary', class: { input: 'bg-rui-primary dark:bg-rui-primary/[0.5]', toggle: 'dark:bg-rui-primary' } },\n { checked: true, disabled: false, color: 'secondary', class: { input: 'bg-rui-secondary dark:bg-rui-secondary/[0.5]', toggle: 'dark:bg-rui-secondary' } },\n { checked: true, disabled: false, color: 'error', class: { input: 'bg-rui-error dark:bg-rui-error/[0.5]', toggle: 'dark:bg-rui-error' } },\n { checked: true, disabled: false, color: 'warning', class: { input: 'bg-rui-warning dark:bg-rui-warning/[0.5]', toggle: 'dark:bg-rui-warning' } },\n { checked: true, disabled: false, color: 'info', class: { input: 'bg-rui-info dark:bg-rui-info/[0.5]', toggle: 'dark:bg-rui-info' } },\n { checked: true, disabled: false, color: 'success', class: { input: 'bg-rui-success dark:bg-rui-success/[0.5]', toggle: 'dark:bg-rui-success' } },\n\n // Size sm + checked: different toggle position\n { size: 'sm', checked: true, class: { toggle: 'left-[1.375rem]' } },\n ],\n defaultVariants: {\n checked: false,\n disabled: false,\n },\n});\n\nconst { hasError, validation } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst ui = computed<ReturnType<typeof switchStyles>>(() => switchStyles({\n checked: get(modelValue),\n disabled,\n size,\n validation: get(validation),\n color,\n}));\n\nfunction input(event: Event): void {\n const target = event.target;\n if (target instanceof HTMLInputElement)\n set(modelValue, target.checked);\n}\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <label\n :class=\"ui.wrapper()\"\n :data-disabled=\"disabled || undefined\"\n :data-checked=\"modelValue || undefined\"\n :data-error=\"hasError ? '' : undefined\"\n >\n <div :class=\"ui.inner()\">\n <input\n :checked=\"modelValue\"\n type=\"checkbox\"\n :class=\"ui.input()\"\n :disabled=\"disabled\"\n :aria-invalid=\"hasError\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @input=\"input($event)\"\n />\n <div :class=\"ui.toggle()\" />\n </div>\n <span\n v-if=\"label || $slots.default\"\n :class=\"ui.label()\"\n >\n <slot>{{ label }}</slot>\n <span\n v-if=\"required\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </span>\n </label>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n class=\"pt-1\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiSwitch.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../../src/components/forms/switch/RuiSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { tv } from '@/utils/tv';\n\nexport interface Props {\n disabled?: boolean;\n color?: ContextColorsType;\n size?: 'sm';\n label?: string;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiSwitch',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n disabled = false,\n color = undefined,\n size = undefined,\n label = '',\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n required = false,\n} = defineProps<Props>();\n\ndefineSlots<{\n default?: () => any;\n}>();\n\nconst switchStyles = tv({\n slots: {\n wrapper: 'relative flex gap-2 items-start cursor-pointer group/switch',\n inner: 'relative w-[2.6875rem] h-6 shrink-0',\n input: 'peer appearance-none relative w-full h-full rounded-full bg-rui-grey-400 dark:bg-rui-grey-700 transition-all duration-75 ease-in-out cursor-pointer',\n toggle: [\n 'absolute w-5 h-5 transition-all duration-75 ease-in-out -translate-y-1/2 top-1/2 rounded-full pointer-events-none',\n 'bg-white left-0.5',\n `before:content-[''] before:absolute before:size-10 before:bg-black dark:before:bg-white before:rounded-full`,\n 'before:top-1/2 before:left-1/2 before:-translate-x-1/2 before:-translate-y-1/2 before:transition-all before:ease-in-out before:opacity-0',\n 'peer-active:before:opacity-20',\n 'group-hover/switch:shadow-1',\n ].join(' '),\n label: 'text-rui-text text-body-1',\n },\n variants: {\n checked: {\n true: {\n toggle: 'left-[1.3125rem]',\n },\n false: {},\n },\n disabled: {\n true: {\n wrapper: 'cursor-not-allowed',\n input: '!bg-rui-grey-300 dark:!bg-rui-grey-800 cursor-not-allowed',\n toggle: '!bg-rui-grey-500 dark:!bg-rui-grey-600 before:!content-none group-hover/switch:!shadow-none',\n label: 'text-rui-text-disabled',\n },\n },\n size: {\n sm: {\n inner: 'w-10 h-5 mt-0.5',\n toggle: 'w-4 h-4 before:size-6',\n },\n },\n validation: {\n error: {\n input: '!bg-rui-error dark:!bg-rui-error/[0.5]',\n label: 'text-rui-error',\n toggle: 'dark:!bg-rui-error',\n },\n success: {\n input: '!bg-rui-success dark:!bg-rui-success/[0.5]',\n label: 'text-rui-success',\n toggle: 'dark:!bg-rui-success',\n },\n },\n color: {\n primary: {},\n secondary: {},\n error: {},\n warning: {},\n info: {},\n success: {},\n },\n },\n compoundVariants: [\n // Checked (no color): track + toggle dark mode\n { checked: true, disabled: false, class: { input: 'bg-black dark:bg-white' } },\n { checked: true, disabled: false, class: { toggle: 'dark:bg-black' } },\n\n // Checked + color (light: track bg, dark: track bg/50 + toggle bg)\n { checked: true, disabled: false, color: 'primary', class: { input: 'bg-rui-primary dark:bg-rui-primary/[0.5]', toggle: 'dark:bg-rui-primary' } },\n { checked: true, disabled: false, color: 'secondary', class: { input: 'bg-rui-secondary dark:bg-rui-secondary/[0.5]', toggle: 'dark:bg-rui-secondary' } },\n { checked: true, disabled: false, color: 'error', class: { input: 'bg-rui-error dark:bg-rui-error/[0.5]', toggle: 'dark:bg-rui-error' } },\n { checked: true, disabled: false, color: 'warning', class: { input: 'bg-rui-warning dark:bg-rui-warning/[0.5]', toggle: 'dark:bg-rui-warning' } },\n { checked: true, disabled: false, color: 'info', class: { input: 'bg-rui-info dark:bg-rui-info/[0.5]', toggle: 'dark:bg-rui-info' } },\n { checked: true, disabled: false, color: 'success', class: { input: 'bg-rui-success dark:bg-rui-success/[0.5]', toggle: 'dark:bg-rui-success' } },\n\n // Size sm + checked: different toggle position\n { size: 'sm', checked: true, class: { toggle: 'left-[1.375rem]' } },\n ],\n defaultVariants: {\n checked: false,\n disabled: false,\n },\n});\n\nconst { hasError, validation } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst ui = computed<ReturnType<typeof switchStyles>>(() => switchStyles({\n checked: get(modelValue),\n disabled,\n size,\n validation: get(validation),\n color,\n}));\n\nfunction input(event: Event): void {\n const target = event.target;\n if (target instanceof HTMLInputElement)\n set(modelValue, target.checked);\n}\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <label\n :class=\"ui.wrapper()\"\n :data-disabled=\"disabled || undefined\"\n :data-checked=\"modelValue || undefined\"\n :data-error=\"hasError ? '' : undefined\"\n >\n <div :class=\"ui.inner()\">\n <input\n :checked=\"modelValue\"\n type=\"checkbox\"\n :class=\"ui.input()\"\n :disabled=\"disabled\"\n :aria-invalid=\"hasError\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @input=\"input($event)\"\n />\n <div :class=\"ui.toggle()\" />\n </div>\n <span\n v-if=\"label || $slots.default\"\n :class=\"ui.label()\"\n >\n <slot>{{ label }}</slot>\n <span\n v-if=\"required\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </span>\n </label>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n class=\"pt-1\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":"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"}
@@ -17,11 +17,11 @@ var _hoisted_2 = [
17
17
  "readonly",
18
18
  "aria-invalid"
19
19
  ];
20
- var RuiTextArea_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
20
+ var RuiTextArea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
21
21
  name: "RuiTextArea",
22
22
  inheritAttrs: false,
23
23
  __name: "RuiTextArea",
24
- props: /* @__PURE__ */ mergeModels({
24
+ props: /*@__PURE__*/ mergeModels({
25
25
  label: { default: "" },
26
26
  placeholder: { default: "" },
27
27
  disabled: {
@@ -71,7 +71,7 @@ var RuiTextArea_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
71
71
  "modelValue": { required: true },
72
72
  "modelModifiers": {}
73
73
  }),
74
- emits: /* @__PURE__ */ mergeModels(["click:clear"], ["update:modelValue"]),
74
+ emits: /*@__PURE__*/ mergeModels(["click:clear"], ["update:modelValue"]),
75
75
  setup(__props, { expose: __expose, emit: __emit }) {
76
76
  const modelValue = useModel(__props, "modelValue");
77
77
  const emit = __emit;
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTextArea.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../../src/components/forms/text-area/RuiTextArea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { textAreaStyles, type TextAreaVariant } from '@/components/forms/text-area/text-area-styles';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { usePrependAppendWidth } from '@/composables/forms/use-prepend-append-width';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface TextAreaProps {\n label?: string;\n placeholder?: string;\n disabled?: boolean;\n variant?: TextAreaVariant;\n color?: ContextColorsType;\n textColor?: ContextColorsType;\n dense?: boolean;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n prependIcon?: RuiIcons;\n appendIcon?: RuiIcons;\n readonly?: boolean;\n clearable?: boolean;\n noResize?: boolean;\n minRows?: number | string;\n maxRows?: number | string;\n rowHeight?: number | string;\n autoGrow?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiTextArea',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<string>({ required: true });\n\nconst {\n label = '',\n placeholder = '',\n disabled = false,\n variant = 'default',\n color = undefined,\n textColor = undefined,\n dense = false,\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n prependIcon = undefined,\n appendIcon = undefined,\n readonly = false,\n clearable = false,\n noResize = false,\n minRows = 2,\n rowHeight = 1.5,\n maxRows = undefined,\n autoGrow = false,\n required = false,\n} = defineProps<TextAreaProps>();\n\nconst emit = defineEmits<{\n 'click:clear': [];\n}>();\n\ndefineSlots<{\n prepend?: () => any;\n append?: () => any;\n}>();\n\nconst isHovered = ref<boolean>(false);\nconst showClearButton = ref<boolean>(false);\n\nconst prepend = useTemplateRef<HTMLDivElement>('prepend');\nconst append = useTemplateRef<HTMLDivElement>('append');\nconst textarea = useTemplateRef<HTMLTextAreaElement>('textarea');\nconst textareaSizer = useTemplateRef<HTMLTextAreaElement>('textareaSizer');\n\nconst { focused } = useFocus(textarea);\nconst { create: delayClearHide } = useTimeoutManager();\nconst { prependWidth, appendWidth } = usePrependAppendWidth(prepend, append, 24);\nconst { hasError, hasSuccess, hasMessages, validation } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst active = computed<boolean>(() => get(focused) || !!get(modelValue));\n\nconst showClearIcon = computed<boolean>(() => clearable && !!get(modelValue) && !disabled && !readonly);\n\nconst effectiveTextColor = computed<ContextColorsType | undefined>(() => {\n if (get(hasError))\n return 'error';\n if (get(hasSuccess))\n return 'success';\n if (textColor && !get(hasMessages))\n return textColor;\n return undefined;\n});\n\nconst effectiveColor = computed<ContextColorsType | undefined>(() => get(validation) ?? color);\n\nconst ui = computed<ReturnType<typeof textAreaStyles>>(() => textAreaStyles({\n variant,\n dense,\n disabled,\n noResize,\n hovered: get(isHovered),\n focused: get(focused),\n active: get(active),\n noLabel: !label,\n color: get(effectiveColor),\n textColor: get(effectiveTextColor),\n validation: get(validation),\n showLabel: !!label,\n}));\n\nconst wrapperStyle = computed<Record<string, string>>(() => ({\n '--prepend-w': get(prependWidth),\n '--append-w': get(appendWidth),\n}));\n\nconst legendText = computed<string>(() => {\n if (!get(active) || !label)\n return '';\n return required ? `${label} ﹡` : label;\n});\n\nconst fieldStyles = computed<{ minHeight: string; maxHeight?: string }>(() => {\n const height = Number(rowHeight);\n const min = Number(minRows);\n const max = Number(maxRows);\n const value: { minHeight: string; maxHeight?: string } = {\n minHeight: `${min * height + 0.75}rem`,\n };\n if (max)\n value.maxHeight = `${max * height + 0.75}rem`;\n\n return value;\n});\n\nfunction clearIconClicked(): void {\n set(modelValue, '');\n emit('click:clear');\n}\n\nfunction computeFieldHeight(newVal?: string, oldVal?: string): void {\n if (!autoGrow)\n return;\n\n const field = get(textarea);\n const fieldValue = newVal ?? get(modelValue);\n const fieldSizer = get(textareaSizer);\n if (!(field && fieldSizer))\n return;\n\n nextTick(() => {\n const sizerHeight = fieldSizer.scrollHeight;\n const fieldHeight = field.scrollHeight;\n let height = `${Math.max(sizerHeight, fieldHeight) / 16}rem`;\n if (oldVal && oldVal.length > fieldValue.length)\n height = `${Math.min(sizerHeight, fieldHeight) / 16}rem`;\n\n field.style.height = height;\n });\n}\n\nwatch(focused, (value) => {\n if (value) {\n set(showClearButton, true);\n }\n else {\n delayClearHide(() => set(showClearButton, false), 500);\n }\n});\n\nwatchDebounced(modelValue, computeFieldHeight, { debounce: 50 });\n\nonMounted(computeFieldHeight);\n\ndefineExpose({\n focus: () => get(textarea)?.focus(),\n element: textarea,\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <div\n :class=\"ui.wrapper()\"\n :style=\"wrapperStyle\"\n data-id=\"wrapper\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n >\n <div\n v-if=\"$slots.prepend || prependIcon\"\n ref=\"prepend\"\n :class=\"ui.prepend()\"\n data-id=\"prepend\"\n >\n <slot\n v-if=\"$slots.prepend\"\n name=\"prepend\"\n />\n <div\n v-else-if=\"prependIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon :name=\"prependIcon\" />\n </div>\n </div>\n <div :class=\"ui.inputWrapper()\">\n <textarea\n v-if=\"autoGrow\"\n ref=\"textareaSizer\"\n :value=\"modelValue\"\n :class=\"ui.textareaSizer()\"\n :style=\"fieldStyles\"\n aria-hidden=\"true\"\n disabled\n readonly\n />\n <textarea\n ref=\"textarea\"\n v-model=\"modelValue\"\n :placeholder=\"placeholder || ' '\"\n :class=\"ui.textarea()\"\n :style=\"fieldStyles\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :aria-invalid=\"hasError\"\n v-bind=\"getNonRootAttrs($attrs)\"\n />\n <label :class=\"ui.label()\">\n <span :class=\"ui.labelText()\">\n {{ label }}\n <span\n v-if=\"required\"\n :class=\"ui.required()\"\n >\n ﹡\n </span>\n </span>\n </label>\n <fieldset\n v-if=\"variant === 'outlined'\"\n :class=\"ui.fieldset()\"\n >\n <legend :class=\"ui.legend()\">\n {{ legendText }}\n </legend>\n </fieldset>\n </div>\n <div\n v-if=\"$slots.append || appendIcon || showClearIcon\"\n ref=\"append\"\n :class=\"ui.append()\"\n data-id=\"append\"\n >\n <RuiButton\n v-if=\"showClearIcon\"\n :class=\"[ui.clearButton(), { hidden: !showClearButton }]\"\n variant=\"text\"\n type=\"button\"\n icon\n color=\"error\"\n data-id=\"clear-btn\"\n tabindex=\"-1\"\n @click.stop=\"clearIconClicked()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n <slot\n v-if=\"$slots.append\"\n name=\"append\"\n />\n <div\n v-else-if=\"appendIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon :name=\"appendIcon\" />\n </div>\n </div>\n </div>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n :class=\"ui.details()\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiTextArea.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../../src/components/forms/text-area/RuiTextArea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { textAreaStyles, type TextAreaVariant } from '@/components/forms/text-area/text-area-styles';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { usePrependAppendWidth } from '@/composables/forms/use-prepend-append-width';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface TextAreaProps {\n label?: string;\n placeholder?: string;\n disabled?: boolean;\n variant?: TextAreaVariant;\n color?: ContextColorsType;\n textColor?: ContextColorsType;\n dense?: boolean;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n prependIcon?: RuiIcons;\n appendIcon?: RuiIcons;\n readonly?: boolean;\n clearable?: boolean;\n noResize?: boolean;\n minRows?: number | string;\n maxRows?: number | string;\n rowHeight?: number | string;\n autoGrow?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiTextArea',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<string>({ required: true });\n\nconst {\n label = '',\n placeholder = '',\n disabled = false,\n variant = 'default',\n color = undefined,\n textColor = undefined,\n dense = false,\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n prependIcon = undefined,\n appendIcon = undefined,\n readonly = false,\n clearable = false,\n noResize = false,\n minRows = 2,\n rowHeight = 1.5,\n maxRows = undefined,\n autoGrow = false,\n required = false,\n} = defineProps<TextAreaProps>();\n\nconst emit = defineEmits<{\n 'click:clear': [];\n}>();\n\ndefineSlots<{\n prepend?: () => any;\n append?: () => any;\n}>();\n\nconst isHovered = ref<boolean>(false);\nconst showClearButton = ref<boolean>(false);\n\nconst prepend = useTemplateRef<HTMLDivElement>('prepend');\nconst append = useTemplateRef<HTMLDivElement>('append');\nconst textarea = useTemplateRef<HTMLTextAreaElement>('textarea');\nconst textareaSizer = useTemplateRef<HTMLTextAreaElement>('textareaSizer');\n\nconst { focused } = useFocus(textarea);\nconst { create: delayClearHide } = useTimeoutManager();\nconst { prependWidth, appendWidth } = usePrependAppendWidth(prepend, append, 24);\nconst { hasError, hasSuccess, hasMessages, validation } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst active = computed<boolean>(() => get(focused) || !!get(modelValue));\n\nconst showClearIcon = computed<boolean>(() => clearable && !!get(modelValue) && !disabled && !readonly);\n\nconst effectiveTextColor = computed<ContextColorsType | undefined>(() => {\n if (get(hasError))\n return 'error';\n if (get(hasSuccess))\n return 'success';\n if (textColor && !get(hasMessages))\n return textColor;\n return undefined;\n});\n\nconst effectiveColor = computed<ContextColorsType | undefined>(() => get(validation) ?? color);\n\nconst ui = computed<ReturnType<typeof textAreaStyles>>(() => textAreaStyles({\n variant,\n dense,\n disabled,\n noResize,\n hovered: get(isHovered),\n focused: get(focused),\n active: get(active),\n noLabel: !label,\n color: get(effectiveColor),\n textColor: get(effectiveTextColor),\n validation: get(validation),\n showLabel: !!label,\n}));\n\nconst wrapperStyle = computed<Record<string, string>>(() => ({\n '--prepend-w': get(prependWidth),\n '--append-w': get(appendWidth),\n}));\n\nconst legendText = computed<string>(() => {\n if (!get(active) || !label)\n return '';\n return required ? `${label} ﹡` : label;\n});\n\nconst fieldStyles = computed<{ minHeight: string; maxHeight?: string }>(() => {\n const height = Number(rowHeight);\n const min = Number(minRows);\n const max = Number(maxRows);\n const value: { minHeight: string; maxHeight?: string } = {\n minHeight: `${min * height + 0.75}rem`,\n };\n if (max)\n value.maxHeight = `${max * height + 0.75}rem`;\n\n return value;\n});\n\nfunction clearIconClicked(): void {\n set(modelValue, '');\n emit('click:clear');\n}\n\nfunction computeFieldHeight(newVal?: string, oldVal?: string): void {\n if (!autoGrow)\n return;\n\n const field = get(textarea);\n const fieldValue = newVal ?? get(modelValue);\n const fieldSizer = get(textareaSizer);\n if (!(field && fieldSizer))\n return;\n\n nextTick(() => {\n const sizerHeight = fieldSizer.scrollHeight;\n const fieldHeight = field.scrollHeight;\n let height = `${Math.max(sizerHeight, fieldHeight) / 16}rem`;\n if (oldVal && oldVal.length > fieldValue.length)\n height = `${Math.min(sizerHeight, fieldHeight) / 16}rem`;\n\n field.style.height = height;\n });\n}\n\nwatch(focused, (value) => {\n if (value) {\n set(showClearButton, true);\n }\n else {\n delayClearHide(() => set(showClearButton, false), 500);\n }\n});\n\nwatchDebounced(modelValue, computeFieldHeight, { debounce: 50 });\n\nonMounted(computeFieldHeight);\n\ndefineExpose({\n focus: () => get(textarea)?.focus(),\n element: textarea,\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <div\n :class=\"ui.wrapper()\"\n :style=\"wrapperStyle\"\n data-id=\"wrapper\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n >\n <div\n v-if=\"$slots.prepend || prependIcon\"\n ref=\"prepend\"\n :class=\"ui.prepend()\"\n data-id=\"prepend\"\n >\n <slot\n v-if=\"$slots.prepend\"\n name=\"prepend\"\n />\n <div\n v-else-if=\"prependIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon :name=\"prependIcon\" />\n </div>\n </div>\n <div :class=\"ui.inputWrapper()\">\n <textarea\n v-if=\"autoGrow\"\n ref=\"textareaSizer\"\n :value=\"modelValue\"\n :class=\"ui.textareaSizer()\"\n :style=\"fieldStyles\"\n aria-hidden=\"true\"\n disabled\n readonly\n />\n <textarea\n ref=\"textarea\"\n v-model=\"modelValue\"\n :placeholder=\"placeholder || ' '\"\n :class=\"ui.textarea()\"\n :style=\"fieldStyles\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :aria-invalid=\"hasError\"\n v-bind=\"getNonRootAttrs($attrs)\"\n />\n <label :class=\"ui.label()\">\n <span :class=\"ui.labelText()\">\n {{ label }}\n <span\n v-if=\"required\"\n :class=\"ui.required()\"\n >\n ﹡\n </span>\n </span>\n </label>\n <fieldset\n v-if=\"variant === 'outlined'\"\n :class=\"ui.fieldset()\"\n >\n <legend :class=\"ui.legend()\">\n {{ legendText }}\n </legend>\n </fieldset>\n </div>\n <div\n v-if=\"$slots.append || appendIcon || showClearIcon\"\n ref=\"append\"\n :class=\"ui.append()\"\n data-id=\"append\"\n >\n <RuiButton\n v-if=\"showClearIcon\"\n :class=\"[ui.clearButton(), { hidden: !showClearButton }]\"\n variant=\"text\"\n type=\"button\"\n icon\n color=\"error\"\n data-id=\"clear-btn\"\n tabindex=\"-1\"\n @click.stop=\"clearIconClicked()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n <slot\n v-if=\"$slots.append\"\n name=\"append\"\n />\n <div\n v-else-if=\"appendIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon :name=\"appendIcon\" />\n </div>\n </div>\n </div>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n :class=\"ui.details()\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCA,MAAM,aAAa,SAAmB,SAAA,YAAmB;EA0BzD,MAAM,OAAO;EASb,MAAM,YAAY,IAAa,KAAK;EACpC,MAAM,kBAAkB,IAAa,KAAK;EAE1C,MAAM,UAAU,eAA+B,SAAS;EACxD,MAAM,SAAS,eAA+B,QAAQ;EACtD,MAAM,WAAW,eAAoC,UAAU;EAC/D,MAAM,gBAAgB,eAAoC,eAAe;EAEzE,MAAM,EAAE,YAAY,SAAS,QAAQ;EACrC,MAAM,EAAE,QAAQ,mBAAmB,kBAAkB;EACrD,MAAM,EAAE,cAAc,gBAAgB,sBAAsB,SAAS,QAAQ,EAAE;EAC/E,MAAM,EAAE,UAAU,YAAY,aAAa,eAAe,wBAClD,QAAA,qBACA,QAAA,eACR;EAEA,MAAM,SAAS,eAAwB,MAAI,OAAO,KAAK,CAAC,CAAC,MAAI,UAAU,CAAC;EAExE,MAAM,gBAAgB,eAAwB,QAAA,aAAa,CAAC,CAAC,MAAI,UAAU,KAAK,CAAC,QAAA,YAAY,CAAC,QAAA,QAAQ;EAEtG,MAAM,qBAAqB,eAA8C;GACvE,IAAI,MAAI,QAAQ,GACd,OAAO;GACT,IAAI,MAAI,UAAU,GAChB,OAAO;GACT,IAAI,QAAA,aAAa,CAAC,MAAI,WAAW,GAC/B,OAAO,QAAA;EAEX,CAAC;EAED,MAAM,iBAAiB,eAA8C,MAAI,UAAU,KAAK,QAAA,KAAK;EAE7F,MAAM,KAAK,eAAkD,eAAe;GAC1E,SAAM,QAAA;GACN,OAAI,QAAA;GACJ,UAAO,QAAA;GACP,UAAO,QAAA;GACP,SAAS,MAAI,SAAS;GACtB,SAAS,MAAI,OAAO;GACpB,QAAQ,MAAI,MAAM;GAClB,SAAS,CAAC,QAAA;GACV,OAAO,MAAI,cAAc;GACzB,WAAW,MAAI,kBAAkB;GACjC,YAAY,MAAI,UAAU;GAC1B,WAAW,CAAC,CAAC,QAAA;EACf,CAAC,CAAC;EAEF,MAAM,eAAe,gBAAwC;GAC3D,eAAe,MAAI,YAAY;GAC/B,cAAc,MAAI,WAAW;EAC/B,EAAE;EAEF,MAAM,aAAa,eAAuB;GACxC,IAAI,CAAC,MAAI,MAAM,KAAK,CAAC,QAAA,OACnB,OAAO;GACT,OAAO,QAAA,WAAW,GAAG,QAAA,MAAM,MAAM,QAAA;EACnC,CAAC;EAED,MAAM,cAAc,eAA0D;GAC5E,MAAM,SAAS,OAAO,QAAA,SAAS;GAC/B,MAAM,MAAM,OAAO,QAAA,OAAO;GAC1B,MAAM,MAAM,OAAO,QAAA,OAAO;GAC1B,MAAM,QAAmD,EACvD,WAAW,GAAG,MAAM,SAAS,IAAK,KACpC;GACA,IAAI,KACF,MAAM,YAAY,GAAG,MAAM,SAAS,IAAK;GAE3C,OAAO;EACT,CAAC;EAED,SAAS,mBAAyB;GAChC,MAAI,YAAY,EAAE;GAClB,KAAK,aAAa;EACpB;EAEA,SAAS,mBAAmB,QAAiB,QAAuB;GAClE,IAAI,CAAC,QAAA,UACH;GAEF,MAAM,QAAQ,MAAI,QAAQ;GAC1B,MAAM,aAAa,UAAU,MAAI,UAAU;GAC3C,MAAM,aAAa,MAAI,aAAa;GACpC,IAAI,EAAE,SAAS,aACb;GAEF,eAAe;IACb,MAAM,cAAc,WAAW;IAC/B,MAAM,cAAc,MAAM;IAC1B,IAAI,SAAS,GAAG,KAAK,IAAI,aAAa,WAAW,IAAI,GAAG;IACxD,IAAI,UAAU,OAAO,SAAS,WAAW,QACvC,SAAS,GAAG,KAAK,IAAI,aAAa,WAAW,IAAI,GAAG;IAEtD,MAAM,MAAM,SAAS;GACvB,CAAC;EACH;EAEA,MAAM,UAAU,UAAU;GACxB,IAAI,OACF,MAAI,iBAAiB,IAAI;QAGzB,qBAAqB,MAAI,iBAAiB,KAAK,GAAG,GAAG;EAEzD,CAAC;EAED,eAAe,YAAY,oBAAoB,EAAE,UAAU,GAAG,CAAC;EAE/D,UAAU,kBAAkB;EAE5B,SAAa;GACX,aAAa,MAAI,QAAQ,CAAC,EAAE,MAAM;GAClC,SAAS;EACX,CAAC;;uBAIC,mBA4GM,OAAA,eAAA,mBA5GO,MAAA,YAAA,CAAY,CAACA,KAAAA,MAAM,CAAA,CAAA,GAAA,CAC9B,mBAmGM,OAAA;IAlGH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA;IACjB,OAAK,eAAE,MAAA,YAAA,CAAY;IACpB,WAAQ;IACP,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;IACrB,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;;IAGdC,KAAAA,OAAO,WAAW,QAAA,eAAA,UAAA,GAD1B,mBAgBM,OAAA;;cAdA;KAAJ,KAAI;KACH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA;KAClB,WAAQ;QAGAA,KAAAA,OAAO,UADf,WAGE,KAAA,QAAA,WAAA,EAAA,KAAA,EAAA,CAAA,IAEW,QAAA,eAAA,UAAA,GADb,mBAKM,OAAA;;KAHH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,KAAI,CAAA;QAEf,YAA+B,iBAAA,EAArB,MAAM,QAAA,YAAW,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;IAG/B,mBAyCM,OAAA,EAzCA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,aAAY,CAAA,EAAA,GAAA;KAElB,QAAA,YAAA,UAAA,GADR,mBASE,YAAA;;eAPI;MAAJ,KAAI;MACH,OAAO,WAAA;MACP,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,cAAa,CAAA;MACvB,OAAK,eAAE,MAAA,WAAA,CAAW;MACnB,eAAY;MACZ,UAAA;MACA,UAAA;;oBAEF,mBAUE,YAVF,WAUE;eATI;MAAJ,KAAI;8EACe,QAAA;MAClB,aAAa,QAAA,eAAW;MACxB,OAAO,MAAA,EAAA,CAAE,CAAC,SAAQ;MAClB,OAAO,MAAA,WAAA;MACP,UAAU,QAAA;MACV,UAAU,QAAA;MACV,gBAAc,MAAA,QAAA;QACP,MAAA,eAAA,CAAe,CAACD,KAAAA,MAAM,CAAA,GAAA,MAAA,IAAA,UAAA,GAAA,CAAA,CAAA,YAPrB,WAAA,KAAU,CAAA,CAAA;KASrB,mBAUQ,SAAA,EAVA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA,EAAA,GAAA,CACrB,mBAQO,QAAA,EARA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,UAAS,CAAA,EAAA,GAAA,CAAA,gBAAA,gBACrB,QAAA,KAAK,IAAG,KACX,CAAA,GACQ,QAAA,YAAA,UAAA,GADR,mBAKO,QAAA;;MAHJ,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,SAAQ,CAAA;QACpB,OAED,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA;KAII,QAAA,YAAO,cAAA,UAAA,GADf,mBAOW,YAAA;;MALR,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,SAAQ,CAAA;SAEnB,mBAES,UAAA,EAFA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,OAAM,CAAA,EAAA,GAAA,gBACpB,MAAA,UAAA,CAAU,GAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;;IAKXC,KAAAA,OAAO,UAAU,QAAA,cAAc,MAAA,aAAA,KAAA,UAAA,GADvC,mBAgCM,OAAA;;cA9BA;KAAJ,KAAI;KACH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,OAAM,CAAA;KACjB,WAAQ;QAGA,MAAA,aAAA,KAAA,UAAA,GADR,YAeY,mBAAA;;KAbT,OAAK,eAAA,CAAG,MAAA,EAAA,CAAE,CAAC,YAAW,GAAA,EAAA,QAAA,CAAe,MAAA,eAAA,EAAe,CAAA,CAAA;KACrD,SAAQ;KACR,MAAK;KACL,MAAA;KACA,OAAM;KACN,WAAQ;KACR,UAAS;KACR,SAAK,OAAA,OAAA,OAAA,KAAA,eAAA,WAAO,iBAAgB,GAAA,CAAA,MAAA,CAAA;;4BAK3B,CAHF,YAGE,iBAAA;MAFA,MAAK;MACL,MAAK;;;sDAIDA,KAAAA,OAAO,SADf,WAGE,KAAA,QAAA,UAAA,EAAA,KAAA,EAAA,CAAA,IAEW,QAAA,cAAA,UAAA,GADb,mBAKM,OAAA;;KAHH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,KAAI,CAAA;QAEf,YAA8B,iBAAA,EAApB,MAAM,QAAA,WAAU,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;YAKvB,QAAA,eAAA,UAAA,GADT,YAME,2BAAA;;IAJC,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA;IACjB,kBAAgB,QAAA;IAChB,oBAAkB,QAAA;IAClB,MAAM,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"text-area-styles.js","names":[],"sources":["../../../../src/components/forms/text-area/text-area-styles.ts"],"sourcesContent":["import { textInputBase, type TextInputVariant, underlinePseudo } from '@/components/forms/text-input-styles';\nimport { tv } from '@/utils/tv';\n\nexport type TextAreaVariant = TextInputVariant;\n\n/**\n * tv() styles for RuiTextArea. Extends textInputBase for shared\n * fieldset/legend/label/validation core.\n *\n * IMPORTANT: tv() extend does NOT deduplicate conflicting Tailwind classes\n * between base and extension. Never put a class in the base slot that a\n * variant needs to override — put variant-specific classes in the variants.\n */\nexport const textAreaStyles = tv({\n extend: textInputBase,\n slots: {\n fieldset: '',\n legend: '',\n wrapper: 'relative w-full min-w-[12.5rem] flex items-start rounded bg-white dark:bg-transparent',\n inputWrapper: 'flex flex-1 overflow-hidden',\n textarea: [\n 'peer leading-6 text-rui-text w-full bg-transparent pb-2 pt-0',\n 'outline-0 outline-none',\n 'placeholder:opacity-0 focus:placeholder:opacity-100',\n ].join(' '),\n textareaSizer: 'invisible absolute top-0 left-0 w-full h-0 -z-10 pointer-events-none',\n label: [\n 'left-0 text-[1rem] pointer-events-none',\n 'absolute top-0 h-full w-full select-none',\n '[padding-left:calc(var(--x-padding,0px)+var(--prepend-w,0px))]',\n '[padding-right:calc(var(--x-padding,0px)+var(--append-w,0px))]',\n ].join(' '),\n labelText: 'truncate transition-all duration-75',\n prepend: 'flex items-center gap-1 shrink-0 mt-4 mx-3',\n append: 'flex items-center gap-1 shrink-0 absolute right-0 mt-4 mx-3',\n icon: 'text-black/[0.54] dark:text-white/[0.56]',\n details: 'pt-1 px-4',\n required: 'text-rui-error',\n clearButton: '!p-2',\n },\n variants: {\n variant: {\n default: {\n inputWrapper: 'pt-4',\n textarea: '[padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n label: `flex leading-[3.2] ${underlinePseudo}`,\n },\n filled: {\n inputWrapper: 'pt-4',\n textarea: 'px-4 [padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n textareaSizer: 'px-4',\n label: `flex leading-[3.2] [--x-padding:1rem] rounded-t bg-black/[0.06] dark:bg-white/[0.09] ${underlinePseudo}`,\n prepend: '!mr-0',\n append: '!ml-0',\n },\n outlined: {\n inputWrapper: '!overflow-visible pt-4',\n textarea: 'px-4 [padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n textareaSizer: 'px-4',\n label: [\n 'flex leading-[3.2] [--x-padding:1rem]',\n 'border-0 border-transparent',\n 'after:content-none',\n ].join(' '),\n fieldset: '!mt-0 !h-full',\n prepend: '!mr-0',\n append: '!ml-0',\n },\n },\n dense: {\n true: {\n inputWrapper: '!pt-2',\n textarea: 'py-1',\n textareaSizer: 'py-1',\n },\n },\n noResize: {\n true: {\n textarea: 'resize-none',\n },\n false: {\n textarea: 'resize-y',\n },\n },\n hovered: {\n true: {\n label: 'border-black dark:border-white',\n },\n },\n focused: {\n true: {},\n },\n active: {\n true: {\n label: [\n 'text-[0.75rem] leading-tight',\n '[padding-left:var(--x-padding,0px)]',\n '[padding-right:var(--x-padding,0px)]',\n ].join(' '),\n },\n },\n noLabel: {\n true: {},\n },\n showLabel: {\n true: {},\n },\n textColor: {\n primary: { prepend: 'text-rui-primary', append: 'text-rui-primary', textarea: 'text-rui-primary', icon: 'text-rui-primary' },\n secondary: { prepend: 'text-rui-secondary', append: 'text-rui-secondary', textarea: 'text-rui-secondary', icon: 'text-rui-secondary' },\n error: { prepend: 'text-rui-error', append: 'text-rui-error', textarea: 'text-rui-error', icon: 'text-rui-error' },\n warning: { prepend: 'text-rui-warning', append: 'text-rui-warning', textarea: 'text-rui-warning', icon: 'text-rui-warning' },\n info: { prepend: 'text-rui-info', append: 'text-rui-info', textarea: 'text-rui-info', icon: 'text-rui-info' },\n success: { prepend: 'text-rui-success', append: 'text-rui-success', textarea: 'text-rui-success', icon: 'text-rui-success' },\n },\n validation: {\n error: {\n textarea: '!border-rui-error',\n label: '!text-rui-error !after:border-rui-error',\n },\n success: {\n textarea: '!border-rui-success',\n label: '!text-rui-success !after:border-rui-success',\n },\n },\n },\n compoundVariants: [\n // --- Default variant ---\n { variant: 'default', focused: true, class: { label: 'after:scale-x-100' } },\n\n // --- Filled variant ---\n { variant: 'filled', focused: true, class: { label: 'bg-black/[0.09] dark:bg-white/[0.13]' } },\n { variant: 'filled', noLabel: true, class: { textarea: 'py-4', textareaSizer: 'py-4' } },\n { variant: 'filled', noLabel: true, dense: true, class: { textarea: 'py-3', textareaSizer: 'py-3' } },\n\n // --- Outlined variant ---\n { variant: 'outlined', active: true, class: {\n textarea: 'border-t-transparent',\n // Same rationale as RuiTextField's outlined+active rule: a percentage\n // translate gets recomputed against the *current* label height, which\n // jumps the moment !h-auto is removed on blur, producing a visible\n // upward overshoot before the transition settles. Anchor in rem.\n label: '!h-auto -translate-y-[0.5rem] pl-4',\n } },\n { variant: 'outlined', dense: true, class: { label: 'leading-[2.5]' } },\n // Re-assert `leading-tight` for outlined+dense+active. The dense rule\n // above sets `leading-[2.5]` which twMerge keeps as the winning leading,\n // inflating the floated label's line-box and pushing its visual centre\n // below the fieldset border.\n { variant: 'outlined', dense: true, active: true, class: { label: '!leading-tight' } },\n\n // --- Focus label color (per color) ---\n { focused: true, color: 'primary', class: { label: 'text-rui-primary' } },\n { focused: true, color: 'secondary', class: { label: 'text-rui-secondary' } },\n { focused: true, color: 'error', class: { label: 'text-rui-error' } },\n { focused: true, color: 'warning', class: { label: 'text-rui-warning' } },\n { focused: true, color: 'info', class: { label: 'text-rui-info' } },\n { focused: true, color: 'success', class: { label: 'text-rui-success' } },\n\n // --- Label after border color (always applied when color set) ---\n { color: 'primary', class: { label: 'after:border-rui-primary' } },\n { color: 'secondary', class: { label: 'after:border-rui-secondary' } },\n { color: 'error', class: { label: 'after:border-rui-error' } },\n { color: 'warning', class: { label: 'after:border-rui-warning' } },\n { color: 'info', class: { label: 'after:border-rui-info' } },\n { color: 'success', class: { label: 'after:border-rui-success' } },\n ],\n defaultVariants: {\n variant: 'default',\n noResize: false,\n },\n});\n"],"mappings":";;;;;;;;;;;AAaA,IAAa,iBAAiB,GAAG;CAC/B,QAAQ;CACR,OAAO;EACL,UAAU;EACV,QAAQ;EACR,SAAS;EACT,cAAc;EACd,UAAU;GACR;GACA;GACA;GACD,CAAC,KAAK,IAAI;EACX,eAAe;EACf,OAAO;GACL;GACA;GACA;GACA;GACD,CAAC,KAAK,IAAI;EACX,WAAW;EACX,SAAS;EACT,QAAQ;EACR,MAAM;EACN,SAAS;EACT,UAAU;EACV,aAAa;EACd;CACD,UAAU;EACR,SAAS;GACP,SAAS;IACP,cAAc;IACd,UAAU;IACV,OAAO,sBAAsB;IAC9B;GACD,QAAQ;IACN,cAAc;IACd,UAAU;IACV,eAAe;IACf,OAAO,wFAAwF;IAC/F,SAAS;IACT,QAAQ;IACT;GACD,UAAU;IACR,cAAc;IACd,UAAU;IACV,eAAe;IACf,OAAO;KACL;KACA;KACA;KACD,CAAC,KAAK,IAAI;IACX,UAAU;IACV,SAAS;IACT,QAAQ;IACT;GACF;EACD,OAAO,EACL,MAAM;GACJ,cAAc;GACd,UAAU;GACV,eAAe;GAChB,EACF;EACD,UAAU;GACR,MAAM,EACJ,UAAU,eACX;GACD,OAAO,EACL,UAAU,YACX;GACF;EACD,SAAS,EACP,MAAM,EACJ,OAAO,kCACR,EACF;EACD,SAAS,EACP,MAAM,EAAE,EACT;EACD,QAAQ,EACN,MAAM,EACJ,OAAO;GACL;GACA;GACA;GACD,CAAC,KAAK,IAAI,EACZ,EACF;EACD,SAAS,EACP,MAAM,EAAE,EACT;EACD,WAAW,EACT,MAAM,EAAE,EACT;EACD,WAAW;GACT,SAAS;IAAE,SAAS;IAAoB,QAAQ;IAAoB,UAAU;IAAoB,MAAM;IAAoB;GAC5H,WAAW;IAAE,SAAS;IAAsB,QAAQ;IAAsB,UAAU;IAAsB,MAAM;IAAsB;GACtI,OAAO;IAAE,SAAS;IAAkB,QAAQ;IAAkB,UAAU;IAAkB,MAAM;IAAkB;GAClH,SAAS;IAAE,SAAS;IAAoB,QAAQ;IAAoB,UAAU;IAAoB,MAAM;IAAoB;GAC5H,MAAM;IAAE,SAAS;IAAiB,QAAQ;IAAiB,UAAU;IAAiB,MAAM;IAAiB;GAC7G,SAAS;IAAE,SAAS;IAAoB,QAAQ;IAAoB,UAAU;IAAoB,MAAM;IAAoB;GAC7H;EACD,YAAY;GACV,OAAO;IACL,UAAU;IACV,OAAO;IACR;GACD,SAAS;IACP,UAAU;IACV,OAAO;IACR;GACF;EACF;CACD,kBAAkB;EAEhB;GAAE,SAAS;GAAW,SAAS;GAAM,OAAO,EAAE,OAAO,qBAAqB;GAAE;EAG5E;GAAE,SAAS;GAAU,SAAS;GAAM,OAAO,EAAE,OAAO,wCAAwC;GAAE;EAC9F;GAAE,SAAS;GAAU,SAAS;GAAM,OAAO;IAAE,UAAU;IAAQ,eAAe;IAAQ;GAAE;EACxF;GAAE,SAAS;GAAU,SAAS;GAAM,OAAO;GAAM,OAAO;IAAE,UAAU;IAAQ,eAAe;IAAQ;GAAE;EAGrG;GAAE,SAAS;GAAY,QAAQ;GAAM,OAAO;IAC1C,UAAU;IAKV,OAAO;IACR;GAAE;EACH;GAAE,SAAS;GAAY,OAAO;GAAM,OAAO,EAAE,OAAO,iBAAiB;GAAE;EAKvE;GAAE,SAAS;GAAY,OAAO;GAAM,QAAQ;GAAM,OAAO,EAAE,OAAO,kBAAkB;GAAE;EAGtF;GAAE,SAAS;GAAM,OAAO;GAAW,OAAO,EAAE,OAAO,oBAAoB;GAAE;EACzE;GAAE,SAAS;GAAM,OAAO;GAAa,OAAO,EAAE,OAAO,sBAAsB;GAAE;EAC7E;GAAE,SAAS;GAAM,OAAO;GAAS,OAAO,EAAE,OAAO,kBAAkB;GAAE;EACrE;GAAE,SAAS;GAAM,OAAO;GAAW,OAAO,EAAE,OAAO,oBAAoB;GAAE;EACzE;GAAE,SAAS;GAAM,OAAO;GAAQ,OAAO,EAAE,OAAO,iBAAiB;GAAE;EACnE;GAAE,SAAS;GAAM,OAAO;GAAW,OAAO,EAAE,OAAO,oBAAoB;GAAE;EAGzE;GAAE,OAAO;GAAW,OAAO,EAAE,OAAO,4BAA4B;GAAE;EAClE;GAAE,OAAO;GAAa,OAAO,EAAE,OAAO,8BAA8B;GAAE;EACtE;GAAE,OAAO;GAAS,OAAO,EAAE,OAAO,0BAA0B;GAAE;EAC9D;GAAE,OAAO;GAAW,OAAO,EAAE,OAAO,4BAA4B;GAAE;EAClE;GAAE,OAAO;GAAQ,OAAO,EAAE,OAAO,yBAAyB;GAAE;EAC5D;GAAE,OAAO;GAAW,OAAO,EAAE,OAAO,4BAA4B;GAAE;EACnE;CACD,iBAAiB;EACf,SAAS;EACT,UAAU;EACX;CACF,CAAC"}
1
+ {"version":3,"file":"text-area-styles.js","names":[],"sources":["../../../../src/components/forms/text-area/text-area-styles.ts"],"sourcesContent":["import { textInputBase, type TextInputVariant, underlinePseudo } from '@/components/forms/text-input-styles';\nimport { tv } from '@/utils/tv';\n\nexport type TextAreaVariant = TextInputVariant;\n\n/**\n * tv() styles for RuiTextArea. Extends textInputBase for shared\n * fieldset/legend/label/validation core.\n *\n * IMPORTANT: tv() extend does NOT deduplicate conflicting Tailwind classes\n * between base and extension. Never put a class in the base slot that a\n * variant needs to override — put variant-specific classes in the variants.\n */\nexport const textAreaStyles = tv({\n extend: textInputBase,\n slots: {\n fieldset: '',\n legend: '',\n wrapper: 'relative w-full min-w-[12.5rem] flex items-start rounded bg-white dark:bg-transparent',\n inputWrapper: 'flex flex-1 overflow-hidden',\n textarea: [\n 'peer leading-6 text-rui-text w-full bg-transparent pb-2 pt-0',\n 'outline-0 outline-none',\n 'placeholder:opacity-0 focus:placeholder:opacity-100',\n ].join(' '),\n textareaSizer: 'invisible absolute top-0 left-0 w-full h-0 -z-10 pointer-events-none',\n label: [\n 'left-0 text-[1rem] pointer-events-none',\n 'absolute top-0 h-full w-full select-none',\n '[padding-left:calc(var(--x-padding,0px)+var(--prepend-w,0px))]',\n '[padding-right:calc(var(--x-padding,0px)+var(--append-w,0px))]',\n ].join(' '),\n labelText: 'truncate transition-all duration-75',\n prepend: 'flex items-center gap-1 shrink-0 mt-4 mx-3',\n append: 'flex items-center gap-1 shrink-0 absolute right-0 mt-4 mx-3',\n icon: 'text-black/[0.54] dark:text-white/[0.56]',\n details: 'pt-1 px-4',\n required: 'text-rui-error',\n clearButton: '!p-2',\n },\n variants: {\n variant: {\n default: {\n inputWrapper: 'pt-4',\n textarea: '[padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n label: `flex leading-[3.2] ${underlinePseudo}`,\n },\n filled: {\n inputWrapper: 'pt-4',\n textarea: 'px-4 [padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n textareaSizer: 'px-4',\n label: `flex leading-[3.2] [--x-padding:1rem] rounded-t bg-black/[0.06] dark:bg-white/[0.09] ${underlinePseudo}`,\n prepend: '!mr-0',\n append: '!ml-0',\n },\n outlined: {\n inputWrapper: '!overflow-visible pt-4',\n textarea: 'px-4 [padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n textareaSizer: 'px-4',\n label: [\n 'flex leading-[3.2] [--x-padding:1rem]',\n 'border-0 border-transparent',\n 'after:content-none',\n ].join(' '),\n fieldset: '!mt-0 !h-full',\n prepend: '!mr-0',\n append: '!ml-0',\n },\n },\n dense: {\n true: {\n inputWrapper: '!pt-2',\n textarea: 'py-1',\n textareaSizer: 'py-1',\n },\n },\n noResize: {\n true: {\n textarea: 'resize-none',\n },\n false: {\n textarea: 'resize-y',\n },\n },\n hovered: {\n true: {\n label: 'border-black dark:border-white',\n },\n },\n focused: {\n true: {},\n },\n active: {\n true: {\n label: [\n 'text-[0.75rem] leading-tight',\n '[padding-left:var(--x-padding,0px)]',\n '[padding-right:var(--x-padding,0px)]',\n ].join(' '),\n },\n },\n noLabel: {\n true: {},\n },\n showLabel: {\n true: {},\n },\n textColor: {\n primary: { prepend: 'text-rui-primary', append: 'text-rui-primary', textarea: 'text-rui-primary', icon: 'text-rui-primary' },\n secondary: { prepend: 'text-rui-secondary', append: 'text-rui-secondary', textarea: 'text-rui-secondary', icon: 'text-rui-secondary' },\n error: { prepend: 'text-rui-error', append: 'text-rui-error', textarea: 'text-rui-error', icon: 'text-rui-error' },\n warning: { prepend: 'text-rui-warning', append: 'text-rui-warning', textarea: 'text-rui-warning', icon: 'text-rui-warning' },\n info: { prepend: 'text-rui-info', append: 'text-rui-info', textarea: 'text-rui-info', icon: 'text-rui-info' },\n success: { prepend: 'text-rui-success', append: 'text-rui-success', textarea: 'text-rui-success', icon: 'text-rui-success' },\n },\n validation: {\n error: {\n textarea: '!border-rui-error',\n label: '!text-rui-error !after:border-rui-error',\n },\n success: {\n textarea: '!border-rui-success',\n label: '!text-rui-success !after:border-rui-success',\n },\n },\n },\n compoundVariants: [\n // --- Default variant ---\n { variant: 'default', focused: true, class: { label: 'after:scale-x-100' } },\n\n // --- Filled variant ---\n { variant: 'filled', focused: true, class: { label: 'bg-black/[0.09] dark:bg-white/[0.13]' } },\n { variant: 'filled', noLabel: true, class: { textarea: 'py-4', textareaSizer: 'py-4' } },\n { variant: 'filled', noLabel: true, dense: true, class: { textarea: 'py-3', textareaSizer: 'py-3' } },\n\n // --- Outlined variant ---\n { variant: 'outlined', active: true, class: {\n textarea: 'border-t-transparent',\n // Same rationale as RuiTextField's outlined+active rule: a percentage\n // translate gets recomputed against the *current* label height, which\n // jumps the moment !h-auto is removed on blur, producing a visible\n // upward overshoot before the transition settles. Anchor in rem.\n label: '!h-auto -translate-y-[0.5rem] pl-4',\n } },\n { variant: 'outlined', dense: true, class: { label: 'leading-[2.5]' } },\n // Re-assert `leading-tight` for outlined+dense+active. The dense rule\n // above sets `leading-[2.5]` which twMerge keeps as the winning leading,\n // inflating the floated label's line-box and pushing its visual centre\n // below the fieldset border.\n { variant: 'outlined', dense: true, active: true, class: { label: '!leading-tight' } },\n\n // --- Focus label color (per color) ---\n { focused: true, color: 'primary', class: { label: 'text-rui-primary' } },\n { focused: true, color: 'secondary', class: { label: 'text-rui-secondary' } },\n { focused: true, color: 'error', class: { label: 'text-rui-error' } },\n { focused: true, color: 'warning', class: { label: 'text-rui-warning' } },\n { focused: true, color: 'info', class: { label: 'text-rui-info' } },\n { focused: true, color: 'success', class: { label: 'text-rui-success' } },\n\n // --- Label after border color (always applied when color set) ---\n { color: 'primary', class: { label: 'after:border-rui-primary' } },\n { color: 'secondary', class: { label: 'after:border-rui-secondary' } },\n { color: 'error', class: { label: 'after:border-rui-error' } },\n { color: 'warning', class: { label: 'after:border-rui-warning' } },\n { color: 'info', class: { label: 'after:border-rui-info' } },\n { color: 'success', class: { label: 'after:border-rui-success' } },\n ],\n defaultVariants: {\n variant: 'default',\n noResize: false,\n },\n});\n"],"mappings":"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"}
@@ -17,11 +17,11 @@ var _hoisted_1 = [
17
17
  "readonly",
18
18
  "aria-invalid"
19
19
  ];
20
- var RuiTextField_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
20
+ var RuiTextField_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
21
21
  name: "RuiTextField",
22
22
  inheritAttrs: false,
23
23
  __name: "RuiTextField",
24
- props: /* @__PURE__ */ mergeModels({
24
+ props: /*@__PURE__*/ mergeModels({
25
25
  label: { default: "" },
26
26
  placeholder: { default: "" },
27
27
  disabled: {
@@ -60,7 +60,7 @@ var RuiTextField_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
60
60
  "modelValue": { required: true },
61
61
  "modelModifiers": {}
62
62
  }),
63
- emits: /* @__PURE__ */ mergeModels([
63
+ emits: /*@__PURE__*/ mergeModels([
64
64
  "focus-input",
65
65
  "blur",
66
66
  "remove",
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTextField.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../../src/components/forms/text-field/RuiTextField.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { textFieldStyles, type TextFieldVariant } from '@/components/forms/text-field/text-field-styles';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { usePrependAppendWidth } from '@/composables/forms/use-prepend-append-width';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface TextFieldProps {\n label?: string;\n placeholder?: string;\n disabled?: boolean;\n variant?: TextFieldVariant;\n color?: ContextColorsType;\n textColor?: ContextColorsType;\n dense?: boolean;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n prependIcon?: RuiIcons;\n appendIcon?: RuiIcons;\n readonly?: boolean;\n clearable?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiTextField',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<string>({ required: true });\n\nconst {\n label = '',\n placeholder = '',\n disabled = false,\n variant = 'default',\n color = undefined,\n textColor = undefined,\n dense = false,\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n prependIcon = undefined,\n appendIcon = undefined,\n readonly = false,\n clearable = false,\n required = false,\n} = defineProps<TextFieldProps>();\n\nconst emit = defineEmits<{\n 'focus-input': [event: Event];\n 'blur': [event: Event];\n 'remove': [value: unknown];\n 'clear': [];\n}>();\n\ndefineSlots<{\n prepend?: () => any;\n append?: () => any;\n}>();\n\nconst isHovered = ref<boolean>(false);\nconst showClearButton = ref<boolean>(false);\n\nconst prepend = useTemplateRef<HTMLDivElement>('prepend');\nconst append = useTemplateRef<HTMLDivElement>('append');\nconst inputRef = useTemplateRef<HTMLInputElement>('inputRef');\n\nconst { focused } = useFocus(inputRef);\nconst { create: delayClearHide } = useTimeoutManager();\nconst { prependWidth, appendWidth } = usePrependAppendWidth(prepend, append);\nconst { hasError, hasSuccess, hasMessages, validation } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst active = computed<boolean>(() => get(focused) || !!get(modelValue));\n\nconst showClearIcon = computed<boolean>(() => clearable && !!get(modelValue) && !disabled && !readonly);\n\nconst effectiveTextColor = computed<ContextColorsType | undefined>(() => {\n if (get(hasError))\n return 'error';\n if (get(hasSuccess))\n return 'success';\n if (textColor && !get(hasMessages))\n return textColor;\n return undefined;\n});\n\nconst effectiveColor = computed<ContextColorsType | undefined>(() => get(validation) ?? color);\n\nconst ui = computed<ReturnType<typeof textFieldStyles>>(() => textFieldStyles({\n variant,\n dense,\n disabled,\n hovered: get(isHovered),\n focused: get(focused),\n active: get(active),\n noLabel: !label,\n color: get(effectiveColor),\n textColor: get(effectiveTextColor),\n validation: get(validation),\n showLabel: !!label,\n}));\n\nconst labelStyle = computed<Record<string, string>>(() => ({\n '--prepend-w': get(prependWidth),\n '--append-w': get(appendWidth),\n}));\n\nconst legendText = computed<string>(() => {\n if (!get(active) || !label)\n return '';\n return required ? `${label} ﹡` : label;\n});\n\nfunction input(event: Event): void {\n const target = event.target;\n if (target instanceof HTMLInputElement) {\n set(modelValue, target.value);\n }\n}\n\nfunction clearIconClicked(): void {\n set(modelValue, '');\n emit('clear');\n}\n\nwatch(focused, (value) => {\n if (value) {\n set(showClearButton, true);\n }\n else {\n delayClearHide(() => set(showClearButton, false), 500);\n }\n});\n\ndefineExpose({\n setSelectionRange: (start: number, end: number) => {\n get(inputRef)?.setSelectionRange(start, end);\n },\n focus: () => get(inputRef)?.focus(),\n element: inputRef,\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <div\n :class=\"ui.wrapper()\"\n data-id=\"wrapper\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n >\n <div\n v-if=\"$slots.prepend || prependIcon\"\n ref=\"prepend\"\n :class=\"ui.prepend()\"\n data-id=\"prepend\"\n >\n <slot\n v-if=\"$slots.prepend\"\n name=\"prepend\"\n />\n <div\n v-else-if=\"prependIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon :name=\"prependIcon\" />\n </div>\n </div>\n <div\n :class=\"ui.inputWrapper()\"\n @click=\"emit('focus-input', $event)\"\n >\n <input\n ref=\"inputRef\"\n :value=\"modelValue\"\n :placeholder=\"placeholder || ' '\"\n :class=\"ui.input()\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :aria-invalid=\"hasError\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @input=\"input($event)\"\n @blur=\"emit('blur', $event)\"\n @remove=\"emit('remove', $event)\"\n />\n <label\n :class=\"ui.label()\"\n :style=\"labelStyle\"\n >\n <span :class=\"ui.labelText()\">\n {{ label }}\n <span\n v-if=\"required\"\n :class=\"ui.required()\"\n >\n ﹡\n </span>\n </span>\n </label>\n <fieldset\n v-if=\"variant === 'outlined'\"\n :class=\"ui.fieldset()\"\n >\n <legend :class=\"ui.legend()\">\n {{ legendText }}\n </legend>\n </fieldset>\n </div>\n <div\n v-if=\"$slots.append || appendIcon || showClearIcon\"\n ref=\"append\"\n :class=\"ui.append()\"\n data-id=\"append\"\n >\n <RuiButton\n v-if=\"showClearIcon\"\n :class=\"[ui.clearButton(), { hidden: !showClearButton }]\"\n variant=\"text\"\n type=\"button\"\n icon\n color=\"error\"\n data-id=\"clear-btn\"\n tabindex=\"-1\"\n @click.stop=\"clearIconClicked()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n <slot\n v-if=\"$slots.append\"\n name=\"append\"\n />\n <div\n v-else-if=\"appendIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon :name=\"appendIcon\" />\n </div>\n </div>\n </div>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n :class=\"ui.details()\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiTextField.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../../src/components/forms/text-field/RuiTextField.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { textFieldStyles, type TextFieldVariant } from '@/components/forms/text-field/text-field-styles';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { usePrependAppendWidth } from '@/composables/forms/use-prepend-append-width';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface TextFieldProps {\n label?: string;\n placeholder?: string;\n disabled?: boolean;\n variant?: TextFieldVariant;\n color?: ContextColorsType;\n textColor?: ContextColorsType;\n dense?: boolean;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n prependIcon?: RuiIcons;\n appendIcon?: RuiIcons;\n readonly?: boolean;\n clearable?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiTextField',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<string>({ required: true });\n\nconst {\n label = '',\n placeholder = '',\n disabled = false,\n variant = 'default',\n color = undefined,\n textColor = undefined,\n dense = false,\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n prependIcon = undefined,\n appendIcon = undefined,\n readonly = false,\n clearable = false,\n required = false,\n} = defineProps<TextFieldProps>();\n\nconst emit = defineEmits<{\n 'focus-input': [event: Event];\n 'blur': [event: Event];\n 'remove': [value: unknown];\n 'clear': [];\n}>();\n\ndefineSlots<{\n prepend?: () => any;\n append?: () => any;\n}>();\n\nconst isHovered = ref<boolean>(false);\nconst showClearButton = ref<boolean>(false);\n\nconst prepend = useTemplateRef<HTMLDivElement>('prepend');\nconst append = useTemplateRef<HTMLDivElement>('append');\nconst inputRef = useTemplateRef<HTMLInputElement>('inputRef');\n\nconst { focused } = useFocus(inputRef);\nconst { create: delayClearHide } = useTimeoutManager();\nconst { prependWidth, appendWidth } = usePrependAppendWidth(prepend, append);\nconst { hasError, hasSuccess, hasMessages, validation } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst active = computed<boolean>(() => get(focused) || !!get(modelValue));\n\nconst showClearIcon = computed<boolean>(() => clearable && !!get(modelValue) && !disabled && !readonly);\n\nconst effectiveTextColor = computed<ContextColorsType | undefined>(() => {\n if (get(hasError))\n return 'error';\n if (get(hasSuccess))\n return 'success';\n if (textColor && !get(hasMessages))\n return textColor;\n return undefined;\n});\n\nconst effectiveColor = computed<ContextColorsType | undefined>(() => get(validation) ?? color);\n\nconst ui = computed<ReturnType<typeof textFieldStyles>>(() => textFieldStyles({\n variant,\n dense,\n disabled,\n hovered: get(isHovered),\n focused: get(focused),\n active: get(active),\n noLabel: !label,\n color: get(effectiveColor),\n textColor: get(effectiveTextColor),\n validation: get(validation),\n showLabel: !!label,\n}));\n\nconst labelStyle = computed<Record<string, string>>(() => ({\n '--prepend-w': get(prependWidth),\n '--append-w': get(appendWidth),\n}));\n\nconst legendText = computed<string>(() => {\n if (!get(active) || !label)\n return '';\n return required ? `${label} ﹡` : label;\n});\n\nfunction input(event: Event): void {\n const target = event.target;\n if (target instanceof HTMLInputElement) {\n set(modelValue, target.value);\n }\n}\n\nfunction clearIconClicked(): void {\n set(modelValue, '');\n emit('clear');\n}\n\nwatch(focused, (value) => {\n if (value) {\n set(showClearButton, true);\n }\n else {\n delayClearHide(() => set(showClearButton, false), 500);\n }\n});\n\ndefineExpose({\n setSelectionRange: (start: number, end: number) => {\n get(inputRef)?.setSelectionRange(start, end);\n },\n focus: () => get(inputRef)?.focus(),\n element: inputRef,\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <div\n :class=\"ui.wrapper()\"\n data-id=\"wrapper\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n >\n <div\n v-if=\"$slots.prepend || prependIcon\"\n ref=\"prepend\"\n :class=\"ui.prepend()\"\n data-id=\"prepend\"\n >\n <slot\n v-if=\"$slots.prepend\"\n name=\"prepend\"\n />\n <div\n v-else-if=\"prependIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon :name=\"prependIcon\" />\n </div>\n </div>\n <div\n :class=\"ui.inputWrapper()\"\n @click=\"emit('focus-input', $event)\"\n >\n <input\n ref=\"inputRef\"\n :value=\"modelValue\"\n :placeholder=\"placeholder || ' '\"\n :class=\"ui.input()\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :aria-invalid=\"hasError\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @input=\"input($event)\"\n @blur=\"emit('blur', $event)\"\n @remove=\"emit('remove', $event)\"\n />\n <label\n :class=\"ui.label()\"\n :style=\"labelStyle\"\n >\n <span :class=\"ui.labelText()\">\n {{ label }}\n <span\n v-if=\"required\"\n :class=\"ui.required()\"\n >\n ﹡\n </span>\n </span>\n </label>\n <fieldset\n v-if=\"variant === 'outlined'\"\n :class=\"ui.fieldset()\"\n >\n <legend :class=\"ui.legend()\">\n {{ legendText }}\n </legend>\n </fieldset>\n </div>\n <div\n v-if=\"$slots.append || appendIcon || showClearIcon\"\n ref=\"append\"\n :class=\"ui.append()\"\n data-id=\"append\"\n >\n <RuiButton\n v-if=\"showClearIcon\"\n :class=\"[ui.clearButton(), { hidden: !showClearButton }]\"\n variant=\"text\"\n type=\"button\"\n icon\n color=\"error\"\n data-id=\"clear-btn\"\n tabindex=\"-1\"\n @click.stop=\"clearIconClicked()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n <slot\n v-if=\"$slots.append\"\n name=\"append\"\n />\n <div\n v-else-if=\"appendIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon :name=\"appendIcon\" />\n </div>\n </div>\n </div>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n :class=\"ui.details()\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCA,MAAM,aAAa,SAAmB,SAAA,YAAmB;EAqBzD,MAAM,OAAO;EAYb,MAAM,YAAY,IAAa,KAAK;EACpC,MAAM,kBAAkB,IAAa,KAAK;EAE1C,MAAM,UAAU,eAA+B,SAAS;EACxD,MAAM,SAAS,eAA+B,QAAQ;EACtD,MAAM,WAAW,eAAiC,UAAU;EAE5D,MAAM,EAAE,YAAY,SAAS,QAAQ;EACrC,MAAM,EAAE,QAAQ,mBAAmB,kBAAkB;EACrD,MAAM,EAAE,cAAc,gBAAgB,sBAAsB,SAAS,MAAM;EAC3E,MAAM,EAAE,UAAU,YAAY,aAAa,eAAe,wBAClD,QAAA,qBACA,QAAA,eACR;EAEA,MAAM,SAAS,eAAwB,MAAI,OAAO,KAAK,CAAC,CAAC,MAAI,UAAU,CAAC;EAExE,MAAM,gBAAgB,eAAwB,QAAA,aAAa,CAAC,CAAC,MAAI,UAAU,KAAK,CAAC,QAAA,YAAY,CAAC,QAAA,QAAQ;EAEtG,MAAM,qBAAqB,eAA8C;GACvE,IAAI,MAAI,QAAQ,GACd,OAAO;GACT,IAAI,MAAI,UAAU,GAChB,OAAO;GACT,IAAI,QAAA,aAAa,CAAC,MAAI,WAAW,GAC/B,OAAO,QAAA;EAEX,CAAC;EAED,MAAM,iBAAiB,eAA8C,MAAI,UAAU,KAAK,QAAA,KAAK;EAE7F,MAAM,KAAK,eAAmD,gBAAgB;GAC5E,SAAM,QAAA;GACN,OAAI,QAAA;GACJ,UAAO,QAAA;GACP,SAAS,MAAI,SAAS;GACtB,SAAS,MAAI,OAAO;GACpB,QAAQ,MAAI,MAAM;GAClB,SAAS,CAAC,QAAA;GACV,OAAO,MAAI,cAAc;GACzB,WAAW,MAAI,kBAAkB;GACjC,YAAY,MAAI,UAAU;GAC1B,WAAW,CAAC,CAAC,QAAA;EACf,CAAC,CAAC;EAEF,MAAM,aAAa,gBAAwC;GACzD,eAAe,MAAI,YAAY;GAC/B,cAAc,MAAI,WAAW;EAC/B,EAAE;EAEF,MAAM,aAAa,eAAuB;GACxC,IAAI,CAAC,MAAI,MAAM,KAAK,CAAC,QAAA,OACnB,OAAO;GACT,OAAO,QAAA,WAAW,GAAG,QAAA,MAAM,MAAM,QAAA;EACnC,CAAC;EAED,SAAS,MAAM,OAAoB;GACjC,MAAM,SAAS,MAAM;GACrB,IAAI,kBAAkB,kBACpB,MAAI,YAAY,OAAO,KAAK;EAEhC;EAEA,SAAS,mBAAyB;GAChC,MAAI,YAAY,EAAE;GAClB,KAAK,OAAO;EACd;EAEA,MAAM,UAAU,UAAU;GACxB,IAAI,OACF,MAAI,iBAAiB,IAAI;QAGzB,qBAAqB,MAAI,iBAAiB,KAAK,GAAG,GAAG;EAEzD,CAAC;EAED,SAAa;GACX,oBAAoB,OAAe,QAAgB;IACjD,MAAI,QAAQ,CAAC,EAAE,kBAAkB,OAAO,GAAG;GAC7C;GACA,aAAa,MAAI,QAAQ,CAAC,EAAE,MAAM;GAClC,SAAS;EACX,CAAC;;uBAIC,mBAyGM,OAAA,eAAA,mBAzGO,MAAA,YAAA,CAAY,CAACA,KAAAA,MAAM,CAAA,CAAA,GAAA,CAC9B,mBAgGM,OAAA;IA/FH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA;IAClB,WAAQ;IACP,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;IACrB,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;;IAGdC,KAAAA,OAAO,WAAW,QAAA,eAAA,UAAA,GAD1B,mBAgBM,OAAA;;cAdA;KAAJ,KAAI;KACH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA;KAClB,WAAQ;QAGAA,KAAAA,OAAO,UADf,WAGE,KAAA,QAAA,WAAA,EAAA,KAAA,EAAA,CAAA,IAEW,QAAA,eAAA,UAAA,GADb,mBAKM,OAAA;;KAHH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,KAAI,CAAA;QAEf,YAA+B,iBAAA,EAArB,MAAM,QAAA,YAAW,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;IAG/B,mBAuCM,OAAA;KAtCH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,aAAY,CAAA;KACtB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,eAAgB,MAAM;;KAElC,mBAYE,SAZF,WAYE;eAXI;MAAJ,KAAI;MACH,OAAO,WAAA;MACP,aAAa,QAAA,eAAW;MACxB,OAAO,MAAA,EAAA,CAAE,CAAC,MAAK;MACf,UAAU,QAAA;MACV,UAAU,QAAA;MACV,gBAAc,MAAA,QAAA;QACP,MAAA,eAAA,CAAe,CAACD,KAAAA,MAAM,GAAA;MAC7B,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAM,MAAM;MACnB,QAAI,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAS,MAAM;MACzB,UAAM,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,UAAW,MAAM;;KAEhC,mBAaQ,SAAA;MAZL,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA;MACf,OAAK,eAAE,MAAA,UAAA,CAAU;SAElB,mBAQO,QAAA,EARA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,UAAS,CAAA,EAAA,GAAA,CAAA,gBAAA,gBACrB,QAAA,KAAK,IAAG,KACX,CAAA,GACQ,QAAA,YAAA,UAAA,GADR,mBAKO,QAAA;;MAHJ,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,SAAQ,CAAA;QACpB,OAED,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA;KAII,QAAA,YAAO,cAAA,UAAA,GADf,mBAOW,YAAA;;MALR,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,SAAQ,CAAA;SAEnB,mBAES,UAAA,EAFA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,OAAM,CAAA,EAAA,GAAA,gBACpB,MAAA,UAAA,CAAU,GAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;;IAKXC,KAAAA,OAAO,UAAU,QAAA,cAAc,MAAA,aAAA,KAAA,UAAA,GADvC,mBAgCM,OAAA;;cA9BA;KAAJ,KAAI;KACH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,OAAM,CAAA;KACjB,WAAQ;QAGA,MAAA,aAAA,KAAA,UAAA,GADR,YAeY,mBAAA;;KAbT,OAAK,eAAA,CAAG,MAAA,EAAA,CAAE,CAAC,YAAW,GAAA,EAAA,QAAA,CAAe,MAAA,eAAA,EAAe,CAAA,CAAA;KACrD,SAAQ;KACR,MAAK;KACL,MAAA;KACA,OAAM;KACN,WAAQ;KACR,UAAS;KACR,SAAK,OAAA,OAAA,OAAA,KAAA,eAAA,WAAO,iBAAgB,GAAA,CAAA,MAAA,CAAA;;4BAK3B,CAHF,YAGE,iBAAA;MAFA,MAAK;MACL,MAAK;;;sDAIDA,KAAAA,OAAO,SADf,WAGE,KAAA,QAAA,UAAA,EAAA,KAAA,EAAA,CAAA,IAEW,QAAA,cAAA,UAAA,GADb,mBAKM,OAAA;;KAHH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,KAAI,CAAA;QAEf,YAA8B,iBAAA,EAApB,MAAM,QAAA,WAAU,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;YAKvB,QAAA,eAAA,UAAA,GADT,YAME,2BAAA;;IAJC,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA;IACjB,kBAAgB,QAAA;IAChB,oBAAkB,QAAA;IAClB,MAAM,QAAA"}