forlogic-core 2.0.3 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/.note/memory/features/crud-defaults-batteries-included.md +1 -1
  2. package/README.md +187 -917
  3. package/dist/components/ui/dialog-wizard.d.ts +82 -0
  4. package/dist/components/ui/input-group.d.ts +1 -1
  5. package/dist/components/ui/input.d.ts +5 -23
  6. package/dist/components/ui/resizable.d.ts +1 -1
  7. package/dist/components/ui/sidebar.d.ts +1 -1
  8. package/dist/components/ui/step-selector.d.ts +11 -9
  9. package/dist/components/ui/textarea.d.ts +1 -0
  10. package/dist/crud/components/CrudTable.d.ts +3 -1
  11. package/dist/crud/createCrudPage.d.ts +2 -0
  12. package/dist/crud/hooks/useColumnManager.d.ts +3 -1
  13. package/dist/exports/ui.d.ts +1 -0
  14. package/dist/index.css +1 -1
  15. package/dist/index.css.map +1 -1
  16. package/dist/index.esm.js +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/types/sidebar.d.ts +2 -1
  19. package/dist/types.d.ts +3 -0
  20. package/docs/AUDIT_PROMPT.md +74 -0
  21. package/docs/PROJECT_KNOWLEDGE_TEMPLATE.md +117 -0
  22. package/docs/PROMPT_TEMPLATE.md +77 -0
  23. package/docs/STARTER_TEMPLATE.md +114 -0
  24. package/docs/design-system/README.md +45 -0
  25. package/docs/design-system/buttons-actions.md +433 -0
  26. package/docs/design-system/charts-dashboards.md +547 -0
  27. package/docs/design-system/crud.md +243 -0
  28. package/docs/design-system/data-display.md +360 -0
  29. package/docs/design-system/dialogs.md +588 -0
  30. package/docs/design-system/domain.md +661 -0
  31. package/docs/design-system/examples.md +275 -0
  32. package/docs/design-system/foundation.md +82 -0
  33. package/docs/design-system/infra-utils.md +36 -0
  34. package/docs/design-system/inputs.md +556 -0
  35. package/docs/design-system/layout.md +351 -0
  36. package/docs/design-system/navigation.md +604 -0
  37. package/docs/design-system/notifications-feedback.md +139 -0
  38. package/docs/design-system/platform.md +95 -0
  39. package/docs/design-system/selectors.md +424 -0
  40. package/docs/design-system/tables-grids.md +114 -0
  41. package/package.json +2 -2
  42. package/dist/assets/AccordionDoc-CGNlubG3.js +0 -31
  43. package/dist/assets/ActionButtonDoc-CYtkXR0k.js +0 -47
  44. package/dist/assets/ActionPlanDoc-BSuPRftQ.js +0 -65
  45. package/dist/assets/AlertDoc-Cpvxneqg.js +0 -37
  46. package/dist/assets/AliasUrlDoc-DIpUWf4Y.js +0 -189
  47. package/dist/assets/AppHeaderDoc-DNQErj_t.js +0 -74
  48. package/dist/assets/AppSidebarDoc-DkeQarDu.js +0 -221
  49. package/dist/assets/ApprovalFlowDoc-8YgXbhKJ.js +0 -31
  50. package/dist/assets/AuditLogDoc-BBvNcHIo.js +0 -67
  51. package/dist/assets/AuditTrailDoc-DgFHO-uo.js +0 -17
  52. package/dist/assets/AuthDoc-WIA_Aetl.js +0 -200
  53. package/dist/assets/AvatarDoc-B6go1C1T.js +0 -11
  54. package/dist/assets/BadgeDoc-BONhfqB_.js +0 -36
  55. package/dist/assets/BaseFormDoc-CuyUArcj.js +0 -169
  56. package/dist/assets/BodyContentDoc-CterHC1E.js +0 -83
  57. package/dist/assets/BreadcrumbDoc-Dwn9nLeO.js +0 -75
  58. package/dist/assets/ButtonDoc-BOjRseZT.js +0 -41
  59. package/dist/assets/ButtonGroupDoc-8IS6PPh4.js +0 -7
  60. package/dist/assets/CalendarDoc-CMwIEqgT.js +0 -81
  61. package/dist/assets/CardDoc-BZz1CVg2.js +0 -49
  62. package/dist/assets/ChartDoc-B5vZVtqD.js +0 -76
  63. package/dist/assets/CheckboxDoc-lAbYO9I5.js +0 -55
  64. package/dist/assets/ColorPickerDoc-Dpsprp4N.js +0 -10
  65. package/dist/assets/ColorsFoundationDoc-CCHeSL3p.js +0 -13
  66. package/dist/assets/ComboTreeDoc-D4dTkIt-.js +0 -46
  67. package/dist/assets/ComboboxDoc-CqqZPvZq.js +0 -134
  68. package/dist/assets/ComponentDocTemplate-CQbBhfvZ.js +0 -1
  69. package/dist/assets/ContextMenuDoc-D3jC-MVA.js +0 -182
  70. package/dist/assets/ContextsDoc-XFH0-JdS.js +0 -211
  71. package/dist/assets/CreateCrudPageDoc-CpuiWI-g.js +0 -106
  72. package/dist/assets/CrudActionBarDoc-wuBGXD9Y.js +0 -112
  73. package/dist/assets/CrudGridDoc-BYWqSXBH.js +0 -85
  74. package/dist/assets/CrudOverviewDoc-B_bk2a2t.js +0 -14
  75. package/dist/assets/CrudPrimitivesDoc-CxaTB94A.js +0 -164
  76. package/dist/assets/CrudTableDoc-Dga1VgCu.js +0 -113
  77. package/dist/assets/CustomFormFieldsDoc-C1hwwSl3.js +0 -33
  78. package/dist/assets/DashboardFormDoc-BUDCmrMl.js +0 -49
  79. package/dist/assets/DashboardGeneralViewDoc-Cyg1SIiG.js +0 -71
  80. package/dist/assets/DashboardGridDoc-BavePiRF.js +0 -49
  81. package/dist/assets/DashboardListDoc-CLyMA6UK.js +0 -37
  82. package/dist/assets/DashboardOverviewDoc-DRVvNIF1.js +0 -35
  83. package/dist/assets/DashboardPanelRendererDoc--mfwb8Nc.js +0 -60
  84. package/dist/assets/DashboardPanelsBasicDoc-BQ2V_52D.js +0 -62
  85. package/dist/assets/DashboardPanelsCartesianDoc-sy-hcVQY.js +0 -75
  86. package/dist/assets/DashboardPanelsSpecialDoc-DsIUCRRP.js +0 -83
  87. package/dist/assets/DashboardViewDoc-CtlCNlEF.js +0 -45
  88. package/dist/assets/DataListDoc-DUy88lCQ.js +0 -13
  89. package/dist/assets/DesignSystemHome-DHl9YtbH.js +0 -1
  90. package/dist/assets/DialogDoc-CMQqnTV-.js +0 -981
  91. package/dist/assets/DropdownMenuDoc-S7X9csGt.js +0 -175
  92. package/dist/assets/ElectronicSignatureDialogDoc-BfithaL_.js +0 -57
  93. package/dist/assets/EmptyStateDoc-CHGCiGIk.js +0 -35
  94. package/dist/assets/EnvironmentsDoc-DZHJZ2nm.js +0 -96
  95. package/dist/assets/ErrorBoundaryDoc-DoaAg68p.js +0 -111
  96. package/dist/assets/ExampleActionPlanPage-C0fIMZCD.js +0 -1
  97. package/dist/assets/ExampleAppDoc-DzIU81Fn.js +0 -1
  98. package/dist/assets/ExampleCard-DuLrb3t-.js +0 -1
  99. package/dist/assets/ExampleCrudReportsPage-M0pz6tdM.js +0 -1
  100. package/dist/assets/ExampleDashboardPage-CRG5r3Vw.js +0 -1
  101. package/dist/assets/ExampleIdeasPage-I84ZMLY4.js +0 -1
  102. package/dist/assets/ExampleImportWizardPage-h4YqrrSe.js +0 -1
  103. package/dist/assets/ExampleSettingsPage-CwdWqoaP.js +0 -1
  104. package/dist/assets/FileUploadDoc-9-UujFNX.js +0 -34
  105. package/dist/assets/FilterBar-DDTqqUfZ.js +0 -1
  106. package/dist/assets/FormDoc-CVES6n3d.js +0 -81
  107. package/dist/assets/FoundationOverview-DT0u11Gz.js +0 -1
  108. package/dist/assets/GridDoc-CbHFSILF.js +0 -28
  109. package/dist/assets/HooksDoc-Ctxdk6Wq.js +0 -665
  110. package/dist/assets/HoverCardDoc-8Wkaafdj.js +0 -31
  111. package/dist/assets/I18nDoc-D3Q2m7ik.js +0 -167
  112. package/dist/assets/IconPickerDoc-DZ26Gdpg.js +0 -10
  113. package/dist/assets/IconsFoundationDoc-xOxtC7CW.js +0 -33
  114. package/dist/assets/InputDoc-BhztAiuJ.js +0 -211
  115. package/dist/assets/LabelDoc-A4hmTRRV.js +0 -42
  116. package/dist/assets/LeadershipDoc-CqOSfWsP.js +0 -452
  117. package/dist/assets/MediaDoc-C78gvC8p.js +0 -459
  118. package/dist/assets/MenubarDoc-DCnmd2tO.js +0 -165
  119. package/dist/assets/ModuleAccessDoc-CmD5nHDp.js +0 -153
  120. package/dist/assets/ModulesDialogDoc-DVit1CA-.js +0 -46
  121. package/dist/assets/MultiselectPermissionsDoc-tlJMs04L.js +0 -34
  122. package/dist/assets/NavigationMenuDoc-q1fbc89j.js +0 -116
  123. package/dist/assets/OnboardingDialogDoc-3A3eBYrq.js +0 -55
  124. package/dist/assets/PaginationDoc-B8-bMz5J.js +0 -27
  125. package/dist/assets/PaginationDoc-BkGdxHL3.js +0 -98
  126. package/dist/assets/PlacesDoc-CKPO6ATs.js +0 -226
  127. package/dist/assets/PopoverDoc-CJPU4Ags.js +0 -64
  128. package/dist/assets/ProgressDoc-CpjbTL4o.js +0 -29
  129. package/dist/assets/QualiexUserFieldDoc-DDwumlRw.js +0 -149
  130. package/dist/assets/RadioGroupDoc-D6tSZz8G.js +0 -57
  131. package/dist/assets/RadiusDoc-B4xSnajw.js +0 -7
  132. package/dist/assets/ReportRequestListDoc-C0LIaU8P.js +0 -15
  133. package/dist/assets/RequiredFieldsCounterDoc-COesoSdx.js +0 -58
  134. package/dist/assets/ResizableDoc-CW0-XQuB.js +0 -104
  135. package/dist/assets/RichTextEditorDoc-C8c_XA9P.js +0 -24
  136. package/dist/assets/ScrollAreaDoc-BxtoAPaZ.js +0 -28
  137. package/dist/assets/SecurityDoc-wOVqpg2F.js +0 -204
  138. package/dist/assets/SelectDoc-C75gtY9D.js +0 -80
  139. package/dist/assets/SeparatorDoc-BjQBPB1P.js +0 -4
  140. package/dist/assets/ServicesDoc-CXTctwBl.js +0 -308
  141. package/dist/assets/ShadowsDoc-C6Lw8_x2.js +0 -9
  142. package/dist/assets/SignDoc-Bh5ZUg5x.js +0 -66
  143. package/dist/assets/SkeletonDoc-rTLGK5VE.js +0 -54
  144. package/dist/assets/SliderDoc-JMAMDub7.js +0 -41
  145. package/dist/assets/SpacingDoc-RljOrpwA.js +0 -12
  146. package/dist/assets/SplitButtonDoc-CvShUW3w.js +0 -53
  147. package/dist/assets/StepSelectorDoc-C-nAap9H.js +0 -41
  148. package/dist/assets/SwitchDoc-DLnqmkPr.js +0 -56
  149. package/dist/assets/TableDoc-B8EpWLVg.js +0 -128
  150. package/dist/assets/TabsDoc-DIBtl_uC.js +0 -42
  151. package/dist/assets/TeamSelectorDoc-B7OnCbL7.js +0 -10
  152. package/dist/assets/TermsOfUseDoc-Bb-pw08s.js +0 -16
  153. package/dist/assets/TextareaDoc-DGnqMqEC.js +0 -46
  154. package/dist/assets/ToastDoc-DjYyc7ae.js +0 -157
  155. package/dist/assets/ToggleDoc-C9ZOVjkY.js +0 -51
  156. package/dist/assets/TooltipDoc-BEx4l9-i.js +0 -58
  157. package/dist/assets/TruncatedCellDoc-BbV1bRSY.js +0 -12
  158. package/dist/assets/TypographyFoundationDoc-CUDYjRo9.js +0 -7
  159. package/dist/assets/UpdatesNotificationDoc-7nyjzLMJ.js +0 -29
  160. package/dist/assets/UsersGroupsSelectorDoc-C0KlTAL5.js +0 -18
  161. package/dist/assets/UtilitiesDoc-DGxaHVV1.js +0 -145
  162. package/dist/assets/ViewerDialogsDoc-CnTPTEz0.js +0 -1
  163. package/dist/assets/blocks-B6LrJeAM.js +0 -1
  164. package/dist/assets/building-DeVappnD.js +0 -1
  165. package/dist/assets/calendar-days-BQ0na5kM.js +0 -1
  166. package/dist/assets/check-check-C_-PJCJa.js +0 -1
  167. package/dist/assets/circle-plus-CpIcep-O.js +0 -1
  168. package/dist/assets/circle-x-jPpBPew0.js +0 -1
  169. package/dist/assets/clipboard-list-CXNPdciZ.js +0 -1
  170. package/dist/assets/cloud-upload-BEjzumjl.js +0 -1
  171. package/dist/assets/crown-CqNsQIsm.js +0 -1
  172. package/dist/assets/date-picker-BW3eGOe_.js +0 -1
  173. package/dist/assets/disabled-menu-item-C2YaMvSt.js +0 -1
  174. package/dist/assets/drawer-D5rflIcD.js +0 -3
  175. package/dist/assets/file-braces-DFb5X9so.js +0 -1
  176. package/dist/assets/file-pen-line-CyUGKkEN.js +0 -1
  177. package/dist/assets/git-branch-BcXv9mpp.js +0 -1
  178. package/dist/assets/globe-CpMIWAcv.js +0 -1
  179. package/dist/assets/hash-cQWdKjya.js +0 -1
  180. package/dist/assets/hourglass-BahQ3eDv.js +0 -1
  181. package/dist/assets/hover-card-R66N85sZ.js +0 -1
  182. package/dist/assets/iframe-dialog-V0mW5aBb.js +0 -1
  183. package/dist/assets/index-DkiftrvI.js +0 -352
  184. package/dist/assets/index-nmBjO9Th.css +0 -1
  185. package/dist/assets/life-buoy-ByXiPddz.js +0 -1
  186. package/dist/assets/loading-state-Cb5_t5uE.js +0 -1
  187. package/dist/assets/lucide-react-Cp3Yw3Zm.js +0 -1
  188. package/dist/assets/package-B3-pVvPM.js +0 -1
  189. package/dist/assets/pen-Bi_lmmKT.js +0 -1
  190. package/dist/assets/pin-DVsSl8QA.js +0 -1
  191. package/dist/assets/printer-BnJ8B6m-.js +0 -1
  192. package/dist/assets/radio-group-BHAaNGsm.js +0 -1
  193. package/dist/assets/server-CtzFTfKR.js +0 -1
  194. package/dist/assets/share-2-Dv8Do445.js +0 -1
  195. package/dist/assets/shield-check-CFXjOV_w.js +0 -1
  196. package/dist/assets/shield-x-DJTRfVux.js +0 -1
  197. package/dist/assets/slider-v9tXBSnB.js +0 -1
  198. package/dist/assets/smartphone-BSNR60L7.js +0 -1
  199. package/dist/assets/step-selector-ATTh_9Wa.js +0 -1
  200. package/dist/assets/text-align-start-qE-MbYYw.js +0 -1
  201. package/dist/assets/thumbs-up-D_XIW_uX.js +0 -1
  202. package/dist/assets/trash-DTWQwpwA.js +0 -1
  203. package/dist/assets/trending-up-jip5-leJ.js +0 -1
  204. package/dist/assets/useMockCrud-CN4vjyOZ.js +0 -1
  205. package/dist/assets/user-check-BlH3EDWK.js +0 -1
  206. package/dist/assets/user-plus-BqwXwD-c.js +0 -1
  207. package/dist/index.html +0 -33
