diff --git a/src/models.ts b/src/models.ts index f8e8346..658773d 100644 --- a/src/models.ts +++ b/src/models.ts @@ -27,6 +27,16 @@ export type ColorDescription = { }; export type SchemeType = 'q_scheme' | 'swatch_scheme' | 'material_2' | 'material_3'; +export type SchemeTypeOption = { + label: string; + value: SchemeType; +}; +export const SchemeTypeOptions: SchemeTypeOption[] = [ + { label: 'Q Scheme', value: 'q_scheme' }, + { label: 'Swatch Scheme', value: 'swatch_scheme' }, + { label: 'Material Design 2 Scheme', value: 'material_2' }, + { label: 'Material Design 3 Scheme', value: 'material_3' }, +]; export type SchemeContent = { id: string; name: string; diff --git a/src/pages/NewScheme.module.css b/src/pages/NewScheme.module.css index c9aecb6..b19bb41 100644 --- a/src/pages/NewScheme.module.css +++ b/src/pages/NewScheme.module.css @@ -25,4 +25,7 @@ } } } + .custom_segment { + font-size: var(--font-size-s); + } } diff --git a/src/pages/NewScheme.tsx b/src/pages/NewScheme.tsx index 5ccfd97..913af8e 100644 --- a/src/pages/NewScheme.tsx +++ b/src/pages/NewScheme.tsx @@ -1,13 +1,16 @@ import cx from 'clsx'; import { isEmpty, isNil } from 'lodash-es'; -import { useActionState } from 'react'; +import { useActionState, useState } from 'react'; import { useNavigate } from 'react-router-dom'; +import { VSegmentedControl } from '../components/VSegmentedControl'; +import { SchemeTypeOption, SchemeTypeOptions } from '../models'; import { useCreateScheme } from '../stores/schemes'; import styles from './NewScheme.module.css'; export function NewScheme() { const createScheme = useCreateScheme(); const navigate = useNavigate(); + const [schemeType, setSchemeType] = useState('q_scheme'); const [errors, formAction] = useActionState((prevState, formData) => { try { const name = formData.get('name') as string; @@ -15,7 +18,8 @@ export function NewScheme() { throw { name: 'Name is required' }; } const description = (formData.get('description') ?? null) as string | null; - const newId = createScheme(name, description); + const schemeType = (formData.get('type') ?? 'q_scheme') as SchemeTypeOption['value']; + const newId = createScheme(name, schemeType, description); navigate(`../${newId}`); } catch (error) { return error; @@ -25,6 +29,18 @@ export function NewScheme() { return (
+
+ + + +