@studiolxd/brand 49.28.0 → 50.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 (279) hide show
  1. package/LICENSE +61 -0
  2. package/README.md +26 -4
  3. package/dist/_shared/assign-ref.js +6 -0
  4. package/dist/_shared/calendargrid.js +57 -57
  5. package/dist/_shared/datepicker.js +67 -65
  6. package/dist/_shared/default-render-link.js +7 -0
  7. package/dist/_shared/dialogsurface.js +1 -1
  8. package/dist/_shared/dropdownitems.js +14 -20
  9. package/dist/_shared/imagecropdialog.js +38 -441
  10. package/dist/_shared/overflow-focusable.js +15 -0
  11. package/dist/_shared/side-offset.js +13 -0
  12. package/dist/_shared/tokens.js +31 -129
  13. package/dist/_shared/useasyncoptions.js +30 -0
  14. package/dist/_types/atoms/Accordion/Accordion.d.ts +7 -1
  15. package/dist/_types/atoms/AsyncMultiSelect/AsyncMultiSelect.d.ts +8 -4
  16. package/dist/_types/atoms/AsyncSelect/AsyncSelect.d.ts +8 -4
  17. package/dist/_types/atoms/Autocomplete/Autocomplete.d.ts +10 -6
  18. package/dist/_types/atoms/CloseButton/CloseButton.d.ts +13 -3
  19. package/dist/_types/atoms/Fieldset/Fieldset.d.ts +1 -1
  20. package/dist/_types/atoms/InputPhone/InputPhone.d.ts +2 -0
  21. package/dist/_types/atoms/MultiSelect/MultiSelect.d.ts +11 -10
  22. package/dist/_types/atoms/Select/Select.d.ts +6 -0
  23. package/dist/_types/atoms/Skeleton/Skeleton.d.ts +1 -1
  24. package/dist/_types/atoms/Spinner/Spinner.d.ts +3 -1
  25. package/dist/_types/atoms/TypingIndicator/TypingIndicator.d.ts +3 -1
  26. package/dist/_types/atoms/_shared/useAsyncOptions.d.ts +36 -0
  27. package/dist/_types/constants/assign-ref.d.ts +12 -0
  28. package/dist/_types/constants/default-render-link.d.ts +13 -0
  29. package/dist/_types/constants/overflow-focusable.d.ts +15 -0
  30. package/dist/_types/constants/side-offset.d.ts +18 -0
  31. package/dist/_types/email/EmailLayout.d.ts +38 -21
  32. package/dist/_types/messages/BrandMessages.d.ts +8 -2
  33. package/dist/_types/messages/index.d.ts +1 -1
  34. package/dist/_types/molecules/AppLauncher/AppLauncher.d.ts +9 -3
  35. package/dist/_types/molecules/Calendar/Calendar.d.ts +10 -1
  36. package/dist/_types/molecules/CalendarPlanner/CalendarPlanner.d.ts +43 -13
  37. package/dist/_types/molecules/CalendarRoster/CalendarRoster.d.ts +10 -2
  38. package/dist/_types/molecules/ContextMenu/ContextMenu.d.ts +8 -1
  39. package/dist/_types/molecules/DatePicker/DatePicker.d.ts +6 -0
  40. package/dist/_types/molecules/DateTimeField/DateTimeField.d.ts +2 -0
  41. package/dist/_types/molecules/DocsSearch/DocsSearch.d.ts +2 -2
  42. package/dist/_types/molecules/FloatingToolbar/FloatingToolbar.d.ts +83 -0
  43. package/dist/_types/molecules/FormField/FormField.d.ts +5 -6
  44. package/dist/_types/molecules/LanguageSwitcher/LanguageSwitcher.d.ts +7 -3
  45. package/dist/_types/molecules/LoadingRegion/LoadingRegion.d.ts +12 -4
  46. package/dist/_types/molecules/Modal/Modal.d.ts +10 -4
  47. package/dist/_types/molecules/OrgSwitcher/OrgSwitcher.d.ts +7 -1
  48. package/dist/_types/molecules/PasswordField/PasswordField.d.ts +9 -2
  49. package/dist/_types/molecules/PrevNextNav/PrevNextNav.d.ts +3 -1
  50. package/dist/_types/molecules/RecurrenceField/RecurrenceField.d.ts +6 -1
  51. package/dist/_types/molecules/SidebarNav/SidebarNav.d.ts +18 -2
  52. package/dist/_types/molecules/SiteNav/SiteNav.d.ts +4 -1
  53. package/dist/_types/molecules/StatTile/StatTile.d.ts +15 -1
  54. package/dist/_types/molecules/Table/Table.d.ts +1 -1
  55. package/dist/_types/molecules/ThemeSwitcher/ThemeSwitcher.d.ts +38 -3
  56. package/dist/_types/molecules/Toast/Toaster.d.ts +8 -0
  57. package/dist/_types/molecules/UserMenu/UserMenu.d.ts +7 -1
  58. package/dist/_types/molecules/_shared/calendarGrid.d.ts +15 -2
  59. package/dist/_types/molecules/_shared/dialogSurface.d.ts +6 -1
  60. package/dist/_types/molecules/_shared/dropdownItems.d.ts +0 -2
  61. package/dist/_types/sections/AppHeader/AppHeader.d.ts +3 -1
  62. package/dist/_types/sections/AppShell/AppShell.d.ts +6 -1
  63. package/dist/_types/sections/LegalFooter/LegalFooter.d.ts +7 -1
  64. package/dist/_types/sections/Sidebar/Sidebar.d.ts +3 -1
  65. package/dist/_types/sections/SiteFooter/SiteFooter.d.ts +6 -2
  66. package/dist/_types/sections/SiteHeader/SiteHeader.d.ts +2 -2
  67. package/dist/_types/templates/ConnectorAuth/ConnectorAuthShell.d.ts +5 -2
  68. package/dist/_types/templates/ConnectorAuth/ConnectorConsentPage.d.ts +1 -1
  69. package/dist/_types/templates/ConnectorAuth/ConnectorExternalSignInPage.d.ts +1 -1
  70. package/dist/_types/templates/ConnectorAuth/ConnectorRejectionPage.d.ts +1 -1
  71. package/dist/_types/templates/ConnectorAuth/ConnectorSignInPage.d.ts +1 -1
  72. package/dist/_types/templates/ErrorPage/ErrorPage.d.ts +7 -1
  73. package/dist/_types/templates/NotFoundPage/NotFoundPage.d.ts +7 -1
  74. package/dist/_types/templates/PublicPageShell/PublicPageShell.d.ts +6 -0
  75. package/dist/accordion.css +1 -1
  76. package/dist/accordion.js +6 -5
  77. package/dist/alert.css +1 -1
  78. package/dist/app-header.js +16 -21
  79. package/dist/app-launcher.css +1 -1
  80. package/dist/app-launcher.js +29 -21
  81. package/dist/app-shell.js +43 -43
  82. package/dist/async-multi-select.css +1 -1
  83. package/dist/async-multi-select.js +104 -173
  84. package/dist/async-select.css +1 -1
  85. package/dist/async-select.js +81 -137
  86. package/dist/autocomplete.css +1 -1
  87. package/dist/autocomplete.js +76 -115
  88. package/dist/brand.css +77 -987
  89. package/dist/breadcrumb.js +11 -16
  90. package/dist/button.css +1 -1
  91. package/dist/calendar-planner.css +1 -1
  92. package/dist/calendar-planner.js +100 -95
  93. package/dist/calendar-roster.css +1 -1
  94. package/dist/calendar-roster.js +69 -61
  95. package/dist/calendar.css +1 -1
  96. package/dist/calendar.js +86 -85
  97. package/dist/card.css +1 -1
  98. package/dist/card.js +42 -41
  99. package/dist/chart.css +1 -1
  100. package/dist/chat-shell.js +48 -47
  101. package/dist/checkbox.css +1 -1
  102. package/dist/close-button.js +14 -12
  103. package/dist/command-palette.css +1 -1
  104. package/dist/connector-consent-page.js +19 -18
  105. package/dist/connector-external-sign-in-page.js +6 -5
  106. package/dist/connector-rejection-page.js +5 -4
  107. package/dist/connector-sign-in-page.js +10 -9
  108. package/dist/consent.css +1 -1
  109. package/dist/context-menu.js +3 -2
  110. package/dist/conversation-list.css +1 -1
  111. package/dist/conversation-thread.css +1 -1
  112. package/dist/conversation-thread.js +1 -0
  113. package/dist/data-table.js +74 -1625
  114. package/dist/date-time-field.js +7 -6
  115. package/dist/docs-search.js +36 -38
  116. package/dist/email.js +10 -7
  117. package/dist/error-page.js +2 -2
  118. package/dist/fieldset.css +1 -1
  119. package/dist/figure.js +1 -0
  120. package/dist/file-upload.css +1 -1
  121. package/dist/file-upload.js +48 -50
  122. package/dist/floating-toolbar.css +1 -0
  123. package/dist/floating-toolbar.js +64 -0
  124. package/dist/form-field.js +55 -53
  125. package/dist/imagecropdialog.css +1 -1
  126. package/dist/input-phone.css +1 -1
  127. package/dist/input-phone.js +30 -31
  128. package/dist/input.css +1 -1
  129. package/dist/label.css +1 -1
  130. package/dist/language-switcher.js +37 -44
  131. package/dist/legal-footer.js +12 -17
  132. package/dist/loading-region.css +1 -1
  133. package/dist/loading-region.js +8 -8
  134. package/dist/menu.css +1 -1
  135. package/dist/menu.js +4 -3
  136. package/dist/message-bubble.css +1 -1
  137. package/dist/message-composer.css +1 -1
  138. package/dist/modal.css +1 -1
  139. package/dist/modal.js +9 -9
  140. package/dist/multi-select.css +1 -1
  141. package/dist/multi-select.js +104 -172
  142. package/dist/not-found-page.js +8 -5
  143. package/dist/notification-list.js +16 -21
  144. package/dist/notification-panel.js +34 -46
  145. package/dist/number-badge.css +1 -1
  146. package/dist/number-input.css +1 -1
  147. package/dist/org-switcher.css +1 -1
  148. package/dist/org-switcher.js +13 -11
  149. package/dist/password-field.js +40 -39
  150. package/dist/popover.css +1 -1
  151. package/dist/popover.js +9 -15
  152. package/dist/prev-next-nav.js +8 -7
  153. package/dist/public-page-shell.js +7 -6
  154. package/dist/radio.css +1 -1
  155. package/dist/recurrence-field.css +1 -1
  156. package/dist/recurrence-field.js +38 -37
  157. package/dist/select.css +1 -1
  158. package/dist/select.js +3 -2
  159. package/dist/sheet.css +1 -1
  160. package/dist/sidebar-nav.css +1 -1
  161. package/dist/sidebar-nav.js +75 -70
  162. package/dist/sidebar.css +1 -1
  163. package/dist/sidebar.js +46 -42
  164. package/dist/site-footer.js +28 -28
  165. package/dist/site-header.js +39 -44
  166. package/dist/site-nav.js +10 -19
  167. package/dist/site-search.js +34 -36
  168. package/dist/site-shell.js +17 -16
  169. package/dist/skeleton.js +8 -6
  170. package/dist/sortable.js +20 -19
  171. package/dist/spinner.js +11 -7
  172. package/dist/stat-tile.js +24 -26
  173. package/dist/switcher.css +1 -1
  174. package/dist/table.css +1 -1
  175. package/dist/table.js +57 -45
  176. package/dist/textarea.css +1 -1
  177. package/dist/theme-switcher.js +57 -56
  178. package/dist/toaster.css +1 -1
  179. package/dist/toggle.css +1 -1
  180. package/dist/tokens.css +75 -986
  181. package/dist/tooltip.css +1 -1
  182. package/dist/tooltip.js +20 -27
  183. package/dist/typing-indicator.css +1 -1
  184. package/dist/typing-indicator.js +4 -4
  185. package/dist/user-menu.css +1 -1
  186. package/dist/user-menu.js +38 -45
  187. package/dist/visuallyhidden.css +1 -1
  188. package/package.json +26 -14
  189. package/src/tokens/components/async-multi-select.css +4 -0
  190. package/src/tokens/components/async-select.css +3 -0
  191. package/src/tokens/components/autocomplete.css +1 -0
  192. package/src/tokens/components/breadcrumb.css +0 -2
  193. package/src/tokens/components/button.css +0 -23
  194. package/src/tokens/components/control.css +0 -4
  195. package/src/tokens/components/file-upload.css +0 -4
  196. package/src/tokens/components/radio.css +2 -0
  197. package/src/tokens/components/site-header.css +0 -1
  198. package/src/tokens/index.css +5 -7
  199. package/src/tokens/molecules/async-multi-select-field.css +0 -6
  200. package/src/tokens/molecules/async-select-field.css +0 -6
  201. package/src/tokens/molecules/autocomplete-field.css +0 -5
  202. package/src/tokens/molecules/avatar-upload.css +0 -6
  203. package/src/tokens/molecules/calendar-roster.css +5 -0
  204. package/src/tokens/molecules/chart.css +0 -3
  205. package/src/tokens/molecules/checkbox-field.css +0 -6
  206. package/src/tokens/molecules/consent.css +1 -0
  207. package/src/tokens/molecules/conversation-thread.css +10 -0
  208. package/src/tokens/molecules/date-picker-field.css +0 -6
  209. package/src/tokens/molecules/date-time-field.css +0 -6
  210. package/src/tokens/molecules/dropdown-field.css +0 -6
  211. package/src/tokens/molecules/file-upload-field.css +0 -6
  212. package/src/tokens/molecules/floating-toolbar.css +18 -0
  213. package/src/tokens/molecules/floating-toolbar.ts +4 -0
  214. package/src/tokens/molecules/input-field.css +0 -1
  215. package/src/tokens/molecules/input-phone-field.css +0 -6
  216. package/src/tokens/molecules/modal.css +1 -0
  217. package/src/tokens/molecules/multi-select-field.css +0 -6
  218. package/src/tokens/molecules/number-input-field.css +0 -6
  219. package/src/tokens/molecules/otp-field.css +0 -6
  220. package/src/tokens/molecules/radio-field.css +0 -6
  221. package/src/tokens/molecules/recurrence-field.css +1 -0
  222. package/src/tokens/molecules/select-field.css +0 -6
  223. package/src/tokens/molecules/sidebar-nav.css +0 -6
  224. package/src/tokens/molecules/site-search.css +0 -2
  225. package/src/tokens/molecules/switcher-field.css +0 -1
  226. package/src/tokens/molecules/table.css +1 -0
  227. package/src/tokens/molecules/textarea-field.css +0 -6
  228. package/src/tokens/molecules/time-field.css +0 -6
  229. package/src/tokens/scss/_index.legacy.scss +1 -0
  230. package/src/tokens/scss/_index.scss +1 -0
  231. package/src/tokens/scss/components/_async-multi-select.scss +4 -0
  232. package/src/tokens/scss/components/_async-select.scss +3 -0
  233. package/src/tokens/scss/components/_autocomplete.scss +1 -0
  234. package/src/tokens/scss/components/_breadcrumb.scss +0 -2
  235. package/src/tokens/scss/components/_button.scss +0 -23
  236. package/src/tokens/scss/components/_control.scss +0 -4
  237. package/src/tokens/scss/components/_file-upload.scss +0 -4
  238. package/src/tokens/scss/components/_site-header.scss +0 -1
  239. package/src/tokens/scss/molecules/_async-multi-select-field.scss +0 -5
  240. package/src/tokens/scss/molecules/_async-select-field.scss +0 -5
  241. package/src/tokens/scss/molecules/_autocomplete-field.scss +0 -5
  242. package/src/tokens/scss/molecules/_avatar-upload.scss +0 -5
  243. package/src/tokens/scss/molecules/_calendar-roster.scss +4 -0
  244. package/src/tokens/scss/molecules/_chart.scss +0 -2
  245. package/src/tokens/scss/molecules/_checkbox-field.scss +0 -5
  246. package/src/tokens/scss/molecules/_consent.scss +1 -0
  247. package/src/tokens/scss/molecules/_conversation-thread.scss +3 -0
  248. package/src/tokens/scss/molecules/_date-picker-field.scss +0 -5
  249. package/src/tokens/scss/molecules/_date-time-field.scss +0 -5
  250. package/src/tokens/scss/molecules/_dropdown-field.scss +0 -5
  251. package/src/tokens/scss/molecules/_file-upload-field.scss +0 -5
  252. package/src/tokens/scss/molecules/_floating-toolbar.scss +15 -0
  253. package/src/tokens/scss/molecules/_input-field.scss +0 -1
  254. package/src/tokens/scss/molecules/_input-phone-field.scss +0 -5
  255. package/src/tokens/scss/molecules/_modal.scss +1 -0
  256. package/src/tokens/scss/molecules/_multi-select-field.scss +0 -5
  257. package/src/tokens/scss/molecules/_number-input-field.scss +0 -5
  258. package/src/tokens/scss/molecules/_otp-field.scss +0 -5
  259. package/src/tokens/scss/molecules/_radio-field.scss +0 -5
  260. package/src/tokens/scss/molecules/_recurrence-field.scss +1 -0
  261. package/src/tokens/scss/molecules/_select-field.scss +0 -5
  262. package/src/tokens/scss/molecules/_sidebar-nav.scss +0 -4
  263. package/src/tokens/scss/molecules/_site-search.scss +0 -2
  264. package/src/tokens/scss/molecules/_switcher-field.scss +0 -1
  265. package/src/tokens/scss/molecules/_table.scss +1 -0
  266. package/src/tokens/scss/molecules/_textarea-field.scss +0 -5
  267. package/src/tokens/scss/molecules/_time-field.scss +0 -5
  268. package/src/tokens/surface-dark-derived.css +2 -1
  269. package/src/tokens/surface-invert.css +15 -21
  270. package/src/tokens/surface-public.css +0 -19
  271. package/src/tokens/tokens.json +31 -129
  272. package/CHANGELOG.md +0 -8154
  273. package/dist/_types/data/home.d.ts +0 -83
  274. package/dist/_types/pages/Auth/AuthPage.d.ts +0 -24
  275. package/dist/_types/pages/Onboarding/OnboardingPage.d.ts +0 -37
  276. package/dist/_types/pages/Status/StatusPage.d.ts +0 -37
  277. package/dist/_types/pages/Status/_datos.d.ts +0 -47
  278. package/src/tokens/surface-light.css +0 -782
  279. package/src/tokens/utils.test.ts +0 -86
