forlogic-core 2.0.4 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.note/memory/features/crud-defaults-batteries-included.md +1 -1
- package/dist/auth/services/TokenManager.d.ts +0 -1
- package/dist/components/ui/dialog-wizard.d.ts +82 -0
- package/dist/components/ui/input-group.d.ts +1 -1
- package/dist/components/ui/input.d.ts +5 -23
- package/dist/components/ui/resizable.d.ts +1 -1
- package/dist/components/ui/sidebar.d.ts +1 -1
- package/dist/components/ui/step-selector.d.ts +11 -9
- package/dist/components/ui/textarea.d.ts +1 -0
- package/dist/crud/components/CrudTable.d.ts +3 -1
- package/dist/crud/createCrudPage.d.ts +2 -0
- package/dist/crud/hooks/useColumnManager.d.ts +3 -1
- package/dist/exports/ui.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/types.d.ts +3 -0
- package/docs/design-system/README.md +2 -2
- package/docs/design-system/buttons-actions.md +6 -0
- package/docs/design-system/domain.md +10 -0
- package/docs/design-system/inputs.md +20 -0
- package/docs/design-system/navigation.md +5 -0
- package/docs/design-system/notifications-feedback.md +2 -0
- package/package.json +1 -1
- package/dist/assets/AccordionDoc-CGNlubG3.js +0 -31
- package/dist/assets/ActionButtonDoc-CYtkXR0k.js +0 -47
- package/dist/assets/ActionPlanDoc-BSuPRftQ.js +0 -65
- package/dist/assets/AlertDoc-Cpvxneqg.js +0 -37
- package/dist/assets/AliasUrlDoc-DIpUWf4Y.js +0 -189
- package/dist/assets/AppHeaderDoc-DNQErj_t.js +0 -74
- package/dist/assets/AppSidebarDoc-DkeQarDu.js +0 -221
- package/dist/assets/ApprovalFlowDoc-8YgXbhKJ.js +0 -31
- package/dist/assets/AuditLogDoc-BBvNcHIo.js +0 -67
- package/dist/assets/AuditTrailDoc-DgFHO-uo.js +0 -17
- package/dist/assets/AuthDoc-WIA_Aetl.js +0 -200
- package/dist/assets/AvatarDoc-B6go1C1T.js +0 -11
- package/dist/assets/BadgeDoc-BONhfqB_.js +0 -36
- package/dist/assets/BaseFormDoc-CuyUArcj.js +0 -169
- package/dist/assets/BodyContentDoc-CterHC1E.js +0 -83
- package/dist/assets/BreadcrumbDoc-Dwn9nLeO.js +0 -75
- package/dist/assets/ButtonDoc-BOjRseZT.js +0 -41
- package/dist/assets/ButtonGroupDoc-8IS6PPh4.js +0 -7
- package/dist/assets/CalendarDoc-CMwIEqgT.js +0 -81
- package/dist/assets/CardDoc-BZz1CVg2.js +0 -49
- package/dist/assets/ChartDoc-B5vZVtqD.js +0 -76
- package/dist/assets/CheckboxDoc-lAbYO9I5.js +0 -55
- package/dist/assets/ColorPickerDoc-Dpsprp4N.js +0 -10
- package/dist/assets/ColorsFoundationDoc-CCHeSL3p.js +0 -13
- package/dist/assets/ComboTreeDoc-D4dTkIt-.js +0 -46
- package/dist/assets/ComboboxDoc-CqqZPvZq.js +0 -134
- package/dist/assets/ComponentDocTemplate-CQbBhfvZ.js +0 -1
- package/dist/assets/ContextMenuDoc-D3jC-MVA.js +0 -182
- package/dist/assets/ContextsDoc-XFH0-JdS.js +0 -211
- package/dist/assets/CreateCrudPageDoc-CpuiWI-g.js +0 -106
- package/dist/assets/CrudActionBarDoc-wuBGXD9Y.js +0 -112
- package/dist/assets/CrudGridDoc-BYWqSXBH.js +0 -85
- package/dist/assets/CrudOverviewDoc-B_bk2a2t.js +0 -14
- package/dist/assets/CrudPrimitivesDoc-CxaTB94A.js +0 -164
- package/dist/assets/CrudTableDoc-Dga1VgCu.js +0 -113
- package/dist/assets/CustomFormFieldsDoc-C1hwwSl3.js +0 -33
- package/dist/assets/DashboardFormDoc-BUDCmrMl.js +0 -49
- package/dist/assets/DashboardGeneralViewDoc-Cyg1SIiG.js +0 -71
- package/dist/assets/DashboardGridDoc-BavePiRF.js +0 -49
- package/dist/assets/DashboardListDoc-CLyMA6UK.js +0 -37
- package/dist/assets/DashboardOverviewDoc-DRVvNIF1.js +0 -35
- package/dist/assets/DashboardPanelRendererDoc--mfwb8Nc.js +0 -60
- package/dist/assets/DashboardPanelsBasicDoc-BQ2V_52D.js +0 -62
- package/dist/assets/DashboardPanelsCartesianDoc-sy-hcVQY.js +0 -75
- package/dist/assets/DashboardPanelsSpecialDoc-DsIUCRRP.js +0 -83
- package/dist/assets/DashboardViewDoc-CtlCNlEF.js +0 -45
- package/dist/assets/DataListDoc-DUy88lCQ.js +0 -13
- package/dist/assets/DesignSystemHome-DHl9YtbH.js +0 -1
- package/dist/assets/DialogDoc-CMQqnTV-.js +0 -981
- package/dist/assets/DropdownMenuDoc-S7X9csGt.js +0 -175
- package/dist/assets/ElectronicSignatureDialogDoc-BfithaL_.js +0 -57
- package/dist/assets/EmptyStateDoc-CHGCiGIk.js +0 -35
- package/dist/assets/EnvironmentsDoc-DZHJZ2nm.js +0 -96
- package/dist/assets/ErrorBoundaryDoc-DoaAg68p.js +0 -111
- package/dist/assets/ExampleActionPlanPage-C0fIMZCD.js +0 -1
- package/dist/assets/ExampleAppDoc-DzIU81Fn.js +0 -1
- package/dist/assets/ExampleCard-DuLrb3t-.js +0 -1
- package/dist/assets/ExampleCrudReportsPage-M0pz6tdM.js +0 -1
- package/dist/assets/ExampleDashboardPage-CRG5r3Vw.js +0 -1
- package/dist/assets/ExampleIdeasPage-I84ZMLY4.js +0 -1
- package/dist/assets/ExampleImportWizardPage-h4YqrrSe.js +0 -1
- package/dist/assets/ExampleSettingsPage-CwdWqoaP.js +0 -1
- package/dist/assets/FileUploadDoc-9-UujFNX.js +0 -34
- package/dist/assets/FilterBar-DDTqqUfZ.js +0 -1
- package/dist/assets/FormDoc-CVES6n3d.js +0 -81
- package/dist/assets/FoundationOverview-DT0u11Gz.js +0 -1
- package/dist/assets/GridDoc-CbHFSILF.js +0 -28
- package/dist/assets/HooksDoc-Ctxdk6Wq.js +0 -665
- package/dist/assets/HoverCardDoc-8Wkaafdj.js +0 -31
- package/dist/assets/I18nDoc-D3Q2m7ik.js +0 -167
- package/dist/assets/IconPickerDoc-DZ26Gdpg.js +0 -10
- package/dist/assets/IconsFoundationDoc-xOxtC7CW.js +0 -33
- package/dist/assets/InputDoc-BhztAiuJ.js +0 -211
- package/dist/assets/LabelDoc-A4hmTRRV.js +0 -42
- package/dist/assets/LeadershipDoc-CqOSfWsP.js +0 -452
- package/dist/assets/MediaDoc-C78gvC8p.js +0 -459
- package/dist/assets/MenubarDoc-DCnmd2tO.js +0 -165
- package/dist/assets/ModuleAccessDoc-CmD5nHDp.js +0 -153
- package/dist/assets/ModulesDialogDoc-DVit1CA-.js +0 -46
- package/dist/assets/MultiselectPermissionsDoc-tlJMs04L.js +0 -34
- package/dist/assets/NavigationMenuDoc-q1fbc89j.js +0 -116
- package/dist/assets/OnboardingDialogDoc-3A3eBYrq.js +0 -55
- package/dist/assets/PaginationDoc-B8-bMz5J.js +0 -27
- package/dist/assets/PaginationDoc-BkGdxHL3.js +0 -98
- package/dist/assets/PlacesDoc-CKPO6ATs.js +0 -226
- package/dist/assets/PopoverDoc-CJPU4Ags.js +0 -64
- package/dist/assets/ProgressDoc-CpjbTL4o.js +0 -29
- package/dist/assets/QualiexUserFieldDoc-DDwumlRw.js +0 -149
- package/dist/assets/RadioGroupDoc-D6tSZz8G.js +0 -57
- package/dist/assets/RadiusDoc-B4xSnajw.js +0 -7
- package/dist/assets/ReportRequestListDoc-C0LIaU8P.js +0 -15
- package/dist/assets/RequiredFieldsCounterDoc-COesoSdx.js +0 -58
- package/dist/assets/ResizableDoc-CW0-XQuB.js +0 -104
- package/dist/assets/RichTextEditorDoc-C8c_XA9P.js +0 -24
- package/dist/assets/ScrollAreaDoc-BxtoAPaZ.js +0 -28
- package/dist/assets/SecurityDoc-wOVqpg2F.js +0 -204
- package/dist/assets/SelectDoc-C75gtY9D.js +0 -80
- package/dist/assets/SeparatorDoc-BjQBPB1P.js +0 -4
- package/dist/assets/ServicesDoc-CXTctwBl.js +0 -308
- package/dist/assets/ShadowsDoc-C6Lw8_x2.js +0 -9
- package/dist/assets/SignDoc-Bh5ZUg5x.js +0 -66
- package/dist/assets/SkeletonDoc-rTLGK5VE.js +0 -54
- package/dist/assets/SliderDoc-JMAMDub7.js +0 -41
- package/dist/assets/SpacingDoc-RljOrpwA.js +0 -12
- package/dist/assets/SplitButtonDoc-CvShUW3w.js +0 -53
- package/dist/assets/StepSelectorDoc-C-nAap9H.js +0 -41
- package/dist/assets/SwitchDoc-DLnqmkPr.js +0 -56
- package/dist/assets/TableDoc-B8EpWLVg.js +0 -128
- package/dist/assets/TabsDoc-DIBtl_uC.js +0 -42
- package/dist/assets/TeamSelectorDoc-B7OnCbL7.js +0 -10
- package/dist/assets/TermsOfUseDoc-Bb-pw08s.js +0 -16
- package/dist/assets/TextareaDoc-DGnqMqEC.js +0 -46
- package/dist/assets/ToastDoc-DjYyc7ae.js +0 -157
- package/dist/assets/ToggleDoc-C9ZOVjkY.js +0 -51
- package/dist/assets/TooltipDoc-BEx4l9-i.js +0 -58
- package/dist/assets/TruncatedCellDoc-BbV1bRSY.js +0 -12
- package/dist/assets/TypographyFoundationDoc-CUDYjRo9.js +0 -7
- package/dist/assets/UpdatesNotificationDoc-7nyjzLMJ.js +0 -29
- package/dist/assets/UsersGroupsSelectorDoc-C0KlTAL5.js +0 -18
- package/dist/assets/UtilitiesDoc-DGxaHVV1.js +0 -145
- package/dist/assets/ViewerDialogsDoc-CnTPTEz0.js +0 -1
- package/dist/assets/blocks-B6LrJeAM.js +0 -1
- package/dist/assets/building-DeVappnD.js +0 -1
- package/dist/assets/calendar-days-BQ0na5kM.js +0 -1
- package/dist/assets/check-check-C_-PJCJa.js +0 -1
- package/dist/assets/circle-plus-CpIcep-O.js +0 -1
- package/dist/assets/circle-x-jPpBPew0.js +0 -1
- package/dist/assets/clipboard-list-CXNPdciZ.js +0 -1
- package/dist/assets/cloud-upload-BEjzumjl.js +0 -1
- package/dist/assets/crown-CqNsQIsm.js +0 -1
- package/dist/assets/date-picker-BW3eGOe_.js +0 -1
- package/dist/assets/disabled-menu-item-C2YaMvSt.js +0 -1
- package/dist/assets/drawer-D5rflIcD.js +0 -3
- package/dist/assets/file-braces-DFb5X9so.js +0 -1
- package/dist/assets/file-pen-line-CyUGKkEN.js +0 -1
- package/dist/assets/git-branch-BcXv9mpp.js +0 -1
- package/dist/assets/globe-CpMIWAcv.js +0 -1
- package/dist/assets/hash-cQWdKjya.js +0 -1
- package/dist/assets/hourglass-BahQ3eDv.js +0 -1
- package/dist/assets/hover-card-R66N85sZ.js +0 -1
- package/dist/assets/iframe-dialog-V0mW5aBb.js +0 -1
- package/dist/assets/index-DkiftrvI.js +0 -352
- package/dist/assets/index-nmBjO9Th.css +0 -1
- package/dist/assets/life-buoy-ByXiPddz.js +0 -1
- package/dist/assets/loading-state-Cb5_t5uE.js +0 -1
- package/dist/assets/lucide-react-Cp3Yw3Zm.js +0 -1
- package/dist/assets/package-B3-pVvPM.js +0 -1
- package/dist/assets/pen-Bi_lmmKT.js +0 -1
- package/dist/assets/pin-DVsSl8QA.js +0 -1
- package/dist/assets/printer-BnJ8B6m-.js +0 -1
- package/dist/assets/radio-group-BHAaNGsm.js +0 -1
- package/dist/assets/server-CtzFTfKR.js +0 -1
- package/dist/assets/share-2-Dv8Do445.js +0 -1
- package/dist/assets/shield-check-CFXjOV_w.js +0 -1
- package/dist/assets/shield-x-DJTRfVux.js +0 -1
- package/dist/assets/slider-v9tXBSnB.js +0 -1
- package/dist/assets/smartphone-BSNR60L7.js +0 -1
- package/dist/assets/step-selector-ATTh_9Wa.js +0 -1
- package/dist/assets/text-align-start-qE-MbYYw.js +0 -1
- package/dist/assets/thumbs-up-D_XIW_uX.js +0 -1
- package/dist/assets/trash-DTWQwpwA.js +0 -1
- package/dist/assets/trending-up-jip5-leJ.js +0 -1
- package/dist/assets/useMockCrud-CN4vjyOZ.js +0 -1
- package/dist/assets/user-check-BlH3EDWK.js +0 -1
- package/dist/assets/user-plus-BqwXwD-c.js +0 -1
- package/dist/index.html +0 -33
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import{j as e,r as u,fh as C,fi as c,fj as d,fk as M,fl as o,fm as r,fn as n,fo as h,fp as a,fq as t,fr as i,fs as s,ft as x}from"./index-DkiftrvI.js";import{C as g}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";function I(){return e.jsxs(C,{children:[e.jsx(c,{className:"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm",children:"Clique com o botão direito aqui"}),e.jsxs(d,{className:"w-64",children:[e.jsxs(t,{inset:!0,children:["Voltar",e.jsx(n,{children:"⌘["})]}),e.jsxs(t,{inset:!0,disabled:!0,children:["Avançar",e.jsx(n,{children:"⌘]"})]}),e.jsxs(t,{inset:!0,children:["Recarregar",e.jsx(n,{children:"⌘R"})]}),e.jsxs(i,{children:[e.jsx(s,{inset:!0,children:"Mais Ferramentas"}),e.jsxs(x,{className:"w-48",children:[e.jsxs(t,{children:["Salvar Página Como...",e.jsx(n,{children:"⇧⌘S"})]}),e.jsx(t,{children:"Criar Atalho..."}),e.jsx(t,{children:"Nomear Janela..."}),e.jsx(o,{}),e.jsx(t,{children:"Ferramentas do Desenvolvedor"})]})]}),e.jsx(o,{}),e.jsxs(r,{checked:!0,children:["Mostrar Barra de Favoritos",e.jsx(n,{children:"⌘⇧B"})]}),e.jsx(r,{children:"Mostrar URLs Completas"}),e.jsx(o,{}),e.jsxs(h,{value:"pedro",children:[e.jsx(M,{inset:!0,children:"Pessoas"}),e.jsx(a,{value:"pedro",children:"Pedro Duarte"}),e.jsx(a,{value:"colm",children:"Colm Tuite"})]})]})]})}function f(){const[m,l]=u.useState(!0),[p,b]=u.useState(!1),[S,j]=u.useState(!1);return e.jsxs(C,{children:[e.jsx(c,{className:"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm",children:"Clique direito para opções de visualização"}),e.jsxs(d,{className:"w-64",children:[e.jsx(M,{inset:!0,children:"Aparência"}),e.jsx(o,{}),e.jsxs(r,{checked:m,onCheckedChange:l,children:["Barra de Status",e.jsx(n,{children:"⌘⇧S"})]}),e.jsx(r,{checked:p,onCheckedChange:b,children:"Barra de Atividades"}),e.jsxs(r,{checked:S,onCheckedChange:j,children:["Painel",e.jsx(n,{children:"⌘J"})]})]})]})}function v(){const[m,l]=u.useState("bottom");return e.jsxs(C,{children:[e.jsx(c,{className:"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm",children:"Clique direito para posição do painel"}),e.jsxs(d,{className:"w-48",children:[e.jsx(M,{inset:!0,children:"Posição do Painel"}),e.jsx(o,{}),e.jsxs(h,{value:m,onValueChange:l,children:[e.jsx(a,{value:"top",children:"Superior"}),e.jsx(a,{value:"bottom",children:"Inferior"}),e.jsx(a,{value:"right",children:"Direita"})]})]})]})}function w(){return e.jsxs(C,{children:[e.jsx(c,{className:"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm",children:"Clique direito para ver submenus"}),e.jsxs(d,{className:"w-64",children:[e.jsx(t,{inset:!0,children:"Novo Arquivo"}),e.jsx(t,{inset:!0,children:"Nova Pasta"}),e.jsx(o,{}),e.jsxs(i,{children:[e.jsx(s,{inset:!0,children:"Compartilhar"}),e.jsxs(x,{className:"w-48",children:[e.jsx(t,{children:"Email"}),e.jsx(t,{children:"Mensagem"}),e.jsx(t,{children:"Slack"}),e.jsx(o,{}),e.jsxs(i,{children:[e.jsx(s,{children:"Redes Sociais"}),e.jsxs(x,{className:"w-48",children:[e.jsx(t,{children:"Twitter"}),e.jsx(t,{children:"Facebook"}),e.jsx(t,{children:"LinkedIn"})]})]})]})]}),e.jsxs(i,{children:[e.jsx(s,{inset:!0,children:"Exportar"}),e.jsxs(x,{className:"w-48",children:[e.jsx(t,{children:"PDF"}),e.jsx(t,{children:"PNG"}),e.jsx(t,{children:"SVG"})]})]})]})]})}const k=`import {
|
|
2
|
-
ContextMenu,
|
|
3
|
-
ContextMenuContent,
|
|
4
|
-
ContextMenuItem,
|
|
5
|
-
ContextMenuTrigger,
|
|
6
|
-
ContextMenuCheckboxItem,
|
|
7
|
-
ContextMenuRadioGroup,
|
|
8
|
-
ContextMenuRadioItem,
|
|
9
|
-
ContextMenuLabel,
|
|
10
|
-
ContextMenuSeparator,
|
|
11
|
-
ContextMenuShortcut,
|
|
12
|
-
ContextMenuSub,
|
|
13
|
-
ContextMenuSubContent,
|
|
14
|
-
ContextMenuSubTrigger,
|
|
15
|
-
} from "forlogic-core"
|
|
16
|
-
|
|
17
|
-
<ContextMenu>
|
|
18
|
-
<ContextMenuTrigger className="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed">
|
|
19
|
-
Clique com o botão direito aqui
|
|
20
|
-
</ContextMenuTrigger>
|
|
21
|
-
<ContextMenuContent className="w-64">
|
|
22
|
-
<ContextMenuItem inset>
|
|
23
|
-
Voltar
|
|
24
|
-
<ContextMenuShortcut>⌘[</ContextMenuShortcut>
|
|
25
|
-
</ContextMenuItem>
|
|
26
|
-
<ContextMenuItem inset disabled>
|
|
27
|
-
Avançar
|
|
28
|
-
<ContextMenuShortcut>⌘]</ContextMenuShortcut>
|
|
29
|
-
</ContextMenuItem>
|
|
30
|
-
<ContextMenuItem inset>
|
|
31
|
-
Recarregar
|
|
32
|
-
<ContextMenuShortcut>⌘R</ContextMenuShortcut>
|
|
33
|
-
</ContextMenuItem>
|
|
34
|
-
<ContextMenuSub>
|
|
35
|
-
<ContextMenuSubTrigger inset>Mais Ferramentas</ContextMenuSubTrigger>
|
|
36
|
-
<ContextMenuSubContent className="w-48">
|
|
37
|
-
<ContextMenuItem>
|
|
38
|
-
Salvar Página Como...
|
|
39
|
-
<ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>
|
|
40
|
-
</ContextMenuItem>
|
|
41
|
-
<ContextMenuItem>Criar Atalho...</ContextMenuItem>
|
|
42
|
-
<ContextMenuItem>Nomear Janela...</ContextMenuItem>
|
|
43
|
-
<ContextMenuSeparator />
|
|
44
|
-
<ContextMenuItem>Ferramentas do Desenvolvedor</ContextMenuItem>
|
|
45
|
-
</ContextMenuSubContent>
|
|
46
|
-
</ContextMenuSub>
|
|
47
|
-
<ContextMenuSeparator />
|
|
48
|
-
<ContextMenuCheckboxItem checked>
|
|
49
|
-
Mostrar Barra de Favoritos
|
|
50
|
-
<ContextMenuShortcut>⌘⇧B</ContextMenuShortcut>
|
|
51
|
-
</ContextMenuCheckboxItem>
|
|
52
|
-
<ContextMenuCheckboxItem>Mostrar URLs Completas</ContextMenuCheckboxItem>
|
|
53
|
-
<ContextMenuSeparator />
|
|
54
|
-
<ContextMenuRadioGroup value="pedro">
|
|
55
|
-
<ContextMenuLabel inset>Pessoas</ContextMenuLabel>
|
|
56
|
-
<ContextMenuRadioItem value="pedro">Pedro Duarte</ContextMenuRadioItem>
|
|
57
|
-
<ContextMenuRadioItem value="colm">Colm Tuite</ContextMenuRadioItem>
|
|
58
|
-
</ContextMenuRadioGroup>
|
|
59
|
-
</ContextMenuContent>
|
|
60
|
-
</ContextMenu>`,R=`import { useState } from "react"
|
|
61
|
-
import {
|
|
62
|
-
ContextMenu,
|
|
63
|
-
ContextMenuCheckboxItem,
|
|
64
|
-
ContextMenuContent,
|
|
65
|
-
ContextMenuLabel,
|
|
66
|
-
ContextMenuSeparator,
|
|
67
|
-
ContextMenuShortcut,
|
|
68
|
-
ContextMenuTrigger,
|
|
69
|
-
} from "forlogic-core"
|
|
70
|
-
|
|
71
|
-
function ContextMenuWithCheckbox() {
|
|
72
|
-
const [showStatusBar, setShowStatusBar] = useState(true)
|
|
73
|
-
const [showActivityBar, setShowActivityBar] = useState(false)
|
|
74
|
-
const [showPanel, setShowPanel] = useState(false)
|
|
75
|
-
|
|
76
|
-
return (
|
|
77
|
-
<ContextMenu>
|
|
78
|
-
<ContextMenuTrigger className="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed">
|
|
79
|
-
Clique direito para opções de visualização
|
|
80
|
-
</ContextMenuTrigger>
|
|
81
|
-
<ContextMenuContent className="w-64">
|
|
82
|
-
<ContextMenuLabel inset>Aparência</ContextMenuLabel>
|
|
83
|
-
<ContextMenuSeparator />
|
|
84
|
-
<ContextMenuCheckboxItem
|
|
85
|
-
checked={showStatusBar}
|
|
86
|
-
onCheckedChange={setShowStatusBar}
|
|
87
|
-
>
|
|
88
|
-
Barra de Status
|
|
89
|
-
<ContextMenuShortcut>⌘⇧S</ContextMenuShortcut>
|
|
90
|
-
</ContextMenuCheckboxItem>
|
|
91
|
-
<ContextMenuCheckboxItem
|
|
92
|
-
checked={showActivityBar}
|
|
93
|
-
onCheckedChange={setShowActivityBar}
|
|
94
|
-
>
|
|
95
|
-
Barra de Atividades
|
|
96
|
-
</ContextMenuCheckboxItem>
|
|
97
|
-
<ContextMenuCheckboxItem
|
|
98
|
-
checked={showPanel}
|
|
99
|
-
onCheckedChange={setShowPanel}
|
|
100
|
-
>
|
|
101
|
-
Painel
|
|
102
|
-
<ContextMenuShortcut>⌘J</ContextMenuShortcut>
|
|
103
|
-
</ContextMenuCheckboxItem>
|
|
104
|
-
</ContextMenuContent>
|
|
105
|
-
</ContextMenu>
|
|
106
|
-
)
|
|
107
|
-
}`,N=`import { useState } from "react"
|
|
108
|
-
import {
|
|
109
|
-
ContextMenu,
|
|
110
|
-
ContextMenuContent,
|
|
111
|
-
ContextMenuLabel,
|
|
112
|
-
ContextMenuRadioGroup,
|
|
113
|
-
ContextMenuRadioItem,
|
|
114
|
-
ContextMenuSeparator,
|
|
115
|
-
ContextMenuTrigger,
|
|
116
|
-
} from "forlogic-core"
|
|
117
|
-
|
|
118
|
-
function ContextMenuWithRadio() {
|
|
119
|
-
const [position, setPosition] = useState("bottom")
|
|
120
|
-
|
|
121
|
-
return (
|
|
122
|
-
<ContextMenu>
|
|
123
|
-
<ContextMenuTrigger className="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed">
|
|
124
|
-
Clique direito para posição do painel
|
|
125
|
-
</ContextMenuTrigger>
|
|
126
|
-
<ContextMenuContent className="w-48">
|
|
127
|
-
<ContextMenuLabel inset>Posição do Painel</ContextMenuLabel>
|
|
128
|
-
<ContextMenuSeparator />
|
|
129
|
-
<ContextMenuRadioGroup value={position} onValueChange={setPosition}>
|
|
130
|
-
<ContextMenuRadioItem value="top">Superior</ContextMenuRadioItem>
|
|
131
|
-
<ContextMenuRadioItem value="bottom">Inferior</ContextMenuRadioItem>
|
|
132
|
-
<ContextMenuRadioItem value="right">Direita</ContextMenuRadioItem>
|
|
133
|
-
</ContextMenuRadioGroup>
|
|
134
|
-
</ContextMenuContent>
|
|
135
|
-
</ContextMenu>
|
|
136
|
-
)
|
|
137
|
-
}`,T=`import {
|
|
138
|
-
ContextMenu,
|
|
139
|
-
ContextMenuContent,
|
|
140
|
-
ContextMenuItem,
|
|
141
|
-
ContextMenuSeparator,
|
|
142
|
-
ContextMenuSub,
|
|
143
|
-
ContextMenuSubContent,
|
|
144
|
-
ContextMenuSubTrigger,
|
|
145
|
-
ContextMenuTrigger,
|
|
146
|
-
} from "forlogic-core"
|
|
147
|
-
|
|
148
|
-
<ContextMenu>
|
|
149
|
-
<ContextMenuTrigger className="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed">
|
|
150
|
-
Clique direito para ver submenus
|
|
151
|
-
</ContextMenuTrigger>
|
|
152
|
-
<ContextMenuContent className="w-64">
|
|
153
|
-
<ContextMenuItem inset>Novo Arquivo</ContextMenuItem>
|
|
154
|
-
<ContextMenuItem inset>Nova Pasta</ContextMenuItem>
|
|
155
|
-
<ContextMenuSeparator />
|
|
156
|
-
<ContextMenuSub>
|
|
157
|
-
<ContextMenuSubTrigger inset>Compartilhar</ContextMenuSubTrigger>
|
|
158
|
-
<ContextMenuSubContent className="w-48">
|
|
159
|
-
<ContextMenuItem>Email</ContextMenuItem>
|
|
160
|
-
<ContextMenuItem>Mensagem</ContextMenuItem>
|
|
161
|
-
<ContextMenuItem>Slack</ContextMenuItem>
|
|
162
|
-
<ContextMenuSeparator />
|
|
163
|
-
<ContextMenuSub>
|
|
164
|
-
<ContextMenuSubTrigger>Redes Sociais</ContextMenuSubTrigger>
|
|
165
|
-
<ContextMenuSubContent className="w-48">
|
|
166
|
-
<ContextMenuItem>Twitter</ContextMenuItem>
|
|
167
|
-
<ContextMenuItem>Facebook</ContextMenuItem>
|
|
168
|
-
<ContextMenuItem>LinkedIn</ContextMenuItem>
|
|
169
|
-
</ContextMenuSubContent>
|
|
170
|
-
</ContextMenuSub>
|
|
171
|
-
</ContextMenuSubContent>
|
|
172
|
-
</ContextMenuSub>
|
|
173
|
-
<ContextMenuSub>
|
|
174
|
-
<ContextMenuSubTrigger inset>Exportar</ContextMenuSubTrigger>
|
|
175
|
-
<ContextMenuSubContent className="w-48">
|
|
176
|
-
<ContextMenuItem>PDF</ContextMenuItem>
|
|
177
|
-
<ContextMenuItem>PNG</ContextMenuItem>
|
|
178
|
-
<ContextMenuItem>SVG</ContextMenuItem>
|
|
179
|
-
</ContextMenuSubContent>
|
|
180
|
-
</ContextMenuSub>
|
|
181
|
-
</ContextMenuContent>
|
|
182
|
-
</ContextMenu>`;function q(){return e.jsx(g,{title:"Context Menu",description:"Exibe um menu ao usuário — como um conjunto de ações ou funções — acionado por um clique com o botão direito do mouse.",component:e.jsx(I,{}),usage:k,examples:[{title:"Com Checkbox Items",description:"Menu de contexto com itens de seleção múltipla usando checkbox.",preview:e.jsx(f,{}),code:R},{title:"Com Radio Items",description:"Menu de contexto com seleção única usando radio buttons.",preview:e.jsx(v,{}),code:N},{title:"Com Submenus",description:"Menu de contexto com submenus aninhados para organizar opções hierarquicamente.",preview:e.jsx(w,{}),code:T}],props:[{name:"ContextMenu",type:"Component",description:"Componente raiz que envolve o trigger e o conteúdo do menu."},{name:"ContextMenuTrigger",type:"Component",description:"Área que detecta o clique com botão direito para abrir o menu. Aceita asChild."},{name:"ContextMenuContent",type:"Component",description:"Container para os itens do menu. Aceita alignOffset, sideOffset e className."},{name:"ContextMenuItem",type:"Component",description:"Item básico do menu. Aceita inset, disabled e onSelect."},{name:"ContextMenuCheckboxItem",type:"Component",description:"Item com checkbox. Aceita checked, onCheckedChange e disabled."},{name:"ContextMenuRadioGroup",type:"Component",description:"Agrupa radio items. Aceita value e onValueChange."},{name:"ContextMenuRadioItem",type:"Component",description:"Item de seleção única dentro de um RadioGroup. Requer value."},{name:"ContextMenuLabel",type:"Component",description:"Rótulo não interativo para agrupar itens. Aceita inset."},{name:"ContextMenuSeparator",type:"Component",description:"Linha divisória visual entre grupos de itens."},{name:"ContextMenuShortcut",type:"Component",description:"Exibe atalho de teclado alinhado à direita do item."},{name:"ContextMenuSub",type:"Component",description:"Container para submenu aninhado."},{name:"ContextMenuSubTrigger",type:"Component",description:"Item que abre um submenu ao hover ou foco. Aceita inset."},{name:"ContextMenuSubContent",type:"Component",description:"Conteúdo do submenu aninhado."},{name:"ContextMenuGroup",type:"Component",description:"Agrupa itens relacionados para organização semântica."}],accessibility:["Abre com clique do botão direito ou tecla de menu de contexto (Shift+F10 ou tecla Menu)","Navegação completa por teclado usando setas direcionais","Enter ou Espaço para selecionar item focado","Escape fecha o menu e retorna foco ao elemento anterior","Suporte completo a WAI-ARIA com roles menu, menuitem, menuitemcheckbox e menuitemradio","Submenus acessíveis via seta direita (abrir) e seta esquerda (fechar)","Type-ahead: digitar caracteres foca no item correspondente","Foco visual claro nos itens durante navegação por teclado"]})}export{q as ContextMenuDoc};
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./index-DkiftrvI.js";import{C as n}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";const r=`import {
|
|
2
|
-
// Contexts e Hooks
|
|
3
|
-
useLocale,
|
|
4
|
-
useNavigation,
|
|
5
|
-
usePageMetadata,
|
|
6
|
-
useModalState,
|
|
7
|
-
useHasOpenModal,
|
|
8
|
-
|
|
9
|
-
// Providers
|
|
10
|
-
LocaleProvider,
|
|
11
|
-
NavigationProvider,
|
|
12
|
-
PageMetadataProvider,
|
|
13
|
-
ModalStateProvider,
|
|
14
|
-
} from 'forlogic-core';`,s=`import { useLocale } from 'forlogic-core';
|
|
15
|
-
|
|
16
|
-
function UserSettings() {
|
|
17
|
-
const {
|
|
18
|
-
locale,
|
|
19
|
-
timezone,
|
|
20
|
-
datetimeFormat,
|
|
21
|
-
setLocale,
|
|
22
|
-
setTimezone,
|
|
23
|
-
setDatetimeFormat,
|
|
24
|
-
isLoading
|
|
25
|
-
} = useLocale();
|
|
26
|
-
|
|
27
|
-
if (isLoading) return <Spinner />;
|
|
28
|
-
|
|
29
|
-
return (
|
|
30
|
-
<div className="space-y-4">
|
|
31
|
-
<Select
|
|
32
|
-
value={locale}
|
|
33
|
-
onValueChange={setLocale}
|
|
34
|
-
>
|
|
35
|
-
<SelectItem value="pt-BR">Português</SelectItem>
|
|
36
|
-
<SelectItem value="en-US">English</SelectItem>
|
|
37
|
-
<SelectItem value="es-ES">Español</SelectItem>
|
|
38
|
-
</Select>
|
|
39
|
-
|
|
40
|
-
<Select
|
|
41
|
-
value={timezone}
|
|
42
|
-
onValueChange={setTimezone}
|
|
43
|
-
>
|
|
44
|
-
<SelectItem value="America/Sao_Paulo">São Paulo (-3)</SelectItem>
|
|
45
|
-
<SelectItem value="America/New_York">New York (-5)</SelectItem>
|
|
46
|
-
</Select>
|
|
47
|
-
|
|
48
|
-
<Select
|
|
49
|
-
value={datetimeFormat}
|
|
50
|
-
onValueChange={setDatetimeFormat}
|
|
51
|
-
>
|
|
52
|
-
<SelectItem value="dd/MM/yyyy HH:mm">DD/MM/YYYY HH:mm</SelectItem>
|
|
53
|
-
<SelectItem value="yyyy-MM-dd HH:mm">YYYY-MM-DD HH:mm</SelectItem>
|
|
54
|
-
</Select>
|
|
55
|
-
</div>
|
|
56
|
-
);
|
|
57
|
-
}`,d=`import { NavigationProvider, useNavigation } from 'forlogic-core';
|
|
58
|
-
|
|
59
|
-
// Configuração de navegação
|
|
60
|
-
const sidebarConfig = {
|
|
61
|
-
appName: 'Minha Aplicação',
|
|
62
|
-
navigation: [
|
|
63
|
-
{ path: '/', label: 'Início', icon: Home },
|
|
64
|
-
{ path: '/users', label: 'Usuários', icon: Users },
|
|
65
|
-
{ path: '/settings', label: 'Configurações', icon: Settings },
|
|
66
|
-
]
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
// Provider no root da aplicação
|
|
70
|
-
function App() {
|
|
71
|
-
return (
|
|
72
|
-
<NavigationProvider config={sidebarConfig}>
|
|
73
|
-
<AppLayout />
|
|
74
|
-
</NavigationProvider>
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Uso em componentes
|
|
79
|
-
function PageHeader() {
|
|
80
|
-
const { navigation, appName } = useNavigation();
|
|
81
|
-
|
|
82
|
-
return (
|
|
83
|
-
<header>
|
|
84
|
-
<h1>{appName}</h1>
|
|
85
|
-
<nav>
|
|
86
|
-
{navigation?.map(item => (
|
|
87
|
-
<Link key={item.path} to={item.path}>
|
|
88
|
-
{item.label}
|
|
89
|
-
</Link>
|
|
90
|
-
))}
|
|
91
|
-
</nav>
|
|
92
|
-
</header>
|
|
93
|
-
);
|
|
94
|
-
}`,l=`import { PageMetadataProvider, usePageMetadata } from 'forlogic-core';
|
|
95
|
-
|
|
96
|
-
// Provider com ações customizadas no header
|
|
97
|
-
function App() {
|
|
98
|
-
return (
|
|
99
|
-
<PageMetadataProvider
|
|
100
|
-
defaultHeaderActions={<Button>Ação Global</Button>}
|
|
101
|
-
>
|
|
102
|
-
<AppLayout />
|
|
103
|
-
</PageMetadataProvider>
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Hook para definir metadados da página
|
|
108
|
-
function UsersPage() {
|
|
109
|
-
usePageMetadata({
|
|
110
|
-
title: 'Gerenciamento de Usuários',
|
|
111
|
-
subtitle: 'Adicione, edite e remova usuários do sistema'
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
return <UserList />;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Subtitle com ReactNode (links, ícones, etc.)
|
|
118
|
-
function DetailPage() {
|
|
119
|
-
usePageMetadata({
|
|
120
|
-
title: 'Detalhes do Item',
|
|
121
|
-
subtitle: <span>Veja o <a href="/docs">guia</a></span>
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
return <Detail />;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// Breadcrumbs no header
|
|
128
|
-
function EditUserPage() {
|
|
129
|
-
usePageMetadata({
|
|
130
|
-
title: 'Editar Usuário',
|
|
131
|
-
subtitle: 'Atualize os dados do usuário',
|
|
132
|
-
breadcrumbs: [
|
|
133
|
-
{ label: 'Usuários', href: '/users' },
|
|
134
|
-
{ label: 'João Silva' }
|
|
135
|
-
]
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
return <UserForm />;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// Consumindo metadados no header
|
|
142
|
-
function AppHeader() {
|
|
143
|
-
const { metadata, headerActions } = usePageMetadataContext();
|
|
144
|
-
|
|
145
|
-
return (
|
|
146
|
-
<header className="flex justify-between">
|
|
147
|
-
<div>
|
|
148
|
-
{metadata?.breadcrumbs && (
|
|
149
|
-
<nav className="text-xs text-muted-foreground">...</nav>
|
|
150
|
-
)}
|
|
151
|
-
<h1>{metadata?.title}</h1>
|
|
152
|
-
{metadata?.subtitle && (
|
|
153
|
-
<div className="text-muted-foreground">{metadata.subtitle}</div>
|
|
154
|
-
)}
|
|
155
|
-
</div>
|
|
156
|
-
<div>{headerActions}</div>
|
|
157
|
-
</header>
|
|
158
|
-
);
|
|
159
|
-
}`,c=`import { ModalStateProvider, useModalState, useHasOpenModal } from 'forlogic-core';
|
|
160
|
-
|
|
161
|
-
// Provider no root da aplicação
|
|
162
|
-
function App() {
|
|
163
|
-
return (
|
|
164
|
-
<ModalStateProvider>
|
|
165
|
-
<AppLayout />
|
|
166
|
-
</ModalStateProvider>
|
|
167
|
-
);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Registrar modal aberto
|
|
171
|
-
function MyDialog({ open, onOpenChange }) {
|
|
172
|
-
const { registerModal, unregisterModal } = useModalState();
|
|
173
|
-
|
|
174
|
-
useEffect(() => {
|
|
175
|
-
if (open) {
|
|
176
|
-
registerModal('my-dialog');
|
|
177
|
-
} else {
|
|
178
|
-
unregisterModal('my-dialog');
|
|
179
|
-
}
|
|
180
|
-
}, [open, registerModal, unregisterModal]);
|
|
181
|
-
|
|
182
|
-
return (
|
|
183
|
-
<Dialog open={open} onOpenChange={onOpenChange}>
|
|
184
|
-
<DialogContent>...</DialogContent>
|
|
185
|
-
</Dialog>
|
|
186
|
-
);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
// Hook simplificado para verificar se há modal aberto
|
|
190
|
-
function SidebarTrigger() {
|
|
191
|
-
const hasOpenModal = useHasOpenModal();
|
|
192
|
-
|
|
193
|
-
return (
|
|
194
|
-
<Button
|
|
195
|
-
disabled={hasOpenModal}
|
|
196
|
-
onClick={openSidebar}
|
|
197
|
-
>
|
|
198
|
-
Menu
|
|
199
|
-
</Button>
|
|
200
|
-
);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// Uso com setHasOpenModal (modo simplificado)
|
|
204
|
-
function SimpleModal() {
|
|
205
|
-
const { setHasOpenModal } = useModalState();
|
|
206
|
-
|
|
207
|
-
const handleOpen = () => setHasOpenModal(true);
|
|
208
|
-
const handleClose = () => setHasOpenModal(false);
|
|
209
|
-
|
|
210
|
-
return <Dialog onOpenChange={(open) => setHasOpenModal(open)}>...</Dialog>;
|
|
211
|
-
}`,m=[{name:"useLocale()",type:"LocaleContextType",default:"-",description:"Retorna locale, timezone, datetimeFormat, funções setters e isLoading."},{name:"LocaleProvider",type:"React.FC<{ children }>",default:"-",description:"Provider que gerencia preferências de locale do usuário com persistência no banco."},{name:"useNavigation()",type:"{ navigation, appName }",default:"-",description:"Retorna configuração de navegação e nome da aplicação."},{name:"NavigationProvider",type:"React.FC<{ config, children }>",default:"-",description:"Provider que fornece configuração de sidebar/navegação para toda a aplicação."},{name:"usePageMetadata(options)",type:"void",default:"-",description:"Define title (string), subtitle (ReactNode) e breadcrumbs (PageBreadcrumbItem[]) da página atual. Limpa automaticamente no unmount."},{name:"usePageMetadataContext()",type:"{ metadata, headerActions, setMetadata, clearMetadata }",default:"-",description:"Acessa metadados da página atual para uso em headers."},{name:"PageMetadataProvider",type:"React.FC<{ defaultHeaderActions, children }>",default:"-",description:"Provider que gerencia metadados de página e ações do header."},{name:"useModalState()",type:"ModalStateContextValue",default:"-",description:"Retorna openModals, hasOpenModal, registerModal, unregisterModal, setHasOpenModal."},{name:"useHasOpenModal()",type:"boolean",default:"-",description:"Hook simplificado que retorna apenas se há modal aberto."},{name:"ModalStateProvider",type:"React.FC<{ children }>",default:"-",description:"Provider que rastreia modais abertos globalmente."}];function a({title:t,description:o,code:i}){return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:t}),e.jsx("p",{className:"text-sm text-muted-foreground",children:o})]}),e.jsx("pre",{className:"rounded-lg border bg-muted/50 p-4 overflow-x-auto",children:e.jsx("code",{className:"text-sm font-mono",children:i})})]})}function v(){const t=[{id:"exemplos",label:"Exemplos"},{id:"localecontext",label:"LocaleContext"},{id:"navigationcontext",label:"NavigationContext"},{id:"pagemetadatacontext",label:"PageMetadataContext"},{id:"modalstatecontext",label:"ModalStateContext"}];return e.jsx(n,{title:"Contexts",description:"Contexts globais da biblioteca forlogic-core para gerenciamento de estado da aplicação. Incluem LocaleContext para i18n, NavigationContext para navegação, PageMetadataContext para metadados de página e ModalStateContext para rastreamento de modais.",usage:r,props:m,tocItems:t,notes:["LocaleContext fornece locale fixo em pt-BR (preferências do usuário serão implementadas futuramente via API externa).","NavigationContext é memoizado para evitar re-renders durante navegação.","PageMetadataContext limpa automaticamente os metadados quando a página é desmontada.","ModalStateContext permite uso opcional - retorna fallback silencioso se não houver provider.","useHasOpenModal é útil para desabilitar ações de sidebar quando há modais abertos.","Todos os contexts devem ser configurados via CoreProviders no root da aplicação."],children:e.jsxs("div",{id:"exemplos",className:"space-y-8 scroll-mt-4",children:[e.jsx("h2",{className:"text-2xl font-semibold tracking-tight border-b pb-2",children:"Exemplos"}),e.jsx("div",{id:"localecontext",className:"scroll-mt-4",children:e.jsx(a,{title:"LocaleContext",description:"Gerencia preferências de locale, timezone e formato de data/hora do usuário. Persiste automaticamente no banco de dados.",code:s})}),e.jsx("div",{id:"navigationcontext",className:"scroll-mt-4",children:e.jsx(a,{title:"NavigationContext",description:"Fornece configuração de navegação e nome da aplicação. Usado pelo AppSidebar e hooks como usePageTitle.",code:d})}),e.jsx("div",{id:"pagemetadatacontext",className:"scroll-mt-4",children:e.jsx(a,{title:"PageMetadataContext",description:"Permite que páginas definam título e subtítulo que serão exibidos no AppHeader. Suporta ações customizadas no header.",code:l})}),e.jsx("div",{id:"modalstatecontext",className:"scroll-mt-4",children:e.jsx(a,{title:"ModalStateContext",description:"Rastreia modais abertos globalmente. Permite que componentes como SidebarActionTrigger se desabilitem quando há modais abertos.",code:c})})]})})}export{v as ContextsDoc};
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import{j as e,a as m,b as x,c as h,d as u,dw as a,w as l,a5 as i,a6 as d,a7 as r,aX as S,dy as o,aa as c,aQ as t,a4 as T,ff as j,aU as p,r as f,x as v,P as k,d7 as R,K as B,T as E,i as F,k as y,l as N,p as I,q as g,B as q,ak as H,al as U,aV as _,an as L,ao as b,aW as V,ef as O,y as M,z as G,E as Q,G as W,H as X,I as K,X as $}from"./index-DkiftrvI.js";import{C as J}from"./ComponentDocTemplate-CQbBhfvZ.js";import"./ExampleCard-DuLrb3t-.js";const Y=[{id:"1",title:"Reunião de planejamento",category:"Trabalho",is_actived:!0},{id:"2",title:"Lista de compras",category:"Pessoal",is_actived:!0},{id:"3",title:"Ideias para o projeto",category:"Trabalho",is_actived:!1},{id:"4",title:"Anotações da aula",category:"Estudos",is_actived:!0},{id:"5",title:"Receita de bolo",category:"Pessoal",is_actived:!0}];function Z(){const[C,P]=f.useState(""),[A,n]=f.useState(!1),[D,z]=f.useState(1),w=Y.filter(s=>s.title.toLowerCase().includes(C.toLowerCase()));return e.jsxs("div",{className:"border rounded-lg overflow-hidden bg-background",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4 p-4 border-b",children:[e.jsxs(v,{size:"sm",onClick:()=>n(!0),children:[e.jsx(k,{className:"h-4 w-4 mr-2"}),"Nova Nota"]}),e.jsx("div",{className:"flex-1 max-w-xs",children:e.jsxs("div",{className:"relative",children:[e.jsx(R,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(B,{placeholder:"Buscar notas...",value:C,onChange:s=>P(s.target.value),className:"pl-9 h-9"})]})})]}),e.jsxs(E,{children:[e.jsx(F,{children:e.jsxs(y,{children:[e.jsx(N,{children:"Título"}),e.jsx(N,{children:"Categoria"}),e.jsx(N,{children:"Status"}),e.jsx(N,{className:"w-16",children:"Ações"})]})}),e.jsx(I,{children:w.map(s=>e.jsxs(y,{children:[e.jsx(g,{className:"font-medium",children:s.title}),e.jsx(g,{children:s.category}),e.jsx(g,{children:e.jsx(q,{variant:s.is_actived?"default":"secondary",children:s.is_actived?"Ativo":"Inativo"})}),e.jsx(g,{children:e.jsxs(H,{children:[e.jsx(U,{asChild:!0,children:e.jsx(_,{})}),e.jsxs(L,{align:"end",children:[e.jsxs(b,{children:[e.jsx(V,{className:"h-4 w-4 mr-2"}),"Editar"]}),e.jsxs(b,{children:[e.jsx(O,{className:"h-4 w-4 mr-2"}),"Desativar"]}),e.jsxs(b,{className:"text-destructive",children:[e.jsx(M,{className:"h-4 w-4 mr-2"}),"Excluir"]})]})]})})]},s.id))})]}),e.jsx("div",{className:"border-t",children:e.jsx(G,{currentPage:D,totalPages:1,totalItems:w.length,itemsPerPage:10,onPageChange:z,onItemsPerPageChange:()=>{},variant:"full"})}),e.jsx(Q,{open:A,onOpenChange:n,children:e.jsxs(W,{children:[e.jsx(X,{children:e.jsx(K,{children:"Nova Nota"})}),e.jsx("div",{className:"py-4 text-center text-muted-foreground",children:"Formulário gerado automaticamente pelo BaseForm"}),e.jsxs($,{children:[e.jsx(v,{variant:"outline",onClick:()=>n(!1),children:"Cancelar"}),e.jsx(v,{onClick:()=>n(!1),children:"Salvar"})]})]})})]})}const ee=`// 1. Defina o serviço
|
|
2
|
-
const notesService = createSimpleService<Note>({
|
|
3
|
-
tableName: 'notes',
|
|
4
|
-
schema: 'common',
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
// 2. Crie a página com ~15 linhas de configuração
|
|
8
|
-
const NotesPage = createCrudPage({
|
|
9
|
-
entityName: 'Nota',
|
|
10
|
-
entityNamePlural: 'Notas',
|
|
11
|
-
service: notesService,
|
|
12
|
-
columns: [
|
|
13
|
-
{ key: 'title', header: 'Título', sortable: true },
|
|
14
|
-
{ key: 'category', header: 'Categoria' },
|
|
15
|
-
{ key: 'is_actived', header: 'Status' },
|
|
16
|
-
],
|
|
17
|
-
formSections: [{
|
|
18
|
-
id: 'main',
|
|
19
|
-
fields: [
|
|
20
|
-
{ name: 'title', label: 'Título', type: 'text', required: true },
|
|
21
|
-
{ name: 'category', label: 'Categoria', type: 'select', options: [...] },
|
|
22
|
-
{ name: 'content', label: 'Conteúdo', type: 'textarea' },
|
|
23
|
-
],
|
|
24
|
-
}],
|
|
25
|
-
});`,se=`const ProductsPage = createCrudPage({
|
|
26
|
-
// ... config básica
|
|
27
|
-
filters: [
|
|
28
|
-
{
|
|
29
|
-
key: 'category',
|
|
30
|
-
label: 'Categoria',
|
|
31
|
-
options: [
|
|
32
|
-
{ value: 'electronics', label: 'Eletrônicos' },
|
|
33
|
-
{ value: 'clothing', label: 'Vestuário' },
|
|
34
|
-
]
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
key: 'status',
|
|
38
|
-
label: 'Status',
|
|
39
|
-
options: [
|
|
40
|
-
{ value: 'active', label: 'Ativo' },
|
|
41
|
-
{ value: 'inactive', label: 'Inativo' },
|
|
42
|
-
]
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
|
-
defaultSort: { column: 'name', direction: 'asc' },
|
|
46
|
-
});`,ae=`const ReportsPage = createCrudPage({
|
|
47
|
-
// ... config básica
|
|
48
|
-
|
|
49
|
-
// Ações na toolbar
|
|
50
|
-
customActions: [
|
|
51
|
-
{
|
|
52
|
-
icon: Download,
|
|
53
|
-
label: 'Exportar',
|
|
54
|
-
onClick: () => handleExport()
|
|
55
|
-
},
|
|
56
|
-
],
|
|
57
|
-
|
|
58
|
-
// Ações por linha
|
|
59
|
-
customRowActions: (item) => [
|
|
60
|
-
{ icon: Copy, label: 'Duplicar', onClick: () => handleDuplicate(item) },
|
|
61
|
-
{ icon: History, label: 'Histórico', onClick: () => handleHistory(item) },
|
|
62
|
-
],
|
|
63
|
-
|
|
64
|
-
// Ações em massa (dropdown "Ações em lote")
|
|
65
|
-
enableBulkActions: true,
|
|
66
|
-
bulkActions: [
|
|
67
|
-
{
|
|
68
|
-
icon: Archive,
|
|
69
|
-
label: 'Arquivar',
|
|
70
|
-
action: (ids) => handleBulkArchive(ids)
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
});`,le=`const ProcessesPage = createCrudPage({
|
|
74
|
-
// ... config básica
|
|
75
|
-
|
|
76
|
-
// Desabilita o formulário padrão
|
|
77
|
-
useCustomRouting: true,
|
|
78
|
-
hideNewButton: true,
|
|
79
|
-
|
|
80
|
-
// Handler customizado para "Novo"
|
|
81
|
-
onNew: () => navigate('/processes/new'),
|
|
82
|
-
|
|
83
|
-
// Ou usa handler direto (abre modal/wizard externo)
|
|
84
|
-
onEdit: (item) => navigate(\`/processes/\${item.id}/edit\`),
|
|
85
|
-
});`,te=`// Render customizado de colunas
|
|
86
|
-
columns: [
|
|
87
|
-
{
|
|
88
|
-
key: 'status',
|
|
89
|
-
header: 'Status',
|
|
90
|
-
render: (item) => (
|
|
91
|
-
<Badge variant={item.is_actived ? 'default' : 'secondary'}>
|
|
92
|
-
{item.is_actived ? 'Ativo' : 'Inativo'}
|
|
93
|
-
</Badge>
|
|
94
|
-
)
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
key: 'user',
|
|
98
|
-
header: 'Responsável',
|
|
99
|
-
render: (item) => (
|
|
100
|
-
<div className="flex items-center gap-2">
|
|
101
|
-
<Avatar src={item.user.avatar} />
|
|
102
|
-
<span>{item.user.name}</span>
|
|
103
|
-
</div>
|
|
104
|
-
)
|
|
105
|
-
},
|
|
106
|
-
]`;function de(){return e.jsxs(J,{title:"createCrudPage",description:"Factory de alto nível que gera uma página CRUD completa com ~15 linhas de configuração declarativa.",tocItems:[{id:"geracao-automatica",label:"Geração Automática"},{id:"uso-basico",label:"Uso Básico"},{id:"com-filtros",label:"Com Filtros"},{id:"com-acoes",label:"Com Ações Customizadas"},{id:"com-wizard",label:"Com Wizard"},{id:"render-customizado",label:"Render Customizado"},{id:"referencia-props",label:"Referência de Props"},{id:"quando-usar",label:"Quando Usar"},{id:"docs-detalhadas",label:"Documentação Detalhada"}],children:[e.jsxs(m,{id:"geracao-automatica",className:"scroll-mt-4",children:[e.jsx(x,{children:e.jsx(h,{children:"O que o createCrudPage gera automaticamente?"})}),e.jsx(u,{children:e.jsxs("ul",{className:"grid grid-cols-1 md:grid-cols-2 gap-2 text-sm",children:[e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-4 w-4 text-green-500"}),"Tabela com paginação e ordenação"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-4 w-4 text-green-500"}),"Formulário modal para criar/editar"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-4 w-4 text-green-500"}),"Barra de busca integrada"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-4 w-4 text-green-500"}),"Filtros customizáveis"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-4 w-4 text-green-500"}),"Ações de editar/excluir/toggle"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-4 w-4 text-green-500"}),"Dropdown de ações em lote"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-4 w-4 text-green-500"}),"Estados de loading/empty"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-4 w-4 text-green-500"}),"Integração automática com service"]})]})})]}),e.jsx(l,{}),e.jsxs("section",{id:"uso-basico",className:"space-y-4 scroll-mt-4",children:[e.jsx("h2",{className:"text-2xl font-semibold",children:"Uso Básico"}),e.jsxs(i,{defaultValue:"preview",className:"w-full",children:[e.jsxs(d,{className:"mb-4",children:[e.jsxs(r,{value:"preview",className:"gap-2",children:[e.jsx(S,{size:16}),"Preview"]}),e.jsxs(r,{value:"code",className:"gap-2",children:[e.jsx(o,{size:16}),"Código"]})]}),e.jsxs(c,{value:"preview",className:"mt-0",children:[e.jsx(Z,{}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"Este é um preview interativo do que o createCrudPage gera automaticamente."})]}),e.jsx(c,{value:"code",className:"mt-0",children:e.jsx("pre",{className:"bg-muted p-4 rounded-lg overflow-x-auto text-xs",children:e.jsx("code",{children:ee})})})]})]}),e.jsx(l,{}),e.jsxs("section",{id:"com-filtros",className:"space-y-4 scroll-mt-4",children:[e.jsx("h2",{className:"text-2xl font-semibold",children:"Com Filtros"}),e.jsxs(i,{defaultValue:"code",className:"w-full",children:[e.jsx(d,{className:"mb-4",children:e.jsxs(r,{value:"code",className:"gap-2",children:[e.jsx(o,{size:16}),"Código"]})}),e.jsx(c,{value:"code",className:"mt-0",children:e.jsx("pre",{className:"bg-muted p-4 rounded-lg overflow-x-auto text-xs",children:e.jsx("code",{children:se})})})]})]}),e.jsx(l,{}),e.jsxs("section",{id:"com-acoes",className:"space-y-4 scroll-mt-4",children:[e.jsx("h2",{className:"text-2xl font-semibold",children:"Com Ações Customizadas"}),e.jsxs(i,{defaultValue:"code",className:"w-full",children:[e.jsx(d,{className:"mb-4",children:e.jsxs(r,{value:"code",className:"gap-2",children:[e.jsx(o,{size:16}),"Código"]})}),e.jsx(c,{value:"code",className:"mt-0",children:e.jsx("pre",{className:"bg-muted p-4 rounded-lg overflow-x-auto text-xs",children:e.jsx("code",{children:ae})})})]})]}),e.jsx(l,{}),e.jsxs("section",{id:"com-wizard",className:"space-y-4 scroll-mt-4",children:[e.jsx("h2",{className:"text-2xl font-semibold",children:"Com Wizard ou Roteamento Customizado"}),e.jsxs(i,{defaultValue:"code",className:"w-full",children:[e.jsx(d,{className:"mb-4",children:e.jsxs(r,{value:"code",className:"gap-2",children:[e.jsx(o,{size:16}),"Código"]})}),e.jsx(c,{value:"code",className:"mt-0",children:e.jsx("pre",{className:"bg-muted p-4 rounded-lg overflow-x-auto text-xs",children:e.jsx("code",{children:le})})})]})]}),e.jsx(l,{}),e.jsxs("section",{id:"render-customizado",className:"space-y-4 scroll-mt-4",children:[e.jsx("h2",{className:"text-2xl font-semibold",children:"Render Customizado de Colunas"}),e.jsxs(i,{defaultValue:"code",className:"w-full",children:[e.jsx(d,{className:"mb-4",children:e.jsxs(r,{value:"code",className:"gap-2",children:[e.jsx(o,{size:16}),"Código"]})}),e.jsx(c,{value:"code",className:"mt-0",children:e.jsx("pre",{className:"bg-muted p-4 rounded-lg overflow-x-auto text-xs",children:e.jsx("code",{children:te})})})]})]}),e.jsx(l,{}),e.jsxs("section",{id:"referencia-props",className:"space-y-4 scroll-mt-4",children:[e.jsx("h2",{className:"text-2xl font-semibold",children:"Referência de Props"}),e.jsxs(m,{children:[e.jsx(x,{children:e.jsx(h,{children:"SimpleCrudPageConfig"})}),e.jsx(u,{children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b",children:[e.jsx("th",{className:"text-left p-2 font-medium",children:"Prop"}),e.jsx("th",{className:"text-left p-2 font-medium",children:"Tipo"}),e.jsx("th",{className:"text-left p-2 font-medium",children:"Descrição"})]})}),e.jsxs("tbody",{className:"divide-y",children:[e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"entityName"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"string"}),e.jsx("td",{className:"p-2",children:'Nome singular (ex: "Nota")'})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"entityNamePlural"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"string"}),e.jsx("td",{className:"p-2",children:'Nome plural (ex: "Notas")'})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"service"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"SimpleService"}),e.jsx("td",{className:"p-2",children:"Serviço criado com createSimpleService"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"columns"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"CrudColumn[]"}),e.jsx("td",{className:"p-2",children:"Definição das colunas da tabela"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"formSections"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"FormSection[]"}),e.jsx("td",{className:"p-2",children:"Seções do formulário"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"filters"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"CrudFilter[]"}),e.jsx("td",{className:"p-2",children:"Filtros customizados"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"defaultSort"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"{column, direction}"}),e.jsx("td",{className:"p-2",children:"Ordenação inicial"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"enableBulkActions"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"boolean"}),e.jsx("td",{className:"p-2",children:"Habilita seleção múltipla e dropdown de ações"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"bulkActions"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"BulkAction[]"}),e.jsx("td",{className:"p-2",children:"Ações em massa no dropdown"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"customActions"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"Action[]"}),e.jsx("td",{className:"p-2",children:"Ações na toolbar"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"customRowActions"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"(item) => Action[]"}),e.jsx("td",{className:"p-2",children:"Ações por linha"})]}),e.jsxs("tr",{className:"bg-muted/50",children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"onNew"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"() => void"}),e.jsx("td",{className:"p-2",children:'Handler customizado para "Novo"'})]}),e.jsxs("tr",{className:"bg-muted/50",children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"hideNewButton"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"boolean"}),e.jsx("td",{className:"p-2",children:'Esconde o botão "Novo"'})]}),e.jsxs("tr",{className:"bg-muted/50",children:[e.jsx("td",{className:"p-2",children:e.jsx("code",{children:"useCustomRouting"})}),e.jsx("td",{className:"p-2 text-muted-foreground",children:"boolean"}),e.jsx("td",{className:"p-2",children:"Desabilita BaseForm padrão"})]})]})]})})})]})]}),e.jsx(l,{}),e.jsxs("section",{id:"quando-usar",className:"space-y-4 scroll-mt-4",children:[e.jsx("h2",{className:"text-2xl font-semibold",children:"Quando usar?"}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs(m,{className:"border-green-500/20 bg-green-500/5",children:[e.jsx(x,{children:e.jsxs(h,{className:"text-green-600 flex items-center gap-2",children:[e.jsx(a,{className:"h-5 w-5"}),"Use createCrudPage quando:"]})}),e.jsx(u,{children:e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(t,{className:"h-4 w-4"}),"Precisa de um CRUD padrão rapidamente"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(t,{className:"h-4 w-4"}),"Layout tabela + formulário atende"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(t,{className:"h-4 w-4"}),"Quer consistência com outros CRUDs"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(t,{className:"h-4 w-4"}),"Produtividade é prioridade"]})]})})]}),e.jsxs(m,{className:"border-orange-500/20 bg-orange-500/5",children:[e.jsx(x,{children:e.jsxs(h,{className:"text-orange-600 flex items-center gap-2",children:[e.jsx(T,{className:"h-5 w-5"}),"Use CrudTable/CrudGrid quando:"]})}),e.jsx(u,{children:e.jsxs("ul",{className:"space-y-2 text-sm",children:[e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(t,{className:"h-4 w-4"}),"Precisa de layout muito customizado"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(t,{className:"h-4 w-4"}),"Múltiplas tabelas na mesma página"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(t,{className:"h-4 w-4"}),"Lógica de negócio complexa"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(t,{className:"h-4 w-4"}),"Controle total sobre a UI"]})]})})]})]})]}),e.jsx(l,{}),e.jsxs("section",{id:"docs-detalhadas",className:"space-y-4 scroll-mt-4",children:[e.jsx("h2",{className:"text-2xl font-semibold",children:"Documentação Detalhada"}),e.jsx("p",{className:"text-muted-foreground",children:"Para customizações avançadas e composição manual, consulte:"}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsxs(j,{to:"/ds/crud-table",className:"flex items-center gap-2 p-4 border rounded-lg hover:bg-muted transition-colors",children:[e.jsx(p,{className:"h-4 w-4"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:"CrudTable"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Composição manual com controle total"})]})]}),e.jsxs(j,{to:"/ds/crud-baseform",className:"flex items-center gap-2 p-4 border rounded-lg hover:bg-muted transition-colors",children:[e.jsx(p,{className:"h-4 w-4"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:"BaseForm"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Tipos de campo e grupos"})]})]}),e.jsxs(j,{to:"/ds/crud-pagination",className:"flex items-center gap-2 p-4 border rounded-lg hover:bg-muted transition-colors",children:[e.jsx(p,{className:"h-4 w-4"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:"CrudPagination"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Controles de paginação"})]})]}),e.jsxs(j,{to:"/ds/crud",className:"flex items-center gap-2 p-4 border rounded-lg hover:bg-muted transition-colors",children:[e.jsx(p,{className:"h-4 w-4"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:"Visão Geral do CRUD"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Arquitetura e níveis de abstração"})]})]})]})]})]})}export{de as CreateCrudPageDoc};
|