forlogic-core 2.0.4 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.note/memory/features/crud-defaults-batteries-included.md +1 -1
- package/dist/auth/services/TokenManager.d.ts +0 -1
- package/dist/components/ui/dialog-wizard.d.ts +82 -0
- package/dist/components/ui/input-group.d.ts +1 -1
- package/dist/components/ui/input.d.ts +5 -23
- package/dist/components/ui/resizable.d.ts +1 -1
- package/dist/components/ui/sidebar.d.ts +1 -1
- package/dist/components/ui/step-selector.d.ts +11 -9
- package/dist/components/ui/textarea.d.ts +1 -0
- package/dist/crud/components/CrudTable.d.ts +3 -1
- package/dist/crud/createCrudPage.d.ts +2 -0
- package/dist/crud/hooks/useColumnManager.d.ts +3 -1
- package/dist/exports/ui.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/types.d.ts +3 -0
- package/docs/design-system/README.md +2 -2
- package/docs/design-system/buttons-actions.md +6 -0
- package/docs/design-system/domain.md +10 -0
- package/docs/design-system/inputs.md +20 -0
- package/docs/design-system/navigation.md +5 -0
- package/docs/design-system/notifications-feedback.md +2 -0
- package/package.json +1 -1
- package/dist/assets/AccordionDoc-CGNlubG3.js +0 -31
- package/dist/assets/ActionButtonDoc-CYtkXR0k.js +0 -47
- package/dist/assets/ActionPlanDoc-BSuPRftQ.js +0 -65
- package/dist/assets/AlertDoc-Cpvxneqg.js +0 -37
- package/dist/assets/AliasUrlDoc-DIpUWf4Y.js +0 -189
- package/dist/assets/AppHeaderDoc-DNQErj_t.js +0 -74
- package/dist/assets/AppSidebarDoc-DkeQarDu.js +0 -221
- package/dist/assets/ApprovalFlowDoc-8YgXbhKJ.js +0 -31
- package/dist/assets/AuditLogDoc-BBvNcHIo.js +0 -67
- package/dist/assets/AuditTrailDoc-DgFHO-uo.js +0 -17
- package/dist/assets/AuthDoc-WIA_Aetl.js +0 -200
- package/dist/assets/AvatarDoc-B6go1C1T.js +0 -11
- package/dist/assets/BadgeDoc-BONhfqB_.js +0 -36
- package/dist/assets/BaseFormDoc-CuyUArcj.js +0 -169
- package/dist/assets/BodyContentDoc-CterHC1E.js +0 -83
- package/dist/assets/BreadcrumbDoc-Dwn9nLeO.js +0 -75
- package/dist/assets/ButtonDoc-BOjRseZT.js +0 -41
- package/dist/assets/ButtonGroupDoc-8IS6PPh4.js +0 -7
- package/dist/assets/CalendarDoc-CMwIEqgT.js +0 -81
- package/dist/assets/CardDoc-BZz1CVg2.js +0 -49
- package/dist/assets/ChartDoc-B5vZVtqD.js +0 -76
- package/dist/assets/CheckboxDoc-lAbYO9I5.js +0 -55
- package/dist/assets/ColorPickerDoc-Dpsprp4N.js +0 -10
- package/dist/assets/ColorsFoundationDoc-CCHeSL3p.js +0 -13
- package/dist/assets/ComboTreeDoc-D4dTkIt-.js +0 -46
- package/dist/assets/ComboboxDoc-CqqZPvZq.js +0 -134
- package/dist/assets/ComponentDocTemplate-CQbBhfvZ.js +0 -1
- package/dist/assets/ContextMenuDoc-D3jC-MVA.js +0 -182
- package/dist/assets/ContextsDoc-XFH0-JdS.js +0 -211
- package/dist/assets/CreateCrudPageDoc-CpuiWI-g.js +0 -106
- package/dist/assets/CrudActionBarDoc-wuBGXD9Y.js +0 -112
- package/dist/assets/CrudGridDoc-BYWqSXBH.js +0 -85
- package/dist/assets/CrudOverviewDoc-B_bk2a2t.js +0 -14
- package/dist/assets/CrudPrimitivesDoc-CxaTB94A.js +0 -164
- package/dist/assets/CrudTableDoc-Dga1VgCu.js +0 -113
- package/dist/assets/CustomFormFieldsDoc-C1hwwSl3.js +0 -33
- package/dist/assets/DashboardFormDoc-BUDCmrMl.js +0 -49
- package/dist/assets/DashboardGeneralViewDoc-Cyg1SIiG.js +0 -71
- package/dist/assets/DashboardGridDoc-BavePiRF.js +0 -49
- package/dist/assets/DashboardListDoc-CLyMA6UK.js +0 -37
- package/dist/assets/DashboardOverviewDoc-DRVvNIF1.js +0 -35
- package/dist/assets/DashboardPanelRendererDoc--mfwb8Nc.js +0 -60
- package/dist/assets/DashboardPanelsBasicDoc-BQ2V_52D.js +0 -62
- package/dist/assets/DashboardPanelsCartesianDoc-sy-hcVQY.js +0 -75
- package/dist/assets/DashboardPanelsSpecialDoc-DsIUCRRP.js +0 -83
- package/dist/assets/DashboardViewDoc-CtlCNlEF.js +0 -45
- package/dist/assets/DataListDoc-DUy88lCQ.js +0 -13
- package/dist/assets/DesignSystemHome-DHl9YtbH.js +0 -1
- package/dist/assets/DialogDoc-CMQqnTV-.js +0 -981
- package/dist/assets/DropdownMenuDoc-S7X9csGt.js +0 -175
- package/dist/assets/ElectronicSignatureDialogDoc-BfithaL_.js +0 -57
- package/dist/assets/EmptyStateDoc-CHGCiGIk.js +0 -35
- package/dist/assets/EnvironmentsDoc-DZHJZ2nm.js +0 -96
- package/dist/assets/ErrorBoundaryDoc-DoaAg68p.js +0 -111
- package/dist/assets/ExampleActionPlanPage-C0fIMZCD.js +0 -1
- package/dist/assets/ExampleAppDoc-DzIU81Fn.js +0 -1
- package/dist/assets/ExampleCard-DuLrb3t-.js +0 -1
- package/dist/assets/ExampleCrudReportsPage-M0pz6tdM.js +0 -1
- package/dist/assets/ExampleDashboardPage-CRG5r3Vw.js +0 -1
- package/dist/assets/ExampleIdeasPage-I84ZMLY4.js +0 -1
- package/dist/assets/ExampleImportWizardPage-h4YqrrSe.js +0 -1
- package/dist/assets/ExampleSettingsPage-CwdWqoaP.js +0 -1
- package/dist/assets/FileUploadDoc-9-UujFNX.js +0 -34
- package/dist/assets/FilterBar-DDTqqUfZ.js +0 -1
- package/dist/assets/FormDoc-CVES6n3d.js +0 -81
- package/dist/assets/FoundationOverview-DT0u11Gz.js +0 -1
- package/dist/assets/GridDoc-CbHFSILF.js +0 -28
- package/dist/assets/HooksDoc-Ctxdk6Wq.js +0 -665
- package/dist/assets/HoverCardDoc-8Wkaafdj.js +0 -31
- package/dist/assets/I18nDoc-D3Q2m7ik.js +0 -167
- package/dist/assets/IconPickerDoc-DZ26Gdpg.js +0 -10
- package/dist/assets/IconsFoundationDoc-xOxtC7CW.js +0 -33
- package/dist/assets/InputDoc-BhztAiuJ.js +0 -211
- package/dist/assets/LabelDoc-A4hmTRRV.js +0 -42
- package/dist/assets/LeadershipDoc-CqOSfWsP.js +0 -452
- package/dist/assets/MediaDoc-C78gvC8p.js +0 -459
- package/dist/assets/MenubarDoc-DCnmd2tO.js +0 -165
- package/dist/assets/ModuleAccessDoc-CmD5nHDp.js +0 -153
- package/dist/assets/ModulesDialogDoc-DVit1CA-.js +0 -46
- package/dist/assets/MultiselectPermissionsDoc-tlJMs04L.js +0 -34
- package/dist/assets/NavigationMenuDoc-q1fbc89j.js +0 -116
- package/dist/assets/OnboardingDialogDoc-3A3eBYrq.js +0 -55
- package/dist/assets/PaginationDoc-B8-bMz5J.js +0 -27
- package/dist/assets/PaginationDoc-BkGdxHL3.js +0 -98
- package/dist/assets/PlacesDoc-CKPO6ATs.js +0 -226
- package/dist/assets/PopoverDoc-CJPU4Ags.js +0 -64
- package/dist/assets/ProgressDoc-CpjbTL4o.js +0 -29
- package/dist/assets/QualiexUserFieldDoc-DDwumlRw.js +0 -149
- package/dist/assets/RadioGroupDoc-D6tSZz8G.js +0 -57
- package/dist/assets/RadiusDoc-B4xSnajw.js +0 -7
- package/dist/assets/ReportRequestListDoc-C0LIaU8P.js +0 -15
- package/dist/assets/RequiredFieldsCounterDoc-COesoSdx.js +0 -58
- package/dist/assets/ResizableDoc-CW0-XQuB.js +0 -104
- package/dist/assets/RichTextEditorDoc-C8c_XA9P.js +0 -24
- package/dist/assets/ScrollAreaDoc-BxtoAPaZ.js +0 -28
- package/dist/assets/SecurityDoc-wOVqpg2F.js +0 -204
- package/dist/assets/SelectDoc-C75gtY9D.js +0 -80
- package/dist/assets/SeparatorDoc-BjQBPB1P.js +0 -4
- package/dist/assets/ServicesDoc-CXTctwBl.js +0 -308
- package/dist/assets/ShadowsDoc-C6Lw8_x2.js +0 -9
- package/dist/assets/SignDoc-Bh5ZUg5x.js +0 -66
- package/dist/assets/SkeletonDoc-rTLGK5VE.js +0 -54
- package/dist/assets/SliderDoc-JMAMDub7.js +0 -41
- package/dist/assets/SpacingDoc-RljOrpwA.js +0 -12
- package/dist/assets/SplitButtonDoc-CvShUW3w.js +0 -53
- package/dist/assets/StepSelectorDoc-C-nAap9H.js +0 -41
- package/dist/assets/SwitchDoc-DLnqmkPr.js +0 -56
- package/dist/assets/TableDoc-B8EpWLVg.js +0 -128
- package/dist/assets/TabsDoc-DIBtl_uC.js +0 -42
- package/dist/assets/TeamSelectorDoc-B7OnCbL7.js +0 -10
- package/dist/assets/TermsOfUseDoc-Bb-pw08s.js +0 -16
- package/dist/assets/TextareaDoc-DGnqMqEC.js +0 -46
- package/dist/assets/ToastDoc-DjYyc7ae.js +0 -157
- package/dist/assets/ToggleDoc-C9ZOVjkY.js +0 -51
- package/dist/assets/TooltipDoc-BEx4l9-i.js +0 -58
- package/dist/assets/TruncatedCellDoc-BbV1bRSY.js +0 -12
- package/dist/assets/TypographyFoundationDoc-CUDYjRo9.js +0 -7
- package/dist/assets/UpdatesNotificationDoc-7nyjzLMJ.js +0 -29
- package/dist/assets/UsersGroupsSelectorDoc-C0KlTAL5.js +0 -18
- package/dist/assets/UtilitiesDoc-DGxaHVV1.js +0 -145
- package/dist/assets/ViewerDialogsDoc-CnTPTEz0.js +0 -1
- package/dist/assets/blocks-B6LrJeAM.js +0 -1
- package/dist/assets/building-DeVappnD.js +0 -1
- package/dist/assets/calendar-days-BQ0na5kM.js +0 -1
- package/dist/assets/check-check-C_-PJCJa.js +0 -1
- package/dist/assets/circle-plus-CpIcep-O.js +0 -1
- package/dist/assets/circle-x-jPpBPew0.js +0 -1
- package/dist/assets/clipboard-list-CXNPdciZ.js +0 -1
- package/dist/assets/cloud-upload-BEjzumjl.js +0 -1
- package/dist/assets/crown-CqNsQIsm.js +0 -1
- package/dist/assets/date-picker-BW3eGOe_.js +0 -1
- package/dist/assets/disabled-menu-item-C2YaMvSt.js +0 -1
- package/dist/assets/drawer-D5rflIcD.js +0 -3
- package/dist/assets/file-braces-DFb5X9so.js +0 -1
- package/dist/assets/file-pen-line-CyUGKkEN.js +0 -1
- package/dist/assets/git-branch-BcXv9mpp.js +0 -1
- package/dist/assets/globe-CpMIWAcv.js +0 -1
- package/dist/assets/hash-cQWdKjya.js +0 -1
- package/dist/assets/hourglass-BahQ3eDv.js +0 -1
- package/dist/assets/hover-card-R66N85sZ.js +0 -1
- package/dist/assets/iframe-dialog-V0mW5aBb.js +0 -1
- package/dist/assets/index-DkiftrvI.js +0 -352
- package/dist/assets/index-nmBjO9Th.css +0 -1
- package/dist/assets/life-buoy-ByXiPddz.js +0 -1
- package/dist/assets/loading-state-Cb5_t5uE.js +0 -1
- package/dist/assets/lucide-react-Cp3Yw3Zm.js +0 -1
- package/dist/assets/package-B3-pVvPM.js +0 -1
- package/dist/assets/pen-Bi_lmmKT.js +0 -1
- package/dist/assets/pin-DVsSl8QA.js +0 -1
- package/dist/assets/printer-BnJ8B6m-.js +0 -1
- package/dist/assets/radio-group-BHAaNGsm.js +0 -1
- package/dist/assets/server-CtzFTfKR.js +0 -1
- package/dist/assets/share-2-Dv8Do445.js +0 -1
- package/dist/assets/shield-check-CFXjOV_w.js +0 -1
- package/dist/assets/shield-x-DJTRfVux.js +0 -1
- package/dist/assets/slider-v9tXBSnB.js +0 -1
- package/dist/assets/smartphone-BSNR60L7.js +0 -1
- package/dist/assets/step-selector-ATTh_9Wa.js +0 -1
- package/dist/assets/text-align-start-qE-MbYYw.js +0 -1
- package/dist/assets/thumbs-up-D_XIW_uX.js +0 -1
- package/dist/assets/trash-DTWQwpwA.js +0 -1
- package/dist/assets/trending-up-jip5-leJ.js +0 -1
- package/dist/assets/useMockCrud-CN4vjyOZ.js +0 -1
- package/dist/assets/user-check-BlH3EDWK.js +0 -1
- package/dist/assets/user-plus-BqwXwD-c.js +0 -1
- package/dist/index.html +0 -33
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as i,j as e,B as o,w as R,x as n,P as X,Z as H,_ as J,$ as K,a0 as V,m as I,a1 as Y,K as k,a2 as Z,L as $,a3 as Q,E as D,G as P,H as F,I as q,J as w,M as W,X as L,a4 as ee,Y as g}from"./index-DkiftrvI.js";import{T as se}from"./thumbs-up-D_XIW_uX.js";const j=[{id:"melhoria",name:"Melhoria",color:"bg-blue-100 text-blue-800"},{id:"bug",name:"Bug Report",color:"bg-red-100 text-red-800"},{id:"feature",name:"Nova Feature",color:"bg-green-100 text-green-800"},{id:"ux",name:"UX/UI",color:"bg-purple-100 text-purple-800"}],ae={nova:{label:"Nova",variant:"secondary"},em_analise:{label:"Em Análise",variant:"default"},aprovada:{label:"Aprovada",variant:"success"},rejeitada:{label:"Rejeitada",variant:"danger"}},te=[{id:"1",title:"Adicionar filtro por período no relatório de NCs",description:"Permitir que o usuário filtre as não conformidades por um intervalo de datas específico, facilitando análises mensais e trimestrais.",status:"aprovada",votes:12,comments:3,tags:["melhoria","feature"],createdAt:"2026-03-15",author:"Maria Silva"},{id:"2",title:"Dashboard com indicadores de treinamento",description:"Criar um painel visual mostrando taxa de conclusão, treinamentos vencidos e próximos vencimentos.",status:"em_analise",votes:8,comments:5,tags:["feature"],createdAt:"2026-03-10",author:"João Santos"},{id:"3",title:"Melhorar layout mobile da lista de documentos",description:"A tabela de documentos não fica responsiva em dispositivos móveis. Cards seriam mais adequados.",status:"nova",votes:5,comments:1,tags:["ux","melhoria"],createdAt:"2026-03-20",author:"Ana Costa"},{id:"4",title:"Notificação push para aprovações pendentes",description:"Enviar notificação quando há aprovações aguardando o usuário, para agilizar o fluxo de aprovação.",status:"nova",votes:15,comments:7,tags:["feature"],createdAt:"2026-03-22",author:"Carlos Lima"},{id:"5",title:"Erro ao exportar relatório com mais de 500 linhas",description:"Timeout ao gerar relatório em Excel quando a quantidade de registros ultrapassa 500.",status:"rejeitada",votes:2,comments:4,tags:["bug"],createdAt:"2026-03-08",author:"Fernanda Oliveira"}];function y({name:m}){return e.jsx(o,{variant:"outline",className:"text-[10px] font-mono bg-muted/50 absolute -top-2.5 right-2 z-10",children:m})}function le(){const[m,u]=i.useState(te),[c,M]=i.useState(""),[r,x]=i.useState([]),[B,d]=i.useState(!1),[h,A]=i.useState(null),[f,N]=i.useState(null),[p,C]=i.useState(""),[b,S]=i.useState(""),[T,v]=i.useState([]),E=i.useMemo(()=>{let s=m;if(c){const t=c.toLowerCase();s=s.filter(a=>a.title.toLowerCase().includes(t)||a.author.toLowerCase().includes(t))}return r.length>0&&(s=s.filter(t=>r.some(a=>t.tags.includes(a)))),s},[m,c,r]),O=()=>{A(null),C(""),S(""),v([]),d(!0)},z=s=>{A(s),C(s.title),S(s.description),v([...s.tags]),d(!0)},U=()=>{if(!p){g.error("Título é obrigatório");return}h?(u(s=>s.map(t=>t.id===h.id?{...t,title:p,description:b,tags:T}:t)),g.success("Ideia atualizada")):(u(s=>[...s,{id:String(Date.now()),title:p,description:b,status:"nova",votes:0,comments:0,tags:T,createdAt:new Date().toISOString().slice(0,10),author:"Usuário Atual"}]),g.success("Ideia criada")),d(!1)},_=s=>{u(t=>t.map(a=>a.id===s?{...a,votes:a.votes+1}:a))};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:"Gestão de Ideias"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"Cenário de lista com filtros, tags, dialogs e formulários — inspirado no módulo de User Voice."}),e.jsx("div",{className:"flex flex-wrap gap-1 mt-3",children:["Button","Badge","Popover","Dialog","EmptyState","Input","Textarea","Checkbox","Toast","Separator"].map(s=>e.jsx(o,{variant:"outline",className:"text-xs font-mono",children:s},s))})]}),e.jsx(R,{}),e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(n,{onClick:O,children:[e.jsx(X,{className:"h-4 w-4 mr-2"})," Nova Ideia"]}),e.jsxs("div",{className:"relative",children:[e.jsx(y,{name:"Popover"}),e.jsxs(H,{children:[e.jsx(J,{asChild:!0,children:e.jsxs(n,{variant:r.length>0?"default":"outline",size:"sm",children:[e.jsx(K,{className:"h-4 w-4 mr-2"}),"Filtrar",r.length>0&&e.jsx(o,{variant:"secondary",className:"ml-1.5 h-5 px-1.5 text-xs",children:r.length})]})}),e.jsx(V,{align:"start",className:"w-56 p-3",children:e.jsxs("div",{className:"space-y-2",children:[j.map(s=>e.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[e.jsx(I,{checked:r.includes(s.id),onCheckedChange:t=>{x(t?a=>[...a,s.id]:a=>a.filter(l=>l!==s.id))}}),e.jsx("span",{className:"text-sm",children:s.name})]},s.id)),r.length>0&&e.jsx("button",{onClick:()=>x([]),className:"text-xs text-muted-foreground hover:text-foreground pt-2 border-t w-full text-left",children:"Limpar filtros"})]})})]})]}),r.map(s=>{const t=j.find(a=>a.id===s);return t?e.jsxs(o,{variant:"default",className:"gap-1 cursor-pointer",onClick:()=>x(a=>a.filter(l=>l!==t.id)),children:[t.name," ",e.jsx(Y,{className:"h-3 w-3"})]},t.id):null})]}),e.jsx("div",{className:"w-64",children:e.jsx(k,{placeholder:"Buscar ideias...",value:c,onChange:s=>M(s.target.value)})})]}),E.length===0?e.jsxs("div",{className:"relative",children:[e.jsx(y,{name:"EmptyState"}),e.jsx(Z,{icon:e.jsx($,{className:"h-12 w-12"}),title:"Nenhuma ideia encontrada",description:c||r.length>0?"Tente ajustar os filtros":'Clique em "Nova Ideia" para começar'})]}):e.jsx("div",{className:"space-y-3",children:E.map(s=>{const t=ae[s.status];return e.jsx("div",{className:"border rounded-lg p-4 hover:shadow-sm transition-shadow cursor-pointer",onClick:()=>z(s),children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold",children:s.title}),e.jsx(o,{variant:t.variant,children:t.label})]}),e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:s.description}),e.jsxs("div",{className:"flex items-center gap-3 mt-2",children:[e.jsx("div",{className:"flex gap-1",children:s.tags.map(a=>{const l=j.find(G=>G.id===a);return l?e.jsx(o,{variant:"outline",className:"text-xs",children:l.name},l.id):null})}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["por ",s.author," em ",s.createdAt]})]})]}),e.jsxs("div",{className:"flex items-center gap-3 ml-4",children:[e.jsxs("button",{className:"flex items-center gap-1 text-sm text-muted-foreground hover:text-primary",onClick:a=>{a.stopPropagation(),_(s.id)},children:[e.jsx(se,{className:"h-4 w-4"})," ",s.votes]}),e.jsxs("span",{className:"flex items-center gap-1 text-sm text-muted-foreground",children:[e.jsx(Q,{className:"h-4 w-4"})," ",s.comments]})]})]})},s.id)})}),e.jsx(D,{open:B,onOpenChange:d,children:e.jsxs(P,{children:[e.jsx(F,{children:e.jsx(q,{children:h?"Editar Ideia":"Nova Ideia"})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(w,{children:"Título *"}),e.jsx(k,{value:p,onChange:s=>C(s.target.value),placeholder:"Descreva sua ideia em uma frase"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(w,{children:"Descrição"}),e.jsx(W,{value:b,onChange:s=>S(s.target.value),rows:4,placeholder:"Detalhe a ideia, o problema que resolve e o impacto esperado..."})]}),e.jsxs("div",{className:"relative",children:[e.jsx(y,{name:"Checkbox"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(w,{children:"Tags"}),e.jsx("div",{className:"flex flex-wrap gap-3",children:j.map(s=>e.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[e.jsx(I,{checked:T.includes(s.id),onCheckedChange:t=>{v(t?a=>[...a,s.id]:a=>a.filter(l=>l!==s.id))}}),e.jsx("span",{className:"text-sm",children:s.name})]},s.id))})]})]})]}),e.jsxs(L,{children:[e.jsx(n,{variant:"outline",onClick:()=>d(!1),children:"Cancelar"}),e.jsx(n,{onClick:U,children:h?"Salvar":"Criar"})]})]})}),e.jsx(D,{open:!!f,onOpenChange:s=>{s||N(null)},children:e.jsxs(P,{size:"sm",variant:"destructive",children:[e.jsx(F,{children:e.jsx(q,{className:"sr-only",children:"Confirmar Exclusão"})}),e.jsxs("div",{className:"flex flex-col items-center text-center space-y-3 py-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-destructive/10 flex items-center justify-center",children:e.jsx(ee,{className:"h-6 w-6 text-destructive"})}),e.jsx("h3",{className:"text-lg font-semibold",children:"Tem certeza?"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Esta ação não pode ser desfeita."})]}),e.jsxs(L,{className:"justify-center gap-2",children:[e.jsx(n,{variant:"outline",onClick:()=>N(null),children:"Cancelar"}),e.jsx(n,{variant:"destructive",onClick:()=>{f&&(u(s=>s.filter(t=>t.id!==f.id)),N(null),g.success("Ideia excluída"))},children:"Excluir"})]})]})})]})}export{le as ExampleIdeasPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as n,j as e,B as o,w as k,a as d,b as w,c as I,e as B,d as c,U as P,x,aJ as E,Y as A,aK as j,aL as y,aM as g,aN as N,aG as q,ar as D,a4 as v,ac as z,aO as F}from"./index-DkiftrvI.js";import{S as L}from"./step-selector-ATTh_9Wa.js";function m({name:a}){return e.jsx(o,{variant:"outline",className:"text-[10px] font-mono bg-muted/50 absolute -top-2.5 right-2 z-10",children:a})}const l=[{row:1,code:"DOC-001",name:"Procedimento de Calibração",status:"valid",error:""},{row:2,code:"DOC-002",name:"Manual da Qualidade",status:"valid",error:""},{row:3,code:"",name:"Instrução de Trabalho",status:"error",error:"Código obrigatório"},{row:4,code:"DOC-004",name:"Política de Segurança",status:"valid",error:""},{row:5,code:"DOC-005",name:"",status:"error",error:"Nome obrigatório"},{row:6,code:"DOC-006",name:"Registro de Treinamento",status:"valid",error:""},{row:7,code:"DOC-001",name:"Duplicado",status:"warning",error:"Código duplicado (linha 1)"},{row:8,code:"DOC-008",name:"Formulário de Auditoria",status:"valid",error:""}],M=["Upload","Validação","Importação","Resultado"];function K(){const[a,r]=n.useState(0),[T,f]=n.useState(""),[U,h]=n.useState(!1),[b,u]=n.useState(0),i=l.filter(s=>s.status==="valid").length,t=l.filter(s=>s.status==="error").length,p=l.filter(s=>s.status==="warning").length,O=()=>{f("documentos_importacao.xlsx"),A.success("Arquivo carregado"),setTimeout(()=>r(1),500)},R=()=>{r(2),h(!0),u(0);const s=setInterval(()=>{u(S=>S>=100?(clearInterval(s),h(!1),r(3),100):S+20)},400)},C=()=>{r(0),f(""),u(0),h(!1)};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:"Wizard de Importação"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"Fluxo step-by-step com upload, validação e resultado — inspirado no módulo de importação do sistema."}),e.jsx("div",{className:"flex flex-wrap gap-1 mt-3",children:["StepSelector","Card","Alert","Progress","ScrollArea","Badge","Button","Separator"].map(s=>e.jsx(o,{variant:"outline",className:"text-xs font-mono",children:s},s))})]}),e.jsx(k,{}),e.jsxs("div",{className:"relative",children:[e.jsx(m,{name:"StepSelector"}),e.jsx(L,{currentStep:a,totalSteps:4,onStepChange:s=>{s<=a&&r(s)},stepLabels:M})]}),a===0&&e.jsxs(d,{children:[e.jsxs(w,{children:[e.jsx(I,{children:"Upload do Arquivo"}),e.jsx(B,{children:"Selecione um arquivo Excel (.xlsx) ou CSV com os dados para importação"})]}),e.jsxs(c,{children:[e.jsxs("div",{className:"border-2 border-dashed rounded-lg p-12 text-center cursor-pointer hover:border-primary/50 hover:bg-muted/50 transition-colors",onClick:O,children:[e.jsx(P,{className:"h-12 w-12 mx-auto text-muted-foreground mb-4"}),e.jsx("p",{className:"text-lg font-medium",children:"Clique para selecionar ou arraste o arquivo"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Formatos aceitos: .xlsx, .csv (máx. 10MB)"})]}),e.jsx("div",{className:"flex items-center gap-2 mt-4",children:e.jsxs(x,{variant:"outline",size:"sm",onClick:()=>A.info("Template baixado"),children:[e.jsx(E,{className:"h-4 w-4 mr-2"})," Baixar Template"]})})]})]}),a===1&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"relative",children:[e.jsx(m,{name:"Alert"}),e.jsxs(j,{children:[e.jsx(y,{className:"h-4 w-4"}),e.jsx(g,{children:"Arquivo carregado"}),e.jsxs(N,{children:[e.jsx("strong",{children:T})," — ",l.length," registros encontrados"]})]})]}),e.jsxs("div",{className:"flex gap-4",children:[e.jsxs(o,{variant:"success",className:"text-sm px-3 py-1",children:["✓ ",i," válidos"]}),e.jsxs(o,{variant:"danger",className:"text-sm px-3 py-1",children:["✗ ",t," erros"]}),p>0&&e.jsxs(o,{variant:"warning",className:"text-sm px-3 py-1",children:["⚠ ",p," avisos"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(m,{name:"ScrollArea + Table"}),e.jsx(d,{children:e.jsx(c,{className:"p-0",children:e.jsx(q,{className:"h-[300px]",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{className:"sticky top-0 bg-background",children:e.jsxs("tr",{className:"border-b bg-muted/50",children:[e.jsx("th",{className:"text-left p-3 font-medium w-16",children:"Linha"}),e.jsx("th",{className:"text-left p-3 font-medium",children:"Código"}),e.jsx("th",{className:"text-left p-3 font-medium",children:"Nome"}),e.jsx("th",{className:"text-left p-3 font-medium w-20",children:"Status"}),e.jsx("th",{className:"text-left p-3 font-medium",children:"Erro"})]})}),e.jsx("tbody",{children:l.map(s=>e.jsxs("tr",{className:`border-b last:border-0 ${s.status==="error"?"bg-destructive/5":s.status==="warning"?"bg-orange-50":""}`,children:[e.jsx("td",{className:"p-3 text-muted-foreground",children:s.row}),e.jsx("td",{className:"p-3 font-mono",children:s.code||e.jsx("span",{className:"text-destructive italic",children:"vazio"})}),e.jsx("td",{className:"p-3",children:s.name||e.jsx("span",{className:"text-destructive italic",children:"vazio"})}),e.jsxs("td",{className:"p-3",children:[s.status==="valid"&&e.jsx(D,{className:"h-4 w-4 text-green-600"}),s.status==="error"&&e.jsx(v,{className:"h-4 w-4 text-destructive"}),s.status==="warning"&&e.jsx(v,{className:"h-4 w-4 text-orange-500"})]}),e.jsx("td",{className:"p-3 text-sm text-destructive",children:s.error})]},s.row))})]})})})})]}),t>0&&e.jsxs(j,{variant:"danger",children:[e.jsx(v,{className:"h-4 w-4"}),e.jsx(g,{children:"Atenção"}),e.jsxs(N,{children:[t," registro(s) com erro serão ignorados na importação."]})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(x,{variant:"outline",onClick:C,children:"Cancelar"}),e.jsxs(x,{onClick:R,children:["Importar ",i," registros válidos"]})]})]}),a===2&&e.jsx(d,{children:e.jsx(c,{className:"py-12 text-center",children:e.jsxs("div",{className:"relative",children:[e.jsx(m,{name:"Progress"}),e.jsxs("div",{className:"max-w-md mx-auto space-y-4",children:[e.jsx("div",{className:"animate-pulse",children:e.jsx(y,{className:"h-16 w-16 mx-auto text-primary"})}),e.jsx("h3",{className:"text-lg font-semibold",children:"Importando registros..."}),e.jsx(z,{value:b}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[b,"% concluído"]})]})]})})}),a===3&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs(j,{variant:"success",children:[e.jsx(D,{className:"h-4 w-4 text-green-600"}),e.jsx(g,{className:"text-green-800",children:"Importação Concluída"}),e.jsxs(N,{className:"text-green-700",children:[i," registros importados com sucesso. ",t," registros ignorados por erros."]})]}),e.jsxs(d,{children:[e.jsx(w,{children:e.jsx(I,{children:"Resumo da Importação"})}),e.jsx(c,{children:e.jsxs("div",{className:"grid grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"p-4 rounded-lg bg-green-50",children:[e.jsx("p",{className:"text-3xl font-bold text-green-600",children:i}),e.jsx("p",{className:"text-sm text-green-700",children:"Importados"})]}),e.jsxs("div",{className:"p-4 rounded-lg bg-red-50",children:[e.jsx("p",{className:"text-3xl font-bold text-destructive",children:t}),e.jsx("p",{className:"text-sm text-red-700",children:"Erros"})]}),e.jsxs("div",{className:"p-4 rounded-lg bg-orange-50",children:[e.jsx("p",{className:"text-3xl font-bold text-orange-600",children:p}),e.jsx("p",{className:"text-sm text-orange-700",children:"Avisos"})]})]})})]}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(x,{onClick:C,children:[e.jsx(F,{className:"h-4 w-4 mr-2"})," Nova Importação"]})})]})]})}export{K as ExampleImportWizardPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as l,j as e,B as h,w as c,a5 as K,a6 as Q,a7 as g,a8 as X,a9 as Y,S as _,aa as v,a as n,b as d,c as o,e as N,d as m,J as a,K as R,N as G,O as M,Q as E,R as k,V as i,x as f,ab as $,ac as q,Y as x,W as Z,ad as ee}from"./index-DkiftrvI.js";import{R as se,a as b}from"./radio-group-BHAaNGsm.js";const S=[{id:"docs",label:"Documentos"},{id:"nc",label:"Não Conformidades"},{id:"audit",label:"Auditorias"},{id:"training",label:"Treinamentos"},{id:"risk",label:"Gestão de Riscos"}],C=[{id:"1",user:"maria.silva@empresa.com",module:"docs",grantedBy:"admin@empresa.com",grantedAt:"2026-03-01"},{id:"2",user:"joao.santos@empresa.com",module:"nc",grantedBy:"admin@empresa.com",grantedAt:"2026-03-05"},{id:"3",user:"ana.costa@empresa.com",module:"audit",grantedBy:"admin@empresa.com",grantedAt:"2026-03-10"},{id:"4",user:"carlos.lima@empresa.com",module:"training",grantedBy:"admin@empresa.com",grantedAt:"2026-02-15"},{id:"5",user:"maria.silva@empresa.com",module:"risk",grantedBy:"admin@empresa.com",grantedAt:"2026-03-18"}];function t({name:r}){return e.jsx(h,{variant:"outline",className:"text-[10px] font-mono bg-muted/50 absolute -top-2.5 right-2 z-10",children:r})}function re(){const[r,y]=l.useState(""),[u,w]=l.useState(""),[j,A]=l.useState(""),[T,P]=l.useState(!1),[U,V]=l.useState("email"),[D,F]=l.useState(!1),[L,z]=l.useState("30"),O=()=>{if(!r||!u||!j){x.error("Preencha todos os campos");return}P(!0),setTimeout(()=>{x.success(`Permissão concedida para ${r}`),y(""),w(""),A(""),P(!1)},800)},W=()=>{x.success("Configurações salvas")},I=15,B=5,H=Math.round(B/I*100);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:"Configurações com Tabs"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"Cenário de página de configurações com abas — inspirado nas páginas de permissões e preferências do sistema."}),e.jsx("div",{className:"flex flex-wrap gap-1 mt-3",children:["Tabs","Card","Select","RadioGroup","Label","Input","Button","Separator","Progress","Switch","Badge"].map(s=>e.jsx(h,{variant:"outline",className:"text-xs font-mono",children:s},s))})]}),e.jsx(c,{}),e.jsxs("div",{className:"relative",children:[e.jsx(t,{name:"Tabs"}),e.jsxs(K,{defaultValue:"grant",className:"w-full",children:[e.jsxs(Q,{className:"grid w-full grid-cols-3",children:[e.jsxs(g,{value:"grant",className:"flex items-center gap-2",children:[e.jsx(X,{className:"h-4 w-4"})," Conceder Permissão"]}),e.jsxs(g,{value:"manage",className:"flex items-center gap-2",children:[e.jsx(Y,{className:"h-4 w-4"})," Gerenciar Permissões"]}),e.jsxs(g,{value:"settings",className:"flex items-center gap-2",children:[e.jsx(_,{className:"h-4 w-4"})," Preferências"]})]}),e.jsx(v,{value:"grant",className:"space-y-4 mt-4",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"lg:col-span-2 relative",children:[e.jsx(t,{name:"Card + Select"}),e.jsxs(n,{children:[e.jsxs(d,{children:[e.jsx(o,{children:"Conceder Permissão de Acesso"}),e.jsx(N,{children:"Preencha os campos abaixo para conceder acesso a um módulo"})]}),e.jsxs(m,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(a,{htmlFor:"perm-user",children:"ID do Usuário / Email"}),e.jsx(R,{id:"perm-user",value:r,onChange:s=>y(s.target.value),placeholder:"usuario@empresa.com"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(a,{htmlFor:"perm-alias",children:"Alias da Empresa"}),e.jsx(R,{id:"perm-alias",value:u,onChange:s=>w(s.target.value),placeholder:"empresa-xyz"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(a,{children:"Módulo"}),e.jsxs(G,{value:j,onValueChange:A,children:[e.jsx(M,{children:e.jsx(E,{placeholder:"Selecione o módulo"})}),e.jsx(k,{children:S.map(s=>e.jsx(i,{value:s.id,children:s.label},s.id))})]})]}),e.jsx(f,{onClick:O,disabled:!r||!u||!j||T,className:"w-full",children:T?"Concedendo...":"Conceder Permissão"})]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(t,{name:"Progress"}),e.jsxs(n,{children:[e.jsx(d,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx($,{className:"h-5 w-5"})," Cobertura"]})}),e.jsxs(m,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between text-sm mb-2",children:[e.jsx("span",{children:"Usuários com acesso"}),e.jsxs("span",{className:"font-semibold",children:[B,"/",I]})]}),e.jsx(q,{value:H})]}),e.jsx(c,{}),e.jsx("div",{className:"space-y-2 text-sm",children:S.map(s=>{const p=C.filter(J=>J.module===s.id).length;return e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:s.label}),e.jsx(h,{variant:"secondary",children:p})]},s.id)})})]})]})]})]})}),e.jsx(v,{value:"manage",className:"mt-4",children:e.jsxs(n,{children:[e.jsxs(d,{children:[e.jsx(o,{children:"Permissões Ativas"}),e.jsxs(N,{children:[C.length," permissões concedidas"]})]}),e.jsx(m,{children:e.jsx("div",{className:"border rounded-md",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 font-medium",children:"Usuário"}),e.jsx("th",{className:"text-left p-3 font-medium",children:"Módulo"}),e.jsx("th",{className:"text-left p-3 font-medium",children:"Concedido por"}),e.jsx("th",{className:"text-left p-3 font-medium",children:"Data"}),e.jsx("th",{className:"text-right p-3 font-medium",children:"Ações"})]})}),e.jsx("tbody",{children:C.map(s=>e.jsxs("tr",{className:"border-b last:border-0 hover:bg-muted/30",children:[e.jsx("td",{className:"p-3",children:s.user}),e.jsx("td",{className:"p-3",children:e.jsx(h,{variant:"outline",children:S.find(p=>p.id===s.module)?.label})}),e.jsx("td",{className:"p-3 text-muted-foreground",children:s.grantedBy}),e.jsx("td",{className:"p-3 text-muted-foreground",children:s.grantedAt}),e.jsx("td",{className:"p-3 text-right",children:e.jsx(f,{variant:"ghost",size:"sm",className:"text-destructive",onClick:()=>x.info("Revogação simulada"),children:"Revogar"})})]},s.id))})]})})})]})}),e.jsx(v,{value:"settings",className:"mt-4",children:e.jsxs(n,{children:[e.jsxs(d,{children:[e.jsx(o,{children:"Preferências do Sistema"}),e.jsx(N,{children:"Configure o comportamento padrão do módulo de permissões"})]}),e.jsxs(m,{className:"space-y-6",children:[e.jsxs("div",{className:"relative",children:[e.jsx(t,{name:"RadioGroup"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(a,{children:"Modo de Notificação"}),e.jsxs(se,{value:U,onValueChange:V,className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(b,{value:"email",id:"notif-email"}),e.jsx(a,{htmlFor:"notif-email",children:"E-mail"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(b,{value:"push",id:"notif-push"}),e.jsx(a,{htmlFor:"notif-push",children:"Push Notification"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(b,{value:"both",id:"notif-both"}),e.jsx(a,{htmlFor:"notif-both",children:"Ambos"})]})]})]})]}),e.jsx(c,{}),e.jsxs("div",{className:"relative",children:[e.jsx(t,{name:"Switch"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(a,{children:"Auto-aprovação para módulos de baixo risco"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Conceder acesso automaticamente sem aprovação manual"})]}),e.jsx(Z,{checked:D,onCheckedChange:F})]})]}),e.jsx(c,{}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(a,{children:"Timeout de Sessão (minutos)"}),e.jsxs(G,{value:L,onValueChange:z,children:[e.jsx(M,{className:"w-48",children:e.jsx(E,{})}),e.jsxs(k,{children:[e.jsx(i,{value:"15",children:"15 minutos"}),e.jsx(i,{value:"30",children:"30 minutos"}),e.jsx(i,{value:"60",children:"1 hora"}),e.jsx(i,{value:"120",children:"2 horas"})]})]})]}),e.jsxs(f,{onClick:W,className:"mt-4",children:[e.jsx(ee,{className:"h-4 w-4 mr-2"})," Salvar Configurações"]})]})]})})]})]})]})}export{re as ExampleSettingsPage};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import{r as a,j as e,F as re,f9 as y,fa as F,x as w,aJ as le,fb as E,aX as de,ei as ce,a1 as me,o as V,Y as l}from"./index-DkiftrvI.js";import{C as pe}from"./ComponentDocTemplate-CQbBhfvZ.js";import{C as ue}from"./cloud-upload-BEjzumjl.js";import"./ExampleCard-DuLrb3t-.js";const xe=["application/x-msdownload","application/x-msdos-program","application/x-executable","application/x-javascript","application/javascript","text/javascript","text/vbscript","application/sql","application/x-sh","application/x-shellscript","application/hta","application/vnd.ms-word.document.macroEnabled.12","application/vnd.ms-excel.sheet.macroEnabled.12","application/vnd.ms-powerpoint.presentation.macroEnabled.12"];function R(o){if(!o)return"";if(o<1024)return`${o} Bytes`;const n=o/1024;if(n<1024)return`${Math.round(n)} KB`;const t=n/1024;if(t<1024)return`${Math.round(t)} MB`;const f=t/1024;return`${Math.round(f*100)/100} GB`}function L(o){const n=o.lastIndexOf(".");return n===-1?"":o.substring(n+1).toLowerCase()}function d({storedFile:o,customFileName:n,allowedExtensions:t,customExtensionErrorMessage:f,minSizeInBytes:C=1,maxSizeInBytes:S=300*1024*1024,showDownloadButton:X=!0,showViewButton:K=!0,showReplaceButton:Y=!0,showCloseButton:G=!0,required:U=!1,touched:M=!1,disabled:c=!1,error:N,onFileSelect:h,onFileRemove:T,onFileReplace:B,onDownload:v,onView:g,className:J}){const r=a.useRef(null),[m,p]=a.useState(null),[b,u]=a.useState(null),[D,O]=a.useState(!1),z=m||o,k=m?.name||o?.name||"",$=m?.size||o?.size;k&&L(k);const H=n||k,Q=X&&!m&&!!o,W=K&&!m&&!!o,Z=!!b||!!N||U&&M&&!z,q=!!z,j=a.useCallback(i=>{if(xe.includes(i.type))return{type:"forbidden-type"};if(i.size<=C)return{type:"min-size"};if(i.size>=S)return{type:"max-size"};if(t?.length){const s=L(i.name);if(!t.includes(s))return{type:"extension",message:f}}return null},[C,S,t,f]),ee=a.useCallback(i=>{const s=i.target.files?.[0];if(!s)return;const x=j(s);if(x){u(x),p(null),r.current&&(r.current.value="");return}u(null),p(s),h?.(s),r.current&&(r.current.value="")},[j,h]),oe=a.useCallback(i=>{if(i.preventDefault(),i.stopPropagation(),c)return;const s=i.dataTransfer.files?.[0];if(!s)return;const x=j(s);if(x){u(x),p(null);return}u(null),p(s),h?.(s)},[c,j,h]),ie=a.useCallback(i=>{i.preventDefault(),i.stopPropagation()},[]),ae=a.useCallback(()=>{B?.(),r.current?.click()},[B]),ne=a.useCallback(()=>{p(null),u(null),T?.(),r.current&&(r.current.value="")},[T]),te=a.useCallback(async()=>{if(!(D||!o||!v)){O(!0);try{await v(o)}finally{O(!1)}}},[D,o,v]),se=a.useCallback(()=>{o&&g&&g(o)},[o,g]),I=a.useCallback(()=>{c||r.current?.click()},[c]),P=(()=>{if(N)return N;if(!b)return U&&M&&!z?"Campo obrigatório":null;switch(b.type){case"extension":return b.message||"Extensão de arquivo não permitida";case"forbidden-type":return"Tipo de arquivo não permitido";case"min-size":return`Tamanho mínimo: ${R(C)}`;case"max-size":return`Tamanho máximo: ${R(S)}`;default:return"Erro no arquivo"}})();return e.jsxs("div",{className:V("space-y-1",J),children:[e.jsx("div",{className:V("rounded-md border border-dashed transition-colors",q&&"border-solid border-border",!q&&"border-muted-foreground/30 hover:border-primary/50 cursor-pointer",Z&&"border-destructive border-solid",c&&"opacity-50 pointer-events-none"),children:q?e.jsxs("div",{className:"flex items-center justify-between px-3 min-h-[36px]",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[e.jsx(re,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),e.jsx("p",{className:"text-xs truncate",children:H})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[$!=null&&e.jsx("span",{className:"text-xs text-muted-foreground",children:R($)}),e.jsxs("div",{className:"flex items-center gap-0.5",children:[Q&&v&&e.jsxs(y,{children:[e.jsx(F,{asChild:!0,children:e.jsx(w,{type:"button",variant:"ghost",size:"icon",className:"h-6 w-6",disabled:D,onClick:te,children:e.jsx(le,{className:"h-3.5 w-3.5 text-primary"})})}),e.jsx(E,{children:"Download"})]}),W&&g&&e.jsxs(y,{children:[e.jsx(F,{asChild:!0,children:e.jsx(w,{type:"button",variant:"ghost",size:"icon",className:"h-6 w-6",onClick:se,children:e.jsx(de,{className:"h-3.5 w-3.5 text-primary"})})}),e.jsx(E,{children:"Visualizar"})]}),Y&&e.jsxs(y,{children:[e.jsx(F,{asChild:!0,children:e.jsx(w,{type:"button",variant:"ghost",size:"icon",className:"h-6 w-6",onClick:ae,children:e.jsx(ce,{className:"h-3.5 w-3.5 text-primary"})})}),e.jsx(E,{children:"Substituir"})]}),G&&e.jsxs(y,{children:[e.jsx(F,{asChild:!0,children:e.jsx(w,{type:"button",variant:"ghost",size:"icon",className:"h-6 w-6 bg-muted rounded",onClick:ne,children:e.jsx(me,{className:"h-3 w-3 text-muted-foreground"})})}),e.jsx(E,{children:"Remover"})]})]})]})]}):e.jsxs("div",{className:"flex items-center justify-center gap-2 min-h-[36px] px-3",tabIndex:0,onClick:I,onKeyDown:i=>i.key==="Enter"&&I(),onDrop:oe,onDragOver:ie,children:[e.jsx(ue,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("p",{className:"text-xs font-medium text-muted-foreground",children:["Arraste ou ",e.jsx("span",{className:"text-primary",children:"selecione um arquivo"})]})]})}),P&&e.jsx("p",{className:"text-xs text-destructive",children:P}),e.jsx("input",{ref:r,type:"file",className:"hidden",accept:t?.map(i=>`.${i}`).join(","),onChange:ee,disabled:c})]})}const _={id:"1",name:"relatorio-anual-2025.pdf",extension:"pdf",size:245e4};function A(){const[o,n]=a.useState(null);return e.jsxs("div",{className:"max-w-md space-y-2",children:[e.jsx(d,{onFileSelect:t=>{n(t),l.success(`Selecionado: ${t.name}`)},onFileRemove:()=>n(null)}),o&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Selecionado: ",o.name]})]})}function fe(){return e.jsx("div",{className:"max-w-md",children:e.jsx(d,{storedFile:_,onDownload:async o=>{l.info(`Download: ${o.name}`)},onView:o=>l.info(`Visualizar: ${o.name}`),onFileRemove:()=>l.info("Removido"),onFileReplace:()=>l.info("Substituindo..."),onFileSelect:o=>l.success(`Novo: ${o.name}`)})})}function he(){return e.jsx("div",{className:"max-w-md",children:e.jsx(d,{allowedExtensions:["pdf","docx"],customExtensionErrorMessage:"Somente arquivos PDF ou DOCX são aceitos",onFileSelect:o=>l.success(o.name)})})}function ve(){return e.jsxs("div",{className:"grid gap-4 max-w-md",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium mb-1",children:"Com erro"}),e.jsx(d,{error:"Falha ao fazer upload do arquivo"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium mb-1",children:"Obrigatório (touched)"}),e.jsx(d,{required:!0,touched:!0})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium mb-1",children:"Desabilitado"}),e.jsx(d,{disabled:!0,storedFile:_})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium mb-1",children:"Limite de 1MB"}),e.jsx(d,{maxSizeInBytes:1024*1024,onFileSelect:o=>l.success(o.name)})]})]})}function we(){return e.jsx(pe,{title:"File Upload",description:"Componente de upload de arquivo único com drag & drop, validação de tipo/tamanho e ações (download, visualizar, substituir, remover). Portado do flc-single-file-uploader Angular.",component:e.jsx(A,{}),usage:`import { SingleFileUpload } from 'forlogic-core';
|
|
2
|
-
|
|
3
|
-
<SingleFileUpload
|
|
4
|
-
storedFile={{ id: '1', name: 'doc.pdf', extension: 'pdf', size: 1024 }}
|
|
5
|
-
allowedExtensions={['pdf', 'docx']}
|
|
6
|
-
maxSizeInBytes={10 * 1024 * 1024}
|
|
7
|
-
onFileSelect={(file) => console.log(file)}
|
|
8
|
-
onFileRemove={() => console.log('removed')}
|
|
9
|
-
onDownload={async (f) => downloadFile(f.id)}
|
|
10
|
-
onView={(f) => openViewer(f.id)}
|
|
11
|
-
/>`,examples:[{title:"Estado Vazio (Drag & Drop)",description:"Área de drop com click para seleção. Suporta arrastar e soltar.",preview:e.jsx(A,{}),code:`<SingleFileUpload
|
|
12
|
-
onFileSelect={(f) => handleSelect(f)}
|
|
13
|
-
onFileRemove={() => handleRemove()}
|
|
14
|
-
/>`},{title:"Com Arquivo Existente",description:"Exibe nome, extensão e tamanho do arquivo armazenado no servidor. Ações disponíveis via botões.",preview:e.jsx(fe,{}),code:`<SingleFileUpload
|
|
15
|
-
storedFile={{ id: '1', name: 'relatorio.pdf', extension: 'pdf', size: 2450000 }}
|
|
16
|
-
onDownload={async (f) => downloadFile(f.id)}
|
|
17
|
-
onView={(f) => openViewer(f.id)}
|
|
18
|
-
onFileReplace={() => setReplacing(true)}
|
|
19
|
-
onFileRemove={() => removeFile()}
|
|
20
|
-
/>`},{title:"Filtro de Extensão",description:"Restringe tipos de arquivo aceitos. Mostra mensagem customizada para tipos rejeitados.",preview:e.jsx(he,{}),code:`<SingleFileUpload
|
|
21
|
-
allowedExtensions={['pdf', 'docx']}
|
|
22
|
-
customExtensionErrorMessage="Somente PDF ou DOCX"
|
|
23
|
-
onFileSelect={(f) => handleSelect(f)}
|
|
24
|
-
/>`},{title:"Estados Especiais",description:"Erro, obrigatório, desabilitado e com limite de tamanho.",preview:e.jsx(ve,{}),code:`// Erro externo
|
|
25
|
-
<SingleFileUpload error="Falha ao fazer upload" />
|
|
26
|
-
|
|
27
|
-
// Campo obrigatório
|
|
28
|
-
<SingleFileUpload required touched />
|
|
29
|
-
|
|
30
|
-
// Desabilitado
|
|
31
|
-
<SingleFileUpload disabled storedFile={file} />
|
|
32
|
-
|
|
33
|
-
// Limite de tamanho
|
|
34
|
-
<SingleFileUpload maxSizeInBytes={1024 * 1024} />`}],props:[{name:"storedFile",type:"StoredFile | null",description:"Arquivo já armazenado no servidor (id, name, extension, size)."},{name:"disabled",type:"boolean",default:"false",description:"Desabilita interação com o componente."},{name:"required",type:"boolean",default:"false",description:"Marca o campo como obrigatório."},{name:"touched",type:"boolean",default:"false",description:"Marca o campo como tocado (exibe erro de required)."},{name:"error",type:"string",description:"Mensagem de erro externa a ser exibida."},{name:"allowedExtensions",type:"string[]",description:'Lista de extensões permitidas (ex: ["pdf", "docx"]).'},{name:"customExtensionErrorMessage",type:"string",description:"Mensagem customizada para extensão não permitida."},{name:"maxSizeInBytes",type:"number",description:"Tamanho máximo do arquivo em bytes."},{name:"minSizeInBytes",type:"number",description:"Tamanho mínimo do arquivo em bytes."},{name:"onFileSelect",type:"(file: File) => void",description:"Callback quando um arquivo é selecionado (drag ou click)."},{name:"onFileRemove",type:"() => void",description:"Callback quando o arquivo é removido."},{name:"onFileReplace",type:"() => void",description:"Callback quando o botão substituir é clicado."},{name:"onDownload",type:"(file: StoredFile) => Promise | void",description:"Callback para download do arquivo do servidor."},{name:"onView",type:"(file: StoredFile) => void",description:"Callback para visualizar o arquivo."}],notes:["Portado do flc-single-file-uploader Angular. Valida tipos proibidos (FORBIDDEN_FILE_TYPES: exe, bat, cmd, etc) automaticamente.","Utilitários exportados: formatBytes(bytes) e getFileExtension(filename).","O componente gerencia estados internos de arquivo local vs servidor (StoredFile).","Tipos proibidos são bloqueados automaticamente independente da prop allowedExtensions."]})}export{we as FileUploadDoc};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as m,j as s,d7 as p,K as h,x as u,a1 as f}from"./index-DkiftrvI.js";function j({searchValue:a="",onSearchChange:t,customFilters:l=[],onClearFilters:r,showClearButton:c=!0,layout:i="horizontal"}){const{t:n}=m(),o=a||l.length>0;return s.jsxs("div",{className:`flex ${i==="vertical"?"flex-col":"flex-row items-center"} gap-2 w-full`,children:[t&&s.jsxs("div",{className:"relative flex-1 min-w-[200px]",children:[s.jsx(p,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),s.jsx(h,{type:"text",placeholder:n("search","Pesquisar"),value:a,onChange:e=>t(e.target.value),className:"pl-9 h-9"})]}),l.map((e,x)=>s.jsx("div",{className:i==="vertical"?"w-full":"",children:e},x)),c&&o&&r&&s.jsxs(u,{variant:"ghost",size:"sm",onClick:r,className:"h-9 px-3 whitespace-nowrap",children:[s.jsx(f,{size:14,className:"mr-1"}),n("clear_filters","Limpar filtros")]})]})}export{j as F};
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import{j as e,K as o,x as r}from"./index-DkiftrvI.js";import{C as a}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function i(){return e.jsx(a,{title:"Form",description:"Construindo formulários com React Hook Form e Zod.",component:e.jsxs("div",{className:"w-full max-w-sm space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium",children:"Username"}),e.jsx(o,{placeholder:"Enter username"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"This is your public display name."})]}),e.jsx(r,{children:"Submit"})]}),usage:`import { zodResolver } from "@hookform/resolvers/zod"
|
|
2
|
-
import { useForm } from "react-hook-form"
|
|
3
|
-
import * as z from "zod"
|
|
4
|
-
import {
|
|
5
|
-
Form,
|
|
6
|
-
FormControl,
|
|
7
|
-
FormDescription,
|
|
8
|
-
FormField,
|
|
9
|
-
FormItem,
|
|
10
|
-
FormLabel,
|
|
11
|
-
FormMessage,
|
|
12
|
-
} from "forlogic-core"
|
|
13
|
-
|
|
14
|
-
const formSchema = z.object({
|
|
15
|
-
username: z.string().min(2).max(50),
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
function MyForm() {
|
|
19
|
-
const form = useForm<z.infer<typeof formSchema>>({
|
|
20
|
-
resolver: zodResolver(formSchema),
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
function onSubmit(values: z.infer<typeof formSchema>) {
|
|
24
|
-
console.log(values)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<Form {...form}>
|
|
29
|
-
<form onSubmit={form.handleSubmit(onSubmit)}>
|
|
30
|
-
<FormField
|
|
31
|
-
control={form.control}
|
|
32
|
-
name="username"
|
|
33
|
-
render={({ field }) => (
|
|
34
|
-
<FormItem>
|
|
35
|
-
<FormLabel>Username</FormLabel>
|
|
36
|
-
<FormControl>
|
|
37
|
-
<Input placeholder="shadcn" {...field} />
|
|
38
|
-
</FormControl>
|
|
39
|
-
<FormDescription>
|
|
40
|
-
This is your public display name.
|
|
41
|
-
</FormDescription>
|
|
42
|
-
<FormMessage />
|
|
43
|
-
</FormItem>
|
|
44
|
-
)}
|
|
45
|
-
/>
|
|
46
|
-
<Button type="submit">Submit</Button>
|
|
47
|
-
</form>
|
|
48
|
-
</Form>
|
|
49
|
-
)
|
|
50
|
-
}`,examples:[{title:"Estrutura Básica",preview:e.jsxs("div",{className:"w-full max-w-sm space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium",children:"Email"}),e.jsx(o,{type:"email",placeholder:"email@example.com"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"We'll never share your email."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium",children:"Password"}),e.jsx(o,{type:"password",placeholder:"••••••••"})]}),e.jsx(r,{className:"w-full",children:"Sign In"})]}),code:`<FormField
|
|
51
|
-
control={form.control}
|
|
52
|
-
name="email"
|
|
53
|
-
render={({ field }) => (
|
|
54
|
-
<FormItem>
|
|
55
|
-
<FormLabel>Email</FormLabel>
|
|
56
|
-
<FormControl>
|
|
57
|
-
<Input type="email" {...field} />
|
|
58
|
-
</FormControl>
|
|
59
|
-
<FormDescription>We'll never share your email.</FormDescription>
|
|
60
|
-
<FormMessage />
|
|
61
|
-
</FormItem>
|
|
62
|
-
)}
|
|
63
|
-
/>`},{title:"Com Validação",preview:e.jsxs("div",{className:"w-full max-w-sm space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium",children:"Username"}),e.jsx(o,{placeholder:"Enter username",className:"border-destructive"}),e.jsx("p",{className:"text-sm text-destructive",children:"Username must be at least 3 characters."})]}),e.jsx(r,{disabled:!0,children:"Submit"})]}),code:`const formSchema = z.object({
|
|
64
|
-
username: z.string().min(3, {
|
|
65
|
-
message: "Username must be at least 3 characters.",
|
|
66
|
-
}),
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
<FormField
|
|
70
|
-
control={form.control}
|
|
71
|
-
name="username"
|
|
72
|
-
render={({ field }) => (
|
|
73
|
-
<FormItem>
|
|
74
|
-
<FormLabel>Username</FormLabel>
|
|
75
|
-
<FormControl>
|
|
76
|
-
<Input {...field} />
|
|
77
|
-
</FormControl>
|
|
78
|
-
<FormMessage />
|
|
79
|
-
</FormItem>
|
|
80
|
-
)}
|
|
81
|
-
/>`}],props:[{name:"Form",type:"FormProvider props",description:"Wrapper que provê o contexto do formulário via React Hook Form"},{name:"FormField.control",type:"Control",description:"Objeto control do useForm para gerenciar o campo"},{name:"FormField.name",type:"string",description:"Nome do campo no schema do formulário"},{name:"FormField.render",type:"(field) => ReactNode",description:"Função de renderização do campo com acesso ao field object"},{name:"FormItem",type:"HTMLDivElement",description:"Container que agrupa label, controle, descrição e mensagem de erro"},{name:"FormLabel",type:"LabelProps",description:"Label associado ao campo do formulário"},{name:"FormControl",type:"SlotProps",description:"Wrapper que conecta o controle ao contexto do campo"},{name:"FormDescription",type:"HTMLParagraphElement",description:"Texto de ajuda exibido abaixo do controle"},{name:"FormMessage",type:"HTMLParagraphElement",description:"Exibe mensagens de erro de validação automaticamente"}],accessibility:["Labels são automaticamente associados aos controles via aria-describedby","Mensagens de erro são anunciadas por leitores de tela","Suporta navegação por teclado nativa dos controles","Estados de erro são indicados visualmente e semanticamente","Usa React Hook Form para gerenciamento de estado de formulário","Integra com Zod para validação de schema"]})}export{i as FormDoc};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as s}from"./index-DkiftrvI.js";function o({title:e,description:i,onClick:r}){return s.jsxs("button",{onClick:r,className:"text-left p-6 rounded-lg border bg-card hover:bg-accent transition-colors",children:[s.jsx("h3",{className:"font-semibold text-lg mb-2",children:e}),s.jsx("p",{className:"text-sm text-muted-foreground",children:i})]})}function a({onNavigate:e}){return s.jsxs("div",{className:"space-y-8",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"text-4xl font-bold tracking-tight",children:"Fundação"}),s.jsx("p",{className:"text-xl text-muted-foreground mt-2",children:"Tokens de design e elementos fundamentais para construir interfaces consistentes"})]}),s.jsxs("div",{className:"prose prose-slate dark:prose-invert max-w-none",children:[s.jsx("p",{children:"A seção de fundação contém todos os design tokens essenciais que sustentam o sistema de design: cores, tipografia, espaçamento, sombras e valores de raio de borda."}),s.jsx("h2",{children:"Design Tokens"}),s.jsx("p",{children:"Nossos design tokens seguem as melhores práticas da indústria de Material Design 3, Fluent 2, Radix UI e Tailwind CSS. Todos os tokens são:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"Semânticos e orientados a propósito"}),s.jsx("li",{children:"Acessíveis (conformidade WCAG AA)"}),s.jsx("li",{children:"Conscientes do tema (modos claro/escuro)"}),s.jsx("li",{children:"Escaláveis e sustentáveis"})]}),s.jsx("h2",{children:"Princípios-Chave"}),s.jsxs("ol",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Consistência"}),": Use tokens ao invés de valores fixos"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Acessibilidade"}),": Proporções de contraste mínimas AA"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Flexibilidade"}),": Escalas abrangentes para todos os casos de uso"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Significado Semântico"}),": Nomeados por propósito, não aparência"]})]})]}),s.jsxs("div",{className:"grid gap-6 md:grid-cols-2 lg:grid-cols-3",children:[s.jsx(o,{title:"Cores",description:"Escalas neutras, cores da marca e cores funcionais com suporte completo a temas claro/escuro",onClick:()=>e("colors")}),s.jsx(o,{title:"Tipografia",description:"Sistema tipográfico completo com display, títulos, corpo e estilos monospace",onClick:()=>e("typography")}),s.jsx(o,{title:"Espaçamento",description:"Escala de espaçamento consistente de 0.5 a 96 para layouts e componentes",onClick:()=>e("spacing")}),s.jsx(o,{title:"Sombras",description:"Sistema de elevação com sombras sutis para profundidade e hierarquia",onClick:()=>e("shadows")}),s.jsx(o,{title:"Raio",description:"Valores de raio de borda para criar cantos arredondados consistentes",onClick:()=>e("radius")})]})]})}export{a as FoundationOverview};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import{j as e,o as n,gn as i,a as t}from"./index-DkiftrvI.js";import{C as o}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";const l={1:"grid-cols-1",2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4",5:"grid-cols-5",6:"grid-cols-6","auto-fit":"grid-cols-[repeat(auto-fit,minmax(250px,1fr))]","auto-fill":"grid-cols-[repeat(auto-fill,minmax(250px,1fr))]"},m={xs:"gap-1",sm:"gap-2",md:"gap-4",lg:"gap-6",xl:"gap-8"};function r({children:s,cols:a="auto-fit",gap:d="md",className:c}){return e.jsx("div",{className:n("grid",l[a],m[d],c),children:s})}function u(){return e.jsx(o,{title:"Grid & Stack",description:"Sistema de layout com Grid responsivo e Stack flexível para organização de conteúdo.",component:e.jsxs("div",{className:"w-full space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium mb-2",children:"Grid com 3 colunas fixas"}),e.jsxs(r,{cols:"3",gap:"md",children:[e.jsx(t,{className:"p-4 text-center bg-primary/10",children:"Item 1"}),e.jsx(t,{className:"p-4 text-center bg-primary/10",children:"Item 2"}),e.jsx(t,{className:"p-4 text-center bg-primary/10",children:"Item 3"}),e.jsx(t,{className:"p-4 text-center bg-primary/10",children:"Item 4"}),e.jsx(t,{className:"p-4 text-center bg-primary/10",children:"Item 5"}),e.jsx(t,{className:"p-4 text-center bg-primary/10",children:"Item 6"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium mb-2",children:"Grid responsivo (auto-fit)"}),e.jsxs(r,{cols:"auto-fit",gap:"lg",children:[e.jsx(t,{className:"p-6 text-center bg-secondary/50",children:"Card 1"}),e.jsx(t,{className:"p-6 text-center bg-secondary/50",children:"Card 2"}),e.jsx(t,{className:"p-6 text-center bg-secondary/50",children:"Card 3"})]})]})]}),usage:`import { Grid, Stack, Card } from "forlogic-core"
|
|
2
|
-
|
|
3
|
-
// Grid com 3 colunas fixas
|
|
4
|
-
<Grid cols="3" gap="md">
|
|
5
|
-
<div>Item 1</div>
|
|
6
|
-
<div>Item 2</div>
|
|
7
|
-
<div>Item 3</div>
|
|
8
|
-
</Grid>
|
|
9
|
-
|
|
10
|
-
// Stack vertical
|
|
11
|
-
<Stack direction="column" gap="md">
|
|
12
|
-
<div>Item 1</div>
|
|
13
|
-
<div>Item 2</div>
|
|
14
|
-
</Stack>`,examples:[{title:"Stack Vertical",description:"Empilha elementos verticalmente",preview:e.jsxs(i,{direction:"column",gap:"md",align:"start",className:"w-full max-w-xs",children:[e.jsx(t,{className:"p-3 bg-primary/10 w-full",children:"Item 1"}),e.jsx(t,{className:"p-3 bg-primary/10 w-full",children:"Item 2"}),e.jsx(t,{className:"p-3 bg-primary/10 w-full",children:"Item 3"})]}),code:`<Stack direction="column" gap="md" align="start">
|
|
15
|
-
<div>Item 1</div>
|
|
16
|
-
<div>Item 2</div>
|
|
17
|
-
<div>Item 3</div>
|
|
18
|
-
</Stack>`},{title:"Stack Horizontal",description:"Empilha elementos horizontalmente",preview:e.jsxs(i,{direction:"row",gap:"lg",align:"center",children:[e.jsx(t,{className:"p-4 bg-secondary/50",children:"Item 1"}),e.jsx(t,{className:"p-4 bg-secondary/50",children:"Item 2"}),e.jsx(t,{className:"p-4 bg-secondary/50",children:"Item 3"})]}),code:`<Stack direction="row" gap="lg" align="center">
|
|
19
|
-
<div>Item 1</div>
|
|
20
|
-
<div>Item 2</div>
|
|
21
|
-
<div>Item 3</div>
|
|
22
|
-
</Stack>`},{title:"Stack com Justify Between",description:"Distribui itens nas extremidades",preview:e.jsxs(i,{direction:"row",justify:"between",className:"w-full max-w-md",children:[e.jsx(t,{className:"p-3 bg-accent",children:"Start"}),e.jsx(t,{className:"p-3 bg-accent",children:"Middle"}),e.jsx(t,{className:"p-3 bg-accent",children:"End"})]}),code:`<Stack direction="row" justify="between">
|
|
23
|
-
<div>Start</div>
|
|
24
|
-
<div>Middle</div>
|
|
25
|
-
<div>End</div>
|
|
26
|
-
</Stack>`},{title:"Stack com Wrap",description:"Permite quebra de linha quando não há espaço",preview:e.jsx(i,{direction:"row",gap:"sm",wrap:!0,className:"max-w-xs",children:Array.from({length:8}).map((s,a)=>e.jsx(t,{className:"p-2 bg-muted text-center min-w-12",children:a+1},a))}),code:`<Stack direction="row" gap="sm" wrap>
|
|
27
|
-
{items.map(item => <Card key={item.id}>{item.name}</Card>)}
|
|
28
|
-
</Stack>`}],props:[{name:"Grid.cols",type:'"1" | "2" | "3" | "4" | "5" | "6" | "auto-fit" | "auto-fill"',default:"auto-fit",description:"Número de colunas ou modo responsivo."},{name:"Grid.gap",type:'"xs" | "sm" | "md" | "lg" | "xl"',default:"md",description:"Espaçamento entre itens do grid."},{name:"Stack.direction",type:'"row" | "column"',default:"column",description:"Direção do flex."},{name:"Stack.gap",type:'"xs" | "sm" | "md" | "lg" | "xl"',default:"md",description:"Espaçamento entre itens."},{name:"Stack.align",type:'"start" | "center" | "end" | "stretch"',default:"stretch",description:"Alinhamento dos itens."},{name:"Stack.justify",type:'"start" | "center" | "end" | "between" | "around" | "evenly"',default:"start",description:"Justificação dos itens."},{name:"Stack.wrap",type:"boolean",default:"false",description:"Permite quebra de linha."}],accessibility:["Layout responsivo automático","Suporte a grid fixo e adaptativo","Espaçamentos padronizados","Props intuitivas e type-safe"],notes:["**Grid** é ideal para layouts de cards, galerias e grids de conteúdo","**Stack** é ideal para listas, formulários e layouts flexíveis","Ambos suportam espaçamentos padronizados (xs, sm, md, lg, xl)"]})}export{u as GridDoc};
|