uigraph 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -51
- package/dist/bin.mjs +1608 -59037
- package/dist/viewer/assets/abnfDiagram-VCTEODGH-D7zWJuPJ.js +1 -0
- package/dist/viewer/assets/actor-avatar-Bu-mKKXB.js +1 -0
- package/dist/viewer/assets/{api-adapters-CnQpLiWI.js → api-adapters-tfr51BsS.js} +1 -1
- package/dist/viewer/assets/{api-endpoints-DCA5GNpC.js → api-endpoints-D-Whnnwd.js} +9 -9
- package/dist/viewer/assets/{api-group-endpoints-page-Di42W69y.js → api-group-endpoints-page-B9R1EI4i.js} +9 -9
- package/dist/viewer/assets/{arc-Cn8owoDw.js → arc-DauzQXFu.js} +1 -1
- package/dist/viewer/assets/architectureDiagram-5GKGNRK7-CXzgHd-c.js +36 -0
- package/dist/viewer/assets/{arrow-left-DWcMgM2U.js → arrow-left-DpQqmf17.js} +1 -1
- package/dist/viewer/assets/avatar-DAFUyk1i.js +43 -0
- package/dist/viewer/assets/badge-hR3QvPWv.js +1 -0
- package/dist/viewer/assets/better-delete-confirmation-modal-CGEQ5O4X.js +1 -0
- package/dist/viewer/assets/better-dialog-DcIxFWwk.js +1 -0
- package/dist/viewer/assets/{blockDiagram-I7D4REHJ-CbYzOsL_.js → blockDiagram-I7D4REHJ-CFHWUw4z.js} +2 -2
- package/dist/viewer/assets/{brands-Bd4RklRx.js → brands-DtmA1AhP.js} +1 -1
- package/dist/viewer/assets/button-DZj74qS7.js +1 -0
- package/dist/viewer/assets/{c4Diagram-7LVT6UL2-CLkVbphC.js → c4Diagram-7LVT6UL2-BHSggPKI.js} +6 -6
- package/dist/viewer/assets/{calendar-C0xdI_ag.js → calendar-Bolgc8E5.js} +1 -1
- package/dist/viewer/assets/channel-CNRSofFP.js +1 -0
- package/dist/viewer/assets/{check-XjanpAFg.js → check-BpmCQNbj.js} +1 -1
- package/dist/viewer/assets/checkbox-CFJfXL6R.js +1 -0
- package/dist/viewer/assets/{chevron-down-R7pQzyLD.js → chevron-down-DDsUE_xz.js} +1 -1
- package/dist/viewer/assets/{chevron-up-CRPypfOs.js → chevron-up-DVznKMGv.js} +1 -1
- package/dist/viewer/assets/{chunk-2Q5K7J3B-CcvtugCu.js → chunk-2Q5K7J3B-CNfz5YDQ.js} +1 -1
- package/dist/viewer/assets/{chunk-5VM5RSS4-CpZHHr12.js → chunk-5VM5RSS4-CwIhjvMe.js} +1 -1
- package/dist/viewer/assets/{chunk-F27PBJKO-DeAl4iOc.js → chunk-F27PBJKO-YFexFJof.js} +1 -1
- package/dist/viewer/assets/{chunk-IMKFNOWR-BfrPe7pS.js → chunk-IMKFNOWR-GY2yrvuo.js} +1 -1
- package/dist/viewer/assets/{chunk-JWPE2WC7-DDjyvUmZ.js → chunk-JWPE2WC7-xd0JGvne.js} +1 -1
- package/dist/viewer/assets/chunk-OB3PAWPO-DJIP1M4r.js +12 -0
- package/dist/viewer/assets/{chunk-POPQ4Y6H-DkDb0mzz.js → chunk-POPQ4Y6H-Bh6rizEy.js} +1 -1
- package/dist/viewer/assets/{chunk-SVP7TREG-D-K2XIGs.js → chunk-SVP7TREG-DtNrjvpq.js} +1 -1
- package/dist/viewer/assets/{chunk-TICWLB2K-DWMQQx6z.js → chunk-TICWLB2K-DrERwtw8.js} +1 -1
- package/dist/viewer/assets/{chunk-XXDRQBXY-DfkljAyM.js → chunk-XXDRQBXY-fYo04iwY.js} +1 -1
- package/dist/viewer/assets/{circle-alert-pm13M-Ef.js → circle-alert-Bl7DXYD_.js} +1 -1
- package/dist/viewer/assets/classDiagram-ZZMXUADV-D7PO-ME9.js +1 -0
- package/dist/viewer/assets/classDiagram-v2-VYDZK3BY-D7PO-ME9.js +1 -0
- package/dist/viewer/assets/color-input-ClkkG_kZ.js +11 -0
- package/dist/viewer/assets/{common-Y7ySZBdh.js → common-DLCsGQ-t.js} +1 -1
- package/dist/viewer/assets/{component-icons-D1BDAuEt.js → component-icons-MJ61E9nt.js} +2 -2
- package/dist/viewer/assets/{copy-CN4K2f_R.js → copy-DMJJonQF.js} +1 -1
- package/dist/viewer/assets/cose-bilkent-JH36ORCC-Dplz8nVT.js +1 -0
- package/dist/viewer/assets/cross-button-D5qst1tj.js +1 -0
- package/dist/viewer/assets/{cynefin-OW5HDTMX-yz-uw9Kz.js → cynefin-OW5HDTMX-DiBs4CI8.js} +1 -1
- package/dist/viewer/assets/cynefinDiagram-5FMLGOSQ-COXS8-dI.js +62 -0
- package/dist/viewer/assets/{dagre-GXQ25YYZ-zjZDwXOe.js → dagre-GXQ25YYZ-K8qvfG8D.js} +2 -2
- package/dist/viewer/assets/dashboard-diagrams-page-Cb0xNr4W.js +2 -0
- package/dist/viewer/assets/dashboard-diagrams-page-inner-CD--zr5q.js +1 -0
- package/dist/viewer/assets/dashboard-docs-page-BfWR9Ai9.js +2 -0
- package/dist/viewer/assets/dashboard-docs-page-inner-BLbX-YwF.js +67 -0
- package/dist/viewer/assets/dashboard-layout-sTeeHNsZ.js +1 -0
- package/dist/viewer/assets/dashboard-lens-layout-D-tu_4kn.js +1 -0
- package/dist/viewer/assets/dashboard-map-frame-page-7pDmbTSe.js +1 -0
- package/dist/viewer/assets/dashboard-plans-page-CfwOZ34A.js +1 -0
- package/dist/viewer/assets/dashboard-service-apis-k93fjW51.js +1 -0
- package/dist/viewer/assets/{dashboard-service-diagrams-CIjk95Jk.js → dashboard-service-diagrams-BIWUxX-Y.js} +3 -3
- package/dist/viewer/assets/dashboard-service-docs-CnniTD6Q.js +1 -0
- package/dist/viewer/assets/{dashboard-service-overview-CzePVPjl.js → dashboard-service-overview-CGBu4omY.js} +5 -5
- package/dist/viewer/assets/dashboard-services-DEscIO2O.js +1 -0
- package/dist/viewer/assets/{db-type-badge-DOgu1Pyc.js → db-type-badge-UbPgpwQf.js} +2 -2
- package/dist/viewer/assets/debounce-Cp8eREM4-D7o-Pzb-.js +2 -0
- package/dist/viewer/assets/{dependencies-CYdEztHw.js → dependencies-DK2GDlhQ.js} +1 -1
- package/dist/viewer/assets/{dependency-graph-DbyfN-rC.js → dependency-graph-xBEnCS0J.js} +3 -3
- package/dist/viewer/assets/{diagram-S7CK7UJ4-q-NHkUCx.js → diagram-S7CK7UJ4-D-liadVe.js} +2 -2
- package/dist/viewer/assets/diagram-UQ7AKVKN-CnA8mgXp.js +41 -0
- package/dist/viewer/assets/{diagram-VSXAHHWV-DZc1kHGx.js → diagram-VSXAHHWV-Ck7dgRFR.js} +2 -2
- package/dist/viewer/assets/diagram-VX7I27RA-Cm1LHbu3.js +24 -0
- package/dist/viewer/assets/diagram-Z3DM3KII-DV3yBUCB.js +24 -0
- package/dist/viewer/assets/diagram-live-preview-DzJ7Nxp1.js +2 -0
- package/dist/viewer/assets/{diagram-portal-page-CWxuok9E.js → diagram-portal-page-gguGLULH.js} +24 -24
- package/dist/viewer/assets/{diagrams-C1xkRPqT.js → diagrams-BqBSv2eb.js} +4 -4
- package/dist/viewer/assets/dialog-D7wzTt0L.js +6 -0
- package/dist/viewer/assets/{doc-file-content-B06roi8L.js → doc-file-content-Be0au9Vo.js} +4 -4
- package/dist/viewer/assets/{download-CLdCXVsO.js → download-DhyZ3g4F.js} +1 -1
- package/dist/viewer/assets/ebnfDiagram-PWID7BFC-BXbHVQvG.js +1 -0
- package/dist/viewer/assets/{editor-vqK4qAnB.js → editor-F9o4zoeB.js} +2 -2
- package/dist/viewer/assets/{erDiagram-RLTQ6QDP-BWuA-aqV.js → erDiagram-RLTQ6QDP-DMfiWput.js} +2 -2
- package/dist/viewer/assets/{file-text-BvszilVL.js → file-text-BFqJQ67P.js} +1 -1
- package/dist/viewer/assets/flow-diagram-preview-B83UU1n_.js +1 -0
- package/dist/viewer/assets/{flowDiagram-HODETNUW-Db0QtNj4.js → flowDiagram-HODETNUW-BNFS2Mkr.js} +1 -1
- package/dist/viewer/assets/ganttDiagram-EL5Y4UJY-DFDsYJNp.js +292 -0
- package/dist/viewer/assets/gitGraphDiagram-WWUBYQGX-BVHabPDp.js +106 -0
- package/dist/viewer/assets/global-loader-XJO9_e0l.js +1 -0
- package/dist/viewer/assets/{globe-Jl6eIZmG.js → globe-CJ35KsQW.js} +1 -1
- package/dist/viewer/assets/gql-FFIj8zdp.js +1 -0
- package/dist/viewer/assets/{grid-scroll-body-CPqSxU6-.js → grid-scroll-body-DC5pYDPJ.js} +2 -2
- package/dist/viewer/assets/iconBase-DtqdW2XR.js +1 -0
- package/dist/viewer/assets/index-B6MxYIzs.js +1 -0
- package/dist/viewer/assets/index-BC5xdBQU.js +48 -0
- package/dist/viewer/assets/index-BIrx3oY4.js +1 -0
- package/dist/viewer/assets/{index-jm22RWpY.js → index-BZGsDmUx.js} +5 -5
- package/dist/viewer/assets/{index-Poftp9f1.js → index-BZXhpoWr.js} +4 -4
- package/dist/viewer/assets/index-Bn2bqqMd.js +1 -0
- package/dist/viewer/assets/{index-HU5pz3kj.js → index-BpCVYTvP.js} +36 -36
- package/dist/viewer/assets/{index-Bt2YHgxl.js → index-CBOYhBKJ.js} +1 -1
- package/dist/viewer/assets/index-CH7cEAxj.js +17 -0
- package/dist/viewer/assets/index-CIf0GId3.js +74 -0
- package/dist/viewer/assets/{index-D7MEHpJf.js → index-Ck66Ic_p.js} +4 -4
- package/dist/viewer/assets/index-Cp9mIQ8F.js +1 -0
- package/dist/viewer/assets/{index-c6Bxcoqm.js → index-DDmBuMKI.js} +1 -1
- package/dist/viewer/assets/{index-BSyJbFDG.js → index-DY3BFyb6.js} +1 -1
- package/dist/viewer/assets/{index-BS94XVnd.js → index-DkzZ-ZvR.js} +1 -1
- package/dist/viewer/assets/{index-C_43VC19.js → index-PglMbhys.js} +1 -1
- package/dist/viewer/assets/infoDiagram-27XIBGKW-CG-wwxBf.js +2 -0
- package/dist/viewer/assets/input--C59pq6j.js +1 -0
- package/dist/viewer/assets/{ishikawaDiagram-5VMMS53U-C4PzFnZ4.js → ishikawaDiagram-5VMMS53U-BlgV7ceJ.js} +2 -2
- package/dist/viewer/assets/{journeyDiagram-3NMN7TZE-Dpn3bBNo.js → journeyDiagram-3NMN7TZE-Cn03_Xl6.js} +2 -2
- package/dist/viewer/assets/{kanban-definition-UXKFOSKX-CJ99H4G6.js → kanban-definition-UXKFOSKX-CJogvDPY.js} +6 -6
- package/dist/viewer/assets/{layout-Bfvxt_D5.js → layout-B26eC4yQ.js} +1 -1
- package/dist/viewer/assets/{lens-run-page-DZneics-.js → lens-run-page-Ba1ppzJt.js} +3 -3
- package/dist/viewer/assets/lens-runs-page-BnUS57LM.js +1 -0
- package/dist/viewer/assets/{link-2-C75goIOt.js → link-2-D1e0xznG.js} +1 -1
- package/dist/viewer/assets/linked-project-dot-BY1gEES9.js +543 -0
- package/dist/viewer/assets/{loader-circle-C5jZoM7X.js → loader-circle-CiqyoJF7.js} +1 -1
- package/dist/viewer/assets/{merge-Cy7YkrN7.js → merge-BhOMvhW1.js} +1 -1
- package/dist/viewer/assets/mermaid.core-BDgZg3kW.js +312 -0
- package/dist/viewer/assets/method-badge-DErZP7y5.js +1 -0
- package/dist/viewer/assets/{mindmap-definition-YA3MSWOX-yQCKA-K4.js → mindmap-definition-YA3MSWOX-DFkLu0ac.js} +2 -2
- package/dist/viewer/assets/nav-links-DZWMpwMR.js +61 -0
- package/dist/viewer/assets/{network-COWNXGMM.js → network-B1apzT1s.js} +1 -1
- package/dist/viewer/assets/{nosql-editor-modal-DTiWkc_r.js → nosql-editor-modal-CvH0SWAi.js} +5 -5
- package/dist/viewer/assets/not-found-page-C-fn8QeM.js +1 -0
- package/dist/viewer/assets/organization-dependency-graph-page-BryP-iJL.js +1 -0
- package/dist/viewer/assets/pegDiagram-XKGWAZYB-g1cM14-L.js +1 -0
- package/dist/viewer/assets/{pieDiagram-E7YTZNPT-DqnkpCX4.js → pieDiagram-E7YTZNPT-WEnDsMY3.js} +2 -2
- package/dist/viewer/assets/{plus-DQakmTjA.js → plus-DbyuOgKB.js} +1 -1
- package/dist/viewer/assets/popover-476u3TN0.js +1 -0
- package/dist/viewer/assets/preload-helper-BlTxHScW.js +1 -0
- package/dist/viewer/assets/{quadrantDiagram-AXDQQJYC-iQjJfars.js → quadrantDiagram-AXDQQJYC-NdfQCpzF.js} +2 -2
- package/dist/viewer/assets/query-D9oj6LGx.js +50 -0
- package/dist/viewer/assets/{quill-rCHj4fCw.js → quill-Cde5JMRD.js} +1 -1
- package/dist/viewer/assets/railroadDiagram-O6MQD6OU-BYhlXlMY.js +1 -0
- package/dist/viewer/assets/{react-BNzYaZuG.js → react-Bx48XWN4.js} +1 -1
- package/dist/viewer/assets/react-flow-wrapper-BcbvHgxz.js +277 -0
- package/dist/viewer/assets/{requirementDiagram-BXWQKSXE-Bv-Vh1dW.js → requirementDiagram-BXWQKSXE-C25Bcm2L.js} +2 -2
- package/dist/viewer/assets/{sankeyDiagram-P5KCCOFB-C__uD07f.js → sankeyDiagram-P5KCCOFB-h8LiCsgk.js} +2 -2
- package/dist/viewer/assets/scroll-area-RagrStGj.js +6 -0
- package/dist/viewer/assets/{search-DW-qhXLk.js → search-vw7ucoOs.js} +1 -1
- package/dist/viewer/assets/section-loader-C4hOfhQS.js +1 -0
- package/dist/viewer/assets/section-not-found-BnrXiPog.js +1 -0
- package/dist/viewer/assets/select-D9fbrr7O.js +1 -0
- package/dist/viewer/assets/{sequenceDiagram-WJ2MYXX4-1RbvcHwO.js → sequenceDiagram-WJ2MYXX4-CDRVvD30.js} +2 -2
- package/dist/viewer/assets/{service-context-C17u_Fw9.js → service-context-D5nBtU18.js} +1 -1
- package/dist/viewer/assets/{service-database-list-page-cYuDHIls.js → service-database-list-page-DBjaDLVy.js} +2 -2
- package/dist/viewer/assets/service-database-page-CenNCgwf.js +2 -0
- package/dist/viewer/assets/service-database-page-inner-gS51TQTZ.js +85 -0
- package/dist/viewer/assets/{service-doc-Dir8g83J.js → service-doc-C-jHqT1U.js} +4 -4
- package/dist/viewer/assets/{service-doc-preview-modal-bJ6tJ5YR.js → service-doc-preview-modal-5sX6FOu1.js} +2 -2
- package/dist/viewer/assets/service-layout-Bf0vZBCH.js +1 -0
- package/dist/viewer/assets/service-pages-CFikvX4t.js +1 -0
- package/dist/viewer/assets/{services-Crqkffr5.js → services-Ivav34WC.js} +4 -4
- package/dist/viewer/assets/{share-2-BmYmqN4k.js → share-2-CQEaWbfH.js} +1 -1
- package/dist/viewer/assets/sizeCapture-INFHLROL-BJ6ndnPM.js +1 -0
- package/dist/viewer/assets/stateDiagram-D77RDMKH-B_tNCX3o.js +1 -0
- package/dist/viewer/assets/stateDiagram-v2-MP3YSRHH-Dl9wqdli.js +1 -0
- package/dist/viewer/assets/{style-DgSU0bQl.js → style-BPesJvJr.js} +8 -8
- package/dist/viewer/assets/super-circle-loader-DSkos6uP.js +1 -0
- package/dist/viewer/assets/super-logo-loader-Cxlbn6MB.js +1 -0
- package/dist/viewer/assets/swimlanes-42K2YHIH-CzURzYwf.js +1 -0
- package/dist/viewer/assets/swimlanesDiagram-VR7AAH4N-DrIlwFtk.js +8 -0
- package/dist/viewer/assets/table-B4pFND-o.js +1 -0
- package/dist/viewer/assets/textarea-Clgdv3Oi.js +1 -0
- package/dist/viewer/assets/{timeline-definition-24CTP7MA-C4yuLwUH.js → timeline-definition-24CTP7MA-D0YXQE1U.js} +2 -2
- package/dist/viewer/assets/ui-graph-logo-gHowu5gP.js +1 -0
- package/dist/viewer/assets/{upload-CRsS43j9.js → upload-CYb3nN_5.js} +1 -1
- package/dist/viewer/assets/{uploads-BOQHX9l4.js → uploads-CX2kdXbM.js} +8 -8
- package/dist/viewer/assets/{use-debounced-value-Ba-kkCUY.js → use-debounced-value-BpNFJd3C.js} +1 -1
- package/dist/viewer/assets/{use-localstorage-DIisTx-J.js → use-localstorage-D233xVb0.js} +1 -1
- package/dist/viewer/assets/use-permissions-BvmxJJ5r.js +1 -0
- package/dist/viewer/assets/{use-scoped-storage-C4RzED-E.js → use-scoped-storage-DL1XVp1j.js} +1 -1
- package/dist/viewer/assets/useMutation-D5ZHwHsx.js +1 -0
- package/dist/viewer/assets/useQuery-Dhe6uxrL.js +1 -0
- package/dist/viewer/assets/{vennDiagram-4TSXK5OY-BCtqXZqe.js → vennDiagram-4TSXK5OY-SSjHlqCQ.js} +2 -2
- package/dist/viewer/assets/{wardleyDiagram-VM6X3IG4-D3OtZJoT.js → wardleyDiagram-VM6X3IG4-CZWNdQxH.js} +2 -2
- package/dist/viewer/assets/{xychartDiagram-S5SC5T6Z-DxLL2CHH.js → xychartDiagram-S5SC5T6Z-B2qAGeb0.js} +2 -2
- package/dist/viewer/assets/zod-BMU4UTQt.js +1 -0
- package/dist/viewer/index.html +10 -1
- package/package.json +57 -57
- package/dist/abort-signals-B4fc3ahg.mjs +0 -34
- package/dist/agents.md +0 -28
- package/dist/anthropic-messages-KPxCHqBN.mjs +0 -14327
- package/dist/auth-storage-BvNH97p9.mjs +0 -2180
- package/dist/azure-openai-config-BbeCSg4y.mjs +0 -55
- package/dist/azure-openai-responses-BRzy8RfL.mjs +0 -182
- package/dist/classifier-shared-DBUHiTGw.mjs +0 -105
- package/dist/cli-2R6QQFp1.mjs +0 -451
- package/dist/cloudflare-workers-ai-system-one-BfqwmRQf.mjs +0 -44
- package/dist/config-D8DMGzIq.mjs +0 -647
- package/dist/cross-spawn-B2jIQPlu.mjs +0 -404
- package/dist/diagnostics-xdSgQR8t.mjs +0 -131
- package/dist/dist-BRyghrKX.mjs +0 -404
- package/dist/dist-D0EzrblG.mjs +0 -12161
- package/dist/dist-EKhnHWHG.mjs +0 -140221
- package/dist/dist-pQtuusFv.mjs +0 -1243
- package/dist/easter-egg-3d-C9_btlWn.mjs +0 -1225
- package/dist/env-api-keys-uytNub6O.mjs +0 -122
- package/dist/error-body-FhmCtR7m.mjs +0 -101
- package/dist/esm-D5isprgl.mjs +0 -1533
- package/dist/esm-DnqE4pfM.mjs +0 -104876
- package/dist/execute-BoTKl80U.mjs +0 -1715
- package/dist/github-copilot-headers-DWcTgoXr.mjs +0 -22
- package/dist/google-generative-ai-Brs5YpJo.mjs +0 -332
- package/dist/google-shared-2CyYa4VE.mjs +0 -33438
- package/dist/google-vertex-DZDUQPKa.mjs +0 -378
- package/dist/hash-DN7ukSfd.mjs +0 -16
- package/dist/headers-GhQHLk-3.mjs +0 -17
- package/dist/jiti-9kWALm4Y.mjs +0 -5439
- package/dist/jiti-loader-f21DrY1K.mjs +0 -27
- package/dist/jiti-static-loader-BI_w28l7.mjs +0 -41704
- package/dist/json-parse-B2mHg7o7.mjs +0 -381
- package/dist/keybinding-hints-D0nLU3ZH.mjs +0 -17899
- package/dist/lib-Dj1gKQJc.mjs +0 -24379
- package/dist/llama-cpp-classify-C73BoMYd.mjs +0 -344
- package/dist/mistral-conversations-DXVR7znL.mjs +0 -698
- package/dist/models-DBdii9gQ.mjs +0 -1255
- package/dist/multipart-parser-DLw9Z0uJ.mjs +0 -298
- package/dist/node-B0NU8X55.mjs +0 -2479
- package/dist/node-B8gaKm9g.mjs +0 -23
- package/dist/openai-I3_AqKDX.mjs +0 -17357
- package/dist/openai-codex-responses-PcZHDuBD.mjs +0 -1198
- package/dist/openai-completions-a_mH01ii.mjs +0 -994
- package/dist/openai-decisions-Du8y4mQG.mjs +0 -142
- package/dist/openai-prompt-cache-Bc6qNWt0.mjs +0 -8
- package/dist/openai-responses-a9lV_U7O.mjs +0 -270
- package/dist/openai-responses-shared-CDs_PBiH.mjs +0 -598
- package/dist/openrouter-images-D0Zc8Cjs.mjs +0 -125
- package/dist/photon_rs-DCvMOMu0.mjs +0 -4252
- package/dist/pi-messages-B5ietIBq.mjs +0 -306
- package/dist/plan-prompt.md +0 -56
- package/dist/prompt.md +0 -44
- package/dist/provider-env-BJhgA66g.mjs +0 -37
- package/dist/provider-retry-DXYM7rVE.mjs +0 -79
- package/dist/runtime-DTkBxiaM.mjs +0 -2822
- package/dist/sanitize-unicode-CqChtoM6.mjs +0 -26
- package/dist/shell-836_JFnI.mjs +0 -162
- package/dist/source-CKPndhKl.mjs +0 -478
- package/dist/src-DNm2QRm3.mjs +0 -5028
- package/dist/system-one-shared-DUAFtNa8.mjs +0 -75
- package/dist/token-DEUkymby.mjs +0 -56
- package/dist/token-util-Cx5S4eKt.mjs +0 -3
- package/dist/tool-DHDYqsyG.mjs +0 -6673
- package/dist/transform-messages-BClk99Vn.mjs +0 -477
- package/dist/typesafe-system-one-D2d8j8hZ.mjs +0 -24
- package/dist/typescript-Br-vsRJV.mjs +0 -6737
- package/dist/uuid-CNCZqNBb.mjs +0 -49
- package/dist/v2-1z8ijsD3.mjs +0 -6120
- package/dist/viewer/assets/abnfDiagram-VCTEODGH-j5YaKnl9.js +0 -1
- package/dist/viewer/assets/actor-avatar-DqmoY8Xc.js +0 -1
- package/dist/viewer/assets/architectureDiagram-5GKGNRK7-D80cJKz_.js +0 -36
- package/dist/viewer/assets/avatar-BI7D-Aia.js +0 -43
- package/dist/viewer/assets/badge-870-A4Y6.js +0 -1
- package/dist/viewer/assets/better-delete-confirmation-modal-Dib31LVb.js +0 -1
- package/dist/viewer/assets/better-dialog-D3AAiahr.js +0 -1
- package/dist/viewer/assets/button-DadqadpO.js +0 -1
- package/dist/viewer/assets/channel-DRkt3LIn.js +0 -1
- package/dist/viewer/assets/checkbox-BXpR079x.js +0 -1
- package/dist/viewer/assets/classDiagram-ZZMXUADV-G5CebNaC.js +0 -1
- package/dist/viewer/assets/classDiagram-v2-VYDZK3BY-G5CebNaC.js +0 -1
- package/dist/viewer/assets/color-input-Efm-lxDy.js +0 -11
- package/dist/viewer/assets/cose-bilkent-JH36ORCC-CrSHFmnp.js +0 -1
- package/dist/viewer/assets/cross-button-5Sr5rWVP.js +0 -1
- package/dist/viewer/assets/cynefinDiagram-5FMLGOSQ-Bdl_eBdu.js +0 -62
- package/dist/viewer/assets/dashboard-diagrams-page-DMupOe1m.js +0 -2
- package/dist/viewer/assets/dashboard-diagrams-page-inner-Dh0yKh2A.js +0 -1
- package/dist/viewer/assets/dashboard-docs-page-DWJ1qOQz.js +0 -2
- package/dist/viewer/assets/dashboard-docs-page-inner-Fs6G3oGo.js +0 -67
- package/dist/viewer/assets/dashboard-layout-D36InAaB.js +0 -1
- package/dist/viewer/assets/dashboard-lens-layout-Cv1Xx3hY.js +0 -1
- package/dist/viewer/assets/dashboard-map-frame-page-CTn61NUO.js +0 -1
- package/dist/viewer/assets/dashboard-plans-page-DxFJkrgK.js +0 -1
- package/dist/viewer/assets/dashboard-service-apis-BHtD9s5z.js +0 -1
- package/dist/viewer/assets/dashboard-service-docs-Uv_1uxxO.js +0 -1
- package/dist/viewer/assets/dashboard-services-CUP-L4Jg.js +0 -1
- package/dist/viewer/assets/diagram-UQ7AKVKN-DhFcurW6.js +0 -41
- package/dist/viewer/assets/diagram-VX7I27RA-DE1nREE8.js +0 -24
- package/dist/viewer/assets/diagram-Z3DM3KII-CSrYcCbc.js +0 -24
- package/dist/viewer/assets/diagram-live-preview-i5doxXLH.js +0 -2
- package/dist/viewer/assets/dialog-D_HtNS17.js +0 -6
- package/dist/viewer/assets/ebnfDiagram-PWID7BFC-BfL8m_sf.js +0 -1
- package/dist/viewer/assets/flow-diagram-preview-T0Z4iMVU.js +0 -1
- package/dist/viewer/assets/ganttDiagram-EL5Y4UJY-CsITpniw.js +0 -292
- package/dist/viewer/assets/gitGraphDiagram-WWUBYQGX-B4eCBGoe.js +0 -106
- package/dist/viewer/assets/iconBase-BoDZfJgC.js +0 -1
- package/dist/viewer/assets/index-5E1tJ7yK.js +0 -125
- package/dist/viewer/assets/index-7XpV2DRw.js +0 -1
- package/dist/viewer/assets/index-C0Rs3s9Z.js +0 -1
- package/dist/viewer/assets/index-CzHjJWeV.js +0 -1
- package/dist/viewer/assets/index-DcEA6SIV.js +0 -74
- package/dist/viewer/assets/infoDiagram-27XIBGKW-lTebN5Ix.js +0 -2
- package/dist/viewer/assets/input-YvHTVS0E.js +0 -1
- package/dist/viewer/assets/lens-runs-page-DoAOObxx.js +0 -1
- package/dist/viewer/assets/linked-project-dot-Ds2uEmJ9.js +0 -543
- package/dist/viewer/assets/mermaid.core-BCRBv8Us.js +0 -312
- package/dist/viewer/assets/method-badge-DMYDKdDZ.js +0 -1
- package/dist/viewer/assets/nav-links-8vT2ixiI.js +0 -61
- package/dist/viewer/assets/not-found-page-CnfLlhS4.js +0 -1
- package/dist/viewer/assets/organization-dependency-graph-page-3xqIxjNx.js +0 -1
- package/dist/viewer/assets/pegDiagram-XKGWAZYB-CMXqeAum.js +0 -1
- package/dist/viewer/assets/popover-CN9ni1N3.js +0 -1
- package/dist/viewer/assets/railroadDiagram-O6MQD6OU-CfqToX3W.js +0 -1
- package/dist/viewer/assets/react-flow-wrapper-BPlRstyO.js +0 -276
- package/dist/viewer/assets/scroll-area-BodE-n7W.js +0 -6
- package/dist/viewer/assets/section-loader-BzpYM_Nx.js +0 -1
- package/dist/viewer/assets/select-DDtnmSET.js +0 -1
- package/dist/viewer/assets/service-database-page-CMi1wF4h.js +0 -2
- package/dist/viewer/assets/service-database-page-inner-CoqAj93L.js +0 -85
- package/dist/viewer/assets/service-layout-0NMm_bKG.js +0 -1
- package/dist/viewer/assets/service-pages-dfnc91SU.js +0 -1
- package/dist/viewer/assets/sizeCapture-INFHLROL-BRJi3gCg.js +0 -1
- package/dist/viewer/assets/stateDiagram-D77RDMKH-DdLsfxgy.js +0 -1
- package/dist/viewer/assets/stateDiagram-v2-MP3YSRHH-DFwg8Qki.js +0 -1
- package/dist/viewer/assets/super-circle-loader-D8MElOMh.js +0 -1
- package/dist/viewer/assets/super-logo-loader-DJYiRbCS.js +0 -1
- package/dist/viewer/assets/swimlanes-42K2YHIH-AuYjrPqh.js +0 -1
- package/dist/viewer/assets/swimlanesDiagram-VR7AAH4N-0nIGA8_4.js +0 -8
- package/dist/viewer/assets/table-Bi4Auk9Z.js +0 -1
- package/dist/viewer/assets/textarea-MgxZ5x6-.js +0 -1
- package/dist/viewer/assets/ui-graph-logo-D4jRhd4z.js +0 -1
- package/dist/viewer/assets/use-permissions-6JVET753.js +0 -1
- package/dist/viewer/assets/useMutation-CmVaR9zz.js +0 -1
- package/dist/viewer/assets/useQuery-B8yYhO0c.js +0 -1
- package/dist/viewer/assets/zod-Dc4H6VVJ.js +0 -1
- package/dist/virtual-modules-DnCx0Gdx.mjs +0 -340
package/dist/viewer/assets/{nosql-editor-modal-DTiWkc_r.js → nosql-editor-modal-CvH0SWAi.js}
RENAMED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import{r as T,j as e
|
|
1
|
+
import{r as T,j as e}from"./index-CH7cEAxj.js";import{a as Ie,B as Pe}from"./better-dialog-DcIxFWwk.js";import{c as Ge}from"./react-Bx48XWN4.js";import{c as me,g as he,d as ue,f as Me,a as Oe}from"./nav-links-DZWMpwMR.js";import{D as qe}from"./style-BPesJvJr.js";import{a as ge,M as be,J as ye,C as Re,g as ze}from"./react-flow-wrapper-BcbvHgxz.js";import{S as Be}from"./super-circle-loader-DSkos6uP.js";import{c as z}from"./chunk-OB3PAWPO-DJIP1M4r.js";import{B as w,c as Le}from"./button-DZj74qS7.js";import{X as se,b as Ve}from"./dialog-D7wzTt0L.js";import{I as $e}from"./index-CBOYhBKJ.js";import{t as I}from"./index-B6MxYIzs.js";import{g as J}from"./index-Dj_05fqk.js";import{I as P}from"./input--C59pq6j.js";import{T as ie}from"./textarea-Clgdv3Oi.js";import{C as re}from"./checkbox-CFJfXL6R.js";import{S as Y,a as H,b as W,c as X,d as b}from"./select-D9fbrr7O.js";import{P as U}from"./plus-DbyuOgKB.js";import{C as oe,g as we,u as Je,R as Ue,h as Qe}from"./scroll-area-RagrStGj.js";import{C as Ye}from"./check-BpmCQNbj.js";import{A as He}from"./arrow-left-DpQqmf17.js";/**
|
|
2
2
|
* @license lucide-react v0.514.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const
|
|
6
|
+
*/const We=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],je=me("arrow-right",We);/**
|
|
7
7
|
* @license lucide-react v0.514.0 - ISC
|
|
8
8
|
*
|
|
9
9
|
* This source code is licensed under the ISC license.
|
|
10
10
|
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const
|
|
11
|
+
*/const Xe=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]],Ze=me("file-json",Xe);/**
|
|
12
12
|
* @license lucide-react v0.514.0 - ISC
|
|
13
13
|
*
|
|
14
14
|
* This source code is licensed under the ISC license.
|
|
15
15
|
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const
|
|
16
|
+
*/const es=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],ss=me("server",es);/**
|
|
17
17
|
* @license lucide-react v0.514.0 - ISC
|
|
18
18
|
*
|
|
19
19
|
* This source code is licensed under the ISC license.
|
|
20
20
|
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const ss=[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]],ts=ce("table",ss);function je(c){switch(c){case"S":return"string";case"N":return"number";case"B":return"binary";default:return"string"}}function rs(c){const s=c.primaryKey.partitionKey,o=c.primaryKey.partitionKeyType,i=c.primaryKey.sortKey,p=c.primaryKey.sortKeyType,d=[],r=new Map;(c.attributes||[]).forEach(n=>{const h=n.name.trim();!h||r.has(h)||(r.set(h,n),d.push(n))});const m=c.name?.trim()||"dynamodb_table",u=[{type:"column",name:s,dataType:{name:je(o||"string")},nullable:!1,comment:void 0}];i&&u.push({type:"column",name:i,dataType:{name:je(p||"string")},nullable:!1,comment:void 0});const S=d.map(n=>({type:"column",name:n.name,dataType:{name:n.type},nullable:!n.required,comment:n.notes})),C=c.globalSecondaryIndexes.map(n=>({type:"index",name:n.name||"gsi",columns:[{name:n.partitionKey||s},...n.sortKey?[{name:n.sortKey}]:[]],unique:!1}));return{dialect:"dynamodb",tables:[{type:"table",id:J(),name:m,columns:[...u,...S],constraints:[{type:"primary_key",columns:i?[s,i]:[s]}],indexes:C,options:{comment:c.description}}],metadata:{createdAt:new Date}}}function ns(c){return{dialect:"mongodb",tables:c.collections.map(o=>{function i(r,m=""){const u=[],S=m?`${m}.${r.name}`:r.name;if(r.type==="array"){const C=r.itemType||"string";C==="object"&&r.itemFields?r.itemFields.forEach(N=>{u.push(...i(N,`${S}[]`))}):u.push({type:"column",name:S,dataType:{name:`${C}[]`},nullable:!r.required})}else r.type==="object"&&r.fields?r.fields.forEach(C=>{u.push(...i(C,S))}):u.push({type:"column",name:S,dataType:{name:r.type},nullable:!r.required});return u}const p=o.fields.flatMap(r=>i(r)),d=o.indexes.map(r=>({type:"index",name:r.name||`idx_${o.name}`,columns:r.fields.map(m=>({name:m.fieldName})),unique:r.unique}));return{type:"table",id:o.id,name:o.name,columns:p,constraints:[],indexes:d,options:{comment:o.description}}}),metadata:{createdAt:new Date}}}function as(c){function s(i,p=""){const d=[],r=p?`${p}.${i.name}`:i.name;if(i.type==="array"){const m=i.itemType||"string";m==="object"&&i.itemFields?i.itemFields.forEach(u=>{d.push(...s(u,`${r}[]`))}):d.push({type:"column",name:r,dataType:{name:`${m}[]`},nullable:!i.required,comment:"notes"in i?i.notes:void 0})}else i.type==="object"&&i.fields?i.fields.forEach(m=>{d.push(...s(m,r))}):d.push({type:"column",name:r,dataType:{name:i.type},nullable:!i.required,comment:"notes"in i?i.notes:void 0});return d}return{dialect:"json",tables:c.collections.map(i=>{const p=i.fields.flatMap(m=>s(m)),d=i.fields.filter(m=>m.reference?.collectionId).map(m=>{const u=c.collections.find(C=>C.id===m.reference?.collectionId),S=u?.fields.find(C=>C.id===m.reference?.fieldId);return{type:"foreign_key",columns:[m.name],referencedTable:u?.name||"",referencedColumns:S?[S.name]:["id"]}}),r=i.indexes.map(m=>({type:"index",name:m.name||`idx_${i.name}`,columns:m.fields.map(u=>({name:u})),unique:m.unique,where:m.ttl?`ttl:${m.ttl}`:void 0}));return{type:"table",id:i.id,name:i.name,columns:p,constraints:d,indexes:r,options:{comment:i.description}}}),metadata:{createdAt:new Date}}}const we={dynamodb:{id:"dynamodb",label:"DynamoDB",description:"Amazon DynamoDB - NoSQL database service",isNotAvailable:!1,icon:ts,steps:["basic","tableKeys","indexes","entities"]},mongodb:{id:"mongodb",label:"MongoDB",description:"MongoDB - Document database",isNotAvailable:!1,icon:qe,steps:["basic","collections","review"]},cassandra:{id:"cassandra",label:"Cassandra",description:"Apache Cassandra - Wide-column store",isNotAvailable:!0,icon:es,steps:["basic","keyspaceTables","partitioning","indexes"]},json:{id:"json",label:"NoSQL JSON / Other",description:"Generic NoSQL JSON schema",isNotAvailable:!0,icon:Xe,steps:["basic","collections"]}};function is(c){return we[c]}function ds(c,s){return s==="dynamodb"?{basic:"Basic info",tableKeys:"Primary keys",indexes:"Indexes",entities:"Attributes",collections:"Collections",keyspaceTables:"Keyspace & Tables",partitioning:"Partitioning",review:"Review"}[c]||c:s==="mongodb"?{basic:"Basic info",collections:"Collections",review:"Review",tableKeys:"Table Keys",indexes:"Indexes",entities:"Entities",keyspaceTables:"Keyspace & Tables",partitioning:"Partitioning"}[c]||c:{basic:"Basic Info",tableKeys:"Table Keys",indexes:"Indexes",entities:"Entities",collections:"Collections",keyspaceTables:"Keyspace & Tables",partitioning:"Partitioning",review:"Review"}[c]||c}const os={name:"",description:"",dialect:"dynamodb",primaryKey:{partitionKey:"",partitionKeyType:"S",sortKey:"",sortKeyType:"S"},globalSecondaryIndexes:[],attributes:[]},ls={name:"",description:"",dialect:"mongodb",collections:[]},cs={name:"",description:"",dialect:"json",collections:[]},ms=["dynamodb","mongodb","json"];function us(c){return ms.includes(c)}const[xs,Q]=Pe(({onSchemaSubmit:c,initialDialect:s,initialDataSource:o,onOpenChange:i})=>{const p=o&&us(o.dialect)?o.dialect:s??null,[d,r]=T.useState(()=>p),[m,u]=T.useState(()=>{if(o?.dialect==="dynamodb"&&o.sourceContent){const M=he.safeParse(o.sourceContent);if(M.success)return M.data}return os}),[S,C]=T.useState(()=>{if(o?.dialect==="mongodb"&&o.sourceContent){const M=ge.safeParse(o.sourceContent);if(M.success)return M.data}return ls}),[N,n]=T.useState(()=>{if(o?.dialect==="json"&&o.sourceContent){const M=be.safeParse(o.sourceContent);if(M.success)return M.data}return cs}),[h,A]=T.useState(0),[E,y]=T.useState(!1),G=d?is(d):null,q=d?G?.steps[h]||null:"dialect-selection",V=d?G?.steps.length||0:1,R=d?h<(G?.steps.length||0)-1:!1,Z=h>0||h===0&&d!==null;function L(M){r(M),A(0)}function $(){!d||!G||h<G.steps.length-1&&A(h+1)}function _(){h>0?A(h-1):d!==null&&(r(null),A(0))}function ee(M){!d||!G||M>=0&&M<G.steps.length&&A(M)}return{currentDialect:d,setCurrentDialect:L,coreSchema:{name:d==="dynamodb"?m.name:d==="mongodb"?S.name:d==="json"?N.name:"",description:d==="dynamodb"?m.description:d==="mongodb"?S.description:d==="json"?N.description:""},setCoreSchema(M){d==="dynamodb"?u(F=>({...F,...M})):d==="mongodb"?C(F=>({...F,...M})):d==="json"&&n(F=>({...F,...M}))},currentStepIndex:h,currentStepId:q,dialectConfig:G,totalSteps:V,canGoNext:R,canGoBack:Z,goToNextStep:$,goToPreviousStep:_,goToStep:ee,isSubmitting:E,setIsSubmitting:y,dynamoSchema:m,setDynamoSchema:u,mongoSchema:S,setMongoSchema:C,jsonSchema:N,setJsonSchema:n,initialDataSource:o,onSchemaSubmit:c,onOpenChange:i}});function ps(){const{currentDialect:c,coreSchema:s,setCoreSchema:o}=Q(),i=c==="dynamodb"?"Table name":"Database name",p=c==="mongodb"?"Used as the MongoDB database name.":void 0;return e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("div",{className:"min-w-[240px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:i}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:s.name,onChange:d=>o({name:d.target.value}),placeholder:c==="dynamodb"?"my-table":c==="mongodb"?"my-database":"BillingDB"}),p&&e.jsx("p",{className:"text-muted-foreground text-xs",children:p})]}),e.jsxs("div",{className:"w-full space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Description"}),e.jsx(ie,{className:"border-stock text-foreground bg-card w-full rounded-[1rem] border p-4 text-sm",value:s.description,onChange:d=>o({description:d.target.value}),placeholder:"Describe the database purpose"})]})]})})}function fs(){const{jsonSchema:c,setJsonSchema:s}=Q(),o=c.collections;function i(a){s({...c,collections:a(c.collections)})}const[p,d]=T.useState(null),[r,m]=T.useState("fields"),[u,S]=T.useState(""),[C,N]=T.useState(new Map),n=T.useMemo(()=>o.find(a=>a.id===p)||null,[o,p]);function h(){const a=J(),j={id:a,name:`collection_${o.length+1}`,description:"",tags:"",fields:[],indexes:[]};i(t=>[...t,j]),d(a)}function A(a,j){i(t=>t.map(x=>x.id===a?{...x,...j}:x))}function E(a){i(j=>j.map(t=>t.id===a?{...t,fields:[...t.fields,{id:J(),name:"",type:"",required:!1,isArray:!1}]}:t))}function y(a,j,t){i(x=>x.map(l=>l.id===a?{...l,fields:l.fields.map(f=>f.id===j?{...f,fields:t}:f)}:l))}function G(a,j){const t=o.find(f=>f.id===a);if(!t)return;const x=t.fields.find(f=>f.id===j);if(!x)return;const l=x.fields||[];y(a,j,[...l,{id:J(),name:"",type:"",required:!1}])}function q(a,j,t,x){const l=o.find(g=>g.id===a);if(!l)return;const f=l.fields.find(g=>g.id===j);!f||!f.fields||y(a,j,f.fields.map(g=>g.id===t?{...g,...x}:g))}function V(a,j,t){const x=o.find(f=>f.id===a);if(!x)return;const l=x.fields.find(f=>f.id===j);!l||!l.fields||y(a,j,l.fields.filter(f=>f.id!==t))}function R(a,j){N(t=>{const x=new Map(t),l=x.get(a)||new Set;return l.has(j)?l.delete(j):l.add(j),x.set(a,l),x})}function Z(a,j){return C.get(a)?.has(j)||!1}function L(a,j,t){i(x=>x.map(l=>l.id===a?{...l,fields:l.fields.map(f=>{if(f.id===j){const g={...f,...t};return t.type&&t.type!=="object"&&(g.fields=void 0),t.type&&t.type!=="array"?(g.itemType=void 0,g.itemFields=void 0):t.type==="array"&&!g.itemType&&(g.itemType="string"),g}return f})}:l))}function $(a,j){i(t=>t.map(x=>x.id===a?{...x,fields:x.fields.filter(l=>l.id!==j)}:x))}function _(a){i(j=>j.map(t=>t.id===a?{...t,indexes:[...t.indexes,{id:J(),name:`idx_${t.indexes.length+1}`,fields:[],unique:!1,ttl:""}]}:t))}function ee(a,j,t){i(x=>x.map(l=>l.id===a?{...l,indexes:l.indexes.map(f=>f.id===j?{...f,...t}:f)}:l))}function M(a,j){i(t=>t.map(x=>x.id===a?{...x,indexes:x.indexes.filter(l=>l.id!==j)}:x))}function F(){if(n)try{let a=function(f,g){const K={id:J(),name:f,type:Array.isArray(g)?"array":g===null?"mixed":typeof g=="number"?"number":typeof g=="boolean"?"boolean":typeof g=="object"?"object":"string",required:!0,isArray:!1};if(Array.isArray(g))if(K.type="array",g.length>0){const I=g[0];K.itemType=typeof I=="number"?"number":typeof I=="boolean"?"boolean":typeof I=="object"&&I!==null?"object":"string",typeof I=="object"&&I!==null&&!Array.isArray(I)&&(K.itemFields=Object.entries(I).map(([v,k])=>a(v,k)))}else K.itemType="string";else typeof g=="object"&&g!==null&&!Array.isArray(g)&&(K.fields=Object.entries(g).map(([I,v])=>a(I,v)));return K};const j=JSON.parse(u||"{}"),t=Array.isArray(j)?j[0]||{}:j;if(!t||typeof t!="object"){D.error("Sample document must be an object");return}const x=Object.entries(t);if(!x.length){D.error("Sample document is empty");return}const l=x.map(([f,g])=>a(f,g));A(n.id,{fields:l}),D.success("Fields inferred from sample")}catch{D.error("Invalid JSON sample")}}return e.jsxs("div",{className:"space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Collections"}),e.jsxs(w,{size:"sm",onClick:h,children:[e.jsx(U,{className:"h-4 w-4"}),"Add Collection"]})]}),e.jsxs("div",{className:"flex flex-col gap-3 lg:flex-row",children:[e.jsxs("div",{className:"w-full max-w-[320px] space-y-2 rounded-lg border p-2",children:[o.length===0&&e.jsx("div",{className:"text-paragraph p-2 text-xs",children:"No collections yet"}),o.map(a=>e.jsxs("div",{className:z("cursor-pointer rounded border p-2 text-sm",p===a.id?"border-primary bg-primary/10":"border-stock"),onClick:()=>d(a.id),children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:a.name,onChange:j=>A(a.id,{name:j.target.value})}),e.jsxs("p",{className:"text-paragraph mt-1 text-xs",children:[a.fields.length," fields • ",a.indexes.length," ","indexes"]})]},a.id))]}),e.jsx("div",{className:"flex-1 space-y-3 rounded-lg border p-3",children:n?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("div",{className:"min-w-[220px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Display label"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:n.label||"",onChange:a=>A(n.id,{label:a.target.value}),placeholder:"Invoices"})]}),e.jsxs("div",{className:"min-w-[220px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Tags"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:n.tags||"",onChange:a=>A(n.id,{tags:a.target.value}),placeholder:"billing,finance"})]}),e.jsxs("div",{className:"w-full space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Description"}),e.jsx(ie,{className:"border-stock text-foreground bg-card w-full rounded-[1rem] border p-4 text-sm",value:n.description||"",onChange:a=>A(n.id,{description:a.target.value})})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(w,{size:"sm",preset:r==="fields"?"primary":"outline",onClick:()=>m("fields"),children:"Fields"}),e.jsx(w,{size:"sm",preset:r==="indexes"?"primary":"outline",onClick:()=>m("indexes"),children:"Indexes"})]}),r==="fields"&&e.jsxs(w,{size:"sm",onClick:()=>E(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add field"]}),r==="indexes"&&e.jsxs(w,{size:"sm",onClick:()=>_(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add index"]})]}),r==="fields"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Fields"}),e.jsxs(w,{size:"sm",onClick:()=>E(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add Field"]})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Define the fields in this collection. Fields can be nested objects or arrays."})]}),n.fields.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-muted-foreground text-sm",children:"No fields yet."}),e.jsxs(w,{size:"sm",onClick:()=>E(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add Field"]})]})}):e.jsxs("div",{className:"bg-secondary rounded-lg border p-3",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1.5fr_auto_1fr_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"NAME"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"TYPE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REQUIRED"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REFERENCE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),e.jsx("div",{className:"space-y-2 pt-2",children:n.fields.map(a=>{const j=n.fields.length>1,t=a.type==="object",x=a.type==="array",l=x&&a.itemType==="object",f=a.fields?.length||0,g=a.itemFields?.length||0,K=Z(n.id,a.id),I=a.fields||[];return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"grid grid-cols-[2fr_1.5fr_auto_1fr_auto] items-center gap-3",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:a.name,onChange:v=>L(n.id,a.id,{name:v.target.value}),placeholder:"Field name"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(Y,{value:a.type||void 0,onValueChange:v=>{const k={type:v};v!=="object"&&(k.fields=void 0,N(B=>{const O=new Map(B),ne=O.get(n.id)||new Set;return ne.delete(a.id),O.set(n.id,ne),O})),v!=="array"?(k.itemType=void 0,k.itemFields=void 0):a.itemType||(k.itemType="string"),v==="array"&&(k.isArray=!1),L(n.id,a.id,k)},children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[120px] flex-1 rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"array",children:"array"}),e.jsx(b,{value:"mixed",children:"mixed"}),e.jsx(b,{value:"reference",children:"reference"})]})]}),t&&e.jsxs(w,{size:"sm",variant:"ghost",onClick:()=>R(n.id,a.id),className:"h-[3.5rem] text-xs whitespace-nowrap",children:["Edit fields",f>0&&e.jsxs("span",{className:"text-muted-foreground ml-1",children:["· ",f]})]}),x&&e.jsxs(Y,{value:a.itemType||"string",onValueChange:v=>{const k={itemType:v};v!=="object"&&(k.itemFields=void 0),L(n.id,a.id,k)},children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[100px] rounded-[1rem] border px-3 text-xs",children:e.jsx(W,{placeholder:"Item type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"})]})]}),l&&e.jsxs(w,{size:"sm",variant:"ghost",onClick:()=>R(n.id,a.id),className:"h-[3.5rem] text-xs whitespace-nowrap",children:["Edit item fields",g>0&&e.jsxs("span",{className:"text-muted-foreground ml-1",children:["· ",g]})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(re,{checked:a.required,onCheckedChange:v=>L(n.id,a.id,{required:!!v})})}),e.jsxs(Y,{value:a.reference?.collectionId||"",onValueChange:v=>L(n.id,a.id,{reference:v?{collectionId:v}:void 0}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Reference"})}),e.jsxs(X,{children:[e.jsx(b,{value:"__none__",children:"No reference"}),o.filter(v=>v.id!==n.id).map(v=>e.jsx(b,{value:v.id,children:v.name},v.id))]})]}),e.jsx("div",{className:"flex items-center justify-center",children:j&&e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>$(n.id,a.id),className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]}),t&&K&&e.jsxs("div",{className:"bg-card ml-4 rounded-lg border p-3",children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsxs("p",{className:"text-foreground text-xs font-semibold",children:['Nested fields for "',a.name||"unnamed",'"']}),e.jsxs(w,{size:"sm",onClick:()=>G(n.id,a.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add nested field"]})]}),I.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No nested fields yet."})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1.2fr_auto_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"NAME"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"TYPE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REQUIRED"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),e.jsx("div",{className:"space-y-2 pt-2",children:I.map(v=>{const k=I.length>1;return e.jsxs("div",{className:"grid grid-cols-[2fr_1.2fr_auto_auto] items-center gap-3",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:v.name,onChange:B=>q(n.id,a.id,v.id,{name:B.target.value}),placeholder:"Field name"}),e.jsxs(Y,{value:v.type||void 0,onValueChange:B=>q(n.id,a.id,v.id,{type:B}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"array",children:"array"}),e.jsx(b,{value:"mixed",children:"mixed"})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(re,{checked:v.required,onCheckedChange:B=>q(n.id,a.id,v.id,{required:B===!0})})}),e.jsx("div",{className:"flex items-center justify-center",children:k&&e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>V(n.id,a.id,v.id),className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]},v.id)})})]})]}),l&&K&&e.jsxs("div",{className:"bg-card ml-4 rounded-lg border p-3",children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsxs("p",{className:"text-foreground text-xs font-semibold",children:['Item fields for "',a.name||"unnamed",'[]"']}),e.jsxs(w,{size:"sm",onClick:()=>{const v=a.itemFields||[];L(n.id,a.id,{itemFields:[...v,{id:J(),name:"",type:"",required:!1}]})},children:[e.jsx(U,{className:"h-4 w-4"}),"Add item field"]})]}),(a.itemFields||[]).length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No item fields yet."})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1.2fr_auto_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"NAME"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"TYPE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REQUIRED"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),e.jsx("div",{className:"space-y-2 pt-2",children:(a.itemFields||[]).map(v=>e.jsxs("div",{className:"grid grid-cols-[2fr_1.2fr_auto_auto] items-center gap-3",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:v.name,onChange:k=>{const B=a.itemFields||[];L(n.id,a.id,{itemFields:B.map(O=>O.id===v.id?{...O,name:k.target.value}:O)})},placeholder:"Field name"}),e.jsxs(Y,{value:v.type||void 0,onValueChange:k=>{const B=a.itemFields||[];L(n.id,a.id,{itemFields:B.map(O=>O.id===v.id?{...O,type:k}:O)})},children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"array",children:"array"}),e.jsx(b,{value:"mixed",children:"mixed"})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(re,{checked:v.required,onCheckedChange:k=>{const B=a.itemFields||[];L(n.id,a.id,{itemFields:B.map(O=>O.id===v.id?{...O,required:k===!0}:O)})}})}),e.jsx("div",{className:"flex items-center justify-center",children:(a.itemFields||[]).length>1&&e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>{const k=a.itemFields||[];L(n.id,a.id,{itemFields:k.filter(B=>B.id!==v.id)})},className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]},v.id))})]})]})]},a.id)})})]}),e.jsxs("div",{className:"bg-secondary space-y-2 rounded border p-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-foreground text-xs font-semibold",children:"Sample document inference"}),e.jsx(w,{size:"sm",preset:"outline",onClick:F,children:"Infer fields"})]}),e.jsx(ie,{className:"border-stock text-foreground bg-card h-32 w-full rounded-[1rem] border p-4 text-sm",value:u,onChange:a=>S(a.target.value),placeholder:"Paste a sample JSON document"})]})]}),r==="indexes"&&e.jsx("div",{className:"space-y-2",children:n.indexes.map(a=>e.jsxs("div",{className:"flex flex-wrap items-start gap-2 rounded border p-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[160px] flex-1 rounded-[1rem] border px-4 text-sm",value:a.name,onChange:j=>ee(n.id,a.id,{name:j.target.value}),placeholder:"Index name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[200px] flex-1 rounded-[1rem] border px-4 text-sm",value:a.fields.join(", "),onChange:j=>ee(n.id,a.id,{fields:j.target.value.split(",").map(t=>t.trim()).filter(Boolean)}),placeholder:"Fields (comma separated)"}),e.jsxs("div",{className:"flex min-w-[120px] items-center gap-2",children:[e.jsx(re,{checked:a.unique,onCheckedChange:j=>ee(n.id,a.id,{unique:!!j})}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Unique"})]}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[140px] flex-1 rounded-[1rem] border px-4 text-sm",value:a.ttl||"",onChange:j=>ee(n.id,a.id,{ttl:j.target.value}),placeholder:"TTL (sec)"}),e.jsx("div",{className:"flex w-full justify-end",children:e.jsx(w,{size:"sm",preset:"outline",onClick:()=>M(n.id,a.id),children:"Remove"})})]},a.id))})]}):e.jsx("div",{className:"text-paragraph text-sm",children:"Select a collection to edit fields and indexes"})})]})]})}function ue({isFirstLevel:c,fields:s,parentLabel:o,onChange:i,normalizeField:p,expanded:d,onToggle:r,onCollapse:m,allowItemFields:u,addLabel:S,collections:C,currentCollectionId:N}){function n(){i([...s,{id:J(),name:"",type:"string",required:!1}])}function h(y,G){i(s.map(q=>q.id===y?p(q,G):q))}function A(y,G,q){i(s.map(V=>V.id===y?{...V,[G]:q}:V))}function E(y){i(s.filter(G=>G.id!==y))}return e.jsxs("div",{className:z("bg-card rounded-lg border p-3",!c&&"ml-4"),children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsx("p",{className:"text-foreground text-xs font-semibold",children:o}),!c&&e.jsxs(w,{preset:"outline",className:"h-10 px-3!",onClick:n,children:[e.jsx(U,{className:"h-4 w-4"}),S]})]}),s.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No nested fields yet."})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1.2fr_auto_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"NAME"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"TYPE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REQUIRED"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),e.jsx("div",{className:"space-y-2 pt-2",children:s.map(y=>{const G=y.type==="object",q=y.type==="array",V=q&&y.itemType==="object",R=y.type==="reference",Z=y.fields?.length||0,L=y.itemFields?.length||0,$=d.has(y.id);return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"grid grid-cols-[2fr_1.2fr_auto_auto] items-center gap-3",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:y.name,onChange:_=>h(y.id,{name:_.target.value}),placeholder:"Field name"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(Y,{value:y.type,onValueChange:_=>{h(y.id,{type:_}),_!=="object"&&_!=="array"&&m(y.id)},children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[120px] flex-1 rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"array",children:"array"}),e.jsx(b,{value:"reference",children:"reference"}),e.jsx(b,{value:"mixed",children:"mixed"})]})]}),G&&e.jsxs("button",{type:"button",onClick:()=>r(y.id),className:"text-muted-foreground hover:bg-accent flex items-center gap-1 rounded-md border border-transparent p-2 transition-colors",children:[e.jsx(de,{className:z("h-4 w-4 transition-transform",$&&"rotate-90")}),Z>0&&e.jsx("span",{className:"text-muted-foreground text-xs",children:Z})]}),q&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"Item type"}),e.jsxs(Y,{value:y.itemType||"string",onValueChange:_=>{h(y.id,{itemType:_}),_!=="object"&&m(y.id)},children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[100px] rounded-[1rem] border px-3 text-xs",children:e.jsx(W,{placeholder:"Item type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"reference",children:"reference"}),e.jsx(b,{value:"mixed",children:"mixed"})]})]})]}),V&&u&&e.jsxs("button",{type:"button",onClick:()=>r(y.id),className:"text-muted-foreground hover:bg-accent flex items-center gap-1 rounded-md border border-transparent p-2 transition-colors",children:[e.jsx(de,{className:z("h-4 w-4 transition-transform",$&&"rotate-90")}),L>0&&e.jsx("span",{className:"text-muted-foreground text-xs",children:L})]}),R&&e.jsxs(Y,{value:y.refCollectionId||"",onValueChange:_=>h(y.id,{refCollectionId:_||null}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[140px] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Target collection"})}),e.jsxs(X,{children:[C.filter(_=>_.id!==N).map(_=>e.jsx(b,{value:_.id,children:_.name},_.id)),C.filter(_=>_.id!==N).length===0&&e.jsx(b,{value:"",disabled:!0,children:"Add another collection first"})]})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(re,{checked:y.required,onCheckedChange:_=>h(y.id,{required:_===!0})})}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>E(y.id),className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]}),G&&$&&e.jsx(ue,{fields:y.fields||[],parentLabel:`Nested fields for "${y.name||"unnamed"}"`,onChange:_=>A(y.id,"fields",_),normalizeField:p,expanded:d,onToggle:r,onCollapse:m,allowItemFields:u,addLabel:"Add nested field",collections:C,currentCollectionId:N}),u&&V&&$&&e.jsx(ue,{fields:y.itemFields||[],parentLabel:`Item fields for "${y.name||"unnamed"}[]"`,onChange:_=>A(y.id,"itemFields",_),normalizeField:p,expanded:d,onToggle:r,onCollapse:m,allowItemFields:u,addLabel:"Add item field",collections:C,currentCollectionId:N})]},y.id)})})]})]})}function hs(){const{mongoSchema:c,setMongoSchema:s}=Q(),o=c.collections;function i(t){s({...c,collections:t(c.collections)})}const[p,d]=T.useState(null),[r,m]=T.useState("fields"),[u,S]=T.useState(""),[C,N]=T.useState(new Map),n=o.find(t=>t.id===p);function h(t,x){N(l=>{const f=new Map(l),g=l.get(t),K=new Set(g??[]);return K.has(x)?K.delete(x):K.add(x),f.set(t,K),f})}function A(t,x){N(l=>{const f=new Map(l),g=l.get(t),K=new Set(g??[]);return K.delete(x),f.set(t,K),f})}function E(t,x){const l={...t,...x};return l.type!=="object"&&(l.fields=void 0),l.type!=="array"?(l.itemType=void 0,l.itemFields=void 0):l.itemType||(l.itemType="string"),l.type!=="reference"&&(l.refCollectionId=void 0),l.itemType!=="object"&&(l.itemFields=void 0),l}function y(){const t=J(),x=o.length+1,l={id:t,name:`collection_${x}`,tags:"",description:"",fields:[],indexes:[]};i(f=>[...f,l]),d(t),m("fields")}function G(t){const x=o.filter(l=>l.id!==t);i(l=>l.filter(f=>f.id!==t)),N(l=>{const f=new Map(l);return f.delete(t),f}),d(l=>l===t?x[0]?.id??null:l),m("fields")}function q(t,x){i(l=>l.map(f=>f.id===t?{...f,...x}:f))}function V(t,x){if(!x||x.trim()===""){D.error("Collection name cannot be empty");return}if(x.includes(" ")){D.error("Collection name cannot contain spaces");return}q(t,{name:x.trim()})}function R(t){i(x=>x.map(l=>l.id===t?{...l,fields:[...l.fields,{id:J(),name:"",type:"string",required:!1}]}:l))}function Z(t,x){i(l=>l.map(f=>f.id===t?{...f,fields:x.map(g=>{const K=f.fields.find(I=>I.id===g.id);return K?{...K,...g}:g})}:f))}function L(t){i(x=>x.map(l=>l.id===t?{...l,indexes:[...l.indexes,{id:J(),name:"",fields:[],unique:!1}]}:l))}function $(t,x,l){i(f=>f.map(g=>g.id===t?{...g,indexes:g.indexes.map(K=>K.id===x?{...K,...l}:K)}:g))}function _(t,x){i(l=>l.map(f=>f.id===t?{...f,indexes:f.indexes.filter(g=>g.id!==x)}:f))}function ee(t,x){const l=o.find(g=>g.id===t);if(!l)return;const f=l.indexes.find(g=>g.id===x);f&&$(t,x,{fields:[...f.fields,{id:J(),fieldName:"",order:1}]})}function M(t,x,l,f){const g=o.find(I=>I.id===t);if(!g)return;const K=g.indexes.find(I=>I.id===x);K&&$(t,x,{fields:K.fields.map(I=>I.id===l?{...I,...f}:I)})}function F(t,x,l){const f=o.find(K=>K.id===t);if(!f)return;const g=f.indexes.find(K=>K.id===x);g&&$(t,x,{fields:g.fields.filter(K=>K.id!==l)})}function a(){if(n)try{let t=function(v,k){const B={id:J(),name:v,type:Array.isArray(k)?"array":k===null?"mixed":typeof k=="number"?"number":typeof k=="boolean"?"boolean":typeof k=="object"?"object":"string",required:!0};if(Array.isArray(k))if(B.type="array",k.length>0){const O=k[0];B.itemType=typeof O=="number"?"number":typeof O=="boolean"?"boolean":typeof O=="object"&&O!==null?"object":"string",typeof O=="object"&&O!==null&&!Array.isArray(O)&&(B.itemFields=Object.entries(O).map(([ne,Fe])=>t(ne,Fe)))}else B.itemType="string";else typeof k=="object"&&k!==null&&!Array.isArray(k)&&(B.fields=Object.entries(k).map(([O,ne])=>t(O,ne)));return B};const x=JSON.parse(u||"{}"),l=Array.isArray(x)?x[0]||{}:x;if(!l||typeof l!="object"){D.error("Sample document must be an object");return}const f=Object.entries(l);if(!f.length){D.error("Sample document is empty");return}const g=f.map(([v,k])=>t(v,k)),K=new Set(n.fields.map(v=>v.name)),I=g.filter(v=>!K.has(v.name));q(n.id,{fields:[...n.fields,...I]}),D.success(`Inferred ${I.length} new field(s) from sample`)}catch{D.error("Invalid JSON sample")}}const j=n?.fields.filter(t=>t.name.trim()!=="").map(t=>t.name)||[];return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Collections"}),e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:y,children:[e.jsx(U,{className:"h-4 w-4"}),"Add collection"]})]}),o.length===0?e.jsxs("div",{className:"bg-secondary rounded-lg border p-8 text-center",children:[e.jsx("p",{className:"text-muted-foreground text-sm",children:"No collections yet."}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:'Click "Add collection" to define your first collection.'})]}):e.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(200px,1fr))] gap-2",children:o.map(t=>{const x=p===t.id,l=t.fields.length,f=t.indexes.length;return e.jsx("div",{className:z("cursor-pointer rounded-lg border p-3 transition-colors",x?"border-primary bg-primary/5":"border-border bg-card hover:border-border"),onClick:()=>{d(t.id),m("fields")},children:e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-foreground truncate text-sm font-semibold",children:t.name||"Unnamed collection"}),e.jsxs("p",{className:"text-muted-foreground mt-1 text-xs",children:[l," field",l!==1?"s":""," ·"," ",f," index",f!==1?"es":""]})]}),e.jsx(w,{variant:"ghost",size:"icon",className:"text-destructive h-8 w-8",onClick:g=>{g.stopPropagation(),G(t.id)},children:e.jsx(se,{className:"h-4 w-4"})})]})},t.id)})})]}),n&&e.jsxs("div",{className:"space-y-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Collection name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:n.name,onChange:t=>q(n.id,{name:t.target.value}),onBlur:t=>V(n.id,t.target.value),placeholder:"collection_name"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Use lowercase and underscores; no spaces."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Tags"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:n.tags,onChange:t=>q(n.id,{tags:t.target.value}),placeholder:"billing,finance"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Description"}),e.jsx(ie,{className:"border-stock text-foreground bg-card w-full rounded-[1rem] border p-4 text-sm",value:n.description,onChange:t=>q(n.id,{description:t.target.value}),placeholder:"Collection description",rows:3})]})]}),e.jsxs("div",{className:"border-border flex items-center gap-2 border-b",children:[e.jsx("button",{type:"button",onClick:()=>m("fields"),className:z("px-4 py-2 text-sm font-medium transition-colors",r==="fields"?"border-primary text-primary border-b-2":"text-muted-foreground hover:text-foreground"),children:"Fields"}),e.jsx("button",{type:"button",onClick:()=>m("indexes"),className:z("px-4 py-2 text-sm font-medium transition-colors",r==="indexes"?"border-primary text-primary border-b-2":"text-muted-foreground hover:text-foreground"),children:"Indexes"})]}),r==="fields"&&e.jsxs("div",{className:"space-y-4",children:[n.fields.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:'No fields yet. Click "Add field" to define the document structure.'})}):e.jsx("div",{className:"bg-secondary rounded-lg border p-3",children:e.jsx(ue,{isFirstLevel:!0,fields:n.fields,parentLabel:"Fields",onChange:t=>Z(n.id,t),normalizeField:E,expanded:C.get(n.id)||new Set,onToggle:t=>h(n.id,t),onCollapse:t=>A(n.id,t),allowItemFields:!0,addLabel:"Add field",collections:o,currentCollectionId:n.id})}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:()=>R(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add field"]})}),e.jsxs("div",{className:"bg-secondary space-y-2 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-foreground text-xs font-semibold",children:"Sample document inference"}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:"Paste one or more example JSON documents. We'll infer fields and types for this collection."})]}),e.jsx(w,{size:"sm",preset:"outline",onClick:a,children:"Infer fields"})]}),e.jsx(ie,{className:"border-stock text-foreground bg-card h-32 w-full rounded-[1rem] border p-4 text-sm",value:u,onChange:t=>S(t.target.value),placeholder:"Paste a sample JSON document"})]})]}),r==="indexes"&&e.jsxs("div",{className:"space-y-4",children:[n.indexes.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:'No indexes yet. Click "Add index" to define one.'})}):e.jsx("div",{className:"space-y-4",children:n.indexes.map(t=>e.jsxs("div",{className:"bg-secondary space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Index name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:t.name,onChange:x=>$(n.id,t.id,{name:x.target.value}),placeholder:"status_1"})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-6",children:[e.jsx(re,{checked:t.unique,onCheckedChange:x=>$(n.id,t.id,{unique:x===!0})}),e.jsx("span",{className:"text-foreground text-xs",children:"Unique"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1fr_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"FIELD"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"ORDER"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),t.fields.length===0?e.jsx("div",{className:"bg-card rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No index fields yet."})}):e.jsx("div",{className:"space-y-2 pt-2",children:t.fields.map(x=>e.jsxs("div",{className:"grid grid-cols-[2fr_1fr_auto] items-center gap-3",children:[e.jsxs(Y,{value:x.fieldName,onValueChange:l=>M(n.id,t.id,x.id,{fieldName:l}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Field"})}),e.jsxs(X,{children:[j.map(l=>e.jsx(b,{value:l,children:l},l)),j.length===0&&e.jsx(b,{value:"",disabled:!0,children:"Add fields first"})]})]}),e.jsxs(Y,{value:x.order===1?"1":"-1",onValueChange:l=>M(n.id,t.id,x.id,{order:l==="1"?1:-1}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Order"})}),e.jsxs(X,{children:[e.jsx(b,{value:"1",children:"Ascending (1)"}),e.jsx(b,{value:"-1",children:"Descending (-1)"})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:t.fields.length>1&&e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>F(n.id,t.id,x.id),className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]},x.id))}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(w,{preset:"outline",className:"h-10 px-3!",onClick:()=>ee(n.id,t.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add index field"]}),e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>_(n.id,t.id),className:"text-destructive hover:text-destructive/90",children:"Remove index"})]})]})]},t.id))}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:()=>L(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add index"]})})]})]}),!n&&o.length>0&&e.jsx("div",{className:"bg-secondary rounded-lg border p-8 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"Select a collection to edit fields and indexes"})})]})}function gs(){const{currentDialect:c}=Q();return c==="mongodb"?e.jsx(hs,{}):c==="json"?e.jsx(fs,{}):e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Collection configuration will be implemented here for ",c]})})}function bs(){const{currentDialect:c,setCurrentDialect:s,dialectConfig:o}=Q(),i=c&&o?1+o.steps.length:3;return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"space-y-1",children:e.jsxs("p",{className:"text-muted-foreground text-sm",children:["Step 1 of ",i," · Select database type"]})}),e.jsxs("div",{className:"space-y-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-foreground text-sm font-semibold",children:"Select database type"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Pick the NoSQL database you're designing. We'll tailor the next steps to match."})]}),e.jsx("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:Object.entries(we).map(([p,d])=>{const r=c===p,m=d.icon;return e.jsxs("button",{disabled:d.isNotAvailable,onClick:()=>s(p),type:"button",className:z("relative flex items-start gap-3 rounded-lg border p-4 text-left transition-all",r?"border-primary bg-primary/5":"border-stock bg-card",d.isNotAvailable?"cursor-not-allowed opacity-50":"hover:border-primary hover:bg-accent"),children:[r&&e.jsx("div",{className:"bg-primary absolute top-3 right-3 flex h-5 w-5 items-center justify-center rounded-full",children:e.jsx(Qe,{className:"h-3 w-3 text-white"})}),e.jsx("div",{className:z("flex h-10 w-10 shrink-0 items-center justify-center rounded-lg",r?"bg-primary text-white":"bg-secondary text-muted-foreground"),children:e.jsx(m,{className:"h-5 w-5"})}),e.jsxs("div",{className:"flex-1 space-y-1 pr-6",children:[e.jsx("h3",{className:z("text-sm font-semibold",r?"text-primary":"text-foreground"),children:d.label}),e.jsx("p",{className:"text-muted-foreground text-xs",children:d.description})]})]},p)})})]})]})}function xe({isFirstLevel:c,fields:s,parentLabel:o,onChange:i,normalizeField:p,expanded:d,onToggle:r,allowItemFields:m,addLabel:u}){function S(){i([...s,{id:J(),name:"",type:"",required:!1}])}function C(h,A){i(s.map(E=>E.id===h?p(E,A):E))}function N(h,A,E){i(s.map(y=>y.id===h?{...y,[A]:E}:y))}function n(h){i(s.filter(A=>A.id!==h))}return e.jsxs("div",{className:z("bg-card rounded-lg border p-3",!c&&"ml-4"),children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsx("p",{className:"text-foreground text-xs font-semibold",children:o}),!c&&e.jsxs(w,{preset:"outline",className:"h-10 px-3!",onClick:S,children:[e.jsx(U,{className:"h-4 w-4"}),u]})]}),s.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No nested fields yet."})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1.2fr_auto_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"NAME"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"TYPE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REQUIRED"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),e.jsx("div",{className:"space-y-2 pt-2",children:s.map(h=>{const A=h.type==="object",E=h.type==="array",y=E&&h.itemType==="object",G=h.fields?.length||0,q=h.itemFields?.length||0,V=d.has(h.id);return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"grid grid-cols-[2fr_1.2fr_auto_auto] items-center gap-3",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:h.name,onChange:R=>C(h.id,{name:R.target.value}),placeholder:"Field name"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(Y,{value:h.type||void 0,onValueChange:R=>C(h.id,{type:R}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[120px] flex-1 rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"array",children:"array"})]})]}),A&&e.jsxs("button",{type:"button",onClick:()=>r(h.id),className:"text-muted-foreground hover:bg-accent flex items-center gap-1 rounded-md border border-transparent p-2 transition-colors",children:[e.jsx(de,{className:z("h-4 w-4 transition-transform",V&&"rotate-90")}),G>0&&e.jsx("span",{className:"text-muted-foreground text-xs",children:G})]}),m&&E&&e.jsxs(Y,{value:h.itemType||"string",onValueChange:R=>C(h.id,R==="object"?{itemType:R}:{itemType:R,itemFields:void 0}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[100px] rounded-[1rem] border px-3 text-xs",children:e.jsx(W,{placeholder:"Item type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"})]})]}),m&&y&&e.jsxs("button",{type:"button",onClick:()=>r(h.id),className:"text-muted-foreground hover:bg-accent flex items-center gap-1 rounded-md border border-transparent p-2 transition-colors",children:[e.jsx(de,{className:z("h-4 w-4 transition-transform",V&&"rotate-90")}),q>0&&e.jsx("span",{className:"text-muted-foreground text-xs",children:q})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(re,{checked:h.required,onCheckedChange:R=>C(h.id,{required:R===!0})})}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>n(h.id),className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]}),A&&V&&e.jsx(xe,{fields:h.fields||[],parentLabel:`Nested fields for "${h.name||"unnamed"}"`,onChange:R=>N(h.id,"fields",R),normalizeField:p,expanded:d,onToggle:r,allowItemFields:m,addLabel:"Add nested field"}),m&&y&&V&&e.jsx(xe,{fields:h.itemFields||[],parentLabel:`Item fields for "${h.name||"unnamed"}[]"`,onChange:R=>N(h.id,"itemFields",R),normalizeField:p,expanded:d,onToggle:r,allowItemFields:m,addLabel:"Add item field"})]},h.id)})})]})]})}function ys(){const{currentDialect:c,dynamoSchema:s,setDynamoSchema:o}=Q(),[i,p]=T.useState(new Set);if(!s)return null;const d=s.attributes;function r(C,N){const n={...C,...N};return N.type&&N.type!=="object"&&(n.fields=void 0),N.type&&N.type!=="array"?(n.itemType=void 0,n.itemFields=void 0):N.type==="array"&&!n.itemType&&(n.itemType="string"),n}function m(){o({...s,attributes:[...d,{id:J(),name:"",type:"",required:!1,notes:""}]})}function u(C){o({...s,attributes:C.map(N=>{const n=d.find(h=>h.id===N.id);return n?{...n,...N}:{...N}})})}function S(C){p(N=>{const n=new Set(N);return n.has(C)?n.delete(C):n.add(C),n})}return c!=="dynamodb"?e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Attributes configuration will be implemented here for ",c]})}):e.jsxs("div",{className:"space-y-4 rounded-lg border p-4 [&>*]:ml-0",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Attributes"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Describe the attributes stored on items in this table. Primary keys and indexes are defined in earlier steps."})]}),e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:m,children:[e.jsx(U,{className:"h-4 w-4"}),"Add Attribute"]})]}),e.jsx(xe,{isFirstLevel:!0,fields:d,parentLabel:"Attributes",onChange:u,normalizeField:r,expanded:i,onToggle:S,allowItemFields:!0,addLabel:"Add attribute"})]})}var js=Object.defineProperty,vs=(c,s)=>js(c,"name",{value:s,configurable:!0}),Ns="Toggle",Cs=T.forwardRef(vs(function(s,o){const{pressed:i,defaultPressed:p,onPressedChange:d,...r}=s,[m,u]=fe({prop:i,onChange:d,defaultProp:p??!1,caller:Ns});return e.jsx(me.button,{type:"button","aria-pressed":m,"data-state":m?"on":"off","data-disabled":s.disabled?"":void 0,...r,ref:o,onClick:Ge(s.onClick,()=>{s.disabled||u(!m)})})},"Toggle")),Ss=Object.defineProperty,te=(c,s)=>Ss(c,"name",{value:s,configurable:!0}),ae="ToggleGroup",[ke,it]=Oe(ae,[Se]),Te=Se(),ws=T.forwardRef(te(function(s,o){const{type:i,...p}=s;if(i==="single"){const d=p;return e.jsx(ks,{role:"radiogroup",...d,ref:o})}if(i==="multiple"){const d=p;return e.jsx(Ts,{role:"toolbar",...d,ref:o})}throw new Error(`Missing prop \`type\` expected on \`${ae}\``)},"ToggleGroup")),[Ae,Ke]=ke(ae),ks=T.forwardRef(te(function(s,o){const{value:i,defaultValue:p,onValueChange:d=te(()=>{},"onValueChange"),...r}=s,[m,u]=fe({prop:i,defaultProp:p??"",onChange:d,caller:ae});return e.jsx(Ae,{scope:s.__scopeToggleGroup,type:"single",value:T.useMemo(()=>m?[m]:[],[m]),onItemActivate:u,onItemDeactivate:T.useCallback(()=>u(""),[u]),children:e.jsx(_e,{...r,ref:o})})},"ToggleGroupImplSingle")),Ts=T.forwardRef(te(function(s,o){const{value:i,defaultValue:p,onValueChange:d=te(()=>{},"onValueChange"),...r}=s,[m,u]=fe({prop:i,defaultProp:p??[],onChange:d,caller:ae}),S=T.useCallback(N=>u((n=[])=>[...n,N]),[u]),C=T.useCallback(N=>u((n=[])=>n.filter(h=>h!==N)),[u]);return e.jsx(Ae,{scope:s.__scopeToggleGroup,type:"multiple",value:m,onItemActivate:S,onItemDeactivate:C,children:e.jsx(_e,{...r,ref:o})})},"ToggleGroupImplMultiple")),[As,Ks]=ke(ae),_e=T.forwardRef(te(function(s,o){const{__scopeToggleGroup:i,disabled:p=!1,rovingFocus:d=!0,orientation:r,dir:m,loop:u=!0,...S}=s,C=Te(i),N=$e(m),n={dir:N,...S};return e.jsx(As,{scope:i,rovingFocus:d,disabled:p,children:d?e.jsx(Je,{asChild:!0,...C,orientation:r,dir:N,loop:u,children:e.jsx(me.div,{...n,ref:o})}):e.jsx(me.div,{...n,ref:o})})},"ToggleGroupImpl")),pe="ToggleGroupItem",_s=T.forwardRef(te(function(s,o){const i=Ke(pe,s.__scopeToggleGroup),p=Ks(pe,s.__scopeToggleGroup),d=Te(s.__scopeToggleGroup),r=i.value.includes(s.value),m=p.disabled||s.disabled,u={...s,pressed:r,disabled:m},S=T.useRef(null);return p.rovingFocus?e.jsx(Ue,{asChild:!0,...d,focusable:!m,active:r,ref:S,children:e.jsx(ve,{...u,ref:o})}):e.jsx(ve,{...u,ref:o})},"ToggleGroupItem")),ve=T.forwardRef(te(function(s,o){const{__scopeToggleGroup:i,value:p,...d}=s,r=Ke(pe,i),m={role:"radio","aria-checked":s.pressed,"aria-pressed":void 0},u=r.type==="single"?m:void 0;return e.jsx(Cs,{...u,...d,ref:o,onPressedChange:S=>{S?r.onItemActivate(p):r.onItemDeactivate(p)}})},"ToggleGroupItemImpl"));const Es=Be("inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground"},size:{default:"h-9 px-2 min-w-9",sm:"h-8 px-1.5 min-w-8",lg:"h-10 px-2.5 min-w-10"}},defaultVariants:{variant:"default",size:"default"}}),Ee=T.createContext({size:"default",variant:"default"});function oe({className:c,variant:s,size:o,children:i,...p}){return e.jsx(ws,{"data-slot":"toggle-group","data-variant":s,"data-size":o,className:z("group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs",c),...p,children:e.jsx(Ee.Provider,{value:{variant:s,size:o},children:i})})}function le({className:c,children:s,variant:o,size:i,...p}){const d=T.useContext(Ee);return e.jsx(_s,{"data-slot":"toggle-group-item","data-variant":d.variant||o,"data-size":d.size||i,className:z(Es({variant:d.variant||o,size:d.size||i}),"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l",c),...p,children:s})}const Ne=[{value:"S",label:"String"},{value:"N",label:"Number"},{value:"B",label:"Binary"}];function Fs(){const{currentDialect:c,dynamoSchema:s,setDynamoSchema:o}=Q();if(!s)return null;function i(){o({...s,globalSecondaryIndexes:[...s.globalSecondaryIndexes,{id:J(),name:"",partitionKey:"",partitionKeyType:"S",sortKey:"",sortKeyType:"S"}]})}function p(r,m){o({...s,globalSecondaryIndexes:s.globalSecondaryIndexes.map(u=>u.id===r?{...u,...m}:u)})}function d(r){o({...s,globalSecondaryIndexes:s.globalSecondaryIndexes.filter(m=>m.id!==r)})}return c==="dynamodb"?e.jsxs("div",{className:"space-y-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Global Secondary Indexes (GSIs)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Add secondary indexes to enable efficient queries on different key patterns."})]}),s.globalSecondaryIndexes.length===0?e.jsxs("div",{className:"bg-secondary rounded-lg border p-8 text-center",children:[e.jsx("p",{className:"text-muted-foreground text-sm",children:"No GSIs yet"}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:"Add a Global Secondary Index to enable alternative query patterns."})]}):e.jsx("div",{className:"space-y-4",children:s.globalSecondaryIndexes.map(r=>{const m=r.sortKeyType||"S";return e.jsxs("div",{className:"bg-secondary space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Index name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:r.name,onChange:u=>p(r.id,{name:u.target.value}),placeholder:"GSI name"})]}),e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>d(r.id),className:"mt-6 h-[3.5rem] w-[3.5rem] shrink-0 p-0",children:e.jsx(se,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:[e.jsxs("div",{className:"bg-card space-y-2 rounded-lg border p-3",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Partition key"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] flex-1 rounded-[1rem] border px-4 text-sm",value:r.partitionKey,onChange:u=>p(r.id,{partitionKey:u.target.value}),placeholder:"gsi_pk"}),e.jsx(oe,{type:"single",value:r.partitionKeyType||"S",onValueChange:u=>{u&&p(r.id,{partitionKeyType:u})},className:"border-border h-[3.5rem] flex-none overflow-hidden rounded-md border shadow-none",variant:"outline",children:Ne.map(u=>{const S=(r.partitionKeyType||"S")===u.value;return e.jsx(le,{value:u.value,className:z("h-full w-[66px] px-3 text-xs font-medium transition-all","!border-0 !shadow-none first:!rounded-l-md last:!rounded-r-md",S?"bg-primary hover:bg-primary/90 focus-visible:ring-primary z-10 font-semibold text-white focus-visible:ring-2 focus-visible:ring-offset-1":"bg-card text-foreground hover:bg-accent focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-1"),children:u.label},u.value)})})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Required. Index partition key attribute name and type."})]}),e.jsxs("div",{className:z("space-y-2 rounded-lg border p-3 transition-opacity",r.sortKey?"bg-card opacity-100":"bg-card/50 opacity-60"),children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Sort key (optional)"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] flex-1 rounded-[1rem] border px-4 text-sm",value:r.sortKey||"",onChange:u=>p(r.id,{sortKey:u.target.value}),placeholder:"sk (optional)"}),e.jsx(oe,{type:"single",value:m,onValueChange:u=>{u&&p(r.id,{sortKeyType:u})},className:"border-border h-[3.5rem] flex-none overflow-hidden rounded-md border shadow-none",variant:"outline",children:Ne.map(u=>{const S=m===u.value;return e.jsx(le,{value:u.value,className:z("h-full w-[66px] px-3 text-xs font-medium transition-all","!border-0 !shadow-none first:!rounded-l-md last:!rounded-r-md",S?"bg-primary hover:bg-primary/90 focus-visible:ring-primary z-10 font-semibold text-white focus-visible:ring-2 focus-visible:ring-offset-1":"bg-card text-foreground hover:bg-accent focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-1"),children:u.label},u.value)})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-muted-foreground text-xs",children:"Optional. Index sort key attribute name and type."}),r.sortKey&&e.jsx("button",{type:"button",onClick:()=>p(r.id,{sortKey:"",sortKeyType:"S"}),className:"text-primary hover:text-primary/80 text-xs underline",children:"No sort key"})]})]})]})]},r.id)})}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:i,children:[e.jsx(U,{className:"h-4 w-4"}),"Add GSI"]})})]}):e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Index configuration will be implemented here for ",c]})})}function Is(){const{currentDialect:c}=Q();return e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Keyspace and tables configuration will be implemented here for"," ",c]})})}function Ds(){const{currentDialect:c}=Q();return e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Partitioning configuration will be implemented here for ",c]})})}const Ce=[{value:"S",label:"String"},{value:"N",label:"Number"},{value:"B",label:"Binary"}];function Ps(){const{coreSchema:c,dynamoSchema:s,setDynamoSchema:o}=Q();if(!s)return null;const i=s.primaryKey.partitionKeyType,p=s.primaryKey.sortKeyType;return e.jsxs("div",{className:"space-y-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Table name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:c.name,disabled:!0})]}),e.jsxs("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:[e.jsxs("div",{className:"bg-secondary space-y-2 rounded-lg border p-3",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Partition key"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] flex-1 rounded-[1rem] border px-4 text-sm",value:s.primaryKey.partitionKey,onChange:d=>o({...s,primaryKey:{...s.primaryKey,partitionKey:d.target.value}}),placeholder:"pk"}),e.jsx(oe,{type:"single",value:i,onValueChange:d=>{d&&o({...s,primaryKey:{...s.primaryKey,partitionKeyType:d}})},className:"border-border h-[3.5rem] flex-none overflow-hidden rounded-md border shadow-none",variant:"outline",children:Ce.map(d=>{const r=i===d.value;return e.jsx(le,{value:d.value,className:z("h-full w-[66px] px-3 text-xs font-medium transition-all","!border-0 !shadow-none first:!rounded-l-md last:!rounded-r-md",r?"bg-primary hover:bg-primary/90 focus-visible:ring-primary z-10 font-semibold text-white focus-visible:ring-2 focus-visible:ring-offset-1":"bg-card text-foreground hover:bg-accent focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-1"),children:d.label},d.value)})})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Required. Primary partition key attribute name and type."})]}),e.jsxs("div",{className:z("space-y-2 rounded-lg border p-3 transition-opacity",s.primaryKey.sortKey?"bg-secondary opacity-100":"bg-secondary/50 opacity-60"),children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Sort key"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] flex-1 rounded-[1rem] border px-4 text-sm",value:s.primaryKey.sortKey,onChange:d=>o({...s,primaryKey:{...s.primaryKey,sortKey:d.target.value}}),placeholder:"sk (optional)"}),e.jsx(oe,{type:"single",value:p,onValueChange:d=>{d&&o({...s,primaryKey:{...s.primaryKey,sortKeyType:d}})},className:"border-border h-[3.5rem] flex-none overflow-hidden rounded-md border shadow-none",variant:"outline",children:Ce.map(d=>{const r=p===d.value;return e.jsx(le,{value:d.value,className:z("h-full w-[66px] px-3 text-xs font-medium transition-all","!border-0 !shadow-none first:!rounded-l-md last:!rounded-r-md",r?"bg-primary hover:bg-primary/90 focus-visible:ring-primary z-10 font-semibold text-white focus-visible:ring-2 focus-visible:ring-offset-1":"bg-card text-foreground hover:bg-accent focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-1"),children:d.label},d.value)})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-muted-foreground text-xs",children:"Optional. Primary sort key attribute name and type."}),s.primaryKey.sortKey&&e.jsx("button",{type:"button",onClick:()=>o({...s,primaryKey:{...s.primaryKey,sortKey:""}}),className:"text-primary hover:text-primary/80 text-xs underline",children:"No sort key"})]})]})]})]})}function Gs(){const{coreSchema:c,currentDialect:s,mongoSchema:o}=Q();return s==="mongodb"?o?e.jsxs("div",{className:"space-y-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Review schema"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Review your MongoDB database, collections, and indexes before saving."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"bg-secondary rounded-lg border p-4",children:[e.jsx("p",{className:"text-foreground mb-1 text-xs font-semibold",children:"Database"}),e.jsx("p",{className:"text-sm font-medium",children:c.name||"Unnamed"}),c.description&&e.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:c.description})]}),o.collections.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No collections defined"})}):e.jsx("div",{className:"space-y-3",children:o.collections.map(i=>{const p=i.fields.length,d=i.indexes.length,r=i.fields.filter(u=>u.name.trim()!=="").map(u=>u.name).slice(0,5),m=i.indexes.filter(u=>u.name.trim()!=="").map(u=>u.name).slice(0,5);return e.jsxs("div",{className:"bg-secondary rounded-lg border p-4",children:[e.jsxs("p",{className:"text-foreground mb-1 text-xs font-semibold",children:['Collection "',i.name,'"']}),e.jsxs("p",{className:"text-muted-foreground text-sm",children:[p," field",p!==1?"s":""," ·"," ",d," index",d!==1?"es":""]}),r.length>0&&e.jsxs("div",{className:"mt-2",children:[e.jsx("p",{className:"text-muted-foreground mb-1 text-xs",children:"Fields:"}),e.jsxs("p",{className:"text-muted-foreground text-xs",children:[r.join(", "),i.fields.length>5&&"..."]})]}),m.length>0&&e.jsxs("div",{className:"mt-2",children:[e.jsx("p",{className:"text-muted-foreground mb-1 text-xs",children:"Indexes:"}),e.jsxs("p",{className:"text-muted-foreground text-xs",children:[m.join(", "),i.indexes.length>5&&"..."]})]})]},i.id)})})]})]}):null:e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Review step will be implemented here for ",s]})})}function Os(){const{coreSchema:c,dynamoSchema:s,setDynamoSchema:o}=Q();if(!s)return null;function i(){o({...s,globalSecondaryIndexes:[...s.globalSecondaryIndexes,{id:J(),name:"",partitionKey:"",partitionKeyType:"S",sortKey:"",sortKeyType:"S"}]})}function p(r,m){o({...s,globalSecondaryIndexes:s.globalSecondaryIndexes.map(u=>u.id===r?{...u,...m}:u)})}function d(r){o({...s,globalSecondaryIndexes:s.globalSecondaryIndexes.filter(m=>m.id!==r)})}return e.jsxs("div",{className:"space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("div",{className:"min-w-[220px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Table name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:c.name,disabled:!0})]}),e.jsxs("div",{className:"min-w-[220px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Partition key"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:s.primaryKey.partitionKey,onChange:r=>o({...s,primaryKey:{...s.primaryKey,partitionKey:r.target.value}}),placeholder:"pk"})]}),e.jsxs("div",{className:"min-w-[220px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Sort key"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:s.primaryKey.sortKey,onChange:r=>o({...s,primaryKey:{...s.primaryKey,sortKey:r.target.value}}),placeholder:"sk (optional)"})]})]}),e.jsxs("div",{className:"bg-secondary space-y-2 rounded-lg border p-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Global Secondary Indexes (GSIs)"}),e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:i,children:[e.jsx(U,{className:"h-4 w-4"}),"Add GSI"]})]}),s.globalSecondaryIndexes.length===0&&e.jsx("div",{className:"text-paragraph text-xs",children:"No GSIs yet"}),s.globalSecondaryIndexes.map(r=>e.jsxs("div",{className:"bg-card flex flex-wrap items-start gap-2 rounded border p-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[160px] flex-1 rounded-[1rem] border px-4 text-sm",value:r.name,onChange:m=>p(r.id,{name:m.target.value}),placeholder:"GSI name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[160px] flex-1 rounded-[1rem] border px-4 text-sm",value:r.partitionKey,onChange:m=>p(r.id,{partitionKey:m.target.value}),placeholder:"Partition key"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[160px] flex-1 rounded-[1rem] border px-4 text-sm",value:r.sortKey||"",onChange:m=>p(r.id,{sortKey:m.target.value}),placeholder:"Sort key (optional)"}),e.jsx("div",{className:"flex w-full justify-end",children:e.jsx(w,{size:"sm",preset:"outline",onClick:()=>d(r.id),children:"Remove"})})]},r.id))]})]})}function qs({editorValue:c,hasEditorChanges:s,setEditorValue:o,applyEditorChanges:i}){const p=T.useRef(null),[d,r]=T.useState(0);return T.useEffect(()=>{const m=p.current;if(!m)return;function u(){r(m.clientHeight)}const S=new ResizeObserver(u);return S.observe(m),u(),()=>S.disconnect()},[p]),e.jsxs("div",{ref:p,className:"relative h-full",children:[e.jsx(Me,{basicSetup:{lineNumbers:!1,foldGutter:!1,foldKeymap:!1,searchKeymap:!1},value:c??"",onChange:o,className:"[&_.cm-editor]:p-1",height:`${d}px`,disableWordWrap:!0}),s?e.jsx(w,{preset:"primary",className:"absolute top-3 right-3 h-9 px-3!",onClick:i,children:"Apply"},"apply"):e.jsx(w,{preset:"outline",className:"absolute top-3 right-3 h-9 px-3!",onClick:async()=>{await navigator.clipboard.writeText(c),D.success("JSON copied")},children:"Copy"},"copy")]})}function Ms(){const{currentDialect:c,dynamoSchema:s,setDynamoSchema:o,mongoSchema:i,setMongoSchema:p,jsonSchema:d,setJsonSchema:r}=Q(),[m,u]=T.useState(""),[S,C]=T.useState(!1),N=c==="dynamodb"?s:c==="mongodb"?i:d;T.useEffect(()=>{const h=JSON.stringify(N,null,2);u(h),C(!1)},[N]);function n(h){let A;try{A=JSON.parse(h)}catch{D.error("Invalid JSON");return}if(typeof A!="object"||A===null){D.error("Schema must be an object");return}if(c==="mongodb"){const E=ge.safeParse(A);if(!E.success){D.error("MongoDB schema is invalid");return}p(E.data),D.success("Schema updated");return}if(c==="dynamodb"){const E=he.safeParse(A);if(!E.success){D.error("DynamoDB schema is invalid");return}o(E.data),D.success("Schema updated");return}if(c==="json"){const E=be.safeParse(A);if(!E.success){D.error("JSON schema is invalid");return}r(E.data),D.success("Schema updated");return}D.error("Unknown dialect")}return e.jsx(qs,{editorValue:m,hasEditorChanges:S,applyEditorChanges:()=>n(m),setEditorValue:h=>{u(h),C(!0)}})}function Rs(){const{coreSchema:c,currentDialect:s,currentStepId:o,currentStepIndex:i,dialectConfig:p,canGoBack:d,goToNextStep:r,goToPreviousStep:m,goToStep:u,dynamoSchema:S,mongoSchema:C,jsonSchema:N,initialDataSource:n,isSubmitting:h,setIsSubmitting:A,onSchemaSubmit:E,onOpenChange:y}=Q();function G(){if(o==="basic"&&!c.name.trim()){D.error(s==="dynamodb"?"Table name is required":"Database name is required");return}if(s==="dynamodb"&&o==="tableKeys"&&!S?.primaryKey.partitionKey.trim()){D.error("Partition key is required");return}r()}function q(){if(!c.name.trim())return D.error(s==="dynamodb"?"Table name is required":"Database name is required"),!1;if(s==="mongodb"&&C){const F=ge.safeParse(C);return F.success?!0:(D.error(F.error.issues[0]?.message??"Schema is invalid"),!1)}if(s==="dynamodb"&&S){const F=he.safeParse(S);return F.success?!0:(D.error(F.error.issues[0]?.message??"Schema is invalid"),!1)}if(s==="json"&&N){const F=be.safeParse(N);return F.success?!0:(D.error(F.error.issues[0]?.message??"Schema is invalid"),!1)}return!1}async function V(){if(!q())return;const F=s==="dynamodb"&&S?rs(S):s==="mongodb"&&C?ns(C):s==="json"&&N?as(N):null;if(F){if((!F.tables||F.tables.length===0)&&s!=="mongodb"){D.error("Schema must include at least one collection or entity");return}try{A(!0),await E({id:n?.id??Re(),name:c.name,sourceType:"editor",sourceContent:s==="mongodb"?C:s==="dynamodb"?S:s==="json"?N:void 0,dialect:F.dialect,schemaAst:F,createdAt:n?.createdAt??Date.now(),modifiedAt:n?.modifiedAt??null})}finally{A(!1)}}}function R(){if(!s)return e.jsx(bs,{});if(!o||!p)return null;switch(o){case"basic":return e.jsx(ps,{});case"tableKeys":return s==="dynamodb"?e.jsx(Ps,{}):e.jsx(Os,{});case"indexes":return e.jsx(Fs,{});case"entities":return e.jsx(ys,{});case"collections":return e.jsx(gs,{});case"keyspaceTables":return e.jsx(Is,{});case"partitioning":return e.jsx(Ds,{});case"review":return e.jsx(Gs,{});default:return null}}const Z=s&&p&&i===p.steps.length-1,L=s!==null&&o!==null,$=!s;function _(){y&&y(!1)}const ee=s==="dynamodb"?"Design DynamoDB table":s==="mongodb"?"Design MongoDB database":"Create NoSQL Database",M=s==="dynamodb"?"Design your DynamoDB table schema":s==="mongodb"?"Create MongoDB collections, fields, and indexes with a guided editor.":"Create NoSQL databases with a guided editor";return e.jsxs(Ie,{title:ee,description:M,className:"flex gap-4",_footerContent:e.jsxs(Le,{className:"flex items-center justify-between! gap-3 px-6 pt-2 pb-4",children:[e.jsx("div",{children:$&&e.jsx(w,{preset:"outline",onClick:_,children:"Cancel"})}),e.jsxs("div",{className:"flex items-center gap-3",children:[d&&!$&&e.jsxs(w,{preset:"outline",onClick:m,children:[e.jsx(Ye,{}),"Back"]}),$?e.jsxs(w,{preset:"primary",onClick:r,disabled:!s,children:["Next",e.jsx(ye,{})]}):L&&!Z?e.jsxs(w,{preset:"primary",onClick:G,children:["Next",e.jsx(ye,{})]}):L&&Z?e.jsxs(w,{preset:"primary",disabled:h,onClick:V,children:[h?e.jsx(ze,{}):e.jsx(Ve,{}),"Save Database"]}):null]})]}),children:[e.jsxs("div",{className:"flex min-h-[38rem] min-w-[320px] flex-1 flex-col gap-4",children:[s&&p&&e.jsx("div",{className:"flex items-center gap-3",children:p.steps.map((F,a)=>{const j=ds(F,s),t=a===i,x=a<i;return e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:()=>u(a),className:z("flex items-center gap-2 rounded-full border p-1 pr-3 text-xs font-semibold transition-colors",t?"border-primary text-primary":x?"border-primary/50 text-primary/70":"border-stock text-paragraph"),children:[e.jsx("span",{className:z("flex h-6 w-6 items-center justify-center rounded-full text-center",t?"bg-primary text-white":x?"bg-primary/20 text-primary":"bg-muted text-muted-foreground"),children:a+1}),j]}),a<p.steps.length-1&&e.jsx("div",{className:z("h-px flex-1",x?"bg-primary/50":"bg-stock")})]},F)})}),R()]}),e.jsx("div",{className:"sticky top-0 flex w-[18rem] overflow-hidden",children:e.jsxs("div",{className:"bg-secondary absolute flex size-full flex-col overflow-hidden rounded-lg border",children:[e.jsx("div",{className:"flex items-center justify-between border-b px-3 py-2",children:e.jsx("p",{className:"text-sm font-semibold",children:"Generated schema JSON"})}),s&&p?e.jsx(Ms,{}):e.jsx("div",{className:"flex h-full items-center justify-center p-6",children:e.jsx("p",{className:"text-muted-foreground text-center text-sm",children:"We'll generate the schema JSON after you configure your database."})})]})})]})}function dt({open:c,onOpenChange:s,...o}){return e.jsx(De,{open:c,onOpenChange:s,className:"[--width:75rem]",children:e.jsx(xs,{...o,onOpenChange:s,children:e.jsx(Rs,{})})})}export{dt as N,oe as T,ns as a,as as b,rs as c,le as d};
|
|
21
|
+
*/const ts=[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]],rs=me("table",ts);function ve(c){switch(c){case"S":return"string";case"N":return"number";case"B":return"binary";default:return"string"}}function ns(c){const s=c.primaryKey.partitionKey,o=c.primaryKey.partitionKeyType,i=c.primaryKey.sortKey,p=c.primaryKey.sortKeyType,d=[],r=new Map;(c.attributes||[]).forEach(n=>{const h=n.name.trim();!h||r.has(h)||(r.set(h,n),d.push(n))});const m=c.name?.trim()||"dynamodb_table",u=[{type:"column",name:s,dataType:{name:ve(o||"string")},nullable:!1,comment:void 0}];i&&u.push({type:"column",name:i,dataType:{name:ve(p||"string")},nullable:!1,comment:void 0});const S=d.map(n=>({type:"column",name:n.name,dataType:{name:n.type},nullable:!n.required,comment:n.notes})),C=c.globalSecondaryIndexes.map(n=>({type:"index",name:n.name||"gsi",columns:[{name:n.partitionKey||s},...n.sortKey?[{name:n.sortKey}]:[]],unique:!1}));return{dialect:"dynamodb",tables:[{type:"table",id:J(),name:m,columns:[...u,...S],constraints:[{type:"primary_key",columns:i?[s,i]:[s]}],indexes:C,options:{comment:c.description}}],metadata:{createdAt:new Date}}}function as(c){return{dialect:"mongodb",tables:c.collections.map(o=>{function i(r,m=""){const u=[],S=m?`${m}.${r.name}`:r.name;if(r.type==="array"){const C=r.itemType||"string";C==="object"&&r.itemFields?r.itemFields.forEach(N=>{u.push(...i(N,`${S}[]`))}):u.push({type:"column",name:S,dataType:{name:`${C}[]`},nullable:!r.required})}else r.type==="object"&&r.fields?r.fields.forEach(C=>{u.push(...i(C,S))}):u.push({type:"column",name:S,dataType:{name:r.type},nullable:!r.required});return u}const p=o.fields.flatMap(r=>i(r)),d=o.indexes.map(r=>({type:"index",name:r.name||`idx_${o.name}`,columns:r.fields.map(m=>({name:m.fieldName})),unique:r.unique}));return{type:"table",id:o.id,name:o.name,columns:p,constraints:[],indexes:d,options:{comment:o.description}}}),metadata:{createdAt:new Date}}}function is(c){function s(i,p=""){const d=[],r=p?`${p}.${i.name}`:i.name;if(i.type==="array"){const m=i.itemType||"string";m==="object"&&i.itemFields?i.itemFields.forEach(u=>{d.push(...s(u,`${r}[]`))}):d.push({type:"column",name:r,dataType:{name:`${m}[]`},nullable:!i.required,comment:"notes"in i?i.notes:void 0})}else i.type==="object"&&i.fields?i.fields.forEach(m=>{d.push(...s(m,r))}):d.push({type:"column",name:r,dataType:{name:i.type},nullable:!i.required,comment:"notes"in i?i.notes:void 0});return d}return{dialect:"json",tables:c.collections.map(i=>{const p=i.fields.flatMap(m=>s(m)),d=i.fields.filter(m=>m.reference?.collectionId).map(m=>{const u=c.collections.find(C=>C.id===m.reference?.collectionId),S=u?.fields.find(C=>C.id===m.reference?.fieldId);return{type:"foreign_key",columns:[m.name],referencedTable:u?.name||"",referencedColumns:S?[S.name]:["id"]}}),r=i.indexes.map(m=>({type:"index",name:m.name||`idx_${i.name}`,columns:m.fields.map(u=>({name:u})),unique:m.unique,where:m.ttl?`ttl:${m.ttl}`:void 0}));return{type:"table",id:i.id,name:i.name,columns:p,constraints:d,indexes:r,options:{comment:i.description}}}),metadata:{createdAt:new Date}}}const ke={dynamodb:{id:"dynamodb",label:"DynamoDB",description:"Amazon DynamoDB - NoSQL database service",isNotAvailable:!1,icon:rs,steps:["basic","tableKeys","indexes","entities"]},mongodb:{id:"mongodb",label:"MongoDB",description:"MongoDB - Document database",isNotAvailable:!1,icon:qe,steps:["basic","collections","review"]},cassandra:{id:"cassandra",label:"Cassandra",description:"Apache Cassandra - Wide-column store",isNotAvailable:!0,icon:ss,steps:["basic","keyspaceTables","partitioning","indexes"]},json:{id:"json",label:"NoSQL JSON / Other",description:"Generic NoSQL JSON schema",isNotAvailable:!0,icon:Ze,steps:["basic","collections"]}};function ds(c){return ke[c]}function os(c,s){return s==="dynamodb"?{basic:"Basic info",tableKeys:"Primary keys",indexes:"Indexes",entities:"Attributes",collections:"Collections",keyspaceTables:"Keyspace & Tables",partitioning:"Partitioning",review:"Review"}[c]||c:s==="mongodb"?{basic:"Basic info",collections:"Collections",review:"Review",tableKeys:"Table Keys",indexes:"Indexes",entities:"Entities",keyspaceTables:"Keyspace & Tables",partitioning:"Partitioning"}[c]||c:{basic:"Basic Info",tableKeys:"Table Keys",indexes:"Indexes",entities:"Entities",collections:"Collections",keyspaceTables:"Keyspace & Tables",partitioning:"Partitioning",review:"Review"}[c]||c}const ls={name:"",description:"",dialect:"dynamodb",primaryKey:{partitionKey:"",partitionKeyType:"S",sortKey:"",sortKeyType:"S"},globalSecondaryIndexes:[],attributes:[]},cs={name:"",description:"",dialect:"mongodb",collections:[]},ms={name:"",description:"",dialect:"json",collections:[]},us=["dynamodb","mongodb","json"];function xs(c){return us.includes(c)}const[ps,Q]=Ge(({onSchemaSubmit:c,initialDialect:s,initialDataSource:o,onOpenChange:i})=>{const p=o&&xs(o.dialect)?o.dialect:s??null,[d,r]=T.useState(()=>p),[m,u]=T.useState(()=>{if(o?.dialect==="dynamodb"&&o.sourceContent){const q=ge.safeParse(o.sourceContent);if(q.success)return q.data}return ls}),[S,C]=T.useState(()=>{if(o?.dialect==="mongodb"&&o.sourceContent){const q=be.safeParse(o.sourceContent);if(q.success)return q.data}return cs}),[N,n]=T.useState(()=>{if(o?.dialect==="json"&&o.sourceContent){const q=ye.safeParse(o.sourceContent);if(q.success)return q.data}return ms}),[h,A]=T.useState(0),[E,y]=T.useState(!1),G=d?ds(d):null,O=d?G?.steps[h]||null:"dialect-selection",V=d?G?.steps.length||0:1,R=d?h<(G?.steps.length||0)-1:!1,Z=h>0||h===0&&d!==null;function L(q){r(q),A(0)}function $(){!d||!G||h<G.steps.length-1&&A(h+1)}function _(){h>0?A(h-1):d!==null&&(r(null),A(0))}function ee(q){!d||!G||q>=0&&q<G.steps.length&&A(q)}return{currentDialect:d,setCurrentDialect:L,coreSchema:{name:d==="dynamodb"?m.name:d==="mongodb"?S.name:d==="json"?N.name:"",description:d==="dynamodb"?m.description:d==="mongodb"?S.description:d==="json"?N.description:""},setCoreSchema(q){d==="dynamodb"?u(F=>({...F,...q})):d==="mongodb"?C(F=>({...F,...q})):d==="json"&&n(F=>({...F,...q}))},currentStepIndex:h,currentStepId:O,dialectConfig:G,totalSteps:V,canGoNext:R,canGoBack:Z,goToNextStep:$,goToPreviousStep:_,goToStep:ee,isSubmitting:E,setIsSubmitting:y,dynamoSchema:m,setDynamoSchema:u,mongoSchema:S,setMongoSchema:C,jsonSchema:N,setJsonSchema:n,initialDataSource:o,onSchemaSubmit:c,onOpenChange:i}});function fs(){const{currentDialect:c,coreSchema:s,setCoreSchema:o}=Q(),i=c==="dynamodb"?"Table name":"Database name",p=c==="mongodb"?"Used as the MongoDB database name.":void 0;return e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("div",{className:"min-w-[240px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:i}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:s.name,onChange:d=>o({name:d.target.value}),placeholder:c==="dynamodb"?"my-table":c==="mongodb"?"my-database":"BillingDB"}),p&&e.jsx("p",{className:"text-muted-foreground text-xs",children:p})]}),e.jsxs("div",{className:"w-full space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Description"}),e.jsx(ie,{className:"border-stock text-foreground bg-card w-full rounded-[1rem] border p-4 text-sm",value:s.description,onChange:d=>o({description:d.target.value}),placeholder:"Describe the database purpose"})]})]})})}function hs(){const{jsonSchema:c,setJsonSchema:s}=Q(),o=c.collections;function i(a){s({...c,collections:a(c.collections)})}const[p,d]=T.useState(null),[r,m]=T.useState("fields"),[u,S]=T.useState(""),[C,N]=T.useState(new Map),n=T.useMemo(()=>o.find(a=>a.id===p)||null,[o,p]);function h(){const a=J(),j={id:a,name:`collection_${o.length+1}`,description:"",tags:"",fields:[],indexes:[]};i(t=>[...t,j]),d(a)}function A(a,j){i(t=>t.map(x=>x.id===a?{...x,...j}:x))}function E(a){i(j=>j.map(t=>t.id===a?{...t,fields:[...t.fields,{id:J(),name:"",type:"",required:!1,isArray:!1}]}:t))}function y(a,j,t){i(x=>x.map(l=>l.id===a?{...l,fields:l.fields.map(f=>f.id===j?{...f,fields:t}:f)}:l))}function G(a,j){const t=o.find(f=>f.id===a);if(!t)return;const x=t.fields.find(f=>f.id===j);if(!x)return;const l=x.fields||[];y(a,j,[...l,{id:J(),name:"",type:"",required:!1}])}function O(a,j,t,x){const l=o.find(g=>g.id===a);if(!l)return;const f=l.fields.find(g=>g.id===j);!f||!f.fields||y(a,j,f.fields.map(g=>g.id===t?{...g,...x}:g))}function V(a,j,t){const x=o.find(f=>f.id===a);if(!x)return;const l=x.fields.find(f=>f.id===j);!l||!l.fields||y(a,j,l.fields.filter(f=>f.id!==t))}function R(a,j){N(t=>{const x=new Map(t),l=x.get(a)||new Set;return l.has(j)?l.delete(j):l.add(j),x.set(a,l),x})}function Z(a,j){return C.get(a)?.has(j)||!1}function L(a,j,t){i(x=>x.map(l=>l.id===a?{...l,fields:l.fields.map(f=>{if(f.id===j){const g={...f,...t};return t.type&&t.type!=="object"&&(g.fields=void 0),t.type&&t.type!=="array"?(g.itemType=void 0,g.itemFields=void 0):t.type==="array"&&!g.itemType&&(g.itemType="string"),g}return f})}:l))}function $(a,j){i(t=>t.map(x=>x.id===a?{...x,fields:x.fields.filter(l=>l.id!==j)}:x))}function _(a){i(j=>j.map(t=>t.id===a?{...t,indexes:[...t.indexes,{id:J(),name:`idx_${t.indexes.length+1}`,fields:[],unique:!1,ttl:""}]}:t))}function ee(a,j,t){i(x=>x.map(l=>l.id===a?{...l,indexes:l.indexes.map(f=>f.id===j?{...f,...t}:f)}:l))}function q(a,j){i(t=>t.map(x=>x.id===a?{...x,indexes:x.indexes.filter(l=>l.id!==j)}:x))}function F(){if(n)try{let a=function(f,g){const K={id:J(),name:f,type:Array.isArray(g)?"array":g===null?"mixed":typeof g=="number"?"number":typeof g=="boolean"?"boolean":typeof g=="object"?"object":"string",required:!0,isArray:!1};if(Array.isArray(g))if(K.type="array",g.length>0){const D=g[0];K.itemType=typeof D=="number"?"number":typeof D=="boolean"?"boolean":typeof D=="object"&&D!==null?"object":"string",typeof D=="object"&&D!==null&&!Array.isArray(D)&&(K.itemFields=Object.entries(D).map(([v,k])=>a(v,k)))}else K.itemType="string";else typeof g=="object"&&g!==null&&!Array.isArray(g)&&(K.fields=Object.entries(g).map(([D,v])=>a(D,v)));return K};const j=JSON.parse(u||"{}"),t=Array.isArray(j)?j[0]||{}:j;if(!t||typeof t!="object"){I.error("Sample document must be an object");return}const x=Object.entries(t);if(!x.length){I.error("Sample document is empty");return}const l=x.map(([f,g])=>a(f,g));A(n.id,{fields:l}),I.success("Fields inferred from sample")}catch{I.error("Invalid JSON sample")}}return e.jsxs("div",{className:"space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Collections"}),e.jsxs(w,{size:"sm",onClick:h,children:[e.jsx(U,{className:"h-4 w-4"}),"Add Collection"]})]}),e.jsxs("div",{className:"flex flex-col gap-3 lg:flex-row",children:[e.jsxs("div",{className:"w-full max-w-[320px] space-y-2 rounded-lg border p-2",children:[o.length===0&&e.jsx("div",{className:"text-paragraph p-2 text-xs",children:"No collections yet"}),o.map(a=>e.jsxs("div",{className:z("cursor-pointer rounded border p-2 text-sm",p===a.id?"border-primary bg-primary/10":"border-stock"),onClick:()=>d(a.id),children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:a.name,onChange:j=>A(a.id,{name:j.target.value})}),e.jsxs("p",{className:"text-paragraph mt-1 text-xs",children:[a.fields.length," fields • ",a.indexes.length," ","indexes"]})]},a.id))]}),e.jsx("div",{className:"flex-1 space-y-3 rounded-lg border p-3",children:n?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("div",{className:"min-w-[220px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Display label"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:n.label||"",onChange:a=>A(n.id,{label:a.target.value}),placeholder:"Invoices"})]}),e.jsxs("div",{className:"min-w-[220px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Tags"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:n.tags||"",onChange:a=>A(n.id,{tags:a.target.value}),placeholder:"billing,finance"})]}),e.jsxs("div",{className:"w-full space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Description"}),e.jsx(ie,{className:"border-stock text-foreground bg-card w-full rounded-[1rem] border p-4 text-sm",value:n.description||"",onChange:a=>A(n.id,{description:a.target.value})})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(w,{size:"sm",preset:r==="fields"?"primary":"outline",onClick:()=>m("fields"),children:"Fields"}),e.jsx(w,{size:"sm",preset:r==="indexes"?"primary":"outline",onClick:()=>m("indexes"),children:"Indexes"})]}),r==="fields"&&e.jsxs(w,{size:"sm",onClick:()=>E(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add field"]}),r==="indexes"&&e.jsxs(w,{size:"sm",onClick:()=>_(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add index"]})]}),r==="fields"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Fields"}),e.jsxs(w,{size:"sm",onClick:()=>E(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add Field"]})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Define the fields in this collection. Fields can be nested objects or arrays."})]}),n.fields.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-muted-foreground text-sm",children:"No fields yet."}),e.jsxs(w,{size:"sm",onClick:()=>E(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add Field"]})]})}):e.jsxs("div",{className:"bg-secondary rounded-lg border p-3",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1.5fr_auto_1fr_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"NAME"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"TYPE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REQUIRED"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REFERENCE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),e.jsx("div",{className:"space-y-2 pt-2",children:n.fields.map(a=>{const j=n.fields.length>1,t=a.type==="object",x=a.type==="array",l=x&&a.itemType==="object",f=a.fields?.length||0,g=a.itemFields?.length||0,K=Z(n.id,a.id),D=a.fields||[];return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"grid grid-cols-[2fr_1.5fr_auto_1fr_auto] items-center gap-3",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:a.name,onChange:v=>L(n.id,a.id,{name:v.target.value}),placeholder:"Field name"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(Y,{value:a.type||void 0,onValueChange:v=>{const k={type:v};v!=="object"&&(k.fields=void 0,N(B=>{const M=new Map(B),ne=M.get(n.id)||new Set;return ne.delete(a.id),M.set(n.id,ne),M})),v!=="array"?(k.itemType=void 0,k.itemFields=void 0):a.itemType||(k.itemType="string"),v==="array"&&(k.isArray=!1),L(n.id,a.id,k)},children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[120px] flex-1 rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"array",children:"array"}),e.jsx(b,{value:"mixed",children:"mixed"}),e.jsx(b,{value:"reference",children:"reference"})]})]}),t&&e.jsxs(w,{size:"sm",variant:"ghost",onClick:()=>R(n.id,a.id),className:"h-[3.5rem] text-xs whitespace-nowrap",children:["Edit fields",f>0&&e.jsxs("span",{className:"text-muted-foreground ml-1",children:["· ",f]})]}),x&&e.jsxs(Y,{value:a.itemType||"string",onValueChange:v=>{const k={itemType:v};v!=="object"&&(k.itemFields=void 0),L(n.id,a.id,k)},children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[100px] rounded-[1rem] border px-3 text-xs",children:e.jsx(W,{placeholder:"Item type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"})]})]}),l&&e.jsxs(w,{size:"sm",variant:"ghost",onClick:()=>R(n.id,a.id),className:"h-[3.5rem] text-xs whitespace-nowrap",children:["Edit item fields",g>0&&e.jsxs("span",{className:"text-muted-foreground ml-1",children:["· ",g]})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(re,{checked:a.required,onCheckedChange:v=>L(n.id,a.id,{required:!!v})})}),e.jsxs(Y,{value:a.reference?.collectionId||"",onValueChange:v=>L(n.id,a.id,{reference:v?{collectionId:v}:void 0}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Reference"})}),e.jsxs(X,{children:[e.jsx(b,{value:"__none__",children:"No reference"}),o.filter(v=>v.id!==n.id).map(v=>e.jsx(b,{value:v.id,children:v.name},v.id))]})]}),e.jsx("div",{className:"flex items-center justify-center",children:j&&e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>$(n.id,a.id),className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]}),t&&K&&e.jsxs("div",{className:"bg-card ml-4 rounded-lg border p-3",children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsxs("p",{className:"text-foreground text-xs font-semibold",children:['Nested fields for "',a.name||"unnamed",'"']}),e.jsxs(w,{size:"sm",onClick:()=>G(n.id,a.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add nested field"]})]}),D.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No nested fields yet."})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1.2fr_auto_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"NAME"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"TYPE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REQUIRED"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),e.jsx("div",{className:"space-y-2 pt-2",children:D.map(v=>{const k=D.length>1;return e.jsxs("div",{className:"grid grid-cols-[2fr_1.2fr_auto_auto] items-center gap-3",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:v.name,onChange:B=>O(n.id,a.id,v.id,{name:B.target.value}),placeholder:"Field name"}),e.jsxs(Y,{value:v.type||void 0,onValueChange:B=>O(n.id,a.id,v.id,{type:B}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"array",children:"array"}),e.jsx(b,{value:"mixed",children:"mixed"})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(re,{checked:v.required,onCheckedChange:B=>O(n.id,a.id,v.id,{required:B===!0})})}),e.jsx("div",{className:"flex items-center justify-center",children:k&&e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>V(n.id,a.id,v.id),className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]},v.id)})})]})]}),l&&K&&e.jsxs("div",{className:"bg-card ml-4 rounded-lg border p-3",children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsxs("p",{className:"text-foreground text-xs font-semibold",children:['Item fields for "',a.name||"unnamed",'[]"']}),e.jsxs(w,{size:"sm",onClick:()=>{const v=a.itemFields||[];L(n.id,a.id,{itemFields:[...v,{id:J(),name:"",type:"",required:!1}]})},children:[e.jsx(U,{className:"h-4 w-4"}),"Add item field"]})]}),(a.itemFields||[]).length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No item fields yet."})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1.2fr_auto_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"NAME"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"TYPE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REQUIRED"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),e.jsx("div",{className:"space-y-2 pt-2",children:(a.itemFields||[]).map(v=>e.jsxs("div",{className:"grid grid-cols-[2fr_1.2fr_auto_auto] items-center gap-3",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:v.name,onChange:k=>{const B=a.itemFields||[];L(n.id,a.id,{itemFields:B.map(M=>M.id===v.id?{...M,name:k.target.value}:M)})},placeholder:"Field name"}),e.jsxs(Y,{value:v.type||void 0,onValueChange:k=>{const B=a.itemFields||[];L(n.id,a.id,{itemFields:B.map(M=>M.id===v.id?{...M,type:k}:M)})},children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"array",children:"array"}),e.jsx(b,{value:"mixed",children:"mixed"})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(re,{checked:v.required,onCheckedChange:k=>{const B=a.itemFields||[];L(n.id,a.id,{itemFields:B.map(M=>M.id===v.id?{...M,required:k===!0}:M)})}})}),e.jsx("div",{className:"flex items-center justify-center",children:(a.itemFields||[]).length>1&&e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>{const k=a.itemFields||[];L(n.id,a.id,{itemFields:k.filter(B=>B.id!==v.id)})},className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]},v.id))})]})]})]},a.id)})})]}),e.jsxs("div",{className:"bg-secondary space-y-2 rounded border p-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-foreground text-xs font-semibold",children:"Sample document inference"}),e.jsx(w,{size:"sm",preset:"outline",onClick:F,children:"Infer fields"})]}),e.jsx(ie,{className:"border-stock text-foreground bg-card h-32 w-full rounded-[1rem] border p-4 text-sm",value:u,onChange:a=>S(a.target.value),placeholder:"Paste a sample JSON document"})]})]}),r==="indexes"&&e.jsx("div",{className:"space-y-2",children:n.indexes.map(a=>e.jsxs("div",{className:"flex flex-wrap items-start gap-2 rounded border p-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[160px] flex-1 rounded-[1rem] border px-4 text-sm",value:a.name,onChange:j=>ee(n.id,a.id,{name:j.target.value}),placeholder:"Index name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[200px] flex-1 rounded-[1rem] border px-4 text-sm",value:a.fields.join(", "),onChange:j=>ee(n.id,a.id,{fields:j.target.value.split(",").map(t=>t.trim()).filter(Boolean)}),placeholder:"Fields (comma separated)"}),e.jsxs("div",{className:"flex min-w-[120px] items-center gap-2",children:[e.jsx(re,{checked:a.unique,onCheckedChange:j=>ee(n.id,a.id,{unique:!!j})}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Unique"})]}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[140px] flex-1 rounded-[1rem] border px-4 text-sm",value:a.ttl||"",onChange:j=>ee(n.id,a.id,{ttl:j.target.value}),placeholder:"TTL (sec)"}),e.jsx("div",{className:"flex w-full justify-end",children:e.jsx(w,{size:"sm",preset:"outline",onClick:()=>q(n.id,a.id),children:"Remove"})})]},a.id))})]}):e.jsx("div",{className:"text-paragraph text-sm",children:"Select a collection to edit fields and indexes"})})]})]})}function xe({isFirstLevel:c,fields:s,parentLabel:o,onChange:i,normalizeField:p,expanded:d,onToggle:r,onCollapse:m,allowItemFields:u,addLabel:S,collections:C,currentCollectionId:N}){function n(){i([...s,{id:J(),name:"",type:"string",required:!1}])}function h(y,G){i(s.map(O=>O.id===y?p(O,G):O))}function A(y,G,O){i(s.map(V=>V.id===y?{...V,[G]:O}:V))}function E(y){i(s.filter(G=>G.id!==y))}return e.jsxs("div",{className:z("bg-card rounded-lg border p-3",!c&&"ml-4"),children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsx("p",{className:"text-foreground text-xs font-semibold",children:o}),!c&&e.jsxs(w,{preset:"outline",className:"h-10 px-3!",onClick:n,children:[e.jsx(U,{className:"h-4 w-4"}),S]})]}),s.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No nested fields yet."})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1.2fr_auto_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"NAME"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"TYPE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REQUIRED"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),e.jsx("div",{className:"space-y-2 pt-2",children:s.map(y=>{const G=y.type==="object",O=y.type==="array",V=O&&y.itemType==="object",R=y.type==="reference",Z=y.fields?.length||0,L=y.itemFields?.length||0,$=d.has(y.id);return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"grid grid-cols-[2fr_1.2fr_auto_auto] items-center gap-3",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:y.name,onChange:_=>h(y.id,{name:_.target.value}),placeholder:"Field name"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(Y,{value:y.type,onValueChange:_=>{h(y.id,{type:_}),_!=="object"&&_!=="array"&&m(y.id)},children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[120px] flex-1 rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"array",children:"array"}),e.jsx(b,{value:"reference",children:"reference"}),e.jsx(b,{value:"mixed",children:"mixed"})]})]}),G&&e.jsxs("button",{type:"button",onClick:()=>r(y.id),className:"text-muted-foreground hover:bg-accent flex items-center gap-1 rounded-md border border-transparent p-2 transition-colors",children:[e.jsx(oe,{className:z("h-4 w-4 transition-transform",$&&"rotate-90")}),Z>0&&e.jsx("span",{className:"text-muted-foreground text-xs",children:Z})]}),O&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"Item type"}),e.jsxs(Y,{value:y.itemType||"string",onValueChange:_=>{h(y.id,{itemType:_}),_!=="object"&&m(y.id)},children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[100px] rounded-[1rem] border px-3 text-xs",children:e.jsx(W,{placeholder:"Item type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"reference",children:"reference"}),e.jsx(b,{value:"mixed",children:"mixed"})]})]})]}),V&&u&&e.jsxs("button",{type:"button",onClick:()=>r(y.id),className:"text-muted-foreground hover:bg-accent flex items-center gap-1 rounded-md border border-transparent p-2 transition-colors",children:[e.jsx(oe,{className:z("h-4 w-4 transition-transform",$&&"rotate-90")}),L>0&&e.jsx("span",{className:"text-muted-foreground text-xs",children:L})]}),R&&e.jsxs(Y,{value:y.refCollectionId||"",onValueChange:_=>h(y.id,{refCollectionId:_||null}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[140px] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Target collection"})}),e.jsxs(X,{children:[C.filter(_=>_.id!==N).map(_=>e.jsx(b,{value:_.id,children:_.name},_.id)),C.filter(_=>_.id!==N).length===0&&e.jsx(b,{value:"",disabled:!0,children:"Add another collection first"})]})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(re,{checked:y.required,onCheckedChange:_=>h(y.id,{required:_===!0})})}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>E(y.id),className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]}),G&&$&&e.jsx(xe,{fields:y.fields||[],parentLabel:`Nested fields for "${y.name||"unnamed"}"`,onChange:_=>A(y.id,"fields",_),normalizeField:p,expanded:d,onToggle:r,onCollapse:m,allowItemFields:u,addLabel:"Add nested field",collections:C,currentCollectionId:N}),u&&V&&$&&e.jsx(xe,{fields:y.itemFields||[],parentLabel:`Item fields for "${y.name||"unnamed"}[]"`,onChange:_=>A(y.id,"itemFields",_),normalizeField:p,expanded:d,onToggle:r,onCollapse:m,allowItemFields:u,addLabel:"Add item field",collections:C,currentCollectionId:N})]},y.id)})})]})]})}function gs(){const{mongoSchema:c,setMongoSchema:s}=Q(),o=c.collections;function i(t){s({...c,collections:t(c.collections)})}const[p,d]=T.useState(null),[r,m]=T.useState("fields"),[u,S]=T.useState(""),[C,N]=T.useState(new Map),n=o.find(t=>t.id===p);function h(t,x){N(l=>{const f=new Map(l),g=l.get(t),K=new Set(g??[]);return K.has(x)?K.delete(x):K.add(x),f.set(t,K),f})}function A(t,x){N(l=>{const f=new Map(l),g=l.get(t),K=new Set(g??[]);return K.delete(x),f.set(t,K),f})}function E(t,x){const l={...t,...x};return l.type!=="object"&&(l.fields=void 0),l.type!=="array"?(l.itemType=void 0,l.itemFields=void 0):l.itemType||(l.itemType="string"),l.type!=="reference"&&(l.refCollectionId=void 0),l.itemType!=="object"&&(l.itemFields=void 0),l}function y(){const t=J(),x=o.length+1,l={id:t,name:`collection_${x}`,tags:"",description:"",fields:[],indexes:[]};i(f=>[...f,l]),d(t),m("fields")}function G(t){const x=o.filter(l=>l.id!==t);i(l=>l.filter(f=>f.id!==t)),N(l=>{const f=new Map(l);return f.delete(t),f}),d(l=>l===t?x[0]?.id??null:l),m("fields")}function O(t,x){i(l=>l.map(f=>f.id===t?{...f,...x}:f))}function V(t,x){if(!x||x.trim()===""){I.error("Collection name cannot be empty");return}if(x.includes(" ")){I.error("Collection name cannot contain spaces");return}O(t,{name:x.trim()})}function R(t){i(x=>x.map(l=>l.id===t?{...l,fields:[...l.fields,{id:J(),name:"",type:"string",required:!1}]}:l))}function Z(t,x){i(l=>l.map(f=>f.id===t?{...f,fields:x.map(g=>{const K=f.fields.find(D=>D.id===g.id);return K?{...K,...g}:g})}:f))}function L(t){i(x=>x.map(l=>l.id===t?{...l,indexes:[...l.indexes,{id:J(),name:"",fields:[],unique:!1}]}:l))}function $(t,x,l){i(f=>f.map(g=>g.id===t?{...g,indexes:g.indexes.map(K=>K.id===x?{...K,...l}:K)}:g))}function _(t,x){i(l=>l.map(f=>f.id===t?{...f,indexes:f.indexes.filter(g=>g.id!==x)}:f))}function ee(t,x){const l=o.find(g=>g.id===t);if(!l)return;const f=l.indexes.find(g=>g.id===x);f&&$(t,x,{fields:[...f.fields,{id:J(),fieldName:"",order:1}]})}function q(t,x,l,f){const g=o.find(D=>D.id===t);if(!g)return;const K=g.indexes.find(D=>D.id===x);K&&$(t,x,{fields:K.fields.map(D=>D.id===l?{...D,...f}:D)})}function F(t,x,l){const f=o.find(K=>K.id===t);if(!f)return;const g=f.indexes.find(K=>K.id===x);g&&$(t,x,{fields:g.fields.filter(K=>K.id!==l)})}function a(){if(n)try{let t=function(v,k){const B={id:J(),name:v,type:Array.isArray(k)?"array":k===null?"mixed":typeof k=="number"?"number":typeof k=="boolean"?"boolean":typeof k=="object"?"object":"string",required:!0};if(Array.isArray(k))if(B.type="array",k.length>0){const M=k[0];B.itemType=typeof M=="number"?"number":typeof M=="boolean"?"boolean":typeof M=="object"&&M!==null?"object":"string",typeof M=="object"&&M!==null&&!Array.isArray(M)&&(B.itemFields=Object.entries(M).map(([ne,De])=>t(ne,De)))}else B.itemType="string";else typeof k=="object"&&k!==null&&!Array.isArray(k)&&(B.fields=Object.entries(k).map(([M,ne])=>t(M,ne)));return B};const x=JSON.parse(u||"{}"),l=Array.isArray(x)?x[0]||{}:x;if(!l||typeof l!="object"){I.error("Sample document must be an object");return}const f=Object.entries(l);if(!f.length){I.error("Sample document is empty");return}const g=f.map(([v,k])=>t(v,k)),K=new Set(n.fields.map(v=>v.name)),D=g.filter(v=>!K.has(v.name));O(n.id,{fields:[...n.fields,...D]}),I.success(`Inferred ${D.length} new field(s) from sample`)}catch{I.error("Invalid JSON sample")}}const j=n?.fields.filter(t=>t.name.trim()!=="").map(t=>t.name)||[];return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Collections"}),e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:y,children:[e.jsx(U,{className:"h-4 w-4"}),"Add collection"]})]}),o.length===0?e.jsxs("div",{className:"bg-secondary rounded-lg border p-8 text-center",children:[e.jsx("p",{className:"text-muted-foreground text-sm",children:"No collections yet."}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:'Click "Add collection" to define your first collection.'})]}):e.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(200px,1fr))] gap-2",children:o.map(t=>{const x=p===t.id,l=t.fields.length,f=t.indexes.length;return e.jsx("div",{className:z("cursor-pointer rounded-lg border p-3 transition-colors",x?"border-primary bg-primary/5":"border-border bg-card hover:border-border"),onClick:()=>{d(t.id),m("fields")},children:e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-foreground truncate text-sm font-semibold",children:t.name||"Unnamed collection"}),e.jsxs("p",{className:"text-muted-foreground mt-1 text-xs",children:[l," field",l!==1?"s":""," ·"," ",f," index",f!==1?"es":""]})]}),e.jsx(w,{variant:"ghost",size:"icon",className:"text-destructive h-8 w-8",onClick:g=>{g.stopPropagation(),G(t.id)},children:e.jsx(se,{className:"h-4 w-4"})})]})},t.id)})})]}),n&&e.jsxs("div",{className:"space-y-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Collection name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:n.name,onChange:t=>O(n.id,{name:t.target.value}),onBlur:t=>V(n.id,t.target.value),placeholder:"collection_name"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Use lowercase and underscores; no spaces."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Tags"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:n.tags,onChange:t=>O(n.id,{tags:t.target.value}),placeholder:"billing,finance"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Description"}),e.jsx(ie,{className:"border-stock text-foreground bg-card w-full rounded-[1rem] border p-4 text-sm",value:n.description,onChange:t=>O(n.id,{description:t.target.value}),placeholder:"Collection description",rows:3})]})]}),e.jsxs("div",{className:"border-border flex items-center gap-2 border-b",children:[e.jsx("button",{type:"button",onClick:()=>m("fields"),className:z("px-4 py-2 text-sm font-medium transition-colors",r==="fields"?"border-primary text-primary border-b-2":"text-muted-foreground hover:text-foreground"),children:"Fields"}),e.jsx("button",{type:"button",onClick:()=>m("indexes"),className:z("px-4 py-2 text-sm font-medium transition-colors",r==="indexes"?"border-primary text-primary border-b-2":"text-muted-foreground hover:text-foreground"),children:"Indexes"})]}),r==="fields"&&e.jsxs("div",{className:"space-y-4",children:[n.fields.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:'No fields yet. Click "Add field" to define the document structure.'})}):e.jsx("div",{className:"bg-secondary rounded-lg border p-3",children:e.jsx(xe,{isFirstLevel:!0,fields:n.fields,parentLabel:"Fields",onChange:t=>Z(n.id,t),normalizeField:E,expanded:C.get(n.id)||new Set,onToggle:t=>h(n.id,t),onCollapse:t=>A(n.id,t),allowItemFields:!0,addLabel:"Add field",collections:o,currentCollectionId:n.id})}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:()=>R(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add field"]})}),e.jsxs("div",{className:"bg-secondary space-y-2 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-foreground text-xs font-semibold",children:"Sample document inference"}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:"Paste one or more example JSON documents. We'll infer fields and types for this collection."})]}),e.jsx(w,{size:"sm",preset:"outline",onClick:a,children:"Infer fields"})]}),e.jsx(ie,{className:"border-stock text-foreground bg-card h-32 w-full rounded-[1rem] border p-4 text-sm",value:u,onChange:t=>S(t.target.value),placeholder:"Paste a sample JSON document"})]})]}),r==="indexes"&&e.jsxs("div",{className:"space-y-4",children:[n.indexes.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:'No indexes yet. Click "Add index" to define one.'})}):e.jsx("div",{className:"space-y-4",children:n.indexes.map(t=>e.jsxs("div",{className:"bg-secondary space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Index name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:t.name,onChange:x=>$(n.id,t.id,{name:x.target.value}),placeholder:"status_1"})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-6",children:[e.jsx(re,{checked:t.unique,onCheckedChange:x=>$(n.id,t.id,{unique:x===!0})}),e.jsx("span",{className:"text-foreground text-xs",children:"Unique"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1fr_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"FIELD"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"ORDER"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),t.fields.length===0?e.jsx("div",{className:"bg-card rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No index fields yet."})}):e.jsx("div",{className:"space-y-2 pt-2",children:t.fields.map(x=>e.jsxs("div",{className:"grid grid-cols-[2fr_1fr_auto] items-center gap-3",children:[e.jsxs(Y,{value:x.fieldName,onValueChange:l=>q(n.id,t.id,x.id,{fieldName:l}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Field"})}),e.jsxs(X,{children:[j.map(l=>e.jsx(b,{value:l,children:l},l)),j.length===0&&e.jsx(b,{value:"",disabled:!0,children:"Add fields first"})]})]}),e.jsxs(Y,{value:x.order===1?"1":"-1",onValueChange:l=>q(n.id,t.id,x.id,{order:l==="1"?1:-1}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Order"})}),e.jsxs(X,{children:[e.jsx(b,{value:"1",children:"Ascending (1)"}),e.jsx(b,{value:"-1",children:"Descending (-1)"})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:t.fields.length>1&&e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>F(n.id,t.id,x.id),className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]},x.id))}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(w,{preset:"outline",className:"h-10 px-3!",onClick:()=>ee(n.id,t.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add index field"]}),e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>_(n.id,t.id),className:"text-destructive hover:text-destructive/90",children:"Remove index"})]})]})]},t.id))}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:()=>L(n.id),children:[e.jsx(U,{className:"h-4 w-4"}),"Add index"]})})]})]}),!n&&o.length>0&&e.jsx("div",{className:"bg-secondary rounded-lg border p-8 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"Select a collection to edit fields and indexes"})})]})}function bs(){const{currentDialect:c}=Q();return c==="mongodb"?e.jsx(gs,{}):c==="json"?e.jsx(hs,{}):e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Collection configuration will be implemented here for ",c]})})}function ys(){const{currentDialect:c,setCurrentDialect:s,dialectConfig:o}=Q(),i=c&&o?1+o.steps.length:3;return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"space-y-1",children:e.jsxs("p",{className:"text-muted-foreground text-sm",children:["Step 1 of ",i," · Select database type"]})}),e.jsxs("div",{className:"space-y-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-foreground text-sm font-semibold",children:"Select database type"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Pick the NoSQL database you're designing. We'll tailor the next steps to match."})]}),e.jsx("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:Object.entries(ke).map(([p,d])=>{const r=c===p,m=d.icon;return e.jsxs("button",{disabled:d.isNotAvailable,onClick:()=>s(p),type:"button",className:z("relative flex items-start gap-3 rounded-lg border p-4 text-left transition-all",r?"border-primary bg-primary/5":"border-stock bg-card",d.isNotAvailable?"cursor-not-allowed opacity-50":"hover:border-primary hover:bg-accent"),children:[r&&e.jsx("div",{className:"bg-primary absolute top-3 right-3 flex h-5 w-5 items-center justify-center rounded-full",children:e.jsx(Ye,{className:"h-3 w-3 text-white"})}),e.jsx("div",{className:z("flex h-10 w-10 shrink-0 items-center justify-center rounded-lg",r?"bg-primary text-white":"bg-secondary text-muted-foreground"),children:e.jsx(m,{className:"h-5 w-5"})}),e.jsxs("div",{className:"flex-1 space-y-1 pr-6",children:[e.jsx("h3",{className:z("text-sm font-semibold",r?"text-primary":"text-foreground"),children:d.label}),e.jsx("p",{className:"text-muted-foreground text-xs",children:d.description})]})]},p)})})]})]})}function pe({isFirstLevel:c,fields:s,parentLabel:o,onChange:i,normalizeField:p,expanded:d,onToggle:r,allowItemFields:m,addLabel:u}){function S(){i([...s,{id:J(),name:"",type:"",required:!1}])}function C(h,A){i(s.map(E=>E.id===h?p(E,A):E))}function N(h,A,E){i(s.map(y=>y.id===h?{...y,[A]:E}:y))}function n(h){i(s.filter(A=>A.id!==h))}return e.jsxs("div",{className:z("bg-card rounded-lg border p-3",!c&&"ml-4"),children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsx("p",{className:"text-foreground text-xs font-semibold",children:o}),!c&&e.jsxs(w,{preset:"outline",className:"h-10 px-3!",onClick:S,children:[e.jsx(U,{className:"h-4 w-4"}),u]})]}),s.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No nested fields yet."})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"border-border grid grid-cols-[2fr_1.2fr_auto_auto] gap-3 border-b px-2 pb-2",children:[e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"NAME"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"TYPE"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase",children:"REQUIRED"}),e.jsx("div",{className:"text-muted-foreground text-xs font-semibold tracking-tight uppercase"})]}),e.jsx("div",{className:"space-y-2 pt-2",children:s.map(h=>{const A=h.type==="object",E=h.type==="array",y=E&&h.itemType==="object",G=h.fields?.length||0,O=h.itemFields?.length||0,V=d.has(h.id);return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"grid grid-cols-[2fr_1.2fr_auto_auto] items-center gap-3",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] rounded-[1rem] border px-4 text-sm",value:h.name,onChange:R=>C(h.id,{name:R.target.value}),placeholder:"Field name"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(Y,{value:h.type||void 0,onValueChange:R=>C(h.id,{type:R}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[120px] flex-1 rounded-[1rem] border px-4 text-sm",children:e.jsx(W,{placeholder:"Type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"}),e.jsx(b,{value:"array",children:"array"})]})]}),A&&e.jsxs("button",{type:"button",onClick:()=>r(h.id),className:"text-muted-foreground hover:bg-accent flex items-center gap-1 rounded-md border border-transparent p-2 transition-colors",children:[e.jsx(oe,{className:z("h-4 w-4 transition-transform",V&&"rotate-90")}),G>0&&e.jsx("span",{className:"text-muted-foreground text-xs",children:G})]}),m&&E&&e.jsxs(Y,{value:h.itemType||"string",onValueChange:R=>C(h.id,R==="object"?{itemType:R}:{itemType:R,itemFields:void 0}),children:[e.jsx(H,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[100px] rounded-[1rem] border px-3 text-xs",children:e.jsx(W,{placeholder:"Item type"})}),e.jsxs(X,{children:[e.jsx(b,{value:"string",children:"string"}),e.jsx(b,{value:"number",children:"number"}),e.jsx(b,{value:"boolean",children:"boolean"}),e.jsx(b,{value:"date",children:"date"}),e.jsx(b,{value:"object",children:"object"})]})]}),m&&y&&e.jsxs("button",{type:"button",onClick:()=>r(h.id),className:"text-muted-foreground hover:bg-accent flex items-center gap-1 rounded-md border border-transparent p-2 transition-colors",children:[e.jsx(oe,{className:z("h-4 w-4 transition-transform",V&&"rotate-90")}),O>0&&e.jsx("span",{className:"text-muted-foreground text-xs",children:O})]})]}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(re,{checked:h.required,onCheckedChange:R=>C(h.id,{required:R===!0})})}),e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>n(h.id),className:"h-8 w-8 p-0",children:e.jsx(se,{className:"h-4 w-4"})})})]}),A&&V&&e.jsx(pe,{fields:h.fields||[],parentLabel:`Nested fields for "${h.name||"unnamed"}"`,onChange:R=>N(h.id,"fields",R),normalizeField:p,expanded:d,onToggle:r,allowItemFields:m,addLabel:"Add nested field"}),m&&y&&V&&e.jsx(pe,{fields:h.itemFields||[],parentLabel:`Item fields for "${h.name||"unnamed"}[]"`,onChange:R=>N(h.id,"itemFields",R),normalizeField:p,expanded:d,onToggle:r,allowItemFields:m,addLabel:"Add item field"})]},h.id)})})]})]})}function js(){const{currentDialect:c,dynamoSchema:s,setDynamoSchema:o}=Q(),[i,p]=T.useState(new Set);if(!s)return null;const d=s.attributes;function r(C,N){const n={...C,...N};return N.type&&N.type!=="object"&&(n.fields=void 0),N.type&&N.type!=="array"?(n.itemType=void 0,n.itemFields=void 0):N.type==="array"&&!n.itemType&&(n.itemType="string"),n}function m(){o({...s,attributes:[...d,{id:J(),name:"",type:"",required:!1,notes:""}]})}function u(C){o({...s,attributes:C.map(N=>{const n=d.find(h=>h.id===N.id);return n?{...n,...N}:{...N}})})}function S(C){p(N=>{const n=new Set(N);return n.has(C)?n.delete(C):n.add(C),n})}return c!=="dynamodb"?e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Attributes configuration will be implemented here for ",c]})}):e.jsxs("div",{className:"space-y-4 rounded-lg border p-4 [&>*]:ml-0",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Attributes"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Describe the attributes stored on items in this table. Primary keys and indexes are defined in earlier steps."})]}),e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:m,children:[e.jsx(U,{className:"h-4 w-4"}),"Add Attribute"]})]}),e.jsx(pe,{isFirstLevel:!0,fields:d,parentLabel:"Attributes",onChange:u,normalizeField:r,expanded:i,onToggle:S,allowItemFields:!0,addLabel:"Add attribute"})]})}var vs=Object.defineProperty,Ns=(c,s)=>vs(c,"name",{value:s,configurable:!0}),Cs="Toggle",Ss=T.forwardRef(Ns(function(s,o){const{pressed:i,defaultPressed:p,onPressedChange:d,...r}=s,[m,u]=he({prop:i,onChange:d,defaultProp:p??!1,caller:Cs});return e.jsx(ue.button,{type:"button","aria-pressed":m,"data-state":m?"on":"off","data-disabled":s.disabled?"":void 0,...r,ref:o,onClick:Me(s.onClick,()=>{s.disabled||u(!m)})})},"Toggle")),ws=Object.defineProperty,te=(c,s)=>ws(c,"name",{value:s,configurable:!0}),ae="ToggleGroup",de={Single:"single",Multiple:"multiple"},[Te,lt]=Oe(ae,[we]),Ae=we(),ks=T.forwardRef(te(function(s,o){const{type:i,...p}=s;if(i===de.Single){const d=p;return e.jsx(Ts,{role:"radiogroup",...d,ref:o})}if(i===de.Multiple){const d=p;return e.jsx(As,{role:"toolbar",...d,ref:o})}throw new Error(`Missing prop \`type\` expected on \`${ae}\``)},"ToggleGroup")),[Ke,_e]=Te(ae),Ts=T.forwardRef(te(function(s,o){const{value:i,defaultValue:p,onValueChange:d=te(()=>{},"onValueChange"),...r}=s,[m,u]=he({prop:i,defaultProp:p??"",onChange:d,caller:ae});return e.jsx(Ke,{scope:s.__scopeToggleGroup,type:de.Single,value:T.useMemo(()=>m?[m]:[],[m]),onItemActivate:u,onItemDeactivate:T.useCallback(()=>u(""),[u]),children:e.jsx(Ee,{...r,ref:o})})},"ToggleGroupImplSingle")),As=T.forwardRef(te(function(s,o){const{value:i,defaultValue:p,onValueChange:d=te(()=>{},"onValueChange"),...r}=s,[m,u]=he({prop:i,defaultProp:p??[],onChange:d,caller:ae}),S=T.useCallback(N=>u((n=[])=>[...n,N]),[u]),C=T.useCallback(N=>u((n=[])=>n.filter(h=>h!==N)),[u]);return e.jsx(Ke,{scope:s.__scopeToggleGroup,type:de.Multiple,value:m,onItemActivate:S,onItemDeactivate:C,children:e.jsx(Ee,{...r,ref:o})})},"ToggleGroupImplMultiple")),[Ks,_s]=Te(ae),Ee=T.forwardRef(te(function(s,o){const{__scopeToggleGroup:i,disabled:p=!1,rovingFocus:d=!0,orientation:r,dir:m,loop:u=!0,...S}=s,C=Ae(i),N=Je(m),n={dir:N,...S};return e.jsx(Ks,{scope:i,rovingFocus:d,disabled:p,children:d?e.jsx(Ue,{asChild:!0,...C,orientation:r,dir:N,loop:u,children:e.jsx(ue.div,{...n,ref:o})}):e.jsx(ue.div,{...n,ref:o})})},"ToggleGroupImpl")),fe="ToggleGroupItem",Es=T.forwardRef(te(function(s,o){const i=_e(fe,s.__scopeToggleGroup),p=_s(fe,s.__scopeToggleGroup),d=Ae(s.__scopeToggleGroup),r=i.value.includes(s.value),m=p.disabled||s.disabled,u={...s,pressed:r,disabled:m},S=T.useRef(null);return p.rovingFocus?e.jsx(Qe,{asChild:!0,...d,focusable:!m,active:r,ref:S,children:e.jsx(Ne,{...u,ref:o})}):e.jsx(Ne,{...u,ref:o})},"ToggleGroupItem")),Ne=T.forwardRef(te(function(s,o){const{__scopeToggleGroup:i,value:p,...d}=s,r=_e(fe,i),m={role:"radio","aria-checked":s.pressed,"aria-pressed":void 0},u=r.type===de.Single?m:void 0;return e.jsx(Ss,{...u,...d,ref:o,onPressedChange:S=>{S?r.onItemActivate(p):r.onItemDeactivate(p)}})},"ToggleGroupItemImpl"));const Fs=Le("inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground"},size:{default:"h-9 px-2 min-w-9",sm:"h-8 px-1.5 min-w-8",lg:"h-10 px-2.5 min-w-10"}},defaultVariants:{variant:"default",size:"default"}}),Fe=T.createContext({size:"default",variant:"default"});function le({className:c,variant:s,size:o,children:i,...p}){return e.jsx(ks,{"data-slot":"toggle-group","data-variant":s,"data-size":o,className:z("group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs",c),...p,children:e.jsx(Fe.Provider,{value:{variant:s,size:o},children:i})})}function ce({className:c,children:s,variant:o,size:i,...p}){const d=T.useContext(Fe);return e.jsx(Es,{"data-slot":"toggle-group-item","data-variant":d.variant||o,"data-size":d.size||i,className:z(Fs({variant:d.variant||o,size:d.size||i}),"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l",c),...p,children:s})}const Ce=[{value:"S",label:"String"},{value:"N",label:"Number"},{value:"B",label:"Binary"}];function Ds(){const{currentDialect:c,dynamoSchema:s,setDynamoSchema:o}=Q();if(!s)return null;function i(){o({...s,globalSecondaryIndexes:[...s.globalSecondaryIndexes,{id:J(),name:"",partitionKey:"",partitionKeyType:"S",sortKey:"",sortKeyType:"S"}]})}function p(r,m){o({...s,globalSecondaryIndexes:s.globalSecondaryIndexes.map(u=>u.id===r?{...u,...m}:u)})}function d(r){o({...s,globalSecondaryIndexes:s.globalSecondaryIndexes.filter(m=>m.id!==r)})}return c==="dynamodb"?e.jsxs("div",{className:"space-y-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Global Secondary Indexes (GSIs)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Add secondary indexes to enable efficient queries on different key patterns."})]}),s.globalSecondaryIndexes.length===0?e.jsxs("div",{className:"bg-secondary rounded-lg border p-8 text-center",children:[e.jsx("p",{className:"text-muted-foreground text-sm",children:"No GSIs yet"}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:"Add a Global Secondary Index to enable alternative query patterns."})]}):e.jsx("div",{className:"space-y-4",children:s.globalSecondaryIndexes.map(r=>{const m=r.sortKeyType||"S";return e.jsxs("div",{className:"bg-secondary space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Index name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:r.name,onChange:u=>p(r.id,{name:u.target.value}),placeholder:"GSI name"})]}),e.jsx(w,{size:"sm",variant:"ghost",onClick:()=>d(r.id),className:"mt-6 h-[3.5rem] w-[3.5rem] shrink-0 p-0",children:e.jsx(se,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:[e.jsxs("div",{className:"bg-card space-y-2 rounded-lg border p-3",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Partition key"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] flex-1 rounded-[1rem] border px-4 text-sm",value:r.partitionKey,onChange:u=>p(r.id,{partitionKey:u.target.value}),placeholder:"gsi_pk"}),e.jsx(le,{type:"single",value:r.partitionKeyType||"S",onValueChange:u=>{u&&p(r.id,{partitionKeyType:u})},className:"border-border h-[3.5rem] flex-none overflow-hidden rounded-md border shadow-none",variant:"outline",children:Ce.map(u=>{const S=(r.partitionKeyType||"S")===u.value;return e.jsx(ce,{value:u.value,className:z("h-full w-[66px] px-3 text-xs font-medium transition-all","!border-0 !shadow-none first:!rounded-l-md last:!rounded-r-md",S?"bg-primary hover:bg-primary/90 focus-visible:ring-primary z-10 font-semibold text-white focus-visible:ring-2 focus-visible:ring-offset-1":"bg-card text-foreground hover:bg-accent focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-1"),children:u.label},u.value)})})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Required. Index partition key attribute name and type."})]}),e.jsxs("div",{className:z("space-y-2 rounded-lg border p-3 transition-opacity",r.sortKey?"bg-card opacity-100":"bg-card/50 opacity-60"),children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Sort key (optional)"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] flex-1 rounded-[1rem] border px-4 text-sm",value:r.sortKey||"",onChange:u=>p(r.id,{sortKey:u.target.value}),placeholder:"sk (optional)"}),e.jsx(le,{type:"single",value:m,onValueChange:u=>{u&&p(r.id,{sortKeyType:u})},className:"border-border h-[3.5rem] flex-none overflow-hidden rounded-md border shadow-none",variant:"outline",children:Ce.map(u=>{const S=m===u.value;return e.jsx(ce,{value:u.value,className:z("h-full w-[66px] px-3 text-xs font-medium transition-all","!border-0 !shadow-none first:!rounded-l-md last:!rounded-r-md",S?"bg-primary hover:bg-primary/90 focus-visible:ring-primary z-10 font-semibold text-white focus-visible:ring-2 focus-visible:ring-offset-1":"bg-card text-foreground hover:bg-accent focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-1"),children:u.label},u.value)})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-muted-foreground text-xs",children:"Optional. Index sort key attribute name and type."}),r.sortKey&&e.jsx("button",{type:"button",onClick:()=>p(r.id,{sortKey:"",sortKeyType:"S"}),className:"text-primary hover:text-primary/80 text-xs underline",children:"No sort key"})]})]})]})]},r.id)})}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:i,children:[e.jsx(U,{className:"h-4 w-4"}),"Add GSI"]})})]}):e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Index configuration will be implemented here for ",c]})})}function Is(){const{currentDialect:c}=Q();return e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Keyspace and tables configuration will be implemented here for"," ",c]})})}function Ps(){const{currentDialect:c}=Q();return e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Partitioning configuration will be implemented here for ",c]})})}const Se=[{value:"S",label:"String"},{value:"N",label:"Number"},{value:"B",label:"Binary"}];function Gs(){const{coreSchema:c,dynamoSchema:s,setDynamoSchema:o}=Q();if(!s)return null;const i=s.primaryKey.partitionKeyType,p=s.primaryKey.sortKeyType;return e.jsxs("div",{className:"space-y-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Table name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:c.name,disabled:!0})]}),e.jsxs("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:[e.jsxs("div",{className:"bg-secondary space-y-2 rounded-lg border p-3",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Partition key"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] flex-1 rounded-[1rem] border px-4 text-sm",value:s.primaryKey.partitionKey,onChange:d=>o({...s,primaryKey:{...s.primaryKey,partitionKey:d.target.value}}),placeholder:"pk"}),e.jsx(le,{type:"single",value:i,onValueChange:d=>{d&&o({...s,primaryKey:{...s.primaryKey,partitionKeyType:d}})},className:"border-border h-[3.5rem] flex-none overflow-hidden rounded-md border shadow-none",variant:"outline",children:Se.map(d=>{const r=i===d.value;return e.jsx(ce,{value:d.value,className:z("h-full w-[66px] px-3 text-xs font-medium transition-all","!border-0 !shadow-none first:!rounded-l-md last:!rounded-r-md",r?"bg-primary hover:bg-primary/90 focus-visible:ring-primary z-10 font-semibold text-white focus-visible:ring-2 focus-visible:ring-offset-1":"bg-card text-foreground hover:bg-accent focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-1"),children:d.label},d.value)})})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Required. Primary partition key attribute name and type."})]}),e.jsxs("div",{className:z("space-y-2 rounded-lg border p-3 transition-opacity",s.primaryKey.sortKey?"bg-secondary opacity-100":"bg-secondary/50 opacity-60"),children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Sort key"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] flex-1 rounded-[1rem] border px-4 text-sm",value:s.primaryKey.sortKey,onChange:d=>o({...s,primaryKey:{...s.primaryKey,sortKey:d.target.value}}),placeholder:"sk (optional)"}),e.jsx(le,{type:"single",value:p,onValueChange:d=>{d&&o({...s,primaryKey:{...s.primaryKey,sortKeyType:d}})},className:"border-border h-[3.5rem] flex-none overflow-hidden rounded-md border shadow-none",variant:"outline",children:Se.map(d=>{const r=p===d.value;return e.jsx(ce,{value:d.value,className:z("h-full w-[66px] px-3 text-xs font-medium transition-all","!border-0 !shadow-none first:!rounded-l-md last:!rounded-r-md",r?"bg-primary hover:bg-primary/90 focus-visible:ring-primary z-10 font-semibold text-white focus-visible:ring-2 focus-visible:ring-offset-1":"bg-card text-foreground hover:bg-accent focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-1"),children:d.label},d.value)})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-muted-foreground text-xs",children:"Optional. Primary sort key attribute name and type."}),s.primaryKey.sortKey&&e.jsx("button",{type:"button",onClick:()=>o({...s,primaryKey:{...s.primaryKey,sortKey:""}}),className:"text-primary hover:text-primary/80 text-xs underline",children:"No sort key"})]})]})]})]})}function Ms(){const{coreSchema:c,currentDialect:s,mongoSchema:o}=Q();return s==="mongodb"?o?e.jsxs("div",{className:"space-y-4 rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Review schema"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Review your MongoDB database, collections, and indexes before saving."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"bg-secondary rounded-lg border p-4",children:[e.jsx("p",{className:"text-foreground mb-1 text-xs font-semibold",children:"Database"}),e.jsx("p",{className:"text-sm font-medium",children:c.name||"Unnamed"}),c.description&&e.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:c.description})]}),o.collections.length===0?e.jsx("div",{className:"bg-secondary rounded-lg border p-4 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:"No collections defined"})}):e.jsx("div",{className:"space-y-3",children:o.collections.map(i=>{const p=i.fields.length,d=i.indexes.length,r=i.fields.filter(u=>u.name.trim()!=="").map(u=>u.name).slice(0,5),m=i.indexes.filter(u=>u.name.trim()!=="").map(u=>u.name).slice(0,5);return e.jsxs("div",{className:"bg-secondary rounded-lg border p-4",children:[e.jsxs("p",{className:"text-foreground mb-1 text-xs font-semibold",children:['Collection "',i.name,'"']}),e.jsxs("p",{className:"text-muted-foreground text-sm",children:[p," field",p!==1?"s":""," ·"," ",d," index",d!==1?"es":""]}),r.length>0&&e.jsxs("div",{className:"mt-2",children:[e.jsx("p",{className:"text-muted-foreground mb-1 text-xs",children:"Fields:"}),e.jsxs("p",{className:"text-muted-foreground text-xs",children:[r.join(", "),i.fields.length>5&&"..."]})]}),m.length>0&&e.jsxs("div",{className:"mt-2",children:[e.jsx("p",{className:"text-muted-foreground mb-1 text-xs",children:"Indexes:"}),e.jsxs("p",{className:"text-muted-foreground text-xs",children:[m.join(", "),i.indexes.length>5&&"..."]})]})]},i.id)})})]})]}):null:e.jsx("div",{className:"space-y-4 rounded-lg border p-4",children:e.jsxs("div",{className:"text-muted-foreground text-sm",children:["Review step will be implemented here for ",s]})})}function Os(){const{coreSchema:c,dynamoSchema:s,setDynamoSchema:o}=Q();if(!s)return null;function i(){o({...s,globalSecondaryIndexes:[...s.globalSecondaryIndexes,{id:J(),name:"",partitionKey:"",partitionKeyType:"S",sortKey:"",sortKeyType:"S"}]})}function p(r,m){o({...s,globalSecondaryIndexes:s.globalSecondaryIndexes.map(u=>u.id===r?{...u,...m}:u)})}function d(r){o({...s,globalSecondaryIndexes:s.globalSecondaryIndexes.filter(m=>m.id!==r)})}return e.jsxs("div",{className:"space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("div",{className:"min-w-[220px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Table name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:c.name,disabled:!0})]}),e.jsxs("div",{className:"min-w-[220px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Partition key"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:s.primaryKey.partitionKey,onChange:r=>o({...s,primaryKey:{...s.primaryKey,partitionKey:r.target.value}}),placeholder:"pk"})]}),e.jsxs("div",{className:"min-w-[220px] flex-1 space-y-2",children:[e.jsx("label",{className:"text-foreground text-xs font-semibold",children:"Sort key"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] w-full rounded-[1rem] border px-4 text-sm",value:s.primaryKey.sortKey,onChange:r=>o({...s,primaryKey:{...s.primaryKey,sortKey:r.target.value}}),placeholder:"sk (optional)"})]})]}),e.jsxs("div",{className:"bg-secondary space-y-2 rounded-lg border p-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm font-semibold",children:"Global Secondary Indexes (GSIs)"}),e.jsxs(w,{preset:"primary",className:"h-10 px-3!",onClick:i,children:[e.jsx(U,{className:"h-4 w-4"}),"Add GSI"]})]}),s.globalSecondaryIndexes.length===0&&e.jsx("div",{className:"text-paragraph text-xs",children:"No GSIs yet"}),s.globalSecondaryIndexes.map(r=>e.jsxs("div",{className:"bg-card flex flex-wrap items-start gap-2 rounded border p-2",children:[e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[160px] flex-1 rounded-[1rem] border px-4 text-sm",value:r.name,onChange:m=>p(r.id,{name:m.target.value}),placeholder:"GSI name"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[160px] flex-1 rounded-[1rem] border px-4 text-sm",value:r.partitionKey,onChange:m=>p(r.id,{partitionKey:m.target.value}),placeholder:"Partition key"}),e.jsx(P,{className:"border-stock text-foreground bg-card h-[3.5rem] min-w-[160px] flex-1 rounded-[1rem] border px-4 text-sm",value:r.sortKey||"",onChange:m=>p(r.id,{sortKey:m.target.value}),placeholder:"Sort key (optional)"}),e.jsx("div",{className:"flex w-full justify-end",children:e.jsx(w,{size:"sm",preset:"outline",onClick:()=>d(r.id),children:"Remove"})})]},r.id))]})]})}function qs({editorValue:c,hasEditorChanges:s,setEditorValue:o,applyEditorChanges:i}){const p=T.useRef(null),[d,r]=T.useState(0);return T.useEffect(()=>{const m=p.current;if(!m)return;function u(){r(m.clientHeight)}const S=new ResizeObserver(u);return S.observe(m),u(),()=>S.disconnect()},[p]),e.jsxs("div",{ref:p,className:"relative h-full",children:[e.jsx(Re,{basicSetup:{lineNumbers:!1,foldGutter:!1,foldKeymap:!1,searchKeymap:!1},value:c??"",onChange:o,className:"[&_.cm-editor]:p-1",height:`${d}px`,disableWordWrap:!0}),s?e.jsx(w,{preset:"primary",className:"absolute top-3 right-3 h-9 px-3!",onClick:i,children:"Apply"},"apply"):e.jsx(w,{preset:"outline",className:"absolute top-3 right-3 h-9 px-3!",onClick:async()=>{await navigator.clipboard.writeText(c),I.success("JSON copied")},children:"Copy"},"copy")]})}function Rs(){const{currentDialect:c,dynamoSchema:s,setDynamoSchema:o,mongoSchema:i,setMongoSchema:p,jsonSchema:d,setJsonSchema:r}=Q(),[m,u]=T.useState(""),[S,C]=T.useState(!1),N=c==="dynamodb"?s:c==="mongodb"?i:d;T.useEffect(()=>{const h=JSON.stringify(N,null,2);u(h),C(!1)},[N]);function n(h){let A;try{A=JSON.parse(h)}catch{I.error("Invalid JSON");return}if(typeof A!="object"||A===null){I.error("Schema must be an object");return}if(c==="mongodb"){const E=be.safeParse(A);if(!E.success){I.error("MongoDB schema is invalid");return}p(E.data),I.success("Schema updated");return}if(c==="dynamodb"){const E=ge.safeParse(A);if(!E.success){I.error("DynamoDB schema is invalid");return}o(E.data),I.success("Schema updated");return}if(c==="json"){const E=ye.safeParse(A);if(!E.success){I.error("JSON schema is invalid");return}r(E.data),I.success("Schema updated");return}I.error("Unknown dialect")}return e.jsx(qs,{editorValue:m,hasEditorChanges:S,applyEditorChanges:()=>n(m),setEditorValue:h=>{u(h),C(!0)}})}function zs(){const{coreSchema:c,currentDialect:s,currentStepId:o,currentStepIndex:i,dialectConfig:p,canGoBack:d,goToNextStep:r,goToPreviousStep:m,goToStep:u,dynamoSchema:S,mongoSchema:C,jsonSchema:N,initialDataSource:n,isSubmitting:h,setIsSubmitting:A,onSchemaSubmit:E,onOpenChange:y}=Q();function G(){if(o==="basic"&&!c.name.trim()){I.error(s==="dynamodb"?"Table name is required":"Database name is required");return}if(s==="dynamodb"&&o==="tableKeys"&&!S?.primaryKey.partitionKey.trim()){I.error("Partition key is required");return}r()}function O(){if(!c.name.trim())return I.error(s==="dynamodb"?"Table name is required":"Database name is required"),!1;if(s==="mongodb"&&C){const F=be.safeParse(C);return F.success?!0:(I.error(F.error.issues[0]?.message??"Schema is invalid"),!1)}if(s==="dynamodb"&&S){const F=ge.safeParse(S);return F.success?!0:(I.error(F.error.issues[0]?.message??"Schema is invalid"),!1)}if(s==="json"&&N){const F=ye.safeParse(N);return F.success?!0:(I.error(F.error.issues[0]?.message??"Schema is invalid"),!1)}return!1}async function V(){if(!O())return;const F=s==="dynamodb"&&S?ns(S):s==="mongodb"&&C?as(C):s==="json"&&N?is(N):null;if(F){if((!F.tables||F.tables.length===0)&&s!=="mongodb"){I.error("Schema must include at least one collection or entity");return}try{A(!0),await E({id:n?.id??ze(),name:c.name,sourceType:"editor",sourceContent:s==="mongodb"?C:s==="dynamodb"?S:s==="json"?N:void 0,dialect:F.dialect,schemaAst:F,createdAt:n?.createdAt??Date.now(),modifiedAt:n?.modifiedAt??null})}finally{A(!1)}}}function R(){if(!s)return e.jsx(ys,{});if(!o||!p)return null;switch(o){case"basic":return e.jsx(fs,{});case"tableKeys":return s==="dynamodb"?e.jsx(Gs,{}):e.jsx(Os,{});case"indexes":return e.jsx(Ds,{});case"entities":return e.jsx(js,{});case"collections":return e.jsx(bs,{});case"keyspaceTables":return e.jsx(Is,{});case"partitioning":return e.jsx(Ps,{});case"review":return e.jsx(Ms,{});default:return null}}const Z=s&&p&&i===p.steps.length-1,L=s!==null&&o!==null,$=!s;function _(){y&&y(!1)}const ee=s==="dynamodb"?"Design DynamoDB table":s==="mongodb"?"Design MongoDB database":"Create NoSQL Database",q=s==="dynamodb"?"Design your DynamoDB table schema":s==="mongodb"?"Create MongoDB collections, fields, and indexes with a guided editor.":"Create NoSQL databases with a guided editor";return e.jsxs(Ie,{title:ee,description:q,className:"flex gap-4",_footerContent:e.jsxs(Ve,{className:"flex items-center justify-between! gap-3 px-6 pt-2 pb-4",children:[e.jsx("div",{children:$&&e.jsx(w,{preset:"outline",onClick:_,children:"Cancel"})}),e.jsxs("div",{className:"flex items-center gap-3",children:[d&&!$&&e.jsxs(w,{preset:"outline",onClick:m,children:[e.jsx(He,{}),"Back"]}),$?e.jsxs(w,{preset:"primary",onClick:r,disabled:!s,children:["Next",e.jsx(je,{})]}):L&&!Z?e.jsxs(w,{preset:"primary",onClick:G,children:["Next",e.jsx(je,{})]}):L&&Z?e.jsxs(w,{preset:"primary",disabled:h,onClick:V,children:[h?e.jsx(Be,{}):e.jsx($e,{}),"Save Database"]}):null]})]}),children:[e.jsxs("div",{className:"flex min-h-[38rem] min-w-[320px] flex-1 flex-col gap-4",children:[s&&p&&e.jsx("div",{className:"flex items-center gap-3",children:p.steps.map((F,a)=>{const j=os(F,s),t=a===i,x=a<i;return e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:()=>u(a),className:z("flex items-center gap-2 rounded-full border p-1 pr-3 text-xs font-semibold transition-colors",t?"border-primary text-primary":x?"border-primary/50 text-primary/70":"border-stock text-paragraph"),children:[e.jsx("span",{className:z("flex h-6 w-6 items-center justify-center rounded-full text-center",t?"bg-primary text-white":x?"bg-primary/20 text-primary":"bg-muted text-muted-foreground"),children:a+1}),j]}),a<p.steps.length-1&&e.jsx("div",{className:z("h-px flex-1",x?"bg-primary/50":"bg-stock")})]},F)})}),R()]}),e.jsx("div",{className:"sticky top-0 flex w-[18rem] overflow-hidden",children:e.jsxs("div",{className:"bg-secondary absolute flex size-full flex-col overflow-hidden rounded-lg border",children:[e.jsx("div",{className:"flex items-center justify-between border-b px-3 py-2",children:e.jsx("p",{className:"text-sm font-semibold",children:"Generated schema JSON"})}),s&&p?e.jsx(Rs,{}):e.jsx("div",{className:"flex h-full items-center justify-center p-6",children:e.jsx("p",{className:"text-muted-foreground text-center text-sm",children:"We'll generate the schema JSON after you configure your database."})})]})})]})}function ct({open:c,onOpenChange:s,...o}){return e.jsx(Pe,{open:c,onOpenChange:s,className:"[--width:75rem]",children:e.jsx(ps,{...o,onOpenChange:s,children:e.jsx(zs,{})})})}export{ct as N,le as T,as as a,is as b,ns as c,ce as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./index-CH7cEAxj.js";import{U as t}from"./ui-graph-logo-gHowu5gP.js";import{B as o}from"./button-DZj74qS7.js";import{m as s,B as r}from"./index-PglMbhys.js";import{L as a}from"./chunk-OB3PAWPO-DJIP1M4r.js";import"./iconBase-DtqdW2XR.js";function d(){return e.jsx("div",{className:"bg-background flex min-h-screen flex-col items-center justify-center px-6",children:e.jsxs(s.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},className:"flex flex-col items-center text-center",children:[e.jsx("div",{className:"mb-8 flex items-center justify-center",children:e.jsx(t,{className:"size-24"})}),e.jsx("h1",{className:"mb-2 font-mono text-7xl font-bold tracking-tight text-[var(--foreground)]",children:"404"}),e.jsx("h2",{className:"text-foreground mb-4 text-xl font-semibold",children:"Page Not Found"}),e.jsx("p",{className:"text-muted-foreground mb-8 max-w-sm text-sm leading-relaxed",children:"The page you are looking for does not exist or has been moved."}),e.jsx(o,{asChild:!0,preset:"primary",children:e.jsxs(a,{to:"/dashboard",children:[e.jsx(r,{className:"h-4 w-4"}),"Back to Dashboard"]})})]})})}export{d as NotFoundPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./index-CH7cEAxj.js";import{S as a}from"./section-loader-C4hOfhQS.js";import{P as i}from"./nav-links-DZWMpwMR.js";import{u as m}from"./query-D9oj6LGx.js";import{DashboardPageSectionLayout as d}from"./index-Bn2bqqMd.js";import{d as c,O as l}from"./dependencies-DK2GDlhQ.js";import{D as u}from"./dependency-graph-xBEnCS0J.js";import{u as g}from"./chunk-OB3PAWPO-DJIP1M4r.js";import{u as h}from"./useQuery-Dhe6uxrL.js";import"./super-logo-loader-Cxlbn6MB.js";import"./iconBase-DtqdW2XR.js";import"./scroll-area-RagrStGj.js";import"./ui-graph-logo-gHowu5gP.js";import"./dashboard-layout-sTeeHNsZ.js";import"./grid-scroll-body-DC5pYDPJ.js";import"./popover-476u3TN0.js";import"./index-Ck66Ic_p.js";import"./checkbox-CFJfXL6R.js";import"./check-BpmCQNbj.js";import"./api-endpoints-D-Whnnwd.js";import"./gql-FFIj8zdp.js";import"./style-BPesJvJr.js";import"./index-BIrx3oY4.js";import"./transform-BqqRT-Iy.js";import"./value-wA6veExk.js";import"./index-Dj_05fqk.js";import"./globe-CJ35KsQW.js";import"./share-2-CQEaWbfH.js";import"./link-2-D1e0xznG.js";import"./loader-circle-CiqyoJF7.js";import"./circle-alert-Bl7DXYD_.js";function K(){const o=m().id,n=g(),{data:t,loading:p}=h(l,{variables:{orgId:o},skip:!o}),r=t?.dependencyGraph?c(t.dependencyGraph):void 0;return e.jsxs(d,{title:"Service dependency graph",description:"Explore dependencies across every service in your registered projects.",crumbs:[{to:i.services.root,label:"Services"},{to:i.services.dependency,label:"Dependency graph"}],children:[p?e.jsx(a,{label:"Loading dependency graph..."}):null,!p&&r?e.jsx("div",{className:"h-full min-h-0",children:e.jsx(u,{nodes:r.nodes,edges:r.edges,onNodeClick:s=>{s.service?.id&&n(i.services.dependencies(s.service.id))}})}):null]})}export{K as OrganizationDependencyGraphPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as l,r as m,d as a}from"./chunk-SVP7TREG-DtNrjvpq.js";import{p}from"./chunk-JWPE2WC7-xd0JGvne.js";import{_ as t,l as o}from"./mermaid.core-BDgZg3kW.js";import"./transform-BqqRT-Iy.js";import{M as u,d as c}from"./cynefin-OW5HDTMX-DiBs4CI8.js";import"./preload-helper-BlTxHScW.js";import"./index-CH7cEAxj.js";var f=c().RailroadPeg.parser.LangiumParser,i=t(e=>{const r=e.alternatives.map(d);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformOrderedChoice"),d=t(e=>{const r=e.elements.map(P);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformSequence"),P=t(e=>{const r=g(e.suffix);return e.operator?{type:"special",text:e.operator==="&"?`&${s(r)}`:`!${s(r)}`}:r},"transformPrefix"),s=t(e=>{switch(e.type){case"terminal":return`"${e.value}"`;case"nonterminal":return e.name;case"special":return e.text;default:return"(...)"}},"nodeToLabel"),g=t(e=>{const r=v(e.primary);if(!e.operator)return r;switch(e.operator){case"?":return{type:"optional",element:r};case"*":return{type:"repetition",element:r,min:0,max:1/0};case"+":return{type:"repetition",element:r,min:1,max:1/0};default:throw new Error(`Unsupported PEG suffix operator: ${e.operator}`)}},"transformSuffix"),v=t(e=>{switch(e.$type){case"PegLiteral":return{type:"terminal",value:e.value};case"PegIdentifier":return{type:"nonterminal",name:e.name};case"PegGroup":return i(e.element);case"PegAny":return{type:"special",text:e.dot};default:throw new Error(`Unsupported PEG primary node: ${e.$type}`)}},"transformPrimary"),y=t(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=t(e=>{p(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(y(r)))},"populateDb"),b={parse:t(e=>{a.clear(),o.debug("[PEG Parser] Starting Langium parse");const r=f.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new u(r);const n=r.value;o.debug("[PEG Parser] Parsed rules:",n.rules.length),h(n),o.debug("[PEG Parser] Parse complete")},"parse"),parser:{yy:a}},R={parser:b,db:a,renderer:m,styles:l};export{R as diagram};
|
package/dist/viewer/assets/{pieDiagram-E7YTZNPT-DqnkpCX4.js → pieDiagram-E7YTZNPT-WEnDsMY3.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{p as at}from"./chunk-JWPE2WC7-
|
|
1
|
+
import{p as at}from"./chunk-JWPE2WC7-xd0JGvne.js";import{K as T,N as G,b2 as rt,g as nt,s as it,a as ot,b as st,n as lt,m as ct,_ as g,l as B,c as ut,z as dt,F as gt,a1 as pt,d as ht,o as ft,A as mt}from"./mermaid.core-BDgZg3kW.js";import{p as vt}from"./cynefin-OW5HDTMX-DiBs4CI8.js";import"./transform-BqqRT-Iy.js";import{d as Z}from"./arc-DauzQXFu.js";import{o as xt}from"./ordinal-Cboi1Yqb.js";import"./preload-helper-BlTxHScW.js";import"./index-CH7cEAxj.js";import"./init-Gi6I4Gst.js";function St(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function yt(t){return t}function wt(){var t=yt,n=St,y=null,b=T(0),l=T(G),p=T(0);function i(e){var r,s=(e=rt(e)).length,h,w,$=0,f=new Array(s),o=new Array(s),D=+b.apply(this,arguments),E=Math.min(G,Math.max(-G,l.apply(this,arguments)-D)),k,F=Math.min(Math.abs(E)/s,p.apply(this,arguments)),u=F*(E<0?-1:1),A;for(r=0;r<s;++r)(A=o[f[r]=r]=+t(e[r],r,e))>0&&($+=A);for(n!=null?f.sort(function(M,m){return n(o[M],o[m])}):y!=null&&f.sort(function(M,m){return y(e[M],e[m])}),r=0,w=$?(E-s*u)/$:0;r<s;++r,D=k)h=f[r],A=o[h],k=D+(A>0?A*w:0)+u,o[h]={data:e[h],index:r,value:A,startAngle:D,endAngle:k,padAngle:F};return o}return i.value=function(e){return arguments.length?(t=typeof e=="function"?e:T(+e),i):t},i.sortValues=function(e){return arguments.length?(n=e,y=null,i):n},i.sort=function(e){return arguments.length?(y=e,n=null,i):y},i.startAngle=function(e){return arguments.length?(b=typeof e=="function"?e:T(+e),i):b},i.endAngle=function(e){return arguments.length?(l=typeof e=="function"?e:T(+e),i):l},i.padAngle=function(e){return arguments.length?(p=typeof e=="function"?e:T(+e),i):p},i}var At=mt.pie,I={sections:new Map,showData:!1},W=I.sections,V=I.showData,Ct=structuredClone(At),$t=g(()=>structuredClone(Ct),"getConfig"),Dt=g(()=>{W=new Map,V=I.showData,ft()},"clear"),Tt=g(({label:t,value:n})=>{if(n<0)throw new Error(`"${t}" has invalid value: ${n}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);W.has(t)||(W.set(t,n),B.debug(`added new section: ${t}, with value: ${n}`))},"addSection"),bt=g(()=>W,"getSections"),kt=g(t=>{V=t},"setShowData"),zt=g(()=>V,"getShowData"),q={getConfig:$t,clear:Dt,setDiagramTitle:ct,getDiagramTitle:lt,setAccTitle:st,getAccTitle:ot,setAccDescription:it,getAccDescription:nt,addSection:Tt,getSections:bt,setShowData:kt,getShowData:zt},Et=g((t,n)=>{at(t,n),n.setShowData(t.showData),t.sections.map(n.addSection)},"populateDb"),Mt={parse:g(async t=>{const n=await vt("pie",t);B.debug(n),Et(n,q)},"parse")},Rt=g(t=>`
|
|
2
2
|
.pieCircle{
|
|
3
3
|
stroke: ${t.pieStrokeColor};
|
|
4
4
|
stroke-width : ${t.pieStrokeWidth};
|
|
@@ -36,4 +36,4 @@ import{p as at}from"./chunk-JWPE2WC7-DDjyvUmZ.js";import{K as T,N as G,b2 as rt,
|
|
|
36
36
|
font-size: ${t.pieLegendTextSize};
|
|
37
37
|
}
|
|
38
38
|
`,"getStyles"),Ft=Rt,Lt=g(t=>{const n=[...t.values()].reduce((l,p)=>l+p,0),y=[...t.entries()].map(([l,p])=>({label:l,value:p})).filter(l=>l.value/n*100>=1);return wt().value(l=>l.value).sort(null)(y)},"createPieArcs"),Nt=g((t,n,y,b)=>{B.debug(`rendering pie chart
|
|
39
|
-
`+t);const l=b.db,p=ut(),i=dt(l.getConfig(),p.pie),e=40,r=18,s=4,h=450,w=h,$=gt(n),f=$.append("g");f.attr("transform","translate("+w/2+","+h/2+")");const{themeVariables:o}=p;let[D]=pt(o.pieOuterStrokeWidth);D??=2;const E=i.legendPosition,k=i.textPosition,F=i.donutHole>0&&i.donutHole<=.9?i.donutHole:0,u=Math.min(w,h)/2-e,A=Z().innerRadius(F*u).outerRadius(u),M=Z().innerRadius(u*k).outerRadius(u*k),m=f.append("g");m.append("circle").attr("cx",0).attr("cy",0).attr("r",u+D/2).attr("class","pieOuterCircle");const L=l.getSections(),J=Lt(L),Q=[o.pie1,o.pie2,o.pie3,o.pie4,o.pie5,o.pie6,o.pie7,o.pie8,o.pie9,o.pie10,o.pie11,o.pie12];let _=0;L.forEach(a=>{_+=a});const U=J.filter(a=>(a.data.value/_*100).toFixed(0)!=="0"),H=xt(Q).domain([...L.keys()]);m.selectAll("mySlices").data(U).enter().append("path").attr("d",A).attr("fill",a=>H(a.data.label)).attr("class",a=>{let c="pieCircle";return i.highlightSlice==="hover"?c+=" highlightedOnHover":i.highlightSlice===a.data.label&&(c+=" highlighted"),c}),m.selectAll("mySlices").data(U).enter().append("text").text(a=>(a.data.value/_*100).toFixed(0)+"%").attr("transform",a=>"translate("+M.centroid(a)+")").style("text-anchor","middle").attr("class","slice");const Y=f.append("text").text(l.getDiagramTitle()).attr("x",0).attr("y",-400/2).attr("class","pieTitleText"),R=[...L.entries()].map(([a,c])=>({label:a,value:c})),C=f.selectAll(".legend").data(R).enter().append("g").attr("class","legend");C.append("rect").attr("width",r).attr("height",r).style("fill",a=>H(a.label)).style("stroke",a=>H(a.label)),C.append("text").attr("x",r+s).attr("y",r-s).text(a=>l.getShowData()?`${a.label} [${a.value}]`:a.label);const z=Math.max(...C.selectAll("text").nodes().map(a=>a?.getBoundingClientRect().width??0));let N=h,O=w+e;const d=r+s,P=R.length*d;switch(E){case"center":C.attr("transform",(a,c)=>{const v=d*R.length/2,x=-z/2-(r+s),S=c*d-v;return"translate("+x+","+S+")"});break;case"top":N+=P,C.attr("transform",(a,c)=>{const v=u,x=-z/2-(r+s),S=c*d-v;return`translate(${x}, ${S})`}),m.attr("transform",()=>`translate(0, ${P+d})`);break;case"bottom":N+=P,C.attr("transform",(a,c)=>{const v=-u-d,x=-z/2-(r+s),S=c*d-v;return"translate("+x+","+S+")"});break;case"left":O+=r+s+z,C.attr("transform",(a,c)=>{const v=d*R.length/2,x=-u-(r+s),S=c*d-v;return"translate("+x+","+S+")"}),m.attr("transform",()=>`translate(${z+r+s}, 0)`);break;case"right":default:O+=r+s+z,C.attr("transform",(a,c)=>{const v=d*R.length/2,x=12*r,S=c*d-v;return"translate("+x+","+S+")"});break}const j=Y.node()?.getBoundingClientRect().width??0,tt=w/2-j/2,et=w/2+j/2,K=Math.min(0,tt),X=Math.max(O,et)-K;$.attr("viewBox",`${K} 0 ${X} ${N}`),ht($,N,X,i.useMaxWidth)},"draw"),Wt={draw:Nt},
|
|
39
|
+
`+t);const l=b.db,p=ut(),i=dt(l.getConfig(),p.pie),e=40,r=18,s=4,h=450,w=h,$=gt(n),f=$.append("g");f.attr("transform","translate("+w/2+","+h/2+")");const{themeVariables:o}=p;let[D]=pt(o.pieOuterStrokeWidth);D??=2;const E=i.legendPosition,k=i.textPosition,F=i.donutHole>0&&i.donutHole<=.9?i.donutHole:0,u=Math.min(w,h)/2-e,A=Z().innerRadius(F*u).outerRadius(u),M=Z().innerRadius(u*k).outerRadius(u*k),m=f.append("g");m.append("circle").attr("cx",0).attr("cy",0).attr("r",u+D/2).attr("class","pieOuterCircle");const L=l.getSections(),J=Lt(L),Q=[o.pie1,o.pie2,o.pie3,o.pie4,o.pie5,o.pie6,o.pie7,o.pie8,o.pie9,o.pie10,o.pie11,o.pie12];let _=0;L.forEach(a=>{_+=a});const U=J.filter(a=>(a.data.value/_*100).toFixed(0)!=="0"),H=xt(Q).domain([...L.keys()]);m.selectAll("mySlices").data(U).enter().append("path").attr("d",A).attr("fill",a=>H(a.data.label)).attr("class",a=>{let c="pieCircle";return i.highlightSlice==="hover"?c+=" highlightedOnHover":i.highlightSlice===a.data.label&&(c+=" highlighted"),c}),m.selectAll("mySlices").data(U).enter().append("text").text(a=>(a.data.value/_*100).toFixed(0)+"%").attr("transform",a=>"translate("+M.centroid(a)+")").style("text-anchor","middle").attr("class","slice");const Y=f.append("text").text(l.getDiagramTitle()).attr("x",0).attr("y",-400/2).attr("class","pieTitleText"),R=[...L.entries()].map(([a,c])=>({label:a,value:c})),C=f.selectAll(".legend").data(R).enter().append("g").attr("class","legend");C.append("rect").attr("width",r).attr("height",r).style("fill",a=>H(a.label)).style("stroke",a=>H(a.label)),C.append("text").attr("x",r+s).attr("y",r-s).text(a=>l.getShowData()?`${a.label} [${a.value}]`:a.label);const z=Math.max(...C.selectAll("text").nodes().map(a=>a?.getBoundingClientRect().width??0));let N=h,O=w+e;const d=r+s,P=R.length*d;switch(E){case"center":C.attr("transform",(a,c)=>{const v=d*R.length/2,x=-z/2-(r+s),S=c*d-v;return"translate("+x+","+S+")"});break;case"top":N+=P,C.attr("transform",(a,c)=>{const v=u,x=-z/2-(r+s),S=c*d-v;return`translate(${x}, ${S})`}),m.attr("transform",()=>`translate(0, ${P+d})`);break;case"bottom":N+=P,C.attr("transform",(a,c)=>{const v=-u-d,x=-z/2-(r+s),S=c*d-v;return"translate("+x+","+S+")"});break;case"left":O+=r+s+z,C.attr("transform",(a,c)=>{const v=d*R.length/2,x=-u-(r+s),S=c*d-v;return"translate("+x+","+S+")"}),m.attr("transform",()=>`translate(${z+r+s}, 0)`);break;case"right":default:O+=r+s+z,C.attr("transform",(a,c)=>{const v=d*R.length/2,x=12*r,S=c*d-v;return"translate("+x+","+S+")"});break}const j=Y.node()?.getBoundingClientRect().width??0,tt=w/2-j/2,et=w/2+j/2,K=Math.min(0,tt),X=Math.max(O,et)-K;$.attr("viewBox",`${K} 0 ${X} ${N}`),ht($,N,X,i.useMaxWidth)},"draw"),Wt={draw:Nt},Kt={parser:Mt,db:q,renderer:Wt,styles:Ft};export{Kt as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as i,j as n}from"./index-CH7cEAxj.js";import{a as z,h as F,g as B,i as G,j,d as L,f as x,k as $,b as D,l as H,m as K,n as q,R as U,o as V,p as Z,F as J,q as Q,D as W,r as X}from"./nav-links-DZWMpwMR.js";import{u as S,c as Y}from"./iconBase-DtqdW2XR.js";import{c as ee}from"./chunk-OB3PAWPO-DJIP1M4r.js";var oe=Object.defineProperty,f=(s,e)=>oe(s,"name",{value:e,configurable:!0}),_="Popover",[w,he]=z(_,[F]),A=F(),[te,g]=w(_),re=f(s=>{const{__scopePopover:e,children:a,open:t,defaultOpen:c,onOpenChange:r,modal:o=!1}=s,d=A(e),l=i.useRef(null),[p,v]=i.useState(!1),[h,P]=i.useState(0),[b,R]=i.useState(0),[C,u]=B({prop:t,defaultProp:c??!1,onChange:r,caller:_});return n.jsx(G,{...d,children:n.jsx(te,{scope:e,contentId:j(),titleId:j(),descriptionId:j(),titlePresent:h>0,descriptionPresent:b>0,setTitleCount:P,setDescriptionCount:R,triggerRef:l,open:C,onOpenChange:u,onOpenToggle:i.useCallback(()=>u(O=>!O),[u]),hasCustomAnchor:p,onCustomAnchorAdd:i.useCallback(()=>v(!0),[]),onCustomAnchorRemove:i.useCallback(()=>v(!1),[]),modal:o,children:a})})},"Popover"),ne="PopoverTrigger",se=i.forwardRef(f(function(e,a){const{__scopePopover:t,...c}=e,r=g(ne,t),o=A(t),d=S(a,r.triggerRef),l=n.jsx(L.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.open?r.contentId:void 0,"data-state":y(r.open),...c,ref:d,onClick:x(e.onClick,r.onOpenToggle)});return r.hasCustomAnchor?l:n.jsx($,{asChild:!0,...o,children:l})},"PopoverTrigger")),E="PopoverPortal",[ae,ie]=w(E,{forceMount:void 0}),ce=f(s=>{const{__scopePopover:e,forceMount:a,children:t,container:c}=s,r=g(E,e);return n.jsx(ae,{scope:e,forceMount:a,children:n.jsx(D,{present:a||r.open,children:n.jsx(H,{asChild:!0,container:c,children:t})})})},"PopoverPortal"),m="PopoverContent",pe=i.forwardRef(f(function(e,a){const t=ie(m,e.__scopePopover),{forceMount:c=t.forceMount,...r}=e,o=g(m,e.__scopePopover);return n.jsx(D,{present:c||o.open,children:o.modal?n.jsx(ue,{...r,ref:a}):n.jsx(le,{...r,ref:a})})},"PopoverContent")),de=Y("PopoverContent.RemoveScroll"),ue=i.forwardRef(f(function(e,a){const t=g(m,e.__scopePopover),c=i.useRef(null),r=S(a,c),o=i.useRef(!1),{nodes:d,registry:l}=K();return i.useEffect(()=>{const p=c.current;if(p)return q(p)},[]),n.jsx(U,{as:de,allowPinchZoom:!0,shards:i.useMemo(()=>[c,...d.map(p=>({current:p}))],[c,d]),children:n.jsx(I,{...e,ref:r,branchNodes:d,branchRegistry:l,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:x(e.onCloseAutoFocus,p=>{p.preventDefault(),o.current||t.triggerRef.current?.focus()}),onPointerDownOutside:x(e.onPointerDownOutside,p=>{const v=p.detail.originalEvent,h=v.button===0&&v.ctrlKey===!0,P=v.button===2||h;o.current=P},{checkForDefaultPrevented:!1}),onFocusOutside:x(e.onFocusOutside,p=>p.preventDefault(),{checkForDefaultPrevented:!1})})})},"PopoverContentModal")),le=i.forwardRef(f(function(e,a){const t=g(m,e.__scopePopover),c=i.useRef(!1),r=i.useRef(!1);return n.jsx(I,{...e,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{e.onCloseAutoFocus?.(o),o.defaultPrevented||(c.current||t.triggerRef.current?.focus(),o.preventDefault()),c.current=!1,r.current=!1},onInteractOutside:o=>{e.onInteractOutside?.(o),o.defaultPrevented||(c.current=!0,o.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const d=o.target;t.triggerRef.current?.contains(d)&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&r.current&&o.preventDefault()}})},"PopoverContentNonModal")),I=i.forwardRef(f(function(e,a){const{__scopePopover:t,trapFocus:c,onOpenAutoFocus:r,onCloseAutoFocus:o,disableOutsidePointerEvents:d,onEscapeKeyDown:l,onPointerDownOutside:p,onFocusOutside:v,onInteractOutside:h,"aria-describedby":P,branchNodes:b,branchRegistry:R,...C}=e,u=g(m,t),O=A(t),[T,N]=i.useState(null),k=S(a,N);return V(T),Z(),n.jsx(J,{registry:R,children:n.jsx(Q,{asChild:!0,loop:!0,trapped:c,branches:b,onMountAutoFocus:r,onUnmountAutoFocus:o,children:n.jsx(W,{asChild:!0,disableOutsidePointerEvents:d,onInteractOutside:h,onEscapeKeyDown:l,onPointerDownOutside:p,onFocusOutside:v,onDismiss:()=>u.onOpenChange(!1),deferPointerDownOutside:!0,children:n.jsx(X,{"data-state":y(u.open),role:"dialog",id:u.contentId,"aria-labelledby":u.titlePresent?u.titleId:void 0,"aria-describedby":u.descriptionPresent?M(P,u.descriptionId):P,...O,...C,ref:k,style:{...C.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})})},"PopoverContentImpl"));function y(s){return s?"open":"closed"}f(y,"getState");function M(...s){const e=new Set;for(const a of s)if(typeof a=="string")for(const t of String(a).trim().split(/\s+/))t&&e.add(t);return e.size>0?Array.from(e).join(" "):void 0}f(M,"concatAriaDescribedby");function me({...s}){return n.jsx(re,{"data-slot":"popover",...s})}function Ce({...s}){return n.jsx(se,{"data-slot":"popover-trigger",...s})}function xe({className:s,align:e="center",sideOffset:a=4,...t}){return n.jsx(ce,{children:n.jsx(pe,{"data-slot":"popover-content",align:e,sideOffset:a,className:ee("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",s),...t})})}export{me as P,Ce as a,xe as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const p="modulepreload",v=function(l){return"/"+l},d={},y=function(f,c,E){let i=Promise.resolve();if(c&&c.length>0){let r=function(e){return Promise.all(e.map(o=>Promise.resolve(o).then(s=>({status:"fulfilled",value:s}),s=>({status:"rejected",reason:s}))))};document.getElementsByTagName("link");const t=document.querySelector("meta[property=csp-nonce]"),u=t?.nonce||t?.getAttribute("nonce");i=r(c.map(e=>{if(e=v(e),e in d)return;d[e]=!0;const o=e.endsWith(".css"),s=o?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${s}`))return;const n=document.createElement("link");if(n.rel=o?"stylesheet":p,o||(n.as="script"),n.crossOrigin="",n.href=e,u&&n.setAttribute("nonce",u),document.head.appendChild(n),o)return new Promise((m,h)=>{n.addEventListener("load",m),n.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${e}`)))})}))}function a(r){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=r,window.dispatchEvent(t),!t.defaultPrevented)throw r}return i.then(r=>{for(const t of r||[])t.status==="rejected"&&a(t.reason);return f().catch(a)})};export{y as _};
|