diff --git a/packages/ui/.storybook/main.ts b/packages/ui/.storybook/main.ts deleted file mode 100644 index 52aa66f..0000000 --- a/packages/ui/.storybook/main.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { StorybookConfig } from '@storybook/sveltekit'; - -const config: StorybookConfig = { - "stories": [ - "../src/**/*.stories.@(js|ts|svelte)" - ], - - "addons": [ - "@storybook/addon-svelte-csf", - "@storybook/addon-essentials", - "@storybook/addon-themes", - ], - - "framework": { - "name": "@storybook/sveltekit", - "options": {} - }, - - docs: {} -}; -export default config; diff --git a/packages/ui/.storybook/manager-head.html b/packages/ui/.storybook/manager-head.html deleted file mode 100644 index a3c7f89..0000000 --- a/packages/ui/.storybook/manager-head.html +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/packages/ui/.storybook/preview.ts b/packages/ui/.storybook/preview.ts deleted file mode 100644 index 9e27467..0000000 --- a/packages/ui/.storybook/preview.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { withThemeByClassName } from "@storybook/addon-themes"; -import type { Preview } from '@storybook/svelte'; - -import "../src/lib/app.css"; - -const preview: Preview = { - parameters: { - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/i, - }, - }, - }, - decorators: [withThemeByClassName({ - themes: { - dark: 'theme-dark', - light: 'theme-light', - catppuccin: 'theme-catppuccin', - solarized: 'theme-solarized', - high: 'theme-high-contrast', - nord: 'theme-nord', - dracula: 'theme-dracula', - }, - defaultTheme: 'light', - })], -}; - -export default preview; diff --git a/packages/ui/src/lib/Checkbox.svelte b/packages/ui/src/lib/Checkbox.svelte new file mode 100644 index 0000000..7505dcb --- /dev/null +++ b/packages/ui/src/lib/Checkbox.svelte @@ -0,0 +1,45 @@ + + + diff --git a/packages/ui/src/lib/Details.svelte b/packages/ui/src/lib/Details.svelte index c1b2049..88697c1 100644 --- a/packages/ui/src/lib/Details.svelte +++ b/packages/ui/src/lib/Details.svelte @@ -1,37 +1,41 @@
- {title} -
- {@render children?.()} -
+ {title} +
+ {@render children?.()} +
diff --git a/packages/ui/src/lib/elements/Float.svelte b/packages/ui/src/lib/Float.svelte similarity index 97% rename from packages/ui/src/lib/elements/Float.svelte rename to packages/ui/src/lib/Float.svelte index c3d9d66..7435d3a 100644 --- a/packages/ui/src/lib/elements/Float.svelte +++ b/packages/ui/src/lib/Float.svelte @@ -4,15 +4,13 @@ step?: number; min?: number; max?: number; - id?: string; } let { value = $bindable(0.5), step = 0.01, min = $bindable(0), - max = $bindable(1), - id = '' + max = $bindable(1) }: Props = $props(); if (min > max) { @@ -55,6 +53,7 @@ window.addEventListener('mousemove', handleMouseMove); window.addEventListener('mouseup', handleMouseUp); document.body.style.cursor = 'ew-resize'; + (ev.target as HTMLElement)?.blur(); } function handleMouseUp() { @@ -93,6 +92,7 @@ } else { value = Math.max(Math.min(min + (max - min) * vx, max), min); } + (ev.target as HTMLElement)?.blur(); } $effect(() => { if ((value || 0).toString().length > 5) { @@ -110,7 +110,6 @@ - import Checkbox from './elements/Checkbox.svelte'; - import Float from './elements/Float.svelte'; - import Integer from './elements/Integer.svelte'; - import Select from './elements/Select.svelte'; + import Checkbox from './Checkbox.svelte'; + import Float from './Float.svelte'; + import Integer from './Integer.svelte'; + import Select from './Select.svelte'; + import Vec3 from './Vec3.svelte'; import type { NodeInput } from '@nodarium/types'; - import Vec3 from './elements/Vec3.svelte'; interface Props { input: NodeInput; value: any; - id: string; } - let { input, value = $bindable(), id }: Props = $props(); + let { input, value = $bindable() }: Props = $props(); {#if input.type === 'float'} - + {:else if input.type === 'integer'} - + {:else if input.type === 'boolean'} - + {:else if input.type === 'select'} - {:else if input.type === 'vec3'} - + {/if} diff --git a/packages/ui/src/lib/elements/Integer.svelte b/packages/ui/src/lib/Integer.svelte similarity index 90% rename from packages/ui/src/lib/elements/Integer.svelte rename to packages/ui/src/lib/Integer.svelte index 800115e..3aee680 100644 --- a/packages/ui/src/lib/elements/Integer.svelte +++ b/packages/ui/src/lib/Integer.svelte @@ -1,13 +1,10 @@ - {#each options as label, i} {/each} diff --git a/packages/ui/src/lib/elements/Vec3.svelte b/packages/ui/src/lib/Vec3.svelte similarity index 75% rename from packages/ui/src/lib/elements/Vec3.svelte rename to packages/ui/src/lib/Vec3.svelte index 37ee12c..99ad327 100644 --- a/packages/ui/src/lib/elements/Vec3.svelte +++ b/packages/ui/src/lib/Vec3.svelte @@ -3,16 +3,15 @@ interface Props { value?: any; - id?: string; } - let { value = $bindable([0, 0, 0]), id = '' }: Props = $props(); + let { value = $bindable([0, 0, 0]) }: Props = $props();
- - - + + +
diff --git a/packages/ui/src/lib/elements/Float.stories.svelte b/packages/ui/src/lib/elements/Float.stories.svelte deleted file mode 100644 index 1c5500a..0000000 --- a/packages/ui/src/lib/elements/Float.stories.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/packages/ui/src/lib/elements/Integer.stories.svelte b/packages/ui/src/lib/elements/Integer.stories.svelte deleted file mode 100644 index 27f83f8..0000000 --- a/packages/ui/src/lib/elements/Integer.stories.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/packages/ui/src/lib/elements/Select.stories.svelte b/packages/ui/src/lib/elements/Select.stories.svelte deleted file mode 100644 index e6a0418..0000000 --- a/packages/ui/src/lib/elements/Select.stories.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/packages/ui/src/lib/elements/Vec3.stories.svelte b/packages/ui/src/lib/elements/Vec3.stories.svelte deleted file mode 100644 index dc288bf..0000000 --- a/packages/ui/src/lib/elements/Vec3.stories.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/packages/ui/src/lib/index.ts b/packages/ui/src/lib/index.ts index 48684f7..7933ada 100644 --- a/packages/ui/src/lib/index.ts +++ b/packages/ui/src/lib/index.ts @@ -1,16 +1,8 @@ -// Reexport your entry components here -import Input from './Input.svelte'; - -import Float from "./elements/Float.svelte"; -import Integer from "./elements/Integer.svelte"; -import Select from "./elements/Select.svelte"; -import Checkbox from "./elements/Checkbox.svelte"; -import Details from "./Details.svelte"; - -export const icons = import.meta.glob('./icons/*.svg?raw', { eager: true }) - -export { Float, Integer, Select, Checkbox, Input, Details }; - -export default Input; - +export { default as Input } from './Input.svelte'; +export { default as Float } from "./Float.svelte"; +export { default as Integer } from "./Integer.svelte"; +export { default as Vec3 } from "./Vec3.svelte"; +export { default as Select } from "./Select.svelte"; +export { default as Checkbox } from "./Checkbox.svelte"; +export { default as Details } from "./Details.svelte"; export { default as ShortCut } from "./ShortCut.svelte"; diff --git a/packages/ui/src/routes/+page.svelte b/packages/ui/src/routes/+page.svelte index c0a6057..ba90229 100644 --- a/packages/ui/src/routes/+page.svelte +++ b/packages/ui/src/routes/+page.svelte @@ -1,29 +1,51 @@ -
-
-

Integer {intValue}

+
+

@nodarium/ui

+ +
-
+
-
-

Float {floatValue}

+
-
+
-
-

Vec3 {JSON.stringify(vecValue)}

+
-
+
+ +
+