基本完成M3 Scheme的生成功能。

This commit is contained in:
徐涛 2025-02-08 15:17:04 +08:00
parent 1b044c66d7
commit 7bfe9a7620
3 changed files with 21 additions and 5 deletions

View File

@ -35,7 +35,7 @@ export type Baseline = {
outline_variant: string; outline_variant: string;
scrim: string; scrim: string;
shadow: string; shadow: string;
customs: Map<string, ColorSet>; customs: Record<string, ColorSet>;
}; };
export type MaterialDesign3Scheme = { export type MaterialDesign3Scheme = {

View File

@ -3,6 +3,8 @@ import { useState } from 'react';
import { Tab } from '../../components/Tab'; import { Tab } from '../../components/Tab';
import { MaterialDesign3SchemeStorage } from '../../material-3-scheme'; import { MaterialDesign3SchemeStorage } from '../../material-3-scheme';
import { SchemeExport } from './Export'; import { SchemeExport } from './Export';
import { M3SchemeBuilder } from './m3-scheme/Builder';
import { M3SchemePreview } from './m3-scheme/Preview';
const tabOptions = [ const tabOptions = [
{ title: 'Overview', id: 'overview' }, { title: 'Overview', id: 'overview' },
@ -22,8 +24,10 @@ export function M3Scheme({ scheme }: M3SchemeProps) {
return ( return (
<> <>
<Tab tabs={tabOptions} activeTab={activeTab} onActive={setActiveTab} /> <Tab tabs={tabOptions} activeTab={activeTab} onActive={setActiveTab} />
{isEqual(activeTab, 'overview') && <div>Preview</div>} {isEqual(activeTab, 'overview') && <M3SchemePreview scheme={scheme} />}
{isEqual(activeTab, 'builder') && <div>Builder</div>} {isEqual(activeTab, 'builder') && (
<M3SchemeBuilder scheme={scheme} onBuildCompleted={() => setActiveTab('overview')} />
)}
{isEqual(activeTab, 'export') && <SchemeExport scheme={scheme} />} {isEqual(activeTab, 'export') && <SchemeExport scheme={scheme} />}
</> </>
); );

View File

@ -3,9 +3,10 @@ import { useActionState, useCallback, useMemo, useState } from 'react';
import { useColorFunction } from '../../../ColorFunctionContext'; import { useColorFunction } from '../../../ColorFunctionContext';
import { FloatColorPicker } from '../../../components/FloatcolorPicker'; import { FloatColorPicker } from '../../../components/FloatcolorPicker';
import { ScrollArea } from '../../../components/ScrollArea'; import { ScrollArea } from '../../../components/ScrollArea';
import { MaterialDesign3SchemeStorage } from '../../../material-3-scheme'; import { MaterialDesign3Scheme, MaterialDesign3SchemeStorage } from '../../../material-3-scheme';
import { SchemeContent } from '../../../models'; import { SchemeContent } from '../../../models';
import { useUpdateScheme } from '../../../stores/schemes'; import { useUpdateScheme } from '../../../stores/schemes';
import { mapToObject } from '../../../utls';
import { ColorEntry, IdenticalColorEntry } from '../ColorEntry'; import { ColorEntry, IdenticalColorEntry } from '../ColorEntry';
import styles from './Builder.module.css'; import styles from './Builder.module.css';
@ -68,7 +69,18 @@ export function M3SchemeBuilder({ scheme, onBuildCompleted }: M3SchemeBuilderPro
error: errorColor as string, error: errorColor as string,
custom_colors: customColors, custom_colors: customColors,
}; };
prev.schemeStorage.scheme = generatedScheme[0]; prev.schemeStorage.scheme = {
white: generatedScheme[0].white,
black: generatedScheme[0].black,
light_baseline: {
...generatedScheme[0].light_baseline,
customs: mapToObject(generatedScheme[0].light_baseline.customs),
},
dark_baseline: {
...generatedScheme[0].dark_baseline,
customs: mapToObject(generatedScheme[0].dark_baseline.customs),
},
} as MaterialDesign3Scheme;
prev.schemeStorage.cssVariables = generatedScheme[1]; prev.schemeStorage.cssVariables = generatedScheme[1];
prev.schemeStorage.scssVariables = generatedScheme[2]; prev.schemeStorage.scssVariables = generatedScheme[2];
prev.schemeStorage.jsVariables = generatedScheme[3]; prev.schemeStorage.jsVariables = generatedScheme[3];