diff --git a/.coderocket/source-manifest.json b/.coderocket/source-manifest.json new file mode 100644 index 0000000..6b1e6dd --- /dev/null +++ b/.coderocket/source-manifest.json @@ -0,0 +1,365 @@ +{ + "schemaVersion": 1, + "files": { + "packages/react/src/calendar.test.ts": "911cbab2ba02a8f15840965f0bbd47a309a00cf8869f650d6b8f402bbc4087a7", + "packages/react/src/components/accordion.tsx": "b66bbfe6f091d02283e5d19524ac89255245278c44edfe0c6a11a7b5d29b101b", + "packages/react/src/components/alert-dialog.tsx": "6b3f0d4c809cbd1cdf8279a53c14feb97f3b3f0050ed66f09fb0aee65557b16b", + "packages/react/src/components/alert.tsx": "8e84290902ea5a98e343de63568c20b7ecd0286fc8c4f14b2d82af1f0801b5b2", + "packages/react/src/components/avatar.tsx": "b913460ac276c12ad429322b78128c7ba81b4a52697b6d8f285aff74791e40ea", + "packages/react/src/components/badge.tsx": "97cbadc874fc26fa7572150dfae637d6d5816953e2ba269efeb148237df15476", + "packages/react/src/components/breadcrumb.tsx": "0a41ddca855163c3e82413eee724962561ca6f0b018c670409037c547ecd10d5", + "packages/react/src/components/button.tsx": "c0b0eea05377ad2ad3924cdf79c5af24dc0d3ff7106bb0f820e8e6a20aa91179", + "packages/react/src/components/calendar.tsx": "5057cb164bdbc46b7ca164ef17a3911963ce24926c33b2dc0050d8ff2272d7b1", + "packages/react/src/components/card.tsx": "f6792dcc999e3609abaf06f183754822f44d834ffc4a75f5689a13c29f84fee9", + "packages/react/src/components/checkbox.tsx": "f54cc6e937ad9b2c299bc4a67be3af92c126371f884d1ae4dbb8e04ff789ad38", + "packages/react/src/components/collapsible.tsx": "34a6222f3d88688d5ace5b515584dfddac0df9757a73fdb4d25ee4392aa2161e", + "packages/react/src/components/combobox.tsx": "906b475aa2ee8e1529b1243a89e4dbf60686032299d7d94db3fe821eb7634587", + "packages/react/src/components/command.tsx": "2e03afd992cf4effbc7ccc8f4496182d8ccd863f39cfb670ea86ae654201e39b", + "packages/react/src/components/context-menu.tsx": "fb13c902c9cb75ea22cbc96f1b04a8e7a0779f22d358cbe468cd4c7ab8e24043", + "packages/react/src/components/data-table.tsx": "b1f81c1a5f234553a0f68a1df69bc1691302a820bc8c33bd178391a43e100823", + "packages/react/src/components/date-picker.tsx": "cbdfe9b6a3e5881b825f518b3278036fa9facf71fdce7859d44692bfc03c8989", + "packages/react/src/components/dialog.tsx": "5d7d9e338a64d78d4844ccdb1bf2b52b9894783206871e86c787f337c956c3e2", + "packages/react/src/components/drawer.tsx": "07a0fa5f4b19178b3f92cf64ee9007f53418fe44fac29f10059a225b7418463d", + "packages/react/src/components/dropdown.tsx": "58142308d0d2f3d93e647c898ecc82a8376107010fc2396d4bcabf7b0970c372", + "packages/react/src/components/empty-state.tsx": "18fd528f3564a5b4db8c3ebb1be629145173413c4df5bf91c880db6dbc66ab28", + "packages/react/src/components/field.tsx": "0e45324275e6b014802bd457a589d752141e4a62f93cc74c6a8066c039df591e", + "packages/react/src/components/file-upload.tsx": "79f0f91c44ae634e6d4cb53de168b69fd2f6fcf8dd8328555e3abde10d03bf19", + "packages/react/src/components/hover-card.tsx": "3da7484c6636942d10d9694e14ca6bc1765eb162be09149a9d9eb88de313078e", + "packages/react/src/components/input-group.tsx": "e041680037b8425f03f597322ff3040d74b450d0c5b1625f0d35ec379fc00fe1", + "packages/react/src/components/input.tsx": "5a3e973fc4fa2949fb7c952c38ee938767eeb564082b85b6fc9858ccb32b1ab5", + "packages/react/src/components/kbd.tsx": "e6de9b13d057b6b7f246cd32bd1112ac893eb843a3c1a975f5587e4be4873a48", + "packages/react/src/components/label.tsx": "e23ab6eb265e1614ca81758179d61fa98cc64bea2ab3d44b5d4abed938eddb30", + "packages/react/src/components/navigation-menu.tsx": "db55f59d7246eaca964cadf1597baadc3a277f1e43a46329fe8c67de7d7c0d52", + "packages/react/src/components/number-field.tsx": "5915dfafa68190ba671150edc3ea429d99fdaa1f8483fa24c0a51a7598fb89db", + "packages/react/src/components/pagination.tsx": "ff17eb52cd8932456c94762c4701b7908cd6132df276ba48046820a67d184771", + "packages/react/src/components/popover.tsx": "e6e8884ea15f23a77dad578dc68b5b2ea9764b69df1bb2c707db29185371ee72", + "packages/react/src/components/progress.tsx": "ac62b6ce28d090e18ee88fa43d48c83b33c6207ce12cd4287b7eb4994d9e5a79", + "packages/react/src/components/radio-group.tsx": "15e4d99e035087022474881397119a231bf054b6d266fda1f036bf6e6435b901", + "packages/react/src/components/select.tsx": "a2cb1369b932085fc9c25df4acb8f469c44a09a59d18a73d2f7c1d8120647aa4", + "packages/react/src/components/separator.tsx": "af09d19005c4e61e2d817625bd22777706837f2d8040ebd72f033f402246d1bc", + "packages/react/src/components/sheet.tsx": "c4ffdc940ef9d06bcb5bef9bfc462abf8e3935c66b579bdb85e33305eb916531", + "packages/react/src/components/sidebar.tsx": "bde9f2b40358f2eb3381dd0208cd186ae705511f6dacdf4e00899559dc728eaa", + "packages/react/src/components/skeleton.tsx": "febf2648d84cecdbbcb0e94077a3cbba5f1e83606a52dc215d1697b063328f49", + "packages/react/src/components/slider.tsx": "1c8f757f378448dec61d9bcd8b195a0290039c395e4ac21692ca92ac6a518a4d", + "packages/react/src/components/spinner.tsx": "a5c7556a2d28339d91eae25484bc80482066035eb06b0400511cd140de4c9cae", + "packages/react/src/components/switch.tsx": "a748319075fbe02b4efc6c4173e10d0a2c9b612018333ae99b41ad8b0e3d9967", + "packages/react/src/components/table.tsx": "1faea53da2ed2b55235943787423f5ce528c3b73ed37ebe33aac91acb7703241", + "packages/react/src/components/tabs.tsx": "91fc0ce13eedd072861dc39f68bb6ccfaa7f8bb1b4ba60a52c85def5f1054b19", + "packages/react/src/components/textarea.tsx": "69fd5be33c17d0545b8901311a93c167d9e27006fe0e5b6adc42c48f1b1fd383", + "packages/react/src/components/toast.tsx": "0232c67d6a3b7a283fa6973f3ca33a3bdcb71deab66f35b0b186956cbe03cd2a", + "packages/react/src/components/toggle-group.tsx": "2b0780ab90953aee304eb9fb4ba7751cfe8f766af85edec3cd3b625c5713a1da", + "packages/react/src/components/toggle.tsx": "9598be19ddeabe267f66a5a701b10511d91b498ae52b5931f387f2fa28c9755d", + "packages/react/src/components/tooltip.tsx": "eb0d7ab77ef3659426924c1a6634d6b4904260201c62cdf6dca0294427c78a37", + "packages/react/src/components/utils.tsx": "2be42e64a0a4fc6d74979064b47b4130d8057f34793016b032426d2e42d7ed61", + "packages/react/src/composition.tsx": "bd4d1ef1a04a58bde220c6efc610de81b8729ce6aa2e65b35ec3b8620caf4d8a", + "packages/react/src/controls.test.ts": "368ff01b0a724a5b76bf76b93d23cda78bfbd09e1729219ced902dc6cb7820f2", + "packages/react/src/date-picker.css": "2d4cd1d1237c2ebda98df2b6470261a37104cbef45cafc0ab90d2624d9dd96b5", + "packages/react/src/display-contracts.test.ts": "08a48b59deb4d715133365601cdd276266eff2b23a572de75dc629d6214e8337", + "packages/react/src/index.ts": "5cb0f2316e4017d28719989862d73bcd115c35949d772e86c60ca0bd46048c3f", + "packages/react/src/navigation-data.test.ts": "a5034b62e0cbb05e717db42262c61a508035bb3ba7c24b1401d1048ebe5ffc7c", + "packages/react/src/showcase.tsx": "6c23ff0d6e11f8e6e38f98f7ec1186dd6885eca0d5d5eddf6cddce1a987bdea1", + "packages/react/src/styles.css": "98499bcc87ae0b42d3ea8c2610d8771682a0c3e4e8f13472aff846cb8396615c", + "packages/vue/src/blocks.test.ts": "8a26a789b32013663cfa961571e46048d36f853e2702404e22a534c4c7c1a347", + "packages/vue/src/blocks/action-form.vue": "a777911254a7b3bce08dae5fecb3dda4f21b0eb00cff75e49af860e36279c788", + "packages/vue/src/blocks/api-keys.vue": "6f3081bdb2486f0f3d9e4000fe82c162680665c7c81c606e0461c3d9b352cd40", + "packages/vue/src/blocks/app-header.vue": "c483fc9bf4dc76e30fbebdfc7232de721fc1172b81181373669f16458b265923", + "packages/vue/src/blocks/app-sidebar.vue": "87f63846eae8d502d3d82b400f766ad32720a207339a16dcb2a85d60c44b1ac8", + "packages/vue/src/blocks/auth-frame.vue": "3d008e611a193116fb78c21d219d9565ca01ea187280d4cdb3da82f7e503b489", + "packages/vue/src/blocks/billing.vue": "0a1898324f8356f12b801942dafaa1cb54eab7f7f3fd8e13bfb22525f4f79339", + "packages/vue/src/blocks/common.ts": "993c761214f898c594a63bb8c9906b11053dfdc75696b806d5ec078834b8d7d7", + "packages/vue/src/blocks/cta.vue": "3af4f3fc90ec0cb2d97df4658b4edceac97ec65f2a8099bf657928a0bab3c841", + "packages/vue/src/blocks/data-table.vue": "566cf4d74137f4ac31f04c3263a703f57a02e509aa20e65c8584fa22c5db4c06", + "packages/vue/src/blocks/detail-view.vue": "d83f4dde11770a5f55d4321d025e6e062aef8cb5f49131f3e90ce9423ae3aea6", + "packages/vue/src/blocks/empty-state.vue": "298bf61296a4ce4b175a706775de16e26c0d136c64a479a6b505f518cca61a4a", + "packages/vue/src/blocks/faq.vue": "66fc66a0c71b7e322a638c497157cdd3eef5a6b3ec398afc077b73691da454dc", + "packages/vue/src/blocks/features.vue": "6ba3a6af09707105895c170f4ea551f86715a0b3429950bff66be8cfc8746043", + "packages/vue/src/blocks/filters.vue": "4348185e4dfe60c2afb1abe33b9d3b582cd068ad4bc68ff2e8a0d01b3dbbf077", + "packages/vue/src/blocks/footer.vue": "a2e52f0a336861b0554ee67ee9dc7d4733aa99284fd47bfc6802449846540aa2", + "packages/vue/src/blocks/forgot-password.vue": "e6cb6d2d303417fec1fdf498470725f8818c033890a95b86d0c2c7dd338d061e", + "packages/vue/src/blocks/hero.vue": "7ee1cf433d7178052019a93a46f3ef46f64057f97b21e2bc8a4d627eb66acc9d", + "packages/vue/src/blocks/index.ts": "355fbabe7fc484cb68efe589795886444bc3f196a922cffa10d4bf5b889f357f", + "packages/vue/src/blocks/login.vue": "8e852880343de41759a1b589c8c17efc521e33c0855d0aaf58a00701c94a9c3b", + "packages/vue/src/blocks/marketing-heading.vue": "a36d6267c3be5456317788fd60e3038a39ceb2c37e3590569f7b98a6aa0b9269", + "packages/vue/src/blocks/notifications.vue": "9446adc52a6c46e6dc95d78313456037145d060be1c7abb53f63833cd69b81e6", + "packages/vue/src/blocks/otp.vue": "42a7976c16b6e22855a301b5bb399d1807dce9ad18461b38b3bf944dc0e6eb04", + "packages/vue/src/blocks/password-input.vue": "0d94885f30edcc67ffc158262fa743d1bc05478734d2782df5da6bc5cc0b1b86", + "packages/vue/src/blocks/pricing.vue": "86a22549634a07354fcb6458d929cf775f841999732b937169b436a8a4426025", + "packages/vue/src/blocks/profile.vue": "dabb99dd64eaa6003f32a6ae4edaf19186b67279f03fa3d78a013486f56b1ec6", + "packages/vue/src/blocks/reset-password.vue": "68ceddc5636f16b768f7114c43fa10445bd04addd1572ddd7ccf2fca72c216ff", + "packages/vue/src/blocks/search.vue": "683831234450a0db43b13a56396963bf6379b30027d6c7b588e257a8abe7fe74", + "packages/vue/src/blocks/settings.vue": "849cd45c66fdeefa33b02dc00820a53db510e7b544f402e4163b3b7966585d73", + "packages/vue/src/blocks/signup.vue": "bf2a009a9cd26177b2ab02d36c17592c17179eb045f52fc1420a5c8c511c65e1", + "packages/vue/src/blocks/stats.vue": "9f04a46886bfa4d357beb458cc8f0861477f1b4dae986829b337088b77f1c696", + "packages/vue/src/blocks/team.vue": "18afd09fed0850cb6cd9b3476692e431f3374e17cd08e8358f64b051fcba3d38", + "packages/vue/src/blocks/testimonials.vue": "8cf14708c190f54b0f8a37888da3f031d4b9489e2ff0aa8ccfd373db562628e7", + "packages/vue/src/blocks/workspace-heading.vue": "2a700e4ccaf516f59062e91321779574754a80695ced9ce0815d0dcf2a72b507", + "packages/vue/src/calendar.test.ts": "8c3374a01693bff12932521419ce13c81fffdd2ce0cf1a26c87fad4f638b97f7", + "packages/vue/src/components/accordion.vue": "4dc1c28fe13d702e7488bce6483c12cfddb38137e3682c2c5a80b28b0434b6ee", + "packages/vue/src/components/alert-dialog.vue": "f07bda4647ef2ddb49fec782fad2d856201d3fafd8d89cb4dfd1a9df73f7e781", + "packages/vue/src/components/alert.vue": "aa165718efc5df37c99d76e7bb174290ce7a7bffcc8d888bc102ed6fa8845738", + "packages/vue/src/components/avatar.vue": "26e72d5b2a7823c7565255fe3500d9d448c7afd5d245c36ce9f3b7ce9e4b5a75", + "packages/vue/src/components/badge.vue": "c9a4b96af8d1d0b3439e30cab1406e0fb67dd0fecd9f2e3096bf389a5182bd69", + "packages/vue/src/components/breadcrumb.vue": "625871d653e227f15be3f94df7f97e325ac8368b51901bd5938006605819acd7", + "packages/vue/src/components/button.vue": "2a5b4444fa567fbd4390cd1c33020d2d7a77838e36488e3e209bdcee89683339", + "packages/vue/src/components/calendar-utils.ts": "551541ee28355c4d1d9d93c7f36a6b3bfb229158e1227a0a6473ac03f1cf2e56", + "packages/vue/src/components/calendar.vue": "0c4a2423b3171b5e699eb0afd9386dac96eb46943eba25dd262e2f52c90a36f7", + "packages/vue/src/components/card.vue": "0bf1be61c59f9831ce8f37a5feee3069d6c0c6854e2b6f407a24c7405d75bf52", + "packages/vue/src/components/checkbox.vue": "31dc37de2e990089e91109bf8df22f806e962546ff4beffd8200e567478d86ad", + "packages/vue/src/components/collapsible.vue": "e16f6b799000c376846d9bfb0748a8c6230bc58b09ee5a26024b2f555d0f87ca", + "packages/vue/src/components/combobox.vue": "fae055499f76c33f482a17657af5d33003a4030101346fd6c280eaa4fcd8a8eb", + "packages/vue/src/components/command.vue": "34c119fa53c5f137e75c07be1fcf2f03352c8c561f249b2bdfb3f121ac98befc", + "packages/vue/src/components/composition-node.vue": "14bc49636835247143f07f6844e8237c41edbc4cb79ac9a0f9957fb7bf8f6c32", + "packages/vue/src/components/composition-types.ts": "49be26a77ec94d8030643d2b1c1fc1e9eb43540f9e8e6df56f8793d1b172e80e", + "packages/vue/src/components/context-menu-state.vue": "47c37a93f1db4981a5b62fdc3e34067297b9872fe9b4f300dd0c59368b996a72", + "packages/vue/src/components/context-menu.vue": "630522a7aec5d990114b3e03ef2f83e7b34ae47ce5f8a984b9dff94028be1248", + "packages/vue/src/components/data-table.vue": "386d901b16e159b24c66db9ef557a3679e45b263116bec15c154689200381171", + "packages/vue/src/components/date-picker.vue": "e2bff23fa1915e88fd36ac7e57c9029b8cd7675b7630ab749afb4a4b7113939c", + "packages/vue/src/components/dialog.vue": "f32fdde48cfd7b48f43bdb01405548246446fba728bdd5397674e9e497d25ce7", + "packages/vue/src/components/display-types.ts": "36e23efbcab2f68cd50aab2b906f4622257f89ba84a4e34ba50cf7ebc2b567e1", + "packages/vue/src/components/display-utils.ts": "2f167920c09f94f91f46be7729c6c75f773e66a54bcc38a5089c6bfa0aa40ba9", + "packages/vue/src/components/drawer.vue": "3ea0644cf0665a8f7c609019387dc190e42d6423dbc663f3b218ecfb4d68bad6", + "packages/vue/src/components/dropdown.vue": "8768bc3b099359464fb73c85c63e2212d7262701ad60fec8823b157d58bf0c4e", + "packages/vue/src/components/empty-state.vue": "8cba09cb012e30684ae236f9e29f1a2dd72020abe523c80183c86ceef96116d0", + "packages/vue/src/components/field-validation.ts": "885858f4c1be2c27cd884e3ad2bd2a8f05f26562d65be05d87da43d2a80a4dcd", + "packages/vue/src/components/field.vue": "32ac595e796966a5dc80b535617c58f0b38340863cbb4c01d32980283310d359", + "packages/vue/src/components/file-selection.vue": "1bf2edc0cd8e2b13b072fd910aeb90b19584612e7ab3f6f2db696ef059b68ae6", + "packages/vue/src/components/file-upload.ts": "745278655289b6151cbadcffddbde12828a1469b224ae8887fa4d857de396d54", + "packages/vue/src/components/file-upload.vue": "da5d946efaa749ed731f69bb78a0557893f25d090a36bb592ecc04a933306441", + "packages/vue/src/components/hover-card.vue": "3dfa7f9cbb5874355547e59a08e768e02b852379844ee261eed6c1b87743e40f", + "packages/vue/src/components/input-group.vue": "414ec38cb65e57e0f43891eb9e16f5894a9270d62170875d183e29f1ca7ba916", + "packages/vue/src/components/input.vue": "f87b7d453b155c53535e67725ffcd72276d11eee137a032b04a5fc4cdd9054b8", + "packages/vue/src/components/kbd.vue": "64421736dea7855f1d17a019c530041e7148b4275aef09fed4c587e56475da8d", + "packages/vue/src/components/label.vue": "30d8fb0a2243e8e2e4720db76e9faede103e7868d5258663638f61e8e00daa08", + "packages/vue/src/components/navigation-menu.vue": "3f5ae21edbe1e7277c49f0e52cc3f3835d562909388ed2053ec74d8b1ad2278f", + "packages/vue/src/components/number-field.vue": "81d4e1562003de6833c542430fa7732355fe0aa46639655018e50439f38d94bf", + "packages/vue/src/components/pagination.vue": "9df5a8144606ac1b1fdee889bb250ea76c6b503eb24cf54f4da05dd400b25fc7", + "packages/vue/src/components/popover.vue": "ca9511d68b13f98a831f31328f23d071aebc04a8899839efe1a1d4a30b7b658e", + "packages/vue/src/components/progress.vue": "e87a3088b73b523ccdd2bf032f816b2dc80d9e36bc36eeb7010a6dc5adac0032", + "packages/vue/src/components/radio-group.vue": "b96c3f19cbb16d394534e305c8b9fe9cc07bb70597130bb257315c497493df5b", + "packages/vue/src/components/select.vue": "bef58f6d4ae1753830c0498ae6bed5bb912f3b971ad919fd2c01b34f35c83560", + "packages/vue/src/components/separator.vue": "95fee08237616225858e026250964dfa2dd096249af478229a801c29dcf075a4", + "packages/vue/src/components/sheet.vue": "2e99ce8c47628d2808b181cfaf511410b89933fac157cce204205d1043a85009", + "packages/vue/src/components/sidebar.vue": "933f19c328ad6d2d4356ecd1864326d6b58c5a767336a7cf2e6ec503dd998085", + "packages/vue/src/components/skeleton.vue": "1d1f79b899856ec23248cb48b48f783857168e1622ab409db1279d964acef831", + "packages/vue/src/components/slider.vue": "1230659b9e70b2912739c34f18bfc65ec92d407248f1057c34af03387a1ea92e", + "packages/vue/src/components/spinner.vue": "06146d49efd6354f2384d02ad8e272d380d8360f50e99f1a6b319f5add0e641f", + "packages/vue/src/components/switch.vue": "8c04b5afc7689eb2031c14400c999210a818991af1f50658c35abb203a9d0471", + "packages/vue/src/components/table.vue": "a4115d981647eb12ebfaeee736e5fa5c28a841f0591c40d6f3174933d012a66d", + "packages/vue/src/components/tabs.vue": "21b45b814ec0163f720df05a7dc3553ce7799391c80b7b58454bb1cb060a9cfc", + "packages/vue/src/components/textarea.vue": "0699202b30a4399bfeb0d3392f52edef8821703759d118e09287aa401738de13", + "packages/vue/src/components/theme-scope.vue": "01e77e3a4e3e119bd4975b521fbbd8ed085831c08d59bf61bdfc9041c0920bd6", + "packages/vue/src/components/toast-manager.ts": "5ab96d441a1173fcc88fec9b01baca2df6e151e42088133c280e6563a72a0137", + "packages/vue/src/components/toast-provider.vue": "94c42100e3d4abb2f5c04105b79b5a04f340a05677ab4ace3b7dec5569406de4", + "packages/vue/src/components/toast.vue": "44f304601976a6b21b124a128d73536a5211b9c36bfc46b60d3ecc4df251a268", + "packages/vue/src/components/toggle-group.vue": "063a35df6a8eb552bdd353fcea7eb5e70336adcb5ec3572e8382b98d01df2527", + "packages/vue/src/components/toggle.vue": "8711f7ad43c8c732bc6afb4c3a2fee3700473a8ee778cdc02d277e9a4164f4e0", + "packages/vue/src/components/tooltip.vue": "3d2c07e4dac1c699bbc162615b1778ad4559ff3785e2be2f6adace8e0509585b", + "packages/vue/src/components/utils.ts": "0a50f2d84e62d2db9aa18c483e05949c898131ebdda1dc2f93a3811a46b51347", + "packages/vue/src/composition.test.ts": "a516867d604f79f106c86feea0c965dd03090d8df1208306def933082549d613", + "packages/vue/src/composition.vue": "6bf9776f8bd664a6cb6c425a3a7800aff2d96e9bbae9027feac82a510faaf5f7", + "packages/vue/src/controls.test.ts": "640d29388f08be8f71d6bfc8bfa0bf4144fd092edcee148300f45dabcc76f977", + "packages/vue/src/display.css": "4cb71af46e0494a60013494d24c9469eb0b17c34e1f51ace7ddd2cb82d482e3b", + "packages/vue/src/display.test.ts": "50d4cd4609cd542b966b40fadb569292c180e1a080ab97e0084d928f3ab812c7", + "packages/vue/src/index.ts": "08854e81a0c8bf9615940ae6ce4e77f2f0045d5a9ffee98dca77066c990a6dd5", + "packages/vue/src/styles.css": "fe552be1645a496b050d58794bd34b3af3c3e74ba40da3187b4a636a279b747f", + "packages/blocks/src/application.tsx": "2d46b60e1a96f475d4423c39e489b9664f351e26669f55127535c0b32ba802f6", + "packages/blocks/src/auth.tsx": "7816452550c094d14a73dee90d161437c9456be59a51e665985d9386a10fe7bd", + "packages/blocks/src/common.tsx": "bc691051a683a9b2badec95da130847c76a0aaf90717097cdb89db3740a1d335", + "packages/blocks/src/data.tsx": "6b903d82a5eb88a15d67c1e02eb6667e129b8497a7f2da54b1e99240acdce787", + "packages/blocks/src/index.ts": "8a8829b16202f940b2974d0e5e578b6f2cbb52b64e0012e4668d1630128a7e53", + "packages/blocks/src/marketing.tsx": "e56f6ed17d42868a093d128a366f2524598391b5d133f4ab0933d6a1e050305b", + "packages/blocks/src/showcase.tsx": "f10561d8e56766677eae5012ed29449449956f455aa7950e60aa7d87ee339353", + "packages/blocks/src/styles.css": "8a0aeb060a999fee142533481dffd19251f5a38b3fd0597939a91ddc47c88690", + "packages/engine/src/engine.test.ts": "15e08f55789a00c7f054239e870b81fa5b2ad6baa7064976ecf285ed38a9d103", + "packages/engine/src/import.test.ts": "a357f87d48fca6515e547824ee2d61907b0ec7a87eaf6f000f5e3479d60dfce2", + "packages/engine/src/import.ts": "51972e98ce9133cc013886b47fdd231dd2148a2acfc4b9893ddb4ec0a58ccfe0", + "packages/engine/src/index.ts": "240c02e4bfbdfd2998cb029421c1d8013f6727814fdb3a776752bc8c556cc81b", + "packages/specs/src/blocks.json": "c4f242f15b92f131e519dd73265251ca1dc30d99f9c7cb4d542b909464d88093", + "packages/specs/src/catalogue.json": "13a466ccf878ea995506ff1edbef4d55cb87afddb98d6a3341adc660147b77fa", + "packages/specs/src/composition.test.ts": "00bf9769f2577130eac61b8aa7f4b128a6707a7362400f5918e3fb675473d1bc", + "packages/specs/src/composition.ts": "6975d3fb92508addac513398cb0e11685dd9cc0e7fb530780b61db780c0d643b", + "packages/specs/src/index.ts": "9fe43a4c3df0047632884ff98b68eb24f08abbb8e54104f25b3faeebefb70734", + "packages/shared/src/index.ts": "4af7afbec0071d2b5aec472284b567488f7b3c94a7f73123aa2242c3d6573d31", + "packages/shared/src/registry-client.ts": "7df530f7e387cae02e65507f988f2a160c022718b1de14216e3f9cd3287c5567", + "packages/cli/src/files.test.ts": "ef55cd1907caef21617c3038f7595172ad93401d890008949e2ab8eb02e2fb27", + "packages/cli/src/files.ts": "985404aecfd7403888dec08e6f6ec898a69e488cd9f6ad2f4cbd6da8ea551806", + "packages/cli/src/index.ts": "76fcf339068da0e60347dce5f99292b88071c2764d12554afe067ad80a69f156", + "packages/mcp/src/index.ts": "4a0e87c85e7ac474e71e0120c2cdbac0c25e245b17161c66cff5ff1b40fbab7f", + "packages/vue/preview/block-showcase.vue": "71bd423249576933dc04c3b88d7d7ab683c3b7b45dd5923ccf4a1a4e4c736ba4", + "packages/vue/preview/entry.ts": "1b74ad013b28aa28d56a523edc8858af0085e76ad19c9ffa59a06b1543fbe0c6", + "packages/vue/preview/examples.json": "9e5c96ceb122644ea94d34f818cdbf918d61e274c93cf25e6db3a18d70bccf79", + "packages/vue/preview/feature-visual.vue": "ff863ae7b7351d22ebbe992f05a68a2d16a68cca18d351e860ba9fe104910d18", + "packages/vue/preview/hero-visual.vue": "56c04712df12c34ee7e4766754b95cc5fce3cae8dd1230f94f602beadadb5ca4", + "packages/vue/preview/preview.vue": "9229f1296cf5752f1a4785b72446df2ba078f7df44d9a073e0d645826013950d", + "packages/vue/preview/showcase.test.ts": "65f5e46ebe8a6ca5508708c56ff16007f59cb31079a77f6f9e63df000b4e19f9", + "packages/vue/preview/showcase.vue": "ab827ab0bd679b20d471d7064f743a00ebc8b0653e6defbbc82a442472b1f701", + "docs/content/accessibility.mdx": "eb103c3bf4d03d3228d92defd5c71ea3d9ffb9fe91650fe27c14eca1e9efbbc5", + "docs/content/agents.mdx": "787d99787b6c6661dfe0c610c6da35957ee6a8dd4fdd5cca2ea80ce15f7fc5ee", + "docs/content/ai.mdx": "4ff4571a20ef220f19e125079853bb662337ae1c2dc9bd3589abd442ad654432", + "docs/content/blocks/api-keys.mdx": "6812e1bc1a54239caac1f40e84b591d2b1cf20c857b3b830a1da58a03d9bcc4c", + "docs/content/blocks/app-header.mdx": "deab756c1c517c3c18c4effa4cda553ca1b070ed3fcfc79b7289b4849d690dc7", + "docs/content/blocks/app-sidebar.mdx": "59c5cab727bfde653f4244a2050f4ddd614fe1032e9d3864b97b13bb840f5ab9", + "docs/content/blocks/billing.mdx": "424d8440c2fdcb3a66a0614715e82f0c61e9ff71c99dc9be7a1ba39b87d30a65", + "docs/content/blocks/cta.mdx": "0d5e657e7935f63ea26c798153e7797e2db3e5a51939e95912d41bb8882a07a1", + "docs/content/blocks/data-table.mdx": "9a7406cf3c4c813b5c145888433d6be724b54e1407cd1f82876ed5c956243861", + "docs/content/blocks/detail-view.mdx": "05d315532ac11c7e8d3361b5439230a3c073598620cdcacde55f7be484784399", + "docs/content/blocks/empty-state.mdx": "9ecdbeb1948fafb20955c73bf392beddc8af19a9659e2ac1218bfba1cd694591", + "docs/content/blocks/faq.mdx": "604ef4deaf9ec613f9cfb5f47cbb5b7877ff328b89e65f67218904846a5b1aa5", + "docs/content/blocks/features.mdx": "8691f536d0675839d7bad1609a2af6e6a74fee65c4c22e0289383a3e3a5c5ca1", + "docs/content/blocks/filters.mdx": "20b4eb2a601dc9d90d8841f6b8e4da4eba8ec5cf0759333d12b4c36981fc7cbb", + "docs/content/blocks/footer.mdx": "58e3b45f96f58604216b7c0ab7f9d38bc7d6e2fb657953b1060d95ad29c2325e", + "docs/content/blocks/forgot-password.mdx": "a65c983a136048b33e9242ac2ca4b0525fbfb83cfd48ad510abcb6a2a047a0b1", + "docs/content/blocks/hero.mdx": "2dc0309102e252420d27d806b39ff46e90fd1096fc2bf49c648532d0e7097d5a", + "docs/content/blocks/index.mdx": "1ce168167753874f7a66796fe6259ea0083109deffb6f9f4905d2d7402cac9f9", + "docs/content/blocks/login.mdx": "857f9acebd2a9ea5e452eaf4be4f347143f396d062eabd1ab7bf3dddb6f10fd7", + "docs/content/blocks/meta.json": "36515ef9e1e0b39ea690ae831f98149d36d2a4b14eef36ac473486fc459a139e", + "docs/content/blocks/notifications.mdx": "8cc5e6e483304070e4af3fb81c64eae0e5a905400a7119cff5386e8242e6b831", + "docs/content/blocks/otp.mdx": "8820600f04e9b640f6f8ceb9c5850a79b357ef401ca9a2c29ed7c9e6fbe91f53", + "docs/content/blocks/pricing.mdx": "0e042bcae68fc465a9bd934e89dbc6e57ea08b72adee31c98051471ccc645f20", + "docs/content/blocks/profile.mdx": "b0035c51610f11241295ca047a69cc0951f6bae042d59f7789054f2bbf0d6837", + "docs/content/blocks/reset-password.mdx": "3d7137d7d4cf5f0cfed3b91354f2301ea2a024d8f193dfa084053bacc9ede699", + "docs/content/blocks/search.mdx": "101900e17c13e016579eb85d5a3dbf8925ed63e4b68d9d6b55131679861e7b1b", + "docs/content/blocks/settings.mdx": "cc69ad39c61a0b3f3328e6c08fbe50901cf462e384e23ef70b453e404b3de8a1", + "docs/content/blocks/signup.mdx": "bc6d4d9999aeddeb22bbae8d7fddd6308963912c9bd49d8d0e0338710c840b43", + "docs/content/blocks/stats.mdx": "9e6ce7a600331b461171c638b1f73b2c090e2d66e250a93696356e2fda9334f3", + "docs/content/blocks/team.mdx": "4187509168725b7e8f02630f658a9bb89c2cc583957a8b3b30891c5e58a821d7", + "docs/content/blocks/testimonials.mdx": "6ec185bd874f684b58cd99d091bbfba6e519891c822a1e516958e699e1d850ea", + "docs/content/changelog.mdx": "b64230a1a4d483c9888bdaa00bd1e05e5a2bc5db4749eaff071f2dab080e15b6", + "docs/content/components/accordion.mdx": "ef41f29c0b6bcaf29c8a39551f1c90500989c3876c2faacb7be14fefec13553e", + "docs/content/components/alert-dialog.mdx": "8745c7859cfd2c35737dbd4b2f9abc833497ed379f6cc316b55cc0ab17ee27c9", + "docs/content/components/alert.mdx": "e76e08ed31431956bba20dde042b8c5523a029e128e9a7d198bf2530488683d9", + "docs/content/components/avatar.mdx": "e8a00688e32271f86f0735273475426c5b8f7775d9c922e871a202e1841d8103", + "docs/content/components/badge.mdx": "8f010ee67d2db654fe0da11de5cf81f5877ab99d12c1e20905aed5ea1a362e7a", + "docs/content/components/breadcrumb.mdx": "9f8b10a83937b9ba0037b0d1191a429bafaa4b6469186758b8e06bafcda12abf", + "docs/content/components/button.mdx": "a7cfa4a9704fe1c46d2d1179df16e75f8ca4aa09d8b0d70bbe2e8a08aac137fd", + "docs/content/components/calendar.mdx": "496ba7b8d60d0c75c22609e74ac96fcdf1b2ab7ffc2f4eb4c2c8ad652e1edb75", + "docs/content/components/card.mdx": "4d5c9c38eaf05a77b406d560750af36e658c2b0794ae62908de54fc8872dbe18", + "docs/content/components/checkbox.mdx": "5133755cbcf4eff5e29ba55d061cec849a7b9c6ca401189416a528cad67b82eb", + "docs/content/components/collapsible.mdx": "3e88756561fab1a3d7f1a14c66840d0493a3593ef4054eee62f5047e24655862", + "docs/content/components/combobox.mdx": "6c995fc6d1bafe54ae1cb303a990527af6bab060b18d764466a42a7b91a1ef22", + "docs/content/components/command.mdx": "417a3454099881f9532daddf12bcd814f0d16e88406f180956a0580dc1fa10c5", + "docs/content/components/context-menu.mdx": "21f98b1f5a85d72f3f722e3a699b28a50aacce1fb4674c74662b6d5339767497", + "docs/content/components/data-table.mdx": "2c6647e94461acadddf0eafa9723100d8eb83f6fcde7435aabc40a2bebafe7be", + "docs/content/components/date-picker.mdx": "6485c978231ea5effa887a09f996165ab0573083b9ab07c87ce2e70e003fb714", + "docs/content/components/dialog.mdx": "4c3cf82f50d33c40b6bdf9720aecbdebd958a1a911b295c81c1321b21b85376b", + "docs/content/components/drawer.mdx": "907d6c6ca05b4c43e8d649fe68cd548f5b304aeb2b7540ac9e527fce532f3dec", + "docs/content/components/dropdown.mdx": "3a0cc90fb235b04f5ac7af16e779f3d8aa765e195ce74f31d7b873ba8e007737", + "docs/content/components/empty-state.mdx": "9e52ddbc15356f8a09d10e80be0855598fd6203718231720d2c1c75fc638e751", + "docs/content/components/field.mdx": "ba383708a7fc29e8c34aee2ab3330897164abffed4bee43d1cfea1559f68437b", + "docs/content/components/file-upload.mdx": "84f3472ea74626fdaa4f114baf7bf75838182348415971f17cff20f2f1b94f66", + "docs/content/components/hover-card.mdx": "ccc006e3d6e5b9bc4f9f2beee491b19ace18221fbbc8de5f611e16fba9213ee1", + "docs/content/components/index.mdx": "fa4ca78757ba3b6b24773dde939329e23a3fd816eb58119c3fd442154594a992", + "docs/content/components/input-group.mdx": "50d5dce39925c8c99997b4e708eb483604a35b08da432c41fbb6cf8a76aa4bfe", + "docs/content/components/input.mdx": "cc905ff6e26c29ee5ce483cdc901df1c925aed1b44c07c1e84b01449857251b9", + "docs/content/components/kbd.mdx": "043e43a859da8e81f2c372c495a29573bd371cfbdafba2c75eaecfd92794795f", + "docs/content/components/label.mdx": "3ba83dac60f313a3e81c34fca892606cd2e75236992a1a3386ed743484714abd", + "docs/content/components/meta.json": "9aa6c9dad63d37d3b8c6fb902fd023389bfaa1b53dc4fdccca029da32620598f", + "docs/content/components/navigation-menu.mdx": "991ea4de43fc1121326bbf700883e0bdb18864d2d886be306d4fb55cca862e94", + "docs/content/components/number-field.mdx": "31909b63fe48ce4dca4375cb2ae7db619bb941198e5a2f0ad631aa514761f986", + "docs/content/components/pagination.mdx": "75227fefa49bd86235b39d4b106a199d7b50b069904265c5e27c44fef6067858", + "docs/content/components/popover.mdx": "4358f4f3e64cc198cc4c27fcdffcdea2368a5bdba93bce40591fc3115d1286b9", + "docs/content/components/progress.mdx": "f1d7fde401fd926d6fa2a31930f4a54393fd61865af88440829ef78229cc3f48", + "docs/content/components/radio-group.mdx": "5dda026b51aeacd99c70d0300d95e2ef8c7cc9e73318d602d64277899e325178", + "docs/content/components/select.mdx": "379238b567f7073a7d915f49327e37e84302b7c8e347d6670b2206c0d98369e5", + "docs/content/components/separator.mdx": "2416307f5a7e131fbdd8f41502c44a13c08639463b20cb085aef423eacec1fa6", + "docs/content/components/sheet.mdx": "82944c0c1f36c784b4e6345173f54b1593519f33cc15125ef40fcd0b8be0a49d", + "docs/content/components/sidebar.mdx": "e068440fe87964bd4c72e199409d2dd6b5c1bdd84e4b5ebaccf8ed07d7941373", + "docs/content/components/skeleton.mdx": "f361b9cb1f336c268b809602d7dff9158157bc041704732da8f953302d95ee3b", + "docs/content/components/slider.mdx": "c6579ca5ac22400cc1580dd6b647036fc4ea79f0add8a68fbac3b31818a8de15", + "docs/content/components/spinner.mdx": "0a33cefb5b053146c5d746c38e48bcdcafdd6f4fd7fb6b8024aec3a2c12d66a7", + "docs/content/components/switch.mdx": "487fa734774673bb3b2b1cf5d72ee97a9147d7c51ff7b983055d4a9a024c220c", + "docs/content/components/table.mdx": "ec7c351514fad82e4d1a3fbc630aa999e3e4498b0e75ecd5b4ae240f92650efd", + "docs/content/components/tabs.mdx": "eeff03d20cf7ea295801b888a089214f5581cfa3c27897dbdc5b022b6075411e", + "docs/content/components/textarea.mdx": "51177062d02d280b67c3588c8bcd4b5263c6959cf8a470b39d17d1d2ed89c5d1", + "docs/content/components/toast.mdx": "48e1f8a8c5f7f9bb12c9bd77f55d155e7ddff5299148d39eb8669ea79d08a802", + "docs/content/components/toggle-group.mdx": "9ac3c0bc282f3553d9a290d9f0ef7e9dbea9aa94aa98127790952cd431f1b4b3", + "docs/content/components/toggle.mdx": "84fa1c518a88ff9e1276683d0073732686de3271885166033213da6fde1710f1", + "docs/content/components/tooltip.mdx": "60693d1382c7f60021540f7ae989c5c84908777d61a357c3fe12dce96c412d9d", + "docs/content/design-system.mdx": "08f98c614b81a9af0ebee612c7b011595804c13e7dd384470f9f144d9b24d7a6", + "docs/content/export.mdx": "765c2cb32bdca829913e6ef2c73decacce65744dcea661fc2bfc80e81612a1a0", + "docs/content/getting-started.mdx": "6506ddcecdfeb0dbad1c6c1454e6ff12950f07f09389ba1263bbf5c487db5ab0", + "docs/content/index.mdx": "ae34072fe5ead79b535bf786b2b389cb19bb9527402859d5182eeda4167d583d", + "docs/content/meta.json": "251ece32eefc965e5a7b5aa64d4ac4e8903faa34eba63a9fef6facb4260daa57", + "docs/content/pilot.mdx": "f3dc4791ae9a65ec640675871fe145422e6cc43cbd55c001d4e72b3e72341b9b", + "docs/content/vue/blocks/api-keys.mdx": "c415e121ed13393e4fe171746d79431e13644895b8a484f94b82623b1f973d06", + "docs/content/vue/blocks/app-header.mdx": "c207d48a18235c15cd892c31d7db9fcbde8839912b5229ae98c3d8d22f2b3363", + "docs/content/vue/blocks/app-sidebar.mdx": "02ad4f42bb4ee001fec4de4c40ab959afc3aff958d000b92963cf5310f345a34", + "docs/content/vue/blocks/billing.mdx": "a606b28a1b64520221a66b05d0367a88f209dc2ff72c7e206c859eee717d2d80", + "docs/content/vue/blocks/cta.mdx": "ea48ae5fd3f0497bbff2007afe4a72672f779f9fc7fdebb11298265bc30efdeb", + "docs/content/vue/blocks/data-table.mdx": "4d5d9d8a44237d07bb99485926d9b1d909f6d16b3181730cc525ab340856885e", + "docs/content/vue/blocks/detail-view.mdx": "16e8a64752ce907528eb468c782cdbfbfd86045a5df3d9043161b32f8226afb8", + "docs/content/vue/blocks/empty-state.mdx": "6a0eec7546704e6cf70b052e2fd90be1cb25be7f0d0e9d0e2429e2f01d283543", + "docs/content/vue/blocks/faq.mdx": "b2fcf51579a9d0ad0731e4eea04416e0ed7021255a7927c1a42ace481335acb2", + "docs/content/vue/blocks/features.mdx": "c2ca7a7ab9054a5102053bcf782973fd3a4b60640fd128a968f73367ce5f852c", + "docs/content/vue/blocks/filters.mdx": "9df987deb37ffddbd3a2e33954957cc0697f09d359511fbe930e34c577a3b55d", + "docs/content/vue/blocks/footer.mdx": "c8ab6fbc7376fb7ad483afd1499a60cd289af9d095907f82a5bba5009b0da7bf", + "docs/content/vue/blocks/forgot-password.mdx": "583ff2049e36a03199e74b69e8c336c18b95043873e9f255cbd6e8041dfb2e3c", + "docs/content/vue/blocks/hero.mdx": "7150f89adf0e47b96a345bceb5242eefdb0118fec80fdcbaae0e2c16fd36b12c", + "docs/content/vue/blocks/index.mdx": "06daafd5f01b252961e966a00e4f8fe71d9538de81374c05ec18fd7bb081280c", + "docs/content/vue/blocks/login.mdx": "1705241a5c39c57fbcf8988ebbe8a379f45a1973c64d64eb2d9fb05c93345c49", + "docs/content/vue/blocks/meta.json": "6ea6955764c7abd0da5c4eb46c00e08322ca2d78923807fafcced8dec62c6d16", + "docs/content/vue/blocks/notifications.mdx": "45b281f43a6852da8ec28d4d5f14723c56a9a1acadd489bebf85dd57a4e9929a", + "docs/content/vue/blocks/otp.mdx": "bf02c1f62d4a19e5ca83c3a1198f8fa46063fa94ec45bcc07ea3a3da1dd7f7d8", + "docs/content/vue/blocks/pricing.mdx": "a323a6f35a58c0fa9bc2713d8fac34b61ceefcbeb94fa4910882b8746fd0455d", + "docs/content/vue/blocks/profile.mdx": "b4d017dc4e398146ab9431d9097cf098460f781529f47170e4d662e16e745dfe", + "docs/content/vue/blocks/reset-password.mdx": "45d01307a76755f2f9178dd0c9e004ccd45810f7f6c950260b8219ae3a85be1b", + "docs/content/vue/blocks/search.mdx": "c8228ed3675a9edace6af4cdebd72ee59b3ca7a92f5c330abee5da5a37640045", + "docs/content/vue/blocks/settings.mdx": "6ca54c4947b868224a30381346ef5f05d4b4d755efe32a0278c4df8942ea8430", + "docs/content/vue/blocks/signup.mdx": "8a903db8b7d9e4c341f589fe73b37ed11affc56fe6698148f97ea4510f9e5203", + "docs/content/vue/blocks/stats.mdx": "4c654e134ae043f576f7a5ffc7e3ad590a219163885ed922ab50d6f674018340", + "docs/content/vue/blocks/team.mdx": "d767bab9623b5838be3357e408e1f976ad4c2e88fc03679abb27a32bbd08311f", + "docs/content/vue/blocks/testimonials.mdx": "5230c4a018d07254f2d0f65cf257bf5fefc8534f1a748cc532785180d2030698", + "docs/content/vue/components/accordion.mdx": "f057a20c41b4c79a5dd778fd2db56769c5142569a14bfc5c55339521d7efc976", + "docs/content/vue/components/alert-dialog.mdx": "17fb15557c349e79ae87798cc1f0af5f127a9aeee9c04cebebcdc9db5c30761e", + "docs/content/vue/components/alert.mdx": "9613c6afbf7c40ccdc995fb4cd63d1aae2dae30ccc9da600e9f6f8969ba323fb", + "docs/content/vue/components/avatar.mdx": "139f7f6bd3e065dad53dac812d56c08dd83202e412ccb7e19ee92032bf2c57b6", + "docs/content/vue/components/badge.mdx": "a8181c1afb608e2ea16d385f045a4fe306ddafe23957ff686d752bb24bb60490", + "docs/content/vue/components/breadcrumb.mdx": "e4885b6219d64c792d46d8786dca92d45bc4ce3e6f48b7cf1446846e4e0b41bc", + "docs/content/vue/components/button.mdx": "0bc68b492edd8debe0f7e319bd33cadf17e4caf7bc35a767dfd9df2702090100", + "docs/content/vue/components/calendar.mdx": "2feba75f0edbf5f26711db49b5799aa10e161d70888104d5b249c65d180d2347", + "docs/content/vue/components/card.mdx": "c5e2c283d1d1b8340bac749ca5193628d44dcaa73188d96d27bd3faeb5dbd1c2", + "docs/content/vue/components/checkbox.mdx": "fe1e0e22ec6626c10440d079772210899b40035508a2844c0e4756d2864227de", + "docs/content/vue/components/collapsible.mdx": "4616ac0f83b4a0fed71d1eee9d6f1a584fb9081c4c9014ec6500bc661a8e7161", + "docs/content/vue/components/combobox.mdx": "0a343491a6c8ba7ea82868e1af25606bb7c931224033b211ef6083bfbf73eeec", + "docs/content/vue/components/command.mdx": "0a130755764dd2c2f44e30c879be7f0aff1e5301e322bfa927b84e5c17bba369", + "docs/content/vue/components/context-menu.mdx": "0ded93104a4a0d2c23f02966b41645a49ee6a2e1dd09462cc1e35a8b9cad0cf3", + "docs/content/vue/components/data-table.mdx": "26f9f00121b81b725618fdb8800d44bfa2b7b87114345a683fe7692689038d73", + "docs/content/vue/components/date-picker.mdx": "b80ff864689f0b681bbbda5d9b02563f3817a736bbfab8d4229f46718471cb1d", + "docs/content/vue/components/dialog.mdx": "e8f547f5bd5cab522c5ed80ff746505eb5b17394d6f3c3ad76dc0a9fc1cf3a6a", + "docs/content/vue/components/drawer.mdx": "0bb412da2a14a43edafaf76cbc62c72e7a616ca59f137e2502f68b913186b720", + "docs/content/vue/components/dropdown.mdx": "960f37288141c280bbc67a3ae151773abcdbeee83c5a6f91e608e6da0ac70b64", + "docs/content/vue/components/empty-state.mdx": "ec1f001ddae670f8abff5b88f7d922f46e92d4b650efd3ba90fec47026a9ae49", + "docs/content/vue/components/field.mdx": "dc514abab4d62e75badf32f5525c8750f0448c06e263cf673f5aef86433bf43c", + "docs/content/vue/components/file-upload.mdx": "7372d8888c2e69fcf2a2fe10c0a68bf5466871428729e502de74d2d72f3b0cc6", + "docs/content/vue/components/hover-card.mdx": "106566421266ce77ebfaaa1e34d59b7c20784904b4302a9e6d8edc1b3fd0c56f", + "docs/content/vue/components/index.mdx": "e05cf7273e66296c331bca7cefea723e42b8b571db096b4c1d732a9bc7d54c7b", + "docs/content/vue/components/input-group.mdx": "c127dc1acabe2c0f5c9724385a9c7ad94a7c617a1ad9ad8894b91fbfd6fe930a", + "docs/content/vue/components/input.mdx": "1d05878b2a6da03f15ada428436d262dbe141d3a80e8d8e5245d829d7f417add", + "docs/content/vue/components/kbd.mdx": "cb8c5b4c5649f1045b6f236429996e12dab46b178103b1228ebf9e386a0190fe", + "docs/content/vue/components/label.mdx": "ddea8c3e23dc8578e2fd77d41399228029b0cb7a16c6f176e5595071808db480", + "docs/content/vue/components/meta.json": "f02333526ac6803063ec529081886eb370e0d637406dcc38ae73d2744a7b4175", + "docs/content/vue/components/navigation-menu.mdx": "f0ae88799c87750d86cf11469e6ac475939bae476903c9478a0bc1943c12ef70", + "docs/content/vue/components/number-field.mdx": "cc905796ccadebc54d11d805fbc71db9d04933f1010690d3a6f92c01b0b8ea0a", + "docs/content/vue/components/pagination.mdx": "d33169cc546a9a05b14300e13c7a1568bcfe65e391d81997603a237e2e02c0da", + "docs/content/vue/components/popover.mdx": "73db8e192ccbe178a487374f9bcd1e69f7f9d5595f93b0d6c6d53bfbd389409d", + "docs/content/vue/components/progress.mdx": "55d5273c4b4deb093d191502cc6529b704bab4bb9e1c72cccb6273f94efa6e6f", + "docs/content/vue/components/radio-group.mdx": "875ee22425864ca1af0ef353a556f2e1d0fb3d1c952cc2f4b65aad898f700ec5", + "docs/content/vue/components/select.mdx": "96aec8d482096a7c300dcbb47ade3770c466dd2a9ea1c299c5c91500ee9abb12", + "docs/content/vue/components/separator.mdx": "33f7869bbd49ea589085df4c03edf44022426227b1939c1e23e6124819a6f90c", + "docs/content/vue/components/sheet.mdx": "b47c830cfc686e96418df8b3a1d9dbf90923e13a1e899d6fde21062e8ef89189", + "docs/content/vue/components/sidebar.mdx": "fce03ecc56d8ca87ef163b160d36ae72c758eb51e717bbc539bc89601c4715ca", + "docs/content/vue/components/skeleton.mdx": "c07b9514350d8444d8b58b6a21bc645ea27bad98ae60caa770d2e580a1177459", + "docs/content/vue/components/slider.mdx": "ca675acff1dd2b053af1c20110044b8d46551494c762bbe4527ba1f65e4d5abb", + "docs/content/vue/components/spinner.mdx": "01778fcad0ff5f3c0070a5541218f7487999bbb1aeaa1f21a2bb20732e2dd146", + "docs/content/vue/components/switch.mdx": "9779ba3e9ac7811a3c62298d99eb148367084b82d024d19889a6dcfd37db4ce3", + "docs/content/vue/components/table.mdx": "9b228eb22e4a38294127a49c2b564c5a0735d65dd90a654d3e4a562971656990", + "docs/content/vue/components/tabs.mdx": "b6522c2e44889c2278f39cdd436fbd3a6a69d2c393f3f9417488850dae2fc1eb", + "docs/content/vue/components/textarea.mdx": "0ed2c7de9f2e46a9c95acb208a0f13fb37faa00848c7649e0cc0d3812e79a779", + "docs/content/vue/components/toast.mdx": "3424c56d41f1ca36e6290d0c63090b0199e43d23e6c8ee6d7be8297194a5e854", + "docs/content/vue/components/toggle-group.mdx": "897f4f4cae10ebade49868c6a22e8123140600b6864e2e2d35affb1901210f72", + "docs/content/vue/components/toggle.mdx": "35df5e29a740a08d4fbc73a77e378c8708bfe3f0b5825c16a1decc22895ed49c", + "docs/content/vue/components/tooltip.mdx": "894c79463d30026a04d50ac0c14adacd3161c5f7a2b8aaa5d17fc63d79691a8e", + "docs/content/vue/index.mdx": "3c4a1f898aff460de1d328448d8b648dec3d5b718997a6bef3e1ac58e6d05ff3", + "docs/content/vue/meta.json": "71d940394ad01e98fc20342dfb2b439b5b43346a6f01a83186280e60dac8060c" + } +} diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000..124b828 --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,26 @@ +name: Check public core + +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +permissions: + contents: read + +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - uses: pnpm/action-setup@v6 + - uses: actions/setup-node@v7 + with: + node-version: "24" + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm check + +# Publication is intentionally not automated. The historical datepicker release +# workflows are archived under legacy/, outside GitHub's active workflow directory. diff --git a/.gitignore b/.gitignore index b210070..aa8498d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,32 +1,15 @@ -# Logs -logs +node_modules/ +dist/ +.build/ +coverage/ *.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules +*.tgz +.env +.env.* +!.env.example .DS_Store -dist -dist-ssr -coverage -*.local - -/cypress/videos/ -/cypress/screenshots/ - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -# vitepress -docs/.vitepress/cache -docs/.vitepress/dist \ No newline at end of file +.netlify/ +.pnpm-store/ +**/.vitepress/cache/ +**/.vitepress/dist/ +*.tsbuildinfo diff --git a/.nvmrc b/.nvmrc index 2bd5a0a..a45fd52 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22 +24 diff --git a/ANNOUNCEMENT.md b/ANNOUNCEMENT.md new file mode 100644 index 0000000..3e42d51 --- /dev/null +++ b/ANNOUNCEMENT.md @@ -0,0 +1,29 @@ +# Vue Tailwind Datepicker is becoming CodeRocket UI + +Vue Tailwind Datepicker started with a focused problem: make dates easier to work with in a Vue application. Thank you to everyone who used it, reported an issue or contributed. + +The next step is **CodeRocket UI**: React and Vue component libraries you can customize as one design system, keep as editable source and share with coding agents. [Try the visual builder](https://ui.coderocket.app) or explore the [React](https://ui.coderocket.app/docs/components) and [Vue](https://ui.coderocket.app/docs/vue/components) documentation. + +This repository keeps its stars, issues and history. Its active source now includes **48 components and 26 blocks for each framework**, the design-system engine, shared specifications, CLI, read-only MCP server and documentation. That foundation is open source under MIT. The hosted Studio, accounts and AI service are maintained privately. + +## What changes for datepicker users? + +The historical Vue datepicker is **frozen and no longer maintained**. Its npm package, `@coderocketapp/vue-tailwind-datepicker`, stays available. Its MIT source and original attribution are preserved in [`legacy/vue-tailwind-datepicker`](legacy/vue-tailwind-datepicker), and [its documentation](https://vue-tailwind-datepicker.com) stays online. + +Existing applications do not need to change their imports because the repository changed its name. The new [Vue DatePicker](https://ui.coderocket.app/docs/vue/components/date-picker) is part of a broader native Vue library and has its own API. Migration is deliberate, not an automatic package upgrade. + +No further fixes, features or package releases are planned for the historical component. Its MIT source remains available to adapt or fork. + +## Why this direction? + +A useful component library needs consistent tokens, behavior and source across an application. CodeRocket UI puts those rules in an explicit model that developers and coding agents can inspect. The visual builder applies them across components; CLI and MCP retrieve the same saved library in its chosen framework. + +The public core works locally without a Studio account or AI provider. It is distributed here as source; workspace names are not a claim that new packages have been published to npm. React uses Base UI and Vue uses Reka UI, with native framework APIs. Svelte and SolidJS remain planned. + +## Try it on a real project + +The current catalogue is experimental. The hosted editor and source export are free, with 5 trial AI generations per signed-in account. Pro provides a larger AI allowance through manually arranged payment and activation. It does not change the open-source license of the components. + +[Request Pro access or discuss an integration](https://ui.coderocket.app/contact). We want feedback from real projects before expanding the scope. This invitation is voluntary: people who starred or used the datepicker will not be automatically contacted. + +— Alexandre Le Corre diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..1de3239 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,30 @@ +# Contributing to CodeRocket UI + +Use Node.js 24+ and pnpm 12.4.2. Run `pnpm install --frozen-lockfile`, then `pnpm check` before opening a pull request. Build outputs are ignored; commit source changes and the lockfile when dependencies change. + +## Components and documentation + +The active workspaces are in `packages/`. React and Vue implementations share the catalogue specifications and design-system model. Keep behavior and specifications aligned across both frameworks where their APIs allow it. Preserve keyboard interaction, focus, explicit labels, theme inheritance and mobile layouts. Tailwind must remain optional for consumers. Add tests for meaningful behavior changes. + +The public website's Markdown/MDX documentation is in `docs/content`. It is rendered by the separately maintained website at [ui.coderocket.app/docs](https://ui.coderocket.app/docs). Update React and Vue reference material together when shared behavior changes; use framework-specific examples for JSX versus Vue slots, events and `v-model`. + +When you change files covered by the public source manifest, refresh it before running checks: + +```sh +node tooling/check-source-manifest.mjs --write +pnpm check +``` + +This command only updates content hashes; it does not upload source or require access to the private application. Include the resulting manifest change in the pull request. Follow [the repository boundary guide](docs/REPOSITORY-TRANSITION.md) when reviewing synchronized source. + +## Report an issue + +For current components, provide a minimal reproduction, repository revision, framework and version, browser details and the expected behavior. State whether the issue concerns the public component or hosted Studio. Do not include credentials, connection tokens, customer data or private source. + +The legacy Vue datepicker is frozen. Its issues and source remain available for reference; new maintenance or feature releases are not planned there. + +## Repository boundaries and license + +The hosted application's authentication, database, AI-provider services and commercial operations are maintained separately. Do not add credentials, customer records, private deployment configuration or server source to this repository. Registry examples must use placeholders. + +By contributing, you agree to make your contribution available under this repository's MIT license. Preserve existing third-party notices and attribution. Review experimental components in your own application's context before release. diff --git a/LICENSE b/LICENSE index c558884..96e3ffc 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) Kenhyuwa +Copyright (c) 2026 Alexandre Le Corre Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 3af4892..f6053d4 100644 --- a/README.md +++ b/README.md @@ -1,77 +1,103 @@ -# Vue Tailwind Datepicker +# CodeRocket UI — React and Vue component libraries -A date and date range picker for Vue 3, styled with Tailwind CSS. +**Build a component library that looks like your product, with design rules your coding agents can use.** -## Maintained package +CodeRocket UI combines **48 components and 26 interface blocks for both React and Vue**, a typed design-system model, and CLI/MCP integrations. Start from accessible primitives, customize shared tokens, and keep editable source in your application. The core is **MIT licensed**, written in **TypeScript**, and works **with or without Tailwind**. -The maintained package is now **`@coderocketapp/vue-tailwind-datepicker`**. -The previous `vue-tailwind-datepicker` package remains available, but updates are -published under the new name. Existing installations do not migrate automatically. +[Try the visual builder](https://ui.coderocket.app) · [React documentation](https://ui.coderocket.app/docs/components) · [Vue documentation](https://ui.coderocket.app/docs/vue/components) · [Request Pro access](https://ui.coderocket.app/contact?intent=pro) + +## Two frameworks, one design system + +React uses Base UI. Vue uses native Vue single-file components and Reka UI. Both catalogues share tokens, layouts and core behavior, including date and range selection, forms, overlays and application blocks. Vue APIs use `v-model`, events and slots; framework-specific APIs are not interchangeable. + +Use the components directly from this source workspace, or use the [hosted Studio](https://ui.coderocket.app/studio) to customize a library visually, review AI proposals and export its source. An account or AI provider is **not required** to use the open-source components locally. Svelte and SolidJS are planned, without announced release dates. + +## What is open source? + +| Package | What it provides | +| --------------------------------------- | -------------------------------------------------------------------------------------------- | +| [`@coderocket/react`](packages/react) | 48 React components, Base UI primitives, compiled CSS and a composition renderer. | +| [`@coderocket/blocks`](packages/blocks) | 26 React interface blocks with typed application callbacks. | +| [`@coderocket/vue`](packages/vue) | 48 Vue components and 26 Vue blocks, Reka UI primitives, CSS and a composition renderer. | +| [`@coderocket/engine`](packages/engine) | Versioned design-system model, token validation, theme generation and reviewed token import. | +| [`@coderocket/specs`](packages/specs) | Shared catalogue specifications and validated composition schemas. | +| [`@coderocket/shared`](packages/shared) | Types and a read-only registry client for the integration tools. | +| [`@coderocket/cli`](packages/cli) | Local import analysis and installation/sync from a saved library, preserving local changes. | +| [`@coderocket/mcp`](packages/mcp) | A read-only MCP server exposing a saved library's rules and component sources. | + +The [documentation source](docs/content) is public too. It is rendered at [ui.coderocket.app/docs](https://ui.coderocket.app/docs) by the separately maintained website. + +The hosted Studio, accounts, database, AI-provider integration and commercial operations remain private. Authentication, payments, email delivery and uploads are not bundled component backends: blocks expose callbacks for your own application. The CLI's registry commands and MCP need a saved library and scoped connection token, or a compatible registry server. + +The catalogue is experimental. Review accessibility, behavior and framework integration in your application's context before release. + +## Build from source + +Use Node.js 24+ and pnpm 12.4.2. **This is a source distribution**: workspace package names do not imply a public npm release. ```sh -npm uninstall vue-tailwind-datepicker -npm install @coderocketapp/vue-tailwind-datepicker dayjs +git clone https://github.com/elreco/coderocket-ui.git +cd coderocket-ui +pnpm install --frozen-lockfile +pnpm check ``` -For a new application, only the install command is needed. Vue 3 is required. -The package includes compiled CSS; an application does not need to configure -Tailwind or the forms plugin to display the picker. +The checks validate and build the workspace and run its tests without contacting the Studio or an AI provider. The legacy datepicker is outside this pnpm workspace. -## Usage +### React -```vue - ``` -Import the stylesheet once in your application. To select one date, add `as-single`. -The component also supports arrays and objects as values, custom shortcuts, -disabled dates, translations, inline calendars and explicit Apply/Cancel buttons. +See [development and integration](docs/DEVELOPMENT.md) for consumer dependencies, styles and framework differences. React 19.3 / Base UI 1.8 and Vue 3.5 / Reka UI 2.10 are the versions used by this source release. -Use `color-mode="light"` or `color-mode="dark"` to force the appearance. -`color-mode="auto"` follows a dark ancestor or the system preference. +### Coding agents, CLI and MCP -## Documentation +After building, run `node packages/cli/dist/index.mjs --help`. Follow the [CLI guide](packages/cli/README.md) for installation and sync, or the [MCP guide](packages/mcp/README.md) to expose a saved library to a compatible coding agent. The library's framework determines the returned source. No Gemini or other AI provider key is required by these clients. -[Installation](docs/installation.md) · [Props](docs/props.md) · -[Events](docs/events.md) · [Theming](docs/theming-options.md) +[Markdown documentation](docs/content), typed specifications and a read-only MCP interface help agents use the same components and design rules as developers. Generated source still needs review before application. -[Documentation website](https://elreco.github.io/vue-tailwind-datepicker/) · -[GitHub releases](https://github.com/elreco/vue-tailwind-datepicker/releases) +## From Vue Tailwind Datepicker -## Local development +This is the same repository, with its stars, issues and Git history. CodeRocket UI is its active successor; it is **not a drop-in replacement** for the old datepicker API. -Use Node.js 22.14+ (Node 24 is used in CI). +**Vue Tailwind Datepicker is frozen and no longer maintained.** Its npm package, `@coderocketapp/vue-tailwind-datepicker`, remains available. Its source, original MIT attribution, changelog and documentation are preserved in [`legacy/vue-tailwind-datepicker`](legacy/vue-tailwind-datepicker). Existing applications can continue using their installed version; no automatic migration is required. No further legacy fixes or releases are planned. -```sh -npm ci -npm run dev -``` +For new work, explore the [Vue DatePicker](https://ui.coderocket.app/docs/vue/components/date-picker) or [React DatePicker](https://ui.coderocket.app/docs/components/date-picker). Read the [transition announcement](ANNOUNCEMENT.md) and [legacy documentation](https://vue-tailwind-datepicker.com) before migrating. -The playground is available at the address printed by Vite. +## Hosted access and Pro -```sh -npm run typecheck -npm run build -npm run check:package -npm run docs:install -npm run docs:dev -npm run docs:build -``` +The hosted editor, component catalogue and source export are free. Signed-in accounts receive **5 trial AI generations in total**. Pro adds **100 AI generations per UTC calendar month** during an agreed paid period, subject to the shared service limit. Price, payment and activation are arranged personally; there is no automatic billing or renewal. Manual editing and export remain usable without AI allowance. -See the [release guide](.github/RELEASE_GUIDE.md) for npm publishing and GitHub Actions. +[Request Pro or integration help](https://ui.coderocket.app/contact?intent=pro), or read [how access works](https://ui.coderocket.app/docs/pilot). Submitting a request does not charge you or activate paid access. GitHub stars and historical datepicker use are not permission for sales outreach. -## License and credits +## Contributing and licensing -[MIT](LICENSE). Based on the original work by [Kenhyuwa](https://github.com/kenhyuwa), -with contributions from the Vue Tailwind Datepicker community. +See [CONTRIBUTING.md](CONTRIBUTING.md), [the roadmap](docs/ROADMAP.md), [MIT license](LICENSE) and [third-party notices](THIRD_PARTY_NOTICES.md). Contributions belong in the active packages and documentation. The legacy datepicker remains an unmaintained reference. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md new file mode 100644 index 0000000..b667880 --- /dev/null +++ b/THIRD_PARTY_NOTICES.md @@ -0,0 +1,9 @@ +# Licenses and attribution + +The active CodeRocket UI packages and public documentation are licensed under the root [MIT license](LICENSE). The repository author is Alexandre Le Corre (`elreco`). + +The historical Vue Tailwind Datepicker source keeps its original [MIT license and Kenhyuwa attribution](legacy/vue-tailwind-datepicker/LICENSE). Moving that source does not remove or replace its license. Its original dependency manifests and lockfiles are preserved alongside it. + +Third-party dependencies retain their own licenses. The active source uses React, React DOM, Base UI, Vue, Reka UI, Lucide, Zod and the Model Context Protocol SDK, among others. Dependency implementations are obtained through the package manager and are not relicensed by this repository. The public library build keeps runtime dependencies external. + +Documentation examples and interface blocks do not provide hosted authentication, billing or storage services. The hosted CodeRocket UI application is maintained separately and is not licensed by this repository's MIT license. diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts deleted file mode 100644 index 7b50daf..0000000 --- a/docs/.vitepress/config.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type { UserConfig } from 'vitepress' -import { version } from '../../package.json' - -export default { - base: process.env.DOCS_BASE || '/', - title: 'Vue Tailwind Datepicker', - lastUpdated: true, - description: 'Components, composables and configurations for Vue 3', - themeConfig: { - search: { - provider: 'local' - }, - /* logo: 'https://github.com/elreco/vue-tailwind-datepicker/blob/main/docs/logo.png?raw=true', */ - socialLinks: [{ icon: 'github', link: 'https://github.com/elreco/vue-tailwind-datepicker' }], - footer: { - message: 'Released under the MIT License.', - copyright: `Copyright © ${new Date().getFullYear()} Alexandre Le Corre` - }, - sidebar: [ - { - text: 'Get Started', - items: [ - { text: 'Installation', link: '/installation' }, - { text: 'Demo', link: '/demo' } - ] - }, - { - text: 'Customization', - items: [ - { text: 'Theming options', link: '/theming-options' }, - { text: 'Props', link: '/props' }, - { text: 'Events', link: '/events' }, - { text: 'Advanced Features', link: '/advanced-features' }, - ] - }, - ], - nav: [ - { text: 'Home', link: '/' }, - { text: 'Get Started', link: '/installation' }, - { text: 'Demo', link: '/demo' }, - { - text: version, - items: [ - { - text: 'Changelog', - link: 'https://github.com/elreco/vue-tailwind-datepicker/releases' - }, - ] - } - ] - }, - vite: { - optimizeDeps: { - include: ['@headlessui/vue', 'dayjs'], - exclude: [] - }, - } -} satisfies UserConfig diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js deleted file mode 100644 index 825fc2c..0000000 --- a/docs/.vitepress/theme/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import './tailwind.postcss' - -import DefaultTheme from 'vitepress/theme' -export default { ...DefaultTheme } \ No newline at end of file diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md new file mode 100644 index 0000000..6c522f1 --- /dev/null +++ b/docs/DEVELOPMENT.md @@ -0,0 +1,120 @@ +# Develop and use the open-source core + +## Build and test + +Use Node.js 24+ and pnpm 12.4.2: + +```sh +pnpm install --frozen-lockfile +pnpm check +``` + +`pnpm check` verifies the public source manifest, typechecks both frameworks, builds the packages, runs tests and smoke-tests the distribution. You can run `pnpm typecheck`, `pnpm build`, `pnpm test` and `pnpm smoke` individually while developing. After an intentional source or documentation change, refresh the manifest with `node tooling/check-source-manifest.mjs --write` before the full check. + +The build emits ES modules, TypeScript declarations and CSS. React entries retain the client boundary for frameworks such as Next.js. Vue single-file components are compiled for consumers. Runtime dependencies remain external. Tests cover date values, model validation, composition, framework behavior and the CLI's filesystem protection. + +These are source workspaces, not an announcement of npm availability. Add a consumer inside this pnpm workspace with `workspace:*` dependencies, or build and package the required dependencies locally. The hosted Studio also exports standalone source you can copy into an existing application. + +## A local React consumer + +Add a consumer directory to `pnpm-workspace.yaml` and give it these dependencies: + +```json +{ + "dependencies": { + "@coderocket/react": "workspace:*", + "@coderocket/blocks": "workspace:*", + "@coderocket/engine": "workspace:*", + "react": "19.3.0", + "react-dom": "19.3.0" + } +} +``` + +Build the core first, then start your consumer's React bundler. Import `@coderocket/react/styles.css` and `@coderocket/blocks/styles.css` if using blocks. Put a `ThemeScope` around your interface so portalled controls share its typography and tokens: + +```tsx +import { ThemeScope, Button, Card } from "@coderocket/react"; +import "@coderocket/react/styles.css"; + +export function Example() { + return ( + + + + + + ); +} +``` + +Callbacks belong in your own client component when using an SSR framework. They do not save data remotely, send email or take payment without your implementation. + +## A local Vue consumer + +Add a Vue consumer to the workspace with these dependencies: + +```json +{ + "dependencies": { + "@coderocket/vue": "workspace:*", + "@coderocket/engine": "workspace:*", + "vue": "3.5.43" + } +} +``` + +Use your normal Vue bundler, such as Vite with its Vue plugin. Build the core first. The compiled Vue stylesheet includes component and block styles: + +```vue + + + +``` + +Vue blocks are exported from `@coderocket/vue/blocks`. The components use Vue's slots, emitted events and `v-model`. They are not React wrappers. The two frameworks share the catalogue and design tokens, but Base UI-specific imperative handles, transition details and drawer snap points do not have identical Vue counterparts. + +For standalone Studio exports, follow the [Vue installation and Nuxt guide](https://ui.coderocket.app/docs/vue). Exported sources have relative application imports and separate `styles/components.css`, `styles/blocks.css` and `styles/theme.css`; these paths differ from the built workspace package above. + +## Design model and specifications + +`@coderocket/engine` validates the versioned model and generates theme CSS. `@coderocket/specs` describes the catalogue and validates bounded compositions of known primitives. These can be used locally without an AI provider or hosted account. Apply a generated theme after the component styles when supplying your own tokens. + +A library's explicit tokens, recipes and specifications remain its source of truth. AI proposals are inputs to validate and review, not permission to execute arbitrary code. + +## Documentation + +The Markdown/MDX and navigation metadata in [`docs/content`](content) are public source. Their `/docs/...` links are website routes; use [the hosted documentation](https://ui.coderocket.app/docs) to navigate them. React and Vue have equivalent component and block sections. The website shell, live-preview host and account UI are part of the separately maintained hosted application. + +## Hosted registry integrations + +The [CLI](../packages/cli/README.md) and [MCP](../packages/mcp/README.md) share a read-only registry client. They need a saved library ID and scoped connection token for remote reads. The saved framework selects React or Vue source and dependencies automatically. This repository does not include the registry backend or account service. `coderocket import` is local analysis and does not need a token. + +## Legacy documentation + +The frozen project is isolated in `legacy/vue-tailwind-datepicker`, including its npm lockfiles. To reproduce it: + +```sh +npm ci --prefix legacy/vue-tailwind-datepicker +npm --prefix legacy/vue-tailwind-datepicker run typecheck +npm --prefix legacy/vue-tailwind-datepicker run check:package +npm ci --prefix legacy/vue-tailwind-datepicker/docs +DOCS_BASE=/ npm --prefix legacy/vue-tailwind-datepicker run docs:build +``` + +Its API and npm name are unchanged. These commands reproduce the historical source; they do not imply ongoing maintenance or publication. diff --git a/docs/REPOSITORY-TRANSITION.md b/docs/REPOSITORY-TRANSITION.md new file mode 100644 index 0000000..25c5202 --- /dev/null +++ b/docs/REPOSITORY-TRANSITION.md @@ -0,0 +1,34 @@ +# Repository transition and release boundaries + +## The public repository + +`elreco/coderocket-ui` is the active open-source repository. Its `main` branch contains the React and Vue component libraries, shared engine/specifications, CLI, read-only MCP server and documentation. The package names are workspace identities; publishing an npm release is a separate operation. + +The public source includes eight packages: `react`, `vue`, `blocks`, `engine`, `specs`, `shared`, `cli` and `mcp`. Documentation lives in `docs/content`, including React/Vue references, installation and agent integration guides. Public contributors can change these files without access to the hosted service. + +## The hosted application + +The Studio's website shell, accounts, database, AI-provider integration, customer records, credentials and commercial operations are maintained in a separate private repository. The public documentation is rendered at [ui.coderocket.app/docs](https://ui.coderocket.app/docs) by that website. + +The private application records the public source revision it uses. Its release checks compare the allowed component/documentation source against the public snapshot, so changes cannot silently ship only in the private application. Syncs are limited to the public package source, Vue preview and documentation directories; private application code and configuration are excluded. + +The public `.coderocket/source-manifest.json` records content hashes for those public sources. After an intentional edit, run: + +```sh +node tooling/check-source-manifest.mjs --write +pnpm check +``` + +Review and commit the refreshed manifest together with the source changes. This operation needs no private repository or credentials. A matching manifest proves the snapshot is consistent; it does not replace review or tests. + +## Preserving the datepicker + +The transition started from legacy commit `91208cbd9be5465cc43ea3feb722305c476f9fb1`, moving that tracked tree to `legacy/vue-tailwind-datepicker`. The branch `legacy/vue-tailwind-datepicker` and tag `vue-tailwind-datepicker-final` preserve the final source in its original directory layout. Existing version tags remain historical references. + +The repository was renamed from `elreco/vue-tailwind-datepicker` to `elreco/coderocket-ui`, retaining its stars, issues and Git history. GitHub redirects the old URL. The historical npm package `@coderocketapp/vue-tailwind-datepicker` remains available; it is frozen, with no planned fixes or releases. Do not unpublish it or change its installed API as part of the repository transition. + +[Legacy documentation](https://vue-tailwind-datepicker.com) is built from the nested historical project. The root Netlify configuration belongs to that legacy documentation deployment; it does not deploy the new hosted Studio. + +Netlify applies the root `build.base`, then reads the nested legacy `netlify.toml`. Keep those legacy build commands aligned. Because the root pnpm workspace excludes the legacy package, the explicit documentation build installs both historical npm lockfiles before building previews that import the Vue source. The legacy `.nvmrc` selects Node 24. + +Historical workflows remain under `legacy/vue-tailwind-datepicker/.github/workflows` for provenance. GitHub does not execute workflows in that nested directory. Active root workflows validate the public source. There is no automatic legacy npm publisher or datepicker release. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md new file mode 100644 index 0000000..02b9824 --- /dev/null +++ b/docs/ROADMAP.md @@ -0,0 +1,23 @@ +# Current scope + +## Available in the open-source core + +- 48 components and 26 interface blocks for **React and Vue**, with CSS and native framework APIs. +- Base UI primitives for React and Reka UI primitives for Vue. +- A typed, versioned design-system model and shared catalogue specifications. +- Local token analysis and reviewed model changes. +- CLI installation/sync that preserves local file changes. +- A read-only MCP server exposing a saved library in its chosen framework. +- Public Markdown/MDX documentation in [`docs/content`](content), rendered on the hosted website. + +The catalogue is experimental. Fixes should be driven by real integrations, with particular care for keyboard behavior, focus, SSR, mobile and parity between the two frameworks. The historical datepicker is preserved separately; its API is not the new Vue library API. + +## Next: validate integrations + +The near-term goal is a small number of voluntary pilots using real applications. We want evidence that teams can build a coherent library, install it, preserve local edits and use the same components through a coding agent. + +Svelte and SolidJS support is planned without announced release dates. Stronger import coverage and team workflows remain directions to validate. Framework-specific advanced APIs cannot always have identical implementations. + +The hosted Studio has free editing/export and manually activated Pro AI access. These services are separate from the MIT-licensed source. Buying Pro does not guarantee a future framework release. + +Vue Tailwind Datepicker remains frozen in `legacy/`, available for existing installations but without planned fixes or releases. diff --git a/docs/content/accessibility.mdx b/docs/content/accessibility.mdx new file mode 100644 index 0000000..448e49f --- /dev/null +++ b/docs/content/accessibility.mdx @@ -0,0 +1,28 @@ +--- +title: Accessibility +description: Build on accessible primitives and verify the complete experience. +--- + +## Behavior + +Interactive primitives use Base UI for React and Reka UI for Vue where applicable: focus management, dialogs, menus, comboboxes, tabs and notifications. Native inputs retain form semantics. + +Always supply meaningful labels, associate descriptions with controls, and provide visible feedback for asynchronous actions. Do not use a placeholder as the only label. + +## Keyboard + +- Use Tab and Shift+Tab to move between controls. +- Menus and comboboxes support arrow keys and selection through their framework’s accessible primitives. +- Escape closes dismissible overlays; focus returns to their trigger. +- The calendar uses arrow keys for days/weeks, Home/End for week boundaries and PageUp/PageDown for months. Shift with PageUp/PageDown changes the year. +- The editor supports Command/Ctrl+K for search and Command/Ctrl+I for the assistant. + +## Visual changes need checks + +The editor evaluates semantic text color pairs. This is one check, not an accessibility certification. Check disabled states, images, focus indicators, errors, screen-reader announcements and zoom in your actual app. + +Reduced-motion preferences disable decorative animation. Do not communicate status through color alone. Keep controls usable on touch screens and do not remove visible focus styles. + +## Early access + +Components remain experimental while the catalogue is being tested and integrated. Storybook provides light, dark, compact and shape variations so changes can be inspected consistently. diff --git a/docs/content/agents.mdx b/docs/content/agents.mdx new file mode 100644 index 0000000..bbff94a --- /dev/null +++ b/docs/content/agents.mdx @@ -0,0 +1,79 @@ +--- +title: CLI and coding agents +description: Connect your project and give your coding agent the same components, tokens and design rules you use in the editor. +--- + +You can work entirely from an exported ZIP. Use a connection when you want your terminal or coding agent to read the latest saved version of a library. + +## Create a connection + +1. Save the library in the editor, then open **Connect**. +2. Name the connection for the machine or agent that will use it. +3. Choose **Create read-only connection** and copy the token shown once. +4. Copy the generated setup commands or MCP configuration into your development environment. + +A connection can read only its library. It expires after 90 days and can be revoked from the same dialog. Put its token in your terminal or agent's protected environment; keep it out of source files, prompts and public URLs. + +## Install with the CLI + +The **Connect** dialog provides the CLI archive URL and complete commands for your library. Its commands use `npm exec --package -- coderocket …`, so a global installation is unnecessary. The table below abbreviates that prefix; use the full command from **Connect** and replace only its final arguments. + +| Command | Result | +| ------------------------------ | ---------------------------------------------------------- | +| `coderocket init` | Connect the current project to a saved library | +| `coderocket add button dialog` | Install the named components and required shared files | +| `coderocket add block-login` | Install a complete block | +| `coderocket add --all` | Install the full catalogue | +| `coderocket sync` | Update unchanged local files from the latest saved version | +| `coderocket import` | Write a local analysis report for importing project tokens | + +Install the listed runtime dependencies and import the generated styles once. See [export and installation](/docs/export) for React/Next.js, or [Vue and Nuxt setup](/docs/vue). The connection reads the framework from your saved library and serves the matching source and dependencies. + +### Your local edits stay yours + +The CLI compares file hashes before applying an update. If it finds a local edit or deletion, it stops the installation and writes the proposed changes into a `.coderocket/review-*` folder. Review and merge those changes in your codebase; the CLI does not silently replace your work. + +Save changes in the editor before syncing. A connection reads saved versions, not another browser's unsaved preview. + +## Use the shadcn registry (React) + +Vue libraries use the CodeRocket CLI or MCP above. The instructions below target React projects. + +Open **Connect → Use the shadcn registry** and copy the registry entry into your existing `components.json`. The configuration uses an authorization header from your environment to keep the library private. + +You can then install a component through your configured registry: + +```bash +npx shadcn@latest add @coderocket/button +``` + +The local-change protection described above belongs to the CodeRocket CLI. When using another installer, review its proposed changes and your version-control diff. + +## Connect an agent with MCP + +Open **Connect → Connect a coding agent with MCP**. Copy the configuration to a compatible MCP client, storing the token in its protected environment settings. + +The connector gives your agent read access to: + +- The saved design model, tokens and revision. +- Design rules and integration conventions. +- Component and block search. +- Source files, dependencies and installation paths. + +For example, you can ask an agent to “build a settings form using this library's input, select and button components.” The agent has the source and design context it needs to reuse your library. Design changes still happen in the editor, where you review and save them. + +## Include your design rules + +Every source export includes `AGENTS.md` with the library's conventions. It asks agents to reuse existing controls, consume semantic tokens, and preserve keyboard and focus behavior. + +If your project already has an `AGENTS.md`, merge the relevant design rules into it. Preserve your existing project-specific instructions. + +## Give an assistant the public reference + +Use **Copy for AI** on any documentation page. Paste the result into your preferred assistant, such as ChatGPT, Claude, Cursor, Copilot or Codex, and describe what you want to build. The copied context includes this page’s Markdown and links to source installation and agent setup. It works without a CodeRocket connection. + +This is the **public reference**. To work with your own saved components and theme, give your coding agent the exported files or [connect it through MCP](#connect-an-agent-with-mcp). Keep connection tokens in the agent’s protected environment settings. + +Component and block pages also offer **Open in editor**. Choose an existing library or create one; the editor keeps the component you selected. You can customize its design, inspect its code and export the source from there. + +The **Markdown** link opens a plain-text version of the page, useful for both people and tools. [`/llms.txt`](/llms.txt) provides the documentation index; [`/llms-full.txt`](/llms-full.txt) contains the full collection for tools that need it. diff --git a/docs/content/ai.mdx b/docs/content/ai.mdx new file mode 100644 index 0000000..6c70c76 --- /dev/null +++ b/docs/content/ai.mdx @@ -0,0 +1,44 @@ +--- +title: Work with the assistant +description: Ask for a change, review the proposal, then apply it. +--- + +The assistant is an interface to your design-system model. It does not rewrite the entire component library for every prompt. + +## Be specific + +> Use warmer surfaces and rounder cards, but keep the current primary color and button corners. + +The server requests a structured proposal from Gemini. The proposal is checked against the model schema and supported token paths. Color changes are checked for text contrast. Invalid output can be repaired once; it is not silently applied. + +## Review before applying + +The proposal lists the values that would change. **Apply to preview** changes the local editor state. **Save** creates a persistent version. Undo remains available before saving. + +If you edit the design while a proposal is in progress, the old proposal cannot overwrite your newer changes. Request another proposal using the updated design. + +## Missing information + +An ambiguous request may return a clarification. No changes accompany a clarification. Add the missing details to your prompt and try again. + +## Privacy and availability + +The prompt and the current design values are sent to Google's Gemini service to produce a response. Provider keys stay on the server. CodeRocket does not store raw prompts in its application history; it stores the validated proposals used to explain changes. + +If Gemini is unavailable or not configured, the assistant reports the issue. The visual editor, existing components and exports remain usable. There is no simulated AI response. + +## Create a component or block + +Use **Create component** in the editor to describe a form, card, settings panel or file selector. Gemini composes the existing primitives into a structured tree. The renderer produces editable React or Vue sources, matching the library’s framework, from that tree; generated strings are never executed as JavaScript. + +Review the preview, source and specification, then choose **Accept and save component**. The accepted component becomes part of the library's exports, registry and MCP catalogue. Its version is stored with its specification, source and validation metadata. + +This early-access generator supports composition of the available layout and form primitives. It does not invent a working backend or arbitrary new browser behavior. File selection stays local until your application's callback handles it; application buttons use the `onAction` prop in the exported source. + +The schema, tree and labels are checked before the preview. The editor then runs axe accessibility checks on the rendered preview; acceptance stays disabled until those checks pass. Components remain **experimental** until you test the integration, keyboard behavior and application actions in their final context. + +## Source, tests and stories + +Accepted compositions include their structured specification, editable React or Vue source, an SSR smoke test and a Storybook story in the ZIP export. Connect the exported stories to your application's Storybook theme decorator. Run the tests and accessibility checks in that application before promoting an experimental component to production. + +The current generator assembles validated primitives. It does not execute arbitrary generated JavaScript or invent application backends. Unsupported behavior requires clarification and implementation in your own action callbacks. diff --git a/docs/content/blocks/api-keys.mdx b/docs/content/blocks/api-keys.mdx new file mode 100644 index 0000000..dd17c22 --- /dev/null +++ b/docs/content/blocks/api-keys.mdx @@ -0,0 +1,715 @@ +--- +title: "ApiKeys" +description: "A masked key list with creation and revocation callbacks." +--- + + + +## Usage + +Get this block from a [saved library export](/docs/export) or the [connected CLI](/docs/agents). The imports below refer to local files installed in your app. + +Import `styles/components.css`, then `styles/blocks.css`, then `styles/theme.css` once. Wrap your app in `ThemeScope` from `components/ui/utils` so typography, focus and overlays share the theme. The [installation guide](/docs/export) covers runtime dependencies and React/Next.js setup. + +This import is the entry point, not a complete integration example. Supply the required props and connect callbacks to your application. The full ZIP includes `examples/blocks-preview.tsx` with the populated preview and local sample callbacks; adapt those examples to your product. + +```tsx +import { ApiKeysBlock } from './components/blocks/application'; + +// See Source and props below for the complete typed interface. +``` + +## Design system + +This block consumes your semantic colors, spacing, typography and shape tokens. Import the compiled styles and your theme once as described in [Export](/docs/export). + +Icons use Lucide React. Install `lucide-react@1.47.0` alongside React and Base UI. + +Dependencies: [sidebar](/docs/components/sidebar), [avatar](/docs/components/avatar), [badge](/docs/components/badge), [breadcrumb](/docs/components/breadcrumb), [button](/docs/components/button), [card](/docs/components/card), [dialog](/docs/components/dialog), [dropdown](/docs/components/dropdown), [field](/docs/components/field), [input](/docs/components/input), [progress](/docs/components/progress), [switch](/docs/components/switch), [tabs](/docs/components/tabs), [textarea](/docs/components/textarea), [alert](/docs/components/alert). + +## Behavior and accessibility + +- Provide meaningful labels for interactive controls. +- Connect action callbacks to your application logic. +- Verify keyboard navigation and contrast in your application. + +Status: **experimental** during early access. Sample previews do not send emails, process payments or upload files to a service. + +## Source and props + +This is the exported source, using the same implementation as the editor. The complete source group is included below; related blocks share it to avoid duplicating behavior. + +```tsx +"use client"; +import { useState, type ComponentProps, type ReactNode } from "react"; +import { + ArrowUpRight, + Bell, + Building2, + CheckCheck, + ChevronRight, + CreditCard, + FileText, + KeyRound, + Layers2, + LayoutGrid, + Plus, + Search, + ShieldCheck, + Trash2, + UserRound, + UserRoundPlus, + UsersRound, +} from "lucide-react"; +import { + Sidebar, + Avatar, + Badge, + Breadcrumb, + Button, + Card, + Dialog, + Dropdown, + Field, + Input, + Progress, + Switch, + Tabs, + Textarea, +} from '../ui'; +import { ActionForm, type FormAction } from "./common"; + +function WorkspaceHeading({ + eyebrow, + title, + description, + action, +}: { + eyebrow: string; + title: string; + description?: string; + action?: ReactNode; +}) { + return ( +
+
+ {eyebrow} +

{title}

+ {description &&

{description}

} +
+ {action &&
{action}
} +
+ ); +} + +export function AppSidebarBlock({ + workspace, + items, + accountName, +}: { + workspace: string; + items: ComponentProps["items"]; + accountName: string; +}) { + return ( +
+ + + + + {workspace} + Workspace + + + } + items={items.map((item) => ({ + ...item, + icon: item.icon ??
+ ); +} + +export function AppHeaderBlock({ + breadcrumbs, + accountName, + onSearch, + onSignOut, +}: { + breadcrumbs: ComponentProps["items"]; + accountName: string; + onSearch: () => void; + onSignOut: () => void; +}) { + return ( +
+
+ + + +
+
+ +
+
+ ); +} + +export function ProfileBlock({ + name, + email, + bio = "", + onSave, +}: { + name: string; + email: string; + bio?: string; + onSave: FormAction; +}) { + return ( + + +
+ +
+ {name} + {email} +
+ + +
+ +
+ + + + + + +
+ +