@sbkbs/ui 1.0.3 → 1.0.5
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/README.md +115 -115
- package/dist/components/Accordion/Accordion.js +56 -0
- package/dist/components/Accordion/Accordion.js.map +1 -0
- package/dist/components/Accordion/Accordion.stories.d.ts +7 -0
- package/dist/components/Alert/Alert.js +32 -0
- package/dist/components/Alert/Alert.js.map +1 -0
- package/dist/components/Alert/Alert.stories.d.ts +8 -0
- package/dist/components/Badge/Badge.js +35 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/Badge.stories.d.ts +8 -0
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +10 -0
- package/dist/components/Breadcrumb/Breadcrumb.js +26 -0
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -0
- package/dist/components/Button/Button.js +122 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Card/Card.js +33 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/Card.stories.d.ts +8 -0
- package/dist/components/Checkbox/Checkbox.d.ts +2 -2
- package/dist/components/Checkbox/Checkbox.js +36 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.stories.d.ts +7 -0
- package/dist/components/Chip/Chip.js +19 -0
- package/dist/components/Chip/Chip.js.map +1 -0
- package/dist/components/Combobox/Combobox.d.ts +17 -0
- package/dist/components/Combobox/Combobox.js +143 -0
- package/dist/components/Combobox/Combobox.js.map +1 -0
- package/dist/components/Combobox/Combobox.stories.d.ts +9 -0
- package/dist/components/Divider/Divider.js +22 -0
- package/dist/components/Divider/Divider.js.map +1 -0
- package/dist/components/EmptyState/EmptyState.js +29 -0
- package/dist/components/EmptyState/EmptyState.js.map +1 -0
- package/dist/components/FileUpload/FileUpload.d.ts +13 -0
- package/dist/components/FileUpload/FileUpload.js +116 -0
- package/dist/components/FileUpload/FileUpload.js.map +1 -0
- package/dist/components/FileUpload/FileUpload.stories.d.ts +10 -0
- package/dist/components/Footer/Footer.js +54 -0
- package/dist/components/Footer/Footer.js.map +1 -0
- package/dist/components/Header/Header.js +114 -0
- package/dist/components/Header/Header.js.map +1 -0
- package/dist/components/Input/Input.d.ts +2 -2
- package/dist/components/Input/Input.js +78 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/Input.stories.d.ts +9 -0
- package/dist/components/Layout/Layout.js +41 -0
- package/dist/components/Layout/Layout.js.map +1 -0
- package/dist/components/Modal/Modal.js +113 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/dist/components/Modal/Modal.stories.d.ts +8 -0
- package/dist/components/Navigation/Navigation.js +26 -0
- package/dist/components/Navigation/Navigation.js.map +1 -0
- package/dist/components/NumberInput/NumberInput.d.ts +12 -0
- package/dist/components/NumberInput/NumberInput.js +135 -0
- package/dist/components/NumberInput/NumberInput.js.map +1 -0
- package/dist/components/NumberInput/NumberInput.stories.d.ts +8 -0
- package/dist/components/PageHeader/PageHeader.js +29 -0
- package/dist/components/PageHeader/PageHeader.js.map +1 -0
- package/dist/components/Pagination/Pagination.js +50 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/Pagination.stories.d.ts +8 -0
- package/dist/components/Paragraph/Paragraph.js +41 -0
- package/dist/components/Paragraph/Paragraph.js.map +1 -0
- package/dist/components/Popover/Popover.js +57 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Radio/Radio.d.ts +2 -2
- package/dist/components/Radio/Radio.js +36 -0
- package/dist/components/Radio/Radio.js.map +1 -0
- package/dist/components/Radio/Radio.stories.d.ts +7 -0
- package/dist/components/SectionHeader/SectionHeader.js +19 -0
- package/dist/components/SectionHeader/SectionHeader.js.map +1 -0
- package/dist/components/Select/Select.d.ts +2 -2
- package/dist/components/Select/Select.js +45 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/Select.stories.d.ts +8 -0
- package/dist/components/Skeleton/Skeleton.js +25 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Stepper/Stepper.d.ts +13 -0
- package/dist/components/Stepper/Stepper.js +97 -0
- package/dist/components/Stepper/Stepper.js.map +1 -0
- package/dist/components/Stepper/Stepper.stories.d.ts +8 -0
- package/dist/components/Subtitle/Subtitle.js +40 -0
- package/dist/components/Subtitle/Subtitle.js.map +1 -0
- package/dist/components/Switch/Switch.d.ts +2 -2
- package/dist/components/Switch/Switch.js +37 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/Switch.stories.d.ts +8 -0
- package/dist/components/Table/Table.js +17 -0
- package/dist/components/Table/Table.js.map +1 -0
- package/dist/components/Tabs/Tabs.js +62 -0
- package/dist/components/Tabs/Tabs.js.map +1 -0
- package/dist/components/Tabs/Tabs.stories.d.ts +8 -0
- package/dist/components/Tag/Tag.js +29 -0
- package/dist/components/Tag/Tag.js.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +2 -2
- package/dist/components/Textarea/Textarea.js +46 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Textarea/Textarea.stories.d.ts +7 -0
- package/dist/components/Title/Title.js +47 -0
- package/dist/components/Title/Title.js.map +1 -0
- package/dist/components/Toast/Toast.js +110 -0
- package/dist/components/Toast/Toast.js.map +1 -0
- package/dist/components/Toast/Toast.stories.d.ts +8 -0
- package/dist/components/Tooltip/Tooltip.js +36 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/index.d.ts +10 -5
- package/dist/index.js +88 -0
- package/dist/index.js.map +1 -0
- package/dist/oficios-ui.css +1 -1
- package/dist/oficios-ui.umd.cjs +1 -1
- package/dist/oficios-ui.umd.cjs.map +1 -1
- package/dist/theme/ThemeProvider.d.ts +1 -1
- package/dist/theme/ThemeProvider.js +22 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme.css +54 -64
- package/dist/utils/cn.d.ts +7 -1
- package/dist/utils/cn.js +7 -0
- package/dist/utils/cn.js.map +1 -0
- package/package.json +50 -15
- package/dist/oficios-ui.js +0 -1386
- package/dist/oficios-ui.js.map +0 -1
|
@@ -9,5 +9,5 @@ interface ThemeProviderProps {
|
|
|
9
9
|
children: ReactNode;
|
|
10
10
|
defaultTheme?: Theme;
|
|
11
11
|
}
|
|
12
|
-
export declare const ThemeProvider: ({ children, defaultTheme
|
|
12
|
+
export declare const ThemeProvider: ({ children, defaultTheme }: ThemeProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
13
|
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { useState as d, useEffect as u, useContext as c, createContext as h } from "react";
|
|
3
|
+
const n = h(void 0), f = () => {
|
|
4
|
+
const e = c(n);
|
|
5
|
+
if (!e)
|
|
6
|
+
throw new Error("useTheme must be used within a ThemeProvider");
|
|
7
|
+
return e;
|
|
8
|
+
}, l = ({ children: e, defaultTheme: o = "light" }) => {
|
|
9
|
+
const [t, i] = d(() => typeof window > "u" ? o : window.localStorage.getItem("theme") || o);
|
|
10
|
+
u(() => {
|
|
11
|
+
typeof window > "u" || (window.localStorage.setItem("theme", t), document.documentElement.setAttribute("data-theme", t));
|
|
12
|
+
}, [t]);
|
|
13
|
+
const m = () => {
|
|
14
|
+
i((r) => r === "dark" ? "light" : "dark");
|
|
15
|
+
};
|
|
16
|
+
return /* @__PURE__ */ s(n.Provider, { value: { theme: t, toggleTheme: m }, children: e });
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
l as ThemeProvider,
|
|
20
|
+
f as useTheme
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=ThemeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["import { createContext, type ReactNode, useContext, useEffect, useState } from 'react';\n\nexport type Theme = 'light' | 'dark';\n\ninterface ThemeContextType {\n theme: Theme;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n};\n\ninterface ThemeProviderProps {\n children: ReactNode;\n defaultTheme?: Theme;\n}\n\nexport const ThemeProvider = ({ children, defaultTheme = 'light' }: ThemeProviderProps) => {\n const [theme, setTheme] = useState<Theme>(() => {\n if (typeof window === 'undefined') {\n return defaultTheme;\n }\n const saved = window.localStorage.getItem('theme');\n return (saved as Theme) || defaultTheme;\n });\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n window.localStorage.setItem('theme', theme);\n document.documentElement.setAttribute('data-theme', theme);\n }, [theme]);\n\n const toggleTheme = (): void => {\n setTheme((prev) => (prev === 'dark' ? 'light' : 'dark'));\n };\n\n return <ThemeContext.Provider value={{ theme, toggleTheme }}>{children}</ThemeContext.Provider>;\n};\n"],"names":["ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","children","defaultTheme","theme","setTheme","useState","useEffect","toggleTheme","prev","jsx"],"mappings":";;AASA,MAAMA,IAAeC,EAA4C,MAAS,GAE7DC,IAAW,MAAwB;AAC9C,QAAMC,IAAUC,EAAWJ,CAAY;AACvC,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,8CAA8C;AAEhE,SAAOA;AACT,GAOaE,IAAgB,CAAC,EAAE,UAAAC,GAAU,cAAAC,IAAe,cAAkC;AACzF,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAgB,MACpC,OAAO,SAAW,MACbH,IAEK,OAAO,aAAa,QAAQ,OAAO,KACtBA,CAC5B;AAED,EAAAI,EAAU,MAAM;AACd,IAAI,OAAO,SAAW,QAGtB,OAAO,aAAa,QAAQ,SAASH,CAAK,GAC1C,SAAS,gBAAgB,aAAa,cAAcA,CAAK;AAAA,EAC3D,GAAG,CAACA,CAAK,CAAC;AAEV,QAAMI,IAAc,MAAY;AAC9B,IAAAH,EAAS,CAACI,MAAUA,MAAS,SAAS,UAAU,MAAO;AAAA,EACzD;AAEA,SAAO,gBAAAC,EAACd,EAAa,UAAb,EAAsB,OAAO,EAAE,OAAAQ,GAAO,aAAAI,KAAgB,UAAAN,GAAS;AACzE;"}
|
package/dist/theme.css
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Guia de marca: cores e tipografia SBK
|
|
4
4
|
============================================================ */
|
|
5
5
|
|
|
6
|
-
@import url(
|
|
7
|
-
@import url(
|
|
6
|
+
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,500&display=swap');
|
|
7
|
+
@import url('https://fonts.googleapis.com/css2?family=Sora:wght@400;500;600;700;800&display=swap');
|
|
8
8
|
|
|
9
9
|
/* ============================================================
|
|
10
10
|
GUIA DE MARCA - CORES (paleta fixa para referência e paletas)
|
|
@@ -17,8 +17,9 @@
|
|
|
17
17
|
--brand-azul-acinzentado: #5f7b8d;
|
|
18
18
|
--brand-cinza-medio: #4b4b4b;
|
|
19
19
|
--brand-cinza-escuro: #24262d;
|
|
20
|
-
--brand-off-white: #
|
|
21
|
-
--brand-
|
|
20
|
+
--brand-off-white: #eef0f4; /* Off-White Gelo — cor de fundo oficial SBK */
|
|
21
|
+
--brand-off-white-gelo: #eef0f4; /* alias explícito */
|
|
22
|
+
--brand-neutral-75: rgba(238, 240, 244, 0.75);
|
|
22
23
|
--brand-branco: #ffffff;
|
|
23
24
|
|
|
24
25
|
/* DNA da marca - O Criador */
|
|
@@ -37,12 +38,11 @@
|
|
|
37
38
|
Jakarta = headlines fortes; alta legibilidade; estrutura
|
|
38
39
|
============================================================ */
|
|
39
40
|
:root {
|
|
40
|
-
--font-primary:
|
|
41
|
-
|
|
42
|
-
sans-serif;
|
|
43
|
-
--font-secondary: "Plus Jakarta Sans", var(--font-primary);
|
|
41
|
+
--font-primary: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
42
|
+
--font-secondary: 'Plus Jakarta Sans', var(--font-primary);
|
|
44
43
|
--font-heading: var(--font-primary);
|
|
45
44
|
--font-body: var(--font-primary);
|
|
45
|
+
--font-logo: 'Sora', var(--font-primary); /* logo e títulos de marca */
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
html {
|
|
@@ -53,19 +53,11 @@ html {
|
|
|
53
53
|
:root {
|
|
54
54
|
--primary-color: var(--brand-verde-vibrante);
|
|
55
55
|
--primary-color-dark: var(--brand-verde-profundo);
|
|
56
|
-
--primary-color-light: color-mix(
|
|
57
|
-
in srgb,
|
|
58
|
-
var(--brand-verde-vibrante) 84%,
|
|
59
|
-
white
|
|
60
|
-
);
|
|
56
|
+
--primary-color-light: color-mix(in srgb, var(--brand-verde-vibrante) 84%, white);
|
|
61
57
|
--primary-color-hover: var(--brand-verde-profundo);
|
|
62
58
|
--md-primary: var(--brand-verde-vibrante);
|
|
63
59
|
--md-on-primary: #ffffff;
|
|
64
|
-
--md-primary-container: color-mix(
|
|
65
|
-
in srgb,
|
|
66
|
-
var(--brand-verde-vibrante) 18%,
|
|
67
|
-
white
|
|
68
|
-
);
|
|
60
|
+
--md-primary-container: color-mix(in srgb, var(--brand-verde-vibrante) 18%, white);
|
|
69
61
|
--md-on-primary-container: var(--brand-grafite-azulado);
|
|
70
62
|
--secondary-color: var(--brand-grafite-azulado);
|
|
71
63
|
/* Tokens semânticos para integração com Tailwind */
|
|
@@ -80,11 +72,7 @@ html {
|
|
|
80
72
|
--md-secondary: var(--brand-grafite-azulado);
|
|
81
73
|
--md-on-secondary: #ffffff;
|
|
82
74
|
--md-outline: var(--brand-azul-acinzentado);
|
|
83
|
-
--md-outline-variant: color-mix(
|
|
84
|
-
in srgb,
|
|
85
|
-
var(--brand-azul-acinzentado) 35%,
|
|
86
|
-
white
|
|
87
|
-
);
|
|
75
|
+
--md-outline-variant: color-mix(in srgb, var(--brand-azul-acinzentado) 35%, white);
|
|
88
76
|
--success-color: #22c55e;
|
|
89
77
|
--success-color-light: #4ade80;
|
|
90
78
|
--error-color: #ef4444;
|
|
@@ -103,39 +91,29 @@ html {
|
|
|
103
91
|
--md-on-surface: var(--brand-grafite-azulado);
|
|
104
92
|
--accent-color: var(--primary-color);
|
|
105
93
|
--accent-color-hover: var(--primary-color-hover);
|
|
106
|
-
--
|
|
94
|
+
--gradient-espectro-turquesa: linear-gradient(
|
|
95
|
+
135deg,
|
|
96
|
+
#01b2aa 0%,
|
|
97
|
+
#1f3a3a 100%
|
|
98
|
+
); /* Espectro Turquesa — expressão visual primária SBK */
|
|
99
|
+
--bg-page: var(--brand-off-white-gelo); /* fundo de página — Off-White Gelo */
|
|
100
|
+
--bg-primary: var(--brand-off-white-gelo);
|
|
107
101
|
--bg-secondary: #ffffff;
|
|
108
102
|
--bg-tertiary: color-mix(in srgb, var(--brand-azul-acinzentado) 14%, white);
|
|
109
103
|
--md-surface: #ffffff;
|
|
110
104
|
--md-surface-container: var(--brand-neutral-75);
|
|
111
|
-
--md-surface-container-high: color-mix(
|
|
112
|
-
|
|
113
|
-
var(--brand-azul-acinzentado) 14%,
|
|
114
|
-
white
|
|
115
|
-
);
|
|
116
|
-
--border-color-hover: color-mix(
|
|
117
|
-
in srgb,
|
|
118
|
-
var(--brand-grafite-azulado) 32%,
|
|
119
|
-
white
|
|
120
|
-
);
|
|
105
|
+
--md-surface-container-high: color-mix(in srgb, var(--brand-azul-acinzentado) 14%, white);
|
|
106
|
+
--border-color-hover: color-mix(in srgb, var(--brand-grafite-azulado) 32%, white);
|
|
121
107
|
--bg-card: #ffffff;
|
|
122
108
|
--bg-card-hover: color-mix(in srgb, var(--brand-azul-acinzentado) 8%, white);
|
|
123
|
-
--bg-card-border: color-mix(
|
|
124
|
-
in srgb,
|
|
125
|
-
var(--brand-azul-acinzentado) 28%,
|
|
126
|
-
white
|
|
127
|
-
);
|
|
109
|
+
--bg-card-border: color-mix(in srgb, var(--brand-azul-acinzentado) 28%, white);
|
|
128
110
|
--text-primary: var(--brand-grafite-azulado);
|
|
129
111
|
--text-secondary: var(--brand-cinza-escuro);
|
|
130
112
|
--text-tertiary: var(--brand-cinza-medio);
|
|
131
113
|
--text-muted: var(--brand-cinza-medio);
|
|
132
114
|
--text-on-primary: #ffffff;
|
|
133
115
|
--border-color: color-mix(in srgb, var(--brand-azul-acinzentado) 30%, white);
|
|
134
|
-
--border-color-focus: color-mix(
|
|
135
|
-
in srgb,
|
|
136
|
-
var(--brand-verde-vibrante) 52%,
|
|
137
|
-
transparent
|
|
138
|
-
);
|
|
116
|
+
--border-color-focus: color-mix(in srgb, var(--brand-verde-vibrante) 52%, transparent);
|
|
139
117
|
--shadow-xs: 0 0.0625rem 0.125rem rgba(0, 0, 0, 0.05);
|
|
140
118
|
--shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.08);
|
|
141
119
|
--shadow-md: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
|
|
@@ -166,6 +144,21 @@ html {
|
|
|
166
144
|
--transition-colors:
|
|
167
145
|
color var(--transition-base), background-color var(--transition-base),
|
|
168
146
|
border-color var(--transition-base);
|
|
147
|
+
|
|
148
|
+
/* ============================================================
|
|
149
|
+
MOTION TOKENS — durações e easings padronizados
|
|
150
|
+
Uso: transition: opacity var(--motion-duration-fast) var(--motion-easing-standard)
|
|
151
|
+
============================================================ */
|
|
152
|
+
--motion-duration-instant: 75ms; /* micro-feedback: ripple, checkbox tick */
|
|
153
|
+
--motion-duration-fast: 150ms; /* hover, focus, small state changes */
|
|
154
|
+
--motion-duration-normal: 250ms; /* entrada/saída de elementos pequenos */
|
|
155
|
+
--motion-duration-slow: 400ms; /* modais, drawers, page transitions */
|
|
156
|
+
--motion-duration-x-slow: 600ms; /* onboarding, animações elaboradas */
|
|
157
|
+
|
|
158
|
+
--motion-easing-standard: cubic-bezier(0.4, 0, 0.2, 1); /* padrão — entrada e saída suave */
|
|
159
|
+
--motion-easing-decelerate: cubic-bezier(0, 0, 0.2, 1); /* elementos entrando na tela */
|
|
160
|
+
--motion-easing-accelerate: cubic-bezier(0.4, 0, 1, 1); /* elementos saindo da tela */
|
|
161
|
+
--motion-easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /* bounce suave para feedback */
|
|
169
162
|
--z-index-dropdown: 1000;
|
|
170
163
|
--z-index-modal-backdrop: 1040;
|
|
171
164
|
--z-index-modal: 1050;
|
|
@@ -182,8 +175,9 @@ html {
|
|
|
182
175
|
--spacing-3xl: 2.5rem;
|
|
183
176
|
}
|
|
184
177
|
|
|
185
|
-
[data-theme=
|
|
178
|
+
[data-theme='dark'],
|
|
186
179
|
.theme-dark {
|
|
180
|
+
--bg-page: #0a0d12;
|
|
187
181
|
--bg-primary: #0f141a;
|
|
188
182
|
--bg-secondary: #161b22;
|
|
189
183
|
--bg-tertiary: #1b222b;
|
|
@@ -199,11 +193,7 @@ html {
|
|
|
199
193
|
--md-primary: var(--brand-verde-vibrante);
|
|
200
194
|
--md-on-primary: #062126;
|
|
201
195
|
--primary-color: var(--brand-verde-vibrante);
|
|
202
|
-
--primary-color-light: color-mix(
|
|
203
|
-
in srgb,
|
|
204
|
-
var(--brand-verde-vibrante) 85%,
|
|
205
|
-
white
|
|
206
|
-
);
|
|
196
|
+
--primary-color-light: color-mix(in srgb, var(--brand-verde-vibrante) 85%, white);
|
|
207
197
|
--primary-color-hover: var(--brand-verde-profundo);
|
|
208
198
|
--secondary-color: var(--brand-azul-acinzentado);
|
|
209
199
|
--color-primary: var(--primary-color);
|
|
@@ -229,73 +219,73 @@ html {
|
|
|
229
219
|
PALETAS DE BOTÃO (guia de marca)
|
|
230
220
|
Use data-button-palette no pai (ex.: body) ou prop palette no Button.
|
|
231
221
|
============================================================ */
|
|
232
|
-
[data-button-palette=
|
|
222
|
+
[data-button-palette='verde-vibrante'],
|
|
233
223
|
.btn--palette-verde-vibrante.btn--primary {
|
|
234
224
|
--md-primary: var(--brand-verde-vibrante);
|
|
235
225
|
--primary-color-hover: var(--brand-verde-profundo);
|
|
236
226
|
}
|
|
237
|
-
[data-button-palette=
|
|
227
|
+
[data-button-palette='verde-vibrante'] .btn--primary {
|
|
238
228
|
--md-primary: var(--brand-verde-vibrante);
|
|
239
229
|
--primary-color-hover: var(--brand-verde-profundo);
|
|
240
230
|
}
|
|
241
231
|
|
|
242
|
-
[data-button-palette=
|
|
232
|
+
[data-button-palette='verde-profundo'],
|
|
243
233
|
.btn--palette-verde-profundo.btn--primary {
|
|
244
234
|
--md-primary: var(--brand-verde-profundo);
|
|
245
235
|
--primary-color-hover: var(--brand-grafite-azulado);
|
|
246
236
|
}
|
|
247
|
-
[data-button-palette=
|
|
237
|
+
[data-button-palette='verde-profundo'] .btn--primary {
|
|
248
238
|
--md-primary: var(--brand-verde-profundo);
|
|
249
239
|
--primary-color-hover: var(--brand-grafite-azulado);
|
|
250
240
|
}
|
|
251
241
|
|
|
252
|
-
[data-button-palette=
|
|
242
|
+
[data-button-palette='grafite-azulado'],
|
|
253
243
|
.btn--palette-grafite-azulado.btn--primary {
|
|
254
244
|
--md-primary: var(--brand-grafite-azulado);
|
|
255
245
|
--primary-color-hover: var(--brand-cinza-escuro);
|
|
256
246
|
}
|
|
257
|
-
[data-button-palette=
|
|
247
|
+
[data-button-palette='grafite-azulado'] .btn--primary {
|
|
258
248
|
--md-primary: var(--brand-grafite-azulado);
|
|
259
249
|
--primary-color-hover: var(--brand-cinza-escuro);
|
|
260
250
|
}
|
|
261
251
|
|
|
262
|
-
[data-button-palette=
|
|
252
|
+
[data-button-palette='azul-acinzentado'],
|
|
263
253
|
.btn--palette-azul-acinzentado.btn--primary {
|
|
264
254
|
--md-primary: var(--brand-azul-acinzentado);
|
|
265
255
|
--primary-color-hover: var(--brand-grafite-azulado);
|
|
266
256
|
}
|
|
267
|
-
[data-button-palette=
|
|
257
|
+
[data-button-palette='azul-acinzentado'] .btn--primary {
|
|
268
258
|
--md-primary: var(--brand-azul-acinzentado);
|
|
269
259
|
--primary-color-hover: var(--brand-grafite-azulado);
|
|
270
260
|
}
|
|
271
261
|
|
|
272
|
-
[data-button-palette=
|
|
262
|
+
[data-button-palette='cinza-medio'],
|
|
273
263
|
.btn--palette-cinza-medio.btn--primary {
|
|
274
264
|
--md-primary: var(--brand-cinza-medio);
|
|
275
265
|
--primary-color-hover: var(--brand-cinza-escuro);
|
|
276
266
|
}
|
|
277
|
-
[data-button-palette=
|
|
267
|
+
[data-button-palette='cinza-medio'] .btn--primary {
|
|
278
268
|
--md-primary: var(--brand-cinza-medio);
|
|
279
269
|
--primary-color-hover: var(--brand-cinza-escuro);
|
|
280
270
|
}
|
|
281
271
|
|
|
282
|
-
[data-button-palette=
|
|
272
|
+
[data-button-palette='cinza-escuro'],
|
|
283
273
|
.btn--palette-cinza-escuro.btn--primary {
|
|
284
274
|
--md-primary: var(--brand-cinza-escuro);
|
|
285
275
|
--primary-color-hover: var(--brand-preto);
|
|
286
276
|
}
|
|
287
|
-
[data-button-palette=
|
|
277
|
+
[data-button-palette='cinza-escuro'] .btn--primary {
|
|
288
278
|
--md-primary: var(--brand-cinza-escuro);
|
|
289
279
|
--primary-color-hover: var(--brand-preto);
|
|
290
280
|
}
|
|
291
281
|
|
|
292
|
-
[data-button-palette=
|
|
282
|
+
[data-button-palette='off-white'],
|
|
293
283
|
.btn--palette-off-white.btn--primary {
|
|
294
284
|
--md-primary: var(--brand-off-white);
|
|
295
285
|
--md-on-primary: var(--brand-grafite-azulado);
|
|
296
286
|
--primary-color-hover: var(--brand-branco);
|
|
297
287
|
}
|
|
298
|
-
[data-button-palette=
|
|
288
|
+
[data-button-palette='off-white'] .btn--primary {
|
|
299
289
|
--md-primary: var(--brand-off-white);
|
|
300
290
|
--md-on-primary: var(--brand-grafite-azulado);
|
|
301
291
|
--primary-color-hover: var(--brand-branco);
|
package/dist/utils/cn.d.ts
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { type ClassValue } from 'clsx';
|
|
2
|
+
/**
|
|
3
|
+
* Utilitário de composição de classes Tailwind.
|
|
4
|
+
* Usa clsx para lógica condicional e tailwind-merge para resolver
|
|
5
|
+
* conflitos de classes (ex.: bg-red-500 + bg-blue-500 → bg-blue-500).
|
|
6
|
+
*/
|
|
7
|
+
export declare const cn: (...inputs: ClassValue[]) => string;
|
package/dist/utils/cn.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.js","sources":["../../src/utils/cn.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Utilitário de composição de classes Tailwind.\n * Usa clsx para lógica condicional e tailwind-merge para resolver\n * conflitos de classes (ex.: bg-red-500 + bg-blue-500 → bg-blue-500).\n */\nexport const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n"],"names":["cn","inputs","twMerge","clsx"],"mappings":";;AAQO,MAAMA,IAAK,IAAIC,MAAyBC,EAAQC,EAAKF,CAAM,CAAC;"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sbkbs/ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Biblioteca de componentes UI SBK BS",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/oficios-ui.umd.cjs",
|
|
7
|
-
"module": "./dist/
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
9
|
"exports": {
|
|
10
10
|
".": {
|
|
11
11
|
"types": "./dist/index.d.ts",
|
|
12
|
-
"import": "./dist/
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
13
|
"require": "./dist/oficios-ui.umd.cjs",
|
|
14
|
-
"default": "./dist/
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
15
|
},
|
|
16
16
|
"./theme.css": "./dist/theme.css",
|
|
17
17
|
"./styles.css": "./dist/oficios-ui.css"
|
|
@@ -26,43 +26,71 @@
|
|
|
26
26
|
"clean": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
27
27
|
"build": "vite build && tsc -p tsconfig.build.json && node -e \"require('fs').copyFileSync('src/theme/theme.css', 'dist/theme.css')\"",
|
|
28
28
|
"dev": "vite build --watch",
|
|
29
|
-
"prepublishOnly": "npm run clean && npm run build && npm run typecheck",
|
|
29
|
+
"prepublishOnly": "npm run clean && npm run build && npm run typecheck && npm run lint",
|
|
30
30
|
"playground": "vite",
|
|
31
31
|
"storybook": "storybook dev -p 6006",
|
|
32
32
|
"build-storybook": "storybook build",
|
|
33
33
|
"test:visual": "playwright test",
|
|
34
34
|
"test": "vitest run",
|
|
35
|
+
"test:coverage": "vitest run --coverage",
|
|
35
36
|
"test:watch": "vitest",
|
|
37
|
+
"lint": "eslint .",
|
|
38
|
+
"lint:fix": "eslint . --fix",
|
|
39
|
+
"format": "prettier --write \"src/**/*.{ts,tsx,css}\"",
|
|
40
|
+
"format:check": "prettier --check \"src/**/*.{ts,tsx,css}\"",
|
|
41
|
+
"prepare": "cd .. && husky",
|
|
36
42
|
"publish:public": "npm publish --access public",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"release:patch": "npm version patch && npm run publish:public",
|
|
43
|
+
"changeset": "changeset",
|
|
44
|
+
"changeset:version": "changeset version",
|
|
40
45
|
"typecheck": "tsc --noEmit -p tsconfig.build.json"
|
|
41
46
|
},
|
|
47
|
+
"lint-staged": {
|
|
48
|
+
"src/**/*.{ts,tsx}": [
|
|
49
|
+
"eslint --fix",
|
|
50
|
+
"prettier --write"
|
|
51
|
+
],
|
|
52
|
+
"src/**/*.css": [
|
|
53
|
+
"prettier --write"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
42
56
|
"peerDependencies": {
|
|
43
57
|
"react": ">=18.0.0",
|
|
44
58
|
"react-dom": ">=18.0.0"
|
|
45
59
|
},
|
|
46
60
|
"devDependencies": {
|
|
61
|
+
"@changesets/cli": "^2.31.0",
|
|
62
|
+
"@eslint/js": "^9.39.4",
|
|
63
|
+
"@playwright/test": "^1.59.1",
|
|
47
64
|
"@storybook/addon-a11y": "^8.6.14",
|
|
48
65
|
"@storybook/addon-essentials": "^8.6.14",
|
|
49
66
|
"@storybook/react-vite": "^8.6.14",
|
|
50
|
-
"@
|
|
67
|
+
"@tailwindcss/vite": "^4.2.2",
|
|
68
|
+
"@testing-library/dom": "^10.4.1",
|
|
51
69
|
"@testing-library/jest-dom": "^6.8.0",
|
|
52
70
|
"@testing-library/react": "^16.3.0",
|
|
71
|
+
"@types/node": "^25.6.0",
|
|
53
72
|
"@types/react": "^18.2.43",
|
|
54
73
|
"@types/react-dom": "^18.2.17",
|
|
55
|
-
"
|
|
74
|
+
"@typescript-eslint/eslint-plugin": "^8.58.2",
|
|
75
|
+
"@typescript-eslint/parser": "^8.58.2",
|
|
56
76
|
"@vitejs/plugin-react": "^5.0.4",
|
|
57
|
-
"
|
|
58
|
-
"
|
|
77
|
+
"@vitest/coverage-v8": "^2.1.9",
|
|
78
|
+
"eslint": "^9.39.4",
|
|
79
|
+
"eslint-config-prettier": "^10.1.8",
|
|
80
|
+
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
81
|
+
"eslint-plugin-react": "^7.37.5",
|
|
82
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
83
|
+
"husky": "^9.1.7",
|
|
84
|
+
"jsdom": "^26.1.0",
|
|
85
|
+
"lint-staged": "^16.4.0",
|
|
86
|
+
"prettier": "^3.8.3",
|
|
59
87
|
"react": "^18.2.0",
|
|
60
88
|
"react-dom": "^18.2.0",
|
|
61
|
-
"
|
|
89
|
+
"storybook": "^8.6.14",
|
|
90
|
+
"tailwindcss": "^4.2.2",
|
|
62
91
|
"typescript": "^5.9.3",
|
|
63
|
-
"vitest": "^2.1.8",
|
|
64
92
|
"vite": "^6.3.5",
|
|
65
|
-
"
|
|
93
|
+
"vitest": "^2.1.8"
|
|
66
94
|
},
|
|
67
95
|
"keywords": [
|
|
68
96
|
"oficios",
|
|
@@ -75,5 +103,12 @@
|
|
|
75
103
|
"license": "ISC",
|
|
76
104
|
"publishConfig": {
|
|
77
105
|
"access": "public"
|
|
106
|
+
},
|
|
107
|
+
"dependencies": {
|
|
108
|
+
"clsx": "^2.1.1",
|
|
109
|
+
"tailwind-merge": "^3.5.0"
|
|
110
|
+
},
|
|
111
|
+
"overrides": {
|
|
112
|
+
"vite": "$vite"
|
|
78
113
|
}
|
|
79
114
|
}
|