@nextcloud/vue 8.29.2 → 8.31.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 (835) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/Components/NcActionButton.cjs +1 -1
  3. package/dist/Components/NcActionButton.mjs +1 -1
  4. package/dist/Components/NcActionButtonGroup.cjs +1 -1
  5. package/dist/Components/NcActionButtonGroup.mjs +1 -1
  6. package/dist/Components/NcActionCheckbox.cjs +1 -1
  7. package/dist/Components/NcActionCheckbox.mjs +1 -1
  8. package/dist/Components/NcActionInput.cjs +1 -1
  9. package/dist/Components/NcActionInput.mjs +1 -1
  10. package/dist/Components/NcActionLink.cjs +5 -5
  11. package/dist/Components/NcActionLink.cjs.map +1 -1
  12. package/dist/Components/NcActionLink.mjs +5 -5
  13. package/dist/Components/NcActionLink.mjs.map +1 -1
  14. package/dist/Components/NcActionRadio.cjs +1 -1
  15. package/dist/Components/NcActionRadio.mjs +1 -1
  16. package/dist/Components/NcActionRouter.cjs +3 -4
  17. package/dist/Components/NcActionRouter.cjs.map +1 -1
  18. package/dist/Components/NcActionRouter.mjs +3 -4
  19. package/dist/Components/NcActionRouter.mjs.map +1 -1
  20. package/dist/Components/NcActionText.cjs +3 -3
  21. package/dist/Components/NcActionText.cjs.map +1 -1
  22. package/dist/Components/NcActionText.mjs +3 -3
  23. package/dist/Components/NcActionText.mjs.map +1 -1
  24. package/dist/Components/NcActionTextEditable.cjs +1 -1
  25. package/dist/Components/NcActionTextEditable.mjs +1 -1
  26. package/dist/Components/NcActions.cjs +1 -1
  27. package/dist/Components/NcActions.mjs +1 -1
  28. package/dist/Components/NcAppContent.cjs +1 -1
  29. package/dist/Components/NcAppContent.mjs +1 -1
  30. package/dist/Components/NcAppContentList.cjs +6 -0
  31. package/dist/Components/NcAppContentList.cjs.map +1 -1
  32. package/dist/Components/NcAppContentList.mjs +6 -0
  33. package/dist/Components/NcAppContentList.mjs.map +1 -1
  34. package/dist/Components/NcAppNavigation.cjs +1 -1
  35. package/dist/Components/NcAppNavigation.mjs +1 -1
  36. package/dist/Components/NcAppNavigationCaption.cjs +1 -1
  37. package/dist/Components/NcAppNavigationCaption.mjs +1 -1
  38. package/dist/Components/NcAppNavigationIconBullet.cjs +5 -2
  39. package/dist/Components/NcAppNavigationIconBullet.cjs.map +1 -1
  40. package/dist/Components/NcAppNavigationIconBullet.mjs +5 -2
  41. package/dist/Components/NcAppNavigationIconBullet.mjs.map +1 -1
  42. package/dist/Components/NcAppNavigationItem.cjs +1 -1
  43. package/dist/Components/NcAppNavigationItem.mjs +1 -1
  44. package/dist/Components/NcAppNavigationNew.cjs +2 -65
  45. package/dist/Components/NcAppNavigationNew.cjs.map +1 -1
  46. package/dist/Components/NcAppNavigationNew.mjs +2 -65
  47. package/dist/Components/NcAppNavigationNew.mjs.map +1 -1
  48. package/dist/Components/NcAppNavigationNewItem.cjs +1 -1
  49. package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
  50. package/dist/Components/NcAppNavigationSearch.cjs +1 -1
  51. package/dist/Components/NcAppNavigationSearch.mjs +1 -1
  52. package/dist/Components/NcAppNavigationSettings.cjs +1 -1
  53. package/dist/Components/NcAppNavigationSettings.mjs +1 -1
  54. package/dist/Components/NcAppNavigationToggle.cjs +1 -1
  55. package/dist/Components/NcAppNavigationToggle.mjs +1 -1
  56. package/dist/Components/NcAppSettingsDialog.cjs +1 -1
  57. package/dist/Components/NcAppSettingsDialog.mjs +1 -1
  58. package/dist/Components/NcAppSettingsSection.cjs +8 -2
  59. package/dist/Components/NcAppSettingsSection.cjs.map +1 -1
  60. package/dist/Components/NcAppSettingsSection.mjs +8 -2
  61. package/dist/Components/NcAppSettingsSection.mjs.map +1 -1
  62. package/dist/Components/NcAppSidebar.cjs +1 -1
  63. package/dist/Components/NcAppSidebar.mjs +1 -1
  64. package/dist/Components/NcAppSidebarHeader.cjs +1 -1
  65. package/dist/Components/NcAppSidebarHeader.mjs +1 -1
  66. package/dist/Components/NcAppSidebarTab.cjs +5 -2
  67. package/dist/Components/NcAppSidebarTab.cjs.map +1 -1
  68. package/dist/Components/NcAppSidebarTab.mjs +5 -2
  69. package/dist/Components/NcAppSidebarTab.mjs.map +1 -1
  70. package/dist/Components/NcAssistantButton.cjs +4 -0
  71. package/dist/Components/NcAssistantButton.cjs.map +1 -0
  72. package/dist/Components/NcAssistantButton.mjs +5 -0
  73. package/dist/Components/NcAssistantButton.mjs.map +1 -0
  74. package/dist/Components/NcAssistantContent.cjs +50 -0
  75. package/dist/Components/NcAssistantContent.cjs.map +1 -0
  76. package/dist/Components/NcAssistantContent.mjs +51 -0
  77. package/dist/Components/NcAssistantContent.mjs.map +1 -0
  78. package/dist/Components/NcAssistantIcon.cjs +4 -0
  79. package/dist/Components/NcAssistantIcon.cjs.map +1 -0
  80. package/dist/Components/NcAssistantIcon.mjs +5 -0
  81. package/dist/Components/NcAssistantIcon.mjs.map +1 -0
  82. package/dist/Components/NcAvatar.cjs +1 -1
  83. package/dist/Components/NcAvatar.mjs +1 -1
  84. package/dist/Components/NcBlurHash.cjs +1 -1
  85. package/dist/Components/NcBlurHash.mjs +1 -1
  86. package/dist/Components/NcBreadcrumb.cjs +1 -1
  87. package/dist/Components/NcBreadcrumb.mjs +1 -1
  88. package/dist/Components/NcBreadcrumbs.cjs +1 -1
  89. package/dist/Components/NcBreadcrumbs.mjs +1 -1
  90. package/dist/Components/NcButton.cjs +2 -332
  91. package/dist/Components/NcButton.cjs.map +1 -1
  92. package/dist/Components/NcButton.mjs +2 -332
  93. package/dist/Components/NcButton.mjs.map +1 -1
  94. package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
  95. package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
  96. package/dist/Components/NcChip.cjs +15 -13
  97. package/dist/Components/NcChip.cjs.map +1 -1
  98. package/dist/Components/NcChip.mjs +15 -13
  99. package/dist/Components/NcChip.mjs.map +1 -1
  100. package/dist/Components/NcCollectionList.cjs +1 -1
  101. package/dist/Components/NcCollectionList.mjs +1 -1
  102. package/dist/Components/NcColorPicker.cjs +1 -1
  103. package/dist/Components/NcColorPicker.mjs +1 -1
  104. package/dist/Components/NcContent.cjs +1 -1
  105. package/dist/Components/NcContent.mjs +1 -1
  106. package/dist/Components/NcCounterBubble.cjs +1 -1
  107. package/dist/Components/NcCounterBubble.mjs +1 -1
  108. package/dist/Components/NcDashboardWidget.cjs +1 -1
  109. package/dist/Components/NcDashboardWidget.mjs +1 -1
  110. package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
  111. package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
  112. package/dist/Components/NcDateTime.cjs +1 -1
  113. package/dist/Components/NcDateTime.mjs +1 -1
  114. package/dist/Components/NcDateTimePicker.cjs +46 -15
  115. package/dist/Components/NcDateTimePicker.cjs.map +1 -1
  116. package/dist/Components/NcDateTimePicker.mjs +46 -15
  117. package/dist/Components/NcDateTimePicker.mjs.map +1 -1
  118. package/dist/Components/NcDateTimePickerNative.cjs +8 -6
  119. package/dist/Components/NcDateTimePickerNative.cjs.map +1 -1
  120. package/dist/Components/NcDateTimePickerNative.mjs +8 -6
  121. package/dist/Components/NcDateTimePickerNative.mjs.map +1 -1
  122. package/dist/Components/NcDialog.cjs +1 -1
  123. package/dist/Components/NcDialog.mjs +1 -1
  124. package/dist/Components/NcDialogButton.cjs +1 -1
  125. package/dist/Components/NcDialogButton.mjs +1 -1
  126. package/dist/Components/NcEllipsisedOption.cjs +3 -3
  127. package/dist/Components/NcEllipsisedOption.cjs.map +1 -1
  128. package/dist/Components/NcEllipsisedOption.mjs +3 -3
  129. package/dist/Components/NcEllipsisedOption.mjs.map +1 -1
  130. package/dist/Components/NcEmojiPicker.cjs +1 -1
  131. package/dist/Components/NcEmojiPicker.mjs +1 -1
  132. package/dist/Components/NcEmptyContent.cjs +4 -2
  133. package/dist/Components/NcEmptyContent.cjs.map +1 -1
  134. package/dist/Components/NcEmptyContent.mjs +4 -2
  135. package/dist/Components/NcEmptyContent.mjs.map +1 -1
  136. package/dist/Components/NcGuestContent.cjs +2 -2
  137. package/dist/Components/NcGuestContent.cjs.map +1 -1
  138. package/dist/Components/NcGuestContent.mjs +2 -2
  139. package/dist/Components/NcGuestContent.mjs.map +1 -1
  140. package/dist/Components/NcHeaderButton.cjs +2 -61
  141. package/dist/Components/NcHeaderButton.cjs.map +1 -1
  142. package/dist/Components/NcHeaderButton.mjs +2 -61
  143. package/dist/Components/NcHeaderButton.mjs.map +1 -1
  144. package/dist/Components/NcHeaderMenu.cjs +1 -1
  145. package/dist/Components/NcHeaderMenu.mjs +1 -1
  146. package/dist/Components/NcHighlight.cjs +1 -1
  147. package/dist/Components/NcHighlight.mjs +1 -1
  148. package/dist/Components/NcIconSvgWrapper.cjs +1 -1
  149. package/dist/Components/NcIconSvgWrapper.mjs +1 -1
  150. package/dist/Components/NcInputField.cjs +1 -1
  151. package/dist/Components/NcInputField.mjs +1 -1
  152. package/dist/Components/NcKbd.cjs +65 -0
  153. package/dist/Components/NcKbd.cjs.map +1 -0
  154. package/dist/Components/NcKbd.mjs +66 -0
  155. package/dist/Components/NcKbd.mjs.map +1 -0
  156. package/dist/Components/NcListItem.cjs +1 -1
  157. package/dist/Components/NcListItem.mjs +1 -1
  158. package/dist/Components/NcListItemIcon.cjs +1 -1
  159. package/dist/Components/NcListItemIcon.mjs +1 -1
  160. package/dist/Components/NcLoadingIcon.cjs +2 -2
  161. package/dist/Components/NcLoadingIcon.cjs.map +1 -1
  162. package/dist/Components/NcLoadingIcon.mjs +2 -2
  163. package/dist/Components/NcLoadingIcon.mjs.map +1 -1
  164. package/dist/Components/NcModal.cjs +60 -46
  165. package/dist/Components/NcModal.cjs.map +1 -1
  166. package/dist/Components/NcModal.mjs +59 -45
  167. package/dist/Components/NcModal.mjs.map +1 -1
  168. package/dist/Components/NcNoteCard.cjs +10 -10
  169. package/dist/Components/NcNoteCard.cjs.map +1 -1
  170. package/dist/Components/NcNoteCard.mjs +10 -10
  171. package/dist/Components/NcNoteCard.mjs.map +1 -1
  172. package/dist/Components/NcPasswordField.cjs +1 -1
  173. package/dist/Components/NcPasswordField.mjs +1 -1
  174. package/dist/Components/NcPopover.cjs +1 -1
  175. package/dist/Components/NcPopover.mjs +1 -1
  176. package/dist/Components/NcProgressBar.cjs +1 -1
  177. package/dist/Components/NcProgressBar.mjs +1 -1
  178. package/dist/Components/NcRadioGroup.cjs +4 -0
  179. package/dist/Components/NcRadioGroup.cjs.map +1 -0
  180. package/dist/Components/NcRadioGroup.mjs +5 -0
  181. package/dist/Components/NcRadioGroup.mjs.map +1 -0
  182. package/dist/Components/NcRadioGroupButton.cjs +4 -0
  183. package/dist/Components/NcRadioGroupButton.cjs.map +1 -0
  184. package/dist/Components/NcRadioGroupButton.mjs +5 -0
  185. package/dist/Components/NcRadioGroupButton.mjs.map +1 -0
  186. package/dist/Components/NcRelatedResourcesPanel.cjs +1 -1
  187. package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
  188. package/dist/Components/NcRichContenteditable.cjs +2 -2
  189. package/dist/Components/NcRichContenteditable.mjs +2 -2
  190. package/dist/Components/NcRichText.cjs +10 -10
  191. package/dist/Components/NcRichText.mjs +17 -17
  192. package/dist/Components/NcSelect.cjs +1 -1
  193. package/dist/Components/NcSelect.mjs +1 -1
  194. package/dist/Components/NcSelectTags.cjs +1 -1
  195. package/dist/Components/NcSelectTags.mjs +1 -1
  196. package/dist/Components/NcSelectUsers.cjs +1 -1
  197. package/dist/Components/NcSelectUsers.mjs +1 -1
  198. package/dist/Components/NcSettingsInputText.cjs +1 -1
  199. package/dist/Components/NcSettingsInputText.mjs +1 -1
  200. package/dist/Components/NcSettingsSection.cjs +1 -1
  201. package/dist/Components/NcSettingsSection.mjs +1 -1
  202. package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
  203. package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
  204. package/dist/Components/NcTextArea.cjs +1 -1
  205. package/dist/Components/NcTextArea.mjs +1 -1
  206. package/dist/Components/NcTextField.cjs +1 -1
  207. package/dist/Components/NcTextField.mjs +1 -1
  208. package/dist/Components/NcTimezonePicker.cjs +1 -1
  209. package/dist/Components/NcTimezonePicker.mjs +1 -1
  210. package/dist/Components/NcUserBubble.cjs +1 -1
  211. package/dist/Components/NcUserBubble.mjs +1 -1
  212. package/dist/Components/NcUserStatusIcon.cjs +1 -1
  213. package/dist/Components/NcUserStatusIcon.mjs +1 -1
  214. package/dist/Components/NcVNodes.cjs +1 -2
  215. package/dist/Components/NcVNodes.cjs.map +1 -1
  216. package/dist/Components/NcVNodes.mjs +1 -2
  217. package/dist/Components/NcVNodes.mjs.map +1 -1
  218. package/dist/Composables/useFormatDateTime.cjs +2 -4
  219. package/dist/Composables/useFormatDateTime.cjs.map +1 -1
  220. package/dist/Composables/useFormatDateTime.mjs +2 -4
  221. package/dist/Composables/useFormatDateTime.mjs.map +1 -1
  222. package/dist/Composables/useHotKey.cjs +2 -2
  223. package/dist/Composables/useHotKey.cjs.map +1 -1
  224. package/dist/Composables/useHotKey.mjs +1 -1
  225. package/dist/Composables/useHotKey.mjs.map +1 -1
  226. package/dist/Composables/useIsDarkTheme.cjs.map +1 -1
  227. package/dist/Composables/useIsDarkTheme.mjs.map +1 -1
  228. package/dist/Composables/useIsFullscreen.cjs.map +1 -1
  229. package/dist/Composables/useIsFullscreen.mjs.map +1 -1
  230. package/dist/Composables/useIsMobile.cjs.map +1 -1
  231. package/dist/Composables/useIsMobile.mjs.map +1 -1
  232. package/dist/Directives/Focus.cjs.map +1 -1
  233. package/dist/Directives/Focus.mjs.map +1 -1
  234. package/dist/Directives/Linkify.cjs +4 -6
  235. package/dist/Directives/Linkify.cjs.map +1 -1
  236. package/dist/Directives/Linkify.mjs +4 -5
  237. package/dist/Directives/Linkify.mjs.map +1 -1
  238. package/dist/Directives/Tooltip.cjs.map +1 -1
  239. package/dist/Directives/Tooltip.mjs.map +1 -1
  240. package/dist/Functions/a11y.cjs +2 -2
  241. package/dist/Functions/a11y.cjs.map +1 -1
  242. package/dist/Functions/a11y.mjs +2 -2
  243. package/dist/Functions/a11y.mjs.map +1 -1
  244. package/dist/Functions/contactsMenu.cjs.map +1 -1
  245. package/dist/Functions/contactsMenu.mjs.map +1 -1
  246. package/dist/Functions/dialog.cjs.map +1 -1
  247. package/dist/Functions/dialog.mjs.map +1 -1
  248. package/dist/Functions/isDarkTheme.cjs.map +1 -1
  249. package/dist/Functions/isDarkTheme.mjs.map +1 -1
  250. package/dist/Functions/preloadImage.cjs.map +1 -1
  251. package/dist/Functions/preloadImage.mjs.map +1 -1
  252. package/dist/Functions/reference.cjs +10 -10
  253. package/dist/Functions/reference.mjs +8 -8
  254. package/dist/Functions/registerReference.cjs +11 -11
  255. package/dist/Functions/registerReference.mjs +7 -7
  256. package/dist/Functions/usernameToColor.cjs +1 -1
  257. package/dist/Functions/usernameToColor.cjs.map +1 -1
  258. package/dist/Functions/usernameToColor.mjs +1 -1
  259. package/dist/Functions/usernameToColor.mjs.map +1 -1
  260. package/dist/Mixins/clickOutsideOptions.cjs.map +1 -1
  261. package/dist/Mixins/clickOutsideOptions.mjs.map +1 -1
  262. package/dist/Mixins/isFullscreen.cjs.map +1 -1
  263. package/dist/Mixins/isFullscreen.mjs.map +1 -1
  264. package/dist/Mixins/isMobile.cjs.map +1 -1
  265. package/dist/Mixins/isMobile.mjs.map +1 -1
  266. package/dist/Mixins/richEditor.cjs +1 -1
  267. package/dist/Mixins/richEditor.mjs +1 -1
  268. package/dist/assets/{NcActionButton-D8Lyueq3.css → NcActionButton-DwJihiLc.css} +18 -18
  269. package/dist/assets/{NcActionButtonGroup-oAqMyrzr.css → NcActionButtonGroup-CRXLyFpx.css} +8 -8
  270. package/dist/assets/{NcActionCheckbox-BlyPt7DF.css → NcActionCheckbox-DvdNISIs.css} +12 -12
  271. package/dist/assets/{NcActionInput-D79204Jr.css → NcActionInput-DXZaAilC.css} +67 -63
  272. package/dist/assets/{NcActionLink-CNMaob5P.css → NcActionLink-7Wp6P-Nk.css} +13 -13
  273. package/dist/assets/{NcActionRadio-CodyhP86.css → NcActionRadio-CLsR2Ore.css} +12 -12
  274. package/dist/assets/{NcActionRouter-zXuKLsvi.css → NcActionRouter-ByijfQtF.css} +16 -16
  275. package/dist/assets/{NcActionText-Rad4JSXq.css → NcActionText-CR_yvwWo.css} +18 -18
  276. package/dist/assets/{NcActionTextEditable-i1KSVe0J.css → NcActionTextEditable-CCWTiT5c.css} +71 -63
  277. package/dist/assets/{NcActions-CXnDIMae.css → NcActions-B4-9qwLn.css} +11 -11
  278. package/dist/assets/{NcAppContent-Bb5hgGi3.css → NcAppContent-DerHKU6P.css} +23 -23
  279. package/dist/assets/{NcAppNavigation-WhHdkLQF.css → NcAppNavigation-R4E_wTZ-.css} +12 -12
  280. package/dist/assets/{NcAppNavigationCaption-DU9PxTvu.css → NcAppNavigationCaption-C7GtQb_y.css} +7 -7
  281. package/dist/assets/{NcAppNavigationIconBullet-CeBYVy6t.css → NcAppNavigationIconBullet-DLQJkObX.css} +3 -3
  282. package/dist/assets/{NcAppNavigationItem-DKcGNjYx.css → NcAppNavigationItem-Kua1hP7u.css} +46 -40
  283. package/dist/assets/{NcAppNavigationNew-Dbo2rvXH.css → NcAppNavigationNew-D8_2ab9R.css} +3 -3
  284. package/dist/assets/{NcAppNavigationNewItem-CS2gLROV.css → NcAppNavigationNewItem-Cjbn5XkO.css} +44 -38
  285. package/dist/assets/{NcAppNavigationSearch-CD7kv7L_.css → NcAppNavigationSearch-o97SOfOb.css} +6 -6
  286. package/dist/assets/{NcAppNavigationSettings-_Qi3rUlw.css → NcAppNavigationSettings-1YRzh-xl.css} +11 -11
  287. package/dist/assets/{NcAppNavigationToggle-C5IMygw1.css → NcAppNavigationToggle-DgwbZOWc.css} +3 -3
  288. package/dist/assets/{NcAppSettingsDialog-kKMMsdb3.css → NcAppSettingsDialog-DiJpVNeb.css} +10 -10
  289. package/dist/assets/{NcAppSettingsSection-Bl2-D3_g.css → NcAppSettingsSection-IzrCzLDw.css} +3 -3
  290. package/dist/assets/{NcAppSidebar-u0G_qQMh.css → NcAppSidebar-CJYtNcF0.css} +58 -58
  291. package/dist/assets/{NcAppSidebarTab-Blv6UfuA.css → NcAppSidebarTab-IcebyGtN.css} +4 -4
  292. package/dist/assets/NcAssistantButton-owGSr0s0.css +54 -0
  293. package/dist/assets/NcAssistantContent-Ban7n3Bg.css +31 -0
  294. package/dist/assets/NcAssistantIcon-BoOnqVRr.css +35 -0
  295. package/dist/assets/{NcAvatar-BqNcvkxP.css → NcAvatar-BdAXbXdR.css} +27 -28
  296. package/dist/assets/{NcBreadcrumb-DqaFt2qu.css → NcBreadcrumb-0xB19h6f.css} +15 -15
  297. package/dist/assets/{NcBreadcrumbs-CFRjXqRg.css → NcBreadcrumbs-DahxPGJY.css} +6 -6
  298. package/dist/assets/{NcButton-C_LOxojs.css → NcButton-D8AOCliw.css} +46 -46
  299. package/dist/assets/{NcCheckboxRadioSwitch-DqEP1SPR.css → NcCheckboxRadioSwitch-BcHKt-lf.css} +65 -47
  300. package/dist/assets/{NcChip-CF4Q149V.css → NcChip-Cc17FJEC.css} +9 -9
  301. package/dist/assets/{NcCollectionList-yjTCAR46.css → NcCollectionList-DInDhsAS.css} +42 -42
  302. package/dist/assets/{NcColorPicker-DBcVuSwg.css → NcColorPicker-CGI9ElwB.css} +28 -28
  303. package/dist/assets/{NcContent-DH4tX3N4.css → NcContent-BedDNXST.css} +10 -10
  304. package/dist/assets/{NcCounterBubble-CI-DxLjL.css → NcCounterBubble-sz81L2Mt.css} +7 -7
  305. package/dist/assets/{NcDashboardWidget-CrhZaGWD.css → NcDashboardWidget-DzJMoJ_B.css} +12 -12
  306. package/dist/assets/{NcDashboardWidgetItem-B8_6-_k8.css → NcDashboardWidgetItem-CAsF_ZMZ.css} +12 -12
  307. package/dist/assets/{NcDateTimePicker-FNnAz7ls.css → NcDateTimePicker-4Zw7r2r4.css} +18 -16
  308. package/dist/assets/{NcDateTimePickerNative-CYS2ORfo.css → NcDateTimePickerNative-ZqMiOh_m.css} +13 -13
  309. package/dist/assets/{NcDialog-X7BRqUGJ.css → NcDialog-COuFb47k.css} +15 -15
  310. package/dist/assets/{NcEllipsisedOption-DGr9_bIL.css → NcEllipsisedOption-DRkFZ9bI.css} +5 -5
  311. package/dist/assets/{NcEmojiPicker-BRSm8OUy.css → NcEmojiPicker-CrjOSMLF.css} +128 -124
  312. package/dist/assets/{NcEmptyContent-CHVEJoER.css → NcEmptyContent-xdTcF0yQ.css} +9 -9
  313. package/dist/assets/{NcGuestContent-ByAkjts7.css → NcGuestContent-BkegjnLL.css} +2 -2
  314. package/dist/assets/{NcHeaderButton-BRhv2o2J.css → NcHeaderButton-CeT-dsLr.css} +9 -9
  315. package/dist/assets/{NcHeaderMenu-Cjb3kKi1.css → NcHeaderMenu-BXb9npZp.css} +13 -13
  316. package/dist/assets/{NcIconSvgWrapper-DX_XWpAs.css → NcIconSvgWrapper-DJQ2Kuip.css} +7 -7
  317. package/dist/assets/{NcInputConfirmCancel-BanazdhC.css → NcInputConfirmCancel-CkhRZCfD.css} +5 -5
  318. package/dist/assets/{NcInputField-DAiNwtp_.css → NcInputField-BI3vWgSo.css} +42 -42
  319. package/dist/assets/NcKbd-BGW1_Jb7.css +36 -0
  320. package/dist/assets/{NcListItem-KrH47Efg.css → NcListItem-rxOwDYE-.css} +44 -44
  321. package/dist/assets/{NcListItemIcon-UmX9YoH3.css → NcListItemIcon-Co3jVZZ8.css} +13 -13
  322. package/dist/assets/{NcLoadingIcon-DbbToJVp.css → NcLoadingIcon-C7S2_wmi.css} +3 -3
  323. package/dist/assets/{NcMentionBubble-UsTMm5VD.css → NcMentionBubble-CaztX9Pv.css} +9 -9
  324. package/dist/assets/{NcModal-Cy3UOuI2.css → NcModal-BzkYPomo.css} +64 -62
  325. package/dist/assets/{NcNoteCard-ChweF_5Q.css → NcNoteCard-Dz5-u2BY.css} +12 -12
  326. package/dist/assets/{NcPasswordField-DVK8tuPi.css → NcPasswordField-mhXQk8aT.css} +2 -2
  327. package/dist/assets/{NcProgressBar-DTCznR-m.css → NcProgressBar-CU_ib_HL.css} +11 -11
  328. package/dist/assets/NcRadioGroup-CNgjqqiP.css +49 -0
  329. package/dist/assets/NcRadioGroupButton-B1hPj4B8.css +85 -0
  330. package/dist/assets/{NcRelatedResourcesPanel-DhStLIO2.css → NcRelatedResourcesPanel-d2OxhjiL.css} +65 -65
  331. package/dist/assets/{NcRichContenteditable-DZLSoy84.css → NcRichContenteditable-BoM95AVW.css} +20 -20
  332. package/dist/assets/{NcRichText-CWVHZl8s.css → NcRichText-BDx2fupZ.css} +89 -87
  333. package/dist/assets/{NcSelect-GdIw6cIy.css → NcSelect-B1pyRV6j.css} +3 -1
  334. package/dist/assets/NcSelectUsers-CfOSPgtz.css +4 -0
  335. package/dist/assets/{NcSettingsInputText-Bsp_6DjJ.css → NcSettingsInputText-18lfGViv.css} +5 -5
  336. package/dist/assets/{NcSettingsSection-uKqWTbhb.css → NcSettingsSection-D_qeKnRb.css} +8 -8
  337. package/dist/assets/{NcSettingsSelectGroup-tjJNoh16.css → NcSettingsSelectGroup-B9FlWQVH.css} +2 -2
  338. package/dist/assets/{NcTextArea-vxeIyeSg.css → NcTextArea-B6zS3CRN.css} +25 -25
  339. package/dist/assets/{NcUserBubble-BsTKRhKz.css → NcUserBubble-uIpJvFoQ.css} +8 -8
  340. package/dist/assets/{NcUserStatusIcon-Dc-aUzBe.css → NcUserStatusIcon-Bw8yMFMP.css} +4 -4
  341. package/dist/assets/{referencePickerModal-BgSz7IyB.css → referencePickerModal-CTpc6_U6.css} +60 -60
  342. package/dist/chunks/{GenColors-BjsCKF7S.cjs → GenColors-BVouTbTJ.cjs} +10 -3
  343. package/dist/chunks/GenColors-BVouTbTJ.cjs.map +1 -0
  344. package/dist/chunks/{GenColors-BrpkL3hT.mjs → GenColors-DIH749TS.mjs} +10 -3
  345. package/dist/chunks/GenColors-DIH749TS.mjs.map +1 -0
  346. package/dist/chunks/{GenRandomId-BQDud3d4.cjs → GenRandomId-D7iOvpZS.cjs} +3 -3
  347. package/dist/chunks/GenRandomId-D7iOvpZS.cjs.map +1 -0
  348. package/dist/chunks/{GenRandomId-CMooMQt0.mjs → GenRandomId-F5ebeBB_.mjs} +3 -3
  349. package/dist/chunks/GenRandomId-F5ebeBB_.mjs.map +1 -0
  350. package/dist/chunks/{NcActionButton-D_9FsTpM.cjs → NcActionButton-CFXzNoFT.cjs} +10 -8
  351. package/dist/chunks/NcActionButton-CFXzNoFT.cjs.map +1 -0
  352. package/dist/chunks/{NcActionButton-rjMoymt-.mjs → NcActionButton-CVW8aRkE.mjs} +10 -8
  353. package/dist/chunks/NcActionButton-CVW8aRkE.mjs.map +1 -0
  354. package/dist/chunks/{NcActionButtonGroup-hhh3GBSS.mjs → NcActionButtonGroup-BOr5Of3k.mjs} +5 -5
  355. package/dist/chunks/{NcActionButtonGroup-hhh3GBSS.mjs.map → NcActionButtonGroup-BOr5Of3k.mjs.map} +1 -1
  356. package/dist/chunks/{NcActionButtonGroup-Cr4OSmyb.cjs → NcActionButtonGroup-Bwuy2WZQ.cjs} +5 -5
  357. package/dist/chunks/{NcActionButtonGroup-Cr4OSmyb.cjs.map → NcActionButtonGroup-Bwuy2WZQ.cjs.map} +1 -1
  358. package/dist/chunks/{NcActionCheckbox-DSMKeccY.mjs → NcActionCheckbox-C05ls65i.mjs} +9 -5
  359. package/dist/chunks/NcActionCheckbox-C05ls65i.mjs.map +1 -0
  360. package/dist/chunks/{NcActionCheckbox-JX-QaTD6.cjs → NcActionCheckbox-Dg_1Ovt0.cjs} +9 -5
  361. package/dist/chunks/NcActionCheckbox-Dg_1Ovt0.cjs.map +1 -0
  362. package/dist/chunks/{NcActionInput-CQ_WEPqQ.mjs → NcActionInput-CoG-fZq9.mjs} +16 -11
  363. package/dist/chunks/NcActionInput-CoG-fZq9.mjs.map +1 -0
  364. package/dist/chunks/{NcActionInput-CA9bOHxb.cjs → NcActionInput-iIJpNS_Q.cjs} +16 -11
  365. package/dist/chunks/NcActionInput-iIJpNS_Q.cjs.map +1 -0
  366. package/dist/chunks/{NcActionRadio-yAm71xxU.mjs → NcActionRadio-Bpbs2dPm.mjs} +9 -5
  367. package/dist/chunks/NcActionRadio-Bpbs2dPm.mjs.map +1 -0
  368. package/dist/chunks/{NcActionRadio-BUCQ6VxA.cjs → NcActionRadio-Dtrwffyh.cjs} +9 -5
  369. package/dist/chunks/NcActionRadio-Dtrwffyh.cjs.map +1 -0
  370. package/dist/chunks/{NcActionTextEditable-B4g2kszt.cjs → NcActionTextEditable-BpahzGpr.cjs} +10 -8
  371. package/dist/chunks/NcActionTextEditable-BpahzGpr.cjs.map +1 -0
  372. package/dist/chunks/{NcActionTextEditable-xWQGdOVl.mjs → NcActionTextEditable-DRwDJjPd.mjs} +10 -8
  373. package/dist/chunks/NcActionTextEditable-DRwDJjPd.mjs.map +1 -0
  374. package/dist/chunks/{NcActions-B76VN_Gz.cjs → NcActions-B7oXbiVt.cjs} +17 -13
  375. package/dist/chunks/NcActions-B7oXbiVt.cjs.map +1 -0
  376. package/dist/chunks/{NcActions-BKZA1xVL.mjs → NcActions-C832pWHO.mjs} +16 -12
  377. package/dist/chunks/NcActions-C832pWHO.mjs.map +1 -0
  378. package/dist/chunks/{NcAppContent-BS7BiMG0.mjs → NcAppContent-C9NGJE6n.mjs} +15 -12
  379. package/dist/chunks/NcAppContent-C9NGJE6n.mjs.map +1 -0
  380. package/dist/chunks/{NcAppContent-POt1Lj3W.cjs → NcAppContent-Djy38ou2.cjs} +16 -13
  381. package/dist/chunks/NcAppContent-Djy38ou2.cjs.map +1 -0
  382. package/dist/chunks/{NcAppNavigation-BKxSUpcQ.cjs → NcAppNavigation-C0Oc0gQ6.cjs} +7 -7
  383. package/dist/chunks/NcAppNavigation-C0Oc0gQ6.cjs.map +1 -0
  384. package/dist/chunks/{NcAppNavigation-BvEa92PC.mjs → NcAppNavigation-DjtmN3dS.mjs} +7 -7
  385. package/dist/chunks/NcAppNavigation-DjtmN3dS.mjs.map +1 -0
  386. package/dist/chunks/{NcAppNavigationCaption-hDsiQMLr.mjs → NcAppNavigationCaption-CsoHaLXg.mjs} +7 -4
  387. package/dist/chunks/{NcAppNavigationCaption-CjOJyYIY.cjs.map → NcAppNavigationCaption-CsoHaLXg.mjs.map} +1 -1
  388. package/dist/chunks/{NcAppNavigationCaption-CjOJyYIY.cjs → NcAppNavigationCaption-D4-hEmCi.cjs} +7 -4
  389. package/dist/chunks/{NcAppNavigationCaption-hDsiQMLr.mjs.map → NcAppNavigationCaption-D4-hEmCi.cjs.map} +1 -1
  390. package/dist/chunks/{NcAppNavigationItem-NIMhmJHh.mjs → NcAppNavigationItem-DvVYHshm.mjs} +77 -70
  391. package/dist/chunks/NcAppNavigationItem-DvVYHshm.mjs.map +1 -0
  392. package/dist/chunks/{NcAppNavigationItem-Cu3S2chM.cjs → NcAppNavigationItem-ZOXUMmX5.cjs} +77 -70
  393. package/dist/chunks/NcAppNavigationItem-ZOXUMmX5.cjs.map +1 -0
  394. package/dist/chunks/NcAppNavigationNew-AiFYSCW1.mjs +78 -0
  395. package/dist/chunks/NcAppNavigationNew-AiFYSCW1.mjs.map +1 -0
  396. package/dist/chunks/NcAppNavigationNew-BqNIa8N9.cjs +77 -0
  397. package/dist/chunks/NcAppNavigationNew-BqNIa8N9.cjs.map +1 -0
  398. package/dist/chunks/{NcAppNavigationNewItem-CTAoGkDy.cjs → NcAppNavigationNewItem-BuEkCd2H.cjs} +4 -4
  399. package/dist/chunks/NcAppNavigationNewItem-BuEkCd2H.cjs.map +1 -0
  400. package/dist/chunks/{NcAppNavigationNewItem-D4fJeBl0.mjs → NcAppNavigationNewItem-CdlWkGU3.mjs} +4 -4
  401. package/dist/chunks/NcAppNavigationNewItem-CdlWkGU3.mjs.map +1 -0
  402. package/dist/chunks/{NcAppNavigationSearch-CaBrnpf9.cjs → NcAppNavigationSearch-BXjB3FEJ.cjs} +7 -7
  403. package/dist/chunks/NcAppNavigationSearch-BXjB3FEJ.cjs.map +1 -0
  404. package/dist/chunks/{NcAppNavigationSearch-B9OkdsuE.mjs → NcAppNavigationSearch-CsIzwF6F.mjs} +7 -7
  405. package/dist/chunks/NcAppNavigationSearch-CsIzwF6F.mjs.map +1 -0
  406. package/dist/chunks/{NcAppNavigationSettings-C8YaW_Kj.cjs → NcAppNavigationSettings-CkFZMLtH.cjs} +17 -11
  407. package/dist/chunks/NcAppNavigationSettings-CkFZMLtH.cjs.map +1 -0
  408. package/dist/chunks/{NcAppNavigationSettings-BV34ogWP.mjs → NcAppNavigationSettings-Dq2O3kRz.mjs} +17 -11
  409. package/dist/chunks/NcAppNavigationSettings-Dq2O3kRz.mjs.map +1 -0
  410. package/dist/chunks/{NcAppNavigationToggle-DGppWo0q.cjs → NcAppNavigationToggle-C2vtZ3uV.cjs} +7 -7
  411. package/dist/chunks/NcAppNavigationToggle-C2vtZ3uV.cjs.map +1 -0
  412. package/dist/chunks/{NcAppNavigationToggle-VxL1CfJY.mjs → NcAppNavigationToggle-DlWpnYdz.mjs} +6 -6
  413. package/dist/chunks/NcAppNavigationToggle-DlWpnYdz.mjs.map +1 -0
  414. package/dist/chunks/{NcAppSettingsDialog-BwsIc_QT.mjs → NcAppSettingsDialog-DVFw09eD.mjs} +12 -10
  415. package/dist/chunks/NcAppSettingsDialog-DVFw09eD.mjs.map +1 -0
  416. package/dist/chunks/{NcAppSettingsDialog-BDo3la0P.cjs → NcAppSettingsDialog-DalEoC9H.cjs} +12 -10
  417. package/dist/chunks/NcAppSettingsDialog-DalEoC9H.cjs.map +1 -0
  418. package/dist/chunks/{NcAppSidebar-BJgPYOcZ.mjs → NcAppSidebar-Bda_fc-F.mjs} +141 -129
  419. package/dist/chunks/NcAppSidebar-Bda_fc-F.mjs.map +1 -0
  420. package/dist/chunks/{NcAppSidebar-Dbvy4M4h.cjs → NcAppSidebar-Cx2ZxU4N.cjs} +142 -130
  421. package/dist/chunks/NcAppSidebar-Cx2ZxU4N.cjs.map +1 -0
  422. package/dist/chunks/{NcAppSidebarHeader-G2VD8Nfl.mjs → NcAppSidebarHeader-CBE4tNYb.mjs} +4 -3
  423. package/dist/chunks/NcAppSidebarHeader-CBE4tNYb.mjs.map +1 -0
  424. package/dist/chunks/{NcAppSidebarHeader-BUXD8c9i.cjs → NcAppSidebarHeader-D-c_yxvx.cjs} +4 -3
  425. package/dist/chunks/NcAppSidebarHeader-D-c_yxvx.cjs.map +1 -0
  426. package/dist/chunks/NcAssistantButton-Dk28Wilk.mjs +97 -0
  427. package/dist/chunks/NcAssistantButton-Dk28Wilk.mjs.map +1 -0
  428. package/dist/chunks/NcAssistantButton-zriu0Kiz.cjs +96 -0
  429. package/dist/chunks/NcAssistantButton-zriu0Kiz.cjs.map +1 -0
  430. package/dist/chunks/NcAssistantIcon-B-Udgta_.cjs +72 -0
  431. package/dist/chunks/NcAssistantIcon-B-Udgta_.cjs.map +1 -0
  432. package/dist/chunks/NcAssistantIcon-CtEF1hjA.mjs +73 -0
  433. package/dist/chunks/NcAssistantIcon-CtEF1hjA.mjs.map +1 -0
  434. package/dist/chunks/{NcAvatar-CgF-MFtU.mjs → NcAvatar-CuYtFEdJ.mjs} +35 -28
  435. package/dist/chunks/NcAvatar-CuYtFEdJ.mjs.map +1 -0
  436. package/dist/chunks/{NcAvatar-DThzrxm-.cjs → NcAvatar-bd-5zXWN.cjs} +36 -29
  437. package/dist/chunks/NcAvatar-bd-5zXWN.cjs.map +1 -0
  438. package/dist/chunks/{NcBlurHash-CJ8retHx.cjs → NcBlurHash-CR0v4QBK.cjs} +2 -2
  439. package/dist/chunks/{NcBlurHash-CJ8retHx.cjs.map → NcBlurHash-CR0v4QBK.cjs.map} +1 -1
  440. package/dist/chunks/{NcBlurHash-do2wxY-0.mjs → NcBlurHash-DZmsBU0q.mjs} +2 -2
  441. package/dist/chunks/{NcBlurHash-do2wxY-0.mjs.map → NcBlurHash-DZmsBU0q.mjs.map} +1 -1
  442. package/dist/chunks/{NcBreadcrumb-86ycrDeH.cjs → NcBreadcrumb-ChxXdE2m.cjs} +19 -19
  443. package/dist/chunks/NcBreadcrumb-ChxXdE2m.cjs.map +1 -0
  444. package/dist/chunks/{NcBreadcrumb-DJpYjXCe.mjs → NcBreadcrumb-D1106x4x.mjs} +18 -18
  445. package/dist/chunks/NcBreadcrumb-D1106x4x.mjs.map +1 -0
  446. package/dist/chunks/{NcBreadcrumbs-B722pBOd.mjs → NcBreadcrumbs-C9Zo0nca.mjs} +108 -106
  447. package/dist/chunks/NcBreadcrumbs-C9Zo0nca.mjs.map +1 -0
  448. package/dist/chunks/{NcBreadcrumbs-CBMTGNxS.cjs → NcBreadcrumbs-XAvQ1MIp.cjs} +109 -107
  449. package/dist/chunks/NcBreadcrumbs-XAvQ1MIp.cjs.map +1 -0
  450. package/dist/chunks/NcButton-CWPBzbcC.mjs +330 -0
  451. package/dist/chunks/NcButton-CWPBzbcC.mjs.map +1 -0
  452. package/dist/chunks/NcButton-DOsCAjiE.cjs +329 -0
  453. package/dist/chunks/NcButton-DOsCAjiE.cjs.map +1 -0
  454. package/dist/chunks/{NcCheckboxRadioSwitch-ip_mRd2T.mjs → NcCheckboxRadioSwitch-CLnWsBwK.mjs} +135 -79
  455. package/dist/chunks/NcCheckboxRadioSwitch-CLnWsBwK.mjs.map +1 -0
  456. package/dist/chunks/{NcCheckboxRadioSwitch-kdoDmLpF.cjs → NcCheckboxRadioSwitch-yVj7slxL.cjs} +135 -79
  457. package/dist/chunks/NcCheckboxRadioSwitch-yVj7slxL.cjs.map +1 -0
  458. package/dist/chunks/{NcCollectionList-Khg3X3Zq.mjs → NcCollectionList-5_ghrfiE.mjs} +27 -21
  459. package/dist/chunks/NcCollectionList-5_ghrfiE.mjs.map +1 -0
  460. package/dist/chunks/{NcCollectionList-C-FWulfV.cjs → NcCollectionList-DZh_7a3g.cjs} +27 -21
  461. package/dist/chunks/NcCollectionList-DZh_7a3g.cjs.map +1 -0
  462. package/dist/chunks/{NcColorPicker-MXMbRaLk.mjs → NcColorPicker-Cae6XNoK.mjs} +14 -14
  463. package/dist/chunks/NcColorPicker-Cae6XNoK.mjs.map +1 -0
  464. package/dist/chunks/{NcColorPicker-C3lzQVxY.cjs → NcColorPicker-D-E2dT4Q.cjs} +15 -15
  465. package/dist/chunks/NcColorPicker-D-E2dT4Q.cjs.map +1 -0
  466. package/dist/chunks/{NcContent-BbmqoSY7.mjs → NcContent-CGBJ782F.mjs} +13 -9
  467. package/dist/chunks/{NcContent-DH7uH5Gv.cjs.map → NcContent-CGBJ782F.mjs.map} +1 -1
  468. package/dist/chunks/{NcContent-DH7uH5Gv.cjs → NcContent-I3cwZc0Z.cjs} +14 -10
  469. package/dist/chunks/{NcContent-BbmqoSY7.mjs.map → NcContent-I3cwZc0Z.cjs.map} +1 -1
  470. package/dist/chunks/{NcCounterBubble-BRrUO34D.cjs → NcCounterBubble-hyvazclA.cjs} +7 -3
  471. package/dist/chunks/NcCounterBubble-hyvazclA.cjs.map +1 -0
  472. package/dist/chunks/{NcCounterBubble-CDfRYl8B.mjs → NcCounterBubble-oxV8oMlX.mjs} +7 -3
  473. package/dist/chunks/NcCounterBubble-oxV8oMlX.mjs.map +1 -0
  474. package/dist/chunks/{NcDashboardWidget-DD_fZTj6.cjs → NcDashboardWidget-DKUU16oT.cjs} +8 -8
  475. package/dist/chunks/NcDashboardWidget-DKUU16oT.cjs.map +1 -0
  476. package/dist/chunks/{NcDashboardWidget-D0cFVt4i.mjs → NcDashboardWidget-_Bi63nDZ.mjs} +8 -8
  477. package/dist/chunks/NcDashboardWidget-_Bi63nDZ.mjs.map +1 -0
  478. package/dist/chunks/{NcDashboardWidgetItem-BiH7ivQn.cjs → NcDashboardWidgetItem-BhGOOhKF.cjs} +8 -7
  479. package/dist/chunks/NcDashboardWidgetItem-BhGOOhKF.cjs.map +1 -0
  480. package/dist/chunks/{NcDashboardWidgetItem-D33MR-DH.mjs → NcDashboardWidgetItem-D4q57Lg_.mjs} +8 -7
  481. package/dist/chunks/NcDashboardWidgetItem-D4q57Lg_.mjs.map +1 -0
  482. package/dist/chunks/{NcDateTime-Cl-PZpLN.cjs → NcDateTime-DE-ltgw2.cjs} +2 -2
  483. package/dist/chunks/NcDateTime-DE-ltgw2.cjs.map +1 -0
  484. package/dist/chunks/{NcDateTime-kanSdMgW.mjs → NcDateTime-enXYuwj8.mjs} +2 -2
  485. package/dist/chunks/NcDateTime-enXYuwj8.mjs.map +1 -0
  486. package/dist/chunks/{NcDialog-ps0F3IQM.cjs → NcDialog-B2tW1DtP.cjs} +39 -31
  487. package/dist/chunks/NcDialog-B2tW1DtP.cjs.map +1 -0
  488. package/dist/chunks/{NcDialog-C1b3UtA7.mjs → NcDialog-Du-BeUCp.mjs} +39 -31
  489. package/dist/chunks/NcDialog-Du-BeUCp.mjs.map +1 -0
  490. package/dist/chunks/{NcDialogButton-CEdM0Qnr.cjs → NcDialogButton-BB84DliS.cjs} +9 -8
  491. package/dist/chunks/NcDialogButton-BB84DliS.cjs.map +1 -0
  492. package/dist/chunks/{NcDialogButton-Di9tU3e_.mjs → NcDialogButton-DtGSMhif.mjs} +8 -7
  493. package/dist/chunks/NcDialogButton-DtGSMhif.mjs.map +1 -0
  494. package/dist/chunks/{NcEmojiPicker-DJHvkF--.mjs → NcEmojiPicker-B2SLfIBu.mjs} +19 -14
  495. package/dist/chunks/NcEmojiPicker-B2SLfIBu.mjs.map +1 -0
  496. package/dist/chunks/{NcEmojiPicker-C2-Q-RoT.cjs → NcEmojiPicker-q_n1Rd8U.cjs} +20 -15
  497. package/dist/chunks/NcEmojiPicker-q_n1Rd8U.cjs.map +1 -0
  498. package/dist/chunks/NcHeaderButton-AKzxd51V.cjs +63 -0
  499. package/dist/chunks/NcHeaderButton-AKzxd51V.cjs.map +1 -0
  500. package/dist/chunks/NcHeaderButton-BORaK-yT.mjs +64 -0
  501. package/dist/chunks/NcHeaderButton-BORaK-yT.mjs.map +1 -0
  502. package/dist/chunks/{NcHeaderMenu-BWFubuox.cjs → NcHeaderMenu-CBP4SYca.cjs} +11 -10
  503. package/dist/chunks/NcHeaderMenu-CBP4SYca.cjs.map +1 -0
  504. package/dist/chunks/{NcHeaderMenu-Dq_Avv2T.mjs → NcHeaderMenu-CkD6cjnH.mjs} +10 -9
  505. package/dist/chunks/NcHeaderMenu-CkD6cjnH.mjs.map +1 -0
  506. package/dist/chunks/{NcIconSvgWrapper-Cb-cPj1R.mjs → NcIconSvgWrapper-BreCg8pX.mjs} +6 -5
  507. package/dist/chunks/NcIconSvgWrapper-BreCg8pX.mjs.map +1 -0
  508. package/dist/chunks/{NcIconSvgWrapper-CrnN5Sq5.cjs → NcIconSvgWrapper-D-aKMbf3.cjs} +7 -6
  509. package/dist/chunks/NcIconSvgWrapper-D-aKMbf3.cjs.map +1 -0
  510. package/dist/chunks/{NcInputConfirmCancel-DA740BJ-.mjs → NcInputConfirmCancel-21vM2JHp.mjs} +12 -6
  511. package/dist/chunks/NcInputConfirmCancel-21vM2JHp.mjs.map +1 -0
  512. package/dist/chunks/{NcInputConfirmCancel-Dz7-CkOl.cjs → NcInputConfirmCancel-BqZm3WBG.cjs} +13 -7
  513. package/dist/chunks/NcInputConfirmCancel-BqZm3WBG.cjs.map +1 -0
  514. package/dist/chunks/{NcInputField-cT3u4gMS.cjs → NcInputField-Dry3uU_8.cjs} +10 -7
  515. package/dist/chunks/NcInputField-Dry3uU_8.cjs.map +1 -0
  516. package/dist/chunks/{NcInputField-BNSfmQqu.mjs → NcInputField-kKgY_2GV.mjs} +9 -6
  517. package/dist/chunks/NcInputField-kKgY_2GV.mjs.map +1 -0
  518. package/dist/chunks/{NcListItem-CnxZixD_.mjs → NcListItem-B3ETbT9w.mjs} +9 -5
  519. package/dist/chunks/NcListItem-B3ETbT9w.mjs.map +1 -0
  520. package/dist/chunks/{NcListItem-DV4HPJWQ.cjs → NcListItem-D_-a7WR9.cjs} +9 -5
  521. package/dist/chunks/NcListItem-D_-a7WR9.cjs.map +1 -0
  522. package/dist/chunks/{NcListItemIcon-BUthbF_v.cjs → NcListItemIcon-CYR8eKOU.cjs} +11 -10
  523. package/dist/chunks/NcListItemIcon-CYR8eKOU.cjs.map +1 -0
  524. package/dist/chunks/{NcListItemIcon-CTfYEjBB.mjs → NcListItemIcon-bQZej-L0.mjs} +11 -10
  525. package/dist/chunks/NcListItemIcon-bQZej-L0.mjs.map +1 -0
  526. package/dist/chunks/{NcPasswordField-DSdrAkZy.mjs → NcPasswordField-9LYKS0t_.mjs} +15 -12
  527. package/dist/chunks/NcPasswordField-9LYKS0t_.mjs.map +1 -0
  528. package/dist/chunks/{NcPasswordField-DcFBNVHn.cjs → NcPasswordField-DPGGwGEl.cjs} +15 -12
  529. package/dist/chunks/NcPasswordField-DPGGwGEl.cjs.map +1 -0
  530. package/dist/chunks/{NcPopover-CAJVK-MR.mjs → NcPopover-DMUA5d7U.mjs} +40 -11
  531. package/dist/chunks/NcPopover-DMUA5d7U.mjs.map +1 -0
  532. package/dist/chunks/{NcPopover-QGSKWhSP.cjs → NcPopover-DkX3Esbr.cjs} +40 -11
  533. package/dist/chunks/NcPopover-DkX3Esbr.cjs.map +1 -0
  534. package/dist/chunks/{NcProgressBar-CI_nOrPg.mjs → NcProgressBar-D7zYeXBH.mjs} +8 -4
  535. package/dist/chunks/NcProgressBar-D7zYeXBH.mjs.map +1 -0
  536. package/dist/chunks/{NcProgressBar-lh4Gtdfr.cjs → NcProgressBar-DvxA9bq5.cjs} +8 -4
  537. package/dist/chunks/NcProgressBar-DvxA9bq5.cjs.map +1 -0
  538. package/dist/chunks/NcRadioGroup-BZ-humrK.cjs +84 -0
  539. package/dist/chunks/NcRadioGroup-BZ-humrK.cjs.map +1 -0
  540. package/dist/chunks/NcRadioGroup-VKZJ0Vnh.mjs +83 -0
  541. package/dist/chunks/NcRadioGroup-VKZJ0Vnh.mjs.map +1 -0
  542. package/dist/chunks/NcRadioGroupButton-7UZaDiJ2.cjs +62 -0
  543. package/dist/chunks/NcRadioGroupButton-7UZaDiJ2.cjs.map +1 -0
  544. package/dist/chunks/NcRadioGroupButton-QLL4wM7A.mjs +63 -0
  545. package/dist/chunks/NcRadioGroupButton-QLL4wM7A.mjs.map +1 -0
  546. package/dist/chunks/{NcRelatedResourcesPanel-BR_ggojH.cjs → NcRelatedResourcesPanel-jHQ2bRko.cjs} +86 -82
  547. package/dist/chunks/NcRelatedResourcesPanel-jHQ2bRko.cjs.map +1 -0
  548. package/dist/chunks/{NcRelatedResourcesPanel-DyvwxDjI.mjs → NcRelatedResourcesPanel-jvOEQWWO.mjs} +85 -81
  549. package/dist/chunks/NcRelatedResourcesPanel-jvOEQWWO.mjs.map +1 -0
  550. package/dist/chunks/{NcRichContenteditable-B5-V1mov.cjs → NcRichContenteditable-BILbjzSU.cjs} +51 -28
  551. package/dist/chunks/NcRichContenteditable-BILbjzSU.cjs.map +1 -0
  552. package/dist/chunks/{NcRichContenteditable-cpptFUeI.mjs → NcRichContenteditable-iQhj1-AH.mjs} +50 -27
  553. package/dist/chunks/NcRichContenteditable-iQhj1-AH.mjs.map +1 -0
  554. package/dist/chunks/{NcRichText-CmuVmSzl.mjs → NcRichText-B7M7rNqC.mjs} +80 -81
  555. package/dist/chunks/NcRichText-B7M7rNqC.mjs.map +1 -0
  556. package/dist/chunks/{NcRichText-DKesJDDM.cjs → NcRichText-DYcfsH5s.cjs} +85 -86
  557. package/dist/chunks/NcRichText-DYcfsH5s.cjs.map +1 -0
  558. package/dist/chunks/NcSavingIndicatorIcon-DFyB2KRK.cjs.map +1 -1
  559. package/dist/chunks/NcSavingIndicatorIcon-U7AIamCl.mjs.map +1 -1
  560. package/dist/chunks/{NcSelect-BUOuXJUQ.mjs → NcSelect-PvjbF3jF.mjs} +18 -13
  561. package/dist/chunks/NcSelect-PvjbF3jF.mjs.map +1 -0
  562. package/dist/chunks/{NcSelect-CnLfkqdF.cjs → NcSelect-s3_u0qvy.cjs} +18 -13
  563. package/dist/chunks/NcSelect-s3_u0qvy.cjs.map +1 -0
  564. package/dist/chunks/{NcSelectTags-hP98xYkg.mjs → NcSelectTags-DYUCDZ_e.mjs} +19 -15
  565. package/dist/chunks/NcSelectTags-DYUCDZ_e.mjs.map +1 -0
  566. package/dist/chunks/{NcSelectTags-D9-2HA1H.cjs → NcSelectTags-e4Gjcx_7.cjs} +19 -15
  567. package/dist/chunks/NcSelectTags-e4Gjcx_7.cjs.map +1 -0
  568. package/dist/chunks/{NcSelectUsers-arPrkqH_.cjs → NcSelectUsers-Bmwhu14K.cjs} +9 -8
  569. package/dist/chunks/NcSelectUsers-Bmwhu14K.cjs.map +1 -0
  570. package/dist/chunks/{NcSelectUsers-DaHVPRPE.mjs → NcSelectUsers-CMF_h9c0.mjs} +9 -8
  571. package/dist/chunks/NcSelectUsers-CMF_h9c0.mjs.map +1 -0
  572. package/dist/chunks/{NcSettingsInputText-BKoaCiQU.mjs → NcSettingsInputText-BQVh24zT.mjs} +8 -6
  573. package/dist/chunks/NcSettingsInputText-BQVh24zT.mjs.map +1 -0
  574. package/dist/chunks/{NcSettingsInputText-D7eoCI2o.cjs → NcSettingsInputText-DWihH7ke.cjs} +8 -6
  575. package/dist/chunks/NcSettingsInputText-DWihH7ke.cjs.map +1 -0
  576. package/dist/chunks/{NcSettingsSection-Bmo90KQR.cjs → NcSettingsSection-Dgc7SEuu.cjs} +17 -5
  577. package/dist/chunks/NcSettingsSection-Dgc7SEuu.cjs.map +1 -0
  578. package/dist/chunks/{NcSettingsSection-fe_YIg-L.mjs → NcSettingsSection-evNvfEg2.mjs} +17 -5
  579. package/dist/chunks/NcSettingsSection-evNvfEg2.mjs.map +1 -0
  580. package/dist/chunks/{NcSettingsSelectGroup-SuQNKdqU.mjs → NcSettingsSelectGroup-C-YAk1f8.mjs} +19 -19
  581. package/dist/chunks/NcSettingsSelectGroup-C-YAk1f8.mjs.map +1 -0
  582. package/dist/chunks/{NcSettingsSelectGroup-D0s0bzQI.cjs → NcSettingsSelectGroup-X1pBwmAZ.cjs} +19 -19
  583. package/dist/chunks/NcSettingsSelectGroup-X1pBwmAZ.cjs.map +1 -0
  584. package/dist/chunks/{NcTextArea-BFLuhsEv.mjs → NcTextArea-DHmD6-6s.mjs} +8 -5
  585. package/dist/chunks/NcTextArea-DHmD6-6s.mjs.map +1 -0
  586. package/dist/chunks/{NcTextArea-B2hcap39.cjs → NcTextArea-DkVtHTpD.cjs} +8 -5
  587. package/dist/chunks/NcTextArea-DkVtHTpD.cjs.map +1 -0
  588. package/dist/chunks/{NcTextField-Dyuxj4yu.cjs → NcTextField-Cp3tulze.cjs} +9 -9
  589. package/dist/chunks/NcTextField-Cp3tulze.cjs.map +1 -0
  590. package/dist/chunks/{NcTextField-Do6wBDGH.mjs → NcTextField-D_IMz2MR.mjs} +9 -9
  591. package/dist/chunks/NcTextField-D_IMz2MR.mjs.map +1 -0
  592. package/dist/chunks/NcThemeProvider-25ResoIv.mjs.map +1 -1
  593. package/dist/chunks/NcThemeProvider-BqGPTeWg.cjs.map +1 -1
  594. package/dist/chunks/{NcTimezonePicker-obgDIrK0.cjs → NcTimezonePicker-Co7jDP7N.cjs} +10 -8
  595. package/dist/chunks/NcTimezonePicker-Co7jDP7N.cjs.map +1 -0
  596. package/dist/chunks/{NcTimezonePicker-bIwFQlmV.mjs → NcTimezonePicker-Cu1FrSIX.mjs} +10 -8
  597. package/dist/chunks/NcTimezonePicker-Cu1FrSIX.mjs.map +1 -0
  598. package/dist/chunks/{NcUserBubble-BmPOx3MW.mjs → NcUserBubble-Be2B8iJY.mjs} +9 -9
  599. package/dist/chunks/NcUserBubble-Be2B8iJY.mjs.map +1 -0
  600. package/dist/chunks/{NcUserBubble-BusyVqGW.cjs → NcUserBubble-CdX6H9-M.cjs} +9 -9
  601. package/dist/chunks/NcUserBubble-CdX6H9-M.cjs.map +1 -0
  602. package/dist/chunks/{NcUserStatusIcon-DQr5EGWZ.mjs → NcUserStatusIcon-C83nB_8T.mjs} +16 -16
  603. package/dist/chunks/NcUserStatusIcon-C83nB_8T.mjs.map +1 -0
  604. package/dist/chunks/{NcUserStatusIcon-CKPJ27oi.cjs → NcUserStatusIcon-DhZabBIY.cjs} +16 -16
  605. package/dist/chunks/NcUserStatusIcon-DhZabBIY.cjs.map +1 -0
  606. package/dist/chunks/{ScopeComponent-CNZNqO-O.mjs → ScopeComponent-305QOaqN.mjs} +4 -4
  607. package/dist/chunks/ScopeComponent-305QOaqN.mjs.map +1 -0
  608. package/dist/chunks/{ScopeComponent-CTlekHht.cjs → ScopeComponent-9wtS_FpN.cjs} +4 -4
  609. package/dist/chunks/ScopeComponent-9wtS_FpN.cjs.map +1 -0
  610. package/dist/chunks/{_l10n-CW0YfIWk.mjs → _l10n-BEfeU7gr.mjs} +98 -100
  611. package/dist/chunks/_l10n-BEfeU7gr.mjs.map +1 -0
  612. package/dist/chunks/{_l10n-RKohWu5d.cjs → _l10n-DM-VRK9x.cjs} +54 -56
  613. package/dist/chunks/{_l10n-RKohWu5d.cjs.map → _l10n-DM-VRK9x.cjs.map} +1 -1
  614. package/dist/chunks/actionGlobal-DqVa7c7G.mjs.map +1 -1
  615. package/dist/chunks/actionGlobal-L0Ls8tPJ.cjs.map +1 -1
  616. package/dist/chunks/{actionText-fFcUPi2g.mjs → actionText-BMig9Egt.mjs} +5 -4
  617. package/dist/chunks/actionText-BMig9Egt.mjs.map +1 -0
  618. package/dist/chunks/{actionText-BcrK4uH1.cjs → actionText-D2-z0ud3.cjs} +5 -4
  619. package/dist/chunks/actionText-D2-z0ud3.cjs.map +1 -0
  620. package/dist/chunks/{autolink-BAgL31EZ.cjs → autolink-BPlRHRHR.cjs} +11 -10
  621. package/dist/chunks/autolink-BPlRHRHR.cjs.map +1 -0
  622. package/dist/chunks/{autolink-cbuFALXr.mjs → autolink-D2pIbi92.mjs} +11 -10
  623. package/dist/chunks/autolink-D2pIbi92.mjs.map +1 -0
  624. package/dist/chunks/constants-Bls5liKo.mjs.map +1 -1
  625. package/dist/chunks/constants-C_lA-vcp.cjs.map +1 -1
  626. package/dist/chunks/createElementId-DhjFt1I9.mjs +8 -0
  627. package/dist/chunks/createElementId-DhjFt1I9.mjs.map +1 -0
  628. package/dist/chunks/createElementId-lalylSCf.cjs +7 -0
  629. package/dist/chunks/createElementId-lalylSCf.cjs.map +1 -0
  630. package/dist/chunks/{index-56SXuvlv.mjs → customPickerElements-DLFtgReB.mjs} +50 -49
  631. package/dist/chunks/customPickerElements-DLFtgReB.mjs.map +1 -0
  632. package/dist/chunks/{index-BV85rPB7.cjs → customPickerElements-GyIIOHiQ.cjs} +43 -42
  633. package/dist/chunks/customPickerElements-GyIIOHiQ.cjs.map +1 -0
  634. package/dist/chunks/emoji-BY_D0V5K.mjs.map +1 -1
  635. package/dist/chunks/emoji-VgSjNTd5.cjs.map +1 -1
  636. package/dist/chunks/focusTrap-DUTqW_IG.cjs.map +1 -1
  637. package/dist/chunks/focusTrap-HJQ4pqHV.mjs.map +1 -1
  638. package/dist/chunks/getAvatarUrl-Du9Y3cPO.cjs.map +1 -1
  639. package/dist/chunks/getAvatarUrl-IhLacDEr.mjs.map +1 -1
  640. package/dist/chunks/{index-AlIgEQXL.cjs → index-CgkN1xho.cjs} +7 -6
  641. package/dist/chunks/index-CgkN1xho.cjs.map +1 -0
  642. package/dist/chunks/{index-Bz6q9mZw.mjs → index-CxTT94_h.mjs} +3 -3
  643. package/dist/chunks/index-CxTT94_h.mjs.map +1 -0
  644. package/dist/chunks/{index-DIJxEozm.cjs → index-Dr9k4hIP.cjs} +3 -3
  645. package/dist/chunks/index-Dr9k4hIP.cjs.map +1 -0
  646. package/dist/chunks/{index-B8gPNa8c.mjs → index-TmAR7I2T.mjs} +7 -6
  647. package/dist/chunks/index-TmAR7I2T.mjs.map +1 -0
  648. package/dist/chunks/logger-3HuiEIF6.cjs.map +1 -1
  649. package/dist/chunks/logger-D3RVzcfQ.mjs.map +1 -1
  650. package/dist/chunks/{mdi-B_QN3oas.cjs → mdi-BBwE-MZC.cjs} +3 -1
  651. package/dist/chunks/{mdi-B_QN3oas.cjs.map → mdi-BBwE-MZC.cjs.map} +1 -1
  652. package/dist/chunks/{mdi-DoaiuWye.mjs → mdi-DXu6GWVJ.mjs} +8 -6
  653. package/dist/chunks/{mdi-DoaiuWye.mjs.map → mdi-DXu6GWVJ.mjs.map} +1 -1
  654. package/dist/chunks/platform-CC2ecGvV.mjs +5 -0
  655. package/dist/chunks/platform-CC2ecGvV.mjs.map +1 -0
  656. package/dist/chunks/platform-oKxQ1agV.cjs +4 -0
  657. package/dist/chunks/platform-oKxQ1agV.cjs.map +1 -0
  658. package/dist/chunks/{referencePickerModal-C1Srl207.cjs → referencePickerModal-BcAnnsxZ.cjs} +121 -118
  659. package/dist/chunks/referencePickerModal-BcAnnsxZ.cjs.map +1 -0
  660. package/dist/chunks/{referencePickerModal-CtMUY45l.mjs → referencePickerModal-CN4C9eDc.mjs} +111 -108
  661. package/dist/chunks/referencePickerModal-CN4C9eDc.mjs.map +1 -0
  662. package/dist/chunks/useModelMigration-D5zhrNXr.cjs.map +1 -1
  663. package/dist/chunks/useModelMigration-EhAWvqDD.mjs.map +1 -1
  664. package/dist/chunks/useNcRadioGroup-DaZbEKbf.mjs +14 -0
  665. package/dist/chunks/useNcRadioGroup-DaZbEKbf.mjs.map +1 -0
  666. package/dist/chunks/useNcRadioGroup-Djvu7bo0.cjs +13 -0
  667. package/dist/chunks/useNcRadioGroup-Djvu7bo0.cjs.map +1 -0
  668. package/dist/chunks/{useTrapStackControl-yqM2SDEs.mjs → useTrapStackControl-BnLfCgGU.mjs} +2 -2
  669. package/dist/chunks/useTrapStackControl-BnLfCgGU.mjs.map +1 -0
  670. package/dist/chunks/{useTrapStackControl-CTZTSUOt.cjs → useTrapStackControl-XYABY64G.cjs} +2 -2
  671. package/dist/chunks/useTrapStackControl-XYABY64G.cjs.map +1 -0
  672. package/dist/components/NcAssistantButton/index.d.ts +5 -0
  673. package/dist/components/NcAssistantContent/index.d.ts +5 -0
  674. package/dist/components/NcAssistantIcon/index.d.ts +5 -0
  675. package/dist/components/NcCollectionList/service.d.ts +7 -0
  676. package/dist/components/NcKbd/index.d.ts +1 -0
  677. package/dist/components/NcRadioGroup/index.d.ts +5 -0
  678. package/dist/components/NcRadioGroup/useNcRadioGroup.d.ts +14 -0
  679. package/dist/components/NcRadioGroupButton/index.d.ts +5 -0
  680. package/dist/composables/actions/useActionText.d.ts +4 -1
  681. package/dist/composables/useFormatDateTime/index.d.ts +7 -5
  682. package/dist/composables/useIsDarkTheme/constants.d.ts +0 -1
  683. package/dist/composables/useIsDarkTheme/index.d.ts +2 -1
  684. package/dist/composables/useModelMigration.d.ts +5 -4
  685. package/dist/composables/useTrapStackControl.d.ts +1 -1
  686. package/dist/directives/Linkify/index.d.ts +3 -0
  687. package/dist/functions/a11y/index.d.ts +3 -3
  688. package/dist/functions/contactsMenu/index.d.ts +2 -2
  689. package/dist/functions/dialog/index.d.ts +1 -0
  690. package/dist/functions/emoji/emoji.d.ts +2 -2
  691. package/dist/functions/emoji/index.d.ts +1 -1
  692. package/dist/functions/isDarkTheme/index.d.ts +2 -1
  693. package/dist/functions/preloadImage/index.d.ts +1 -0
  694. package/dist/functions/reference/customPickerElements.d.ts +56 -0
  695. package/dist/functions/reference/index.d.ts +8 -0
  696. package/dist/functions/reference/providerHelper.d.ts +45 -0
  697. package/dist/functions/reference/referencePickerModal.d.ts +11 -0
  698. package/dist/functions/reference/widgets.d.ts +48 -28
  699. package/dist/functions/registerReference/index.d.ts +6 -0
  700. package/dist/index.cjs +99 -83
  701. package/dist/index.cjs.map +1 -1
  702. package/dist/index.mjs +96 -80
  703. package/dist/index.mjs.map +1 -1
  704. package/dist/plugin.d.ts +1 -0
  705. package/dist/utils/UserStatus.d.ts +6 -1
  706. package/dist/utils/createElementId.d.ts +11 -0
  707. package/dist/utils/getAvatarUrl.d.ts +1 -0
  708. package/dist/utils/platform.d.ts +1 -0
  709. package/package.json +28 -24
  710. package/dist/assets/NcSelectUsers-BOwQNNMf.css +0 -4
  711. package/dist/chunks/GenColors-BjsCKF7S.cjs.map +0 -1
  712. package/dist/chunks/GenColors-BrpkL3hT.mjs.map +0 -1
  713. package/dist/chunks/GenRandomId-BQDud3d4.cjs.map +0 -1
  714. package/dist/chunks/GenRandomId-CMooMQt0.mjs.map +0 -1
  715. package/dist/chunks/NcActionButton-D_9FsTpM.cjs.map +0 -1
  716. package/dist/chunks/NcActionButton-rjMoymt-.mjs.map +0 -1
  717. package/dist/chunks/NcActionCheckbox-DSMKeccY.mjs.map +0 -1
  718. package/dist/chunks/NcActionCheckbox-JX-QaTD6.cjs.map +0 -1
  719. package/dist/chunks/NcActionInput-CA9bOHxb.cjs.map +0 -1
  720. package/dist/chunks/NcActionInput-CQ_WEPqQ.mjs.map +0 -1
  721. package/dist/chunks/NcActionRadio-BUCQ6VxA.cjs.map +0 -1
  722. package/dist/chunks/NcActionRadio-yAm71xxU.mjs.map +0 -1
  723. package/dist/chunks/NcActionTextEditable-B4g2kszt.cjs.map +0 -1
  724. package/dist/chunks/NcActionTextEditable-xWQGdOVl.mjs.map +0 -1
  725. package/dist/chunks/NcActions-B76VN_Gz.cjs.map +0 -1
  726. package/dist/chunks/NcActions-BKZA1xVL.mjs.map +0 -1
  727. package/dist/chunks/NcAppContent-BS7BiMG0.mjs.map +0 -1
  728. package/dist/chunks/NcAppContent-POt1Lj3W.cjs.map +0 -1
  729. package/dist/chunks/NcAppNavigation-BKxSUpcQ.cjs.map +0 -1
  730. package/dist/chunks/NcAppNavigation-BvEa92PC.mjs.map +0 -1
  731. package/dist/chunks/NcAppNavigationItem-Cu3S2chM.cjs.map +0 -1
  732. package/dist/chunks/NcAppNavigationItem-NIMhmJHh.mjs.map +0 -1
  733. package/dist/chunks/NcAppNavigationNewItem-CTAoGkDy.cjs.map +0 -1
  734. package/dist/chunks/NcAppNavigationNewItem-D4fJeBl0.mjs.map +0 -1
  735. package/dist/chunks/NcAppNavigationSearch-B9OkdsuE.mjs.map +0 -1
  736. package/dist/chunks/NcAppNavigationSearch-CaBrnpf9.cjs.map +0 -1
  737. package/dist/chunks/NcAppNavigationSettings-BV34ogWP.mjs.map +0 -1
  738. package/dist/chunks/NcAppNavigationSettings-C8YaW_Kj.cjs.map +0 -1
  739. package/dist/chunks/NcAppNavigationToggle-DGppWo0q.cjs.map +0 -1
  740. package/dist/chunks/NcAppNavigationToggle-VxL1CfJY.mjs.map +0 -1
  741. package/dist/chunks/NcAppSettingsDialog-BDo3la0P.cjs.map +0 -1
  742. package/dist/chunks/NcAppSettingsDialog-BwsIc_QT.mjs.map +0 -1
  743. package/dist/chunks/NcAppSidebar-BJgPYOcZ.mjs.map +0 -1
  744. package/dist/chunks/NcAppSidebar-Dbvy4M4h.cjs.map +0 -1
  745. package/dist/chunks/NcAppSidebarHeader-BUXD8c9i.cjs.map +0 -1
  746. package/dist/chunks/NcAppSidebarHeader-G2VD8Nfl.mjs.map +0 -1
  747. package/dist/chunks/NcAvatar-CgF-MFtU.mjs.map +0 -1
  748. package/dist/chunks/NcAvatar-DThzrxm-.cjs.map +0 -1
  749. package/dist/chunks/NcBreadcrumb-86ycrDeH.cjs.map +0 -1
  750. package/dist/chunks/NcBreadcrumb-DJpYjXCe.mjs.map +0 -1
  751. package/dist/chunks/NcBreadcrumbs-B722pBOd.mjs.map +0 -1
  752. package/dist/chunks/NcBreadcrumbs-CBMTGNxS.cjs.map +0 -1
  753. package/dist/chunks/NcCheckboxRadioSwitch-ip_mRd2T.mjs.map +0 -1
  754. package/dist/chunks/NcCheckboxRadioSwitch-kdoDmLpF.cjs.map +0 -1
  755. package/dist/chunks/NcCollectionList-C-FWulfV.cjs.map +0 -1
  756. package/dist/chunks/NcCollectionList-Khg3X3Zq.mjs.map +0 -1
  757. package/dist/chunks/NcColorPicker-C3lzQVxY.cjs.map +0 -1
  758. package/dist/chunks/NcColorPicker-MXMbRaLk.mjs.map +0 -1
  759. package/dist/chunks/NcCounterBubble-BRrUO34D.cjs.map +0 -1
  760. package/dist/chunks/NcCounterBubble-CDfRYl8B.mjs.map +0 -1
  761. package/dist/chunks/NcDashboardWidget-D0cFVt4i.mjs.map +0 -1
  762. package/dist/chunks/NcDashboardWidget-DD_fZTj6.cjs.map +0 -1
  763. package/dist/chunks/NcDashboardWidgetItem-BiH7ivQn.cjs.map +0 -1
  764. package/dist/chunks/NcDashboardWidgetItem-D33MR-DH.mjs.map +0 -1
  765. package/dist/chunks/NcDateTime-Cl-PZpLN.cjs.map +0 -1
  766. package/dist/chunks/NcDateTime-kanSdMgW.mjs.map +0 -1
  767. package/dist/chunks/NcDialog-C1b3UtA7.mjs.map +0 -1
  768. package/dist/chunks/NcDialog-ps0F3IQM.cjs.map +0 -1
  769. package/dist/chunks/NcDialogButton-CEdM0Qnr.cjs.map +0 -1
  770. package/dist/chunks/NcDialogButton-Di9tU3e_.mjs.map +0 -1
  771. package/dist/chunks/NcEmojiPicker-C2-Q-RoT.cjs.map +0 -1
  772. package/dist/chunks/NcEmojiPicker-DJHvkF--.mjs.map +0 -1
  773. package/dist/chunks/NcHeaderMenu-BWFubuox.cjs.map +0 -1
  774. package/dist/chunks/NcHeaderMenu-Dq_Avv2T.mjs.map +0 -1
  775. package/dist/chunks/NcIconSvgWrapper-Cb-cPj1R.mjs.map +0 -1
  776. package/dist/chunks/NcIconSvgWrapper-CrnN5Sq5.cjs.map +0 -1
  777. package/dist/chunks/NcInputConfirmCancel-DA740BJ-.mjs.map +0 -1
  778. package/dist/chunks/NcInputConfirmCancel-Dz7-CkOl.cjs.map +0 -1
  779. package/dist/chunks/NcInputField-BNSfmQqu.mjs.map +0 -1
  780. package/dist/chunks/NcInputField-cT3u4gMS.cjs.map +0 -1
  781. package/dist/chunks/NcListItem-CnxZixD_.mjs.map +0 -1
  782. package/dist/chunks/NcListItem-DV4HPJWQ.cjs.map +0 -1
  783. package/dist/chunks/NcListItemIcon-BUthbF_v.cjs.map +0 -1
  784. package/dist/chunks/NcListItemIcon-CTfYEjBB.mjs.map +0 -1
  785. package/dist/chunks/NcPasswordField-DSdrAkZy.mjs.map +0 -1
  786. package/dist/chunks/NcPasswordField-DcFBNVHn.cjs.map +0 -1
  787. package/dist/chunks/NcPopover-CAJVK-MR.mjs.map +0 -1
  788. package/dist/chunks/NcPopover-QGSKWhSP.cjs.map +0 -1
  789. package/dist/chunks/NcProgressBar-CI_nOrPg.mjs.map +0 -1
  790. package/dist/chunks/NcProgressBar-lh4Gtdfr.cjs.map +0 -1
  791. package/dist/chunks/NcRelatedResourcesPanel-BR_ggojH.cjs.map +0 -1
  792. package/dist/chunks/NcRelatedResourcesPanel-DyvwxDjI.mjs.map +0 -1
  793. package/dist/chunks/NcRichContenteditable-B5-V1mov.cjs.map +0 -1
  794. package/dist/chunks/NcRichContenteditable-cpptFUeI.mjs.map +0 -1
  795. package/dist/chunks/NcRichText-CmuVmSzl.mjs.map +0 -1
  796. package/dist/chunks/NcRichText-DKesJDDM.cjs.map +0 -1
  797. package/dist/chunks/NcSelect-BUOuXJUQ.mjs.map +0 -1
  798. package/dist/chunks/NcSelect-CnLfkqdF.cjs.map +0 -1
  799. package/dist/chunks/NcSelectTags-D9-2HA1H.cjs.map +0 -1
  800. package/dist/chunks/NcSelectTags-hP98xYkg.mjs.map +0 -1
  801. package/dist/chunks/NcSelectUsers-DaHVPRPE.mjs.map +0 -1
  802. package/dist/chunks/NcSelectUsers-arPrkqH_.cjs.map +0 -1
  803. package/dist/chunks/NcSettingsInputText-BKoaCiQU.mjs.map +0 -1
  804. package/dist/chunks/NcSettingsInputText-D7eoCI2o.cjs.map +0 -1
  805. package/dist/chunks/NcSettingsSection-Bmo90KQR.cjs.map +0 -1
  806. package/dist/chunks/NcSettingsSection-fe_YIg-L.mjs.map +0 -1
  807. package/dist/chunks/NcSettingsSelectGroup-D0s0bzQI.cjs.map +0 -1
  808. package/dist/chunks/NcSettingsSelectGroup-SuQNKdqU.mjs.map +0 -1
  809. package/dist/chunks/NcTextArea-B2hcap39.cjs.map +0 -1
  810. package/dist/chunks/NcTextArea-BFLuhsEv.mjs.map +0 -1
  811. package/dist/chunks/NcTextField-Do6wBDGH.mjs.map +0 -1
  812. package/dist/chunks/NcTextField-Dyuxj4yu.cjs.map +0 -1
  813. package/dist/chunks/NcTimezonePicker-bIwFQlmV.mjs.map +0 -1
  814. package/dist/chunks/NcTimezonePicker-obgDIrK0.cjs.map +0 -1
  815. package/dist/chunks/NcUserBubble-BmPOx3MW.mjs.map +0 -1
  816. package/dist/chunks/NcUserBubble-BusyVqGW.cjs.map +0 -1
  817. package/dist/chunks/NcUserStatusIcon-CKPJ27oi.cjs.map +0 -1
  818. package/dist/chunks/NcUserStatusIcon-DQr5EGWZ.mjs.map +0 -1
  819. package/dist/chunks/ScopeComponent-CNZNqO-O.mjs.map +0 -1
  820. package/dist/chunks/ScopeComponent-CTlekHht.cjs.map +0 -1
  821. package/dist/chunks/_l10n-CW0YfIWk.mjs.map +0 -1
  822. package/dist/chunks/actionText-BcrK4uH1.cjs.map +0 -1
  823. package/dist/chunks/actionText-fFcUPi2g.mjs.map +0 -1
  824. package/dist/chunks/autolink-BAgL31EZ.cjs.map +0 -1
  825. package/dist/chunks/autolink-cbuFALXr.mjs.map +0 -1
  826. package/dist/chunks/index-56SXuvlv.mjs.map +0 -1
  827. package/dist/chunks/index-AlIgEQXL.cjs.map +0 -1
  828. package/dist/chunks/index-B8gPNa8c.mjs.map +0 -1
  829. package/dist/chunks/index-BV85rPB7.cjs.map +0 -1
  830. package/dist/chunks/index-Bz6q9mZw.mjs.map +0 -1
  831. package/dist/chunks/index-DIJxEozm.cjs.map +0 -1
  832. package/dist/chunks/referencePickerModal-C1Srl207.cjs.map +0 -1
  833. package/dist/chunks/referencePickerModal-CtMUY45l.mjs.map +0 -1
  834. package/dist/chunks/useTrapStackControl-CTZTSUOt.cjs.map +0 -1
  835. package/dist/chunks/useTrapStackControl-yqM2SDEs.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcButton-CWPBzbcC.mjs","sources":["../../src/components/NcButton/NcButton.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n### General description\nGeneral purpose button component. See props for different options.\n[Use material design icons only for icons](https://www.npmjs.com/package/vue-material-design-icons) and remember to set their size to 20.\n\n### Usage\n### Custom icon slot\nTo be used with `vue-material-design-icons` only. For icon classes use the `default-icon` slot.\nIt can be used with one or multiple actions.\n```\n<template>\n<div class=\"wrapper\">\n\t<!-- Style selector -->\n\t<div class=\"grid\">\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"style\" value=\"text\" name=\"style\" type=\"radio\">Text only</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"style\" value=\"icon\" name=\"style\" type=\"radio\">Icon only</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"style\" value=\"icontext\" name=\"style\" type=\"radio\">Icon and text</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"disabled\" type=\"checkbox\">Disabled</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"size\" value=\"small\" name=\"size\" type=\"radio\">Small</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"size\" value=\"normal\" name=\"size\" type=\"radio\">Normal (default)</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"size\" value=\"large\" name=\"size\" type=\"radio\">Large</NcCheckboxRadioSwitch>\n\t</div>\n\n\t<h5>Standard buttons</h5>\n\t<div class=\"grid\">\n\t\t<p>Tertiary, no background</p>\n\t\t<p>Tertiary</p>\n\t\t<p>Secondary</p>\n\t\t<p>Primary</p>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"tertiary-no-background\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"tertiary\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"primary\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t</div>\n\n\t<!-- Wide button -->\n\t<h5>Wide button</h5>\n\t<NcButton\n\t\t:disabled=\"disabled\"\n\t\t:size=\"size\"\n\t\t:wide=\"true\"\n\t\ttext=\"Example text\">\n\t\t<template #icon>\n\t\t\t<Video\n\t\t\t\t:size=\"20\" />\n\t\t</template>\n\t\tExample text\n\t</NcButton>\n\n\t<!-- Special buttons -->\n\t<h5>Special buttons</h5>\n\t<div class=\"grid\">\n\t\t<p>Success</p>\n\t\t<p>Warning</p>\n\t\t<p>Error</p>\n\t\t<p> - </p>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"success\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"warning\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"error\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<p> - </p>\n\t</div>\n</div>\n\n</template>\n<script>\nimport Video from 'vue-material-design-icons/Video.vue'\n\nexport default {\n\tcomponents: {\n\t\tVideo,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttoggled: false,\n\t\t\tdisabled: false,\n\t\t\tsize: 'normal',\n\t\t\tstyle: 'icontext',\n\t\t}\n\t}\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.wrapper {\n\tpadding: 0 12px;\n}\n\n.grid {\n\tdisplay: grid;\n\tgap: 12px;\n\tgrid-template-columns: 1fr 1fr 1fr 1fr;\n\tgrid-template-rows: repeat(auto-fill, auto);\n\tposition: relative;\n\tmargin: 12px 0;\n}\n\nh5 {\n\tfont-weight: bold;\n\tmargin: 40px 0 20px 0;\n}\n\np {\n\ttext-align: center;\n\tmargin: 4px 0 12px 0;\n\tcolor: var(--color-text-maxcontrast)\n}\n\nbutton {\n\tmargin: auto;\n}\n</style>\n```\n\n### Alignment\nSometimes it is required to change the icon alignment on the button, like for switching between pages as in following example:\n\n```vue\n<template>\n\t<div style=\"display: flex; flex-direction: column; gap: 12px;\">\n\t\t<NcButton aria-label=\"center (default)\" variant=\"secondary\" wide>\n\t\t\t<template #icon>\n\t\t\t\t<IconLeft :size=\"20\" />\n\t\t\t</template>\n\t\t\tcenter (default)\n\t\t</NcButton>\n\t\t<NcButton alignment=\"center-reverse\" aria-label=\"center-reverse\" variant=\"secondary\" wide>\n\t\t\t<template #icon>\n\t\t\t\t<IconRight :size=\"20\" />\n\t\t\t</template>\n\t\t\tcenter-reverse\n\t\t</NcButton>\n\t\t<div style=\"display: flex; gap: 12px;\">\n\t\t\t<div style=\"display: flex; flex-direction: column; gap: 12px; flex: 1\">\n\t\t\t\t<NcButton alignment=\"start\" aria-label=\"start\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconLeft :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tstart\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton alignment=\"start-reverse\" aria-label=\"start-reverse\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconRight :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tstart-reverse\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<div style=\"display: flex; flex-direction: column; gap: 12px; flex: 1\">\n\t\t\t\t<NcButton alignment=\"end\" aria-label=\"end\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconLeft :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tend\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton alignment=\"end-reverse\" aria-label=\"end-reverse\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconRight :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tend-reverse\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport IconLeft from 'vue-material-design-icons/ArrowLeft.vue'\nimport IconRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tcomponents: {\n\t\tIconLeft,\n\t\tIconRight,\n\t},\n}\n</script>\n```\n\n### Pressed state\n\nIt is possible to make the button stateful by adding a pressed state, e.g. if you like to create a favorite button.\nThe button will have the required `aria` attribute for accessibility and visual style (`primary` when pressed, and the configured variant otherwise).\n\nDo not change `text` or `aria-label` of the pressed/unpressed button. See: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-pressed\n\n```vue\n<template>\n\t<div>\n\t\t<div style=\"display: flex; gap: 12px;\">\n\t\t\t<NcButton :pressed.sync=\"isFavorite\" aria-label=\"Favorite\" variant=\"tertiary-no-background\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconStar v-if=\"isFavorite\" :size=\"20\" />\n\t\t\t\t\t<IconStarOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\n\t\t\t<NcButton :pressed.sync=\"isFavorite\" variant=\"tertiary\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconStar v-if=\"isFavorite\" :size=\"20\" />\n\t\t\t\t\t<IconStarOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tFavorite\n\t\t\t</NcButton>\n\n\t\t\t<NcButton :pressed.sync=\"isFavorite\" aria-label=\"Favorite\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconStar v-if=\"isFavorite\" :size=\"20\" />\n\t\t\t\t\t<IconStarOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<div>\n\t\t\tIt is {{ isFavorite ? 'a' : 'not a' }} favorite.\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport IconStar from 'vue-material-design-icons/Star.vue'\nimport IconStarOutline from 'vue-material-design-icons/StarOutline.vue'\n\nexport default {\n\tcomponents: {\n\t\tIconStar,\n\t\tIconStarOutline,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisFavorite: false,\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggleFavorite() {\n\t\t\tthis.isFavorite = !this.isFavorite\n\t\t},\n\t},\n}\n</script>\n```\n\n### Usage example: Sorting table columns\nThe standard way to implement sortable table column headers should be like this:\n\n```vue\n<template>\n\t<table>\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<th :aria-sorted=\"sortedName\" class=\"row-name\">\n\t\t\t\t\t<NcButton alignment=\"start-reverse\"\n\t\t\t\t\t\t:wide=\"true\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t@click=\"sortName\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<IconDown v-if=\"sortedName === 'ascending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t\t<IconUp v-else-if=\"sortedName === 'descending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<span class=\"table-header\">Name</span>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</th>\n\t\t\t\t<th :aria-sorted=\"sortedSize\" class=\"row-size\">\n\t\t\t\t\t<NcButton alignment=\"end\"\n\t\t\t\t\t\t:wide=\"true\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t@click=\"sortSize\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<IconDown v-if=\"sortedSize === 'ascending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t\t<IconUp v-else-if=\"sortedSize === 'descending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<span class=\"table-header\">Size</span>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<tr>\n\t\t\t\t<td class=\"row-name\">Lorem ipsum</td>\n\t\t\t\t<td class=\"row-size\">8 MiB</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</template>\n<script>\nimport IconUp from 'vue-material-design-icons/MenuUp.vue'\nimport IconDown from 'vue-material-design-icons/MenuDown.vue'\n\nexport default {\n\tcomponents: {\n\t\tIconUp,\n\t\tIconDown,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsortedName: null,\n\t\t\tsortedSize: null,\n\t\t}\n\t},\n\tmethods: {\n\t\tsortName() {\n\t\t\tif (this.sortedName === 'ascending') {\n\t\t\t\tthis.sortedName = 'descending'\n\t\t\t} else if (this.sortedName === 'descending') {\n\t\t\t\tthis.sortedName = null\n\t\t\t} else {\n\t\t\t\tthis.sortedName = 'ascending'\n\t\t\t}\n\t\t},\n\t\tsortSize() {\n\t\t\tif (this.sortedSize === 'ascending') {\n\t\t\t\tthis.sortedSize = 'descending'\n\t\t\t} else if (this.sortedSize === 'descending') {\n\t\t\t\tthis.sortedSize = null\n\t\t\t} else {\n\t\t\t\tthis.sortedSize = 'ascending'\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style>\ntable {\n\ttable-layout: fixed;\n\twidth: 300px;\n}\n\ntd.row-name {\n\tpadding-inline-start: 16px;\n}\n\ntd.row-size {\n\ttext-align: end;\n\tpadding-inline-end: 16px;\n}\n\n.table-header {\n\tfont-weight: normal;\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.sort-icon {\n\tcolor: var(--color-text-maxcontrast);\n\tposition: relative;\n\tinset-inline: -10px;\n}\n\n.row-size .sort-icon {\n\tinset-inline: 10px;\n}\n</style>\n```\n\n</docs>\n\n<script>\nimport { isLegacy32 } from '../../utils/legacy.ts'\nimport { logger } from '../../utils/logger.ts'\n\nexport default {\n\tname: 'NcButton',\n\n\tinject: {\n\t\tgetNcPopoverTriggerAttrs: {\n\t\t\tfrom: 'NcPopover:trigger:attrs',\n\t\t\tdefault: () => () => ({}),\n\t\t},\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Set the text and icon alignment\n\t\t *\n\t\t * @default 'center'\n\t\t */\n\t\talignment: {\n\t\t\ttype: String,\n\t\t\tdefault: 'center',\n\t\t\tvalidator: (alignment) => ['start', 'start-reverse', 'center', 'center-reverse', 'end', 'end-reverse'].includes(alignment),\n\t\t},\n\n\t\t/**\n\t\t * Toggles the disabled state of the button on and off.\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Specify the button size\n\t\t * Accepted values: `'small'`, `'normal'` (default), `'large'`\n\t\t */\n\t\tsize: {\n\t\t\ttype: String,\n\t\t\tdefault: 'normal',\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['small', 'normal', 'large'].includes(value)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Specifies the HTML button type.\n\t\t * Accepted values: submit, reset, button.\n\t\t *\n\t\t * For legacy reasons this can also be used to set the variant of the button (color schema).\n\t\t * This is discouraged but the accepted values are:\n\t\t * primary, secondary, tertiary, tertiary-no-background, tertiary-on-primary, error, warning, success.\n\t\t *\n\t\t * @default 'secondary' (will change with v9)\n\t\t * @deprecated The behavior will change in v9 to only allow the native HTML button types - use `variant` instead for setting the appearance of the button.\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['primary', 'secondary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].includes(value)\n\t\t\t\t\t|| ['submit', 'reset', 'button'].includes(value)\n\t\t\t},\n\n\t\t\tdefault: 'secondary',\n\t\t},\n\n\t\t/**\n\t\t * Specifies the button native type\n\t\t * Accepted values: submit, reset, button. If left empty,\n\t\t * the default \"button\" type will be used.\n\t\t *\n\t\t * @deprecated use `type` instead - will be removed with v9\n\t\t */\n\t\tnativeType: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['submit', 'reset', 'button'].indexOf(value) !== -1\n\t\t\t},\n\n\t\t\tdefault: 'button',\n\t\t},\n\n\t\t/**\n\t\t * Specifies whether the button should span all the available width.\n\t\t * By default, buttons span the whole width of the container.\n\t\t */\n\t\twide: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Always try to provide an aria-label to your button. Make it more\n\t\t * specific than the button's name by provide some more context. E.g. if\n\t\t * the name of the button is \"send\" in the Mail app, the aria label could\n\t\t * be \"Send email\".\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Providing the href attribute turns the button component into an `a`\n\t\t * element.\n\t\t */\n\t\thref: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Target for the `a` element if `href` is set.\n\t\t */\n\t\ttarget: {\n\t\t\ttype: String,\n\t\t\tdefault: '_self',\n\t\t},\n\n\t\t/**\n\t\t * Providing the download attribute with href downloads file when clicking.\n\t\t */\n\t\tdownload: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Providing the to attribute turns the button component into a `router-link`\n\t\t * element. Takes precedence over the href attribute.\n\t\t */\n\t\tto: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Pass in `true` if you want the matching behaviour of `router-link` to\n\t\t * be non-inclusive: https://router.vuejs.org/api/#exact\n\t\t */\n\t\texact: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * @deprecated To be removed in @nextcloud/vue 9. Migration guide: remove ariaHidden prop from NcAction* components.\n\t\t * @todo Add a check in @nextcloud/vue 9 that this prop is not provided,\n\t\t * otherwise root element will inherit incorrect aria-hidden.\n\t\t */\n\t\tariaHidden: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * The pressed state of the button if it has a checked state\n\t\t * This will add the `aria-pressed` attribute and for the button to have the primary style in checked state.\n\t\t *\n\t\t * Pressed state is not supported for links\n\t\t */\n\t\tpressed: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Specifies the button variant.\n\t\t *\n\t\t * Accepted values: primary, secondary, tertiary, tertiary-no-background, tertiary-on-primary, error, warning, success.\n\t\t *\n\t\t * @default 'secondary'\n\t\t * @since 8.24.0\n\t\t */\n\t\tvariant: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['primary', 'secondary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].includes(value)\n\t\t\t},\n\n\t\t\tdefault: 'secondary',\n\t\t},\n\t},\n\n\temits: ['update:pressed', 'click'],\n\n\tcomputed: {\n\t\t/**\n\t\t * The real type to be used for the button, enforces `primary` for pressed state and, if stateful button, any other type for not pressed state\n\t\t * Otherwise the type property is used.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\trealVariant() {\n\t\t\t// Force *primary* when pressed\n\t\t\tif (this.pressed) {\n\t\t\t\treturn 'primary'\n\t\t\t}\n\t\t\t// If not pressed but button is configured as stateful button then the type must not be primary\n\t\t\tif (this.pressed === false && (this.type === 'primary' || this.variant === 'primary')) {\n\t\t\t\treturn 'secondary'\n\t\t\t}\n\t\t\t// handle legacy behavior\n\t\t\tif (this.type !== 'secondary' && ['primary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].includes(this.type)) {\n\t\t\t\treturn this.type\n\t\t\t}\n\t\t\t// otherwise use the configured variant\n\t\t\treturn this.variant\n\t\t},\n\n\t\t/**\n\t\t * The HTML button type\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\trealType() {\n\t\t\tif (typeof this.pressed === 'boolean') {\n\t\t\t\treturn 'button'\n\t\t\t}\n\t\t\t// Handle legacy behavior\n\t\t\tif (this.nativeType !== 'button') {\n\t\t\t\treturn this.nativeType\n\t\t\t}\n\t\t\t// Also handling legacy behavior: Ensure we do not conflict here\n\t\t\tif (['primary', 'secondary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].includes(this.type)) {\n\t\t\t\treturn this.nativeType\n\t\t\t}\n\t\t\t// otherwise use the type\n\t\t\treturn this.type\n\t\t},\n\n\t\t/**\n\t\t * The variant is one of the tertiary- ones\n\t\t */\n\t\tisTertiary() {\n\t\t\treturn this.realVariant.startsWith('tertiary')\n\t\t},\n\n\t\t/**\n\t\t * The flexbox alignment of the button content\n\t\t */\n\t\tflexAlignment() {\n\t\t\treturn this.alignment.split('-')[0]\n\t\t},\n\n\t\t/**\n\t\t * If the button content should be reversed (icon on the end)\n\t\t */\n\t\tisReverseAligned() {\n\t\t\treturn this.alignment.includes('-')\n\t\t},\n\n\t\tncPopoverTriggerAttrs() {\n\t\t\treturn this.getNcPopoverTriggerAttrs()\n\t\t},\n\t},\n\n\t/**\n\t * The render function to display the component\n\t *\n\t * @param {Function} h The function to create VNodes\n\t * @return {object|undefined} The created VNode\n\t */\n\trender(h) {\n\t\tconst hasText = !!this.$slots.default\n\t\tconst hasIcon = this.$slots?.icon\n\n\t\t/**\n\t\t * Always fill either the text prop or the ariaLabel one.\n\t\t */\n\t\tif (!hasText && !this.ariaLabel) {\n\t\t\tlogger.warn('You need to fill either the text or the ariaLabel props in the button component.', {\n\t\t\t\ttext: this.$slots.default?.[0]?.text,\n\t\t\t\tariaLabel: this.ariaLabel,\n\t\t\t}, this)\n\t\t}\n\n\t\tconst isLink = (this.to || this.href)\n\n\t\tconst hasPressed = !isLink && typeof this.pressed === 'boolean'\n\n\t\tconst renderButton = ({ href, navigate, isActive, isExactActive } = {}) => h(\n\t\t\tisLink ? 'a' : 'button',\n\t\t\t{\n\t\t\t\tclass: [\n\t\t\t\t\t'button-vue',\n\t\t\t\t\t`button-vue--size-${this.size}`,\n\t\t\t\t\t{\n\t\t\t\t\t\t'button-vue--icon-only': hasIcon && !hasText,\n\t\t\t\t\t\t'button-vue--text-only': hasText && !hasIcon,\n\t\t\t\t\t\t'button-vue--icon-and-text': hasIcon && hasText,\n\t\t\t\t\t\t[`button-vue--vue-${this.realVariant}`]: this.realVariant,\n\t\t\t\t\t\t'button-vue--legacy': isLegacy32,\n\t\t\t\t\t\t'button-vue--tertiary': this.isTertiary,\n\t\t\t\t\t\t'button-vue--wide': this.wide,\n\t\t\t\t\t\t[`button-vue--${this.flexAlignment}`]: this.flexAlignment !== 'center',\n\t\t\t\t\t\t'button-vue--reverse': this.isReverseAligned,\n\t\t\t\t\t\tactive: isActive,\n\t\t\t\t\t\t'router-link-exact-active': isExactActive,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tattrs: {\n\t\t\t\t\t'aria-label': this.ariaLabel,\n\t\t\t\t\t'aria-pressed': hasPressed ? this.pressed.toString() : undefined,\n\t\t\t\t\tdisabled: this.disabled,\n\t\t\t\t\ttype: isLink ? null : this.realType,\n\t\t\t\t\trole: isLink ? 'button' : null,\n\t\t\t\t\thref: this.to ? href : (this.href || null),\n\t\t\t\t\ttarget: isLink ? (this.target || '_self') : null,\n\t\t\t\t\trel: isLink ? 'nofollow noreferrer noopener' : null,\n\t\t\t\t\tdownload: (!this.to && this.href && this.download) ? this.download : null,\n\t\t\t\t\t// If this button is used as a popover trigger, we need to apply trigger attrs, e.g. aria attributes\n\t\t\t\t\t...this.ncPopoverTriggerAttrs,\n\t\t\t\t\t// Inherit all the component attrs\n\t\t\t\t\t...this.$attrs,\n\t\t\t\t},\n\t\t\t\ton: {\n\t\t\t\t\t...this.$listeners,\n\t\t\t\t\tclick: ($event) => {\n\t\t\t\t\t\tif (hasPressed) {\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * Update the current pressed state of the button (if the `pressed` property was configured)\n\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t * @property {boolean} newValue The new `pressed`-state\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tthis.$emit('update:pressed', !this.pressed)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to both navigate and emit the click event\n\t\t\t\t\t\tthis.$emit('click', $event)\n\t\t\t\t\t\tnavigate?.($event)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t[\n\t\t\t\th('span', { class: 'button-vue__wrapper' }, [\n\t\t\t\t\thasIcon\n\t\t\t\t\t\t? h('span', {\n\t\t\t\t\t\t\t\tclass: 'button-vue__icon',\n\t\t\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\t\t\t'aria-hidden': 'true',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}, [this.$slots.icon])\n\t\t\t\t\t\t: null,\n\t\t\t\t\thasText ? h('span', { class: 'button-vue__text' }, [this.$slots.default]) : null,\n\t\t\t\t]),\n\t\t\t],\n\t\t)\n\n\t\t// If we have a router-link, we wrap the button in it\n\t\tif (this.to) {\n\t\t\treturn h('router-link', {\n\t\t\t\tprops: {\n\t\t\t\t\tcustom: true,\n\t\t\t\t\tto: this.to,\n\t\t\t\t\texact: this.exact,\n\t\t\t\t},\n\t\t\t\tscopedSlots: {\n\t\t\t\t\tdefault: renderButton,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\t// Otherwise we simply return the button\n\t\treturn renderButton()\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\t--button-size: var(--default-clickable-area);\n\t--button-inner-size: calc(var(--button-size) - 4px); // without the outer border\n\t--button-radius: var(--border-radius-element, calc(var(--button-size) / 2));\n\t--button-padding-default: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));\n\t--button-padding: var(--default-grid-baseline) var(--button-padding-default);\n\n\t// General styles\n\t// by default use secondary styling\n\tcolor: var(--color-primary-element-light-text);\n\tbackground-color: var(--color-primary-element-light);\n\tborder: 1px solid var(--color-primary-element-light-hover);\n\tborder-bottom-width: 2px;\n\tborder-radius: var(--button-radius);\n\tbox-sizing: border-box;\n\t// adjust position and size\n\tposition: relative;\n\twidth: fit-content;\n\toverflow: hidden;\n\tpadding-block: 1px 0; // center the content as border is 1px top and 2px bottom\n\tpadding-inline: var(--button-padding);\n\tmin-height: var(--button-size);\n\tmin-width: var(--button-size);\n\t// display setup\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttransition-property: color, border-color, background-color;\n\ttransition-duration: 0.1s;\n\ttransition-timing-function: linear;\n\tcursor: pointer;\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\n\t&--size-small {\n\t\t--button-size: var(--clickable-area-small, 24px);\n\t\t--button-radius: var(--border-radius); // make the border radius even smaller for small buttons\n\t}\n\n\t&--size-large {\n\t\t--button-size: var(--clickable-area-large, 48px);\n\t}\n\n\t// Cursor pointer on element and all children\n\t&,\n\t& :deep(*) {\n\t\tcursor: pointer;\n\t}\n\n\t// No outline feedback for focus. Handled with a toggled class in js (see data)\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\topacity: $opacity_disabled;\n\t\t// Gives a wash out effect\n\t\tfilter: saturate($opacity_normal);\n\n\t\t& :deep(*) {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t// Default button type\n\t&:hover:not(:disabled) {\n\t\tbackground-color: var(--color-primary-element-light-hover);\n\t}\n\n\t// Back to the default color for this button when active\n\t// TODO: add ripple effect\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-light);\n\t}\n\n\t&__wrapper {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t}\n\n\t&--end &__wrapper {\n\t\tjustify-content: end;\n\t}\n\t&--start &__wrapper {\n\t\tjustify-content: start;\n\t}\n\t&--reverse &__wrapper {\n\t\tflex-direction: row-reverse;\n\t}\n\n\t&--reverse#{&}--icon-and-text {\n\t\t--button-padding: var(--button-padding-default) var(--default-grid-baseline);\n\t}\n\n\t&__icon {\n\t\t--default-clickable-area: var(--button-inner-size); // ensure icons align with current button size\n\t\theight: var(--button-inner-size);\n\t\twidth: var(--button-inner-size);\n\t\tmin-height: var(--button-inner-size);\n\t\tmin-width: var(--button-inner-size);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t// For small buttons we need to adjust the icon size\n\t&--size-small &__icon {\n\t\t:deep(> *) {\n\t\t\tmax-height: 16px;\n\t\t\tmax-width: 16px;\n\t\t}\n\t\t:deep(svg) {\n\t\t\theight: 16px;\n\t\t\twidth: 16px;\n\t\t}\n\t}\n\n\t&__text {\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 1px;\n\t\tpadding: 2px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t// Icon-only button\n\t&--icon-only {\n\t\t--button-padding: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));\n\t\tline-height: 1;\n\t\twidth: var(--button-size) !important;\n\t}\n\n\t// Text-only button\n\t&--text-only {\n\t\t--button-padding: var(--button-padding-default);\n\n\t\t& .button-vue__text {\n\t\t\tmargin-inline: 4px;\n\t\t}\n\t}\n\n\t// Wide button spans the whole width of the container\n\t&--wide {\n\t\twidth: 100%;\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\n\t\t&.button-vue--vue-tertiary-on-primary {\n\t\t\toutline: 2px solid var(--color-primary-element-text);\n\t\t\tborder-radius: var(--border-radius-element, var(--border-radius));\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Button types\n\n\t// Primary\n\t&--vue-primary {\n\t\tbackground-color: var(--color-primary-element);\n\t\tborder-color: var(--color-primary-element-hover);\n\t\tcolor: var(--color-primary-element-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-primary-element-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t// Secondary\n\t&--vue-secondary {\n\t\tbackground-color: var(--color-primary-element-light);\n\t\tborder-color: var(--color-primary-element-light-hover);\n\t\tcolor: var(--color-primary-element-light-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tcolor: var(--color-primary-element-light-text);\n\t\t\tbackground-color: var(--color-primary-element-light-hover);\n\t\t}\n\t}\n\n\t// Tertiary\n\t&--tertiary,\n\t&--vue-tertiary {\n\t\tbackground-color: transparent;\n\t\tborder-color: transparent;\n\t\tcolor: var(--color-main-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Tertiary, no background\n\t&--vue-tertiary-no-background {\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Tertiary on primary color (like the header)\n\t&--vue-tertiary-on-primary {\n\t\tcolor: var(--color-primary-element-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Success\n\t&--vue-success {\n\t\tbackground-color: var(--color-success);\n\t\tborder-color: var(--color-success-hover);\n\t\tcolor: var(--color-success-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-success-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// : add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-success);\n\t\t}\n\t}\n\n\t// Warning\n\t&--vue-warning {\n\t\tbackground-color: var(--color-warning);\n\t\tborder-color: var(--color-warning-hover);\n\t\tcolor: var(--color-warning-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-warning-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-warning);\n\t\t}\n\t}\n\n\t// Error\n\t&--vue-error {\n\t\tbackground-color: var(--color-error);\n\t\tborder-color: var(--color-error-hover);\n\t\tcolor: var(--color-error-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-error-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-error);\n\t\t}\n\t}\n\n\t// before Nextcloud 32\n\t&--legacy {\n\t\t--button-inner-size: var(--button-size);\n\t\tborder: none;\n\t\tpadding-block: 0;\n\n\t\t&.button-vue--vue-error,\n\t\t&.button-vue--vue-success,\n\t\t&.button-vue--vue-warning {\n\t\t\tcolor: white;\n\t\t}\n\t}\n}\n\n</style>\n"],"names":[],"mappings":";;;AA0aA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,QAAA;AAAA,IACA,0BAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,OAAA;IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA,CAAA,cAAA,CAAA,SAAA,iBAAA,UAAA,kBAAA,OAAA,aAAA,EAAA,SAAA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA,OAAA;AACA,eAAA,CAAA,SAAA,UAAA,OAAA,EAAA,SAAA,KAAA;AAAA,MACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA,OAAA;AACA,eAAA,CAAA,WAAA,aAAA,YAAA,0BAAA,uBAAA,SAAA,WAAA,SAAA,EAAA,SAAA,KAAA,KACA,CAAA,UAAA,SAAA,QAAA,EAAA,SAAA,KAAA;AAAA,MACA;AAAA,MAEA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA,OAAA;AACA,eAAA,CAAA,UAAA,SAAA,QAAA,EAAA,QAAA,KAAA,MAAA;AAAA,MACA;AAAA,MAEA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,IAAA;AAAA,MACA,MAAA,CAAA,QAAA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,YAAA;AAAA,MACA,MAAA;AAAA;AAAA,MAEA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,SAAA;AAAA,MACA,MAAA;AAAA;AAAA,MAEA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA,OAAA;AACA,eAAA,CAAA,WAAA,aAAA,YAAA,0BAAA,uBAAA,SAAA,WAAA,SAAA,EAAA,SAAA,KAAA;AAAA,MACA;AAAA,MAEA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA,CAAA,kBAAA,OAAA;AAAA,EAEA,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,cAAA;AAEA,UAAA,KAAA,SAAA;AACA,eAAA;AAAA,MACA;AAEA,UAAA,KAAA,YAAA,UAAA,KAAA,SAAA,aAAA,KAAA,YAAA,YAAA;AACA,eAAA;AAAA,MACA;AAEA,UAAA,KAAA,SAAA,eAAA,CAAA,WAAA,YAAA,0BAAA,uBAAA,SAAA,WAAA,SAAA,EAAA,SAAA,KAAA,IAAA,GAAA;AACA,eAAA,KAAA;AAAA,MACA;AAEA,aAAA,KAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,WAAA;AACA,UAAA,OAAA,KAAA,YAAA,WAAA;AACA,eAAA;AAAA,MACA;AAEA,UAAA,KAAA,eAAA,UAAA;AACA,eAAA,KAAA;AAAA,MACA;AAEA,UAAA,CAAA,WAAA,aAAA,YAAA,0BAAA,uBAAA,SAAA,WAAA,SAAA,EAAA,SAAA,KAAA,IAAA,GAAA;AACA,eAAA,KAAA;AAAA,MACA;AAEA,aAAA,KAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AACA,aAAA,KAAA,YAAA,WAAA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAA;AACA,aAAA,KAAA,UAAA,MAAA,GAAA,EAAA,CAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAA;AACA,aAAA,KAAA,UAAA,SAAA,GAAA;AAAA,IACA;AAAA,IAEA,wBAAA;AACA,aAAA,KAAA,yBAAA;AAAA,IACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAA,GAAA;AACA,UAAA,UAAA,CAAA,CAAA,KAAA,OAAA;AACA,UAAA,UAAA,KAAA,QAAA;AAKA,QAAA,CAAA,WAAA,CAAA,KAAA,WAAA;AACA,aAAA,KAAA,oFAAA;AAAA,QACA,MAAA,KAAA,OAAA,UAAA,CAAA,GAAA;AAAA,QACA,WAAA,KAAA;AAAA,MACA,GAAA,IAAA;AAAA,IACA;AAEA,UAAA,SAAA,KAAA,MAAA,KAAA;AAEA,UAAA,aAAA,CAAA,UAAA,OAAA,KAAA,YAAA;AAEA,UAAA,eAAA,CAAA,EAAA,MAAA,UAAA,UAAA,cAAA,IAAA,CAAA,MAAA;AAAA,MACA,SAAA,MAAA;AAAA,MACA;AAAA,QACA,OAAA;AAAA,UACA;AAAA,UACA,oBAAA,KAAA,IAAA;AAAA,UACA;AAAA,YACA,yBAAA,WAAA,CAAA;AAAA,YACA,yBAAA,WAAA,CAAA;AAAA,YACA,6BAAA,WAAA;AAAA,YACA,CAAA,mBAAA,KAAA,WAAA,EAAA,GAAA,KAAA;AAAA,YACA,sBAAA;AAAA,YACA,wBAAA,KAAA;AAAA,YACA,oBAAA,KAAA;AAAA,YACA,CAAA,eAAA,KAAA,aAAA,EAAA,GAAA,KAAA,kBAAA;AAAA,YACA,uBAAA,KAAA;AAAA,YACA,QAAA;AAAA,YACA,4BAAA;AAAA,UACA;AAAA,QACA;AAAA,QACA,OAAA;AAAA,UACA,cAAA,KAAA;AAAA,UACA,gBAAA,aAAA,KAAA,QAAA,SAAA,IAAA;AAAA,UACA,UAAA,KAAA;AAAA,UACA,MAAA,SAAA,OAAA,KAAA;AAAA,UACA,MAAA,SAAA,WAAA;AAAA,UACA,MAAA,KAAA,KAAA,OAAA,KAAA,QAAA;AAAA,UACA,QAAA,SAAA,KAAA,UAAA,UAAA;AAAA,UACA,KAAA,SAAA,iCAAA;AAAA,UACA,UAAA,CAAA,KAAA,MAAA,KAAA,QAAA,KAAA,WAAA,KAAA,WAAA;AAAA;AAAA,UAEA,GAAA,KAAA;AAAA;AAAA,UAEA,GAAA,KAAA;AAAA,QACA;AAAA,QACA,IAAA;AAAA,UACA,GAAA,KAAA;AAAA,UACA,OAAA,CAAA,WAAA;AACA,gBAAA,YAAA;AAMA,mBAAA,MAAA,kBAAA,CAAA,KAAA,OAAA;AAAA,YACA;AAEA,iBAAA,MAAA,SAAA,MAAA;AACA,uBAAA,MAAA;AAAA,UACA;AAAA,QACA;AAAA,MACA;AAAA,MACA;AAAA,QACA,EAAA,QAAA,EAAA,OAAA,sBAAA,GAAA;AAAA,UACA,UACA,EAAA,QAAA;AAAA,YACA,OAAA;AAAA,YACA,OAAA;AAAA,cACA,eAAA;AAAA,YACA;AAAA,UACA,GAAA,CAAA,KAAA,OAAA,IAAA,CAAA,IACA;AAAA,UACA,UAAA,EAAA,QAAA,EAAA,OAAA,sBAAA,CAAA,KAAA,OAAA,OAAA,CAAA,IAAA;AAAA,QACA,CAAA;AAAA,MACA;AAAA,IACA;AAGA,QAAA,KAAA,IAAA;AACA,aAAA,EAAA,eAAA;AAAA,QACA,OAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA,KAAA;AAAA,UACA,OAAA,KAAA;AAAA,QACA;AAAA,QACA,aAAA;AAAA,UACA,SAAA;AAAA,QACA;AAAA,MACA,CAAA;AAAA,IACA;AAEA,WAAA,aAAA;AAAA,EACA;AACA;;;;;;;;;;;;"}
