@studiolxd/brand 50.0.0 → 51.0.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 (594) hide show
  1. package/dist/_shared/alert.js +98 -0
  2. package/dist/_shared/asyncmultiselect.js +133 -0
  3. package/dist/_shared/asyncselect.js +122 -0
  4. package/dist/_shared/brandmessagescontext.js +27 -11
  5. package/dist/_shared/{calendargrid.js → calendar.js} +11 -1
  6. package/dist/_shared/closebutton.js +34 -0
  7. package/dist/_shared/colorpicker.js +141 -122
  8. package/dist/_shared/connectorrequestsummary.js +46 -0
  9. package/dist/_shared/{copy-to-clipboard.js → copy.js} +8 -1
  10. package/dist/_shared/datepicker.js +80 -67
  11. package/dist/_shared/default-render-link.js +6 -1
  12. package/dist/_shared/dotsbutton.js +31 -0
  13. package/dist/_shared/env.js +13 -2
  14. package/dist/_shared/field-optional.js +9 -0
  15. package/dist/_shared/fieldshell.js +85 -0
  16. package/dist/_shared/fileupload.js +237 -0
  17. package/dist/_shared/focusable-when-disabled.js +10 -0
  18. package/dist/_shared/imagecropdialog.js +65 -57
  19. package/dist/_shared/inputfield.js +92 -0
  20. package/dist/_shared/inputphone.js +91 -0
  21. package/dist/_shared/legalfooter.js +42 -0
  22. package/dist/_shared/logo.js +10 -9
  23. package/dist/_shared/menubutton.js +31 -0
  24. package/dist/_shared/modal.js +69 -0
  25. package/dist/_shared/multiselect.js +128 -0
  26. package/dist/_shared/notificationbutton.js +35 -0
  27. package/dist/_shared/numberinput.js +104 -0
  28. package/dist/_shared/otpinput.js +119 -0
  29. package/dist/_shared/pagination.js +198 -0
  30. package/dist/_shared/prevnextnav.js +93 -0
  31. package/dist/_shared/progressbar.js +25 -23
  32. package/dist/_shared/publicpageshell.js +39 -0
  33. package/dist/_shared/requiredinput.js +23 -0
  34. package/dist/_shared/searchform.js +65 -0
  35. package/dist/_shared/select.js +163 -0
  36. package/dist/_shared/sheet.js +58 -0
  37. package/dist/_shared/slider.js +43 -0
  38. package/dist/_shared/spinner.js +5 -0
  39. package/dist/_shared/table.js +140 -0
  40. package/dist/_shared/timeselect.js +91 -0
  41. package/dist/_shared/tokens.js +116 -11
  42. package/dist/_shared/typingindicator.js +32 -0
  43. package/dist/_shared/untrustedtext.js +27 -23
  44. package/dist/_types/atoms/AsyncMultiSelect/AsyncMultiSelect.d.ts +6 -1
  45. package/dist/_types/atoms/AsyncSelect/AsyncSelect.d.ts +6 -1
  46. package/dist/_types/atoms/Autocomplete/Autocomplete.d.ts +6 -1
  47. package/dist/_types/atoms/Button/Button.d.ts +13 -0
  48. package/dist/_types/atoms/CloseButton/CloseButton.d.ts +9 -0
  49. package/dist/_types/atoms/DescriptionList/DescriptionList.d.ts +4 -4
  50. package/dist/_types/atoms/EmbedFrame/EmbedFrame.d.ts +13 -1
  51. package/dist/_types/atoms/Fieldset/Fieldset.d.ts +11 -5
  52. package/dist/_types/atoms/FileUpload/FileUpload.d.ts +7 -2
  53. package/dist/_types/atoms/Input/Input.d.ts +1 -1
  54. package/dist/_types/atoms/InputPhone/InputPhone.d.ts +6 -1
  55. package/dist/_types/atoms/Link/Link.d.ts +7 -3
  56. package/dist/_types/atoms/List/List.d.ts +4 -2
  57. package/dist/_types/atoms/Logo/Logo.d.ts +11 -5
  58. package/dist/_types/atoms/Logo/index.d.ts +1 -1
  59. package/dist/_types/atoms/MultiSelect/MultiSelect.d.ts +11 -1
  60. package/dist/_types/atoms/NumberBadge/NumberBadge.d.ts +14 -2
  61. package/dist/_types/atoms/NumberInput/NumberInput.d.ts +1 -1
  62. package/dist/_types/atoms/OtpInput/OtpInput.d.ts +2 -0
  63. package/dist/_types/atoms/Paragraph/Paragraph.d.ts +14 -2
  64. package/dist/_types/atoms/Popover/Popover.d.ts +5 -1
  65. package/dist/_types/atoms/ProgressBar/ProgressBar.d.ts +12 -4
  66. package/dist/_types/atoms/Sparkline/Sparkline.d.ts +2 -0
  67. package/dist/_types/atoms/StepMarker/StepMarker.d.ts +9 -4
  68. package/dist/_types/atoms/Tag/Tag.d.ts +13 -2
  69. package/dist/_types/atoms/Text/Text.d.ts +11 -5
  70. package/dist/_types/atoms/TimeSelect/TimeSelect.d.ts +6 -1
  71. package/dist/_types/atoms/Toggle/Toggle.d.ts +9 -0
  72. package/dist/_types/atoms/Tooltip/Tooltip.d.ts +11 -13
  73. package/dist/_types/constants/default-render-link.d.ts +8 -1
  74. package/dist/_types/constants/env.d.ts +9 -5
  75. package/dist/_types/constants/field-optional.d.ts +14 -0
  76. package/dist/_types/constants/focusable-when-disabled.d.ts +2 -0
  77. package/dist/_types/messages/BrandMessages.d.ts +53 -14
  78. package/dist/_types/messages/BrandMessagesContext.d.ts +534 -12
  79. package/dist/_types/messages/BrandMessagesProvider.d.ts +33 -11
  80. package/dist/_types/messages/brandMessagesEs.d.ts +18 -0
  81. package/dist/_types/messages/es/alert.d.ts +3 -0
  82. package/dist/_types/messages/es/annotationThread.d.ts +3 -0
  83. package/dist/_types/messages/es/appHeader.d.ts +3 -0
  84. package/dist/_types/messages/es/appLauncher.d.ts +3 -0
  85. package/dist/_types/messages/es/appRoot.d.ts +3 -0
  86. package/dist/_types/messages/es/appShell.d.ts +3 -0
  87. package/dist/_types/messages/es/asyncMultiSelect.d.ts +3 -0
  88. package/dist/_types/messages/es/asyncSelect.d.ts +3 -0
  89. package/dist/_types/messages/es/avatarUpload.d.ts +3 -0
  90. package/dist/_types/messages/es/banner.d.ts +3 -0
  91. package/dist/_types/messages/es/breadcrumb.d.ts +3 -0
  92. package/dist/_types/messages/es/calendar.d.ts +3 -0
  93. package/dist/_types/messages/es/calendarPlanner.d.ts +3 -0
  94. package/dist/_types/messages/es/calendarRoster.d.ts +3 -0
  95. package/dist/_types/messages/es/carousel.d.ts +3 -0
  96. package/dist/_types/messages/es/chart.d.ts +3 -0
  97. package/dist/_types/messages/es/chatShell.d.ts +3 -0
  98. package/dist/_types/messages/es/clockWidget.d.ts +3 -0
  99. package/dist/_types/messages/es/closeButton.d.ts +3 -0
  100. package/dist/_types/messages/es/codeBlock.d.ts +3 -0
  101. package/dist/_types/messages/es/colorPicker.d.ts +3 -0
  102. package/dist/_types/messages/es/commandPalette.d.ts +3 -0
  103. package/dist/_types/messages/es/confirmDialog.d.ts +3 -0
  104. package/dist/_types/messages/es/connectorConsent.d.ts +3 -0
  105. package/dist/_types/messages/es/connectorExternalSignIn.d.ts +3 -0
  106. package/dist/_types/messages/es/connectorRejection.d.ts +3 -0
  107. package/dist/_types/messages/es/connectorRequestSummary.d.ts +3 -0
  108. package/dist/_types/messages/es/connectorSignIn.d.ts +3 -0
  109. package/dist/_types/messages/es/consent.d.ts +3 -0
  110. package/dist/_types/messages/es/conversationList.d.ts +3 -0
  111. package/dist/_types/messages/es/conversationThread.d.ts +3 -0
  112. package/dist/_types/messages/es/copy.d.ts +3 -0
  113. package/dist/_types/messages/es/dataTable.d.ts +3 -0
  114. package/dist/_types/messages/es/datePicker.d.ts +3 -0
  115. package/dist/_types/messages/es/docsSearch.d.ts +3 -0
  116. package/dist/_types/messages/es/dotsButton.d.ts +3 -0
  117. package/dist/_types/messages/es/field.d.ts +3 -0
  118. package/dist/_types/messages/es/fileUpload.d.ts +3 -0
  119. package/dist/_types/messages/es/filterBar.d.ts +3 -0
  120. package/dist/_types/messages/es/floatingDock.d.ts +3 -0
  121. package/dist/_types/messages/es/heatmap.d.ts +3 -0
  122. package/dist/_types/messages/es/imageCropDialog.d.ts +3 -0
  123. package/dist/_types/messages/es/inputField.d.ts +3 -0
  124. package/dist/_types/messages/es/inputPhone.d.ts +3 -0
  125. package/dist/_types/messages/es/languageSwitcher.d.ts +3 -0
  126. package/dist/_types/messages/es/legalFooter.d.ts +3 -0
  127. package/dist/_types/messages/es/menuButton.d.ts +3 -0
  128. package/dist/_types/messages/es/messageComposer.d.ts +3 -0
  129. package/dist/_types/messages/es/modal.d.ts +3 -0
  130. package/dist/_types/messages/es/multiSelect.d.ts +3 -0
  131. package/dist/_types/messages/es/notificationButton.d.ts +3 -0
  132. package/dist/_types/messages/es/notificationList.d.ts +3 -0
  133. package/dist/_types/messages/es/notificationPanel.d.ts +3 -0
  134. package/dist/_types/messages/es/numberInput.d.ts +3 -0
  135. package/dist/_types/messages/es/onboardingShell.d.ts +3 -0
  136. package/dist/_types/messages/es/orgChart.d.ts +3 -0
  137. package/dist/_types/messages/es/orgSwitcher.d.ts +3 -0
  138. package/dist/_types/messages/es/otpInput.d.ts +3 -0
  139. package/dist/_types/messages/es/pagination.d.ts +3 -0
  140. package/dist/_types/messages/es/passwordField.d.ts +3 -0
  141. package/dist/_types/messages/es/planningGrid.d.ts +3 -0
  142. package/dist/_types/messages/es/prevNextNav.d.ts +3 -0
  143. package/dist/_types/messages/es/progressBar.d.ts +3 -0
  144. package/dist/_types/messages/es/projectCard.d.ts +3 -0
  145. package/dist/_types/messages/es/publicPageShell.d.ts +3 -0
  146. package/dist/_types/messages/es/recurrenceField.d.ts +3 -0
  147. package/dist/_types/messages/es/searchForm.d.ts +3 -0
  148. package/dist/_types/messages/es/select.d.ts +3 -0
  149. package/dist/_types/messages/es/sheet.d.ts +3 -0
  150. package/dist/_types/messages/es/sidebar.d.ts +3 -0
  151. package/dist/_types/messages/es/sidebarNav.d.ts +3 -0
  152. package/dist/_types/messages/es/siteHeader.d.ts +3 -0
  153. package/dist/_types/messages/es/siteNav.d.ts +3 -0
  154. package/dist/_types/messages/es/siteSearch.d.ts +3 -0
  155. package/dist/_types/messages/es/slider.d.ts +3 -0
  156. package/dist/_types/messages/es/spinner.d.ts +3 -0
  157. package/dist/_types/messages/es/statTile.d.ts +3 -0
  158. package/dist/_types/messages/es/stepper.d.ts +3 -0
  159. package/dist/_types/messages/es/table.d.ts +3 -0
  160. package/dist/_types/messages/es/tableOfContents.d.ts +3 -0
  161. package/dist/_types/messages/es/themeSwitcher.d.ts +3 -0
  162. package/dist/_types/messages/es/timeSelect.d.ts +3 -0
  163. package/dist/_types/messages/es/timeline.d.ts +3 -0
  164. package/dist/_types/messages/es/toaster.d.ts +3 -0
  165. package/dist/_types/messages/es/treeView.d.ts +3 -0
  166. package/dist/_types/messages/es/typingIndicator.d.ts +3 -0
  167. package/dist/_types/messages/es/untrustedText.d.ts +3 -0
  168. package/dist/_types/messages/es/uptimeBars.d.ts +3 -0
  169. package/dist/_types/messages/es/userMenu.d.ts +3 -0
  170. package/dist/_types/messages/index.d.ts +1 -1
  171. package/dist/_types/molecules/Alert/Alert.d.ts +11 -2
  172. package/dist/_types/molecules/AsyncMultiSelectField/AsyncMultiSelectField.d.ts +2 -1
  173. package/dist/_types/molecules/AsyncSelectField/AsyncSelectField.d.ts +2 -1
  174. package/dist/_types/molecules/AutocompleteField/AutocompleteField.d.ts +2 -1
  175. package/dist/_types/molecules/Banner/Banner.d.ts +11 -3
  176. package/dist/_types/molecules/Breadcrumb/Breadcrumb.d.ts +3 -1
  177. package/dist/_types/molecules/CalendarPlanner/CalendarPlanner.d.ts +7 -1
  178. package/dist/_types/molecules/CalendarRoster/CalendarRoster.d.ts +14 -2
  179. package/dist/_types/molecules/Card/Card.d.ts +10 -2
  180. package/dist/_types/molecules/CheckboxField/CheckboxField.d.ts +8 -1
  181. package/dist/_types/molecules/ColorPicker/ColorPicker.d.ts +15 -1
  182. package/dist/_types/molecules/ColorPickerField/ColorPickerField.d.ts +10 -1
  183. package/dist/_types/molecules/CommandPalette/CommandPalette.d.ts +5 -0
  184. package/dist/_types/molecules/ConfirmDialog/ConfirmDialog.d.ts +6 -1
  185. package/dist/_types/molecules/ContextMenu/ContextMenu.d.ts +3 -3
  186. package/dist/_types/molecules/CopyButton/CopyButton.d.ts +8 -0
  187. package/dist/_types/molecules/DatePicker/DatePicker.d.ts +12 -1
  188. package/dist/_types/molecules/DatePickerField/DatePickerField.d.ts +2 -1
  189. package/dist/_types/molecules/DateTimeField/DateTimeField.d.ts +8 -1
  190. package/dist/_types/molecules/DropdownField/DropdownField.d.ts +11 -1
  191. package/dist/_types/molecules/FileUploadField/FileUploadField.d.ts +2 -1
  192. package/dist/_types/molecules/FilterBar/FilterBar.d.ts +3 -1
  193. package/dist/_types/molecules/FloatingToolbar/FloatingToolbar.d.ts +19 -1
  194. package/dist/_types/molecules/Form/Form.d.ts +8 -0
  195. package/dist/_types/molecules/Heatmap/Heatmap.d.ts +42 -5
  196. package/dist/_types/molecules/Heatmap/heatmapScale.d.ts +50 -0
  197. package/dist/_types/molecules/ImageCropDialog/ImageCropDialog.d.ts +18 -2
  198. package/dist/_types/molecules/InputField/InputField.d.ts +2 -1
  199. package/dist/_types/molecules/InputPhoneField/InputPhoneField.d.ts +2 -1
  200. package/dist/_types/molecules/Menu/Menu.d.ts +5 -0
  201. package/dist/_types/molecules/Modal/Modal.d.ts +14 -2
  202. package/dist/_types/molecules/MultiSelectField/MultiSelectField.d.ts +4 -1
  203. package/dist/_types/molecules/NotificationPanel/NotificationPanel.d.ts +6 -1
  204. package/dist/_types/molecules/NumberInputField/NumberInputField.d.ts +2 -1
  205. package/dist/_types/molecules/OrgSwitcher/OrgSwitcher.d.ts +3 -2
  206. package/dist/_types/molecules/OtpField/OtpField.d.ts +4 -1
  207. package/dist/_types/molecules/PageIntro/PageIntro.d.ts +1 -1
  208. package/dist/_types/molecules/Pagination/Pagination.d.ts +26 -5
  209. package/dist/_types/molecules/PasswordField/PasswordField.d.ts +4 -3
  210. package/dist/_types/molecules/PrevNextNav/PrevNextNav.d.ts +20 -4
  211. package/dist/_types/molecules/ProjectCard/ProjectCard.d.ts +8 -2
  212. package/dist/_types/molecules/RadioField/RadioField.d.ts +8 -0
  213. package/dist/_types/molecules/RecoveryCodes/RecoveryCodes.d.ts +1 -1
  214. package/dist/_types/molecules/RecurrenceField/RecurrenceField.d.ts +19 -1
  215. package/dist/_types/molecules/SelectField/SelectField.d.ts +2 -1
  216. package/dist/_types/molecules/Sheet/Sheet.d.ts +5 -0
  217. package/dist/_types/molecules/Table/Table.d.ts +6 -1
  218. package/dist/_types/molecules/TableOfContents/TableOfContents.d.ts +3 -1
  219. package/dist/_types/molecules/TextareaField/TextareaField.d.ts +2 -1
  220. package/dist/_types/molecules/TimeField/TimeField.d.ts +2 -1
  221. package/dist/_types/molecules/Timeline/Timeline.d.ts +6 -3
  222. package/dist/_types/molecules/UserMenu/UserMenu.d.ts +3 -2
  223. package/dist/_types/molecules/_shared/FieldShell.d.ts +130 -0
  224. package/dist/_types/molecules/_shared/requiredInput.d.ts +8 -0
  225. package/dist/_types/organisms/AnnotationThread/AnnotationThread.d.ts +3 -2
  226. package/dist/_types/organisms/DataTable/DataTable.d.ts +1 -1
  227. package/dist/_types/organisms/PlanningGrid/PlanningGrid.d.ts +12 -1
  228. package/dist/_types/organisms/Steps/Steps.d.ts +3 -3
  229. package/dist/_types/sections/Hero/Hero.d.ts +1 -1
  230. package/dist/_types/sections/SiteHeader/SiteHeader.d.ts +3 -3
  231. package/dist/accordion.css +1 -1
  232. package/dist/alert.css +1 -1
  233. package/dist/alert.js +2 -94
  234. package/dist/annotation-thread.css +1 -1
  235. package/dist/annotation-thread.js +38 -31
  236. package/dist/app-header.css +1 -1
  237. package/dist/app-header.js +24 -21
  238. package/dist/app-launcher.css +1 -1
  239. package/dist/app-launcher.js +42 -35
  240. package/dist/app-root.js +9 -6
  241. package/dist/app-shell.js +46 -46
  242. package/dist/assistant-message.js +1 -1
  243. package/dist/async-multi-select-field.js +46 -51
  244. package/dist/async-multi-select.js +2 -128
  245. package/dist/async-select-field.js +45 -50
  246. package/dist/async-select.js +2 -117
  247. package/dist/asyncmultiselect.css +1 -0
  248. package/dist/autocomplete-field.js +45 -50
  249. package/dist/avatar-upload.js +82 -69
  250. package/dist/banner.js +33 -30
  251. package/dist/brand.css +464 -223
  252. package/dist/breadcrumb.css +1 -1
  253. package/dist/breadcrumb.js +25 -20
  254. package/dist/button.css +1 -1
  255. package/dist/button.js +44 -41
  256. package/dist/calendar-planner.css +1 -1
  257. package/dist/calendar-planner.js +108 -90
  258. package/dist/calendar-roster.js +84 -69
  259. package/dist/calendar.css +1 -1
  260. package/dist/calendar.js +95 -95
  261. package/dist/card.css +1 -1
  262. package/dist/card.js +75 -73
  263. package/dist/carousel.css +1 -1
  264. package/dist/carousel.js +66 -52
  265. package/dist/chart.js +213 -206
  266. package/dist/chat-shell.css +1 -1
  267. package/dist/chat-shell.js +39 -36
  268. package/dist/checkbox-field.js +40 -49
  269. package/dist/checkbox.css +1 -1
  270. package/dist/clock-widget.js +49 -33
  271. package/dist/close-button.js +2 -23
  272. package/dist/code-block.js +45 -39
  273. package/dist/collapsible.css +1 -1
  274. package/dist/color-picker-field.js +38 -39
  275. package/dist/colorpicker.css +1 -1
  276. package/dist/command-palette.css +1 -1
  277. package/dist/command-palette.js +39 -31
  278. package/dist/confirm-dialog.js +29 -22
  279. package/dist/connector-auth-shell.js +1 -1
  280. package/dist/connector-consent-page.js +56 -50
  281. package/dist/connector-external-sign-in-page.js +40 -33
  282. package/dist/connector-rejection-page.js +28 -25
  283. package/dist/connector-request-summary.js +2 -37
  284. package/dist/connector-sign-in-page.js +44 -37
  285. package/dist/consent.css +1 -1
  286. package/dist/consent.js +55 -44
  287. package/dist/container.css +1 -1
  288. package/dist/context-menu.js +1 -1
  289. package/dist/conversation-list.css +1 -1
  290. package/dist/conversation-list.js +42 -33
  291. package/dist/conversation-thread.js +23 -20
  292. package/dist/copy-button.js +35 -33
  293. package/dist/copyable-value.js +40 -40
  294. package/dist/data-table.js +71 -65
  295. package/dist/date-picker-field.js +32 -37
  296. package/dist/date-time-field.js +78 -80
  297. package/dist/datepicker.css +1 -1
  298. package/dist/description-list.js +5 -5
  299. package/dist/docs-search.css +1 -1
  300. package/dist/docs-search.js +32 -23
  301. package/dist/dots-button.js +2 -29
  302. package/dist/dropdown-field.css +1 -1
  303. package/dist/dropdown-field.js +52 -51
  304. package/dist/embed-frame.css +1 -1
  305. package/dist/embed-frame.js +5 -4
  306. package/dist/error-page.js +2 -2
  307. package/dist/fieldset.css +1 -1
  308. package/dist/fieldset.js +6 -6
  309. package/dist/file-upload-field.js +31 -36
  310. package/dist/file-upload.js +2 -223
  311. package/dist/{file-upload.css → fileupload.css} +1 -1
  312. package/dist/filter-bar.css +1 -1
  313. package/dist/filter-bar.js +22 -17
  314. package/dist/floating-dock.css +1 -1
  315. package/dist/floating-dock.js +35 -29
  316. package/dist/floating-toolbar.js +22 -15
  317. package/dist/form.js +56 -52
  318. package/dist/heatmap.css +1 -1
  319. package/dist/heatmap.js +96 -36
  320. package/dist/hero.js +1 -1
  321. package/dist/highlight.js +1 -1
  322. package/dist/input-field.js +2 -100
  323. package/dist/input-phone-field.js +43 -48
  324. package/dist/input-phone.js +2 -88
  325. package/dist/input.js +14 -13
  326. package/dist/inputphone.css +1 -0
  327. package/dist/label.css +1 -1
  328. package/dist/language-switcher.css +1 -1
  329. package/dist/language-switcher.js +28 -25
  330. package/dist/legal-footer.js +2 -39
  331. package/dist/link.css +1 -1
  332. package/dist/list.js +8 -8
  333. package/dist/loading-region.js +34 -33
  334. package/dist/loading-state.css +1 -1
  335. package/dist/loading-state.js +29 -28
  336. package/dist/logo.css +1 -1
  337. package/dist/menu-button.js +2 -28
  338. package/dist/menu.css +1 -1
  339. package/dist/message-composer.js +32 -29
  340. package/dist/messages.js +10 -7
  341. package/dist/modal.css +1 -1
  342. package/dist/modal.js +2 -61
  343. package/dist/multi-select-field.js +43 -47
  344. package/dist/multi-select.js +2 -124
  345. package/dist/not-found-page.js +1 -1
  346. package/dist/notification-button.js +2 -32
  347. package/dist/notification-list.js +23 -16
  348. package/dist/notification-panel.css +1 -1
  349. package/dist/notification-panel.js +54 -46
  350. package/dist/notificationbutton.css +1 -0
  351. package/dist/number-badge.css +1 -1
  352. package/dist/number-badge.js +15 -11
  353. package/dist/number-input-field.js +44 -48
  354. package/dist/number-input.js +2 -99
  355. package/dist/onboarding-shell.css +1 -1
  356. package/dist/onboarding-shell.js +37 -34
  357. package/dist/org-chart.css +1 -1
  358. package/dist/org-chart.js +46 -35
  359. package/dist/org-switcher.css +1 -1
  360. package/dist/org-switcher.js +26 -23
  361. package/dist/otp-field.js +44 -47
  362. package/dist/otp-input.js +2 -115
  363. package/dist/otpinput.css +1 -0
  364. package/dist/page-intro.js +1 -1
  365. package/dist/pagination.css +1 -1
  366. package/dist/pagination.js +2 -179
  367. package/dist/paragraph.css +1 -1
  368. package/dist/paragraph.js +16 -10
  369. package/dist/password-field.css +1 -1
  370. package/dist/password-field.js +56 -57
  371. package/dist/planning-grid.css +1 -1
  372. package/dist/planning-grid.js +89 -75
  373. package/dist/prev-next-nav.js +2 -84
  374. package/dist/prevnextnav.css +1 -0
  375. package/dist/project-card.css +1 -1
  376. package/dist/project-card.js +41 -32
  377. package/dist/public-page-shell.js +2 -39
  378. package/dist/radio-field.js +29 -39
  379. package/dist/recurrence-field.css +1 -1
  380. package/dist/recurrence-field.js +129 -94
  381. package/dist/search-form.js +2 -61
  382. package/dist/searchform.css +1 -0
  383. package/dist/select-field.js +49 -54
  384. package/dist/select.js +2 -159
  385. package/dist/sheet.css +1 -1
  386. package/dist/sheet.js +2 -54
  387. package/dist/sidebar-nav.css +1 -1
  388. package/dist/sidebar-nav.js +33 -26
  389. package/dist/sidebar.css +1 -1
  390. package/dist/sidebar.js +66 -59
  391. package/dist/site-footer.js +2 -2
  392. package/dist/site-header.css +1 -1
  393. package/dist/site-header.js +37 -34
  394. package/dist/site-nav.css +1 -1
  395. package/dist/site-nav.js +17 -14
  396. package/dist/site-search.css +1 -1
  397. package/dist/site-search.js +70 -54
  398. package/dist/skip-link.css +1 -1
  399. package/dist/slider.css +1 -1
  400. package/dist/slider.js +2 -34
  401. package/dist/sparkline.js +37 -35
  402. package/dist/spinner.js +19 -18
  403. package/dist/star-rating.js +2 -2
  404. package/dist/stat-tile.js +27 -23
  405. package/dist/step-marker.css +1 -1
  406. package/dist/step-marker.js +19 -16
  407. package/dist/stepper.css +1 -1
  408. package/dist/stepper.js +25 -16
  409. package/dist/switcher-field.js +39 -55
  410. package/dist/switcher.css +1 -1
  411. package/dist/table-of-contents.css +1 -1
  412. package/dist/table-of-contents.js +33 -28
  413. package/dist/table.css +1 -1
  414. package/dist/table.js +2 -133
  415. package/dist/tabs.css +1 -1
  416. package/dist/tag.css +1 -1
  417. package/dist/tag.js +16 -10
  418. package/dist/text.css +1 -1
  419. package/dist/textarea-field.js +41 -45
  420. package/dist/theme-switcher.css +1 -1
  421. package/dist/theme-switcher.js +47 -41
  422. package/dist/time-field.js +42 -47
  423. package/dist/time-select.js +2 -84
  424. package/dist/timeline.js +14 -11
  425. package/dist/toaster.css +1 -1
  426. package/dist/toaster.js +32 -29
  427. package/dist/toggle.js +33 -13
  428. package/dist/tokens.css +379 -197
  429. package/dist/tooltip.js +48 -34
  430. package/dist/tree-view.css +1 -1
  431. package/dist/tree-view.js +60 -60
  432. package/dist/typing-indicator.js +2 -29
  433. package/dist/{typing-indicator.css → typingindicator.css} +1 -1
  434. package/dist/uptime-bars.js +36 -33
  435. package/dist/user-menu.css +1 -1
  436. package/dist/user-menu.js +29 -26
  437. package/package.json +2 -2
  438. package/src/tokens/colors.ts +6 -6
  439. package/src/tokens/components/accordion.css +1 -1
  440. package/src/tokens/components/app-header.css +2 -2
  441. package/src/tokens/components/async-multi-select.css +1 -1
  442. package/src/tokens/components/breadcrumb.css +2 -2
  443. package/src/tokens/components/button.css +9 -2
  444. package/src/tokens/components/card.css +3 -3
  445. package/src/tokens/components/checkbox.css +5 -5
  446. package/src/tokens/components/collapsible.css +1 -0
  447. package/src/tokens/components/embed-frame.css +8 -0
  448. package/src/tokens/components/file-upload.css +5 -5
  449. package/src/tokens/components/floating-dock.css +2 -2
  450. package/src/tokens/components/floating-panel.css +2 -2
  451. package/src/tokens/components/input.css +2 -2
  452. package/src/tokens/components/kbd.css +1 -1
  453. package/src/tokens/components/label.css +2 -0
  454. package/src/tokens/components/link.css +20 -6
  455. package/src/tokens/components/logo.css +1 -1
  456. package/src/tokens/components/message-bubble.css +2 -2
  457. package/src/tokens/components/multi-select.css +2 -2
  458. package/src/tokens/components/number-badge.css +3 -3
  459. package/src/tokens/components/otp-input.css +1 -1
  460. package/src/tokens/components/select.css +2 -2
  461. package/src/tokens/components/sidebar.css +2 -2
  462. package/src/tokens/components/site-header.css +5 -5
  463. package/src/tokens/components/slider.css +1 -1
  464. package/src/tokens/components/spinner.css +3 -3
  465. package/src/tokens/components/step.css +4 -4
  466. package/src/tokens/components/switcher.css +3 -3
  467. package/src/tokens/components/tabs.css +5 -4
  468. package/src/tokens/components/tag.css +4 -4
  469. package/src/tokens/components/text-inline.css +3 -1
  470. package/src/tokens/components/text.css +2 -2
  471. package/src/tokens/components/textarea.css +2 -2
  472. package/src/tokens/components/tooltip.css +2 -2
  473. package/src/tokens/components/typing-indicator.css +1 -1
  474. package/src/tokens/deprecated-aliases.css +74 -0
  475. package/src/tokens/global/colors.css +2 -2
  476. package/src/tokens/global/shadow.css +4 -4
  477. package/src/tokens/index.css +6 -0
  478. package/src/tokens/molecules/alert.css +1 -0
  479. package/src/tokens/molecules/annotation-thread.css +0 -2
  480. package/src/tokens/molecules/app-launcher.css +1 -1
  481. package/src/tokens/molecules/calendar-planner.css +2 -1
  482. package/src/tokens/molecules/calendar-roster.css +9 -9
  483. package/src/tokens/molecules/calendar.css +5 -4
  484. package/src/tokens/molecules/carousel.css +3 -3
  485. package/src/tokens/molecules/chart.css +3 -3
  486. package/src/tokens/molecules/chat-shell.css +2 -2
  487. package/src/tokens/molecules/color-picker.css +2 -2
  488. package/src/tokens/molecules/command-palette.css +1 -0
  489. package/src/tokens/molecules/consent.css +3 -3
  490. package/src/tokens/molecules/conversation-list.css +1 -0
  491. package/src/tokens/molecules/date-picker.css +1 -1
  492. package/src/tokens/molecules/docs-search.css +1 -1
  493. package/src/tokens/molecules/dropdown-field.css +2 -1
  494. package/src/tokens/molecules/filter-bar.css +1 -1
  495. package/src/tokens/molecules/heatmap.css +33 -6
  496. package/src/tokens/molecules/loading-state.css +2 -2
  497. package/src/tokens/molecules/menu.css +2 -1
  498. package/src/tokens/molecules/message-composer.css +1 -1
  499. package/src/tokens/molecules/modal.css +5 -5
  500. package/src/tokens/molecules/notification-panel.css +2 -2
  501. package/src/tokens/molecules/org-chart.css +4 -4
  502. package/src/tokens/molecules/pagination.css +1 -0
  503. package/src/tokens/molecules/password-field.css +2 -2
  504. package/src/tokens/molecules/planning-grid.css +7 -7
  505. package/src/tokens/molecules/recurrence-field.css +5 -0
  506. package/src/tokens/molecules/search-form.css +1 -1
  507. package/src/tokens/molecules/sheet.css +2 -2
  508. package/src/tokens/molecules/site-nav.css +3 -1
  509. package/src/tokens/molecules/site-search.css +4 -4
  510. package/src/tokens/molecules/table-of-contents.css +1 -1
  511. package/src/tokens/molecules/table.css +3 -3
  512. package/src/tokens/molecules/toast.css +1 -0
  513. package/src/tokens/scss/_index.legacy.scss +1 -0
  514. package/src/tokens/scss/_index.scss +1 -0
  515. package/src/tokens/scss/components/_accordion.scss +4 -1
  516. package/src/tokens/scss/components/_async-multi-select.scss +4 -1
  517. package/src/tokens/scss/components/_breadcrumb.scss +4 -1
  518. package/src/tokens/scss/components/_button.scss +7 -2
  519. package/src/tokens/scss/components/_card.scss +1 -1
  520. package/src/tokens/scss/components/_checkbox.scss +6 -2
  521. package/src/tokens/scss/components/_collapsible.scss +1 -0
  522. package/src/tokens/scss/components/_embed-frame.scss +9 -0
  523. package/src/tokens/scss/components/_file-upload.scss +4 -1
  524. package/src/tokens/scss/components/_floating-dock.scss +6 -2
  525. package/src/tokens/scss/components/_label.scss +1 -0
  526. package/src/tokens/scss/components/_link.scss +16 -6
  527. package/src/tokens/scss/components/_logo.scss +4 -1
  528. package/src/tokens/scss/components/_number-badge.scss +6 -2
  529. package/src/tokens/scss/components/_otp-input.scss +4 -1
  530. package/src/tokens/scss/components/_site-header.scss +1 -1
  531. package/src/tokens/scss/components/_slider.scss +4 -1
  532. package/src/tokens/scss/components/_spinner.scss +3 -3
  533. package/src/tokens/scss/components/_step.scss +6 -2
  534. package/src/tokens/scss/components/_switcher.scss +5 -2
  535. package/src/tokens/scss/components/_tabs.scss +7 -2
  536. package/src/tokens/scss/components/_tag.scss +6 -2
  537. package/src/tokens/scss/components/_text-inline.scss +2 -1
  538. package/src/tokens/scss/components/_text.scss +4 -1
  539. package/src/tokens/scss/components/_typing-indicator.scss +4 -1
  540. package/src/tokens/scss/global/_colors.scss +6 -2
  541. package/src/tokens/scss/global/_shadow.scss +4 -4
  542. package/src/tokens/scss/molecules/_alert.scss +1 -0
  543. package/src/tokens/scss/molecules/_annotation-thread.scss +0 -2
  544. package/src/tokens/scss/molecules/_app-launcher.scss +4 -1
  545. package/src/tokens/scss/molecules/_calendar-planner.scss +1 -0
  546. package/src/tokens/scss/molecules/_calendar.scss +9 -3
  547. package/src/tokens/scss/molecules/_carousel.scss +8 -3
  548. package/src/tokens/scss/molecules/_chart.scss +1 -1
  549. package/src/tokens/scss/molecules/_color-picker.scss +6 -2
  550. package/src/tokens/scss/molecules/_command-palette.scss +1 -0
  551. package/src/tokens/scss/molecules/_consent.scss +4 -1
  552. package/src/tokens/scss/molecules/_conversation-list.scss +1 -0
  553. package/src/tokens/scss/molecules/_date-picker.scss +4 -1
  554. package/src/tokens/scss/molecules/_docs-search.scss +4 -1
  555. package/src/tokens/scss/molecules/_dropdown-field.scss +1 -0
  556. package/src/tokens/scss/molecules/_filter-bar.scss +4 -1
  557. package/src/tokens/scss/molecules/_heatmap.scss +15 -2
  558. package/src/tokens/scss/molecules/_loading-state.scss +6 -2
  559. package/src/tokens/scss/molecules/_menu.scss +2 -1
  560. package/src/tokens/scss/molecules/_modal.scss +7 -3
  561. package/src/tokens/scss/molecules/_notification-panel.scss +6 -2
  562. package/src/tokens/scss/molecules/_org-chart.scss +6 -2
  563. package/src/tokens/scss/molecules/_pagination.scss +1 -0
  564. package/src/tokens/scss/molecules/_password-field.scss +4 -1
  565. package/src/tokens/scss/molecules/_planning-grid.scss +3 -2
  566. package/src/tokens/scss/molecules/_recurrence-field.scss +5 -0
  567. package/src/tokens/scss/molecules/_search-form.scss +4 -1
  568. package/src/tokens/scss/molecules/_sheet.scss +6 -2
  569. package/src/tokens/scss/molecules/_site-nav.scss +2 -1
  570. package/src/tokens/scss/molecules/_site-search.scss +10 -4
  571. package/src/tokens/scss/molecules/_table-of-contents.scss +4 -1
  572. package/src/tokens/scss/molecules/_table.scss +4 -1
  573. package/src/tokens/scss/molecules/_toast.scss +1 -0
  574. package/src/tokens/surface-dark-derived.css +1 -0
  575. package/src/tokens/surface-invert.css +57 -34
  576. package/src/tokens/surface-public.css +4 -2
  577. package/src/tokens/tokens.json +116 -11
  578. package/dist/async-multi-select.css +0 -1
  579. package/dist/input-phone.css +0 -1
  580. package/dist/notification-button.css +0 -1
  581. package/dist/otp-input.css +0 -1
  582. package/dist/prev-next-nav.css +0 -1
  583. package/dist/search-form.css +0 -1
  584. /package/dist/{async-select.css → asyncselect.css} +0 -0
  585. /package/dist/{close-button.css → closebutton.css} +0 -0
  586. /package/dist/{connector-request-summary.css → connectorrequestsummary.css} +0 -0
  587. /package/dist/{dots-button.css → dotsbutton.css} +0 -0
  588. /package/dist/{input-field.css → inputfield.css} +0 -0
  589. /package/dist/{legal-footer.css → legalfooter.css} +0 -0
  590. /package/dist/{menu-button.css → menubutton.css} +0 -0
  591. /package/dist/{multi-select.css → multiselect.css} +0 -0
  592. /package/dist/{number-input.css → numberinput.css} +0 -0
  593. /package/dist/{public-page-shell.css → publicpageshell.css} +0 -0
  594. /package/dist/{time-select.css → timeselect.css} +0 -0
