forlogic-core 2.0.4 → 2.0.5

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 (190) hide show
  1. package/.note/memory/features/crud-defaults-batteries-included.md +1 -1
  2. package/dist/components/ui/dialog-wizard.d.ts +82 -0
  3. package/dist/components/ui/input-group.d.ts +1 -1
  4. package/dist/components/ui/input.d.ts +5 -23
  5. package/dist/components/ui/resizable.d.ts +1 -1
  6. package/dist/components/ui/sidebar.d.ts +1 -1
  7. package/dist/components/ui/step-selector.d.ts +11 -9
  8. package/dist/components/ui/textarea.d.ts +1 -0
  9. package/dist/crud/components/CrudTable.d.ts +3 -1
  10. package/dist/crud/createCrudPage.d.ts +2 -0
  11. package/dist/crud/hooks/useColumnManager.d.ts +3 -1
  12. package/dist/exports/ui.d.ts +1 -0
  13. package/dist/index.css +1 -1
  14. package/dist/index.css.map +1 -1
  15. package/dist/index.esm.js +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/types.d.ts +3 -0
  18. package/docs/design-system/README.md +2 -2
  19. package/docs/design-system/buttons-actions.md +6 -0
  20. package/docs/design-system/domain.md +10 -0
  21. package/docs/design-system/inputs.md +20 -0
  22. package/docs/design-system/navigation.md +5 -0
  23. package/docs/design-system/notifications-feedback.md +2 -0
  24. package/package.json +1 -1
  25. package/dist/assets/AccordionDoc-CGNlubG3.js +0 -31
  26. package/dist/assets/ActionButtonDoc-CYtkXR0k.js +0 -47
  27. package/dist/assets/ActionPlanDoc-BSuPRftQ.js +0 -65
  28. package/dist/assets/AlertDoc-Cpvxneqg.js +0 -37
  29. package/dist/assets/AliasUrlDoc-DIpUWf4Y.js +0 -189
  30. package/dist/assets/AppHeaderDoc-DNQErj_t.js +0 -74
  31. package/dist/assets/AppSidebarDoc-DkeQarDu.js +0 -221
  32. package/dist/assets/ApprovalFlowDoc-8YgXbhKJ.js +0 -31
  33. package/dist/assets/AuditLogDoc-BBvNcHIo.js +0 -67
  34. package/dist/assets/AuditTrailDoc-DgFHO-uo.js +0 -17
  35. package/dist/assets/AuthDoc-WIA_Aetl.js +0 -200
  36. package/dist/assets/AvatarDoc-B6go1C1T.js +0 -11
  37. package/dist/assets/BadgeDoc-BONhfqB_.js +0 -36
  38. package/dist/assets/BaseFormDoc-CuyUArcj.js +0 -169
  39. package/dist/assets/BodyContentDoc-CterHC1E.js +0 -83
  40. package/dist/assets/BreadcrumbDoc-Dwn9nLeO.js +0 -75
  41. package/dist/assets/ButtonDoc-BOjRseZT.js +0 -41
  42. package/dist/assets/ButtonGroupDoc-8IS6PPh4.js +0 -7
  43. package/dist/assets/CalendarDoc-CMwIEqgT.js +0 -81
  44. package/dist/assets/CardDoc-BZz1CVg2.js +0 -49
  45. package/dist/assets/ChartDoc-B5vZVtqD.js +0 -76
  46. package/dist/assets/CheckboxDoc-lAbYO9I5.js +0 -55
  47. package/dist/assets/ColorPickerDoc-Dpsprp4N.js +0 -10
  48. package/dist/assets/ColorsFoundationDoc-CCHeSL3p.js +0 -13
  49. package/dist/assets/ComboTreeDoc-D4dTkIt-.js +0 -46
  50. package/dist/assets/ComboboxDoc-CqqZPvZq.js +0 -134
  51. package/dist/assets/ComponentDocTemplate-CQbBhfvZ.js +0 -1
  52. package/dist/assets/ContextMenuDoc-D3jC-MVA.js +0 -182
  53. package/dist/assets/ContextsDoc-XFH0-JdS.js +0 -211
  54. package/dist/assets/CreateCrudPageDoc-CpuiWI-g.js +0 -106
  55. package/dist/assets/CrudActionBarDoc-wuBGXD9Y.js +0 -112
  56. package/dist/assets/CrudGridDoc-BYWqSXBH.js +0 -85
  57. package/dist/assets/CrudOverviewDoc-B_bk2a2t.js +0 -14
  58. package/dist/assets/CrudPrimitivesDoc-CxaTB94A.js +0 -164
  59. package/dist/assets/CrudTableDoc-Dga1VgCu.js +0 -113
  60. package/dist/assets/CustomFormFieldsDoc-C1hwwSl3.js +0 -33
  61. package/dist/assets/DashboardFormDoc-BUDCmrMl.js +0 -49
  62. package/dist/assets/DashboardGeneralViewDoc-Cyg1SIiG.js +0 -71
  63. package/dist/assets/DashboardGridDoc-BavePiRF.js +0 -49
  64. package/dist/assets/DashboardListDoc-CLyMA6UK.js +0 -37
  65. package/dist/assets/DashboardOverviewDoc-DRVvNIF1.js +0 -35
  66. package/dist/assets/DashboardPanelRendererDoc--mfwb8Nc.js +0 -60
  67. package/dist/assets/DashboardPanelsBasicDoc-BQ2V_52D.js +0 -62
  68. package/dist/assets/DashboardPanelsCartesianDoc-sy-hcVQY.js +0 -75
  69. package/dist/assets/DashboardPanelsSpecialDoc-DsIUCRRP.js +0 -83
  70. package/dist/assets/DashboardViewDoc-CtlCNlEF.js +0 -45
  71. package/dist/assets/DataListDoc-DUy88lCQ.js +0 -13
  72. package/dist/assets/DesignSystemHome-DHl9YtbH.js +0 -1
  73. package/dist/assets/DialogDoc-CMQqnTV-.js +0 -981
  74. package/dist/assets/DropdownMenuDoc-S7X9csGt.js +0 -175
  75. package/dist/assets/ElectronicSignatureDialogDoc-BfithaL_.js +0 -57
  76. package/dist/assets/EmptyStateDoc-CHGCiGIk.js +0 -35
  77. package/dist/assets/EnvironmentsDoc-DZHJZ2nm.js +0 -96
  78. package/dist/assets/ErrorBoundaryDoc-DoaAg68p.js +0 -111
  79. package/dist/assets/ExampleActionPlanPage-C0fIMZCD.js +0 -1
  80. package/dist/assets/ExampleAppDoc-DzIU81Fn.js +0 -1
  81. package/dist/assets/ExampleCard-DuLrb3t-.js +0 -1
  82. package/dist/assets/ExampleCrudReportsPage-M0pz6tdM.js +0 -1
  83. package/dist/assets/ExampleDashboardPage-CRG5r3Vw.js +0 -1
  84. package/dist/assets/ExampleIdeasPage-I84ZMLY4.js +0 -1
  85. package/dist/assets/ExampleImportWizardPage-h4YqrrSe.js +0 -1
  86. package/dist/assets/ExampleSettingsPage-CwdWqoaP.js +0 -1
  87. package/dist/assets/FileUploadDoc-9-UujFNX.js +0 -34
  88. package/dist/assets/FilterBar-DDTqqUfZ.js +0 -1
  89. package/dist/assets/FormDoc-CVES6n3d.js +0 -81
  90. package/dist/assets/FoundationOverview-DT0u11Gz.js +0 -1
  91. package/dist/assets/GridDoc-CbHFSILF.js +0 -28
  92. package/dist/assets/HooksDoc-Ctxdk6Wq.js +0 -665
  93. package/dist/assets/HoverCardDoc-8Wkaafdj.js +0 -31
  94. package/dist/assets/I18nDoc-D3Q2m7ik.js +0 -167
  95. package/dist/assets/IconPickerDoc-DZ26Gdpg.js +0 -10
  96. package/dist/assets/IconsFoundationDoc-xOxtC7CW.js +0 -33
  97. package/dist/assets/InputDoc-BhztAiuJ.js +0 -211
  98. package/dist/assets/LabelDoc-A4hmTRRV.js +0 -42
  99. package/dist/assets/LeadershipDoc-CqOSfWsP.js +0 -452
  100. package/dist/assets/MediaDoc-C78gvC8p.js +0 -459
  101. package/dist/assets/MenubarDoc-DCnmd2tO.js +0 -165
  102. package/dist/assets/ModuleAccessDoc-CmD5nHDp.js +0 -153
  103. package/dist/assets/ModulesDialogDoc-DVit1CA-.js +0 -46
  104. package/dist/assets/MultiselectPermissionsDoc-tlJMs04L.js +0 -34
  105. package/dist/assets/NavigationMenuDoc-q1fbc89j.js +0 -116
  106. package/dist/assets/OnboardingDialogDoc-3A3eBYrq.js +0 -55
  107. package/dist/assets/PaginationDoc-B8-bMz5J.js +0 -27
  108. package/dist/assets/PaginationDoc-BkGdxHL3.js +0 -98
  109. package/dist/assets/PlacesDoc-CKPO6ATs.js +0 -226
  110. package/dist/assets/PopoverDoc-CJPU4Ags.js +0 -64
  111. package/dist/assets/ProgressDoc-CpjbTL4o.js +0 -29
  112. package/dist/assets/QualiexUserFieldDoc-DDwumlRw.js +0 -149
  113. package/dist/assets/RadioGroupDoc-D6tSZz8G.js +0 -57
  114. package/dist/assets/RadiusDoc-B4xSnajw.js +0 -7
  115. package/dist/assets/ReportRequestListDoc-C0LIaU8P.js +0 -15
  116. package/dist/assets/RequiredFieldsCounterDoc-COesoSdx.js +0 -58
  117. package/dist/assets/ResizableDoc-CW0-XQuB.js +0 -104
  118. package/dist/assets/RichTextEditorDoc-C8c_XA9P.js +0 -24
  119. package/dist/assets/ScrollAreaDoc-BxtoAPaZ.js +0 -28
  120. package/dist/assets/SecurityDoc-wOVqpg2F.js +0 -204
  121. package/dist/assets/SelectDoc-C75gtY9D.js +0 -80
  122. package/dist/assets/SeparatorDoc-BjQBPB1P.js +0 -4
  123. package/dist/assets/ServicesDoc-CXTctwBl.js +0 -308
  124. package/dist/assets/ShadowsDoc-C6Lw8_x2.js +0 -9
  125. package/dist/assets/SignDoc-Bh5ZUg5x.js +0 -66
  126. package/dist/assets/SkeletonDoc-rTLGK5VE.js +0 -54
  127. package/dist/assets/SliderDoc-JMAMDub7.js +0 -41
  128. package/dist/assets/SpacingDoc-RljOrpwA.js +0 -12
  129. package/dist/assets/SplitButtonDoc-CvShUW3w.js +0 -53
  130. package/dist/assets/StepSelectorDoc-C-nAap9H.js +0 -41
  131. package/dist/assets/SwitchDoc-DLnqmkPr.js +0 -56
  132. package/dist/assets/TableDoc-B8EpWLVg.js +0 -128
  133. package/dist/assets/TabsDoc-DIBtl_uC.js +0 -42
  134. package/dist/assets/TeamSelectorDoc-B7OnCbL7.js +0 -10
  135. package/dist/assets/TermsOfUseDoc-Bb-pw08s.js +0 -16
  136. package/dist/assets/TextareaDoc-DGnqMqEC.js +0 -46
  137. package/dist/assets/ToastDoc-DjYyc7ae.js +0 -157
  138. package/dist/assets/ToggleDoc-C9ZOVjkY.js +0 -51
  139. package/dist/assets/TooltipDoc-BEx4l9-i.js +0 -58
  140. package/dist/assets/TruncatedCellDoc-BbV1bRSY.js +0 -12
  141. package/dist/assets/TypographyFoundationDoc-CUDYjRo9.js +0 -7
  142. package/dist/assets/UpdatesNotificationDoc-7nyjzLMJ.js +0 -29
  143. package/dist/assets/UsersGroupsSelectorDoc-C0KlTAL5.js +0 -18
  144. package/dist/assets/UtilitiesDoc-DGxaHVV1.js +0 -145
  145. package/dist/assets/ViewerDialogsDoc-CnTPTEz0.js +0 -1
  146. package/dist/assets/blocks-B6LrJeAM.js +0 -1
  147. package/dist/assets/building-DeVappnD.js +0 -1
  148. package/dist/assets/calendar-days-BQ0na5kM.js +0 -1
  149. package/dist/assets/check-check-C_-PJCJa.js +0 -1
  150. package/dist/assets/circle-plus-CpIcep-O.js +0 -1
  151. package/dist/assets/circle-x-jPpBPew0.js +0 -1
  152. package/dist/assets/clipboard-list-CXNPdciZ.js +0 -1
  153. package/dist/assets/cloud-upload-BEjzumjl.js +0 -1
  154. package/dist/assets/crown-CqNsQIsm.js +0 -1
  155. package/dist/assets/date-picker-BW3eGOe_.js +0 -1
  156. package/dist/assets/disabled-menu-item-C2YaMvSt.js +0 -1
  157. package/dist/assets/drawer-D5rflIcD.js +0 -3
  158. package/dist/assets/file-braces-DFb5X9so.js +0 -1
  159. package/dist/assets/file-pen-line-CyUGKkEN.js +0 -1
  160. package/dist/assets/git-branch-BcXv9mpp.js +0 -1
  161. package/dist/assets/globe-CpMIWAcv.js +0 -1
  162. package/dist/assets/hash-cQWdKjya.js +0 -1
  163. package/dist/assets/hourglass-BahQ3eDv.js +0 -1
  164. package/dist/assets/hover-card-R66N85sZ.js +0 -1
  165. package/dist/assets/iframe-dialog-V0mW5aBb.js +0 -1
  166. package/dist/assets/index-DkiftrvI.js +0 -352
  167. package/dist/assets/index-nmBjO9Th.css +0 -1
  168. package/dist/assets/life-buoy-ByXiPddz.js +0 -1
  169. package/dist/assets/loading-state-Cb5_t5uE.js +0 -1
  170. package/dist/assets/lucide-react-Cp3Yw3Zm.js +0 -1
  171. package/dist/assets/package-B3-pVvPM.js +0 -1
  172. package/dist/assets/pen-Bi_lmmKT.js +0 -1
  173. package/dist/assets/pin-DVsSl8QA.js +0 -1
  174. package/dist/assets/printer-BnJ8B6m-.js +0 -1
  175. package/dist/assets/radio-group-BHAaNGsm.js +0 -1
  176. package/dist/assets/server-CtzFTfKR.js +0 -1
  177. package/dist/assets/share-2-Dv8Do445.js +0 -1
  178. package/dist/assets/shield-check-CFXjOV_w.js +0 -1
  179. package/dist/assets/shield-x-DJTRfVux.js +0 -1
  180. package/dist/assets/slider-v9tXBSnB.js +0 -1
  181. package/dist/assets/smartphone-BSNR60L7.js +0 -1
  182. package/dist/assets/step-selector-ATTh_9Wa.js +0 -1
  183. package/dist/assets/text-align-start-qE-MbYYw.js +0 -1
  184. package/dist/assets/thumbs-up-D_XIW_uX.js +0 -1
  185. package/dist/assets/trash-DTWQwpwA.js +0 -1
  186. package/dist/assets/trending-up-jip5-leJ.js +0 -1
  187. package/dist/assets/useMockCrud-CN4vjyOZ.js +0 -1
  188. package/dist/assets/user-check-BlH3EDWK.js +0 -1
  189. package/dist/assets/user-plus-BqwXwD-c.js +0 -1
  190. package/dist/index.html +0 -33
