forlogic-core 1.20.1 → 2.0.1

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 (309) hide show
  1. package/.note/memory/patterns/single-scroll-pattern.md +30 -12
  2. package/README.md +0 -46
  3. package/dist/action-plans/components/ActionPlanAttachmentsTab.d.ts +18 -0
  4. package/dist/action-plans/components/ActionPlanCommentsTab.d.ts +18 -0
  5. package/dist/action-plans/components/ActionPlanCostTab.d.ts +10 -0
  6. package/dist/action-plans/components/ActionPlanGeneralTab.d.ts +18 -0
  7. package/dist/action-plans/components/ActionPlanHistoryTab.d.ts +13 -0
  8. package/dist/action-plans/components/ActionPlanPage.d.ts +25 -0
  9. package/dist/action-plans/components/ActionPlanPredecessorsTab.d.ts +10 -0
  10. package/dist/action-plans/components/ActionPlanProgressDialog.d.ts +13 -0
  11. package/dist/action-plans/components/ActionPlanProgressTab.d.ts +5 -0
  12. package/dist/action-plans/components/ActionPlanStatusBadge.d.ts +11 -0
  13. package/dist/action-plans/constants.d.ts +42 -0
  14. package/dist/action-plans/hooks/useActionPlan.d.ts +14 -0
  15. package/dist/action-plans/hooks/useActionPlanProgress.d.ts +15 -0
  16. package/dist/action-plans/index.d.ts +15 -0
  17. package/dist/action-plans/types.d.ts +353 -0
  18. package/dist/action-plans/utils/formatTime.d.ts +15 -0
  19. package/dist/approval-flow/components/ApprovalSidenav.d.ts +16 -0
  20. package/dist/approval-flow/components/ApproveDialog.d.ts +13 -0
  21. package/dist/approval-flow/components/SelectApproverDialog.d.ts +11 -0
  22. package/dist/approval-flow/index.d.ts +4 -0
  23. package/dist/approval-flow/types.d.ts +76 -0
  24. package/dist/assets/AccordionDoc-CGNlubG3.js +31 -0
  25. package/dist/assets/{ActionButtonDoc-DLJ_K9ib.js → ActionButtonDoc-CYtkXR0k.js} +2 -2
  26. package/dist/assets/ActionPlanDoc-BSuPRftQ.js +65 -0
  27. package/dist/assets/{AlertDoc-CY1ybZeG.js → AlertDoc-Cpvxneqg.js} +7 -7
  28. package/dist/assets/AliasUrlDoc-DIpUWf4Y.js +189 -0
  29. package/dist/assets/AppHeaderDoc-DNQErj_t.js +74 -0
  30. package/dist/assets/AppSidebarDoc-DkeQarDu.js +221 -0
  31. package/dist/assets/ApprovalFlowDoc-8YgXbhKJ.js +31 -0
  32. package/dist/assets/AuditLogDoc-BBvNcHIo.js +67 -0
  33. package/dist/assets/AuditTrailDoc-DgFHO-uo.js +17 -0
  34. package/dist/assets/AuthDoc-WIA_Aetl.js +200 -0
  35. package/dist/assets/{AvatarDoc-BLdMoyJd.js → AvatarDoc-B6go1C1T.js} +2 -2
  36. package/dist/assets/{BadgeDoc-CSNM1b6b.js → BadgeDoc-BONhfqB_.js} +2 -2
  37. package/dist/assets/BaseFormDoc-CuyUArcj.js +169 -0
  38. package/dist/assets/{BodyContentDoc-Bp6YmUWX.js → BodyContentDoc-CterHC1E.js} +2 -2
  39. package/dist/assets/{BreadcrumbDoc-D7tqqTvo.js → BreadcrumbDoc-Dwn9nLeO.js} +2 -2
  40. package/dist/assets/{ButtonDoc-C4JwIvU3.js → ButtonDoc-BOjRseZT.js} +2 -2
  41. package/dist/assets/ButtonGroupDoc-8IS6PPh4.js +7 -0
  42. package/dist/assets/{CalendarDoc-COlEKqmv.js → CalendarDoc-CMwIEqgT.js} +3 -3
  43. package/dist/assets/{CardDoc-BVhMoC2w.js → CardDoc-BZz1CVg2.js} +2 -2
  44. package/dist/assets/ChartDoc-B5vZVtqD.js +76 -0
  45. package/dist/assets/{CheckboxDoc-Bcqpln9_.js → CheckboxDoc-lAbYO9I5.js} +2 -2
  46. package/dist/assets/ColorPickerDoc-Dpsprp4N.js +10 -0
  47. package/dist/assets/{ColorsFoundationDoc-uO6IiJbS.js → ColorsFoundationDoc-CCHeSL3p.js} +1 -1
  48. package/dist/assets/ComboTreeDoc-D4dTkIt-.js +46 -0
  49. package/dist/assets/ComboboxDoc-CqqZPvZq.js +134 -0
  50. package/dist/assets/ComponentDocTemplate-CQbBhfvZ.js +1 -0
  51. package/dist/assets/{ContextMenuDoc-C4-_0NLp.js → ContextMenuDoc-D3jC-MVA.js} +2 -2
  52. package/dist/assets/{ContextsDoc-Cj9Aaoyo.js → ContextsDoc-XFH0-JdS.js} +30 -3
  53. package/dist/assets/{CreateCrudPageDoc-D_SnMRJ2.js → CreateCrudPageDoc-CpuiWI-g.js} +2 -2
  54. package/dist/assets/{CrudActionBarDoc-BYqtIabp.js → CrudActionBarDoc-wuBGXD9Y.js} +4 -4
  55. package/dist/assets/CrudGridDoc-BYWqSXBH.js +85 -0
  56. package/dist/assets/CrudOverviewDoc-B_bk2a2t.js +14 -0
  57. package/dist/assets/{CrudPrimitivesDoc-BRS86nWg.js → CrudPrimitivesDoc-CxaTB94A.js} +4 -4
  58. package/dist/assets/{CrudTableDoc-Daw8u2G_.js → CrudTableDoc-Dga1VgCu.js} +5 -5
  59. package/dist/assets/CustomFormFieldsDoc-C1hwwSl3.js +33 -0
  60. package/dist/assets/DashboardFormDoc-BUDCmrMl.js +49 -0
  61. package/dist/assets/DashboardGeneralViewDoc-Cyg1SIiG.js +71 -0
  62. package/dist/assets/DashboardGridDoc-BavePiRF.js +49 -0
  63. package/dist/assets/DashboardListDoc-CLyMA6UK.js +37 -0
  64. package/dist/assets/DashboardOverviewDoc-DRVvNIF1.js +35 -0
  65. package/dist/assets/DashboardPanelRendererDoc--mfwb8Nc.js +60 -0
  66. package/dist/assets/DashboardPanelsBasicDoc-BQ2V_52D.js +62 -0
  67. package/dist/assets/DashboardPanelsCartesianDoc-sy-hcVQY.js +75 -0
  68. package/dist/assets/DashboardPanelsSpecialDoc-DsIUCRRP.js +83 -0
  69. package/dist/assets/DashboardViewDoc-CtlCNlEF.js +45 -0
  70. package/dist/assets/DataListDoc-DUy88lCQ.js +13 -0
  71. package/dist/assets/DesignSystemHome-DHl9YtbH.js +1 -0
  72. package/dist/assets/{DialogDoc-DCpRy4rg.js → DialogDoc-CMQqnTV-.js} +2 -2
  73. package/dist/assets/{DropdownMenuDoc-DT6LBa8Z.js → DropdownMenuDoc-S7X9csGt.js} +5 -5
  74. package/dist/assets/ElectronicSignatureDialogDoc-BfithaL_.js +57 -0
  75. package/dist/assets/{EmptyStateDoc-wydc09gG.js → EmptyStateDoc-CHGCiGIk.js} +2 -2
  76. package/dist/assets/{EnvironmentsDoc-amIriwDD.js → EnvironmentsDoc-DZHJZ2nm.js} +4 -4
  77. package/dist/assets/{ErrorBoundaryDoc-BEixy_Gl.js → ErrorBoundaryDoc-DoaAg68p.js} +2 -2
  78. package/dist/assets/ExampleActionPlanPage-C0fIMZCD.js +1 -0
  79. package/dist/assets/ExampleAppDoc-DzIU81Fn.js +1 -0
  80. package/dist/assets/ExampleCard-DuLrb3t-.js +1 -0
  81. package/dist/assets/ExampleCrudReportsPage-M0pz6tdM.js +1 -0
  82. package/dist/assets/ExampleDashboardPage-CRG5r3Vw.js +1 -0
  83. package/dist/assets/ExampleIdeasPage-I84ZMLY4.js +1 -0
  84. package/dist/assets/ExampleImportWizardPage-h4YqrrSe.js +1 -0
  85. package/dist/assets/ExampleSettingsPage-CwdWqoaP.js +1 -0
  86. package/dist/assets/FileUploadDoc-9-UujFNX.js +34 -0
  87. package/dist/assets/FilterBar-DDTqqUfZ.js +1 -0
  88. package/dist/assets/{FormDoc-DxoRt6p7.js → FormDoc-CVES6n3d.js} +2 -2
  89. package/dist/assets/{FoundationOverview-CxSbumIt.js → FoundationOverview-DT0u11Gz.js} +1 -1
  90. package/dist/assets/{GridDoc-BpQqCMUE.js → GridDoc-CbHFSILF.js} +2 -2
  91. package/dist/assets/{HooksDoc-JNODhbaF.js → HooksDoc-Ctxdk6Wq.js} +5 -5
  92. package/dist/assets/{HoverCardDoc-CdqiYrIb.js → HoverCardDoc-8Wkaafdj.js} +2 -2
  93. package/dist/assets/I18nDoc-D3Q2m7ik.js +167 -0
  94. package/dist/assets/IconPickerDoc-DZ26Gdpg.js +10 -0
  95. package/dist/assets/{IconsFoundationDoc-CrymfxTI.js → IconsFoundationDoc-xOxtC7CW.js} +5 -5
  96. package/dist/assets/{InputDoc-BK-SdpJ7.js → InputDoc-BhztAiuJ.js} +4 -4
  97. package/dist/assets/{LabelDoc-DHvgzhaJ.js → LabelDoc-A4hmTRRV.js} +2 -2
  98. package/dist/assets/LeadershipDoc-CqOSfWsP.js +452 -0
  99. package/dist/assets/{MediaDoc-B_vqnf72.js → MediaDoc-C78gvC8p.js} +2 -2
  100. package/dist/assets/MenubarDoc-DCnmd2tO.js +165 -0
  101. package/dist/assets/{ModuleAccessDoc-Nuxb4S27.js → ModuleAccessDoc-CmD5nHDp.js} +2 -2
  102. package/dist/assets/{ModulesDialogDoc-iJWLkOZo.js → ModulesDialogDoc-DVit1CA-.js} +2 -2
  103. package/dist/assets/MultiselectPermissionsDoc-tlJMs04L.js +34 -0
  104. package/dist/assets/NavigationMenuDoc-q1fbc89j.js +116 -0
  105. package/dist/assets/{OnboardingDialogDoc-xBL-rXeZ.js → OnboardingDialogDoc-3A3eBYrq.js} +2 -2
  106. package/dist/assets/{PaginationDoc-DqtRgXnF.js → PaginationDoc-B8-bMz5J.js} +2 -2
  107. package/dist/assets/{PaginationDoc-CfvwxCMe.js → PaginationDoc-BkGdxHL3.js} +5 -5
  108. package/dist/assets/{PlacesDoc-nckioEzg.js → PlacesDoc-CKPO6ATs.js} +2 -2
  109. package/dist/assets/{PopoverDoc-C3o2CZCT.js → PopoverDoc-CJPU4Ags.js} +3 -3
  110. package/dist/assets/{ProgressDoc-BmWBNMPA.js → ProgressDoc-CpjbTL4o.js} +2 -2
  111. package/dist/assets/{QualiexUserFieldDoc-CE1e4mx6.js → QualiexUserFieldDoc-DDwumlRw.js} +2 -2
  112. package/dist/assets/{RadioGroupDoc-DMZH6NmR.js → RadioGroupDoc-D6tSZz8G.js} +2 -2
  113. package/dist/assets/{RadiusDoc-BOZD3gPV.js → RadiusDoc-B4xSnajw.js} +1 -1
  114. package/dist/assets/ReportRequestListDoc-C0LIaU8P.js +15 -0
  115. package/dist/assets/{RequiredFieldsCounterDoc-CG-lmSSy.js → RequiredFieldsCounterDoc-COesoSdx.js} +2 -2
  116. package/dist/assets/ResizableDoc-CW0-XQuB.js +104 -0
  117. package/dist/assets/{RichTextEditorDoc-m50ll-Od.js → RichTextEditorDoc-C8c_XA9P.js} +2 -2
  118. package/dist/assets/{ScrollAreaDoc-BzJ-APXo.js → ScrollAreaDoc-BxtoAPaZ.js} +2 -2
  119. package/dist/assets/{SecurityDoc-B34gVeiV.js → SecurityDoc-wOVqpg2F.js} +2 -2
  120. package/dist/assets/{SelectDoc-DXRv7QHK.js → SelectDoc-C75gtY9D.js} +2 -2
  121. package/dist/assets/{SeparatorDoc-DcNh8k0P.js → SeparatorDoc-BjQBPB1P.js} +2 -2
  122. package/dist/assets/{ServicesDoc-8aXBd6yg.js → ServicesDoc-CXTctwBl.js} +3 -3
  123. package/dist/assets/ShadowsDoc-C6Lw8_x2.js +9 -0
  124. package/dist/assets/SignDoc-Bh5ZUg5x.js +66 -0
  125. package/dist/assets/{SkeletonDoc-BWgqgbDY.js → SkeletonDoc-rTLGK5VE.js} +8 -8
  126. package/dist/assets/SliderDoc-JMAMDub7.js +41 -0
  127. package/dist/assets/{SpacingDoc-BzburM-r.js → SpacingDoc-RljOrpwA.js} +1 -1
  128. package/dist/assets/{SplitButtonDoc-BYUysmJp.js → SplitButtonDoc-CvShUW3w.js} +3 -3
  129. package/dist/assets/{StepSelectorDoc-PB1k4v7F.js → StepSelectorDoc-C-nAap9H.js} +2 -2
  130. package/dist/assets/{SwitchDoc-BLOG6kfj.js → SwitchDoc-DLnqmkPr.js} +2 -2
  131. package/dist/assets/{TableDoc-Dwcs-lop.js → TableDoc-B8EpWLVg.js} +2 -2
  132. package/dist/assets/{TabsDoc-Ovkh8ArV.js → TabsDoc-DIBtl_uC.js} +2 -2
  133. package/dist/assets/TeamSelectorDoc-B7OnCbL7.js +10 -0
  134. package/dist/assets/TermsOfUseDoc-Bb-pw08s.js +16 -0
  135. package/dist/assets/{TextareaDoc-DsBYxmbr.js → TextareaDoc-DGnqMqEC.js} +4 -4
  136. package/dist/assets/{ToastDoc-BbZaFE_A.js → ToastDoc-DjYyc7ae.js} +4 -4
  137. package/dist/assets/{ToggleDoc-C28vbvhp.js → ToggleDoc-C9ZOVjkY.js} +2 -2
  138. package/dist/assets/{TooltipDoc-DL5cnLak.js → TooltipDoc-BEx4l9-i.js} +7 -7
  139. package/dist/assets/{TruncatedCellDoc-BuDA8QcY.js → TruncatedCellDoc-BbV1bRSY.js} +2 -2
  140. package/dist/assets/TypographyFoundationDoc-CUDYjRo9.js +7 -0
  141. package/dist/assets/UpdatesNotificationDoc-7nyjzLMJ.js +29 -0
  142. package/dist/assets/UsersGroupsSelectorDoc-C0KlTAL5.js +18 -0
  143. package/dist/assets/{UtilitiesDoc-CrQhyEfz.js → UtilitiesDoc-DGxaHVV1.js} +2 -2
  144. package/dist/assets/ViewerDialogsDoc-CnTPTEz0.js +1 -0
  145. package/dist/assets/{blocks-DO93nPjs.js → blocks-B6LrJeAM.js} +1 -1
  146. package/dist/assets/building-DeVappnD.js +1 -0
  147. package/dist/assets/{calendar-days-cMfwBSZx.js → calendar-days-BQ0na5kM.js} +1 -1
  148. package/dist/assets/check-check-C_-PJCJa.js +1 -0
  149. package/dist/assets/circle-plus-CpIcep-O.js +1 -0
  150. package/dist/assets/{circle-x-BVAVJ_oz.js → circle-x-jPpBPew0.js} +1 -1
  151. package/dist/assets/clipboard-list-CXNPdciZ.js +1 -0
  152. package/dist/assets/cloud-upload-BEjzumjl.js +1 -0
  153. package/dist/assets/{crown-B2MTZDnM.js → crown-CqNsQIsm.js} +1 -1
  154. package/dist/assets/date-picker-BW3eGOe_.js +1 -0
  155. package/dist/assets/disabled-menu-item-C2YaMvSt.js +1 -0
  156. package/dist/assets/{drawer-oTqCOtsC.js → drawer-D5rflIcD.js} +2 -2
  157. package/dist/assets/file-braces-DFb5X9so.js +1 -0
  158. package/dist/assets/{file-pen-line-CXv-Eye-.js → file-pen-line-CyUGKkEN.js} +1 -1
  159. package/dist/assets/{git-branch-V6-h6P9K.js → git-branch-BcXv9mpp.js} +1 -1
  160. package/dist/assets/{globe-CaUBIJU8.js → globe-CpMIWAcv.js} +1 -1
  161. package/dist/assets/{hash-B4MTXppl.js → hash-cQWdKjya.js} +1 -1
  162. package/dist/assets/hourglass-BahQ3eDv.js +1 -0
  163. package/dist/assets/hover-card-R66N85sZ.js +1 -0
  164. package/dist/assets/iframe-dialog-V0mW5aBb.js +1 -0
  165. package/dist/assets/index-DkiftrvI.js +352 -0
  166. package/dist/assets/index-nmBjO9Th.css +1 -0
  167. package/dist/assets/index.d.ts +1 -0
  168. package/dist/assets/{life-buoy-BRndExxh.js → life-buoy-ByXiPddz.js} +1 -1
  169. package/dist/assets/loading-state-Cb5_t5uE.js +1 -0
  170. package/dist/assets/lucide-react-Cp3Yw3Zm.js +1 -0
  171. package/dist/assets/{package-3G45ARQh.js → package-B3-pVvPM.js} +1 -1
  172. package/dist/assets/{pen-BYSSwjK4.js → pen-Bi_lmmKT.js} +1 -1
  173. package/dist/assets/pin-DVsSl8QA.js +1 -0
  174. package/dist/assets/printer-BnJ8B6m-.js +1 -0
  175. package/dist/assets/radio-group-BHAaNGsm.js +1 -0
  176. package/dist/assets/{server-p0Sb0mKI.js → server-CtzFTfKR.js} +1 -1
  177. package/dist/assets/{share-2-D-ZhCCq2.js → share-2-Dv8Do445.js} +1 -1
  178. package/dist/assets/shield-check-CFXjOV_w.js +1 -0
  179. package/dist/assets/{shield-x-Q7hAXWsG.js → shield-x-DJTRfVux.js} +1 -1
  180. package/dist/assets/slider-v9tXBSnB.js +1 -0
  181. package/dist/assets/smartphone-BSNR60L7.js +1 -0
  182. package/dist/assets/step-selector-ATTh_9Wa.js +1 -0
  183. package/dist/assets/{text-align-start-6aYQqbX4.js → text-align-start-qE-MbYYw.js} +1 -1
  184. package/dist/assets/thumbs-up-D_XIW_uX.js +1 -0
  185. package/dist/assets/{trash-DveAOiLF.js → trash-DTWQwpwA.js} +1 -1
  186. package/dist/assets/trending-up-jip5-leJ.js +1 -0
  187. package/dist/assets/{useMockCrud-GY0KxHXr.js → useMockCrud-CN4vjyOZ.js} +1 -1
  188. package/dist/assets/{user-check-CoGNBfIk.js → user-check-BlH3EDWK.js} +1 -1
  189. package/dist/assets/{user-plus-Bad2xWIT.js → user-plus-BqwXwD-c.js} +1 -1
  190. package/dist/audit-trail/components/AuditTrailDetails.d.ts +17 -0
  191. package/dist/audit-trail/components/AuditTrailFilter.d.ts +19 -0
  192. package/dist/audit-trail/components/AuditTrailPage.d.ts +30 -0
  193. package/dist/audit-trail/index.d.ts +9 -0
  194. package/dist/audit-trail/types.d.ts +151 -0
  195. package/dist/audit-trail/utils.d.ts +38 -0
  196. package/dist/components/dashboards/dashboard-form.d.ts +50 -0
  197. package/dist/components/dashboards/dashboard-general-view.d.ts +109 -0
  198. package/dist/components/dashboards/dashboard-grid.d.ts +41 -0
  199. package/dist/components/dashboards/dashboard-list.d.ts +31 -0
  200. package/dist/components/dashboards/dashboard-panel-renderer.d.ts +21 -0
  201. package/dist/components/dashboards/dashboard-view.d.ts +38 -0
  202. package/dist/components/dashboards/helpers.d.ts +47 -0
  203. package/dist/components/dashboards/index.d.ts +9 -0
  204. package/dist/components/dashboards/panels/burndown-panel.d.ts +26 -0
  205. package/dist/components/dashboards/panels/cartesian-panel.d.ts +46 -0
  206. package/dist/components/dashboards/panels/index.d.ts +14 -0
  207. package/dist/components/dashboards/panels/list-panel.d.ts +30 -0
  208. package/dist/components/dashboards/panels/matrix-risk-panel.d.ts +49 -0
  209. package/dist/components/dashboards/panels/numeric-panel.d.ts +22 -0
  210. package/dist/components/dashboards/panels/panel-error.d.ts +8 -0
  211. package/dist/components/dashboards/panels/panel-header.d.ts +17 -0
  212. package/dist/components/dashboards/panels/panel-loader.d.ts +7 -0
  213. package/dist/components/dashboards/panels/panel-no-data.d.ts +6 -0
  214. package/dist/components/dashboards/panels/panel-unavailable.d.ts +6 -0
  215. package/dist/components/dashboards/panels/pareto-panel.d.ts +20 -0
  216. package/dist/components/dashboards/panels/performance-panel.d.ts +24 -0
  217. package/dist/components/dashboards/panels/pie-panel.d.ts +19 -0
  218. package/dist/components/dashboards/panels/text-panel.d.ts +18 -0
  219. package/dist/components/dashboards/types.d.ts +525 -0
  220. package/dist/components/ui/button.d.ts +1 -1
  221. package/dist/components/ui/electronic-signature-dialog.d.ts +21 -0
  222. package/dist/components/ui/export-dialog.d.ts +28 -0
  223. package/dist/components/ui/iframe-dialog.d.ts +14 -0
  224. package/dist/components/ui/multiselect-permissions.d.ts +59 -0
  225. package/dist/components/ui/online-editor-dialog.d.ts +18 -0
  226. package/dist/components/ui/report-request-list.d.ts +44 -0
  227. package/dist/components/ui/resizable.d.ts +1 -1
  228. package/dist/components/ui/stimulsoft-viewer.d.ts +20 -0
  229. package/dist/components/ui/terms-of-use-dialog.d.ts +56 -0
  230. package/dist/components/ui/timepicker.d.ts +11 -0
  231. package/dist/components/ui/users-groups-selector.d.ts +44 -0
  232. package/dist/components/ui/viewer-dialog.d.ts +77 -0
  233. package/dist/custom-form-fields/components/CustomFormFields.d.ts +8 -0
  234. package/dist/custom-form-fields/fields/FormDateField.d.ts +6 -0
  235. package/dist/custom-form-fields/fields/FormMultiSelectionField.d.ts +6 -0
  236. package/dist/custom-form-fields/fields/FormNumericField.d.ts +6 -0
  237. package/dist/custom-form-fields/fields/FormQuestionsField.d.ts +6 -0
  238. package/dist/custom-form-fields/fields/FormSingleSelectionField.d.ts +6 -0
  239. package/dist/custom-form-fields/fields/FormTextField.d.ts +6 -0
  240. package/dist/custom-form-fields/fields/FormTimeField.d.ts +6 -0
  241. package/dist/custom-form-fields/fields/FormUrlField.d.ts +6 -0
  242. package/dist/custom-form-fields/fields/ReadOnlyTextField.d.ts +6 -0
  243. package/dist/custom-form-fields/index.d.ts +13 -0
  244. package/dist/custom-form-fields/types.d.ts +143 -0
  245. package/dist/exports/action-plans.d.ts +16 -0
  246. package/dist/exports/audit-trail.d.ts +1 -0
  247. package/dist/exports/custom-form-fields.d.ts +1 -0
  248. package/dist/exports/file-upload.d.ts +1 -0
  249. package/dist/exports/ui.d.ts +12 -0
  250. package/dist/file-upload/components/SingleFileUpload.d.ts +43 -0
  251. package/dist/file-upload/index.d.ts +6 -0
  252. package/dist/file-upload/types.d.ts +11 -0
  253. package/dist/file-upload/utils/formatBytes.d.ts +1 -0
  254. package/dist/file-upload/utils/getFileExtension.d.ts +1 -0
  255. package/dist/hooks/useSidebarResize.d.ts +1 -1
  256. package/dist/index.css +1 -1
  257. package/dist/index.css.map +1 -1
  258. package/dist/index.d.ts +7 -0
  259. package/dist/index.esm.js +1 -1
  260. package/dist/index.html +9 -11
  261. package/dist/index.js +1 -1
  262. package/dist/setup/favicon.d.ts +1 -0
  263. package/dist/team-selector/components/TeamSelector.d.ts +24 -0
  264. package/dist/team-selector/index.d.ts +2 -0
  265. package/dist/team-selector/types.d.ts +10 -0
  266. package/docs/ICON_MIGRATION_GUIDE.md +177 -0
  267. package/docs/PUBLISH.md +3 -3
  268. package/package.json +1 -5
  269. package/dist/README.md +0 -1079
  270. package/dist/assets/AccordionDoc-BVPUJk8G.js +0 -31
  271. package/dist/assets/AppHeaderDoc-Crkw4dA9.js +0 -67
  272. package/dist/assets/AppSidebarDoc-ET-4j6wV.js +0 -204
  273. package/dist/assets/AuthDoc-B4v4Nci5.js +0 -192
  274. package/dist/assets/BaseFormDoc-DXiYuN6-.js +0 -169
  275. package/dist/assets/ButtonGroupDoc-QFfjC7Pm.js +0 -7
  276. package/dist/assets/ChartDoc-BJ14EjI2.js +0 -111
  277. package/dist/assets/ColorPickerDoc-CcfmSwyC.js +0 -10
  278. package/dist/assets/ComboTreeDoc-R4qE6XwB.js +0 -46
  279. package/dist/assets/ComboboxDoc-JIo_-gSN.js +0 -134
  280. package/dist/assets/ComponentDocTemplate-CRbRY-v5.js +0 -1
  281. package/dist/assets/CrudGridDoc-DspxQrq5.js +0 -85
  282. package/dist/assets/CrudOverviewDoc-DLcOL_HZ.js +0 -14
  283. package/dist/assets/DataListDoc-BrgVNhhR.js +0 -13
  284. package/dist/assets/DesignSystemHome-BFBNqq1J.js +0 -1
  285. package/dist/assets/I18nDoc-B6LMXnE3.js +0 -232
  286. package/dist/assets/IconPickerDoc-BRdy58IC.js +0 -10
  287. package/dist/assets/LeadershipDoc-DRiB0spL.js +0 -416
  288. package/dist/assets/MenubarDoc-Zvgczxe2.js +0 -165
  289. package/dist/assets/NavigationMenuDoc-CeWun1VF.js +0 -116
  290. package/dist/assets/ResizableDoc-CqGkv6Cd.js +0 -104
  291. package/dist/assets/ShadowsDoc-Brl4hIDI.js +0 -9
  292. package/dist/assets/SignDoc-BdwerR-2.js +0 -66
  293. package/dist/assets/SliderDoc-E-NjbYVk.js +0 -41
  294. package/dist/assets/TypographyFoundationDoc-CPdH4PHa.js +0 -7
  295. package/dist/assets/circle-plus-D3NftMzS.js +0 -1
  296. package/dist/assets/date-picker-zhJU-_kM.js +0 -1
  297. package/dist/assets/disabled-menu-item-C16xsaVs.js +0 -1
  298. package/dist/assets/hover-card-DEuucfxP.js +0 -1
  299. package/dist/assets/index-CE0k7Rdh.js +0 -312
  300. package/dist/assets/index-Cx3adT_u.css +0 -1
  301. package/dist/assets/lucide-react-t7dCa4lv.js +0 -1
  302. package/dist/assets/monitor-Dg3HKTSE.js +0 -1
  303. package/dist/assets/pin-CMYagNhs.js +0 -1
  304. package/dist/assets/radio-group-BVun_Tmt.js +0 -1
  305. package/dist/assets/step-selector-DHxgT2FL.js +0 -1
  306. package/dist/bin/bootstrap.js +0 -40
  307. package/dist/bin/pull-docs.js +0 -186
  308. package/dist/docs/KNOWLEDGE.md +0 -109
  309. package/dist/leadership/components/LeaderRow.d.ts +0 -9