@@ -1,4 +1,7 @@
1
1
  import { type ComponentType, type ReactNode } from 'react';
2
+ import { type PrevNextNavRenderLinkProps } from '../PrevNextNav/PrevNextNav';
3
+ /** Lo que recibe `renderLink`: el mismo contrato que el de `PrevNextNav`. */
4
+ export type CalendarRosterRenderLinkProps = PrevNextNavRenderLinkProps;
2
5
  import './CalendarRoster.css';
3
6
  /**
4
7
  * El cromo del cuadrante: el encabezado de la columna de nombres y la leyenda
@@ -61,7 +64,16 @@ export interface CalendarRosterProps {
61
64
  * Compatible con SSR y Next.js. Toma precedencia sobre onMonthChange.
62
65
  */
63
66
  hrefBuilder?: (month: Date) => string;
64
- /** Componente Link del router. Default: "a" */
67
+ /**
68
+ * Pinta los enlaces de mes (con `hrefBuilder`) con el `Link` del router:
69
+ * `renderLink={(props) => <Link {...props} />}`. Recibe todos los atributos
70
+ * del `<a>` y tiene que reenviarlos todos. Sin él, un `<a>`.
71
+ */
72
+ renderLink?: (props: CalendarRosterRenderLinkProps) => ReactNode;
73
+ /**
74
+ * @deprecated Usa `renderLink` (`renderLink={(props) => <Link {...props} />}`).
75
+ * Sigue funcionando y avisa en desarrollo; se retira en la v52.
76
+ */
65
77
  linkComponent?: ComponentType<any>;
