@freitas-ds/theme 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +20 -0
- package/dist/index.d.mts +89 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +257 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +58 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Eric Freitas Sampaio
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# @freitas-ds/theme
|
|
2
|
+
|
|
3
|
+
Motor de temas do Freitas DS. Gera, resolve e aplica tokens semânticos por seed color ou configuração manual, sem depender de React.
|
|
4
|
+
|
|
5
|
+
## Instalação
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add @freitas-ds/theme
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Uso
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { applyTheme, createThemeFromSeed } from "@freitas-ds/theme"
|
|
15
|
+
|
|
16
|
+
const theme = createThemeFromSeed("#2563eb", { mode: "light" })
|
|
17
|
+
applyTheme(theme)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Consulte a [documentação completa](https://github.com/freitaseric/freitas-ds) para conhecer temas manuais, tipos e tokens disponíveis.
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
//#region src/types.d.ts
|
|
2
|
+
type FreitasThemeMode = "light" | "dark";
|
|
3
|
+
type FreitasColorScheme = {
|
|
4
|
+
primary: string;
|
|
5
|
+
onPrimary: string;
|
|
6
|
+
primaryContainer: string;
|
|
7
|
+
onPrimaryContainer: string;
|
|
8
|
+
secondary: string;
|
|
9
|
+
onSecondary: string;
|
|
10
|
+
secondaryContainer: string;
|
|
11
|
+
onSecondaryContainer: string;
|
|
12
|
+
tertiary: string;
|
|
13
|
+
onTertiary: string;
|
|
14
|
+
tertiaryContainer: string;
|
|
15
|
+
onTertiaryContainer: string;
|
|
16
|
+
surface: string;
|
|
17
|
+
onSurface: string;
|
|
18
|
+
surfaceVariant: string;
|
|
19
|
+
onSurfaceVariant: string;
|
|
20
|
+
surfaceContainer: string;
|
|
21
|
+
surfaceContainerHigh: string;
|
|
22
|
+
outline: string;
|
|
23
|
+
outlineVariant: string;
|
|
24
|
+
error: string;
|
|
25
|
+
onError: string;
|
|
26
|
+
errorContainer: string;
|
|
27
|
+
onErrorContainer: string;
|
|
28
|
+
success: string;
|
|
29
|
+
onSuccess: string;
|
|
30
|
+
successContainer: string;
|
|
31
|
+
onSuccessContainer: string;
|
|
32
|
+
warning: string;
|
|
33
|
+
onWarning: string;
|
|
34
|
+
warningContainer: string;
|
|
35
|
+
onWarningContainer: string;
|
|
36
|
+
info: string;
|
|
37
|
+
onInfo: string;
|
|
38
|
+
infoContainer: string;
|
|
39
|
+
onInfoContainer: string;
|
|
40
|
+
ring: string;
|
|
41
|
+
};
|
|
42
|
+
type FreitasRadiusScheme = {
|
|
43
|
+
sm: string;
|
|
44
|
+
md: string;
|
|
45
|
+
lg: string;
|
|
46
|
+
xl: string;
|
|
47
|
+
full: string;
|
|
48
|
+
};
|
|
49
|
+
type FreitasTypographyScheme = {
|
|
50
|
+
fontSans: string;
|
|
51
|
+
fontMono: string;
|
|
52
|
+
};
|
|
53
|
+
type FreitasTheme = {
|
|
54
|
+
mode: FreitasThemeMode;
|
|
55
|
+
colors: FreitasColorScheme;
|
|
56
|
+
radius: FreitasRadiusScheme;
|
|
57
|
+
typography: FreitasTypographyScheme;
|
|
58
|
+
};
|
|
59
|
+
type FreitasManualThemeInput = {
|
|
60
|
+
mode?: FreitasThemeMode;
|
|
61
|
+
colors?: Partial<FreitasColorScheme>;
|
|
62
|
+
radius?: Partial<FreitasRadiusScheme>;
|
|
63
|
+
typography?: Partial<FreitasTypographyScheme>;
|
|
64
|
+
};
|
|
65
|
+
type FreitasSeedThemeInput = FreitasManualThemeInput & {
|
|
66
|
+
seed: string;
|
|
67
|
+
};
|
|
68
|
+
type FreitasThemeInput = FreitasManualThemeInput | FreitasSeedThemeInput;
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/apply-theme.d.ts
|
|
71
|
+
declare function themeToCssVariables(theme: FreitasTheme): Record<string, string>;
|
|
72
|
+
declare function applyTheme(theme: FreitasTheme, element?: HTMLElement): void;
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/create-theme-from-seed.d.ts
|
|
75
|
+
type CreateThemeFromSeedOptions = {
|
|
76
|
+
mode?: FreitasThemeMode;
|
|
77
|
+
colors?: Partial<FreitasColorScheme>;
|
|
78
|
+
};
|
|
79
|
+
declare function createThemeFromSeed(seed: string, options?: CreateThemeFromSeedOptions): FreitasTheme;
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region src/default-theme.d.ts
|
|
82
|
+
declare const defaultLightTheme: FreitasTheme;
|
|
83
|
+
declare const defaultDarkTheme: FreitasTheme;
|
|
84
|
+
//#endregion
|
|
85
|
+
//#region src/resolve-theme.d.ts
|
|
86
|
+
declare function resolveTheme(input?: FreitasThemeInput): FreitasTheme;
|
|
87
|
+
//#endregion
|
|
88
|
+
export { FreitasColorScheme, FreitasManualThemeInput, FreitasRadiusScheme, FreitasSeedThemeInput, FreitasTheme, FreitasThemeInput, FreitasThemeMode, FreitasTypographyScheme, applyTheme, createThemeFromSeed, defaultDarkTheme, defaultLightTheme, resolveTheme, themeToCssVariables };
|
|
89
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/apply-theme.ts","../src/create-theme-from-seed.ts","../src/default-theme.ts","../src/resolve-theme.ts"],"mappings":";KAAY,gBAAA;AAAA,KAEA,kBAAA;EACV,OAAA;EACA,SAAA;EACA,gBAAA;EACA,kBAAA;EAEA,SAAA;EACA,WAAA;EACA,kBAAA;EACA,oBAAA;EAEA,QAAA;EACA,UAAA;EACA,iBAAA;EACA,mBAAA;EAEA,OAAA;EACA,SAAA;EACA,cAAA;EACA,gBAAA;EACA,gBAAA;EACA,oBAAA;EAEA,OAAA;EACA,cAAA;EAEA,KAAA;EACA,OAAA;EACA,cAAA;EACA,gBAAA;EAEA,OAAA;EACA,SAAA;EACA,gBAAA;EACA,kBAAA;EAEA,OAAA;EACA,SAAA;EACA,gBAAA;EACA,kBAAA;EAEA,IAAA;EACA,MAAA;EACA,aAAA;EACA,eAAA;EAEA,IAAA;AAAA;AAAA,KAGU,mBAAA;EACV,EAAA;EACA,EAAA;EACA,EAAA;EACA,EAAA;EACA,IAAA;AAAA;AAAA,KAGU,uBAAA;EACV,QAAA;EACA,QAAQ;AAAA;AAAA,KAGE,YAAA;EACV,IAAA,EAAM,gBAAA;EACN,MAAA,EAAQ,kBAAA;EACR,MAAA,EAAQ,mBAAA;EACR,UAAA,EAAY,uBAAA;AAAA;AAAA,KAGF,uBAAA;EACV,IAAA,GAAO,gBAAA;EACP,MAAA,GAAS,OAAA,CAAQ,kBAAA;EACjB,MAAA,GAAS,OAAA,CAAQ,mBAAA;EACjB,UAAA,GAAa,OAAA,CAAQ,uBAAA;AAAA;AAAA,KAGX,qBAAA,GAAwB,uBAAuB;EACzD,IAAI;AAAA;AAAA,KAGM,iBAAA,GAAoB,uBAAA,GAA0B,qBAAqB;;;iBChF/D,mBAAA,CAAoB,KAAA,EAAO,YAAA,GAAe,MAAM;AAAA,iBA4DhD,UAAA,CAAW,KAAA,EAAO,YAAA,EAAc,OAAA,GAAU,WAAW;;;KCrDhE,0BAAA;EACH,IAAA,GAAO,gBAAA;EACP,MAAA,GAAS,OAAA,CAAQ,kBAAA;AAAA;AAAA,iBAaH,mBAAA,CACd,IAAA,UACA,OAAA,GAAS,0BAAA,GACR,YAAY;;;cCzBF,iBAAA,EAAmB,YA6D/B;AAAA,cAEY,gBAAA,EAAkB,YAmD9B;;;iBChHe,YAAA,CAAa,KAAA,GAAQ,iBAAA,GAAoB,YAAY"}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { argbFromHex, hexFromArgb, themeFromSourceColor } from "@material/material-color-utilities";
|
|
2
|
+
//#region src/apply-theme.ts
|
|
3
|
+
function themeToCssVariables(theme) {
|
|
4
|
+
return {
|
|
5
|
+
"--fds-color-primary": theme.colors.primary,
|
|
6
|
+
"--fds-color-on-primary": theme.colors.onPrimary,
|
|
7
|
+
"--fds-color-primary-container": theme.colors.primaryContainer,
|
|
8
|
+
"--fds-color-on-primary-container": theme.colors.onPrimaryContainer,
|
|
9
|
+
"--fds-color-secondary": theme.colors.secondary,
|
|
10
|
+
"--fds-color-on-secondary": theme.colors.onSecondary,
|
|
11
|
+
"--fds-color-secondary-container": theme.colors.secondaryContainer,
|
|
12
|
+
"--fds-color-on-secondary-container": theme.colors.onSecondaryContainer,
|
|
13
|
+
"--fds-color-tertiary": theme.colors.tertiary,
|
|
14
|
+
"--fds-color-on-tertiary": theme.colors.onTertiary,
|
|
15
|
+
"--fds-color-tertiary-container": theme.colors.tertiaryContainer,
|
|
16
|
+
"--fds-color-on-tertiary-container": theme.colors.onTertiaryContainer,
|
|
17
|
+
"--fds-color-surface": theme.colors.surface,
|
|
18
|
+
"--fds-color-on-surface": theme.colors.onSurface,
|
|
19
|
+
"--fds-color-surface-variant": theme.colors.surfaceVariant,
|
|
20
|
+
"--fds-color-on-surface-variant": theme.colors.onSurfaceVariant,
|
|
21
|
+
"--fds-color-surface-container": theme.colors.surfaceContainer,
|
|
22
|
+
"--fds-color-surface-container-high": theme.colors.surfaceContainerHigh,
|
|
23
|
+
"--fds-color-outline": theme.colors.outline,
|
|
24
|
+
"--fds-color-outline-variant": theme.colors.outlineVariant,
|
|
25
|
+
"--fds-color-error": theme.colors.error,
|
|
26
|
+
"--fds-color-on-error": theme.colors.onError,
|
|
27
|
+
"--fds-color-error-container": theme.colors.errorContainer,
|
|
28
|
+
"--fds-color-on-error-container": theme.colors.onErrorContainer,
|
|
29
|
+
"--fds-color-success": theme.colors.success,
|
|
30
|
+
"--fds-color-on-success": theme.colors.onSuccess,
|
|
31
|
+
"--fds-color-success-container": theme.colors.successContainer,
|
|
32
|
+
"--fds-color-on-success-container": theme.colors.onSuccessContainer,
|
|
33
|
+
"--fds-color-warning": theme.colors.warning,
|
|
34
|
+
"--fds-color-on-warning": theme.colors.onWarning,
|
|
35
|
+
"--fds-color-warning-container": theme.colors.warningContainer,
|
|
36
|
+
"--fds-color-on-warning-container": theme.colors.onWarningContainer,
|
|
37
|
+
"--fds-color-info": theme.colors.info,
|
|
38
|
+
"--fds-color-on-info": theme.colors.onInfo,
|
|
39
|
+
"--fds-color-info-container": theme.colors.infoContainer,
|
|
40
|
+
"--fds-color-on-info-container": theme.colors.onInfoContainer,
|
|
41
|
+
"--fds-color-ring": theme.colors.ring,
|
|
42
|
+
"--fds-radius-sm": theme.radius.sm,
|
|
43
|
+
"--fds-radius-md": theme.radius.md,
|
|
44
|
+
"--fds-radius-lg": theme.radius.lg,
|
|
45
|
+
"--fds-radius-xl": theme.radius.xl,
|
|
46
|
+
"--fds-radius-full": theme.radius.full,
|
|
47
|
+
"--fds-font-sans": theme.typography.fontSans,
|
|
48
|
+
"--fds-font-mono": theme.typography.fontMono
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function applyTheme(theme, element) {
|
|
52
|
+
if (typeof document === "undefined") return;
|
|
53
|
+
const target = element ?? document.documentElement;
|
|
54
|
+
const variables = themeToCssVariables(theme);
|
|
55
|
+
for (const [name, value] of Object.entries(variables)) target.style.setProperty(name, value);
|
|
56
|
+
target.dataset.fdsTheme = theme.mode;
|
|
57
|
+
target.style.colorScheme = theme.mode;
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
//#region src/default-theme.ts
|
|
61
|
+
const defaultLightTheme = {
|
|
62
|
+
mode: "light",
|
|
63
|
+
colors: {
|
|
64
|
+
primary: "#2563eb",
|
|
65
|
+
onPrimary: "#ffffff",
|
|
66
|
+
primaryContainer: "#dbeafe",
|
|
67
|
+
onPrimaryContainer: "#172554",
|
|
68
|
+
secondary: "#475569",
|
|
69
|
+
onSecondary: "#ffffff",
|
|
70
|
+
secondaryContainer: "#e2e8f0",
|
|
71
|
+
onSecondaryContainer: "#0f172a",
|
|
72
|
+
tertiary: "#7c3aed",
|
|
73
|
+
onTertiary: "#ffffff",
|
|
74
|
+
tertiaryContainer: "#ede9fe",
|
|
75
|
+
onTertiaryContainer: "#2e1065",
|
|
76
|
+
surface: "#ffffff",
|
|
77
|
+
onSurface: "#0f172a",
|
|
78
|
+
surfaceVariant: "#f1f5f9",
|
|
79
|
+
onSurfaceVariant: "#475569",
|
|
80
|
+
surfaceContainer: "#f8fafc",
|
|
81
|
+
surfaceContainerHigh: "#f1f5f9",
|
|
82
|
+
outline: "#94a3b8",
|
|
83
|
+
outlineVariant: "#cbd5e1",
|
|
84
|
+
error: "#b91c1c",
|
|
85
|
+
onError: "#ffffff",
|
|
86
|
+
errorContainer: "#fee2e2",
|
|
87
|
+
onErrorContainer: "#450a0a",
|
|
88
|
+
success: "#15803d",
|
|
89
|
+
onSuccess: "#ffffff",
|
|
90
|
+
successContainer: "#dcfce7",
|
|
91
|
+
onSuccessContainer: "#052e16",
|
|
92
|
+
warning: "#b45309",
|
|
93
|
+
onWarning: "#ffffff",
|
|
94
|
+
warningContainer: "#fef3c7",
|
|
95
|
+
onWarningContainer: "#451a03",
|
|
96
|
+
info: "#0369a1",
|
|
97
|
+
onInfo: "#ffffff",
|
|
98
|
+
infoContainer: "#e0f2fe",
|
|
99
|
+
onInfoContainer: "#082f49",
|
|
100
|
+
ring: "#2563eb"
|
|
101
|
+
},
|
|
102
|
+
radius: {
|
|
103
|
+
sm: "0.375rem",
|
|
104
|
+
md: "0.625rem",
|
|
105
|
+
lg: "0.875rem",
|
|
106
|
+
xl: "1.25rem",
|
|
107
|
+
full: "999px"
|
|
108
|
+
},
|
|
109
|
+
typography: {
|
|
110
|
+
fontSans: "Inter, ui-sans-serif, system-ui, sans-serif",
|
|
111
|
+
fontMono: "JetBrains Mono, ui-monospace, SFMono-Regular, monospace"
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const defaultDarkTheme = {
|
|
115
|
+
...defaultLightTheme,
|
|
116
|
+
mode: "dark",
|
|
117
|
+
colors: {
|
|
118
|
+
primary: "#93c5fd",
|
|
119
|
+
onPrimary: "#172554",
|
|
120
|
+
primaryContainer: "#1e3a8a",
|
|
121
|
+
onPrimaryContainer: "#dbeafe",
|
|
122
|
+
secondary: "#cbd5e1",
|
|
123
|
+
onSecondary: "#0f172a",
|
|
124
|
+
secondaryContainer: "#334155",
|
|
125
|
+
onSecondaryContainer: "#f8fafc",
|
|
126
|
+
tertiary: "#c4b5fd",
|
|
127
|
+
onTertiary: "#2e1065",
|
|
128
|
+
tertiaryContainer: "#5b21b6",
|
|
129
|
+
onTertiaryContainer: "#ede9fe",
|
|
130
|
+
surface: "#020617",
|
|
131
|
+
onSurface: "#f8fafc",
|
|
132
|
+
surfaceVariant: "#1e293b",
|
|
133
|
+
onSurfaceVariant: "#cbd5e1",
|
|
134
|
+
surfaceContainer: "#0f172a",
|
|
135
|
+
surfaceContainerHigh: "#1e293b",
|
|
136
|
+
outline: "#64748b",
|
|
137
|
+
outlineVariant: "#334155",
|
|
138
|
+
error: "#fca5a5",
|
|
139
|
+
onError: "#450a0a",
|
|
140
|
+
errorContainer: "#7f1d1d",
|
|
141
|
+
onErrorContainer: "#fee2e2",
|
|
142
|
+
success: "#86efac",
|
|
143
|
+
onSuccess: "#052e16",
|
|
144
|
+
successContainer: "#14532d",
|
|
145
|
+
onSuccessContainer: "#dcfce7",
|
|
146
|
+
warning: "#fcd34d",
|
|
147
|
+
onWarning: "#451a03",
|
|
148
|
+
warningContainer: "#78350f",
|
|
149
|
+
onWarningContainer: "#fef3c7",
|
|
150
|
+
info: "#7dd3fc",
|
|
151
|
+
onInfo: "#082f49",
|
|
152
|
+
infoContainer: "#075985",
|
|
153
|
+
onInfoContainer: "#e0f2fe",
|
|
154
|
+
ring: "#93c5fd"
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
//#endregion
|
|
158
|
+
//#region src/create-theme-from-seed.ts
|
|
159
|
+
function pickColor(raw, key, fallback) {
|
|
160
|
+
const value = raw[key];
|
|
161
|
+
if (typeof value === "number") return hexFromArgb(value);
|
|
162
|
+
return fallback;
|
|
163
|
+
}
|
|
164
|
+
function createThemeFromSeed(seed, options = {}) {
|
|
165
|
+
const mode = options.mode ?? "light";
|
|
166
|
+
const fallbackTheme = mode === "dark" ? defaultDarkTheme : defaultLightTheme;
|
|
167
|
+
const materialTheme = themeFromSourceColor(argbFromHex(seed));
|
|
168
|
+
const raw = (mode === "dark" ? materialTheme.schemes.dark : materialTheme.schemes.light).toJSON();
|
|
169
|
+
return {
|
|
170
|
+
mode,
|
|
171
|
+
colors: {
|
|
172
|
+
primary: pickColor(raw, "primary", fallbackTheme.colors.primary),
|
|
173
|
+
onPrimary: pickColor(raw, "onPrimary", fallbackTheme.colors.onPrimary),
|
|
174
|
+
primaryContainer: pickColor(raw, "primaryContainer", fallbackTheme.colors.primaryContainer),
|
|
175
|
+
onPrimaryContainer: pickColor(raw, "onPrimaryContainer", fallbackTheme.colors.onPrimaryContainer),
|
|
176
|
+
secondary: pickColor(raw, "secondary", fallbackTheme.colors.secondary),
|
|
177
|
+
onSecondary: pickColor(raw, "onSecondary", fallbackTheme.colors.onSecondary),
|
|
178
|
+
secondaryContainer: pickColor(raw, "secondaryContainer", fallbackTheme.colors.secondaryContainer),
|
|
179
|
+
onSecondaryContainer: pickColor(raw, "onSecondaryContainer", fallbackTheme.colors.onSecondaryContainer),
|
|
180
|
+
tertiary: pickColor(raw, "tertiary", fallbackTheme.colors.tertiary),
|
|
181
|
+
onTertiary: pickColor(raw, "onTertiary", fallbackTheme.colors.onTertiary),
|
|
182
|
+
tertiaryContainer: pickColor(raw, "tertiaryContainer", fallbackTheme.colors.tertiaryContainer),
|
|
183
|
+
onTertiaryContainer: pickColor(raw, "onTertiaryContainer", fallbackTheme.colors.onTertiaryContainer),
|
|
184
|
+
surface: pickColor(raw, "surface", fallbackTheme.colors.surface),
|
|
185
|
+
onSurface: pickColor(raw, "onSurface", fallbackTheme.colors.onSurface),
|
|
186
|
+
surfaceVariant: pickColor(raw, "surfaceVariant", fallbackTheme.colors.surfaceVariant),
|
|
187
|
+
onSurfaceVariant: pickColor(raw, "onSurfaceVariant", fallbackTheme.colors.onSurfaceVariant),
|
|
188
|
+
surfaceContainer: pickColor(raw, "surfaceContainer", pickColor(raw, "surfaceVariant", fallbackTheme.colors.surfaceContainer)),
|
|
189
|
+
surfaceContainerHigh: pickColor(raw, "surfaceContainerHigh", pickColor(raw, "surfaceVariant", fallbackTheme.colors.surfaceContainerHigh)),
|
|
190
|
+
outline: pickColor(raw, "outline", fallbackTheme.colors.outline),
|
|
191
|
+
outlineVariant: pickColor(raw, "outlineVariant", fallbackTheme.colors.outlineVariant),
|
|
192
|
+
error: pickColor(raw, "error", fallbackTheme.colors.error),
|
|
193
|
+
onError: pickColor(raw, "onError", fallbackTheme.colors.onError),
|
|
194
|
+
errorContainer: pickColor(raw, "errorContainer", fallbackTheme.colors.errorContainer),
|
|
195
|
+
onErrorContainer: pickColor(raw, "onErrorContainer", fallbackTheme.colors.onErrorContainer),
|
|
196
|
+
success: fallbackTheme.colors.success,
|
|
197
|
+
onSuccess: fallbackTheme.colors.onSuccess,
|
|
198
|
+
successContainer: fallbackTheme.colors.successContainer,
|
|
199
|
+
onSuccessContainer: fallbackTheme.colors.onSuccessContainer,
|
|
200
|
+
warning: fallbackTheme.colors.warning,
|
|
201
|
+
onWarning: fallbackTheme.colors.onWarning,
|
|
202
|
+
warningContainer: fallbackTheme.colors.warningContainer,
|
|
203
|
+
onWarningContainer: fallbackTheme.colors.onWarningContainer,
|
|
204
|
+
info: fallbackTheme.colors.info,
|
|
205
|
+
onInfo: fallbackTheme.colors.onInfo,
|
|
206
|
+
infoContainer: fallbackTheme.colors.infoContainer,
|
|
207
|
+
onInfoContainer: fallbackTheme.colors.onInfoContainer,
|
|
208
|
+
ring: pickColor(raw, "primary", fallbackTheme.colors.ring),
|
|
209
|
+
...options.colors
|
|
210
|
+
},
|
|
211
|
+
radius: fallbackTheme.radius,
|
|
212
|
+
typography: fallbackTheme.typography
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
//#endregion
|
|
216
|
+
//#region src/resolve-theme.ts
|
|
217
|
+
function resolveTheme(input) {
|
|
218
|
+
if (!input) return defaultLightTheme;
|
|
219
|
+
const mode = input.mode ?? "light";
|
|
220
|
+
if ("seed" in input && input.seed) {
|
|
221
|
+
const seededTheme = createThemeFromSeed(input.seed, {
|
|
222
|
+
mode,
|
|
223
|
+
colors: input.colors
|
|
224
|
+
});
|
|
225
|
+
return {
|
|
226
|
+
...seededTheme,
|
|
227
|
+
radius: {
|
|
228
|
+
...seededTheme.radius,
|
|
229
|
+
...input.radius
|
|
230
|
+
},
|
|
231
|
+
typography: {
|
|
232
|
+
...seededTheme.typography,
|
|
233
|
+
...input.typography
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
const fallbackTheme = mode === "dark" ? defaultDarkTheme : defaultLightTheme;
|
|
238
|
+
return {
|
|
239
|
+
mode,
|
|
240
|
+
colors: {
|
|
241
|
+
...fallbackTheme.colors,
|
|
242
|
+
...input.colors
|
|
243
|
+
},
|
|
244
|
+
radius: {
|
|
245
|
+
...fallbackTheme.radius,
|
|
246
|
+
...input.radius
|
|
247
|
+
},
|
|
248
|
+
typography: {
|
|
249
|
+
...fallbackTheme.typography,
|
|
250
|
+
...input.typography
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
//#endregion
|
|
255
|
+
export { applyTheme, createThemeFromSeed, defaultDarkTheme, defaultLightTheme, resolveTheme, themeToCssVariables };
|
|
256
|
+
|
|
257
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/apply-theme.ts","../src/default-theme.ts","../src/create-theme-from-seed.ts","../src/resolve-theme.ts"],"sourcesContent":["import type { FreitasTheme } from \"./types\"\n\nexport function themeToCssVariables(theme: FreitasTheme): Record<string, string> {\n return {\n \"--fds-color-primary\": theme.colors.primary,\n \"--fds-color-on-primary\": theme.colors.onPrimary,\n \"--fds-color-primary-container\": theme.colors.primaryContainer,\n \"--fds-color-on-primary-container\": theme.colors.onPrimaryContainer,\n\n \"--fds-color-secondary\": theme.colors.secondary,\n \"--fds-color-on-secondary\": theme.colors.onSecondary,\n \"--fds-color-secondary-container\": theme.colors.secondaryContainer,\n \"--fds-color-on-secondary-container\": theme.colors.onSecondaryContainer,\n\n \"--fds-color-tertiary\": theme.colors.tertiary,\n \"--fds-color-on-tertiary\": theme.colors.onTertiary,\n \"--fds-color-tertiary-container\": theme.colors.tertiaryContainer,\n \"--fds-color-on-tertiary-container\": theme.colors.onTertiaryContainer,\n\n \"--fds-color-surface\": theme.colors.surface,\n \"--fds-color-on-surface\": theme.colors.onSurface,\n \"--fds-color-surface-variant\": theme.colors.surfaceVariant,\n \"--fds-color-on-surface-variant\": theme.colors.onSurfaceVariant,\n \"--fds-color-surface-container\": theme.colors.surfaceContainer,\n \"--fds-color-surface-container-high\": theme.colors.surfaceContainerHigh,\n\n \"--fds-color-outline\": theme.colors.outline,\n \"--fds-color-outline-variant\": theme.colors.outlineVariant,\n\n \"--fds-color-error\": theme.colors.error,\n \"--fds-color-on-error\": theme.colors.onError,\n \"--fds-color-error-container\": theme.colors.errorContainer,\n \"--fds-color-on-error-container\": theme.colors.onErrorContainer,\n\n \"--fds-color-success\": theme.colors.success,\n \"--fds-color-on-success\": theme.colors.onSuccess,\n \"--fds-color-success-container\": theme.colors.successContainer,\n \"--fds-color-on-success-container\": theme.colors.onSuccessContainer,\n\n \"--fds-color-warning\": theme.colors.warning,\n \"--fds-color-on-warning\": theme.colors.onWarning,\n \"--fds-color-warning-container\": theme.colors.warningContainer,\n \"--fds-color-on-warning-container\": theme.colors.onWarningContainer,\n\n \"--fds-color-info\": theme.colors.info,\n \"--fds-color-on-info\": theme.colors.onInfo,\n \"--fds-color-info-container\": theme.colors.infoContainer,\n \"--fds-color-on-info-container\": theme.colors.onInfoContainer,\n\n \"--fds-color-ring\": theme.colors.ring,\n\n \"--fds-radius-sm\": theme.radius.sm,\n \"--fds-radius-md\": theme.radius.md,\n \"--fds-radius-lg\": theme.radius.lg,\n \"--fds-radius-xl\": theme.radius.xl,\n \"--fds-radius-full\": theme.radius.full,\n\n \"--fds-font-sans\": theme.typography.fontSans,\n \"--fds-font-mono\": theme.typography.fontMono\n }\n}\n\nexport function applyTheme(theme: FreitasTheme, element?: HTMLElement): void {\n if (typeof document === \"undefined\") {\n return\n }\n\n const target = element ?? document.documentElement\n const variables = themeToCssVariables(theme)\n\n for (const [name, value] of Object.entries(variables)) {\n target.style.setProperty(name, value)\n }\n\n target.dataset.fdsTheme = theme.mode\n target.style.colorScheme = theme.mode\n}\n","import type { FreitasTheme } from \"./types\"\n\nexport const defaultLightTheme: FreitasTheme = {\n mode: \"light\",\n colors: {\n primary: \"#2563eb\",\n onPrimary: \"#ffffff\",\n primaryContainer: \"#dbeafe\",\n onPrimaryContainer: \"#172554\",\n\n secondary: \"#475569\",\n onSecondary: \"#ffffff\",\n secondaryContainer: \"#e2e8f0\",\n onSecondaryContainer: \"#0f172a\",\n\n tertiary: \"#7c3aed\",\n onTertiary: \"#ffffff\",\n tertiaryContainer: \"#ede9fe\",\n onTertiaryContainer: \"#2e1065\",\n\n surface: \"#ffffff\",\n onSurface: \"#0f172a\",\n surfaceVariant: \"#f1f5f9\",\n onSurfaceVariant: \"#475569\",\n surfaceContainer: \"#f8fafc\",\n surfaceContainerHigh: \"#f1f5f9\",\n\n outline: \"#94a3b8\",\n outlineVariant: \"#cbd5e1\",\n\n error: \"#b91c1c\",\n onError: \"#ffffff\",\n errorContainer: \"#fee2e2\",\n onErrorContainer: \"#450a0a\",\n\n success: \"#15803d\",\n onSuccess: \"#ffffff\",\n successContainer: \"#dcfce7\",\n onSuccessContainer: \"#052e16\",\n\n warning: \"#b45309\",\n onWarning: \"#ffffff\",\n warningContainer: \"#fef3c7\",\n onWarningContainer: \"#451a03\",\n\n info: \"#0369a1\",\n onInfo: \"#ffffff\",\n infoContainer: \"#e0f2fe\",\n onInfoContainer: \"#082f49\",\n\n ring: \"#2563eb\"\n },\n radius: {\n sm: \"0.375rem\",\n md: \"0.625rem\",\n lg: \"0.875rem\",\n xl: \"1.25rem\",\n full: \"999px\"\n },\n typography: {\n fontSans: \"Inter, ui-sans-serif, system-ui, sans-serif\",\n fontMono: \"JetBrains Mono, ui-monospace, SFMono-Regular, monospace\"\n }\n}\n\nexport const defaultDarkTheme: FreitasTheme = {\n ...defaultLightTheme,\n mode: \"dark\",\n colors: {\n primary: \"#93c5fd\",\n onPrimary: \"#172554\",\n primaryContainer: \"#1e3a8a\",\n onPrimaryContainer: \"#dbeafe\",\n\n secondary: \"#cbd5e1\",\n onSecondary: \"#0f172a\",\n secondaryContainer: \"#334155\",\n onSecondaryContainer: \"#f8fafc\",\n\n tertiary: \"#c4b5fd\",\n onTertiary: \"#2e1065\",\n tertiaryContainer: \"#5b21b6\",\n onTertiaryContainer: \"#ede9fe\",\n\n surface: \"#020617\",\n onSurface: \"#f8fafc\",\n surfaceVariant: \"#1e293b\",\n onSurfaceVariant: \"#cbd5e1\",\n surfaceContainer: \"#0f172a\",\n surfaceContainerHigh: \"#1e293b\",\n\n outline: \"#64748b\",\n outlineVariant: \"#334155\",\n\n error: \"#fca5a5\",\n onError: \"#450a0a\",\n errorContainer: \"#7f1d1d\",\n onErrorContainer: \"#fee2e2\",\n\n success: \"#86efac\",\n onSuccess: \"#052e16\",\n successContainer: \"#14532d\",\n onSuccessContainer: \"#dcfce7\",\n\n warning: \"#fcd34d\",\n onWarning: \"#451a03\",\n warningContainer: \"#78350f\",\n onWarningContainer: \"#fef3c7\",\n\n info: \"#7dd3fc\",\n onInfo: \"#082f49\",\n infoContainer: \"#075985\",\n onInfoContainer: \"#e0f2fe\",\n\n ring: \"#93c5fd\"\n }\n}\n","import {\n argbFromHex,\n hexFromArgb,\n themeFromSourceColor\n} from \"@material/material-color-utilities\"\n\nimport { defaultDarkTheme, defaultLightTheme } from \"./default-theme\"\nimport type { FreitasColorScheme, FreitasTheme, FreitasThemeMode } from \"./types\"\n\ntype CreateThemeFromSeedOptions = {\n mode?: FreitasThemeMode\n colors?: Partial<FreitasColorScheme>\n}\n\nfunction pickColor(raw: Record<string, unknown>, key: string, fallback: string): string {\n const value = raw[key]\n\n if (typeof value === \"number\") {\n return hexFromArgb(value)\n }\n\n return fallback\n}\n\nexport function createThemeFromSeed(\n seed: string,\n options: CreateThemeFromSeedOptions = {}\n): FreitasTheme {\n const mode = options.mode ?? \"light\"\n const fallbackTheme = mode === \"dark\" ? defaultDarkTheme : defaultLightTheme\n\n const materialTheme = themeFromSourceColor(argbFromHex(seed))\n const scheme =\n mode === \"dark\" ? materialTheme.schemes.dark : materialTheme.schemes.light\n\n const raw = scheme.toJSON() as Record<string, unknown>\n\n const colors: FreitasColorScheme = {\n primary: pickColor(raw, \"primary\", fallbackTheme.colors.primary),\n onPrimary: pickColor(raw, \"onPrimary\", fallbackTheme.colors.onPrimary),\n primaryContainer: pickColor(\n raw,\n \"primaryContainer\",\n fallbackTheme.colors.primaryContainer\n ),\n onPrimaryContainer: pickColor(\n raw,\n \"onPrimaryContainer\",\n fallbackTheme.colors.onPrimaryContainer\n ),\n\n secondary: pickColor(raw, \"secondary\", fallbackTheme.colors.secondary),\n onSecondary: pickColor(raw, \"onSecondary\", fallbackTheme.colors.onSecondary),\n secondaryContainer: pickColor(\n raw,\n \"secondaryContainer\",\n fallbackTheme.colors.secondaryContainer\n ),\n onSecondaryContainer: pickColor(\n raw,\n \"onSecondaryContainer\",\n fallbackTheme.colors.onSecondaryContainer\n ),\n\n tertiary: pickColor(raw, \"tertiary\", fallbackTheme.colors.tertiary),\n onTertiary: pickColor(raw, \"onTertiary\", fallbackTheme.colors.onTertiary),\n tertiaryContainer: pickColor(\n raw,\n \"tertiaryContainer\",\n fallbackTheme.colors.tertiaryContainer\n ),\n onTertiaryContainer: pickColor(\n raw,\n \"onTertiaryContainer\",\n fallbackTheme.colors.onTertiaryContainer\n ),\n\n surface: pickColor(raw, \"surface\", fallbackTheme.colors.surface),\n onSurface: pickColor(raw, \"onSurface\", fallbackTheme.colors.onSurface),\n surfaceVariant: pickColor(raw, \"surfaceVariant\", fallbackTheme.colors.surfaceVariant),\n onSurfaceVariant: pickColor(\n raw,\n \"onSurfaceVariant\",\n fallbackTheme.colors.onSurfaceVariant\n ),\n\n surfaceContainer: pickColor(\n raw,\n \"surfaceContainer\",\n pickColor(raw, \"surfaceVariant\", fallbackTheme.colors.surfaceContainer)\n ),\n surfaceContainerHigh: pickColor(\n raw,\n \"surfaceContainerHigh\",\n pickColor(raw, \"surfaceVariant\", fallbackTheme.colors.surfaceContainerHigh)\n ),\n\n outline: pickColor(raw, \"outline\", fallbackTheme.colors.outline),\n outlineVariant: pickColor(raw, \"outlineVariant\", fallbackTheme.colors.outlineVariant),\n\n error: pickColor(raw, \"error\", fallbackTheme.colors.error),\n onError: pickColor(raw, \"onError\", fallbackTheme.colors.onError),\n errorContainer: pickColor(raw, \"errorContainer\", fallbackTheme.colors.errorContainer),\n onErrorContainer: pickColor(\n raw,\n \"onErrorContainer\",\n fallbackTheme.colors.onErrorContainer\n ),\n\n success: fallbackTheme.colors.success,\n onSuccess: fallbackTheme.colors.onSuccess,\n successContainer: fallbackTheme.colors.successContainer,\n onSuccessContainer: fallbackTheme.colors.onSuccessContainer,\n\n warning: fallbackTheme.colors.warning,\n onWarning: fallbackTheme.colors.onWarning,\n warningContainer: fallbackTheme.colors.warningContainer,\n onWarningContainer: fallbackTheme.colors.onWarningContainer,\n\n info: fallbackTheme.colors.info,\n onInfo: fallbackTheme.colors.onInfo,\n infoContainer: fallbackTheme.colors.infoContainer,\n onInfoContainer: fallbackTheme.colors.onInfoContainer,\n\n ring: pickColor(raw, \"primary\", fallbackTheme.colors.ring)\n }\n\n return {\n mode,\n colors: {\n ...colors,\n ...options.colors\n },\n radius: fallbackTheme.radius,\n typography: fallbackTheme.typography\n }\n}\n","import { createThemeFromSeed } from \"./create-theme-from-seed\"\nimport { defaultDarkTheme, defaultLightTheme } from \"./default-theme\"\nimport type { FreitasTheme, FreitasThemeInput } from \"./types\"\n\nexport function resolveTheme(input?: FreitasThemeInput): FreitasTheme {\n if (!input) {\n return defaultLightTheme\n }\n\n const mode = input.mode ?? \"light\"\n\n if (\"seed\" in input && input.seed) {\n const seededTheme = createThemeFromSeed(input.seed, {\n mode,\n colors: input.colors\n })\n\n return {\n ...seededTheme,\n radius: {\n ...seededTheme.radius,\n ...input.radius\n },\n typography: {\n ...seededTheme.typography,\n ...input.typography\n }\n }\n }\n\n const fallbackTheme = mode === \"dark\" ? defaultDarkTheme : defaultLightTheme\n\n return {\n mode,\n colors: {\n ...fallbackTheme.colors,\n ...input.colors\n },\n radius: {\n ...fallbackTheme.radius,\n ...input.radius\n },\n typography: {\n ...fallbackTheme.typography,\n ...input.typography\n }\n }\n}\n"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@freitas-ds/theme",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Motor de temas e tokens semânticos do Freitas DS.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"design-system",
|
|
7
|
+
"theme",
|
|
8
|
+
"tokens",
|
|
9
|
+
"css-variables"
|
|
10
|
+
],
|
|
11
|
+
"author": {
|
|
12
|
+
"name": "Eric Freitas Sampaio",
|
|
13
|
+
"email": "contato@freitaseric.com",
|
|
14
|
+
"url": "https://freitaseric.com"
|
|
15
|
+
},
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/freitaseric/freitas-ds.git",
|
|
20
|
+
"directory": "packages/theme"
|
|
21
|
+
},
|
|
22
|
+
"homepage": "https://github.com/freitaseric/freitas-ds#readme",
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/freitaseric/freitas-ds/issues"
|
|
25
|
+
},
|
|
26
|
+
"type": "module",
|
|
27
|
+
"main": "./dist/index.mjs",
|
|
28
|
+
"module": "./dist/index.mjs",
|
|
29
|
+
"types": "./dist/index.d.mts",
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"README.md",
|
|
33
|
+
"package.json"
|
|
34
|
+
],
|
|
35
|
+
"exports": {
|
|
36
|
+
".": {
|
|
37
|
+
"types": "./dist/index.d.mts",
|
|
38
|
+
"import": "./dist/index.mjs"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public",
|
|
43
|
+
"registry": "https://registry.npmjs.org/"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@material/material-color-utilities": "^0.4.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"tsdown": "^0.22.2",
|
|
50
|
+
"typescript": "^6.0.3"
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"build": "tsdown",
|
|
54
|
+
"typecheck": "tsc --noEmit",
|
|
55
|
+
"clean": "rm -rf dist",
|
|
56
|
+
"lint": "biome check ."
|
|
57
|
+
}
|
|
58
|
+
}
|