Layout
03

Group

A row that wraps. For tag lists, button rows, anything that should reflow rather than overflow.

plain markup — no library on the page
rendered by aura-react
rendered by aura-vue
rendered by aura-svelte
built from aura-angular's own class helpers
design-system tokens react vue svelte angular css a11y monorepo
design-systemtokensreactvuesvelteangularcssa11ymonorepo
design-system tokens react vue svelte angular css a11y monorepo
design-systemtokensreactvuesvelteangularcssa11ymonorepo
design-systemtokensreactvuesvelteangularcssa11ymonorepo

Code

index.html
<div class="aura-group" style="--aura-gap:var(--space-3);">
  <span class="aura-chip">design-system</span>
  <span class="aura-chip">tokens</span>
  <span class="aura-chip">react</span>
  <span class="aura-chip">vue</span>
  <span class="aura-chip">svelte</span>
  <span class="aura-chip">angular</span>
  <span class="aura-chip">css</span>
  <span class="aura-chip">a11y</span>
  <span class="aura-chip">monorepo</span>
</div>
Demo.tsx
import { Chip, Group } from '@ilomee/aura-react';

const TAGS = ['design-system', 'tokens', 'react', 'vue', 'svelte', 'angular', 'css', 'a11y', 'monorepo'];

export default function Demo() {
  // A Group wraps rather than overflows — resize the page to watch it reflow.
  return (
    <Group>
      {TAGS.map((tag) => (
        <Chip key={tag}>{tag}</Chip>
      ))}
    </Group>
  );
}
Demo.vue
<script setup lang="ts">
import { Group, Chip } from '@ilomee/aura-vue';
</script>

<template>
  <Group>
    <Chip v-for="tag in tags" :key="tag">{{ tag }}</Chip>
  </Group>
</template>
Demo.svelte
<script lang="ts">
  import { Group, Chip } from '@ilomee/aura-svelte';
</script>

<Group>
  {#each tags as tag}
    <Chip>{tag}</Chip>
  {/each}
</Group>

Used as [auraGroup] — a directive you put on your own element.

demo.component.ts
import { AuraGroup, AuraChip } from '@ilomee/aura-angular';

@Component({
  standalone: true,
  imports: [AuraGroup, AuraChip],
  template: `
    <div auraGroup>
      @for (tag of tags; track tag) {
        <aura-chip>{{ tag }}</aura-chip>
      }
    </div>
  `,
})
export class DemoComponent {
  tags = ['ai', 'design', 'css'];
}

A directive — you choose the element, so there is no as input.

Props

Plain markup has no props — the classes below are the whole API. The four packages do nothing more than set these same classes for you.
NameTypeDefaultNotes
asElementType'div'Rendered element.
gapnumber | string3Space-scale step (4var(--space-4)) or a raw CSS length.
alignstring
NameTypeDefaultNotes
asstring'div'Rendered element.
gapnumber | string3Space-scale step (4var(--space-4)) or a raw CSS length.
alignstring
NameTypeDefaultNotes
asstring'div'Rendered element.
gapnumber | string3Space-scale step (4var(--space-4)) or a raw CSS length.
alignstring
NameTypeDefaultNotes
gapnumber | string3Space-scale step (4var(--space-4)) or a raw CSS length.
alignstring

Emitted classes

Every framework emits the same classes — that is what makes the four libraries look identical. You can use them directly, without any component library.

ClassRoleNotes
.aura-groupbaseRequired. A modifier does nothing without it.

Tokens and rules

components.css
gap
var(--aura-gap, var(--space-3))
align
var(--aura-align, center)
wrap
всегда — в этом весь смысл