@@ -0,0 +1,329 @@
1
+ require('../assets/NcButton-D8AOCliw.css');
2
+ "use strict";
3
+ const legacy = require("./legacy-KBXhWdRy.cjs");
4
+ const logger = require("./logger-3HuiEIF6.cjs");
5
+ const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
6
+ const _sfc_main = {
7
+ name: "NcButton",
8
+ inject: {
9
+ getNcPopoverTriggerAttrs: {
10
+ from: "NcPopover:trigger:attrs",
11
+ default: () => () => ({})
12
+ }
13
+ },
14
+ props: {
15
+ /**
16
+ * Set the text and icon alignment
17
+ *
18
+ * @default 'center'
19
+ */
20
+ alignment: {
21
+ type: String,
22
+ default: "center",
23
+ validator: (alignment) => ["start", "start-reverse", "center", "center-reverse", "end", "end-reverse"].includes(alignment)
24
+ },
25
+ /**
26
+ * Toggles the disabled state of the button on and off.
27
+ */
28
+ disabled: {
29
+ type: Boolean,
30
+ default: false
31
+ },
32
+ /**
33
+ * Specify the button size
34
+ * Accepted values: `'small'`, `'normal'` (default), `'large'`
35
+ */
36
+ size: {
37
+ type: String,
38
+ default: "normal",
39
+ validator(value) {
40
+ return ["small", "normal", "large"].includes(value);
41
+ }
42
+ },
43
+ /**
44
+ * Specifies the HTML button type.
45
+ * Accepted values: submit, reset, button.
46
+ *
47
+ * For legacy reasons this can also be used to set the variant of the button (color schema).
48
+ * This is discouraged but the accepted values are:
49
+ * primary, secondary, tertiary, tertiary-no-background, tertiary-on-primary, error, warning, success.
50
+ *
51
+ * @default 'secondary' (will change with v9)
52
+ * @deprecated The behavior will change in v9 to only allow the native HTML button types - use `variant` instead for setting the appearance of the button.
53
+ */
54
+ type: {
55
+ type: String,
56
+ validator(value) {
57
+ return ["primary", "secondary", "tertiary", "tertiary-no-background", "tertiary-on-primary", "error", "warning", "success"].includes(value) || ["submit", "reset", "button"].includes(value);
58
+ },
59
+ default: "secondary"
60
+ },
61
+ /**
62
+ * Specifies the button native type
63
+ * Accepted values: submit, reset, button. If left empty,
64
+ * the default "button" type will be used.
65
+ *
66
+ * @deprecated use `type` instead - will be removed with v9
67
+ */
68
+ nativeType: {
69
+ type: String,
70
+ validator(value) {
71
+ return ["submit", "reset", "button"].indexOf(value) !== -1;
72
+ },
73
+ default: "button"
74
+ },
75
+ /**
76
+ * Specifies whether the button should span all the available width.
77
+ * By default, buttons span the whole width of the container.
78
+ */
79
+ wide: {
80
+ type: Boolean,
81
+ default: false
82
+ },
83
+ /**
84
+ * Always try to provide an aria-label to your button. Make it more
85
+ * specific than the button's name by provide some more context. E.g. if
86
+ * the name of the button is "send" in the Mail app, the aria label could
87
+ * be "Send email".
88
+ */
89
+ ariaLabel: {
90
+ type: String,
91
+ default: null
92
+ },
93
+ /**
94
+ * Providing the href attribute turns the button component into an `a`
95
+ * element.
96
+ */
97
+ href: {
98
+ type: String,
99
+ default: null
100
+ },
101
+ /**
102
+ * Target for the `a` element if `href` is set.
103
+ */
104
+ target: {
105
+ type: String,
106
+ default: "_self"
107
+ },
108
+ /**
109
+ * Providing the download attribute with href downloads file when clicking.
110
+ */
111
+ download: {
112
+ type: String,
113
+ default: null
114
+ },
115
+ /**
116
+ * Providing the to attribute turns the button component into a `router-link`
117
+ * element. Takes precedence over the href attribute.
118
+ */
119
+ to: {
120
+ type: [String, Object],
121
+ default: null
122
+ },
123
+ /**
124
+ * Pass in `true` if you want the matching behaviour of `router-link` to
125
+ * be non-inclusive: https://router.vuejs.org/api/#exact
126
+ */
127
+ exact: {
128
+ type: Boolean,
129
+ default: false
130
+ },
131
+ /**
132
+ * @deprecated To be removed in @nextcloud/vue 9. Migration guide: remove ariaHidden prop from NcAction* components.
133
+ * @todo Add a check in @nextcloud/vue 9 that this prop is not provided,
134
+ * otherwise root element will inherit incorrect aria-hidden.
135
+ */
136
+ ariaHidden: {
137
+ type: Boolean,
138
+ // eslint-disable-next-line vue/no-boolean-default
139
+ default: null
140
+ },
141
+ /**
142
+ * The pressed state of the button if it has a checked state
143
+ * This will add the `aria-pressed` attribute and for the button to have the primary style in checked state.
144
+ *
145
+ * Pressed state is not supported for links
146
+ */
147
+ pressed: {
148
+ type: Boolean,
149
+ // eslint-disable-next-line vue/no-boolean-default
150
+ default: null
151
+ },
152
+ /**
153
+ * Specifies the button variant.
154
+ *
155
+ * Accepted values: primary, secondary, tertiary, tertiary-no-background, tertiary-on-primary, error, warning, success.
156
+ *
157
+ * @default 'secondary'
158
+ * @since 8.24.0
159
+ */
160
+ variant: {
161
+ type: String,
162
+ validator(value) {
163
+ return ["primary", "secondary", "tertiary", "tertiary-no-background", "tertiary-on-primary", "error", "warning", "success"].includes(value);
164
+ },
165
+ default: "secondary"
166
+ }
167
+ },
168
+ emits: ["update:pressed", "click"],
169
+ computed: {
170
+ /**
171
+ * The real type to be used for the button, enforces `primary` for pressed state and, if stateful button, any other type for not pressed state
172
+ * Otherwise the type property is used.
173
+ *
174
+ * @return {string}
175
+ */
176
+ realVariant() {
177
+ if (this.pressed) {
178
+ return "primary";
179
+ }
180
+ if (this.pressed === false && (this.type === "primary" || this.variant === "primary")) {
181
+ return "secondary";
182
+ }
183
+ if (this.type !== "secondary" && ["primary", "tertiary", "tertiary-no-background", "tertiary-on-primary", "error", "warning", "success"].includes(this.type)) {
184
+ return this.type;
185
+ }
186
+ return this.variant;
187
+ },
188
+ /**
189
+ * The HTML button type
190
+ *
191
+ * @return {string}
192
+ */
193
+ realType() {
194
+ if (typeof this.pressed === "boolean") {
195
+ return "button";
196
+ }
197
+ if (this.nativeType !== "button") {
198
+ return this.nativeType;
199
+ }
200
+ if (["primary", "secondary", "tertiary", "tertiary-no-background", "tertiary-on-primary", "error", "warning", "success"].includes(this.type)) {
201
+ return this.nativeType;
202
+ }
203
+ return this.type;
204
+ },
205
+ /**
206
+ * The variant is one of the tertiary- ones
207
+ */
208
+ isTertiary() {
209
+ return this.realVariant.startsWith("tertiary");
210
+ },
211
+ /**
212
+ * The flexbox alignment of the button content
213
+ */
214
+ flexAlignment() {
215
+ return this.alignment.split("-")[0];
216
+ },
217
+ /**
218
+ * If the button content should be reversed (icon on the end)
219
+ */
220
+ isReverseAligned() {
221
+ return this.alignment.includes("-");
222
+ },
223
+ ncPopoverTriggerAttrs() {
224
+ return this.getNcPopoverTriggerAttrs();
225
+ }
226
+ },
227
+ /**
228
+ * The render function to display the component
229
+ *
230
+ * @param {Function} h The function to create VNodes
231
+ * @return {object|undefined} The created VNode
232
+ */
233
+ render(h) {
234
+ const hasText = !!this.$slots.default;
235
+ const hasIcon = this.$slots?.icon;
236
+ if (!hasText && !this.ariaLabel) {
237
+ logger.logger.warn("You need to fill either the text or the ariaLabel props in the button component.", {
238
+ text: this.$slots.default?.[0]?.text,
239
+ ariaLabel: this.ariaLabel
240
+ }, this);
241
+ }
242
+ const isLink = this.to || this.href;
243
+ const hasPressed = !isLink && typeof this.pressed === "boolean";
244
+ const renderButton = ({ href, navigate, isActive, isExactActive } = {}) => h(
245
+ isLink ? "a" : "button",
246
+ {
247
+ class: [
248
+ "button-vue",
249
+ `button-vue--size-${this.size}`,
250
+ {
251
+ "button-vue--icon-only": hasIcon && !hasText,
252
+ "button-vue--text-only": hasText && !hasIcon,
253
+ "button-vue--icon-and-text": hasIcon && hasText,
254
+ [`button-vue--vue-${this.realVariant}`]: this.realVariant,
255
+ "button-vue--legacy": legacy.isLegacy32,
256
+ "button-vue--tertiary": this.isTertiary,
257
+ "button-vue--wide": this.wide,
258
+ [`button-vue--${this.flexAlignment}`]: this.flexAlignment !== "center",
259
+ "button-vue--reverse": this.isReverseAligned,
260
+ active: isActive,
261
+ "router-link-exact-active": isExactActive
262
+ }
263
+ ],
264
+ attrs: {
265
+ "aria-label": this.ariaLabel,
266
+ "aria-pressed": hasPressed ? this.pressed.toString() : void 0,
267
+ disabled: this.disabled,
268
+ type: isLink ? null : this.realType,
269
+ role: isLink ? "button" : null,
270
+ href: this.to ? href : this.href || null,
271
+ target: isLink ? this.target || "_self" : null,
272
+ rel: isLink ? "nofollow noreferrer noopener" : null,
273
+ download: !this.to && this.href && this.download ? this.download : null,
274
+ // If this button is used as a popover trigger, we need to apply trigger attrs, e.g. aria attributes
275
+ ...this.ncPopoverTriggerAttrs,
276
+ // Inherit all the component attrs
277
+ ...this.$attrs
278
+ },
279
+ on: {
280
+ ...this.$listeners,
281
+ click: ($event) => {
282
+ if (hasPressed) {
283
+ this.$emit("update:pressed", !this.pressed);
284
+ }
285
+ this.$emit("click", $event);
286
+ navigate?.($event);
287
+ }
288
+ }
289
+ },
290
+ [
291
+ h("span", { class: "button-vue__wrapper" }, [
292
+ hasIcon ? h("span", {
293
+ class: "button-vue__icon",
294
+ attrs: {
295
+ "aria-hidden": "true"
296
+ }
297
+ }, [this.$slots.icon]) : null,
298
+ hasText ? h("span", { class: "button-vue__text" }, [this.$slots.default]) : null
299
+ ])
300
+ ]
301
+ );
302
+ if (this.to) {
303
+ return h("router-link", {
304
+ props: {
305
+ custom: true,
306
+ to: this.to,
307
+ exact: this.exact
308
+ },
309
+ scopedSlots: {
310
+ default: renderButton
311
+ }
312
+ });
313
+ }
314
+ return renderButton();
315
+ }
316
+ };
317
+ const _sfc_render = null;
318
+ const _sfc_staticRenderFns = null;
319
+ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
320
+ _sfc_main,
321
+ _sfc_render,
322
+ _sfc_staticRenderFns,
323
+ false,
324
+ null,
325
+ "474ee0b9"
326
+ );
327
+ const NcButton = __component__.exports;
328
+ exports.NcButton = NcButton;
329
+ //# sourceMappingURL=NcButton-DOsCAjiE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NcButton-DOsCAjiE.cjs","sources":["../../src/components/NcButton/NcButton.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n### General description\nGeneral purpose button component. See props for different options.\n[Use material design icons only for icons](https://www.npmjs.com/package/vue-material-design-icons) and remember to set their size to 20.\n\n### Usage\n### Custom icon slot\nTo be used with `vue-material-design-icons` only. For icon classes use the `default-icon` slot.\nIt can be used with one or multiple actions.\n```\n<template>\n<div class=\"wrapper\">\n\t<!-- Style selector -->\n\t<div class=\"grid\">\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"style\" value=\"text\" name=\"style\" type=\"radio\">Text only</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"style\" value=\"icon\" name=\"style\" type=\"radio\">Icon only</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"style\" value=\"icontext\" name=\"style\" type=\"radio\">Icon and text</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"disabled\" type=\"checkbox\">Disabled</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"size\" value=\"small\" name=\"size\" type=\"radio\">Small</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"size\" value=\"normal\" name=\"size\" type=\"radio\">Normal (default)</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"size\" value=\"large\" name=\"size\" type=\"radio\">Large</NcCheckboxRadioSwitch>\n\t</div>\n\n\t<h5>Standard buttons</h5>\n\t<div class=\"grid\">\n\t\t<p>Tertiary, no background</p>\n\t\t<p>Tertiary</p>\n\t\t<p>Secondary</p>\n\t\t<p>Primary</p>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"tertiary-no-background\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"tertiary\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\taria-label=\"Example text\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"primary\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t</div>\n\n\t<!-- Wide button -->\n\t<h5>Wide button</h5>\n\t<NcButton\n\t\t:disabled=\"disabled\"\n\t\t:size=\"size\"\n\t\t:wide=\"true\"\n\t\ttext=\"Example text\">\n\t\t<template #icon>\n\t\t\t<Video\n\t\t\t\t:size=\"20\" />\n\t\t</template>\n\t\tExample text\n\t</NcButton>\n\n\t<!-- Special buttons -->\n\t<h5>Special buttons</h5>\n\t<div class=\"grid\">\n\t\t<p>Success</p>\n\t\t<p>Warning</p>\n\t\t<p>Error</p>\n\t\t<p> - </p>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"success\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"warning\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:size=\"size\"\n\t\t\tvariant=\"error\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<p> - </p>\n\t</div>\n</div>\n\n</template>\n<script>\nimport Video from 'vue-material-design-icons/Video.vue'\n\nexport default {\n\tcomponents: {\n\t\tVideo,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttoggled: false,\n\t\t\tdisabled: false,\n\t\t\tsize: 'normal',\n\t\t\tstyle: 'icontext',\n\t\t}\n\t}\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.wrapper {\n\tpadding: 0 12px;\n}\n\n.grid {\n\tdisplay: grid;\n\tgap: 12px;\n\tgrid-template-columns: 1fr 1fr 1fr 1fr;\n\tgrid-template-rows: repeat(auto-fill, auto);\n\tposition: relative;\n\tmargin: 12px 0;\n}\n\nh5 {\n\tfont-weight: bold;\n\tmargin: 40px 0 20px 0;\n}\n\np {\n\ttext-align: center;\n\tmargin: 4px 0 12px 0;\n\tcolor: var(--color-text-maxcontrast)\n}\n\nbutton {\n\tmargin: auto;\n}\n</style>\n```\n\n### Alignment\nSometimes it is required to change the icon alignment on the button, like for switching between pages as in following example:\n\n```vue\n<template>\n\t<div style=\"display: flex; flex-direction: column; gap: 12px;\">\n\t\t<NcButton aria-label=\"center (default)\" variant=\"secondary\" wide>\n\t\t\t<template #icon>\n\t\t\t\t<IconLeft :size=\"20\" />\n\t\t\t</template>\n\t\t\tcenter (default)\n\t\t</NcButton>\n\t\t<NcButton alignment=\"center-reverse\" aria-label=\"center-reverse\" variant=\"secondary\" wide>\n\t\t\t<template #icon>\n\t\t\t\t<IconRight :size=\"20\" />\n\t\t\t</template>\n\t\t\tcenter-reverse\n\t\t</NcButton>\n\t\t<div style=\"display: flex; gap: 12px;\">\n\t\t\t<div style=\"display: flex; flex-direction: column; gap: 12px; flex: 1\">\n\t\t\t\t<NcButton alignment=\"start\" aria-label=\"start\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconLeft :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tstart\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton alignment=\"start-reverse\" aria-label=\"start-reverse\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconRight :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tstart-reverse\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<div style=\"display: flex; flex-direction: column; gap: 12px; flex: 1\">\n\t\t\t\t<NcButton alignment=\"end\" aria-label=\"end\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconLeft :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tend\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton alignment=\"end-reverse\" aria-label=\"end-reverse\" variant=\"secondary\" wide>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconRight :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tend-reverse\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport IconLeft from 'vue-material-design-icons/ArrowLeft.vue'\nimport IconRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tcomponents: {\n\t\tIconLeft,\n\t\tIconRight,\n\t},\n}\n</script>\n```\n\n### Pressed state\n\nIt is possible to make the button stateful by adding a pressed state, e.g. if you like to create a favorite button.\nThe button will have the required `aria` attribute for accessibility and visual style (`primary` when pressed, and the configured variant otherwise).\n\nDo not change `text` or `aria-label` of the pressed/unpressed button. See: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-pressed\n\n```vue\n<template>\n\t<div>\n\t\t<div style=\"display: flex; gap: 12px;\">\n\t\t\t<NcButton :pressed.sync=\"isFavorite\" aria-label=\"Favorite\" variant=\"tertiary-no-background\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconStar v-if=\"isFavorite\" :size=\"20\" />\n\t\t\t\t\t<IconStarOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\n\t\t\t<NcButton :pressed.sync=\"isFavorite\" variant=\"tertiary\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconStar v-if=\"isFavorite\" :size=\"20\" />\n\t\t\t\t\t<IconStarOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tFavorite\n\t\t\t</NcButton>\n\n\t\t\t<NcButton :pressed.sync=\"isFavorite\" aria-label=\"Favorite\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconStar v-if=\"isFavorite\" :size=\"20\" />\n\t\t\t\t\t<IconStarOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<div>\n\t\t\tIt is {{ isFavorite ? 'a' : 'not a' }} favorite.\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport IconStar from 'vue-material-design-icons/Star.vue'\nimport IconStarOutline from 'vue-material-design-icons/StarOutline.vue'\n\nexport default {\n\tcomponents: {\n\t\tIconStar,\n\t\tIconStarOutline,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisFavorite: false,\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggleFavorite() {\n\t\t\tthis.isFavorite = !this.isFavorite\n\t\t},\n\t},\n}\n</script>\n```\n\n### Usage example: Sorting table columns\nThe standard way to implement sortable table column headers should be like this:\n\n```vue\n<template>\n\t<table>\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<th :aria-sorted=\"sortedName\" class=\"row-name\">\n\t\t\t\t\t<NcButton alignment=\"start-reverse\"\n\t\t\t\t\t\t:wide=\"true\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t@click=\"sortName\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<IconDown v-if=\"sortedName === 'ascending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t\t<IconUp v-else-if=\"sortedName === 'descending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<span class=\"table-header\">Name</span>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</th>\n\t\t\t\t<th :aria-sorted=\"sortedSize\" class=\"row-size\">\n\t\t\t\t\t<NcButton alignment=\"end\"\n\t\t\t\t\t\t:wide=\"true\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t@click=\"sortSize\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<IconDown v-if=\"sortedSize === 'ascending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t\t<IconUp v-else-if=\"sortedSize === 'descending'\" class=\"sort-icon\" :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<span class=\"table-header\">Size</span>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<tr>\n\t\t\t\t<td class=\"row-name\">Lorem ipsum</td>\n\t\t\t\t<td class=\"row-size\">8 MiB</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</template>\n<script>\nimport IconUp from 'vue-material-design-icons/MenuUp.vue'\nimport IconDown from 'vue-material-design-icons/MenuDown.vue'\n\nexport default {\n\tcomponents: {\n\t\tIconUp,\n\t\tIconDown,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsortedName: null,\n\t\t\tsortedSize: null,\n\t\t}\n\t},\n\tmethods: {\n\t\tsortName() {\n\t\t\tif (this.sortedName === 'ascending') {\n\t\t\t\tthis.sortedName = 'descending'\n\t\t\t} else if (this.sortedName === 'descending') {\n\t\t\t\tthis.sortedName = null\n\t\t\t} else {\n\t\t\t\tthis.sortedName = 'ascending'\n\t\t\t}\n\t\t},\n\t\tsortSize() {\n\t\t\tif (this.sortedSize === 'ascending') {\n\t\t\t\tthis.sortedSize = 'descending'\n\t\t\t} else if (this.sortedSize === 'descending') {\n\t\t\t\tthis.sortedSize = null\n\t\t\t} else {\n\t\t\t\tthis.sortedSize = 'ascending'\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style>\ntable {\n\ttable-layout: fixed;\n\twidth: 300px;\n}\n\ntd.row-name {\n\tpadding-inline-start: 16px;\n}\n\ntd.row-size {\n\ttext-align: end;\n\tpadding-inline-end: 16px;\n}\n\n.table-header {\n\tfont-weight: normal;\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.sort-icon {\n\tcolor: var(--color-text-maxcontrast);\n\tposition: relative;\n\tinset-inline: -10px;\n}\n\n.row-size .sort-icon {\n\tinset-inline: 10px;\n}\n</style>\n```\n\n</docs>\n\n<script>\nimport { isLegacy32 } from '../../utils/legacy.ts'\nimport { logger } from '../../utils/logger.ts'\n\nexport default {\n\tname: 'NcButton',\n\n\tinject: {\n\t\tgetNcPopoverTriggerAttrs: {\n\t\t\tfrom: 'NcPopover:trigger:attrs',\n\t\t\tdefault: () => () => ({}),\n\t\t},\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Set the text and icon alignment\n\t\t *\n\t\t * @default 'center'\n\t\t */\n\t\talignment: {\n\t\t\ttype: String,\n\t\t\tdefault: 'center',\n\t\t\tvalidator: (alignment) => ['start', 'start-reverse', 'center', 'center-reverse', 'end', 'end-reverse'].includes(alignment),\n\t\t},\n\n\t\t/**\n\t\t * Toggles the disabled state of the button on and off.\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Specify the button size\n\t\t * Accepted values: `'small'`, `'normal'` (default), `'large'`\n\t\t */\n\t\tsize: {\n\t\t\ttype: String,\n\t\t\tdefault: 'normal',\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['small', 'normal', 'large'].includes(value)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Specifies the HTML button type.\n\t\t * Accepted values: submit, reset, button.\n\t\t *\n\t\t * For legacy reasons this can also be used to set the variant of the button (color schema).\n\t\t * This is discouraged but the accepted values are:\n\t\t * primary, secondary, tertiary, tertiary-no-background, tertiary-on-primary, error, warning, success.\n\t\t *\n\t\t * @default 'secondary' (will change with v9)\n\t\t * @deprecated The behavior will change in v9 to only allow the native HTML button types - use `variant` instead for setting the appearance of the button.\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['primary', 'secondary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].includes(value)\n\t\t\t\t\t|| ['submit', 'reset', 'button'].includes(value)\n\t\t\t},\n\n\t\t\tdefault: 'secondary',\n\t\t},\n\n\t\t/**\n\t\t * Specifies the button native type\n\t\t * Accepted values: submit, reset, button. If left empty,\n\t\t * the default \"button\" type will be used.\n\t\t *\n\t\t * @deprecated use `type` instead - will be removed with v9\n\t\t */\n\t\tnativeType: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['submit', 'reset', 'button'].indexOf(value) !== -1\n\t\t\t},\n\n\t\t\tdefault: 'button',\n\t\t},\n\n\t\t/**\n\t\t * Specifies whether the button should span all the available width.\n\t\t * By default, buttons span the whole width of the container.\n\t\t */\n\t\twide: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Always try to provide an aria-label to your button. Make it more\n\t\t * specific than the button's name by provide some more context. E.g. if\n\t\t * the name of the button is \"send\" in the Mail app, the aria label could\n\t\t * be \"Send email\".\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Providing the href attribute turns the button component into an `a`\n\t\t * element.\n\t\t */\n\t\thref: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Target for the `a` element if `href` is set.\n\t\t */\n\t\ttarget: {\n\t\t\ttype: String,\n\t\t\tdefault: '_self',\n\t\t},\n\n\t\t/**\n\t\t * Providing the download attribute with href downloads file when clicking.\n\t\t */\n\t\tdownload: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Providing the to attribute turns the button component into a `router-link`\n\t\t * element. Takes precedence over the href attribute.\n\t\t */\n\t\tto: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Pass in `true` if you want the matching behaviour of `router-link` to\n\t\t * be non-inclusive: https://router.vuejs.org/api/#exact\n\t\t */\n\t\texact: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * @deprecated To be removed in @nextcloud/vue 9. Migration guide: remove ariaHidden prop from NcAction* components.\n\t\t * @todo Add a check in @nextcloud/vue 9 that this prop is not provided,\n\t\t * otherwise root element will inherit incorrect aria-hidden.\n\t\t */\n\t\tariaHidden: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * The pressed state of the button if it has a checked state\n\t\t * This will add the `aria-pressed` attribute and for the button to have the primary style in checked state.\n\t\t *\n\t\t * Pressed state is not supported for links\n\t\t */\n\t\tpressed: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Specifies the button variant.\n\t\t *\n\t\t * Accepted values: primary, secondary, tertiary, tertiary-no-background, tertiary-on-primary, error, warning, success.\n\t\t *\n\t\t * @default 'secondary'\n\t\t * @since 8.24.0\n\t\t */\n\t\tvariant: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['primary', 'secondary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].includes(value)\n\t\t\t},\n\n\t\t\tdefault: 'secondary',\n\t\t},\n\t},\n\n\temits: ['update:pressed', 'click'],\n\n\tcomputed: {\n\t\t/**\n\t\t * The real type to be used for the button, enforces `primary` for pressed state and, if stateful button, any other type for not pressed state\n\t\t * Otherwise the type property is used.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\trealVariant() {\n\t\t\t// Force *primary* when pressed\n\t\t\tif (this.pressed) {\n\t\t\t\treturn 'primary'\n\t\t\t}\n\t\t\t// If not pressed but button is configured as stateful button then the type must not be primary\n\t\t\tif (this.pressed === false && (this.type === 'primary' || this.variant === 'primary')) {\n\t\t\t\treturn 'secondary'\n\t\t\t}\n\t\t\t// handle legacy behavior\n\t\t\tif (this.type !== 'secondary' && ['primary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].includes(this.type)) {\n\t\t\t\treturn this.type\n\t\t\t}\n\t\t\t// otherwise use the configured variant\n\t\t\treturn this.variant\n\t\t},\n\n\t\t/**\n\t\t * The HTML button type\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\trealType() {\n\t\t\tif (typeof this.pressed === 'boolean') {\n\t\t\t\treturn 'button'\n\t\t\t}\n\t\t\t// Handle legacy behavior\n\t\t\tif (this.nativeType !== 'button') {\n\t\t\t\treturn this.nativeType\n\t\t\t}\n\t\t\t// Also handling legacy behavior: Ensure we do not conflict here\n\t\t\tif (['primary', 'secondary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].includes(this.type)) {\n\t\t\t\treturn this.nativeType\n\t\t\t}\n\t\t\t// otherwise use the type\n\t\t\treturn this.type\n\t\t},\n\n\t\t/**\n\t\t * The variant is one of the tertiary- ones\n\t\t */\n\t\tisTertiary() {\n\t\t\treturn this.realVariant.startsWith('tertiary')\n\t\t},\n\n\t\t/**\n\t\t * The flexbox alignment of the button content\n\t\t */\n\t\tflexAlignment() {\n\t\t\treturn this.alignment.split('-')[0]\n\t\t},\n\n\t\t/**\n\t\t * If the button content should be reversed (icon on the end)\n\t\t */\n\t\tisReverseAligned() {\n\t\t\treturn this.alignment.includes('-')\n\t\t},\n\n\t\tncPopoverTriggerAttrs() {\n\t\t\treturn this.getNcPopoverTriggerAttrs()\n\t\t},\n\t},\n\n\t/**\n\t * The render function to display the component\n\t *\n\t * @param {Function} h The function to create VNodes\n\t * @return {object|undefined} The created VNode\n\t */\n\trender(h) {\n\t\tconst hasText = !!this.$slots.default\n\t\tconst hasIcon = this.$slots?.icon\n\n\t\t/**\n\t\t * Always fill either the text prop or the ariaLabel one.\n\t\t */\n\t\tif (!hasText && !this.ariaLabel) {\n\t\t\tlogger.warn('You need to fill either the text or the ariaLabel props in the button component.', {\n\t\t\t\ttext: this.$slots.default?.[0]?.text,\n\t\t\t\tariaLabel: this.ariaLabel,\n\t\t\t}, this)\n\t\t}\n\n\t\tconst isLink = (this.to || this.href)\n\n\t\tconst hasPressed = !isLink && typeof this.pressed === 'boolean'\n\n\t\tconst renderButton = ({ href, navigate, isActive, isExactActive } = {}) => h(\n\t\t\tisLink ? 'a' : 'button',\n\t\t\t{\n\t\t\t\tclass: [\n\t\t\t\t\t'button-vue',\n\t\t\t\t\t`button-vue--size-${this.size}`,\n\t\t\t\t\t{\n\t\t\t\t\t\t'button-vue--icon-only': hasIcon && !hasText,\n\t\t\t\t\t\t'button-vue--text-only': hasText && !hasIcon,\n\t\t\t\t\t\t'button-vue--icon-and-text': hasIcon && hasText,\n\t\t\t\t\t\t[`button-vue--vue-${this.realVariant}`]: this.realVariant,\n\t\t\t\t\t\t'button-vue--legacy': isLegacy32,\n\t\t\t\t\t\t'button-vue--tertiary': this.isTertiary,\n\t\t\t\t\t\t'button-vue--wide': this.wide,\n\t\t\t\t\t\t[`button-vue--${this.flexAlignment}`]: this.flexAlignment !== 'center',\n\t\t\t\t\t\t'button-vue--reverse': this.isReverseAligned,\n\t\t\t\t\t\tactive: isActive,\n\t\t\t\t\t\t'router-link-exact-active': isExactActive,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tattrs: {\n\t\t\t\t\t'aria-label': this.ariaLabel,\n\t\t\t\t\t'aria-pressed': hasPressed ? this.pressed.toString() : undefined,\n\t\t\t\t\tdisabled: this.disabled,\n\t\t\t\t\ttype: isLink ? null : this.realType,\n\t\t\t\t\trole: isLink ? 'button' : null,\n\t\t\t\t\thref: this.to ? href : (this.href || null),\n\t\t\t\t\ttarget: isLink ? (this.target || '_self') : null,\n\t\t\t\t\trel: isLink ? 'nofollow noreferrer noopener' : null,\n\t\t\t\t\tdownload: (!this.to && this.href && this.download) ? this.download : null,\n\t\t\t\t\t// If this button is used as a popover trigger, we need to apply trigger attrs, e.g. aria attributes\n\t\t\t\t\t...this.ncPopoverTriggerAttrs,\n\t\t\t\t\t// Inherit all the component attrs\n\t\t\t\t\t...this.$attrs,\n\t\t\t\t},\n\t\t\t\ton: {\n\t\t\t\t\t...this.$listeners,\n\t\t\t\t\tclick: ($event) => {\n\t\t\t\t\t\tif (hasPressed) {\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * Update the current pressed state of the button (if the `pressed` property was configured)\n\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t * @property {boolean} newValue The new `pressed`-state\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tthis.$emit('update:pressed', !this.pressed)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to both navigate and emit the click event\n\t\t\t\t\t\tthis.$emit('click', $event)\n\t\t\t\t\t\tnavigate?.($event)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t[\n\t\t\t\th('span', { class: 'button-vue__wrapper' }, [\n\t\t\t\t\thasIcon\n\t\t\t\t\t\t? h('span', {\n\t\t\t\t\t\t\t\tclass: 'button-vue__icon',\n\t\t\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\t\t\t'aria-hidden': 'true',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}, [this.$slots.icon])\n\t\t\t\t\t\t: null,\n\t\t\t\t\thasText ? h('span', { class: 'button-vue__text' }, [this.$slots.default]) : null,\n\t\t\t\t]),\n\t\t\t],\n\t\t)\n\n\t\t// If we have a router-link, we wrap the button in it\n\t\tif (this.to) {\n\t\t\treturn h('router-link', {\n\t\t\t\tprops: {\n\t\t\t\t\tcustom: true,\n\t\t\t\t\tto: this.to,\n\t\t\t\t\texact: this.exact,\n\t\t\t\t},\n\t\t\t\tscopedSlots: {\n\t\t\t\t\tdefault: renderButton,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\t// Otherwise we simply return the button\n\t\treturn renderButton()\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\t--button-size: var(--default-clickable-area);\n\t--button-inner-size: calc(var(--button-size) - 4px); // without the outer border\n\t--button-radius: var(--border-radius-element, calc(var(--button-size) / 2));\n\t--button-padding-default: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));\n\t--button-padding: var(--default-grid-baseline) var(--button-padding-default);\n\n\t// General styles\n\t// by default use secondary styling\n\tcolor: var(--color-primary-element-light-text);\n\tbackground-color: var(--color-primary-element-light);\n\tborder: 1px solid var(--color-primary-element-light-hover);\n\tborder-bottom-width: 2px;\n\tborder-radius: var(--button-radius);\n\tbox-sizing: border-box;\n\t// adjust position and size\n\tposition: relative;\n\twidth: fit-content;\n\toverflow: hidden;\n\tpadding-block: 1px 0; // center the content as border is 1px top and 2px bottom\n\tpadding-inline: var(--button-padding);\n\tmin-height: var(--button-size);\n\tmin-width: var(--button-size);\n\t// display setup\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttransition-property: color, border-color, background-color;\n\ttransition-duration: 0.1s;\n\ttransition-timing-function: linear;\n\tcursor: pointer;\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\n\t&--size-small {\n\t\t--button-size: var(--clickable-area-small, 24px);\n\t\t--button-radius: var(--border-radius); // make the border radius even smaller for small buttons\n\t}\n\n\t&--size-large {\n\t\t--button-size: var(--clickable-area-large, 48px);\n\t}\n\n\t// Cursor pointer on element and all children\n\t&,\n\t& :deep(*) {\n\t\tcursor: pointer;\n\t}\n\n\t// No outline feedback for focus. Handled with a toggled class in js (see data)\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\topacity: $opacity_disabled;\n\t\t// Gives a wash out effect\n\t\tfilter: saturate($opacity_normal);\n\n\t\t& :deep(*) {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t// Default button type\n\t&:hover:not(:disabled) {\n\t\tbackground-color: var(--color-primary-element-light-hover);\n\t}\n\n\t// Back to the default color for this button when active\n\t// TODO: add ripple effect\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-light);\n\t}\n\n\t&__wrapper {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t}\n\n\t&--end &__wrapper {\n\t\tjustify-content: end;\n\t}\n\t&--start &__wrapper {\n\t\tjustify-content: start;\n\t}\n\t&--reverse &__wrapper {\n\t\tflex-direction: row-reverse;\n\t}\n\n\t&--reverse#{&}--icon-and-text {\n\t\t--button-padding: var(--button-padding-default) var(--default-grid-baseline);\n\t}\n\n\t&__icon {\n\t\t--default-clickable-area: var(--button-inner-size); // ensure icons align with current button size\n\t\theight: var(--button-inner-size);\n\t\twidth: var(--button-inner-size);\n\t\tmin-height: var(--button-inner-size);\n\t\tmin-width: var(--button-inner-size);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t// For small buttons we need to adjust the icon size\n\t&--size-small &__icon {\n\t\t:deep(> *) {\n\t\t\tmax-height: 16px;\n\t\t\tmax-width: 16px;\n\t\t}\n\t\t:deep(svg) {\n\t\t\theight: 16px;\n\t\t\twidth: 16px;\n\t\t}\n\t}\n\n\t&__text {\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 1px;\n\t\tpadding: 2px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t// Icon-only button\n\t&--icon-only {\n\t\t--button-padding: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));\n\t\tline-height: 1;\n\t\twidth: var(--button-size) !important;\n\t}\n\n\t// Text-only button\n\t&--text-only {\n\t\t--button-padding: var(--button-padding-default);\n\n\t\t& .button-vue__text {\n\t\t\tmargin-inline: 4px;\n\t\t}\n\t}\n\n\t// Wide button spans the whole width of the container\n\t&--wide {\n\t\twidth: 100%;\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\n\t\t&.button-vue--vue-tertiary-on-primary {\n\t\t\toutline: 2px solid var(--color-primary-element-text);\n\t\t\tborder-radius: var(--border-radius-element, var(--border-radius));\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Button types\n\n\t// Primary\n\t&--vue-primary {\n\t\tbackground-color: var(--color-primary-element);\n\t\tborder-color: var(--color-primary-element-hover);\n\t\tcolor: var(--color-primary-element-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-primary-element-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t// Secondary\n\t&--vue-secondary {\n\t\tbackground-color: var(--color-primary-element-light);\n\t\tborder-color: var(--color-primary-element-light-hover);\n\t\tcolor: var(--color-primary-element-light-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tcolor: var(--color-primary-element-light-text);\n\t\t\tbackground-color: var(--color-primary-element-light-hover);\n\t\t}\n\t}\n\n\t// Tertiary\n\t&--tertiary,\n\t&--vue-tertiary {\n\t\tbackground-color: transparent;\n\t\tborder-color: transparent;\n\t\tcolor: var(--color-main-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Tertiary, no background\n\t&--vue-tertiary-no-background {\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Tertiary on primary color (like the header)\n\t&--vue-tertiary-on-primary {\n\t\tcolor: var(--color-primary-element-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Success\n\t&--vue-success {\n\t\tbackground-color: var(--color-success);\n\t\tborder-color: var(--color-success-hover);\n\t\tcolor: var(--color-success-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-success-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// : add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-success);\n\t\t}\n\t}\n\n\t// Warning\n\t&--vue-warning {\n\t\tbackground-color: var(--color-warning);\n\t\tborder-color: var(--color-warning-hover);\n\t\tcolor: var(--color-warning-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-warning-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-warning);\n\t\t}\n\t}\n\n\t// Error\n\t&--vue-error {\n\t\tbackground-color: var(--color-error);\n\t\tborder-color: var(--color-error-hover);\n\t\tcolor: var(--color-error-text);\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-error-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-error);\n\t\t}\n\t}\n\n\t// before Nextcloud 32\n\t&--legacy {\n\t\t--button-inner-size: var(--button-size);\n\t\tborder: none;\n\t\tpadding-block: 0;\n\n\t\t&.button-vue--vue-error,\n\t\t&.button-vue--vue-success,\n\t\t&.button-vue--vue-warning {\n\t\t\tcolor: white;\n\t\t}\n\t}\n}\n\n</style>\n"],"names":["logger","isLegacy32"],"mappings":"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"}