@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.
- package/LICENSE +61 -0
- package/README.md +26 -4
- package/dist/_shared/assign-ref.js +6 -0
- package/dist/_shared/calendargrid.js +57 -57
- package/dist/_shared/datepicker.js +67 -65
- package/dist/_shared/default-render-link.js +7 -0
- package/dist/_shared/dialogsurface.js +1 -1
- package/dist/_shared/dropdownitems.js +14 -20
- package/dist/_shared/imagecropdialog.js +38 -441
- package/dist/_shared/overflow-focusable.js +15 -0
- package/dist/_shared/side-offset.js +13 -0
- package/dist/_shared/tokens.js +31 -129
- package/dist/_shared/useasyncoptions.js +30 -0
- package/dist/_types/atoms/Accordion/Accordion.d.ts +7 -1
- package/dist/_types/atoms/AsyncMultiSelect/AsyncMultiSelect.d.ts +8 -4
- package/dist/_types/atoms/AsyncSelect/AsyncSelect.d.ts +8 -4
- package/dist/_types/atoms/Autocomplete/Autocomplete.d.ts +10 -6
- package/dist/_types/atoms/CloseButton/CloseButton.d.ts +13 -3
- package/dist/_types/atoms/Fieldset/Fieldset.d.ts +1 -1
- package/dist/_types/atoms/InputPhone/InputPhone.d.ts +2 -0
- package/dist/_types/atoms/MultiSelect/MultiSelect.d.ts +11 -10
- package/dist/_types/atoms/Select/Select.d.ts +6 -0
- package/dist/_types/atoms/Skeleton/Skeleton.d.ts +1 -1
- package/dist/_types/atoms/Spinner/Spinner.d.ts +3 -1
- package/dist/_types/atoms/TypingIndicator/TypingIndicator.d.ts +3 -1
- package/dist/_types/atoms/_shared/useAsyncOptions.d.ts +36 -0
- package/dist/_types/constants/assign-ref.d.ts +12 -0
- package/dist/_types/constants/default-render-link.d.ts +13 -0
- package/dist/_types/constants/overflow-focusable.d.ts +15 -0
- package/dist/_types/constants/side-offset.d.ts +18 -0
- package/dist/_types/email/EmailLayout.d.ts +38 -21
- package/dist/_types/messages/BrandMessages.d.ts +8 -2
- package/dist/_types/messages/index.d.ts +1 -1
- package/dist/_types/molecules/AppLauncher/AppLauncher.d.ts +9 -3
- package/dist/_types/molecules/Calendar/Calendar.d.ts +10 -1
- package/dist/_types/molecules/CalendarPlanner/CalendarPlanner.d.ts +43 -13
- package/dist/_types/molecules/CalendarRoster/CalendarRoster.d.ts +10 -2
- package/dist/_types/molecules/ContextMenu/ContextMenu.d.ts +8 -1
- package/dist/_types/molecules/DatePicker/DatePicker.d.ts +6 -0
- package/dist/_types/molecules/DateTimeField/DateTimeField.d.ts +2 -0
- package/dist/_types/molecules/DocsSearch/DocsSearch.d.ts +2 -2
- package/dist/_types/molecules/FloatingToolbar/FloatingToolbar.d.ts +83 -0
- package/dist/_types/molecules/FormField/FormField.d.ts +5 -6
- package/dist/_types/molecules/LanguageSwitcher/LanguageSwitcher.d.ts +7 -3
- package/dist/_types/molecules/LoadingRegion/LoadingRegion.d.ts +12 -4
- package/dist/_types/molecules/Modal/Modal.d.ts +10 -4
- package/dist/_types/molecules/OrgSwitcher/OrgSwitcher.d.ts +7 -1
- package/dist/_types/molecules/PasswordField/PasswordField.d.ts +9 -2
- package/dist/_types/molecules/PrevNextNav/PrevNextNav.d.ts +3 -1
- package/dist/_types/molecules/RecurrenceField/RecurrenceField.d.ts +6 -1
- package/dist/_types/molecules/SidebarNav/SidebarNav.d.ts +18 -2
- package/dist/_types/molecules/SiteNav/SiteNav.d.ts +4 -1
- package/dist/_types/molecules/StatTile/StatTile.d.ts +15 -1
- package/dist/_types/molecules/Table/Table.d.ts +1 -1
- package/dist/_types/molecules/ThemeSwitcher/ThemeSwitcher.d.ts +38 -3
- package/dist/_types/molecules/Toast/Toaster.d.ts +8 -0
- package/dist/_types/molecules/UserMenu/UserMenu.d.ts +7 -1
- package/dist/_types/molecules/_shared/calendarGrid.d.ts +15 -2
- package/dist/_types/molecules/_shared/dialogSurface.d.ts +6 -1
- package/dist/_types/molecules/_shared/dropdownItems.d.ts +0 -2
- package/dist/_types/sections/AppHeader/AppHeader.d.ts +3 -1
- package/dist/_types/sections/AppShell/AppShell.d.ts +6 -1
- package/dist/_types/sections/LegalFooter/LegalFooter.d.ts +7 -1
- package/dist/_types/sections/Sidebar/Sidebar.d.ts +3 -1
- package/dist/_types/sections/SiteFooter/SiteFooter.d.ts +6 -2
- package/dist/_types/sections/SiteHeader/SiteHeader.d.ts +2 -2
- package/dist/_types/templates/ConnectorAuth/ConnectorAuthShell.d.ts +5 -2
- package/dist/_types/templates/ConnectorAuth/ConnectorConsentPage.d.ts +1 -1
- package/dist/_types/templates/ConnectorAuth/ConnectorExternalSignInPage.d.ts +1 -1
- package/dist/_types/templates/ConnectorAuth/ConnectorRejectionPage.d.ts +1 -1
- package/dist/_types/templates/ConnectorAuth/ConnectorSignInPage.d.ts +1 -1
- package/dist/_types/templates/ErrorPage/ErrorPage.d.ts +7 -1
- package/dist/_types/templates/NotFoundPage/NotFoundPage.d.ts +7 -1
- package/dist/_types/templates/PublicPageShell/PublicPageShell.d.ts +6 -0
- package/dist/accordion.css +1 -1
- package/dist/accordion.js +6 -5
- package/dist/alert.css +1 -1
- package/dist/app-header.js +16 -21
- package/dist/app-launcher.css +1 -1
- package/dist/app-launcher.js +29 -21
- package/dist/app-shell.js +43 -43
- package/dist/async-multi-select.css +1 -1
- package/dist/async-multi-select.js +104 -173
- package/dist/async-select.css +1 -1
- package/dist/async-select.js +81 -137
- package/dist/autocomplete.css +1 -1
- package/dist/autocomplete.js +76 -115
- package/dist/brand.css +77 -987
- package/dist/breadcrumb.js +11 -16
- package/dist/button.css +1 -1
- package/dist/calendar-planner.css +1 -1
- package/dist/calendar-planner.js +100 -95
- package/dist/calendar-roster.css +1 -1
- package/dist/calendar-roster.js +69 -61
- package/dist/calendar.css +1 -1
- package/dist/calendar.js +86 -85
- package/dist/card.css +1 -1
- package/dist/card.js +42 -41
- package/dist/chart.css +1 -1
- package/dist/chat-shell.js +48 -47
- package/dist/checkbox.css +1 -1
- package/dist/close-button.js +14 -12
- package/dist/command-palette.css +1 -1
- package/dist/connector-consent-page.js +19 -18
- package/dist/connector-external-sign-in-page.js +6 -5
- package/dist/connector-rejection-page.js +5 -4
- package/dist/connector-sign-in-page.js +10 -9
- package/dist/consent.css +1 -1
- package/dist/context-menu.js +3 -2
- package/dist/conversation-list.css +1 -1
- package/dist/conversation-thread.css +1 -1
- package/dist/conversation-thread.js +1 -0
- package/dist/data-table.js +74 -1625
- package/dist/date-time-field.js +7 -6
- package/dist/docs-search.js +36 -38
- package/dist/email.js +10 -7
- package/dist/error-page.js +2 -2
- package/dist/fieldset.css +1 -1
- package/dist/figure.js +1 -0
- package/dist/file-upload.css +1 -1
- package/dist/file-upload.js +48 -50
- package/dist/floating-toolbar.css +1 -0
- package/dist/floating-toolbar.js +64 -0
- package/dist/form-field.js +55 -53
- package/dist/imagecropdialog.css +1 -1
- package/dist/input-phone.css +1 -1
- package/dist/input-phone.js +30 -31
- package/dist/input.css +1 -1
- package/dist/label.css +1 -1
- package/dist/language-switcher.js +37 -44
- package/dist/legal-footer.js +12 -17
- package/dist/loading-region.css +1 -1
- package/dist/loading-region.js +8 -8
- package/dist/menu.css +1 -1
- package/dist/menu.js +4 -3
- package/dist/message-bubble.css +1 -1
- package/dist/message-composer.css +1 -1
- package/dist/modal.css +1 -1
- package/dist/modal.js +9 -9
- package/dist/multi-select.css +1 -1
- package/dist/multi-select.js +104 -172
- package/dist/not-found-page.js +8 -5
- package/dist/notification-list.js +16 -21
- package/dist/notification-panel.js +34 -46
- package/dist/number-badge.css +1 -1
- package/dist/number-input.css +1 -1
- package/dist/org-switcher.css +1 -1
- package/dist/org-switcher.js +13 -11
- package/dist/password-field.js +40 -39
- package/dist/popover.css +1 -1
- package/dist/popover.js +9 -15
- package/dist/prev-next-nav.js +8 -7
- package/dist/public-page-shell.js +7 -6
- package/dist/radio.css +1 -1
- package/dist/recurrence-field.css +1 -1
- package/dist/recurrence-field.js +38 -37
- package/dist/select.css +1 -1
- package/dist/select.js +3 -2
- package/dist/sheet.css +1 -1
- package/dist/sidebar-nav.css +1 -1
- package/dist/sidebar-nav.js +75 -70
- package/dist/sidebar.css +1 -1
- package/dist/sidebar.js +46 -42
- package/dist/site-footer.js +28 -28
- package/dist/site-header.js +39 -44
- package/dist/site-nav.js +10 -19
- package/dist/site-search.js +34 -36
- package/dist/site-shell.js +17 -16
- package/dist/skeleton.js +8 -6
- package/dist/sortable.js +20 -19
- package/dist/spinner.js +11 -7
- package/dist/stat-tile.js +24 -26
- package/dist/switcher.css +1 -1
- package/dist/table.css +1 -1
- package/dist/table.js +57 -45
- package/dist/textarea.css +1 -1
- package/dist/theme-switcher.js +57 -56
- package/dist/toaster.css +1 -1
- package/dist/toggle.css +1 -1
- package/dist/tokens.css +75 -986
- package/dist/tooltip.css +1 -1
- package/dist/tooltip.js +20 -27
- package/dist/typing-indicator.css +1 -1
- package/dist/typing-indicator.js +4 -4
- package/dist/user-menu.css +1 -1
- package/dist/user-menu.js +38 -45
- package/dist/visuallyhidden.css +1 -1
- package/package.json +26 -14
- package/src/tokens/components/async-multi-select.css +4 -0
- package/src/tokens/components/async-select.css +3 -0
- package/src/tokens/components/autocomplete.css +1 -0
- package/src/tokens/components/breadcrumb.css +0 -2
- package/src/tokens/components/button.css +0 -23
- package/src/tokens/components/control.css +0 -4
- package/src/tokens/components/file-upload.css +0 -4
- package/src/tokens/components/radio.css +2 -0
- package/src/tokens/components/site-header.css +0 -1
- package/src/tokens/index.css +5 -7
- package/src/tokens/molecules/async-multi-select-field.css +0 -6
- package/src/tokens/molecules/async-select-field.css +0 -6
- package/src/tokens/molecules/autocomplete-field.css +0 -5
- package/src/tokens/molecules/avatar-upload.css +0 -6
- package/src/tokens/molecules/calendar-roster.css +5 -0
- package/src/tokens/molecules/chart.css +0 -3
- package/src/tokens/molecules/checkbox-field.css +0 -6
- package/src/tokens/molecules/consent.css +1 -0
- package/src/tokens/molecules/conversation-thread.css +10 -0
- package/src/tokens/molecules/date-picker-field.css +0 -6
- package/src/tokens/molecules/date-time-field.css +0 -6
- package/src/tokens/molecules/dropdown-field.css +0 -6
- package/src/tokens/molecules/file-upload-field.css +0 -6
- package/src/tokens/molecules/floating-toolbar.css +18 -0
- package/src/tokens/molecules/floating-toolbar.ts +4 -0
- package/src/tokens/molecules/input-field.css +0 -1
- package/src/tokens/molecules/input-phone-field.css +0 -6
- package/src/tokens/molecules/modal.css +1 -0
- package/src/tokens/molecules/multi-select-field.css +0 -6
- package/src/tokens/molecules/number-input-field.css +0 -6
- package/src/tokens/molecules/otp-field.css +0 -6
- package/src/tokens/molecules/radio-field.css +0 -6
- package/src/tokens/molecules/recurrence-field.css +1 -0
- package/src/tokens/molecules/select-field.css +0 -6
- package/src/tokens/molecules/sidebar-nav.css +0 -6
- package/src/tokens/molecules/site-search.css +0 -2
- package/src/tokens/molecules/switcher-field.css +0 -1
- package/src/tokens/molecules/table.css +1 -0
- package/src/tokens/molecules/textarea-field.css +0 -6
- package/src/tokens/molecules/time-field.css +0 -6
- package/src/tokens/scss/_index.legacy.scss +1 -0
- package/src/tokens/scss/_index.scss +1 -0
- package/src/tokens/scss/components/_async-multi-select.scss +4 -0
- package/src/tokens/scss/components/_async-select.scss +3 -0
- package/src/tokens/scss/components/_autocomplete.scss +1 -0
- package/src/tokens/scss/components/_breadcrumb.scss +0 -2
- package/src/tokens/scss/components/_button.scss +0 -23
- package/src/tokens/scss/components/_control.scss +0 -4
- package/src/tokens/scss/components/_file-upload.scss +0 -4
- package/src/tokens/scss/components/_site-header.scss +0 -1
- package/src/tokens/scss/molecules/_async-multi-select-field.scss +0 -5
- package/src/tokens/scss/molecules/_async-select-field.scss +0 -5
- package/src/tokens/scss/molecules/_autocomplete-field.scss +0 -5
- package/src/tokens/scss/molecules/_avatar-upload.scss +0 -5
- package/src/tokens/scss/molecules/_calendar-roster.scss +4 -0
- package/src/tokens/scss/molecules/_chart.scss +0 -2
- package/src/tokens/scss/molecules/_checkbox-field.scss +0 -5
- package/src/tokens/scss/molecules/_consent.scss +1 -0
- package/src/tokens/scss/molecules/_conversation-thread.scss +3 -0
- package/src/tokens/scss/molecules/_date-picker-field.scss +0 -5
- package/src/tokens/scss/molecules/_date-time-field.scss +0 -5
- package/src/tokens/scss/molecules/_dropdown-field.scss +0 -5
- package/src/tokens/scss/molecules/_file-upload-field.scss +0 -5
- package/src/tokens/scss/molecules/_floating-toolbar.scss +15 -0
- package/src/tokens/scss/molecules/_input-field.scss +0 -1
- package/src/tokens/scss/molecules/_input-phone-field.scss +0 -5
- package/src/tokens/scss/molecules/_modal.scss +1 -0
- package/src/tokens/scss/molecules/_multi-select-field.scss +0 -5
- package/src/tokens/scss/molecules/_number-input-field.scss +0 -5
- package/src/tokens/scss/molecules/_otp-field.scss +0 -5
- package/src/tokens/scss/molecules/_radio-field.scss +0 -5
- package/src/tokens/scss/molecules/_recurrence-field.scss +1 -0
- package/src/tokens/scss/molecules/_select-field.scss +0 -5
- package/src/tokens/scss/molecules/_sidebar-nav.scss +0 -4
- package/src/tokens/scss/molecules/_site-search.scss +0 -2
- package/src/tokens/scss/molecules/_switcher-field.scss +0 -1
- package/src/tokens/scss/molecules/_table.scss +1 -0
- package/src/tokens/scss/molecules/_textarea-field.scss +0 -5
- package/src/tokens/scss/molecules/_time-field.scss +0 -5
- package/src/tokens/surface-dark-derived.css +2 -1
- package/src/tokens/surface-invert.css +15 -21
- package/src/tokens/surface-public.css +0 -19
- package/src/tokens/tokens.json +31 -129
- package/CHANGELOG.md +0 -8154
- package/dist/_types/data/home.d.ts +0 -83
- package/dist/_types/pages/Auth/AuthPage.d.ts +0 -24
- package/dist/_types/pages/Onboarding/OnboardingPage.d.ts +0 -37
- package/dist/_types/pages/Status/StatusPage.d.ts +0 -37
- package/dist/_types/pages/Status/_datos.d.ts +0 -47
- package/src/tokens/surface-light.css +0 -782
- package/src/tokens/utils.test.ts +0 -86
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
|
|
66
|
+
container?: React.ComponentPropsWithoutRef<typeof BaseSelect.Portal>['container'];
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
|
-
* Selección múltiple
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
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
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
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.
|
|
69
|
-
*
|
|
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
|
-
*
|
|
6
|
-
* caben en una celda
|
|
7
|
-
*
|
|
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.
|
|
117
|
-
*
|
|
118
|
-
*
|
|
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
|
-
/**
|
|
132
|
+
/**
|
|
133
|
+
* aria-label del botón de semana siguiente. **Sin default**: sale de
|
|
134
|
+
* `calendarPlanner.nextWeek`.
|
|
135
|
+
*/
|
|
124
136
|
nextWeekLabel?: string;
|
|
125
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
|
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>>;
|