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.
svelte-kit-vice/src/uix/eidos/components/wrap/wrap.svelte

37 lines
650 B

feat(eidos): port 8 layout primitives from air (box, flex, grid, stack, group, wrap, container, section) Visual-only primitives translated from the legacy `air/components/layout` on the morfo-runtime branch. Architectural adjustments for the eidos target: drop the `air-` class prefix, target `[data-{name}]` directly, rename CSS vars to `--{name}-*`, replace `var(--air-space-N)` with the eidos foundation `var(--space-N)` token, resolve responsive props via `ActiveEidos.resolve(prop)`. - `box` — universal box-model utility (size, padding, margin, gap, position, overflow, flex/grid item props). Every prop maps to a CSS custom property; unset props fall through via `revert-layer`. - `flex` / `grid` / `stack` / `group` / `wrap` — layout containers that render through Box (single `<div>` per primitive, no semantic-tag prop in this batch). Markers stack as `[data-box][data-{name}]`. - `container` — max-width centered (sm/md/lg/xl/full). - `section` — semantic-padding block with background tone variants. Shared helpers at `_layout/shared.ts` (formatLayoutSpace / formatLayoutLength / formatLayoutRaw / pushStyleVar / composeStyle) plus an optional `Layout.*` namespace barrel for consumers who prefer that style; the individual `import { Box }` from each component dir also works. Each primitive ships a demo at `/uix/components/{name}/` with a live example, a props table, and a reference comparison row (radix-themes / chakra-ui / mantine). svelte-check: 0 errors / 0 new warnings. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
<script lang="ts">
/**
* Eidos `<Wrap>` — flex row that always wraps. Use when you want a
* cluster of tags / chips / pills that should reflow across multiple
* lines on narrow viewports.
*
* <Wrap gap={2}>{#each tags as t}<Tag>{t}</Tag>{/each}</Wrap>
*/
import Flex from '../flex/flex.svelte';
import type { WrapProps } from './types';
let {
gap,
rowGap,
columnGap,
align,
justify,
class: className,
children,
...restProps
}: WrapProps = $props();
</script>
<Flex
{...restProps}
wrap="wrap"
{gap}
{rowGap}
{columnGap}
{align}
{justify}
class={className}
data-wrap=""
>
{@render children?.()}
</Flex>

Powered by TurnKey Linux.