@seedgrid/ai-toolkit 0.0.0-stage → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +151 -2
- package/dist/adapters/claude.js +114 -0
- package/dist/adapters/codex.js +108 -0
- package/dist/adapters/index.js +17 -0
- package/dist/adapters/shared.js +142 -0
- package/dist/adapters/types.js +1 -0
- package/dist/cli.js +203 -0
- package/dist/commands/common.js +98 -0
- package/dist/commands/doctor.js +290 -0
- package/dist/commands/init.js +9 -0
- package/dist/commands/install.js +107 -0
- package/dist/commands/remove.js +54 -0
- package/dist/commands/review.js +127 -0
- package/dist/commands/status.js +73 -0
- package/dist/commands/update.js +8 -0
- package/dist/commands/validate.js +27 -0
- package/dist/core/apply.js +181 -0
- package/dist/core/blocks.js +64 -0
- package/dist/core/content.js +528 -0
- package/dist/core/env.js +40 -0
- package/dist/core/frontmatter.js +29 -0
- package/dist/core/hash.js +14 -0
- package/dist/core/inspect.js +51 -0
- package/dist/core/lock.js +124 -0
- package/dist/core/paths.js +65 -0
- package/dist/core/plan.js +242 -0
- package/dist/core/tools.js +62 -0
- package/dist/core/types.js +11 -0
- package/dist/core/updates.js +121 -0
- package/docs/arquitetura.md +80 -0
- package/docs/compatibilidade.md +50 -0
- package/docs/formato.md +155 -0
- package/docs/instalacao.md +105 -0
- package/docs/manutencao.md +115 -0
- package/package.json +43 -4
- package/seedgridKB/SeedGrid/Extensions/Catalogo-de-enums.md +161 -0
- package/seedgridKB/SeedGrid/Extensions/Catalogo-de-propriedades.md +971 -0
- package/seedgridKB/SeedGrid/Extensions/Indice.md +63 -0
- package/seedgridKB/SeedGrid/Extensions/ai-pricing/Configuracao.md +124 -0
- package/seedgridKB/SeedGrid/Extensions/ai-pricing/Enums.md +40 -0
- package/seedgridKB/SeedGrid/Extensions/ai-pricing/Exemplos.md +97 -0
- package/seedgridKB/SeedGrid/Extensions/ai-pricing/Visao-geral.md +114 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Configuracao-Rust.md +69 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Configuracao.md +88 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Enums.md +33 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Exemplos.md +121 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Rust.md +126 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Visao-geral.md +111 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Configuracao-Rust.md +93 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Configuracao.md +127 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Enums.md +66 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Exemplos.md +151 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Rust.md +120 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Visao-geral.md +114 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Configuracao-Rust.md +136 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Configuracao.md +319 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Enums.md +131 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Exemplos.md +210 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Rust.md +135 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Visao-geral.md +150 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Configuracao-Rust.md +86 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Configuracao.md +243 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Enums.md +165 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Exemplos.md +205 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Rust.md +109 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Visao-geral.md +181 -0
- package/seedgridKB/SeedGrid/Extensions/broker/Configuracao-Rust.md +40 -0
- package/seedgridKB/SeedGrid/Extensions/broker/Visao-geral.md +114 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Configuracao-Rust.md +73 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Configuracao.md +112 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Enums.md +36 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Exemplos.md +149 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Rust.md +81 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Visao-geral.md +90 -0
- package/seedgridKB/SeedGrid/Extensions/commons/Configuracao.md +107 -0
- package/seedgridKB/SeedGrid/Extensions/commons/Enums.md +105 -0
- package/seedgridKB/SeedGrid/Extensions/commons/Exemplos.md +141 -0
- package/seedgridKB/SeedGrid/Extensions/commons/Visao-geral.md +99 -0
- package/seedgridKB/SeedGrid/Extensions/exchange/Configuracao.md +122 -0
- package/seedgridKB/SeedGrid/Extensions/exchange/Enums.md +29 -0
- package/seedgridKB/SeedGrid/Extensions/exchange/Exemplos.md +82 -0
- package/seedgridKB/SeedGrid/Extensions/exchange/Visao-geral.md +118 -0
- package/seedgridKB/SeedGrid/Extensions/filemanagement/Configuracao-Rust.md +110 -0
- package/seedgridKB/SeedGrid/Extensions/filemanagement/Configuracao.md +157 -0
- package/seedgridKB/SeedGrid/Extensions/filemanagement/Exemplos.md +157 -0
- package/seedgridKB/SeedGrid/Extensions/filemanagement/Rust.md +70 -0
- package/seedgridKB/SeedGrid/Extensions/filemanagement/Visao-geral.md +88 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Configuracao-Rust.md +124 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Configuracao.md +195 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Enums.md +71 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Exemplos.md +149 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Rust.md +139 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Visao-geral.md +130 -0
- package/seedgridKB/SeedGrid/Extensions/notification/Configuracao.md +141 -0
- package/seedgridKB/SeedGrid/Extensions/notification/Enums.md +52 -0
- package/seedgridKB/SeedGrid/Extensions/notification/Exemplos.md +141 -0
- package/seedgridKB/SeedGrid/Extensions/notification/Visao-geral.md +113 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Configuracao-Rust.md +67 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Configuracao.md +94 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Enums.md +79 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Exemplos.md +172 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Rust.md +107 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Visao-geral.md +90 -0
- package/seedgridKB/SeedGrid/Extensions/realtime/Configuracao-Rust.md +72 -0
- package/seedgridKB/SeedGrid/Extensions/realtime/Configuracao.md +104 -0
- package/seedgridKB/SeedGrid/Extensions/realtime/Exemplos.md +104 -0
- package/seedgridKB/SeedGrid/Extensions/realtime/Rust.md +69 -0
- package/seedgridKB/SeedGrid/Extensions/realtime/Visao-geral.md +105 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Configuracao-Rust.md +68 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Configuracao.md +186 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Enums.md +96 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Exemplos.md +229 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Rust.md +80 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Visao-geral.md +112 -0
- package/seedgridKB/SeedGrid/Extensions/runtime/Configuracao-Rust.md +90 -0
- package/seedgridKB/SeedGrid/Extensions/runtime/Visao-geral.md +114 -0
- package/seedgridKB/SeedGrid/Extensions/security/Configuracao-Rust.md +327 -0
- package/seedgridKB/SeedGrid/Extensions/security/Configuracao.md +510 -0
- package/seedgridKB/SeedGrid/Extensions/security/Enums.md +95 -0
- package/seedgridKB/SeedGrid/Extensions/security/Exemplos.md +218 -0
- package/seedgridKB/SeedGrid/Extensions/security/Rust.md +203 -0
- package/seedgridKB/SeedGrid/Extensions/security/Visao-geral.md +131 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Configuracao-Rust.md +188 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Configuracao.md +345 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Enums.md +117 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Exemplos.md +205 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Rust.md +161 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Visao-geral.md +142 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Configuracao-Rust.md +75 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Configuracao.md +152 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Enums.md +198 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Exemplos.md +173 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Rust.md +83 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Visao-geral.md +99 -0
- package/seedgridKB/SeedGrid/Mapa-dos-repositorios.md +112 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/Indice.md +323 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/buttons/API.md +257 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/buttons/Exemplos.md +307 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/buttons/Visao-geral.md +51 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/datatable/API.md +174 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/datatable/Exemplos.md +236 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/datatable/Visao-geral.md +76 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/digits/API.md +339 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/digits/Exemplos.md +311 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/digits/Visao-geral.md +57 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/editor/API.md +125 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/editor/Exemplos.md +116 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/editor/Visao-geral.md +86 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/feedback-e-exibicao/API.md +490 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/feedback-e-exibicao/Exemplos.md +544 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/feedback-e-exibicao/Visao-geral.md +69 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/fundamentos/API.md +113 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/fundamentos/Exemplos.md +159 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/fundamentos/Visao-geral.md +92 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/gadgets/API.md +516 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/gadgets/Exemplos.md +629 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/gadgets/Visao-geral.md +80 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-selecao/API.md +615 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-selecao/Exemplos.md +384 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-selecao/Visao-geral.md +111 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-texto/API.md +661 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-texto/Exemplos.md +312 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-texto/Visao-geral.md +123 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/layout/API.md +1090 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/layout/Exemplos.md +1172 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/layout/Visao-geral.md +98 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/Visao-geral.md +98 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-apikeys.md +118 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-audit.md +88 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-backup.md +131 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-billing-platform.md +132 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-billing-user.md +120 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-login-tenancy.md +119 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-security.md +427 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-self-enter.md +104 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-subdomain-tenancy.md +110 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/navegacao-e-overlay/API.md +490 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/navegacao-e-overlay/Exemplos.md +561 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/navegacao-e-overlay/Visao-geral.md +82 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/Visao-geral.md +68 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-commons.md +61 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-core.md +140 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-playground.md +112 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-theme.md +97 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/providers/API.md +177 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/providers/Exemplos.md +332 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/providers/Visao-geral.md +106 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/showcase.md +70 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/arquiteto.md +53 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/backend-java.md +45 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/backend-rust.md +43 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/frontend-react.md +41 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/qa.md +44 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/revisor.md +40 -0
- package/seedgridKB/SeedGrid/Toolkit/references/fluxo-de-trabalho.md +78 -0
- package/seedgridKB/SeedGrid/Toolkit/references/glossario.md +15 -0
- package/seedgridKB/SeedGrid/Toolkit/references/modos-shared-native.md +27 -0
- package/seedgridKB/SeedGrid/Toolkit/rules/backend-java-seedgrid.md +54 -0
- package/seedgridKB/SeedGrid/Toolkit/rules/coordenacao.md +39 -0
- package/seedgridKB/SeedGrid/Toolkit/rules/formato-entrega.md +29 -0
- package/seedgridKB/SeedGrid/Toolkit/rules/frontend-seedgrid.md +47 -0
- package/seedgridKB/SeedGrid/Toolkit/rules/personalizacao-local.md +22 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/planejar-mudanca/SKILL.md +38 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/revisar-codigo/SKILL.md +33 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/revisar-codigo/references/checklist.md +25 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-backend-crud/SKILL.md +29 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-bump/SKILL.md +26 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/SKILL.md +221 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/agents/openai.yaml +4 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/references/checklist.md +31 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/references/patterns.md +185 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/references/routing.md +66 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/SKILL.md +56 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/agents/openai.yaml +4 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/references/checklist.md +32 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/references/steps.md +114 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-review/SKILL.md +61 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/validar-mudanca/SKILL.md +29 -0
- package/seedgridKB/SeedGrid/Toolkit/templates/decisao-arquitetura.md +29 -0
- package/seedgridKB/SeedGrid/Toolkit/templates/especificacao-tarefa.md +32 -0
- package/seedgridKB/SeedGrid/Toolkit/templates/relatorio-validacao.md +30 -0
- package/seedgridKB/SeedGrid/Versoes.md +64 -0
- package/seedgridKB/SeedGrid/Visao-geral.md +35 -0
- package/seedgridKB/manifest.json +142 -0
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
---
|
|
2
|
+
tags: [seedgrid, front, component, gadgets]
|
|
3
|
+
fonte: front/seedgrid-fe-components/packages/seedgrid-fe-components/src/gadgets
|
|
4
|
+
branch: main
|
|
5
|
+
commit: ad30fc11de
|
|
6
|
+
analisado-em: 2026-10-14
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# API — gadgets (`gadgets`)
|
|
10
|
+
|
|
11
|
+
Visão geral: [[SeedGrid/SeedGrid-components/gadgets/Visao-geral|Gadgets — visão geral]] · Exemplos: [[SeedGrid/SeedGrid-components/gadgets/Exemplos|Gadgets — exemplos]] · Dígitos usados pelo relógio: [[SeedGrid/SeedGrid-components/digits/API|API dos dígitos]]
|
|
12
|
+
|
|
13
|
+
> **Como ler as tabelas.** Geradas a partir do tipo TypeScript real do 1º parâmetro de cada componente (TS checker, commit `ad30fc11de`) — lista completa das props próprias. **Padrão**: valor sem marca = inicializador na desestruturação do componente (Confirmado); `ᶠ` = fallback interno `??` no corpo do componente (Confirmado, expressão pode estar abreviada); `ᵇ` = padrão aplicado pelo componente base para o qual a prop é repassada; `ᵐ` = declarado só no `*.meta.ts`; `ˢ` = declarado só na tabela de props do showcase (`ᵐ`/`ˢ` = Não confirmado no código); `—` = sem padrão. **Descrição**: JSDoc > `*.meta.ts` > tabela do showcase (textos originais, sem acento quando assim na fonte); *(Inferência)* = escrita a partir da leitura do código. **Obrigatória** = prop não opcional no tipo.
|
|
14
|
+
|
|
15
|
+
Textos padrão (títulos, `aria-label`, placeholders) vêm do i18n do pacote (`useComponentsI18n` + chaves `components.gadgets.*`) — ver [[SeedGrid/SeedGrid-components/fundamentos/API|API › i18n]].
|
|
16
|
+
|
|
17
|
+
## SgCalendar
|
|
18
|
+
|
|
19
|
+
Calendário mensal (1–12 meses lado a lado) dentro de um `SgCard` recolhível e arrastável, com seleção controlada/não controlada, limites e regra de desabilitação. Fonte: `src/gadgets/calendar/SgCalendar.tsx` → `SgCalendar`.
|
|
20
|
+
|
|
21
|
+
### Import
|
|
22
|
+
```tsx
|
|
23
|
+
import { SgCalendar, type SgCalendarProps, type SgCalendarWeekdayFormat } from "@seedgrid/fe-components";
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Props
|
|
27
|
+
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|
|
28
|
+
|---|---|---|---|---|
|
|
29
|
+
| `defaultValue` | `Date \| string` | — (sem valor: hoje) | Não | Data selecionada inicial no modo não controlado; aceita `Date` ou string parseável. |
|
|
30
|
+
| `value` | `Date \| string` | — | Não | Data selecionada de forma controlada (ativa o modo controlado quando `!== undefined`; valor não parseável cai para hoje). |
|
|
31
|
+
| `onValueChange` | `(date: Date) => void` | — | Não | Callback disparado ao selecionar uma data. |
|
|
32
|
+
| `viewDate` | `Date \| string` | — | Não | Mes visivel de forma controlada. |
|
|
33
|
+
| `defaultViewDate` | `Date \| string` | — (mês de `defaultValue` ou de hoje) | Não | Mes visivel (controlado ou inicial) e callback de navegacao. |
|
|
34
|
+
| `onViewDateChange` | `(viewDate: Date) => void` | — | Não | Disparado ao navegar entre meses (anterior/próximo, atalho Hoje, ou ao selecionar dia de outro mês) com o 1º dia do mês. |
|
|
35
|
+
| `locale` | `string` | `"pt-BR"` | Não | Locale usado para formatacao de mes e dias. |
|
|
36
|
+
| `weekStartsOn` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6` | `0` | Não | Primeiro dia da semana (0 = domingo … 6 = sábado). |
|
|
37
|
+
| `weekdayFormat` | `SgCalendarWeekdayFormat` = `"narrow" \| "short" \| "long"` | `"narrow"` | Não | Formato textual dos dias da semana (narrow, short, long). |
|
|
38
|
+
| `numberOfMonths` | `number` | `1` | Não | Quantidade de meses visiveis ao mesmo tempo (limitado a 1–12). |
|
|
39
|
+
| `monthsPerLine` | `number` | `3` | Não | Quantidade de meses por linha antes de quebrar (limitado a 1–12 e a `numberOfMonths`). |
|
|
40
|
+
| `monthMinWidth` | `number \| string` | — (`20.75rem` com 1 coluna; `16rem` com várias) | Não | Largura minima de cada mes (numero em px ou string CSS, ex.: 280 ou 18rem). |
|
|
41
|
+
| `showAdjacentMonths` | `boolean` | `true` | Não | Exibe/oculta dias de meses adjacentes na grade. |
|
|
42
|
+
| `minDate` | `Date \| string` | — | Não | Limite minimo de selecao. |
|
|
43
|
+
| `maxDate` | `Date \| string` | — | Não | Limite maximo de selecao. |
|
|
44
|
+
| `isDateDisabled` | `(date: Date) => boolean` | — | Não | Regra adicional para desabilitar datas especificas. |
|
|
45
|
+
| `showTodayShortcut` | `boolean` | `true` | Não | Mostra/oculta o botao de atalho para voltar para hoje. |
|
|
46
|
+
| `cardTitle` | `React.ReactNode` | `?? t(i18n, "components.gadgets.calendar.title")` ᶠ | Não | Configura titulo e props do SgCard do gadget. |
|
|
47
|
+
| `cardProps` | `Omit<SgCardProps, "children" \| "title">` | — | Não | Props repassadas ao `SgCard` que envolve o calendário (o componente já define `collapsible`, `defaultOpen`, `draggable`, `cardStyle="outlined"` etc., sobrescrevíveis aqui). |
|
|
48
|
+
|
|
49
|
+
- **Atributos DOM herdados**: o tipo é `Omit<React.HTMLAttributes<HTMLDivElement>, "children" \| "onChange"> & { ... }`; acrescenta 275 props de `@types/react` (`HTMLAttributes` 54, `AriaAttributes` 53, `DOMAttributes` 168). Não listadas individualmente — ver contrato base `React.HTMLAttributes` em `@types/react`.
|
|
50
|
+
|
|
51
|
+
Os atributos DOM herdados (`...rest`) e `className`/`style` vão para o `div` interno do calendário (dentro do card), não para o card. `className`/`style` do card devem ir em `cardProps`. Confirmado.
|
|
52
|
+
|
|
53
|
+
### Eventos e callbacks
|
|
54
|
+
| Callback | Assinatura | Quando dispara |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| `onValueChange` | `(date: Date) => void` | Clique em dia habilitado, ou botão "Hoje" quando hoje não está desabilitado. Recebe cópia da data (meia-noite local). |
|
|
57
|
+
| `onViewDateChange` | `(viewDate: Date) => void` | Navegação anterior/próximo, botão "Hoje", ou seleção de dia de outro mês. Recebe o 1º dia do mês. |
|
|
58
|
+
| `isDateDisabled` | `(date: Date) => boolean` | Avaliado por célula, além de `minDate`/`maxDate`. |
|
|
59
|
+
|
|
60
|
+
Modos: `value`/`viewDate` definidos ⇒ controlado; caso contrário estado interno inicializado por `defaultValue`/`defaultViewDate`. Confirmado.
|
|
61
|
+
|
|
62
|
+
### Ref
|
|
63
|
+
Não aceita ref (componente de função sem `forwardRef`).
|
|
64
|
+
|
|
65
|
+
### Children, slots e composição
|
|
66
|
+
Sem `children` (omitido do tipo). Composição: renderiza `SgCard` (ver [[SeedGrid/SeedGrid-components/layout/API|API de layout › SgCard]]) com `title={cardTitle}` e as props de `cardProps`.
|
|
67
|
+
|
|
68
|
+
### Contexto, providers e hooks
|
|
69
|
+
Consome `useComponentsI18n()` (rótulos). Nenhum provider obrigatório.
|
|
70
|
+
|
|
71
|
+
### Acessibilidade
|
|
72
|
+
Botões de navegação com `aria-label` traduzidos (mês anterior/próximo, ir para hoje) e ícones `aria-hidden`; células de dia são `<button>` com `disabled` e `aria-pressed` no selecionado. Não há navegação por setas na grade nem `role="grid"`. Confirmado.
|
|
73
|
+
|
|
74
|
+
### Tipos auxiliares exportados
|
|
75
|
+
`SgCalendarWeekdayFormat = "narrow" | "short" | "long"`.
|
|
76
|
+
|
|
77
|
+
## SgClock
|
|
78
|
+
|
|
79
|
+
Relógio digital (9 estilos, reaproveitando os [[SeedGrid/SeedGrid-components/digits/Visao-geral|dígitos animados]]) ou analógico com temas SVG, dentro de um `SgCard`. Fonte: `src/gadgets/clock/SgClock.tsx` → `SgClock`.
|
|
80
|
+
|
|
81
|
+
### Import
|
|
82
|
+
```tsx
|
|
83
|
+
import { SgClock, type SgClockProps, type SgClockDigitalStyle } from "@seedgrid/fe-components";
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Props
|
|
87
|
+
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|
|
88
|
+
|---|---|---|---|---|
|
|
89
|
+
| `clockStyle` | `"digital" \| "analog"` | `"digital"` | Não | Modo principal de exibicao do relogio. |
|
|
90
|
+
| `size` | `"sm" \| "md" \| "lg" \| number` | `"md"` | Não | Escala visual do relogio. No analógico: `sm`=140, `md`=240, `lg`=320 px ou número em px. |
|
|
91
|
+
| `initialServerTime` | `string` | — | Não | Seed opcional de hora ISO para sincronizar o ponto inicial com o servidor. Ignorado quando há `SgTimeProvider` acima (o contexto tem precedência). |
|
|
92
|
+
| `timezone` | `string` | — (fuso do navegador) | Não | Timezone IANA usada no calculo da hora exibida (via `Intl.DateTimeFormat`). |
|
|
93
|
+
| `locale` | `string` | `"pt-BR"` | Não | Locale usado para formatacao da hora. |
|
|
94
|
+
| `format` | `"12h" \| "24h"` | `"24h"` | Não | Formato horario do relogio digital (`12h` exibe AM/PM localizado). |
|
|
95
|
+
| `showSeconds` | `boolean` | `true` | Não | Exibe ou oculta os segundos. |
|
|
96
|
+
| `digitalStyle` | `SgClockDigitalStyle` = `"default" \| "fade" \| "discard" \| "segment" \| "sevenSegment" \| "roller3d" \| "flip" \| "matrix" \| "neon"` | `"default"` | Não | Estilo visual do relogio digital. |
|
|
97
|
+
| `secondHandMode` | `"step" \| "smooth"` | `"step"` | Não | Comportamento do ponteiro de segundos no analogico (`step` salta; `smooth` usa milissegundos). |
|
|
98
|
+
| `themeId` | `string` | `"classic"` | Não | ID do tema do relógio analógico, resolvido pelo `SgClockThemeProvider` (se houver) ou pelo registro global; fallback `"classic"`. |
|
|
99
|
+
| `theme` | `SgClockTheme` | — | Não | Tema inline (`SgClockTheme`) para o relógio analógico; tem precedência sobre `themeId`. |
|
|
100
|
+
| `className` | `string` | — | Não | Classe extra no container do relogio. |
|
|
101
|
+
| `style` | `React.CSSProperties` | — | Não | Inline style extra no container do relogio. |
|
|
102
|
+
| `centerOverlay` | `React.ReactNode` | — | Não | Conteudo opcional sobreposto ao centro do relogio analogico (ignorado no digital). |
|
|
103
|
+
| `cardTitle` | `React.ReactNode` | `?? t(i18n, "components.gadgets.clock.title")` ᶠ | Não | Titulo do SgCard usado pelo gadget. |
|
|
104
|
+
| `cardProps` | `Omit<SgCardProps, "children" \| "title">` | — | Não | Sobrescreve configuracoes padrao do SgCard do gadget. `dragPersistKey` padrão: `cardProps.dragPersistKey` → `sg-clock:<cardProps.id>` → `"sg-clock"`. |
|
|
105
|
+
|
|
106
|
+
Mapeamento `digitalStyle` → componente (Confirmado): `flip`→`SgFlipDigit`, `roller3d`→`SgRoller3DDigit`, `fade`→`SgFadeDigit`, `discard`→`SgDiscardDigit`, `matrix`→`SgMatrixDigit`, `neon`→`SgNeonDigit`, `sevenSegment`→`SgSevenSegmentDigit`, `segment`→`SgSegmentDigit`, `default`→texto simples.
|
|
107
|
+
|
|
108
|
+
### Eventos e callbacks
|
|
109
|
+
Nenhum. Atualiza a cada segundo (intervalo interno) ou pelo `tick` do `SgTimeProvider`.
|
|
110
|
+
|
|
111
|
+
### Ref
|
|
112
|
+
Não aceita ref.
|
|
113
|
+
|
|
114
|
+
### Children, slots e composição
|
|
115
|
+
Sem `children`. Slot `centerOverlay` (analógico). Renderiza `SgCard` com `cardProps`.
|
|
116
|
+
|
|
117
|
+
### Contexto, providers e hooks
|
|
118
|
+
- **`SgTimeProvider`** (opcional): se presente, a hora vem de `ctx.nowMs()` e `initialServerTime` da prop é ignorado; senão usa `initialServerTime` (ou `Date.now()`) + `performance.now()`. Confirmado (`useClockNowMs`).
|
|
119
|
+
- **`SgClockThemeProvider`** (opcional): o tema analógico é `theme ?? resolveTheme(resolver, themeId, "classic")`; sem provider usa `getTheme(themeId) ?? getTheme("classic")` do registro global. **Os temas embutidos não são registrados automaticamente** — sem `registerThemes(sgClockThemesBuiltIn)` (ou `theme` inline / `themes` no provider) o mostrador fica sem tema. Confirmado.
|
|
120
|
+
- `useComponentsI18n()` para rótulos.
|
|
121
|
+
|
|
122
|
+
### Acessibilidade
|
|
123
|
+
Analógico: SVG com `aria-label` traduzido (`components.gadgets.clock.analogAria`). Digital: contêiner com `aria-label` traduzido (`components.gadgets.clock.digitalAria`). O rótulo não inclui a hora; não há `aria-live`. Confirmado.
|
|
124
|
+
|
|
125
|
+
### Tipos auxiliares exportados
|
|
126
|
+
`SgClockDigitalStyle = "default" | "segment" | "sevenSegment" | "roller3d" | "flip" | "fade" | "matrix" | "neon" | "discard"`.
|
|
127
|
+
|
|
128
|
+
## SgTimeProvider e `useSgTime`
|
|
129
|
+
|
|
130
|
+
Provider de relógio sincronizado com o servidor: parte de `initialServerTime` e avança com `performance.now()`; emite `tick` alinhado à virada de cada segundo. Fonte: `src/gadgets/clock/SgTimeProvider.tsx` → `SgTimeProvider`, `useSgTime`.
|
|
131
|
+
|
|
132
|
+
### Import
|
|
133
|
+
```tsx
|
|
134
|
+
import { SgTimeProvider, useSgTime, type SgTimeContextValue } from "@seedgrid/fe-components";
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Props
|
|
138
|
+
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|
|
139
|
+
|---|---|---|---|---|
|
|
140
|
+
| `initialServerTime` | `string` | — | Sim | Timestamp inicial do servidor em formato ISO 8601. |
|
|
141
|
+
| `children` | `React.ReactNode` | — | Sim | Arvore que vai consumir tempo sincronizado via useSgTime. |
|
|
142
|
+
|
|
143
|
+
- Tipo de props declarado inline na assinatura de `SgTimeProvider` (não há tipo `SgTimeProviderProps` exportado).
|
|
144
|
+
|
|
145
|
+
### Hook `useSgTime(): SgTimeContextValue`
|
|
146
|
+
Retorna o contexto do provider; **fora de um provider** retorna um fallback local memoizado `{ serverStartMs: Date.now(), perfStartMs: 0, tick: 0, nowMs: () => Date.now() }` (sem `tick`, portanto não re-renderiza sozinho). Confirmado.
|
|
147
|
+
|
|
148
|
+
| Campo de `SgTimeContextValue` | Tipo | Significado |
|
|
149
|
+
|---|---|---|
|
|
150
|
+
| `serverStartMs` | `number` | `Date.parse(initialServerTime)` |
|
|
151
|
+
| `perfStartMs` | `number` | `performance.now()` na hidratação |
|
|
152
|
+
| `tick` | `number` | Incrementa a cada segundo (1º disparo alinhado a `1000 - Date.now() % 1000`) — usar como dependência para re-render. |
|
|
153
|
+
| `nowMs` | `() => number` | Antes da hidratação: `serverStartMs`; depois: `serverStartMs + (performance.now() - perfStartMs)`. |
|
|
154
|
+
|
|
155
|
+
Interno (não exportado no barrel): `useSgTimeContext()` (retorna `null` sem provider), usado pelo `SgClock`.
|
|
156
|
+
|
|
157
|
+
### Eventos, ref, slots
|
|
158
|
+
Sem eventos; sem ref; `children` obrigatório.
|
|
159
|
+
|
|
160
|
+
### Acessibilidade
|
|
161
|
+
Não renderiza DOM próprio.
|
|
162
|
+
|
|
163
|
+
## SgClockThemeProvider, resolvedor e registro de temas
|
|
164
|
+
|
|
165
|
+
Temas do relógio analógico: registro **global** (módulo `registry.ts`, `Map` em memória) + resolvedor por contexto com temas locais. Fontes: `src/gadgets/clock/themes/{provider.tsx,registry.ts,renderTheme.tsx,useDarkFlag.ts,builtins.tsx,types.ts}`.
|
|
166
|
+
|
|
167
|
+
### Import
|
|
168
|
+
```tsx
|
|
169
|
+
import {
|
|
170
|
+
SgClockThemeProvider, useSgClockThemeResolver, createThemeResolver,
|
|
171
|
+
registerTheme, registerThemes, getTheme, hasTheme, listThemes, unregisterTheme, clearThemes,
|
|
172
|
+
resolveTheme, ThemeLayer, useDarkFlag, sgClockThemesBuiltIn,
|
|
173
|
+
type SgClockTheme, type SgClockThemeRenderArgs, type SgClockThemeResolveMode, type SgClockThemeResolver
|
|
174
|
+
} from "@seedgrid/fe-components";
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Props de `SgClockThemeProvider`
|
|
178
|
+
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|
|
179
|
+
|---|---|---|---|---|
|
|
180
|
+
| `value` | `SgClockThemeProviderValue` | — | Não | Configuração do resolvedor: `{ mode?: SgClockThemeResolveMode; fallbackThemeId?: string; themes?: SgClockTheme[] }`. Padrões internos: `mode` `"fallback"`, `fallbackThemeId` `"classic"`, `themes` `[]` (temas locais, que sobrepõem os globais de mesmo `id`). |
|
|
181
|
+
| `children` | `React.ReactNode` | — | Sim | Arvore que vai consumir o resolver de temas. |
|
|
182
|
+
|
|
183
|
+
- Tipo de props declarado inline na assinatura de `SgClockThemeProvider` (não há tipo `SgClockThemeProviderProps` exportado).
|
|
184
|
+
|
|
185
|
+
O tipo do `value` (`SgClockThemeProviderValue`) é interno (não exportado). O resolvedor é recriado quando `value.mode`, `value.fallbackThemeId` ou a referência de `value.themes` mudam — memoize o array.
|
|
186
|
+
|
|
187
|
+
### Funções e hooks exportados
|
|
188
|
+
|
|
189
|
+
| Símbolo | Assinatura | Comportamento (Confirmado) |
|
|
190
|
+
|---|---|---|
|
|
191
|
+
| `useSgClockThemeResolver` | `() => SgClockThemeResolver \| null` | Resolvedor do provider mais próximo; `null` fora de provider. |
|
|
192
|
+
| `createThemeResolver` | `(params?: { mode?: SgClockThemeResolveMode; fallbackThemeId?: string; localThemes?: SgClockTheme[] }) => SgClockThemeResolver` | Padrões `mode="fallback"`, `fallbackThemeId="classic"`. `resolve(id)`: local → global; se não achar e `mode="fallback"`, tenta `fallbackThemeId`; em `"strict"` retorna `null`. `list()`: globais + locais (locais sobrepõem), ordenados por `order ?? 999`. `registerLocal(theme)` lança `Error` sem `theme.id`. |
|
|
193
|
+
| `registerTheme` | `(theme: SgClockTheme) => void` | Registra/substitui no mapa global; lança `Error("registerTheme: theme.id is required")` sem `id`. |
|
|
194
|
+
| `registerThemes` | `(themes: SgClockTheme[]) => void` | `registerTheme` em lote. |
|
|
195
|
+
| `getTheme` | `(id: string) => SgClockTheme \| null` | Busca global. |
|
|
196
|
+
| `hasTheme` | `(id: string) => boolean` | Existe no global. |
|
|
197
|
+
| `listThemes` | `() => SgClockTheme[]` | Globais ordenados por `order ?? 999`. |
|
|
198
|
+
| `unregisterTheme` | `(id: string) => void` | Remove do global. |
|
|
199
|
+
| `clearThemes` | `() => void` | Esvazia o global. |
|
|
200
|
+
| `resolveTheme` | `(resolver: SgClockThemeResolver \| null, themeId: string, fallbackThemeId: string) => SgClockTheme \| null` | `resolver.resolve(themeId)`, depois `fallbackThemeId`. |
|
|
201
|
+
| `ThemeLayer` | componente `({ theme: SgClockTheme; args: SgClockThemeRenderArgs })` | Renderiza `theme.render(args)` e/ou o conteúdo interno do SVG em `theme.url` (baixado com `fetch(..., { cache: "force-cache" })`, cache por URL, injetado com `dangerouslySetInnerHTML`). Deve ficar dentro de um `<svg>` (viewBox 0 0 100 100). |
|
|
202
|
+
| `useDarkFlag` | `() => boolean` | `true` se `--sg-mode` = `dark`, ou classe `dark` no `<html>`, ou `prefers-color-scheme: dark`; observa mudanças (MutationObserver + matchMedia). |
|
|
203
|
+
| `sgClockThemesBuiltIn` | `SgClockTheme[]` | 10 temas: `classic`, `minimal`, `dark`, `seedgrid`, `music`, `music-notes`, `music-staff`, `roman-classic`, `roman-ornate`, `segment`. **Não são registrados automaticamente.** |
|
|
204
|
+
|
|
205
|
+
### Tipos
|
|
206
|
+
|
|
207
|
+
| Tipo | Definição |
|
|
208
|
+
|---|---|
|
|
209
|
+
| `SgClockTheme` | `{ id: string; label?: string; tags?: string[]; render?: (args: SgClockThemeRenderArgs) => React.ReactNode; url?: string; order?: number }` |
|
|
210
|
+
| `SgClockThemeRenderArgs` | `{ size: number; dark: boolean }` |
|
|
211
|
+
| `SgClockThemeResolveMode` | `"strict" \| "fallback"` |
|
|
212
|
+
| `SgClockThemeResolver` | `{ resolve(id): SgClockTheme \| null; list(): SgClockTheme[]; registerLocal(theme): void; registerManyLocal(themes): void }` |
|
|
213
|
+
|
|
214
|
+
Segurança (Inferência): `url` é buscado e injetado como HTML sem sanitização — use apenas SVGs de origem confiável.
|
|
215
|
+
|
|
216
|
+
## SgClockThemePicker
|
|
217
|
+
|
|
218
|
+
Seletor de tema com preview, lista (`role="listbox"`) e busca opcional (via `SgAutocomplete`). Fonte: `src/gadgets/clock/themes/SgClockThemePicker.tsx` → `SgClockThemePicker`.
|
|
219
|
+
|
|
220
|
+
### Import
|
|
221
|
+
```tsx
|
|
222
|
+
import { SgClockThemePicker } from "@seedgrid/fe-components";
|
|
223
|
+
```
|
|
224
|
+
`SgClockThemePickerProps` **não** é exportado pelo barrel (só existe no arquivo). Confirmado.
|
|
225
|
+
|
|
226
|
+
### Props
|
|
227
|
+
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|
|
228
|
+
|---|---|---|---|---|
|
|
229
|
+
| `value` | `string` | — | Sim | ID do tema atualmente selecionado. |
|
|
230
|
+
| `onChange` | `(id: string) => void` | — | Sim | Callback disparado quando um novo tema e escolhido. |
|
|
231
|
+
| `label` | `string` | `?? t(i18n, "components.gadgets.clock.theme")` ᶠ | Não | Rotulo opcional exibido acima do seletor. |
|
|
232
|
+
| `placeholder` | `string` | `?? t(i18n, "components.gadgets.clock.selectTheme")` ᶠ | Não | Texto exibido quando nenhum tema valido esta resolvido. |
|
|
233
|
+
| `className` | `string` | — | Não | Classes adicionais no `div` raiz (que já tem `relative`). *(Inferência)* |
|
|
234
|
+
| `filter` | `(theme: SgClockTheme) => boolean` | — | Não | Filtro adicional sobre a lista de temas disponiveis. |
|
|
235
|
+
| `previewSize` | `number` | `56` | Não | Tamanho do preview visual de cada tema. |
|
|
236
|
+
| `searchable` | `boolean` | `true` | Não | Ativa busca textual na lista de temas. |
|
|
237
|
+
| `fallbackThemeId` | `string` | `"classic"` | Não | Tema usado quando o valor atual nao pode ser resolvido. |
|
|
238
|
+
| `defaultOpen` | `boolean` | `false` | Não | Abre a lista inicialmente no primeiro render. |
|
|
239
|
+
|
|
240
|
+
### Eventos e callbacks
|
|
241
|
+
`onChange(id)` ao clicar numa opção ou selecionar um item na busca; fecha a lista em seguida. A lista também fecha com clique fora (`mousedown` no `document`). Confirmado.
|
|
242
|
+
|
|
243
|
+
### Ref
|
|
244
|
+
Não aceita ref.
|
|
245
|
+
|
|
246
|
+
### Children, slots e composição
|
|
247
|
+
Sem `children`. Usa `SgClockThemePreview` e `SgAutocomplete` (busca, quando `searchable`).
|
|
248
|
+
|
|
249
|
+
### Contexto, providers e hooks
|
|
250
|
+
**Requer `SgClockThemeProvider`**: a lista vem de `resolver?.list() ?? []` — sem provider fica vazia. `useComponentsI18n()` para textos.
|
|
251
|
+
|
|
252
|
+
### Acessibilidade
|
|
253
|
+
Botão gatilho com `aria-haspopup="listbox"`, `aria-expanded`, `aria-controls`; lista `role="listbox"` com opções `aria-selected`. Sem tratamento de `Escape` nem navegação por setas na lista (não encontrado). Coberto por `tests/gadgets.test.mjs` ("accessible listbox semantics"). Confirmado.
|
|
254
|
+
|
|
255
|
+
## SgClockThemePreview
|
|
256
|
+
|
|
257
|
+
Miniatura SVG de um tema com ponteiros fixos (10:10:30 aprox.). Fonte: `src/gadgets/clock/themes/SgClockThemePreview.tsx` → `SgClockThemePreview`.
|
|
258
|
+
|
|
259
|
+
### Import
|
|
260
|
+
```tsx
|
|
261
|
+
import { SgClockThemePreview, type SgClockTheme } from "@seedgrid/fe-components";
|
|
262
|
+
```
|
|
263
|
+
Não há tipo `SgClockThemePreviewProps` exportado.
|
|
264
|
+
|
|
265
|
+
### Props
|
|
266
|
+
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|
|
267
|
+
|---|---|---|---|---|
|
|
268
|
+
| `theme` | `SgClockTheme` | — | Sim | Tema visual usado na renderizacao do preview. |
|
|
269
|
+
| `size` | `number` | `64` | Não | Dimensao do preview quadrado em pixels. |
|
|
270
|
+
| `className` | `string` | `?? "block"` ᶠ | Não | Classes adicionais aplicadas ao SVG raiz. |
|
|
271
|
+
|
|
272
|
+
- Tipo de props declarado inline na assinatura de `SgClockThemePreview` (não há tipo `SgClockThemePreviewProps` exportado).
|
|
273
|
+
|
|
274
|
+
### Eventos, ref, slots
|
|
275
|
+
Nenhum. Usa `useDarkFlag()` para `args.dark`.
|
|
276
|
+
|
|
277
|
+
### Acessibilidade
|
|
278
|
+
SVG com `aria-hidden="true"` (decorativo). Confirmado.
|
|
279
|
+
|
|
280
|
+
## SgLinearGauge
|
|
281
|
+
|
|
282
|
+
Medidor linear SVG (horizontal/vertical) com faixas, ticks, barra, ponteiro principal e ponteiros extras arrastáveis. Fonte: `src/gadgets/gauge/SgLinearGauge.tsx` → `SgLinearGauge`; matemática em `src/gadgets/gauge/math.ts` (interna).
|
|
283
|
+
|
|
284
|
+
### Import
|
|
285
|
+
```tsx
|
|
286
|
+
import {
|
|
287
|
+
SgLinearGauge, type SgLinearGaugeProps, type SgLinearGaugeRange,
|
|
288
|
+
type SgLinearGaugePointer, type SgLinearGaugePointerShape
|
|
289
|
+
} from "@seedgrid/fe-components";
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Props
|
|
293
|
+
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|
|
294
|
+
|---|---|---|---|---|
|
|
295
|
+
| `min` | `number` | `0` | Não | Valor minimo da escala. |
|
|
296
|
+
| `max` | `number` | `100` | Não | Valor maximo da escala. |
|
|
297
|
+
| `value` | `number` | — | Não | Valor do ponteiro principal. |
|
|
298
|
+
| `defaultValue` | `number` | `min` | Não | Valor inicial do ponteiro principal no modo não controlado (usado quando `value` é `undefined`). |
|
|
299
|
+
| `onValueChange` | `(value: number) => void` | — | Não | Callback do ponteiro principal. |
|
|
300
|
+
| `pointers` | `SgLinearGaugePointer[]` | `[]` | Não | Ponteiros adicionais renderizados sobre o eixo. |
|
|
301
|
+
| `onPointerValueChange` | `(pointerId: string, value: number, pointer: SgLinearGaugePointer) => void` | — | Não | Disparado ao arrastar um ponteiro adicional (`draggable`), com `(pointerId, valor, ponteiro)`; o `id` padrão é `sg-linear-pointer-<índice>`. O ponteiro também chama seu próprio `onValueChange`. |
|
|
302
|
+
| `ranges` | `SgLinearGaugeRange[]` | `[]` | Não | Faixas coloridas aplicadas sobre a escala. |
|
|
303
|
+
| `orientation` | `"horizontal" \| "vertical"` | `"horizontal"` | Não | Orientacao do gauge. |
|
|
304
|
+
| `isAxisInversed` | `boolean` | `false` | Não | Orientacao e direcao do eixo. |
|
|
305
|
+
| `showPrimaryPointer` | `boolean` | `true` | Não | Configuracoes do ponteiro primario (forma, cor, tamanho, arrastavel). |
|
|
306
|
+
| `primaryPointerShape` | `SgLinearGaugePointerShape` = `"circle" \| "triangle" \| "inverted-triangle" \| "diamond" \| "rect"` | `"triangle"` | Não | Forma do marcador do ponteiro principal. *(Inferência)* |
|
|
307
|
+
| `primaryPointerColor` | `string` | `"hsl(var(--primary))"` | Não | Cor do ponteiro principal. *(Inferência)* |
|
|
308
|
+
| `primaryPointerSize` | `number` | `11` | Não | Tamanho (px) do marcador do ponteiro principal. *(Inferência)* |
|
|
309
|
+
| `primaryPointerDraggable` | `boolean` | `false` | Não | Permite arrastar o ponteiro principal. |
|
|
310
|
+
| `barPointer` | `boolean` | `true` | Não | Barra preenchida ate o valor atual. |
|
|
311
|
+
| `barColor` | `string` | `"hsl(var(--primary))"` | Não | Barra preenchida ate o valor atual. |
|
|
312
|
+
| `barThickness` | `number` | `8` | Não | Barra preenchida ate o valor atual. |
|
|
313
|
+
| `showTicks` | `boolean` | `true` | Não | Exibe ticks da escala. |
|
|
314
|
+
| `showLabels` | `boolean` | `true` | Não | Exibe rotulos da escala. |
|
|
315
|
+
| `majorTickCount` | `number` | `5` | Não | Configuracao de marcacoes e rotulos. |
|
|
316
|
+
| `minorTicksPerInterval` | `number` | `1` | Não | Configuracao de marcacoes e rotulos. |
|
|
317
|
+
| `labelFormatter` | `(value: number) => React.ReactNode` | — | Não | Configuracao de marcacoes e rotulos. |
|
|
318
|
+
| `axisColor` | `string` | `"hsl(var(--border))"` | Não | Estilo do eixo principal. |
|
|
319
|
+
| `axisThickness` | `number` | `10` | Não | Estilo do eixo principal. |
|
|
320
|
+
| `width` | `number` | `orientation === "horizontal" ? 360 : 140` | Não | Dimensoes do SVG. |
|
|
321
|
+
| `height` | `number` | `orientation === "horizontal" ? 120 : 360` | Não | Dimensoes do SVG. |
|
|
322
|
+
| `animate` | `boolean` | `true` | Não | Configuracoes de animacao de transicao. |
|
|
323
|
+
| `animationDuration` | `number` | `350` | Não | Configuracoes de animacao de transicao. |
|
|
324
|
+
| `className` | `string` | — | Não | Estilizacao e acessibilidade. |
|
|
325
|
+
| `style` | `React.CSSProperties` | — | Não | Estilizacao e acessibilidade. |
|
|
326
|
+
| `ariaLabel` | `string` | `?? t(i18n, "components.gadgets.gauge.linearAria")` ᶠ | Não | Estilizacao e acessibilidade. |
|
|
327
|
+
|
|
328
|
+
### Eventos e callbacks
|
|
329
|
+
| Callback | Assinatura | Quando dispara |
|
|
330
|
+
|---|---|---|
|
|
331
|
+
| `onValueChange` | `(value: number) => void` | Arraste do ponteiro principal (`primaryPointerDraggable`); valor limitado a `[min, max]`. |
|
|
332
|
+
| `onPointerValueChange` | `(pointerId: string, value: number, pointer: SgLinearGaugePointer) => void` | Arraste de ponteiro extra com `draggable: true`. |
|
|
333
|
+
| `SgLinearGaugePointer.onValueChange` | `(value: number) => void` | Mesmo momento, no próprio ponteiro. |
|
|
334
|
+
| `labelFormatter` | `(value: number) => React.ReactNode` | Formatação dos rótulos da escala. |
|
|
335
|
+
|
|
336
|
+
Ponteiros extras mantêm o valor arrastado em estado interno e ressincronizam quando `pointers[i].value` muda. Arraste por Pointer Events (`onPointerDown` + listeners de movimento). Confirmado.
|
|
337
|
+
|
|
338
|
+
### Ref
|
|
339
|
+
Não aceita ref.
|
|
340
|
+
|
|
341
|
+
### Acessibilidade
|
|
342
|
+
Raiz `role="meter"` com `aria-valuemin/max/now` e `aria-label` (`ariaLabel` ou texto i18n). **Sem suporte a teclado** para arrastar (sem `tabIndex`/`onKeyDown`). Confirmado.
|
|
343
|
+
|
|
344
|
+
### Tipos auxiliares exportados
|
|
345
|
+
| Tipo | Campos |
|
|
346
|
+
|---|---|
|
|
347
|
+
| `SgLinearGaugeRange` | `start: number; end: number; color?: string; thickness?: number; opacity?: number; label?: React.ReactNode` |
|
|
348
|
+
| `SgLinearGaugePointer` | `id?: string; value: number; color?: string; size?: number; shape?: SgLinearGaugePointerShape; draggable?: boolean; onValueChange?: (value: number) => void; label?: React.ReactNode` |
|
|
349
|
+
| `SgLinearGaugePointerShape` | `"triangle" \| "inverted-triangle" \| "circle" \| "diamond" \| "rect"` |
|
|
350
|
+
|
|
351
|
+
## SgRadialGauge
|
|
352
|
+
|
|
353
|
+
Medidor radial SVG (arco configurável) com faixas, ticks, ponteiro principal (needle/marker/range), ponteiros extras, anotações e conteúdo central. Fonte: `src/gadgets/gauge/SgRadialGauge.tsx` → `SgRadialGauge`.
|
|
354
|
+
|
|
355
|
+
### Import
|
|
356
|
+
```tsx
|
|
357
|
+
import {
|
|
358
|
+
SgRadialGauge, type SgRadialGaugeProps, type SgRadialGaugeRange, type SgRadialGaugePointer,
|
|
359
|
+
type SgRadialGaugePointerType, type SgRadialGaugeMarkerShape, type SgRadialGaugeAnnotation
|
|
360
|
+
} from "@seedgrid/fe-components";
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Props
|
|
364
|
+
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|
|
365
|
+
|---|---|---|---|---|
|
|
366
|
+
| `min` | `number` | `0` | Não | Valor minimo da escala. |
|
|
367
|
+
| `max` | `number` | `100` | Não | Valor maximo da escala. |
|
|
368
|
+
| `value` | `number` | — | Não | Valor do ponteiro principal. |
|
|
369
|
+
| `defaultValue` | `number` | `min` | Não | Valor inicial do ponteiro principal no modo não controlado (usado quando `value` é `undefined`). |
|
|
370
|
+
| `onValueChange` | `(value: number) => void` | — | Não | Callback do ponteiro principal. |
|
|
371
|
+
| `pointers` | `SgRadialGaugePointer[]` | `[]` | Não | Ponteiros adicionais do tipo needle, marker ou range. |
|
|
372
|
+
| `onPointerValueChange` | `(pointerId: string, value: number, pointer: SgRadialGaugePointer) => void` | — | Não | Disparado ao arrastar um ponteiro adicional (`draggable`), com `(pointerId, valor, ponteiro)`; o `id` padrão é `sg-radial-pointer-<índice>`. |
|
|
373
|
+
| `ranges` | `SgRadialGaugeRange[]` | `[]` | Não | Faixas coloridas sobre o arco principal. |
|
|
374
|
+
| `annotations` | `SgRadialGaugeAnnotation[]` | `[]` | Não | Anotacoes posicionadas por valor ou angulo. |
|
|
375
|
+
| `startAngle` | `number` | `135` | Não | Angulo inicial do arco. |
|
|
376
|
+
| `endAngle` | `number` | `45` | Não | Angulo final do arco. |
|
|
377
|
+
| `isAxisInversed` | `boolean` | `false` | Não | Configuracao do arco e direcao da escala. |
|
|
378
|
+
| `showPrimaryPointer` | `boolean` | `true` | Não | Configuracoes do ponteiro primario (needle/marker/range). |
|
|
379
|
+
| `primaryPointerType` | `SgRadialGaugePointerType` = `"needle" \| "marker" \| "range"` | `"needle"` | Não | Tipo visual do ponteiro principal. |
|
|
380
|
+
| `primaryPointerColor` | `string` | `"hsl(var(--primary))"` | Não | Cor do ponteiro principal. *(Inferência)* |
|
|
381
|
+
| `primaryPointerWidth` | `number` | `3` | Não | Espessura (px) do ponteiro principal tipo needle/range. *(Inferência)* |
|
|
382
|
+
| `primaryPointerSize` | `number` | `12` | Não | Tamanho (px) do ponteiro principal (cabeça do needle ou marcador). *(Inferência)* |
|
|
383
|
+
| `primaryPointerShape` | `SgRadialGaugeMarkerShape` = `"square" \| "circle" \| "triangle" \| "diamond"` | `"circle"` | Não | Forma do marcador quando `primaryPointerType="marker"`. *(Inferência)* |
|
|
384
|
+
| `primaryPointerDraggable` | `boolean` | `false` | Não | Permite arrastar o ponteiro principal (atualiza o valor e dispara `onValueChange`). *(Inferência)* |
|
|
385
|
+
| `primaryPointerLabel` | `React.ReactNode` | — | Não | Rótulo do ponteiro principal; se omitido, o needle principal mostra o valor arredondado. *(Inferência)* |
|
|
386
|
+
| `showTicks` | `boolean` | `true` | Não | Marcacoes e rotulos da escala. |
|
|
387
|
+
| `showLabels` | `boolean` | `true` | Não | Marcacoes e rotulos da escala. |
|
|
388
|
+
| `majorTickCount` | `number` | `5` | Não | Marcacoes e rotulos da escala. |
|
|
389
|
+
| `minorTicksPerInterval` | `number` | `1` | Não | Marcacoes e rotulos da escala. |
|
|
390
|
+
| `labelFormatter` | `(value: number) => React.ReactNode` | — | Não | Marcacoes e rotulos da escala. |
|
|
391
|
+
| `axisColor` | `string` | `"hsl(var(--border))"` | Não | Estilo do anel principal, espessura e conteudo central. |
|
|
392
|
+
| `ringThickness` | `number` | `?? axisWidth` ᶠ | Não | Estilo do anel principal, espessura e conteudo central. |
|
|
393
|
+
| `axisWidth` | `number` | `14` | Não | Estilo do anel principal, espessura e conteudo central. |
|
|
394
|
+
| `radiusFactor` | `number` | `0.9` | Não | Estilo do anel principal, espessura e conteudo central. |
|
|
395
|
+
| `centerContent` | `React.ReactNode` | — (rótulo i18n `components.gadgets.gauge.value` + valor arredondado) | Não | Conteúdo central do gauge; substitui o bloco padrão. |
|
|
396
|
+
| `width` | `number` | `300` | Não | Dimensoes do SVG. |
|
|
397
|
+
| `height` | `number` | `300` | Não | Dimensoes do SVG. |
|
|
398
|
+
| `animate` | `boolean` | `true` | Não | Configuracoes da animacao de transicao. |
|
|
399
|
+
| `animationDuration` | `number` | `350` | Não | Configuracoes da animacao de transicao. |
|
|
400
|
+
| `className` | `string` | — | Não | Estilizacao e acessibilidade. |
|
|
401
|
+
| `style` | `React.CSSProperties` | — | Não | Estilizacao e acessibilidade. |
|
|
402
|
+
| `ariaLabel` | `string` | `?? t(i18n, "components.gadgets.gauge.radialAria")` ᶠ | Não | Estilizacao e acessibilidade. |
|
|
403
|
+
|
|
404
|
+
Ângulos em graus no sistema SVG (0° = direita, sentido horário); o arco vai de `startAngle` a `endAngle` no sentido horário (sweep 0 ⇒ 360°). Confirmado (`toSweep`).
|
|
405
|
+
|
|
406
|
+
### Eventos e callbacks
|
|
407
|
+
Mesma semântica do linear: `onValueChange` (ponteiro principal arrastável), `onPointerValueChange(pointerId, value, pointer)` e `SgRadialGaugePointer.onValueChange` (ponteiros extras `draggable`), `labelFormatter`. IDs padrão `sg-radial-pointer-<índice>`. Confirmado.
|
|
408
|
+
|
|
409
|
+
### Ref
|
|
410
|
+
Não aceita ref.
|
|
411
|
+
|
|
412
|
+
### Acessibilidade
|
|
413
|
+
`role="meter"` + `aria-valuemin/max/now` + `aria-label` (`ariaLabel` ou i18n). Sem teclado. Confirmado.
|
|
414
|
+
|
|
415
|
+
### Tipos auxiliares exportados
|
|
416
|
+
| Tipo | Campos |
|
|
417
|
+
|---|---|
|
|
418
|
+
| `SgRadialGaugeRange` | `start: number; end: number; color?: string; width?: number; opacity?: number` |
|
|
419
|
+
| `SgRadialGaugePointer` | `id?: string; type?: SgRadialGaugePointerType; value: number; color?: string; width?: number; size?: number; shape?: SgRadialGaugeMarkerShape; draggable?: boolean; onValueChange?: (value: number) => void; label?: React.ReactNode` (padrões internos: `type` `"needle"`; `size` 10 needle / 12 demais; cor `hsl(var(--secondary))` para extras) |
|
|
420
|
+
| `SgRadialGaugePointerType` | `"needle" \| "marker" \| "range"` |
|
|
421
|
+
| `SgRadialGaugeMarkerShape` | `"circle" \| "diamond" \| "triangle" \| "square"` |
|
|
422
|
+
| `SgRadialGaugeAnnotation` | `id?: string; value?: number; angle?: number; radiusFactor?: number; content: React.ReactNode` |
|
|
423
|
+
|
|
424
|
+
## SgQRCode
|
|
425
|
+
|
|
426
|
+
QR Code SVG (via `qrcode.react` → `QRCodeSVG`) com logo central opcional e fallback para valor vazio/erro. Fonte: `src/gadgets/qr-code/SgQRCode.tsx` → `SgQRCode`.
|
|
427
|
+
|
|
428
|
+
### Import
|
|
429
|
+
```tsx
|
|
430
|
+
import { SgQRCode, type SgQRCodeProps, type SgQRCodeErrorCorrectionLevel } from "@seedgrid/fe-components";
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
### Props
|
|
434
|
+
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|
|
435
|
+
|---|---|---|---|---|
|
|
436
|
+
| `value` | `string` | — | Não | Valor textual codificado no QR Code (aplicado `trim()`; vazio → `emptyFallback` ou nada). |
|
|
437
|
+
| `size` | `number` | `220` | Não | Tamanho do QR em pixels (mínimo efetivo 64). |
|
|
438
|
+
| `margin` | `number` | `2` | Não | Margem interna do QR Code. |
|
|
439
|
+
| `fgColor` | `string` | `"#000000"` | Não | Cor principal do QR Code. |
|
|
440
|
+
| `bgColor` | `string` | `"#FFFFFF"` | Não | Cor de fundo do QR Code. |
|
|
441
|
+
| `errorCorrectionLevel` | `SgQRCodeErrorCorrectionLevel` = `"L" \| "M" \| "Q" \| "H"` | `"H"` | Não | Nível de correção de erro (L/M/Q/H) repassado como `level` ao gerador. |
|
|
442
|
+
| `logoSrc` | `string` | — | Não | URL da logo exibida no centro do QR. |
|
|
443
|
+
| `logoAlt` | `string` | `"Logo"` | Não | Texto alternativo da imagem do logo. |
|
|
444
|
+
| `logoSize` | `number` | `?? safeSize * 0.22` ᶠ | Não | Tamanho do logo em px (limitado entre 18 e `size`). *(Inferência)* |
|
|
445
|
+
| `logoPadding` | `number` | `6` | Não | Espaçamento interno (px) do contêiner do logo. *(Inferência)* |
|
|
446
|
+
| `logoBackgroundColor` | `string` | `"#FFFFFF"` | Não | Cor de fundo do contêiner do logo. *(Inferência)* |
|
|
447
|
+
| `logoBorderRadius` | `number` | `12` | Não | Raio da borda (px) do contêiner do logo. *(Inferência)* |
|
|
448
|
+
| `imageClassName` | `string` | — | Não | Classes adicionais no SVG do QR Code. *(Inferência)* |
|
|
449
|
+
| `logoClassName` | `string` | — | Não | Classes adicionais no contêiner (`span`) do logo. *(Inferência)* |
|
|
450
|
+
| `emptyFallback` | `React.ReactNode` | — | Não | Conteúdo exibido quando `value` está vazio; sem ele o componente retorna `null`. |
|
|
451
|
+
| `onGenerateError` | `(error: Error) => void` | — | Não | Chamado quando a geração do QR lança erro (capturado por error boundary interno, que mostra um placeholder). *(Inferência)* |
|
|
452
|
+
|
|
453
|
+
- **Atributos DOM herdados**: o tipo é `Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & { ... }`; acrescenta 277 props de `@types/react` (`HTMLAttributes` 55, `AriaAttributes` 53, `DOMAttributes` 169). Não listadas individualmente — ver contrato base `React.HTMLAttributes` em `@types/react`.
|
|
454
|
+
|
|
455
|
+
Atributos DOM herdados vão para o `div` raiz via `{...rest}`. Confirmado.
|
|
456
|
+
|
|
457
|
+
### Eventos e callbacks
|
|
458
|
+
`onGenerateError(error)` — chamado por um error boundary interno (`QrErrorBoundary.componentDidCatch`) se a geração falhar; o boundary mostra um placeholder `animate-pulse` e se reseta quando valor/tamanho/margem/cores/nível mudam. Confirmado.
|
|
459
|
+
|
|
460
|
+
### Ref
|
|
461
|
+
Não aceita ref.
|
|
462
|
+
|
|
463
|
+
### Acessibilidade
|
|
464
|
+
O SVG recebe `title` traduzido (`components.gadgets.qrcode.title`); logo é `<img alt={logoAlt}>`; placeholder de erro `aria-hidden`. Confirmado.
|
|
465
|
+
|
|
466
|
+
### Tipos auxiliares exportados
|
|
467
|
+
`SgQRCodeErrorCorrectionLevel = "L" | "M" | "Q" | "H"`.
|
|
468
|
+
|
|
469
|
+
## SgStringAnimator
|
|
470
|
+
|
|
471
|
+
Anima uma string até outra, caractere por caractere, usando um dos dígitos animados por posição. Fonte: `src/gadgets/string-animator/SgStringAnimator.tsx` → `SgStringAnimator`, `SG_STRING_ANIMATOR_DEFAULT_CHARSET`.
|
|
472
|
+
|
|
473
|
+
### Import
|
|
474
|
+
```tsx
|
|
475
|
+
import {
|
|
476
|
+
SgStringAnimator, SG_STRING_ANIMATOR_DEFAULT_CHARSET,
|
|
477
|
+
type SgStringAnimatorProps, type SgStringAnimatorRef, type SgStringAnimatorStyle, type SgStringAnimatorAlign
|
|
478
|
+
} from "@seedgrid/fe-components";
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
### Props
|
|
482
|
+
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|
|
483
|
+
|---|---|---|---|---|
|
|
484
|
+
| `sourceString` | `string` | — | Sim | String exibida antes da animacao |
|
|
485
|
+
| `targetString` | `string` | — | Sim | String de destino — o componente anima ate ela |
|
|
486
|
+
| `stringAnimatorStyle` | `SgStringAnimatorStyle` = `"fade" \| "discard" \| "roller3d" \| "flip" \| "matrix" \| "neon"` | `"roller3d"` | Não | Estilo de animacao por caractere. - "roller3d": tambor vertical (SgRoller3DDigit) - "flip": vira o card (SgFlipDigit) - "neon": brilho neon com fade (SgNeonDigit) - "fade": apaga e acende (SgFadeDigit) - "discard": folha descartada voando (SgDiscardDigit) - "matrix": pontos em matriz LED (SgMatrixDigit) |
|
|
487
|
+
| `velocity` | `number` | `50` | Não | Velocidade de 1 (muito lento) a 100 (muito rapido). Controla o intervalo de tempo entre a troca de cada caractere. |
|
|
488
|
+
| `emptyChar` | `string` | `" "` | Não | Caractere utilizado para preencher as posicoes extras quando sourceString e targetString possuem comprimentos diferentes. |
|
|
489
|
+
| `alignTo` | `SgStringAnimatorAlign` = `"right" \| "left"` | `"left"` | Não | Alinhamento das strings: - "left" — preenche a direita com emptyChar (ideal para texto/nomes) - "right" — preenche a esquerda com emptyChar (ideal para numeros) |
|
|
490
|
+
| `autoStart` | `boolean` | `false` | Não | Se true, inicia a animacao automaticamente quando o componente monta e sempre que targetString mudar. |
|
|
491
|
+
| `fontSize` | `number` | `32` | Não | Tamanho da fonte em pixels — controla a escala de cada digito. |
|
|
492
|
+
| `charset` | `string[]` | `SG_STRING_ANIMATOR_DEFAULT_CHARSET` | Não | Conjunto de caracteres validos para o SgRoller3DDigit. Deve conter todos os caracteres que podem aparecer em sourceString, targetString e emptyChar. Ignorado quando style != "roller3d". |
|
|
493
|
+
| `color` | `string` | — | Não | Cor principal do texto/ponto — aplicada nos estilos "neon", "fade", "discard" e "matrix". |
|
|
494
|
+
| `backgroundColor` | `string` | — | Não | Cor de fundo — aplicada nos estilos "neon", "fade", "discard" e "matrix". |
|
|
495
|
+
| `className` | `string` | — | Não | Classes CSS adicionais no container externo |
|
|
496
|
+
|
|
497
|
+
- Aceita `ref` (via `React.forwardRef`) e `key`.
|
|
498
|
+
|
|
499
|
+
Detalhes (Confirmado): as duas strings são preenchidas até o maior comprimento com `emptyChar` (1º caractere) conforme `alignTo`; intervalo por caractere = `round(600 − (clamp(velocity,1,100) − 1) × 5.65)` ms (≈600 ms a ≈41 ms); com `alignTo="right"` a animação começa pela posição mais à direita. Mudar `sourceString` cancela a animação e reinicia a exibição. `color`/`backgroundColor` só se aplicam a neon/fade/discard/matrix; `charset` só a `roller3d` (é passado como `items`).
|
|
500
|
+
|
|
501
|
+
### Eventos e callbacks
|
|
502
|
+
Nenhum callback (não há evento de fim de animação).
|
|
503
|
+
|
|
504
|
+
### Ref
|
|
505
|
+
`React.forwardRef<SgStringAnimatorRef, SgStringAnimatorProps>`; `SgStringAnimatorRef = { startAnimation: () => void }` — inicia (ou reinicia) a animação de `sourceString` até `targetString`. Com `autoStart`, dispara ao montar e quando `targetString` (preenchida) muda. Confirmado.
|
|
506
|
+
|
|
507
|
+
### Children, slots e composição
|
|
508
|
+
Sem `children`. Compõe `SgRoller3DDigit`, `SgFlipDigit`, `SgNeonDigit`, `SgFadeDigit`, `SgDiscardDigit`, `SgMatrixDigit`.
|
|
509
|
+
|
|
510
|
+
### Acessibilidade
|
|
511
|
+
Nenhum `role`/`aria-*` próprio; depende dos dígitos internos. Confirmado.
|
|
512
|
+
|
|
513
|
+
### Constante exportada
|
|
514
|
+
`SG_STRING_ANIMATOR_DEFAULT_CHARSET: string[]` — espaço, `0-9`, `A-Z`, `a-z` e `. ! ? - + # @ $ % & / * ( )`. Se `emptyChar` não estiver no `charset`, é inserido no início.
|
|
515
|
+
|
|
516
|
+
Lacuna: o JSDoc de `SgStringAnimator` mostra `style="neon"`/`style="fade"` nos `@example`, mas a prop real é `stringAnimatorStyle` (não existe prop `style` no tipo).
|