Botões
Três variantes × três tamanhos. Primary (verde #2ECE78) para ações afirmativas, secondary para alternativas, ghost para menor ênfase.
Variantes
Primary · Secondary · Ghost
- Fundo do primary
- #2ECE78
- Cor do primary
- #FFFFFF · fw:700
- Borda do secondary
- 2px solid #C8CDD5
- Borda do ghost
- 2px solid transparent
- Radius
- 10–14px
- Tamanho do ícone
- 18px · arrow-right / arrow-left
Tamanhos
sm · md · lg
- Altura sm
- 44px
- Padding sm
- 0 20px
- Fonte sm
- 14px / r:10
- Altura md
- 52px
- Padding md
- 0 28px
- Fonte md
- 16px / r:12
- Altura lg
- 60px
- Padding lg
- 0 36px
- Fonte lg
- 18px / r:14
Uso
---
import CTAButton from '@/components/kiosk/CTAButton.astro';
import KioskIcon from '@/components/icons/KioskIcon.astro';
---
{/* Variantes — primary / secondary / ghost */}
<CTAButton variant="primary" size="lg">
Continue
<KioskIcon slot="trailing" name="arrow-right" size={18} />
</CTAButton>
<CTAButton variant="secondary" size="lg">
<KioskIcon slot="leading" name="arrow-left" size={18} />
Back
</CTAButton>
<CTAButton variant="ghost" size="lg">Cancel</CTAButton>
{/* Tamanhos — sm (44) · md (52) · lg (60) */}
<CTAButton variant="primary" size="sm">Small</CTAButton>
<CTAButton variant="primary" size="md">Medium</CTAButton>
<CTAButton variant="primary" size="lg">Large</CTAButton>
{/* Estica até a largura do container */}
<CTAButton variant="primary" size="lg" fullWidth>
Confirm payment
</CTAButton> Props
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
variant | 'primary' | 'secondary' | 'ghost' | 'primary' | Tratamento visual — primary (preenchimento verde), secondary (contornado), ghost (só texto). |
size | 'sm' | 'md' | 'lg' | 'md' | Altura + padding + escala de texto (44 / 52 / 60). |
type | 'button' | 'submit' | 'reset' | 'button' | Atributo `type` nativo do botão. |
label | string | — | Label acessível para botões só de ícone ou ambíguos (mapeia para `aria-label`). |
fullWidth | boolean | false | Estica o botão até a largura do container (espelha a prop `fullWidth` do app). |
class | string | — | Classes extras anexadas ao elemento raiz. |
slot: leading
slot
| — | — | Slot do ícone leading. |
slot: (default)
slot
| — | — | Label / conteúdo do botão. |
slot: trailing
slot
| — | — | Slot do ícone trailing. |
-
variant- Tipo
'primary' | 'secondary' | 'ghost'- Padrão
'primary'- Desc
- Tratamento visual — primary (preenchimento verde), secondary (contornado), ghost (só texto).
-
size- Tipo
'sm' | 'md' | 'lg'- Padrão
'md'- Desc
- Altura + padding + escala de texto (44 / 52 / 60).
-
type- Tipo
'button' | 'submit' | 'reset'- Padrão
'button'- Desc
- Atributo `type` nativo do botão.
-
label- Tipo
string- Padrão
—- Desc
- Label acessível para botões só de ícone ou ambíguos (mapeia para `aria-label`).
-
fullWidth- Tipo
boolean- Padrão
false- Desc
- Estica o botão até a largura do container (espelha a prop `fullWidth` do app).
-
class- Tipo
string- Padrão
—- Desc
- Classes extras anexadas ao elemento raiz.
-
slot: leadingslot- Tipo
—- Padrão
—- Desc
- Slot do ícone leading.
-
slot: (default)slot- Tipo
—- Padrão
—- Desc
- Label / conteúdo do botão.
-
slot: trailingslot- Tipo
—- Padrão
—- Desc
- Slot do ícone trailing.