@@ -1,4 +1,4 @@
1
- import{r as k,j as o,F as e,G as S,J as n,K as l,x as c,M as h,T as f,P as r,u as d}from"./index-CE0k7Rdh.js";import{C as g}from"./ComponentDocTemplate-CRbRY-v5.js";import{S as p,C as A}from"./share-2-D-ZhCCq2.js";const y=`import { SplitButton } from 'forlogic-core';
1
+ import{r as k,j as o,a_ as e,F as S,a$ as n,ad as l,aJ as c,b0 as h,y as f,P as r,Y as d}from"./index-DkiftrvI.js";import{C as g}from"./ComponentDocTemplate-CQbBhfvZ.js";import{S as p,C as y}from"./share-2-Dv8Do445.js";import"./ExampleCard-DuLrb3t-.js";const A=`import { SplitButton } from 'forlogic-core';
2
2
  import { Plus } from 'lucide-react';
3
3
 
4
4
  <SplitButton
@@ -42,7 +42,7 @@ import { Plus } from 'lucide-react';
42
42
  { id: 'copy', label: 'Copiar', icon: Copy, onClick: handleCopy },
43
43
  { id: 'delete', label: 'Excluir', icon: Trash2, onClick: handleDelete, variant: 'destructive' },
44
44
  ]}
45
- />`;function z(){const[t,s]=k.useState(!1),a=x=>{d.success(`Ação executada: ${x}`)},u=()=>{s(!0),setTimeout(()=>{s(!1),d.success("Salvo com sucesso!")},2e3)},m=[{id:"add-column",label:"Adicionar Coluna",icon:A,onClick:()=>a("Adicionar Coluna")},{id:"add-group",label:"Adicionar Grupo",icon:r,onClick:()=>a("Adicionar Grupo")}],i=[{id:"save-draft",label:"Salvar como Rascunho",icon:S,onClick:()=>a("Salvar Rascunho")},{id:"save-template",label:"Salvar como Modelo",icon:n,onClick:()=>a("Salvar Modelo")}],C=[{id:"export-pdf",label:"Exportar PDF",onClick:()=>a("Exportar PDF")},{id:"export-excel",label:"Exportar Excel",onClick:()=>a("Exportar Excel")},{id:"export-csv",label:"Exportar CSV",onClick:()=>a("Exportar CSV")}],b=[{id:"email",label:"Enviar por E-mail",icon:h,onClick:()=>a("E-mail")},{id:"link",label:"Copiar Link",icon:n,onClick:()=>a("Link")},{id:"share",label:"Compartilhar",icon:p,onClick:()=>a("Compartilhar")}],v=[{id:"copy",label:"Duplicar",icon:n,onClick:()=>a("Duplicar")},{id:"delete",label:"Excluir",icon:f,onClick:()=>a("Excluir"),variant:"destructive"}];return o.jsx(g,{title:"Split Button",description:"Combina uma ação principal com ações secundárias em um menu dropdown. Ideal para destacar a ação prioritária enquanto mantém alternativas acessíveis.",component:o.jsx("div",{className:"flex items-center gap-4",children:o.jsx(e,{label:"Adicionar Coluna",onClick:()=>a("Adicionar Coluna"),icon:r,actions:m})}),usage:y,notes:["Ação principal destacada com clique direto","Menu dropdown para ações secundárias","Estados hover e active independentes para cada área","Suporte a ícones, loading e disabled","Fallback para botão simples quando sem ações secundárias","4 variantes visuais e 3 tamanhos"],examples:[{title:"Variantes",description:"O Split Button suporta as mesmas variantes do Button padrão.",preview:o.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[o.jsx(e,{label:"Primary",onClick:()=>a("Primary"),actions:i}),o.jsx(e,{label:"Secondary",variant:"secondary",onClick:()=>a("Secondary"),actions:i}),o.jsx(e,{label:"Outline",variant:"outline",onClick:()=>a("Outline"),actions:i}),o.jsx(e,{label:"Ghost",variant:"ghost",onClick:()=>a("Ghost"),actions:i})]}),code:E},{title:"Tamanhos",description:"Três tamanhos disponíveis: sm, default e lg.",preview:o.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[o.jsx(e,{label:"Small",size:"sm",onClick:()=>a("Small"),actions:i}),o.jsx(e,{label:"Default",size:"default",onClick:()=>a("Default"),actions:i}),o.jsx(e,{label:"Large",size:"lg",onClick:()=>a("Large"),actions:i})]}),code:j},{title:"Com Ícones",description:"Adicione ícones ao botão principal e às ações do menu.",preview:o.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[o.jsx(e,{label:"Salvar",onClick:()=>a("Salvar"),icon:l,actions:i}),o.jsx(e,{label:"Exportar",onClick:()=>a("Exportar"),icon:c,variant:"secondary",actions:C}),o.jsx(e,{label:"Compartilhar",onClick:()=>a("Compartilhar"),icon:p,variant:"outline",actions:b})]}),code:`<SplitButton
45
+ />`;function N(){const[t,s]=k.useState(!1),a=x=>{d.success(`Ação executada: ${x}`)},u=()=>{s(!0),setTimeout(()=>{s(!1),d.success("Salvo com sucesso!")},2e3)},m=[{id:"add-column",label:"Adicionar Coluna",icon:y,onClick:()=>a("Adicionar Coluna")},{id:"add-group",label:"Adicionar Grupo",icon:r,onClick:()=>a("Adicionar Grupo")}],i=[{id:"save-draft",label:"Salvar como Rascunho",icon:S,onClick:()=>a("Salvar Rascunho")},{id:"save-template",label:"Salvar como Modelo",icon:n,onClick:()=>a("Salvar Modelo")}],C=[{id:"export-pdf",label:"Exportar PDF",onClick:()=>a("Exportar PDF")},{id:"export-excel",label:"Exportar Excel",onClick:()=>a("Exportar Excel")},{id:"export-csv",label:"Exportar CSV",onClick:()=>a("Exportar CSV")}],b=[{id:"email",label:"Enviar por E-mail",icon:h,onClick:()=>a("E-mail")},{id:"link",label:"Copiar Link",icon:n,onClick:()=>a("Link")},{id:"share",label:"Compartilhar",icon:p,onClick:()=>a("Compartilhar")}],v=[{id:"copy",label:"Duplicar",icon:n,onClick:()=>a("Duplicar")},{id:"delete",label:"Excluir",icon:f,onClick:()=>a("Excluir"),variant:"destructive"}];return o.jsx(g,{title:"Split Button",description:"Combina uma ação principal com ações secundárias em um menu dropdown. Ideal para destacar a ação prioritária enquanto mantém alternativas acessíveis.",component:o.jsx("div",{className:"flex items-center gap-4",children:o.jsx(e,{label:"Adicionar Coluna",onClick:()=>a("Adicionar Coluna"),icon:r,actions:m})}),usage:A,notes:["Ação principal destacada com clique direto","Menu dropdown para ações secundárias","Estados hover e active independentes para cada área","Suporte a ícones, loading e disabled","Fallback para botão simples quando sem ações secundárias","4 variantes visuais e 3 tamanhos"],examples:[{title:"Variantes",description:"O Split Button suporta as mesmas variantes do Button padrão.",preview:o.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[o.jsx(e,{label:"Primary",onClick:()=>a("Primary"),actions:i}),o.jsx(e,{label:"Secondary",variant:"secondary",onClick:()=>a("Secondary"),actions:i}),o.jsx(e,{label:"Outline",variant:"outline",onClick:()=>a("Outline"),actions:i}),o.jsx(e,{label:"Ghost",variant:"ghost",onClick:()=>a("Ghost"),actions:i})]}),code:E},{title:"Tamanhos",description:"Três tamanhos disponíveis: sm, default e lg.",preview:o.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[o.jsx(e,{label:"Small",size:"sm",onClick:()=>a("Small"),actions:i}),o.jsx(e,{label:"Default",size:"default",onClick:()=>a("Default"),actions:i}),o.jsx(e,{label:"Large",size:"lg",onClick:()=>a("Large"),actions:i})]}),code:j},{title:"Com Ícones",description:"Adicione ícones ao botão principal e às ações do menu.",preview:o.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[o.jsx(e,{label:"Salvar",onClick:()=>a("Salvar"),icon:l,actions:i}),o.jsx(e,{label:"Exportar",onClick:()=>a("Exportar"),icon:c,variant:"secondary",actions:C}),o.jsx(e,{label:"Compartilhar",onClick:()=>a("Compartilhar"),icon:p,variant:"outline",actions:b})]}),code:`<SplitButton
46
46
  label="Salvar"
47
47
  onClick={handleSave}
48
48
  icon={Save}
@@ -50,4 +50,4 @@ import { Plus } from 'lucide-react';
50
50
  { id: 'draft', label: 'Salvar como Rascunho', icon: FileText, onClick: handleDraft },
51
51
  { id: 'template', label: 'Salvar como Modelo', icon: Copy, onClick: handleTemplate },
52
52
  ]}