@@ -1,4 +1,4 @@
1
- import { Popover as BasePopover } from '@base-ui/react/popover';
1
+ import { Select as BaseSelect } from '@base-ui/react/select';
2
2
  import './MultiSelect.css';
3
3
  /**
4
4
  * Los dos textos que el control emite por su cuenta: el marcador de sitio sin
@@ -63,16 +63,17 @@ export interface MultiSelectProps {
63
63
  * solo para llevar la capa a otro sitio: un `.surface-dark` **anidado**, el
64
64
  * cajón de un shell propio. Gana siempre.
65
65
  */
66
- container?: React.ComponentPropsWithoutRef<typeof BasePopover.Portal>['container'];
66
+ container?: React.ComponentPropsWithoutRef<typeof BaseSelect.Portal>['container'];
67
67
  }
68
68
  /**
69
- * Selección múltiple. El `ref` va al elemento con `role="combobox"`, que es lo
70
- * enfocable, para que react-hook-form pueda enfocarlo al fallar la validación.
71
- *
72
- * Teclado del patrón combobox (el mismo que `AsyncSelect`): flechas abren y
73
- * recorren, Inicio/Fin saltan a los extremos, Intro/Espacio marcan y desmarcan,
74
- * Escape cierra y escribir una letra salta a la opción que empieza por ella. El
75
- * foco del DOM no se mueve nunca de la caja: la opción activa se señala con
76
- * `aria-activedescendant`.
69
+ * Selección múltiple sin campo de texto, sobre el `Select` múltiple de Base UI
70
+ * (no sobre su `Combobox`: sin `<input>`, la guía de Base UI manda al
71
+ * `Select`). El teclado es suyo: flechas, Intro y Espacio abren; dentro de la
72
+ * lista las flechas y Inicio/Fin recorren, Intro y Espacio marcan y desmarcan,
73
+ * escribir salta a la opción que empieza por lo tecleado y Escape cierra y
74
+ * devuelve el foco a la caja. La lista **sí recibe el foco** (es una lista de
75
+ * Base UI, no un foco virtual). El `ref` va al elemento con `role="combobox"`,
76
+ * que es lo enfocable, para que react-hook-form pueda enfocarlo al fallar la
77
+ * validación.
77
78
  */
