@seedgrid/fe-components 2026.4.12 → 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 (259) 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/menus/SgDockMenu.meta.d.ts +4 -0
  238. package/dist/menus/SgDockMenu.meta.d.ts.map +1 -0
  239. package/dist/menus/SgDockMenu.meta.js +135 -0
  240. package/dist/overlay/SgConfirmationDialog.meta.d.ts +4 -0
  241. package/dist/overlay/SgConfirmationDialog.meta.d.ts.map +1 -0
  242. package/dist/overlay/SgConfirmationDialog.meta.js +128 -0
  243. package/dist/overlay/SgDialog.meta.d.ts +4 -0
  244. package/dist/overlay/SgDialog.meta.d.ts.map +1 -0
  245. package/dist/overlay/SgDialog.meta.js +130 -0
  246. package/dist/overlay/SgPopup.meta.d.ts +4 -0
  247. package/dist/overlay/SgPopup.meta.d.ts.map +1 -0
  248. package/dist/overlay/SgPopup.meta.js +129 -0
  249. package/dist/sandbox.cjs +31 -31
  250. package/dist/wizard/SgWizard.meta.d.ts +4 -0
  251. package/dist/wizard/SgWizard.meta.d.ts.map +1 -0
  252. package/dist/wizard/SgWizard.meta.js +50 -0
  253. package/dist/wizard/SgWizardPage.meta.d.ts +4 -0
  254. package/dist/wizard/SgWizardPage.meta.d.ts.map +1 -0
  255. package/dist/wizard/SgWizardPage.meta.js +44 -0
  256. package/package.json +2 -2
  257. package/dist/inputs/SgInputSelect.d.ts +0 -18
  258. package/dist/inputs/SgInputSelect.d.ts.map +0 -1
  259. 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.12",
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
- }