53
- />`},{title:"Estados: Loading e Disabled",description:"O Split Button suporta estados de loading e disabled que afetam ambas as áreas.",preview:o.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[o.jsx(e,{label:t?"Salvando...":"Salvar",loading:t,onClick:u,icon:l,actions:i}),o.jsx(e,{label:"Desabilitado",disabled:!0,onClick:()=>{},actions:i})]}),code:B},{title:"Ação Única (Fallback)",description:"Quando não há ações secundárias, o componente se comporta como um botão simples.",preview:o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx(e,{label:"Salvar",onClick:()=>a("Salvar"),icon:l}),o.jsx(e,{label:"Exportar",onClick:()=>a("Exportar"),icon:c,variant:"secondary"})]}),code:D},{title:"Ação Destrutiva",description:"Ações podem ter variante destructive para indicar operações perigosas.",preview:o.jsx("div",{className:"flex items-center gap-4",children:o.jsx(e,{label:"Ações",onClick:()=>a("Ação padrão"),variant:"outline",actions:v})}),code:w}],props:[{name:"label",type:"string",description:"Texto exibido no botão principal (obrigatório)"},{name:"onClick",type:"() => void",description:"Callback executado ao clicar no botão principal (obrigatório)"},{name:"icon",type:"LucideIcon",description:"Ícone opcional exibido antes do label"},{name:"actions",type:"SplitButtonAction[]",default:"[]",description:"Lista de ações secundárias exibidas no dropdown"},{name:"variant",type:"'default' | 'secondary' | 'outline' | 'ghost'",default:"'default'",description:"Variante visual do botão"},{name:"size",type:"'sm' | 'default' | 'lg'",default:"'default'",description:"Tamanho do botão"},{name:"disabled",type:"boolean",default:"false",description:"Desabilita todo o componente"},{name:"loading",type:"boolean",default:"false",description:"Exibe estado de loading"},{name:"menuAlign",type:"'start' | 'end'",default:"'end'",description:"Alinhamento do menu dropdown"},{name:"className",type:"string",description:"Classes CSS adicionais"}],accessibility:["O botão principal é focável e ativável por teclado","O trigger do dropdown tem aria-label descritivo","O menu pode ser navegado com setas do teclado","Esc fecha o menu e retorna o foco","Estados disabled são anunciados por leitores de tela"]})}export{z as SplitButtonDoc};
53
+ />`},{title:"Estados: Loading e Disabled",description:"O Split Button suporta estados de loading e disabled que afetam ambas as áreas.",preview:o.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[o.jsx(e,{label:t?"Salvando...":"Salvar",loading:t,onClick:u,icon:l,actions:i}),o.jsx(e,{label:"Desabilitado",disabled:!0,onClick:()=>{},actions:i})]}),code:B},{title:"Ação Única (Fallback)",description:"Quando não há ações secundárias, o componente se comporta como um botão simples.",preview:o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx(e,{label:"Salvar",onClick:()=>a("Salvar"),icon:l}),o.jsx(e,{label:"Exportar",onClick:()=>a("Exportar"),icon:c,variant:"secondary"})]}),code:D},{title:"Ação Destrutiva",description:"Ações podem ter variante destructive para indicar operações perigosas.",preview:o.jsx("div",{className:"flex items-center gap-4",children:o.jsx(e,{label:"Ações",onClick:()=>a("Ação padrão"),variant:"outline",actions:v})}),code:w}],props:[{name:"label",type:"string",description:"Texto exibido no botão principal (obrigatório)"},{name:"onClick",type:"() => void",description:"Callback executado ao clicar no botão principal (obrigatório)"},{name:"icon",type:"LucideIcon",description:"Ícone opcional exibido antes do label"},{name:"actions",type:"SplitButtonAction[]",default:"[]",description:"Lista de ações secundárias exibidas no dropdown"},{name:"variant",type:"'default' | 'secondary' | 'outline' | 'ghost'",default:"'default'",description:"Variante visual do botão"},{name:"size",type:"'sm' | 'default' | 'lg'",default:"'default'",description:"Tamanho do botão"},{name:"disabled",type:"boolean",default:"false",description:"Desabilita todo o componente"},{name:"loading",type:"boolean",default:"false",description:"Exibe estado de loading"},{name:"menuAlign",type:"'start' | 'end'",default:"'end'",description:"Alinhamento do menu dropdown"},{name:"className",type:"string",description:"Classes CSS adicionais"}],accessibility:["O botão principal é focável e ativável por teclado","O trigger do dropdown tem aria-label descritivo","O menu pode ser navegado com setas do teclado","Esc fecha o menu e retorna o foco","Estados disabled são anunciados por leitores de tela"]})}export{N as SplitButtonDoc};
@@ -1,4 +1,4 @@
1
- import{j as e,r as n,C as p,f as r}from"./index-CE0k7Rdh.js";import{C as m}from"./ComponentDocTemplate-CRbRY-v5.js";import{S as s}from"./step-selector-DHxgT2FL.js";function x(){const[a,t]=n.useState(1);return e.jsxs("div",{className:"flex flex-col items-center gap-4 p-4",children:[e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(r,{variant:"outline",size:"sm",onClick:()=>t(Math.max(1,a-1)),disabled:a===1,children:"Voltar"}),e.jsx(r,{size:"sm",onClick:()=>t(Math.min(4,a+1)),disabled:a===4,children:"Avançar"})]})]})}function u(){const[a,t]=n.useState(1),o=["Tipo","Dados","Configuração","Confirmar"];return e.jsxs("div",{className:"flex flex-col items-center gap-4 p-4",children:[e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,stepLabels:o}),e.jsxs(p,{className:"p-4 text-center min-w-[200px]",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Etapa atual:"}),e.jsx("p",{className:"font-medium",children:o[a-1]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(r,{variant:"outline",size:"sm",onClick:()=>t(Math.max(1,a-1)),disabled:a===1,children:"Voltar"}),e.jsx(r,{size:"sm",onClick:()=>t(Math.min(4,a+1)),disabled:a===4,children:"Avançar"})]})]})}function S(){const[a,t]=n.useState(1),[o,c]=n.useState(1),l=["Informações","Endereço","Pagamento","Revisão"],d=()=>{const i=Math.min(4,a+1);t(i),c(Math.max(o,i))};return e.jsxs("div",{className:"flex flex-col items-center gap-4 p-4",children:[e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,stepLabels:l,canGoToStep:i=>i<=o}),e.jsxs(p,{className:"p-4 text-center min-w-[200px]",children:[e.jsxs("p",{className:"text-sm text-muted-foreground mb-2",children:["Máximo acessível: Etapa ",o]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Etapas futuras ficam desabilitadas até você avançar"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(r,{variant:"outline",size:"sm",onClick:()=>t(Math.max(1,a-1)),disabled:a===1,children:"Voltar"}),e.jsx(r,{size:"sm",onClick:d,disabled:a===4,children:"Validar e Avançar"})]})]})}function g(){const[a,t]=n.useState(2);return e.jsx("div",{className:"flex flex-col items-center gap-6 p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-sm text-muted-foreground w-16",children:"w-24:"}),e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,progressWidth:"w-24"})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-sm text-muted-foreground w-16",children:"w-32:"}),e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,progressWidth:"w-32"})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-sm text-muted-foreground w-16",children:"w-48:"}),e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,progressWidth:"w-48"})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-sm text-muted-foreground w-16",children:"w-64:"}),e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,progressWidth:"w-64"})]})]})})}const h=`import { StepSelector } from 'forlogic-core';
1
+ import{j as e,r as n,a as p,x as r}from"./index-DkiftrvI.js";import{C as m}from"./ComponentDocTemplate-CQbBhfvZ.js";import{S as s}from"./step-selector-ATTh_9Wa.js";import"./ExampleCard-DuLrb3t-.js";function x(){const[a,t]=n.useState(1);return e.jsxs("div",{className:"flex flex-col items-center gap-4 p-4",children:[e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(r,{variant:"outline",size:"sm",onClick:()=>t(Math.max(1,a-1)),disabled:a===1,children:"Voltar"}),e.jsx(r,{size:"sm",onClick:()=>t(Math.min(4,a+1)),disabled:a===4,children:"Avançar"})]})]})}function u(){const[a,t]=n.useState(1),o=["Tipo","Dados","Configuração","Confirmar"];return e.jsxs("div",{className:"flex flex-col items-center gap-4 p-4",children:[e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,stepLabels:o}),e.jsxs(p,{className:"p-4 text-center min-w-[200px]",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Etapa atual:"}),e.jsx("p",{className:"font-medium",children:o[a-1]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(r,{variant:"outline",size:"sm",onClick:()=>t(Math.max(1,a-1)),disabled:a===1,children:"Voltar"}),e.jsx(r,{size:"sm",onClick:()=>t(Math.min(4,a+1)),disabled:a===4,children:"Avançar"})]})]})}function S(){const[a,t]=n.useState(1),[o,c]=n.useState(1),l=["Informações","Endereço","Pagamento","Revisão"],d=()=>{const i=Math.min(4,a+1);t(i),c(Math.max(o,i))};return e.jsxs("div",{className:"flex flex-col items-center gap-4 p-4",children:[e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,stepLabels:l,canGoToStep:i=>i<=o}),e.jsxs(p,{className:"p-4 text-center min-w-[200px]",children:[e.jsxs("p",{className:"text-sm text-muted-foreground mb-2",children:["Máximo acessível: Etapa ",o]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Etapas futuras ficam desabilitadas até você avançar"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(r,{variant:"outline",size:"sm",onClick:()=>t(Math.max(1,a-1)),disabled:a===1,children:"Voltar"}),e.jsx(r,{size:"sm",onClick:d,disabled:a===4,children:"Validar e Avançar"})]})]})}function g(){const[a,t]=n.useState(2);return e.jsx("div",{className:"flex flex-col items-center gap-6 p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-sm text-muted-foreground w-16",children:"w-24:"}),e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,progressWidth:"w-24"})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-sm text-muted-foreground w-16",children:"w-32:"}),e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,progressWidth:"w-32"})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-sm text-muted-foreground w-16",children:"w-48:"}),e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,progressWidth:"w-48"})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-sm text-muted-foreground w-16",children:"w-64:"}),e.jsx(s,{currentStep:a,totalSteps:4,onStepChange:t,progressWidth:"w-64"})]})]})})}const h=`import { StepSelector } from 'forlogic-core';
2
2
  import { useState } from 'react';
3
3
 
