@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,83 @@
|
|
|
1
|
+
// copied from @tamagui/themes
|
|
2
|
+
|
|
3
|
+
import type { MaskDefinitions } from '../create-theme'
|
|
4
|
+
import {
|
|
5
|
+
combineMasks,
|
|
6
|
+
createIdentityMask,
|
|
7
|
+
createInverseMask,
|
|
8
|
+
createMask,
|
|
9
|
+
createSoftenMask,
|
|
10
|
+
createStrengthenMask,
|
|
11
|
+
skipMask,
|
|
12
|
+
} from '../create-theme'
|
|
13
|
+
|
|
14
|
+
export const masks = {
|
|
15
|
+
identity: createIdentityMask(),
|
|
16
|
+
soften: createSoftenMask(),
|
|
17
|
+
soften2: createSoftenMask({ strength: 2 }),
|
|
18
|
+
soften3: createSoftenMask({ strength: 3 }),
|
|
19
|
+
strengthen: createStrengthenMask(),
|
|
20
|
+
inverse: createInverseMask(),
|
|
21
|
+
inverseSoften: combineMasks(createInverseMask(), createSoftenMask({ strength: 2 })),
|
|
22
|
+
inverseSoften2: combineMasks(createInverseMask(), createSoftenMask({ strength: 3 })),
|
|
23
|
+
inverseSoften3: combineMasks(createInverseMask(), createSoftenMask({ strength: 4 })),
|
|
24
|
+
inverseStrengthen2: combineMasks(
|
|
25
|
+
createInverseMask(),
|
|
26
|
+
createStrengthenMask({ strength: 2 })
|
|
27
|
+
),
|
|
28
|
+
strengthenButSoftenBorder: createMask((template, options) => {
|
|
29
|
+
const stronger = createStrengthenMask().mask(template, options)
|
|
30
|
+
const softer = createSoftenMask().mask(template, options)
|
|
31
|
+
return {
|
|
32
|
+
...stronger,
|
|
33
|
+
borderColor: softer.borderColor,
|
|
34
|
+
borderColorHover: softer.borderColorHover,
|
|
35
|
+
borderColorPress: softer.borderColorPress,
|
|
36
|
+
borderColorFocus: softer.borderColorFocus,
|
|
37
|
+
}
|
|
38
|
+
}),
|
|
39
|
+
soften2Border1: createMask((template, options) => {
|
|
40
|
+
const softer2 = createSoftenMask({ strength: 2 }).mask(template, options)
|
|
41
|
+
const softer1 = createSoftenMask({ strength: 1 }).mask(template, options)
|
|
42
|
+
return {
|
|
43
|
+
...softer2,
|
|
44
|
+
borderColor: softer1.borderColor,
|
|
45
|
+
borderColorHover: softer1.borderColorHover,
|
|
46
|
+
borderColorPress: softer1.borderColorPress,
|
|
47
|
+
borderColorFocus: softer1.borderColorFocus,
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
soften3FlatBorder: createMask((template, options) => {
|
|
51
|
+
const borderMask = createSoftenMask({ strength: 2 }).mask(template, options)
|
|
52
|
+
const softer3 = createSoftenMask({ strength: 3 }).mask(template, options)
|
|
53
|
+
return {
|
|
54
|
+
...softer3,
|
|
55
|
+
borderColor: borderMask.borderColor,
|
|
56
|
+
borderColorHover: borderMask.borderColorHover,
|
|
57
|
+
borderColorPress: borderMask.borderColorPress,
|
|
58
|
+
borderColorFocus: borderMask.borderColorFocus,
|
|
59
|
+
}
|
|
60
|
+
}),
|
|
61
|
+
softenBorder: createMask((template, options) => {
|
|
62
|
+
const plain = skipMask.mask(template, options)
|
|
63
|
+
const softer = createSoftenMask().mask(template, options)
|
|
64
|
+
return {
|
|
65
|
+
...plain,
|
|
66
|
+
borderColor: softer.borderColor,
|
|
67
|
+
borderColorHover: softer.borderColorHover,
|
|
68
|
+
borderColorPress: softer.borderColorPress,
|
|
69
|
+
borderColorFocus: softer.borderColorFocus,
|
|
70
|
+
}
|
|
71
|
+
}),
|
|
72
|
+
softenBorder2: createMask((template, options) => {
|
|
73
|
+
const plain = skipMask.mask(template, options)
|
|
74
|
+
const softer = createSoftenMask({ strength: 2 }).mask(template, options)
|
|
75
|
+
return {
|
|
76
|
+
...plain,
|
|
77
|
+
borderColor: softer.borderColor,
|
|
78
|
+
borderColorHover: softer.borderColorHover,
|
|
79
|
+
borderColorPress: softer.borderColorPress,
|
|
80
|
+
borderColorFocus: softer.borderColorFocus,
|
|
81
|
+
}
|
|
82
|
+
}),
|
|
83
|
+
} satisfies MaskDefinitions
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { Template } from '../create-theme'
|
|
2
|
+
|
|
3
|
+
export type GetThemeFn<ThemeType extends Record<string, string | number>> = (props: {
|
|
4
|
+
name: string
|
|
5
|
+
theme: Record<string, string>
|
|
6
|
+
scheme?: 'light' | 'dark'
|
|
7
|
+
parentName: string
|
|
8
|
+
parentNames: string[]
|
|
9
|
+
level: number
|
|
10
|
+
palette?: string[]
|
|
11
|
+
template?: Template
|
|
12
|
+
}) => ThemeType
|
|
13
|
+
|
|
14
|
+
export type TemplateStrategy = 'base' | 'stronger' | 'strongest'
|
|
15
|
+
|
|
16
|
+
export type ThemeSuiteItem = {
|
|
17
|
+
id: string
|
|
18
|
+
name: string
|
|
19
|
+
createdAt: number
|
|
20
|
+
updatedAt: number
|
|
21
|
+
schemes: { light: boolean; dark: boolean }
|
|
22
|
+
palettes: Record<string, BuildPalette>
|
|
23
|
+
templateStrategy?: TemplateStrategy
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type ThemeSuiteItemData = Omit<ThemeSuiteItem, 'id' | 'createdAt' | 'updatedAt'>
|
|
27
|
+
|
|
28
|
+
export type BuildTemplates = Record<string, Template>
|
|
29
|
+
|
|
30
|
+
export type BuildSubTheme = BuildTheme
|
|
31
|
+
|
|
32
|
+
export type BuildPalettes = Record<string, BuildPalette>
|
|
33
|
+
|
|
34
|
+
export type BuildPalette = {
|
|
35
|
+
name: string
|
|
36
|
+
scale?: ScaleTypeName
|
|
37
|
+
anchors: BuildThemeAnchor[]
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type BuildThemeSuiteProps = Omit<ThemeSuiteItemData, 'name'>
|
|
41
|
+
|
|
42
|
+
export type BuildThemeSuitePalettes = {
|
|
43
|
+
light: string[]
|
|
44
|
+
dark: string[]
|
|
45
|
+
lightAccent?: string[]
|
|
46
|
+
darkAccent?: string[]
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export type ScaleTypeName =
|
|
50
|
+
| 'custom'
|
|
51
|
+
| 'radix'
|
|
52
|
+
| 'radix-b'
|
|
53
|
+
| 'radius-bold'
|
|
54
|
+
| 'radius-bright'
|
|
55
|
+
| 'linear'
|
|
56
|
+
| 'pastel'
|
|
57
|
+
| 'pastel-desaturating'
|
|
58
|
+
| 'neon'
|
|
59
|
+
| 'neon-bright'
|
|
60
|
+
| 'neon-c'
|
|
61
|
+
|
|
62
|
+
export type BuildThemeBase = {
|
|
63
|
+
id: string
|
|
64
|
+
name: string
|
|
65
|
+
errors?: string[]
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export type BuildThemeAnchor = {
|
|
69
|
+
index: number
|
|
70
|
+
hue: {
|
|
71
|
+
light: number
|
|
72
|
+
dark: number
|
|
73
|
+
sync?: boolean
|
|
74
|
+
syncLeft?: boolean
|
|
75
|
+
}
|
|
76
|
+
sat: {
|
|
77
|
+
light: number
|
|
78
|
+
dark: number
|
|
79
|
+
sync?: boolean
|
|
80
|
+
syncLeft?: boolean
|
|
81
|
+
}
|
|
82
|
+
lum: {
|
|
83
|
+
light: number
|
|
84
|
+
dark: number
|
|
85
|
+
}
|
|
86
|
+
alpha: {
|
|
87
|
+
light: number
|
|
88
|
+
dark: number
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export type BuildTheme = BuildThemeBase & {
|
|
93
|
+
type: 'theme'
|
|
94
|
+
template: string
|
|
95
|
+
palette: string
|
|
96
|
+
accent?: BuildTheme
|
|
97
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interpolate between two colors
|
|
3
|
+
* @param color1 - First color (hex or hsl)
|
|
4
|
+
* @param color2 - Second color (hex or hsl)
|
|
5
|
+
* @param amount - 0 = color1, 1 = color2, 0.5 = middle
|
|
6
|
+
*/
|
|
7
|
+
export function interpolateColor(color1: string, color2: string, amount: number): string {
|
|
8
|
+
const rgb1 = parseToRgb(color1)
|
|
9
|
+
const rgb2 = parseToRgb(color2)
|
|
10
|
+
if (!rgb1 || !rgb2) return color1
|
|
11
|
+
|
|
12
|
+
const r = Math.round(rgb1.r + (rgb2.r - rgb1.r) * amount)
|
|
13
|
+
const g = Math.round(rgb1.g + (rgb2.g - rgb1.g) * amount)
|
|
14
|
+
const b = Math.round(rgb1.b + (rgb2.b - rgb1.b) * amount)
|
|
15
|
+
|
|
16
|
+
return `rgb(${r}, ${g}, ${b})`
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function parseToRgb(color: string): { r: number; g: number; b: number } | null {
|
|
20
|
+
if (typeof color !== 'string') return null
|
|
21
|
+
|
|
22
|
+
// Handle hex
|
|
23
|
+
if (color.startsWith('#')) {
|
|
24
|
+
let hex = color.slice(1)
|
|
25
|
+
if (hex.length === 3) {
|
|
26
|
+
hex = hex
|
|
27
|
+
.split('')
|
|
28
|
+
.map((c) => c + c)
|
|
29
|
+
.join('')
|
|
30
|
+
}
|
|
31
|
+
if (hex.length >= 6) {
|
|
32
|
+
return {
|
|
33
|
+
r: Number.parseInt(hex.slice(0, 2), 16),
|
|
34
|
+
g: Number.parseInt(hex.slice(2, 4), 16),
|
|
35
|
+
b: Number.parseInt(hex.slice(4, 6), 16),
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Handle rgb/rgba
|
|
41
|
+
if (color.startsWith('rgb')) {
|
|
42
|
+
const match = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/)
|
|
43
|
+
if (match) {
|
|
44
|
+
return {
|
|
45
|
+
r: Number.parseInt(match[1], 10),
|
|
46
|
+
g: Number.parseInt(match[2], 10),
|
|
47
|
+
b: Number.parseInt(match[3], 10),
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Handle hsl/hsla
|
|
53
|
+
if (color.startsWith('hsl')) {
|
|
54
|
+
const match = color.match(/hsla?\((\d+),\s*(\d+)%,\s*(\d+)%/)
|
|
55
|
+
if (match) {
|
|
56
|
+
const h = Number.parseInt(match[1], 10)
|
|
57
|
+
const s = Number.parseInt(match[2], 10) / 100
|
|
58
|
+
const l = Number.parseInt(match[3], 10) / 100
|
|
59
|
+
return hslToRgb(h, s, l)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return null
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {
|
|
67
|
+
let r: number
|
|
68
|
+
let g: number
|
|
69
|
+
let b: number
|
|
70
|
+
if (s === 0) {
|
|
71
|
+
r = g = b = l
|
|
72
|
+
} else {
|
|
73
|
+
const hue2rgb = (p: number, q: number, t: number) => {
|
|
74
|
+
if (t < 0) t += 1
|
|
75
|
+
if (t > 1) t -= 1
|
|
76
|
+
if (t < 1 / 6) return p + (q - p) * 6 * t
|
|
77
|
+
if (t < 1 / 2) return q
|
|
78
|
+
if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6
|
|
79
|
+
return p
|
|
80
|
+
}
|
|
81
|
+
const q = l < 0.5 ? l * (1 + s) : l + s - l * s
|
|
82
|
+
const p = 2 * l - q
|
|
83
|
+
r = hue2rgb(p, q, h / 360 + 1 / 3)
|
|
84
|
+
g = hue2rgb(p, q, h / 360)
|
|
85
|
+
b = hue2rgb(p, q, h / 360 - 1 / 3)
|
|
86
|
+
}
|
|
87
|
+
return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) }
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function opacify(color: string, opacity = 0.1): string {
|
|
91
|
+
// Handle dynamic color objects
|
|
92
|
+
if (typeof color !== 'string') return color
|
|
93
|
+
|
|
94
|
+
// handle hsl/hsla
|
|
95
|
+
if (color.startsWith('hsl')) {
|
|
96
|
+
const match = color.match(/hsla?\((\d+),\s*(\d+)%,\s*(\d+)%(?:,\s*([\d.]+))?\)/)
|
|
97
|
+
if (match) {
|
|
98
|
+
const [, h, s, l] = match
|
|
99
|
+
return `hsla(${h}, ${s}%, ${l}%, ${opacity})`
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// handle hex
|
|
104
|
+
if (color.startsWith('#')) {
|
|
105
|
+
let hex = color.slice(1)
|
|
106
|
+
|
|
107
|
+
// expand shorthand hex
|
|
108
|
+
if (hex.length === 3) {
|
|
109
|
+
hex = hex
|
|
110
|
+
.split('')
|
|
111
|
+
.map((c) => c + c)
|
|
112
|
+
.join('')
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// set alpha channel to specified opacity
|
|
116
|
+
if (hex.length === 6 || hex.length === 8) {
|
|
117
|
+
const alphaHex = Math.round(opacity * 255)
|
|
118
|
+
.toString(16)
|
|
119
|
+
.padStart(2, '0')
|
|
120
|
+
return `#${hex.slice(0, 6)}${alphaHex}`
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return color
|
|
125
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type PaletteAdjustments,
|
|
3
|
+
defaultChildrenThemes,
|
|
4
|
+
adjustPalettes,
|
|
5
|
+
} from './v5-themes'
|
|
6
|
+
|
|
7
|
+
export const v5SubtlePaletteAdjustments: PaletteAdjustments<
|
|
8
|
+
typeof defaultChildrenThemes
|
|
9
|
+
> = {
|
|
10
|
+
default: {
|
|
11
|
+
light: (hsl) => ({
|
|
12
|
+
...hsl,
|
|
13
|
+
s: hsl.s * 0.9,
|
|
14
|
+
}),
|
|
15
|
+
dark: (hsl, i) => ({
|
|
16
|
+
...hsl,
|
|
17
|
+
s: hsl.s * (i <= 4 ? 0.7 : 0.9),
|
|
18
|
+
}),
|
|
19
|
+
},
|
|
20
|
+
// yellow palette in radix is especially off from the rest
|
|
21
|
+
yellow: {
|
|
22
|
+
light: (hsl, i) => {
|
|
23
|
+
// progressively darken and desaturate toward text colors for better contrast
|
|
24
|
+
// i=1 is lightest bg, i=12 is darkest text
|
|
25
|
+
const t = (i - 1) / 11 // 0 to 1
|
|
26
|
+
|
|
27
|
+
// saturation: starts at sStart, ends at sEnd
|
|
28
|
+
const sStart = 0.65
|
|
29
|
+
const sEnd = 0.4
|
|
30
|
+
|
|
31
|
+
// lightness: starts at lStart, ends at lEnd
|
|
32
|
+
const lStart = 1.08
|
|
33
|
+
const lEnd = 0.8
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
...hsl,
|
|
37
|
+
s: hsl.s * (sStart + t * (sEnd - sStart)),
|
|
38
|
+
l: hsl.l * (lStart + t * (lEnd - lStart)),
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
dark: (hsl, i) => ({
|
|
43
|
+
...hsl,
|
|
44
|
+
s: hsl.s * (i <= 7 ? 0.45 : 0.55),
|
|
45
|
+
l: hsl.l * (i <= 4 ? 0.8 : 1),
|
|
46
|
+
}),
|
|
47
|
+
},
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const subtleChildrenThemes = adjustPalettes(defaultChildrenThemes, {
|
|
51
|
+
...v5SubtlePaletteAdjustments,
|
|
52
|
+
gray: undefined, // skip
|
|
53
|
+
neutral: undefined, // skip
|
|
54
|
+
})
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// v5 theme builder entry - everything needed to build custom v5 themes at
|
|
2
|
+
// runtime. this pulls in the internal legacy builder and @tamagui/colors, while
|
|
3
|
+
// the default @tamagui/themes/v5 entry stays static and builder-free.
|
|
4
|
+
export { createThemes } from '../theme-builder'
|
|
5
|
+
export { v5Templates } from './v5-templates'
|
|
6
|
+
export * from './v5-themes'
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// v5-subtle theme builder entry - the v5 builder plus the pre-built subtle
|
|
2
|
+
// palette adjustments. like v5-builder this stays in the opt-in config-v5
|
|
3
|
+
// package while the default @tamagui/themes/v5-subtle entry remains static.
|
|
4
|
+
export * from './v5-builder'
|
|
5
|
+
export { subtleChildrenThemes, v5SubtlePaletteAdjustments } from './subtleChildrenThemes'
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { PALETTE_BACKGROUND_OFFSET, type BuildTemplates } from '../theme-builder'
|
|
2
|
+
|
|
3
|
+
const objectFromEntries = <const T extends readonly (readonly [string, any])[]>(
|
|
4
|
+
entries: T
|
|
5
|
+
): { [K in T[number] as K[0]]: K[1] } => {
|
|
6
|
+
return Object.fromEntries(entries) as any
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const objectKeys = <O extends object>(obj: O): (keyof O)[] => {
|
|
10
|
+
return Object.keys(obj) as (keyof O)[]
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const getTemplates = () => {
|
|
14
|
+
const lightTemplates = getBaseTemplates('light')
|
|
15
|
+
const darkTemplates = getBaseTemplates('dark')
|
|
16
|
+
const templates = {
|
|
17
|
+
...objectFromEntries(
|
|
18
|
+
objectKeys(lightTemplates).map(
|
|
19
|
+
(name) => [`light_${name}`, lightTemplates[name]] as const
|
|
20
|
+
)
|
|
21
|
+
),
|
|
22
|
+
...objectFromEntries(
|
|
23
|
+
objectKeys(darkTemplates).map(
|
|
24
|
+
(name) => [`dark_${name}`, darkTemplates[name]] as const
|
|
25
|
+
)
|
|
26
|
+
),
|
|
27
|
+
}
|
|
28
|
+
return templates as Record<keyof typeof templates, typeof lightTemplates.base>
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const getBaseTemplates = (scheme: 'dark' | 'light') => {
|
|
32
|
+
const isLight = scheme === 'light'
|
|
33
|
+
|
|
34
|
+
// our palettes have PALETTE_BACKGROUND_OFFSET things padding each end until you get to bg/color:
|
|
35
|
+
// [accentBg, transparent1, transparent2, transparent3, transparent4, background, ...]
|
|
36
|
+
const lighten = isLight ? -1 : 1
|
|
37
|
+
const darken = -lighten
|
|
38
|
+
|
|
39
|
+
// base
|
|
40
|
+
const background = PALETTE_BACKGROUND_OFFSET
|
|
41
|
+
const borderColor = background + 2
|
|
42
|
+
const color = -background
|
|
43
|
+
|
|
44
|
+
// helper for surface themes - they need their own hover/press/focus calculations
|
|
45
|
+
// because those need to be relative to their elevated background, not base
|
|
46
|
+
const makeSurface = (offset: number, colorOffset = 0) => {
|
|
47
|
+
const clr = color - colorOffset
|
|
48
|
+
const bg = background + offset
|
|
49
|
+
const brdr = borderColor + offset
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
color: clr,
|
|
53
|
+
colorHover: clr + (isLight ? 0 : lighten),
|
|
54
|
+
colorPress: clr,
|
|
55
|
+
colorFocus: clr + darken,
|
|
56
|
+
|
|
57
|
+
background: bg,
|
|
58
|
+
// hover lightens always
|
|
59
|
+
backgroundHover: bg + lighten,
|
|
60
|
+
// press darkens always
|
|
61
|
+
backgroundPress: bg + darken,
|
|
62
|
+
// focus: lightens in dark mode, darkens in light
|
|
63
|
+
backgroundFocus: bg + offset,
|
|
64
|
+
backgroundActive: bg,
|
|
65
|
+
|
|
66
|
+
borderColor: brdr,
|
|
67
|
+
borderColorHover: brdr + lighten,
|
|
68
|
+
borderColorFocus: brdr,
|
|
69
|
+
borderColorPress: brdr + darken,
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// templates use the palette and specify index
|
|
74
|
+
// negative goes backwards from end so -1 is the last item
|
|
75
|
+
const base = {
|
|
76
|
+
accentBackground: 0,
|
|
77
|
+
accentColor: -0,
|
|
78
|
+
background0: 1,
|
|
79
|
+
background02: 2,
|
|
80
|
+
background04: 3,
|
|
81
|
+
background06: 4,
|
|
82
|
+
background08: 5,
|
|
83
|
+
color1: background,
|
|
84
|
+
color2: background + 1,
|
|
85
|
+
color3: background + 2,
|
|
86
|
+
color4: background + 3,
|
|
87
|
+
color5: background + 4,
|
|
88
|
+
color6: background + 5,
|
|
89
|
+
color7: background + 6,
|
|
90
|
+
color8: background + 7,
|
|
91
|
+
color9: background + 8,
|
|
92
|
+
color10: background + 9,
|
|
93
|
+
color11: background + 10,
|
|
94
|
+
color12: background + 11,
|
|
95
|
+
color0: -1,
|
|
96
|
+
color02: -2,
|
|
97
|
+
color04: -3,
|
|
98
|
+
color06: -4,
|
|
99
|
+
color08: -5,
|
|
100
|
+
// v5 = we make this actually 1 up (surface1 technically from before)
|
|
101
|
+
// this way "generics" are automatically differentiated from base bg
|
|
102
|
+
...makeSurface(1),
|
|
103
|
+
placeholderColor: color - 3,
|
|
104
|
+
colorTransparent: -1,
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const surface1 = makeSurface(2, 1)
|
|
108
|
+
const surface2 = makeSurface(3, 1)
|
|
109
|
+
const surface3 = makeSurface(5, 1)
|
|
110
|
+
|
|
111
|
+
const accent = Object.fromEntries(
|
|
112
|
+
Object.entries(base).map(([key, index]) => {
|
|
113
|
+
return [key, -index]
|
|
114
|
+
})
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
return {
|
|
118
|
+
base,
|
|
119
|
+
surface1,
|
|
120
|
+
surface2,
|
|
121
|
+
surface3,
|
|
122
|
+
accent,
|
|
123
|
+
} satisfies BuildTemplates
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export const v5Templates = getTemplates()
|