66
78
  /**
67
79
  * Render prop para personalizar el contenido interno de cada celda.
@@ -117,4 +129,4 @@ export interface CalendarRosterProps {
117
129
  today?: Date;
118
130
  className?: string;
119
131
  }
120
- export declare function CalendarRoster({ rows, month, onMonthChange, hrefBuilder, linkComponent, renderCell, nameLabel, birthdayPrefix, showLegend, locale, legendItems, legendLabel, previousMonthLabel, nextMonthLabel, today: todayProp, className, }: CalendarRosterProps): import("react/jsx-runtime").JSX.Element;
132
+ export declare function CalendarRoster({ rows, month, onMonthChange, hrefBuilder, renderLink, linkComponent, renderCell, nameLabel, birthdayPrefix, showLegend, locale, legendItems, legendLabel, previousMonthLabel, nextMonthLabel, today: todayProp, className, }: CalendarRosterProps): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,10 @@
1
1
  import './Card.css';
2
2
  import { type HeadingLevel, type HeadingSize } from '../../atoms/Heading/Heading';
3
3
  import { type ParagraphProps } from '../../atoms/Paragraph/Paragraph';
4
- export type CardColor = 'primary' | 'outline' | 'accent-1' | 'accent-2' | 'support-1' | 'support-2';
4
+ /** Color de fondo de la tarjeta. */
5
+ export type CardTone = 'primary' | 'outline' | 'accent-1' | 'accent-2' | 'support-1' | 'support-2';
6
+ /** @deprecated Usa `CardTone`: la prop de color se llama `tone` desde la v51. Se retira en la v52. */
7
+ export type CardColor = CardTone;
5
8
  /**
6
9
  * Maqueta de la tarjeta. `default` es la de siempre: una columna de texto.
7
10
  * `square` y `split` son las dos tarjetas de marketing —la cuadrada con la
@@ -64,7 +67,12 @@ export interface CardProps extends Omit<React.ComponentPropsWithoutRef<'div'>, '
64
67
  */
