forlogic-core 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -46
- package/dist/assets/AccordionDoc-CGNlubG3.js +31 -0
- package/dist/assets/ActionButtonDoc-CYtkXR0k.js +47 -0
- package/dist/assets/ActionPlanDoc-BSuPRftQ.js +65 -0
- package/dist/assets/AlertDoc-Cpvxneqg.js +37 -0
- package/dist/assets/AliasUrlDoc-DIpUWf4Y.js +189 -0
- package/dist/assets/AppHeaderDoc-DNQErj_t.js +74 -0
- package/dist/assets/AppSidebarDoc-DkeQarDu.js +221 -0
- package/dist/assets/ApprovalFlowDoc-8YgXbhKJ.js +31 -0
- package/dist/assets/AuditLogDoc-BBvNcHIo.js +67 -0
- package/dist/assets/AuditTrailDoc-DgFHO-uo.js +17 -0
- package/dist/assets/AuthDoc-WIA_Aetl.js +200 -0
- package/dist/assets/AvatarDoc-B6go1C1T.js +11 -0
- package/dist/assets/BadgeDoc-BONhfqB_.js +36 -0
- package/dist/assets/BaseFormDoc-CuyUArcj.js +169 -0
- package/dist/assets/BodyContentDoc-CterHC1E.js +83 -0
- package/dist/assets/BreadcrumbDoc-Dwn9nLeO.js +75 -0
- package/dist/assets/ButtonDoc-BOjRseZT.js +41 -0
- package/dist/assets/ButtonGroupDoc-8IS6PPh4.js +7 -0
- package/dist/assets/CalendarDoc-CMwIEqgT.js +81 -0
- package/dist/assets/CardDoc-BZz1CVg2.js +49 -0
- package/dist/assets/ChartDoc-B5vZVtqD.js +76 -0
- package/dist/assets/CheckboxDoc-lAbYO9I5.js +55 -0
- package/dist/assets/ColorPickerDoc-Dpsprp4N.js +10 -0
- package/dist/assets/ColorsFoundationDoc-CCHeSL3p.js +13 -0
- package/dist/assets/ComboTreeDoc-D4dTkIt-.js +46 -0
- package/dist/assets/ComboboxDoc-CqqZPvZq.js +134 -0
- package/dist/assets/ComponentDocTemplate-CQbBhfvZ.js +1 -0
- package/dist/assets/ContextMenuDoc-D3jC-MVA.js +182 -0
- package/dist/assets/ContextsDoc-XFH0-JdS.js +211 -0
- package/dist/assets/CreateCrudPageDoc-CpuiWI-g.js +106 -0
- package/dist/assets/CrudActionBarDoc-wuBGXD9Y.js +112 -0
- package/dist/assets/CrudGridDoc-BYWqSXBH.js +85 -0
- package/dist/assets/CrudOverviewDoc-B_bk2a2t.js +14 -0
- package/dist/assets/CrudPrimitivesDoc-CxaTB94A.js +164 -0
- package/dist/assets/CrudTableDoc-Dga1VgCu.js +113 -0
- package/dist/assets/CustomFormFieldsDoc-C1hwwSl3.js +33 -0
- package/dist/assets/DashboardFormDoc-BUDCmrMl.js +49 -0
- package/dist/assets/DashboardGeneralViewDoc-Cyg1SIiG.js +71 -0
- package/dist/assets/DashboardGridDoc-BavePiRF.js +49 -0
- package/dist/assets/DashboardListDoc-CLyMA6UK.js +37 -0
- package/dist/assets/DashboardOverviewDoc-DRVvNIF1.js +35 -0
- package/dist/assets/DashboardPanelRendererDoc--mfwb8Nc.js +60 -0
- package/dist/assets/DashboardPanelsBasicDoc-BQ2V_52D.js +62 -0
- package/dist/assets/DashboardPanelsCartesianDoc-sy-hcVQY.js +75 -0
- package/dist/assets/DashboardPanelsSpecialDoc-DsIUCRRP.js +83 -0
- package/dist/assets/DashboardViewDoc-CtlCNlEF.js +45 -0
- package/dist/assets/DataListDoc-DUy88lCQ.js +13 -0
- package/dist/assets/DesignSystemHome-DHl9YtbH.js +1 -0
- package/dist/assets/DialogDoc-CMQqnTV-.js +981 -0
- package/dist/assets/DropdownMenuDoc-S7X9csGt.js +175 -0
- package/dist/assets/ElectronicSignatureDialogDoc-BfithaL_.js +57 -0
- package/dist/assets/EmptyStateDoc-CHGCiGIk.js +35 -0
- package/dist/assets/EnvironmentsDoc-DZHJZ2nm.js +96 -0
- package/dist/assets/ErrorBoundaryDoc-DoaAg68p.js +111 -0
- package/dist/assets/ExampleActionPlanPage-C0fIMZCD.js +1 -0
- package/dist/assets/ExampleAppDoc-DzIU81Fn.js +1 -0
- package/dist/assets/ExampleCard-DuLrb3t-.js +1 -0
- package/dist/assets/ExampleCrudReportsPage-M0pz6tdM.js +1 -0
- package/dist/assets/ExampleDashboardPage-CRG5r3Vw.js +1 -0
- package/dist/assets/ExampleIdeasPage-I84ZMLY4.js +1 -0
- package/dist/assets/ExampleImportWizardPage-h4YqrrSe.js +1 -0
- package/dist/assets/ExampleSettingsPage-CwdWqoaP.js +1 -0
- package/dist/assets/FileUploadDoc-9-UujFNX.js +34 -0
- package/dist/assets/FilterBar-DDTqqUfZ.js +1 -0
- package/dist/assets/FormDoc-CVES6n3d.js +81 -0
- package/dist/assets/FoundationOverview-DT0u11Gz.js +1 -0
- package/dist/assets/GridDoc-CbHFSILF.js +28 -0
- package/dist/assets/HooksDoc-Ctxdk6Wq.js +665 -0
- package/dist/assets/HoverCardDoc-8Wkaafdj.js +31 -0
- package/dist/assets/I18nDoc-D3Q2m7ik.js +167 -0
- package/dist/assets/IconPickerDoc-DZ26Gdpg.js +10 -0
- package/dist/assets/IconsFoundationDoc-xOxtC7CW.js +33 -0
- package/dist/assets/InputDoc-BhztAiuJ.js +211 -0
- package/dist/assets/LabelDoc-A4hmTRRV.js +42 -0
- package/dist/assets/LeadershipDoc-CqOSfWsP.js +452 -0
- package/dist/assets/MediaDoc-C78gvC8p.js +459 -0
- package/dist/assets/MenubarDoc-DCnmd2tO.js +165 -0
- package/dist/assets/ModuleAccessDoc-CmD5nHDp.js +153 -0
- package/dist/assets/ModulesDialogDoc-DVit1CA-.js +46 -0
- package/dist/assets/MultiselectPermissionsDoc-tlJMs04L.js +34 -0
- package/dist/assets/NavigationMenuDoc-q1fbc89j.js +116 -0
- package/dist/assets/OnboardingDialogDoc-3A3eBYrq.js +55 -0
- package/dist/assets/PaginationDoc-B8-bMz5J.js +27 -0
- package/dist/assets/PaginationDoc-BkGdxHL3.js +98 -0
- package/dist/assets/PlacesDoc-CKPO6ATs.js +226 -0
- package/dist/assets/PopoverDoc-CJPU4Ags.js +64 -0
- package/dist/assets/ProgressDoc-CpjbTL4o.js +29 -0
- package/dist/assets/QualiexUserFieldDoc-DDwumlRw.js +149 -0
- package/dist/assets/RadioGroupDoc-D6tSZz8G.js +57 -0
- package/dist/assets/RadiusDoc-B4xSnajw.js +7 -0
- package/dist/assets/ReportRequestListDoc-C0LIaU8P.js +15 -0
- package/dist/assets/RequiredFieldsCounterDoc-COesoSdx.js +58 -0
- package/dist/assets/ResizableDoc-CW0-XQuB.js +104 -0
- package/dist/assets/RichTextEditorDoc-C8c_XA9P.js +24 -0
- package/dist/assets/ScrollAreaDoc-BxtoAPaZ.js +28 -0
- package/dist/assets/SecurityDoc-wOVqpg2F.js +204 -0
- package/dist/assets/SelectDoc-C75gtY9D.js +80 -0
- package/dist/assets/SeparatorDoc-BjQBPB1P.js +4 -0
- package/dist/assets/ServicesDoc-CXTctwBl.js +308 -0
- package/dist/assets/ShadowsDoc-C6Lw8_x2.js +9 -0
- package/dist/assets/SignDoc-Bh5ZUg5x.js +66 -0
- package/dist/assets/SkeletonDoc-rTLGK5VE.js +54 -0
- package/dist/assets/SliderDoc-JMAMDub7.js +41 -0
- package/dist/assets/SpacingDoc-RljOrpwA.js +12 -0
- package/dist/assets/SplitButtonDoc-CvShUW3w.js +53 -0
- package/dist/assets/StepSelectorDoc-C-nAap9H.js +41 -0
- package/dist/assets/SwitchDoc-DLnqmkPr.js +56 -0
- package/dist/assets/TableDoc-B8EpWLVg.js +128 -0
- package/dist/assets/TabsDoc-DIBtl_uC.js +42 -0
- package/dist/assets/TeamSelectorDoc-B7OnCbL7.js +10 -0
- package/dist/assets/TermsOfUseDoc-Bb-pw08s.js +16 -0
- package/dist/assets/TextareaDoc-DGnqMqEC.js +46 -0
- package/dist/assets/ToastDoc-DjYyc7ae.js +157 -0
- package/dist/assets/ToggleDoc-C9ZOVjkY.js +51 -0
- package/dist/assets/TooltipDoc-BEx4l9-i.js +58 -0
- package/dist/assets/TruncatedCellDoc-BbV1bRSY.js +12 -0
- package/dist/assets/TypographyFoundationDoc-CUDYjRo9.js +7 -0
- package/dist/assets/UpdatesNotificationDoc-7nyjzLMJ.js +29 -0
- package/dist/assets/UsersGroupsSelectorDoc-C0KlTAL5.js +18 -0
- package/dist/assets/UtilitiesDoc-DGxaHVV1.js +145 -0
- package/dist/assets/ViewerDialogsDoc-CnTPTEz0.js +1 -0
- package/dist/assets/blocks-B6LrJeAM.js +1 -0
- package/dist/assets/building-DeVappnD.js +1 -0
- package/dist/assets/calendar-days-BQ0na5kM.js +1 -0
- package/dist/assets/check-check-C_-PJCJa.js +1 -0
- package/dist/assets/circle-plus-CpIcep-O.js +1 -0
- package/dist/assets/circle-x-jPpBPew0.js +1 -0
- package/dist/assets/clipboard-list-CXNPdciZ.js +1 -0
- package/dist/assets/cloud-upload-BEjzumjl.js +1 -0
- package/dist/assets/crown-CqNsQIsm.js +1 -0
- package/dist/assets/date-picker-BW3eGOe_.js +1 -0
- package/dist/assets/disabled-menu-item-C2YaMvSt.js +1 -0
- package/dist/assets/drawer-D5rflIcD.js +3 -0
- package/dist/assets/file-braces-DFb5X9so.js +1 -0
- package/dist/assets/file-pen-line-CyUGKkEN.js +1 -0
- package/dist/assets/git-branch-BcXv9mpp.js +1 -0
- package/dist/assets/globe-CpMIWAcv.js +1 -0
- package/dist/assets/hash-cQWdKjya.js +1 -0
- package/dist/assets/hourglass-BahQ3eDv.js +1 -0
- package/dist/assets/hover-card-R66N85sZ.js +1 -0
- package/dist/assets/iframe-dialog-V0mW5aBb.js +1 -0
- package/dist/assets/index-DkiftrvI.js +352 -0
- package/dist/assets/index-nmBjO9Th.css +1 -0
- package/dist/assets/life-buoy-ByXiPddz.js +1 -0
- package/dist/assets/loading-state-Cb5_t5uE.js +1 -0
- package/dist/assets/lucide-react-Cp3Yw3Zm.js +1 -0
- package/dist/assets/package-B3-pVvPM.js +1 -0
- package/dist/assets/pen-Bi_lmmKT.js +1 -0
- package/dist/assets/pin-DVsSl8QA.js +1 -0
- package/dist/assets/printer-BnJ8B6m-.js +1 -0
- package/dist/assets/radio-group-BHAaNGsm.js +1 -0
- package/dist/assets/server-CtzFTfKR.js +1 -0
- package/dist/assets/share-2-Dv8Do445.js +1 -0
- package/dist/assets/shield-check-CFXjOV_w.js +1 -0
- package/dist/assets/shield-x-DJTRfVux.js +1 -0
- package/dist/assets/slider-v9tXBSnB.js +1 -0
- package/dist/assets/smartphone-BSNR60L7.js +1 -0
- package/dist/assets/step-selector-ATTh_9Wa.js +1 -0
- package/dist/assets/text-align-start-qE-MbYYw.js +1 -0
- package/dist/assets/thumbs-up-D_XIW_uX.js +1 -0
- package/dist/assets/trash-DTWQwpwA.js +1 -0
- package/dist/assets/trending-up-jip5-leJ.js +1 -0
- package/dist/assets/useMockCrud-CN4vjyOZ.js +1 -0
- package/dist/assets/user-check-BlH3EDWK.js +1 -0
- package/dist/assets/user-plus-BqwXwD-c.js +1 -0
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/resizable.d.ts +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +1 -1
- package/dist/index.html +33 -0
- package/dist/index.js +1 -1
- package/dist/setup/favicon.d.ts +1 -0
- package/docs/PUBLISH.md +3 -3
- package/package.json +1 -5
- package/dist/README.md +0 -1079
- package/dist/bin/bootstrap.js +0 -40
- package/dist/bin/pull-docs.js +0 -186
- package/dist/docs/KNOWLEDGE.md +0 -109
package/README.md
CHANGED
|
@@ -27,15 +27,6 @@ npm install forlogic-core
|
|
|
27
27
|
|
|
28
28
|
**Nota**: O npm/yarn irá alertar automaticamente se alguma peer dependency estiver faltando ou com versão incompatível.
|
|
29
29
|
|
|
30
|
-
### Sincronizar regras e convenções
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
npx lib-update
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
> Copia apenas `docs/KNOWLEDGE.md` (regras + mapa de módulos) e `.note/memory/rules/`.
|
|
37
|
-
> Documentação de componentes é acessada via rota `/ds` ou cross-project.
|
|
38
|
-
|
|
39
30
|
### ⚠️ IMPORTANTE: Imports de i18n
|
|
40
31
|
|
|
41
32
|
**Sempre** importe hooks de internacionalização do `forlogic-core`, nunca diretamente de `react-i18next`:
|
|
@@ -117,7 +108,6 @@ src/components/SplitButton.tsx // Existe na lib (a partir de v1.12.2)
|
|
|
117
108
|
| `/design_system` | Design System com todos os componentes documentados |
|
|
118
109
|
| `forlogic-core/lib/exports/ui.ts` | Lista de exports de UI |
|
|
119
110
|
| `forlogic-core/lib/index.ts` | Index principal com todos os exports |
|
|
120
|
-
| `npx lib-update` | Sincroniza regras e KNOWLEDGE.md |
|
|
121
111
|
|
|
122
112
|
### ⚠️ Exceções (quando PODE criar localmente)
|
|
123
113
|
|
|
@@ -1040,40 +1030,4 @@ function MeuDialog({ open, onOpenChange }) {
|
|
|
1040
1030
|
- "Adicione navegação para criar" (ação ≠ navegação)
|
|
1041
1031
|
- "Crie um link para nova entidade" (link = navegação, não ação)
|
|
1042
1032
|
|
|
1043
|
-
## 🛠️ CLI: Sincronizar Regras e Convenções
|
|
1044
|
-
|
|
1045
|
-
O `forlogic-core` disponibiliza um comando CLI para sincronizar regras e convenções arquiteturais para projetos consumidores.
|
|
1046
|
-
|
|
1047
|
-
### Uso
|
|
1048
|
-
|
|
1049
|
-
```bash
|
|
1050
|
-
# Via npx (recomendado)
|
|
1051
|
-
npx lib-update
|
|
1052
|
-
|
|
1053
|
-
# Ou adicione ao package.json do seu projeto:
|
|
1054
|
-
{
|
|
1055
|
-
"scripts": {
|
|
1056
|
-
"lib-update": "lib-update"
|
|
1057
|
-
}
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
# E execute:
|
|
1061
|
-
npm run lib-update
|
|
1062
|
-
```
|
|
1063
|
-
|
|
1064
|
-
### O que é sincronizado
|
|
1065
|
-
|
|
1066
|
-
| Arquivo/Diretório | Descrição |
|
|
1067
|
-
| ----------------------- | ------------------------------------------------ |
|
|
1068
|
-
| `docs/KNOWLEDGE.md` | Regras críticas + mapa de módulos para IA/Lovable |
|
|
1069
|
-
| `.note/memory/rules/` | Regras de schema, RLS, índices, .env |
|
|
1070
|
-
|
|
1071
|
-
### O que NÃO é sincronizado (leitura via cross-project → projeto **Admin**)
|
|
1072
|
-
|
|
1073
|
-
| Recurso | Como acessar |
|
|
1074
|
-
| --------------------------- | --------------------------------------------------------- |
|
|
1075
|
-
| Documentação de componentes | Rota `/ds` no projeto **Admin** ou cross-project |
|
|
1076
|
-
| Props, exemplos, tipos | Ler dos `*Doc.tsx` via cross-project → projeto **Admin** |
|
|
1077
|
-
| Padrões de layout/CRUD | `.note/memory/patterns/` via cross-project → **Admin** |
|
|
1078
|
-
|
|
1079
1033
|
> 💡 A IA consegue ler o código-fonte do forlogic-core no projeto **Admin** via cross-project visibility.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import{b7 as l,j as e,b8 as re,b9 as Y,ba as ne,bb as ae,bc as q,bd as se,be as ie,bf as ce,bg as le,bh as de,bi as K,bj as pe,r as j,o as S,bk as me,bl as ue,bm as xe,x as fe,bn as be,bo as Ce}from"./index-DkiftrvI.js";import{C as Ae}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";var d="Accordion",he=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[D,ve,ge]=re(d),[I]=pe(d,[ge,K]),k=K(),$=l.forwardRef((o,n)=>{const{type:t,...a}=o,s=a,r=a;return e.jsx(D.Provider,{scope:o.__scopeAccordion,children:t==="multiple"?e.jsx(we,{...r,ref:n}):e.jsx(ye,{...s,ref:n})})});$.displayName=d;var[z,je]=I(d),[G,Ie]=I(d,{collapsible:!1}),ye=l.forwardRef((o,n)=>{const{value:t,defaultValue:a,onValueChange:s=()=>{},collapsible:r=!1,...c}=o,[i,p]=Y({prop:t,defaultProp:a??"",onChange:s,caller:d});return e.jsx(z,{scope:o.__scopeAccordion,value:l.useMemo(()=>i?[i]:[],[i]),onItemOpen:p,onItemClose:l.useCallback(()=>r&&p(""),[r,p]),children:e.jsx(G,{scope:o.__scopeAccordion,collapsible:r,children:e.jsx(L,{...c,ref:n})})})}),we=l.forwardRef((o,n)=>{const{value:t,defaultValue:a,onValueChange:s=()=>{},...r}=o,[c,i]=Y({prop:t,defaultProp:a??[],onChange:s,caller:d}),p=l.useCallback(f=>i((u=[])=>[...u,f]),[i]),x=l.useCallback(f=>i((u=[])=>u.filter(w=>w!==f)),[i]);return e.jsx(z,{scope:o.__scopeAccordion,value:c,onItemOpen:p,onItemClose:x,children:e.jsx(G,{scope:o.__scopeAccordion,collapsible:!0,children:e.jsx(L,{...r,ref:n})})})}),[Ne,y]=I(d),L=l.forwardRef((o,n)=>{const{__scopeAccordion:t,disabled:a,dir:s,orientation:r="vertical",...c}=o,i=l.useRef(null),p=ce(i,n),x=ve(t),u=le(s)==="ltr",w=de(o.onKeyDown,h=>{if(!he.includes(h.key))return;const oe=h.target,N=x().filter(O=>!O.ref.current?.disabled),v=N.findIndex(O=>O.ref.current===oe),V=N.length;if(v===-1)return;h.preventDefault();let m=v;const R=0,_=V-1,P=()=>{m=v+1,m>_&&(m=R)},T=()=>{m=v-1,m<R&&(m=_)};switch(h.key){case"Home":m=R;break;case"End":m=_;break;case"ArrowRight":r==="horizontal"&&(u?P():T());break;case"ArrowDown":r==="vertical"&&P();break;case"ArrowLeft":r==="horizontal"&&(u?T():P());break;case"ArrowUp":r==="vertical"&&T();break}const te=m%V;N[te].ref.current?.focus()});return e.jsx(Ne,{scope:t,disabled:a,direction:s,orientation:r,children:e.jsx(D.Slot,{scope:t,children:e.jsx(q.div,{...c,"data-orientation":r,ref:p,onKeyDown:a?void 0:w})})})}),g="AccordionItem",[Re,M]=I(g),U=l.forwardRef((o,n)=>{const{__scopeAccordion:t,value:a,...s}=o,r=y(g,t),c=je(g,t),i=k(t),p=ne(),x=a&&c.value.includes(a)||!1,f=r.disabled||o.disabled;return e.jsx(Re,{scope:t,open:x,disabled:f,triggerId:p,children:e.jsx(ae,{"data-orientation":r.orientation,"data-state":X(x),...i,...s,ref:n,disabled:f,open:x,onOpenChange:u=>{u?c.onItemOpen(a):c.onItemClose(a)}})})});U.displayName=g;var Q="AccordionHeader",W=l.forwardRef((o,n)=>{const{__scopeAccordion:t,...a}=o,s=y(d,t),r=M(Q,t);return e.jsx(q.h3,{"data-orientation":s.orientation,"data-state":X(r.open),"data-disabled":r.disabled?"":void 0,...a,ref:n})});W.displayName=Q;var E="AccordionTrigger",B=l.forwardRef((o,n)=>{const{__scopeAccordion:t,...a}=o,s=y(d,t),r=M(E,t),c=Ie(E,t),i=k(t);return e.jsx(D.ItemSlot,{scope:t,children:e.jsx(se,{"aria-disabled":r.open&&!c.collapsible||void 0,"data-orientation":s.orientation,id:r.triggerId,...i,...a,ref:n})})});B.displayName=E;var F="AccordionContent",J=l.forwardRef((o,n)=>{const{__scopeAccordion:t,...a}=o,s=y(d,t),r=M(F,t),c=k(t);return e.jsx(ie,{role:"region","aria-labelledby":r.triggerId,"data-orientation":s.orientation,...c,...a,ref:n,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...o.style}})});J.displayName=F;function X(o){return o?"open":"closed"}var _e=$,Pe=U,Te=W,Z=B,ee=J;const H=_e,b=j.forwardRef(({className:o,...n},t)=>e.jsx(Pe,{ref:t,className:S("border-b",o),...n}));b.displayName="AccordionItem";const C=j.forwardRef(({className:o,children:n,...t},a)=>e.jsx(Te,{className:"flex",children:e.jsxs(Z,{ref:a,className:S("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",o),...t,children:[n,e.jsx(me,{className:"h-4 w-4 shrink-0 transition-transform duration-200"})]})}));C.displayName=Z.displayName;const A=j.forwardRef(({className:o,children:n,...t},a)=>e.jsx(ee,{ref:a,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...t,children:e.jsx("div",{className:S("pb-4 pt-0",o),children:n})}));A.displayName=ee.displayName;function Oe(){const[o,n]=j.useState(!1);return e.jsxs(ue,{open:o,onOpenChange:n,className:"w-[350px] space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between space-x-4 px-4",children:[e.jsx("h4",{className:"text-sm font-semibold",children:"@peduarte starred 3 repositories"}),e.jsx(xe,{asChild:!0,children:e.jsx(fe,{variant:"ghost",size:"sm",children:e.jsx(be,{className:"h-4 w-4"})})})]}),e.jsxs(Ce,{className:"space-y-2",children:[e.jsx("div",{className:"rounded-md border px-4 py-2 text-sm",children:"@radix-ui/primitives"}),e.jsx("div",{className:"rounded-md border px-4 py-2 text-sm",children:"@radix-ui/colors"}),e.jsx("div",{className:"rounded-md border px-4 py-2 text-sm",children:"@stitches/react"})]})]})}function ke(){return e.jsx(Ae,{title:"Accordion & Collapsible",description:"Componentes de expansão/colapso para revelar conteúdo. Accordion para múltiplos itens, Collapsible para item único.",component:e.jsxs(H,{type:"single",collapsible:!0,className:"w-full max-w-md",children:[e.jsxs(b,{value:"item-1",children:[e.jsx(C,{children:"Is it accessible?"}),e.jsx(A,{children:"Yes. It adheres to the WAI-ARIA design pattern."})]}),e.jsxs(b,{value:"item-2",children:[e.jsx(C,{children:"Is it styled?"}),e.jsx(A,{children:"Yes. It comes with default styles that matches the other components aesthetic."})]}),e.jsxs(b,{value:"item-3",children:[e.jsx(C,{children:"Is it animated?"}),e.jsx(A,{children:"Yes. It's animated by default, but you can disable it if you prefer."})]})]}),usage:`import {
|
|
2
|
+
Accordion,
|
|
3
|
+
AccordionContent,
|
|
4
|
+
AccordionItem,
|
|
5
|
+
AccordionTrigger,
|
|
6
|
+
} from "forlogic-core"
|
|
7
|
+
|
|
8
|
+
<Accordion type="single" collapsible>
|
|
9
|
+
<AccordionItem value="item-1">
|
|
10
|
+
<AccordionTrigger>Is it accessible?</AccordionTrigger>
|
|
11
|
+
<AccordionContent>
|
|
12
|
+
Yes. It adheres to the WAI-ARIA design pattern.
|
|
13
|
+
</AccordionContent>
|
|
14
|
+
</AccordionItem>
|
|
15
|
+
</Accordion>`,examples:[{title:"Multiple Items Open",description:"Permite que múltiplos itens sejam abertos ao mesmo tempo",preview:e.jsxs(H,{type:"multiple",className:"w-full max-w-md",children:[e.jsxs(b,{value:"item-1",children:[e.jsx(C,{children:"Section 1"}),e.jsx(A,{children:"Content for section 1"})]}),e.jsxs(b,{value:"item-2",children:[e.jsx(C,{children:"Section 2"}),e.jsx(A,{children:"Content for section 2"})]})]}),code:`<Accordion type="multiple">
|
|
16
|
+
<AccordionItem value="item-1">
|
|
17
|
+
<AccordionTrigger>Section 1</AccordionTrigger>
|
|
18
|
+
<AccordionContent>Content for section 1</AccordionContent>
|
|
19
|
+
</AccordionItem>
|
|
20
|
+
</Accordion>`},{title:"Collapsible",description:"Componente simples para expandir/colapsar um único item",preview:e.jsx(Oe,{}),code:`import {
|
|
21
|
+
Collapsible,
|
|
22
|
+
CollapsibleContent,
|
|
23
|
+
CollapsibleTrigger,
|
|
24
|
+
} from "forlogic-core"
|
|
25
|
+
|
|
26
|
+
<Collapsible>
|
|
27
|
+
<CollapsibleTrigger>Toggle</CollapsibleTrigger>
|
|
28
|
+
<CollapsibleContent>
|
|
29
|
+
Content goes here
|
|
30
|
+
</CollapsibleContent>
|
|
31
|
+
</Collapsible>`}],props:[{name:"type",type:'"single" | "multiple"',default:"-",description:"Accordion: Determina se um ou múltiplos itens podem ser abertos."},{name:"collapsible",type:"boolean",default:"false",description:'Accordion: Quando type é "single", permite fechar o item aberto.'},{name:"defaultValue",type:"string | string[]",default:"-",description:"O(s) valor(es) ativo(s) padrão."},{name:"value",type:"string | string[]",default:"-",description:"O(s) valor(es) ativo(s) controlado(s)."},{name:"open",type:"boolean",default:"-",description:"Collapsible: O estado aberto controlado."},{name:"defaultOpen",type:"boolean",default:"false",description:"Collapsible: O estado aberto padrão."},{name:"onOpenChange",type:"(open: boolean) => void",default:"-",description:"Collapsible: Manipulador quando o estado muda."}],accessibility:["Acessível por teclado - Espaço ou Enter para alternar","Teclas de seta para navegar entre itens do accordion","Suporte ARIA completo com roles e estados adequados","Gerenciamento de foco e indicadores de foco visíveis"],notes:["**Accordion** é ideal para FAQs e listas de perguntas frequentes","**Collapsible** é melhor para um único elemento expansível","Ambos suportam animações suaves de abertura/fechamento"]})}export{ke as AccordionDoc};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import{j as e,x as s,am as n,ak as a,al as i,aV as t,an as r,ao as o,aW as c,aX as d}from"./index-DkiftrvI.js";import{C as l}from"./ComponentDocTemplate-CQbBhfvZ.js";import{T as u}from"./trash-DTWQwpwA.js";import"./ExampleCard-DuLrb3t-.js";function w(){return e.jsx(l,{title:"Action Button",description:"Botão compacto otimizado para ações em linhas de tabela e menus dropdown. OBRIGATÓRIO para todas as ações em tabelas CRUD.",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:"✅ Uso Correto - ActionButton"}),e.jsxs(a,{children:[e.jsx(i,{asChild:!0,children:e.jsx(t,{})}),e.jsxs(r,{align:"end",children:[e.jsxs(o,{onClick:()=>alert("Editar"),children:[e.jsx(c,{className:"mr-2 h-4 w-4"}),"Editar"]}),e.jsxs(o,{onClick:()=>alert("Visualizar"),children:[e.jsx(d,{className:"mr-2 h-4 w-4"}),"Visualizar"]}),e.jsxs(o,{onClick:()=>alert("Excluir"),className:"text-destructive",children:[e.jsx(u,{className:"mr-2 h-4 w-4"}),"Excluir"]})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium mb-2",children:"ActionButton com ícone customizado"}),e.jsx(t,{children:e.jsx(c,{size:12})})]}),e.jsxs("div",{className:"border-t pt-4",children:[e.jsx("h3",{className:"text-sm font-medium mb-2 text-destructive",children:"❌ Errado - Não use Button genérico"}),e.jsxs("div",{className:"flex gap-2 opacity-50",children:[e.jsx(s,{variant:"ghost",size:"icon",className:"h-8 w-8",disabled:!0,children:e.jsx(n,{className:"h-4 w-4"})}),e.jsx("span",{className:"text-sm text-muted-foreground self-center",children:"← Nunca use isto em tabelas"})]})]})]}),usage:`import {
|
|
2
|
+
ActionButton,
|
|
3
|
+
DropdownMenu,
|
|
4
|
+
DropdownMenuTrigger,
|
|
5
|
+
DropdownMenuContent,
|
|
6
|
+
DropdownMenuItem
|
|
7
|
+
} from "forlogic-core"
|
|
8
|
+
import { Edit, Trash } from 'lucide-react'
|
|
9
|
+
|
|
10
|
+
// ✅ CORRETO: Uso padrão em tabelas CRUD
|
|
11
|
+
<DropdownMenu>
|
|
12
|
+
<DropdownMenuTrigger asChild>
|
|
13
|
+
<ActionButton />
|
|
14
|
+
</DropdownMenuTrigger>
|
|
15
|
+
<DropdownMenuContent align="end">
|
|
16
|
+
<DropdownMenuItem onClick={() => handleEdit(item)}>
|
|
17
|
+
<Edit className="mr-2 h-4 w-4" />
|
|
18
|
+
Editar
|
|
19
|
+
</DropdownMenuItem>
|
|
20
|
+
<DropdownMenuItem onClick={() => handleDelete(item)}>
|
|
21
|
+
<Trash className="mr-2 h-4 w-4" />
|
|
22
|
+
Excluir
|
|
23
|
+
</DropdownMenuItem>
|
|
24
|
+
</DropdownMenuContent>
|
|
25
|
+
</DropdownMenu>
|
|
26
|
+
|
|
27
|
+
// ✅ CORRETO: Com ícone customizado
|
|
28
|
+
<ActionButton>
|
|
29
|
+
<Edit size={12} />
|
|
30
|
+
</ActionButton>`,examples:[{title:"❌ Errado - Não use Button genérico",preview:e.jsxs("div",{className:"flex gap-2 opacity-50",children:[e.jsx(s,{variant:"ghost",size:"icon",className:"h-8 w-8",disabled:!0,children:e.jsx(n,{className:"h-4 w-4"})}),e.jsx("span",{className:"text-sm text-muted-foreground self-center",children:"← Nunca use isto"})]}),code:`// ❌ NUNCA faça isso em tabelas CRUD
|
|
31
|
+
<Button variant="ghost" size="icon" className="h-8 w-8">
|
|
32
|
+
<MoreHorizontal className="h-4 w-4" />
|
|
33
|
+
</Button>
|
|
34
|
+
|
|
35
|
+
// ❌ NUNCA faça isso
|
|
36
|
+
<Button variant="outline" size="sm">
|
|
37
|
+
<EllipsisVertical size={12} />
|
|
38
|
+
</Button>`},{title:"✅ Correto - Sempre use ActionButton",preview:e.jsxs(a,{children:[e.jsx(i,{asChild:!0,children:e.jsx(t,{})}),e.jsxs(r,{align:"end",children:[e.jsx(o,{children:"Editar"}),e.jsx(o,{children:"Excluir"})]})]}),code:`// ✅ SEMPRE use ActionButton em tabelas
|
|
39
|
+
<DropdownMenu>
|
|
40
|
+
<DropdownMenuTrigger asChild>
|
|
41
|
+
<ActionButton />
|
|
42
|
+
</DropdownMenuTrigger>
|
|
43
|
+
<DropdownMenuContent align="end">
|
|
44
|
+
<DropdownMenuItem>Editar</DropdownMenuItem>
|
|
45
|
+
<DropdownMenuItem>Excluir</DropdownMenuItem>
|
|
46
|
+
</DropdownMenuContent>
|
|
47
|
+
</DropdownMenu>`}],props:[{name:"children",type:"ReactNode",default:"<EllipsisVertical />",description:"Conteúdo customizado (ícone padrão: três pontos verticais)."},{name:"className",type:"string",default:"-",description:"Classes CSS adicionais."},{name:"onClick",type:"() => void",default:"-",description:"Handler de clique."}],accessibility:["Tamanho compacto (height: 28px, padding: 8px)","Ícone padrão: EllipsisVertical (três pontos verticais)",'variant="action" com estilo consistente do tema',"Perfeito para menus de ação em linhas de tabela"],notes:["⚠️ OBRIGATÓRIO: Use ActionButton para TODAS as ações em linhas de tabela CRUD",'❌ PROIBIDO: Usar Button variant="ghost" ou variant="icon" para ações de tabela',"O ActionButton garante consistência visual e acessibilidade em todo o sistema","Para ações padrão (editar/excluir), considere usar TableRowActions que já encapsula tudo","O ícone padrão é EllipsisVertical (não MoreHorizontal) para manter consistência"]})}export{w as ActionButtonDoc};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import{r as C,j as e,o as P,b7 as G,J as N,K as T,N as I,O as E,Q as R,R as k,V as M,M as V,E as Ie,G as Ee,H as Re,I as ke,X as Me,x as S,ac as ee,ak as O,al as B,aV as U,an as $,ao as w,P as J,B as Le,a3 as ze,as as Y,dp as Fe,aq as Oe,dh as Be,dC as $e,a5 as Ve,a6 as qe,a7 as z,aa as F,Y as b}from"./index-DkiftrvI.js";import{C as Ue}from"./ComponentDocTemplate-CQbBhfvZ.js";import{L as _e}from"./loading-state-Cb5_t5uE.js";import{D as X}from"./date-picker-BW3eGOe_.js";import{S as He,P as Ke}from"./smartphone-BSNR60L7.js";import"./ExampleCard-DuLrb3t-.js";var r=(s=>(s[s.waitingStart=1]="waitingStart",s[s.running=2]="running",s[s.effectivenessCheck=3]="effectivenessCheck",s[s.done=4]="done",s[s.suspended=5]="suspended",s[s.canceled=6]="canceled",s))(r||{}),q=(s=>(s[s.low=0]="low",s[s.medium=1]="medium",s[s.high=2]="high",s))(q||{}),A=(s=>(s.uploading="uploading",s.waiting="waiting",s.done="done",s.error="error",s.canceled="canceled",s.duplicateItem="duplicateItem",s))(A||{});const Ge={[r.waitingStart]:"#D6D6D6",[r.running]:"#DAE9F4",[r.effectivenessCheck]:"#1B75BB29",[r.done]:"#DDEECA",[r.suspended]:"#FFF2D6",[r.canceled]:"#F4433629"},Je={[r.waitingStart]:"#666666",[r.running]:"#1B75BB",[r.effectivenessCheck]:"#1B75BB",[r.done]:"#4CAF50",[r.suspended]:"#FF9800",[r.canceled]:"#F44336"};r.waitingStart+"",r.running+"",r.effectivenessCheck+"",r.done+"",r.suspended+"",r.canceled+"";const se={[r.waitingStart]:"Aguardando início",[r.running]:"Em andamento",[r.effectivenessCheck]:"Verificação de eficácia",[r.done]:"Concluída",[r.suspended]:"Suspensa",[r.canceled]:"Cancelada"},We=[{id:"immediate",label:"Imediata"},{id:"corrective",label:"Corretiva"},{id:"preventive",label:"Preventiva"},{id:"improvement",label:"Oportunidade de Melhoria"},{id:"standardization",label:"Padronização"}],Qe=[{id:q.low,label:"Baixa",color:"#4CAF50"},{id:q.medium,label:"Média",color:"#FF9800"},{id:q.high,label:"Alta",color:"#F44336"}],Ye=[r.done,r.canceled],Xe=[r.waitingStart,r.running,r.effectivenessCheck,r.suspended];function Ze(s){const{actionPlan:a,isNew:t=!1,config:l,onSave:u,onCancel:i,onDelete:p,onChangeStatus:g}=s,[h,o]=C.useState({formData:a||{},isLoading:s.isLoading||!1,isSaving:!1,activeTab:"general",isFormDisabled:!1});C.useEffect(()=>{a&&o(j=>({...j,formData:a,isFormDisabled:l?.disableFields||Ye.includes(a.statusId)}))},[a,l?.disableFields]),C.useEffect(()=>{o(j=>({...j,isLoading:s.isLoading||!1}))},[s.isLoading]);const v=C.useCallback((j,x)=>{o(y=>({...y,formData:{...y.formData,[j]:x}}))},[]),d=C.useCallback(j=>{o(x=>({...x,activeTab:j}))},[]),c=C.useCallback(async()=>{if(u){o(j=>({...j,isSaving:!0}));try{await u(h.formData)}finally{o(j=>({...j,isSaving:!1}))}}},[u,h.formData]),f=C.useCallback(async j=>{if(!(!g||!h.formData.id)){o(x=>({...x,isLoading:!0}));try{await g(h.formData.id,j)}finally{o(x=>({...x,isLoading:!1}))}}},[g,h.formData.id]),n=C.useCallback(async()=>{if(!(!p||!h.formData.id)){o(j=>({...j,isLoading:!0}));try{await p(h.formData.id)}finally{o(j=>({...j,isLoading:!1}))}}},[p,h.formData.id]);return{formData:h.formData,isLoading:h.isLoading,isSaving:h.isSaving,activeTab:h.activeTab,isFormDisabled:h.isFormDisabled,updateField:v,setActiveTab:d,save:c,changeStatus:f,remove:n,cancel:i}}function W({status:s,labels:a,className:t}){const l=a?.[s]||se[s]||"",u=Ge[s]||"#D6D6D6",i=Je[s]||"#666666";return e.jsx("span",{className:P("inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold",t),style:{backgroundColor:u,color:i},children:l})}function es({formData:s,updateField:a,disabled:t=!1,users:l=[],places:u=[],actionTypes:i,causes:p=[],parentActions:g=[],config:h}){const o=h?.requiredFields,v=i||We,d=n=>{if(h?.hiddenFields?.includes(n))return!1;if(h?.visibleFields&&h.visibleFields.length>0)return h.visibleFields.includes(n);const j=`${n}Visible`;return o&&j in o?o[j]!==!1:!0},c=n=>o?!!o[n]:n==="name",f=G.useMemo(()=>{if(s.startDate&&s.endDate){const n=new Date(s.startDate),x=new Date(s.endDate).getTime()-n.getTime();return Math.max(0,Math.ceil(x/(1e3*60*60*24)))}return s.duration||0},[s.startDate,s.endDate,s.duration]);return e.jsxs("div",{className:"space-y-6 p-1",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:P(c("name")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Nome"}),e.jsx(T,{value:s.name||"",onChange:n=>a("name",n.target.value),maxLength:500,disabled:t,placeholder:"Nome do plano de ação"})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[d("responsibleWho")&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:P(c("responsibleWho")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Responsável"}),e.jsxs(I,{value:s.responsibleId||"",onValueChange:n=>a("responsibleId",n),disabled:t,children:[e.jsx(E,{children:e.jsx(R,{placeholder:"Selecione o responsável"})}),e.jsx(k,{children:l.map(n=>e.jsx(M,{value:n.id,children:n.name},n.id))})]})]}),d("checkerWho")&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:P(c("checkerWho")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Verificador"}),e.jsxs(I,{value:s.checkerId||"",onValueChange:n=>a("checkerId",n),disabled:t,children:[e.jsx(E,{children:e.jsx(R,{placeholder:"Selecione o verificador"})}),e.jsx(k,{children:l.map(n=>e.jsx(M,{value:n.id,children:n.name},n.id))})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[d("place")&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:P(c("place")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Local"}),e.jsxs(I,{value:s.placeId||"",onValueChange:n=>a("placeId",n),disabled:t,children:[e.jsx(E,{children:e.jsx(R,{placeholder:"Selecione o local"})}),e.jsx(k,{children:ae(u).map(n=>e.jsx(M,{value:n.id,children:n.name},n.id))})]})]}),d("planType")&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:P(c("planType")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Tipo de Ação"}),e.jsxs(I,{value:s.typeId||"",onValueChange:n=>a("typeId",n),disabled:t,children:[e.jsx(E,{children:e.jsx(R,{placeholder:"Selecione o tipo"})}),e.jsx(k,{children:v.map(n=>e.jsx(M,{value:n.id,children:n.label},n.id))})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[d("priority")&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:P(c("priority")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Prioridade"}),e.jsxs(I,{value:s.priorityType?.toString()||"",onValueChange:n=>a("priorityType",Number(n)),disabled:t,children:[e.jsx(E,{children:e.jsx(R,{placeholder:"Selecione a prioridade"})}),e.jsx(k,{children:Qe.map(n=>e.jsx(M,{value:n.id.toString(),children:e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"h-2 w-2 rounded-full",style:{backgroundColor:n.color}}),n.label]})},n.id))})]})]}),g.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Pertence a"}),e.jsxs(I,{value:s.parentId||"",onValueChange:n=>a("parentId",n),disabled:t,children:[e.jsx(E,{children:e.jsx(R,{placeholder:"Selecione a ação pai"})}),e.jsx(k,{children:g.map(n=>e.jsx(M,{value:n.id,children:n.label},n.id))})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[d("startDate")&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:P(c("startDate")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Data de Início"}),e.jsx(X,{date:s.startDate?new Date(s.startDate):void 0,onDateChange:n=>a("startDate",n||null),disabled:t,placeholder:"Selecione a data"})]}),d("endDate")&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:P(c("endDate")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Data de Término"}),e.jsx(X,{date:s.endDate?new Date(s.endDate):void 0,onDateChange:n=>a("endDate",n||null),disabled:t,placeholder:"Selecione a data",disabledDates:s.startDate?n=>n<new Date(s.startDate):void 0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Duração (dias)"}),e.jsx(T,{type:"number",value:f,disabled:!0,className:"bg-muted"})]})]}),d("estimatedCost")&&e.jsxs("div",{className:"space-y-2 max-w-xs",children:[e.jsx(N,{className:P(c("estimatedCost")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Custo Estimado"}),e.jsxs("div",{className:"relative",children:[e.jsx("span",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground text-sm",children:"R$"}),e.jsx(T,{type:"number",min:0,step:.01,value:s.estimatedCost||"",onChange:n=>a("estimatedCost",Number(n.target.value)),disabled:t,className:"pl-9",placeholder:"0,00"})]})]}),d("cause")&&p.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Causa"}),e.jsxs(I,{value:s.causeId||"",onValueChange:n=>a("causeId",n),disabled:t,children:[e.jsx(E,{children:e.jsx(R,{placeholder:"Selecione a causa"})}),e.jsx(k,{children:p.map(n=>e.jsx(M,{value:n.id,children:n.label},n.id))})]})]}),d("description")&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:P(c("description")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Descrição"}),e.jsx(V,{value:s.description||"",onChange:n=>a("description",n.target.value),maxLength:4e3,disabled:t,rows:4,placeholder:"Descreva o plano de ação"})]}),d("justification")&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:P(c("justification")&&"after:content-['*'] after:ml-0.5 after:text-destructive"),children:"Justificativa"}),e.jsx(V,{value:s.justification||"",onChange:n=>a("justification",n.target.value),maxLength:4e3,disabled:t,rows:4,placeholder:"Justificativa do plano de ação"})]})]})}function ae(s,a=0){const t=[];for(const l of s)t.push({...l,depth:a}),l.children?.length&&t.push(...ae(l.children,a+1));return t}function ss(s){const{progress:a,onReportProgress:t,onEditProgress:l,onDeleteProgress:u}=s,[i,p]=C.useState(!1),[g,h]=C.useState(null),o=a?Xe.includes(a.status):!1,v=C.useCallback(async f=>{if(!(!t||!a)){p(!0);try{const n=f.percentProgress===100;await t({id:a.id,...f,conclude:n})}finally{p(!1)}}},[t,a]),d=C.useCallback(async f=>{if(l){p(!0);try{await l(f)}finally{p(!1),h(null)}}},[l]),c=C.useCallback(async f=>{if(u){p(!0);try{await u(f)}finally{p(!1)}}},[u]);return{progress:a,canReportProgress:o,isSubmitting:i,editingReport:g,setEditingReport:h,reportProgress:v,editProgress:d,deleteProgress:c}}function _(s){if(!s)return"";let a=(s||"").trim();if(!a)return"00:00";if(a.includes(":")){const i=a.split(":");if(i.length>=2){const p=i[0].replace(/\D/g,""),g=i[1].replace(/\D/g,"");let h=parseInt(p)||0,o=parseInt(g)||0;return h+=Math.floor(o/60),o%=60,`${h.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}}if(a=a.replace(/\D/g,""),!a)return"00:00";const t=a.length;let l=0,u=0;return t===4?(l=parseInt(a.substring(0,2))||0,u=parseInt(a.substring(2,4))||0,l+=Math.floor(u/60),u%=60):(l=parseInt(a)||0,u=0),`${l.toString().padStart(2,"0")}:${u.toString().padStart(2,"0")}`}function te(s){if(s==null)return"00:00";const a=String(s).replace(/\D/g,"");if(a.length<3){let t=parseInt(a)||0;const l=Math.floor(t/60);return t%=60,`${l.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`}else{const t=a.slice(-2),l=a.slice(0,-2);let u=parseInt(l)||0,i=parseInt(t)||0;return u+=Math.floor(i/60),i%=60,`${u.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}}function ne(s){return s===100?"#84c148":s>0?"#1b75bb":""}function as({open:s,onOpenChange:a,report:t,onSave:l,isSubmitting:u=!1}){const[i,p]=C.useState(t?.percentProgress||0),[g,h]=C.useState(t?.timeProgress||""),[o,v]=C.useState(t?.comments||"");G.useEffect(()=>{t&&(p(t.percentProgress),h(t.timeProgress||""),v(t.comments||""))},[t]);const d=()=>{t&&l({...t,percentProgress:i,timeProgress:_(g)||"00:00",comments:o})};return e.jsx(Ie,{open:s,onOpenChange:a,children:e.jsxs(Ee,{className:"sm:max-w-md",children:[e.jsx(Re,{children:e.jsx(ke,{children:"Editar Progresso"})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Progresso (%)"}),e.jsx(T,{type:"number",min:0,max:100,value:i,onChange:c=>p(Number(c.target.value))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Tempo gasto (HH:MM)"}),e.jsx(T,{value:g,onChange:c=>h(c.target.value),onBlur:()=>h(_(g)||""),placeholder:"00:00"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Comentários"}),e.jsx(V,{value:o,onChange:c=>v(c.target.value),rows:3,maxLength:4e3})]})]}),e.jsxs(Me,{children:[e.jsx(S,{variant:"outline",onClick:()=>a(!1),disabled:u,children:"Cancelar"}),e.jsx(S,{onClick:d,disabled:u,children:u?"Salvando...":"Salvar"})]})]})})}function ts(s){const{progress:a,canReportProgress:t,isSubmitting:l,editingReport:u,setEditingReport:i,reportProgress:p,editProgress:g,deleteProgress:h}=ss(s),[o,v]=C.useState(""),[d,c]=C.useState(""),[f,n]=C.useState("");if(!a)return e.jsx("div",{className:"flex items-center justify-center py-12 text-muted-foreground",children:"Sem dados de progresso disponíveis"});const j=ne(a.percentProgress),x=async()=>{const m=Number(o);!m&&m!==0||(await p({percentProgress:m,timeProgress:_(d)||"00:00",comments:f}),v(""),c(""),n(""))},y=()=>{v(""),c(""),n("")},D=!o,L=!o&&!d&&!f;return e.jsxs("div",{className:"space-y-6 p-1",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"font-medium",children:"Progresso geral"}),e.jsxs("span",{className:"font-semibold",style:{color:j||void 0},children:[a.percentProgress,"%"]})]}),e.jsx(ee,{value:a.percentProgress,className:"h-3"}),a.timeProgress&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Tempo total: ",te(a.timeProgress)]})]}),t&&e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-4",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Reportar progresso"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Progresso (%)"}),e.jsx(T,{type:"number",min:0,max:100,value:o,onChange:m=>v(m.target.value),placeholder:"0"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Tempo gasto (HH:MM)"}),e.jsx(T,{value:d,onChange:m=>c(m.target.value),onBlur:()=>c(_(d)||""),placeholder:"00:00"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Comentários"}),e.jsx(V,{value:f,onChange:m=>n(m.target.value),rows:3,maxLength:4e3,placeholder:"Adicione um comentário sobre o progresso"})]}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx(S,{variant:"outline",size:"sm",onClick:y,disabled:L||l,children:"Limpar"}),e.jsx(S,{size:"sm",onClick:x,disabled:D||l,children:l?"Reportando...":"Reportar"})]})]}),a.reports.length>0&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Histórico de reportes"}),e.jsx("div",{className:"space-y-2",children:a.reports.map(m=>e.jsx(ns,{report:m,onEdit:()=>i(m),onDelete:()=>h(m.id),disabled:!t},m.id))})]}),e.jsx(as,{open:!!u,onOpenChange:m=>!m&&i(null),report:u,onSave:g,isSubmitting:l})]})}function ns({report:s,onEdit:a,onDelete:t,disabled:l}){const u=s.date?new Date(s.date):null,i=ne(s.percentProgress);return e.jsxs("div",{className:"flex items-start gap-3 rounded-lg border bg-card p-3",children:[e.jsx("div",{className:"flex-shrink-0 h-8 w-8 rounded-full bg-muted flex items-center justify-center text-xs font-medium text-muted-foreground",children:s.userName?.charAt(0)?.toUpperCase()||"?"}),e.jsxs("div",{className:"flex-1 min-w-0 space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx("span",{className:"font-medium truncate",children:s.userName}),u&&e.jsx("span",{className:"text-xs text-muted-foreground",children:u.toLocaleDateString("pt-BR")})]}),e.jsxs("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[e.jsxs("span",{style:{color:i||void 0},className:"font-semibold",children:[s.percentProgress,"%"]}),s.timeProgress&&e.jsxs("span",{children:["Tempo: ",te(s.timeProgress)]})]}),s.comments&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:s.comments})]}),!l&&e.jsxs(O,{children:[e.jsx(B,{asChild:!0,children:e.jsx(U,{})}),e.jsxs($,{align:"end",children:[e.jsx(w,{onClick:a,children:"Editar"}),e.jsx(w,{className:"text-destructive",onClick:t,children:"Excluir"})]})]})]})}function is({predecessors:s=[],availablePredecessors:a=[],onAdd:t,onRemove:l,disabled:u=!1}){const[i,p]=G.useState(""),g=()=>{!i||!t||(t(i),p(""))},h=a.filter(o=>!s.some(v=>v.predecessorId===o.id));return e.jsxs("div",{className:"space-y-6 p-1",children:[!u&&h.length>0&&e.jsxs("div",{className:"flex items-end gap-3",children:[e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx(N,{children:"Adicionar predecessor"}),e.jsxs(I,{value:i,onValueChange:p,children:[e.jsx(E,{children:e.jsx(R,{placeholder:"Selecione uma ação"})}),e.jsx(k,{children:h.map(o=>e.jsx(M,{value:o.id,children:o.label},o.id))})]})]}),e.jsxs(S,{size:"sm",onClick:g,disabled:!i,children:[e.jsx(J,{className:"h-4 w-4 mr-1"}),"Adicionar"]})]}),s.length>0?e.jsx("div",{className:"space-y-2",children:s.map(o=>e.jsxs("div",{className:"flex items-center justify-between rounded-lg border bg-card p-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[o.predecessorCode&&e.jsx("span",{className:"text-xs text-muted-foreground font-mono",children:o.predecessorCode}),e.jsx("span",{className:"text-sm font-medium",children:o.predecessorName}),o.predecessorStatus!=null&&e.jsx(W,{status:o.predecessorStatus})]}),!u&&l&&e.jsxs(O,{children:[e.jsx(B,{asChild:!0,children:e.jsx(U,{})}),e.jsx($,{align:"end",children:e.jsx(w,{className:"text-destructive",onClick:()=>l(o.predecessorId),children:"Remover"})})]})]},o.id))}):e.jsx("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:"Nenhum predecessor adicionado"})]})}function rs({costs:s=[],onAdd:a,onEdit:t,onDelete:l,disabled:u=!1}){const[i,p]=C.useState(""),[g,h]=C.useState(""),o=s.reduce((d,c)=>d+(c.value||0),0),v=()=>{!i||!g||!a||(a({description:i,value:Number(g),date:new Date().toISOString()}),p(""),h(""))};return e.jsxs("div",{className:"space-y-6 p-1",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 flex items-center justify-between",children:[e.jsx("span",{className:"text-sm font-medium",children:"Custo total realizado"}),e.jsxs("span",{className:"text-lg font-semibold text-foreground",children:["R$ ",o.toLocaleString("pt-BR",{minimumFractionDigits:2,maximumFractionDigits:2})]})]}),!u&&a&&e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-4",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Adicionar custo"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Descrição"}),e.jsx(T,{value:i,onChange:d=>p(d.target.value),placeholder:"Descrição do custo"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"Valor (R$)"}),e.jsx(T,{type:"number",min:0,step:.01,value:g,onChange:d=>h(d.target.value),placeholder:"0,00"})]})]}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(S,{size:"sm",onClick:v,disabled:!i||!g,children:[e.jsx(J,{className:"h-4 w-4 mr-1"}),"Adicionar"]})})]}),s.length>0?e.jsx("div",{className:"space-y-2",children:s.map(d=>e.jsxs("div",{className:"flex items-center justify-between rounded-lg border bg-card p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:d.description}),d.date&&e.jsx("p",{className:"text-xs text-muted-foreground",children:new Date(d.date).toLocaleDateString("pt-BR")})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("span",{className:"text-sm font-semibold whitespace-nowrap",children:["R$ ",d.value.toLocaleString("pt-BR",{minimumFractionDigits:2,maximumFractionDigits:2})]}),!u&&(t||l)&&e.jsxs(O,{children:[e.jsx(B,{asChild:!0,children:e.jsx(U,{})}),e.jsxs($,{align:"end",children:[t&&e.jsx(w,{onClick:()=>t(d),children:"Editar"}),l&&e.jsx(w,{className:"text-destructive",onClick:()=>l(d.id),children:"Excluir"})]})]})]})]},d.id))}):e.jsx("div",{className:"flex items-center justify-center py-8 text-sm text-muted-foreground",children:"Nenhum custo registrado"})]})}function os({comments:s=[],currentUserId:a,onAdd:t,onEdit:l,onDelete:u,disabled:i=!1,maxLength:p=4e3}){const[g,h]=C.useState(""),[o,v]=C.useState(!1),[d,c]=C.useState(null),[f,n]=C.useState(""),j=async()=>{if(!(!g.trim()||!t)){v(!0);try{await t(g),h("")}finally{v(!1)}}},x=async m=>{if(!(!f.trim()||!l)){v(!0);try{await l({...m,text:f,stringText:f}),c(null),n("")}finally{v(!1)}}},y=async m=>{if(u){v(!0);try{await u(m)}finally{v(!1)}}},D=m=>{c(m.id),n(m.stringText||m.text)},L=()=>{c(null),n("")};return e.jsxs("div",{className:"space-y-6 p-1",children:[!i&&t&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(V,{value:g,onChange:m=>h(m.target.value),placeholder:"Adicionar comentário...",maxLength:p,rows:3}),e.jsxs("div",{className:"flex items-center justify-between",children:[p&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:[g.length,"/",p]}),e.jsxs("div",{className:"flex gap-2 ml-auto",children:[e.jsx(S,{variant:"outline",size:"sm",onClick:()=>h(""),disabled:!g||o,children:"Limpar"}),e.jsx(S,{size:"sm",onClick:j,disabled:!g.trim()||o,children:o?"Enviando...":"Comentar"})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[s.length>0?e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"text-sm font-medium",children:"Comentários"}),e.jsx(Le,{variant:"info",className:"text-[10px] px-1.5 py-0",children:s.length})]}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(ze,{className:"h-8 w-8 mb-2 opacity-50"}),e.jsx("p",{className:"text-sm",children:"Nenhum comentário adicionado"})]}),s.map(m=>e.jsxs("div",{className:"flex gap-3 rounded-lg border bg-card p-3",children:[e.jsx("div",{className:"flex-shrink-0 h-8 w-8 rounded-full bg-muted flex items-center justify-center text-xs font-medium text-muted-foreground overflow-hidden",children:m.userPhotoUrl?e.jsx("img",{src:m.userPhotoUrl,alt:m.userName,className:"h-full w-full object-cover"}):m.userName?.charAt(0)?.toUpperCase()||"?"}),e.jsxs("div",{className:"flex-1 min-w-0 space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx("span",{className:"font-medium truncate",children:m.userName}),m.userEmail&&e.jsx("span",{className:"text-xs text-muted-foreground truncate",children:m.userEmail}),e.jsx("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:ls(m.dateEdited||m.dateCreation)}),m.dateEdited&&e.jsx("span",{className:"text-xs text-muted-foreground italic",children:"editado"})]}),d===m.id?e.jsxs("div",{className:"space-y-2",children:[e.jsx(V,{value:f,onChange:H=>n(H.target.value),maxLength:p,rows:3}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx(S,{variant:"outline",size:"sm",onClick:L,disabled:o,children:"Cancelar"}),e.jsx(S,{size:"sm",onClick:()=>x(m),disabled:!f.trim()||o,children:o?"Salvando...":"Salvar"})]})]}):e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-wrap",children:m.stringText||m.text})]}),!i&&a===m.userId&&d!==m.id&&e.jsxs(O,{children:[e.jsx(B,{asChild:!0,children:e.jsx(U,{})}),e.jsxs($,{align:"end",children:[l&&e.jsx(w,{onClick:()=>D(m),children:"Editar"}),u&&e.jsx(w,{className:"text-destructive",onClick:()=>y(m.id),children:"Excluir"})]})]})]},m.id))]})]})}function ls(s){if(!s)return"";const a=new Date(s);return`${a.toLocaleDateString("pt-BR")} ${a.toLocaleTimeString("pt-BR",{hour:"2-digit",minute:"2-digit"})}`}function cs({history:s=[],isLoading:a=!1}){return a?e.jsx("div",{className:"flex items-center justify-center py-12 text-muted-foreground",children:"Carregando histórico..."}):s.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(Y,{className:"h-8 w-8 mb-2 opacity-50"}),e.jsx("p",{className:"text-sm",children:"Nenhum registro no histórico"})]}):e.jsx("div",{className:"p-1",children:e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute left-4 top-0 bottom-0 w-px bg-border"}),e.jsx("div",{className:"space-y-0",children:s.map((t,l)=>e.jsxs("div",{className:"relative flex gap-4 pb-6 last:pb-0",children:[e.jsx("div",{className:"relative z-10 flex-shrink-0 h-8 w-8 rounded-full bg-primary/10 border-2 border-primary/30 flex items-center justify-center",children:t.icon?e.jsx("span",{className:"text-xs text-primary",children:t.icon}):e.jsx("div",{className:"h-2 w-2 rounded-full bg-primary"})}),e.jsxs("div",{className:"flex-1 min-w-0 rounded-lg border bg-card p-3 space-y-2",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium",children:t.translateEvent||t.eventName}),t.eventDescription&&e.jsx("p",{className:"text-xs text-muted-foreground",children:t.eventDescription})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex-shrink-0 h-6 w-6 rounded-full bg-muted overflow-hidden flex items-center justify-center text-[10px] font-medium text-muted-foreground",children:t.userPhotoUrl?e.jsx("img",{src:t.userPhotoUrl,alt:t.userName,className:"h-full w-full object-cover"}):t.userName?.charAt(0)?.toUpperCase()||"?"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"text-xs font-medium truncate block",children:t.userName}),t.userEmail&&e.jsx("span",{className:"text-[10px] text-muted-foreground truncate block",children:t.userEmail})]})]}),e.jsxs("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Fe,{className:"h-3 w-3"}),e.jsx("span",{children:ds(t.date)})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Y,{className:"h-3 w-3"}),e.jsx("span",{children:ms(t.date)})]}),t.isMobileRequest&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(He,{className:"h-3 w-3"}),e.jsx("span",{children:"Via app"})]})]})]})]},t.id))})]})})}function ds(s){return new Date(s).toLocaleDateString("pt-BR")}function ms(s){return new Date(s).toLocaleTimeString("pt-BR",{hour:"2-digit",minute:"2-digit"})}function us({attachments:s=[],onUpload:a,onDelete:t,onRename:l,onDownload:u,onView:i,disabled:p=!1}){const g=C.useRef(null),[h,o]=C.useState(null),[v,d]=C.useState(""),c=x=>{const y=x.target.files;if(!(!y||!a)){for(let D=0;D<y.length;D++){const L=y.item(D);L&&a(L)}g.current&&(g.current.value="")}},f=x=>{const y=x.name.replace(x.extension,"");o(x.id),d(y)},n=async x=>{!v.trim()||!l||(await l(x.id,v),o(null),d(""))},j=()=>{o(null),d("")};return e.jsxs("div",{className:"space-y-4 p-1",children:[!p&&a&&e.jsxs(e.Fragment,{children:[e.jsx("input",{ref:g,type:"file",multiple:!0,className:"hidden",onChange:c}),e.jsxs(S,{size:"sm",onClick:()=>g.current?.click(),children:[e.jsx(J,{className:"h-4 w-4 mr-1"}),"Adicionar anexo"]})]}),s.length>0?e.jsx("div",{className:"space-y-2",children:s.map(x=>e.jsxs("div",{className:P("flex items-center gap-3 rounded-lg border bg-card p-3",x.status===A.error&&"border-destructive/50 bg-destructive/5",x.status===A.canceled&&"opacity-50"),children:[e.jsx("div",{className:"flex-shrink-0 h-9 w-9 rounded bg-muted flex items-center justify-center",children:e.jsx("span",{className:"text-[10px] font-bold uppercase text-muted-foreground",children:x.extension.replace(".","").substring(0,4)})}),e.jsxs("div",{className:"flex-1 min-w-0 space-y-1",children:[h===x.id?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{className:"flex-1 text-sm border rounded px-2 py-1 bg-background",value:v,onChange:y=>d(y.target.value),onKeyDown:y=>{y.key==="Enter"&&n(x),y.key==="Escape"&&j()},autoFocus:!0}),e.jsx(S,{size:"sm",variant:"outline",onClick:j,children:"Cancelar"}),e.jsx(S,{size:"sm",onClick:()=>n(x),children:"Salvar"})]}):e.jsx("button",{type:"button",className:"text-sm font-medium truncate block text-left hover:underline cursor-pointer",onClick:()=>i?.(x.id),children:x.name}),(x.status===A.uploading||x.status===A.waiting)&&e.jsx(ee,{value:x.progress||0,className:"h-1.5"}),x.status===A.error&&e.jsx("p",{className:"text-xs text-destructive",children:"Erro ao enviar arquivo"}),x.status===A.duplicateItem&&e.jsx("p",{className:"text-xs text-warning",children:"Arquivo duplicado"}),x.status===A.canceled&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"Upload cancelado"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[x.status===A.done&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:ps(x.size)}),e.jsxs(O,{children:[e.jsx(B,{asChild:!0,children:e.jsx(U,{})}),e.jsxs($,{align:"end",children:[l&&!p&&e.jsx(w,{onClick:()=>f(x),children:"Renomear"}),i&&e.jsx(w,{onClick:()=>i(x.id),children:"Visualizar"}),u&&e.jsx(w,{onClick:()=>u(x.id),children:"Download"}),t&&!p&&e.jsxs(e.Fragment,{children:[e.jsx(Oe,{}),e.jsx(w,{className:"text-destructive",onClick:()=>t(x.id),children:"Excluir"})]})]})]})]}),x.status===A.uploading&&e.jsx(S,{variant:"outline",size:"sm",onClick:()=>t?.(x.id),children:"Cancelar"})]})]},x.id))}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(Ke,{className:"h-8 w-8 mb-2 opacity-50"}),e.jsx("p",{className:"text-sm",children:"Nenhum anexo adicionado"})]})]})}function ps(s){if(s===0)return"0 B";const a=1024,t=["B","KB","MB","GB"],l=Math.floor(Math.log(s)/Math.log(a));return`${parseFloat((s/Math.pow(a,l)).toFixed(1))} ${t[l]}`}function ie(s){const{formData:a,isLoading:t,isSaving:l,activeTab:u,isFormDisabled:i,updateField:p,setActiveTab:g,save:h,changeStatus:o,remove:v,cancel:d}=Ze(s),{isNew:c=!1,config:f,users:n,places:j,actionTypes:x,causes:y,parentActions:D,progress:L,predecessors:m,availablePredecessors:H,costs:de,comments:me,history:ue,attachments:pe,attachmentsSlot:xe,commentsSlot:he,historySlot:ge,onAddPredecessor:fe,onRemovePredecessor:je,onAddCost:ve,onEditCost:Ce,onDeleteCost:Ne,onAddComment:be,onEditComment:ye,onDeleteComment:Se,onUploadAttachment:Pe,onDeleteAttachment:Ae,onRenameAttachment:we,onDownloadAttachment:De,onViewAttachment:Te}=s;if(t&&!a.id)return e.jsx(_e,{isLoading:!0,children:e.jsx("div",{})});const Q=xs(a.statusId);return e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between border-b bg-card px-6 py-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[d&&e.jsx(S,{variant:"ghost",size:"icon",onClick:d,children:e.jsx(Be,{className:"h-4 w-4"})}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-lg font-semibold",children:c?"Nova Ação":a.name||"Plano de Ação"}),!c&&a.statusId&&e.jsx(W,{status:a.statusId})]}),a.code&&e.jsx("p",{className:"text-xs text-muted-foreground font-mono",children:a.code})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[!c&&Q.length>0&&!i&&e.jsxs(O,{children:[e.jsx(B,{asChild:!0,children:e.jsx(S,{variant:"outline",size:"sm",children:"Alterar Status"})}),e.jsx($,{align:"end",children:Q.map(K=>e.jsx(w,{onClick:()=>o(K),children:se[K]},K))})]}),!c&&s.onDelete&&e.jsxs(O,{children:[e.jsx(B,{asChild:!0,children:e.jsx(S,{variant:"ghost",size:"icon",children:e.jsx($e,{className:"h-4 w-4"})})}),e.jsx($,{align:"end",children:e.jsx(w,{className:"text-destructive",onClick:v,children:"Excluir"})})]})]})]}),e.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:e.jsx("div",{className:"max-w-4xl mx-auto px-6 py-6",children:e.jsxs(Ve,{value:u,onValueChange:g,children:[e.jsxs(qe,{className:"mb-6",children:[e.jsx(z,{value:"general",children:"Geral"}),!c&&e.jsx(z,{value:"progress",children:"Progresso"}),!c&&f?.enablePredecessors&&e.jsx(z,{value:"predecessors",children:"Predecessores"}),!c&&f?.enableCosts&&e.jsx(z,{value:"costs",children:"Custos"}),!c&&f?.enableAttachments&&e.jsx(z,{value:"attachments",children:"Anexos"}),!c&&f?.enableComments&&e.jsx(z,{value:"comments",children:"Comentários"}),!c&&f?.enableHistory&&e.jsx(z,{value:"history",children:"Histórico"})]}),e.jsx(F,{value:"general",children:e.jsx(es,{formData:a,updateField:p,disabled:i,users:n,places:j,actionTypes:x,causes:y,parentActions:D,config:f})}),!c&&e.jsx(F,{value:"progress",children:e.jsx(ts,{...s})}),!c&&f?.enablePredecessors&&e.jsx(F,{value:"predecessors",children:e.jsx(is,{predecessors:m,availablePredecessors:H,onAdd:fe,onRemove:je,disabled:i})}),!c&&f?.enableCosts&&e.jsx(F,{value:"costs",children:e.jsx(rs,{costs:de,onAdd:ve,onEdit:Ce,onDelete:Ne,disabled:i})}),!c&&f?.enableAttachments&&e.jsx(F,{value:"attachments",children:xe||e.jsx(us,{attachments:pe,onUpload:Pe,onDelete:Ae,onRename:we,onDownload:De,onView:Te,disabled:i})}),!c&&f?.enableComments&&e.jsx(F,{value:"comments",children:he||e.jsx(os,{comments:me,onAdd:be,onEdit:ye,onDelete:Se,disabled:i})}),!c&&f?.enableHistory&&e.jsx(F,{value:"history",children:ge||e.jsx(cs,{history:ue})})]})})}),e.jsxs("div",{className:"flex items-center justify-end gap-3 border-t bg-card px-6 py-4",children:[d&&e.jsx(S,{variant:"outline",onClick:d,disabled:l,children:"Cancelar"}),e.jsx(S,{onClick:h,disabled:l||i,children:l?"Salvando...":"Salvar"})]})]})}function xs(s){return s?{[r.waitingStart]:[r.running,r.suspended,r.canceled],[r.running]:[r.effectivenessCheck,r.done,r.suspended,r.canceled],[r.effectivenessCheck]:[r.running,r.done,r.suspended,r.canceled],[r.done]:[r.running],[r.suspended]:[r.running,r.canceled],[r.canceled]:[r.waitingStart]}[s]||[]:[]}const re=[{id:"u1",name:"Maria Silva",email:"maria@example.com"},{id:"u2",name:"João Santos",email:"joao@example.com"},{id:"u3",name:"Ana Oliveira",email:"ana@example.com"},{id:"u4",name:"Carlos Pereira",email:"carlos@example.com"}],oe=[{id:"p1",name:"Matriz",children:[{id:"p1-1",name:"Qualidade",parentId:"p1"},{id:"p1-2",name:"Produção",parentId:"p1"}]},{id:"p2",name:"Filial São Paulo",children:[{id:"p2-1",name:"Engenharia",parentId:"p2"}]}],le=[{id:"corrective",label:"Corretiva"},{id:"preventive",label:"Preventiva"},{id:"improvement",label:"Oportunidade de Melhoria"},{id:"immediate",label:"Imediata"}],ce=[{id:"c1",label:"Falha de processo"},{id:"c2",label:"Falta de treinamento"},{id:"c3",label:"Material defeituoso"}],hs={id:"ap-001",code:"AC-2026-001",name:"Implementar controle de qualidade na linha de produção",responsibleId:"u1",responsibleName:"Maria Silva",checkerId:"u2",checkerName:"João Santos",placeId:"p1-1",placeName:"Qualidade",typeId:"corrective",typeName:"Corretiva",priorityType:q.high,startDate:"2026-03-01",endDate:"2026-04-15",duration:45,estimatedCost:15e3,causeId:"c1",causeName:"Falha de processo",description:"Implementar pontos de inspeção adicionais na linha de produção para reduzir defeitos em 30%.",justification:"Aumento de 15% nos defeitos detectados no último trimestre exige ação corretiva imediata.",statusId:r.running,percentProgress:45},gs={id:"ap-001",percentProgress:45,timeProgress:"2400",hasChildren:!1,idResponsibleUser:"u1",status:r.running,reports:[{id:"r1",percentProgress:20,timeProgress:"0800",userId:"u1",userName:"Maria Silva",date:"2026-03-10",comments:"Definição dos pontos de inspeção concluída."},{id:"r2",percentProgress:45,timeProgress:"1600",userId:"u1",userName:"Maria Silva",date:"2026-03-20",comments:"Treinamento da equipe de inspeção em andamento. 3 de 5 módulos concluídos."}]},fs=[{id:"pred-1",actionPlanId:"ap-001",predecessorId:"ap-000",predecessorName:"Levantamento de requisitos de qualidade",predecessorCode:"AC-2026-000",predecessorStatus:r.done,predecessorPercentProgress:100}],js=[{id:"cost-1",description:"Equipamento de medição",value:5200,date:"2026-03-05",userName:"Maria Silva"},{id:"cost-2",description:"Material de treinamento",value:800,date:"2026-03-12",userName:"João Santos"}],vs=[{id:"comment-1",text:"Precisamos priorizar a compra dos equipamentos de medição antes de iniciar a fase de implementação.",stringText:"Precisamos priorizar a compra dos equipamentos de medição antes de iniciar a fase de implementação.",userId:"u1",userName:"Maria Silva",userEmail:"maria@example.com",dateCreation:"2026-03-08T10:30:00"},{id:"comment-2",text:"Equipamentos já foram solicitados ao fornecedor. Previsão de entrega em 5 dias úteis.",stringText:"Equipamentos já foram solicitados ao fornecedor. Previsão de entrega em 5 dias úteis.",userId:"u2",userName:"João Santos",userEmail:"joao@example.com",dateCreation:"2026-03-09T14:15:00"},{id:"comment-3",text:"Treinamento da equipe será realizado na próxima semana. Confirmar disponibilidade de todos.",stringText:"Treinamento da equipe será realizado na próxima semana. Confirmar disponibilidade de todos.",userId:"u1",userName:"Maria Silva",userEmail:"maria@example.com",dateCreation:"2026-03-15T09:00:00",dateEdited:"2026-03-15T09:45:00"}],Cs=[{id:"h1",eventName:"create",translateEvent:"Plano de ação criado",eventDescription:"O plano de ação foi criado e está aguardando início.",icon:"📝",userName:"Maria Silva",userEmail:"maria@example.com",date:"2026-03-01T08:00:00"},{id:"h2",eventName:"status_change",translateEvent:'Status alterado para "Em andamento"',eventDescription:"O plano de ação foi iniciado.",icon:"▶️",userName:"Maria Silva",userEmail:"maria@example.com",date:"2026-03-05T09:30:00"},{id:"h3",eventName:"progress_report",translateEvent:"Progresso reportado: 20%",eventDescription:"Definição dos pontos de inspeção concluída.",icon:"📊",userName:"Maria Silva",userEmail:"maria@example.com",date:"2026-03-10T16:00:00"},{id:"h4",eventName:"progress_report",translateEvent:"Progresso reportado: 45%",eventDescription:"Treinamento da equipe em andamento.",icon:"📊",userName:"Maria Silva",userEmail:"maria@example.com",date:"2026-03-20T11:00:00",isMobileRequest:!0}],Ns=[{id:"att-1",name:"Relatório de inspeção Q1.pdf",extension:".pdf",size:2457600,status:A.done},{id:"att-2",name:"Planilha de custos.xlsx",extension:".xlsx",size:156e3,status:A.done},{id:"att-3",name:"Fotos da linha de produção.zip",extension:".zip",size:8745e3,status:A.done}];function bs(){const[s,a]=C.useState(hs),t=async i=>{await new Promise(p=>setTimeout(p,500)),a(p=>({...p,...i})),b.success("Plano de ação salvo com sucesso!")},l=async(i,p)=>{await new Promise(g=>setTimeout(g,300)),a(g=>({...g,statusId:p})),b.success("Status alterado com sucesso!")},u=async i=>{await new Promise(p=>setTimeout(p,300)),b.success(`Progresso reportado: ${i.percentProgress}%`)};return e.jsx("div",{className:"border rounded-lg overflow-hidden h-[700px]",children:e.jsx(ie,{actionPlan:s,config:{enablePredecessors:!0,enableCosts:!0,enableAttachments:!0,enableComments:!0,enableHistory:!0,hasComments:!0},users:re,places:oe,actionTypes:le,causes:ce,progress:gs,predecessors:fs,availablePredecessors:[{id:"ap-002",label:"AC-2026-002 - Auditoria interna"},{id:"ap-003",label:"AC-2026-003 - Revisão de procedimentos"}],costs:js,comments:vs,history:Cs,attachments:Ns,onSave:t,onCancel:()=>b.info("Navegação cancelada"),onDelete:async()=>b.success("Excluído"),onChangeStatus:l,onReportProgress:u,onEditProgress:async i=>b.success(`Reporte ${i.id} editado`),onDeleteProgress:async i=>b.success(`Reporte ${i} excluído`),onAddPredecessor:async i=>b.success(`Predecessor ${i} adicionado`),onRemovePredecessor:async i=>b.success(`Predecessor ${i} removido`),onAddCost:async i=>b.success(`Custo "${i.description}" adicionado`),onDeleteCost:async i=>b.success(`Custo ${i} excluído`),onAddComment:async i=>b.success("Comentário adicionado"),onEditComment:async i=>b.success(`Comentário ${i.id} editado`),onDeleteComment:async i=>b.success(`Comentário ${i} excluído`),onUploadAttachment:async i=>b.success(`Arquivo "${i.name}" enviado`),onDeleteAttachment:async i=>b.success(`Anexo ${i} excluído`),onRenameAttachment:async(i,p)=>b.success(`Anexo renomeado para "${p}"`),onDownloadAttachment:async i=>b.success(`Download do anexo ${i}`),onViewAttachment:async i=>b.success(`Visualizando anexo ${i}`)})})}function ys(){return e.jsx("div",{className:"border rounded-lg overflow-hidden h-[500px]",children:e.jsx(ie,{isNew:!0,config:{},users:re,places:oe,actionTypes:le,causes:ce,onSave:async s=>b.success(`Novo plano: ${s.name}`),onCancel:()=>b.info("Cancelado")})})}function Z(){const s=[r.waitingStart,r.running,r.effectivenessCheck,r.done,r.suspended,r.canceled];return e.jsx("div",{className:"flex flex-wrap gap-3",children:s.map(a=>e.jsx(W,{status:a},a))})}function Is(){return e.jsx(Ue,{title:"Action Plan",description:"Componente de página completa para gerenciar planos de ação. Inclui formulário com abas (Geral, Progresso, Predecessores, Custos, Comentários, Histórico, Anexos), mudança de status e reportes de progresso. As abas de Comentários, Histórico e Anexos são componentes internos portados das libs Angular (flc-comments, flc-history, flc-attachments) e são renderizados automaticamente quando habilitados via config.",component:e.jsx(Z,{}),usage:`import { ActionPlanPage, ETaskPlanStatus } from "forlogic-core"
|
|
2
|
+
|
|
3
|
+
<ActionPlanPage
|
|
4
|
+
actionPlan={actionPlan}
|
|
5
|
+
config={{
|
|
6
|
+
enablePredecessors: true,
|
|
7
|
+
enableCosts: true,
|
|
8
|
+
enableAttachments: true,
|
|
9
|
+
enableComments: true,
|
|
10
|
+
enableHistory: true,
|
|
11
|
+
}}
|
|
12
|
+
users={users}
|
|
13
|
+
places={places}
|
|
14
|
+
progress={progress}
|
|
15
|
+
comments={comments}
|
|
16
|
+
history={history}
|
|
17
|
+
attachments={attachments}
|
|
18
|
+
onSave={handleSave}
|
|
19
|
+
onCancel={() => navigate(-1)}
|
|
20
|
+
onChangeStatus={handleChangeStatus}
|
|
21
|
+
onReportProgress={handleReportProgress}
|
|
22
|
+
onAddComment={handleAddComment}
|
|
23
|
+
onUploadAttachment={handleUploadAttachment}
|
|
24
|
+
/>`,examples:[{title:"Plano de Ação Completo",description:"Exemplo interativo com todas as abas habilitadas (incluindo Comentários, Histórico e Anexos), dados mock e callbacks funcionais.",preview:e.jsx(bs,{}),code:`<ActionPlanPage
|
|
25
|
+
actionPlan={actionPlan}
|
|
26
|
+
config={{
|
|
27
|
+
enablePredecessors: true,
|
|
28
|
+
enableCosts: true,
|
|
29
|
+
enableAttachments: true,
|
|
30
|
+
enableComments: true,
|
|
31
|
+
enableHistory: true,
|
|
32
|
+
hasComments: true,
|
|
33
|
+
}}
|
|
34
|
+
users={users}
|
|
35
|
+
places={places}
|
|
36
|
+
actionTypes={actionTypes}
|
|
37
|
+
causes={causes}
|
|
38
|
+
progress={progress}
|
|
39
|
+
predecessors={predecessors}
|
|
40
|
+
costs={costs}
|
|
41
|
+
comments={comments}
|
|
42
|
+
history={history}
|
|
43
|
+
attachments={attachments}
|
|
44
|
+
onSave={handleSave}
|
|
45
|
+
onChangeStatus={handleChangeStatus}
|
|
46
|
+
onReportProgress={handleReportProgress}
|
|
47
|
+
onAddComment={handleAddComment}
|
|
48
|
+
onEditComment={handleEditComment}
|
|
49
|
+
onDeleteComment={handleDeleteComment}
|
|
50
|
+
onUploadAttachment={handleUploadAttachment}
|
|
51
|
+
onDeleteAttachment={handleDeleteAttachment}
|
|
52
|
+
onRenameAttachment={handleRenameAttachment}
|
|
53
|
+
onDownloadAttachment={handleDownloadAttachment}
|
|
54
|
+
onViewAttachment={handleViewAttachment}
|
|
55
|
+
/>`},{title:"Novo Plano de Ação",description:"Formulário limpo para criação. Apenas a aba Geral é exibida.",preview:e.jsx(ys,{}),code:`<ActionPlanPage
|
|
56
|
+
isNew
|
|
57
|
+
config={{}}
|
|
58
|
+
users={users}
|
|
59
|
+
places={places}
|
|
60
|
+
onSave={handleSave}
|
|
61
|
+
onCancel={() => navigate(-1)}
|
|
62
|
+
/>`},{title:"Status Badges",description:"Todos os status disponíveis com suas cores e labels.",preview:e.jsx(Z,{}),code:`import { ActionPlanStatusBadge, ETaskPlanStatus } from "forlogic-core"
|
|
63
|
+
|
|
64
|
+
<ActionPlanStatusBadge status={ETaskPlanStatus.running} />
|
|
65
|
+
<ActionPlanStatusBadge status={ETaskPlanStatus.done} />`}],props:[{name:"actionPlan",type:"ActionPlan | null",description:"Dados do plano de ação. null/undefined para novo."},{name:"isNew",type:"boolean",description:"Se é um novo plano (oculta tabs extras e status)."},{name:"config",type:"ActionPlanFormConfig",description:"Configuração do formulário: campos obrigatórios, visíveis, tabs habilitadas (enableComments, enableHistory, enableAttachments)."},{name:"isLoading",type:"boolean",description:"Estado de loading global."},{name:"users",type:"ActionPlanUser[]",description:"Lista de usuários para selects de responsável/verificador."},{name:"places",type:"ActionPlanPlace[]",description:"Estrutura hierárquica de locais."},{name:"actionTypes",type:"ActionPlanOption[]",description:"Tipos de ação disponíveis."},{name:"causes",type:"ActionPlanOption[]",description:"Causas disponíveis (visível quando associado a ocorrência)."},{name:"progress",type:"ActionPlanProgress",description:"Dados de progresso com histórico de reportes."},{name:"predecessors",type:"ActionPlanPredecessor[]",description:"Lista de predecessores vinculados."},{name:"costs",type:"ActionPlanCost[]",description:"Lista de custos realizados."},{name:"comments",type:"ActionPlanComment[]",description:"Lista de comentários. Cada item contém id, text, stringText, userId, userName, userEmail, dateCreation, dateEdited e userPhotoUrl opcional."},{name:"history",type:"ActionPlanHistoryItem[]",description:"Lista de eventos do histórico. Cada item contém eventName, translateEvent, eventDescription, icon, userName, userEmail, date e flag isMobileRequest."},{name:"attachments",type:"ActionPlanAttachment[]",description:"Lista de anexos. Cada item contém name, extension, size, status (EAttachmentItemStatus) e progress opcional."},{name:"onSave",type:"(data) => Promise",description:"Callback ao salvar o formulário."},{name:"onCancel",type:"() => void",description:"Callback ao cancelar."},{name:"onChangeStatus",type:"(id, status) => Promise",description:"Callback ao alterar status."},{name:"onReportProgress",type:"(data) => Promise",description:"Callback ao reportar progresso."},{name:"onAddComment",type:"(text: string) => Promise",description:"Callback ao adicionar comentário."},{name:"onEditComment",type:"(comment) => Promise",description:"Callback ao editar comentário."},{name:"onDeleteComment",type:"(commentId) => Promise",description:"Callback ao excluir comentário."},{name:"onUploadAttachment",type:"(file: File) => Promise",description:"Callback ao fazer upload de anexo."},{name:"onDeleteAttachment",type:"(attachmentId) => Promise",description:"Callback ao excluir anexo."},{name:"onRenameAttachment",type:"(id, newName) => Promise",description:"Callback ao renomear anexo."},{name:"onDownloadAttachment",type:"(attachmentId) => Promise",description:"Callback ao fazer download de anexo."},{name:"onViewAttachment",type:"(attachmentId) => Promise",description:"Callback ao visualizar anexo."},{name:"attachmentsSlot",type:"ReactNode",description:"Slot para substituir o componente padrão de anexos por um customizado."},{name:"commentsSlot",type:"ReactNode",description:"Slot para substituir o componente padrão de comentários por um customizado."},{name:"historySlot",type:"ReactNode",description:"Slot para substituir o componente padrão de histórico por um customizado."}],notes:["Os componentes internos de Comentários, Histórico e Anexos foram portados das libs Angular (flc-comments, flc-history, flc-attachments).",'Comentários suportam CRUD completo com avatar, timestamps e label "editado". @menções e Rich Text Editor serão adicionados em versão futura.','Histórico exibe timeline vertical com ícone, descrição, avatar do usuário, data/hora e indicador "via app" para requisições mobile.',"Anexos suportam upload múltiplo, barra de progresso, renomear inline, context menu (visualizar, download, excluir) e detecção de duplicatas.","Slots (attachmentsSlot, commentsSlot, historySlot) permitem substituir os componentes padrão por implementações customizadas do projeto consumidor."]})}export{Is as ActionPlanDoc};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import{j as e,aK as a,aM as i,aN as r}from"./index-DkiftrvI.js";import{C as s}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function l(){return e.jsx(s,{title:"Alert",description:"Exibe uma mensagem de destaque para chamar a atenção do usuário. O componente inclui ícone automático baseado na variante.",component:e.jsxs(a,{variant:"info",className:"max-w-md",children:[e.jsx(i,{children:"Informação"}),e.jsx(r,{children:"Esta é uma mensagem informativa para o usuário."})]}),usage:`import { Alert, AlertDescription, AlertTitle } from "forlogic-core"
|
|
2
|
+
|
|
3
|
+
<Alert variant="info">
|
|
4
|
+
<AlertTitle>Informação</AlertTitle>
|
|
5
|
+
<AlertDescription>
|
|
6
|
+
Esta é uma mensagem informativa para o usuário.
|
|
7
|
+
</AlertDescription>
|
|
8
|
+
</Alert>`,examples:[{title:"Informativo (info)",description:"Alerta neutro para informações gerais. Ícone: Info.",preview:e.jsxs(a,{variant:"info",className:"max-w-md",children:[e.jsx(i,{children:"Informação"}),e.jsx(r,{children:"Você pode adicionar componentes e dependências ao seu app usando o CLI."})]}),code:`<Alert variant="info">
|
|
9
|
+
<AlertTitle>Informação</AlertTitle>
|
|
10
|
+
<AlertDescription>
|
|
11
|
+
Você pode adicionar componentes e dependências ao seu app usando o CLI.
|
|
12
|
+
</AlertDescription>
|
|
13
|
+
</Alert>`},{title:"Alerta (warning)",description:"Alerta de atenção para avisos. Ícone: Info.",preview:e.jsxs(a,{variant:"warning",className:"max-w-md",children:[e.jsx(i,{children:"Atenção"}),e.jsx(r,{children:"Sua sessão expira em 5 minutos. Salve suas alterações."})]}),code:`<Alert variant="warning">
|
|
14
|
+
<AlertTitle>Atenção</AlertTitle>
|
|
15
|
+
<AlertDescription>
|
|
16
|
+
Sua sessão expira em 5 minutos. Salve suas alterações.
|
|
17
|
+
</AlertDescription>
|
|
18
|
+
</Alert>`},{title:"Perigo (danger)",description:"Alerta de erro ou perigo. Ícone: AlertTriangle.",preview:e.jsxs(a,{variant:"danger",className:"max-w-md",children:[e.jsx(i,{children:"Erro"}),e.jsxs(r,{children:[e.jsx("p",{children:"Não foi possível processar seu pagamento."}),e.jsxs("ul",{className:"mt-2 list-disc list-inside text-sm",children:[e.jsx("li",{children:"Verifique os dados do cartão"}),e.jsx("li",{children:"Confirme se há saldo suficiente"})]})]})]}),code:`<Alert variant="danger">
|
|
19
|
+
<AlertTitle>Erro</AlertTitle>
|
|
20
|
+
<AlertDescription>
|
|
21
|
+
<p>Não foi possível processar seu pagamento.</p>
|
|
22
|
+
<ul className="mt-2 list-disc list-inside text-sm">
|
|
23
|
+
<li>Verifique os dados do cartão</li>
|
|
24
|
+
<li>Confirme se há saldo suficiente</li>
|
|
25
|
+
</ul>
|
|
26
|
+
</AlertDescription>
|
|
27
|
+
</Alert>`},{title:"Sucesso (success)",description:"Alerta de sucesso para confirmações. Ícone: CheckCircle.",preview:e.jsxs(a,{variant:"success",className:"max-w-md",children:[e.jsx(i,{children:"Sucesso"}),e.jsx(r,{children:"Suas alterações foram salvas com sucesso."})]}),code:`<Alert variant="success">
|
|
28
|
+
<AlertTitle>Sucesso</AlertTitle>
|
|
29
|
+
<AlertDescription>
|
|
30
|
+
Suas alterações foram salvas com sucesso.
|
|
31
|
+
</AlertDescription>
|
|
32
|
+
</Alert>`},{title:"Sem ícone",description:"Use showIcon={false} para ocultar o ícone automático.",preview:e.jsxs(a,{variant:"info",showIcon:!1,className:"max-w-md",children:[e.jsx(i,{children:"Alerta sem ícone"}),e.jsx(r,{children:"Este alerta não exibe o ícone padrão da variante."})]}),code:`<Alert variant="info" showIcon={false}>
|
|
33
|
+
<AlertTitle>Alerta sem ícone</AlertTitle>
|
|
34
|
+
<AlertDescription>
|
|
35
|
+
Este alerta não exibe o ícone padrão da variante.
|
|
36
|
+
</AlertDescription>
|
|
37
|
+
</Alert>`}],props:[{name:"variant",type:'"info" | "warning" | "danger" | "success"',default:'"info"',description:"O estilo visual e ícone do alerta."},{name:"showIcon",type:"boolean",default:"true",description:"Se deve exibir o ícone padrão da variante."},{name:"className",type:"string",default:"-",description:"Classes CSS adicionais."}],accessibility:['Usa role="alert" para anunciar automaticamente aos leitores de tela',"A cor não é o único meio de transmitir informações - ícones fornecem contexto adicional","Estrutura HTML semântica com título e descrição claramente definidos","Contraste de cores adequado para acessibilidade visual"]})}export{l as AlertDoc};
|