@1doc/1ds-react 2.8.0 → 2.9.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/CHANGELOG.md +1106 -0
- package/dist/components/AILabel/AILabel.js +1 -1
- package/dist/components/Accordion/Accordion.d.ts +6 -2
- package/dist/components/AttachmentCard/AttachmentCard.css +16 -0
- package/dist/components/AttachmentCard/AttachmentCard.d.ts +19 -2
- package/dist/components/AttachmentCard/AttachmentCard.js +40 -3
- package/dist/components/Avatar/Avatar.css +7 -2
- package/dist/components/Avatar/AvatarGroup.d.ts +17 -0
- package/dist/components/Avatar/AvatarGroup.js +22 -8
- package/dist/components/Badge/Badge.css +54 -2
- package/dist/components/Badge/Badge.d.ts +14 -4
- package/dist/components/Badge/Badge.js +1 -0
- package/dist/components/Box/Box.css +83 -0
- package/dist/components/Box/Box.d.ts +82 -2
- package/dist/components/Box/Box.js +42 -2
- package/dist/components/Button/Button.css +29 -0
- package/dist/components/Button/Button.d.ts +4 -4
- package/dist/components/Button/Button.js +4 -1
- package/dist/components/Calendar/Calendar.css +245 -0
- package/dist/components/Calendar/Calendar.d.ts +125 -0
- package/dist/components/Calendar/Calendar.js +320 -0
- package/dist/components/Chips/Chips.css +38 -0
- package/dist/components/Chips/Chips.d.ts +5 -2
- package/dist/components/Chips/Chips.js +2 -1
- package/dist/components/Coachmark/Coachmark.css +118 -0
- package/dist/components/Coachmark/Coachmark.d.ts +75 -0
- package/dist/components/Coachmark/Coachmark.js +321 -0
- package/dist/components/CodeBlock/CodeBlock.css +96 -0
- package/dist/components/CodeBlock/CodeBlock.d.ts +47 -0
- package/dist/components/CodeBlock/CodeBlock.js +103 -0
- package/dist/components/ColorPicker/ColorPicker.css +133 -0
- package/dist/components/ColorPicker/ColorPicker.d.ts +73 -0
- package/dist/components/ColorPicker/ColorPicker.js +219 -0
- package/dist/components/Combobox/Combobox.css +8 -0
- package/dist/components/DataTable/DataTable.css +80 -0
- package/dist/components/DataTable/DataTable.d.ts +19 -4
- package/dist/components/DataTable/DataTable.js +59 -15
- package/dist/components/DatePicker/DatePicker.css +8 -0
- package/dist/components/DatePicker/DatePicker.js +10 -1
- package/dist/components/DescriptionList/DescriptionList.css +113 -0
- package/dist/components/DescriptionList/DescriptionList.d.ts +59 -0
- package/dist/components/DescriptionList/DescriptionList.js +51 -0
- package/dist/components/FileInput/FileInput.css +16 -0
- package/dist/components/FileInput/FileInput.d.ts +4 -2
- package/dist/components/FileInput/FileInput.js +8 -2
- package/dist/components/Grid/Grid.js +5 -5
- package/dist/components/IconPicker/IconPicker.css +107 -0
- package/dist/components/IconPicker/IconPicker.d.ts +74 -0
- package/dist/components/IconPicker/IconPicker.js +194 -0
- package/dist/components/Input/Input.css +38 -0
- package/dist/components/Input/Input.d.ts +10 -1
- package/dist/components/Input/Input.js +66 -5
- package/dist/components/Kanban/Kanban.css +4 -0
- package/dist/components/Kbd/Kbd.css +66 -0
- package/dist/components/Kbd/Kbd.d.ts +32 -0
- package/dist/components/Kbd/Kbd.js +40 -0
- package/dist/components/List/List.css +136 -0
- package/dist/components/List/List.d.ts +82 -0
- package/dist/components/List/List.js +53 -0
- package/dist/components/List/ListItem.d.ts +85 -0
- package/dist/components/List/ListItem.js +81 -0
- package/dist/components/Modal/Modal.css +80 -0
- package/dist/components/Modal/Modal.d.ts +33 -6
- package/dist/components/Modal/Modal.js +101 -6
- package/dist/components/MultiSelect/MultiSelect.css +8 -0
- package/dist/components/MultiSelect/MultiSelect.js +10 -1
- package/dist/components/OrgChart/OrgChart.css +149 -0
- package/dist/components/OrgChart/OrgChart.d.ts +83 -0
- package/dist/components/OrgChart/OrgChart.js +297 -0
- package/dist/components/OtpInput/OtpInput.css +93 -0
- package/dist/components/OtpInput/OtpInput.d.ts +60 -0
- package/dist/components/OtpInput/OtpInput.js +215 -0
- package/dist/components/PhoneInput/PhoneInput.css +8 -0
- package/dist/components/Popover/Popover.d.ts +7 -0
- package/dist/components/Popover/Popover.js +11 -1
- package/dist/components/RichTextEditor/RichTextEditor.css +203 -0
- package/dist/components/RichTextEditor/RichTextEditor.d.ts +83 -0
- package/dist/components/RichTextEditor/RichTextEditor.js +494 -0
- package/dist/components/SegmentedControl/SegmentedControl.js +7 -2
- package/dist/components/Select/Select.css +70 -0
- package/dist/components/Select/Select.d.ts +12 -0
- package/dist/components/Select/Select.js +59 -4
- package/dist/components/Stack/Stack.css +49 -0
- package/dist/components/Stack/Stack.d.ts +65 -7
- package/dist/components/Stack/Stack.js +30 -2
- package/dist/components/StatCard/StatCard.css +73 -0
- package/dist/components/StatCard/StatCard.d.ts +17 -0
- package/dist/components/StatCard/StatCard.js +4 -1
- package/dist/components/Tabs/Tab.d.ts +15 -0
- package/dist/components/Tabs/Tab.js +30 -1
- package/dist/components/Tabs/Tabs.css +132 -0
- package/dist/components/Tabs/Tabs.d.ts +7 -0
- package/dist/components/Tabs/Tabs.js +13 -2
- package/dist/components/Tag/Tag.css +85 -2
- package/dist/components/Tag/Tag.d.ts +13 -6
- package/dist/components/Tag/Tag.js +1 -0
- package/dist/components/Text/Text.js +2 -2
- package/dist/components/Textarea/Textarea.css +8 -0
- package/dist/components/TimePicker/TimePicker.css +8 -0
- package/dist/components/Tooltip/Tooltip.css +25 -0
- package/dist/components/Tooltip/Tooltip.d.ts +11 -0
- package/dist/components/Tooltip/Tooltip.js +18 -3
- package/dist/index.d.ts +25 -0
- package/dist/index.js +14 -0
- package/dist/teste/AILabel.test.d.ts +1 -0
- package/dist/teste/AILabel.test.js +33 -0
- package/dist/teste/AccordionConteudoLivre.test.d.ts +1 -0
- package/dist/teste/AccordionConteudoLivre.test.js +29 -0
- package/dist/teste/AtributosRepassados.test.d.ts +1 -0
- package/dist/teste/AtributosRepassados.test.js +52 -0
- package/dist/teste/AttachmentCardIA.test.d.ts +1 -0
- package/dist/teste/AttachmentCardIA.test.js +89 -0
- package/dist/teste/AvatarGroupOverlap.test.d.ts +1 -0
- package/dist/teste/AvatarGroupOverlap.test.js +56 -0
- package/dist/teste/BadgeTag.test.d.ts +1 -0
- package/dist/teste/BadgeTag.test.js +42 -0
- package/dist/teste/BoxItemFlex.test.d.ts +1 -0
- package/dist/teste/BoxItemFlex.test.js +54 -0
- package/dist/teste/BoxLayout.test.d.ts +1 -0
- package/dist/teste/BoxLayout.test.js +35 -0
- package/dist/teste/Button.test.d.ts +1 -0
- package/dist/teste/Button.test.js +27 -0
- package/dist/teste/Calendar.test.d.ts +1 -0
- package/dist/teste/Calendar.test.js +221 -0
- package/dist/teste/ChipsXs.test.d.ts +1 -0
- package/dist/teste/ChipsXs.test.js +31 -0
- package/dist/teste/Coachmark.test.d.ts +1 -0
- package/dist/teste/Coachmark.test.js +149 -0
- package/dist/teste/ColorPicker.test.d.ts +1 -0
- package/dist/teste/ColorPicker.test.js +132 -0
- package/dist/teste/DataTableCelulaLivre.test.d.ts +1 -0
- package/dist/teste/DataTableCelulaLivre.test.js +76 -0
- package/dist/teste/DataTableDocumento.test.d.ts +1 -0
- package/dist/teste/DataTableDocumento.test.js +92 -0
- package/dist/teste/DatePicker.test.js +23 -0
- package/dist/teste/FileInputTrigger.test.d.ts +1 -0
- package/dist/teste/FileInputTrigger.test.js +53 -0
- package/dist/teste/IconPicker.test.d.ts +1 -0
- package/dist/teste/IconPicker.test.js +130 -0
- package/dist/teste/InputMascaraEAfins.test.d.ts +1 -0
- package/dist/teste/InputMascaraEAfins.test.js +99 -0
- package/dist/teste/KbdCodeBlock.test.d.ts +1 -0
- package/dist/teste/KbdCodeBlock.test.js +95 -0
- package/dist/teste/List.test.d.ts +1 -0
- package/dist/teste/List.test.js +153 -0
- package/dist/teste/ModalVariantes.test.d.ts +1 -0
- package/dist/teste/ModalVariantes.test.js +151 -0
- package/dist/teste/NomeAcessivelSsr.test.d.ts +1 -0
- package/dist/teste/NomeAcessivelSsr.test.js +88 -0
- package/dist/teste/OrgChart.test.d.ts +1 -0
- package/dist/teste/OrgChart.test.js +162 -0
- package/dist/teste/OtpInput.test.d.ts +1 -0
- package/dist/teste/OtpInput.test.js +143 -0
- package/dist/teste/PopoverMaxHeight.test.d.ts +1 -0
- package/dist/teste/PopoverMaxHeight.test.js +38 -0
- package/dist/teste/RichTextEditor.test.d.ts +1 -0
- package/dist/teste/RichTextEditor.test.js +287 -0
- package/dist/teste/SelectPlacementFiltro.test.d.ts +1 -0
- package/dist/teste/SelectPlacementFiltro.test.js +88 -0
- package/dist/teste/Stack.test.d.ts +1 -0
- package/dist/teste/Stack.test.js +57 -0
- package/dist/teste/StatCardRotuloTopo.test.d.ts +1 -0
- package/dist/teste/StatCardRotuloTopo.test.js +34 -0
- package/dist/teste/TabsContadorFechavel.test.d.ts +1 -0
- package/dist/teste/TabsContadorFechavel.test.js +79 -0
- package/dist/teste/TooltipDark.test.d.ts +1 -0
- package/dist/teste/TooltipDark.test.js +31 -0
- package/dist/utils/calendario.d.ts +28 -0
- package/dist/utils/calendario.js +73 -0
- package/dist/utils/html-seguro.d.ts +27 -0
- package/dist/utils/html-seguro.js +97 -0
- package/dist/utils/paleta-de-cores.d.ts +26 -0
- package/dist/utils/paleta-de-cores.js +10 -0
- package/dist/utils/texto.d.ts +5 -0
- package/dist/utils/texto.js +5 -0
- package/package.json +3 -3
- package/src/index.ts +26 -0
- package/src/teste/AILabel.test.tsx +41 -0
- package/src/teste/AccordionConteudoLivre.test.tsx +39 -0
- package/src/teste/AtributosRepassados.test.tsx +73 -0
- package/src/teste/AttachmentCardIA.test.tsx +126 -0
- package/src/teste/AvatarGroupOverlap.test.tsx +74 -0
- package/src/teste/BadgeTag.test.tsx +64 -0
- package/src/teste/BoxItemFlex.test.tsx +81 -0
- package/src/teste/BoxLayout.test.tsx +50 -0
- package/src/teste/Button.test.tsx +39 -0
- package/src/teste/Calendar.test.tsx +282 -0
- package/src/teste/ChipsXs.test.tsx +41 -0
- package/src/teste/Coachmark.test.tsx +198 -0
- package/src/teste/ColorPicker.test.tsx +153 -0
- package/src/teste/DataTableCelulaLivre.test.tsx +103 -0
- package/src/teste/DataTableDocumento.test.tsx +102 -0
- package/src/teste/DatePicker.test.tsx +38 -0
- package/src/teste/FileInputTrigger.test.tsx +89 -0
- package/src/teste/IconPicker.test.tsx +145 -0
- package/src/teste/InputMascaraEAfins.test.tsx +124 -0
- package/src/teste/KbdCodeBlock.test.tsx +106 -0
- package/src/teste/List.test.tsx +269 -0
- package/src/teste/ModalVariantes.test.tsx +173 -0
- package/src/teste/NomeAcessivelSsr.test.tsx +110 -0
- package/src/teste/OrgChart.test.tsx +183 -0
- package/src/teste/OtpInput.test.tsx +163 -0
- package/src/teste/PopoverMaxHeight.test.tsx +47 -0
- package/src/teste/RichTextEditor.test.tsx +329 -0
- package/src/teste/SelectPlacementFiltro.test.tsx +110 -0
- package/src/teste/Stack.test.tsx +80 -0
- package/src/teste/StatCardRotuloTopo.test.tsx +44 -0
- package/src/teste/TabsContadorFechavel.test.tsx +144 -0
- package/src/teste/TooltipDark.test.tsx +51 -0
- package/src/utils/calendario.ts +78 -0
- package/src/utils/html-seguro.ts +94 -0
- package/src/utils/paleta-de-cores.ts +34 -0
- package/src/utils/texto.ts +5 -0
|
@@ -1,9 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
3
|
import './Box.css';
|
|
3
4
|
function Box(props) {
|
|
5
|
+
function elementTag() {
|
|
6
|
+
return props.as || "div";
|
|
7
|
+
}
|
|
8
|
+
function isFlex() {
|
|
9
|
+
return !!(props.direction ||
|
|
10
|
+
props.gap ||
|
|
11
|
+
props.align ||
|
|
12
|
+
props.justify ||
|
|
13
|
+
props.wrap);
|
|
14
|
+
}
|
|
4
15
|
function classes() {
|
|
5
16
|
return [
|
|
6
17
|
"umds-box",
|
|
18
|
+
isFlex() ? "umds-box--flex" : "",
|
|
19
|
+
isFlex() ? `umds-box--${props.direction || "vertical"}` : "",
|
|
20
|
+
props.gap ? `umds-box--gap-${props.gap}` : "",
|
|
21
|
+
props.align ? `umds-box--align-${props.align}` : "",
|
|
22
|
+
props.justify ? `umds-box--justify-${props.justify}` : "",
|
|
23
|
+
props.wrap ? "umds-box--wrap" : "",
|
|
7
24
|
props.padding ? `umds-box--p-${props.padding}` : "",
|
|
8
25
|
props.paddingX ? `umds-box--px-${props.paddingX}` : "",
|
|
9
26
|
props.paddingY ? `umds-box--py-${props.paddingY}` : "",
|
|
@@ -18,11 +35,34 @@ function Box(props) {
|
|
|
18
35
|
? `umds-box--shadow-${props.shadow}`
|
|
19
36
|
: "",
|
|
20
37
|
props.fullWidth ? "umds-box--full" : "",
|
|
38
|
+
props.fullHeight ? "umds-box--full-height" : "",
|
|
39
|
+
props.grow ? "umds-box--grow" : "",
|
|
40
|
+
props.shrink ? `umds-box--shrink-${props.shrink}` : "",
|
|
41
|
+
props.basis ? `umds-box--basis-${props.basis}` : "",
|
|
42
|
+
props.minWidth ? `umds-box--min-w-${props.minWidth}` : "",
|
|
43
|
+
props.overflow ? `umds-box--overflow-${props.overflow}` : "",
|
|
44
|
+
props.overflowX ? `umds-box--overflow-x-${props.overflowX}` : "",
|
|
45
|
+
props.overflowY ? `umds-box--overflow-y-${props.overflowY}` : "",
|
|
21
46
|
props.className,
|
|
22
47
|
]
|
|
23
48
|
.filter(Boolean)
|
|
24
49
|
.join(" ");
|
|
25
50
|
}
|
|
26
|
-
|
|
51
|
+
function htmlAttrs() {
|
|
52
|
+
const out = {};
|
|
53
|
+
for (const chave in props) {
|
|
54
|
+
if (chave.indexOf("data-") === 0 ||
|
|
55
|
+
chave.indexOf("aria-") === 0 ||
|
|
56
|
+
chave === "style" ||
|
|
57
|
+
chave === "class" ||
|
|
58
|
+
chave === "title" ||
|
|
59
|
+
chave === "role" ||
|
|
60
|
+
chave === "tabIndex") {
|
|
61
|
+
out[chave] = props[chave];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return out;
|
|
65
|
+
}
|
|
66
|
+
return (_jsxs(_Fragment, { children: [elementTag() === "div" ? (_jsx("div", { id: props.id, ...htmlAttrs(), className: classes(), children: _jsx(_Fragment, { children: props.children }) })) : null, elementTag() === "span" ? (_jsx("span", { id: props.id, ...htmlAttrs(), className: classes(), children: _jsx(_Fragment, { children: props.children }) })) : null, elementTag() === "ul" ? (_jsx("ul", { role: "list", id: props.id, ...htmlAttrs(), className: classes(), children: _jsx(_Fragment, { children: props.children }) })) : null, elementTag() === "ol" ? (_jsx("ol", { role: "list", id: props.id, ...htmlAttrs(), className: classes(), children: _jsx(_Fragment, { children: props.children }) })) : null, elementTag() === "li" ? (_jsx("li", { id: props.id, ...htmlAttrs(), className: classes(), children: _jsx(_Fragment, { children: props.children }) })) : null, elementTag() === "section" ? (_jsx("section", { id: props.id, ...htmlAttrs(), className: classes(), children: _jsx(_Fragment, { children: props.children }) })) : null, elementTag() === "nav" ? (_jsx("nav", { id: props.id, ...htmlAttrs(), className: classes(), children: _jsx(_Fragment, { children: props.children }) })) : null, elementTag() === "header" ? (_jsx("header", { id: props.id, ...htmlAttrs(), className: classes(), children: _jsx(_Fragment, { children: props.children }) })) : null, elementTag() === "footer" ? (_jsx("footer", { id: props.id, ...htmlAttrs(), className: classes(), children: _jsx(_Fragment, { children: props.children }) })) : null, elementTag() === "form" ? (_jsx("form", { id: props.id, onSubmit: (event) => props.onSubmit && props.onSubmit(event), ...htmlAttrs(), className: classes(), children: _jsx(_Fragment, { children: props.children }) })) : null] }));
|
|
27
67
|
}
|
|
28
68
|
export default Box;
|
|
@@ -38,6 +38,18 @@
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/* ── Tamanhos ── */
|
|
41
|
+
.umds-button--xs {
|
|
42
|
+
/* 26px: 24 + 2, os dois degraus do DS somados (sem token próprio; é a altura do botão dentro de card/linha) */
|
|
43
|
+
height: calc(var(--umds-primitive-spacing-xxs) + var(--umds-primitive-spacing-micro));
|
|
44
|
+
padding: 0 var(--umds-primitive-spacing-mini); /* 12px */
|
|
45
|
+
gap: var(--umds-primitive-spacing-quarck); /* 4px */
|
|
46
|
+
font-size: var(--umds-primitive-font-size-xxxs); /* 12px */
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.umds-button--xs .umds-icon {
|
|
50
|
+
font-size: var(--umds-primitive-font-size-xxxs); /* 12px */
|
|
51
|
+
}
|
|
52
|
+
|
|
41
53
|
.umds-button--sm {
|
|
42
54
|
height: var(--umds-primitive-spacing-xs); /* 32px */
|
|
43
55
|
padding: 0 var(--umds-primitive-spacing-nano); /* era 0 12px (protótipo --space-3) — snap 14/07: controle compacto → 8px (escala sm 8 / md 16 / lg 24) */
|
|
@@ -110,6 +122,22 @@
|
|
|
110
122
|
cursor: not-allowed;
|
|
111
123
|
}
|
|
112
124
|
|
|
125
|
+
/* ── Neutral text (sem borda, sem azul: barra de ações) ── */
|
|
126
|
+
.umds-button--neutral-text {
|
|
127
|
+
background-color: transparent;
|
|
128
|
+
border-color: transparent;
|
|
129
|
+
color: var(--umds-semantic-color-neutral-dark-down);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.umds-button--neutral-text:hover:not(:disabled) {
|
|
133
|
+
background-color: var(--umds-semantic-color-neutral-light-medium);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.umds-button--neutral-text:disabled {
|
|
137
|
+
color: var(--umds-semantic-color-neutral-dark-up);
|
|
138
|
+
cursor: not-allowed;
|
|
139
|
+
}
|
|
140
|
+
|
|
113
141
|
/* ── Text ── */
|
|
114
142
|
.umds-button--text {
|
|
115
143
|
background-color: transparent;
|
|
@@ -172,6 +200,7 @@
|
|
|
172
200
|
padding: 0;
|
|
173
201
|
}
|
|
174
202
|
|
|
203
|
+
.umds-button--icon.umds-button--xs { width: calc(var(--umds-primitive-spacing-xxs) + var(--umds-primitive-spacing-micro)); } /* 26px */
|
|
175
204
|
.umds-button--icon.umds-button--sm { width: var(--umds-primitive-spacing-xs); } /* 32px */
|
|
176
205
|
.umds-button--icon.umds-button--md { width: var(--umds-primitive-spacing-sm); } /* 40px */
|
|
177
206
|
.umds-button--icon.umds-button--lg { width: var(--umds-primitive-spacing-md); } /* 48px */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import './Button.css';
|
|
2
2
|
/**
|
|
3
3
|
* Button — botão de ação com variantes, tamanhos, ícones e estado de carregamento.
|
|
4
|
-
* @property {string} variant - Variante visual: 'primary' | 'secondary' | 'neutral' | 'text' | 'negative' | 'negative-outlined' | 'icon'
|
|
5
|
-
* @property {string} size - Tamanho do botão: 'sm' | 'md' | 'lg'
|
|
4
|
+
* @property {string} variant - Variante visual: 'primary' | 'secondary' | 'neutral' | 'neutral-text' | 'text' | 'negative' | 'negative-outlined' | 'icon'. `neutral` é o contornado cinza; `neutral-text` é o texto sem borda e sem azul, para barras de ações onde nenhum botão é a ação principal.
|
|
5
|
+
* @property {string} size - Tamanho do botão: 'xs' (26px, para dentro de card e linha de lista) | 'sm' (32px) | 'md' (40px) | 'lg' (48px)
|
|
6
6
|
* @property {boolean} disabled - Desabilita o botão
|
|
7
7
|
* @property {string} type - Tipo nativo do botão: 'button' | 'submit' | 'reset'
|
|
8
8
|
* @property {Function} onClick - Callback disparado no clique
|
|
@@ -25,8 +25,8 @@ import './Button.css';
|
|
|
25
25
|
* @quandoNaoUsar Para NAVEGAR para outra página ou recurso — use `Link`, que gera `<a>` e permite abrir em nova aba. A regra: se o usuário pode querer "abrir em nova aba", é `Link`.
|
|
26
26
|
*/
|
|
27
27
|
export interface ButtonProps {
|
|
28
|
-
variant?: "primary" | "secondary" | "neutral" | "text" | "negative" | "negative-outlined" | "icon";
|
|
29
|
-
size?: "sm" | "md" | "lg";
|
|
28
|
+
variant?: "primary" | "secondary" | "neutral" | "neutral-text" | "text" | "negative" | "negative-outlined" | "icon";
|
|
29
|
+
size?: "xs" | "sm" | "md" | "lg";
|
|
30
30
|
disabled?: boolean;
|
|
31
31
|
type?: "button" | "submit" | "reset";
|
|
32
32
|
children?: any;
|
|
@@ -15,6 +15,9 @@ function Button(props) {
|
|
|
15
15
|
.filter(Boolean)
|
|
16
16
|
.join(" ");
|
|
17
17
|
}
|
|
18
|
+
function iconSize() {
|
|
19
|
+
return props.size === "xs" ? "sm" : props.size;
|
|
20
|
+
}
|
|
18
21
|
function showStartIcon() {
|
|
19
22
|
const isLoading = props.loading;
|
|
20
23
|
const position = props.loadingPosition || "center";
|
|
@@ -68,6 +71,6 @@ function Button(props) {
|
|
|
68
71
|
props.onClick(event);
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
|
-
return (_jsxs("button", { type: props.type || "button", disabled: props.disabled, id: props.id, name: props.name, value: props.value, form: props.form, autoFocus: props.autoFocus, tabIndex: props.tabIndex, "aria-label": props.ariaLabel, "aria-busy": props.loading, onClick: (event) => handleClick(event), className: classes(), children: [showLoadingAtStart() ? (_jsx("span", { "aria-hidden": "true", className: "umds-button__loading", children: _jsx(Icon, { variant: "inherit", icon: props.loadingIcon || faRefresh, size:
|
|
74
|
+
return (_jsxs("button", { type: props.type || "button", disabled: props.disabled, id: props.id, name: props.name, value: props.value, form: props.form, autoFocus: props.autoFocus || undefined, tabIndex: props.tabIndex, "aria-label": props.ariaLabel, "aria-busy": props.loading, onClick: (event) => handleClick(event), className: classes(), children: [showLoadingAtStart() ? (_jsx("span", { "aria-hidden": "true", className: "umds-button__loading", children: _jsx(Icon, { variant: "inherit", icon: props.loadingIcon || faRefresh, size: iconSize() }) })) : null, showStartIcon() ? (_jsx(_Fragment, { children: startIconIsIcon() ? (_jsx(Icon, { variant: "inherit", icon: props.startIcon, size: iconSize() })) : (_jsx(_Fragment, { children: _jsx(_Fragment, { children: props.startIcon }) })) })) : null, showLoadingAtCenter() ? (_jsx("span", { "aria-hidden": "true", className: "umds-button__loading", children: _jsx(Icon, { variant: "inherit", icon: props.loadingIcon || faRefresh, size: iconSize() }) })) : null, showLoadingAtCenter() ? (_jsx("span", { className: "umds-button__visually-hidden", children: props.children })) : null, showChildren() ? _jsx(_Fragment, { children: props.children }) : null, showEndIcon() ? (_jsx(_Fragment, { children: endIconIsIcon() ? (_jsx(Icon, { variant: "inherit", icon: props.endIcon, size: iconSize() })) : (_jsx(_Fragment, { children: _jsx(_Fragment, { children: props.endIcon }) })) })) : null, showLoadingAtEnd() ? (_jsx("span", { "aria-hidden": "true", className: "umds-button__loading", children: _jsx(Icon, { variant: "inherit", icon: props.loadingIcon || faRefresh, size: iconSize() }) })) : null] }));
|
|
72
75
|
}
|
|
73
76
|
export default Button;
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/* ─────────────────────────────────────────────
|
|
2
|
+
CALENDAR
|
|
3
|
+
Agenda com eventos por dia: visão de mês e de semana.
|
|
4
|
+
|
|
5
|
+
O evento é um chip de fundo suave (a cor do dado a 16% sobre o branco) com
|
|
6
|
+
uma barra da cor do dado no lado esquerdo. O TEXTO é sempre escuro: a cor
|
|
7
|
+
nunca é o único sinal, e o contraste do texto não depende do tom escolhido.
|
|
8
|
+
|
|
9
|
+
Cores: semânticos · Medidas: primitivos
|
|
10
|
+
───────────────────────────────────────────── */
|
|
11
|
+
|
|
12
|
+
.umds-calendar {
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
width: 100%;
|
|
16
|
+
background: var(--umds-semantic-color-background-white);
|
|
17
|
+
border: var(--umds-primitive-border-width-hairline) solid var(--umds-semantic-color-neutral-light-medium);
|
|
18
|
+
border-radius: var(--umds-primitive-border-radius-sm);
|
|
19
|
+
font-family: var(--umds-semantic-font-family-base);
|
|
20
|
+
color: var(--umds-semantic-color-neutral-dark-pure);
|
|
21
|
+
overflow: hidden;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* ── Cabeçalho ── */
|
|
25
|
+
.umds-calendar__toolbar {
|
|
26
|
+
display: grid;
|
|
27
|
+
grid-template-columns: 1fr auto 1fr;
|
|
28
|
+
align-items: center;
|
|
29
|
+
gap: var(--umds-primitive-spacing-xxxs); /* 16px */
|
|
30
|
+
padding: var(--umds-primitive-spacing-mini) var(--umds-primitive-spacing-xxxs); /* 12px 16px */
|
|
31
|
+
border-bottom: var(--umds-primitive-border-width-hairline) solid var(--umds-semantic-color-neutral-light-medium);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.umds-calendar__toolbar-start,
|
|
35
|
+
.umds-calendar__toolbar-end {
|
|
36
|
+
display: flex;
|
|
37
|
+
align-items: center;
|
|
38
|
+
gap: var(--umds-primitive-spacing-nano); /* 8px */
|
|
39
|
+
min-width: 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.umds-calendar__toolbar-end {
|
|
43
|
+
justify-content: flex-end;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.umds-calendar__nav {
|
|
47
|
+
display: flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
gap: var(--umds-primitive-spacing-nano); /* 8px */
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.umds-calendar__title {
|
|
53
|
+
/* 152px (200 - 48): o título trocando de tamanho não faz os botões dançarem. */
|
|
54
|
+
min-width: calc(var(--umds-primitive-spacing-giant) - var(--umds-primitive-spacing-md));
|
|
55
|
+
text-align: center;
|
|
56
|
+
font-size: var(--umds-primitive-font-size-xs); /* 16px */
|
|
57
|
+
font-weight: var(--umds-primitive-font-weight-bold);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* ── Grade ── */
|
|
61
|
+
.umds-calendar__grid {
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.umds-calendar__weekdays,
|
|
67
|
+
.umds-calendar__week {
|
|
68
|
+
display: grid;
|
|
69
|
+
grid-template-columns: repeat(7, minmax(0, 1fr));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.umds-calendar__weekdays {
|
|
73
|
+
background: var(--umds-semantic-color-background-light);
|
|
74
|
+
border-bottom: var(--umds-primitive-border-width-hairline) solid var(--umds-semantic-color-neutral-light-medium);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.umds-calendar__weekday {
|
|
78
|
+
padding: var(--umds-primitive-spacing-nano); /* 8px */
|
|
79
|
+
text-align: center;
|
|
80
|
+
font-size: var(--umds-primitive-font-size-xxxs); /* 12px */
|
|
81
|
+
font-weight: var(--umds-primitive-font-weight-bold);
|
|
82
|
+
color: var(--umds-semantic-color-neutral-dark-down);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.umds-calendar__week + .umds-calendar__week .umds-calendar__cell {
|
|
86
|
+
border-top: var(--umds-primitive-border-width-hairline) solid var(--umds-semantic-color-neutral-light-medium);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.umds-calendar__cell {
|
|
90
|
+
display: flex;
|
|
91
|
+
flex-direction: column;
|
|
92
|
+
gap: var(--umds-primitive-spacing-quarck); /* 4px */
|
|
93
|
+
box-sizing: border-box;
|
|
94
|
+
min-width: 0;
|
|
95
|
+
min-height: var(--umds-primitive-spacing-xxl); /* 80px */
|
|
96
|
+
padding: var(--umds-primitive-spacing-nano); /* 8px */
|
|
97
|
+
border-left: var(--umds-primitive-border-width-hairline) solid var(--umds-semantic-color-neutral-light-medium);
|
|
98
|
+
background: var(--umds-semantic-color-background-white);
|
|
99
|
+
cursor: default;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.umds-calendar__cell:first-child {
|
|
103
|
+
border-left: none;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.umds-calendar--week .umds-calendar__cell {
|
|
107
|
+
min-height: var(--umds-primitive-spacing-giant); /* 200px */
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.umds-calendar__cell--outside {
|
|
111
|
+
background: var(--umds-semantic-color-background-light);
|
|
112
|
+
color: var(--umds-semantic-color-neutral-dark-down);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.umds-calendar__cell--today {
|
|
116
|
+
background: var(--umds-semantic-color-primary-light);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.umds-calendar__cell--selected {
|
|
120
|
+
box-shadow: inset 0 0 0 var(--umds-primitive-border-width-thin) var(--umds-semantic-color-primary-pure);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.umds-calendar__cell:focus-visible {
|
|
124
|
+
outline: var(--umds-primitive-border-width-thin) solid var(--umds-semantic-color-primary-pure);
|
|
125
|
+
outline-offset: calc(var(--umds-primitive-border-width-thin) * -1);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.umds-calendar__day-number {
|
|
129
|
+
align-self: flex-start;
|
|
130
|
+
display: inline-flex;
|
|
131
|
+
align-items: center;
|
|
132
|
+
justify-content: center;
|
|
133
|
+
min-width: var(--umds-primitive-spacing-xxs); /* 24px */
|
|
134
|
+
height: var(--umds-primitive-spacing-xxs);
|
|
135
|
+
font-size: var(--umds-primitive-font-size-xxs); /* 14px */
|
|
136
|
+
border-radius: var(--umds-primitive-border-radius-circular);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* Hoje: o número num círculo cheio. Texto claro sobre o primário. */
|
|
140
|
+
.umds-calendar__cell--today .umds-calendar__day-number {
|
|
141
|
+
background: var(--umds-semantic-color-primary-pure);
|
|
142
|
+
color: var(--umds-semantic-color-background-white);
|
|
143
|
+
font-weight: var(--umds-primitive-font-weight-bold);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* ── Eventos ── */
|
|
147
|
+
.umds-calendar__events {
|
|
148
|
+
display: flex;
|
|
149
|
+
flex-direction: column;
|
|
150
|
+
gap: var(--umds-primitive-spacing-quarck); /* 4px */
|
|
151
|
+
min-width: 0;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.umds-calendar__event {
|
|
155
|
+
display: flex;
|
|
156
|
+
align-items: baseline;
|
|
157
|
+
gap: var(--umds-primitive-spacing-quarck); /* 4px */
|
|
158
|
+
box-sizing: border-box;
|
|
159
|
+
width: 100%;
|
|
160
|
+
min-width: 0;
|
|
161
|
+
margin: 0;
|
|
162
|
+
padding: var(--umds-primitive-spacing-micro) var(--umds-primitive-spacing-nano); /* 2px 8px */
|
|
163
|
+
border: none;
|
|
164
|
+
/* A cor do dado vem do `style` (barra e fundo suave); o texto é sempre escuro. */
|
|
165
|
+
border-left: var(--umds-primitive-border-width-thin) solid transparent;
|
|
166
|
+
border-radius: var(--umds-primitive-border-radius-xs);
|
|
167
|
+
font: inherit;
|
|
168
|
+
font-size: var(--umds-primitive-font-size-xxxs); /* 12px */
|
|
169
|
+
color: var(--umds-semantic-color-neutral-dark-pure);
|
|
170
|
+
text-align: left;
|
|
171
|
+
cursor: pointer;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.umds-calendar__event:hover {
|
|
175
|
+
filter: brightness(0.96);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.umds-calendar__event:focus-visible,
|
|
179
|
+
.umds-calendar__more:focus-visible {
|
|
180
|
+
outline: var(--umds-primitive-border-width-thin) solid var(--umds-semantic-color-primary-pure);
|
|
181
|
+
outline-offset: var(--umds-primitive-border-width-thin);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.umds-calendar__event-time {
|
|
185
|
+
flex: none;
|
|
186
|
+
font-weight: var(--umds-primitive-font-weight-semibold);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.umds-calendar__event-title {
|
|
190
|
+
min-width: 0;
|
|
191
|
+
overflow: hidden;
|
|
192
|
+
text-overflow: ellipsis;
|
|
193
|
+
white-space: nowrap;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.umds-calendar--week .umds-calendar__event-title {
|
|
197
|
+
white-space: normal;
|
|
198
|
+
overflow-wrap: anywhere;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.umds-calendar__more {
|
|
202
|
+
align-self: flex-start;
|
|
203
|
+
margin: 0;
|
|
204
|
+
padding: var(--umds-primitive-spacing-micro) var(--umds-primitive-spacing-quarck); /* 2px 4px */
|
|
205
|
+
border: none;
|
|
206
|
+
border-radius: var(--umds-primitive-border-radius-xs);
|
|
207
|
+
background: transparent;
|
|
208
|
+
font: inherit;
|
|
209
|
+
font-size: var(--umds-primitive-font-size-xxxs); /* 12px */
|
|
210
|
+
font-weight: var(--umds-primitive-font-weight-semibold);
|
|
211
|
+
color: var(--umds-semantic-color-primary-dark);
|
|
212
|
+
cursor: pointer;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.umds-calendar__more:hover {
|
|
216
|
+
text-decoration: underline;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* Telas estreitas: o cabeçalho empilha e a célula perde folga. */
|
|
220
|
+
@media (max-width: 640px) {
|
|
221
|
+
.umds-calendar__toolbar {
|
|
222
|
+
grid-template-columns: 1fr;
|
|
223
|
+
justify-items: center;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.umds-calendar__toolbar-start,
|
|
227
|
+
.umds-calendar__toolbar-end {
|
|
228
|
+
justify-content: center;
|
|
229
|
+
flex-wrap: wrap;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.umds-calendar__cell {
|
|
233
|
+
padding: var(--umds-primitive-spacing-quarck); /* 4px */
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
@media (forced-colors: active) {
|
|
238
|
+
.umds-calendar__event {
|
|
239
|
+
border: var(--umds-primitive-border-width-hairline) solid CanvasText;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.umds-calendar__cell--today .umds-calendar__day-number {
|
|
243
|
+
outline: var(--umds-primitive-border-width-thin) solid Highlight;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import './Calendar.css';
|
|
2
|
+
/**
|
|
3
|
+
* Evento do Calendar.
|
|
4
|
+
* @property {string} id - Identidade do evento (opcional)
|
|
5
|
+
* @property {string} date - Dia do evento: `YYYY-MM-DD` (ou um `Date`)
|
|
6
|
+
* @property {string} title - Texto do evento
|
|
7
|
+
* @property {string} color - Cor de DADO do evento: nome de um token (`--umds-primitive-blue-pure`) ou uma cor. Padrão: o primário. A cor vai no fundo suave e na barra do lado; o texto é sempre escuro (a cor nunca fica sozinha).
|
|
8
|
+
* @property {string} time - Horário, mostrado antes do título (ex.: "09:00")
|
|
9
|
+
*/
|
|
10
|
+
export interface CalendarEvent {
|
|
11
|
+
id?: string;
|
|
12
|
+
date: any;
|
|
13
|
+
title: string;
|
|
14
|
+
color?: string;
|
|
15
|
+
time?: string;
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
}
|
|
18
|
+
/** Um dia da grade, já pronto para desenhar. */
|
|
19
|
+
/** Um dia da grade, já pronto para desenhar. */
|
|
20
|
+
export interface CalendarDayCell {
|
|
21
|
+
iso: string;
|
|
22
|
+
day: number;
|
|
23
|
+
outside: boolean;
|
|
24
|
+
today: boolean;
|
|
25
|
+
selected: boolean;
|
|
26
|
+
tabIndex: number;
|
|
27
|
+
label: string;
|
|
28
|
+
classes: string;
|
|
29
|
+
visible: CalendarEvent[];
|
|
30
|
+
hidden: number;
|
|
31
|
+
moreText: string;
|
|
32
|
+
moreAria: string;
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Calendar — agenda com eventos por dia, em visão de mês ou de semana.
|
|
37
|
+
*
|
|
38
|
+
* `events` é uma lista plana (`{ date, title, color? }`): o componente agrupa
|
|
39
|
+
* por dia. A cor é cor de DADO (um token, como o do `ColorPicker`), aplicada num
|
|
40
|
+
* fundo suave com uma barra do lado; o texto do evento é sempre escuro, então a
|
|
41
|
+
* cor nunca é a única informação.
|
|
42
|
+
*
|
|
43
|
+
* Mês: cada dia mostra até `maxVisible` eventos e um "+N" para o resto
|
|
44
|
+
* (`onMoreClick` recebe o dia e os eventos escondidos). O corte é por QUANTIDADE,
|
|
45
|
+
* não por altura. Semana: sete colunas, todos os eventos de cada dia.
|
|
46
|
+
*
|
|
47
|
+
* É uma grade acessível (`role="grid"`): um Tab entra no dia em foco (hoje, ou o
|
|
48
|
+
* primeiro), as setas movem de dia (mudando de mês ou de semana se for preciso),
|
|
49
|
+
* Home e End vão às pontas da semana, PageUp e PageDown trocam de mês (ou de
|
|
50
|
+
* semana), Enter e Espaço acionam `onDayClick`. Os eventos do dia em foco entram
|
|
51
|
+
* na ordem de Tab depois dele.
|
|
52
|
+
*
|
|
53
|
+
* A data mostrada (`date`) e a visão (`view`) são controláveis (`onDateChange`,
|
|
54
|
+
* `onViewChange`) ou internas (`defaultDate`, `defaultView`). O cabeçalho aceita
|
|
55
|
+
* o slot `headerStart` (um filtro de escopo, à esquerda) e `headerEnd` (a
|
|
56
|
+
* legenda, à direita). Nomes de mês e de dia saem do `Intl` no `locale` pedido;
|
|
57
|
+
* os demais textos são props.
|
|
58
|
+
* @property {CalendarEvent[]} events - Eventos (lista plana)
|
|
59
|
+
* @property {string} view - Visão: 'month' | 'week' (controlada)
|
|
60
|
+
* @property {string} defaultView - Visão inicial (não controlada; padrão 'month')
|
|
61
|
+
* @property {string} date - Data de referência `YYYY-MM-DD`: o mês ou a semana que ela contém é o que se vê (controlada)
|
|
62
|
+
* @property {string} defaultDate - Data inicial (não controlada; padrão hoje)
|
|
63
|
+
* @property {string} selectedDate - Dia marcado como selecionado (`YYYY-MM-DD`)
|
|
64
|
+
* @property {string} today - O "hoje" do calendário (`YYYY-MM-DD`; padrão a data do sistema). Útil em testes e em demonstração.
|
|
65
|
+
* @property {number} weekStartsOn - Primeiro dia da semana: 0 domingo (padrão) | 1 segunda
|
|
66
|
+
* @property {number} maxVisible - Eventos por dia na visão de mês antes do "+N" (padrão 3)
|
|
67
|
+
* @property {string} locale - Idioma dos nomes de mês e de dia (padrão 'pt-BR')
|
|
68
|
+
* @property {string} ariaLabel - Nome acessível da grade (padrão: o título, ex.: "Maio 2026")
|
|
69
|
+
* @property {string} previousLabel - Nome do botão de voltar (padrão "Anterior")
|
|
70
|
+
* @property {string} nextLabel - Nome do botão de avançar (padrão "Próximo")
|
|
71
|
+
* @property {string} todayLabel - Texto do botão de hoje (padrão "Hoje")
|
|
72
|
+
* @property {string} monthLabel - Texto da visão de mês (padrão "Mês")
|
|
73
|
+
* @property {string} weekLabel - Texto da visão de semana (padrão "Semana")
|
|
74
|
+
* @property {string} viewLabel - Nome do seletor de visão (padrão "Visão")
|
|
75
|
+
* @property {boolean} hideViewSwitcher - Esconde o seletor Mês/Semana
|
|
76
|
+
* @property {string} moreLabel - Texto do "+N"; `{count}` vira o número (padrão "+{count}")
|
|
77
|
+
* @property {string} moreAriaLabel - Nome do "+N"; `{count}` e `{date}` são trocados (padrão "{count} eventos a mais em {date}")
|
|
78
|
+
* @property {function} dayLabel - Nome acessível de cada dia: `(iso, quantidade) => texto` (padrão: "sexta-feira, 15 de maio de 2026, 2 eventos", no `locale`)
|
|
79
|
+
* @property {function} onDayClick - Clique (ou Enter) num dia: recebe `YYYY-MM-DD`
|
|
80
|
+
* @property {function} onEventClick - Clique num evento: recebe o evento
|
|
81
|
+
* @property {function} onMoreClick - Clique no "+N": recebe o dia e a lista dos eventos escondidos
|
|
82
|
+
* @property {function} onDateChange - Mudou a data de referência (navegação): recebe `YYYY-MM-DD`
|
|
83
|
+
* @property {function} onViewChange - Mudou a visão: recebe 'month' | 'week'
|
|
84
|
+
* @property {string} className - Classes CSS adicionais
|
|
85
|
+
* @slot headerStart - Cabeçalho, à esquerda: um filtro de escopo.
|
|
86
|
+
* @slot headerEnd - Cabeçalho, antes do seletor de visão: a legenda.
|
|
87
|
+
* @quandoUsar Mostrar prazos, vencimentos e compromissos distribuídos no tempo: agenda de documentos, de tarefas, de assinaturas.
|
|
88
|
+
* @quandoNaoUsar Para escolher UMA data num campo, use `DatePicker`. Para uma sequência de acontecimentos sem grade de dias, use `Timeline`. Para uma grade de horas (agenda com horário de início e fim), este componente não serve: não tem eixo de horas.
|
|
89
|
+
*/
|
|
90
|
+
/** Um dia da grade, já pronto para desenhar. */
|
|
91
|
+
export interface CalendarProps {
|
|
92
|
+
events?: CalendarEvent[];
|
|
93
|
+
view?: "month" | "week";
|
|
94
|
+
defaultView?: "month" | "week";
|
|
95
|
+
date?: string;
|
|
96
|
+
defaultDate?: string;
|
|
97
|
+
selectedDate?: string;
|
|
98
|
+
today?: string;
|
|
99
|
+
weekStartsOn?: 0 | 1;
|
|
100
|
+
maxVisible?: number;
|
|
101
|
+
locale?: string;
|
|
102
|
+
ariaLabel?: string;
|
|
103
|
+
previousLabel?: string;
|
|
104
|
+
nextLabel?: string;
|
|
105
|
+
todayLabel?: string;
|
|
106
|
+
monthLabel?: string;
|
|
107
|
+
weekLabel?: string;
|
|
108
|
+
viewLabel?: string;
|
|
109
|
+
hideViewSwitcher?: boolean;
|
|
110
|
+
moreLabel?: string;
|
|
111
|
+
moreAriaLabel?: string;
|
|
112
|
+
dayLabel?: (iso: string, count: number) => string;
|
|
113
|
+
className?: string;
|
|
114
|
+
/** Slot `headerStart`: à esquerda do cabeçalho. */
|
|
115
|
+
headerStart?: any;
|
|
116
|
+
/** Slot `headerEnd`: à direita, antes do seletor de visão. */
|
|
117
|
+
headerEnd?: any;
|
|
118
|
+
onDayClick?: (iso: string) => void;
|
|
119
|
+
onEventClick?: (event: CalendarEvent) => void;
|
|
120
|
+
onMoreClick?: (iso: string, hidden: CalendarEvent[]) => void;
|
|
121
|
+
onDateChange?: (iso: string) => void;
|
|
122
|
+
onViewChange?: (view: "month" | "week") => void;
|
|
123
|
+
}
|
|
124
|
+
declare function Calendar(props: CalendarProps): import("react/jsx-runtime").JSX.Element;
|
|
125
|
+
export default Calendar;
|