65
68
  ctaLabel?: string;
66
69
  /** Color de fondo. Default: `'outline'`. */
67
- color?: CardColor;
70
+ tone?: CardTone;
71
+ /**
72
+ * @deprecated Usa `tone`. Sigue funcionando, con un aviso en desarrollo,
73
+ * hasta la v52.
74
+ */
75
+ color?: CardTone;
68
76
  /** Maqueta de la tarjeta. Default: `'default'`. */
69
77
  variant?: CardVariant;
70
78
  /**
@@ -1,6 +1,7 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import './CheckboxField.css';
3
- export interface CheckboxFieldProps {
3
+ import { type FieldOptionalProps } from '../_shared/FieldShell';
4
+ export interface CheckboxFieldProps extends FieldOptionalProps {
4
5
  /** Texto de la opción, a la derecha de la marca. Acepta JSX (un enlace, por ejemplo). */
5
6
  label: ReactNode;
6
7
  /**
@@ -16,6 +17,12 @@ export interface CheckboxFieldProps {
16
17
  checked?: boolean;
17
18
  defaultChecked?: boolean;
18
19
  disabled?: boolean;
20
+ /**
21
+ * Casilla obligatoria (aceptar las condiciones): Base UI pone `aria-required`
22
+ * en la casilla y `required` en su input oculto, que es el que valida el
23
+ * formulario nativo.
24
+ */
25
+ required?: boolean;
19
26
  /** Talla del sistema. Sin ella, la del `Form` que lo envuelva; sin `Form`, `md`. */
