Compare commits
No commits in common. "907b34c496a3c8d0ac9de64389950e03c96c4882" and "793a9c24db9a5d11ffc00e3f873cd7d631eec7ba" have entirely different histories.
907b34c496
...
793a9c24db
|
@ -1,18 +1,12 @@
|
||||||
import './App.css';
|
import './App.css';
|
||||||
import Card from './components/Card/Card';
|
import Card from './components/Card/Card';
|
||||||
import Launcher from './components/Launcher/Launcher';
|
import Activator from './components/Activator/Activator';
|
||||||
import LauncherGroup from './components/LauncherGroup/LauncherGroup';
|
|
||||||
|
|
||||||
const LightThemes = () => <Card name="Light Themes">
|
const LightThemes = () => <Card name="Light Themes">
|
||||||
<LauncherGroup
|
<Activator title="Dark reds" activated={false} />
|
||||||
exclusive={true}
|
<Activator title="Watery" activated={false} />
|
||||||
options={[
|
<Activator title="Sunset" activated={false} />
|
||||||
{ title: "Dark reds" },
|
<Activator title="Darkness" activated={true} />
|
||||||
{ title: "Watery" },
|
|
||||||
{ title: "Sunset" },
|
|
||||||
{ title: "Darkness" },
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
const LightSetup = () => <div> </div>
|
const LightSetup = () => <div> </div>
|
||||||
|
@ -24,39 +18,29 @@ interface LightProps {
|
||||||
const Light = ({ name }: LightProps) => <div> <p> {name} </p> </div>
|
const Light = ({ name }: LightProps) => <div> <p> {name} </p> </div>
|
||||||
|
|
||||||
const Tracks = () => <Card name="Tracks">
|
const Tracks = () => <Card name="Tracks">
|
||||||
<LauncherGroup
|
<Track name="City BGM" />
|
||||||
exclusive={false}
|
<Track name="Chat on the streets" />
|
||||||
options={[
|
<Track name="Abandoned structure" />
|
||||||
{ title: "City BGM" },
|
<Track name="Water dripping" />
|
||||||
{ title: "Chat on the streets" },
|
|
||||||
{ title: "Abandoned structure" },
|
|
||||||
{ title: "Water dripping" },
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
interface TrackProps {
|
interface TrackProps {
|
||||||
name: string,
|
name: string,
|
||||||
}
|
}
|
||||||
const Track = ({ name }: TrackProps) => <Launcher title={name} />
|
const Track = ({ name }: TrackProps) => <Activator title={name} activated={false} />
|
||||||
|
|
||||||
const Presets = () => <Card name="Presets">
|
const Presets = () => <Card name="Presets">
|
||||||
<LauncherGroup
|
<Scene name="Gilcrest Falls day" />
|
||||||
exclusive={true}
|
<Scene name="Gilcrest Falls night" />
|
||||||
options={[
|
<Scene name="Empty colony" />
|
||||||
{ title: "Gilcrest Falls day" },
|
<Scene name="Surk colony" />
|
||||||
{ title: "Gilcrest Falls night" },
|
|
||||||
{ title: "Empty colony" },
|
|
||||||
{ title: "Surk colony" },
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
interface PresetProps {
|
interface PresetProps {
|
||||||
name: string
|
name: string
|
||||||
}
|
}
|
||||||
|
|
||||||
// const Scene = ({ name }: PresetProps) => <Launcher title={name} activated={false} />
|
const Scene = ({ name }: PresetProps) => <Activator title={name} activated={false} />
|
||||||
|
|
||||||
const SceneEditor = () => <div> </div>
|
const SceneEditor = () => <div> </div>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
import './Activator.css';
|
||||||
|
import { PropsWithChildren } from 'react';
|
||||||
|
|
||||||
|
interface ActivatorProps {
|
||||||
|
title: string,
|
||||||
|
icon?: string,
|
||||||
|
activated: boolean,
|
||||||
|
}
|
||||||
|
|
||||||
|
const Activator = ({ title, icon, activated, children }: PropsWithChildren<ActivatorProps>) => {
|
||||||
|
const classnames = activated ? "activator activator_enabled" : "activator";
|
||||||
|
return (
|
||||||
|
<div className={classnames}>
|
||||||
|
<p> {title} </p>
|
||||||
|
</div>)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Activator;
|
|
@ -11,5 +11,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.card__body {
|
.card__body {
|
||||||
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
import './Launcher.css';
|
|
||||||
import React from 'react';
|
|
||||||
|
|
||||||
export interface LauncherProps {
|
|
||||||
title: string,
|
|
||||||
icon?: string,
|
|
||||||
activated?: boolean,
|
|
||||||
onSelected?: (key: string) => void,
|
|
||||||
}
|
|
||||||
|
|
||||||
const Launcher = ({ title, activated = false, onSelected = (key) => {} }: LauncherProps) => {
|
|
||||||
const classnames = activated ? "activator activator_enabled" : "activator";
|
|
||||||
console.log("classnames ", activated, classnames);
|
|
||||||
return (
|
|
||||||
<div className={classnames} onClick={() => onSelected(title)}>
|
|
||||||
<p> {title} </p>
|
|
||||||
</div>)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Launcher;
|
|
|
@ -1,36 +0,0 @@
|
||||||
import React from 'react';
|
|
||||||
import Launcher, { LauncherProps } from '../Launcher/Launcher';
|
|
||||||
|
|
||||||
export interface Selectable {
|
|
||||||
onSelected?: (key: string) => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface LauncherGroupProps {
|
|
||||||
options: Array<LauncherProps>;
|
|
||||||
exclusive: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const exclusiveSelect = (state: { [key: string]: boolean }, targetId: string) => {
|
|
||||||
console.log("running exclusiveSelect on ", targetId);
|
|
||||||
return { [targetId]: true };
|
|
||||||
}
|
|
||||||
|
|
||||||
const multiSelect = (state: { [key: string]: boolean }, targetId: string) => {
|
|
||||||
if (state[targetId]) {
|
|
||||||
return { ...state, [targetId]: false };
|
|
||||||
} else {
|
|
||||||
return { ...state, [targetId]: true };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const LauncherGroup = ({ options, exclusive }: LauncherGroupProps) => {
|
|
||||||
const [selected, dispatch] = React.useReducer(exclusive ? exclusiveSelect : multiSelect, {});
|
|
||||||
|
|
||||||
let tiedOptions = options.map(option =>
|
|
||||||
<Launcher key={option.title} title={option.title} onSelected={(key: string) => dispatch(key)} activated={selected[option.title]} />
|
|
||||||
);
|
|
||||||
|
|
||||||
return (<div> {tiedOptions} </div>)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default LauncherGroup;
|
|
Loading…
Reference in New Issue