diff --git a/src/lib/components/combobox/atoms.ts b/src/lib/components/combobox/atoms.ts index c6ffbf5..3f6ec21 100644 --- a/src/lib/components/combobox/atoms.ts +++ b/src/lib/components/combobox/atoms.ts @@ -1,5 +1,9 @@ export { default as Root } from './combobox-root.svelte'; export { default as Trigger } from './combobox-trigger.svelte'; export { default as Item } from './compobox-item.svelte'; -export { default as Input } from './combobox-input.svelte'; +/** + * @deprecated use Combobox.Control instead + */ +export { default as Input } from './combobox-control.svelte'; +export { default as Control } from './combobox-control.svelte'; export { Arrow, Indicator, List } from '$svelte-atoms/core/components/dropdown/atoms'; diff --git a/src/lib/components/combobox/combobox-input.svelte b/src/lib/components/combobox/combobox-control.svelte similarity index 96% rename from src/lib/components/combobox/combobox-input.svelte rename to src/lib/components/combobox/combobox-control.svelte index 79313be..ddd2516 100644 --- a/src/lib/components/combobox/combobox-input.svelte +++ b/src/lib/components/combobox/combobox-control.svelte @@ -37,9 +37,9 @@ ); -First Name { const results = field?.state.validate(); @@ -65,7 +65,7 @@ Last Name - + diff --git a/src/lib/components/input/atoms.ts b/src/lib/components/input/atoms.ts index 6d82afa..33d4dc3 100644 --- a/src/lib/components/input/atoms.ts +++ b/src/lib/components/input/atoms.ts @@ -1,4 +1,8 @@ export { default as Root } from './input-root.svelte'; -export { default as Value } from './input-value.svelte'; +/** + * @deprecated use Input.Control instead + */ +export { default as Value } from './input-control.svelte'; +export { default as Control } from './input-control.svelte'; export { default as Icon } from './input-icon.svelte'; export { default as Placeholder } from './input-placeholder.svelte'; diff --git a/src/lib/components/input/input-value.svelte b/src/lib/components/input/input-control.svelte similarity index 75% rename from src/lib/components/input/input-value.svelte rename to src/lib/components/input/input-control.svelte index 93f5b7d..fab7dfc 100644 --- a/src/lib/components/input/input-value.svelte +++ b/src/lib/components/input/input-control.svelte @@ -1,27 +1,15 @@ - value, (v) => { @@ -95,10 +88,11 @@ } } class={cn( - 'h-full w-full flex-1 bg-transparent px-2 leading-1 outline-none', + 'text-foreground placeholder:text-muted-foreground h-full w-full flex-1 bg-transparent px-2 leading-1 outline-none', preset?.class, toClassValue(klass, bond) )} + type={type ?? 'text'} onchange={handleChange} oninput={handleInput} {...valueProps} diff --git a/src/lib/components/input/input-icon.svelte b/src/lib/components/input/input-icon.svelte index b71e0f9..1a683b6 100644 --- a/src/lib/components/input/input-icon.svelte +++ b/src/lib/components/input/input-icon.svelte @@ -7,7 +7,7 @@ @@ -44,7 +42,7 @@ ; @@ -20,7 +21,7 @@ children = undefined, factory = _factory, ...restProps - }: HtmlAtomProps & HTMLAttributes = $props(); + }: InputRootProps = $props(); const bondProps = defineState([ defineProperty( diff --git a/src/lib/components/input/input.stories.svelte b/src/lib/components/input/input.stories.svelte index 4e7be06..5ced426 100644 --- a/src/lib/components/input/input.stories.svelte +++ b/src/lib/components/input/input.stories.svelte @@ -26,9 +26,9 @@ $ - + - + .00 Hello World diff --git a/src/lib/components/input/types.ts b/src/lib/components/input/types.ts new file mode 100644 index 0000000..6a3a8ac --- /dev/null +++ b/src/lib/components/input/types.ts @@ -0,0 +1,30 @@ +import type { HTMLAttributes, HTMLInputTypeAttribute } from 'svelte/elements'; +import type { Base, ElementType, HtmlAtomProps } from '../atom'; +import type { ClassValue } from '$svelte-atoms/core/utils'; +import type { Snippet } from 'svelte'; +import type { Override } from '$svelte-atoms/core/types'; + +export type InputRootProps< + E extends keyof HTMLElementTagNameMap = 'div', + B extends Base = Base +> = HtmlAtomProps & + HTMLAttributes> & { + value?: string | number | string[] | null; + checked?: boolean; + files?: File[] | null; + children?: Snippet<[]>; + }; + +type InputControlBaseProps = { + value?: any; + files?: File[]; + date?: Date | null; + number?: number; + checked?: boolean; + class?: string; + type?: HTMLInputTypeAttribute | null; + children?: Snippet<[]>; +}; + +export type InputControlProps = HtmlAtomProps<'input', B> & + Override, InputControlBaseProps>; diff --git a/src/lib/context/preset.svelte.ts b/src/lib/context/preset.svelte.ts index d58076a..42846ae 100644 --- a/src/lib/context/preset.svelte.ts +++ b/src/lib/context/preset.svelte.ts @@ -31,7 +31,7 @@ export type PresetModuleName = | 'collapsible.header' | 'collapsible.indicator' | 'collapsible' - | 'combobox.input' + | 'combobox.control' | 'combobox.trigger' | 'combobox.item' | 'dialog.close-button' @@ -54,7 +54,7 @@ export type PresetModuleName = | 'form' | 'icon' | 'input' - | 'input.value' + | 'input.control' | 'input.placeholder' | 'label' | 'layer.inner'