@xano/sdk 1.0.5 → 1.0.7
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/CHANGELOG.md +35 -5
- package/README.md +56 -20
- package/dist/.build-fingerprint +1 -1
- package/dist/{agent-file-refresh-KVLR7M5Y.js → agent-file-refresh-DGGSRPJ4.js} +15 -14
- package/dist/agent-skill-command-37DFYS7Q.js +414 -0
- package/dist/{answer-shape-XGR2DGWY.js → answer-shape-RBFDCNZ7.js} +5 -5
- package/dist/{backend-dir-IE4RMUFH.js → backend-dir-KDD43X7K.js} +16 -15
- package/dist/{backend-slot-6HBWG5FN.js → backend-slot-TBOVZXDE.js} +4 -4
- package/dist/bin.js +63 -61
- package/dist/{branch-T2APKPVG.js → branch-7PIKNUD7.js} +12 -11
- package/dist/{branch-commands-HXXTCSOO.js → branch-commands-EGY7ZEZE.js} +32 -32
- package/dist/bundle.js +9 -39
- package/dist/{capture-HBXFXZEW.js → capture-GW5KNKMB.js} +3 -3
- package/dist/{chunk-3BJYQGAZ.js → chunk-26LHXLD3.js} +2 -2
- package/dist/{chunk-N6BWB35H.js → chunk-2ACWDSAQ.js} +3 -3
- package/dist/{chunk-XIABDKFQ.js → chunk-2SD4LA22.js} +2 -2
- package/dist/{chunk-K6PRKPFX.js → chunk-2XWVZRL6.js} +7 -7
- package/dist/{chunk-ES5A66IH.js → chunk-2YER2J47.js} +13 -13
- package/dist/{chunk-G57RYMKB.js → chunk-3FRGNBOC.js} +2 -2
- package/dist/{chunk-BMCZQZMI.js → chunk-46PATL23.js} +13 -9
- package/dist/{chunk-MYLPOVX6.js → chunk-47XT6WQL.js} +8 -8
- package/dist/{chunk-AWQ7BQTQ.js → chunk-4GPIOIAC.js} +6 -1
- package/dist/{chunk-7GX445AE.js → chunk-4XHAT7C5.js} +2 -2
- package/dist/{chunk-QOLOQ35F.js → chunk-567KK6XF.js} +8 -8
- package/dist/{chunk-57HMNJGB.js → chunk-5GIOCDUM.js} +893 -922
- package/dist/{chunk-OKNE3TWU.js → chunk-5KJBWIDZ.js} +83 -5
- package/dist/{chunk-SRX6B544.js → chunk-5QMJOE2K.js} +5 -5
- package/dist/{chunk-AGD7F7YI.js → chunk-5SCPRXFB.js} +4 -4
- package/dist/{chunk-SNGFEESM.js → chunk-5ZG7V2VW.js} +3 -3
- package/dist/{chunk-XJU6UAFV.js → chunk-7FIMUFBP.js} +2 -2
- package/dist/{chunk-AESE434J.js → chunk-7M6JP3FS.js} +2 -2
- package/dist/{chunk-K6CB5TKM.js → chunk-7REDHC4N.js} +2 -2
- package/dist/chunk-7VR4IO5B.js +44 -0
- package/dist/{chunk-57B56I4B.js → chunk-7XXWKTCE.js} +65 -41
- package/dist/{chunk-PL7AIAWS.js → chunk-A4R5CAY4.js} +4 -111
- package/dist/{chunk-QZTJ2556.js → chunk-AKERAUNH.js} +4 -4
- package/dist/{chunk-JZWUAEMO.js → chunk-ARWMVNDJ.js} +6 -3
- package/dist/{chunk-WYS6XVZ3.js → chunk-AVS4WPPY.js} +2 -2
- package/dist/{chunk-KUU7T4ZE.js → chunk-B2URJBC4.js} +18 -18
- package/dist/chunk-B3P25SDP.js +78 -0
- package/dist/chunk-BRANWM4U.js +853 -0
- package/dist/{chunk-BBPAXOU6.js → chunk-BSVQEKHO.js} +6 -6
- package/dist/{chunk-3WHWOKU4.js → chunk-BZ6WTG3E.js} +4 -4
- package/dist/{chunk-XNZURZ7T.js → chunk-CH23ONYG.js} +77 -6
- package/dist/{chunk-SQPIECXD.js → chunk-CJDPSCMX.js} +45 -5
- package/dist/{chunk-M7GJ6YUF.js → chunk-CNZASQPL.js} +16 -2
- package/dist/{chunk-44CWK6YC.js → chunk-CPN6WSBH.js} +4 -4
- package/dist/{chunk-L3BDO2BI.js → chunk-CT3J5JRZ.js} +7 -7
- package/dist/{chunk-3HOGFGKG.js → chunk-D3KEPRRN.js} +2 -2
- package/dist/{chunk-OGUMHW2X.js → chunk-D5OZRJ3T.js} +7 -7
- package/dist/{chunk-S5KQIFKJ.js → chunk-DG3APBUJ.js} +208 -112
- package/dist/chunk-DIWF7L33.js +995 -0
- package/dist/{chunk-WRBKLYSJ.js → chunk-DNBP4GJN.js} +4 -3
- package/dist/{chunk-LZDA6SVD.js → chunk-DXZTL7NA.js} +141 -91
- package/dist/{chunk-XMDDBEEM.js → chunk-E763QI3G.js} +2 -2
- package/dist/{chunk-3VX7VAQT.js → chunk-EF4MHLEW.js} +26 -9
- package/dist/{chunk-AGSCOISO.js → chunk-ELPQTDW6.js} +108 -100
- package/dist/{chunk-Q22BMRPF.js → chunk-EPFDY5JU.js} +2 -2
- package/dist/{chunk-7DBM6XHR.js → chunk-EU32BC5B.js} +8 -8
- package/dist/{chunk-Y76ERHLK.js → chunk-FDTET7FZ.js} +6 -6
- package/dist/{chunk-Z3SNX45M.js → chunk-FENA7K7C.js} +3 -3
- package/dist/{chunk-WOGJB2F6.js → chunk-FNLTFOUD.js} +4 -9
- package/dist/{chunk-FV55SRQU.js → chunk-FQ53GTII.js} +9 -9
- package/dist/{chunk-DEVGLLNZ.js → chunk-GHMLRFRX.js} +8 -8
- package/dist/{chunk-GMVW6ZZK.js → chunk-H2K4GFUS.js} +4 -4
- package/dist/{chunk-NUU76247.js → chunk-HTQWAQRW.js} +3 -3
- package/dist/{chunk-ROY4YAEQ.js → chunk-HU7F56VF.js} +22 -2
- package/dist/{chunk-RXCT3OCU.js → chunk-HZ6ADG3O.js} +47 -8
- package/dist/{chunk-Z2BRSQ6M.js → chunk-I6XRUU6U.js} +91 -64
- package/dist/chunk-IPNN2KRW.js +257 -0
- package/dist/{chunk-SF2B7MZK.js → chunk-IYXL5NYU.js} +259 -31
- package/dist/chunk-JI3BLXWQ.js +107 -0
- package/dist/{chunk-4DJTQ6W4.js → chunk-JIKGT7DO.js} +2 -1
- package/dist/{chunk-OVV2HXJ6.js → chunk-JOOKM7AH.js} +2 -2
- package/dist/{chunk-65SW2BA5.js → chunk-JOWY6HFL.js} +3 -3
- package/dist/{chunk-I5VEROXW.js → chunk-JX6N73H3.js} +2 -2
- package/dist/{chunk-5D6DGF3W.js → chunk-L472YIGG.js} +8 -8
- package/dist/{chunk-HLQH3AXB.js → chunk-L6HZ67P6.js} +2 -2
- package/dist/{chunk-TM5LRSBB.js → chunk-LBJA7IEM.js} +370 -45
- package/dist/chunk-LCOCRJ4K.js +116 -0
- package/dist/{chunk-DGWHAVRG.js → chunk-LJM5CIY4.js} +16 -1
- package/dist/{chunk-5RLAF6RL.js → chunk-M2C54ZBC.js} +4 -4
- package/dist/{chunk-U6DR6464.js → chunk-M3NEK3LT.js} +4 -4
- package/dist/{chunk-5XVBT6CQ.js → chunk-MBL7CXJ7.js} +2 -2
- package/dist/{chunk-5YBNXNKU.js → chunk-MFWF2NZJ.js} +12 -5
- package/dist/{chunk-TEBS7FE6.js → chunk-MYZRMSPM.js} +2 -2
- package/dist/{chunk-YSLMMR2U.js → chunk-N3YFCFCO.js} +14 -14
- package/dist/{chunk-OJPZEUPH.js → chunk-NDJAKSE7.js} +11 -8
- package/dist/{chunk-PIPIA7K7.js → chunk-NV37YGOV.js} +7 -7
- package/dist/{chunk-ZHGWR45B.js → chunk-O56DQKPL.js} +9 -9
- package/dist/{chunk-4QBGE3EO.js → chunk-ORGNLQN6.js} +6 -6
- package/dist/{chunk-NNB7VUCH.js → chunk-PEIBGH2V.js} +55 -31
- package/dist/{chunk-UJ6ZZJDD.js → chunk-PEX4QZVI.js} +2 -2
- package/dist/{chunk-LLS2WO2K.js → chunk-PV25BDCH.js} +5 -5
- package/dist/{chunk-F3557PVM.js → chunk-PY722CHR.js} +2 -2
- package/dist/{chunk-4GDEEY2U.js → chunk-QGIZLFAS.js} +4 -4
- package/dist/{chunk-YI76TURL.js → chunk-QRQ54LUI.js} +16 -14
- package/dist/{chunk-JQOX6HW4.js → chunk-RBU2YX22.js} +3 -3
- package/dist/{chunk-4NEBBKOP.js → chunk-RRMH7WMY.js} +7 -7
- package/dist/{chunk-HOOOOJJP.js → chunk-S46ODQRA.js} +2 -2
- package/dist/{chunk-37FBPMNE.js → chunk-S56YBYMN.js} +5 -2
- package/dist/{chunk-4QFBEKXI.js → chunk-SDGV76HF.js} +2 -2
- package/dist/{chunk-CV54PASI.js → chunk-SGK3PTTM.js} +312 -132
- package/dist/{chunk-S5TEJIGP.js → chunk-SKEG3V2V.js} +2 -2
- package/dist/{chunk-VZ22VUAS.js → chunk-SLGJIWCY.js} +3 -3
- package/dist/{chunk-JSEVKRVJ.js → chunk-T4LJ5UR2.js} +29 -7
- package/dist/{chunk-JXKO6JT7.js → chunk-TWVUYS63.js} +24 -24
- package/dist/{chunk-UIEFE6FU.js → chunk-U5M7T6CI.js} +7 -7
- package/dist/{chunk-Z4VN347O.js → chunk-UYFUIHH3.js} +2 -2
- package/dist/{chunk-Y6NO3DLQ.js → chunk-V7MBRUK6.js} +3 -3
- package/dist/chunk-VAGSKUWC.js +67 -0
- package/dist/{chunk-A4NNCI4O.js → chunk-VIJ5D3RC.js} +3 -3
- package/dist/{chunk-3IYVHVM6.js → chunk-VJFMUJWZ.js} +4 -4
- package/dist/{chunk-V4IBHDIY.js → chunk-VNDR2T35.js} +7 -7
- package/dist/chunk-WAVNUTMT.js +9 -0
- package/dist/{chunk-KQLACS4Q.js → chunk-WNCW2RNB.js} +4 -4
- package/dist/chunk-WUEPP5HD.js +111 -0
- package/dist/{chunk-IV446ZLJ.js → chunk-Y453TW6J.js} +2 -2
- package/dist/{local-engine-command-73NHWD6V.js → chunk-YCUDOF6Q.js} +22 -76
- package/dist/{chunk-CJ76PSJT.js → chunk-YH2JVJAO.js} +12 -12
- package/dist/{chunk-GPI3OWRE.js → chunk-YHB34BN6.js} +2 -1
- package/dist/{chunk-AMBEITWL.js → chunk-ZGLNHA7T.js} +7 -7
- package/dist/{chunk-NGAODDLX.js → chunk-ZJOAWRED.js} +8 -8
- package/dist/{chunk-TUEFTRC2.js → chunk-ZXRDD3Q2.js} +50 -27
- package/dist/cli.d.ts +40 -11
- package/dist/cli.js +60 -56
- package/dist/{codegen-command-L2OO6OTE.js → codegen-command-T7TC7PQO.js} +79 -72
- package/dist/codegen.d.ts +2 -2
- package/dist/codegen.js +2 -2
- package/dist/{commands-2E4JB3DB.js → commands-JDENTDJS.js} +3 -3
- package/dist/{completion-LPJIH5VQ.js → completion-YFD5OVJW.js} +9 -5
- package/dist/{config-QDCRKEWD.js → config-YJFUTRJW.js} +8 -8
- package/dist/{deploy-command-HJZNYCUY.js → deploy-command-OEVEE6UG.js} +65 -63
- package/dist/deploy-source-HYVZEYXV.js +83 -0
- package/dist/{dev-env-sync-GZ4QQJGV.js → dev-env-sync-EFDCJ6KU.js} +63 -61
- package/dist/{diagnostics-LSMGB4TY.js → diagnostics-OMN5Y2AH.js} +2 -2
- package/dist/{display-name-hint-AHCNH6TF.js → display-name-hint-SW3GB3V7.js} +14 -13
- package/dist/{emit-DqG6qddr.d.ts → emit-Dov_92kn.d.ts} +66 -20
- package/dist/env-example-refresh-WNSOH534.js +134 -0
- package/dist/{env-pull-command-Z4RLVEGJ.js → env-pull-command-UYEXMQ3P.js} +53 -52
- package/dist/{env-target-ZHQUS5BO.js → env-target-JBSLBKNX.js} +15 -14
- package/dist/{env-var-command-FKQ4VVQ6.js → env-var-command-BJNRAXNV.js} +51 -49
- package/dist/{ephemeral-L4KUOGEU.js → ephemeral-CEOGMIEA.js} +11 -10
- package/dist/{ephemeral-command-GRPFI3TD.js → ephemeral-command-IPSGBCS5.js} +70 -69
- package/dist/{ephemeral-state-VLYU2BXR.js → ephemeral-state-MTBASPRS.js} +13 -12
- package/dist/{generate-command-XNODJFDQ.js → generate-command-XQXODBS6.js} +96 -86
- package/dist/{gitignore-VWRSZX5F.js → gitignore-RUVCIZO4.js} +21 -20
- package/dist/{guards-OPSGB6LG.js → guards-KYEOCVHN.js} +6 -6
- package/dist/{impersonate-command-AEKIZHHK.js → impersonate-command-MA27O7S5.js} +46 -44
- package/dist/{import-PHSSFFLA.js → import-XKRFHABE.js} +5 -5
- package/dist/index.d.ts +14 -20
- package/dist/index.js +13 -13
- package/dist/init-command-6RDTCMAB.js +143 -0
- package/dist/{init-modules-SGSX7XEY.js → init-modules-DHTBOCQT.js} +10 -9
- package/dist/{init-web-6HX3YLQP.js → init-web-ELBXSXDL.js} +3 -3
- package/dist/internal.d.ts +5 -5
- package/dist/internal.js +47 -20
- package/dist/{io-TAF4WXYQ.js → io-PGTCBSIQ.js} +6 -4
- package/dist/{keep-data-merge-GUGF7MVZ.js → keep-data-merge-TDJOIAVT.js} +33 -34
- package/dist/{lambda-config-reconcile-65U6I4KU.js → lambda-config-reconcile-47X5C2E4.js} +6 -5
- package/dist/{landed-QA6PRTV2.js → landed-F7PCHGCK.js} +3 -3
- package/dist/{landing-record-FCAWLCZU.js → landing-record-TPPYFQAS.js} +26 -25
- package/dist/{live-diff-IM4W3ELT.js → live-diff-5E2BQWQ7.js} +9 -8
- package/dist/local-engine-choice-S6VHPJRU.js +81 -0
- package/dist/local-engine-command-4EZCGZ6M.js +85 -0
- package/dist/{local-engine-config-W3KB7RWM.js → local-engine-config-2EBL3QKA.js} +3 -2
- package/dist/{local-engine-deploy-Y4OAWL7K.js → local-engine-deploy-FOPNWU7X.js} +18 -16
- package/dist/local-engine-lookup-GM3E3NPP.js +43 -0
- package/dist/local-engine-mcp-bridge-QKZHUGW3.js +423 -0
- package/dist/local-engine-mcp-command-BFQVLXZC.js +181 -0
- package/dist/{local-engine-process-6YPJHKYM.js → local-engine-process-XUQPQENQ.js} +12 -9
- package/dist/{local-engine-state-OCW5YDD7.js → local-engine-state-JQPKGB65.js} +4 -3
- package/dist/{local-engine-update-check-X7TZGRFL.js → local-engine-update-check-S7UF6ZF5.js} +7 -6
- package/dist/{lock-WXXC3QHL.js → lock-HDCHD2ON.js} +4 -2
- package/dist/{lock-commands-PKDBNRSD.js → lock-commands-HJ6Y5QVS.js} +66 -64
- package/dist/{login-command-V4U4FA5G.js → login-command-JO55NZAS.js} +34 -33
- package/dist/{logout-command-TV3P545Z.js → logout-command-MPRIRSJA.js} +18 -17
- package/dist/{loop-VKHGQ6MP.js → loop-SUB6C2LK.js} +8 -9
- package/dist/{marketplace-command-LEFOAEAV.js → marketplace-command-BM6G257N.js} +90 -54
- package/dist/{marketplace-resolve-ME7O7JBJ.js → marketplace-resolve-AWH3RG57.js} +7 -6
- package/dist/{meta-client-TEEECA5W.js → meta-client-AOSWODQQ.js} +16 -15
- package/dist/{module-manifest-7YLGIRCY.js → module-manifest-GXI46PEF.js} +7 -4
- package/dist/node.d.ts +5 -5
- package/dist/node.js +68 -67
- package/dist/operation-outcome-4UKPXTNC.js +53 -0
- package/dist/{output-target-5FWX3NGZ.js → output-target-RAZ4KN5J.js} +22 -21
- package/dist/{package-manager-PRAHUSCN.js → package-manager-K762W7XT.js} +2 -2
- package/dist/{plan-disclosure-QGL5UYQR.js → plan-disclosure-JR52DWXN.js} +21 -21
- package/dist/{plugin-contributions-GNFTWDEB.js → plugin-contributions-E6XHLQWK.js} +6 -6
- package/dist/{plugin-prompt-VEQGMZ4T.js → plugin-prompt-IODX5EU6.js} +5 -5
- package/dist/{plugin-questions-BGRL23GO.js → plugin-questions-AAAJ7POP.js} +4 -4
- package/dist/plugin.d.ts +254 -10
- package/dist/{preflight-command-VKJKXRRI.js → preflight-command-7GKJBWOQ.js} +71 -70
- package/dist/{profile-command-P7A3BH26.js → profile-command-CM6J7E2M.js} +35 -34
- package/dist/{profile-pointer-HG7IXE4I.js → profile-pointer-KTYXL6FU.js} +5 -4
- package/dist/{project-dependency-Z4CKOCJI.js → project-dependency-OQ5575QQ.js} +11 -8
- package/dist/{project-sdk-JWZWGXXR.js → project-sdk-2ESHHZVL.js} +4 -4
- package/dist/promote-command-BDRPG6UU.js +147 -0
- package/dist/{prompt-SURZOUUW.js → prompt-MQPGU4ZI.js} +4 -4
- package/dist/{publish-command-HGAB3H4A.js → publish-command-IEMYZ7LF.js} +69 -67
- package/dist/pull-command-S5E2ABZ4.js +169 -0
- package/dist/{pull-superseded-TOT5S4QU.js → pull-superseded-E34BZVLH.js} +4 -4
- package/dist/{raw-where-EoWl5fqY.d.ts → raw-where-ZMLND6AG.d.ts} +20 -3
- package/dist/release-command-7F5TBKO2.js +151 -0
- package/dist/{release-ns-command-WOQE2BDQ.js → release-ns-command-EK2ZQ4CC.js} +101 -100
- package/dist/{retry-command-JRGMZZAC.js → retry-command-GL5HCMVB.js} +10 -9
- package/dist/{routes-manifest-URFMAWJE.js → routes-manifest-YR4ZIMLM.js} +15 -7
- package/dist/routes-manifest-file-LCIKPDAG.js +41 -0
- package/dist/scaffold.js +4 -4
- package/dist/secrets-IV4N5HYI.js +20 -0
- package/dist/{secrets-file-YWZWVJ52.js → secrets-file-LXREYU3M.js} +21 -20
- package/dist/{secrets-fill-command-HIHK3VH2.js → secrets-fill-command-QHZS3KWM.js} +64 -62
- package/dist/{seed-24DTEY5S.js → seed-FRKMDN2Z.js} +9 -9
- package/dist/{source-resolve-OWD3MIEO.js → source-resolve-BBHYTOXI.js} +26 -24
- package/dist/{static-host-UIR2OLPQ.js → static-host-7LC7OZR4.js} +5 -5
- package/dist/{status-command-JKTHH5QE.js → status-command-TY253MJT.js} +54 -52
- package/dist/{store-zxw2go0f.d.ts → store-Boba9OOh.d.ts} +2 -2
- package/dist/{store-5YAQS6KU.js → store-VJ3OS6VO.js} +8 -7
- package/dist/sync-baseline-DOV5AGIO.js +36 -0
- package/dist/{sync-contributions-RBB6JVOL.js → sync-contributions-63542VE4.js} +20 -12
- package/dist/sync-record-RGHK7EAL.js +43 -0
- package/dist/{table-MQFVYA4K.js → table-OAYGFGEN.js} +8 -8
- package/dist/{tables-command-5Q4BSUNO.js → tables-command-PZIVDAH3.js} +45 -43
- package/dist/{tenant-Q3LPVSSM.js → tenant-Y3II4VY3.js} +12 -11
- package/dist/{tenant-command-BFVU2PEX.js → tenant-command-G6XON7CF.js} +113 -107
- package/dist/{test-command-F4VUU4QR.js → test-command-3FZOX7O3.js} +44 -42
- package/dist/{tests-5ZSDFVIJ.js → tests-KF6N6BZ7.js} +6 -6
- package/dist/{token-TERSTNU4.js → token-DJJUW5HY.js} +14 -13
- package/dist/toolchain-hooks-7PWCFLSU.js +46 -0
- package/dist/{toolchain-modules-FD5ANV2U.js → toolchain-modules-OTNSKK52.js} +8 -5
- package/dist/toolchain-peers-KQ7TQ2AR.js +28 -0
- package/dist/tracked-backend-AJCGTO5Y.js +82 -0
- package/dist/{update-check-O4C2LCZH.js → update-check-4E5L6GAW.js} +61 -59
- package/dist/{upgrade-command-NVFWLMTA.js → upgrade-command-BXMSQN4C.js} +68 -64
- package/dist/{whoami-command-YKNTISIV.js → whoami-command-NLCCIEUM.js} +17 -16
- package/dist/{workspace-GGVGE2S5.js → workspace-PNMJOXE4.js} +5 -5
- package/dist/{workspace-binding-OS4ZOX4S.js → workspace-binding-J5GWDFRI.js} +16 -15
- package/dist/{workspace-command-GTUNVN7K.js → workspace-command-MHIIY352.js} +125 -93
- package/dist/{workspace-env-467C5KHM.js → workspace-env-LLRWCHSA.js} +17 -16
- package/dist/{workspace-export-3XTVGQVM.js → workspace-export-BIKAYHWJ.js} +5 -5
- package/dist/{writable-7SSWUQJ3.js → writable-UOTO4WWC.js} +4 -4
- package/dist/{xano-6RS5XQZE.js → xano-LCI7VWPS.js} +8 -8
- package/dist/{xanosdk-import-E3WSIYUE.js → xanosdk-import-S7A3CVBN.js} +8 -8
- package/dist/{xanosdk-project-KH5TZ2KI.js → xanosdk-project-J4VCFRHP.js} +18 -17
- package/guides/README.md +2 -2
- package/guides/cli.md +73 -4
- package/guides/codegen.md +23 -5
- package/guides/codes.md +8 -2
- package/guides/coverage.md +5 -0
- package/guides/deploying.md +80 -0
- package/guides/marketplace.md +21 -0
- package/guides/module-contract.md +80 -4
- package/guides/scaffold.md +61 -10
- package/guides/typed-frontend.md +37 -0
- package/llms/client.md +11 -1
- package/llms/filters.md +4 -0
- package/llms/kinds-core.md +1 -1
- package/llms/statements-data.md +3 -2
- package/llms/toolchain.md +12 -0
- package/llms-full.txt +34 -7
- package/llms.txt +3 -3
- package/manifest.json +63 -5
- package/package.json +5 -2
- package/skills/xano-backend/SKILL.md +119 -0
- package/dist/chunk-F6IKWAIU.js +0 -664
- package/dist/chunk-M6ZFSTIZ.js +0 -630
- package/dist/chunk-MEIJDRHU.js +0 -243
- package/dist/deploy-source-5COWTBOC.js +0 -81
- package/dist/env-example-refresh-DWQIOQYR.js +0 -127
- package/dist/init-command-TI3HCKXZ.js +0 -126
- package/dist/local-engine-choice-FPJAZSSD.js +0 -79
- package/dist/operation-outcome-GNDD35WL.js +0 -51
- package/dist/promote-command-KHTIK44I.js +0 -141
- package/dist/pull-command-EUEWBRXZ.js +0 -162
- package/dist/release-command-WOVQAMUY.js +0 -147
- package/dist/toolchain-hooks-QVUZ6HZ4.js +0 -96
- package/dist/tracked-backend-B4HTME4S.js +0 -80
package/dist/chunk-M6ZFSTIZ.js
DELETED
|
@@ -1,630 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
defaultThemeChoice
|
|
3
|
-
} from "./chunk-TFFGOFVZ.js";
|
|
4
|
-
import {
|
|
5
|
-
md5Hex
|
|
6
|
-
} from "./chunk-OHX6MIUZ.js";
|
|
7
|
-
|
|
8
|
-
// src/emit/icon-presets.ts
|
|
9
|
-
var ICON_LIBRARIES = ["lucide", "tabler", "phosphor"];
|
|
10
|
-
var DEFAULT_ICON_LIBRARY = "lucide";
|
|
11
|
-
var LIBRARIES = {
|
|
12
|
-
lucide: {
|
|
13
|
-
id: "lucide",
|
|
14
|
-
label: "Lucide",
|
|
15
|
-
componentsJson: "lucide",
|
|
16
|
-
react: {
|
|
17
|
-
dependency: { "lucide-react": "^0.475.0" },
|
|
18
|
-
arrowImport: `import { ArrowRight } from "lucide-react";`,
|
|
19
|
-
arrowComponent: "ArrowRight",
|
|
20
|
-
modeImports: [`import { Monitor, Moon, Sun } from "lucide-react";`],
|
|
21
|
-
modeComponents: { system: "Monitor", light: "Sun", dark: "Moon" }
|
|
22
|
-
},
|
|
23
|
-
svelte: {
|
|
24
|
-
// Not the same version line as `lucide-react`: the Svelte icons ship from
|
|
25
|
-
// a separate package on their own 1.x.
|
|
26
|
-
dependency: { "@lucide/svelte": "^1.31.0" },
|
|
27
|
-
arrowImport: `import ArrowRight from "@lucide/svelte/icons/arrow-right";`,
|
|
28
|
-
arrowComponent: "ArrowRight",
|
|
29
|
-
modeImports: [
|
|
30
|
-
`import Monitor from "@lucide/svelte/icons/monitor";`,
|
|
31
|
-
`import Moon from "@lucide/svelte/icons/moon";`,
|
|
32
|
-
`import Sun from "@lucide/svelte/icons/sun";`
|
|
33
|
-
],
|
|
34
|
-
modeComponents: { system: "Monitor", light: "Sun", dark: "Moon" }
|
|
35
|
-
},
|
|
36
|
-
guidance: {
|
|
37
|
-
react: `Icons are [Lucide](https://lucide.dev/icons), installed as \`lucide-react\` and
|
|
38
|
-
imported by name from the package root \u2014
|
|
39
|
-
\`import { ArrowRight } from "lucide-react";\`.`,
|
|
40
|
-
svelte: `Icons are [Lucide](https://lucide.dev/icons), installed as \`@lucide/svelte\` \u2014
|
|
41
|
-
**not** \`lucide-react\`, which is the wrong package here in the same way the
|
|
42
|
-
plain \`shadcn\` CLI is. Import them one per module, and kebab-case the name into
|
|
43
|
-
the path: the icon is that module's DEFAULT export, and \`ArrowRight\` lives at
|
|
44
|
-
\`arrow-right\` \u2014 \`import ArrowRight from "@lucide/svelte/icons/arrow-right";\`.
|
|
45
|
-
Never from the package root, which pulls the whole set into the bundle.`
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
tabler: {
|
|
49
|
-
id: "tabler",
|
|
50
|
-
label: "Tabler",
|
|
51
|
-
componentsJson: "tabler",
|
|
52
|
-
react: {
|
|
53
|
-
dependency: { "@tabler/icons-react": "^3.31.0" },
|
|
54
|
-
// Every Tabler component is prefixed `Icon`, so the name in markup is not
|
|
55
|
-
// the name on the website — the single most common mistake with this set.
|
|
56
|
-
arrowImport: `import { IconArrowRight } from "@tabler/icons-react";`,
|
|
57
|
-
arrowComponent: "IconArrowRight",
|
|
58
|
-
modeImports: [
|
|
59
|
-
`import { IconDeviceDesktop, IconMoon, IconSun } from "@tabler/icons-react";`
|
|
60
|
-
],
|
|
61
|
-
modeComponents: {
|
|
62
|
-
system: "IconDeviceDesktop",
|
|
63
|
-
light: "IconSun",
|
|
64
|
-
dark: "IconMoon"
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
svelte: {
|
|
68
|
-
dependency: { "@tabler/icons-svelte": "^3.31.0" },
|
|
69
|
-
arrowImport: `import { IconArrowRight } from "@tabler/icons-svelte";`,
|
|
70
|
-
arrowComponent: "IconArrowRight",
|
|
71
|
-
modeImports: [
|
|
72
|
-
`import { IconDeviceDesktop, IconMoon, IconSun } from "@tabler/icons-svelte";`
|
|
73
|
-
],
|
|
74
|
-
modeComponents: {
|
|
75
|
-
system: "IconDeviceDesktop",
|
|
76
|
-
light: "IconSun",
|
|
77
|
-
dark: "IconMoon"
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
guidance: {
|
|
81
|
-
react: `Icons are [Tabler](https://tabler.io/icons), installed as \`@tabler/icons-react\`.
|
|
82
|
-
Every component is prefixed \`Icon\` \u2014 the site lists \`arrow-right\`, the import is
|
|
83
|
-
\`import { IconArrowRight } from "@tabler/icons-react";\`.`,
|
|
84
|
-
svelte: `Icons are [Tabler](https://tabler.io/icons), installed as \`@tabler/icons-svelte\` \u2014
|
|
85
|
-
**not** \`@tabler/icons-react\`, which is the wrong package here in the same way
|
|
86
|
-
the plain \`shadcn\` CLI is. Every component is prefixed \`Icon\`, so the name in
|
|
87
|
-
markup is not the name on the site: \`arrow-right\` is
|
|
88
|
-
\`import { IconArrowRight } from "@tabler/icons-svelte";\`.`
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
phosphor: {
|
|
92
|
-
id: "phosphor",
|
|
93
|
-
label: "Phosphor",
|
|
94
|
-
// shadcn/ui's CLI does not know this set. Left off components.json rather
|
|
95
|
-
// than guessed — see IconLibrary.componentsJson.
|
|
96
|
-
componentsJson: void 0,
|
|
97
|
-
react: {
|
|
98
|
-
dependency: { "@phosphor-icons/react": "^2.1.7" },
|
|
99
|
-
arrowImport: `import { ArrowRight } from "@phosphor-icons/react";`,
|
|
100
|
-
arrowComponent: "ArrowRight",
|
|
101
|
-
modeImports: [`import { Desktop, Moon, Sun } from "@phosphor-icons/react";`],
|
|
102
|
-
modeComponents: { system: "Desktop", light: "Sun", dark: "Moon" }
|
|
103
|
-
},
|
|
104
|
-
svelte: {
|
|
105
|
-
dependency: { "phosphor-svelte": "^3.0.1" },
|
|
106
|
-
arrowImport: `import ArrowRight from "phosphor-svelte/lib/ArrowRight";`,
|
|
107
|
-
arrowComponent: "ArrowRight",
|
|
108
|
-
modeImports: [
|
|
109
|
-
`import Desktop from "phosphor-svelte/lib/Desktop";`,
|
|
110
|
-
`import Moon from "phosphor-svelte/lib/Moon";`,
|
|
111
|
-
`import Sun from "phosphor-svelte/lib/Sun";`
|
|
112
|
-
],
|
|
113
|
-
modeComponents: { system: "Desktop", light: "Sun", dark: "Moon" }
|
|
114
|
-
},
|
|
115
|
-
guidance: {
|
|
116
|
-
react: `Icons are [Phosphor](https://phosphoricons.com), installed as
|
|
117
|
-
\`@phosphor-icons/react\` and imported by name \u2014
|
|
118
|
-
\`import { ArrowRight } from "@phosphor-icons/react";\`. Each takes a \`weight\` prop
|
|
119
|
-
(\`regular\`, \`bold\`, \`duotone\`, \u2026) rather than only a stroke width.`,
|
|
120
|
-
svelte: `Icons are [Phosphor](https://phosphoricons.com), installed as \`phosphor-svelte\` \u2014
|
|
121
|
-
**not** \`@phosphor-icons/react\`, which is the wrong package here in the same way
|
|
122
|
-
the plain \`shadcn\` CLI is. Import them one per module, and PascalCase the name
|
|
123
|
-
into the path: \`import ArrowRight from "phosphor-svelte/lib/ArrowRight";\`.
|
|
124
|
-
Never from the package root, which pulls the whole set into the bundle.`
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
function findIconLibrary(id) {
|
|
129
|
-
const normalized = id.trim().toLowerCase();
|
|
130
|
-
return ICON_LIBRARIES.includes(normalized) ? LIBRARIES[normalized] : void 0;
|
|
131
|
-
}
|
|
132
|
-
function allIconLibraries() {
|
|
133
|
-
return ICON_LIBRARIES.map((id) => LIBRARIES[id]);
|
|
134
|
-
}
|
|
135
|
-
function defaultIconLibrary() {
|
|
136
|
-
return LIBRARIES[DEFAULT_ICON_LIBRARY];
|
|
137
|
-
}
|
|
138
|
-
function resolveIconsFlag(raw) {
|
|
139
|
-
const library = findIconLibrary(raw);
|
|
140
|
-
if (library === void 0) {
|
|
141
|
-
throw new Error(
|
|
142
|
-
`Unknown --icons "${raw}". Valid icon libraries: ${ICON_LIBRARIES.join(", ")}.`
|
|
143
|
-
);
|
|
144
|
-
}
|
|
145
|
-
return library;
|
|
146
|
-
}
|
|
147
|
-
function iconLibraryOf(id) {
|
|
148
|
-
return id === void 0 ? defaultIconLibrary() : LIBRARIES[id];
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// src/emit/decode-record.ts
|
|
152
|
-
function decodeDigest(content) {
|
|
153
|
-
return md5Hex(content);
|
|
154
|
-
}
|
|
155
|
-
function decodeMarkerWith(previous, files) {
|
|
156
|
-
const sorted = [...files].sort((a, b) => a.path.localeCompare(b.path));
|
|
157
|
-
return {
|
|
158
|
-
...previous,
|
|
159
|
-
files: sorted.map((f) => f.path),
|
|
160
|
-
digests: Object.fromEntries(sorted.map((f) => [f.path, decodeDigest(f.content)]))
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
var SOURCE_KINDS = /* @__PURE__ */ new Set(["workspace", "ephemeral", "local", "tenant", "release"]);
|
|
164
|
-
function decodeMarkerHead(previous, command, provenance, sdkVersion, report) {
|
|
165
|
-
const colon = provenance.indexOf(":");
|
|
166
|
-
const kind = colon === -1 ? provenance : provenance.slice(0, colon);
|
|
167
|
-
const origin = SOURCE_KINDS.has(kind) ? { source: kind, origin: colon === -1 ? kind : provenance.slice(colon + 1) } : { source: "file", origin: provenance };
|
|
168
|
-
const { generatedBy: _generatedBy, report: _previousReport, files: _files, digests: _digests, ...kept } = previous;
|
|
169
|
-
return {
|
|
170
|
-
...kept,
|
|
171
|
-
...origin,
|
|
172
|
-
sdkVersion,
|
|
173
|
-
generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
174
|
-
note: `Written by \`xanosdk ${command}\`. Its presence lets a later \`pull\`, \`generate --force\` or \`init --from\` refresh this tree in place.`,
|
|
175
|
-
// The findings of THIS decode — a previous one's would describe a source
|
|
176
|
-
// the tree no longer reflects. Dropped when this command has none to say.
|
|
177
|
-
...report !== void 0 ? { report } : {}
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// src/emit/frontend-react.ts
|
|
182
|
-
var CODE_CLASS = "bg-muted rounded px-1.5 py-0.5 font-mono text-sm";
|
|
183
|
-
function jsxText(s) {
|
|
184
|
-
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/\{/g, "{").replace(/\}/g, "}");
|
|
185
|
-
}
|
|
186
|
-
function renderNode(node) {
|
|
187
|
-
return "code" in node ? `<code className="${CODE_CLASS}">${jsxText(node.code)}</code>` : jsxText(node.text);
|
|
188
|
-
}
|
|
189
|
-
function renderNodes(nodes) {
|
|
190
|
-
return nodes.map(renderNode).join("");
|
|
191
|
-
}
|
|
192
|
-
function renderApp(landing, choice) {
|
|
193
|
-
const steps = landing.steps.map((step) => ` <li>${renderNodes(step)}</li>`).join("\n");
|
|
194
|
-
const toggle = choice.dark === "toggle";
|
|
195
|
-
const icons = iconLibraryOf(choice.icons).react;
|
|
196
|
-
return `${icons.arrowImport}
|
|
197
|
-
|
|
198
|
-
import { Button } from "@/components/ui/button";${toggle ? `
|
|
199
|
-
import { ModeToggle } from "@/components/mode-toggle";` : ""}
|
|
200
|
-
import {
|
|
201
|
-
Card,
|
|
202
|
-
CardContent,
|
|
203
|
-
CardDescription,
|
|
204
|
-
CardFooter,
|
|
205
|
-
CardHeader,
|
|
206
|
-
CardTitle,
|
|
207
|
-
} from "@/components/ui/card";
|
|
208
|
-
|
|
209
|
-
export default function App() {
|
|
210
|
-
return (
|
|
211
|
-
<main className="mx-auto flex min-h-screen max-w-2xl flex-col justify-center p-8">${toggle ? `
|
|
212
|
-
<div className="mb-4 flex justify-end">
|
|
213
|
-
<ModeToggle />
|
|
214
|
-
</div>` : ""}
|
|
215
|
-
<Card>
|
|
216
|
-
<CardHeader>
|
|
217
|
-
<CardTitle className="text-3xl tracking-tight">${jsxText(landing.title)}</CardTitle>
|
|
218
|
-
<CardDescription className="text-base">
|
|
219
|
-
${renderNodes(landing.lead)}
|
|
220
|
-
</CardDescription>
|
|
221
|
-
</CardHeader>
|
|
222
|
-
<CardContent>
|
|
223
|
-
<ol className="text-muted-foreground list-inside list-decimal space-y-2">
|
|
224
|
-
${steps}
|
|
225
|
-
</ol>
|
|
226
|
-
</CardContent>
|
|
227
|
-
<CardFooter>
|
|
228
|
-
{/* asChild renders the Button's styles onto the anchor. Components come
|
|
229
|
-
from shadcn/ui \u2014 add more with \`npx shadcn@latest add <name>\`. */}
|
|
230
|
-
<Button asChild>
|
|
231
|
-
<a href="${landing.cta.href}" target="_blank" rel="noreferrer">
|
|
232
|
-
${jsxText(landing.cta.label)} <${icons.arrowComponent} />
|
|
233
|
-
</a>
|
|
234
|
-
</Button>
|
|
235
|
-
</CardFooter>
|
|
236
|
-
</Card>
|
|
237
|
-
</main>
|
|
238
|
-
);
|
|
239
|
-
}
|
|
240
|
-
`;
|
|
241
|
-
}
|
|
242
|
-
function renderMainTsx() {
|
|
243
|
-
return `import { StrictMode } from "react";
|
|
244
|
-
import { createRoot } from "react-dom/client";
|
|
245
|
-
import App from "./App.js";
|
|
246
|
-
import "./index.css";
|
|
247
|
-
|
|
248
|
-
createRoot(document.getElementById("root")!).render(
|
|
249
|
-
<StrictMode>
|
|
250
|
-
<App />
|
|
251
|
-
</StrictMode>,
|
|
252
|
-
);
|
|
253
|
-
`;
|
|
254
|
-
}
|
|
255
|
-
function renderComponentsJson(choice) {
|
|
256
|
-
const config = {
|
|
257
|
-
$schema: "https://ui.shadcn.com/schema.json",
|
|
258
|
-
style: "new-york",
|
|
259
|
-
rsc: false,
|
|
260
|
-
tsx: true,
|
|
261
|
-
tailwind: {
|
|
262
|
-
// v4 has no config file; the theme lives in the stylesheet.
|
|
263
|
-
config: "",
|
|
264
|
-
css: "frontend/src/index.css",
|
|
265
|
-
// The base color the scaffold's stylesheet was rendered from. The CLI
|
|
266
|
-
// reads it for the few colors a generated component hard-codes rather
|
|
267
|
-
// than tokenises, so a value that disagrees with index.css produces
|
|
268
|
-
// components that clash with everything already there. An imported
|
|
269
|
-
// registry theme belongs to no upstream base and falls back to neutral.
|
|
270
|
-
baseColor: choice.theme.baseColor ?? "neutral",
|
|
271
|
-
cssVariables: true,
|
|
272
|
-
prefix: ""
|
|
273
|
-
},
|
|
274
|
-
aliases: {
|
|
275
|
-
components: "@/components",
|
|
276
|
-
utils: "@/lib/utils",
|
|
277
|
-
ui: "@/components/ui",
|
|
278
|
-
lib: "@/lib",
|
|
279
|
-
hooks: "@/hooks"
|
|
280
|
-
},
|
|
281
|
-
// Omitted entirely for a set the CLI does not know — writing an
|
|
282
|
-
// unrecognised value would break `add` for every component, which is worse
|
|
283
|
-
// than icons defaulting to lucide. See IconLibrary.componentsJson.
|
|
284
|
-
...iconLibraryOf(choice.icons).componentsJson === void 0 ? {} : { iconLibrary: iconLibraryOf(choice.icons).componentsJson }
|
|
285
|
-
};
|
|
286
|
-
return JSON.stringify(config, null, 2) + "\n";
|
|
287
|
-
}
|
|
288
|
-
function renderButtonTsx() {
|
|
289
|
-
return `import * as React from "react"
|
|
290
|
-
import { cva, type VariantProps } from "class-variance-authority"
|
|
291
|
-
import { cn } from "cn"
|
|
292
|
-
import { Slot } from "radix-ui"
|
|
293
|
-
|
|
294
|
-
const buttonVariants = cva(
|
|
295
|
-
"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
296
|
-
{
|
|
297
|
-
variants: {
|
|
298
|
-
variant: {
|
|
299
|
-
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
300
|
-
destructive:
|
|
301
|
-
"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
|
|
302
|
-
outline:
|
|
303
|
-
"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
304
|
-
secondary:
|
|
305
|
-
"bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
306
|
-
ghost:
|
|
307
|
-
"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
308
|
-
link: "text-primary underline-offset-4 hover:underline",
|
|
309
|
-
},
|
|
310
|
-
size: {
|
|
311
|
-
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
312
|
-
xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
313
|
-
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
|
|
314
|
-
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
315
|
-
icon: "size-9",
|
|
316
|
-
"icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
|
|
317
|
-
"icon-sm": "size-8",
|
|
318
|
-
"icon-lg": "size-10",
|
|
319
|
-
},
|
|
320
|
-
},
|
|
321
|
-
defaultVariants: {
|
|
322
|
-
variant: "default",
|
|
323
|
-
size: "default",
|
|
324
|
-
},
|
|
325
|
-
}
|
|
326
|
-
)
|
|
327
|
-
|
|
328
|
-
function Button({
|
|
329
|
-
className,
|
|
330
|
-
variant = "default",
|
|
331
|
-
size = "default",
|
|
332
|
-
asChild = false,
|
|
333
|
-
...props
|
|
334
|
-
}: React.ComponentProps<"button"> &
|
|
335
|
-
VariantProps<typeof buttonVariants> & {
|
|
336
|
-
asChild?: boolean
|
|
337
|
-
}) {
|
|
338
|
-
const Comp = asChild ? Slot.Root : "button"
|
|
339
|
-
|
|
340
|
-
return (
|
|
341
|
-
<Comp
|
|
342
|
-
data-slot="button"
|
|
343
|
-
data-variant={variant}
|
|
344
|
-
data-size={size}
|
|
345
|
-
className={cn(buttonVariants({ variant, size, className }))}
|
|
346
|
-
{...props}
|
|
347
|
-
/>
|
|
348
|
-
)
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
export { Button, buttonVariants }
|
|
352
|
-
`;
|
|
353
|
-
}
|
|
354
|
-
function renderModeToggleTsx(icons) {
|
|
355
|
-
return `import { useEffect, useState } from "react";
|
|
356
|
-
${icons.modeImports.join("\n")}
|
|
357
|
-
|
|
358
|
-
import { Button } from "@/components/ui/button";
|
|
359
|
-
import { getMode, setMode, watchMode, type Mode } from "@/lib/theme";
|
|
360
|
-
|
|
361
|
-
/** system \u2192 light \u2192 dark \u2192 system. */
|
|
362
|
-
const NEXT: Record<Mode, Mode> = { system: "light", light: "dark", dark: "system" };
|
|
363
|
-
|
|
364
|
-
const ICON = {
|
|
365
|
-
system: ${icons.modeComponents.system},
|
|
366
|
-
light: ${icons.modeComponents.light},
|
|
367
|
-
dark: ${icons.modeComponents.dark},
|
|
368
|
-
};
|
|
369
|
-
|
|
370
|
-
export function ModeToggle() {
|
|
371
|
-
// Read on mount, not during render: the inline script in index.html has
|
|
372
|
-
// already applied the class, and touching localStorage while rendering would
|
|
373
|
-
// break if this component is ever server-rendered.
|
|
374
|
-
const [mode, setLocal] = useState<Mode>("system");
|
|
375
|
-
useEffect(() => {
|
|
376
|
-
setLocal(getMode());
|
|
377
|
-
return watchMode(setLocal);
|
|
378
|
-
}, []);
|
|
379
|
-
|
|
380
|
-
const Icon = ICON[mode];
|
|
381
|
-
const change = () => {
|
|
382
|
-
const next = NEXT[mode];
|
|
383
|
-
setMode(next);
|
|
384
|
-
setLocal(next);
|
|
385
|
-
};
|
|
386
|
-
|
|
387
|
-
return (
|
|
388
|
-
<Button variant="ghost" size="icon" onClick={change} aria-label={\`Switch to \${NEXT[mode]} theme\`}>
|
|
389
|
-
<Icon />
|
|
390
|
-
</Button>
|
|
391
|
-
);
|
|
392
|
-
}
|
|
393
|
-
`;
|
|
394
|
-
}
|
|
395
|
-
function renderCardTsx() {
|
|
396
|
-
return `import * as React from "react"
|
|
397
|
-
import { cn } from "cn"
|
|
398
|
-
|
|
399
|
-
function Card({ className, ...props }: React.ComponentProps<"div">) {
|
|
400
|
-
return (
|
|
401
|
-
<div
|
|
402
|
-
data-slot="card"
|
|
403
|
-
className={cn(
|
|
404
|
-
"flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",
|
|
405
|
-
className
|
|
406
|
-
)}
|
|
407
|
-
{...props}
|
|
408
|
-
/>
|
|
409
|
-
)
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
413
|
-
return (
|
|
414
|
-
<div
|
|
415
|
-
data-slot="card-header"
|
|
416
|
-
className={cn(
|
|
417
|
-
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
|
418
|
-
className
|
|
419
|
-
)}
|
|
420
|
-
{...props}
|
|
421
|
-
/>
|
|
422
|
-
)
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
|
|
426
|
-
return (
|
|
427
|
-
<div
|
|
428
|
-
data-slot="card-title"
|
|
429
|
-
className={cn("leading-none font-semibold", className)}
|
|
430
|
-
{...props}
|
|
431
|
-
/>
|
|
432
|
-
)
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
|
|
436
|
-
return (
|
|
437
|
-
<div
|
|
438
|
-
data-slot="card-description"
|
|
439
|
-
className={cn("text-sm text-muted-foreground", className)}
|
|
440
|
-
{...props}
|
|
441
|
-
/>
|
|
442
|
-
)
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
function CardAction({ className, ...props }: React.ComponentProps<"div">) {
|
|
446
|
-
return (
|
|
447
|
-
<div
|
|
448
|
-
data-slot="card-action"
|
|
449
|
-
className={cn(
|
|
450
|
-
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
451
|
-
className
|
|
452
|
-
)}
|
|
453
|
-
{...props}
|
|
454
|
-
/>
|
|
455
|
-
)
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
function CardContent({ className, ...props }: React.ComponentProps<"div">) {
|
|
459
|
-
return (
|
|
460
|
-
<div
|
|
461
|
-
data-slot="card-content"
|
|
462
|
-
className={cn("px-6", className)}
|
|
463
|
-
{...props}
|
|
464
|
-
/>
|
|
465
|
-
)
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
|
|
469
|
-
return (
|
|
470
|
-
<div
|
|
471
|
-
data-slot="card-footer"
|
|
472
|
-
className={cn("flex items-center px-6 [.border-t]:pt-6", className)}
|
|
473
|
-
{...props}
|
|
474
|
-
/>
|
|
475
|
-
)
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
export {
|
|
479
|
-
Card,
|
|
480
|
-
CardHeader,
|
|
481
|
-
CardFooter,
|
|
482
|
-
CardTitle,
|
|
483
|
-
CardAction,
|
|
484
|
-
CardDescription,
|
|
485
|
-
CardContent,
|
|
486
|
-
}
|
|
487
|
-
`;
|
|
488
|
-
}
|
|
489
|
-
var reactPreset = {
|
|
490
|
-
id: "react",
|
|
491
|
-
label: "React + Vite",
|
|
492
|
-
dependencies: {
|
|
493
|
-
// shadcn/ui's runtime surface. `radix-ui` is the unified primitives
|
|
494
|
-
// package current components import (`Slot.Root` powers `asChild`) — not
|
|
495
|
-
// the per-primitive `@radix-ui/react-*` packages, which it superseded.
|
|
496
|
-
// cva types the variants, and `cn` is shadcn's own class merger, which its
|
|
497
|
-
// components import directly (it replaced clsx + tailwind-merge upstream).
|
|
498
|
-
// Pre-installed so `npx shadcn@latest add <component>` works without a
|
|
499
|
-
// separate npm i.
|
|
500
|
-
//
|
|
501
|
-
// The icon package is deliberately absent: it is `--icons`, merged in by
|
|
502
|
-
// renderPackageJson from `iconBinding` below. Naming lucide here too would
|
|
503
|
-
// install it alongside whatever the user actually chose.
|
|
504
|
-
"class-variance-authority": "^0.7.1",
|
|
505
|
-
cn: "^0.4.0",
|
|
506
|
-
"radix-ui": "^1.6.7",
|
|
507
|
-
react: "^19.1.0",
|
|
508
|
-
"react-dom": "^19.1.0"
|
|
509
|
-
},
|
|
510
|
-
devDependencies: {
|
|
511
|
-
"@tailwindcss/vite": "^4.1.5",
|
|
512
|
-
"@types/node": "^20.19.43",
|
|
513
|
-
"@types/react": "^19.1.0",
|
|
514
|
-
"@types/react-dom": "^19.1.0",
|
|
515
|
-
// 6.x, which peer-requires vite ^8 — the same constraint the Svelte
|
|
516
|
-
// preset's plugin has, which is why both presets share one Vite major.
|
|
517
|
-
// Its `@rolldown/plugin-babel` and `babel-plugin-react-compiler` peers are
|
|
518
|
-
// OPTIONAL (they back the React Compiler path, which this scaffold does
|
|
519
|
-
// not enable), so neither is shipped: verified by a clean install with no
|
|
520
|
-
// unmet-peer warnings.
|
|
521
|
-
"@vitejs/plugin-react": "^6.0.5",
|
|
522
|
-
tailwindcss: "^4.1.5",
|
|
523
|
-
"tw-animate-css": "^1.2.4",
|
|
524
|
-
tsx: "^4.19.2",
|
|
525
|
-
// Kept in step with the Svelte preset — the major `sv create` pins. 7 is
|
|
526
|
-
// out, but svelte-check's peer range stops at 6 and the two presets track
|
|
527
|
-
// one TypeScript major so the shared tsconfig means the same thing in both.
|
|
528
|
-
typescript: "^6.0.3",
|
|
529
|
-
vite: "^8.0.16"
|
|
530
|
-
},
|
|
531
|
-
// `tsc` checks .tsx natively, so React needs nothing beyond it.
|
|
532
|
-
checkCmd: "tsc --noEmit",
|
|
533
|
-
aliasName: "@",
|
|
534
|
-
aliasTarget: "frontend/src",
|
|
535
|
-
// `./`-rooted: with no `baseUrl` (deprecated in TypeScript 6), a `paths`
|
|
536
|
-
// target resolves against tsconfig.json's own directory.
|
|
537
|
-
tsconfigPaths: { "@/*": ["./frontend/src/*"] },
|
|
538
|
-
tsconfigOptions: { jsx: "react-jsx" },
|
|
539
|
-
viteImports: [
|
|
540
|
-
`import react from "@vitejs/plugin-react";`,
|
|
541
|
-
`import tailwindcss from "@tailwindcss/vite";`
|
|
542
|
-
],
|
|
543
|
-
vitePlugins: ["react()", "tailwindcss()"],
|
|
544
|
-
entryScript: "/src/main.tsx",
|
|
545
|
-
libUtils: `export { cn, type ClassValue } from "cn";
|
|
546
|
-
`,
|
|
547
|
-
files(_vars, landing, choice = defaultThemeChoice()) {
|
|
548
|
-
return [
|
|
549
|
-
// The shadcn/ui CLI's config — lets `npx shadcn@latest add <component>`
|
|
550
|
-
// work in a fresh scaffold without a separate `shadcn init`.
|
|
551
|
-
{ path: "components.json", content: renderComponentsJson(choice) },
|
|
552
|
-
{ path: "frontend/src/main.tsx", content: renderMainTsx() },
|
|
553
|
-
{ path: "frontend/src/App.tsx", content: renderApp(landing, choice) },
|
|
554
|
-
// Only for `--dark toggle`. `system` needs no component: the inline
|
|
555
|
-
// script in index.html is the whole implementation.
|
|
556
|
-
...choice.dark === "toggle" ? [
|
|
557
|
-
{
|
|
558
|
-
path: "frontend/src/components/mode-toggle.tsx",
|
|
559
|
-
content: renderModeToggleTsx(iconLibraryOf(choice.icons).react)
|
|
560
|
-
}
|
|
561
|
-
] : [],
|
|
562
|
-
// The two components the landing page uses. Every other shadcn component
|
|
563
|
-
// is one `npx shadcn@latest add` away and lands beside these.
|
|
564
|
-
{ path: "frontend/src/components/ui/button.tsx", content: renderButtonTsx() },
|
|
565
|
-
{ path: "frontend/src/components/ui/card.tsx", content: renderCardTsx() }
|
|
566
|
-
];
|
|
567
|
-
},
|
|
568
|
-
iconBinding(id) {
|
|
569
|
-
return iconLibraryOf(id).react;
|
|
570
|
-
},
|
|
571
|
-
readmeFrontendSection(icons) {
|
|
572
|
-
return `React + Vite, styled with [Tailwind CSS](https://tailwindcss.com) v4 and
|
|
573
|
-
[shadcn/ui](https://ui.shadcn.com). shadcn is not a dependency \u2014 its components
|
|
574
|
-
are copied into [\`frontend/src/components/ui/\`](frontend/src/components/ui/) and
|
|
575
|
-
owned by this project, so edit them freely. \`Button\` and \`Card\` are already
|
|
576
|
-
there; add more with:
|
|
577
|
-
|
|
578
|
-
\`\`\`bash
|
|
579
|
-
npx shadcn@latest add dialog input form
|
|
580
|
-
\`\`\`
|
|
581
|
-
|
|
582
|
-
[\`components.json\`](components.json) is pre-configured, so that works with no
|
|
583
|
-
\`shadcn init\` step. ${iconLibraryOf(icons).guidance.react}
|
|
584
|
-
[\`frontend/src/App.tsx\`](frontend/src/App.tsx) already uses one.
|
|
585
|
-
|
|
586
|
-
Components import through the \`@/\` alias (\`@/components/ui/button\`), which
|
|
587
|
-
maps to \`frontend/src/\` in both \`tsconfig.json\` and \`vite.config.ts\` \u2014 change
|
|
588
|
-
one and change the other. \`cn()\` comes from shadcn's \`cn\` package, which is
|
|
589
|
-
what the CLI writes into every component it adds.
|
|
590
|
-
|
|
591
|
-
Colors come from the theme tokens in
|
|
592
|
-
[\`frontend/src/index.css\`](frontend/src/index.css) \u2014 see **Theming** below.`;
|
|
593
|
-
},
|
|
594
|
-
agentGuidanceSection(icons) {
|
|
595
|
-
return `- \`frontend/src/\` \u2014 the React app. Tailwind v4 + shadcn/ui.
|
|
596
|
-
- \`frontend/src/components/ui/\` \u2014 shadcn components, **copied in and owned by
|
|
597
|
-
this project**. Edit them directly; there is no library to configure around.
|
|
598
|
-
- Need one that isn't there? \`npx shadcn@latest add <name>\` \u2014 do not hand-roll
|
|
599
|
-
it, and do not add a different component library.
|
|
600
|
-
- ${iconLibraryOf(icons).guidance.react.replace(/\n/g, "\n ")}
|
|
601
|
-
\`frontend/src/App.tsx\` already uses one. Do not add another icon library and
|
|
602
|
-
do not paste raw inline \`<svg>\` markup \u2014 search the set before concluding an
|
|
603
|
-
icon is missing.
|
|
604
|
-
- Import via the \`@/\` alias (\`@/components/ui/button\`), declared in both
|
|
605
|
-
\`tsconfig.json\` and \`vite.config.ts\`. \`cn()\` is \`import { cn } from "cn"\`
|
|
606
|
-
(shadcn's own package, which the CLI writes into every component it adds);
|
|
607
|
-
\`@/lib/utils\` re-exports it. Leave a generated component's imports as the
|
|
608
|
-
CLI wrote them.
|
|
609
|
-
- \`npx shadcn@latest add sonner\` writes a \`Toaster\` that reads the mode from
|
|
610
|
-
\`next-themes\`, which this project does not use. Drop that import and
|
|
611
|
-
uninstall \`next-themes\`, then pass \`theme\` from the project's own mode:
|
|
612
|
-
\`getMode()\` + \`watchMode()\` from \`@/lib/theme\` when that module exists,
|
|
613
|
-
otherwise \`"system"\` (or \`"light"\` if nothing applies the \`dark\` class).`;
|
|
614
|
-
}
|
|
615
|
-
};
|
|
616
|
-
|
|
617
|
-
export {
|
|
618
|
-
ICON_LIBRARIES,
|
|
619
|
-
DEFAULT_ICON_LIBRARY,
|
|
620
|
-
findIconLibrary,
|
|
621
|
-
allIconLibraries,
|
|
622
|
-
defaultIconLibrary,
|
|
623
|
-
resolveIconsFlag,
|
|
624
|
-
iconLibraryOf,
|
|
625
|
-
reactPreset,
|
|
626
|
-
decodeDigest,
|
|
627
|
-
decodeMarkerWith,
|
|
628
|
-
decodeMarkerHead
|
|
629
|
-
};
|
|
630
|
-
//# sourceMappingURL=chunk-M6ZFSTIZ.js.map
|