@@ -1,116 +0,0 @@
1
- import{r as i,ba as ue,j as t,bc as j,bh as R,fP as re,bf as V,bg as Fe,b9 as le,fQ as Ve,db as G,fR as L,dc as ze,b8 as de,bj as Ke,fS as Ue,fT as H,fU as Ge,fV as $e,o as _,bk as He,aZ as We}from"./index-DkiftrvI.js";import{C as qe}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";var k="NavigationMenu",[Z,me,Be]=de(k),[W,Ye,Qe]=de(k),[J]=Ke(k,[Be,Qe]),[Xe,I]=J(k),[Ze,Je]=J(k),ve=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,value:a,onValueChange:r,defaultValue:s,delayDuration:c=200,skipDelayDuration:d=300,orientation:l="horizontal",dir:h,...u}=e,[f,C]=i.useState(null),b=V(n,w=>C(w)),p=Fe(h),x=i.useRef(0),M=i.useRef(0),y=i.useRef(0),[E,m]=i.useState(!0),[g,v]=le({prop:a,onChange:w=>{const P=w!=="",$=d>0;P?(window.clearTimeout(y.current),$&&m(!1)):(window.clearTimeout(y.current),y.current=window.setTimeout(()=>m(!0),d)),r?.(w)},defaultProp:s??"",caller:k}),N=i.useCallback(()=>{window.clearTimeout(M.current),M.current=window.setTimeout(()=>v(""),150)},[v]),T=i.useCallback(w=>{window.clearTimeout(M.current),v(w)},[v]),S=i.useCallback(w=>{g===w?window.clearTimeout(M.current):x.current=window.setTimeout(()=>{window.clearTimeout(M.current),v(w)},c)},[g,v,c]);return i.useEffect(()=>()=>{window.clearTimeout(x.current),window.clearTimeout(M.current),window.clearTimeout(y.current)},[]),t.jsx(fe,{scope:o,isRootMenu:!0,value:g,dir:p,orientation:l,rootNavigationMenu:f,onTriggerEnter:w=>{window.clearTimeout(x.current),E?S(w):T(w)},onTriggerLeave:()=>{window.clearTimeout(x.current),N()},onContentEnter:()=>window.clearTimeout(M.current),onContentLeave:N,onItemSelect:w=>{v(P=>P===w?"":w)},onItemDismiss:()=>v(""),children:t.jsx(j.nav,{"aria-label":"Main","data-orientation":l,dir:p,...u,ref:b})})});ve.displayName=k;var q="NavigationMenuSub",et=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,value:a,onValueChange:r,defaultValue:s,orientation:c="horizontal",...d}=e,l=I(q,o),[h,u]=le({prop:a,onChange:r,defaultProp:s??"",caller:q});return t.jsx(fe,{scope:o,isRootMenu:!1,value:h,dir:l.dir,orientation:c,rootNavigationMenu:l.rootNavigationMenu,onTriggerEnter:f=>u(f),onItemSelect:f=>u(f),onItemDismiss:()=>u(""),children:t.jsx(j.div,{"data-orientation":c,...d,ref:n})})});et.displayName=q;var fe=e=>{const{scope:n,isRootMenu:o,rootNavigationMenu:a,dir:r,orientation:s,children:c,value:d,onItemSelect:l,onItemDismiss:h,onTriggerEnter:u,onTriggerLeave:f,onContentEnter:C,onContentLeave:b}=e,[p,x]=i.useState(null),[M,y]=i.useState(new Map),[E,m]=i.useState(null);return t.jsx(Xe,{scope:n,isRootMenu:o,rootNavigationMenu:a,value:d,previousValue:ze(d),baseId:ue(),dir:r,orientation:s,viewport:p,onViewportChange:x,indicatorTrack:E,onIndicatorTrackChange:m,onTriggerEnter:L(u),onTriggerLeave:L(f),onContentEnter:L(C),onContentLeave:L(b),onItemSelect:L(l),onItemDismiss:L(h),onViewportContentChange:i.useCallback((g,v)=>{y(N=>(N.set(g,v),new Map(N)))},[]),onViewportContentRemove:i.useCallback(g=>{y(v=>v.has(g)?(v.delete(g),new Map(v)):v)},[]),children:t.jsx(Z.Provider,{scope:n,children:t.jsx(Ze,{scope:n,items:M,children:c})})})},ge="NavigationMenuList",pe=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,...a}=e,r=I(ge,o),s=t.jsx(j.ul,{"data-orientation":r.orientation,...a,ref:n});return t.jsx(j.div,{style:{position:"relative"},ref:r.onIndicatorTrackChange,children:t.jsx(Z.Slot,{scope:o,children:r.isRootMenu?t.jsx(Ie,{asChild:!0,children:s}):s})})});pe.displayName=ge;var xe="NavigationMenuItem",[tt,Ne]=J(xe),he=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,value:a,...r}=e,s=ue(),c=a||s||"LEGACY_REACT_AUTO_VALUE",d=i.useRef(null),l=i.useRef(null),h=i.useRef(null),u=i.useRef(()=>{}),f=i.useRef(!1),C=i.useCallback((p="start")=>{if(d.current){u.current();const x=Y(d.current);x.length&&ne(p==="start"?x:x.reverse())}},[]),b=i.useCallback(()=>{if(d.current){const p=Y(d.current);p.length&&(u.current=ct(p))}},[]);return t.jsx(tt,{scope:o,value:c,triggerRef:l,contentRef:d,focusProxyRef:h,wasEscapeCloseRef:f,onEntryKeyDown:C,onFocusProxyEnter:C,onRootContentClose:b,onContentFocusOutside:b,children:t.jsx(j.li,{...r,ref:n})})});he.displayName=xe;var B="NavigationMenuTrigger",we=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,disabled:a,...r}=e,s=I(B,e.__scopeNavigationMenu),c=Ne(B,e.__scopeNavigationMenu),d=i.useRef(null),l=V(d,c.triggerRef,n),h=Ee(s.baseId,c.value),u=Te(s.baseId,c.value),f=i.useRef(!1),C=i.useRef(!1),b=c.value===s.value;return t.jsxs(t.Fragment,{children:[t.jsx(Z.ItemSlot,{scope:o,value:c.value,children:t.jsx(je,{asChild:!0,children:t.jsx(j.button,{id:h,disabled:a,"data-disabled":a?"":void 0,"data-state":oe(b),"aria-expanded":b,"aria-controls":u,...r,ref:l,onPointerEnter:R(e.onPointerEnter,()=>{C.current=!1,c.wasEscapeCloseRef.current=!1}),onPointerMove:R(e.onPointerMove,U(()=>{a||C.current||c.wasEscapeCloseRef.current||f.current||(s.onTriggerEnter(c.value),f.current=!0)})),onPointerLeave:R(e.onPointerLeave,U(()=>{a||(s.onTriggerLeave(),f.current=!1)})),onClick:R(e.onClick,()=>{s.onItemSelect(c.value),C.current=b}),onKeyDown:R(e.onKeyDown,p=>{const M={horizontal:"ArrowDown",vertical:s.dir==="rtl"?"ArrowLeft":"ArrowRight"}[s.orientation];b&&p.key===M&&(c.onEntryKeyDown(),p.preventDefault())})})})}),b&&t.jsxs(t.Fragment,{children:[t.jsx(Ve,{"aria-hidden":!0,tabIndex:0,ref:c.focusProxyRef,onFocus:p=>{const x=c.contentRef.current,M=p.relatedTarget,y=M===d.current,E=x?.contains(M);(y||!E)&&c.onFocusProxyEnter(y?"start":"end")}}),s.viewport&&t.jsx("span",{"aria-owns":u})]})]})});we.displayName=B;var nt="NavigationMenuLink",se="navigationMenu.linkSelect",Me=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,active:a,onSelect:r,...s}=e;return t.jsx(je,{asChild:!0,children:t.jsx(j.a,{"data-active":a?"":void 0,"aria-current":a?"page":void 0,...s,ref:n,onClick:R(e.onClick,c=>{const d=c.target,l=new CustomEvent(se,{bubbles:!0,cancelable:!0});if(d.addEventListener(se,h=>r?.(h),{once:!0}),re(d,l),!l.defaultPrevented&&!c.metaKey){const h=new CustomEvent(K,{bubbles:!0,cancelable:!0});re(d,h)}},{checkForDefaultPrevented:!1})})})});Me.displayName=nt;var ee="NavigationMenuIndicator",Ce=i.forwardRef((e,n)=>{const{forceMount:o,...a}=e,r=I(ee,e.__scopeNavigationMenu),s=!!r.value;return r.indicatorTrack?$e.createPortal(t.jsx(G,{present:o||s,children:t.jsx(ot,{...a,ref:n})}),r.indicatorTrack):null});Ce.displayName=ee;var ot=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,...a}=e,r=I(ee,o),s=me(o),[c,d]=i.useState(null),[l,h]=i.useState(null),u=r.orientation==="horizontal",f=!!r.value;i.useEffect(()=>{const p=s().find(x=>x.value===r.value)?.ref.current;p&&d(p)},[s,r.value]);const C=()=>{c&&h({size:u?c.offsetWidth:c.offsetHeight,offset:u?c.offsetLeft:c.offsetTop})};return Q(c,C),Q(r.indicatorTrack,C),l?t.jsx(j.div,{"aria-hidden":!0,"data-state":f?"visible":"hidden","data-orientation":r.orientation,...a,ref:n,style:{position:"absolute",...u?{left:0,width:l.size+"px",transform:`translateX(${l.offset}px)`}:{top:0,height:l.size+"px",transform:`translateY(${l.offset}px)`},...a.style}}):null}),D="NavigationMenuContent",be=i.forwardRef((e,n)=>{const{forceMount:o,...a}=e,r=I(D,e.__scopeNavigationMenu),s=Ne(D,e.__scopeNavigationMenu),c=V(s.contentRef,n),d=s.value===r.value,l={value:s.value,triggerRef:s.triggerRef,focusProxyRef:s.focusProxyRef,wasEscapeCloseRef:s.wasEscapeCloseRef,onContentFocusOutside:s.onContentFocusOutside,onRootContentClose:s.onRootContentClose,...a};return r.viewport?t.jsx(at,{forceMount:o,...l,ref:c}):t.jsx(G,{present:o||d,children:t.jsx(ye,{"data-state":oe(d),...l,ref:c,onPointerEnter:R(e.onPointerEnter,r.onContentEnter),onPointerLeave:R(e.onPointerLeave,U(r.onContentLeave)),style:{pointerEvents:!d&&r.isRootMenu?"none":void 0,...l.style}})})});be.displayName=D;var at=i.forwardRef((e,n)=>{const o=I(D,e.__scopeNavigationMenu),{onViewportContentChange:a,onViewportContentRemove:r}=o;return H(()=>{a(e.value,{ref:n,...e})},[e,n,a]),H(()=>()=>r(e.value),[e.value,r]),null}),K="navigationMenu.rootContentDismiss",ye=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,value:a,triggerRef:r,focusProxyRef:s,wasEscapeCloseRef:c,onRootContentClose:d,onContentFocusOutside:l,...h}=e,u=I(D,o),f=i.useRef(null),C=V(f,n),b=Ee(u.baseId,a),p=Te(u.baseId,a),x=me(o),M=i.useRef(null),{onItemDismiss:y}=u;i.useEffect(()=>{const m=f.current;if(u.isRootMenu&&m){const g=()=>{y(),d(),m.contains(document.activeElement)&&r.current?.focus()};return m.addEventListener(K,g),()=>m.removeEventListener(K,g)}},[u.isRootMenu,e.value,r,y,d]);const E=i.useMemo(()=>{const g=x().map(P=>P.value);u.dir==="rtl"&&g.reverse();const v=g.indexOf(u.value),N=g.indexOf(u.previousValue),T=a===u.value,S=N===g.indexOf(a);if(!T&&!S)return M.current;const w=(()=>{if(v!==N){if(T&&N!==-1)return v>N?"from-end":"from-start";if(S&&v!==-1)return v>N?"to-start":"to-end"}return null})();return M.current=w,w},[u.previousValue,u.value,u.dir,x,a]);return t.jsx(Ie,{asChild:!0,children:t.jsx(Ue,{id:p,"aria-labelledby":b,"data-motion":E,"data-orientation":u.orientation,...h,ref:C,disableOutsidePointerEvents:!1,onDismiss:()=>{const m=new Event(K,{bubbles:!0,cancelable:!0});f.current?.dispatchEvent(m)},onFocusOutside:R(e.onFocusOutside,m=>{l();const g=m.target;u.rootNavigationMenu?.contains(g)&&m.preventDefault()}),onPointerDownOutside:R(e.onPointerDownOutside,m=>{const g=m.target,v=x().some(T=>T.ref.current?.contains(g)),N=u.isRootMenu&&u.viewport?.contains(g);(v||N||!u.isRootMenu)&&m.preventDefault()}),onKeyDown:R(e.onKeyDown,m=>{const g=m.altKey||m.ctrlKey||m.metaKey;if(m.key==="Tab"&&!g){const N=Y(m.currentTarget),T=document.activeElement,S=N.findIndex($=>$===T),P=m.shiftKey?N.slice(0,S).reverse():N.slice(S+1,N.length);ne(P)?m.preventDefault():s.current?.focus()}}),onEscapeKeyDown:R(e.onEscapeKeyDown,m=>{c.current=!0})})})}),te="NavigationMenuViewport",Re=i.forwardRef((e,n)=>{const{forceMount:o,...a}=e,s=!!I(te,e.__scopeNavigationMenu).value;return t.jsx(G,{present:o||s,children:t.jsx(it,{...a,ref:n})})});Re.displayName=te;var it=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,children:a,...r}=e,s=I(te,o),c=V(n,s.onViewportChange),d=Je(D,e.__scopeNavigationMenu),[l,h]=i.useState(null),[u,f]=i.useState(null),C=l?l?.width+"px":void 0,b=l?l?.height+"px":void 0,p=!!s.value,x=p?s.value:s.previousValue;return Q(u,()=>{u&&h({width:u.offsetWidth,height:u.offsetHeight})}),t.jsx(j.div,{"data-state":oe(p),"data-orientation":s.orientation,...r,ref:c,style:{pointerEvents:!p&&s.isRootMenu?"none":void 0,"--radix-navigation-menu-viewport-width":C,"--radix-navigation-menu-viewport-height":b,...r.style},onPointerEnter:R(e.onPointerEnter,s.onContentEnter),onPointerLeave:R(e.onPointerLeave,U(s.onContentLeave)),children:Array.from(d.items).map(([y,{ref:E,forceMount:m,...g}])=>{const v=x===y;return t.jsx(G,{present:m||v,children:t.jsx(ye,{...g,ref:Ge(E,N=>{v&&N&&f(N)})})},y)})})}),rt="FocusGroup",Ie=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,...a}=e,r=I(rt,o);return t.jsx(W.Provider,{scope:o,children:t.jsx(W.Slot,{scope:o,children:t.jsx(j.div,{dir:r.dir,...a,ref:n})})})}),ce=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"],st="FocusGroupItem",je=i.forwardRef((e,n)=>{const{__scopeNavigationMenu:o,...a}=e,r=Ye(o),s=I(st,o);return t.jsx(W.ItemSlot,{scope:o,children:t.jsx(j.button,{...a,ref:n,onKeyDown:R(e.onKeyDown,c=>{if(["Home","End",...ce].includes(c.key)){let l=r().map(f=>f.ref.current);if([s.dir==="rtl"?"ArrowRight":"ArrowLeft","ArrowUp","End"].includes(c.key)&&l.reverse(),ce.includes(c.key)){const f=l.indexOf(c.currentTarget);l=l.slice(f+1)}setTimeout(()=>ne(l)),c.preventDefault()}})})})});function Y(e){const n=[],o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{const r=a.tagName==="INPUT"&&a.type==="hidden";return a.disabled||a.hidden||r?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)n.push(o.currentNode);return n}function ne(e){const n=document.activeElement;return e.some(o=>o===n?!0:(o.focus(),document.activeElement!==n))}function ct(e){return e.forEach(n=>{n.dataset.tabindex=n.getAttribute("tabindex")||"",n.setAttribute("tabindex","-1")}),()=>{e.forEach(n=>{const o=n.dataset.tabindex;n.setAttribute("tabindex",o)})}}function Q(e,n){const o=L(n);H(()=>{let a=0;if(e){const r=new ResizeObserver(()=>{cancelAnimationFrame(a),a=window.requestAnimationFrame(o)});return r.observe(e),()=>{window.cancelAnimationFrame(a),r.unobserve(e)}}},[e,o])}function oe(e){return e?"open":"closed"}function Ee(e,n){return`${e}-trigger-${n}`}function Te(e,n){return`${e}-content-${n}`}function U(e){return n=>n.pointerType==="mouse"?e(n):void 0}var Pe=ve,_e=pe,ut=he,Se=we,lt=Me,Le=Ce,ke=be,De=Re;const ae=i.forwardRef(({className:e,children:n,...o},a)=>t.jsxs(Pe,{ref:a,className:_("relative z-10 flex max-w-max flex-1 items-center justify-center",e),...o,children:[n,t.jsx(Oe,{})]}));ae.displayName=Pe.displayName;const ie=i.forwardRef(({className:e,...n},o)=>t.jsx(_e,{ref:o,className:_("group flex flex-1 list-none items-center justify-center space-x-1",e),...n}));ie.displayName=_e.displayName;const A=ut,Ae=We("group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"),O=i.forwardRef(({className:e,children:n,...o},a)=>t.jsxs(Se,{ref:a,className:_(Ae(),"group",e),...o,children:[n," ",t.jsx(He,{className:"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180","aria-hidden":"true"})]}));O.displayName=Se.displayName;const F=i.forwardRef(({className:e,...n},o)=>t.jsx(ke,{ref:o,className:_("left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",e),...n}));F.displayName=ke.displayName;const X=lt,Oe=i.forwardRef(({className:e,...n},o)=>t.jsx("div",{className:_("absolute left-0 top-full flex justify-center"),children:t.jsx(De,{className:_("origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",e),ref:o,...n})}));Oe.displayName=De.displayName;const dt=i.forwardRef(({className:e,...n},o)=>t.jsx(Le,{ref:o,className:_("top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",e),...n,children:t.jsx("div",{className:"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md"})}));dt.displayName=Le.displayName;const z=({className:e,title:n,children:o,...a})=>t.jsx("li",{children:t.jsx(X,{asChild:!0,children:t.jsxs("a",{className:_("block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",e),...a,children:[t.jsx("div",{className:"text-sm font-medium leading-none",children:n}),t.jsx("p",{className:"line-clamp-2 text-sm leading-snug text-muted-foreground",children:o})]})})}),mt=[{title:"Alert Dialog",href:"#",description:"Modal de diálogo que interrompe o usuário com conteúdo importante."},{title:"Hover Card",href:"#",description:"Para usuários avistados verem conteúdo disponível ao passar o mouse."},{title:"Progress",href:"#",description:"Exibe um indicador mostrando o progresso de uma tarefa."},{title:"Scroll Area",href:"#",description:"Aumenta visualmente áreas de rolagem nativamente."},{title:"Tabs",href:"#",description:"Um conjunto de painéis de conteúdo em camadas."},{title:"Tooltip",href:"#",description:"Um popup que exibe informações ao focar ou passar o mouse."}];function vt(){return t.jsx("div",{className:"flex justify-center py-8",children:t.jsx(ae,{children:t.jsxs(ie,{children:[t.jsxs(A,{children:[t.jsx(O,{children:"Getting started"}),t.jsx(F,{children:t.jsxs("ul",{className:"grid gap-3 p-6 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]",children:[t.jsx("li",{className:"row-span-3",children:t.jsx(X,{asChild:!0,children:t.jsxs("a",{className:"flex h-full w-full select-none flex-col justify-end rounded-md bg-gradient-to-b from-muted/50 to-muted p-6 no-underline outline-none focus:shadow-md",href:"#",children:[t.jsx("div",{className:"mb-2 mt-4 text-lg font-medium",children:"shadcn/ui"}),t.jsx("p",{className:"text-sm leading-tight text-muted-foreground",children:"Componentes lindamente projetados construídos com Radix UI e Tailwind CSS."})]})})}),t.jsx(z,{href:"#",title:"Introdução",children:"Componentes reutilizáveis construídos usando Radix UI e Tailwind CSS."}),t.jsx(z,{href:"#",title:"Instalação",children:"Como instalar dependências e estruturar seu aplicativo."}),t.jsx(z,{href:"#",title:"Tipografia",children:"Estilos para títulos, parágrafos, listas e muito mais."})]})})]}),t.jsxs(A,{children:[t.jsx(O,{children:"Componentes"}),t.jsx(F,{children:t.jsx("ul",{className:"grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px]",children:mt.map(e=>t.jsx(z,{title:e.title,href:e.href,children:e.description},e.title))})})]}),t.jsx(A,{children:t.jsx(X,{className:Ae(),href:"#",children:"Documentação"})})]})})})}function ft(){return t.jsx("div",{className:"flex justify-center py-8",children:t.jsx(ae,{children:t.jsxs(ie,{children:[t.jsxs(A,{children:[t.jsx(O,{children:"Item Um"}),t.jsx(F,{children:t.jsx("div",{className:"p-4 w-[200px]",children:t.jsx("p",{className:"text-sm text-muted-foreground",children:"Conteúdo do primeiro item"})})})]}),t.jsxs(A,{children:[t.jsx(O,{children:"Item Dois"}),t.jsx(F,{children:t.jsx("div",{className:"p-4 w-[200px]",children:t.jsx("p",{className:"text-sm text-muted-foreground",children:"Conteúdo do segundo item"})})})]})]})})})}const gt=`import {
2
- NavigationMenu,
3
- NavigationMenuContent,
4
- NavigationMenuItem,
5
- NavigationMenuLink,
6
- NavigationMenuList,
7
- NavigationMenuTrigger,
8
- navigationMenuTriggerStyle,
9
- } from "forlogic-core"
10
-
11
- const components = [
12
- {
13
- title: "Alert Dialog",
14
- href: "/docs/components/alert-dialog",
15
- description: "Modal de diálogo que interrompe o usuário com conteúdo importante.",
16
- },
17
- {
18
- title: "Hover Card",
19
- href: "/docs/components/hover-card",
20
- description: "Para usuários avistados verem conteúdo disponível ao passar o mouse.",
21
- },
22
- // ...mais componentes
23
- ]
24
-
25
- export function NavigationMenuDemo() {
26
- return (
27
- <NavigationMenu>
28
- <NavigationMenuList>
29
- <NavigationMenuItem>
30
- <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>
31
- <NavigationMenuContent>
32
- <ul className="grid gap-3 p-6 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]">
33
- <li className="row-span-3">
34
- <NavigationMenuLink asChild>
35
- <a
36
- className="flex h-full w-full select-none flex-col justify-end rounded-md bg-gradient-to-b from-muted/50 to-muted p-6 no-underline outline-none focus:shadow-md"
37
- href="/"
38
- >
39
- <div className="mb-2 mt-4 text-lg font-medium">
40
- shadcn/ui
41
- </div>
42
- <p className="text-sm leading-tight text-muted-foreground">
43
- Componentes lindamente projetados construídos com Radix UI e Tailwind CSS.
44
- </p>
45
- </a>
46
- </NavigationMenuLink>
47
- </li>
48
- <ListItem href="/docs" title="Introdução">
49
- Componentes reutilizáveis construídos usando Radix UI e Tailwind CSS.
50
- </ListItem>
51
- <ListItem href="/docs/installation" title="Instalação">
52
- Como instalar dependências e estruturar seu aplicativo.
53
- </ListItem>
54
- </ul>
55
- </NavigationMenuContent>
56
- </NavigationMenuItem>
57
- <NavigationMenuItem>
58
- <NavigationMenuTrigger>Componentes</NavigationMenuTrigger>
59
- <NavigationMenuContent>
60
- <ul className="grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2">
61
- {components.map((component) => (
62
- <ListItem
63
- key={component.title}
64
- title={component.title}
65
- href={component.href}
66
- >
67
- {component.description}
68
- </ListItem>
69
- ))}
70
- </ul>
71
- </NavigationMenuContent>
72
- </NavigationMenuItem>
73
- <NavigationMenuItem>
74
- <NavigationMenuLink className={navigationMenuTriggerStyle()}>
75
- Documentação
76
- </NavigationMenuLink>
77
- </NavigationMenuItem>
78
- </NavigationMenuList>
79
- </NavigationMenu>
80
- )
81
- }`,pt=`import {
82
- NavigationMenu,
83
- NavigationMenuContent,
84
- NavigationMenuItem,
85
- NavigationMenuList,
86
- NavigationMenuTrigger,
87
- } from "forlogic-core"
88
-
89
- export function SimpleNavigationMenu() {
90
- return (
91
- <NavigationMenu>
92
- <NavigationMenuList>
93
- <NavigationMenuItem>
94
- <NavigationMenuTrigger>Item Um</NavigationMenuTrigger>
95
- <NavigationMenuContent>
96
- <div className="p-4 w-[200px]">
97
- <p className="text-sm text-muted-foreground">
98
- Conteúdo do primeiro item
99
- </p>
100
- </div>
101
- </NavigationMenuContent>
102
- </NavigationMenuItem>
103
- <NavigationMenuItem>
104
- <NavigationMenuTrigger>Item Dois</NavigationMenuTrigger>
105
- <NavigationMenuContent>
106
- <div className="p-4 w-[200px]">
107
- <p className="text-sm text-muted-foreground">
108
- Conteúdo do segundo item
109
- </p>
110
- </div>
111
- </NavigationMenuContent>
112
- </NavigationMenuItem>
113
- </NavigationMenuList>
114
- </NavigationMenu>
115
- )
116
- }`;function wt(){return t.jsx(qe,{title:"Navigation Menu",description:"Uma coleção de links para navegação em websites.",component:t.jsx(vt,{}),usage:gt,examples:[{title:"Exemplo Simples",description:"Menu de navegação com dois itens simples.",preview:t.jsx(ft,{}),code:pt}],props:[{name:"defaultValue",type:"string",default:"-",description:"Valor inicial do item ativo (não controlado)."},{name:"value",type:"string",default:"-",description:"Valor controlado do item ativo."},{name:"onValueChange",type:"(value: string) => void",default:"-",description:"Callback quando o valor muda."},{name:"delayDuration",type:"number",default:"200",description:"Delay em ms para abrir o menu ao passar o mouse."},{name:"skipDelayDuration",type:"number",default:"300",description:"Delay para pular ao mover entre itens rapidamente."},{name:"orientation",type:'"horizontal" | "vertical"',default:'"horizontal"',description:"Orientação do menu de navegação."},{name:"dir",type:'"ltr" | "rtl"',default:'"ltr"',description:"Direção de leitura do menu."},{name:"asChild (Trigger)",type:"boolean",default:"false",description:"Renderiza o filho como elemento raiz."},{name:"disabled (Trigger)",type:"boolean",default:"false",description:"Desabilita a interação com o trigger."},{name:"asChild (Content)",type:"boolean",default:"false",description:"Renderiza o filho como elemento raiz."},{name:"forceMount (Content)",type:"boolean",default:"false",description:"Força a montagem do conteúdo mesmo quando fechado."},{name:"asChild (Link)",type:"boolean",default:"false",description:"Renderiza o filho como elemento raiz."},{name:"active (Link)",type:"boolean",default:"false",description:"Define o link como ativo visualmente."},{name:"onSelect (Link)",type:"(event: Event) => void",default:"-",description:"Callback quando o link é selecionado."}],accessibility:["Segue o padrão WAI-ARIA para menus de navegação.",'role="navigation" no elemento raiz.',"aria-expanded indica se o submenu está aberto.",'aria-haspopup="menu" nos triggers com submenu.','aria-current="page" pode ser usado para indicar a página atual.',"Gerenciamento automático de foco ao abrir/fechar submenus.","Navegação por teclado completa (Arrow keys, Enter, Escape)."],notes:["Use Navigation Menu para navegação principal do site.","Prefira Navigation Menu horizontal para headers.","Use navigationMenuTriggerStyle() para links sem submenu.","O componente suporta submenus com conteúdo rico como grids e cards.","Crie um componente ListItem reutilizável para itens de menu padronizados."]})}export{wt as NavigationMenuDoc};
@@ -1,55 +0,0 @@
1
- import{j as e,r as t,x as i,gi as s}from"./index-DkiftrvI.js";import{C as r}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function d(){const[a,o]=t.useState(!1),n=[{id:"welcome",title:"Bem-vindo ao Sistema",description:"Neste espaço, você irá adicionar o texto que explica o processo de onboarding. Este é o primeiro passo para conhecer todas as funcionalidades disponíveis."},{id:"features",title:"Conheça as Funcionalidades",description:"Descubra todas as ferramentas disponíveis para você. Navegue pelos menus e explore cada seção do sistema."},{id:"start",title:"Comece Agora",description:"Você está pronto para começar a usar o sistema! Clique em concluir para finalizar o onboarding."}];return e.jsxs("div",{children:[e.jsx(i,{onClick:()=>o(!0),children:"Iniciar Onboarding"}),e.jsx(s,{open:a,onOpenChange:o,steps:n,onComplete:()=>console.log("Onboarding concluído!")})]})}function p(){const[a,o]=t.useState(!1),n=[{id:"welcome",image:"https://images.unsplash.com/photo-1551434678-e076c223a692?w=800&h=450&fit=crop",title:"Bem-vindo ao Sistema",description:"Neste espaço, você irá adicionar o texto que explica o processo de onboarding."},{id:"dashboard",image:"https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=800&h=450&fit=crop",title:"Painel de Controle",description:"Aqui você encontra todas as métricas e informações importantes do seu negócio em tempo real."},{id:"reports",image:"https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=800&h=450&fit=crop",title:"Relatórios Detalhados",description:"Gere relatórios personalizados e exporte dados para análise externa."}];return e.jsxs("div",{children:[e.jsx(i,{onClick:()=>o(!0),children:"Onboarding com Imagens"}),e.jsx(s,{open:a,onOpenChange:o,steps:n,onComplete:()=>console.log("Onboarding com imagens concluído!")})]})}function c(){const[a,o]=t.useState(!1),n=[{id:"animation1",image:"https://media.giphy.com/media/3o7btPCcdNniyf0ArS/giphy.gif",title:"Animações Interativas",description:"O OnboardingDialog suporta GIFs animados para tornar a experiência mais dinâmica e engajante."},{id:"animation2",image:"https://media.giphy.com/media/l0HlNQ03J5JxX6lva/giphy.gif",title:"Demonstrações Visuais",description:"Use GIFs para demonstrar funcionalidades de forma clara e visual."}];return e.jsxs("div",{children:[e.jsx(i,{onClick:()=>o(!0),children:"Onboarding com GIFs"}),e.jsx(s,{open:a,onOpenChange:o,steps:n,onComplete:()=>console.log("Onboarding com GIFs concluído!")})]})}function l(){const[a,o]=t.useState(!1),n=[{id:"single",image:"https://images.unsplash.com/photo-1557804506-669a67965ba0?w=800&h=450&fit=crop",title:"Novidade: Modo Escuro",description:"Agora você pode alternar entre modo claro e escuro nas configurações do sistema. Experimente!"}];return e.jsxs("div",{children:[e.jsx(i,{onClick:()=>o(!0),children:"Anúncio de Feature"}),e.jsx(s,{open:a,onOpenChange:o,steps:n,finishButtonText:"Entendi!",showProgressIndicator:!1,onComplete:()=>console.log("Feature announcement closed")})]})}const m=`import { useState } from "react";
2
- import { OnboardingDialog, OnboardingStep, Button } from "forlogic-core";
3
-
4
- function App() {
5
- const [open, setOpen] = useState(false);
6
-
7
- const steps: OnboardingStep[] = [
8
- {
9
- id: "welcome",
10
- title: "Bem-vindo ao Sistema",
11
- description: "Neste espaço, você irá adicionar o texto que explica o processo de onboarding.",
12
- },
13
- {
14
- id: "features",
15
- title: "Conheça as Funcionalidades",
16
- description: "Descubra todas as ferramentas disponíveis para você.",
17
- },
18
- {
19
- id: "start",
20
- title: "Comece Agora",
21
- description: "Você está pronto para começar a usar o sistema!",
22
- },
23
- ];
24
-
25
- return (
26
- <>
27
- <Button onClick={() => setOpen(true)}>Iniciar Onboarding</Button>
28
- <OnboardingDialog
29
- open={open}
30
- onOpenChange={setOpen}
31
- steps={steps}
32
- onComplete={() => console.log("Onboarding concluído!")}
33
- />
34
- </>
35
- );
36
- }`,u=`const steps: OnboardingStep[] = [
37
- {
38
- id: "welcome",
39
- image: "/onboarding/welcome.png",
40
- title: "Bem-vindo ao Sistema",
41
- description: "Texto explicativo do passo.",
42
- },
43
- {
44
- id: "dashboard",
45
- image: "/onboarding/dashboard.gif", // Suporta GIFs
46
- title: "Painel de Controle",
47
- description: "Aqui você encontra todas as métricas.",
48
- },
49
- ];
50
-
51
- <OnboardingDialog
52
- open={open}
53
- onOpenChange={setOpen}
54
- steps={steps}
55
- />`;function x(){return e.jsx(r,{title:"Onboarding Dialog",description:"Componente para fluxos de onboarding em múltiplos passos. Suporta imagens estáticas, GIFs, navegação entre steps e indicador de progresso com dropdown.",component:e.jsx(d,{}),usage:m,examples:[{title:"Com Imagens",description:"OnboardingDialog com imagens em cada step.",preview:e.jsx(p,{}),code:u},{title:"Com GIFs Animados",description:"Suporte para GIFs animados para demonstrações visuais.",preview:e.jsx(c,{}),code:""},{title:"Single Step (Anúncio)",description:"Use com um único step para anúncios de features ou mensagens simples.",preview:e.jsx(l,{}),code:""}],props:[{name:"open",type:"boolean",description:"Controla se o dialog está aberto. (obrigatório)"},{name:"onOpenChange",type:"(open: boolean) => void",description:"Callback quando o estado de aberto muda. (obrigatório)"},{name:"steps",type:"OnboardingStep[]",description:"Array de steps do onboarding. Cada step possui id, title, description e image (opcional). (obrigatório)"},{name:"onComplete",type:"() => void",description:"Callback quando o onboarding é concluído."},{name:"onStepChange",type:"(stepIndex: number) => void",description:"Callback quando o step muda."},{name:"continueButtonText",type:"string",default:'"Continuar"',description:"Texto do botão continuar."},{name:"backButtonText",type:"string",default:'"Voltar"',description:"Texto do botão voltar."},{name:"finishButtonText",type:"string",default:'"Concluir"',description:"Texto do botão finalizar."},{name:"stepLabel",type:"string",default:'"Etapa"',description:'Label do indicador de step (ex: "Etapa 1/3").'},{name:"size",type:'"sm" | "md" | "lg"',default:'"md"',description:"Tamanho do dialog."},{name:"showProgressIndicator",type:"boolean",default:"true",description:"Mostrar indicador de progresso e dropdown de steps."},{name:"currentStepIndex",type:"number",description:"Índice do step atual (modo controlado)."},{name:"onCurrentStepChange",type:"(index: number) => void",description:"Callback para mudar o step atual (modo controlado)."}],notes:["O componente suporta tanto imagens estáticas quanto GIFs animados.","Use o modo controlado (currentStepIndex + onCurrentStepChange) quando precisar sincronizar o estado com outros componentes.","Os textos dos botões são customizáveis para suporte a i18n.","Para anúncios de features, use com um único step e showProgressIndicator={false}.","O botão 'Voltar' só aparece a partir do segundo step."],accessibility:["O dialog usa os padrões de acessibilidade do Radix UI Dialog.","O botão de fechar possui sr-only label.","Navegação por teclado suportada (Tab, Escape).","Focus trap ativo quando o dialog está aberto."]})}export{x as default};
@@ -1,27 +0,0 @@
1
- import{r as a,j as e,z as t}from"./index-DkiftrvI.js";import{C as c}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function b(){const[n,s]=a.useState(1),[i,o]=a.useState(10),[r,g]=a.useState(1),[l,P]=a.useState(10),[m,d]=a.useState(3),[p,u]=a.useState(10);return e.jsx(c,{title:"Pagination",description:"Barra de paginação completa com seletor de itens por página e controles de navegação.",component:e.jsx("div",{className:"w-full border rounded-md bg-muted/30",children:e.jsx(t,{currentPage:n,totalPages:10,totalItems:100,itemsPerPage:i,onPageChange:s,onItemsPerPageChange:o,variant:"full"})}),usage:`import { Pagination } from "forlogic-core/crud"
2
-
3
- <Pagination
4
- currentPage={1}
5
- totalPages={10}
6
- totalItems={100}
7
- itemsPerPage={10}
8
- onPageChange={(page) => setPage(page)}
9
- onItemsPerPageChange={(limit) => setLimit(limit)}
10
- variant="full"
11
- />`,examples:[{title:"Paginação Básica (até 2 páginas)",preview:e.jsx("div",{className:"w-full border rounded-md bg-muted/30",children:e.jsx(t,{currentPage:r,totalPages:2,totalItems:15,itemsPerPage:l,onPageChange:g,onItemsPerPageChange:P,variant:"full"})}),code:`<Pagination
12
- currentPage={1}
13
- totalPages={2}
14
- totalItems={15}
15
- itemsPerPage={10}
16
- onPageChange={setPage}
17
- onItemsPerPageChange={setItemsPerPage}
18
- variant="full"
19
- />`},{title:"Paginação Extensa (4+ páginas)",preview:e.jsx("div",{className:"w-full border rounded-md bg-muted/30",children:e.jsx(t,{currentPage:m,totalPages:25,totalItems:250,itemsPerPage:p,onPageChange:d,onItemsPerPageChange:u,variant:"full"})}),code:`<Pagination
20
- currentPage={3}
21
- totalPages={25}
22
- totalItems={250}
23
- itemsPerPage={10}
24
- onPageChange={setPage}
25
- onItemsPerPageChange={setItemsPerPage}
26
- variant="full"
27
- />`}],props:[{name:"currentPage",type:"number",default:"-",description:"Página atual (1-indexed)"},{name:"totalPages",type:"number",default:"-",description:"Número total de páginas"},{name:"totalItems",type:"number",default:"-",description:"Número total de itens"},{name:"itemsPerPage",type:"number",default:"-",description:"Quantidade de itens por página"},{name:"onPageChange",type:"(page: number) => void",default:"-",description:"Callback ao mudar de página"},{name:"onItemsPerPageChange",type:"(limit: number) => void",default:"-",description:"Callback ao mudar itens por página"},{name:"variant",type:'"full" | "compact"',default:'"full"',description:"Variante de exibição (full mostra seletor de itens)"},{name:"itemsPerPageOptions",type:"number[]",default:"[10, 25, 50, 100]",description:"Opções disponíveis para itens por página"}],accessibility:["Navegável por teclado","Labels ARIA apropriados","Indicação visual da página atual","Botões desabilitados quando não aplicável","Amigável para leitores de tela"]})}export{b as PaginationDoc};
@@ -1,98 +0,0 @@
1
- import{r as m,j as e,a,b as t,c as r,d as i,a5 as C,a6 as I,a7 as x,aX as w,dy as T,aa as u,z as g,B as N,a4 as y,ar as A,x as b}from"./index-DkiftrvI.js";import{C as B}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function V(){const[n,c]=m.useState(1),[d,h]=m.useState(10),l=157,p=Math.ceil(l/d),[j,f]=m.useState(1),[o,D]=m.useState(10),P=45,S=Math.ceil(P/o),E=Array.from({length:P},(s,v)=>({id:v+1,name:`Item ${v+1}`,status:v%3===0?"active":"inactive"})).slice((j-1)*o,j*o);return e.jsxs(B,{title:"Pagination",description:"Componente de paginação padronizado com layout de 3 colunas, seletor de itens por página e navegação completa.",tocItems:[{id:"instalacao",label:"Instalação"},{id:"uso-basico",label:"Uso Básico"},{id:"variantes",label:"Variantes"},{id:"com-dados",label:"Com Dados Reais"},{id:"props",label:"Propriedades"},{id:"erros-comuns",label:"Erros Comuns"},{id:"acessibilidade",label:"Acessibilidade"}],children:[e.jsxs(a,{id:"instalacao",className:"scroll-mt-4",children:[e.jsx(t,{children:e.jsx(r,{children:"Instalação"})}),e.jsx(i,{children:e.jsx("pre",{className:"bg-muted p-4 rounded-lg text-sm overflow-x-auto",children:`import { CrudPrimitivePagination } from 'forlogic-core';
2
-
3
- // Alias para uso mais curto
4
- import { CrudPrimitivePagination as Pagination } from 'forlogic-core';`})})]}),e.jsxs(a,{id:"uso-basico",className:"scroll-mt-4",children:[e.jsx(t,{children:e.jsx(r,{children:"Uso Básico"})}),e.jsx(i,{children:e.jsxs(C,{defaultValue:"preview",className:"w-full",children:[e.jsxs(I,{className:"mb-4",children:[e.jsxs(x,{value:"preview",className:"gap-2",children:[e.jsx(w,{size:16}),"Preview"]}),e.jsxs(x,{value:"code",className:"gap-2",children:[e.jsx(T,{size:16}),"Código"]})]}),e.jsxs(u,{value:"preview",className:"mt-0",children:[e.jsx("div",{className:"border rounded-lg bg-muted/30",children:e.jsx(g,{currentPage:n,totalPages:p,totalItems:l,itemsPerPage:d,onPageChange:c,onItemsPerPageChange:s=>{h(s),c(1)},variant:"full"})}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-2",children:["Página atual: ",n," | Itens por página: ",d," | Total: ",l]})]}),e.jsx(u,{value:"code",className:"mt-0",children:e.jsx("pre",{className:"bg-muted p-4 rounded-lg text-sm overflow-x-auto",children:`import { useState } from 'react';
5
- import { CrudPrimitivePagination } from 'forlogic-core';
6
-
7
- function MyComponent() {
8
- const [currentPage, setCurrentPage] = useState(1);
9
- const [itemsPerPage, setItemsPerPage] = useState(10);
10
- const totalItems = 157;
11
- const totalPages = Math.ceil(totalItems / itemsPerPage);
12
-
13
- return (
14
- <CrudPrimitivePagination
15
- currentPage={currentPage}
16
- totalPages={totalPages}
17
- totalItems={totalItems}
18
- itemsPerPage={itemsPerPage}
19
- onPageChange={setCurrentPage}
20
- onItemsPerPageChange={(value) => {
21
- setItemsPerPage(value);
22
- setCurrentPage(1); // Reset para primeira página
23
- }}
24
- variant="full"
25
- />
26
- );
27
- }`})})]})})]}),e.jsxs(a,{id:"variantes",className:"scroll-mt-4",children:[e.jsx(t,{children:e.jsx(r,{children:"Variantes"})}),e.jsxs(i,{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(N,{children:'variant="full"'}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Padrão - com seletor de itens"})]}),e.jsx("div",{className:"border rounded-lg bg-muted/30",children:e.jsx(g,{currentPage:n,totalPages:p,totalItems:l,itemsPerPage:d,onPageChange:c,onItemsPerPageChange:h,variant:"full"})})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(N,{variant:"secondary",children:'variant="compact"'}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Sem seletor de itens"})]}),e.jsx("div",{className:"border rounded-lg bg-muted/30",children:e.jsx(g,{currentPage:n,totalPages:p,totalItems:l,itemsPerPage:d,onPageChange:c,onItemsPerPageChange:h,variant:"compact"})})]}),e.jsxs("div",{className:"p-4 border rounded-lg bg-muted/30",children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"Layout Visual (3 colunas):"}),e.jsx("pre",{className:"text-xs text-muted-foreground",children:`┌────────────────────────────────────────────────────────────────┐
28
- │ [Itens: 10 ▼] │ 1-10 de 157 itens │ [<<] [<] 1 de 16 [>] [>>] │
29
- │ ESQUERDA │ CENTRO │ DIREITA │
30
- └────────────────────────────────────────────────────────────────┘`})]})]})]}),e.jsxs(a,{id:"com-dados",className:"scroll-mt-4",children:[e.jsx(t,{children:e.jsx(r,{children:"Com Dados Reais"})}),e.jsxs(i,{children:[e.jsx("p",{className:"text-muted-foreground mb-4",children:"Exemplo prático de paginação integrada com uma lista de dados."}),e.jsxs(C,{defaultValue:"preview",className:"w-full",children:[e.jsxs(I,{className:"mb-4",children:[e.jsxs(x,{value:"preview",className:"gap-2",children:[e.jsx(w,{size:16}),"Preview"]}),e.jsxs(x,{value:"code",className:"gap-2",children:[e.jsx(T,{size:16}),"Código"]})]}),e.jsxs(u,{value:"preview",className:"mt-0 space-y-4",children:[e.jsx("div",{className:"border rounded-lg divide-y",children:E.map(s=>e.jsxs("div",{className:"flex items-center justify-between p-3",children:[e.jsx("span",{className:"font-medium",children:s.name}),e.jsx(N,{variant:s.status==="active"?"default":"secondary",children:s.status==="active"?"Ativo":"Inativo"})]},s.id))}),e.jsx("div",{className:"border rounded-lg",children:e.jsx(g,{currentPage:j,totalPages:S,totalItems:P,itemsPerPage:o,onPageChange:f,onItemsPerPageChange:s=>{D(s),f(1)},variant:"full"})})]}),e.jsx(u,{value:"code",className:"mt-0",children:e.jsx("pre",{className:"bg-muted p-4 rounded-lg text-sm overflow-x-auto",children:`import { useState } from 'react';
31
- import { CrudPrimitivePagination } from 'forlogic-core';
32
-
33
- function DataList({ items }) {
34
- const [currentPage, setCurrentPage] = useState(1);
35
- const [itemsPerPage, setItemsPerPage] = useState(10);
36
-
37
- const totalItems = items.length;
38
- const totalPages = Math.ceil(totalItems / itemsPerPage);
39
-
40
- // Paginar dados
41
- const paginatedItems = items.slice(
42
- (currentPage - 1) * itemsPerPage,
43
- currentPage * itemsPerPage
44
- );
45
-
46
- return (
47
- <>
48
- {/* Lista */}
49
- <div className="divide-y">
50
- {paginatedItems.map((item) => (
51
- <div key={item.id} className="p-3">
52
- {item.name}
53
- </div>
54
- ))}
55
- </div>
56
-
57
- {/* Paginação */}
58
- <CrudPrimitivePagination
59
- currentPage={currentPage}
60
- totalPages={totalPages}
61
- totalItems={totalItems}
62
- itemsPerPage={itemsPerPage}
63
- onPageChange={setCurrentPage}
64
- onItemsPerPageChange={(value) => {
65
- setItemsPerPage(value);
66
- setCurrentPage(1); // Importante: resetar página
67
- }}
68
- variant="full"
69
- />
70
- </>
71
- );
72
- }`})})]})]})]}),e.jsxs(a,{id:"props",className:"scroll-mt-4",children:[e.jsx(t,{children:e.jsx(r,{children:"Propriedades"})}),e.jsx(i,{children:e.jsx("div",{className:"overflow-x-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 font-medium",children:"Prop"}),e.jsx("th",{className:"text-left p-2 font-medium",children:"Tipo"}),e.jsx("th",{className:"text-left p-2 font-medium",children:"Default"}),e.jsx("th",{className:"text-left p-2 font-medium",children:"Descrição"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"currentPage"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"number"}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"-"}),e.jsx("td",{className:"p-2",children:"Página atual (1-indexed)"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"totalPages"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"number"}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"-"}),e.jsx("td",{className:"p-2",children:"Total de páginas"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"totalItems"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"number"}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"-"}),e.jsx("td",{className:"p-2",children:'Total de itens (para exibir "X-Y de Z")'})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"itemsPerPage"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"number"}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"-"}),e.jsx("td",{className:"p-2",children:"Itens por página (10, 25, 50, 100)"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"onPageChange"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"(page: number) => void"}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"-"}),e.jsx("td",{className:"p-2",children:"Callback ao mudar página"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"onItemsPerPageChange"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"(value: number) => void"}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"-"}),e.jsx("td",{className:"p-2",children:"Callback ao mudar itens por página"})]}),e.jsxs("tr",{className:"border-b",children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"variant"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"'full' | 'compact'"}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"'full'"}),e.jsx("td",{className:"p-2",children:"Variante de exibição"})]})]})]})})})]}),e.jsxs(a,{id:"erros-comuns",className:"scroll-mt-4",children:[e.jsx(t,{children:e.jsx(r,{children:"Erros Comuns"})}),e.jsxs(i,{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 border rounded-lg border-destructive/50 bg-destructive/5",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(y,{className:"h-4 w-4 text-destructive"}),e.jsx("h4",{className:"font-medium text-destructive",children:"❌ Paginação Manual"})]}),e.jsx("pre",{className:"bg-muted p-3 rounded text-xs overflow-x-auto",children:`// ❌ NUNCA faça isso
73
- <div className="flex items-center justify-between">
74
- <span>{total} itens</span>
75
- <Button onClick={() => setPage(page - 1)}>
76
- <ChevronLeft />
77
- </Button>
78
- <span>Página {page} de {pages}</span>
79
- <Button onClick={() => setPage(page + 1)}>
80
- <ChevronRight />
81
- </Button>
82
- </div>`})]}),e.jsxs("div",{className:"p-4 border rounded-lg border-green-500/50 bg-green-500/5",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(A,{className:"h-4 w-4 text-green-600"}),e.jsx("h4",{className:"font-medium text-green-600",children:"✅ Use o Componente Padronizado"})]}),e.jsx("pre",{className:"bg-muted p-3 rounded text-xs overflow-x-auto",children:`// ✅ SEMPRE use o componente da lib
83
- <CrudPrimitivePagination
84
- currentPage={page}
85
- totalPages={pages}
86
- totalItems={total}
87
- itemsPerPage={perPage}
88
- onPageChange={setPage}
89
- onItemsPerPageChange={setPerPage}
90
- variant="full"
91
- />`})]}),e.jsxs("div",{className:"p-4 border rounded-lg border-destructive/50 bg-destructive/5",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(y,{className:"h-4 w-4 text-destructive"}),e.jsx("h4",{className:"font-medium text-destructive",children:"❌ Não Resetar Página ao Mudar Itens"})]}),e.jsx("pre",{className:"bg-muted p-3 rounded text-xs overflow-x-auto",children:`// ❌ Pode causar página inválida
92
- onItemsPerPageChange={setItemsPerPage}
93
-
94
- // ✅ SEMPRE reset para página 1
95
- onItemsPerPageChange={(value) => {
96
- setItemsPerPage(value);
97
- setCurrentPage(1); // Importante!
98
- }}`})]})]})]}),e.jsxs(a,{id:"acessibilidade",className:"scroll-mt-4",children:[e.jsx(t,{children:e.jsx(r,{children:"Acessibilidade"})}),e.jsx(i,{children:e.jsxs("ul",{className:"list-disc list-inside space-y-2 text-sm text-muted-foreground",children:[e.jsx("li",{children:"Navegação por teclado entre botões (Tab/Shift+Tab)"}),e.jsx("li",{children:"Botões de navegação com aria-labels descritivos"}),e.jsx("li",{children:"Estados desabilitados visualmente distintos"}),e.jsx("li",{children:"Contraste adequado para texto e ícones (WCAG AA)"}),e.jsx("li",{children:"Select de itens por página acessível via teclado"}),e.jsx("li",{children:'Informação de posição clara ("X-Y de Z itens")'})]})})]}),e.jsxs(a,{children:[e.jsx(t,{children:e.jsx(r,{children:"Ver Também"})}),e.jsxs(i,{children:[e.jsx("p",{className:"text-muted-foreground mb-4",children:"Componentes relacionados:"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>window.location.href="/ds/crud-bulk-action-bar",children:"BulkActionBar →"}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>window.location.href="/ds/crud-primitives",children:"CRUD Primitives →"}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>window.location.href="/ds/crud-table",children:"CrudTable →"})]})]})]})]})}export{V as CrudPaginationDoc};
@@ -1,226 +0,0 @@
1
- import{j as e,r as n,bl as o,bm as i,bk as l,aQ as d,dn as a,ab as s,B as c,bo as m,w as p,x as u,S as g}from"./index-DkiftrvI.js";import{C as x}from"./ComponentDocTemplate-CQbBhfvZ.js";import{C as h}from"./crown-CqNsQIsm.js";import"./ExampleCard-DuLrb3t-.js";function A(){return e.jsx(x,{title:"Places",description:"Módulo para gerenciar estruturas hierárquicas de locais integrado com a API Qualiex. Inclui visualização em árvore, gestão de acessos e componentes reutilizáveis.",installation:`import {
2
- PlacesList,
3
- PlaceCard,
4
- ManageAccessModal,
5
- placeService
6
- } from 'forlogic-core';
7
-
8
- // Tipos
9
- import type {
10
- Place,
11
- PlacesListProps,
12
- PlaceCardProps,
13
- ManageAccessModalProps
14
- } from 'forlogic-core';`,component:e.jsx(f,{}),usage:`// =====================
15
- // BUSCAR LOCAIS
16
- // =====================
17
- import { placeService } from 'forlogic-core';
18
-
19
- async function loadPlaces() {
20
- const places = await placeService.getPlaces(alias, companyId);
21
- // places já vem em estrutura hierárquica
22
- console.log(places);
23
- }
24
-
25
- // =====================
26
- // LISTA SIMPLES (SEM GESTÃO DE ACESSOS)
27
- // =====================
28
- import { PlacesList } from 'forlogic-core';
29
-
30
- function MyPlacesPage() {
31
- const [places, setPlaces] = useState<Place[]>([]);
32
- const [isLoading, setIsLoading] = useState(true);
33
-
34
- useEffect(() => {
35
- placeService.getPlaces(alias, companyId)
36
- .then(setPlaces)
37
- .finally(() => setIsLoading(false));
38
- }, [alias, companyId]);
39
-
40
- return (
41
- <PlacesList
42
- places={places}
43
- isLoading={isLoading}
44
- />
45
- );
46
- }
47
-
48
- // =====================
49
- // COM GESTÃO DE ACESSOS
50
- // =====================
51
- import { PlacesList, PlaceCard } from 'forlogic-core';
52
-
53
- function PlacesWithAccess() {
54
- const [places, setPlaces] = useState<Place[]>([]);
55
- const [managers, setManagers] = useState<Record<string, string>>({});
56
- const [members, setMembers] = useState<Record<string, string[]>>({});
57
-
58
- const manageAccessConfig = {
59
- onMakeManager: async (userId, placeId) => {
60
- setManagers(prev => ({ ...prev, [placeId]: userId }));
61
- // Chamar API para salvar
62
- },
63
- onMakeMembers: async (userIds, placeId) => {
64
- setMembers(prev => ({ ...prev, [placeId]: userIds }));
65
- // Chamar API para salvar
66
- },
67
- getCurrentManagerId: (placeId) => managers[placeId],
68
- getCurrentMemberIds: (placeId) => members[placeId] || []
69
- };
70
-
71
- return (
72
- <PlacesList
73
- places={places}
74
- isLoading={false}
75
- manageAccessConfig={manageAccessConfig}
76
- />
77
- );
78
- }
79
-
80
- // =====================
81
- // PLACECARD INDIVIDUAL
82
- // =====================
83
- import { PlaceCard } from 'forlogic-core';
84
-
85
- <PlaceCard
86
- place={myPlace}
87
- level={0}
88
- manageAccessConfig={manageAccessConfig}
89
- />`,examples:[{title:"Estrutura de Tipos",description:"Tipos principais usados no módulo de locais.",preview:e.jsx(v,{}),code:`interface Place {
90
- id: string;
91
- name: string;
92
- usersCount?: number; // Quantidade de usuários no local
93
- hasChild?: boolean; // Se tem sub-locais
94
- isActive?: boolean; // Status do local
95
- parentId?: string; // ID do local pai
96
- parentName?: string; // Nome do local pai
97
- subPlaces?: Place[]; // Sub-locais (estrutura aninhada)
98
- }
99
-
100
- // A estrutura hierárquica é montada automaticamente
101
- // pelo placeService.getPlaces()`},{title:"PlacesList",description:"Componente que renderiza a lista completa de locais com suporte a hierarquia.",preview:e.jsx(j,{}),code:`import { PlacesList } from 'forlogic-core';
102
-
103
- function MyPlaces() {
104
- const [places, setPlaces] = useState<Place[]>([]);
105
- const [isLoading, setIsLoading] = useState(true);
106
-
107
- useEffect(() => {
108
- placeService.getPlaces(alias, companyId)
109
- .then(setPlaces)
110
- .finally(() => setIsLoading(false));
111
- }, []);
112
-
113
- return (
114
- <PlacesList
115
- places={places}
116
- isLoading={isLoading}
117
- />
118
- );
119
- }
120
-
121
- // Com gestão de acessos
122
- <PlacesList
123
- places={places}
124
- isLoading={false}
125
- manageAccessConfig={{
126
- onMakeManager: handleMakeManager,
127
- onMakeMembers: handleMakeMembers,
128
- getCurrentManagerId: (placeId) => managers[placeId],
129
- getCurrentMemberIds: (placeId) => members[placeId]
130
- }}
131
- />`},{title:"PlaceCard",description:"Componente individual de local com expansão/colapso e ações.",preview:e.jsx(N,{}),code:`import { PlaceCard } from 'forlogic-core';
132
-
133
- // Uso básico
134
- <PlaceCard
135
- place={{
136
- id: '1',
137
- name: 'Matriz',
138
- usersCount: 42,
139
- isActive: true,
140
- subPlaces: [
141
- { id: '2', name: 'Filial SP', usersCount: 15 },
142
- { id: '3', name: 'Filial RJ', usersCount: 10 }
143
- ]
144
- }}
145
- />
146
-
147
- // Com nível de indentação (para sub-locais)
148
- <PlaceCard
149
- place={subPlace}
150
- level={1} // Indentação aumenta
151
- />
152
-
153
- // Com gestão de acessos
154
- <PlaceCard
155
- place={place}
156
- manageAccessConfig={{
157
- onMakeManager: (userId, placeId) => console.log('Gestor:', userId),
158
- onMakeMembers: (userIds, placeId) => console.log('Membros:', userIds),
159
- getCurrentManagerId: (placeId) => currentManager,
160
- getCurrentMemberIds: (placeId) => currentMembers
161
- }}
162
- />`},{title:"ManageAccessModal",description:"Modal para gerenciar gestores e membros de um local.",preview:e.jsx(I,{}),code:`import { ManageAccessModal } from 'forlogic-core';
163
-
164
- function AccessManager() {
165
- const [open, setOpen] = useState(false);
166
- const [managerId, setManagerId] = useState<string>();
167
- const [memberIds, setMemberIds] = useState<string[]>([]);
168
-
169
- return (
170
- <>
171
- <Button onClick={() => setOpen(true)}>
172
- Gerenciar Acessos
173
- </Button>
174
-
175
- <ManageAccessModal
176
- open={open}
177
- onOpenChange={setOpen}
178
- placeId="place-123"
179
- placeName="Matriz"
180
- currentManagerId={managerId}
181
- currentMemberIds={memberIds}
182
- onMakeManager={async (userId, placeId) => {
183
- setManagerId(userId);
184
- // Salvar na API
185
- }}
186
- onMakeMembers={async (userIds, placeId) => {
187
- setMemberIds(userIds);
188
- // Salvar na API
189
- }}
190
- />
191
- </>
192
- );
193
- }
194
-
195
- // Props do ManageAccessModal:
196
- // - open: boolean
197
- // - onOpenChange: (open: boolean) => void
198
- // - placeId: string
199
- // - placeName: string
200
- // - onMakeManager?: (userId, placeId) => void | Promise<void>
201
- // - onMakeMembers?: (userIds[], placeId) => void | Promise<void>
202
- // - currentManagerId?: string
203
- // - currentMemberIds?: string[]`},{title:"placeService",description:"Serviço para buscar locais da API Qualiex.",preview:e.jsx(M,{}),code:`import { placeService } from 'forlogic-core';
204
-
205
- // Buscar todos os locais (retorna hierarquia montada)
206
- const places = await placeService.getPlaces(alias, companyId);
207
-
208
- // O serviço:
209
- // 1. Faz a chamada à API Qualiex
210
- // 2. Valida e renova token automaticamente se necessário
211
- // 3. Converte lista plana em hierarquia
212
- // 4. Retorna Place[] com subPlaces aninhados
213
-
214
- // Estrutura retornada:
215
- [
216
- {
217
- id: '1',
218
- name: 'Matriz',
219
- usersCount: 42,
220
- isActive: true,
221
- subPlaces: [
222
- { id: '2', name: 'Filial SP', ... },
223
- { id: '3', name: 'Filial RJ', ... }
224
- ]
225
- }
226
- ]`}],props:[{name:"PlacesList.places",type:"Place[]",description:"Lista de locais a serem exibidos (já em estrutura hierárquica)."},{name:"PlacesList.isLoading",type:"boolean",description:"Exibe skeleton de loading."},{name:"PlacesList.manageAccessConfig",type:"object",description:"Configuração para habilitar gestão de acessos."},{name:"PlaceCard.place",type:"Place",description:"Dados do local a ser renderizado."},{name:"PlaceCard.level",type:"number",default:"0",description:"Nível de indentação (0 = raiz)."},{name:"PlaceCard.manageAccessConfig",type:"object",description:"Configuração para habilitar botão de gestão de acessos."},{name:"ManageAccessModal.open",type:"boolean",description:"Controla visibilidade do modal."},{name:"ManageAccessModal.onOpenChange",type:"(open: boolean) => void",description:"Callback quando visibilidade muda."},{name:"ManageAccessModal.placeId",type:"string",description:"ID do local sendo gerenciado."},{name:"ManageAccessModal.placeName",type:"string",description:"Nome do local (exibido no título)."},{name:"ManageAccessModal.onMakeManager",type:"(userId, placeId) => void | Promise<void>",description:"Callback ao tornar usuário gestor."},{name:"ManageAccessModal.onMakeMembers",type:"(userIds[], placeId) => void | Promise<void>",description:"Callback ao tornar usuários membros."},{name:"ManageAccessModal.currentManagerId",type:"string",description:"ID do gestor atual (para destacar)."},{name:"ManageAccessModal.currentMemberIds",type:"string[]",description:"IDs dos membros atuais (para destacar)."}],accessibility:["Botões de expandir/colapsar acessíveis via teclado.","Modal segue padrões WAI-ARIA.","Checkboxes navegáveis por Tab.","Estados de loading anunciados para leitores de tela.","Busca de usuários com feedback visual."],notes:["Requer integração com API Qualiex configurada.","O placeService monta a hierarquia automaticamente.","O ManageAccessModal usa o hook useQualiexUsers internamente.","A gestão de acessos é opcional - sem manageAccessConfig, apenas exibe.","Níveis de hierarquia são controlados pela prop level no PlaceCard."]})}function f(){return e.jsxs("div",{className:"p-6 border rounded-lg bg-card space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-6 w-6 text-primary"}),e.jsx("h3",{className:"text-lg font-semibold",children:"Módulo de Locais"})]}),e.jsx("p",{className:"text-muted-foreground",children:"Sistema para gerenciar estrutura hierárquica de locais:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-sm",children:[e.jsx("li",{children:"Visualização em árvore expansível"}),e.jsx("li",{children:"Contagem de usuários por local"}),e.jsx("li",{children:"Status ativo/inativo"}),e.jsx("li",{children:"Gestão de gestores e membros"}),e.jsx("li",{children:"Integração com usuários Qualiex"})]})]})}function v(){return e.jsxs("div",{className:"p-4 border rounded-lg bg-muted/30 font-mono text-xs space-y-2",children:[e.jsx("div",{className:"text-primary",children:"Place"}),e.jsx("div",{className:"pl-4 text-muted-foreground",children:"id, name, usersCount, hasChild, isActive, parentId, subPlaces[]"})]})}function j(){const[r,t]=n.useState(!0);return e.jsxs("div",{className:"border rounded-lg overflow-hidden",children:[e.jsx("div",{className:"p-3 bg-muted/30 border-b",children:e.jsx("h3",{className:"text-sm font-semibold",children:"Estrutura de Locais"})}),e.jsxs("div",{className:"divide-y",children:[e.jsxs(o,{open:r,onOpenChange:t,children:[e.jsxs("div",{className:"flex items-center gap-2 py-3 px-4 hover:bg-accent/50",children:[e.jsxs(i,{className:"flex items-center gap-2 flex-1",children:[r?e.jsx(l,{className:"h-4 w-4"}):e.jsx(d,{className:"h-4 w-4"}),e.jsx(a,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"font-medium",children:"Matriz"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"(2)"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(s,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"42"})]}),e.jsx(c,{children:"Ativo"})]})]}),e.jsxs(m,{children:[e.jsxs("div",{className:"flex items-center gap-2 py-3 px-4 hover:bg-accent/50",style:{paddingLeft:"3rem"},children:[e.jsx("div",{className:"w-4"}),e.jsx(a,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"font-medium",children:"Filial SP"}),e.jsxs("div",{className:"ml-auto flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(s,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"15"})]}),e.jsx(c,{children:"Ativo"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 py-3 px-4 hover:bg-accent/50",style:{paddingLeft:"3rem"},children:[e.jsx("div",{className:"w-4"}),e.jsx(a,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"font-medium",children:"Filial RJ"}),e.jsxs("div",{className:"ml-auto flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(s,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"10"})]}),e.jsx(c,{variant:"secondary",children:"Inativo"})]})]})]})]}),e.jsx(p,{})]})]})}function N(){const[r,t]=n.useState(!1);return e.jsx("div",{className:"border rounded-lg overflow-hidden",children:e.jsxs(o,{open:r,onOpenChange:t,children:[e.jsxs("div",{className:"flex items-center gap-2 py-3 px-4 hover:bg-accent/50",children:[e.jsxs(i,{className:"flex items-center gap-2 flex-1",children:[r?e.jsx(l,{className:"h-4 w-4"}):e.jsx(d,{className:"h-4 w-4"}),e.jsx(a,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"font-medium",children:"Departamento TI"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"(3)"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(s,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"25"})]}),e.jsx(c,{children:"Ativo"}),e.jsx(u,{variant:"ghost",size:"sm",children:e.jsx(g,{className:"h-4 w-4"})})]})]}),e.jsxs(m,{children:[e.jsxs("div",{className:"flex items-center gap-2 py-3 px-4 hover:bg-accent/50",style:{paddingLeft:"3rem"},children:[e.jsx("div",{className:"w-4"}),e.jsx(a,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"font-medium",children:"Desenvolvimento"}),e.jsxs("div",{className:"ml-auto flex items-center gap-1.5",children:[e.jsx(s,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"12"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 py-3 px-4 hover:bg-accent/50",style:{paddingLeft:"3rem"},children:[e.jsx("div",{className:"w-4"}),e.jsx(a,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"font-medium",children:"Infraestrutura"}),e.jsxs("div",{className:"ml-auto flex items-center gap-1.5",children:[e.jsx(s,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"8"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 py-3 px-4 hover:bg-accent/50",style:{paddingLeft:"3rem"},children:[e.jsx("div",{className:"w-4"}),e.jsx(a,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"font-medium",children:"Suporte"}),e.jsxs("div",{className:"ml-auto flex items-center gap-1.5",children:[e.jsx(s,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"5"})]})]})]})]})})}function I(){return e.jsxs("div",{className:"p-4 border rounded-lg space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(s,{className:"h-4 w-4"}),"ManageAccessModal"]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-xs",children:[e.jsxs("div",{className:"p-3 bg-muted/50 rounded-lg space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(h,{className:"h-3.5 w-3.5 text-yellow-500"}),e.jsx("span",{className:"font-medium",children:"Gestor"})]}),e.jsx("p",{className:"text-muted-foreground",children:"Selecione 1 usuário"})]}),e.jsxs("div",{className:"p-3 bg-muted/50 rounded-lg space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s,{className:"h-3.5 w-3.5 text-primary"}),e.jsx("span",{className:"font-medium",children:"Membros"})]}),e.jsx("p",{className:"text-muted-foreground",children:"Selecione N usuários"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Usa o hook useQualiexUsers para listar usuários disponíveis."})]})}function M(){return e.jsxs("div",{className:"p-4 border rounded-lg font-mono text-xs space-y-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"// placeService"}),e.jsxs("div",{children:[e.jsx("span",{className:"text-primary",children:"getPlaces"}),e.jsx("span",{className:"text-muted-foreground",children:"(alias, companyId)"})]}),e.jsx("div",{className:"pl-4 text-muted-foreground",children:"→ Place[] (hierarquia montada)"})]})}export{A as PlacesDoc};