@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,6 +1,5 @@
|
|
|
1
1
|
import { type ComponentProps } from 'react';
|
|
2
2
|
import { FormProvider as RhfFormProvider, type ControllerProps, type FieldPath, type FieldValues } from 'react-hook-form';
|
|
3
|
-
import { Label } from '../../atoms/Label/Label';
|
|
4
3
|
import './FormField.css';
|
|
5
4
|
type Translate = (message: string) => string;
|
|
6
5
|
/**
|
|
@@ -42,9 +41,9 @@ export declare function useFormField(): {
|
|
|
42
41
|
register: (part: "description" | "message", present: boolean) => void;
|
|
43
42
|
};
|
|
44
43
|
/** Contenedor de un campo: reserva los ids que enlazan sus partes. */
|
|
45
|
-
export declare
|
|
44
|
+
export declare const FormItem: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
46
45
|
/** Etiqueta del campo, ya apuntada a su control y marcada si hay error. */
|
|
47
|
-
export declare
|
|
46
|
+
export declare const FormLabel: import("react").ForwardRefExoticComponent<Omit<import("../../atoms/Label/Label").LabelProps & import("react").RefAttributes<HTMLLabelElement>, "ref"> & import("react").RefAttributes<HTMLLabelElement>>;
|
|
48
47
|
/**
|
|
49
48
|
* Envoltorio del control real (input, select, textarea…). No renderiza nodo
|
|
50
49
|
* propio: fusiona en su hijo el `id`, el `aria-describedby` y el
|
|
@@ -54,17 +53,17 @@ export declare function FormControl({ children, ...props }: {
|
|
|
54
53
|
children: React.ReactElement<Record<string, unknown>>;
|
|
55
54
|
} & Record<string, unknown>): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
56
55
|
/** Texto de ayuda del campo, enlazado al control por `aria-describedby`. */
|
|
57
|
-
export declare
|
|
56
|
+
export declare const FormDescription: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & import("react").RefAttributes<HTMLParagraphElement>>;
|
|
58
57
|
/**
|
|
59
58
|
* Mensaje de error del campo. Renderiza el error de react-hook-form si lo
|
|
60
59
|
* hay, o sus children si no; sin ninguno de los dos no renderiza nada.
|
|
61
60
|
*/
|
|
62
|
-
export declare
|
|
61
|
+
export declare const FormMessage: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & import("react").RefAttributes<HTMLParagraphElement>>;
|
|
63
62
|
/**
|
|
64
63
|
* Error del formulario entero (p. ej. "usuario o contraseña incorrectos"),
|
|
65
64
|
* el que se pone con `form.setError("root", …)` y no cuelga de ningún campo.
|
|
66
65
|
* Se coloca una vez al final del formulario: a diferencia de `FormMessage`
|
|
67
66
|
* no tiene campo del que leer, así que va directo al `formState`.
|
|
68
67
|
*/
|
|
69
|
-
export declare
|
|
68
|
+
export declare const FormRootMessage: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & import("react").RefAttributes<HTMLParagraphElement>>;
|
|
70
69
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
2
|
import './LanguageSwitcher.css';
|
|
3
3
|
/**
|
|
4
4
|
* El único texto del selector, y es **cromo**: cómo se llama el control. Los
|
|
@@ -33,7 +33,7 @@ export interface LanguageSwitcherProps {
|
|
|
33
33
|
* él, sale de `languageSwitcher.label` del `BrandMessagesProvider`.
|
|
34
34
|
*/
|
|
35
35
|
label?: string;
|
|
36
|
-
/** `id` del control en compacto (enlaza la etiqueta). */
|
|
36
|
+
/** `id` del control en compacto (enlaza la etiqueta). Por defecto, uno único por instancia (`useId`). */
|
|
37
37
|
id?: string;
|
|
38
38
|
/** Oculta la etiqueta (visible por defecto: en el panel va con su nombre, como el de tema). */
|
|
39
39
|
labelHidden?: boolean;
|
|
@@ -47,6 +47,10 @@ export interface LanguageSwitcherProps {
|
|
|
47
47
|
* Sin él, la lista es de botones y usa `onChange`.
|
|
48
48
|
*/
|
|
49
49
|
hrefFor?: (code: string) => string;
|
|
50
|
+
/**
|
|
51
|
+
* Enlace del router del producto; por defecto, un `<a>`. Recibe solo
|
|
52
|
+
* atributos de `<a>` y tiene que reenviarlos **todos** (`<Link {...props} />`).
|
|
53
|
+
*/
|
|
50
54
|
renderLink?: (props: LanguageSwitcherRenderLinkProps) => ReactNode;
|
|
51
55
|
/**
|
|
52
56
|
* Disposición de la etiqueta. `inline` (por defecto) la pone delante del
|
|
@@ -67,4 +71,4 @@ export interface LanguageSwitcherProps {
|
|
|
67
71
|
* componente del sistema porque aparece en el menú y en el pie de todos los
|
|
68
72
|
* sitios; el enrutado y la persistencia se quedan en el producto.
|
|
69
73
|
*/
|
|
70
|
-
export declare function LanguageSwitcher({ languages, value, onChange, label, id, labelHidden, variant, layout, size, hrefFor, renderLink, className, }: LanguageSwitcherProps): import("react/jsx-runtime").JSX.Element;
|
|
74
|
+
export declare function LanguageSwitcher({ languages, value, onChange, label, id: idProp, labelHidden, variant, layout, size, hrefFor, renderLink, className, }: LanguageSwitcherProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -25,29 +25,37 @@ export declare function LoadingRegion({ label, announce, children, className, ..
|
|
|
25
25
|
export interface SkeletonTextProps {
|
|
26
26
|
/** Líneas del párrafo; la última sale más corta. */
|
|
27
27
|
lines?: number;
|
|
28
|
+
/** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
|
|
29
|
+
className?: string;
|
|
28
30
|
}
|
|
29
31
|
/** Un bloque de texto —un párrafo, una lista de definiciones— que aún no llegó. Decorativo. */
|
|
30
|
-
export declare function SkeletonText({ lines }: SkeletonTextProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export declare function SkeletonText({ lines, className }: SkeletonTextProps): import("react/jsx-runtime").JSX.Element;
|
|
31
33
|
export interface SkeletonListProps {
|
|
32
34
|
/** Filas de la lista. */
|
|
33
35
|
rows?: number;
|
|
36
|
+
/** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
|
|
37
|
+
className?: string;
|
|
34
38
|
}
|
|
35
39
|
/** Una lista que aún no llegó: una barra por fila, del alto de un control. Decorativo. */
|
|
36
|
-
export declare function SkeletonList({ rows }: SkeletonListProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
export declare function SkeletonList({ rows, className }: SkeletonListProps): import("react/jsx-runtime").JSX.Element;
|
|
37
41
|
export interface SkeletonTableProps {
|
|
38
42
|
/** Filas de cuerpo, sin contar la cabecera. */
|
|
39
43
|
rows?: number;
|
|
44
|
+
/** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
|
|
45
|
+
className?: string;
|
|
40
46
|
}
|
|
41
47
|
/**
|
|
42
48
|
* Una tabla que aún no llegó: la cabecera y sus filas. No calca el diseño —no
|
|
43
49
|
* hace falta—, solo ocupa un sitio parecido. Decorativo.
|
|
44
50
|
*/
|
|
45
|
-
export declare function SkeletonTable({ rows }: SkeletonTableProps): import("react/jsx-runtime").JSX.Element;
|
|
51
|
+
export declare function SkeletonTable({ rows, className }: SkeletonTableProps): import("react/jsx-runtime").JSX.Element;
|
|
46
52
|
export interface SkeletonGridProps {
|
|
47
53
|
/** Columnas de la rejilla. */
|
|
48
54
|
columns?: 2 | 3 | 4;
|
|
49
55
|
/** Filas de la rejilla: se pintan `columns × rows` celdas. */
|
|
50
56
|
rows?: number;
|
|
57
|
+
/** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
|
|
58
|
+
className?: string;
|
|
51
59
|
}
|
|
52
60
|
/** Una rejilla de tarjetas o miniaturas que aún no llegó. Decorativo. */
|
|
53
|
-
export declare function SkeletonGrid({ columns, rows }: SkeletonGridProps): import("react/jsx-runtime").JSX.Element;
|
|
61
|
+
export declare function SkeletonGrid({ columns, rows, className }: SkeletonGridProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -16,7 +16,7 @@ export interface ModalMessages {
|
|
|
16
16
|
/** Nombre accesible del diálogo cuando no hay `title`. */
|
|
17
17
|
fallbackTitle: string;
|
|
18
18
|
}
|
|
19
|
-
export interface ModalProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'title'
|
|
19
|
+
export interface ModalProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'title'> {
|
|
20
20
|
open: boolean;
|
|
21
21
|
onClose: () => void;
|
|
22
22
|
title?: string;
|
|
@@ -73,6 +73,12 @@ export interface ModalProps extends Omit<React.ComponentPropsWithoutRef<'div'>,
|
|
|
73
73
|
footer?: React.ReactNode;
|
|
74
74
|
/** Se añade DESPUÉS de las clases propias del pie. */
|
|
75
75
|
footerClassName?: string;
|
|
76
|
+
/**
|
|
77
|
+
* Se añade DESPUÉS de las clases propias del panel (`modal__content`), igual
|
|
78
|
+
* que en `Sheet`. Es un enganche para el producto (una prueba, una medida
|
|
79
|
+
* propia), no la vía de personalizar la cara del diálogo: eso va por tokens.
|
|
80
|
+
*/
|
|
81
|
+
className?: string;
|
|
76
82
|
}
|
|
77
83
|
/**
|
|
78
84
|
* Diálogo centrado sobre un velo. El motor (portal, velo, trampa de foco,
|
|
@@ -84,7 +90,7 @@ export interface ModalProps extends Omit<React.ComponentPropsWithoutRef<'div'>,
|
|
|
84
90
|
* `onClick`/`onPointerDown` con `stopPropagation` en el propio popup— sin
|
|
85
91
|
* envolverlo en `div`s de producto.
|
|
86
92
|
*
|
|
87
|
-
* `className`
|
|
88
|
-
*
|
|
93
|
+
* `className` se concatena tras las clases propias del popup, como en `Sheet`.
|
|
94
|
+
* La cara del diálogo sigue personalizándose por tokens.
|
|
89
95
|
*/
|
|
90
|
-
export declare function Modal({ open, onClose, title, children, closeLabel, fallbackTitle, container, description, 'aria-describedby': ariaDescribedBy, initialFocus, footer, footerClassName, ...rest }: ModalProps): import("react/jsx-runtime").JSX.Element;
|
|
96
|
+
export declare function Modal({ open, onClose, title, children, closeLabel, fallbackTitle, container, description, 'aria-describedby': ariaDescribedBy, initialFocus, footer, footerClassName, className, ...rest }: ModalProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -33,5 +33,11 @@ export interface OrgSwitcherProps {
|
|
|
33
33
|
defaultOpen?: boolean;
|
|
34
34
|
items?: MenuItem[];
|
|
35
35
|
renderLink?: (props: MenuRenderLinkProps) => ReactNode;
|
|
36
|
+
/**
|
|
37
|
+
* Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye).
|
|
38
|
+
* Va al disparador: es el único nodo que el componente pinta en su sitio (el
|
|
39
|
+
* panel sale por un portal).
|
|
40
|
+
*/
|
|
41
|
+
className?: string;
|
|
36
42
|
}
|
|
37
|
-
export declare function OrgSwitcher({ label, block, compact, current, organizations, onOrgChange, defaultOpen, items, renderLink }: OrgSwitcherProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
export declare function OrgSwitcher({ label, block, compact, current, organizations, onOrgChange, defaultOpen, items, renderLink, className }: OrgSwitcherProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -20,11 +20,18 @@ export interface PasswordFieldProps extends Omit<React.ComponentPropsWithoutRef<
|
|
|
20
20
|
* dentro de una capa de formulario propia.
|
|
21
21
|
*/
|
|
22
22
|
label?: string;
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Oculta la etiqueta a la vista (sigue leyéndola el lector de pantalla).
|
|
25
|
+
* Solo aplica cuando hay `label`. Por defecto `false`: la etiqueta se ve,
|
|
26
|
+
* como en `InputField`. Con la etiqueta oculta y sin `placeholder`, el
|
|
27
|
+
* control usa el texto de la etiqueta como placeholder para no quedarse sin
|
|
28
|
+
* pista visible. Sin valor, lo decide quien lo envuelva: dentro de un
|
|
29
|
+
* `FieldRow` que no es la primera de la lista, la etiqueta se oculta sola.
|
|
30
|
+
*/
|
|
24
31
|
labelHidden?: boolean;
|
|
25
32
|
/** Marca el estado de error (borde) y `aria-invalid` en el input. */
|
|
26
33
|
error?: boolean;
|
|
27
|
-
/** Mensaje de error propio del componente
|
|
34
|
+
/** Mensaje de error propio del componente. Se pinta bajo el campo y se enlaza con `aria-describedby`, haya o no `label`. */
|
|
28
35
|
errorMessage?: string;
|
|
29
36
|
/** Texto de ayuda propio del componente. */
|
|
30
37
|
helperText?: string;
|
|
@@ -50,6 +50,8 @@ export interface PrevNextNavProps {
|
|
|
50
50
|
linkComponent?: ComponentType<any>;
|
|
51
51
|
/** Variante de densidad. Default: "md" */
|
|
52
52
|
size?: 'sm' | 'md';
|
|
53
|
+
/** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
|
|
54
|
+
className?: string;
|
|
53
55
|
}
|
|
54
56
|
/**
|
|
55
57
|
* Los dos textos del par, y los dos son **cromo**: «anterior» y «siguiente»
|
|
@@ -62,4 +64,4 @@ export interface PrevNextNavMessages {
|
|
|
62
64
|
/** Rótulo del control siguiente. */
|
|
63
65
|
next: string;
|
|
64
66
|
}
|
|
65
|
-
export declare function PrevNextNav({ prevHref, nextHref, prevOnClick, nextOnClick, prevLabel, nextLabel, prevTitle, nextTitle, label, labelId, linkComponent, size, }: PrevNextNavProps): import("react/jsx-runtime").JSX.Element;
|
|
67
|
+
export declare function PrevNextNav({ prevHref, nextHref, prevOnClick, nextOnClick, prevLabel, nextLabel, prevTitle, nextTitle, label, labelId, linkComponent, size, className, }: PrevNextNavProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -65,6 +65,11 @@ export interface RecurrenceFieldProps {
|
|
|
65
65
|
locale?: string;
|
|
66
66
|
/** Por dónde empieza la semana en los días. Default `'monday'`. */
|
|
67
67
|
weekStartsOn?: 'monday' | 'sunday';
|
|
68
|
+
/**
|
|
69
|
+
* El «hoy» del calendario de la fecha de final. Default: la fecha actual.
|
|
70
|
+
* En SSR conviene pasarla (ver `Calendar`).
|
|
71
|
+
*/
|
|
72
|
+
today?: Date;
|
|
68
73
|
/** Tope inferior de la fecha de final. */
|
|
69
74
|
minDate?: Date;
|
|
70
75
|
/** Tope superior de la fecha de final. */
|
|
@@ -90,4 +95,4 @@ export interface RecurrenceFieldProps {
|
|
|
90
95
|
* Es **controlado**, como el resto de campos del sistema: recibe `value` y
|
|
91
96
|
* llama a `onValueChange` con el valor entero. `null` es «no se repite».
|
|
92
97
|
*/
|
|
93
|
-
export declare function RecurrenceField({ value, onValueChange, id: idProp, legend, disabled, size, locale, weekStartsOn, minDate, maxDate, className, frequencyLabel, weekdaysLabel, endLabel, }: RecurrenceFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
98
|
+
export declare function RecurrenceField({ value, onValueChange, id: idProp, legend, disabled, size, locale, weekStartsOn, minDate, maxDate, today, className, frequencyLabel, weekdaysLabel, endLabel, }: RecurrenceFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
2
|
import './SidebarNav.css';
|
|
3
3
|
export interface SidebarNavItem {
|
|
4
4
|
id: string;
|
|
@@ -51,6 +51,14 @@ export interface SidebarNavProps {
|
|
|
51
51
|
* `sidebarNav.empty`. Solo se lee cuando hay alguna entrada vacía.
|
|
52
52
|
*/
|
|
53
53
|
emptyLabel?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Nombre de una entrada vacía donde no cabe la marca aparte —el tooltip y
|
|
56
|
+
* el nombre accesible del modo rail, el rótulo del menú de un grupo—.
|
|
57
|
+
* Recibe el rótulo de la entrada y la marca de vacío ya resuelta. **Sin
|
|
58
|
+
* default**: sale de `sidebarNav.emptyEntry`. Solo se lee cuando hay alguna
|
|
59
|
+
* entrada vacía en esas formas.
|
|
60
|
+
*/
|
|
61
|
+
emptyEntryLabel?: (label: string, empty: string) => string;
|
|
54
62
|
/** Solo iconos: los enlaces con tooltip, los grupos como menú. Sin él, lo decide la `Sidebar` (rail). */
|
|
55
63
|
rail?: boolean;
|
|
56
64
|
entries: SidebarNavEntry[];
|
|
@@ -58,6 +66,8 @@ export interface SidebarNavProps {
|
|
|
58
66
|
value?: string[];
|
|
59
67
|
onValueChange?: (value: string[]) => void;
|
|
60
68
|
renderLink?: (props: SidebarNavRenderLinkProps) => ReactNode;
|
|
69
|
+
/** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
|
|
70
|
+
className?: string;
|
|
61
71
|
}
|
|
62
72
|
/**
|
|
63
73
|
* Los dos textos de la navegación, los dos **cromo**: el nombre de la región
|
|
@@ -70,5 +80,11 @@ export interface SidebarNavMessages {
|
|
|
70
80
|
label: string;
|
|
71
81
|
/** Marca de las entradas sin contenido. */
|
|
72
82
|
empty: string;
|
|
83
|
+
/**
|
|
84
|
+
* Una entrada vacía nombrada en una sola cadena: «Guías — sin docs». Recibe
|
|
85
|
+
* el rótulo de la entrada y la marca de vacío; es función porque el orden y
|
|
86
|
+
* el separador son de cada idioma.
|
|
87
|
+
*/
|
|
88
|
+
emptyEntry: (label: string, empty: string) => string;
|
|
73
89
|
}
|
|
74
|
-
export declare function SidebarNav({ label, emptyLabel, rail, entries, defaultValue, value, onValueChange, renderLink, }: SidebarNavProps): import("react/jsx-runtime").JSX.Element;
|
|
90
|
+
export declare function SidebarNav({ label, emptyLabel, emptyEntryLabel, rail, entries, defaultValue, value, onValueChange, renderLink, className, }: SidebarNavProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -55,7 +55,10 @@ export interface SiteNavProps {
|
|
|
55
55
|
groups: SiteNavGroup[];
|
|
56
56
|
/** Nombre accesible del `nav`. */
|
|
57
57
|
label?: string;
|
|
58
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Enlace del router del producto; por defecto, un `<a>`. Recibe solo
|
|
60
|
+
* atributos de `<a>` y tiene que reenviarlos **todos** (`<Link {...props} />`).
|
|
61
|
+
*/
|
|
59
62
|
renderLink?: (props: SiteNavRenderLinkProps) => ReactNode;
|
|
60
63
|
className?: string;
|
|
61
64
|
}
|
|
@@ -2,6 +2,19 @@ import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
|
|
|
2
2
|
import './StatTile.css';
|
|
3
3
|
export type StatTileDirection = 'up' | 'down' | 'flat';
|
|
4
4
|
export type StatTileTone = 'positive' | 'negative' | 'neutral';
|
|
5
|
+
/**
|
|
6
|
+
* Las tres direcciones del delta, que solo oye un lector de pantalla (la
|
|
7
|
+
* flecha es decorativa). Dicen hacia dónde se movió la cifra, no qué cifra
|
|
8
|
+
* es: valen igual en cualquier panel.
|
|
9
|
+
*/
|
|
10
|
+
export interface StatTileMessages {
|
|
11
|
+
/** La cifra ha subido. */
|
|
12
|
+
up: string;
|
|
13
|
+
/** La cifra ha bajado. */
|
|
14
|
+
down: string;
|
|
15
|
+
/** La cifra no se ha movido. */
|
|
16
|
+
flat: string;
|
|
17
|
+
}
|
|
5
18
|
export interface StatTileDelta {
|
|
6
19
|
/** La variación, ya formateada: «+12 %», «−3», «igual». */
|
|
7
20
|
value: ReactNode;
|
|
@@ -14,7 +27,8 @@ export interface StatTileDelta {
|
|
|
14
27
|
tone?: StatTileTone;
|
|
15
28
|
/**
|
|
16
29
|
* Cómo se lee la dirección para un lector de pantalla, que no ve la flecha.
|
|
17
|
-
*
|
|
30
|
+
* **Sin default**: sin él, sale de `statTile.up`, `statTile.down` o
|
|
31
|
+
* `statTile.flat` del `BrandMessagesProvider`, según `direction`.
|
|
18
32
|
*/
|
|
19
33
|
label?: string;
|
|
20
34
|
}
|
|
@@ -1,19 +1,54 @@
|
|
|
1
1
|
import './ThemeSwitcher.css';
|
|
2
2
|
export type Theme = 'light' | 'dark' | 'system';
|
|
3
|
+
/**
|
|
4
|
+
* El cromo del selector de tema: el nombre del control, los tres temas y la
|
|
5
|
+
* frase que nombra el botón de icono con el tema vigente. Todo es igual en
|
|
6
|
+
* cualquier pantalla de la suite, así que va al catálogo una sola vez.
|
|
7
|
+
*/
|
|
8
|
+
export interface ThemeSwitcherMessages {
|
|
9
|
+
/** Nombre del control: la etiqueta del compacto y el nombre del grupo en lista. */
|
|
10
|
+
group: string;
|
|
11
|
+
/** El tema claro. */
|
|
12
|
+
light: string;
|
|
13
|
+
/** El tema oscuro. */
|
|
14
|
+
dark: string;
|
|
15
|
+
/** El tema que sigue al sistema operativo. */
|
|
16
|
+
system: string;
|
|
17
|
+
/**
|
|
18
|
+
* Nombre accesible del botón de la variante `icon`, que solo enseña el
|
|
19
|
+
* icono del tema vigente: «Tema: Claro». Recibe el nombre del control y el
|
|
20
|
+
* del tema vigente, ya resueltos, y es función porque el orden y la
|
|
21
|
+
* puntuación de la frase son de cada idioma.
|
|
22
|
+
*/
|
|
23
|
+
trigger: (group: string, theme: string) => string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Anulaciones puntuales del catálogo, clave a clave. Las que no se pasen
|
|
27
|
+
* salen de `themeSwitcher.*` del `BrandMessagesProvider`.
|
|
28
|
+
*/
|
|
3
29
|
export interface ThemeSwitcherLabels {
|
|
4
|
-
/**
|
|
30
|
+
/** Anulación puntual de `themeSwitcher.group`. */
|
|
5
31
|
group?: string;
|
|
32
|
+
/** Anulación puntual de `themeSwitcher.light`. */
|
|
6
33
|
light?: string;
|
|
34
|
+
/** Anulación puntual de `themeSwitcher.dark`. */
|
|
7
35
|
dark?: string;
|
|
36
|
+
/** Anulación puntual de `themeSwitcher.system`. */
|
|
8
37
|
system?: string;
|
|
38
|
+
/** Anulación puntual de `themeSwitcher.trigger`. */
|
|
39
|
+
trigger?: (group: string, theme: string) => string;
|
|
9
40
|
}
|
|
10
41
|
export interface ThemeSwitcherProps {
|
|
11
42
|
/** Tema elegido. `system` sigue la preferencia del sistema operativo. */
|
|
12
43
|
value: Theme;
|
|
13
44
|
/** Cambio de tema. Aplicarlo (clase en `html`) y persistirlo es del producto. */
|
|
14
45
|
onChange?: (theme: Theme) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Textos del control, clave a clave. **Sin defaults**: los que no se pasen
|
|
48
|
+
* salen de `themeSwitcher.*` del `BrandMessagesProvider`.
|
|
49
|
+
*/
|
|
15
50
|
labels?: ThemeSwitcherLabels;
|
|
16
|
-
/** `id` del control en compacto (enlaza la etiqueta). */
|
|
51
|
+
/** `id` del control en compacto (enlaza la etiqueta). Por defecto, uno único por instancia (`useId`). */
|
|
17
52
|
id?: string;
|
|
18
53
|
/**
|
|
19
54
|
* `compact`: un `DropdownField` (etiqueta + control rectangular) con el icono y el nombre del tema actual — el del panel.
|
|
@@ -39,4 +74,4 @@ export interface ThemeSwitcherProps {
|
|
|
39
74
|
* opciones exclusivas; en lista, las opciones desplegadas para el pie. Aplicar el tema y
|
|
40
75
|
* recordarlo es del producto; el componente solo muestra y elige.
|
|
41
76
|
*/
|
|
42
|
-
export declare function ThemeSwitcher({ value, onChange, labels, id, variant, layout, size, className }: ThemeSwitcherProps): import("react/jsx-runtime").JSX.Element;
|
|
77
|
+
export declare function ThemeSwitcher({ value, onChange, labels, id: idProp, variant, layout, size, className }: ThemeSwitcherProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -47,6 +47,14 @@ export interface ToasterProps {
|
|
|
47
47
|
* Punto de montaje de los avisos efímeros. Se monta **una vez** en la raíz de la
|
|
48
48
|
* aplicación; los avisos se lanzan desde cualquier sitio con `toast(...)`.
|
|
49
49
|
*
|
|
50
|
+
* **Solo puede haber un `Toaster` montado a la vez.** La cola (`toastManager`)
|
|
51
|
+
* es un único objeto de módulo y el `Toaster` no la aísla: dos montados pintan
|
|
52
|
+
* cada aviso dos veces, el último que monta impone su `duration` a todos
|
|
53
|
+
* (`setToastDefaultDuration` escribe una variable global, la que usa un aviso
|
|
54
|
+
* actualizado por `id`) y los dos sincronizan la misma lista de avisos vivos de
|
|
55
|
+
* `toast.dismiss()`. Para otra posición u otra duración se cambian las props de
|
|
56
|
+
* ese único `Toaster` o se pasa `duration` al aviso.
|
|
57
|
+
*
|
|
50
58
|
* La cara del aviso es la del `Alert` —mismo relleno, mismo borde, misma
|
|
51
59
|
* tipografía y las mismas cuatro intenciones, sobre el juego de tokens
|
|
52
60
|
* `alert.*`—; lo propio del toast es la capa, la posición, el apilado y el
|
|
@@ -30,5 +30,11 @@ export interface UserMenuProps {
|
|
|
30
30
|
renderLink?: (props: MenuRenderLinkProps) => ReactNode;
|
|
31
31
|
onOpenChange?: (open: boolean) => void;
|
|
32
32
|
defaultOpen?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye).
|
|
35
|
+
* Va al disparador: es el único nodo que el componente pinta en su sitio (el
|
|
36
|
+
* panel sale por un portal).
|
|
37
|
+
*/
|
|
38
|
+
className?: string;
|
|
33
39
|
}
|
|
34
|
-
export declare function UserMenu({ name, email, avatarUrl, notificationCount, items, label, compact, renderLink, onOpenChange, defaultOpen, }: UserMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
export declare function UserMenu({ name, email, avatarUrl, notificationCount, items, label, compact, renderLink, onOpenChange, defaultOpen, className, }: UserMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -93,6 +93,15 @@ export interface CalendarMonthNavOptions {
|
|
|
93
93
|
* sin mover el foco.
|
|
94
94
|
*/
|
|
95
95
|
export declare function renderCalendarMonthNav({ block, title, titleId, navigable, previousLabel, nextLabel, prevDisabled, nextDisabled, onPrev, onNext, chevronSize, onTitleClick, titleExpanded, titleRef, children, }: CalendarMonthNavOptions): import("react/jsx-runtime").JSX.Element;
|
|
96
|
+
/**
|
|
97
|
+
* El «hoy» de un calendario: el que pasa el consumidor o, sin él, la fecha
|
|
98
|
+
* actual **calculada una vez por montaje** —no en cada render—. En SSR el
|
|
99
|
+
* servidor y el navegador calculan cada uno el suyo, y alrededor de la
|
|
100
|
+
* medianoche (o con husos distintos) no coinciden: React avisa de un
|
|
101
|
+
* desajuste de hidratación. Para evitarlo, la app pasa `today` desde el
|
|
102
|
+
* servidor a los dos lados.
|
|
103
|
+
*/
|
|
104
|
+
export declare function useToday(today?: Date): Date;
|
|
96
105
|
export interface UseCalendarGridNavigationOptions {
|
|
97
106
|
/** Mes visible */
|
|
98
107
|
month: Date;
|
|
@@ -100,6 +109,8 @@ export interface UseCalendarGridNavigationOptions {
|
|
|
100
109
|
onMonthChange: (month: Date) => void;
|
|
101
110
|
/** Fecha seleccionada, si la hay: es la primera candidata a llevar el tabindex */
|
|
102
111
|
selected?: Date | null;
|
|
112
|
+
/** El «hoy» del calendario (`useToday`): segundo candidato al tabindex. */
|
|
113
|
+
today: Date;
|
|
103
114
|
/**
|
|
104
115
|
* Activación de la celda enfocada con Enter/Espacio. Solo para rejillas cuya
|
|
105
116
|
* celda no es un `<button>` (que ya lo resuelve el navegador).
|
|
@@ -126,12 +137,14 @@ export interface CalendarGridNavigation {
|
|
|
126
137
|
* moverse de día, Inicio/Fin dentro de la semana, RePág/AvPág de mes y con
|
|
127
138
|
* Mayús de año.
|
|
128
139
|
*/
|
|
129
|
-
export declare function useCalendarGridNavigation({ month, onMonthChange, selected, onActivate, minDate, maxDate, }: UseCalendarGridNavigationOptions): CalendarGridNavigation;
|
|
140
|
+
export declare function useCalendarGridNavigation({ month, onMonthChange, selected, today, onActivate, minDate, maxDate, }: UseCalendarGridNavigationOptions): CalendarGridNavigation;
|
|
130
141
|
export interface UseCalendarWeekNavigationOptions {
|
|
131
142
|
/** Lunes de la semana visible */
|
|
132
143
|
weekStart: Date;
|
|
133
144
|
/** Se llama cuando el teclado saca el foco fuera de la semana visible */
|
|
134
145
|
onWeekChange: (weekStart: Date) => void;
|
|
146
|
+
/** El «hoy» del calendario (`useToday`): candidato al tabindex de la semana. */
|
|
147
|
+
today: Date;
|
|
135
148
|
/** Activación de la columna enfocada con Enter/Espacio */
|
|
136
149
|
onActivate?: (date: Date) => void;
|
|
137
150
|
minDate?: Date;
|
|
@@ -147,4 +160,4 @@ export interface UseCalendarWeekNavigationOptions {
|
|
|
147
160
|
* fila de celdas, así que arriba y abajo no llevan a ninguna otra parte y se
|
|
148
161
|
* quedan recorriendo los días, como ↑/↓ en una lista.
|
|
149
162
|
*/
|
|
150
|
-
export declare function useCalendarWeekNavigation({ weekStart, onWeekChange, onActivate, minDate, maxDate, }: UseCalendarWeekNavigationOptions): CalendarGridNavigation;
|
|
163
|
+
export declare function useCalendarWeekNavigation({ weekStart, onWeekChange, today, onActivate, minDate, maxDate, }: UseCalendarWeekNavigationOptions): CalendarGridNavigation;
|
|
@@ -19,7 +19,12 @@ export interface DialogHeaderProps {
|
|
|
19
19
|
className: string;
|
|
20
20
|
children: ReactNode;
|
|
21
21
|
}
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Cabecera del diálogo, en una de sus dos colocaciones. Es un `<div>`, no un
|
|
24
|
+
* `<header>`: el diálogo sale por un portal al `<body>`, fuera de cualquier
|
|
25
|
+
* `<main>`/`<section>`, y ahí un `<header>` es un `banner` — el segundo de la
|
|
26
|
+
* página, junto al de la aplicación. El diálogo ya se nombra por su título.
|
|
27
|
+
*/
|
|
23
28
|
export declare function DialogHeader({ layout, noTitle, className, children }: DialogHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
24
29
|
/**
|
|
25
30
|
* Pie de acciones. Fila a la derecha; por debajo del punto de ruptura, botones
|
|
@@ -68,8 +68,6 @@ export type MenuRenderLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement>
|
|
|
68
68
|
children: ReactNode;
|
|
69
69
|
className: string;
|
|
70
70
|
};
|
|
71
|
-
/** Reenvía TODO lo que inyecta Base UI: un renderLink que solo copie href/className rompe el menú. */
|
|
72
|
-
export declare function defaultRenderLink({ children, ...props }: MenuRenderLinkProps): import("react/jsx-runtime").JSX.Element;
|
|
73
71
|
interface RenderDropdownItemsOptions {
|
|
74
72
|
items: MenuItem[];
|
|
75
73
|
itemClass: (destructive?: boolean) => string;
|
|
@@ -57,6 +57,8 @@ export interface AppHeaderProps {
|
|
|
57
57
|
menuCloseLabel?: string;
|
|
58
58
|
/** id de la sidebar que gobierna el botón (`aria-controls`). */
|
|
59
59
|
sidebarId?: string;
|
|
60
|
+
/** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
|
|
61
|
+
className?: string;
|
|
60
62
|
}
|
|
61
63
|
/**
|
|
62
64
|
* La barra superior de la aplicación, en todos los anchos. A la izquierda el
|
|
@@ -64,4 +66,4 @@ export interface AppHeaderProps {
|
|
|
64
66
|
* escritorio; a la derecha, notificaciones y cuenta. Entre medias, lo que la
|
|
65
67
|
* página necesite. Con `logo`, la marca del producto va justo tras el botón.
|
|
66
68
|
*/
|
|
67
|
-
export declare function AppHeader({ logo, logoHref, logoLabel, renderLogoLink, start, notifications, end, menuLabel, menuCloseLabel, sidebarId, }: AppHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
69
|
+
export declare function AppHeader({ logo, logoHref, logoLabel, renderLogoLink, start, notifications, end, menuLabel, menuCloseLabel, sidebarId, className, }: AppHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -41,6 +41,11 @@ export interface AppShellProps {
|
|
|
41
41
|
* él, sale de `appShell.skipToContent` del `BrandMessagesProvider`.
|
|
42
42
|
*/
|
|
43
43
|
skipLabel?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye).
|
|
46
|
+
* Va al contenedor `.app-shell`, no al enlace de salto que lo precede.
|
|
47
|
+
*/
|
|
48
|
+
className?: string;
|
|
44
49
|
}
|
|
45
50
|
/**
|
|
46
51
|
* El único texto que el armazón dice por su cuenta, y es **cromo**: el enlace
|
|
@@ -59,4 +64,4 @@ export interface AppShellMessages {
|
|
|
59
64
|
* modo y su asa) y `SidebarNav` (rail). Persistir el estado es del producto:
|
|
60
65
|
* `onSidebarChange` / `onSidebarWidthChange` avisan de cada cambio.
|
|
61
66
|
*/
|
|
62
|
-
export declare function AppShell({ banner, header, sidebar, children, contentFlush, defaultSidebar, sidebarState, onSidebarChange, defaultSidebarWidth, onSidebarWidthChange, skipLabel, }: AppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
67
|
+
export declare function AppShell({ banner, header, sidebar, children, contentFlush, defaultSidebar, sidebarState, onSidebarChange, defaultSidebarWidth, onSidebarWidthChange, skipLabel, className, }: AppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -35,6 +35,12 @@ export interface LegalFooterProps {
|
|
|
35
35
|
width?: ContainerWidth;
|
|
36
36
|
/** Pie sobre superficie oscura. */
|
|
37
37
|
surface?: 'dark';
|
|
38
|
+
/**
|
|
39
|
+
* Elemento raíz (default `'footer'`, el `contentinfo` de la página). `'div'`
|
|
40
|
+
* cuando va dentro de otro pie: un `<footer>` no puede contener otro, y la
|
|
41
|
+
* página tendría dos `contentinfo`. `SiteFooter` lo pone solo en su `legal`.
|
|
42
|
+
*/
|
|
43
|
+
as?: 'footer' | 'div';
|
|
38
44
|
className?: string;
|
|
39
45
|
}
|
|
40
46
|
/**
|
|
@@ -44,4 +50,4 @@ export interface LegalFooterProps {
|
|
|
44
50
|
* interior. Es el pie de las aplicaciones de la suite; la web tiene su pie
|
|
45
51
|
* propio con más cosas.
|
|
46
52
|
*/
|
|
47
|
-
export declare function LegalFooter({ label, title, links, renderLink, width, surface, className, }: LegalFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
53
|
+
export declare function LegalFooter({ label, title, links, renderLink, width, surface, as: Root, className, }: LegalFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -41,6 +41,8 @@ export interface SidebarProps {
|
|
|
41
41
|
resizerValueText?: (width: number) => string;
|
|
42
42
|
/** Fuerza el modo sin `AppShell` (Storybook, pruebas). Con shell, lo decide el shell. */
|
|
43
43
|
mode?: 'open' | 'rail';
|
|
44
|
+
/** Se añade DESPUÉS de las clases propias (el consumidor añade, no sustituye). */
|
|
45
|
+
className?: string;
|
|
44
46
|
}
|
|
45
47
|
/**
|
|
46
48
|
* La barra lateral de la aplicación. En escritorio es una columna con tres
|
|
@@ -49,7 +51,7 @@ export interface SidebarProps {
|
|
|
49
51
|
* grupos de navegación se abren como menú) y cerrada. En móvil es un cajón
|
|
50
52
|
* que entra por la izquierda y se cierra al navegar.
|
|
51
53
|
*/
|
|
52
|
-
export declare function Sidebar({ logo, children, footer, id, label, resizerLabel, resizerValueText, mode, }: SidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
54
|
+
export declare function Sidebar({ logo, children, footer, id, label, resizerLabel, resizerValueText, mode, className, }: SidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
53
55
|
export interface SidebarGroupProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
54
56
|
children: ReactNode;
|
|
55
57
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
2
|
import { type ContainerWidth } from '../../atoms/Container/Container';
|
|
3
3
|
import { type HeadingLevel } from '../../atoms/Heading/Heading';
|
|
4
4
|
import './SiteFooter.css';
|
|
@@ -39,7 +39,11 @@ export interface SiteFooterProps {
|
|
|
39
39
|
* componentes del sistema; el pie solo le reserva el sitio.
|
|
40
40
|
*/
|
|
41
41
|
aside?: ReactNode;
|
|
42
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Bloque legal bajo el pie, separado por una línea. Se espera un
|
|
44
|
+
* `LegalFooter`, que aquí se monta como `<div>` (`as="div"`): dentro de este
|
|
45
|
+
* `<footer>` no puede ir otro, ni la página tener dos `contentinfo`.
|
|
46
|
+
*/
|
|
43
47
|
legal?: ReactNode;
|
|
44
48
|
/** Nivel semántico del título de cada columna. Por defecto `2`. */
|
|
45
49
|
columnTitleLevel?: HeadingLevel;
|
|
@@ -47,7 +47,7 @@ export interface SiteHeaderProps {
|
|
|
47
47
|
children?: ReactNode;
|
|
48
48
|
/** Ajustes del sitio al final del panel (el selector de tema). */
|
|
49
49
|
settings?: ReactNode;
|
|
50
|
-
/** id del panel — `aria-controls` del botón de menú. */
|
|
50
|
+
/** id del panel — `aria-controls` del botón de menú. Por defecto, uno único por instancia (`useId`). */
|
|
51
51
|
panelId?: string;
|
|
52
52
|
/** Controles del producto en la barra (acceso, CTA…). */
|
|
53
53
|
actions?: ReactNode;
|
|
@@ -74,4 +74,4 @@ export interface SiteHeaderMessages {
|
|
|
74
74
|
/** Texto accesible del enlace del logotipo. */
|
|
75
75
|
logo: string;
|
|
76
76
|
}
|
|
77
|
-
export declare function SiteHeader({ logoHref, logoLabel, menuLabel, menuCloseLabel, logoSize, logo, menuButtonSize, renderLogoLink, width, open, onOpenChange, children, settings, panelId, actions, language, }: SiteHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
77
|
+
export declare function SiteHeader({ logoHref, logoLabel, menuLabel, menuCloseLabel, logoSize, logo, menuButtonSize, renderLogoLink, width, open, onOpenChange, children, settings, panelId: panelIdProp, actions, language, }: SiteHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -38,6 +38,11 @@ export interface ConnectorAuthChromeProps {
|
|
|
38
38
|
* aplican —ni el `ref`, porque no hay marco al que engancharlo.
|
|
39
39
|
*/
|
|
40
40
|
shell?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Se añade DESPUÉS de las clases propias. Va al contenido de la pantalla
|
|
43
|
+
* (las dos columnas), con marco y sin él.
|
|
44
|
+
*/
|
|
45
|
+
className?: string;
|
|
41
46
|
}
|
|
42
47
|
export interface ConnectorAuthShellProps extends ConnectorAuthChromeProps {
|
|
43
48
|
/** El título de la pantalla: `Heading` de nivel 1 vía `PageIntro`, columna izquierda. */
|
|
@@ -50,8 +55,6 @@ export interface ConnectorAuthShellProps extends ConnectorAuthChromeProps {
|
|
|
50
55
|
aside?: ReactNode;
|
|
51
56
|
/** La columna de la derecha: la decisión —el formulario, la ficha, los botones—. */
|
|
52
57
|
children: ReactNode;
|
|
53
|
-
/** Se añade DESPUÉS de las clases propias. */
|
|
54
|
-
className?: string;
|
|
55
58
|
}
|
|
56
59
|
/**
|
|
57
60
|
* El marco de las pantallas del conector: **el mismo que el de acceso**.
|
|
@@ -160,4 +160,4 @@ export interface ConnectorConsentPageProps extends ConnectorAuthChromeProps {
|
|
|
160
160
|
* `action` es una pantalla de React con dos callbacks. Las dos formas pintan
|
|
161
161
|
* exactamente lo mismo.
|
|
162
162
|
*/
|
|
163
|
-
export declare function ConnectorConsentPage({ clientName, productName, accountEmail, scope, redirectHost, action, hiddenFields, decisionName, approveValue, denyValue, onApprove, onDeny, denyHref, initialFocus, title, intro, redirectNotice, approveLabel, denyLabel, scopeReadLabel, scopeWriteLabel, expandLabel, collapseLabel, valueQuotes, summaryLabels, links, header, footer, preferences, preferencesLabel, id, shell, }: ConnectorConsentPageProps): import("react/jsx-runtime").JSX.Element;
|
|
163
|
+
export declare function ConnectorConsentPage({ clientName, productName, accountEmail, scope, redirectHost, action, hiddenFields, decisionName, approveValue, denyValue, onApprove, onDeny, denyHref, initialFocus, title, intro, redirectNotice, approveLabel, denyLabel, scopeReadLabel, scopeWriteLabel, expandLabel, collapseLabel, valueQuotes, summaryLabels, links, header, footer, preferences, preferencesLabel, id, shell, className, }: ConnectorConsentPageProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -124,4 +124,4 @@ export interface ConnectorExternalSignInPageProps extends ConnectorAuthChromePro
|
|
|
124
124
|
* `Card` dentro de una columna estrecha, sin cabecera pública ni pie: al
|
|
125
125
|
* cablearla, ese molde propio se retira y lo pone la plantilla.
|
|
126
126
|
*/
|
|
127
|
-
export declare function ConnectorExternalSignInPage({ platformName, organization, organizationDefaultValue, organizationName, action, onSubmit, hiddenFields, error, title, intro, signingInTo, valueQuotes, organizationLabel, submitLabel, extra, links, header, footer, preferences, preferencesLabel, id, shell, }: ConnectorExternalSignInPageProps): import("react/jsx-runtime").JSX.Element;
|
|
127
|
+
export declare function ConnectorExternalSignInPage({ platformName, organization, organizationDefaultValue, organizationName, action, onSubmit, hiddenFields, error, title, intro, signingInTo, valueQuotes, organizationLabel, submitLabel, extra, links, header, footer, preferences, preferencesLabel, id, shell, className, }: ConnectorExternalSignInPageProps): import("react/jsx-runtime").JSX.Element;
|