@tamagui/config-v5 0.0.0-bootstrap.0 → 3.0.0-beta.643.1
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/dist/cjs/builder.cjs +19 -0
- package/dist/cjs/builder.native.cjs +21 -0
- package/dist/cjs/builder.native.js +23 -0
- package/dist/cjs/builder.native.js.map +1 -0
- package/dist/cjs/create-theme/applyMask.cjs +64 -0
- package/dist/cjs/create-theme/applyMask.native.cjs +69 -0
- package/dist/cjs/create-theme/applyMask.native.js +71 -0
- package/dist/cjs/create-theme/applyMask.native.js.map +1 -0
- package/dist/cjs/create-theme/combineMasks.cjs +45 -0
- package/dist/cjs/create-theme/combineMasks.native.cjs +67 -0
- package/dist/cjs/create-theme/combineMasks.native.js +69 -0
- package/dist/cjs/create-theme/combineMasks.native.js.map +1 -0
- package/dist/cjs/create-theme/createTheme.cjs +104 -0
- package/dist/cjs/create-theme/createTheme.native.cjs +109 -0
- package/dist/cjs/create-theme/createTheme.native.js +111 -0
- package/dist/cjs/create-theme/createTheme.native.js.map +1 -0
- package/dist/cjs/create-theme/createThemeTypes.cjs +17 -0
- package/dist/cjs/create-theme/createThemeTypes.native.cjs +19 -0
- package/dist/cjs/create-theme/createThemeTypes.native.js +21 -0
- package/dist/cjs/create-theme/createThemeTypes.native.js.map +1 -0
- package/dist/cjs/create-theme/helpers.cjs +35 -0
- package/dist/cjs/create-theme/helpers.native.cjs +39 -0
- package/dist/cjs/create-theme/helpers.native.js +41 -0
- package/dist/cjs/create-theme/helpers.native.js.map +1 -0
- package/dist/cjs/create-theme/index.cjs +24 -0
- package/dist/cjs/create-theme/index.native.cjs +26 -0
- package/dist/cjs/create-theme/index.native.js +28 -0
- package/dist/cjs/create-theme/index.native.js.map +1 -0
- package/dist/cjs/create-theme/isMinusZero.cjs +27 -0
- package/dist/cjs/create-theme/isMinusZero.native.cjs +29 -0
- package/dist/cjs/create-theme/isMinusZero.native.js +31 -0
- package/dist/cjs/create-theme/isMinusZero.native.js.map +1 -0
- package/dist/cjs/create-theme/masks.cjs +132 -0
- package/dist/cjs/create-theme/masks.native.cjs +174 -0
- package/dist/cjs/create-theme/masks.native.js +176 -0
- package/dist/cjs/create-theme/masks.native.js.map +1 -0
- package/dist/cjs/create-theme/tests.cjs +34 -0
- package/dist/cjs/create-theme/tests.native.cjs +36 -0
- package/dist/cjs/create-theme/tests.native.js +38 -0
- package/dist/cjs/create-theme/tests.native.js.map +1 -0
- package/dist/cjs/create-theme/themeInfo.cjs +39 -0
- package/dist/cjs/create-theme/themeInfo.native.cjs +41 -0
- package/dist/cjs/create-theme/themeInfo.native.js +43 -0
- package/dist/cjs/create-theme/themeInfo.native.js.map +1 -0
- package/dist/cjs/index.cjs +20 -0
- package/dist/cjs/index.native.cjs +22 -0
- package/dist/cjs/index.native.js +24 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/theme-builder/ThemeBuilder.cjs +222 -0
- package/dist/cjs/theme-builder/ThemeBuilder.native.cjs +315 -0
- package/dist/cjs/theme-builder/ThemeBuilder.native.js +317 -0
- package/dist/cjs/theme-builder/ThemeBuilder.native.js.map +1 -0
- package/dist/cjs/theme-builder/createStudioThemes.cjs +39 -0
- package/dist/cjs/theme-builder/createStudioThemes.native.cjs +41 -0
- package/dist/cjs/theme-builder/createStudioThemes.native.js +43 -0
- package/dist/cjs/theme-builder/createStudioThemes.native.js.map +1 -0
- package/dist/cjs/theme-builder/createThemes.cjs +339 -0
- package/dist/cjs/theme-builder/createThemes.native.cjs +348 -0
- package/dist/cjs/theme-builder/createThemes.native.js +350 -0
- package/dist/cjs/theme-builder/createThemes.native.js.map +1 -0
- package/dist/cjs/theme-builder/defaultComponentThemes.cjs +45 -0
- package/dist/cjs/theme-builder/defaultComponentThemes.native.cjs +47 -0
- package/dist/cjs/theme-builder/defaultComponentThemes.native.js +49 -0
- package/dist/cjs/theme-builder/defaultComponentThemes.native.js.map +1 -0
- package/dist/cjs/theme-builder/defaultTemplates.cjs +147 -0
- package/dist/cjs/theme-builder/defaultTemplates.native.cjs +154 -0
- package/dist/cjs/theme-builder/defaultTemplates.native.js +156 -0
- package/dist/cjs/theme-builder/defaultTemplates.native.js.map +1 -0
- package/dist/cjs/theme-builder/defaultTemplatesStronger.cjs +143 -0
- package/dist/cjs/theme-builder/defaultTemplatesStronger.native.cjs +150 -0
- package/dist/cjs/theme-builder/defaultTemplatesStronger.native.js +152 -0
- package/dist/cjs/theme-builder/defaultTemplatesStronger.native.js.map +1 -0
- package/dist/cjs/theme-builder/defaultTemplatesStrongest.cjs +143 -0
- package/dist/cjs/theme-builder/defaultTemplatesStrongest.native.cjs +150 -0
- package/dist/cjs/theme-builder/defaultTemplatesStrongest.native.js +152 -0
- package/dist/cjs/theme-builder/defaultTemplatesStrongest.native.js.map +1 -0
- package/dist/cjs/theme-builder/getThemeSuitePalettes.cjs +101 -0
- package/dist/cjs/theme-builder/getThemeSuitePalettes.native.cjs +123 -0
- package/dist/cjs/theme-builder/getThemeSuitePalettes.native.js +125 -0
- package/dist/cjs/theme-builder/getThemeSuitePalettes.native.js.map +1 -0
- package/dist/cjs/theme-builder/helpers.cjs +35 -0
- package/dist/cjs/theme-builder/helpers.native.cjs +39 -0
- package/dist/cjs/theme-builder/helpers.native.js +41 -0
- package/dist/cjs/theme-builder/helpers.native.js.map +1 -0
- package/dist/cjs/theme-builder/index.cjs +44 -0
- package/dist/cjs/theme-builder/index.native.cjs +46 -0
- package/dist/cjs/theme-builder/index.native.js +48 -0
- package/dist/cjs/theme-builder/index.native.js.map +1 -0
- package/dist/cjs/theme-builder/masks.cjs +92 -0
- package/dist/cjs/theme-builder/masks.native.cjs +94 -0
- package/dist/cjs/theme-builder/masks.native.js +96 -0
- package/dist/cjs/theme-builder/masks.native.js.map +1 -0
- package/dist/cjs/theme-builder/types.cjs +17 -0
- package/dist/cjs/theme-builder/types.native.cjs +19 -0
- package/dist/cjs/theme-builder/types.native.js +21 -0
- package/dist/cjs/theme-builder/types.native.js.map +1 -0
- package/dist/cjs/v5/opacify.cjs +120 -0
- package/dist/cjs/v5/opacify.native.cjs +127 -0
- package/dist/cjs/v5/opacify.native.js +129 -0
- package/dist/cjs/v5/opacify.native.js.map +1 -0
- package/dist/cjs/v5/subtleChildrenThemes.cjs +64 -0
- package/dist/cjs/v5/subtleChildrenThemes.native.cjs +72 -0
- package/dist/cjs/v5/subtleChildrenThemes.native.js +74 -0
- package/dist/cjs/v5/subtleChildrenThemes.native.js.map +1 -0
- package/dist/cjs/v5/v5-builder.cjs +31 -0
- package/dist/cjs/v5/v5-builder.native.cjs +33 -0
- package/dist/cjs/v5/v5-builder.native.js +35 -0
- package/dist/cjs/v5/v5-builder.native.js.map +1 -0
- package/dist/cjs/v5/v5-subtle-builder.cjs +30 -0
- package/dist/cjs/v5/v5-subtle-builder.native.cjs +32 -0
- package/dist/cjs/v5/v5-subtle-builder.native.js +34 -0
- package/dist/cjs/v5/v5-subtle-builder.native.js.map +1 -0
- package/dist/cjs/v5/v5-templates.cjs +111 -0
- package/dist/cjs/v5/v5-templates.native.cjs +119 -0
- package/dist/cjs/v5/v5-templates.native.js +121 -0
- package/dist/cjs/v5/v5-templates.native.js.map +1 -0
- package/dist/cjs/v5/v5-themes.cjs +390 -0
- package/dist/cjs/v5/v5-themes.native.cjs +440 -0
- package/dist/cjs/v5/v5-themes.native.js +442 -0
- package/dist/cjs/v5/v5-themes.native.js.map +1 -0
- package/dist/esm/builder.mjs +1 -0
- package/dist/esm/builder.native.js +1 -0
- package/dist/esm/create-theme/applyMask.mjs +41 -0
- package/dist/esm/create-theme/applyMask.mjs.map +1 -0
- package/dist/esm/create-theme/applyMask.native.js +44 -0
- package/dist/esm/create-theme/applyMask.native.js.map +1 -0
- package/dist/esm/create-theme/combineMasks.mjs +25 -0
- package/dist/esm/create-theme/combineMasks.mjs.map +1 -0
- package/dist/esm/create-theme/combineMasks.native.js +45 -0
- package/dist/esm/create-theme/combineMasks.native.js.map +1 -0
- package/dist/esm/create-theme/createTheme.mjs +80 -0
- package/dist/esm/create-theme/createTheme.mjs.map +1 -0
- package/dist/esm/create-theme/createTheme.native.js +83 -0
- package/dist/esm/create-theme/createTheme.native.js.map +1 -0
- package/dist/esm/create-theme/createThemeTypes.mjs +0 -0
- package/dist/esm/create-theme/createThemeTypes.native.js +0 -0
- package/dist/esm/create-theme/helpers.mjs +10 -0
- package/dist/esm/create-theme/helpers.mjs.map +1 -0
- package/dist/esm/create-theme/helpers.native.js +12 -0
- package/dist/esm/create-theme/helpers.native.js.map +1 -0
- package/dist/esm/create-theme/index.mjs +11 -0
- package/dist/esm/create-theme/index.native.js +11 -0
- package/dist/esm/create-theme/isMinusZero.mjs +6 -0
- package/dist/esm/create-theme/isMinusZero.mjs.map +1 -0
- package/dist/esm/create-theme/isMinusZero.native.js +6 -0
- package/dist/esm/create-theme/isMinusZero.native.js.map +1 -0
- package/dist/esm/create-theme/masks.mjs +103 -0
- package/dist/esm/create-theme/masks.mjs.map +1 -0
- package/dist/esm/create-theme/masks.native.js +143 -0
- package/dist/esm/create-theme/masks.native.js.map +1 -0
- package/dist/esm/create-theme/tests.mjs +36 -0
- package/dist/esm/create-theme/tests.mjs.map +1 -0
- package/dist/esm/create-theme/tests.native.js +36 -0
- package/dist/esm/create-theme/tests.native.js.map +1 -0
- package/dist/esm/create-theme/themeInfo.mjs +15 -0
- package/dist/esm/create-theme/themeInfo.mjs.map +1 -0
- package/dist/esm/create-theme/themeInfo.native.js +15 -0
- package/dist/esm/create-theme/themeInfo.native.js.map +1 -0
- package/dist/esm/index.mjs +3 -0
- package/dist/esm/index.native.js +3 -0
- package/dist/esm/theme-builder/ThemeBuilder.mjs +199 -0
- package/dist/esm/theme-builder/ThemeBuilder.mjs.map +1 -0
- package/dist/esm/theme-builder/ThemeBuilder.native.js +290 -0
- package/dist/esm/theme-builder/ThemeBuilder.native.js.map +1 -0
- package/dist/esm/theme-builder/createStudioThemes.mjs +19 -0
- package/dist/esm/theme-builder/createStudioThemes.mjs.map +1 -0
- package/dist/esm/theme-builder/createStudioThemes.native.js +19 -0
- package/dist/esm/theme-builder/createStudioThemes.native.js.map +1 -0
- package/dist/esm/theme-builder/createThemes.mjs +311 -0
- package/dist/esm/theme-builder/createThemes.mjs.map +1 -0
- package/dist/esm/theme-builder/createThemes.native.js +318 -0
- package/dist/esm/theme-builder/createThemes.native.js.map +1 -0
- package/dist/esm/theme-builder/defaultComponentThemes.mjs +24 -0
- package/dist/esm/theme-builder/defaultComponentThemes.mjs.map +1 -0
- package/dist/esm/theme-builder/defaultComponentThemes.native.js +24 -0
- package/dist/esm/theme-builder/defaultComponentThemes.native.js.map +1 -0
- package/dist/esm/theme-builder/defaultTemplates.mjs +127 -0
- package/dist/esm/theme-builder/defaultTemplates.mjs.map +1 -0
- package/dist/esm/theme-builder/defaultTemplates.native.js +132 -0
- package/dist/esm/theme-builder/defaultTemplates.native.js.map +1 -0
- package/dist/esm/theme-builder/defaultTemplatesStronger.mjs +123 -0
- package/dist/esm/theme-builder/defaultTemplatesStronger.mjs.map +1 -0
- package/dist/esm/theme-builder/defaultTemplatesStronger.native.js +128 -0
- package/dist/esm/theme-builder/defaultTemplatesStronger.native.js.map +1 -0
- package/dist/esm/theme-builder/defaultTemplatesStrongest.mjs +123 -0
- package/dist/esm/theme-builder/defaultTemplatesStrongest.mjs.map +1 -0
- package/dist/esm/theme-builder/defaultTemplatesStrongest.native.js +128 -0
- package/dist/esm/theme-builder/defaultTemplatesStrongest.native.js.map +1 -0
- package/dist/esm/theme-builder/getThemeSuitePalettes.mjs +78 -0
- package/dist/esm/theme-builder/getThemeSuitePalettes.mjs.map +1 -0
- package/dist/esm/theme-builder/getThemeSuitePalettes.native.js +98 -0
- package/dist/esm/theme-builder/getThemeSuitePalettes.native.js.map +1 -0
- package/dist/esm/theme-builder/helpers.mjs +10 -0
- package/dist/esm/theme-builder/helpers.mjs.map +1 -0
- package/dist/esm/theme-builder/helpers.native.js +12 -0
- package/dist/esm/theme-builder/helpers.native.js.map +1 -0
- package/dist/esm/theme-builder/index.mjs +12 -0
- package/dist/esm/theme-builder/index.native.js +12 -0
- package/dist/esm/theme-builder/masks.mjs +72 -0
- package/dist/esm/theme-builder/masks.mjs.map +1 -0
- package/dist/esm/theme-builder/masks.native.js +72 -0
- package/dist/esm/theme-builder/masks.native.js.map +1 -0
- package/dist/esm/theme-builder/types.mjs +0 -0
- package/dist/esm/theme-builder/types.native.js +0 -0
- package/dist/esm/v5/opacify.mjs +96 -0
- package/dist/esm/v5/opacify.mjs.map +1 -0
- package/dist/esm/v5/opacify.native.js +101 -0
- package/dist/esm/v5/opacify.native.js.map +1 -0
- package/dist/esm/v5/subtleChildrenThemes.mjs +41 -0
- package/dist/esm/v5/subtleChildrenThemes.mjs.map +1 -0
- package/dist/esm/v5/subtleChildrenThemes.native.js +47 -0
- package/dist/esm/v5/subtleChildrenThemes.native.js.map +1 -0
- package/dist/esm/v5/v5-builder.mjs +6 -0
- package/dist/esm/v5/v5-builder.native.js +6 -0
- package/dist/esm/v5/v5-subtle-builder.mjs +5 -0
- package/dist/esm/v5/v5-subtle-builder.native.js +5 -0
- package/dist/esm/v5/v5-templates.mjs +91 -0
- package/dist/esm/v5/v5-templates.mjs.map +1 -0
- package/dist/esm/v5/v5-templates.native.js +97 -0
- package/dist/esm/v5/v5-templates.native.js.map +1 -0
- package/dist/esm/v5/v5-themes.mjs +352 -0
- package/dist/esm/v5/v5-themes.mjs.map +1 -0
- package/dist/esm/v5/v5-themes.native.js +400 -0
- package/dist/esm/v5/v5-themes.native.js.map +1 -0
- package/package.json +59 -8
- package/src/builder.ts +1 -0
- package/src/create-theme/applyMask.tsx +69 -0
- package/src/create-theme/combineMasks.tsx +29 -0
- package/src/create-theme/createTheme.tsx +126 -0
- package/src/create-theme/createThemeTypes.tsx +85 -0
- package/src/create-theme/helpers.tsx +44 -0
- package/src/create-theme/index.ts +6 -0
- package/src/create-theme/isMinusZero.tsx +3 -0
- package/src/create-theme/masks.tsx +137 -0
- package/src/create-theme/tests.tsx +28 -0
- package/src/create-theme/themeInfo.tsx +36 -0
- package/src/index.ts +2 -0
- package/src/theme-builder/ThemeBuilder.ts +514 -0
- package/src/theme-builder/createStudioThemes.ts +28 -0
- package/src/theme-builder/createThemes.ts +794 -0
- package/src/theme-builder/defaultComponentThemes.ts +26 -0
- package/src/theme-builder/defaultTemplates.ts +157 -0
- package/src/theme-builder/defaultTemplatesStronger.ts +152 -0
- package/src/theme-builder/defaultTemplatesStrongest.ts +152 -0
- package/src/theme-builder/getThemeSuitePalettes.ts +101 -0
- package/src/theme-builder/helpers.ts +44 -0
- package/src/theme-builder/index.ts +22 -0
- package/src/theme-builder/masks.tsx +83 -0
- package/src/theme-builder/types.ts +97 -0
- package/src/v5/opacify.ts +125 -0
- package/src/v5/subtleChildrenThemes.ts +54 -0
- package/src/v5/v5-builder.ts +6 -0
- package/src/v5/v5-subtle-builder.ts +5 -0
- package/src/v5/v5-templates.ts +126 -0
- package/src/v5/v5-themes.ts +615 -0
- package/types/builder.d.ts +2 -0
- package/types/builder.d.ts.map +1 -0
- package/types/create-theme/applyMask.d.ts +7 -0
- package/types/create-theme/applyMask.d.ts.map +1 -0
- package/types/create-theme/combineMasks.d.ts +3 -0
- package/types/create-theme/combineMasks.d.ts.map +1 -0
- package/types/create-theme/createTheme.d.ts +18 -0
- package/types/create-theme/createTheme.d.ts.map +1 -0
- package/types/create-theme/createThemeTypes.d.ts +66 -0
- package/types/create-theme/createThemeTypes.d.ts.map +1 -0
- package/types/create-theme/helpers.d.ts +24 -0
- package/types/create-theme/helpers.d.ts.map +1 -0
- package/types/create-theme/index.d.ts +7 -0
- package/types/create-theme/index.d.ts.map +1 -0
- package/types/create-theme/isMinusZero.d.ts +2 -0
- package/types/create-theme/isMinusZero.d.ts.map +1 -0
- package/types/create-theme/masks.d.ts +14 -0
- package/types/create-theme/masks.d.ts.map +1 -0
- package/types/create-theme/tests.d.ts +2 -0
- package/types/create-theme/tests.d.ts.map +1 -0
- package/types/create-theme/themeInfo.d.ts +12 -0
- package/types/create-theme/themeInfo.d.ts.map +1 -0
- package/types/index.d.ts +3 -0
- package/types/index.d.ts.map +1 -0
- package/types/theme-builder/ThemeBuilder.d.ts +80 -0
- package/types/theme-builder/ThemeBuilder.d.ts.map +1 -0
- package/types/theme-builder/createStudioThemes.d.ts +8 -0
- package/types/theme-builder/createStudioThemes.d.ts.map +1 -0
- package/types/theme-builder/createThemes.d.ts +141 -0
- package/types/theme-builder/createThemes.d.ts.map +1 -0
- package/types/theme-builder/defaultComponentThemes.d.ts +63 -0
- package/types/theme-builder/defaultComponentThemes.d.ts.map +1 -0
- package/types/theme-builder/defaultTemplates.d.ts +42 -0
- package/types/theme-builder/defaultTemplates.d.ts.map +1 -0
- package/types/theme-builder/defaultTemplatesStronger.d.ts +42 -0
- package/types/theme-builder/defaultTemplatesStronger.d.ts.map +1 -0
- package/types/theme-builder/defaultTemplatesStrongest.d.ts +42 -0
- package/types/theme-builder/defaultTemplatesStrongest.d.ts.map +1 -0
- package/types/theme-builder/getThemeSuitePalettes.d.ts +7 -0
- package/types/theme-builder/getThemeSuitePalettes.d.ts.map +1 -0
- package/types/theme-builder/helpers.d.ts +24 -0
- package/types/theme-builder/helpers.d.ts.map +1 -0
- package/types/theme-builder/index.d.ts +11 -0
- package/types/theme-builder/index.d.ts.map +1 -0
- package/types/theme-builder/masks.d.ts +18 -0
- package/types/theme-builder/masks.d.ts.map +1 -0
- package/types/theme-builder/types.d.ts +76 -0
- package/types/theme-builder/types.d.ts.map +1 -0
- package/types/v5/opacify.d.ts +9 -0
- package/types/v5/opacify.d.ts.map +1 -0
- package/types/v5/subtleChildrenThemes.d.ts +305 -0
- package/types/v5/subtleChildrenThemes.d.ts.map +1 -0
- package/types/v5/v5-builder.d.ts +4 -0
- package/types/v5/v5-builder.d.ts.map +1 -0
- package/types/v5/v5-subtle-builder.d.ts +3 -0
- package/types/v5/v5-subtle-builder.d.ts.map +1 -0
- package/types/v5/v5-templates.d.ts +42 -0
- package/types/v5/v5-templates.d.ts.map +1 -0
- package/types/v5/v5-themes.d.ts +525 -0
- package/types/v5/v5-themes.d.ts.map +1 -0
- package/README.md +0 -1
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import { parseToHsla } from "color2k";
|
|
2
|
+
import { defaultComponentThemes } from "./defaultComponentThemes.mjs";
|
|
3
|
+
import { defaultTemplates } from "./defaultTemplates.mjs";
|
|
4
|
+
import { PALETTE_BACKGROUND_OFFSET, getThemeSuitePalettes } from "./getThemeSuitePalettes.mjs";
|
|
5
|
+
import { createThemeBuilder } from "./ThemeBuilder.mjs";
|
|
6
|
+
|
|
7
|
+
function createThemes(props) {
|
|
8
|
+
const { accent, childrenThemes, grandChildrenThemes, templates = defaultTemplates, componentThemes, getTheme } = props;
|
|
9
|
+
const builder = createSimpleThemeBuilder({
|
|
10
|
+
extra: props.base.extra,
|
|
11
|
+
accentExtra: accent?.extra,
|
|
12
|
+
componentThemes,
|
|
13
|
+
palettes: createPalettes(getThemesPalettes(props)),
|
|
14
|
+
templates,
|
|
15
|
+
accentTheme: !!accent,
|
|
16
|
+
childrenThemes: normalizeSubThemes(childrenThemes),
|
|
17
|
+
grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,
|
|
18
|
+
getTheme
|
|
19
|
+
});
|
|
20
|
+
lastBuilder = builder.themeBuilder;
|
|
21
|
+
return builder.themes;
|
|
22
|
+
}
|
|
23
|
+
let lastBuilder = null;
|
|
24
|
+
const getLastBuilder = () => lastBuilder;
|
|
25
|
+
function createV4Themes(props) {
|
|
26
|
+
const { accent, childrenThemes, grandChildrenThemes, templates = defaultTemplates, componentThemes, getTheme } = props;
|
|
27
|
+
const builder = createV4ThemeBuilder({
|
|
28
|
+
extra: props.base.extra,
|
|
29
|
+
accentExtra: accent?.extra,
|
|
30
|
+
componentThemes,
|
|
31
|
+
palettes: createPalettes(getThemesPalettes(props)),
|
|
32
|
+
templates,
|
|
33
|
+
accentTheme: !!accent,
|
|
34
|
+
childrenThemes: normalizeSubThemes(childrenThemes),
|
|
35
|
+
grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,
|
|
36
|
+
getTheme
|
|
37
|
+
});
|
|
38
|
+
lastBuilder = builder.themeBuilder;
|
|
39
|
+
return builder.themes;
|
|
40
|
+
}
|
|
41
|
+
function normalizeSubThemes(defs) {
|
|
42
|
+
return Object.fromEntries(Object.entries(defs || {}).map(([name, value]) => {
|
|
43
|
+
const hasPalette = value.palette !== void 0;
|
|
44
|
+
return [name, {
|
|
45
|
+
...hasPalette ? { palette: name } : {},
|
|
46
|
+
template: value.template || "base"
|
|
47
|
+
}];
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
const defaultPalettes = createPalettes(getThemesPalettes({
|
|
51
|
+
base: { palette: ["#fff", "#000"] },
|
|
52
|
+
accent: { palette: ["#ff0000", "#ff9999"] }
|
|
53
|
+
}));
|
|
54
|
+
function createSimpleThemeBuilder(props) {
|
|
55
|
+
const { getTheme, extra, accentExtra, childrenThemes = null, grandChildrenThemes = null, templates = defaultTemplates, palettes = defaultPalettes, accentTheme, componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0 } = props;
|
|
56
|
+
let themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({
|
|
57
|
+
light: {
|
|
58
|
+
template: "base",
|
|
59
|
+
palette: "light",
|
|
60
|
+
nonInheritedValues: {
|
|
61
|
+
...extra?.light,
|
|
62
|
+
...accentTheme && palettes.light_accent && {
|
|
63
|
+
accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],
|
|
64
|
+
accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],
|
|
65
|
+
accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],
|
|
66
|
+
accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],
|
|
67
|
+
accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],
|
|
68
|
+
accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],
|
|
69
|
+
accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],
|
|
70
|
+
accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],
|
|
71
|
+
accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],
|
|
72
|
+
accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],
|
|
73
|
+
accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],
|
|
74
|
+
accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
dark: {
|
|
79
|
+
template: "base",
|
|
80
|
+
palette: "dark",
|
|
81
|
+
nonInheritedValues: {
|
|
82
|
+
...extra?.dark,
|
|
83
|
+
...accentTheme && palettes.dark_accent && {
|
|
84
|
+
accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],
|
|
85
|
+
accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],
|
|
86
|
+
accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],
|
|
87
|
+
accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],
|
|
88
|
+
accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],
|
|
89
|
+
accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],
|
|
90
|
+
accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],
|
|
91
|
+
accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],
|
|
92
|
+
accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],
|
|
93
|
+
accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],
|
|
94
|
+
accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],
|
|
95
|
+
accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
if (palettes.light_accent) {
|
|
101
|
+
themeBuilder = themeBuilder.addChildThemes({ accent: [{
|
|
102
|
+
parent: "light",
|
|
103
|
+
template: "base",
|
|
104
|
+
palette: "light_accent",
|
|
105
|
+
nonInheritedValues: accentExtra?.light
|
|
106
|
+
}, {
|
|
107
|
+
parent: "dark",
|
|
108
|
+
template: "base",
|
|
109
|
+
palette: "dark_accent",
|
|
110
|
+
nonInheritedValues: accentExtra?.dark
|
|
111
|
+
}] });
|
|
112
|
+
}
|
|
113
|
+
if (childrenThemes) {
|
|
114
|
+
themeBuilder = themeBuilder.addChildThemes(childrenThemes, { avoidNestingWithin: ["accent"] });
|
|
115
|
+
}
|
|
116
|
+
if (grandChildrenThemes) {
|
|
117
|
+
themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, { avoidNestingWithin: ["accent"] });
|
|
118
|
+
}
|
|
119
|
+
if (componentThemes) {
|
|
120
|
+
themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), { avoidNestingWithin: Object.keys(grandChildrenThemes || {}) });
|
|
121
|
+
}
|
|
122
|
+
if (getTheme) {
|
|
123
|
+
themeBuilder = themeBuilder.getTheme(getTheme);
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
themeBuilder,
|
|
127
|
+
themes: themeBuilder.build()
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function getSchemePalette(colors) {
|
|
131
|
+
return {
|
|
132
|
+
light: colors,
|
|
133
|
+
dark: [...colors].reverse()
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function getAnchors(palette) {
|
|
137
|
+
const maxIndex = 11;
|
|
138
|
+
const numItems = palette.light.length;
|
|
139
|
+
const anchors = palette.light.map((lcolor, index) => {
|
|
140
|
+
const dcolor = palette.dark[index];
|
|
141
|
+
const [lhue, lsat, llum, lalpha] = parseToHsla(lcolor);
|
|
142
|
+
const [dhue, dsat, dlum, dalpha] = parseToHsla(dcolor);
|
|
143
|
+
return {
|
|
144
|
+
index: spreadIndex(maxIndex, numItems, index),
|
|
145
|
+
hue: {
|
|
146
|
+
light: lhue,
|
|
147
|
+
dark: dhue
|
|
148
|
+
},
|
|
149
|
+
sat: {
|
|
150
|
+
light: lsat,
|
|
151
|
+
dark: dsat
|
|
152
|
+
},
|
|
153
|
+
lum: {
|
|
154
|
+
light: llum,
|
|
155
|
+
dark: dlum
|
|
156
|
+
},
|
|
157
|
+
alpha: {
|
|
158
|
+
light: lalpha,
|
|
159
|
+
dark: dalpha
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
});
|
|
163
|
+
return anchors;
|
|
164
|
+
}
|
|
165
|
+
function spreadIndex(maxIndex, numItems, index) {
|
|
166
|
+
return Math.round(index / (numItems - 1) * maxIndex);
|
|
167
|
+
}
|
|
168
|
+
function coerceSimplePaletteToSchemePalette(def) {
|
|
169
|
+
return Array.isArray(def) ? getSchemePalette(def) : def;
|
|
170
|
+
}
|
|
171
|
+
function getThemesPalettes(props) {
|
|
172
|
+
const base = coerceSimplePaletteToSchemePalette(props.base.palette);
|
|
173
|
+
const accent = props.accent ? coerceSimplePaletteToSchemePalette(props.accent.palette) : null;
|
|
174
|
+
const baseAnchors = getAnchors(base);
|
|
175
|
+
function getSubThemesPalettes(defs, isGrandChildren = false) {
|
|
176
|
+
return Object.fromEntries(Object.entries(defs).map(([key, value]) => {
|
|
177
|
+
if (isGrandChildren && key === "accent" && !value.palette) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
return [key, {
|
|
181
|
+
name: key,
|
|
182
|
+
anchors: value.palette ? getAnchors(coerceSimplePaletteToSchemePalette(value.palette)) : baseAnchors
|
|
183
|
+
}];
|
|
184
|
+
}).filter(Boolean));
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
base: {
|
|
188
|
+
name: "base",
|
|
189
|
+
anchors: baseAnchors
|
|
190
|
+
},
|
|
191
|
+
...accent && { accent: {
|
|
192
|
+
name: "accent",
|
|
193
|
+
anchors: getAnchors(accent)
|
|
194
|
+
} },
|
|
195
|
+
...props.childrenThemes && getSubThemesPalettes(props.childrenThemes, false),
|
|
196
|
+
...props.grandChildrenThemes && getSubThemesPalettes(props.grandChildrenThemes, true)
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
const getComponentThemes = (components) => {
|
|
200
|
+
return Object.fromEntries(Object.entries(components).map(([componentName, { template }]) => {
|
|
201
|
+
return [componentName, {
|
|
202
|
+
parent: "",
|
|
203
|
+
template: template || "base"
|
|
204
|
+
}];
|
|
205
|
+
}));
|
|
206
|
+
};
|
|
207
|
+
function createPalettes(palettes) {
|
|
208
|
+
const accentPalettes = palettes.accent ? getThemeSuitePalettes(palettes.accent) : null;
|
|
209
|
+
const basePalettes = getThemeSuitePalettes(palettes.base);
|
|
210
|
+
const next = Object.fromEntries(Object.entries(palettes).flatMap(([name, palette]) => {
|
|
211
|
+
const palettes2 = getThemeSuitePalettes(palette);
|
|
212
|
+
const isAccent = name.startsWith("accent");
|
|
213
|
+
const oppositePalettes = isAccent ? basePalettes : accentPalettes || basePalettes;
|
|
214
|
+
if (!oppositePalettes) {
|
|
215
|
+
return [];
|
|
216
|
+
}
|
|
217
|
+
const oppositeLight = oppositePalettes.light;
|
|
218
|
+
const oppositeDark = oppositePalettes.dark;
|
|
219
|
+
const bgOffset = 7;
|
|
220
|
+
const out = [[name === "base" ? "light" : `light_${name}`, [
|
|
221
|
+
oppositeLight[bgOffset],
|
|
222
|
+
...palettes2.light,
|
|
223
|
+
oppositeLight[oppositeLight.length - bgOffset - 1]
|
|
224
|
+
]], [name === "base" ? "dark" : `dark_${name}`, [
|
|
225
|
+
oppositeDark[oppositeDark.length - bgOffset - 1],
|
|
226
|
+
...palettes2.dark,
|
|
227
|
+
oppositeDark[bgOffset]
|
|
228
|
+
]]];
|
|
229
|
+
return out;
|
|
230
|
+
}));
|
|
231
|
+
return next;
|
|
232
|
+
}
|
|
233
|
+
function createV4ThemeBuilder(props) {
|
|
234
|
+
const { getTheme, extra, accentExtra, childrenThemes = null, grandChildrenThemes = null, templates = defaultTemplates, palettes = defaultPalettes, accentTheme, componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0 } = props;
|
|
235
|
+
let themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({
|
|
236
|
+
light: {
|
|
237
|
+
template: "base",
|
|
238
|
+
palette: "light",
|
|
239
|
+
nonInheritedValues: {
|
|
240
|
+
...extra?.light,
|
|
241
|
+
...accentTheme && palettes.light_accent && {
|
|
242
|
+
accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],
|
|
243
|
+
accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],
|
|
244
|
+
accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],
|
|
245
|
+
accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],
|
|
246
|
+
accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],
|
|
247
|
+
accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],
|
|
248
|
+
accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],
|
|
249
|
+
accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],
|
|
250
|
+
accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],
|
|
251
|
+
accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],
|
|
252
|
+
accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],
|
|
253
|
+
accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
dark: {
|
|
258
|
+
template: "base",
|
|
259
|
+
palette: "dark",
|
|
260
|
+
nonInheritedValues: {
|
|
261
|
+
...extra?.dark,
|
|
262
|
+
...accentTheme && palettes.dark_accent && {
|
|
263
|
+
accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],
|
|
264
|
+
accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],
|
|
265
|
+
accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],
|
|
266
|
+
accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],
|
|
267
|
+
accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],
|
|
268
|
+
accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],
|
|
269
|
+
accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],
|
|
270
|
+
accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],
|
|
271
|
+
accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],
|
|
272
|
+
accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],
|
|
273
|
+
accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],
|
|
274
|
+
accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
if (childrenThemes) {
|
|
280
|
+
themeBuilder = themeBuilder.addChildThemes(childrenThemes, { avoidNestingWithin: ["accent"] });
|
|
281
|
+
}
|
|
282
|
+
if (grandChildrenThemes) {
|
|
283
|
+
themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, { avoidNestingWithin: ["accent"] });
|
|
284
|
+
}
|
|
285
|
+
if (palettes.light_accent) {
|
|
286
|
+
themeBuilder = themeBuilder.addChildThemes({ accent: [{
|
|
287
|
+
parent: "light",
|
|
288
|
+
template: "base",
|
|
289
|
+
palette: "light_accent",
|
|
290
|
+
nonInheritedValues: accentExtra?.light
|
|
291
|
+
}, {
|
|
292
|
+
parent: "dark",
|
|
293
|
+
template: "base",
|
|
294
|
+
palette: "dark_accent",
|
|
295
|
+
nonInheritedValues: accentExtra?.dark
|
|
296
|
+
}] }, { avoidNestingWithin: Object.keys(childrenThemes || {}) });
|
|
297
|
+
}
|
|
298
|
+
if (componentThemes) {
|
|
299
|
+
themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), { avoidNestingWithin: Object.keys(grandChildrenThemes || {}) });
|
|
300
|
+
}
|
|
301
|
+
if (getTheme) {
|
|
302
|
+
themeBuilder = themeBuilder.getTheme(getTheme);
|
|
303
|
+
}
|
|
304
|
+
return {
|
|
305
|
+
themeBuilder,
|
|
306
|
+
themes: themeBuilder.build()
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
export { createPalettes, createSimpleThemeBuilder, createThemes, createV4ThemeBuilder, createV4Themes, getComponentThemes, getLastBuilder };
|
|
311
|
+
//# sourceMappingURL=createThemes.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createThemes.js","names":[],"sources":["esm/theme-builder/createThemes.js"],"sourcesContent":["import { parseToHsla } from \"color2k\";\nimport { defaultComponentThemes } from \"./defaultComponentThemes\";\nimport { defaultTemplates } from \"./defaultTemplates\";\nimport { getThemeSuitePalettes, PALETTE_BACKGROUND_OFFSET } from \"./getThemeSuitePalettes\";\nimport { createThemeBuilder } from \"./ThemeBuilder\";\nfunction createThemes(props) {\n const {\n accent,\n childrenThemes,\n grandChildrenThemes,\n templates = defaultTemplates,\n componentThemes,\n getTheme\n } = props;\n const builder = createSimpleThemeBuilder({\n extra: props.base.extra,\n accentExtra: accent?.extra,\n componentThemes,\n palettes: createPalettes(getThemesPalettes(props)),\n templates,\n accentTheme: !!accent,\n childrenThemes: normalizeSubThemes(childrenThemes),\n grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,\n getTheme\n });\n lastBuilder = builder.themeBuilder;\n return builder.themes;\n}\nlet lastBuilder = null;\nconst getLastBuilder = () => lastBuilder;\nfunction createV4Themes(props) {\n const {\n accent,\n childrenThemes,\n grandChildrenThemes,\n templates = defaultTemplates,\n componentThemes,\n getTheme\n } = props;\n const builder = createV4ThemeBuilder({\n extra: props.base.extra,\n accentExtra: accent?.extra,\n componentThemes,\n palettes: createPalettes(getThemesPalettes(props)),\n templates,\n accentTheme: !!accent,\n childrenThemes: normalizeSubThemes(childrenThemes),\n grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,\n getTheme\n });\n lastBuilder = builder.themeBuilder;\n return builder.themes;\n}\nfunction normalizeSubThemes(defs) {\n return Object.fromEntries(\n Object.entries(defs || {}).map(([name, value]) => {\n const hasPalette = value.palette !== void 0;\n return [\n name,\n {\n // Only add palette if the definition has one, otherwise theme is template-only\n ...hasPalette ? { palette: name } : {},\n template: value.template || \"base\"\n }\n ];\n })\n );\n}\nconst defaultPalettes = createPalettes(\n getThemesPalettes({\n base: {\n palette: [\"#fff\", \"#000\"]\n },\n accent: {\n palette: [\"#ff0000\", \"#ff9999\"]\n }\n })\n);\nfunction createSimpleThemeBuilder(props) {\n const {\n getTheme,\n extra,\n accentExtra,\n childrenThemes = null,\n grandChildrenThemes = null,\n templates = defaultTemplates,\n palettes = defaultPalettes,\n accentTheme,\n componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0\n } = props;\n let themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({\n light: {\n template: \"base\",\n palette: \"light\",\n nonInheritedValues: {\n ...extra?.light,\n ...accentTheme && palettes.light_accent && {\n accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],\n accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],\n accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],\n accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],\n accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],\n accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],\n accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],\n accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],\n accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],\n accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],\n accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],\n accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]\n }\n }\n },\n dark: {\n template: \"base\",\n palette: \"dark\",\n nonInheritedValues: {\n ...extra?.dark,\n ...accentTheme && palettes.dark_accent && {\n accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],\n accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],\n accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],\n accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],\n accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],\n accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],\n accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],\n accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],\n accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],\n accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],\n accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],\n accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]\n }\n }\n }\n });\n if (palettes.light_accent) {\n themeBuilder = themeBuilder.addChildThemes({\n accent: [\n {\n parent: \"light\",\n template: \"base\",\n palette: \"light_accent\",\n nonInheritedValues: accentExtra?.light\n },\n {\n parent: \"dark\",\n template: \"base\",\n palette: \"dark_accent\",\n nonInheritedValues: accentExtra?.dark\n }\n ]\n });\n }\n if (childrenThemes) {\n themeBuilder = themeBuilder.addChildThemes(childrenThemes, {\n avoidNestingWithin: [\"accent\"]\n });\n }\n if (grandChildrenThemes) {\n themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, {\n avoidNestingWithin: [\"accent\"]\n });\n }\n if (componentThemes) {\n themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), {\n avoidNestingWithin: Object.keys(grandChildrenThemes || {})\n });\n }\n if (getTheme) {\n themeBuilder = themeBuilder.getTheme(getTheme);\n }\n return {\n themeBuilder,\n themes: themeBuilder.build()\n };\n}\nfunction getSchemePalette(colors) {\n return {\n light: colors,\n dark: [...colors].reverse()\n };\n}\nfunction getAnchors(palette) {\n const maxIndex = 11;\n const numItems = palette.light.length;\n const anchors = palette.light.map((lcolor, index) => {\n const dcolor = palette.dark[index];\n const [lhue, lsat, llum, lalpha] = parseToHsla(lcolor);\n const [dhue, dsat, dlum, dalpha] = parseToHsla(dcolor);\n return {\n index: spreadIndex(maxIndex, numItems, index),\n hue: { light: lhue, dark: dhue },\n sat: { light: lsat, dark: dsat },\n lum: { light: llum, dark: dlum },\n alpha: { light: lalpha, dark: dalpha }\n };\n });\n return anchors;\n}\nfunction spreadIndex(maxIndex, numItems, index) {\n return Math.round(index / (numItems - 1) * maxIndex);\n}\nfunction coerceSimplePaletteToSchemePalette(def) {\n return Array.isArray(def) ? getSchemePalette(def) : def;\n}\nfunction getThemesPalettes(props) {\n const base = coerceSimplePaletteToSchemePalette(props.base.palette);\n const accent = props.accent ? coerceSimplePaletteToSchemePalette(props.accent.palette) : null;\n const baseAnchors = getAnchors(base);\n function getSubThemesPalettes(defs, isGrandChildren = false) {\n return Object.fromEntries(\n Object.entries(defs).map(([key, value]) => {\n if (isGrandChildren && key === \"accent\" && !value.palette) {\n return null;\n }\n return [\n key,\n {\n name: key,\n anchors: value.palette ? getAnchors(coerceSimplePaletteToSchemePalette(value.palette)) : baseAnchors\n }\n ];\n }).filter(Boolean)\n );\n }\n return {\n base: {\n name: \"base\",\n anchors: baseAnchors\n },\n ...accent && {\n accent: {\n name: \"accent\",\n anchors: getAnchors(accent)\n }\n },\n ...props.childrenThemes && getSubThemesPalettes(props.childrenThemes, false),\n ...props.grandChildrenThemes && getSubThemesPalettes(props.grandChildrenThemes, true)\n };\n}\nconst getComponentThemes = (components) => {\n return Object.fromEntries(\n Object.entries(components).map(([componentName, { template }]) => {\n return [\n componentName,\n {\n parent: \"\",\n template: template || \"base\"\n }\n ];\n })\n );\n};\nfunction createPalettes(palettes) {\n const accentPalettes = palettes.accent ? getThemeSuitePalettes(palettes.accent) : null;\n const basePalettes = getThemeSuitePalettes(palettes.base);\n const next = Object.fromEntries(\n Object.entries(palettes).flatMap(([name, palette]) => {\n const palettes2 = getThemeSuitePalettes(palette);\n const isAccent = name.startsWith(\"accent\");\n const oppositePalettes = isAccent ? basePalettes : accentPalettes || basePalettes;\n if (!oppositePalettes) {\n return [];\n }\n const oppositeLight = oppositePalettes.light;\n const oppositeDark = oppositePalettes.dark;\n const bgOffset = 7;\n const out = [\n [\n name === \"base\" ? \"light\" : `light_${name}`,\n [\n oppositeLight[bgOffset],\n ...palettes2.light,\n oppositeLight[oppositeLight.length - bgOffset - 1]\n ]\n ],\n [\n name === \"base\" ? \"dark\" : `dark_${name}`,\n [\n oppositeDark[oppositeDark.length - bgOffset - 1],\n ...palettes2.dark,\n oppositeDark[bgOffset]\n ]\n ]\n ];\n return out;\n })\n );\n return next;\n}\nfunction createV4ThemeBuilder(props) {\n const {\n getTheme,\n extra,\n accentExtra,\n childrenThemes = null,\n grandChildrenThemes = null,\n templates = defaultTemplates,\n palettes = defaultPalettes,\n accentTheme,\n componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0\n } = props;\n let themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({\n light: {\n template: \"base\",\n palette: \"light\",\n nonInheritedValues: {\n ...extra?.light,\n ...accentTheme && palettes.light_accent && {\n accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],\n accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],\n accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],\n accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],\n accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],\n accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],\n accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],\n accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],\n accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],\n accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],\n accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],\n accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]\n }\n }\n },\n dark: {\n template: \"base\",\n palette: \"dark\",\n nonInheritedValues: {\n ...extra?.dark,\n ...accentTheme && palettes.dark_accent && {\n accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],\n accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],\n accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],\n accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],\n accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],\n accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],\n accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],\n accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],\n accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],\n accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],\n accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],\n accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]\n }\n }\n }\n });\n if (childrenThemes) {\n themeBuilder = themeBuilder.addChildThemes(childrenThemes, {\n avoidNestingWithin: [\"accent\"]\n });\n }\n if (grandChildrenThemes) {\n themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, {\n avoidNestingWithin: [\"accent\"]\n });\n }\n if (palettes.light_accent) {\n themeBuilder = themeBuilder.addChildThemes(\n {\n accent: [\n {\n parent: \"light\",\n template: \"base\",\n palette: \"light_accent\",\n nonInheritedValues: accentExtra?.light\n },\n {\n parent: \"dark\",\n template: \"base\",\n palette: \"dark_accent\",\n nonInheritedValues: accentExtra?.dark\n }\n ]\n },\n {\n avoidNestingWithin: Object.keys(childrenThemes || {})\n }\n );\n }\n if (componentThemes) {\n themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), {\n avoidNestingWithin: Object.keys(grandChildrenThemes || {})\n });\n }\n if (getTheme) {\n themeBuilder = themeBuilder.getTheme(getTheme);\n }\n return {\n themeBuilder,\n themes: themeBuilder.build()\n };\n}\nexport {\n createPalettes,\n createSimpleThemeBuilder,\n createThemes,\n createV4ThemeBuilder,\n createV4Themes,\n getComponentThemes,\n getLastBuilder\n};\n//# sourceMappingURL=createThemes.js.map\n"],"mappings":"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"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { parseToHsla } from "color2k";
|
|
2
|
+
import { defaultComponentThemes } from "./defaultComponentThemes.native.js";
|
|
3
|
+
import { defaultTemplates } from "./defaultTemplates.native.js";
|
|
4
|
+
import { PALETTE_BACKGROUND_OFFSET, getThemeSuitePalettes } from "./getThemeSuitePalettes.native.js";
|
|
5
|
+
import { createThemeBuilder } from "./ThemeBuilder.native.js";
|
|
6
|
+
|
|
7
|
+
function createThemes(props) {
|
|
8
|
+
var { accent, childrenThemes, grandChildrenThemes, templates = defaultTemplates, componentThemes, getTheme } = props;
|
|
9
|
+
var builder = createSimpleThemeBuilder({
|
|
10
|
+
extra: props.base.extra,
|
|
11
|
+
accentExtra: accent === null || accent === void 0 ? void 0 : accent.extra,
|
|
12
|
+
componentThemes,
|
|
13
|
+
palettes: createPalettes(getThemesPalettes(props)),
|
|
14
|
+
templates,
|
|
15
|
+
accentTheme: !!accent,
|
|
16
|
+
childrenThemes: normalizeSubThemes(childrenThemes),
|
|
17
|
+
grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,
|
|
18
|
+
getTheme
|
|
19
|
+
});
|
|
20
|
+
lastBuilder = builder.themeBuilder;
|
|
21
|
+
return builder.themes;
|
|
22
|
+
}
|
|
23
|
+
var lastBuilder = null;
|
|
24
|
+
var getLastBuilder = function() {
|
|
25
|
+
return lastBuilder;
|
|
26
|
+
};
|
|
27
|
+
function createV4Themes(props) {
|
|
28
|
+
var { accent, childrenThemes, grandChildrenThemes, templates = defaultTemplates, componentThemes, getTheme } = props;
|
|
29
|
+
var builder = createV4ThemeBuilder({
|
|
30
|
+
extra: props.base.extra,
|
|
31
|
+
accentExtra: accent === null || accent === void 0 ? void 0 : accent.extra,
|
|
32
|
+
componentThemes,
|
|
33
|
+
palettes: createPalettes(getThemesPalettes(props)),
|
|
34
|
+
templates,
|
|
35
|
+
accentTheme: !!accent,
|
|
36
|
+
childrenThemes: normalizeSubThemes(childrenThemes),
|
|
37
|
+
grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,
|
|
38
|
+
getTheme
|
|
39
|
+
});
|
|
40
|
+
lastBuilder = builder.themeBuilder;
|
|
41
|
+
return builder.themes;
|
|
42
|
+
}
|
|
43
|
+
function normalizeSubThemes(defs) {
|
|
44
|
+
return Object.fromEntries(Object.entries(defs || {}).map(function(param) {
|
|
45
|
+
var [name, value] = param;
|
|
46
|
+
var hasPalette = value.palette !== void 0;
|
|
47
|
+
return [name, {
|
|
48
|
+
...hasPalette ? { palette: name } : {},
|
|
49
|
+
template: value.template || "base"
|
|
50
|
+
}];
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
var defaultPalettes = createPalettes(getThemesPalettes({
|
|
54
|
+
base: { palette: ["#fff", "#000"] },
|
|
55
|
+
accent: { palette: ["#ff0000", "#ff9999"] }
|
|
56
|
+
}));
|
|
57
|
+
function createSimpleThemeBuilder(props) {
|
|
58
|
+
var { getTheme, extra, accentExtra, childrenThemes = null, grandChildrenThemes = null, templates = defaultTemplates, palettes = defaultPalettes, accentTheme, componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0 } = props;
|
|
59
|
+
var themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({
|
|
60
|
+
light: {
|
|
61
|
+
template: "base",
|
|
62
|
+
palette: "light",
|
|
63
|
+
nonInheritedValues: {
|
|
64
|
+
...extra === null || extra === void 0 ? void 0 : extra.light,
|
|
65
|
+
...accentTheme && palettes.light_accent && {
|
|
66
|
+
accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],
|
|
67
|
+
accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],
|
|
68
|
+
accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],
|
|
69
|
+
accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],
|
|
70
|
+
accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],
|
|
71
|
+
accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],
|
|
72
|
+
accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],
|
|
73
|
+
accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],
|
|
74
|
+
accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],
|
|
75
|
+
accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],
|
|
76
|
+
accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],
|
|
77
|
+
accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
dark: {
|
|
82
|
+
template: "base",
|
|
83
|
+
palette: "dark",
|
|
84
|
+
nonInheritedValues: {
|
|
85
|
+
...extra === null || extra === void 0 ? void 0 : extra.dark,
|
|
86
|
+
...accentTheme && palettes.dark_accent && {
|
|
87
|
+
accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],
|
|
88
|
+
accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],
|
|
89
|
+
accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],
|
|
90
|
+
accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],
|
|
91
|
+
accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],
|
|
92
|
+
accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],
|
|
93
|
+
accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],
|
|
94
|
+
accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],
|
|
95
|
+
accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],
|
|
96
|
+
accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],
|
|
97
|
+
accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],
|
|
98
|
+
accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
if (palettes.light_accent) {
|
|
104
|
+
themeBuilder = themeBuilder.addChildThemes({ accent: [{
|
|
105
|
+
parent: "light",
|
|
106
|
+
template: "base",
|
|
107
|
+
palette: "light_accent",
|
|
108
|
+
nonInheritedValues: accentExtra === null || accentExtra === void 0 ? void 0 : accentExtra.light
|
|
109
|
+
}, {
|
|
110
|
+
parent: "dark",
|
|
111
|
+
template: "base",
|
|
112
|
+
palette: "dark_accent",
|
|
113
|
+
nonInheritedValues: accentExtra === null || accentExtra === void 0 ? void 0 : accentExtra.dark
|
|
114
|
+
}] });
|
|
115
|
+
}
|
|
116
|
+
if (childrenThemes) {
|
|
117
|
+
themeBuilder = themeBuilder.addChildThemes(childrenThemes, { avoidNestingWithin: ["accent"] });
|
|
118
|
+
}
|
|
119
|
+
if (grandChildrenThemes) {
|
|
120
|
+
themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, { avoidNestingWithin: ["accent"] });
|
|
121
|
+
}
|
|
122
|
+
if (componentThemes) {
|
|
123
|
+
themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), { avoidNestingWithin: Object.keys(grandChildrenThemes || {}) });
|
|
124
|
+
}
|
|
125
|
+
if (getTheme) {
|
|
126
|
+
themeBuilder = themeBuilder.getTheme(getTheme);
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
themeBuilder,
|
|
130
|
+
themes: themeBuilder.build()
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function getSchemePalette(colors) {
|
|
134
|
+
return {
|
|
135
|
+
light: colors,
|
|
136
|
+
dark: [...colors].reverse()
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function getAnchors(palette) {
|
|
140
|
+
var maxIndex = 11;
|
|
141
|
+
var numItems = palette.light.length;
|
|
142
|
+
var anchors = palette.light.map(function(lcolor, index) {
|
|
143
|
+
var dcolor = palette.dark[index];
|
|
144
|
+
var [lhue, lsat, llum, lalpha] = parseToHsla(lcolor);
|
|
145
|
+
var [dhue, dsat, dlum, dalpha] = parseToHsla(dcolor);
|
|
146
|
+
return {
|
|
147
|
+
index: spreadIndex(maxIndex, numItems, index),
|
|
148
|
+
hue: {
|
|
149
|
+
light: lhue,
|
|
150
|
+
dark: dhue
|
|
151
|
+
},
|
|
152
|
+
sat: {
|
|
153
|
+
light: lsat,
|
|
154
|
+
dark: dsat
|
|
155
|
+
},
|
|
156
|
+
lum: {
|
|
157
|
+
light: llum,
|
|
158
|
+
dark: dlum
|
|
159
|
+
},
|
|
160
|
+
alpha: {
|
|
161
|
+
light: lalpha,
|
|
162
|
+
dark: dalpha
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
});
|
|
166
|
+
return anchors;
|
|
167
|
+
}
|
|
168
|
+
function spreadIndex(maxIndex, numItems, index) {
|
|
169
|
+
return Math.round(index / (numItems - 1) * maxIndex);
|
|
170
|
+
}
|
|
171
|
+
function coerceSimplePaletteToSchemePalette(def) {
|
|
172
|
+
return Array.isArray(def) ? getSchemePalette(def) : def;
|
|
173
|
+
}
|
|
174
|
+
function getThemesPalettes(props) {
|
|
175
|
+
var base = coerceSimplePaletteToSchemePalette(props.base.palette);
|
|
176
|
+
var accent = props.accent ? coerceSimplePaletteToSchemePalette(props.accent.palette) : null;
|
|
177
|
+
var baseAnchors = getAnchors(base);
|
|
178
|
+
function getSubThemesPalettes(defs) {
|
|
179
|
+
var isGrandChildren = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
|
180
|
+
return Object.fromEntries(Object.entries(defs).map(function(param) {
|
|
181
|
+
var [key, value] = param;
|
|
182
|
+
if (isGrandChildren && key === "accent" && !value.palette) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
return [key, {
|
|
186
|
+
name: key,
|
|
187
|
+
anchors: value.palette ? getAnchors(coerceSimplePaletteToSchemePalette(value.palette)) : baseAnchors
|
|
188
|
+
}];
|
|
189
|
+
}).filter(Boolean));
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
base: {
|
|
193
|
+
name: "base",
|
|
194
|
+
anchors: baseAnchors
|
|
195
|
+
},
|
|
196
|
+
...accent && { accent: {
|
|
197
|
+
name: "accent",
|
|
198
|
+
anchors: getAnchors(accent)
|
|
199
|
+
} },
|
|
200
|
+
...props.childrenThemes && getSubThemesPalettes(props.childrenThemes, false),
|
|
201
|
+
...props.grandChildrenThemes && getSubThemesPalettes(props.grandChildrenThemes, true)
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
var getComponentThemes = function(components) {
|
|
205
|
+
return Object.fromEntries(Object.entries(components).map(function(param) {
|
|
206
|
+
var [componentName, { template }] = param;
|
|
207
|
+
return [componentName, {
|
|
208
|
+
parent: "",
|
|
209
|
+
template: template || "base"
|
|
210
|
+
}];
|
|
211
|
+
}));
|
|
212
|
+
};
|
|
213
|
+
function createPalettes(palettes) {
|
|
214
|
+
var accentPalettes = palettes.accent ? getThemeSuitePalettes(palettes.accent) : null;
|
|
215
|
+
var basePalettes = getThemeSuitePalettes(palettes.base);
|
|
216
|
+
var next = Object.fromEntries(Object.entries(palettes).flatMap(function(param) {
|
|
217
|
+
var [name, palette] = param;
|
|
218
|
+
var _$palettes = getThemeSuitePalettes(palette);
|
|
219
|
+
var isAccent = name.startsWith("accent");
|
|
220
|
+
var oppositePalettes = isAccent ? basePalettes : accentPalettes || basePalettes;
|
|
221
|
+
if (!oppositePalettes) {
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
var oppositeLight = oppositePalettes.light;
|
|
225
|
+
var oppositeDark = oppositePalettes.dark;
|
|
226
|
+
var bgOffset = 7;
|
|
227
|
+
var out = [[name === "base" ? "light" : `light_${name}`, [
|
|
228
|
+
oppositeLight[bgOffset],
|
|
229
|
+
..._$palettes.light,
|
|
230
|
+
oppositeLight[oppositeLight.length - bgOffset - 1]
|
|
231
|
+
]], [name === "base" ? "dark" : `dark_${name}`, [
|
|
232
|
+
oppositeDark[oppositeDark.length - bgOffset - 1],
|
|
233
|
+
..._$palettes.dark,
|
|
234
|
+
oppositeDark[bgOffset]
|
|
235
|
+
]]];
|
|
236
|
+
return out;
|
|
237
|
+
}));
|
|
238
|
+
return next;
|
|
239
|
+
}
|
|
240
|
+
function createV4ThemeBuilder(props) {
|
|
241
|
+
var { getTheme, extra, accentExtra, childrenThemes = null, grandChildrenThemes = null, templates = defaultTemplates, palettes = defaultPalettes, accentTheme, componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0 } = props;
|
|
242
|
+
var themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({
|
|
243
|
+
light: {
|
|
244
|
+
template: "base",
|
|
245
|
+
palette: "light",
|
|
246
|
+
nonInheritedValues: {
|
|
247
|
+
...extra === null || extra === void 0 ? void 0 : extra.light,
|
|
248
|
+
...accentTheme && palettes.light_accent && {
|
|
249
|
+
accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],
|
|
250
|
+
accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],
|
|
251
|
+
accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],
|
|
252
|
+
accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],
|
|
253
|
+
accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],
|
|
254
|
+
accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],
|
|
255
|
+
accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],
|
|
256
|
+
accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],
|
|
257
|
+
accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],
|
|
258
|
+
accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],
|
|
259
|
+
accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],
|
|
260
|
+
accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
dark: {
|
|
265
|
+
template: "base",
|
|
266
|
+
palette: "dark",
|
|
267
|
+
nonInheritedValues: {
|
|
268
|
+
...extra === null || extra === void 0 ? void 0 : extra.dark,
|
|
269
|
+
...accentTheme && palettes.dark_accent && {
|
|
270
|
+
accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],
|
|
271
|
+
accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],
|
|
272
|
+
accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],
|
|
273
|
+
accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],
|
|
274
|
+
accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],
|
|
275
|
+
accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],
|
|
276
|
+
accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],
|
|
277
|
+
accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],
|
|
278
|
+
accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],
|
|
279
|
+
accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],
|
|
280
|
+
accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],
|
|
281
|
+
accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
if (childrenThemes) {
|
|
287
|
+
themeBuilder = themeBuilder.addChildThemes(childrenThemes, { avoidNestingWithin: ["accent"] });
|
|
288
|
+
}
|
|
289
|
+
if (grandChildrenThemes) {
|
|
290
|
+
themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, { avoidNestingWithin: ["accent"] });
|
|
291
|
+
}
|
|
292
|
+
if (palettes.light_accent) {
|
|
293
|
+
themeBuilder = themeBuilder.addChildThemes({ accent: [{
|
|
294
|
+
parent: "light",
|
|
295
|
+
template: "base",
|
|
296
|
+
palette: "light_accent",
|
|
297
|
+
nonInheritedValues: accentExtra === null || accentExtra === void 0 ? void 0 : accentExtra.light
|
|
298
|
+
}, {
|
|
299
|
+
parent: "dark",
|
|
300
|
+
template: "base",
|
|
301
|
+
palette: "dark_accent",
|
|
302
|
+
nonInheritedValues: accentExtra === null || accentExtra === void 0 ? void 0 : accentExtra.dark
|
|
303
|
+
}] }, { avoidNestingWithin: Object.keys(childrenThemes || {}) });
|
|
304
|
+
}
|
|
305
|
+
if (componentThemes) {
|
|
306
|
+
themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), { avoidNestingWithin: Object.keys(grandChildrenThemes || {}) });
|
|
307
|
+
}
|
|
308
|
+
if (getTheme) {
|
|
309
|
+
themeBuilder = themeBuilder.getTheme(getTheme);
|
|
310
|
+
}
|
|
311
|
+
return {
|
|
312
|
+
themeBuilder,
|
|
313
|
+
themes: themeBuilder.build()
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
export { createPalettes, createSimpleThemeBuilder, createThemes, createV4ThemeBuilder, createV4Themes, getComponentThemes, getLastBuilder };
|
|
318
|
+
//# sourceMappingURL=createThemes.native.js.map
|