@@ -0,0 +1,114 @@
1
+ <!-- ⚠️ ARQUIVO GERADO AUTOMATICAMENTE — NÃO EDITAR MANUALMENTE -->
2
+ <!-- Fonte: src/design-system/docs/ | Regenerar: npx tsx scripts/generate-ds-docs.ts -->
3
+
4
+ # Data Grid
5
+
6
+ Categoria: **Data Grid** | 3 componentes
7
+
8
+ ### CrudTable
9
+
10
+ Componente de tabela CRUD completo com ordenação, seleção, resize de colunas, ações em massa e paginação integrada com useCrud.
11
+
12
+ > Fonte: `src\design-system\docs\components\crud\CrudTableDoc.tsx`
13
+
14
+ ---
15
+
16
+ ### Ellipsis Text (TruncatedCell)
17
+
18
+ Componente utilitário que trunca texto longo e exibe tooltip automático quando o conteúdo está cortado. Também disponível como EllipsisText.
19
+
20
+ **Uso:**
21
+ ```tsx
22
+ import { TruncatedCell } from 'forlogic-core';
23
+ // 💡 Alias disponível: import { EllipsisText } from 'forlogic-core';
24
+
25
+ <td className="max-w-[200px]">
26
+ <TruncatedCell>
27
+ Texto que pode ser muito longo...
28
+ </TruncatedCell>
29
+ </td>
30
+
31
+ // Com className customizada
32
+ <TruncatedCell className="text-muted-foreground">
33
+ {item.description}
34
+ </TruncatedCell>
35
+ ```
36
+
37
+ **Props:**
38
+ | Prop | Tipo | Padrão | Descrição |
39
+ |------|------|--------|-----------|
40
+ | `children` | `ReactNode` | - | Conteúdo a ser renderizado (e truncado se necessário) |
41
+ | `className` | `string` | - | Classes CSS adicionais para o container |
42
+
43
+ **Acessibilidade:**
44
+ - Tooltip automático garante que o conteúdo completo é acessível via hover/focus
45
+ - Usa role tooltip com aria para leitores de tela
46
+
47
+ **Notas:**
48
+ - 💡 Alias: Também disponível como
49
+ - — import { EllipsisText } from
50
+ - ,
51
+
52
+ - ,
53
+
54
+ - ,
55
+
56
+
57
+ > Fonte: `src\design-system\docs\components\TruncatedCellDoc.tsx`
58
+
59
+ ---
60
+
61
+ ### Accordion & Collapsible
62
+
63
+ Componentes de expansão/colapso para revelar conteúdo. Accordion para múltiplos itens, Collapsible para item único.
64
+
65
+ **Uso:**
66
+ ```tsx
67
+ import {
68
+ Accordion,
69
+ AccordionContent,
70
+ AccordionItem,
71
+ AccordionTrigger,
72
+ } from "forlogic-core"
73
+
74
+ <Accordion type="single" collapsible>
75
+ <AccordionItem value="item-1">
76
+ <AccordionTrigger>Is it accessible?</AccordionTrigger>
77
+ <AccordionContent>
78
+ Yes. It adheres to the WAI-ARIA design pattern.
79
+ </AccordionContent>
80
+ </AccordionItem>
81
+ </Accordion>
82
+ ```
83
+
84
+ **Props:**
85
+ | Prop | Tipo | Padrão | Descrição |
86
+ |------|------|--------|-----------|
87
+ | `collapsible` | `boolean` | false | Accordion: Quando type é |
88
+
89
+ **Exemplos:**
90
+ ```tsx
91
+ <Accordion type=
92
+ ```
93
+ ```tsx
94
+ import {
95
+ Collapsible,
96
+ CollapsibleContent,
97
+ CollapsibleTrigger,
98
+ } from
99
+ ```
100
+
101
+ **Acessibilidade:**
102
+ - Acessível por teclado - Espaço ou Enter para alternar
103
+ - Teclas de seta para navegar entre itens do accordion
104
+ - Suporte ARIA completo com roles e estados adequados
105
+ - Gerenciamento de foco e indicadores de foco visíveis
106
+
107
+ **Notas:**
108
+ - **Accordion** é ideal para FAQs e listas de perguntas frequentes
109
+ - **Collapsible** é melhor para um único elemento expansível
110
+ - Ambos suportam animações suaves de abertura/fechamento
111
+
112
+ > Fonte: `src\design-system\docs\components\AccordionDoc.tsx`
113
+
114
+ ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forlogic-core",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -36,7 +36,7 @@
36
36
  "dev": "vite",
37
37
  "build": "vite build",
38
38
  "build:dev": "vite build --mode development",
39
- "build:lib": "rollup -c",
39
+ "build:lib": "npx tsx scripts/generate-ds-docs.ts & rollup -c",
40
40
  "lint": "eslint .",
41
41
  "preview": "vite preview"
42
42
  },
@@ -1,31 +0,0 @@
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};
@@ -1,47 +0,0 @@
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};
@@ -1,65 +0,0 @@
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};
@@ -1,37 +0,0 @@
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};