20
27
  size?: 'sm' | 'md' | 'lg';
21
28
  /** `id` del control. Si no se pasa, se genera con `useId`. */
@@ -103,6 +103,14 @@ export interface ColorPickerProps {
103
103
  id?: string;
104
104
  /** Nombre en el formulario: se monta un input oculto con el hex. */
105
105
  name?: string;
106
+ /**
107
+ * El `<form>` no se envía sin color: el campo que sincroniza el hex lleva
108
+ * `required` (y, si se enfoca para avisar, devuelve el foco al disparador).
109
+ * El disparador es un botón y no admite `aria-required`: quien lo anuncia es
110
+ * `ColorPickerField`, con un «obligatorio» oculto en la descripción del
111
+ * disparador. Suelto, el obligatorio se dice en el texto.
112
+ */
113
+ required?: boolean;
106
114
  /** Nombre accesible del disparador cuando va suelto. */
107
115
  'aria-label'?: string;
108
116
  /** Lo pone el campo: la etiqueta nombra el disparador. */
@@ -134,7 +142,13 @@ export interface ColorPickerProps {
134
142
  * a donde estaba antes de abrir.
135
143
  */
136
144
  anchor?: PopoverAnchor;
137
- /** Se añade DESPUÉS de las clases propias. */
145
+ /**
146
+ * Va al **disparador** cuando lo pinta el selector (la muestra) y al
147
+ * **panel** cuando el disparador lo trae el consumidor (`trigger`) o no hay
148
+ * ninguno (`anchor`): un disparador propio ya lleva sus clases (D65; hasta
149
+ * la v50 iba al contenedor). Se añade DESPUÉS de las clases propias. El
150
+ * panel se personaliza con tokens.
151
+ */
138
152
  className?: string;
139
153
  }
140
154
  /**
@@ -1,6 +1,7 @@
1
+ import { type FieldOptionalProps, type FieldRequiredProps } from '../_shared/FieldShell';
1
2
  import type { ColorPickerProps } from '../ColorPicker/ColorPicker';
2
3
  import './ColorPickerField.css';
3
- export interface ColorPickerFieldProps extends Omit<ColorPickerProps, 'id' | 'aria-describedby' | 'aria-label' | 'aria-labelledby'> {
4
+ export interface ColorPickerFieldProps extends Omit<ColorPickerProps, 'id' | 'aria-describedby' | 'aria-label' | 'aria-labelledby'>, FieldOptionalProps, FieldRequiredProps {
4
5
  /** `id` del disparador. Si no se pasa, se genera con `useId`. */
5
6
  id?: string;
6
7
  label: string;
@@ -14,6 +15,14 @@ export interface ColorPickerFieldProps extends Omit<ColorPickerProps, 'id' | 'ar
14
15
  errorMessage?: string;
15
16
  /** Texto de ayuda, enlazado por `aria-describedby`. */
16
17
  helperText?: string;
18
+ /**
19
+ * Campo obligatorio. El disparador es un botón, que no admite
20
+ * `aria-required` (D73): lo obligatorio va en su **descripción**, un texto
21
+ * oculto «obligatorio» (`requiredLabel`, o `field.required` del catálogo)
22
+ * enlazado por `aria-describedby` detrás de la ayuda y el error. El `<form>`
23
+ * no se envía sin color (`required` en el campo que sincroniza el hex).
24
+ */
25
+ required?: boolean;
17
26
  /** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
18
27
  className?: string;
19
28
  }
@@ -109,6 +109,11 @@ export interface CommandPaletteProps {
109
109
  * para quien necesite buscar en servidor sin envolver la paleta ni leer el DOM.
110
110
  */
111
111
  onQueryChange?: (query: string) => void;
112
+ /**
113
+ * Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye).
114
+ * **Va al panel (su contenido, dentro del diálogo); el disparador, si lo hay, es tuyo y ya lleva tus clases**
115
+ * (regla de `className` en componentes con portal, CLAUDE.md § Base UI).
116
+ */
112
117
  className?: string;
113
118
  }
