@seedgrid/fe-components 2026.4.11 → 2026.4.13
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/dist/ai/seedgrid-components.manifest.json +12888 -0
- package/dist/ai-meta/types.d.ts +58 -0
- package/dist/ai-meta/types.d.ts.map +1 -0
- package/dist/ai-meta/types.js +1 -0
- package/dist/buttons/SgButton.meta.d.ts +4 -0
- package/dist/buttons/SgButton.meta.d.ts.map +1 -0
- package/dist/buttons/SgButton.meta.js +139 -0
- package/dist/buttons/SgFloatActionButton.meta.d.ts +4 -0
- package/dist/buttons/SgFloatActionButton.meta.d.ts.map +1 -0
- package/dist/buttons/SgFloatActionButton.meta.js +132 -0
- package/dist/buttons/SgSplitButton.meta.d.ts +4 -0
- package/dist/buttons/SgSplitButton.meta.d.ts.map +1 -0
- package/dist/buttons/SgSplitButton.meta.js +132 -0
- package/dist/commons/SgAvatar.meta.d.ts +4 -0
- package/dist/commons/SgAvatar.meta.d.ts.map +1 -0
- package/dist/commons/SgAvatar.meta.js +123 -0
- package/dist/commons/SgAvatarGroup.meta.d.ts +4 -0
- package/dist/commons/SgAvatarGroup.meta.d.ts.map +1 -0
- package/dist/commons/SgAvatarGroup.meta.js +46 -0
- package/dist/commons/SgBadge.meta.d.ts +4 -0
- package/dist/commons/SgBadge.meta.d.ts.map +1 -0
- package/dist/commons/SgBadge.meta.js +132 -0
- package/dist/commons/SgBadgeOverlay.meta.d.ts +4 -0
- package/dist/commons/SgBadgeOverlay.meta.d.ts.map +1 -0
- package/dist/commons/SgBadgeOverlay.meta.js +46 -0
- package/dist/commons/SgSkeleton.meta.d.ts +4 -0
- package/dist/commons/SgSkeleton.meta.d.ts.map +1 -0
- package/dist/commons/SgSkeleton.meta.js +114 -0
- package/dist/commons/SgToastHost.meta.d.ts +4 -0
- package/dist/commons/SgToastHost.meta.d.ts.map +1 -0
- package/dist/commons/SgToastHost.meta.js +46 -0
- package/dist/commons/SgToaster.meta.d.ts +4 -0
- package/dist/commons/SgToaster.meta.d.ts.map +1 -0
- package/dist/commons/SgToaster.meta.js +48 -0
- package/dist/commons/SgWhistleHost.meta.d.ts +4 -0
- package/dist/commons/SgWhistleHost.meta.d.ts.map +1 -0
- package/dist/commons/SgWhistleHost.meta.js +46 -0
- package/dist/digits/discard-digit/SgDiscardDigit.meta.d.ts +4 -0
- package/dist/digits/discard-digit/SgDiscardDigit.meta.d.ts.map +1 -0
- package/dist/digits/discard-digit/SgDiscardDigit.meta.js +48 -0
- package/dist/digits/fade-digit/SgFadeDigit.meta.d.ts +4 -0
- package/dist/digits/fade-digit/SgFadeDigit.meta.d.ts.map +1 -0
- package/dist/digits/fade-digit/SgFadeDigit.meta.js +48 -0
- package/dist/digits/flip-digit/SgFlipDigit.meta.d.ts +4 -0
- package/dist/digits/flip-digit/SgFlipDigit.meta.d.ts.map +1 -0
- package/dist/digits/flip-digit/SgFlipDigit.meta.js +48 -0
- package/dist/digits/matrix-digit/SgMatrixDigit.meta.d.ts +4 -0
- package/dist/digits/matrix-digit/SgMatrixDigit.meta.d.ts.map +1 -0
- package/dist/digits/matrix-digit/SgMatrixDigit.meta.js +48 -0
- package/dist/digits/neon-digit/SgNeonDigit.meta.d.ts +4 -0
- package/dist/digits/neon-digit/SgNeonDigit.meta.d.ts.map +1 -0
- package/dist/digits/neon-digit/SgNeonDigit.meta.js +48 -0
- package/dist/digits/roller3d-digit/SgRoller3DDigit.meta.d.ts +4 -0
- package/dist/digits/roller3d-digit/SgRoller3DDigit.meta.d.ts.map +1 -0
- package/dist/digits/roller3d-digit/SgRoller3DDigit.meta.js +48 -0
- package/dist/digits/segment-digit/SgSegmentDigit.meta.d.ts +4 -0
- package/dist/digits/segment-digit/SgSegmentDigit.meta.d.ts.map +1 -0
- package/dist/digits/segment-digit/SgSegmentDigit.meta.js +48 -0
- package/dist/digits/seven-segment-digit/SgSevenSegmentDigit.meta.d.ts +4 -0
- package/dist/digits/seven-segment-digit/SgSevenSegmentDigit.meta.d.ts.map +1 -0
- package/dist/digits/seven-segment-digit/SgSevenSegmentDigit.meta.js +48 -0
- package/dist/environment/SgEnvironmentProvider.meta.d.ts +4 -0
- package/dist/environment/SgEnvironmentProvider.meta.d.ts.map +1 -0
- package/dist/environment/SgEnvironmentProvider.meta.js +53 -0
- package/dist/gadgets/calendar/SgCalendar.meta.d.ts +4 -0
- package/dist/gadgets/calendar/SgCalendar.meta.d.ts.map +1 -0
- package/dist/gadgets/calendar/SgCalendar.meta.js +51 -0
- package/dist/gadgets/clock/SgClock.meta.d.ts +4 -0
- package/dist/gadgets/clock/SgClock.meta.d.ts.map +1 -0
- package/dist/gadgets/clock/SgClock.meta.js +50 -0
- package/dist/gadgets/clock/SgTimeProvider.meta.d.ts +4 -0
- package/dist/gadgets/clock/SgTimeProvider.meta.d.ts.map +1 -0
- package/dist/gadgets/clock/SgTimeProvider.meta.js +49 -0
- package/dist/gadgets/clock/themes/SgClockThemePicker.meta.d.ts +4 -0
- package/dist/gadgets/clock/themes/SgClockThemePicker.meta.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/SgClockThemePicker.meta.js +56 -0
- package/dist/gadgets/clock/themes/SgClockThemePreview.meta.d.ts +4 -0
- package/dist/gadgets/clock/themes/SgClockThemePreview.meta.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/SgClockThemePreview.meta.js +50 -0
- package/dist/gadgets/clock/themes/SgClockThemeProvider.meta.d.ts +4 -0
- package/dist/gadgets/clock/themes/SgClockThemeProvider.meta.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/SgClockThemeProvider.meta.js +51 -0
- package/dist/gadgets/gauge/SgLinearGauge.meta.d.ts +4 -0
- package/dist/gadgets/gauge/SgLinearGauge.meta.d.ts.map +1 -0
- package/dist/gadgets/gauge/SgLinearGauge.meta.js +57 -0
- package/dist/gadgets/gauge/SgRadialGauge.meta.d.ts +4 -0
- package/dist/gadgets/gauge/SgRadialGauge.meta.d.ts.map +1 -0
- package/dist/gadgets/gauge/SgRadialGauge.meta.js +57 -0
- package/dist/gadgets/qr-code/SgQRCode.meta.d.ts +4 -0
- package/dist/gadgets/qr-code/SgQRCode.meta.d.ts.map +1 -0
- package/dist/gadgets/qr-code/SgQRCode.meta.js +48 -0
- package/dist/gadgets/string-animator/SgStringAnimator.meta.d.ts +4 -0
- package/dist/gadgets/string-animator/SgStringAnimator.meta.d.ts.map +1 -0
- package/dist/gadgets/string-animator/SgStringAnimator.meta.js +48 -0
- package/dist/i18n/SgComponentsI18nProvider.meta.d.ts +4 -0
- package/dist/i18n/SgComponentsI18nProvider.meta.d.ts.map +1 -0
- package/dist/i18n/SgComponentsI18nProvider.meta.js +50 -0
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/inputs/SgAutocomplete.meta.d.ts +4 -0
- package/dist/inputs/SgAutocomplete.meta.d.ts.map +1 -0
- package/dist/inputs/SgAutocomplete.meta.js +52 -0
- package/dist/inputs/SgCheckboxGroup.meta.d.ts +4 -0
- package/dist/inputs/SgCheckboxGroup.meta.d.ts.map +1 -0
- package/dist/inputs/SgCheckboxGroup.meta.js +51 -0
- package/dist/inputs/SgCombobox.meta.d.ts +4 -0
- package/dist/inputs/SgCombobox.meta.d.ts.map +1 -0
- package/dist/inputs/SgCombobox.meta.js +52 -0
- package/dist/inputs/SgDatatable.meta.d.ts +4 -0
- package/dist/inputs/SgDatatable.meta.d.ts.map +1 -0
- package/dist/inputs/SgDatatable.meta.js +51 -0
- package/dist/inputs/SgInputBirthDate.meta.d.ts +4 -0
- package/dist/inputs/SgInputBirthDate.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputBirthDate.meta.js +80 -0
- package/dist/inputs/SgInputCNPJ.meta.d.ts +4 -0
- package/dist/inputs/SgInputCNPJ.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputCNPJ.meta.js +81 -0
- package/dist/inputs/SgInputCPF.meta.d.ts +4 -0
- package/dist/inputs/SgInputCPF.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputCPF.meta.js +80 -0
- package/dist/inputs/SgInputCPFCNPJ.meta.d.ts +4 -0
- package/dist/inputs/SgInputCPFCNPJ.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputCPFCNPJ.meta.js +80 -0
- package/dist/inputs/SgInputCurrency.meta.d.ts +4 -0
- package/dist/inputs/SgInputCurrency.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputCurrency.meta.js +136 -0
- package/dist/inputs/SgInputDate.meta.d.ts +4 -0
- package/dist/inputs/SgInputDate.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputDate.meta.js +136 -0
- package/dist/inputs/SgInputEmail.meta.d.ts +4 -0
- package/dist/inputs/SgInputEmail.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputEmail.meta.js +81 -0
- package/dist/inputs/SgInputNumber.meta.d.ts +4 -0
- package/dist/inputs/SgInputNumber.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputNumber.meta.js +137 -0
- package/dist/inputs/SgInputOTP.js +1 -1
- package/dist/inputs/SgInputOTP.meta.d.ts +4 -0
- package/dist/inputs/SgInputOTP.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputOTP.meta.js +80 -0
- package/dist/inputs/SgInputPassword.meta.d.ts +4 -0
- package/dist/inputs/SgInputPassword.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputPassword.meta.js +81 -0
- package/dist/inputs/SgInputPhone.meta.d.ts +4 -0
- package/dist/inputs/SgInputPhone.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputPhone.meta.js +80 -0
- package/dist/inputs/SgInputPostalCode.meta.d.ts +4 -0
- package/dist/inputs/SgInputPostalCode.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputPostalCode.meta.js +81 -0
- package/dist/inputs/SgInputText.meta.d.ts +4 -0
- package/dist/inputs/SgInputText.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputText.meta.js +138 -0
- package/dist/inputs/SgInputTextarea.meta.d.ts +4 -0
- package/dist/inputs/SgInputTextarea.meta.d.ts.map +1 -0
- package/dist/inputs/SgInputTextarea.meta.js +136 -0
- package/dist/inputs/SgOrderList.meta.d.ts +4 -0
- package/dist/inputs/SgOrderList.meta.d.ts.map +1 -0
- package/dist/inputs/SgOrderList.meta.js +51 -0
- package/dist/inputs/SgPickList.meta.d.ts +4 -0
- package/dist/inputs/SgPickList.meta.d.ts.map +1 -0
- package/dist/inputs/SgPickList.meta.js +51 -0
- package/dist/inputs/SgRadioGroup.meta.d.ts +4 -0
- package/dist/inputs/SgRadioGroup.meta.d.ts.map +1 -0
- package/dist/inputs/SgRadioGroup.meta.js +51 -0
- package/dist/inputs/SgRating.meta.d.ts +4 -0
- package/dist/inputs/SgRating.meta.d.ts.map +1 -0
- package/dist/inputs/SgRating.meta.js +51 -0
- package/dist/inputs/SgSlider.meta.d.ts +4 -0
- package/dist/inputs/SgSlider.meta.d.ts.map +1 -0
- package/dist/inputs/SgSlider.meta.js +51 -0
- package/dist/inputs/SgStepperInput.meta.d.ts +4 -0
- package/dist/inputs/SgStepperInput.meta.d.ts.map +1 -0
- package/dist/inputs/SgStepperInput.meta.js +51 -0
- package/dist/inputs/SgTextEditor.meta.d.ts +4 -0
- package/dist/inputs/SgTextEditor.meta.d.ts.map +1 -0
- package/dist/inputs/SgTextEditor.meta.js +51 -0
- package/dist/inputs/SgToggleSwitch.meta.d.ts +4 -0
- package/dist/inputs/SgToggleSwitch.meta.d.ts.map +1 -0
- package/dist/inputs/SgToggleSwitch.meta.js +51 -0
- package/dist/layout/SgAccordion.meta.d.ts +4 -0
- package/dist/layout/SgAccordion.meta.d.ts.map +1 -0
- package/dist/layout/SgAccordion.meta.js +131 -0
- package/dist/layout/SgBreadcrumb.meta.d.ts +4 -0
- package/dist/layout/SgBreadcrumb.meta.d.ts.map +1 -0
- package/dist/layout/SgBreadcrumb.meta.js +125 -0
- package/dist/layout/SgCard.meta.d.ts +4 -0
- package/dist/layout/SgCard.meta.d.ts.map +1 -0
- package/dist/layout/SgCard.meta.js +132 -0
- package/dist/layout/SgCarousel.meta.d.ts +4 -0
- package/dist/layout/SgCarousel.meta.d.ts.map +1 -0
- package/dist/layout/SgCarousel.meta.js +50 -0
- package/dist/layout/SgDockLayout.meta.d.ts +4 -0
- package/dist/layout/SgDockLayout.meta.d.ts.map +1 -0
- package/dist/layout/SgDockLayout.meta.js +47 -0
- package/dist/layout/SgDockScreen.meta.d.ts +4 -0
- package/dist/layout/SgDockScreen.meta.d.ts.map +1 -0
- package/dist/layout/SgDockScreen.meta.js +49 -0
- package/dist/layout/SgDockZone.meta.d.ts +4 -0
- package/dist/layout/SgDockZone.meta.d.ts.map +1 -0
- package/dist/layout/SgDockZone.meta.js +43 -0
- package/dist/layout/SgExpandablePanel.meta.d.ts +4 -0
- package/dist/layout/SgExpandablePanel.meta.d.ts.map +1 -0
- package/dist/layout/SgExpandablePanel.meta.js +50 -0
- package/dist/layout/SgGrid.meta.d.ts +4 -0
- package/dist/layout/SgGrid.meta.d.ts.map +1 -0
- package/dist/layout/SgGrid.meta.js +124 -0
- package/dist/layout/SgGroupBox.meta.d.ts +4 -0
- package/dist/layout/SgGroupBox.meta.d.ts.map +1 -0
- package/dist/layout/SgGroupBox.meta.js +99 -0
- package/dist/layout/SgMenu.meta.d.ts +4 -0
- package/dist/layout/SgMenu.meta.d.ts.map +1 -0
- package/dist/layout/SgMenu.meta.js +137 -0
- package/dist/layout/SgPageControl.meta.d.ts +4 -0
- package/dist/layout/SgPageControl.meta.d.ts.map +1 -0
- package/dist/layout/SgPageControl.meta.js +50 -0
- package/dist/layout/SgPageControlPage.meta.d.ts +4 -0
- package/dist/layout/SgPageControlPage.meta.d.ts.map +1 -0
- package/dist/layout/SgPageControlPage.meta.js +47 -0
- package/dist/layout/SgPanel.meta.d.ts +4 -0
- package/dist/layout/SgPanel.meta.d.ts.map +1 -0
- package/dist/layout/SgPanel.meta.js +140 -0
- package/dist/layout/SgScreen.meta.d.ts +4 -0
- package/dist/layout/SgScreen.meta.d.ts.map +1 -0
- package/dist/layout/SgScreen.meta.js +113 -0
- package/dist/layout/SgStack.meta.d.ts +4 -0
- package/dist/layout/SgStack.meta.d.ts.map +1 -0
- package/dist/layout/SgStack.meta.js +126 -0
- package/dist/layout/SgToolBar.meta.d.ts +4 -0
- package/dist/layout/SgToolBar.meta.d.ts.map +1 -0
- package/dist/layout/SgToolBar.meta.js +131 -0
- package/dist/layout/SgToolbarIconButton.meta.d.ts +4 -0
- package/dist/layout/SgToolbarIconButton.meta.d.ts.map +1 -0
- package/dist/layout/SgToolbarIconButton.meta.js +48 -0
- package/dist/layout/SgTreeView.meta.d.ts +4 -0
- package/dist/layout/SgTreeView.meta.d.ts.map +1 -0
- package/dist/layout/SgTreeView.meta.js +132 -0
- package/dist/layout/menu-logic.d.ts.map +1 -1
- package/dist/layout/menu-logic.js +1 -3
- package/dist/menus/SgDockMenu.meta.d.ts +4 -0
- package/dist/menus/SgDockMenu.meta.d.ts.map +1 -0
- package/dist/menus/SgDockMenu.meta.js +135 -0
- package/dist/overlay/SgConfirmationDialog.meta.d.ts +4 -0
- package/dist/overlay/SgConfirmationDialog.meta.d.ts.map +1 -0
- package/dist/overlay/SgConfirmationDialog.meta.js +128 -0
- package/dist/overlay/SgDialog.meta.d.ts +4 -0
- package/dist/overlay/SgDialog.meta.d.ts.map +1 -0
- package/dist/overlay/SgDialog.meta.js +130 -0
- package/dist/overlay/SgPopup.meta.d.ts +4 -0
- package/dist/overlay/SgPopup.meta.d.ts.map +1 -0
- package/dist/overlay/SgPopup.meta.js +129 -0
- package/dist/sandbox.cjs +31 -31
- package/dist/wizard/SgWizard.meta.d.ts +4 -0
- package/dist/wizard/SgWizard.meta.d.ts.map +1 -0
- package/dist/wizard/SgWizard.meta.js +50 -0
- package/dist/wizard/SgWizardPage.meta.d.ts +4 -0
- package/dist/wizard/SgWizardPage.meta.d.ts.map +1 -0
- package/dist/wizard/SgWizardPage.meta.js +44 -0
- package/package.json +2 -2
- package/dist/inputs/SgInputSelect.d.ts +0 -18
- package/dist/inputs/SgInputSelect.d.ts.map +0 -1
- package/dist/inputs/SgInputSelect.js +0 -139
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SgWizard.meta.d.ts","sourceRoot":"","sources":["../../src/wizard/SgWizard.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QA8BpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAmBrB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export const sgMeta = {
|
|
2
|
+
version: "0.1",
|
|
3
|
+
componentId: "navigation.wizard",
|
|
4
|
+
package: "@seedgrid/fe-components",
|
|
5
|
+
exportName: "SgWizard",
|
|
6
|
+
slug: "sg-wizard",
|
|
7
|
+
displayName: "SgWizard",
|
|
8
|
+
category: "navigation",
|
|
9
|
+
subcategory: "wizard",
|
|
10
|
+
description: "Fluxo multi-etapas com stepper, validacao por etapa, navegacao controlada e finalizacao assincrona.",
|
|
11
|
+
tags: ["navigation", "wizard", "steps", "flow", "form"],
|
|
12
|
+
capabilities: ["multi-step", "validation", "stepper", "previous-next", "async-finish"],
|
|
13
|
+
fieldSemantics: ["wizard", "multiStepFlow", "stepForm", "guidedFlow", "journey"],
|
|
14
|
+
props: [
|
|
15
|
+
{ name: "children", type: "ReactNode", required: true, description: "Paginas do wizard renderizadas em ordem.", semanticRole: "data", bindable: false },
|
|
16
|
+
{ name: "initialStep", type: "number", default: 0, description: "Indice inicial da etapa ativa.", semanticRole: "value", bindable: true },
|
|
17
|
+
{ name: "stepper", type: '"numbered" | "icons" | "none"', default: "none", description: "Modo visual do stepper.", semanticRole: "appearance", bindable: true },
|
|
18
|
+
{ name: "stepNavigation", type: '"none" | "previous" | "previous-and-next"', default: "previous-and-next", description: "Define quais etapas podem ser acessadas clicando no stepper.", semanticRole: "behavior", bindable: true },
|
|
19
|
+
{ name: "validateStep", type: "(stepIndex: number) => boolean | Promise<boolean>", description: "Valida a etapa atual antes de avancar.", semanticRole: "validation", bindable: false },
|
|
20
|
+
{ name: "onStepChange", type: "(index: number) => void", description: "Callback disparado ao trocar de etapa.", semanticRole: "event", bindable: false },
|
|
21
|
+
{ name: "onFinish", type: "() => void | Promise<void>", required: true, description: "Acao executada ao concluir o wizard.", semanticRole: "event", bindable: false }
|
|
22
|
+
],
|
|
23
|
+
states: ["default", "validating", "finishing", "completed"],
|
|
24
|
+
examples: [
|
|
25
|
+
{ id: "auto-validation", title: "Auto validation", file: "apps/showcase/src/app/components/sg-wizard/samples/auto-validation.tsx.sample", kind: "sample" },
|
|
26
|
+
{ id: "playground", title: "Playground", file: "apps/showcase/src/app/components/sg-wizard/sg-wizard.tsx.playground", kind: "playground" }
|
|
27
|
+
],
|
|
28
|
+
showcase: { route: "/components/sg-wizard", hasPlayground: true, hasPropsTable: true },
|
|
29
|
+
sdui: { rendererType: "navigation.wizard", acceptsDataBinding: true, defaultProps: { initialStep: 0, stepper: "none", stepNavigation: "previous-and-next" } }
|
|
30
|
+
};
|
|
31
|
+
export const aiHints = {
|
|
32
|
+
version: "0.1",
|
|
33
|
+
preferredUseCases: [
|
|
34
|
+
"Guiar o usuario por um fluxo multi-etapas com validacao progressiva.",
|
|
35
|
+
"Organizar cadastros complexos, onboarding e configuracoes assistidas.",
|
|
36
|
+
"Separar coleta de dados em passos com navegacao controlada."
|
|
37
|
+
],
|
|
38
|
+
avoidUseCases: [
|
|
39
|
+
"Troca simples de abas sem sequencia; nesses casos prefira PageControl.",
|
|
40
|
+
"Fluxos sem navegacao guiada; nesses casos prefira formularios comuns com Panel e inputs.",
|
|
41
|
+
"Dialogs curtos com uma unica acao."
|
|
42
|
+
],
|
|
43
|
+
synonyms: ["wizard", "step form", "multi-step flow", "guided flow"],
|
|
44
|
+
relatedEntityFields: ["steps", "wizard", "onboarding", "setup", "journey"],
|
|
45
|
+
compositionHints: [
|
|
46
|
+
"Usar com SgWizardPage e inputs para formularios complexos.",
|
|
47
|
+
"Combinar com Button e dialogs de confirmacao quando houver etapa final de submit."
|
|
48
|
+
],
|
|
49
|
+
rankingSignals: { freeText: 0, structuredChoice: 0.65, date: 0, number: 0, denseLayout: 0.8 }
|
|
50
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SgWizardPage.meta.d.ts","sourceRoot":"","sources":["../../src/wizard/SgWizardPage.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QAwBpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAmBrB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const sgMeta = {
|
|
2
|
+
version: "0.1",
|
|
3
|
+
componentId: "navigation.wizard-page",
|
|
4
|
+
package: "@seedgrid/fe-components",
|
|
5
|
+
exportName: "SgWizardPage",
|
|
6
|
+
slug: "sg-wizard-page",
|
|
7
|
+
displayName: "SgWizardPage",
|
|
8
|
+
category: "navigation",
|
|
9
|
+
subcategory: "wizard-page",
|
|
10
|
+
description: "Pagina individual dentro de um wizard, com titulo, icone e conteudo associado a uma etapa.",
|
|
11
|
+
tags: ["navigation", "wizard", "step", "page", "form-step"],
|
|
12
|
+
capabilities: ["step-content", "title", "icon", "wizard-children"],
|
|
13
|
+
fieldSemantics: ["wizardStep", "stepPage", "guidedStep", "formStep"],
|
|
14
|
+
props: [
|
|
15
|
+
{ name: "title", type: "string", description: "Titulo exibido no stepper do wizard.", semanticRole: "label", bindable: true },
|
|
16
|
+
{ name: "icon", type: "ReactNode", description: "Icone opcional exibido quando o wizard usa stepper por icones.", semanticRole: "label", bindable: true },
|
|
17
|
+
{ name: "children", type: "ReactNode", required: true, description: "Conteudo da etapa.", semanticRole: "data", bindable: false },
|
|
18
|
+
{ name: "className", type: "string", description: "Classes adicionais da etapa.", semanticRole: "appearance", bindable: true }
|
|
19
|
+
],
|
|
20
|
+
states: ["default", "active", "completed"],
|
|
21
|
+
examples: [{ id: "auto-validation", title: "Auto validation", file: "apps/showcase/src/app/components/sg-wizard/samples/auto-validation.tsx.sample", kind: "sample" }],
|
|
22
|
+
showcase: { route: "/components/sg-wizard", hasPlayground: true, hasPropsTable: true },
|
|
23
|
+
sdui: { rendererType: "navigation.wizard-page", acceptsDataBinding: true, defaultProps: {} }
|
|
24
|
+
};
|
|
25
|
+
export const aiHints = {
|
|
26
|
+
version: "0.1",
|
|
27
|
+
preferredUseCases: [
|
|
28
|
+
"Declarar uma etapa individual dentro de um wizard.",
|
|
29
|
+
"Separar conteudo, validacao e rotulos por passo em fluxos guiados.",
|
|
30
|
+
"Modelar passos com icone e titulo em journeys multi-etapas."
|
|
31
|
+
],
|
|
32
|
+
avoidUseCases: [
|
|
33
|
+
"Abas independentes; nesses casos prefira PageControlPage.",
|
|
34
|
+
"Containers soltos fora de um Wizard.",
|
|
35
|
+
"Blocos de layout sem sequencia navegacional."
|
|
36
|
+
],
|
|
37
|
+
synonyms: ["wizard page", "wizard step", "step page", "form step"],
|
|
38
|
+
relatedEntityFields: ["step", "page", "wizardStep", "stage"],
|
|
39
|
+
compositionHints: [
|
|
40
|
+
"Usar sempre como filho de SgWizard.",
|
|
41
|
+
"Combinar com inputs e secoes de resumo para organizar cada etapa."
|
|
42
|
+
],
|
|
43
|
+
rankingSignals: { freeText: 0, structuredChoice: 0.55, date: 0, number: 0, denseLayout: 0.72 }
|
|
44
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seedgrid/fe-components",
|
|
3
|
-
"version": "2026.4.
|
|
3
|
+
"version": "2026.4.13",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
},
|
|
72
72
|
"scripts": {
|
|
73
73
|
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
74
|
-
"build": "pnpm run clean && tsc -p tsconfig.json && pnpm run build:sandbox",
|
|
74
|
+
"build": "pnpm run clean && tsc -p tsconfig.json && node scripts/build-ai-manifest.mjs && pnpm run build:sandbox",
|
|
75
75
|
"build:sandbox": "tsup --config tsup.sandbox.config.ts",
|
|
76
76
|
"dev": "tsc -p tsconfig.json --watch --preserveWatchOutput",
|
|
77
77
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { type RhfFieldProps } from "../rhf";
|
|
3
|
-
export type SgInputSelectProps = {
|
|
4
|
-
id: string;
|
|
5
|
-
label: string;
|
|
6
|
-
error?: string;
|
|
7
|
-
className?: string;
|
|
8
|
-
options: Array<{
|
|
9
|
-
value: string;
|
|
10
|
-
label: string;
|
|
11
|
-
}>;
|
|
12
|
-
selectProps: React.SelectHTMLAttributes<HTMLSelectElement> & {
|
|
13
|
-
ref?: React.Ref<HTMLSelectElement>;
|
|
14
|
-
};
|
|
15
|
-
alwaysFloat?: boolean;
|
|
16
|
-
} & RhfFieldProps;
|
|
17
|
-
export declare function SgInputSelect(props: SgInputSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
//# sourceMappingURL=SgInputSelect.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SgInputSelect.d.ts","sourceRoot":"","sources":["../../src/inputs/SgInputSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAG/D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,WAAW,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;QAC3D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;KACpC,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,aAAa,CAAC;AA4KlB,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAmDtD"}
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import React from "react";
|
|
4
|
-
import { Controller } from "react-hook-form";
|
|
5
|
-
import { resolveFieldError } from "../rhf";
|
|
6
|
-
import { t, useComponentsI18n } from "../i18n";
|
|
7
|
-
function ErrorText(props) {
|
|
8
|
-
if (!props.message)
|
|
9
|
-
return null;
|
|
10
|
-
return _jsx("p", { "data-sg-error": true, className: "text-xs text-red-600", children: props.message });
|
|
11
|
-
}
|
|
12
|
-
function mergeSelectRefs(primary, secondary) {
|
|
13
|
-
return (node) => {
|
|
14
|
-
if (typeof primary === "function") {
|
|
15
|
-
primary(node);
|
|
16
|
-
}
|
|
17
|
-
else if (primary && typeof primary === "object" && "current" in primary) {
|
|
18
|
-
primary.current = node;
|
|
19
|
-
}
|
|
20
|
-
if (typeof secondary === "function") {
|
|
21
|
-
secondary(node);
|
|
22
|
-
}
|
|
23
|
-
else if (secondary && typeof secondary === "object" && "current" in secondary) {
|
|
24
|
-
secondary.current = node;
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
function mergeSelectPropsWithField(selectProps, field) {
|
|
29
|
-
const resolvedValue = typeof field.value === "string" || typeof field.value === "number" || Array.isArray(field.value)
|
|
30
|
-
? field.value
|
|
31
|
-
: field.value == null
|
|
32
|
-
? ""
|
|
33
|
-
: String(field.value);
|
|
34
|
-
return {
|
|
35
|
-
...selectProps,
|
|
36
|
-
value: resolvedValue,
|
|
37
|
-
onChange: (event) => {
|
|
38
|
-
field.onChange(event);
|
|
39
|
-
selectProps?.onChange?.(event);
|
|
40
|
-
},
|
|
41
|
-
onBlur: (event) => {
|
|
42
|
-
field.onBlur();
|
|
43
|
-
selectProps?.onBlur?.(event);
|
|
44
|
-
},
|
|
45
|
-
ref: (node) => {
|
|
46
|
-
field.ref(node);
|
|
47
|
-
const ref = selectProps?.ref;
|
|
48
|
-
if (!ref)
|
|
49
|
-
return;
|
|
50
|
-
if (typeof ref === "function") {
|
|
51
|
-
ref(node);
|
|
52
|
-
}
|
|
53
|
-
else if (ref && typeof ref === "object" && "current" in ref) {
|
|
54
|
-
ref.current = node;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
function SgInputSelectBase(props) {
|
|
60
|
-
const i18n = useComponentsI18n();
|
|
61
|
-
const selectRef = React.useRef(null);
|
|
62
|
-
const [isFilled, setIsFilled] = React.useState(() => {
|
|
63
|
-
const value = props.selectProps.value ?? props.selectProps.defaultValue ?? "";
|
|
64
|
-
return String(value).length > 0;
|
|
65
|
-
});
|
|
66
|
-
React.useEffect(() => {
|
|
67
|
-
const next = (selectRef.current?.value ?? "").length > 0;
|
|
68
|
-
if (next !== isFilled)
|
|
69
|
-
setIsFilled(next);
|
|
70
|
-
});
|
|
71
|
-
React.useEffect(() => {
|
|
72
|
-
if (props.selectProps.value === undefined)
|
|
73
|
-
return;
|
|
74
|
-
setIsFilled(String(props.selectProps.value ?? "").length > 0);
|
|
75
|
-
}, [props.selectProps.value]);
|
|
76
|
-
const setRefs = React.useCallback((node) => {
|
|
77
|
-
selectRef.current = node;
|
|
78
|
-
const ref = props.selectProps.ref;
|
|
79
|
-
if (!ref)
|
|
80
|
-
return;
|
|
81
|
-
if (typeof ref === "function") {
|
|
82
|
-
ref(node);
|
|
83
|
-
}
|
|
84
|
-
else if (typeof ref === "object") {
|
|
85
|
-
ref.current = node;
|
|
86
|
-
}
|
|
87
|
-
}, [props.selectProps]);
|
|
88
|
-
const handleChange = (event) => {
|
|
89
|
-
setIsFilled(event.currentTarget.value.length > 0);
|
|
90
|
-
props.selectProps.onChange?.(event);
|
|
91
|
-
};
|
|
92
|
-
const handleBlur = (event) => {
|
|
93
|
-
setIsFilled(event.currentTarget.value.length > 0);
|
|
94
|
-
props.selectProps.onBlur?.(event);
|
|
95
|
-
};
|
|
96
|
-
const alwaysFloat = props.alwaysFloat ?? (props.selectProps?.["data-floating"] === "always");
|
|
97
|
-
return (_jsxs("div", { children: [_jsxs("div", { className: "relative", children: [alwaysFloat ? (_jsx("label", { htmlFor: props.id, className: [
|
|
98
|
-
"pointer-events-none absolute left-3 top-0 z-10 -translate-y-1/2 bg-[var(--sg-input-bg,hsl(var(--background)))] px-1 text-[11px] font-medium leading-none",
|
|
99
|
-
props.error ? "text-[hsl(var(--destructive))]" : "text-foreground/70"
|
|
100
|
-
].join(" "), children: props.label })) : null, (() => {
|
|
101
|
-
const hasError = Boolean(props.error);
|
|
102
|
-
const baseClass = "peer h-11 w-full rounded-md bg-[var(--sg-input-bg,hsl(var(--background)))] text-[var(--sg-input-fg,hsl(var(--foreground)))] px-3 pt-4 text-sm shadow-sm focus:outline-none";
|
|
103
|
-
const borderClass = hasError
|
|
104
|
-
? "border border-[hsl(var(--destructive))] focus:border-[hsl(var(--destructive))] focus:ring-2 focus:ring-[hsl(var(--destructive)/0.25)]"
|
|
105
|
-
: "border border-border focus:border-[hsl(var(--primary))] focus:ring-2 focus:ring-[hsl(var(--primary)/0.25)]";
|
|
106
|
-
const resolvedClassName = props.className ?? [baseClass, borderClass].join(" ");
|
|
107
|
-
return (_jsxs("select", { id: props.id, className: resolvedClassName, ...props.selectProps, ref: setRefs, onChange: handleChange, onBlur: handleBlur, children: [_jsx("option", { value: "", children: t(i18n, "components.inputs.select.placeholder") }), props.options.map((opt) => (_jsx("option", { value: opt.value, children: opt.label }, opt.value)))] }));
|
|
108
|
-
})(), alwaysFloat ? (_jsx("label", { htmlFor: props.id, className: "sr-only", children: props.label })) : (_jsx("label", { htmlFor: props.id, className: [
|
|
109
|
-
"absolute left-3 bg-[var(--sg-input-bg,hsl(var(--background)))] px-1 transition-all",
|
|
110
|
-
isFilled ? "-top-2 text-xs" : "top-3 text-sm",
|
|
111
|
-
props.error ? "text-[hsl(var(--destructive))]" : isFilled ? "text-[hsl(var(--primary))]" : "text-foreground/60",
|
|
112
|
-
props.error
|
|
113
|
-
? "peer-focus:-top-2 peer-focus:text-xs peer-focus:text-[hsl(var(--destructive))]"
|
|
114
|
-
: "peer-focus:-top-2 peer-focus:text-xs peer-focus:text-[hsl(var(--primary))]"
|
|
115
|
-
].join(" "), children: props.label }))] }), _jsx(ErrorText, { message: props.error })] }));
|
|
116
|
-
}
|
|
117
|
-
export function SgInputSelect(props) {
|
|
118
|
-
const { control, name, register, rules, ...rest } = props;
|
|
119
|
-
if (name && register) {
|
|
120
|
-
const reg = register(name, rules);
|
|
121
|
-
return (_jsx(SgInputSelectBase, { ...rest, selectProps: {
|
|
122
|
-
...rest.selectProps,
|
|
123
|
-
name,
|
|
124
|
-
onChange: (event) => {
|
|
125
|
-
reg.onChange(event);
|
|
126
|
-
rest.selectProps?.onChange?.(event);
|
|
127
|
-
},
|
|
128
|
-
onBlur: (event) => {
|
|
129
|
-
reg.onBlur(event);
|
|
130
|
-
rest.selectProps?.onBlur?.(event);
|
|
131
|
-
},
|
|
132
|
-
ref: mergeSelectRefs(reg.ref, rest.selectProps?.ref)
|
|
133
|
-
} }));
|
|
134
|
-
}
|
|
135
|
-
if (control && name) {
|
|
136
|
-
return (_jsx(Controller, { name: name, control: control, rules: rules, render: ({ field, fieldState }) => (_jsx(SgInputSelectBase, { ...rest, error: resolveFieldError(rest.error, fieldState.error?.message), selectProps: mergeSelectPropsWithField(rest.selectProps, field) })) }));
|
|
137
|
-
}
|
|
138
|
-
return _jsx(SgInputSelectBase, { ...rest });
|
|
139
|
-
}
|