Примитивы
12

Radio

Одиночный <input type="radio">. Сам по себе нужен редко: радиокнопки взаимоисключающи только при общем name, и стрелки ходят внутри этой группы — берите RadioGroup, если только не раскладываете группу вручную.

чистая разметка — библиотеки на странице нет
отрендерил aura-react
отрендерил aura-vue
отрендерил aura-svelte
собрано из классов самого aura-angular

Код

index.html
<div class="aura-stack" style="--aura-dir:column;--aura-gap:var(--space-3)">
  <label class="aura-check">
    <input type="radio" class="aura-radio" name="density-solo" value="comfortable" checked />
    <span>Comfortable</span>
  </label>
  <label class="aura-check">
    <input type="radio" class="aura-radio" name="density-solo" value="compact" />
    <span>Compact</span>
  </label>
</div>
Demo.tsx
import { Radio, Stack } from '@ilomee/aura-react';

export default function Demo() {
  // Одиночная радиокнопка — в этом и смысл примера: сама по себе она взаимоисключающа только с
  // теми, у кого тот же `name`. Берите RadioGroup, если только не раскладываете группу вручную: он
  // передаёт name вниз и даёт fieldset с legend.
  return (
    <Stack gap={3}>
      <Radio label="Comfortable" name="density-solo" value="comfortable" defaultChecked />
      <Radio label="Compact" name="density-solo" value="compact" />
    </Stack>
  );
}

Настоящий нативный input под кастомной отрисовкой: он уходит с формой, связан со своей подписью и уже несёт поведение с клавиатуры и для скринридера. (Switch — сознательное исключение: это <button role="switch">, поэтому он не участвует в отправке формы.)

Demo.vue
<script setup lang="ts">
import { Radio } from '@ilomee/aura-vue';
</script>

<template>
  <Radio label="Compact" name="density" value="compact" />
</template>

Всё остальное (name, value, checked, disabled) проваливается на input.

Demo.svelte
<script lang="ts">
  import { Radio } from '@ilomee/aura-svelte';
</script>

<Radio label="Compact" name="density" value="compact" />

Всё остальное (name, value, checked, disabled) проваливается на input.

Используется как aura-radio.

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

@Component({
  standalone: true,
  imports: [AuraRadio],
  template: `<aura-radio label="Compact" name="density" value="compact" />`,
})
export class DemoComponent {}

Пропсы

У чистой разметки нет пропсов — классы ниже и есть весь API. Четыре пакета не делают ничего сверх того, что проставляют вам те же самые классы.
ИмяТипПо умолчаниюПримечания
labelstring
namestringИменно он делает группу группой.
valuestring
checkedboolean
disabledboolean
ИмяТипПо умолчаниюПримечания
labelstring
ИмяТипПо умолчаниюПримечания
labelstring
ИмяТипПо умолчаниюПримечания
labelstring
namestring
valuestring
checkedbooleanfalse
disabledbooleanfalse

Какие классы отдаёт

Все фреймворки отдают одни и те же классы — именно поэтому четыре библиотеки выглядят одинаково. Их можно использовать напрямую, вообще без библиотеки компонентов.

КлассРольПримечания
.aura-radioбазаОбязательный. Без него модификатор не работает.
.aura-checkбазаОбязательный. Без него модификатор не работает.

Токены и правила

components.css
точка
var(--radio-size) · 999px
выбран
var(--accent)