114
119
  /**
@@ -91,7 +91,12 @@ export interface ConfirmDialogBaseProps {
91
91
  closeLabel?: string;
92
92
  /** Nodo donde montar el portal, como en `Modal`. */
93
93
  container?: ModalProps['container'];
94
- /** Se añade DESPUÉS de las clases propias del pie del diálogo. */
94
+ /**
95
+ * Va al **panel** del diálogo (`modal__content`), como en `Modal`: el
96
+ * diálogo es controlado y no pinta disparador propio (D65; hasta la v50 iba
97
+ * al pie). Se añade DESPUÉS de las clases propias. Es un enganche para el
98
+ * producto, no la vía de personalizar la cara del diálogo: eso va por tokens.
99
+ */
95
100
  className?: string;
96
101
  }
97
102
  /**
@@ -22,9 +22,9 @@ export interface ContextMenuProps {
22
22
  label?: string;
23
23
  /**
24
24
  * Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye).
25
- * Va al botón de tres puntos —el único nodo que el componente pinta en su
26
- * sitio—, no al panel, que sale por un portal: a diferencia de `Menu`, aquí
27
- * el disparador es del componente y no del consumidor.
25
+ * **Va al disparador, que pinta el componente** (el botón de tres puntos): el panel sale por un
26
+ * portal y se personaliza con tokens (regla de `className` en componentes
27
+ * con portal, CLAUDE.md § Base UI).
28
28
  */
29
29
  className?: string;
30
30
  }
@@ -38,6 +38,14 @@ export interface CopyButtonProps extends Omit<ComponentPropsWithoutRef<'button'>
38
38
  onCopy?: (text: string) => void;
39
39
  /** Se llama cuando el portapapeles falla. */
40
40
  onCopyError?: (error: unknown) => void;
41
+ /**
42
+ * Con `disabled`, el botón sigue en el orden de tabulación y se anuncia con
43
+ * `aria-disabled` sin copiar nada. Reenvío a `Button`; `Tooltip` lo activa
44
+ * solo en su disparador deshabilitado.
45
+ *
46
+ * @default false
47
+ */
48
+ focusableWhenDisabled?: boolean;
41
49
  /** Se añade DESPUÉS de las clases propias. */
42
50
  className?: string;
43
51
  }
