@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.
Files changed (261) hide show
  1. package/dist/ai/seedgrid-components.manifest.json +12888 -0
  2. package/dist/ai-meta/types.d.ts +58 -0
  3. package/dist/ai-meta/types.d.ts.map +1 -0
  4. package/dist/ai-meta/types.js +1 -0
  5. package/dist/buttons/SgButton.meta.d.ts +4 -0
  6. package/dist/buttons/SgButton.meta.d.ts.map +1 -0
  7. package/dist/buttons/SgButton.meta.js +139 -0
  8. package/dist/buttons/SgFloatActionButton.meta.d.ts +4 -0
  9. package/dist/buttons/SgFloatActionButton.meta.d.ts.map +1 -0
  10. package/dist/buttons/SgFloatActionButton.meta.js +132 -0
  11. package/dist/buttons/SgSplitButton.meta.d.ts +4 -0
  12. package/dist/buttons/SgSplitButton.meta.d.ts.map +1 -0
  13. package/dist/buttons/SgSplitButton.meta.js +132 -0
  14. package/dist/commons/SgAvatar.meta.d.ts +4 -0
  15. package/dist/commons/SgAvatar.meta.d.ts.map +1 -0
  16. package/dist/commons/SgAvatar.meta.js +123 -0
  17. package/dist/commons/SgAvatarGroup.meta.d.ts +4 -0
  18. package/dist/commons/SgAvatarGroup.meta.d.ts.map +1 -0
  19. package/dist/commons/SgAvatarGroup.meta.js +46 -0
  20. package/dist/commons/SgBadge.meta.d.ts +4 -0
  21. package/dist/commons/SgBadge.meta.d.ts.map +1 -0
  22. package/dist/commons/SgBadge.meta.js +132 -0
  23. package/dist/commons/SgBadgeOverlay.meta.d.ts +4 -0
  24. package/dist/commons/SgBadgeOverlay.meta.d.ts.map +1 -0
  25. package/dist/commons/SgBadgeOverlay.meta.js +46 -0
  26. package/dist/commons/SgSkeleton.meta.d.ts +4 -0
  27. package/dist/commons/SgSkeleton.meta.d.ts.map +1 -0
  28. package/dist/commons/SgSkeleton.meta.js +114 -0
  29. package/dist/commons/SgToastHost.meta.d.ts +4 -0
  30. package/dist/commons/SgToastHost.meta.d.ts.map +1 -0
  31. package/dist/commons/SgToastHost.meta.js +46 -0
  32. package/dist/commons/SgToaster.meta.d.ts +4 -0
  33. package/dist/commons/SgToaster.meta.d.ts.map +1 -0
  34. package/dist/commons/SgToaster.meta.js +48 -0
  35. package/dist/commons/SgWhistleHost.meta.d.ts +4 -0
  36. package/dist/commons/SgWhistleHost.meta.d.ts.map +1 -0
  37. package/dist/commons/SgWhistleHost.meta.js +46 -0
  38. package/dist/digits/discard-digit/SgDiscardDigit.meta.d.ts +4 -0
  39. package/dist/digits/discard-digit/SgDiscardDigit.meta.d.ts.map +1 -0
  40. package/dist/digits/discard-digit/SgDiscardDigit.meta.js +48 -0
  41. package/dist/digits/fade-digit/SgFadeDigit.meta.d.ts +4 -0
  42. package/dist/digits/fade-digit/SgFadeDigit.meta.d.ts.map +1 -0
  43. package/dist/digits/fade-digit/SgFadeDigit.meta.js +48 -0
  44. package/dist/digits/flip-digit/SgFlipDigit.meta.d.ts +4 -0
  45. package/dist/digits/flip-digit/SgFlipDigit.meta.d.ts.map +1 -0
  46. package/dist/digits/flip-digit/SgFlipDigit.meta.js +48 -0
  47. package/dist/digits/matrix-digit/SgMatrixDigit.meta.d.ts +4 -0
  48. package/dist/digits/matrix-digit/SgMatrixDigit.meta.d.ts.map +1 -0
  49. package/dist/digits/matrix-digit/SgMatrixDigit.meta.js +48 -0
  50. package/dist/digits/neon-digit/SgNeonDigit.meta.d.ts +4 -0
  51. package/dist/digits/neon-digit/SgNeonDigit.meta.d.ts.map +1 -0
  52. package/dist/digits/neon-digit/SgNeonDigit.meta.js +48 -0
  53. package/dist/digits/roller3d-digit/SgRoller3DDigit.meta.d.ts +4 -0
  54. package/dist/digits/roller3d-digit/SgRoller3DDigit.meta.d.ts.map +1 -0
  55. package/dist/digits/roller3d-digit/SgRoller3DDigit.meta.js +48 -0
  56. package/dist/digits/segment-digit/SgSegmentDigit.meta.d.ts +4 -0
  57. package/dist/digits/segment-digit/SgSegmentDigit.meta.d.ts.map +1 -0
  58. package/dist/digits/segment-digit/SgSegmentDigit.meta.js +48 -0
  59. package/dist/digits/seven-segment-digit/SgSevenSegmentDigit.meta.d.ts +4 -0
  60. package/dist/digits/seven-segment-digit/SgSevenSegmentDigit.meta.d.ts.map +1 -0
  61. package/dist/digits/seven-segment-digit/SgSevenSegmentDigit.meta.js +48 -0
  62. package/dist/environment/SgEnvironmentProvider.meta.d.ts +4 -0
  63. package/dist/environment/SgEnvironmentProvider.meta.d.ts.map +1 -0
  64. package/dist/environment/SgEnvironmentProvider.meta.js +53 -0
  65. package/dist/gadgets/calendar/SgCalendar.meta.d.ts +4 -0
  66. package/dist/gadgets/calendar/SgCalendar.meta.d.ts.map +1 -0
  67. package/dist/gadgets/calendar/SgCalendar.meta.js +51 -0
  68. package/dist/gadgets/clock/SgClock.meta.d.ts +4 -0
  69. package/dist/gadgets/clock/SgClock.meta.d.ts.map +1 -0
  70. package/dist/gadgets/clock/SgClock.meta.js +50 -0
  71. package/dist/gadgets/clock/SgTimeProvider.meta.d.ts +4 -0
  72. package/dist/gadgets/clock/SgTimeProvider.meta.d.ts.map +1 -0
  73. package/dist/gadgets/clock/SgTimeProvider.meta.js +49 -0
  74. package/dist/gadgets/clock/themes/SgClockThemePicker.meta.d.ts +4 -0
  75. package/dist/gadgets/clock/themes/SgClockThemePicker.meta.d.ts.map +1 -0
  76. package/dist/gadgets/clock/themes/SgClockThemePicker.meta.js +56 -0
  77. package/dist/gadgets/clock/themes/SgClockThemePreview.meta.d.ts +4 -0
  78. package/dist/gadgets/clock/themes/SgClockThemePreview.meta.d.ts.map +1 -0
  79. package/dist/gadgets/clock/themes/SgClockThemePreview.meta.js +50 -0
  80. package/dist/gadgets/clock/themes/SgClockThemeProvider.meta.d.ts +4 -0
  81. package/dist/gadgets/clock/themes/SgClockThemeProvider.meta.d.ts.map +1 -0
  82. package/dist/gadgets/clock/themes/SgClockThemeProvider.meta.js +51 -0
  83. package/dist/gadgets/gauge/SgLinearGauge.meta.d.ts +4 -0
  84. package/dist/gadgets/gauge/SgLinearGauge.meta.d.ts.map +1 -0
  85. package/dist/gadgets/gauge/SgLinearGauge.meta.js +57 -0
  86. package/dist/gadgets/gauge/SgRadialGauge.meta.d.ts +4 -0
  87. package/dist/gadgets/gauge/SgRadialGauge.meta.d.ts.map +1 -0
  88. package/dist/gadgets/gauge/SgRadialGauge.meta.js +57 -0
  89. package/dist/gadgets/qr-code/SgQRCode.meta.d.ts +4 -0
  90. package/dist/gadgets/qr-code/SgQRCode.meta.d.ts.map +1 -0
  91. package/dist/gadgets/qr-code/SgQRCode.meta.js +48 -0
  92. package/dist/gadgets/string-animator/SgStringAnimator.meta.d.ts +4 -0
  93. package/dist/gadgets/string-animator/SgStringAnimator.meta.d.ts.map +1 -0
  94. package/dist/gadgets/string-animator/SgStringAnimator.meta.js +48 -0
  95. package/dist/i18n/SgComponentsI18nProvider.meta.d.ts +4 -0
  96. package/dist/i18n/SgComponentsI18nProvider.meta.d.ts.map +1 -0
  97. package/dist/i18n/SgComponentsI18nProvider.meta.js +50 -0
  98. package/dist/index.d.ts +4 -6
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +2 -3
  101. package/dist/inputs/SgAutocomplete.meta.d.ts +4 -0
  102. package/dist/inputs/SgAutocomplete.meta.d.ts.map +1 -0
  103. package/dist/inputs/SgAutocomplete.meta.js +52 -0
  104. package/dist/inputs/SgCheckboxGroup.meta.d.ts +4 -0
  105. package/dist/inputs/SgCheckboxGroup.meta.d.ts.map +1 -0
  106. package/dist/inputs/SgCheckboxGroup.meta.js +51 -0
  107. package/dist/inputs/SgCombobox.meta.d.ts +4 -0
  108. package/dist/inputs/SgCombobox.meta.d.ts.map +1 -0
  109. package/dist/inputs/SgCombobox.meta.js +52 -0
  110. package/dist/inputs/SgDatatable.meta.d.ts +4 -0
  111. package/dist/inputs/SgDatatable.meta.d.ts.map +1 -0
  112. package/dist/inputs/SgDatatable.meta.js +51 -0
  113. package/dist/inputs/SgInputBirthDate.meta.d.ts +4 -0
  114. package/dist/inputs/SgInputBirthDate.meta.d.ts.map +1 -0
  115. package/dist/inputs/SgInputBirthDate.meta.js +80 -0
  116. package/dist/inputs/SgInputCNPJ.meta.d.ts +4 -0
  117. package/dist/inputs/SgInputCNPJ.meta.d.ts.map +1 -0
  118. package/dist/inputs/SgInputCNPJ.meta.js +81 -0
  119. package/dist/inputs/SgInputCPF.meta.d.ts +4 -0
  120. package/dist/inputs/SgInputCPF.meta.d.ts.map +1 -0
  121. package/dist/inputs/SgInputCPF.meta.js +80 -0
  122. package/dist/inputs/SgInputCPFCNPJ.meta.d.ts +4 -0
  123. package/dist/inputs/SgInputCPFCNPJ.meta.d.ts.map +1 -0
  124. package/dist/inputs/SgInputCPFCNPJ.meta.js +80 -0
  125. package/dist/inputs/SgInputCurrency.meta.d.ts +4 -0
  126. package/dist/inputs/SgInputCurrency.meta.d.ts.map +1 -0
  127. package/dist/inputs/SgInputCurrency.meta.js +136 -0
  128. package/dist/inputs/SgInputDate.meta.d.ts +4 -0
  129. package/dist/inputs/SgInputDate.meta.d.ts.map +1 -0
  130. package/dist/inputs/SgInputDate.meta.js +136 -0
  131. package/dist/inputs/SgInputEmail.meta.d.ts +4 -0
  132. package/dist/inputs/SgInputEmail.meta.d.ts.map +1 -0
  133. package/dist/inputs/SgInputEmail.meta.js +81 -0
  134. package/dist/inputs/SgInputNumber.meta.d.ts +4 -0
  135. package/dist/inputs/SgInputNumber.meta.d.ts.map +1 -0
  136. package/dist/inputs/SgInputNumber.meta.js +137 -0
  137. package/dist/inputs/SgInputOTP.js +1 -1
  138. package/dist/inputs/SgInputOTP.meta.d.ts +4 -0
  139. package/dist/inputs/SgInputOTP.meta.d.ts.map +1 -0
  140. package/dist/inputs/SgInputOTP.meta.js +80 -0
  141. package/dist/inputs/SgInputPassword.meta.d.ts +4 -0
  142. package/dist/inputs/SgInputPassword.meta.d.ts.map +1 -0
  143. package/dist/inputs/SgInputPassword.meta.js +81 -0
  144. package/dist/inputs/SgInputPhone.meta.d.ts +4 -0
  145. package/dist/inputs/SgInputPhone.meta.d.ts.map +1 -0
  146. package/dist/inputs/SgInputPhone.meta.js +80 -0
  147. package/dist/inputs/SgInputPostalCode.meta.d.ts +4 -0
  148. package/dist/inputs/SgInputPostalCode.meta.d.ts.map +1 -0
  149. package/dist/inputs/SgInputPostalCode.meta.js +81 -0
  150. package/dist/inputs/SgInputText.meta.d.ts +4 -0
  151. package/dist/inputs/SgInputText.meta.d.ts.map +1 -0
  152. package/dist/inputs/SgInputText.meta.js +138 -0
  153. package/dist/inputs/SgInputTextarea.meta.d.ts +4 -0
  154. package/dist/inputs/SgInputTextarea.meta.d.ts.map +1 -0
  155. package/dist/inputs/SgInputTextarea.meta.js +136 -0
  156. package/dist/inputs/SgOrderList.meta.d.ts +4 -0
  157. package/dist/inputs/SgOrderList.meta.d.ts.map +1 -0
  158. package/dist/inputs/SgOrderList.meta.js +51 -0
  159. package/dist/inputs/SgPickList.meta.d.ts +4 -0
  160. package/dist/inputs/SgPickList.meta.d.ts.map +1 -0
  161. package/dist/inputs/SgPickList.meta.js +51 -0
  162. package/dist/inputs/SgRadioGroup.meta.d.ts +4 -0
  163. package/dist/inputs/SgRadioGroup.meta.d.ts.map +1 -0
  164. package/dist/inputs/SgRadioGroup.meta.js +51 -0
  165. package/dist/inputs/SgRating.meta.d.ts +4 -0
  166. package/dist/inputs/SgRating.meta.d.ts.map +1 -0
  167. package/dist/inputs/SgRating.meta.js +51 -0
  168. package/dist/inputs/SgSlider.meta.d.ts +4 -0
  169. package/dist/inputs/SgSlider.meta.d.ts.map +1 -0
  170. package/dist/inputs/SgSlider.meta.js +51 -0
  171. package/dist/inputs/SgStepperInput.meta.d.ts +4 -0
  172. package/dist/inputs/SgStepperInput.meta.d.ts.map +1 -0
  173. package/dist/inputs/SgStepperInput.meta.js +51 -0
  174. package/dist/inputs/SgTextEditor.meta.d.ts +4 -0
  175. package/dist/inputs/SgTextEditor.meta.d.ts.map +1 -0
  176. package/dist/inputs/SgTextEditor.meta.js +51 -0
  177. package/dist/inputs/SgToggleSwitch.meta.d.ts +4 -0
  178. package/dist/inputs/SgToggleSwitch.meta.d.ts.map +1 -0
  179. package/dist/inputs/SgToggleSwitch.meta.js +51 -0
  180. package/dist/layout/SgAccordion.meta.d.ts +4 -0
  181. package/dist/layout/SgAccordion.meta.d.ts.map +1 -0
  182. package/dist/layout/SgAccordion.meta.js +131 -0
  183. package/dist/layout/SgBreadcrumb.meta.d.ts +4 -0
  184. package/dist/layout/SgBreadcrumb.meta.d.ts.map +1 -0
  185. package/dist/layout/SgBreadcrumb.meta.js +125 -0
  186. package/dist/layout/SgCard.meta.d.ts +4 -0
  187. package/dist/layout/SgCard.meta.d.ts.map +1 -0
  188. package/dist/layout/SgCard.meta.js +132 -0
  189. package/dist/layout/SgCarousel.meta.d.ts +4 -0
  190. package/dist/layout/SgCarousel.meta.d.ts.map +1 -0
  191. package/dist/layout/SgCarousel.meta.js +50 -0
  192. package/dist/layout/SgDockLayout.meta.d.ts +4 -0
  193. package/dist/layout/SgDockLayout.meta.d.ts.map +1 -0
  194. package/dist/layout/SgDockLayout.meta.js +47 -0
  195. package/dist/layout/SgDockScreen.meta.d.ts +4 -0
  196. package/dist/layout/SgDockScreen.meta.d.ts.map +1 -0
  197. package/dist/layout/SgDockScreen.meta.js +49 -0
  198. package/dist/layout/SgDockZone.meta.d.ts +4 -0
  199. package/dist/layout/SgDockZone.meta.d.ts.map +1 -0
  200. package/dist/layout/SgDockZone.meta.js +43 -0
  201. package/dist/layout/SgExpandablePanel.meta.d.ts +4 -0
  202. package/dist/layout/SgExpandablePanel.meta.d.ts.map +1 -0
  203. package/dist/layout/SgExpandablePanel.meta.js +50 -0
  204. package/dist/layout/SgGrid.meta.d.ts +4 -0
  205. package/dist/layout/SgGrid.meta.d.ts.map +1 -0
  206. package/dist/layout/SgGrid.meta.js +124 -0
  207. package/dist/layout/SgGroupBox.meta.d.ts +4 -0
  208. package/dist/layout/SgGroupBox.meta.d.ts.map +1 -0
  209. package/dist/layout/SgGroupBox.meta.js +99 -0
  210. package/dist/layout/SgMenu.meta.d.ts +4 -0
  211. package/dist/layout/SgMenu.meta.d.ts.map +1 -0
  212. package/dist/layout/SgMenu.meta.js +137 -0
  213. package/dist/layout/SgPageControl.meta.d.ts +4 -0
  214. package/dist/layout/SgPageControl.meta.d.ts.map +1 -0
  215. package/dist/layout/SgPageControl.meta.js +50 -0
  216. package/dist/layout/SgPageControlPage.meta.d.ts +4 -0
  217. package/dist/layout/SgPageControlPage.meta.d.ts.map +1 -0
  218. package/dist/layout/SgPageControlPage.meta.js +47 -0
  219. package/dist/layout/SgPanel.meta.d.ts +4 -0
  220. package/dist/layout/SgPanel.meta.d.ts.map +1 -0
  221. package/dist/layout/SgPanel.meta.js +140 -0
  222. package/dist/layout/SgScreen.meta.d.ts +4 -0
  223. package/dist/layout/SgScreen.meta.d.ts.map +1 -0
  224. package/dist/layout/SgScreen.meta.js +113 -0
  225. package/dist/layout/SgStack.meta.d.ts +4 -0
  226. package/dist/layout/SgStack.meta.d.ts.map +1 -0
  227. package/dist/layout/SgStack.meta.js +126 -0
  228. package/dist/layout/SgToolBar.meta.d.ts +4 -0
  229. package/dist/layout/SgToolBar.meta.d.ts.map +1 -0
  230. package/dist/layout/SgToolBar.meta.js +131 -0
  231. package/dist/layout/SgToolbarIconButton.meta.d.ts +4 -0
  232. package/dist/layout/SgToolbarIconButton.meta.d.ts.map +1 -0
  233. package/dist/layout/SgToolbarIconButton.meta.js +48 -0
  234. package/dist/layout/SgTreeView.meta.d.ts +4 -0
  235. package/dist/layout/SgTreeView.meta.d.ts.map +1 -0
  236. package/dist/layout/SgTreeView.meta.js +132 -0
  237. package/dist/layout/menu-logic.d.ts.map +1 -1
  238. package/dist/layout/menu-logic.js +1 -3
  239. package/dist/menus/SgDockMenu.meta.d.ts +4 -0
  240. package/dist/menus/SgDockMenu.meta.d.ts.map +1 -0
  241. package/dist/menus/SgDockMenu.meta.js +135 -0
  242. package/dist/overlay/SgConfirmationDialog.meta.d.ts +4 -0
  243. package/dist/overlay/SgConfirmationDialog.meta.d.ts.map +1 -0
  244. package/dist/overlay/SgConfirmationDialog.meta.js +128 -0
  245. package/dist/overlay/SgDialog.meta.d.ts +4 -0
  246. package/dist/overlay/SgDialog.meta.d.ts.map +1 -0
  247. package/dist/overlay/SgDialog.meta.js +130 -0
  248. package/dist/overlay/SgPopup.meta.d.ts +4 -0
  249. package/dist/overlay/SgPopup.meta.d.ts.map +1 -0
  250. package/dist/overlay/SgPopup.meta.js +129 -0
  251. package/dist/sandbox.cjs +31 -31
  252. package/dist/wizard/SgWizard.meta.d.ts +4 -0
  253. package/dist/wizard/SgWizard.meta.d.ts.map +1 -0
  254. package/dist/wizard/SgWizard.meta.js +50 -0
  255. package/dist/wizard/SgWizardPage.meta.d.ts +4 -0
  256. package/dist/wizard/SgWizardPage.meta.d.ts.map +1 -0
  257. package/dist/wizard/SgWizardPage.meta.js +44 -0
  258. package/package.json +2 -2
  259. package/dist/inputs/SgInputSelect.d.ts +0 -18
  260. package/dist/inputs/SgInputSelect.d.ts.map +0 -1
  261. package/dist/inputs/SgInputSelect.js +0 -139
@@ -0,0 +1,4 @@
1
+ import type { SgAiHintsV0, SgMetaV0 } from "../ai-meta/types";
2
+ export declare const sgMeta: SgMetaV0;
3
+ export declare const aiHints: SgAiHintsV0;
4
+ //# sourceMappingURL=SgWizard.meta.d.ts.map
@@ -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,4 @@
1
+ import type { SgAiHintsV0, SgMetaV0 } from "../ai-meta/types";
2
+ export declare const sgMeta: SgMetaV0;
3
+ export declare const aiHints: SgAiHintsV0;
4
+ //# sourceMappingURL=SgWizardPage.meta.d.ts.map
@@ -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.11",
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
- }