From e0d35d279f703dfae5bf15d8fe7b6799fbbdea47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Thu, 23 Jan 2025 15:37:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8EWASM=E7=BB=9F=E4=B8=80Scheme=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/color-q-scheme.ts | 46 ----------------- src/material-2-scheme.ts | 48 ++++++++++++------ src/material-3-scheme.ts | 104 +++++++++++++++++++++------------------ src/models.ts | 13 +++-- src/q-scheme.ts | 63 ++++++++++++++++++++++++ src/swatch_scheme.ts | 16 ++++++ 6 files changed, 176 insertions(+), 114 deletions(-) delete mode 100644 src/color-q-scheme.ts create mode 100644 src/q-scheme.ts create mode 100644 src/swatch_scheme.ts diff --git a/src/color-q-scheme.ts b/src/color-q-scheme.ts deleted file mode 100644 index c383031..0000000 --- a/src/color-q-scheme.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { SchemeColor } from './models'; - -export type ColorSetVariant = { - chroma: number; - lightness: number; -}; - -export type Settings = { - hover: ColorSetVariant; - active: ColorSetVariant; - focus: ColorSetVariant; - disabled: ColorSetVariant; - foregroundRange: [SchemeColor, SchemeColor]; - foregroundGeneration: 'fixed' | 'wacg_atuo'; -}; - -export type SchemeSet = { - primary: SchemeColor; - onPrimary: SchemeColor; - secondary: SchemeColor; - onSecondary: SchemeColor; - accent: SchemeColor; - onAccent: SchemeColor; - neutral: SchemeColor; - onNeutral: SchemeColor; - danger: SchemeColor; - onDanger: SchemeColor; - warning: SchemeColor; - onWarning: SchemeColor; - success: SchemeColor; - onSuccess: SchemeColor; - info: SchemeColor; - onInfo: SchemeColor; - border: SchemeColor; - lightenBorder: SchemeColor; - elevation: SchemeColor; - background: SchemeColor; - onBackground: SchemeColor; - inverseBackground: SchemeColor; - onInverseBackground: SchemeColor; -}; - -export type ColorQScheme = { - scheme: SchemeSet; - setting: Settings; -}; diff --git a/src/material-2-scheme.ts b/src/material-2-scheme.ts index a056874..40a2bd2 100644 --- a/src/material-2-scheme.ts +++ b/src/material-2-scheme.ts @@ -1,16 +1,34 @@ -import { SchemeColor } from './models'; - -export type SchemeSet = { - primary: SchemeColor; - primaryVariant: SchemeColor; - onPrimary: SchemeColor; - secondary: SchemeColor; - secondaryVariant: SchemeColor; - onSecondary: SchemeColor; - background: SchemeColor; - onBackground: SchemeColor; - surface: SchemeColor; - onSurface: SchemeColor; - error: SchemeColor; - onError: SchemeColor; +export type ColorSet = { + root: string; + variant: string; + on: string; +}; + +export type Baseline = { + primary: ColorSet; + secondary: ColorSet; + error: ColorSet; + background: ColorSet; + surface: ColorSet; + shadow: ColorSet; + custom_colors: Record; +}; + +export type MaterialDesign2Scheme = { + white: string; + black: string; + light: Baseline; + dark: Baseline; +}; + +export type MaterialDesign2SchemeSource = { + primary: string; + secondary: string; + error: string; + custom_colors: Record; +}; + +export type Materialdesign2SchemeStorage = { + source: MaterialDesign2SchemeSource; + scheme: MaterialDesign2Scheme; }; diff --git a/src/material-3-scheme.ts b/src/material-3-scheme.ts index e4038bb..c25c36b 100644 --- a/src/material-3-scheme.ts +++ b/src/material-3-scheme.ts @@ -1,49 +1,57 @@ -import { SchemeColor } from './models'; - -export type SchemeSet = { - primary: SchemeColor; - onPrimary: SchemeColor; - primaryContainer: SchemeColor; - onPrimaryContainer: SchemeColor; - primaryFixed: SchemeColor; - onPrimaryFixed: SchemeColor; - primaryFixedDim: SchemeColor; - onPrimaryFixedVaraint: SchemeColor; - secondary: SchemeColor; - onSecondary: SchemeColor; - secondaryContainer: SchemeColor; - onSecondaryContainer: SchemeColor; - secondaryFixed: SchemeColor; - onSecondaryFixed: SchemeColor; - secondaryFixedDim: SchemeColor; - onSecondaryFixedVaraint: SchemeColor; - tertiary: SchemeColor; - onTertiary: SchemeColor; - tertiaryContainer: SchemeColor; - onTertiaryContainer: SchemeColor; - tertiaryFixed: SchemeColor; - onTertiaryFixed: SchemeColor; - tertiaryFixedDim: SchemeColor; - onTertiaryFixedVaraint: SchemeColor; - error: SchemeColor; - onError: SchemeColor; - errorContainer: SchemeColor; - onErrorContainer: SchemeColor; - surface: SchemeColor; - surfaceDim: SchemeColor; - surfaceBright: SchemeColor; - onSurface: SchemeColor; - onSurfaceVariant: SchemeColor; - surfaceContainerLowest: SchemeColor; - surfaceContainerLow: SchemeColor; - surfaceContainer: SchemeColor; - surfaceContainerHigh: SchemeColor; - surfaceContainerHighest: SchemeColor; - inverseSurface: SchemeColor; - onInverseSurface: SchemeColor; - inversePrimary: SchemeColor; - outline: SchemeColor; - outlineVariant: SchemeColor; - scrim: SchemeColor; - shadow: SchemeColor; +export type ColorSet = { + root: string; + on_root: string; + container: string; + on_container: string; + fixed: string; + fixed_dim: string; + on_fixed: string; + fixed_variant: string; + inverse: string; +}; + +export type Surface = { + root: string; + dim: string; + bright: string; + container: string; + container_lowest: string; + container_low: string; + container_high: string; + container_highest: string; + on_root: string; + on_root_variant: string; + inverse: string; + on_inverse: string; +}; + +export type Baseline = { + primary: ColorSet; + secondary: ColorSet; + tertiary: ColorSet; + error: ColorSet; + surface: Surface; + outline: string; + outline_variant: string; + scrim: string; + shadow: string; + customs: Record; +}; + +export type MaterialDesign3Scheme = { + white: string; + black: string; + light_baseline: Baseline; + dark_baseline: Baseline; +}; + +export type MaterialDesign3SchemeSource = { + source: string; + error: string; + custom_colors: Record; +}; + +export type MaterialDesign3SchemeStorage = { + source: MaterialDesign3SchemeSource; + scheme: MaterialDesign3Scheme; }; diff --git a/src/models.ts b/src/models.ts index aac3c5e..8758b05 100644 --- a/src/models.ts +++ b/src/models.ts @@ -21,14 +21,17 @@ export type ColorDescription = { oklch: [number, number, number]; }; -export type SchemeType = 'color_q' | 'material_2' | 'material_3'; -export type SchemeColor = string | null; -export type SchemeContent = { +export type SchemeType = 'q_scheme' | 'swatch_scheme' | 'material_2' | 'material_3'; +export type SchemeContent = { id: string; name: string; createdAt: string; description: string | null; type: SchemeType; - lightScheme: Scheme; - darkScheme: Scheme; + schemeStorage: SchemeStorage; +}; + +export type ColorShifting = { + chroma: number; + lightness: number; }; diff --git a/src/q-scheme.ts b/src/q-scheme.ts new file mode 100644 index 0000000..9c45e5b --- /dev/null +++ b/src/q-scheme.ts @@ -0,0 +1,63 @@ +import { ColorShifting } from './models'; + +export type ColorSet = { + root: string; + hover: string; + active: string; + focus: string; + disabled: string; + onRoot: string; + onHover: string; + onActive: string; + onFocus: string; + onDisabled: string; +}; + +export type Baseline = { + primary: ColorSet; + secondary: ColorSet | null; + tertiary: ColorSet | null; + accent: ColorSet | null; + neutral: ColorSet; + danger: ColorSet; + success: ColorSet; + warning: ColorSet; + info: ColorSet; + outline: ColorSet; + foreground: ColorSet; + background: ColorSet; +}; + +export type QScheme = { + light: Baseline; + dark: Baseline; +}; + +export type QSchemeSetting = { + hover: ColorShifting; + acitve: ColorShifting; + focus: ColorShifting; + disabled: ColorShifting; + dark_convert: ColorShifting; + expand_method: string; + wacg_follows: string; +}; + +export type QSchemeSource = { + primary: string; + secondary: string | null; + tertiary: string | null; + accent: string | null; + danger: string; + success: string; + warning: string; + info: string; + foreground: string; + background: string; + setting: QSchemeSetting; +}; + +export type QSchemeStorage = { + source: QSchemeSource; + scheme: QScheme; +}; diff --git a/src/swatch_scheme.ts b/src/swatch_scheme.ts new file mode 100644 index 0000000..20ea9ac --- /dev/null +++ b/src/swatch_scheme.ts @@ -0,0 +1,16 @@ +import { SwatchEntry, SwatchSchemeSetting } from './color_functions/color_module'; + +export type SwatchScheme = { + light: Record; + dark: Record; +}; + +export type SwatchSchemeSource = { + colors: SwatchEntry[]; + setting: SwatchSchemeSetting; +}; + +export type SwatchSchemeStorage = { + source: SwatchSchemeSource; + scheme: SwatchScheme; +};