4
4
  function MyWizard() {
@@ -38,4 +38,4 @@ const handleNext = () => {
38
38
  <StepSelector progressWidth="w-24" {...props} /> // Compacto
39
39
  <StepSelector progressWidth="w-32" {...props} /> // Padrão
40
40
  <StepSelector progressWidth="w-48" {...props} /> // Médio
41
- <StepSelector progressWidth="w-64" {...props} /> // Largo`;function N(){return e.jsx(m,{title:"Step Selector",description:"Componente de navegação para Wizards multi-etapas. Combina um DropdownMenu para seleção de etapas com uma barra de Progress para indicação visual do progresso.",component:e.jsx(x,{}),usage:h,examples:[{title:"Com Labels Customizados",description:"Use stepLabels para definir nomes descritivos para cada etapa. Os labels aparecem no dropdown de navegação.",preview:e.jsx(u,{}),code:f},{title:"Com Validação de Navegação",description:"Use canGoToStep para controlar quais etapas estão acessíveis. Navegação para etapas anteriores é sempre permitida.",preview:e.jsx(S,{}),code:v},{title:"Larguras Customizadas",description:"Ajuste a largura da barra de progresso com progressWidth para diferentes contextos de layout.",preview:e.jsx(g,{}),code:j}],props:[{name:"currentStep",type:"number",description:"Etapa atual (1-indexed). A primeira etapa é 1."},{name:"totalSteps",type:"number",description:"Total de etapas do Wizard."},{name:"onStepChange",type:"(step: number) => void",description:"Callback chamado quando uma etapa é selecionada."},{name:"stepLabels",type:"string[]",description:'Labels customizados para cada etapa. Se não fornecido, usa "Etapa N".'},{name:"canGoToStep",type:"(targetStep: number) => boolean",description:"Função que valida se pode navegar para uma etapa específica. Retornar para etapas anteriores é sempre permitido."},{name:"className",type:"string",description:"Classes CSS adicionais para o container."},{name:"progressWidth",type:"string",default:'"w-32"',description:"Largura da barra de progresso. Aceita classes Tailwind (w-24, w-32, w-48, etc.)."}],accessibility:["Suporte completo a navegação por teclado (Tab, Enter, Escape)","O dropdown usa Radix UI com gerenciamento de foco automático","Indicador visual (ícone check) marca a etapa atual","Estados disabled comunicam visualmente etapas inacessíveis",'A barra de progresso usa role="progressbar" com valores aria'],notes:["Ideal para uso no DialogFooter de Wizards multi-etapas","Navegação para etapas anteriores é sempre permitida, independente de canGoToStep","Combina DropdownMenu + Progress para experiência intuitiva","Use em conjunto com Dialog ou OnboardingDialog para fluxos completos","Os steps são 1-indexed: a primeira etapa é 1, não 0"]})}export{N as default};
41
+ <StepSelector progressWidth="w-64" {...props} /> // Largo`;function W(){return e.jsx(m,{title:"Step Selector",description:"Componente de navegação para Wizards multi-etapas. Combina um DropdownMenu para seleção de etapas com uma barra de Progress para indicação visual do progresso.",component:e.jsx(x,{}),usage:h,examples:[{title:"Com Labels Customizados",description:"Use stepLabels para definir nomes descritivos para cada etapa. Os labels aparecem no dropdown de navegação.",preview:e.jsx(u,{}),code:f},{title:"Com Validação de Navegação",description:"Use canGoToStep para controlar quais etapas estão acessíveis. Navegação para etapas anteriores é sempre permitida.",preview:e.jsx(S,{}),code:v},{title:"Larguras Customizadas",description:"Ajuste a largura da barra de progresso com progressWidth para diferentes contextos de layout.",preview:e.jsx(g,{}),code:j}],props:[{name:"currentStep",type:"number",description:"Etapa atual (1-indexed). A primeira etapa é 1."},{name:"totalSteps",type:"number",description:"Total de etapas do Wizard."},{name:"onStepChange",type:"(step: number) => void",description:"Callback chamado quando uma etapa é selecionada."},{name:"stepLabels",type:"string[]",description:'Labels customizados para cada etapa. Se não fornecido, usa "Etapa N".'},{name:"canGoToStep",type:"(targetStep: number) => boolean",description:"Função que valida se pode navegar para uma etapa específica. Retornar para etapas anteriores é sempre permitido."},{name:"className",type:"string",description:"Classes CSS adicionais para o container."},{name:"progressWidth",type:"string",default:'"w-32"',description:"Largura da barra de progresso. Aceita classes Tailwind (w-24, w-32, w-48, etc.)."}],accessibility:["Suporte completo a navegação por teclado (Tab, Enter, Escape)","O dropdown usa Radix UI com gerenciamento de foco automático","Indicador visual (ícone check) marca a etapa atual","Estados disabled comunicam visualmente etapas inacessíveis",'A barra de progresso usa role="progressbar" com valores aria'],notes:["Ideal para uso no DialogFooter de Wizards multi-etapas","Navegação para etapas anteriores é sempre permitida, independente de canGoToStep","Combina DropdownMenu + Progress para experiência intuitiva","Use em conjunto com Dialog ou OnboardingDialog para fluxos completos","Os steps são 1-indexed: a primeira etapa é 1, não 0"]})}export{W as default};
@@ -1,4 +1,4 @@
1
- import{j as e,S as a,L as i}from"./index-CE0k7Rdh.js";import{C as s}from"./ComponentDocTemplate-CRbRY-v5.js";function t(){return e.jsx(s,{title:"Switch",description:"Um controle que permite ao usuário alternar entre marcado e desmarcado.",component:e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(a,{id:"airplane-mode"}),e.jsx("label",{htmlFor:"airplane-mode",className:"text-sm font-medium",children:"Modo Avião"})]}),usage:`import { Switch, Label } from "forlogic-core"
1
+ import{j as e,W as a,J as i}from"./index-DkiftrvI.js";import{C as s}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function o(){return e.jsx(s,{title:"Switch",description:"Um controle que permite ao usuário alternar entre marcado e desmarcado.",component:e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(a,{id:"airplane-mode"}),e.jsx("label",{htmlFor:"airplane-mode",className:"text-sm font-medium",children:"Modo Avião"})]}),usage:`import { Switch, Label } from "forlogic-core"
2
2
 
3
3
  <div className="flex items-center space-x-2">
4
4
  <Switch id="airplane-mode" />
@@ -53,4 +53,4 @@ import{j as e,S as a,L as i}from"./index-CE0k7Rdh.js";import{C as s}from"./Compo
53
53
  <Label htmlFor="allow-messages">Permitir Mensagens</Label>
54
54
  <Switch id="allow-messages" defaultChecked />
55
55
  </div>
56
- </div>`}],props:[{name:"id",type:"string",default:"-",description:"Identificador único para associar com Label."},{name:"checked",type:"boolean",default:"-",description:"Estado controlado do switch."},{name:"defaultChecked",type:"boolean",default:"false",description:"Estado inicial não controlado."},{name:"disabled",type:"boolean",default:"false",description:"Desabilita a interação."},{name:"required",type:"boolean",default:"false",description:"Indica campo obrigatório em formulário."},{name:"name",type:"string",default:"-",description:"Nome do campo para submissão de formulário."},{name:"value",type:"string",default:'"on"',description:"Valor enviado quando marcado."},{name:"onCheckedChange",type:"(checked: boolean) => void",default:"-",description:"Callback quando o estado muda."}],accessibility:['Role "switch" aplicado automaticamente (WAI-ARIA)',"Suporte completo de teclado (Espaço para alternar)","Estados aria-checked comunicados para leitores de tela","Associação com Label via htmlFor/id","Indicadores visuais de foco visíveis","Estado desabilitado comunicado via aria-disabled"]})}export{t as SwitchDoc};
56
+ </div>`}],props:[{name:"id",type:"string",default:"-",description:"Identificador único para associar com Label."},{name:"checked",type:"boolean",default:"-",description:"Estado controlado do switch."},{name:"defaultChecked",type:"boolean",default:"false",description:"Estado inicial não controlado."},{name:"disabled",type:"boolean",default:"false",description:"Desabilita a interação."},{name:"required",type:"boolean",default:"false",description:"Indica campo obrigatório em formulário."},{name:"name",type:"string",default:"-",description:"Nome do campo para submissão de formulário."},{name:"value",type:"string",default:'"on"',description:"Valor enviado quando marcado."},{name:"onCheckedChange",type:"(checked: boolean) => void",default:"-",description:"Callback quando o estado muda."}],accessibility:['Role "switch" aplicado automaticamente (WAI-ARIA)',"Suporte completo de teclado (Espaço para alternar)","Estados aria-checked comunicados para leitores de tela","Associação com Label via htmlFor/id","Indicadores visuais de foco visíveis","Estado desabilitado comunicado via aria-disabled"]})}export{o as SwitchDoc};
@@ -1,4 +1,4 @@
1
- import{j as e,ar as t,as as R,at as i,au as l,av as s,aw as n,ax as a,r,ay as v,az as o}from"./index-CE0k7Rdh.js";import{C as f}from"./ComponentDocTemplate-CRbRY-v5.js";function S(){const[c,H]=r.useState(150),[m,g]=r.useState(200),[T,b]=r.useState(null),x=d=>h=>{h.preventDefault(),b(d);const w=h.clientX,u=d===1?c:m,j=N=>{const C=N.clientX-w;d===1?H(Math.max(80,u+C)):g(Math.max(100,u+C))},p=()=>{b(null),document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",p)};document.addEventListener("mousemove",j),document.addEventListener("mouseup",p)};return e.jsx("div",{className:"rounded-md border overflow-hidden",children:e.jsxs(t,{children:[e.jsx(i,{children:e.jsxs(l,{children:[e.jsxs(s,{style:{width:c},className:"relative",children:["Nome",e.jsx(v,{direction:"horizontal",onMouseDown:x(1),isDragging:T===1})]}),e.jsxs(s,{style:{width:m},className:"relative",children:["Email",e.jsx(v,{direction:"horizontal",onMouseDown:x(2),isDragging:T===2})]}),e.jsx(s,{children:"Status"})]})}),e.jsxs(n,{children:[e.jsxs(l,{children:[e.jsx(a,{children:"João Silva"}),e.jsx(a,{children:"joao.silva@example.com"}),e.jsx(a,{children:"Ativo"})]}),e.jsxs(l,{children:[e.jsx(a,{children:"Maria Santos"}),e.jsx(a,{children:"maria.santos@example.com"}),e.jsx(a,{children:"Ativo"})]})]})]})})}function M(){return e.jsx("div",{className:"rounded-md border overflow-hidden",children:e.jsxs(t,{children:[e.jsx(i,{children:e.jsxs(l,{children:[e.jsx(s,{className:"w-[100px]",children:"ID"}),e.jsx(s,{className:"w-[150px]",children:"Nome"}),e.jsx(s,{className:"w-[200px]",children:"Descrição"})]})}),e.jsxs(n,{children:[e.jsxs(l,{children:[e.jsx(a,{children:"001"}),e.jsx(a,{children:e.jsx(o,{children:"João da Silva Santos"})}),e.jsx(a,{children:e.jsx(o,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore."})})]}),e.jsxs(l,{children:[e.jsx(a,{children:"002"}),e.jsx(a,{children:e.jsx(o,{children:"Maria"})}),e.jsx(a,{children:e.jsx(o,{children:"Descrição curta"})})]}),e.jsxs(l,{children:[e.jsx(a,{children:"003"}),e.jsx(a,{children:e.jsx(o,{children:"Pedro Henrique Costa Oliveira"})}),e.jsx(a,{children:e.jsx(o,{children:"Esta é uma descrição muito longa que será truncada automaticamente e mostrará um tooltip quando o usuário passar o mouse sobre o texto."})})]})]})]})})}function E(){return e.jsx(f,{title:"Table",description:"Uma tabela semântica para exibir dados tabulares. Inclui TableResizeHandle para redimensionamento de colunas e TruncatedCell para texto truncado com tooltip automático.",component:e.jsxs(t,{children:[e.jsx(i,{children:e.jsxs(l,{children:[e.jsx(s,{children:"Nome"}),e.jsx(s,{children:"Status"})]})}),e.jsx(n,{children:e.jsxs(l,{children:[e.jsx(a,{children:"João Silva"}),e.jsx(a,{children:"Ativo"})]})})]}),usage:`import {
1
+ import{j as e,T as t,d5 as R,i,k as l,l as s,p as n,q as a,r,n as v,s as o}from"./index-DkiftrvI.js";import{C as f}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function S(){const[c,H]=r.useState(150),[m,g]=r.useState(200),[T,b]=r.useState(null),h=d=>x=>{x.preventDefault(),b(d);const N=x.clientX,u=d===1?c:m,j=w=>{const C=w.clientX-N;d===1?H(Math.max(80,u+C)):g(Math.max(100,u+C))},p=()=>{b(null),document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",p)};document.addEventListener("mousemove",j),document.addEventListener("mouseup",p)};return e.jsx("div",{className:"rounded-md border overflow-hidden",children:e.jsxs(t,{children:[e.jsx(i,{children:e.jsxs(l,{children:[e.jsxs(s,{style:{width:c},className:"relative",children:["Nome",e.jsx(v,{direction:"horizontal",onMouseDown:h(1),isDragging:T===1})]}),e.jsxs(s,{style:{width:m},className:"relative",children:["Email",e.jsx(v,{direction:"horizontal",onMouseDown:h(2),isDragging:T===2})]}),e.jsx(s,{children:"Status"})]})}),e.jsxs(n,{children:[e.jsxs(l,{children:[e.jsx(a,{children:"João Silva"}),e.jsx(a,{children:"joao.silva@example.com"}),e.jsx(a,{children:"Ativo"})]}),e.jsxs(l,{children:[e.jsx(a,{children:"Maria Santos"}),e.jsx(a,{children:"maria.santos@example.com"}),e.jsx(a,{children:"Ativo"})]})]})]})})}function M(){return e.jsx("div",{className:"rounded-md border overflow-hidden",children:e.jsxs(t,{children:[e.jsx(i,{children:e.jsxs(l,{children:[e.jsx(s,{className:"w-[100px]",children:"ID"}),e.jsx(s,{className:"w-[150px]",children:"Nome"}),e.jsx(s,{className:"w-[200px]",children:"Descrição"})]})}),e.jsxs(n,{children:[e.jsxs(l,{children:[e.jsx(a,{children:"001"}),e.jsx(a,{children:e.jsx(o,{children:"João da Silva Santos"})}),e.jsx(a,{children:e.jsx(o,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore."})})]}),e.jsxs(l,{children:[e.jsx(a,{children:"002"}),e.jsx(a,{children:e.jsx(o,{children:"Maria"})}),e.jsx(a,{children:e.jsx(o,{children:"Descrição curta"})})]}),e.jsxs(l,{children:[e.jsx(a,{children:"003"}),e.jsx(a,{children:e.jsx(o,{children:"Pedro Henrique Costa Oliveira"})}),e.jsx(a,{children:e.jsx(o,{children:"Esta é uma descrição muito longa que será truncada automaticamente e mostrará um tooltip quando o usuário passar o mouse sobre o texto."})})]})]})]})})}function z(){return e.jsx(f,{title:"Table",description:"Uma tabela semântica para exibir dados tabulares. Inclui TableResizeHandle para redimensionamento de colunas e TruncatedCell para texto truncado com tooltip automático.",component:e.jsxs(t,{children:[e.jsx(i,{children:e.jsxs(l,{children:[e.jsx(s,{children:"Nome"}),e.jsx(s,{children:"Status"})]})}),e.jsx(n,{children:e.jsxs(l,{children:[e.jsx(a,{children:"João Silva"}),e.jsx(a,{children:"Ativo"})]})})]}),usage:`import {
2
2
  Table,
3
3
  TableBody,
4
4
  TableCaption,
@@ -125,4 +125,4 @@ const handleMouseDown = (e: React.MouseEvent) => {
125
125
  <TableCell className="text-right">R$ 250,00</TableCell>
126
126
  </TableRow>
127
127
  </TableBody>
128
- </Table>`}],props:[{name:"className",type:"string",default:"-",description:"Classes CSS adicionais para a tabela."},{name:"TableResizeHandle.direction",type:'"horizontal" | "vertical"',default:"-",description:"Direção do redimensionamento (colunas ou linhas)."},{name:"TableResizeHandle.onMouseDown",type:"(e: MouseEvent) => void",default:"-",description:"Handler para iniciar o redimensionamento."},{name:"TableResizeHandle.isDragging",type:"boolean",default:"false",description:"Se o handle está sendo arrastado (altera visual)."},{name:"TruncatedCell.children",type:"ReactNode",default:"-",description:"Conteúdo a ser truncado."},{name:"TruncatedCell.className",type:"string",default:"-",description:"Classes CSS adicionais."}],notes:["TableResizeHandle deve ser posicionado dentro de um TableHead com position: relative.","TruncatedCell detecta automaticamente se o texto está truncado e exibe tooltip apenas quando necessário.","Use larguras fixas (w-[Xpx]) nos TableHead para melhor controle do layout.","TruncatedCell usa CSS text-overflow: ellipsis internamente."],accessibility:["Usa elementos HTML semânticos de tabela","Suporta navegação por teclado","TableCaption fornece contexto para leitores de tela","TableHeader define cabeçalhos de coluna apropriados","TruncatedCell mostra tooltip acessível com conteúdo completo","TableResizeHandle suporta interação via teclado","Funciona com leitores de tela"]})}export{E as TableDoc};
128
+ </Table>`}],props:[{name:"className",type:"string",default:"-",description:"Classes CSS adicionais para a tabela."},{name:"TableResizeHandle.direction",type:'"horizontal" | "vertical"',default:"-",description:"Direção do redimensionamento (colunas ou linhas)."},{name:"TableResizeHandle.onMouseDown",type:"(e: MouseEvent) => void",default:"-",description:"Handler para iniciar o redimensionamento."},{name:"TableResizeHandle.isDragging",type:"boolean",default:"false",description:"Se o handle está sendo arrastado (altera visual)."},{name:"TruncatedCell.children",type:"ReactNode",default:"-",description:"Conteúdo a ser truncado."},{name:"TruncatedCell.className",type:"string",default:"-",description:"Classes CSS adicionais."}],notes:["TableResizeHandle deve ser posicionado dentro de um TableHead com position: relative.","TruncatedCell detecta automaticamente se o texto está truncado e exibe tooltip apenas quando necessário.","Use larguras fixas (w-[Xpx]) nos TableHead para melhor controle do layout.","TruncatedCell usa CSS text-overflow: ellipsis internamente."],accessibility:["Usa elementos HTML semânticos de tabela","Suporta navegação por teclado","TableCaption fornece contexto para leitores de tela","TableHeader define cabeçalhos de coluna apropriados","TruncatedCell mostra tooltip acessível com conteúdo completo","TableResizeHandle suporta interação via teclado","Funciona com leitores de tela"]})}export{z as TableDoc};
@@ -1,4 +1,4 @@
1
- import{j as a,cS as u,l as r,aq as b,cl as i,cm as l,cn as t,co as o,f as d}from"./index-CE0k7Rdh.js";import{C as p}from"./ComponentDocTemplate-CRbRY-v5.js";function m({children:s,className:e}){return a.jsx("div",{className:r("flex flex-col h-full",e),children:a.jsx(u,{className:"flex-1",children:a.jsx("div",{className:"space-y-6 p-6",children:s})})})}function T({title:s,description:e,actions:n,className:c}){return a.jsxs("div",{className:r("space-y-4",c),children:[a.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:s}),e&&a.jsx("p",{className:"text-muted-foreground text-sm",children:e})]}),n&&a.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:n})]}),a.jsx(b,{})]})}function g({children:s,className:e}){return a.jsx("div",{className:r("space-y-6",e),children:s})}function f(){return a.jsx(p,{title:"Tabs & TabPageLayout",description:"Componentes de navegação em abas. Tabs para conteúdo simples e TabPageLayout para páginas completas com header fixo e scroll.",component:a.jsxs(i,{defaultValue:"account",className:"w-[400px]",children:[a.jsxs(l,{children:[a.jsx(t,{value:"account",children:"Conta"}),a.jsx(t,{value:"password",children:"Senha"})]}),a.jsx(o,{value:"account"}),a.jsx(o,{value:"password"})]}),usage:`import { Tabs, TabsContent, TabsList, TabsTrigger } from "forlogic-core"
1
+ import{j as a,aG as u,o as r,w as b,a5 as i,a6 as l,a7 as t,aa as o,x as d}from"./index-DkiftrvI.js";import{C as p}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function m({children:s,className:e}){return a.jsx("div",{className:r("flex flex-col h-full",e),children:a.jsx(u,{className:"flex-1",children:a.jsx("div",{className:"space-y-6 p-6",children:s})})})}function T({title:s,description:e,actions:n,className:c}){return a.jsxs("div",{className:r("space-y-4",c),children:[a.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:s}),e&&a.jsx("p",{className:"text-muted-foreground text-sm",children:e})]}),n&&a.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:n})]}),a.jsx(b,{})]})}function g({children:s,className:e}){return a.jsx("div",{className:r("space-y-6",e),children:s})}function h(){return a.jsx(p,{title:"Tabs & TabPageLayout",description:"Componentes de navegação em abas. Tabs para conteúdo simples e TabPageLayout para páginas completas com header fixo e scroll.",component:a.jsxs(i,{defaultValue:"account",className:"w-[400px]",children:[a.jsxs(l,{children:[a.jsx(t,{value:"account",children:"Conta"}),a.jsx(t,{value:"password",children:"Senha"})]}),a.jsx(o,{value:"account"}),a.jsx(o,{value:"password"})]}),usage:`import { Tabs, TabsContent, TabsList, TabsTrigger } from "forlogic-core"
2
2
 
3
3
  <Tabs defaultValue="account">
4
4
  <TabsList>
@@ -39,4 +39,4 @@ import{j as a,cS as u,l as r,aq as b,cl as i,cm as l,cn as t,co as o,f as d}from
39
39
  <TabPageContent>
40
40
  <div>Seu conteúdo aqui...</div>
41
41
  </TabPageContent>
42
- </TabPageLayout>`}],props:[{name:"defaultValue",type:"string",default:"-",description:"O valor da aba que deve estar ativa por padrão."},{name:"value",type:"string",default:"-",description:"O valor controlado da aba ativa."},{name:"onValueChange",type:"(value: string) => void",default:"-",description:"Manipulador de evento quando a aba ativa muda."},{name:"TabPageHeader.title",type:"string | ReactNode",default:"-",description:"Título do header."},{name:"TabPageHeader.description",type:"string",default:"-",description:"Descrição opcional."},{name:"TabPageHeader.actions",type:"ReactNode",default:"-",description:"Ações (botões) do header."}],accessibility:["Navegação completa por teclado (teclas de seta para navegar entre abas)","Segue o padrão WAI-ARIA de tabs","Gerenciamento adequado de foco","Anúncios para leitores de tela"],notes:["**Tabs** é ideal para alternar entre visualizações simples","**TabPageLayout** é ideal para páginas dentro de tabs com header fixo e scroll","TabPageLayout inclui separador automático e scroll area","Para barras de menu estilo desktop, veja o componente **Menubar**"]})}export{f as TabsDoc};
42
+ </TabPageLayout>`}],props:[{name:"defaultValue",type:"string",default:"-",description:"O valor da aba que deve estar ativa por padrão."},{name:"value",type:"string",default:"-",description:"O valor controlado da aba ativa."},{name:"onValueChange",type:"(value: string) => void",default:"-",description:"Manipulador de evento quando a aba ativa muda."},{name:"TabPageHeader.title",type:"string | ReactNode",default:"-",description:"Título do header."},{name:"TabPageHeader.description",type:"string",default:"-",description:"Descrição opcional."},{name:"TabPageHeader.actions",type:"ReactNode",default:"-",description:"Ações (botões) do header."}],accessibility:["Navegação completa por teclado (teclas de seta para navegar entre abas)","Segue o padrão WAI-ARIA de tabs","Gerenciamento adequado de foco","Anúncios para leitores de tela"],notes:["**Tabs** é ideal para alternar entre visualizações simples","**TabPageLayout** é ideal para páginas dentro de tabs com header fixo e scroll","TabPageLayout inclui separador automático e scroll area","Para barras de menu estilo desktop, veja o componente **Menubar**"]})}export{h as TabsDoc};
@@ -0,0 +1,10 @@
1
+ import{r as t,j as e,eP as M,aH as U,bp as k,aI as A,a8 as q,e3 as O,a1 as P,o as v,ew as H,E as B,G as F,H as V,I as z,X as G,x as N}from"./index-DkiftrvI.js";import{E as n}from"./ExampleCard-DuLrb3t-.js";function c({users:o,value:s,onChange:l,disabled:x=!1,placeholder:g="Buscar membro da equipe...",confirmRemoval:h=!0,confirmTitle:b="Remover da equipe",confirmMessage:S="Tem certeza que deseja remover este membro da equipe?",emptyMessage:C="Nenhum membro na equipe",className:w}){const[T,f]=t.useState(""),[E,m]=t.useState(!1),[p,j]=t.useState(null),r=t.useMemo(()=>new Set(s),[s]),u=t.useMemo(()=>o.filter(a=>r.has(a.id)),[o,r]),y=t.useMemo(()=>o.filter(a=>!r.has(a.id)).map(a=>({value:a.id,label:a.name})),[o,r]),I=t.useCallback(a=>{!a||r.has(a)||(l([...s,a]),f(""))},[s,l,r]),R=t.useCallback(a=>{h?(j(a),m(!0)):l(s.filter(i=>i!==a))},[s,l,h]),D=t.useCallback(()=>{p&&l(s.filter(a=>a!==p)),m(!1),j(null)},[p,s,l]);return e.jsxs("div",{className:v("space-y-3",w),children:[e.jsx("div",{className:"flex items-start gap-3",children:e.jsx("div",{className:"flex-1",children:e.jsx(M,{options:y,value:T,onValueChange:a=>{const i=typeof a=="string"?a:a?.[0]??"";f(i),i&&I(i)},placeholder:g,searchPlaceholder:"Buscar...",disabled:x})})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Selecionados"}),e.jsx("span",{className:"text-xs bg-muted text-muted-foreground rounded-full px-2 py-0.5 font-medium",children:u.length})]}),u.length>0?e.jsx("div",{className:"space-y-2",children:u.map(a=>e.jsxs("div",{className:"flex items-center border border-border rounded-lg p-2 gap-3",children:[e.jsxs(U,{className:"h-8 w-8 shrink-0",children:[a.avatar&&e.jsx(k,{src:a.avatar,alt:a.name}),e.jsx(A,{className:"text-xs",children:a.name?.substring(0,2).toUpperCase()})]}),e.jsx("div",{className:"flex-1 min-w-0",children:e.jsx("p",{className:"text-sm font-medium truncate",title:a.name,dangerouslySetInnerHTML:{__html:a.title||a.name}})}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0 text-xs text-muted-foreground",children:[a.roleName&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(q,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"truncate max-w-[120px]",children:a.roleName})]}),a.placeName&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(O,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"truncate max-w-[120px]",children:a.placeName})]}),e.jsx("button",{type:"button",className:v("text-muted-foreground hover:text-destructive transition-colors",x&&"opacity-50 pointer-events-none"),onClick:()=>!x&&R(a.id),title:"Remover",children:e.jsx(P,{className:"h-4 w-4"})})]})]},a.id))}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground",children:[e.jsx(H,{className:"h-12 w-12 mb-2 opacity-30"}),e.jsx("p",{className:"text-sm",children:C})]}),e.jsx(B,{open:E,onOpenChange:m,children:e.jsxs(F,{className:"sm:max-w-[400px]",children:[e.jsx(V,{children:e.jsx(z,{children:b})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:S}),e.jsxs(G,{children:[e.jsx(N,{variant:"ghost",onClick:()=>m(!1),children:"Cancelar"}),e.jsx(N,{variant:"destructive",onClick:D,children:"Remover"})]})]})})]})}const d=[{id:"u1",name:"João Silva",email:"joao@example.com",title:"<b>João Silva</b> - Analista de Qualidade",roleName:"Analista",placeName:"São Paulo"},{id:"u2",name:"Maria Santos",email:"maria@example.com",title:"<b>Maria Santos</b> - Gerente de Produção",roleName:"Gerente",placeName:"Campinas"},{id:"u3",name:"Carlos Mendes",email:"carlos@example.com",title:"<b>Carlos Mendes</b> - Engenheiro",roleName:"Engenheiro"},{id:"u4",name:"Ana Costa",email:"ana@example.com",title:"<b>Ana Costa</b> - Coordenadora",placeName:"Rio de Janeiro"},{id:"u5",name:"Pedro Oliveira",email:"pedro@example.com",title:"<b>Pedro Oliveira</b> - Técnico",roleName:"Técnico",placeName:"BH"},{id:"u6",name:"Fernanda Lima",email:"fernanda@example.com",title:"<b>Fernanda Lima</b> - Auditora"}];function J(){const[o,s]=t.useState(["u1","u2"]);return e.jsx("div",{className:"max-w-xl",children:e.jsx(c,{users:d,value:o,onChange:s})})}function L(){const[o,s]=t.useState([]);return e.jsx("div",{className:"max-w-xl",children:e.jsx(c,{users:d,value:o,onChange:s})})}function _(){const[o,s]=t.useState(["u3"]);return e.jsx("div",{className:"max-w-xl",children:e.jsx(c,{users:d,value:o,onChange:s,confirmRemoval:!1})})}function X(){return e.jsx("div",{className:"max-w-xl",children:e.jsx(c,{users:d,value:["u1","u4"],onChange:()=>{},disabled:!0})})}function W(){return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold mb-2",children:"Team Selector (Seletor de Equipe)"}),e.jsxs("p",{className:"text-muted-foreground",children:["Seleção de membros de equipe portado de ",e.jsx("code",{children:"flc-team"})," (v2). Multiselect com chips, avatar, role/place e confirmação."]})]}),e.jsx(n,{title:"Com membros pré-selecionados",description:"TeamSelector com 2 membros já selecionados.",preview:e.jsx(J,{}),code:"<TeamSelector users={users} value={selectedIds} onChange={setSelectedIds} />"}),e.jsx(n,{title:"Vazio",description:"Estado vazio com mensagem padrão.",preview:e.jsx(L,{}),code:"<TeamSelector users={users} value={[]} onChange={setIds} />"}),e.jsx(n,{title:"Sem confirmação de remoção",description:"Remoção direta sem dialog.",preview:e.jsx(_,{}),code:"<TeamSelector users={users} value={ids} onChange={setIds} confirmRemoval={false} />"}),e.jsx(n,{title:"Desabilitado",description:"Estado disabled.",preview:e.jsx(X,{}),code:"<TeamSelector users={users} value={['u1']} onChange={() => {}} disabled />"}),e.jsx(n,{title:"Importação",description:"Como usar o componente.",preview:e.jsx("pre",{className:"bg-muted p-4 rounded text-sm overflow-x-auto",children:`import { TeamSelector } from 'forlogic-core';
2
+ import type { TeamUser } from 'forlogic-core';`}),code:`import { TeamSelector } from 'forlogic-core';
3
+ import type { TeamUser } from 'forlogic-core';
4
+
5
+ <TeamSelector
6
+ users={availableUsers}
7
+ value={selectedUserIds}
8
+ onChange={setSelectedUserIds}
9
+ confirmRemoval={true}
10
+ />`})]})}export{W as TeamSelectorDoc};
@@ -0,0 +1,16 @@
1
+ import{r as c,j as e,E as O,G as C,H as y,I as T,aG as U,x as d,aU as S,X as k,F as A,a1 as D,o as V,a as h,b as x,c as p,e as f,d as j,Y as w}from"./index-DkiftrvI.js";import{S as z}from"./shield-check-CFXjOV_w.js";function I(s,o=""){const n=atob(s),i=[];for(let r=0;r<n.length;r+=512){const t=n.slice(r,r+512),l=new Array(t.length);for(let a=0;a<t.length;a++)l[a]=t.charCodeAt(a);i.push(new Uint8Array(l))}const m=new Blob(i,{type:o});return URL.createObjectURL(m)}function L({term:s,open:o,onClose:n,onAgree:i,title:m="Termos de Uso Atualizados",seeLaterLabel:r="Ver depois",agreeLabel:t="Li e concordo",viewTermLabel:l="Visualizar termo de uso"}){const[a,u]=c.useState(!1),g=c.useCallback(()=>{i(s.id)},[i,s.id]);return e.jsxs(e.Fragment,{children:[e.jsx(O,{open:o&&!a,onOpenChange:v=>!v&&n(),children:e.jsxs(C,{className:"sm:max-w-md",children:[e.jsx(y,{children:e.jsxs(T,{className:"flex items-center gap-2",children:[e.jsx(z,{className:"h-5 w-5 text-primary"}),m]})}),e.jsxs("div",{className:"space-y-4",children:[s.description&&e.jsx(U,{className:"max-h-48",children:e.jsx("div",{className:"text-sm text-muted-foreground prose prose-sm max-w-none",dangerouslySetInnerHTML:{__html:s.description}})}),s.file&&e.jsxs(d,{variant:"link",className:"px-0 text-primary",onClick:()=>u(!0),children:[e.jsx(S,{className:"mr-1 h-4 w-4"}),l]})]}),e.jsxs(k,{className:"gap-2 sm:gap-0",children:[e.jsx(d,{variant:"ghost",onClick:n,children:r}),e.jsx(d,{onClick:g,children:t})]})]})}),a&&e.jsx(N,{term:s,open:a,onClose:()=>u(!1),viewOnly:!0})]})}function N({term:s,open:o,onClose:n,onSign:i,viewOnly:m=!1,title:r="Termos de Uso",signLabel:t="Li e concordo"}){const l=c.useMemo(()=>s.file?I(s.file,s.type):null,[s.file,s.type]),a=c.useCallback(()=>{l&&URL.revokeObjectURL(l),n()},[l,n]),u=c.useCallback(()=>{if(s.hasUserSignature){a();return}i?.(s.id)},[s,i,a]),g=!m&&!s.hasUserSignature&&i;return e.jsx(O,{open:o,onOpenChange:v=>!v&&a(),children:e.jsxs(C,{className:V("flex flex-col p-0 sm:max-w-[80vw] h-[95vh]","[&>button.absolute]:hidden"),children:[e.jsxs("div",{className:"flex items-center justify-between border-b px-4 py-3",children:[e.jsxs("h2",{className:"flex items-center gap-2 text-lg font-semibold",children:[e.jsx(A,{className:"h-5 w-5 text-primary"}),r]}),e.jsxs("div",{className:"flex items-center gap-2",children:[g&&e.jsx(d,{size:"sm",onClick:u,children:t}),e.jsx(d,{variant:"ghost",size:"icon",onClick:a,children:e.jsx(D,{className:"h-4 w-4"})})]})]}),e.jsx("div",{className:"flex-1 min-h-0",children:s.file&&l?e.jsx("iframe",{className:"h-full w-full border-0",src:l,title:r}):e.jsx("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:e.jsx("p",{children:"Nenhum termo de uso ativo encontrado."})})})]})})}const b={id:"term-001",description:"<p>Os termos de uso foram atualizados. Por favor, leia e aceite para continuar utilizando a plataforma.</p><ul><li>Nova política de privacidade</li><li>Atualizações nos termos de serviço</li></ul>",file:btoa('<html><body style="font-family:sans-serif;padding:2rem"><h1>Termos de Uso</h1><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p><h2>1. Aceitação</h2><p>Ao utilizar nossos serviços, você concorda com estes termos.</p><h2>2. Privacidade</h2><p>Seus dados serão tratados conforme nossa política de privacidade.</p><h2>3. Responsabilidades</h2><p>O usuário é responsável pela veracidade das informações fornecidas.</p></body></html>'),type:"text/html",hasUserSignature:!1},E={...b,id:"term-002",hasUserSignature:!0};function P(){const[s,o]=c.useState(!1),[n,i]=c.useState(!1),[m,r]=c.useState(!1),[t,l]=c.useState(!1);return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold",children:"Terms of Use"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Componentes para exibir e gerenciar termos de uso. Inclui um dialog de notificação e um viewer full-screen para visualização do documento."})]}),e.jsxs(h,{children:[e.jsxs(x,{children:[e.jsx(p,{children:"TermsOfUseDialog"}),e.jsx(f,{children:"Dialog de notificação que aparece quando há termos de uso atualizados. Mostra descrição, link para visualizar o documento completo, e botões de ação."})]}),e.jsxs(j,{className:"space-y-4",children:[e.jsx(d,{onClick:()=>o(!0),children:"Abrir Dialog"}),e.jsx(L,{term:b,open:s,onClose:()=>o(!1),onAgree:a=>{w.success(`Termo ${a} aceito!`),o(!1)}}),e.jsx("pre",{className:"bg-muted p-4 rounded-md text-xs overflow-auto",children:`<TermsOfUseDialog
2
+ term={term}
3
+ open={open}
4
+ onClose={() => setOpen(false)}
5
+ onAgree={(termId) => handleAgree(termId)}
6
+ />`})]})]}),e.jsxs(h,{children:[e.jsxs(x,{children:[e.jsx(p,{children:"TermsOfUseViewer — Somente Leitura"}),e.jsxs(f,{children:["Viewer full-screen com iframe para visualizar o documento. Modo ",e.jsx("code",{children:"viewOnly"})," oculta o botão de assinatura."]})]}),e.jsxs(j,{className:"space-y-4",children:[e.jsx(d,{variant:"outline",onClick:()=>i(!0),children:"Abrir Viewer (View Only)"}),e.jsx(N,{term:b,open:n,onClose:()=>i(!1),viewOnly:!0}),e.jsx("pre",{className:"bg-muted p-4 rounded-md text-xs overflow-auto",children:`<TermsOfUseViewer
7
+ term={term}
8
+ open={open}
9
+ onClose={() => setOpen(false)}
10
+ viewOnly
11
+ />`})]})]}),e.jsxs(h,{children:[e.jsxs(x,{children:[e.jsx(p,{children:"TermsOfUseViewer — Com Assinatura"}),e.jsxs(f,{children:["Quando ",e.jsx("code",{children:"viewOnly=false"}),' e o usuário ainda não assinou, exibe o botão "Li e concordo".']})]}),e.jsxs(j,{className:"space-y-4",children:[e.jsx(d,{variant:"outline",onClick:()=>r(!0),children:"Abrir Viewer (Sign)"}),e.jsx(N,{term:b,open:m,onClose:()=>r(!1),onSign:a=>{w.success(`Termo ${a} assinado!`),r(!1)}}),e.jsx("pre",{className:"bg-muted p-4 rounded-md text-xs overflow-auto",children:`<TermsOfUseViewer
12
+ term={term}
13
+ open={open}
14
+ onClose={() => setOpen(false)}
15
+ onSign={(termId) => handleSign(termId)}
16
+ />`})]})]}),e.jsxs(h,{children:[e.jsxs(x,{children:[e.jsx(p,{children:"TermsOfUseViewer — Já Assinado"}),e.jsxs(f,{children:["Quando ",e.jsx("code",{children:"hasUserSignature=true"}),", o botão de assinatura fica oculto automaticamente."]})]}),e.jsxs(j,{className:"space-y-4",children:[e.jsx(d,{variant:"outline",onClick:()=>l(!0),children:"Abrir Viewer (Signed)"}),e.jsx(N,{term:E,open:t,onClose:()=>l(!1),onSign:()=>{}})]})]}),e.jsxs(h,{children:[e.jsx(x,{children:e.jsx(p,{children:"Props"})}),e.jsxs(j,{children:[e.jsx("h3",{className:"font-semibold mb-2",children:"TermOfUse (interface)"}),e.jsx("div",{className:"overflow-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b",children:[e.jsx("th",{className:"text-left p-2",children:"Prop"}),e.jsx("th",{className:"text-left p-2",children:"Tipo"}),e.jsx("th",{className:"text-left p-2",children:"Descrição"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"id"}),e.jsx("td",{className:"p-2",children:"string"}),e.jsx("td",{className:"p-2",children:"Identificador único"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"description"}),e.jsx("td",{className:"p-2",children:"string?"}),e.jsx("td",{className:"p-2",children:"HTML com descrição/resumo"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"file"}),e.jsx("td",{className:"p-2",children:"string?"}),e.jsx("td",{className:"p-2",children:"Conteúdo do arquivo em base64"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"type"}),e.jsx("td",{className:"p-2",children:"string?"}),e.jsx("td",{className:"p-2",children:"MIME type do arquivo"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"hasUserSignature"}),e.jsx("td",{className:"p-2",children:"boolean?"}),e.jsx("td",{className:"p-2",children:"Se o usuário já assinou"})]})]})]})}),e.jsx("h3",{className:"font-semibold mt-6 mb-2",children:"TermsOfUseDialog"}),e.jsx("div",{className:"overflow-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b",children:[e.jsx("th",{className:"text-left p-2",children:"Prop"}),e.jsx("th",{className:"text-left p-2",children:"Tipo"}),e.jsx("th",{className:"text-left p-2",children:"Descrição"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"term"}),e.jsx("td",{className:"p-2",children:"TermOfUse"}),e.jsx("td",{className:"p-2",children:"Termo a exibir"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"open"}),e.jsx("td",{className:"p-2",children:"boolean"}),e.jsx("td",{className:"p-2",children:"Controla visibilidade"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"onClose"}),e.jsx("td",{className:"p-2",children:"() => void"}),e.jsx("td",{className:"p-2",children:"Callback ao fechar"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"onAgree"}),e.jsx("td",{className:"p-2",children:"(termId) => void"}),e.jsx("td",{className:"p-2",children:"Callback ao concordar"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"title"}),e.jsx("td",{className:"p-2",children:"string?"}),e.jsx("td",{className:"p-2",children:"Título customizado"})]})]})]})}),e.jsx("h3",{className:"font-semibold mt-6 mb-2",children:"TermsOfUseViewer"}),e.jsx("div",{className:"overflow-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b",children:[e.jsx("th",{className:"text-left p-2",children:"Prop"}),e.jsx("th",{className:"text-left p-2",children:"Tipo"}),e.jsx("th",{className:"text-left p-2",children:"Descrição"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"term"}),e.jsx("td",{className:"p-2",children:"TermOfUse"}),e.jsx("td",{className:"p-2",children:"Termo a exibir"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"open"}),e.jsx("td",{className:"p-2",children:"boolean"}),e.jsx("td",{className:"p-2",children:"Controla visibilidade"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"onClose"}),e.jsx("td",{className:"p-2",children:"() => void"}),e.jsx("td",{className:"p-2",children:"Callback ao fechar"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"onSign"}),e.jsx("td",{className:"p-2",children:"(termId) => void?"}),e.jsx("td",{className:"p-2",children:"Callback ao assinar"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2 font-mono",children:"viewOnly"}),e.jsx("td",{className:"p-2",children:"boolean?"}),e.jsx("td",{className:"p-2",children:"Oculta botão de assinatura"})]})]})]})})]})]})]})}export{P as TermsOfUseDoc};
@@ -1,4 +1,4 @@
1
- import{j as e,cU as a,r as d,L as t,f as n}from"./index-CE0k7Rdh.js";import{C as m}from"./ComponentDocTemplate-CRbRY-v5.js";function p(){return e.jsx(m,{title:"Textarea",description:"Exibe um textarea de formulário ou um componente que se parece com um textarea.",component:e.jsx(a,{placeholder:"Digite sua mensagem aqui.",className:"w-full max-w-md"}),usage:`import { Textarea } from "forlogic-core"
1
+ import{j as e,M as a,r as d,J as t,x as c}from"./index-DkiftrvI.js";import{C as m}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function h(){return e.jsx(m,{title:"Textarea",description:"Exibe um textarea de formulário ou um componente que se parece com um textarea.",component:e.jsx(a,{placeholder:"Digite sua mensagem aqui.",className:"w-full max-w-md"}),usage:`import { Textarea } from "forlogic-core"
2
2
 
3
3
  <Textarea placeholder="Digite sua mensagem aqui." />`,examples:[{title:"Padrão",preview:e.jsx(a,{placeholder:"Digite sua mensagem aqui.",className:"max-w-md"}),code:'<Textarea placeholder="Digite sua mensagem aqui." />'},{title:"Com Contador de Caracteres",preview:(()=>{const[s,l]=d.useState(""),r=200;return e.jsxs("div",{className:"space-y-2 max-w-md",children:[e.jsx(a,{placeholder:"Digite sua mensagem...",value:s,onChange:o=>l(o.target.value),maxLength:r}),e.jsxs("div",{className:"flex justify-end text-sm text-muted-foreground",children:[s.length,"/",r," caracteres"]})]})})(),code:`const [text, setText] = useState('');
4
4
  const maxLength = 200;
@@ -17,7 +17,7 @@ const maxLength = 200;
17
17
  <Textarea placeholder="Desabilitado" disabled />
18
18
  <Textarea value="Somente leitura" readOnly />`},{title:"Tamanhos Customizados",preview:e.jsxs("div",{className:"space-y-4 max-w-md",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(t,{children:"Pequeno (3 linhas)"}),e.jsx(a,{rows:3,placeholder:"Textarea pequeno..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(t,{children:"Médio (5 linhas)"}),e.jsx(a,{rows:5,placeholder:"Textarea médio..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(t,{children:"Grande (10 linhas)"}),e.jsx(a,{rows:10,placeholder:"Textarea grande..."})]})]}),code:`<Textarea rows={3} placeholder="Pequeno" />
19
19
  <Textarea rows={5} placeholder="Médio" />
20
- <Textarea rows={10} placeholder="Grande" />`},{title:"Casos de Uso - Formulário de Feedback",preview:(()=>{const[s,l]=d.useState(""),[r,o]=d.useState(!1),i=()=>{o(!0),setTimeout(()=>{o(!1),l("")},2e3)};return e.jsxs("div",{className:"space-y-4 max-w-md",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(t,{htmlFor:"feedback",children:"Como podemos melhorar?"}),e.jsx(a,{id:"feedback",placeholder:"Compartilhe suas sugestões ou problemas...",value:s,onChange:c=>l(c.target.value),rows:5}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Seu feedback nos ajuda a melhorar o produto"})]}),e.jsx(n,{onClick:i,disabled:!s||r,className:"w-full",children:r?"Enviado!":"Enviar Feedback"})]})})(),code:`const [feedback, setFeedback] = useState('');
20
+ <Textarea rows={10} placeholder="Grande" />`},{title:"Casos de Uso - Formulário de Feedback",preview:(()=>{const[s,l]=d.useState(""),[r,o]=d.useState(!1),i=()=>{o(!0),setTimeout(()=>{o(!1),l("")},2e3)};return e.jsxs("div",{className:"space-y-4 max-w-md",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(t,{htmlFor:"feedback",children:"Como podemos melhorar?"}),e.jsx(a,{id:"feedback",placeholder:"Compartilhe suas sugestões ou problemas...",value:s,onChange:n=>l(n.target.value),rows:5}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Seu feedback nos ajuda a melhorar o produto"})]}),e.jsx(c,{onClick:i,disabled:!s||r,className:"w-full",children:r?"Enviado!":"Enviar Feedback"})]})})(),code:`const [feedback, setFeedback] = useState('');
21
21
 
22
22
  <div className="space-y-2">
23
23
  <Label>Como podemos melhorar?</Label>
@@ -29,7 +29,7 @@ const maxLength = 200;
29
29
  </div>
30
30
  <Button onClick={handleSubmit}>
31
31
  Enviar Feedback
32
- </Button>`},{title:"Casos de Uso - Editor de Notas",preview:(()=>{const[s,l]=d.useState(""),[r,o]=d.useState(!1),i=s.trim().split(/\s+/).filter(Boolean).length;return e.jsx("div",{className:"space-y-4 max-w-md",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx(t,{children:"Minhas Notas"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(n,{variant:"outline",size:"sm",onClick:()=>{o(!0),setTimeout(()=>o(!1),1500)},disabled:!s,children:r?"✓ Salvo":"Salvar"}),e.jsx(n,{variant:"ghost",size:"sm",onClick:()=>l(""),disabled:!s,children:"Limpar"})]})]}),e.jsx(a,{placeholder:"Comece a escrever suas notas...",value:s,onChange:c=>l(c.target.value),rows:6}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsxs("span",{children:[s.length," caracteres"]}),e.jsxs("span",{children:[i," palavras"]})]})]})})})(),code:`const [note, setNote] = useState('');
32
+ </Button>`},{title:"Casos de Uso - Editor de Notas",preview:(()=>{const[s,l]=d.useState(""),[r,o]=d.useState(!1),i=s.trim().split(/\s+/).filter(Boolean).length;return e.jsx("div",{className:"space-y-4 max-w-md",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx(t,{children:"Minhas Notas"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(c,{variant:"outline",size:"sm",onClick:()=>{o(!0),setTimeout(()=>o(!1),1500)},disabled:!s,children:r?"✓ Salvo":"Salvar"}),e.jsx(c,{variant:"ghost",size:"sm",onClick:()=>l(""),disabled:!s,children:"Limpar"})]})]}),e.jsx(a,{placeholder:"Comece a escrever suas notas...",value:s,onChange:n=>l(n.target.value),rows:6}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsxs("span",{children:[s.length," caracteres"]}),e.jsxs("span",{children:[i," palavras"]})]})]})})})(),code:`const [note, setNote] = useState('');
33
33
  const wordCount = note.trim().split(/s+/).filter(Boolean).length;
34
34
 
35
35
  <div className="space-y-2">
@@ -43,4 +43,4 @@ const wordCount = note.trim().split(/s+/).filter(Boolean).length;
43
43
  <span>{note.length} caracteres</span>
44
44
  <span>{wordCount} palavras</span>
45
45
  </div>
46
- </div>`}],props:[{name:"placeholder",type:"string",default:"-",description:"Texto do placeholder."},{name:"disabled",type:"boolean",default:"false",description:"Se o textarea está desabilitado."},{name:"rows",type:"number",default:"-",description:"Número de linhas de texto visíveis."}],accessibility:["Elemento HTML textarea padrão","Funciona com labels e controles de formulário","Acessível por teclado","Amigável para leitores de tela"]})}export{p as TextareaDoc};
46
+ </div>`}],props:[{name:"placeholder",type:"string",default:"-",description:"Texto do placeholder."},{name:"disabled",type:"boolean",default:"false",description:"Se o textarea está desabilitado."},{name:"rows",type:"number",default:"-",description:"Número de linhas de texto visíveis."}],accessibility:["Elemento HTML textarea padrão","Funciona com labels e controles de formulário","Acessível por teclado","Amigável para leitores de tela"]})}export{h as TextareaDoc};
@@ -1,4 +1,4 @@
1
- import{j as e,aA as c,aL as j,aB as g,aC as l,ar as d,at as m,au as i,av as n,aw as u,ax as o,f as a,u as s,C as p,a as x,b as h,aM as N,d as v,aD as C,ac as F,ad as b,ae as E,x as w,B,aN as T,E as k}from"./index-CE0k7Rdh.js";import{C as A}from"./ComponentDocTemplate-CRbRY-v5.js";import{C as S}from"./circle-x-BVAVJ_oz.js";function P(){return e.jsx(A,{title:"Toast",description:"Componente de notificação toast usando Sonner. Feedback temporário e não bloqueante que informa rapidamente o usuário sem competir visualmente com outros Toasts.",component:e.jsx(a,{variant:"outline",onClick:()=>s("Evento foi criado",{description:"Domingo, 03 de dezembro de 2023 às 9:00"}),children:"Mostrar Toast"}),usage:`import { toast } from "sonner"
1
+ import{j as e,aK as c,dU as j,aM as g,aN as l,T as d,i as m,k as i,l as n,p as u,q as o,x as a,Y as s,a as p,b as x,c as h,ar as N,d as v,a4 as F,aH as C,bp as b,aI as E,aJ as w,B,ew as T,aU as k}from"./index-DkiftrvI.js";import{C as A}from"./ComponentDocTemplate-CQbBhfvZ.js";import{C as S}from"./circle-x-jPpBPew0.js";import"./ExampleCard-DuLrb3t-.js";function I(){return e.jsx(A,{title:"Toast",description:"Componente de notificação toast usando Sonner. Feedback temporário e não bloqueante que informa rapidamente o usuário sem competir visualmente com outros Toasts.",component:e.jsx(a,{variant:"outline",onClick:()=>s("Evento foi criado",{description:"Domingo, 03 de dezembro de 2023 às 9:00"}),children:"Mostrar Toast"}),usage:`import { toast } from "sonner"
2
2
 
3
3
  // Informativo (BG #FFFFFF)
4
4
  toast("Mensagem simples")
@@ -43,7 +43,7 @@ toast("Mensagem", { closeButton: true })
43
43
  // CSS garante pointer-events:
44
44
  [data-sonner-toast] {
45
45
  pointer-events: auto !important;
46
- }`},{title:"Tipos de Toast (Comportamento Consistente)",preview:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs(c,{variant:"info",children:[e.jsx(C,{className:"h-4 w-4 text-blue-600"}),e.jsxs(l,{className:"text-blue-800",children:["O comportamento de empilhamento é ",e.jsx("strong",{children:"consistente entre todos os tipos"}),". A variação visual (cor, ícone) não altera o layout ou empilhamento."]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(a,{variant:"outline",onClick:()=>s.success("Operação realizada com sucesso!"),children:"Sucesso"}),e.jsx(a,{variant:"outline",onClick:()=>s.warning("Atenção requerida"),children:"Alerta"}),e.jsx(a,{variant:"outline",onClick:()=>s.error("Falha na operação"),children:"Erro"}),e.jsx(a,{variant:"outline",onClick:()=>s.info("Informação importante"),children:"Informativo"})]})]}),code:`// Todos os tipos seguem as mesmas regras de empilhamento
46
+ }`},{title:"Tipos de Toast (Comportamento Consistente)",preview:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs(c,{variant:"info",children:[e.jsx(F,{className:"h-4 w-4 text-blue-600"}),e.jsxs(l,{className:"text-blue-800",children:["O comportamento de empilhamento é ",e.jsx("strong",{children:"consistente entre todos os tipos"}),". A variação visual (cor, ícone) não altera o layout ou empilhamento."]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(a,{variant:"outline",onClick:()=>s.success("Operação realizada com sucesso!"),children:"Sucesso"}),e.jsx(a,{variant:"outline",onClick:()=>s.warning("Atenção requerida"),children:"Alerta"}),e.jsx(a,{variant:"outline",onClick:()=>s.error("Falha na operação"),children:"Erro"}),e.jsx(a,{variant:"outline",onClick:()=>s.info("Informação importante"),children:"Informativo"})]})]}),code:`// Todos os tipos seguem as mesmas regras de empilhamento
47
47
 
48
48
  // Sucesso (BG #E0FBE8)
49
49
  toast.success("Operação realizada com sucesso!")
@@ -99,7 +99,7 @@ toast.warning("Sessão expira em 5 minutos")
99
99
 
100
100
  // Erro (BG #FEE1E1)
101
101
  toast.error("Falha ao conectar com o servidor")
102
- toast.error("Permissão negada")`},{title:"Toast Customizado com JSX",preview:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(a,{variant:"outline",onClick:()=>s(e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(F,{className:"h-10 w-10",children:[e.jsx(b,{src:"https://github.com/shadcn.png"}),e.jsx(E,{children:"JD"})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"font-medium",children:"João da Silva"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Comentou no seu projeto"})]})]}),{duration:5e3}),children:"Notificação de Usuário"}),e.jsx(a,{variant:"outline",onClick:()=>s.success(e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(w,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Download concluído"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"relatorio-2024.pdf"}),e.jsx(B,{variant:"secondary",children:"2.4 MB"})]})]}),{duration:5e3}),children:"Download (Sucesso)"}),e.jsx(a,{variant:"outline",onClick:()=>s(e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"rounded-full bg-primary/10 p-2",children:e.jsx(T,{className:"h-4 w-4 text-primary"})}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"font-medium",children:"Novo convite recebido"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:'Maria te convidou para o projeto "Design System"'})]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(a,{size:"sm",variant:"default",onClick:()=>s.success("Convite aceito!"),children:"Aceitar"}),e.jsx(a,{size:"sm",variant:"outline",onClick:()=>s.warning("Convite recusado"),children:"Recusar"})]})]}),{duration:1/0,closeButton:!0}),children:"Com Botões Personalizados"}),e.jsx(a,{variant:"outline",onClick:()=>s.info(e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"h-4 w-4"}),e.jsx("span",{children:"Link copiado!"})]}),e.jsx(a,{size:"sm",variant:"link",className:"h-auto p-0",onClick:()=>window.open("https://lovable.dev","_blank"),children:"Abrir"})]})),children:"Com Link Externo"})]}),code:`// Informativo (BG #FFFFFF) - Notificação de usuário
102
+ toast.error("Permissão negada")`},{title:"Toast Customizado com JSX",preview:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(a,{variant:"outline",onClick:()=>s(e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(C,{className:"h-10 w-10",children:[e.jsx(b,{src:"https://github.com/shadcn.png"}),e.jsx(E,{children:"JD"})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"font-medium",children:"João da Silva"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Comentou no seu projeto"})]})]}),{duration:5e3}),children:"Notificação de Usuário"}),e.jsx(a,{variant:"outline",onClick:()=>s.success(e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(w,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Download concluído"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"relatorio-2024.pdf"}),e.jsx(B,{variant:"secondary",children:"2.4 MB"})]})]}),{duration:5e3}),children:"Download (Sucesso)"}),e.jsx(a,{variant:"outline",onClick:()=>s(e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"rounded-full bg-primary/10 p-2",children:e.jsx(T,{className:"h-4 w-4 text-primary"})}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"font-medium",children:"Novo convite recebido"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:'Maria te convidou para o projeto "Design System"'})]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(a,{size:"sm",variant:"default",onClick:()=>s.success("Convite aceito!"),children:"Aceitar"}),e.jsx(a,{size:"sm",variant:"outline",onClick:()=>s.warning("Convite recusado"),children:"Recusar"})]})]}),{duration:1/0,closeButton:!0}),children:"Com Botões Personalizados"}),e.jsx(a,{variant:"outline",onClick:()=>s.info(e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"h-4 w-4"}),e.jsx("span",{children:"Link copiado!"})]}),e.jsx(a,{size:"sm",variant:"link",className:"h-auto p-0",onClick:()=>window.open("https://lovable.dev","_blank"),children:"Abrir"})]})),children:"Com Link Externo"})]}),code:`// Informativo (BG #FFFFFF) - Notificação de usuário
103
103
  toast(
104
104
  <div className="flex items-center gap-3">
105
105
  <Avatar className="h-10 w-10">
@@ -154,4 +154,4 @@ toast(
154
154
  </div>
155
155
  </div>,
156
156
  { duration: Infinity, closeButton: true }
157
- )`}],props:[{name:"message",type:"string | ReactNode",default:"-",description:"Texto principal ou conteúdo do toast."},{name:"description",type:"string | ReactNode",default:"-",description:"Descrição adicional exibida abaixo do título."},{name:"action",type:"{ label: string, onClick: () => void }",default:"-",description:"Botão de ação principal."},{name:"cancel",type:"{ label: string, onClick: () => void }",default:"-",description:"Botão de cancelamento secundário."},{name:"duration",type:"number",default:"4000",description:"Duração em ms antes de dispensar. Use Infinity para persistir."},{name:"closeButton",type:"boolean",default:"false",description:"Exibe botão X para fechar o toast."},{name:"icon",type:"ReactNode",default:"-",description:"Ícone personalizado para o toast."},{name:"id",type:"string | number",default:"-",description:"ID único para atualizar ou dispensar o toast."},{name:"onDismiss",type:"(toast) => void",default:"-",description:"Callback executado quando o toast é dispensado."},{name:"onAutoClose",type:"(toast) => void",default:"-",description:"Callback executado quando o toast fecha automaticamente."}],accessibility:["Utiliza ARIA live regions para anunciar toasts aos leitores de tela","Dispensável via tecla Escape","Auto-dispensa com duração configurável respeitando usabilidade","Suporte a swipe para dispensar em dispositivos touch","Respeita prefers-reduced-motion do sistema operacional","Foco gerenciado corretamente quando toast contém elementos interativos"],notes:["Informativo (#FFFFFF): toast() e toast.info() - Para informações contextuais e notificações neutras","Sucesso (#E0FBE8): toast.success() - Para feedback de operações bem-sucedidas","Alerta (#FEF3C8): toast.warning() - Para alertas que requerem atenção do usuário","Erro (#FEE1E1): toast.error() - Para erros e falhas, considere incluir ação de retry","Use toast.promise() para operações assíncronas com feedback de loading","Mantenha mensagens curtas e objetivas (máximo 2 linhas)",'Forneça ação de "Desfazer" para operações destrutivas quando possível',"Evite usar duration: Infinity sem closeButton ou action para dispensar"]})}export{P as ToastDoc};
157
+ )`}],props:[{name:"message",type:"string | ReactNode",default:"-",description:"Texto principal ou conteúdo do toast."},{name:"description",type:"string | ReactNode",default:"-",description:"Descrição adicional exibida abaixo do título."},{name:"action",type:"{ label: string, onClick: () => void }",default:"-",description:"Botão de ação principal."},{name:"cancel",type:"{ label: string, onClick: () => void }",default:"-",description:"Botão de cancelamento secundário."},{name:"duration",type:"number",default:"4000",description:"Duração em ms antes de dispensar. Use Infinity para persistir."},{name:"closeButton",type:"boolean",default:"false",description:"Exibe botão X para fechar o toast."},{name:"icon",type:"ReactNode",default:"-",description:"Ícone personalizado para o toast."},{name:"id",type:"string | number",default:"-",description:"ID único para atualizar ou dispensar o toast."},{name:"onDismiss",type:"(toast) => void",default:"-",description:"Callback executado quando o toast é dispensado."},{name:"onAutoClose",type:"(toast) => void",default:"-",description:"Callback executado quando o toast fecha automaticamente."}],accessibility:["Utiliza ARIA live regions para anunciar toasts aos leitores de tela","Dispensável via tecla Escape","Auto-dispensa com duração configurável respeitando usabilidade","Suporte a swipe para dispensar em dispositivos touch","Respeita prefers-reduced-motion do sistema operacional","Foco gerenciado corretamente quando toast contém elementos interativos"],notes:["Informativo (#FFFFFF): toast() e toast.info() - Para informações contextuais e notificações neutras","Sucesso (#E0FBE8): toast.success() - Para feedback de operações bem-sucedidas","Alerta (#FEF3C8): toast.warning() - Para alertas que requerem atenção do usuário","Erro (#FEE1E1): toast.error() - Para erros e falhas, considere incluir ação de retry","Use toast.promise() para operações assíncronas com feedback de loading","Mantenha mensagens curtas e objetivas (máximo 2 linhas)",'Forneça ação de "Desfazer" para operações destrutivas quando possível',"Evite usar duration: Infinity sem closeButton ou action para dispensar"]})}export{I as ToastDoc};
@@ -1,4 +1,4 @@
1
- import{j as e,N as r,O as a,Q as o,R as l,U as i,V as t}from"./index-CE0k7Rdh.js";import{C as s}from"./ComponentDocTemplate-CRbRY-v5.js";import{T as g,a as n,b as d}from"./text-align-start-6aYQqbX4.js";function m(){return e.jsx(s,{title:"Toggle",description:"Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.",component:e.jsxs(o,{type:"multiple",children:[e.jsx(l,{value:"bold","aria-label":"Toggle bold",children:e.jsx(a,{className:"h-4 w-4"})}),e.jsx(l,{value:"italic","aria-label":"Toggle italic",children:e.jsx(i,{className:"h-4 w-4"})}),e.jsx(l,{value:"underline","aria-label":"Toggle underline",children:e.jsx(t,{className:"h-4 w-4"})})]}),usage:`import { Toggle, ToggleGroup, ToggleGroupItem } from "forlogic-core"
1
+ import{j as e,b1 as r,b2 as a,b3 as o,b4 as l,b5 as i,b6 as t}from"./index-DkiftrvI.js";import{C as s}from"./ComponentDocTemplate-CQbBhfvZ.js";import{T as g,a as n,b as d}from"./text-align-start-qE-MbYYw.js";import"./ExampleCard-DuLrb3t-.js";function T(){return e.jsx(s,{title:"Toggle",description:"Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.",component:e.jsxs(o,{type:"multiple",children:[e.jsx(l,{value:"bold","aria-label":"Toggle bold",children:e.jsx(a,{className:"h-4 w-4"})}),e.jsx(l,{value:"italic","aria-label":"Toggle italic",children:e.jsx(i,{className:"h-4 w-4"})}),e.jsx(l,{value:"underline","aria-label":"Toggle underline",children:e.jsx(t,{className:"h-4 w-4"})})]}),usage:`import { Toggle, ToggleGroup, ToggleGroupItem } from "forlogic-core"
2
2
  import { Bold, Italic } from "lucide-react"
3
3
 
4
4
  // Toggle individual
@@ -48,4 +48,4 @@ import { AlignLeft, AlignCenter, AlignRight } from "lucide-react"
48
48
  <ToggleGroupItem value="right" aria-label="Alinhar à direita">
49
49
  <AlignRight className="h-4 w-4" />
50
50
  </ToggleGroupItem>
51
- </ToggleGroup>`}],props:[{name:"pressed",type:"boolean",default:"-",description:"Estado controlado do Toggle."},{name:"defaultPressed",type:"boolean",default:"false",description:"Estado inicial não controlado do Toggle."},{name:"onPressedChange",type:"(pressed: boolean) => void",default:"-",description:"Callback quando o estado do Toggle muda."},{name:"disabled",type:"boolean",default:"false",description:"Desabilita a interação."},{name:"aria-label",type:"string",default:"-",description:"Obrigatório para acessibilidade quando não há texto visível."},{name:"type",type:'"single" | "multiple"',default:"-",description:"Modo de seleção do ToggleGroup (obrigatório)."},{name:"value",type:"string | string[]",default:"-",description:"Valor(es) controlado(s) do ToggleGroup."},{name:"defaultValue",type:"string | string[]",default:"-",description:"Valor(es) inicial(is) não controlado(s) do ToggleGroup."},{name:"onValueChange",type:"(value: string | string[]) => void",default:"-",description:"Callback quando o valor do ToggleGroup muda."}],accessibility:['Role "button" com aria-pressed aplicado automaticamente',"Suporte completo de teclado (Espaço/Enter para alternar)","Navegação por setas entre itens do ToggleGroup","aria-label obrigatório para toggles apenas com ícones","Estados aria-pressed comunicados para leitores de tela","Indicadores visuais de foco e estado ativo","ToggleGroup implementa padrão roving tabindex"]})}export{m as ToggleDoc};
51
+ </ToggleGroup>`}],props:[{name:"pressed",type:"boolean",default:"-",description:"Estado controlado do Toggle."},{name:"defaultPressed",type:"boolean",default:"false",description:"Estado inicial não controlado do Toggle."},{name:"onPressedChange",type:"(pressed: boolean) => void",default:"-",description:"Callback quando o estado do Toggle muda."},{name:"disabled",type:"boolean",default:"false",description:"Desabilita a interação."},{name:"aria-label",type:"string",default:"-",description:"Obrigatório para acessibilidade quando não há texto visível."},{name:"type",type:'"single" | "multiple"',default:"-",description:"Modo de seleção do ToggleGroup (obrigatório)."},{name:"value",type:"string | string[]",default:"-",description:"Valor(es) controlado(s) do ToggleGroup."},{name:"defaultValue",type:"string | string[]",default:"-",description:"Valor(es) inicial(is) não controlado(s) do ToggleGroup."},{name:"onValueChange",type:"(value: string | string[]) => void",default:"-",description:"Callback quando o valor do ToggleGroup muda."}],accessibility:['Role "button" com aria-pressed aplicado automaticamente',"Suporte completo de teclado (Espaço/Enter para alternar)","Navegação por setas entre itens do ToggleGroup","aria-label obrigatório para toggles apenas com ícones","Estados aria-pressed comunicados para leitores de tela","Indicadores visuais de foco e estado ativo","ToggleGroup implementa padrão roving tabindex"]})}export{T as ToggleDoc};
@@ -1,4 +1,4 @@
1
- import{j as e,c$ as s,d0 as o,d1 as i,aL as r,d2 as t,f as a,ba as d,b8 as p}from"./index-CE0k7Rdh.js";import{C as c}from"./ComponentDocTemplate-CRbRY-v5.js";function u(){const l=`import {
1
+ import{j as e,f8 as r,f9 as o,fa as i,dU as s,fb as t,x as a,dx as d,dv as p}from"./index-DkiftrvI.js";import{C as c}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function x(){const l=`import {
2
2
  Tooltip,
3
3
  TooltipContent,
4
4
  TooltipProvider,
@@ -14,7 +14,7 @@ import{j as e,c$ as s,d0 as o,d1 as i,aL as r,d2 as t,f as a,ba as d,b8 as p}fro
14
14
  <p>Adicionar à biblioteca</p>
15
15
  </TooltipContent>
16
16
  </Tooltip>
17
- </TooltipProvider>`,n=e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(s,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",children:"Hover"})}),e.jsx(t,{children:e.jsx("p",{children:"Adicionar à biblioteca"})})]})})});return e.jsx(c,{title:"Tooltip",description:"Um popup que exibe informações relacionadas a um elemento quando o elemento recebe foco do teclado ou o mouse passa sobre ele.",component:n,usage:l,examples:[{title:"Tooltip em Ícone",description:"Tooltip exibido ao passar o cursor sobre um ícone de informação.",preview:e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(s,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(r,{className:"h-4 w-4 text-muted-foreground cursor-help"})}),e.jsx(t,{children:e.jsx("p",{children:"Esta é uma dica de ajuda"})})]})})}),code:`<TooltipProvider>
17
+ </TooltipProvider>`,n=e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(r,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",children:"Hover"})}),e.jsx(t,{children:e.jsx("p",{children:"Adicionar à biblioteca"})})]})})});return e.jsx(c,{title:"Tooltip",description:"Um popup que exibe informações relacionadas a um elemento quando o elemento recebe foco do teclado ou o mouse passa sobre ele.",component:n,usage:l,examples:[{title:"Tooltip em Ícone",description:"Tooltip exibido ao passar o cursor sobre um ícone de informação.",preview:e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(r,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(s,{className:"h-4 w-4 text-muted-foreground cursor-help"})}),e.jsx(t,{children:e.jsx("p",{children:"Esta é uma dica de ajuda"})})]})})}),code:`<TooltipProvider>
18
18
  <Tooltip>
19
19
  <TooltipTrigger asChild>
20
20
  <Info className="h-4 w-4 text-muted-foreground cursor-help" />
@@ -23,10 +23,10 @@ import{j as e,c$ as s,d0 as o,d1 as i,aL as r,d2 as t,f as a,ba as d,b8 as p}fro
23
23
  <p>Esta é uma dica de ajuda</p>
24
24
  </TooltipContent>
25
25
  </Tooltip>
26
- </TooltipProvider>`},{title:"Posicionamento",description:"Controle o lado onde o tooltip aparece usando a prop side.",preview:e.jsxs("div",{className:"flex justify-center gap-4 py-8",children:[e.jsx(s,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"Top"})}),e.jsx(t,{side:"top",children:e.jsx("p",{children:"Tooltip no topo"})})]})}),e.jsx(s,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"Bottom"})}),e.jsx(t,{side:"bottom",children:e.jsx("p",{children:"Tooltip embaixo"})})]})}),e.jsx(s,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"Left"})}),e.jsx(t,{side:"left",children:e.jsx("p",{children:"Tooltip à esquerda"})})]})}),e.jsx(s,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"Right"})}),e.jsx(t,{side:"right",children:e.jsx("p",{children:"Tooltip à direita"})})]})})]}),code:`<TooltipContent side="top">...</TooltipContent>
26
+ </TooltipProvider>`},{title:"Posicionamento",description:"Controle o lado onde o tooltip aparece usando a prop side.",preview:e.jsxs("div",{className:"flex justify-center gap-4 py-8",children:[e.jsx(r,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"Top"})}),e.jsx(t,{side:"top",children:e.jsx("p",{children:"Tooltip no topo"})})]})}),e.jsx(r,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"Bottom"})}),e.jsx(t,{side:"bottom",children:e.jsx("p",{children:"Tooltip embaixo"})})]})}),e.jsx(r,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"Left"})}),e.jsx(t,{side:"left",children:e.jsx("p",{children:"Tooltip à esquerda"})})]})}),e.jsx(r,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"Right"})}),e.jsx(t,{side:"right",children:e.jsx("p",{children:"Tooltip à direita"})})]})})]}),code:`<TooltipContent side="top">...</TooltipContent>
27
27
  <TooltipContent side="bottom">...</TooltipContent>
28
28
  <TooltipContent side="left">...</TooltipContent>
29
- <TooltipContent side="right">...</TooltipContent>`},{title:"Delay Customizado",description:"Ajuste o tempo de exibição com delayDuration e skipDelayDuration.",preview:e.jsxs("div",{className:"flex justify-center gap-4 py-8",children:[e.jsx(s,{delayDuration:0,children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"Sem delay"})}),e.jsx(t,{children:e.jsx("p",{children:"Aparece instantaneamente"})})]})}),e.jsx(s,{delayDuration:1e3,children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"1s delay"})}),e.jsx(t,{children:e.jsx("p",{children:"Aparece após 1 segundo"})})]})})]}),code:`// Sem delay
29
+ <TooltipContent side="right">...</TooltipContent>`},{title:"Delay Customizado",description:"Ajuste o tempo de exibição com delayDuration e skipDelayDuration.",preview:e.jsxs("div",{className:"flex justify-center gap-4 py-8",children:[e.jsx(r,{delayDuration:0,children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"Sem delay"})}),e.jsx(t,{children:e.jsx("p",{children:"Aparece instantaneamente"})})]})}),e.jsx(r,{delayDuration:1e3,children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",size:"sm",children:"1s delay"})}),e.jsx(t,{children:e.jsx("p",{children:"Aparece após 1 segundo"})})]})})]}),code:`// Sem delay
30
30
  <TooltipProvider delayDuration={0}>
31
31
  <Tooltip>...</Tooltip>
32
32
  </TooltipProvider>
@@ -34,7 +34,7 @@ import{j as e,c$ as s,d0 as o,d1 as i,aL as r,d2 as t,f as a,ba as d,b8 as p}fro
34
34
  // Delay de 1 segundo
35
35
  <TooltipProvider delayDuration={1000}>
36
36
  <Tooltip>...</Tooltip>
37
- </TooltipProvider>`},{title:"Múltiplos Tooltips",description:"Use um único TooltipProvider para compartilhar delay entre tooltips.",preview:e.jsx("div",{className:"flex justify-center gap-4 py-8",children:e.jsxs(s,{delayDuration:100,skipDelayDuration:0,children:[e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"ghost",size:"icon",children:e.jsx(r,{className:"h-4 w-4"})})}),e.jsx(t,{children:e.jsx("p",{children:"Informação"})})]}),e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"ghost",size:"icon",children:e.jsx(d,{className:"h-4 w-4"})})}),e.jsx(t,{children:e.jsx("p",{children:"Ajuda"})})]}),e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"ghost",size:"icon",children:e.jsx(p,{className:"h-4 w-4"})})}),e.jsx(t,{children:e.jsx("p",{children:"Alerta"})})]})]})}),code:`// Provider compartilhado - mover entre tooltips é instantâneo
37
+ </TooltipProvider>`},{title:"Múltiplos Tooltips",description:"Use um único TooltipProvider para compartilhar delay entre tooltips.",preview:e.jsx("div",{className:"flex justify-center gap-4 py-8",children:e.jsxs(r,{delayDuration:100,skipDelayDuration:0,children:[e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"ghost",size:"icon",children:e.jsx(s,{className:"h-4 w-4"})})}),e.jsx(t,{children:e.jsx("p",{children:"Informação"})})]}),e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"ghost",size:"icon",children:e.jsx(d,{className:"h-4 w-4"})})}),e.jsx(t,{children:e.jsx("p",{children:"Ajuda"})})]}),e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"ghost",size:"icon",children:e.jsx(p,{className:"h-4 w-4"})})}),e.jsx(t,{children:e.jsx("p",{children:"Alerta"})})]})]})}),code:`// Provider compartilhado - mover entre tooltips é instantâneo
38
38
  <TooltipProvider delayDuration={100} skipDelayDuration={0}>
39
39
  <Tooltip>
40
40
  <TooltipTrigger asChild>
@@ -48,11 +48,11 @@ import{j as e,c$ as s,d0 as o,d1 as i,aL as r,d2 as t,f as a,ba as d,b8 as p}fro
48
48
  </TooltipTrigger>
49
49
  <TooltipContent><p>Ajuda</p></TooltipContent>
50
50
  </Tooltip>
51
- </TooltipProvider>`},{title:"Com Conteúdo Rico",description:"Tooltips podem conter múltiplas linhas e formatação.",preview:e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(s,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",children:"Mais informações"})}),e.jsx(t,{className:"max-w-xs",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"Título do Tooltip"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Descrição mais detalhada que pode ocupar múltiplas linhas."})]})})]})})}),code:`<TooltipContent className="max-w-xs">
51
+ </TooltipProvider>`},{title:"Com Conteúdo Rico",description:"Tooltips podem conter múltiplas linhas e formatação.",preview:e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(r,{children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(a,{variant:"outline",children:"Mais informações"})}),e.jsx(t,{className:"max-w-xs",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"Título do Tooltip"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Descrição mais detalhada que pode ocupar múltiplas linhas."})]})})]})})}),code:`<TooltipContent className="max-w-xs">
52
52
  <div className="space-y-1">
53
53
  <p className="font-semibold">Título do Tooltip</p>
54
54
  <p className="text-xs text-muted-foreground">
55
55
  Descrição mais detalhada...
56
56
  </p>
57
57
  </div>
58
- </TooltipContent>`}],props:[{name:"delayDuration",type:"number",default:"300",description:"TooltipProvider: Atraso em ms antes de exibir o tooltip"},{name:"skipDelayDuration",type:"number",default:"300",description:"TooltipProvider: Tempo para pular o delay ao mover entre tooltips"},{name:"disableHoverableContent",type:"boolean",default:"false",description:"TooltipProvider: Impede que o conteúdo permaneça aberto ao passar o mouse"},{name:"open",type:"boolean",default:"-",description:"Tooltip: Estado controlado de abertura"},{name:"defaultOpen",type:"boolean",default:"false",description:"Tooltip: Estado inicial (não controlado)"},{name:"onOpenChange",type:"(open: boolean) => void",default:"-",description:"Tooltip: Callback quando o estado muda"},{name:"side",type:'"top" | "right" | "bottom" | "left"',default:'"top"',description:"TooltipContent: Lado preferido de posicionamento"},{name:"sideOffset",type:"number",default:"4",description:"TooltipContent: Distância em pixels do trigger"},{name:"align",type:'"start" | "center" | "end"',default:'"center"',description:"TooltipContent: Alinhamento em relação ao trigger"},{name:"alignOffset",type:"number",default:"0",description:"TooltipContent: Offset do alinhamento em pixels"}],accessibility:["Exibido ao focar no elemento trigger via teclado","Fechado automaticamente ao pressionar Escape",'role="tooltip" aplicado automaticamente',"Associação via aria-describedby","Não depende apenas de hover (acessível via focus)"],notes:["Use TooltipProvider como wrapper para compartilhar delays entre tooltips","Prefira Tooltip para dicas curtas, use Popover para conteúdo interativo","Evite tooltips em elementos que requerem ação rápida (botões principais)","Combine com ícones de informação para ajuda contextual","Use delayDuration={0} para exibição instantânea quando necessário"]})}export{u as TooltipDoc};
58
+ </TooltipContent>`}],props:[{name:"delayDuration",type:"number",default:"300",description:"TooltipProvider: Atraso em ms antes de exibir o tooltip"},{name:"skipDelayDuration",type:"number",default:"300",description:"TooltipProvider: Tempo para pular o delay ao mover entre tooltips"},{name:"disableHoverableContent",type:"boolean",default:"false",description:"TooltipProvider: Impede que o conteúdo permaneça aberto ao passar o mouse"},{name:"open",type:"boolean",default:"-",description:"Tooltip: Estado controlado de abertura"},{name:"defaultOpen",type:"boolean",default:"false",description:"Tooltip: Estado inicial (não controlado)"},{name:"onOpenChange",type:"(open: boolean) => void",default:"-",description:"Tooltip: Callback quando o estado muda"},{name:"side",type:'"top" | "right" | "bottom" | "left"',default:'"top"',description:"TooltipContent: Lado preferido de posicionamento"},{name:"sideOffset",type:"number",default:"4",description:"TooltipContent: Distância em pixels do trigger"},{name:"align",type:'"start" | "center" | "end"',default:'"center"',description:"TooltipContent: Alinhamento em relação ao trigger"},{name:"alignOffset",type:"number",default:"0",description:"TooltipContent: Offset do alinhamento em pixels"}],accessibility:["Exibido ao focar no elemento trigger via teclado","Fechado automaticamente ao pressionar Escape",'role="tooltip" aplicado automaticamente',"Associação via aria-describedby","Não depende apenas de hover (acessível via focus)"],notes:["Use TooltipProvider como wrapper para compartilhar delays entre tooltips","Prefira Tooltip para dicas curtas, use Popover para conteúdo interativo","Evite tooltips em elementos que requerem ação rápida (botões principais)","Combine com ícones de informação para ajuda contextual","Use delayDuration={0} para exibição instantânea quando necessário"]})}export{x as TooltipDoc};
@@ -1,4 +1,4 @@
1
- import{j as e,az as t}from"./index-CE0k7Rdh.js";import{C as o}from"./ComponentDocTemplate-CRbRY-v5.js";const a=`import { TruncatedCell } from 'forlogic-core';
1
+ import{j as e,s as t}from"./index-DkiftrvI.js";import{C as o}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";const a=`import { TruncatedCell } from 'forlogic-core';
2
2
 
3
3
  <td className="max-w-[200px]">
4
4
  <TruncatedCell>
@@ -9,4 +9,4 @@ import{j as e,az as t}from"./index-CE0k7Rdh.js";import{C as o}from"./ComponentDo
9
9
  // Com className customizada
10
10
  <TruncatedCell className="text-muted-foreground">
11
11
  {item.description}
12
- </TruncatedCell>`;function s(){return e.jsx("div",{className:"border rounded-lg overflow-hidden",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b bg-muted/50",children:[e.jsx("th",{className:"text-left p-3 w-[200px]",children:"Nome"}),e.jsx("th",{className:"text-left p-3 w-[150px]",children:"Status"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-3 w-[200px] max-w-[200px]",children:e.jsx(t,{children:"Texto curto"})}),e.jsx("td",{className:"p-3",children:"Ativo"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-3 w-[200px] max-w-[200px]",children:e.jsx(t,{children:"Este é um texto muito longo que será truncado automaticamente e mostrará tooltip ao passar o mouse"})}),e.jsx("td",{className:"p-3",children:"Ativo"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-3 w-[200px] max-w-[200px]",children:e.jsx(t,{children:"Outro texto extremamente longo para demonstrar que o tooltip só aparece quando o texto realmente está truncado pelo container"})}),e.jsx("td",{className:"p-3",children:"Inativo"})]})]})]})})}function c(){return e.jsx(o,{title:"Truncated Cell",description:"Componente utilitário que trunca texto longo e exibe tooltip automático quando o conteúdo está cortado.",component:e.jsx(s,{}),usage:a,props:[{name:"children",type:"ReactNode",description:"Conteúdo a ser renderizado (e truncado se necessário)"},{name:"className",type:"string",description:"Classes CSS adicionais para o container"}],accessibility:["Tooltip automático garante que o conteúdo completo é acessível via hover/focus","Usa role tooltip com aria para leitores de tela"],notes:["O componente usa ResizeObserver para detectar truncamento — zero overhead quando o texto cabe no espaço","Ideal para células de tabela, listas e áreas com largura fixa","O container pai deve ter max-width definido para que o truncamento funcione"]})}export{c as TruncatedCellDoc};
12
+ </TruncatedCell>`;function s(){return e.jsx("div",{className:"border rounded-lg overflow-hidden",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b bg-muted/50",children:[e.jsx("th",{className:"text-left p-3 w-[200px]",children:"Nome"}),e.jsx("th",{className:"text-left p-3 w-[150px]",children:"Status"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-3 w-[200px] max-w-[200px]",children:e.jsx(t,{children:"Texto curto"})}),e.jsx("td",{className:"p-3",children:"Ativo"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-3 w-[200px] max-w-[200px]",children:e.jsx(t,{children:"Este é um texto muito longo que será truncado automaticamente e mostrará tooltip ao passar o mouse"})}),e.jsx("td",{className:"p-3",children:"Ativo"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-3 w-[200px] max-w-[200px]",children:e.jsx(t,{children:"Outro texto extremamente longo para demonstrar que o tooltip só aparece quando o texto realmente está truncado pelo container"})}),e.jsx("td",{className:"p-3",children:"Inativo"})]})]})]})})}function l(){return e.jsx(o,{title:"Truncated Cell",description:"Componente utilitário que trunca texto longo e exibe tooltip automático quando o conteúdo está cortado.",component:e.jsx(s,{}),usage:a,props:[{name:"children",type:"ReactNode",description:"Conteúdo a ser renderizado (e truncado se necessário)"},{name:"className",type:"string",description:"Classes CSS adicionais para o container"}],accessibility:["Tooltip automático garante que o conteúdo completo é acessível via hover/focus","Usa role tooltip com aria para leitores de tela"],notes:["O componente usa ResizeObserver para detectar truncamento — zero overhead quando o texto cabe no espaço","Ideal para células de tabela, listas e áreas com largura fixa","O container pai deve ter max-width definido para que o truncamento funcione"]})}export{l as TruncatedCellDoc};
@@ -0,0 +1,7 @@
1
+ import{j as e,a as n,b as a,c as d,e as o,d as r}from"./index-DkiftrvI.js";const s={sans:'Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif',mono:'"Roboto Mono", Menlo, Monaco, "Courier New", monospace'},i={"display-lg":{size:"4.5rem",lineHeight:"1",letterSpacing:"-0.02em"},"display-md":{size:"3.75rem",lineHeight:"1.05",letterSpacing:"-0.015em"},"heading-h1":{size:"3rem",lineHeight:"1.1",letterSpacing:"-0.01em"},"heading-h2":{size:"2.25rem",lineHeight:"1.15",letterSpacing:"-0.008em"},"heading-h3":{size:"1.875rem",lineHeight:"1.2",letterSpacing:"-0.005em"},"heading-h4":{size:"1.5rem",lineHeight:"1.3",letterSpacing:"0"},"heading-h5":{size:"1.25rem",lineHeight:"1.4",letterSpacing:"0"},"heading-h6":{size:"1.125rem",lineHeight:"1.5",letterSpacing:"0"},"subtitle-lg":{size:"1.125rem",lineHeight:"1.55",letterSpacing:"0.005em"},"subtitle-md":{size:"1rem",lineHeight:"1.6",letterSpacing:"0.01em"},"body-lg":{size:"1.125rem",lineHeight:"1.75"},"body-md":{size:"1rem",lineHeight:"1.75"},"label-lg":{size:"0.875rem",lineHeight:"1.5",letterSpacing:"0.01em"},"label-md":{size:"0.75rem",lineHeight:"1.5",letterSpacing:"0.015em"},"label-sm":{size:"0.6875rem",lineHeight:"1.5",letterSpacing:"0.02em"},caption:{size:"0.625rem",lineHeight:"1.5",letterSpacing:"0.02em"},code:{size:"0.875rem",lineHeight:"1.7"}},t={normal:"400",medium:"500",semibold:"600",bold:"700"},g={displayLarge:{fontFamily:s.sans,fontSize:i["display-lg"].size,lineHeight:i["display-lg"].lineHeight,letterSpacing:i["display-lg"].letterSpacing,fontWeight:t.bold},displayMedium:{fontFamily:s.sans,fontSize:i["display-md"].size,lineHeight:i["display-md"].lineHeight,letterSpacing:i["display-md"].letterSpacing,fontWeight:t.bold},h1:{fontFamily:s.sans,fontSize:i["heading-h1"].size,lineHeight:i["heading-h1"].lineHeight,letterSpacing:i["heading-h1"].letterSpacing,fontWeight:t.bold},h2:{fontFamily:s.sans,fontSize:i["heading-h2"].size,lineHeight:i["heading-h2"].lineHeight,letterSpacing:i["heading-h2"].letterSpacing,fontWeight:t.bold},h3:{fontFamily:s.sans,fontSize:i["heading-h3"].size,lineHeight:i["heading-h3"].lineHeight,letterSpacing:i["heading-h3"].letterSpacing,fontWeight:t.semibold},h4:{fontFamily:s.sans,fontSize:i["heading-h4"].size,lineHeight:i["heading-h4"].lineHeight,letterSpacing:i["heading-h4"].letterSpacing,fontWeight:t.semibold},h5:{fontFamily:s.sans,fontSize:i["heading-h5"].size,lineHeight:i["heading-h5"].lineHeight,letterSpacing:i["heading-h5"].letterSpacing,fontWeight:t.semibold},h6:{fontFamily:s.sans,fontSize:i["heading-h6"].size,lineHeight:i["heading-h6"].lineHeight,letterSpacing:i["heading-h6"].letterSpacing,fontWeight:t.semibold},subtitleLarge:{fontFamily:s.sans,fontSize:i["subtitle-lg"].size,lineHeight:i["subtitle-lg"].lineHeight,letterSpacing:i["subtitle-lg"].letterSpacing,fontWeight:t.medium},subtitleMedium:{fontFamily:s.sans,fontSize:i["subtitle-md"].size,lineHeight:i["subtitle-md"].lineHeight,letterSpacing:i["subtitle-md"].letterSpacing,fontWeight:t.medium},bodyLarge:{fontFamily:s.sans,fontSize:i["body-lg"].size,lineHeight:i["body-lg"].lineHeight,fontWeight:t.normal},bodyMedium:{fontFamily:s.sans,fontSize:i["body-md"].size,lineHeight:i["body-md"].lineHeight,fontWeight:t.normal},labelLarge:{fontFamily:s.sans,fontSize:i["label-lg"].size,lineHeight:i["label-lg"].lineHeight,letterSpacing:i["label-lg"].letterSpacing,fontWeight:t.medium},labelMedium:{fontFamily:s.sans,fontSize:i["label-md"].size,lineHeight:i["label-md"].lineHeight,letterSpacing:i["label-md"].letterSpacing,fontWeight:t.medium},labelSmall:{fontFamily:s.sans,fontSize:i["label-sm"].size,lineHeight:i["label-sm"].lineHeight,letterSpacing:i["label-sm"].letterSpacing,fontWeight:t.medium},caption:{fontFamily:s.sans,fontSize:i.caption.size,lineHeight:i.caption.lineHeight,letterSpacing:i.caption.letterSpacing,fontWeight:t.normal},code:{fontFamily:s.mono,fontSize:i.code.size,lineHeight:i.code.lineHeight,fontWeight:t.normal}};function p(){return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Sistema Tipográfico"}),e.jsx("p",{className:"text-lg text-muted-foreground mb-6",children:"Sistema tipográfico profissional com Display (2 níveis), Headings (6 níveis), Subtitle (2 níveis), Body (2 níveis), Label (3 níveis), Caption e Monospace (Code). Todos os níveis incluem escalamento responsivo e conformidade de acessibilidade."})]}),e.jsxs(n,{children:[e.jsxs(a,{children:[e.jsx(d,{children:"Display (2 níveis)"}),e.jsx(o,{children:"Texto grande e impactante para seções hero e conteúdo de marketing"})]}),e.jsxs(r,{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:i["display-lg"].size,lineHeight:i["display-lg"].lineHeight,letterSpacing:i["display-lg"].letterSpacing,fontWeight:t.bold},children:"Display Large"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto · 72px · Bold · Line height 1.0 · Letter spacing -0.02em"})]}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:i["display-md"].size,lineHeight:i["display-md"].lineHeight,letterSpacing:i["display-md"].letterSpacing,fontWeight:t.bold},children:"Display Medium"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto · 60px · Bold · Line height 1.05 · Letter spacing -0.015em"})]})]})]}),e.jsxs(n,{children:[e.jsxs(a,{children:[e.jsx(d,{children:"Cabeçalhos (6 níveis)"}),e.jsx(o,{children:"Cabeçalhos hierárquicos de H1 a H6"})]}),e.jsx(r,{className:"space-y-4",children:["h1","h2","h3","h4","h5","h6"].map(h=>{const l=g[h],c="letterSpacing"in l?l.letterSpacing:"0";return e.jsxs("div",{children:[e.jsxs("div",{style:{fontSize:l.fontSize,lineHeight:l.lineHeight,letterSpacing:c,fontWeight:l.fontWeight},children:["Heading ",h.toUpperCase()]}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["Roboto · ",l.fontSize," · ",l.fontWeight==="700"?"Bold":"Semibold"," · Line height ",l.lineHeight]})]},h)})})]}),e.jsxs(n,{children:[e.jsxs(a,{children:[e.jsx(d,{children:"Subtítulo (2 níveis)"}),e.jsx(o,{children:"Cabeçalhos secundários e texto descritivo"})]}),e.jsxs(r,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:i["subtitle-lg"].size,lineHeight:i["subtitle-lg"].lineHeight,letterSpacing:i["subtitle-lg"].letterSpacing,fontWeight:t.medium},children:"Subtitle Large - Texto de suporte para cabeçalhos"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto · 18px · Medium · Line height 1.55 · Letter spacing 0.005em"})]}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:i["subtitle-md"].size,lineHeight:i["subtitle-md"].lineHeight,letterSpacing:i["subtitle-md"].letterSpacing,fontWeight:t.medium},children:"Subtitle Medium - Texto descritivo secundário"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto · 16px · Medium · Line height 1.6 · Letter spacing 0.01em"})]})]})]}),e.jsxs(n,{children:[e.jsxs(a,{children:[e.jsx(d,{children:"Corpo (2 níveis)"}),e.jsx(o,{children:"Texto de conteúdo principal com legibilidade otimizada"})]}),e.jsxs(r,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:i["body-lg"].size,lineHeight:i["body-lg"].lineHeight,fontWeight:t.normal},children:"Body Large - Este é o tamanho de texto de corpo grande, ideal para ênfase ou áreas de conteúdo primário onde texto ligeiramente maior melhora a legibilidade."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto · 18px · Regular · Line height 1.75"})]}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:i["body-md"].size,lineHeight:i["body-md"].lineHeight,fontWeight:t.normal},children:"Body Medium - Este é o tamanho padrão de texto de corpo, otimizado para conteúdo de forma longa e leitura geral. Fornece excelente legibilidade em todos os dispositivos."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto · 16px · Regular · Line height 1.75 (Default)"})]})]})]}),e.jsxs(n,{children:[e.jsxs(a,{children:[e.jsx(d,{children:"Rótulos (3 níveis)"}),e.jsx(o,{children:"Labels de UI, legendas e metadados"})]}),e.jsxs(r,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:i["label-lg"].size,lineHeight:i["label-lg"].lineHeight,letterSpacing:i["label-lg"].letterSpacing,fontWeight:t.medium},children:"Label Large - Labels de formulário e texto de UI"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto · 14px · Medium · Line height 1.5 · Letter spacing 0.01em"})]}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:i["label-md"].size,lineHeight:i["label-md"].lineHeight,letterSpacing:i["label-md"].letterSpacing,fontWeight:t.medium},children:"Label Medium - Legendas e metadados"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto · 12px · Medium · Line height 1.5 · Letter spacing 0.015em"})]}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:i["label-sm"].size,lineHeight:i["label-sm"].lineHeight,letterSpacing:i["label-sm"].letterSpacing,fontWeight:t.medium},children:"Label Small - Headers de tabela, tabs compactas, controles de UI"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto · 11px · Medium · Line height 1.5 · Letter spacing 0.02em"})]})]})]}),e.jsxs(n,{children:[e.jsxs(a,{children:[e.jsx(d,{children:"Caption"}),e.jsx(o,{children:"Metadados auxiliares, timestamps e contadores"})]}),e.jsx(r,{children:e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:i.caption.size,lineHeight:i.caption.lineHeight,letterSpacing:i.caption.letterSpacing,fontWeight:t.normal},children:"Caption - Códigos de documento, timestamps, badges contadores, links auxiliares"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto · 10px · Regular · Line height 1.5 · Letter spacing 0.02em"})]})})]}),e.jsxs(n,{children:[e.jsxs(a,{children:[e.jsx(d,{children:"Monoespaçado (Código)"}),e.jsx(o,{children:"Fonte monoespaçada para blocos de código e conteúdo técnico"})]}),e.jsx(r,{children:e.jsxs("div",{children:[e.jsxs("code",{style:{fontSize:i.code.size,lineHeight:i.code.lineHeight,fontFamily:"monospace"},className:"block bg-muted p-4 rounded-md",children:['const greeting = "Hello, World!";',`
2
+ `,"console.log(greeting);"]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Roboto Mono · 14px · Regular · Line height 1.7"})]})})]}),e.jsxs(n,{children:[e.jsxs(a,{children:[e.jsx(d,{children:"Diretrizes de Uso"}),e.jsx(o,{children:"Melhores práticas para tipografia"})]}),e.jsxs(r,{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold mb-2",children:"Hierarquia"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Display:"})," Seções hero, landing pages, banners de marketing"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"H1:"})," Títulos de página, cabeçalhos principais (um por página)"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"H2-H3:"})," Cabeçalhos de seção, divisões principais de conteúdo"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"H4-H6:"})," Subseções, cabeçalhos menores"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Subtitle:"})," Texto de suporte para cabeçalhos, descrições"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Body:"})," Conteúdo principal, parágrafos, listas"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Label:"})," Labels de formulário, elementos de UI, legendas, headers de tabela"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Caption:"})," Metadados auxiliares, timestamps, códigos, contadores"]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold mb-2",children:"Melhores Práticas"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsx("li",{children:"Mantenha altura de linha consistente para melhor legibilidade (1.5-1.75 para texto de corpo)"}),e.jsx("li",{children:"Use pesos de fonte para estabelecer hierarquia (Bold para H1-H2, Semibold para H3-H6)"}),e.jsx("li",{children:"Limite o comprimento da linha a 60-80 caracteres para legibilidade ideal"}),e.jsx("li",{children:"Garanta contraste suficiente entre texto e fundo (mínimo AA)"}),e.jsx("li",{children:"Use tags HTML semânticas (h1, h2, p) junto com classes de tipografia"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold mb-3",children:"Exemplos de Código"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-sm font-medium mb-2 text-green-600 dark:text-green-400",children:"✅ Correto"}),e.jsx("pre",{className:"bg-muted p-3 rounded-md text-xs overflow-x-auto",children:`<h1 className="text-4xl font-bold">Page Title</h1>
3
+ <h2 className="text-3xl font-bold">Section Heading</h2>
4
+ <p className="text-base leading-relaxed">Body text content...</p>
5
+ <label className="text-sm font-medium">Form Label</label>`})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-sm font-medium mb-2 text-red-600 dark:text-red-400",children:"❌ Incorreto"}),e.jsx("pre",{className:"bg-muted p-3 rounded-md text-xs overflow-x-auto",children:`<div className="text-[32px]">Page Title</div>
6
+ <span style={{fontSize: '24px'}}>Section Heading</span>
7
+ <p className="text-[14px] leading-[1.5]">Body text...</p>`})]})]})]})]})]})]})}export{p as TypographyFoundationDoc};
@@ -0,0 +1,29 @@
1
+ import{j as o,eI as e,Y as a}from"./index-DkiftrvI.js";import{C as i}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";const t=[{id:"1",title:"Nova versão do Documentos",text:"Agora é possível assinar documentos digitalmente com integração D4Sign."},{id:"2",title:"Melhorias no header",text:"O cabeçalho foi atualizado com novo menu de notificações e atalhos."},{id:"3",title:"Correção de bugs",text:"Corrigido problema de carregamento lento nas listagens com muitos registros."}];function r(){return o.jsx(i,{title:"Updates Notification",description:"Botão com popover para exibir notificações de atualização das aplicações. Possui dois modos: automático (self-contained, busca dados da API sozinho) e controlado (recebe dados via props).",component:o.jsx("div",{className:"flex items-center gap-6",children:o.jsx(e,{updates:t,badgeCount:3,onOpen:()=>a.info("Popover aberto"),onViewAll:()=>a.info("Ver todas clicado")})}),usage:`// Modo automático — basta importar e usar, sem props
2
+ // O componente busca dados da API internamente usando useAuth() e useUpdatesNotification()
3
+ import { UpdatesNotification } from 'forlogic-core';
4
+
5
+ <UpdatesNotification />
6
+
7
+ // Modo controlado — para testes, docs ou lógica customizada
8
+ <UpdatesNotification
9
+ updates={[{ id: '1', title: 'Nova versão', text: 'Descrição' }]}
10
+ badgeCount={1}
11
+ onOpen={() => markAsViewed()}
12
+ onViewAll={() => window.open('/common/alias/up/view', '_blank')}
13
+ />`,examples:[{title:"Modo automático (recomendado)",description:"Sem nenhuma prop, o componente usa useAuth() para obter o alias e busca as notificações da API automaticamente. Ideal para projetos consumidores.",preview:o.jsxs("div",{className:"flex items-center gap-4 p-4 border border-dashed border-border rounded-md",children:[o.jsx("span",{className:"text-sm text-muted-foreground",children:"Em produção, basta:"}),o.jsx("code",{className:"text-xs bg-muted px-2 py-1 rounded",children:"<UpdatesNotification />"})]}),code:`import { UpdatesNotification } from 'forlogic-core';
14
+
15
+ // Coloque no header ou onde desejar — sem configuração adicional
16
+ <UpdatesNotification />`},{title:"Sem atualizações",description:"Estado vazio com mensagem temática do café.",preview:o.jsx(e,{updates:[],badgeCount:0}),code:"<UpdatesNotification updates={[]} badgeCount={0} />"},{title:"Com badge",description:'Badge numérico sobre o ícone. Valores acima de 99 exibem "99+".',preview:o.jsxs("div",{className:"flex items-center gap-6",children:[o.jsx(e,{badgeCount:3,updates:[]}),o.jsx(e,{badgeCount:42,updates:[]}),o.jsx(e,{badgeCount:150,updates:[]})]}),code:`<UpdatesNotification badgeCount={3} updates={[]} />
17
+ <UpdatesNotification badgeCount={42} updates={[]} />
18
+ <UpdatesNotification badgeCount={150} updates={[]} /> {/* exibe 99+ */}`},{title:"Com atualizações",description:"Lista de atualizações dentro do popover. Clique no ícone para visualizar.",preview:o.jsx(e,{updates:t,badgeCount:3}),code:`const updates = [
19
+ { id: '1', title: 'Nova versão do Documentos', text: 'Integração D4Sign disponível.' },
20
+ { id: '2', title: 'Melhorias no header', text: 'Novo menu de notificações.' },
21
+ { id: '3', title: 'Correção de bugs', text: 'Carregamento otimizado.' },
22
+ ];
23
+
24
+ <UpdatesNotification updates={updates} badgeCount={3} />`},{title:"Callbacks (modo controlado)",description:'onOpen é chamado ao abrir o popover, onViewAll ao clicar em "Ver todas as atualizações".',preview:o.jsx(e,{updates:t,badgeCount:2,onOpen:()=>a.info("onOpen disparado — marcar como visualizado"),onViewAll:()=>a.info("onViewAll — abrir /common/{alias}/up/view")}),code:`<UpdatesNotification
25
+ updates={updates}
26
+ badgeCount={2}
27
+ onOpen={() => markAsViewed()}
28
+ onViewAll={() => window.open(\`/common/\${alias}/up/view\`, '_blank')}
29
+ />`}],props:[{name:"updates",type:"UpdateNotificationItem[]",default:"undefined",description:"Lista de atualizações. Se undefined, busca automaticamente da API (modo automático). Se [] (array vazio), exibe estado vazio (modo controlado)."},{name:"badgeCount",type:"number",default:"undefined",description:'Número exibido no badge. Em modo automático (undefined), usa o valor da API. Acima de 99 exibe "99+".'},{name:"onOpen",type:"() => void",default:"markAsVisualized",description:"Callback ao abrir o popover. Em modo automático, chama markAsVisualized internamente."},{name:"onViewAll",type:"() => void",default:"window.open(...)",description:'Callback ao clicar em "Ver todas". Em modo automático, abre /common/{alias}/up/view.'}],notes:["O componente possui dois modos: automático (sem props) e controlado (com props). O modo é determinado pela presença da prop updates.","No modo automático, o componente usa useAuth() para obter o alias e useUpdatesNotification() para buscar dados da API.","No modo controlado, todas as props são fornecidas externamente — útil para testes e documentação.","O tipo canônico é UpdateNotificationItem (id, title, text), exportado do hook. UpdateNotification é um alias deprecated.","No modo automático, onOpen chama markAsVisualized (POST Updates/userVisualized/3/undefined) e onViewAll abre a rota legada.","O ícone utilizado é Coffee do Lucide React — não requer fontes externas nos projetos consumidores.","O hook useUpdatesNotification também é exportado separadamente para uso avançado.","Todas as chamadas à API incluem o header x-waf-rate (base64 do campo sub do JWT), exigido pelo WAF da API legada.","Em caso de 401, o hook faz retry automático regenerando o token via QualiexErrorInterceptor.","Em produção, o componente deve ser colocado no AppHeader — já está integrado no forlogic-core."]})}export{r as UpdatesNotificationDoc};