@@ -70,6 +70,12 @@ export interface DatePickerProps {
70
70
  size?: 'sm' | 'md' | 'lg';
71
71
  disabled?: boolean;
72
72
  readOnly?: boolean;
73
+ /**
74
+ * Campo obligatorio: `required` nativo en el campo de texto, que es el que
75
+ * guarda lo escrito. El lector de pantalla lo anuncia y el `<form>` no se
76
+ * envía vacío.
77
+ */
78
+ required?: boolean;
73
79
  error?: boolean;
74
80
  locale?: string;
75
81
  /** id aplicado al campo de texto */
@@ -112,7 +118,12 @@ export interface DatePickerProps {
112
118
  name?: string;
113
119
  /** Se llama al salir del campo (react-hook-form lo usa para validar). */
114
120
  onBlur?: React.FocusEventHandler<HTMLInputElement>;
115
- /** Se añade DESPUÉS de las clases propias del componente. */
121
+ /**
122
+ * Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye).
123
+ * **Va al disparador, que pinta el componente** (el campo: la máscara y el botón del calendario): el panel sale por un
124
+ * portal y se personaliza con tokens (regla de `className` en componentes
125
+ * con portal, CLAUDE.md § Base UI).
126
+ */
116
127
  className?: string;
117
128
  }
118
129
  /**
@@ -1,6 +1,7 @@
1
+ import { type FieldOptionalProps } from '../_shared/FieldShell';
1
2
  import type { DatePickerProps } from '../DatePicker/DatePicker';
2
3
  import './DatePickerField.css';
3
- export interface DatePickerFieldProps extends Omit<DatePickerProps, 'id' | 'describedBy' | 'aria-describedby' | 'aria-label'> {
4
+ export interface DatePickerFieldProps extends Omit<DatePickerProps, 'id' | 'describedBy' | 'aria-describedby' | 'aria-label'>, FieldOptionalProps {
4
5
  /** `id` del control. Si no se pasa, se genera con `useId`. */
5
6
  id?: string;
6
7
  label: string;
@@ -1,7 +1,8 @@
1
+ import { type FieldOptionalProps } from '../_shared/FieldShell';
1
2
  import type { DatePickerProps } from '../DatePicker/DatePicker';
2
3
  import type { CalendarProps } from '../Calendar/Calendar';
3
4
  import './DateTimeField.css';
4
- export interface DateTimeFieldProps {
5
+ export interface DateTimeFieldProps extends FieldOptionalProps {
5
6
  /** `id` del campo. Si no se pasa, se genera con `useId`. */
6
7
  id?: string;
7
8
  label: string;
@@ -24,6 +25,12 @@ export interface DateTimeFieldProps {
24
25
  size?: 'sm' | 'md' | 'lg';
25
26
  disabled?: boolean;
26
27
  readOnly?: boolean;
28
+ /**
29
+ * Campo obligatorio: `required` nativo en el campo de la fecha y, en la
30
+ * hora, el de sus desplegables (con `aria-required` en cada uno), como
31
+ * `TimeField`.
32
+ */
33
+ required?: boolean;
27
34
  /** Marca el control en error sin mensaje. Un `errorMessage` ya lo implica. */
28
35
  error?: boolean;
29
36
  /** Mensaje de error: se anuncia (`role="alert"`) y pone el control en error. */
@@ -1,7 +1,8 @@
1
1
  import { type ReactNode } from 'react';
2
+ import { type FieldOptionalProps, type FieldRequiredProps } from '../_shared/FieldShell';
2
3
  import { type MenuItem } from '../Menu/Menu';
3
4
  import './DropdownField.css';
4
- export interface DropdownFieldProps {
5
+ export interface DropdownFieldProps extends FieldOptionalProps, FieldRequiredProps {
5
6
  /** `id` del control; enlaza la etiqueta. Si no se pasa, se genera con `useId`. */
6
7
  id?: string;
7
8
  /** Etiqueta visible. Si no hay, es obligatorio `aria-label`. */
@@ -27,6 +28,15 @@ export interface DropdownFieldProps {
27
28
  disabled?: boolean;
28
29
  /** Nombre del campo en el formulario: se monta un input oculto con el valor. */
29
30
  name?: string;
31
+ /**
32
+ * Campo obligatorio. El disparador es un botón, que no admite
33
+ * `aria-required` (D73): lo obligatorio va en su **descripción**, un texto
34
+ * oculto «obligatorio» (`requiredLabel`, o `field.required` del catálogo)
35
+ * enlazado por `aria-describedby` detrás de la ayuda y el error. El `<form>`
36
+ * no se envía sin valor (`required` en el campo que sincroniza el valor,
37
+ * que devuelve el foco al disparador).
38
+ */
39
+ required?: boolean;
30
40
  /** Marca el control en error sin mensaje. Un `errorMessage` ya lo implica. */
31
41
  error?: boolean;
32
42
  /** Mensaje de error: se anuncia (`role="alert"`) y pone el control en error. */
@@ -1,6 +1,7 @@
1
1
  import './FileUploadField.css';
2
+ import { type FieldOptionalProps } from '../_shared/FieldShell';
2
3
  import type { FileUploadProps } from '../../atoms/FileUpload/FileUpload';
3
- export interface FileUploadFieldProps extends Omit<FileUploadProps, 'describedBy' | 'ariaLabel' | 'aria-describedby' | 'id'> {
4
+ export interface FileUploadFieldProps extends Omit<FileUploadProps, 'describedBy' | 'ariaLabel' | 'aria-describedby' | 'id'>, FieldOptionalProps {
4
5
  /** `id` del control. Si no se pasa, se genera con `useId`. */
5
6
  id?: string;
6
7
  label: string;
@@ -33,6 +33,8 @@ export interface FilterBarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'c
33
33
  * Nombre accesible del punto de referencia `search` que es la barra.
34
34
  * **Sin default**: sale de `filterBar.label` del `BrandMessagesProvider`.
35
35
  */
36
+ 'aria-label'?: string;
37
+ /** @deprecated Usa `aria-label`. Sigue funcionando y avisa en desarrollo; se retira en la v52. */
36
38
  ariaLabel?: string;
37
39
  /** Se añade DESPUÉS de las clases propias. */
38
40
  className?: string;
@@ -51,4 +53,4 @@ export interface FilterBarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'c
51
53
  *
52
54
  * `{...rest}` (`id`, `data-*`, `aria-*`…) va al `<div>`.
53
55
  */
54
- export declare function FilterBar({ search, children, actions, ariaLabel, className, ...rest }: FilterBarProps): import("react/jsx-runtime").JSX.Element;
56
+ export declare function FilterBar({ search, children, actions, 'aria-label': ariaLabelProp, ariaLabel: ariaLabelDeprecated, className, ...rest }: FilterBarProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,14 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import './FloatingToolbar.css';
3
+ /**
4
+ * Los atributos que se pueden poner en la barra (`role="toolbar"`). Sin
5
+ * `className`, `role`, `aria-label`, `aria-orientation` ni `children`: esos
6
+ * los gobierna el componente. Los `data-*` se admiten tipados para poder
7
+ * pasarlos en un objeto (`{ 'data-editor-ui': '' }`).
8
+ */
9
+ export type FloatingToolbarBarProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'role' | 'aria-label' | 'aria-orientation' | 'children'> & {
10
+ [attribute: `data-${string}`]: string | undefined;
11
+ };
3
12
  export interface FloatingToolbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'children'> {
4
13
  /**
5
14
  * Las acciones del **principio**: a la izquierda del elemento en
@@ -41,6 +50,14 @@ export interface FloatingToolbarProps extends Omit<React.HTMLAttributes<HTMLDivE
41
50
  * proveedor de textos.
42
51
  */
43
52
  label: string;
53
+ /**
54
+ * Atributos para la **barra** (el `role="toolbar"`), no para el ancla: la
55
+ * misma barra en `top` y en los raíles de `sides`. Para marcarla —un
56
+ * `data-*` que la saque del alcance de otra hoja, un `id`— o escuchar en
57
+ * ella. Lo que el componente gobierna (clase, rol, nombre, orientación) no
58
+ * se acepta.
59
+ */
60
+ toolbarProps?: FloatingToolbarBarProps;
44
61
  /** El elemento al que se ancla la barra. */
45
62
  children: ReactNode;
46
63
  /** Se añade DESPUÉS de las clases propias. */
@@ -57,7 +74,8 @@ export interface FloatingToolbarProps extends Omit<React.HTMLAttributes<HTMLDivE
57
74
  * en el orden de tabulación aunque no se vea, así que con teclado siempre se
58
75
  * alcanza; al recibir el foco aparece.
59
76
  *
60
- * Reenvía `ref` y `{...rest}` al elemento ancla (el contenedor), no a la barra.
77
+ * Reenvía `ref` y `{...rest}` al elemento ancla (el contenedor), no a la barra;
78
+ * los atributos de la barra van en `toolbarProps`.
61
79
  */
62
80
  export declare const FloatingToolbar: import("react").ForwardRefExoticComponent<FloatingToolbarProps & import("react").RefAttributes<HTMLDivElement>>;
63
81
  export interface FloatingToolbarButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'children' | 'aria-label'> {
@@ -18,6 +18,14 @@ export interface FormProps extends Omit<ComponentProps<'form'>, 'children'> {
18
18
  alternativesLabel?: string;
19
19
  /** Talla de todos los campos y botones (32/40/48): `lg` en superficies públicas, `md` dentro de las aplicaciones. */
20
20
  size?: FormSize;
21
+ /**
22
+ * Marca lo opcional en todo el formulario (D74): cada `*Field` sin
23
+ * `required` pinta « (opcional)» tras la etiqueta, sin poner `optional`
24
+ * campo a campo. El `optional` de un campo sigue mandando: `optional={false}`
25
+ * la apaga en ese. Para formularios donde casi todo es obligatorio. Por
26
+ * defecto `false`: sin ella, nada cambia.
27
+ */
28
+ markOptional?: boolean;
21
29
  /** Acciones en bloque: los botones a todo el ancho, apilados, también en escritorio (acceso, registro…). */
22
30
  blockActions?: boolean;
23
31
  /** Mensaje de éxito que sustituye al formulario («Gracias — tu mensaje se ha enviado.»): texto anunciado (`role="status"`), sin caja. Con `success`, no se pintan campos ni acciones; `links` sí. */
@@ -1,8 +1,11 @@
1
1
  import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
2
+ import { type HeatmapDivergingDirection } from './heatmapScale';
2
3
  import './Heatmap.css';
3
- export type { HeatmapScale } from './heatmapScale';
4
+ export type { HeatmapScale, HeatmapDivergingDirection, HeatmapDivergingStep, } from './heatmapScale';
5
+ /** La rampa de la matriz: una magnitud (`sequential`) o una distancia a un centro (`diverging`). */
6
+ export type HeatmapScaleKind = 'sequential' | 'diverging';
4
7
  /**
5
- * Los tres textos de la matriz, y los tres son **cromo**: cómo se llama la
8
+ * Los textos de la matriz, y todos son **cromo**: cómo se llama la
6
9
  * tabla, cómo se dice que una casilla no tiene dato y cómo se llama la
7
10
  * leyenda. Los nombres de filas y columnas son contenido, y los escribe quien
8
11
  * pasa los datos.
@@ -14,6 +17,14 @@ export interface HeatmapMessages {
14
17
  empty: string;
15
18
  /** Nombre accesible de la leyenda de la rampa. */
16
19
  scale: string;
20
+ /**
21
+ * Rótulo del centro en la leyenda de la escala divergente, con el valor ya
22
+ * formateado («Centro: 0»). **Opcional** en el tipo para que un catálogo
23
+ * anterior siga compilando; solo se lee con `scale="diverging"` y leyenda,
24
+ * y sin él ni `midpointLabel` sale el respaldo castellano, como cualquier
25
+ * clave ausente.
26
+ */
27
+ midpoint?: (value: string) => string;
17
28
  }
18
29
  /** Una fila: una persona, un puesto. */
19
30
  export interface HeatmapRow {
@@ -45,16 +56,36 @@ export interface HeatmapProps extends Omit<ComponentPropsWithoutRef<'div'>, 'chi
45
56
  columns: HeatmapColumn[];
46
57
  /** Las casillas con dato. Las que falten se pintan sin dato. */
47
58
  cells: HeatmapCell[];
48
- /** Extremo bajo del dominio. Default 0. */
59
+ /**
60
+ * La rampa. `'sequential'` (default) pinta una magnitud, de menos a más;
61
+ * `'diverging'` pinta la distancia a `midpoint`, con un brazo cálido y uno
62
+ * frío de tres intensidades y el neutro en el centro.
63
+ */
64
+ scale?: HeatmapScaleKind;
65
+ /**
66
+ * Extremo bajo del dominio. En la secuencial, default 0. En la divergente
67
+ * no tiene default: si se pasa (él o `max`), el radio de los brazos es la
68
+ * mayor distancia de los extremos pasados al centro.
69
+ */
49
70
  min?: number;
50
71
  /**
51
72
  * Extremo alto del dominio. **Sin él sale del mayor valor de `cells`**, que
52
73
  * sirve para explorar pero hace que dos matrices del mismo panel no se
53
- * puedan comparar: en cuanto haya dos, se pasa.
74
+ * puedan comparar: en cuanto haya dos, se pasa. En la divergente, sin `min`
75
+ * ni `max` el radio sale de la mayor |valor − centro| de las casillas.
54
76
  */
55
77
  max?: number;
56
- /** Pasos de la rampa, de 2 a 6. Default 5. */
78
+ /** Pasos de la rampa secuencial, de 2 a 6. Default 5. La divergente siempre tiene siete. */
57
79
  steps?: number;
80
+ /** El centro de la escala divergente: el valor que se lee como «nada». Default 0. */
81
+ midpoint?: number;
82
+ /**
83
+ * Qué brazo pinta lo que queda por debajo del centro. Default
84
+ * `'warm-below'`: lo que se queda corto es cálido y lo que sobra, frío.
85
+ * `'warm-above'` lo invierte, para magnitudes en las que pasarse es lo que
86
+ * alarma.
87
+ */
88
+ divergingDirection?: HeatmapDivergingDirection;
58
89
  /** Encabezado de la columna de filas («Persona», «Puesto»). */
59
90
  rowHeader?: ReactNode;
60
91
  /** Pinta la cifra dentro de la celda. Default `true`. Con `false` sigue leyéndose. */
@@ -69,6 +100,12 @@ export interface HeatmapProps extends Omit<ComponentPropsWithoutRef<'div'>, 'chi
69
100
  minLabel?: ReactNode;
70
101
  /** Rótulo del extremo alto de la leyenda. Default: el máximo formateado. */
71
102
  maxLabel?: ReactNode;
103
+ /**
104
+ * Rótulo del centro en la leyenda divergente. **Sin él**, sale de
105
+ * `heatmap.midpoint` del catálogo con el centro formateado. Solo se lee con
106
+ * `scale="diverging"` y leyenda.
107
+ */
108
+ midpointLabel?: ReactNode;
72
109
  /**
73
110
  * Nombre accesible de la matriz. **Sin él**, sale de `heatmap.label` del
74
111
  * `BrandMessagesProvider`.
@@ -37,3 +37,53 @@ export declare function heatmapStep(value: number | null | undefined, scale: Hea
37
37
  * para que dos matrices con distinto número de pasos se lean igual de lejos.
38
38
  */
39
39
  export declare function heatmapRampIndex(step: number, steps: number): number;
40
+ /**
41
+ * Los peldaños de la rampa divergente: tres por brazo y el neutro en medio.
42
+ * El nombre es el del token (`heatmap.diverging-<peldaño>-bg`).
43
+ */
44
+ export type HeatmapDivergingStep = 'warm-3' | 'warm-2' | 'warm-1' | 'neutral' | 'cool-1' | 'cool-2' | 'cool-3';
45
+ /** Intensidades por brazo de la rampa divergente. */
46
+ export declare const HEATMAP_DIVERGING_ARM_STEPS = 3;
47
+ /**
48
+ * Qué brazo pinta lo que queda **por debajo** del centro. Por defecto,
49
+ * `'warm-below'`: lo que se queda corto es cálido (cayena) y lo que sobra es
50
+ * frío (prusia). `'warm-above'` lo da la vuelta, para magnitudes en las que
51
+ * pasarse es lo que alarma (un retraso, un sobrecoste).
52
+ */
53
+ export type HeatmapDivergingDirection = 'warm-below' | 'warm-above';
54
+ /** El dominio de la escala divergente: el centro y cuánto se aleja de él. */
55
+ export interface HeatmapDivergingScale {
56
+ /** El valor que se lee como «nada»: la meta, el cero de una diferencia. */
57
+ midpoint: number;
58
+ /**
59
+ * La distancia al centro que pinta el extremo de cada brazo. Los dos brazos
60
+ * comparten radio, así que la misma distancia pinta la misma intensidad a
61
+ * los dos lados.
62
+ */
63
+ radius: number;
64
+ direction?: HeatmapDivergingDirection;
65
+ }
66
+ /**
67
+ * El peldaño divergente que le toca a un valor. `null` es **sin dato**.
68
+ *
69
+ * El intervalo `[centro − radio, centro + radio]` se parte en **siete bandas
70
+ * iguales**, una por peldaño, como la secuencial parte el suyo en tantas
71
+ * bandas como pasos: la banda central —a menos de medio séptimo de diámetro
72
+ * del centro— es el neutro, y cada brazo tiene tres bandas más. Lo que se sale
73
+ * del radio se recorta contra el extremo. Con niveles enteros y un radio de 3
74
+ * (una brecha de −3 a +3), cada nivel cae en su peldaño: 0 es el neutro, ±1
75
+ * el primero de cada brazo y ±3 el extremo.
76
+ */
77
+ export declare function heatmapDivergingStep(value: number | null | undefined, scale: HeatmapDivergingScale): HeatmapDivergingStep | null;
78
+ /**
79
+ * Los siete peldaños en el orden en que se leen de izquierda a derecha, del
80
+ * valor más bajo al más alto: el orden de la leyenda.
81
+ */
82
+ export declare function heatmapDivergingLegend(direction?: HeatmapDivergingDirection): HeatmapDivergingStep[];
83
+ /**
84
+ * El radio de la escala divergente. Los extremos que se pasen (`min`, `max`)
85
+ * mandan: el radio es la mayor distancia de cualquiera de ellos al centro, y
86
+ * así dos matrices del mismo panel se comparan. **Sin ninguno, sale de los
87
+ * datos**: la mayor |valor − centro| de las casillas.
88
+ */
89
+ export declare function heatmapDivergingRadius(midpoint: number, values: readonly (number | null)[], min?: number, max?: number): number;
@@ -53,7 +53,23 @@ export interface ImageCropDialogProps {
53
53
  */
54
54
  errorMessage?: string;
55
55
  onConfirm: (blob: Blob) => void | Promise<void>;
56
- onClose: () => void;
56
+ /**
57
+ * Se llama cuando el diálogo pide cerrarse —`Cancelar`, el aspa, `Escape`,
58
+ * el velo, o tras confirmar— con `false`, como `onOpenChange` del resto de
59
+ * superposiciones del DS. El diálogo está abierto mientras `sourceUrl` no
60
+ * sea `null`: cerrarlo es devolverlo a `null`.
61
+ */
62
+ onOpenChange?: (open: boolean) => void;
63
+ /**
64
+ * @deprecated Usa `onOpenChange`. Sigue funcionando y avisa en desarrollo;
65
+ * se retira en la v52.
66
+ */
67
+ onClose?: () => void;
68
+ /**
69
+ * Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye).
70
+ * **Va al panel (su contenido, dentro del diálogo); el disparador, si lo hay, es tuyo y ya lleva tus clases**
71
+ * (regla de `className` en componentes con portal, CLAUDE.md § Base UI).
72
+ */
57
73
  className?: string;
58
74
  }
59
75
  /**
@@ -63,4 +79,4 @@ export interface ImageCropDialogProps {
63
79
  * `react-image-crop` aporta el gesto de selección; el DS pone el diálogo, las
64
80
  * acciones y el volcado a lienzo (`cropImageToBlob`).
65
81
  */
66
- export declare function ImageCropDialog({ sourceUrl, title, description, circularCrop, aspect, outputSize, outputMimeType, busy, cancelLabel, confirmLabel, closeLabel, loadingLabel, errorMessage, onConfirm, onClose, className, }: ImageCropDialogProps): import("react/jsx-runtime").JSX.Element;
82
+ export declare function ImageCropDialog({ sourceUrl, title, description, circularCrop, aspect, outputSize, outputMimeType, busy, cancelLabel, confirmLabel, closeLabel, loadingLabel, errorMessage, onConfirm, onOpenChange, onClose, className, }: ImageCropDialogProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,6 @@
1
1
  import { type ComponentPropsWithoutRef } from 'react';
2
2
  import './InputField.css';
3
+ import { type FieldOptionalProps } from '../_shared/FieldShell';
3
4
  /**
4
5
  * El único texto que el campo emite por su cuenta: el nombre accesible del
5
6
  * aspa de borrado. Es cromo —dice la misma cosa en toda la suite—, así que
@@ -13,7 +14,7 @@ export interface InputFieldMessages {
13
14
  /** Nombre accesible del botón que vacía un campo de búsqueda. */
14
15
  clear: string;
15
16
  }
16
- export interface InputFieldProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size' | 'type' | 'value' | 'defaultValue'> {
17
+ export interface InputFieldProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size' | 'type' | 'value' | 'defaultValue'>, FieldOptionalProps {
17
18
  id: string;
18
19
  label: string;
19
20
  /**
@@ -1,6 +1,7 @@
1
+ import { type FieldOptionalProps } from '../_shared/FieldShell';
1
2
  import type { Country } from 'react-phone-number-input';
2
3
  import './InputPhoneField.css';
3
- export interface InputPhoneFieldProps {
4
+ export interface InputPhoneFieldProps extends FieldOptionalProps {
4
5
  /** `id` del control. Si no se pasa, se genera con `useId`. */
5
6
  id?: string;
6
7
  label: string;
@@ -36,6 +36,11 @@ export interface MenuProps {
36
36
  * Pásalo solo para llevar la capa a otro sitio: gana siempre.
37
37
  */
38
38
  container?: HTMLElement | null;
39
+ /**
40
+ * Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye).
41
+ * **Va al panel; el disparador es tuyo y ya lleva tus clases**
42
+ * (regla de `className` en componentes con portal, CLAUDE.md § Base UI).
43
+ */
39
44
  className?: string;
40
45
  }
41
46
  /**
@@ -18,7 +18,19 @@ export interface ModalMessages {
18
18
  }
19
19
  export interface ModalProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'title'> {
20
20
  open: boolean;
21
- onClose: () => void;
21
+ /**
22
+ * Se llama cuando el diálogo pide abrirse o cerrarse (aspa, `Escape`, clic en
23
+ * el velo), con el estado al que quiere pasar — la misma firma que `Sheet`,
24
+ * `Popover` y el resto de superposiciones del DS. Un `Modal` controlado solo
25
+ * pide cerrarse, así que en la práctica llega siempre `false`.
26
+ */
27
+ onOpenChange?: (open: boolean) => void;
28
+ /**
29
+ * @deprecated Usa `onOpenChange` (`onOpenChange={(open) => { if (!open) cerrar(); }}`,
30
+ * o directamente `onOpenChange={setOpen}`). Sigue funcionando y avisa en
31
+ * desarrollo; se retira en la v52.
32
+ */
33
+ onClose?: () => void;
22
34
  title?: string;
23
35
  children: React.ReactNode;
24
36
  /**
@@ -93,4 +105,4 @@ export interface ModalProps extends Omit<React.ComponentPropsWithoutRef<'div'>,
93
105
  * `className` se concatena tras las clases propias del popup, como en `Sheet`.
94
106
  * La cara del diálogo sigue personalizándose por tokens.
95
107
  */
96
- export declare function Modal({ open, onClose, title, children, closeLabel, fallbackTitle, container, description, 'aria-describedby': ariaDescribedBy, initialFocus, footer, footerClassName, className, ...rest }: ModalProps): import("react/jsx-runtime").JSX.Element;
108
+ export declare function Modal({ open, onOpenChange, onClose, title, children, closeLabel, fallbackTitle, container, description, 'aria-describedby': ariaDescribedBy, initialFocus, footer, footerClassName, className, ...rest }: ModalProps): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,8 @@
1
1
  import './MultiSelectField.css';
2
+ import { type FieldOptionalProps } from '../_shared/FieldShell';
2
3
  import type { MultiSelectOption } from '../../atoms/MultiSelect/MultiSelect';
3
4
  export type { MultiSelectOption };
4
- export interface MultiSelectFieldProps {
5
+ export interface MultiSelectFieldProps extends FieldOptionalProps {
5
6
  /** `id` del control. Si no se pasa, se genera con `useId`. */
6
7
  id?: string;
7
8
  label: string;
@@ -25,6 +26,8 @@ export interface MultiSelectFieldProps {
25
26
  name?: string;
26
27
  disabled?: boolean;
27
28
  readOnly?: boolean;
29
+ /** Obligatorio: `aria-required` en el `combobox` y `required` en el input oculto (ver `MultiSelect`). */
30
+ required?: boolean;
28
31
  /** Marca el control en error sin mensaje. Un `errorMessage` ya lo implica. */
29
32
  error?: boolean;
30
33
  /** Mensaje de error: se anuncia (`role="alert"`) y pone el control en error. */
@@ -124,7 +124,12 @@ export interface NotificationPanelProps {
124
124
  open?: boolean;
125
125
  defaultOpen?: boolean;
126
126
  onOpenChange?: (open: boolean, details: PopoverChangeDetails) => void;
127
- /** Se añade DESPUÉS de las clases propias del panel (el consumidor añade, no sustituye). */
127
+ /**
128
+ * Va al **disparador** —la campana, el `NotificationButton` que pinta el
129
+ * propio componente y que se queda en su sitio—, no al panel (D65). Se añade
130
+ * DESPUÉS de las clases propias (el consumidor añade, no sustituye). El
131
+ * panel se personaliza con tokens.
132
+ */
128
133
  className?: string;
129
134
  }
130
135
  /**