78
79
  export declare const MultiSelect: import("react").ForwardRefExoticComponent<MultiSelectProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -80,6 +80,12 @@ export interface SelectProps {
80
80
  * cajón de un shell propio. Gana siempre.
81
81
  */
82
82
  container?: SelectPortalContainer;
83
+ /**
84
+ * Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye).
85
+ * Va al disparador: es el único nodo que la forma cerrada pinta en su sitio
86
+ * (la lista sale por un portal).
87
+ */
88
+ className?: string;
83
89
  }
84
90
  type BaseSelectRootProps = React.ComponentProps<typeof BaseSelect.Root<string>>;
85
91
  export interface SelectRootProps extends Omit<BaseSelectRootProps, 'onValueChange' | 'multiple'> {
@@ -19,4 +19,4 @@ export interface SkeletonProps extends Omit<React.SVGProps<SVGSVGElement>, 'widt
19
19
  * saldría a ancho completo y una línea de alto. No hay prop `style` por lo
20
20
  * mismo: el atributo no llegaría a pintarse.
21
21
  */
22
- export declare function Skeleton({ width, height, circle, className, ...rest }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare const Skeleton: import("react").ForwardRefExoticComponent<Omit<SkeletonProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
@@ -20,5 +20,7 @@ export interface SpinnerProps {
20
20
  label?: string;
21
21
  /** Cuando true, el spinner es puramente decorativo (sin rol ni anuncio). */
22
22
  'aria-hidden'?: boolean;
23
+ /** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
24
+ className?: string;
23
25
  }
24
- export declare function Spinner({ size, label, 'aria-hidden': ariaHidden }: SpinnerProps): import("react/jsx-runtime").JSX.Element;
26
+ export declare function Spinner({ size, label, 'aria-hidden': ariaHidden, className }: SpinnerProps): import("react/jsx-runtime").JSX.Element;
@@ -29,6 +29,8 @@ export interface TypingIndicatorProps {
29
29
  * `BrandMessagesProvider`.
30
30
  */
31
31
  label?: string;
32
+ /** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
33
+ className?: string;
32
34
  }
33
35
  /** Tres puntos cuadrados que laten en secuencia: «alguien está escribiendo». */
34
- export declare function TypingIndicator({ name, label }: TypingIndicatorProps): import("react/jsx-runtime").JSX.Element;
36
+ export declare function TypingIndicator({ name, label, className }: TypingIndicatorProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Lo que recibe un control de búsqueda para pedir opciones: lo escrito, y
3
+ * devuelve la lista, en el acto o en una promesa.
4
+ */
5
+ export type SearchOptions<T> = (query: string) => T[] | Promise<T[]>;
6
+ export interface AsyncOptions<T> {
7
+ /** Las opciones de la última búsqueda que terminó (y no se descartó). */
8
+ results: T[];
9
+ /** Hay una búsqueda en vuelo. */
10
+ loading: boolean;
11
+ /**
12
+ * Ha terminado al menos una búsqueda desde la última limpieza: distingue
13
+ * «aún no se ha buscado» de «se buscó y no hay nada» (el aviso de vacío).
14
+ */
15
+ hasSearched: boolean;
16
+ /** Busca ya, sin rebote. */
17
+ search: (query: string) => void;
18
+ /** Busca tras el rebote (`debounceMs`); a 0, en el acto. */
19
+ schedule: (query: string) => void;
20
+ /** Cancela el rebote pendiente y descarta la búsqueda en vuelo. */
21
+ cancel: () => void;
22
+ /** Vacía los resultados y vuelve al estado de «aún no se ha buscado». */
23
+ clear: () => void;
24
+ }
25
+ /**
26
+ * La carga asíncrona que comparten `AsyncSelect`, `AsyncMultiSelect` y
27
+ * `Autocomplete`: rebote entre teclas, un contador de petición para que solo
28
+ * mande la última —dos búsquedas seguidas pueden resolverse fuera de orden y
29
+ * pintar los resultados viejos— y limpieza al desmontar, para que una
30
+ * respuesta tardía no intente pintar nada. Si `onSearch` lanza o rechaza, no
31
+ * hay opciones: el control no tiene un estado de error propio.
32
+ *
33
+ * La conducta del combobox (teclado, foco, anuncios) es de Base UI; esto solo
34
+ * decide qué opciones hay en cada momento.
35
+ */
36
+ export declare function useAsyncOptions<T>(onSearch: SearchOptions<T>, debounceMs: number): AsyncOptions<T>;
@@ -0,0 +1,12 @@
1
+ import type { Ref } from 'react';
2
+ /**
3
+ * Asigna un nodo a una `ref` de React, sea función u objeto. Es la pieza con
4
+ * la que un componente que necesita su propio nodo (para enfocar, medir o
5
+ * escribir por el CSSOM) lo comparte con la `ref` que le pasa el consumidor:
6
+ * se llama desde una ref de callback que hace las dos cosas.
7
+ *
8
+ * Sin `ref` del consumidor no hace nada. El valor que devuelva una ref de
9
+ * función (la limpieza de React 19) se descarta, igual que hacían las copias
10
+ * en línea a las que sustituye.
11
+ */
12
+ export declare function assignRef<T>(target: Ref<T> | undefined, node: T | null): void;
@@ -0,0 +1,13 @@
1
+ import type { AnchorHTMLAttributes } from 'react';
2
+ /**
3
+ * El enlace por defecto de los componentes con `renderLink`: un `<a>` que
4
+ * recibe **todas** las props que le llegan. Reenviarlas todas no es un
5
+ * detalle: en un menú, el motor de conducta inyecta rol, `tabIndex` y
6
+ * manejadores de teclado en el enlace, y un `renderLink` que solo copie
7
+ * `href`/`className` lo rompe. El enlace del router del producto tiene que
8
+ * hacer lo mismo (`<Link {...props} />`).
9
+ *
10
+ * Quien lo use pasa al `renderLink` **solo atributos de `<a>`**: una prop
11
+ * interna se quita antes de llamarlo, no se filtra aquí dentro.
12
+ */
13
+ export declare function defaultRenderLink(props: AnchorHTMLAttributes<HTMLAnchorElement>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { type RefObject } from 'react';
2
+ /**
3
+ * ¿Desborda el contenedor? Un contenedor con scroll tiene que poder recibir el
4
+ * foco para que el teclado lo desplace (WCAG 2.1.1; regla de axe
5
+ * `scrollable-region-focusable`): sin un descendiente enfocable, quien no usa
6
+ * ratón no llega a lo que queda fuera. Pero una parada de tabulador de más en
7
+ * cada tabla que cabe entera estorba, así que esto devuelve `true` solo
8
+ * mientras el contenido desborda — y el componente pone entonces
9
+ * `tabIndex={0}`.
10
+ *
11
+ * Mide en cliente (`ResizeObserver` sobre el contenedor y su primer hijo, que
12
+ * crece con las filas): el primer render del servidor sale sin parada, que es
13
+ * lo correcto mientras no se sepa si desborda.
14
+ */
15
+ export declare function useOverflowFocusable(ref: RefObject<HTMLElement | null>): boolean;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Convierte una longitud CSS (`4px`, `0.25rem`, `0.5em`) a píxeles. `rem` se
3
+ * mide contra `<html>` y `em` contra `el` (por defecto, también `<html>`). Con
4
+ * cualquier otra unidad (o ninguna) devuelve el número tal cual, y sin número,
5
+ * 0: el token viaja siempre con el CSS del componente.
6
+ */
7
+ export declare function cssLengthToPx(raw: string, el?: Element): number;
8
+ /**
9
+ * `sideOffset` por defecto de un flotante a partir de su token. El Positioner
10
+ * de Base UI necesita un número (su función de offset solo recibe medidas, no
11
+ * el elemento), así que la función que devuelve lee la custom property sobre
12
+ * `<html>` **en cada cálculo de posición**: un consumidor lo cambia
13
+ * sobrescribiendo el token en la raíz, sin tocar el componente.
14
+ *
15
+ * Se crea a nivel de módulo (`const tokenSideOffset = sideOffsetFromToken('--tooltip-offset')`):
16
+ * no toca el DOM hasta que Base UI la llama, ya en cliente.
17
+ */
18
+ export declare function sideOffsetFromToken(property: `--${string}`): () => number;
@@ -2,34 +2,51 @@ import type { ReactNode } from 'react';
2
2
  interface EmailOptOutBase {
3
3
  /** Baja directa, de un clic, de la categoría de aviso de este correo. */
4
4
  unsubscribeUrl: string;
5
- /** Texto del enlace de baja. */
6
- unsubscribeLabel?: string;
7
5
  }
8
- /**
9
- * El pie de quien **tiene cuenta** en la suite: puede darse de baja y, si el
10
- * producto tiene la pantalla, elegir categoría a categoría.
11
- */
12
- export interface EmailOptOutAccount extends EmailOptOutBase {
6
+ interface EmailOptOutAccountLabels {
7
+ /**
8
+ * Texto del enlace de baja. Sin preferencias es la continuación de
9
+ * `manageLabel` («Para dejar de recibir estos avisos, **date de baja**»);
10
+ * con preferencias, el arranque de la frase («**Darse de baja** o …»).
11
+ */
12
+ unsubscribeLabel: string;
13
+ /** Frase que precede al enlace en el pie de un solo enlace. */
14
+ manageLabel: string;
15
+ /** Texto entre los dos enlaces del pie completo (« o »). */
16
+ manageBeforeLabel: string;
17
+ /** Texto del enlace a preferencias. */
18
+ managePreferencesLabel: string;
19
+ /** Texto tras el enlace a preferencias (el punto final, en castellano). */
20
+ manageAfterLabel: string;
21
+ reasonLabel?: never;
22
+ }
23
+ /** Sin pantalla de preferencias: el pie de un solo enlace. */
24
+ interface EmailOptOutAccountSingle extends EmailOptOutBase, Pick<EmailOptOutAccountLabels, 'unsubscribeLabel' | 'manageLabel' | 'reasonLabel'>, Partial<Pick<EmailOptOutAccountLabels, 'manageBeforeLabel' | 'managePreferencesLabel' | 'manageAfterLabel'>> {
25
+ preferencesUrl?: undefined;
26
+ }
27
+ /** Con pantalla de preferencias: el pie completo, de dos enlaces. */
28
+ interface EmailOptOutAccountFull extends EmailOptOutBase, Omit<EmailOptOutAccountLabels, 'manageLabel'>, Partial<Pick<EmailOptOutAccountLabels, 'manageLabel'>> {
13
29
  /**
14
30
  * Pantalla donde elegir categoría a categoría, para quien quiera conservar
15
31
  * algunas.
16
- *
17
- * Opcional a propósito: las apps que mandaban correo antes de que existiera
18
- * el paquete solo construyen un enlace de baja, sin pantalla de preferencias
19
- * detrás. Omitirlo deja el pie de un solo enlace en vez de obligar a cada
20
- * llamada a inventarse una URL que no tiene.
21
32
  */
33
+ preferencesUrl: string;
34
+ }
35
+ /** Con una `preferencesUrl` que puede o no llegar: los cinco textos. */
36
+ interface EmailOptOutAccountEither extends EmailOptOutBase, EmailOptOutAccountLabels {
22
37
  preferencesUrl?: string;
23
- /** Frase que precede al enlace en el pie de un solo enlace. Por defecto, en castellano. */
24
- manageLabel?: string;
25
- /** Texto entre los dos enlaces del pie completo. Por defecto, en castellano. */
26
- manageBeforeLabel?: string;
27
- /** Texto del enlace a preferencias. Por defecto, en castellano. */
28
- managePreferencesLabel?: string;
29
- /** Texto tras el enlace a preferencias. Por defecto, en castellano. */
30
- manageAfterLabel?: string;
31
- reasonLabel?: never;
32
38
  }
39
+ /**
40
+ * El pie de quien **tiene cuenta** en la suite: puede darse de baja y, si el
41
+ * producto tiene la pantalla, elegir categoría a categoría. Sus textos son
42
+ * obligatorios (ver arriba): los que pida la forma del pie.
43
+ *
44
+ * `preferencesUrl` es opcional a propósito: las apps que mandaban correo antes
45
+ * de que existiera el paquete solo construyen un enlace de baja, sin pantalla
46
+ * de preferencias detrás. Omitirla deja el pie de un solo enlace en vez de
47
+ * obligar a cada llamada a inventarse una URL que no tiene.
48
+ */
49
+ export type EmailOptOutAccount = EmailOptOutAccountSingle | EmailOptOutAccountFull | EmailOptOutAccountEither;
33
50
  /**
34
51
  * El pie de quien **no tiene cuenta**: el invitado a una revisión, el que
35
52
  * recibe el correo por una dirección suelta. Solo la baja.
@@ -51,6 +51,9 @@ import type { OnboardingShellMessages } from '../templates/OnboardingShell/Onboa
51
51
  import type { CopyMessages } from '../constants/copy-to-clipboard';
52
52
  import type { CodeBlockMessages } from '../molecules/CodeBlock/CodeBlock';
53
53
  import type { DotsButtonMessages } from '../atoms/DotsButton/DotsButton';
54
+ import type { CloseButtonMessages } from '../atoms/CloseButton/CloseButton';
55
+ import type { ThemeSwitcherMessages } from '../molecules/ThemeSwitcher/ThemeSwitcher';
56
+ import type { StatTileMessages } from '../molecules/StatTile/StatTile';
54
57
  import type { ProgressBarMessages } from '../atoms/ProgressBar/ProgressBar';
55
58
  import type { SpinnerMessages } from '../atoms/Spinner/Spinner';
56
59
  import type { SliderMessages } from '../atoms/Slider/Slider';
@@ -92,7 +95,7 @@ import type { ConnectorRejectionMessages } from '../templates/ConnectorAuth/Conn
92
95
  * suite concreta, el DS pasaría a depender de un paquete de producto para
93
96
  * declarar su propio contrato y dejaría de sostenerse solo.
94
97
  *
95
- * Anidado por componente, no plano: son 310 textos en 111 componentes, y una
98
+ * Anidado por componente, no plano: son unos 310 textos en 88 espacios, y una
96
99
  * lista plana de claves sueltas (`paginationPrevious`, `modalClose`…) no se
97
100
  * puede escribir ni revisar. Los espacios calcan además los que el catálogo
98
101
  * de la suite ya tiene (`pagination`, `table`, `common`…), así que montar el
@@ -164,6 +167,9 @@ export interface BrandMessages {
164
167
  copy: CopyMessages;
165
168
  codeBlock: CodeBlockMessages;
166
169
  dotsButton: DotsButtonMessages;
170
+ closeButton: CloseButtonMessages;
171
+ themeSwitcher: ThemeSwitcherMessages;
172
+ statTile: StatTileMessages;
167
173
  progressBar: ProgressBarMessages;
168
174
  spinner: SpinnerMessages;
169
175
  slider: SliderMessages;
@@ -197,4 +203,4 @@ export interface BrandMessages {
197
203
  connectorExternalSignIn: ConnectorExternalSignInMessages;
198
204
  connectorRejection: ConnectorRejectionMessages;
199
205
  }
200
- export type { PaginationMessages, TableMessages, DataTableMessages, InputFieldMessages, PasswordFieldMessages, SelectMessages, MultiSelectMessages, NumberInputMessages, OtpInputMessages, InputPhoneMessages, AsyncSelectMessages, AsyncMultiSelectMessages, DocsSearchMessages, SearchFormMessages, SiteSearchMessages, FilterBarMessages, CalendarMessages, DatePickerMessages, ColorPickerMessages, TimeSelectMessages, FileUploadMessages, ImageCropDialogMessages, AvatarUploadMessages, ModalMessages, SheetMessages, ConfirmDialogMessages, AlertMessages, BannerMessages, ToasterMessages, ConsentMessages, CommandPaletteMessages, AppLauncherMessages, FloatingDockMessages, NotificationButtonMessages, NotificationPanelMessages, MenuButtonMessages, AppRootMessages, AppShellMessages, AppHeaderMessages, SidebarMessages, SidebarNavMessages, SiteNavMessages, SiteHeaderMessages, UserMenuMessages, OrgSwitcherMessages, BreadcrumbMessages, TableOfContentsMessages, PrevNextNavMessages, PublicPageShellMessages, OnboardingShellMessages, CopyMessages, CodeBlockMessages, DotsButtonMessages, ProgressBarMessages, SpinnerMessages, SliderMessages, TreeViewMessages, ClockWidgetMessages, HeatmapMessages, OrgChartMessages, PlanningGridMessages, RecurrenceFieldMessages, TimelineMessages, UptimeBarsMessages, ChartMessages, StepperMessages, CarouselMessages, LanguageSwitcherMessages, ProjectCardMessages, LegalFooterMessages, CalendarRosterMessages, CalendarPlannerMessages, NotificationListMessages, MessageComposerMessages, ConversationListMessages, ConversationThreadMessages, TypingIndicatorMessages, AnnotationThreadMessages, ChatShellMessages, UntrustedTextMessages, ConnectorRequestSummaryMessages, ConnectorConsentMessages, ConnectorSignInMessages, ConnectorExternalSignInMessages, ConnectorRejectionMessages, };
206
+ export type { PaginationMessages, TableMessages, DataTableMessages, InputFieldMessages, PasswordFieldMessages, SelectMessages, MultiSelectMessages, NumberInputMessages, OtpInputMessages, InputPhoneMessages, AsyncSelectMessages, AsyncMultiSelectMessages, DocsSearchMessages, SearchFormMessages, SiteSearchMessages, FilterBarMessages, CalendarMessages, DatePickerMessages, ColorPickerMessages, TimeSelectMessages, FileUploadMessages, ImageCropDialogMessages, AvatarUploadMessages, ModalMessages, SheetMessages, ConfirmDialogMessages, AlertMessages, BannerMessages, ToasterMessages, ConsentMessages, CommandPaletteMessages, AppLauncherMessages, FloatingDockMessages, NotificationButtonMessages, NotificationPanelMessages, MenuButtonMessages, AppRootMessages, AppShellMessages, AppHeaderMessages, SidebarMessages, SidebarNavMessages, SiteNavMessages, SiteHeaderMessages, UserMenuMessages, OrgSwitcherMessages, BreadcrumbMessages, TableOfContentsMessages, PrevNextNavMessages, PublicPageShellMessages, OnboardingShellMessages, CopyMessages, CodeBlockMessages, DotsButtonMessages, CloseButtonMessages, ThemeSwitcherMessages, StatTileMessages, ProgressBarMessages, SpinnerMessages, SliderMessages, TreeViewMessages, ClockWidgetMessages, HeatmapMessages, OrgChartMessages, PlanningGridMessages, RecurrenceFieldMessages, TimelineMessages, UptimeBarsMessages, ChartMessages, StepperMessages, CarouselMessages, LanguageSwitcherMessages, ProjectCardMessages, LegalFooterMessages, CalendarRosterMessages, CalendarPlannerMessages, NotificationListMessages, MessageComposerMessages, ConversationListMessages, ConversationThreadMessages, TypingIndicatorMessages, AnnotationThreadMessages, ChatShellMessages, UntrustedTextMessages, ConnectorRequestSummaryMessages, ConnectorConsentMessages, ConnectorSignInMessages, ConnectorExternalSignInMessages, ConnectorRejectionMessages, };
@@ -2,4 +2,4 @@ export { BrandMessagesProvider } from './BrandMessagesProvider';
2
2
  export type { BrandMessagesProviderProps } from './BrandMessagesProvider';
3
3
  export { useBrandMessages } from './BrandMessagesContext';
4
4
  export type { BrandMessagesReader, BrandMessagesNamespace } from './BrandMessagesContext';
5
- export type { BrandMessages, PaginationMessages, TableMessages, DataTableMessages, InputFieldMessages, PasswordFieldMessages, SelectMessages, MultiSelectMessages, NumberInputMessages, OtpInputMessages, InputPhoneMessages, AsyncSelectMessages, AsyncMultiSelectMessages, DocsSearchMessages, SearchFormMessages, SiteSearchMessages, FilterBarMessages, CalendarMessages, DatePickerMessages, ColorPickerMessages, TimeSelectMessages, FileUploadMessages, ImageCropDialogMessages, AvatarUploadMessages, ModalMessages, SheetMessages, ConfirmDialogMessages, AlertMessages, BannerMessages, ToasterMessages, ConsentMessages, CommandPaletteMessages, AppLauncherMessages, FloatingDockMessages, NotificationButtonMessages, NotificationPanelMessages, MenuButtonMessages, AppRootMessages, AppShellMessages, AppHeaderMessages, SidebarMessages, SidebarNavMessages, SiteNavMessages, SiteHeaderMessages, UserMenuMessages, OrgSwitcherMessages, BreadcrumbMessages, TableOfContentsMessages, PrevNextNavMessages, PublicPageShellMessages, OnboardingShellMessages, CopyMessages, CodeBlockMessages, DotsButtonMessages, ProgressBarMessages, SpinnerMessages, SliderMessages, TreeViewMessages, ClockWidgetMessages, HeatmapMessages, OrgChartMessages, PlanningGridMessages, RecurrenceFieldMessages, TimelineMessages, UptimeBarsMessages, ChartMessages, StepperMessages, CarouselMessages, LanguageSwitcherMessages, ProjectCardMessages, LegalFooterMessages, CalendarRosterMessages, CalendarPlannerMessages, NotificationListMessages, MessageComposerMessages, ConversationListMessages, ConversationThreadMessages, TypingIndicatorMessages, AnnotationThreadMessages, ChatShellMessages, UntrustedTextMessages, ConnectorRequestSummaryMessages, ConnectorConsentMessages, ConnectorSignInMessages, ConnectorExternalSignInMessages, ConnectorRejectionMessages, } from './BrandMessages';
5
+ export type { BrandMessages, PaginationMessages, TableMessages, DataTableMessages, InputFieldMessages, PasswordFieldMessages, SelectMessages, MultiSelectMessages, NumberInputMessages, OtpInputMessages, InputPhoneMessages, AsyncSelectMessages, AsyncMultiSelectMessages, DocsSearchMessages, SearchFormMessages, SiteSearchMessages, FilterBarMessages, CalendarMessages, DatePickerMessages, ColorPickerMessages, TimeSelectMessages, FileUploadMessages, ImageCropDialogMessages, AvatarUploadMessages, ModalMessages, SheetMessages, ConfirmDialogMessages, AlertMessages, BannerMessages, ToasterMessages, ConsentMessages, CommandPaletteMessages, AppLauncherMessages, FloatingDockMessages, NotificationButtonMessages, NotificationPanelMessages, MenuButtonMessages, AppRootMessages, AppShellMessages, AppHeaderMessages, SidebarMessages, SidebarNavMessages, SiteNavMessages, SiteHeaderMessages, UserMenuMessages, OrgSwitcherMessages, BreadcrumbMessages, TableOfContentsMessages, PrevNextNavMessages, PublicPageShellMessages, OnboardingShellMessages, CopyMessages, CodeBlockMessages, DotsButtonMessages, CloseButtonMessages, ThemeSwitcherMessages, StatTileMessages, ProgressBarMessages, SpinnerMessages, SliderMessages, TreeViewMessages, ClockWidgetMessages, HeatmapMessages, OrgChartMessages, PlanningGridMessages, RecurrenceFieldMessages, TimelineMessages, UptimeBarsMessages, ChartMessages, StepperMessages, CarouselMessages, LanguageSwitcherMessages, ProjectCardMessages, LegalFooterMessages, CalendarRosterMessages, CalendarPlannerMessages, NotificationListMessages, MessageComposerMessages, ConversationListMessages, ConversationThreadMessages, TypingIndicatorMessages, AnnotationThreadMessages, ChatShellMessages, UntrustedTextMessages, ConnectorRequestSummaryMessages, ConnectorConsentMessages, ConnectorSignInMessages, ConnectorExternalSignInMessages, ConnectorRejectionMessages, } from './BrandMessages';
@@ -16,7 +16,7 @@ export interface AppLauncherMessages {
16
16
  open: string;
17
17
  /** Texto del distintivo de app nueva. */
18
18
  new: string;
19
- /** Título del diálogo con `presentation="modal"`. */
19
+ /** Título del diálogo con `presentation="modal"`; con `"popover"`, nombre accesible del popup. */
20
20
  title: string;
21
21
  }
22
22
  export interface LauncherApp {
@@ -65,8 +65,8 @@ export interface AppLauncherLabels {
65
65
  trigger?: string;
66
66
  /**
67
67
  * Título del diálogo cuando `presentation="modal"`. **Sin default**: sin él,
68
- * sale de `appLauncher.title` del proveedor. Sin uso en
69
- * `presentation="popover"`, que no lleva título.
68
+ * sale de `appLauncher.title` del proveedor. En `presentation="popover"`,
69
+ * que no pinta título, es el nombre accesible (`aria-label`) del popup.
70
70
  */
71
71
  title?: string;
72
72
  }
@@ -92,5 +92,11 @@ export interface AppLauncherProps {
92
92
  * quien lo prefiera lo pide explícitamente.
93
93
  */
94
94
  presentation?: 'modal' | 'popover';
95
+ /**
96
+ * Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye).
97
+ * Va al disparador: es el único nodo que el componente pinta en su sitio (el
98
+ * panel sale por un portal, sea diálogo o popover).
99
+ */
100
+ className?: string;
95
101
  }
96
102
  export declare function AppLauncher({ presentation, labels, ...rest }: AppLauncherProps): import("react/jsx-runtime").JSX.Element;
@@ -82,8 +82,17 @@ export interface CalendarProps {
82
82
  * `DatePicker`), conviene pasarlo aquí.
83
83
  */
84
84
  gridLabel?: string;
85
+ /**
86
+ * El día que el calendario marca como «hoy» (y desde el que arranca el mes
87
+ * visible y el foco cuando no hay otra fecha). Default: la fecha actual,
88
+ * calculada una vez al montar. **En SSR conviene pasarla**: servidor y
89
+ * navegador calculan cada uno su «ahora», y cerca de la medianoche —o con
90
+ * husos distintos— no coinciden y la hidratación se desajusta. Basta con
91
+ * calcularla en el servidor y mandar la misma fecha a los dos lados.
92
+ */
93
+ today?: Date;
85
94
  /** Tamaño del componente. Default: 'md' */
86
95
  size?: 'sm' | 'md' | 'lg';
87
96
  className?: string;
88
97
  }
89
- export declare function Calendar({ value, onChange, defaultMonth, month: monthProp, onMonthChange, navigable, disabledDates, minDate, maxDate, locale, previousMonthLabel, nextMonthLabel, previousYearsLabel, nextYearsLabel, yearGridLabel, gridLabel, size, className, }: CalendarProps): import("react/jsx-runtime").JSX.Element;
98
+ export declare function Calendar({ value, onChange, defaultMonth, month: monthProp, onMonthChange, navigable, disabledDates, minDate, maxDate, locale, previousMonthLabel, nextMonthLabel, previousYearsLabel, nextYearsLabel, yearGridLabel, gridLabel, today: todayProp, size, className, }: CalendarProps): import("react/jsx-runtime").JSX.Element;
@@ -2,14 +2,25 @@ import { type ReactNode } from 'react';
2
2
  import type { TagVariant } from '../../atoms/Tag/Tag';
3
3
  import './CalendarPlanner.css';
4
4
  /**
5
- * El único texto propio del planificador: el botón que abre los eventos que no
6
- * caben en una celda. Las **flechas de mes no están aquí** —son el mismo texto
7
- * que el del `Calendar` y salen de `calendar.previousMonth` / `.nextMonth`—, y
5
+ * Los textos propios del planificador: el botón que abre los eventos que no
6
+ * caben en una celda, las flechas de la vista de semana y el conmutador de
7
+ * vista. Las **flechas de mes no están aquí** —son el mismo texto que el del
8
+ * `Calendar` y salen de `calendar.previousMonth` / `.nextMonth`—, y
8
9
  * `gridLabel` tampoco: nombra a ESE planificador.
9
10
  */
10
11
  export interface CalendarPlannerMessages {
11
12
  /** Rótulo del botón de desbordamiento: «+3 más». Interpola, así que es función. */
12
13
  more: (count: number) => string;
14
+ /** Nombre accesible de la flecha de retroceso en la vista de semana. */
15
+ previousWeek: string;
16
+ /** Nombre accesible de la flecha de avance en la vista de semana. */
17
+ nextWeek: string;
18
+ /** Rótulo del botón de vista de mes del conmutador. */
19
+ monthView: string;
20
+ /** Rótulo del botón de vista de semana del conmutador. */
21
+ weekView: string;
22
+ /** Nombre accesible del conmutador de vista. */
23
+ viewSwitcher: string;
13
24
  }
14
25
  export interface PlannerEvent {
15
26
  id: string;
@@ -113,23 +124,42 @@ export interface CalendarPlannerProps {
113
124
  /** Callback al cambiar de semana. Recibe el **lunes** de la nueva. */
114
125
  onWeekChange?: (weekStart: Date) => void;
115
126
  /**
116
- * aria-label del botón de semana anterior. Default: `'Semana anterior'`
117
- * (castellano). No sale del catálogo como las flechas de mes: añadirle una
118
- * clave obligatoria a `CalendarPlannerMessages` rompería a todas las
119
- * aplicaciones que ya lo tienen montado, así que estos cuatro textos entran
120
- * como props y pasarán al catálogo en el próximo major.
127
+ * aria-label del botón de semana anterior. **Sin default**: sin él, sale de
128
+ * `calendarPlanner.previousWeek` del `BrandMessagesProvider`. Solo se lee
129
+ * en la vista de semana con `navigable`.
121
130
  */
122
131
  previousWeekLabel?: string;
123
- /** aria-label del botón de semana siguiente. Default: `'Semana siguiente'`. */
132
+ /**
133
+ * aria-label del botón de semana siguiente. **Sin default**: sale de
134
+ * `calendarPlanner.nextWeek`.
135
+ */
124
136
  nextWeekLabel?: string;
125
- /** Rótulo del botón de vista de mes del conmutador. Default: `'Mes'`. */
137
+ /**
138
+ * Rótulo del botón de vista de mes del conmutador. **Sin default**: sale de
139
+ * `calendarPlanner.monthView`. Solo se lee con `viewSwitcher`.
140
+ */
126
141
  monthViewLabel?: string;
127
- /** Rótulo del botón de vista de semana del conmutador. Default: `'Semana'`. */
142
+ /**
143
+ * Rótulo del botón de vista de semana del conmutador. **Sin default**: sale
144
+ * de `calendarPlanner.weekView`. Solo se lee con `viewSwitcher`.
145
+ */
128
146
  weekViewLabel?: string;
129
- /** Nombre accesible del conmutador de vista. Default: `'Vista del calendario'`. */
147
+ /**
148
+ * Nombre accesible del conmutador de vista. **Sin default**: sale de
149
+ * `calendarPlanner.viewSwitcher`. Solo se lee con `viewSwitcher`.
150
+ */
130
151
  viewSwitcherLabel?: string;
152
+ /**
153
+ * El día que el planificador marca como «hoy» (y desde el que arranca el
154
+ * mes o la semana visible cuando no se pasa otra fecha). Default: la fecha
155
+ * actual, calculada una vez al montar. **En SSR conviene pasarla**: servidor
156
+ * y navegador calculan cada uno su «ahora», y cerca de la medianoche —o con
157
+ * husos distintos— no coinciden y la hidratación se desajusta. Basta con
158
+ * calcularla en el servidor y mandar la misma fecha a los dos lados.
159
+ */
160
+ today?: Date;
131
161
  /** Tamaño del componente. Default: 'md' */
132
162
  size?: 'sm' | 'md' | 'lg';
133
163
  className?: string;
134
164
  }
135
- export declare function CalendarPlanner({ events, renderDay, maxItemsPerDay, onMoreClick, showMoreDialog, onDayClick, month: monthProp, defaultMonth, onMonthChange, view: viewProp, defaultView, onViewChange, viewSwitcher, week: weekProp, defaultWeek, onWeekChange, navigable, locale, previousMonthLabel, nextMonthLabel, previousWeekLabel, nextWeekLabel, monthViewLabel, weekViewLabel, viewSwitcherLabel, gridLabel, moreLabel, size, className, }: CalendarPlannerProps): import("react/jsx-runtime").JSX.Element;
165
+ export declare function CalendarPlanner({ events, renderDay, maxItemsPerDay, onMoreClick, showMoreDialog, onDayClick, month: monthProp, defaultMonth, onMonthChange, view: viewProp, defaultView, onViewChange, viewSwitcher, week: weekProp, defaultWeek, onWeekChange, navigable, locale, previousMonthLabel, nextMonthLabel, previousWeekLabel, nextWeekLabel, monthViewLabel, weekViewLabel, viewSwitcherLabel, gridLabel, moreLabel, today: todayProp, size, className, }: CalendarPlannerProps): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,4 @@
1
- import type { ComponentType, ReactNode } from 'react';
1
+ import { type ComponentType, type ReactNode } from 'react';
2
2
  import './CalendarRoster.css';
3
3
  /**
4
4
  * El cromo del cuadrante: el encabezado de la columna de nombres y la leyenda
@@ -107,6 +107,14 @@ export interface CalendarRosterProps {
107
107
  nextMonthLabel?: string;
108
108
  /** Locale para nombres de mes y día. Default: 'es-ES' */
109
109
  locale?: string;
110
+ /**
111
+ * El día que el cuadrante marca como «hoy». Default: la fecha actual,
112
+ * calculada una vez al montar. **En SSR conviene pasarla**: servidor y
113
+ * navegador calculan cada uno su «ahora», y cerca de la medianoche —o con
114
+ * husos distintos— no coinciden y la hidratación se desajusta. Basta con
115
+ * calcularla en el servidor y mandar la misma fecha a los dos lados.
116
+ */
117
+ today?: Date;
110
118
  className?: string;
111
119
  }
112
- export declare function CalendarRoster({ rows, month, onMonthChange, hrefBuilder, linkComponent, renderCell, nameLabel, birthdayPrefix, showLegend, locale, legendItems, legendLabel, previousMonthLabel, nextMonthLabel, className, }: CalendarRosterProps): import("react/jsx-runtime").JSX.Element;
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;
@@ -20,10 +20,17 @@ export interface ContextMenuProps {
20
20
  * traducir.
21
21
  */
22
22
  label?: string;
23
+ /**
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.
28
+ */
29
+ className?: string;
23
30
  }
24
31
  /**
25
32
  * El menú de acciones de una fila, una tarjeta, un elemento: un `Menu` cuyo
26
33
  * disparador es el botón de tres puntos (`DotsButton`). Todo lo demás —ítems,
27
34
  * enlaces del router, colocación, cara— es del `Menu`.
28
35
  */
29
- export declare function ContextMenu({ items, renderLink, onOpenChange, side, align, minWidth, maxWidth, triggerSize, triggerOrientation, label, }: ContextMenuProps): import("react/jsx-runtime").JSX.Element;
36
+ export declare function ContextMenu({ items, renderLink, onOpenChange, side, align, minWidth, maxWidth, triggerSize, triggerOrientation, label, className, }: ContextMenuProps): import("react/jsx-runtime").JSX.Element;
@@ -102,6 +102,12 @@ export interface DatePickerProps {
102
102
  * nombra el panel entero.
103
103
  */
104
104
  gridLabel?: CalendarProps['gridLabel'];
105
+ /**
106
+ * El «hoy» que marca el calendario del panel. Default: la fecha actual,
107
+ * calculada una vez al montar el calendario. **En SSR conviene pasarla**
108
+ * (ver `Calendar`): evita el desajuste de hidratación cerca de la medianoche.
109
+ */
110
+ today?: CalendarProps['today'];
105
111
  /** Nombre del campo en el formulario: se monta un input oculto con la fecha en ISO. */
106
112
  name?: string;
107
113
  /** Se llama al salir del campo (react-hook-form lo usa para validar). */
@@ -53,6 +53,8 @@ export interface DateTimeFieldProps {
53
53
  yearGridLabel?: DatePickerProps['yearGridLabel'];
54
54
  /** aria-label de la rejilla de días. Sin él, el nombre del panel. */
55
55
  gridLabel?: DatePickerProps['gridLabel'];
56
+ /** El «hoy» del calendario. Default: la fecha actual. En SSR conviene pasarla (ver `Calendar`). */
57
+ today?: DatePickerProps['today'];
56
58
  /** aria-label del desplegable de horas. Sin él, `timeSelect.hours`. */
57
59
  hoursLabel?: string;
58
60
  /** aria-label del desplegable de minutos. Sin él, `timeSelect.minutes`. */
@@ -39,7 +39,7 @@ export interface DocsSearchMessages {
39
39
  loading: string;
40
40
  }
41
41
  export interface DocsSearchProps {
42
- /** `id` del campo. Ata la etiqueta con el campo y el campo con la lista. */
42
+ /** `id` del campo. Ata la etiqueta con el campo y el campo con la lista. Por defecto, uno único por instancia (`useId`). */
43
43
  id?: string;
44
44
  /** Texto escrito. El componente es controlado: no guarda estado propio. */
45
45
  query: string;
@@ -111,4 +111,4 @@ export interface DocsSearchProps {
111
111
  * (`filter={null}`) y la lista en línea, sin popup: los resultados de una
112
112
  * búsqueda de documentación no son un menú flotante, son la página.
113
113
  */
114
- export declare function DocsSearch({ id, query, onQueryChange, results, loading, label, labelHidden, placeholder, clearable, clearLabel, resultsLabel, emptyLabel, loadingLabel, size, renderLink, onSelect, className, }: DocsSearchProps): import("react/jsx-runtime").JSX.Element;
114
+ export declare function DocsSearch({ id: idProp, query, onQueryChange, results, loading, label, labelHidden, placeholder, clearable, clearLabel, resultsLabel, emptyLabel, loadingLabel, size, renderLink, onSelect, className, }: DocsSearchProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,83 @@
1
+ import { type ReactNode } from 'react';
2
+ import './FloatingToolbar.css';
3
+ export interface FloatingToolbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'children'> {
4
+ /**
5
+ * Las acciones del **principio**: a la izquierda del elemento en
6
+ * `sides`, al principio de la fila en `top`. Van como
7
+ * `FloatingToolbarButton`.
8
+ */
9
+ start?: ReactNode;
10
+ /**
11
+ * Las acciones del **final**: a la derecha del elemento en `sides`, al
12
+ * final de la fila en `top`.
13
+ */
14
+ end?: ReactNode;
15
+ /**
16
+ * Dónde se pinta la barra.
17
+ *
18
+ * - `auto` (por defecto): encima del elemento por debajo de `breakpoint.lg`
19
+ * y en dos raíles a sus lados desde `lg`. Las acciones se declaran **una
20
+ * vez**: es el CSS quien las coloca, no hay una barra por anchura.
21
+ * - `top`: siempre encima.
22
+ * - `sides`: siempre a los lados.
23
+ *
24
+ * @default 'auto'
25
+ */
26
+ layout?: 'auto' | 'top' | 'sides';
27
+ /**
28
+ * La barra se ve siempre, no solo al pasar el puntero o al tener el foco
29
+ * dentro. Para el elemento **seleccionado** —el que se está editando—,
30
+ * sobre todo en pantallas táctiles, donde no hay puntero que pase.
31
+ *
32
+ * @default false
33
+ */
34
+ alwaysVisible?: boolean;
35
+ /**
36
+ * Nombre accesible de la barra (`aria-label` del `role="toolbar"`).
37
+ * **Obligatorio y sin default**: tiene que decir **de qué** son las
38
+ * acciones —«Acciones del bloque 3: Texto»—, porque en una lista hay una
39
+ * barra por elemento y un nombre fijo las haría indistinguibles. Es un
40
+ * dato del producto, no un texto del sistema: por eso no está en el
41
+ * proveedor de textos.
42
+ */
43
+ label: string;
44
+ /** El elemento al que se ancla la barra. */
45
+ children: ReactNode;
46
+ /** Se añade DESPUÉS de las clases propias. */
47
+ className?: string;
48
+ }
49
+ /**
50
+ * Barra de botones de icono **anclada a un elemento**: aparece al pasar el
51
+ * puntero por él o al entrar el foco, y se pinta encima (pantallas estrechas)
52
+ * o en dos raíles a sus lados (escritorio). Es la barra de acciones de un
53
+ * bloque en un editor —mover, duplicar, borrar, convertir—.
54
+ *
55
+ * Es un `role="toolbar"` (Base UI Toolbar): **una sola parada de
56
+ * tabulación**, y dentro se recorre con las flechas (`roving tabindex`). Sigue
57
+ * en el orden de tabulación aunque no se vea, así que con teclado siempre se
58
+ * alcanza; al recibir el foco aparece.
59
+ *
60
+ * Reenvía `ref` y `{...rest}` al elemento ancla (el contenedor), no a la barra.
61
+ */
62
+ export declare const FloatingToolbar: import("react").ForwardRefExoticComponent<FloatingToolbarProps & import("react").RefAttributes<HTMLDivElement>>;
63
+ export interface FloatingToolbarButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'children' | 'aria-label'> {
64
+ /**
65
+ * Nombre de la acción. Es a la vez el `aria-label` del botón y el texto del
66
+ * bocadillo: un botón de solo icono no tiene otro nombre.
67
+ */
68
+ label: string;
69
+ /** El glifo (`<Icon … />`). Decorativo: el nombre lo da `label`. */
70
+ icon: ReactNode;
71
+ /** Pinta la acción en rojo (borrar). */
72
+ destructive?: boolean;
73
+ /** Se añade DESPUÉS de las clases propias del `Button`. */
74
+ className?: string;
75
+ }
76
+ /**
77
+ * Un botón de `FloatingToolbar`: `Button` `ghost` `sm` de solo icono, con su
78
+ * `Tooltip` y dentro del recorrido con flechas de la barra.
79
+ *
80
+ * Reenvía `ref` y `{...rest}` al `<button>`, así que sirve de `trigger` de un
81
+ * `Popover` o un `Menu` y de asa de arrastre (el `handleRef` de dnd-kit).
82
+ */
83
+ export declare const FloatingToolbarButton: import("react").ForwardRefExoticComponent<FloatingToolbarButtonProps & import("react").RefAttributes<HTMLButtonElement>>;