You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
815 B
34 lines
815 B
<script lang="ts">
|
|
import { ActiveEidos } from '$uix/eidos';
|
|
/**
|
|
* Eidos `<Field>` — visual wrapper over Soma's form field primitive.
|
|
* Soma owns state, form registration and ARIA; Eidos adds visual attrs.
|
|
*/
|
|
import * as Field from '$soma/components/field';
|
|
import type { FieldProps } from './types';
|
|
|
|
let {
|
|
size = 'md',
|
|
variant = 'outline',
|
|
orientation = 'vertical',
|
|
color = 'primary',
|
|
children: bodyContent,
|
|
...rest
|
|
}: FieldProps = $props();
|
|
|
|
const eidos = ActiveEidos.require();
|
|
const resolvedSize = $derived(eidos.resolve(size, 'md'));
|
|
</script>
|
|
|
|
<Field.Provider
|
|
{...rest}
|
|
data-size={resolvedSize}
|
|
data-variant={variant}
|
|
data-orientation={orientation}
|
|
data-color={color}
|
|
>
|
|
{#snippet children(snippetProps)}
|
|
{@render bodyContent?.(snippetProps)}
|
|
{/snippet}
|
|
</Field.Provider>
|