@sbkbs/ui 1.0.5 → 2.0.0-beta.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 +57 -0
- package/MIGRATION.md +96 -0
- package/README.md +221 -115
- package/dist/assets/favicon/apple-touch-icon.png +0 -0
- package/dist/assets/favicon/favicon-96x96.png +0 -0
- package/dist/assets/favicon/favicon.ico +0 -0
- package/dist/assets/favicon/favicon.svg +1 -0
- package/dist/assets/favicon/site.webmanifest +21 -0
- package/dist/assets/favicon/web-app-manifest-192x192.png +0 -0
- package/dist/assets/favicon/web-app-manifest-512x512.png +0 -0
- package/dist/base.css +38 -0
- package/dist/components/Accordion/Accordion.d.ts +13 -1
- package/dist/components/Accordion/Accordion.js +100 -52
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Alert/Alert.d.ts +17 -4
- package/dist/components/Alert/Alert.js +64 -20
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts +17 -0
- package/dist/components/Avatar/Avatar.js +66 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Badge/Badge.d.ts +11 -2
- package/dist/components/Badge/Badge.js +42 -30
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +5 -2
- package/dist/components/Breadcrumb/Breadcrumb.js +23 -16
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/Button/Button.d.ts +10 -8
- package/dist/components/Button/Button.js +73 -114
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Card/Card.d.ts +33 -3
- package/dist/components/Card/Card.js +91 -30
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +4 -1
- package/dist/components/Checkbox/Checkbox.js +32 -31
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Chip/Chip.d.ts +7 -1
- package/dist/components/Chip/Chip.js +19 -9
- package/dist/components/Chip/Chip.js.map +1 -1
- package/dist/components/Combobox/Combobox.d.ts +10 -2
- package/dist/components/Combobox/Combobox.js +146 -133
- package/dist/components/Combobox/Combobox.js.map +1 -1
- package/dist/components/Divider/Divider.d.ts +7 -1
- package/dist/components/Divider/Divider.js +28 -12
- package/dist/components/Divider/Divider.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +33 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +147 -0
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/dist/components/EmptyState/EmptyState.d.ts +7 -1
- package/dist/components/EmptyState/EmptyState.js +28 -19
- package/dist/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/components/Field/Field.d.ts +21 -0
- package/dist/components/Field/Field.js +35 -0
- package/dist/components/Field/Field.js.map +1 -0
- package/dist/components/FileUpload/FileUpload.d.ts +9 -2
- package/dist/components/FileUpload/FileUpload.js +128 -102
- package/dist/components/FileUpload/FileUpload.js.map +1 -1
- package/dist/components/Footer/Footer.d.ts +19 -6
- package/dist/components/Footer/Footer.js +47 -50
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/GlassPanel/GlassPanel.d.ts +18 -0
- package/dist/components/GlassPanel/GlassPanel.js +39 -0
- package/dist/components/GlassPanel/GlassPanel.js.map +1 -0
- package/dist/components/Header/Header.d.ts +27 -10
- package/dist/components/Header/Header.js +98 -98
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/Highlight/Highlight.d.ts +13 -0
- package/dist/components/Highlight/Highlight.js +18 -0
- package/dist/components/Highlight/Highlight.js.map +1 -0
- package/dist/components/Icon/Icon.d.ts +21 -0
- package/dist/components/Icon/Icon.js +31 -0
- package/dist/components/Icon/Icon.js.map +1 -0
- package/dist/components/IconButton/IconButton.d.ts +12 -0
- package/dist/components/IconButton/IconButton.js +49 -0
- package/dist/components/IconButton/IconButton.js.map +1 -0
- package/dist/components/Input/Input.d.ts +3 -2
- package/dist/components/Input/Input.js +51 -69
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/Layout/Layout.d.ts +2 -0
- package/dist/components/Layout/Layout.js +24 -18
- package/dist/components/Layout/Layout.js.map +1 -1
- package/dist/components/Logo/Logo.d.ts +27 -0
- package/dist/components/Logo/Logo.js +107 -0
- package/dist/components/Logo/Logo.js.map +1 -0
- package/dist/components/MiniCard/MiniCard.d.ts +21 -0
- package/dist/components/MiniCard/MiniCard.js +90 -0
- package/dist/components/MiniCard/MiniCard.js.map +1 -0
- package/dist/components/Modal/Modal.d.ts +16 -3
- package/dist/components/Modal/Modal.js +124 -93
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Navigation/Navigation.d.ts +1 -0
- package/dist/components/Navigation/Navigation.js +14 -14
- package/dist/components/Navigation/Navigation.js.map +1 -1
- package/dist/components/NumberInput/NumberInput.d.ts +5 -2
- package/dist/components/NumberInput/NumberInput.js +98 -128
- package/dist/components/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/PageHeader/PageHeader.d.ts +8 -1
- package/dist/components/PageHeader/PageHeader.js +26 -25
- package/dist/components/PageHeader/PageHeader.js.map +1 -1
- package/dist/components/Pagination/Pagination.d.ts +15 -2
- package/dist/components/Pagination/Pagination.js +68 -34
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Paragraph/Paragraph.d.ts +8 -2
- package/dist/components/Paragraph/Paragraph.js +39 -36
- package/dist/components/Paragraph/Paragraph.js.map +1 -1
- package/dist/components/Popover/Popover.d.ts +12 -1
- package/dist/components/Popover/Popover.js +49 -37
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/ProgressBar/ProgressBar.d.ts +18 -0
- package/dist/components/ProgressBar/ProgressBar.js +71 -0
- package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
- package/dist/components/Radio/Radio.d.ts +2 -1
- package/dist/components/Radio/Radio.js +27 -31
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.d.ts +6 -1
- package/dist/components/SectionHeader/SectionHeader.js +14 -12
- package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
- package/dist/components/Select/Select.d.ts +6 -2
- package/dist/components/Select/Select.js +47 -35
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/SideNav/SideNav.d.ts +55 -0
- package/dist/components/SideNav/SideNav.js +141 -0
- package/dist/components/SideNav/SideNav.js.map +1 -0
- package/dist/components/Skeleton/Skeleton.d.ts +12 -1
- package/dist/components/Skeleton/Skeleton.js +33 -18
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Spinner/Spinner.d.ts +15 -0
- package/dist/components/Spinner/Spinner.js +57 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Stepper/Stepper.d.ts +1 -1
- package/dist/components/Stepper/Stepper.js +68 -55
- package/dist/components/Stepper/Stepper.js.map +1 -1
- package/dist/components/Subtitle/Subtitle.d.ts +9 -3
- package/dist/components/Subtitle/Subtitle.js +29 -35
- package/dist/components/Subtitle/Subtitle.js.map +1 -1
- package/dist/components/Switch/Switch.d.ts +2 -1
- package/dist/components/Switch/Switch.js +45 -33
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Table/Table.d.ts +19 -1
- package/dist/components/Table/Table.js +48 -11
- package/dist/components/Table/Table.js.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts +16 -2
- package/dist/components/Tabs/Tabs.js +80 -44
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tag/Tag.d.ts +8 -1
- package/dist/components/Tag/Tag.js +27 -12
- package/dist/components/Tag/Tag.js.map +1 -1
- package/dist/components/Textarea/Textarea.d.ts +3 -1
- package/dist/components/Textarea/Textarea.js +36 -40
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Title/Title.d.ts +9 -3
- package/dist/components/Title/Title.js +42 -42
- package/dist/components/Title/Title.js.map +1 -1
- package/dist/components/Toast/Toast.d.ts +39 -11
- package/dist/components/Toast/Toast.js +130 -76
- package/dist/components/Toast/Toast.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +12 -2
- package/dist/components/Tooltip/Tooltip.js +50 -32
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Typography/weight.d.ts +9 -0
- package/dist/components/Typography/weight.js +5 -0
- package/dist/components/Typography/weight.js.map +1 -0
- package/dist/fonts.css +8 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +55 -43
- package/dist/index.js +118 -83
- package/dist/index.js.map +1 -1
- package/dist/reset.css +9 -0
- package/dist/styles.css +1 -0
- package/dist/tailwind.css +153 -0
- package/dist/theme/ThemeProvider.d.ts +21 -3
- package/dist/theme/ThemeProvider.js +57 -18
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/tokens.d.ts +43 -0
- package/dist/theme/tokens.js +39 -0
- package/dist/theme/tokens.js.map +1 -0
- package/dist/theme.css +296 -261
- package/dist/tokens.css +327 -0
- package/dist/utils/cn.d.ts +2 -2
- package/dist/utils/cn.js +19 -4
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/styles.d.ts +37 -0
- package/dist/utils/styles.js +35 -0
- package/dist/utils/styles.js.map +1 -0
- package/package.json +140 -114
- package/dist/components/Accordion/Accordion.stories.d.ts +0 -7
- package/dist/components/Alert/Alert.stories.d.ts +0 -8
- package/dist/components/Badge/Badge.stories.d.ts +0 -8
- package/dist/components/Breadcrumb/Breadcrumb.stories.d.ts +0 -8
- package/dist/components/Button/Button.stories.d.ts +0 -7
- package/dist/components/Card/Card.stories.d.ts +0 -8
- package/dist/components/Checkbox/Checkbox.stories.d.ts +0 -7
- package/dist/components/Combobox/Combobox.stories.d.ts +0 -9
- package/dist/components/Feedback/Feedback.stories.d.ts +0 -5
- package/dist/components/FileUpload/FileUpload.stories.d.ts +0 -10
- package/dist/components/Input/Input.stories.d.ts +0 -9
- package/dist/components/Modal/Modal.stories.d.ts +0 -8
- package/dist/components/NumberInput/NumberInput.stories.d.ts +0 -8
- package/dist/components/Pagination/Pagination.stories.d.ts +0 -8
- package/dist/components/Radio/Radio.stories.d.ts +0 -7
- package/dist/components/Select/Select.stories.d.ts +0 -8
- package/dist/components/Stepper/Stepper.stories.d.ts +0 -8
- package/dist/components/Switch/Switch.stories.d.ts +0 -8
- package/dist/components/Tabs/Tabs.stories.d.ts +0 -8
- package/dist/components/Textarea/Textarea.stories.d.ts +0 -7
- package/dist/components/Toast/Toast.stories.d.ts +0 -8
- package/dist/oficios-ui.css +0 -1
- package/dist/oficios-ui.umd.cjs +0 -2
- package/dist/oficios-ui.umd.cjs.map +0 -1
package/dist/tokens.css
ADDED
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
@sbkbs/ui · Design tokens (Brand Book SBK 2026)
|
|
3
|
+
Fonte de verdade: docs/SBK_BRAND_GUIDE.md
|
|
4
|
+
|
|
5
|
+
Camadas:
|
|
6
|
+
1. Paleta oficial --sbk-<nome> (valores literais do brand book)
|
|
7
|
+
2. Semânticos --sbk-color-<uso> (o que os componentes consomem)
|
|
8
|
+
3. Escalas --sbk-radius-*, --sbk-shadow-*, --sbk-font-*, --sbk-duration-*
|
|
9
|
+
4. Aliases legados --md-*, --brand-*, --bg-*, --text-* (deprecados, removidos na 3.0)
|
|
10
|
+
|
|
11
|
+
Temas:
|
|
12
|
+
- Padrão: SBK IA (produto digital)
|
|
13
|
+
- [data-brand='sbk']: SBK institucional (marca-mãe)
|
|
14
|
+
- [data-theme='dark']: modo escuro (proposta, a validar com marca)
|
|
15
|
+
============================================================ */
|
|
16
|
+
|
|
17
|
+
/* ---------- 1. Paleta oficial ---------- */
|
|
18
|
+
:root {
|
|
19
|
+
/* Primária */
|
|
20
|
+
--sbk-verde-escuro: #023631;
|
|
21
|
+
--sbk-ciano-escuro: #075056;
|
|
22
|
+
--sbk-off-white: #eceff3;
|
|
23
|
+
|
|
24
|
+
/* Secundária */
|
|
25
|
+
--sbk-verde-claro: #0a5a52;
|
|
26
|
+
--sbk-verde-profundo: #012824;
|
|
27
|
+
--sbk-ciano: #2a7c79;
|
|
28
|
+
--sbk-ciano-profundo: #0e4442;
|
|
29
|
+
--sbk-chumbo-leve: #4a545e;
|
|
30
|
+
--sbk-preto: #000000;
|
|
31
|
+
--sbk-branco: #ffffff;
|
|
32
|
+
|
|
33
|
+
/* Estados: fora do brand book, PROPOSTA pendente de aprovação da marca.
|
|
34
|
+
Tons sóbrios, todos com contraste AA (>= 4.5:1) sobre branco. */
|
|
35
|
+
--sbk-estado-sucesso: #1d6b43;
|
|
36
|
+
--sbk-estado-alerta: #b45309;
|
|
37
|
+
--sbk-estado-erro: #b42318;
|
|
38
|
+
--sbk-estado-info: var(--sbk-ciano-escuro);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* ---------- 2 e 3. Semânticos e escalas (tema SBK IA, claro) ---------- */
|
|
42
|
+
:root {
|
|
43
|
+
/* Fundos e superfícies */
|
|
44
|
+
--sbk-color-bg: var(--sbk-off-white);
|
|
45
|
+
--sbk-color-surface: var(--sbk-branco);
|
|
46
|
+
--sbk-color-surface-sunken: var(--sbk-off-white);
|
|
47
|
+
--sbk-color-surface-hover: color-mix(in srgb, var(--sbk-verde-escuro) 5%, var(--sbk-branco));
|
|
48
|
+
--sbk-color-surface-inverse: var(--sbk-verde-escuro);
|
|
49
|
+
--sbk-color-overlay: color-mix(in srgb, var(--sbk-verde-profundo) 60%, transparent);
|
|
50
|
+
|
|
51
|
+
/* Texto */
|
|
52
|
+
--sbk-color-fg: var(--sbk-preto);
|
|
53
|
+
--sbk-color-fg-heading: var(--sbk-verde-escuro);
|
|
54
|
+
--sbk-color-fg-muted: var(--sbk-chumbo-leve);
|
|
55
|
+
--sbk-color-fg-inverse: var(--sbk-branco);
|
|
56
|
+
|
|
57
|
+
/* Linhas: derivadas da paleta. line-strong tem >= 3:1 sobre branco (WCAG 1.4.11) */
|
|
58
|
+
--sbk-color-line: color-mix(in srgb, var(--sbk-chumbo-leve) 22%, var(--sbk-branco));
|
|
59
|
+
--sbk-color-line-strong: color-mix(in srgb, var(--sbk-chumbo-leve) 65%, var(--sbk-branco));
|
|
60
|
+
|
|
61
|
+
/* Marca */
|
|
62
|
+
--sbk-color-primary: var(--sbk-verde-claro);
|
|
63
|
+
--sbk-color-primary-hover: var(--sbk-verde-escuro);
|
|
64
|
+
--sbk-color-on-primary: var(--sbk-branco);
|
|
65
|
+
--sbk-color-primary-subtle: color-mix(in srgb, var(--sbk-verde-claro) 10%, var(--sbk-branco));
|
|
66
|
+
--sbk-color-secondary: var(--sbk-ciano-escuro);
|
|
67
|
+
--sbk-color-secondary-hover: var(--sbk-ciano-profundo);
|
|
68
|
+
--sbk-color-on-secondary: var(--sbk-branco);
|
|
69
|
+
--sbk-color-accent: var(--sbk-ciano);
|
|
70
|
+
--sbk-color-highlight-bg: var(--sbk-ciano-escuro);
|
|
71
|
+
--sbk-color-highlight-fg: var(--sbk-branco);
|
|
72
|
+
--sbk-color-focus: var(--sbk-ciano);
|
|
73
|
+
|
|
74
|
+
/* Estados */
|
|
75
|
+
--sbk-color-success: var(--sbk-estado-sucesso);
|
|
76
|
+
--sbk-color-success-subtle: color-mix(in srgb, var(--sbk-estado-sucesso) 10%, var(--sbk-branco));
|
|
77
|
+
--sbk-color-warning: var(--sbk-estado-alerta);
|
|
78
|
+
--sbk-color-warning-subtle: color-mix(in srgb, var(--sbk-estado-alerta) 10%, var(--sbk-branco));
|
|
79
|
+
--sbk-color-error: var(--sbk-estado-erro);
|
|
80
|
+
--sbk-color-error-subtle: color-mix(in srgb, var(--sbk-estado-erro) 10%, var(--sbk-branco));
|
|
81
|
+
--sbk-color-info: var(--sbk-estado-info);
|
|
82
|
+
--sbk-color-info-subtle: color-mix(in srgb, var(--sbk-estado-info) 10%, var(--sbk-branco));
|
|
83
|
+
--sbk-color-on-state: var(--sbk-branco);
|
|
84
|
+
/* Cores de estado para TEXTO e ícones (no escuro ficam mais claras para manter contraste) */
|
|
85
|
+
--sbk-color-success-fg: var(--sbk-estado-sucesso);
|
|
86
|
+
--sbk-color-warning-fg: var(--sbk-estado-alerta);
|
|
87
|
+
--sbk-color-error-fg: var(--sbk-estado-erro);
|
|
88
|
+
--sbk-color-info-fg: var(--sbk-estado-info);
|
|
89
|
+
|
|
90
|
+
/* Tipografia: somente dois pesos (brand book) */
|
|
91
|
+
--sbk-font-family: 'Plus Jakarta Sans', Calibri, system-ui, sans-serif;
|
|
92
|
+
--sbk-font-weight-heading: 600; /* Seminegrito */
|
|
93
|
+
--sbk-font-weight-body: 300; /* Leve */
|
|
94
|
+
|
|
95
|
+
/* Raio: brand book define 8 a 16 para cards e blocos.
|
|
96
|
+
xs (4px) existe apenas para controles de 16px, como checkbox. */
|
|
97
|
+
--sbk-radius-xs: 0.25rem;
|
|
98
|
+
--sbk-radius-sm: 0.5rem;
|
|
99
|
+
--sbk-radius-md: 0.75rem;
|
|
100
|
+
--sbk-radius-lg: 1rem;
|
|
101
|
+
|
|
102
|
+
/* Sombras leves, tingidas de verde escuro (sem sombras pesadas) */
|
|
103
|
+
--sbk-shadow-sm: 0 0.0625rem 0.125rem rgb(2 54 49 / 0.06), 0 0.5rem 1.5rem rgb(2 54 49 / 0.05);
|
|
104
|
+
--sbk-shadow-md: 0 0.25rem 0.5rem rgb(2 54 49 / 0.06), 0 0.75rem 2rem rgb(2 54 49 / 0.1);
|
|
105
|
+
|
|
106
|
+
/* Opacidade de cards sobrepostos (brand book: 60% a 90%) */
|
|
107
|
+
--sbk-card-layer-opacity-1: 0.9;
|
|
108
|
+
--sbk-card-layer-opacity-2: 0.75;
|
|
109
|
+
--sbk-card-layer-opacity-3: 0.6;
|
|
110
|
+
|
|
111
|
+
/* Movimento */
|
|
112
|
+
--sbk-duration-fast: 150ms;
|
|
113
|
+
--sbk-duration-normal: 250ms;
|
|
114
|
+
--sbk-duration-slow: 400ms;
|
|
115
|
+
--sbk-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
|
|
116
|
+
|
|
117
|
+
/* Liquid Glass (opt-in): translucidez tingida de verde, desfoque com saturação,
|
|
118
|
+
borda especular e brilho interno. Fallback opaco em prefers-reduced-transparency
|
|
119
|
+
e em navegadores sem backdrop-filter (ver styles/glass.css). */
|
|
120
|
+
--sbk-glass-bg: color-mix(in srgb, var(--sbk-branco) 55%, transparent);
|
|
121
|
+
--sbk-glass-bg-strong: color-mix(in srgb, var(--sbk-branco) 72%, transparent);
|
|
122
|
+
--sbk-glass-tint: color-mix(in srgb, var(--sbk-verde-claro) 6%, transparent);
|
|
123
|
+
--sbk-glass-border: color-mix(in srgb, var(--sbk-branco) 70%, transparent);
|
|
124
|
+
--sbk-glass-highlight: color-mix(in srgb, var(--sbk-branco) 85%, transparent);
|
|
125
|
+
--sbk-glass-blur: 20px;
|
|
126
|
+
--sbk-glass-saturate: 180%;
|
|
127
|
+
--sbk-glass-shadow: 0 0.5rem 2rem rgb(2 54 49 / 0.12);
|
|
128
|
+
--sbk-glass-fallback: var(--sbk-color-surface);
|
|
129
|
+
|
|
130
|
+
/* Camadas */
|
|
131
|
+
--sbk-z-dropdown: 1000;
|
|
132
|
+
--sbk-z-sticky: 1010;
|
|
133
|
+
--sbk-z-modal: 1050;
|
|
134
|
+
--sbk-z-toast: 1100;
|
|
135
|
+
--sbk-z-tooltip: 1200;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* ---------- Tema institucional SBK (marca-mãe) ---------- */
|
|
139
|
+
[data-brand='sbk'] {
|
|
140
|
+
--sbk-color-primary: var(--sbk-verde-escuro);
|
|
141
|
+
--sbk-color-primary-hover: var(--sbk-verde-profundo);
|
|
142
|
+
--sbk-color-primary-subtle: color-mix(in srgb, var(--sbk-verde-escuro) 10%, var(--sbk-branco));
|
|
143
|
+
--sbk-color-accent: var(--sbk-ciano-escuro);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* ---------- Modo escuro (proposta: o brand book não define tema dark completo) ---------- */
|
|
147
|
+
[data-theme='dark'],
|
|
148
|
+
.theme-dark {
|
|
149
|
+
--sbk-color-bg: var(--sbk-verde-profundo);
|
|
150
|
+
--sbk-color-surface: color-mix(in srgb, var(--sbk-verde-escuro) 70%, var(--sbk-verde-profundo));
|
|
151
|
+
--sbk-color-surface-sunken: var(--sbk-verde-profundo);
|
|
152
|
+
--sbk-color-surface-hover: color-mix(in srgb, var(--sbk-off-white) 6%, var(--sbk-verde-escuro));
|
|
153
|
+
/* Blocos de marca (Header, SideNav escuro, Card inverse) continuam escuros no tema escuro */
|
|
154
|
+
--sbk-color-surface-inverse: var(--sbk-ciano-profundo);
|
|
155
|
+
--sbk-color-overlay: color-mix(in srgb, var(--sbk-preto) 65%, transparent);
|
|
156
|
+
|
|
157
|
+
--sbk-color-fg: var(--sbk-off-white);
|
|
158
|
+
--sbk-color-fg-heading: var(--sbk-branco);
|
|
159
|
+
--sbk-color-fg-muted: color-mix(in srgb, var(--sbk-off-white) 72%, var(--sbk-verde-escuro));
|
|
160
|
+
--sbk-color-fg-inverse: var(--sbk-branco);
|
|
161
|
+
|
|
162
|
+
--sbk-color-line: color-mix(in srgb, var(--sbk-off-white) 16%, var(--sbk-verde-escuro));
|
|
163
|
+
--sbk-color-line-strong: color-mix(in srgb, var(--sbk-off-white) 45%, var(--sbk-verde-escuro));
|
|
164
|
+
|
|
165
|
+
--sbk-color-primary: var(--sbk-ciano);
|
|
166
|
+
--sbk-color-primary-hover: var(--sbk-verde-claro);
|
|
167
|
+
--sbk-color-on-primary: var(--sbk-branco);
|
|
168
|
+
--sbk-color-primary-subtle: color-mix(in srgb, var(--sbk-ciano) 22%, var(--sbk-verde-profundo));
|
|
169
|
+
--sbk-color-secondary: var(--sbk-verde-claro);
|
|
170
|
+
--sbk-color-secondary-hover: var(--sbk-ciano-escuro);
|
|
171
|
+
--sbk-color-focus: var(--sbk-off-white);
|
|
172
|
+
|
|
173
|
+
--sbk-color-success-fg: color-mix(in srgb, var(--sbk-estado-sucesso) 45%, var(--sbk-branco));
|
|
174
|
+
--sbk-color-warning-fg: color-mix(in srgb, var(--sbk-estado-alerta) 50%, var(--sbk-branco));
|
|
175
|
+
--sbk-color-error-fg: color-mix(in srgb, var(--sbk-estado-erro) 45%, var(--sbk-branco));
|
|
176
|
+
--sbk-color-info-fg: color-mix(in srgb, var(--sbk-ciano) 45%, var(--sbk-branco));
|
|
177
|
+
|
|
178
|
+
--sbk-color-success-subtle: color-mix(
|
|
179
|
+
in srgb,
|
|
180
|
+
var(--sbk-estado-sucesso) 28%,
|
|
181
|
+
var(--sbk-verde-profundo)
|
|
182
|
+
);
|
|
183
|
+
--sbk-color-warning-subtle: color-mix(
|
|
184
|
+
in srgb,
|
|
185
|
+
var(--sbk-estado-alerta) 28%,
|
|
186
|
+
var(--sbk-verde-profundo)
|
|
187
|
+
);
|
|
188
|
+
--sbk-color-error-subtle: color-mix(
|
|
189
|
+
in srgb,
|
|
190
|
+
var(--sbk-estado-erro) 28%,
|
|
191
|
+
var(--sbk-verde-profundo)
|
|
192
|
+
);
|
|
193
|
+
--sbk-color-info-subtle: color-mix(in srgb, var(--sbk-ciano) 28%, var(--sbk-verde-profundo));
|
|
194
|
+
|
|
195
|
+
--sbk-shadow-sm: 0 0.0625rem 0.125rem rgb(0 0 0 / 0.3), 0 0.5rem 1.5rem rgb(0 0 0 / 0.25);
|
|
196
|
+
--sbk-shadow-md: 0 0.25rem 0.5rem rgb(0 0 0 / 0.3), 0 0.75rem 2rem rgb(0 0 0 / 0.4);
|
|
197
|
+
|
|
198
|
+
--sbk-glass-bg: color-mix(in srgb, var(--sbk-verde-escuro) 45%, transparent);
|
|
199
|
+
--sbk-glass-bg-strong: color-mix(in srgb, var(--sbk-verde-escuro) 65%, transparent);
|
|
200
|
+
--sbk-glass-tint: color-mix(in srgb, var(--sbk-ciano) 10%, transparent);
|
|
201
|
+
--sbk-glass-border: color-mix(in srgb, var(--sbk-branco) 18%, transparent);
|
|
202
|
+
--sbk-glass-highlight: color-mix(in srgb, var(--sbk-branco) 28%, transparent);
|
|
203
|
+
--sbk-glass-shadow: 0 0.5rem 2rem rgb(0 0 0 / 0.35);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* ============================================================
|
|
207
|
+
4. ALIASES LEGADOS (1.x): deprecados, serão removidos na 3.0.
|
|
208
|
+
Mantidos para CSS de consumidores que lê essas variáveis.
|
|
209
|
+
Os componentes da 2.x NÃO leem estes nomes: sobrescrever
|
|
210
|
+
--md-primary não altera mais o Button. Use --sbk-color-primary.
|
|
211
|
+
============================================================ */
|
|
212
|
+
:root {
|
|
213
|
+
--brand-verde-vibrante: var(--sbk-verde-claro);
|
|
214
|
+
--brand-verde-profundo: var(--sbk-verde-escuro);
|
|
215
|
+
--brand-verde-medio: var(--sbk-ciano);
|
|
216
|
+
--brand-grafite-azulado: var(--sbk-ciano-profundo);
|
|
217
|
+
--brand-azul-acinzentado: var(--sbk-chumbo-leve);
|
|
218
|
+
--brand-cinza-medio: var(--sbk-chumbo-leve);
|
|
219
|
+
--brand-cinza-escuro: var(--sbk-verde-profundo);
|
|
220
|
+
--brand-off-white: var(--sbk-off-white);
|
|
221
|
+
--brand-off-white-gelo: var(--sbk-off-white);
|
|
222
|
+
--brand-branco: var(--sbk-branco);
|
|
223
|
+
--brand-preto: var(--sbk-preto);
|
|
224
|
+
|
|
225
|
+
--font-primary: var(--sbk-font-family);
|
|
226
|
+
--font-heading: var(--sbk-font-family);
|
|
227
|
+
--font-body: var(--sbk-font-family);
|
|
228
|
+
--font-weight-light: 300;
|
|
229
|
+
--font-weight-semibold: 600;
|
|
230
|
+
|
|
231
|
+
--border-radius-sm: var(--sbk-radius-sm);
|
|
232
|
+
--border-radius-md: var(--sbk-radius-sm);
|
|
233
|
+
--border-radius-lg: var(--sbk-radius-md);
|
|
234
|
+
--border-radius-2xl: var(--sbk-radius-lg);
|
|
235
|
+
|
|
236
|
+
--z-index-dropdown: var(--sbk-z-dropdown);
|
|
237
|
+
--z-index-modal-backdrop: var(--sbk-z-modal);
|
|
238
|
+
--z-index-modal: var(--sbk-z-modal);
|
|
239
|
+
|
|
240
|
+
--border-width-thin: 0.0625rem;
|
|
241
|
+
|
|
242
|
+
--spacing-xs: 0.25rem;
|
|
243
|
+
--spacing-sm: 0.5rem;
|
|
244
|
+
--spacing-md: 0.75rem;
|
|
245
|
+
--spacing-lg: 1rem;
|
|
246
|
+
--spacing-xl: 1.5rem;
|
|
247
|
+
--spacing-2xl: 2rem;
|
|
248
|
+
--spacing-3xl: 2.5rem;
|
|
249
|
+
|
|
250
|
+
--font-size-xs: 0.75rem;
|
|
251
|
+
--font-size-sm: 0.875rem;
|
|
252
|
+
--font-size-base: 1rem;
|
|
253
|
+
--font-size-md: 1.125rem;
|
|
254
|
+
--font-size-lg: 1.25rem;
|
|
255
|
+
--font-size-xl: 1.5rem;
|
|
256
|
+
--font-size-2xl: 1.75rem;
|
|
257
|
+
--font-size-3xl: 2rem;
|
|
258
|
+
--font-size-4xl: 2.5rem;
|
|
259
|
+
/* --font-weight-normal/medium/bold não são redefinidos: colidiriam com as variáveis
|
|
260
|
+
do Tailwind 4 (font-normal, font-medium, font-bold) nos apps consumidores. */
|
|
261
|
+
--line-height-tight: 1.2;
|
|
262
|
+
--line-height-normal: 1.5;
|
|
263
|
+
--line-height-relaxed: 1.6;
|
|
264
|
+
--line-height-loose: 1.8;
|
|
265
|
+
|
|
266
|
+
--transition-base: var(--sbk-duration-normal) ease;
|
|
267
|
+
--transition-all: all var(--transition-base);
|
|
268
|
+
--transition-colors:
|
|
269
|
+
color var(--transition-base), background-color var(--transition-base),
|
|
270
|
+
border-color var(--transition-base);
|
|
271
|
+
|
|
272
|
+
--motion-duration-fast: var(--sbk-duration-fast);
|
|
273
|
+
--motion-duration-normal: var(--sbk-duration-normal);
|
|
274
|
+
--motion-duration-slow: var(--sbk-duration-slow);
|
|
275
|
+
--motion-easing-standard: var(--sbk-easing-standard);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
:root,
|
|
279
|
+
[data-brand='sbk'],
|
|
280
|
+
[data-theme='dark'],
|
|
281
|
+
.theme-dark {
|
|
282
|
+
--primary-color: var(--sbk-color-primary);
|
|
283
|
+
--primary-color-hover: var(--sbk-color-primary-hover);
|
|
284
|
+
--secondary-color: var(--sbk-color-accent);
|
|
285
|
+
--accent-color: var(--sbk-color-accent);
|
|
286
|
+
--md-primary: var(--sbk-color-primary);
|
|
287
|
+
--md-on-primary: var(--sbk-color-on-primary);
|
|
288
|
+
--md-primary-container: var(--sbk-color-primary-subtle);
|
|
289
|
+
--md-secondary: var(--sbk-color-secondary);
|
|
290
|
+
--md-on-secondary: var(--sbk-branco);
|
|
291
|
+
--md-surface: var(--sbk-color-surface);
|
|
292
|
+
--md-on-surface: var(--sbk-color-fg);
|
|
293
|
+
--md-on-surface-variant: var(--sbk-color-fg-muted);
|
|
294
|
+
--md-surface-container: var(--sbk-color-surface-sunken);
|
|
295
|
+
--md-surface-container-high: var(--sbk-color-surface-sunken);
|
|
296
|
+
--md-outline: var(--sbk-color-line-strong);
|
|
297
|
+
--md-outline-variant: var(--sbk-color-line);
|
|
298
|
+
--md-error: var(--sbk-color-error);
|
|
299
|
+
--md-on-error: var(--sbk-color-on-state);
|
|
300
|
+
--color-primary: var(--sbk-color-primary);
|
|
301
|
+
--color-on-primary: var(--sbk-color-on-primary);
|
|
302
|
+
--color-surface: var(--sbk-color-surface);
|
|
303
|
+
--color-on-surface: var(--sbk-color-fg);
|
|
304
|
+
--success-color: var(--sbk-color-success);
|
|
305
|
+
--warning-color: var(--sbk-color-warning);
|
|
306
|
+
--error-color: var(--sbk-color-error);
|
|
307
|
+
--info-color: var(--sbk-color-info);
|
|
308
|
+
--bg-page: var(--sbk-color-bg);
|
|
309
|
+
--bg-primary: var(--sbk-color-bg);
|
|
310
|
+
--bg-secondary: var(--sbk-color-surface);
|
|
311
|
+
--bg-tertiary: var(--sbk-color-surface-sunken);
|
|
312
|
+
--bg-card: var(--sbk-color-surface);
|
|
313
|
+
--bg-card-border: var(--sbk-color-line);
|
|
314
|
+
--bg-hover: var(--sbk-color-surface-hover);
|
|
315
|
+
--text-primary: var(--sbk-color-fg);
|
|
316
|
+
--text-secondary: var(--sbk-color-fg-muted);
|
|
317
|
+
--text-muted: var(--sbk-color-fg-muted);
|
|
318
|
+
--text-on-primary: var(--sbk-color-on-primary);
|
|
319
|
+
--border-color: var(--sbk-color-line);
|
|
320
|
+
--border-color-hover: var(--sbk-color-line-strong);
|
|
321
|
+
--border-color-focus: var(--sbk-color-focus);
|
|
322
|
+
--shadow-sm: var(--sbk-shadow-sm);
|
|
323
|
+
--shadow-md: var(--sbk-shadow-md);
|
|
324
|
+
--shadow-lg: var(--sbk-shadow-md);
|
|
325
|
+
--shadow-xs: var(--sbk-shadow-sm);
|
|
326
|
+
--md-on-primary-container: var(--sbk-color-fg-heading);
|
|
327
|
+
}
|
package/dist/utils/cn.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ClassValue } from 'clsx';
|
|
2
2
|
/**
|
|
3
3
|
* Utilitário de composição de classes Tailwind.
|
|
4
|
-
* Usa clsx para lógica condicional e tailwind-merge
|
|
5
|
-
* conflitos
|
|
4
|
+
* Usa clsx para lógica condicional e tailwind-merge (ciente dos tokens sbk)
|
|
5
|
+
* para resolver conflitos, permitindo que o className do consumidor sobrescreva o padrão.
|
|
6
6
|
*/
|
|
7
7
|
export declare const cn: (...inputs: ClassValue[]) => string;
|
package/dist/utils/cn.js
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
|
-
import { clsx as
|
|
2
|
-
import {
|
|
3
|
-
const e = (
|
|
1
|
+
import { clsx as o } from "clsx";
|
|
2
|
+
import { extendTailwindMerge as b } from "tailwind-merge";
|
|
3
|
+
const e = b({
|
|
4
|
+
extend: {
|
|
5
|
+
classGroups: {
|
|
6
|
+
"sbk-glass": ["sbk-glass"]
|
|
7
|
+
},
|
|
8
|
+
// sbk-glass define o próprio fundo: remove bg-* anteriores (ex.: bg-transparent do buttonReset)
|
|
9
|
+
conflictingClassGroups: {
|
|
10
|
+
"sbk-glass": ["bg-color"]
|
|
11
|
+
},
|
|
12
|
+
theme: {
|
|
13
|
+
radius: ["sbk-xs", "sbk-sm", "sbk-md", "sbk-lg"],
|
|
14
|
+
shadow: ["sbk-sm", "sbk-md", "sbk-glass"],
|
|
15
|
+
font: ["sbk"]
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}), r = (...s) => e(o(s));
|
|
4
19
|
export {
|
|
5
|
-
|
|
20
|
+
r as cn
|
|
6
21
|
};
|
|
7
22
|
//# sourceMappingURL=cn.js.map
|
package/dist/utils/cn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cn.js","sources":["../../src/utils/cn.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport {
|
|
1
|
+
{"version":3,"file":"cn.js","sources":["../../src/utils/cn.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nconst twMerge = extendTailwindMerge<'sbk-glass'>({\n extend: {\n classGroups: {\n 'sbk-glass': ['sbk-glass'],\n },\n // sbk-glass define o próprio fundo: remove bg-* anteriores (ex.: bg-transparent do buttonReset)\n conflictingClassGroups: {\n 'sbk-glass': ['bg-color'],\n },\n theme: {\n radius: ['sbk-xs', 'sbk-sm', 'sbk-md', 'sbk-lg'],\n shadow: ['sbk-sm', 'sbk-md', 'sbk-glass'],\n font: ['sbk'],\n },\n },\n});\n\n/**\n * Utilitário de composição de classes Tailwind.\n * Usa clsx para lógica condicional e tailwind-merge (ciente dos tokens sbk)\n * para resolver conflitos, permitindo que o className do consumidor sobrescreva o padrão.\n */\nexport const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n"],"names":["twMerge","extendTailwindMerge","cn","inputs","clsx"],"mappings":";;AAGA,MAAMA,IAAUC,EAAiC;AAAA,EAC/C,QAAQ;AAAA,IACN,aAAa;AAAA,MACX,aAAa,CAAC,WAAW;AAAA,IAAA;AAAA;AAAA,IAG3B,wBAAwB;AAAA,MACtB,aAAa,CAAC,UAAU;AAAA,IAAA;AAAA,IAE1B,OAAO;AAAA,MACL,QAAQ,CAAC,UAAU,UAAU,UAAU,QAAQ;AAAA,MAC/C,QAAQ,CAAC,UAAU,UAAU,WAAW;AAAA,MACxC,MAAM,CAAC,KAAK;AAAA,IAAA;AAAA,EACd;AAEJ,CAAC,GAOYC,IAAK,IAAIC,MAAyBH,EAAQI,EAAKD,CAAM,CAAC;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fragmentos de classe compartilhados entre componentes.
|
|
3
|
+
* Centralizar aqui garante foco, hover e estados idênticos em toda a lib.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Zera o estilo nativo de <button> (fundo, borda, fonte, margem) para que os componentes
|
|
7
|
+
* funcionem mesmo em apps sem reset CSS. Aplique antes das demais classes no cn().
|
|
8
|
+
*/
|
|
9
|
+
export declare const buttonReset = "m-0 appearance-none border-0 border-solid bg-transparent p-0 font-sbk text-inherit no-underline";
|
|
10
|
+
/** Anel de foco visível apenas na navegação por teclado. */
|
|
11
|
+
export declare const focusRing = "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sbk-focus focus-visible:outline-solid";
|
|
12
|
+
/** Transição padrão de cores, respeitando prefers-reduced-motion. */
|
|
13
|
+
export declare const transitionColors = "transition-colors duration-150 ease-out motion-reduce:transition-none";
|
|
14
|
+
/** Rótulo de campo de formulário. */
|
|
15
|
+
export declare const fieldLabel = "text-sm font-semibold text-sbk-fg";
|
|
16
|
+
/** Controle de formulário (input, select, textarea). */
|
|
17
|
+
export declare const fieldControl: string;
|
|
18
|
+
/** Texto de apoio abaixo do campo. */
|
|
19
|
+
export declare const fieldHelper = "text-xs font-light text-sbk-fg-muted";
|
|
20
|
+
/** Mensagem de erro abaixo do campo. */
|
|
21
|
+
export declare const fieldError = "text-xs font-semibold text-sbk-error-fg";
|
|
22
|
+
/** Tamanhos de controle de formulário. */
|
|
23
|
+
export declare const fieldSize: {
|
|
24
|
+
readonly sm: "min-h-8 px-3 py-1.5 text-sm";
|
|
25
|
+
readonly md: "min-h-10 px-3.5 py-2 text-base";
|
|
26
|
+
readonly lg: "min-h-12 px-4 py-3 text-lg";
|
|
27
|
+
};
|
|
28
|
+
export type FieldSize = keyof typeof fieldSize;
|
|
29
|
+
/** Monta o aria-describedby a partir dos ids de erro e de apoio. */
|
|
30
|
+
export declare const describedBy: (id: string, error?: string, helperText?: string) => string | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Redefine os tokens de texto e linha para uma superfície invertida (verde escuro no tema claro).
|
|
33
|
+
* Filhos que usam text-sbk-fg, text-sbk-fg-heading ou text-sbk-fg-muted ficam legíveis sem props extras.
|
|
34
|
+
*/
|
|
35
|
+
export declare const inverseScope: string;
|
|
36
|
+
/** Checkbox e radio nativos coloridos com a marca (accent-color). */
|
|
37
|
+
export declare const choiceControl = "mt-0.5 size-4 shrink-0 cursor-pointer accent-sbk-primary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sbk-focus focus-visible:outline-solid disabled:cursor-not-allowed";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const i = "m-0 appearance-none border-0 border-solid bg-transparent p-0 font-sbk text-inherit no-underline", t = "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sbk-focus focus-visible:outline-solid", r = "transition-colors duration-150 ease-out motion-reduce:transition-none", n = "text-sm font-semibold text-sbk-fg", l = [
|
|
2
|
+
"m-0 w-full rounded-sbk-sm border border-solid border-sbk-line-strong bg-sbk-surface font-sbk font-light text-sbk-fg",
|
|
3
|
+
"placeholder:text-sbk-fg-muted",
|
|
4
|
+
"hover:border-sbk-fg-muted",
|
|
5
|
+
"focus:border-sbk-primary focus:outline-2 focus:outline-offset-0 focus:outline-sbk-focus focus:outline-solid",
|
|
6
|
+
"disabled:cursor-not-allowed disabled:bg-sbk-surface-sunken disabled:opacity-60",
|
|
7
|
+
"aria-invalid:border-sbk-error aria-invalid:focus:outline-sbk-error",
|
|
8
|
+
r
|
|
9
|
+
].join(" "), b = "text-xs font-light text-sbk-fg-muted", c = "text-xs font-semibold text-sbk-error-fg", f = {
|
|
10
|
+
sm: "min-h-8 px-3 py-1.5 text-sm",
|
|
11
|
+
md: "min-h-10 px-3.5 py-2 text-base",
|
|
12
|
+
lg: "min-h-12 px-4 py-3 text-lg"
|
|
13
|
+
}, u = (o, e, s) => e ? `${o}-error` : s ? `${o}-helper` : void 0, a = [
|
|
14
|
+
"bg-sbk-surface-inverse text-sbk-fg-inverse",
|
|
15
|
+
"[--sbk-color-fg:var(--sbk-color-fg-inverse)]",
|
|
16
|
+
"[--sbk-color-fg-heading:var(--sbk-color-fg-inverse)]",
|
|
17
|
+
"[--sbk-color-fg-muted:color-mix(in_srgb,var(--sbk-color-fg-inverse)_72%,transparent)]",
|
|
18
|
+
"[--sbk-color-line:color-mix(in_srgb,var(--sbk-color-fg-inverse)_18%,transparent)]",
|
|
19
|
+
"[--sbk-color-surface-hover:color-mix(in_srgb,var(--sbk-color-fg-inverse)_10%,transparent)]",
|
|
20
|
+
"[--sbk-color-focus:var(--sbk-color-fg-inverse)]"
|
|
21
|
+
].join(" "), d = "mt-0.5 size-4 shrink-0 cursor-pointer accent-sbk-primary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sbk-focus focus-visible:outline-solid disabled:cursor-not-allowed";
|
|
22
|
+
export {
|
|
23
|
+
i as buttonReset,
|
|
24
|
+
d as choiceControl,
|
|
25
|
+
u as describedBy,
|
|
26
|
+
l as fieldControl,
|
|
27
|
+
c as fieldError,
|
|
28
|
+
b as fieldHelper,
|
|
29
|
+
n as fieldLabel,
|
|
30
|
+
f as fieldSize,
|
|
31
|
+
t as focusRing,
|
|
32
|
+
a as inverseScope,
|
|
33
|
+
r as transitionColors
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../src/utils/styles.ts"],"sourcesContent":["/**\n * Fragmentos de classe compartilhados entre componentes.\n * Centralizar aqui garante foco, hover e estados idênticos em toda a lib.\n */\n\n/**\n * Zera o estilo nativo de <button> (fundo, borda, fonte, margem) para que os componentes\n * funcionem mesmo em apps sem reset CSS. Aplique antes das demais classes no cn().\n */\nexport const buttonReset =\n 'm-0 appearance-none border-0 border-solid bg-transparent p-0 font-sbk text-inherit no-underline';\n\n/** Anel de foco visível apenas na navegação por teclado. */\nexport const focusRing =\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sbk-focus focus-visible:outline-solid';\n\n/** Transição padrão de cores, respeitando prefers-reduced-motion. */\nexport const transitionColors =\n 'transition-colors duration-150 ease-out motion-reduce:transition-none';\n\n/** Rótulo de campo de formulário. */\nexport const fieldLabel = 'text-sm font-semibold text-sbk-fg';\n\n/** Controle de formulário (input, select, textarea). */\nexport const fieldControl = [\n 'm-0 w-full rounded-sbk-sm border border-solid border-sbk-line-strong bg-sbk-surface font-sbk font-light text-sbk-fg',\n 'placeholder:text-sbk-fg-muted',\n 'hover:border-sbk-fg-muted',\n 'focus:border-sbk-primary focus:outline-2 focus:outline-offset-0 focus:outline-sbk-focus focus:outline-solid',\n 'disabled:cursor-not-allowed disabled:bg-sbk-surface-sunken disabled:opacity-60',\n 'aria-invalid:border-sbk-error aria-invalid:focus:outline-sbk-error',\n transitionColors,\n].join(' ');\n\n/** Texto de apoio abaixo do campo. */\nexport const fieldHelper = 'text-xs font-light text-sbk-fg-muted';\n\n/** Mensagem de erro abaixo do campo. */\nexport const fieldError = 'text-xs font-semibold text-sbk-error-fg';\n\n/** Tamanhos de controle de formulário. */\nexport const fieldSize = {\n sm: 'min-h-8 px-3 py-1.5 text-sm',\n md: 'min-h-10 px-3.5 py-2 text-base',\n lg: 'min-h-12 px-4 py-3 text-lg',\n} as const;\n\nexport type FieldSize = keyof typeof fieldSize;\n\n/** Monta o aria-describedby a partir dos ids de erro e de apoio. */\nexport const describedBy = (id: string, error?: string, helperText?: string) =>\n error ? `${id}-error` : helperText ? `${id}-helper` : undefined;\n\n/**\n * Redefine os tokens de texto e linha para uma superfície invertida (verde escuro no tema claro).\n * Filhos que usam text-sbk-fg, text-sbk-fg-heading ou text-sbk-fg-muted ficam legíveis sem props extras.\n */\nexport const inverseScope = [\n 'bg-sbk-surface-inverse text-sbk-fg-inverse',\n '[--sbk-color-fg:var(--sbk-color-fg-inverse)]',\n '[--sbk-color-fg-heading:var(--sbk-color-fg-inverse)]',\n '[--sbk-color-fg-muted:color-mix(in_srgb,var(--sbk-color-fg-inverse)_72%,transparent)]',\n '[--sbk-color-line:color-mix(in_srgb,var(--sbk-color-fg-inverse)_18%,transparent)]',\n '[--sbk-color-surface-hover:color-mix(in_srgb,var(--sbk-color-fg-inverse)_10%,transparent)]',\n '[--sbk-color-focus:var(--sbk-color-fg-inverse)]',\n].join(' ');\n\n/** Checkbox e radio nativos coloridos com a marca (accent-color). */\nexport const choiceControl =\n 'mt-0.5 size-4 shrink-0 cursor-pointer accent-sbk-primary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sbk-focus focus-visible:outline-solid disabled:cursor-not-allowed';\n"],"names":["buttonReset","focusRing","transitionColors","fieldLabel","fieldControl","fieldHelper","fieldError","fieldSize","describedBy","id","error","helperText","inverseScope","choiceControl"],"mappings":"AASO,MAAMA,IACX,mGAGWC,IACX,sHAGWC,IACX,yEAGWC,IAAa,qCAGbC,IAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACAF;AACF,EAAE,KAAK,GAAG,GAGGG,IAAc,wCAGdC,IAAa,2CAGbC,IAAY;AAAA,EACvB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAKaC,IAAc,CAACC,GAAYC,GAAgBC,MACtDD,IAAQ,GAAGD,CAAE,WAAWE,IAAa,GAAGF,CAAE,YAAY,QAM3CG,IAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAGGC,IACX;"}
|