@shapio/cms 0.4.0 → 0.5.0
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/dist/admin/assets/{AssetTile-C-Mu0BRF.js → AssetTile-zOf0K0nN.js} +2 -2
- package/dist/admin/assets/{AssetTile-C-Mu0BRF.js.map → AssetTile-zOf0K0nN.js.map} +1 -1
- package/dist/admin/assets/{AssistError-B-bnaHhJ.js → AssistError-D_vY2CO0.js} +2 -2
- package/dist/admin/assets/{AssistError-B-bnaHhJ.js.map → AssistError-D_vY2CO0.js.map} +1 -1
- package/dist/admin/assets/{BlockMenuItems-Dn9WULjL.js → BlockMenuItems-BEnSpClj.js} +2 -2
- package/dist/admin/assets/{BlockMenuItems-Dn9WULjL.js.map → BlockMenuItems-BEnSpClj.js.map} +1 -1
- package/dist/admin/assets/{Body-C0SwduLi.js → Body-B_IVN5wp.js} +2 -2
- package/dist/admin/assets/{Body-C0SwduLi.js.map → Body-B_IVN5wp.js.map} +1 -1
- package/dist/admin/assets/Builder-CnEtRudv.js +2 -0
- package/dist/admin/assets/Builder-CnEtRudv.js.map +1 -0
- package/dist/admin/assets/{ConfirmDialog-BfpN2MQx.js → ConfirmDialog-BW-l3Whg.js} +2 -2
- package/dist/admin/assets/{ConfirmDialog-BfpN2MQx.js.map → ConfirmDialog-BW-l3Whg.js.map} +1 -1
- package/dist/admin/assets/{CopyButton-Dxbzp7hC.js → CopyButton-CyoUMStc.js} +2 -2
- package/dist/admin/assets/{CopyButton-Dxbzp7hC.js.map → CopyButton-CyoUMStc.js.map} +1 -1
- package/dist/admin/assets/{CursorPager-DkZs6rPg.js → CursorPager-BW2Dl_hn.js} +2 -2
- package/dist/admin/assets/{CursorPager-DkZs6rPg.js.map → CursorPager-BW2Dl_hn.js.map} +1 -1
- package/dist/admin/assets/{ExternalLink-KdO72pTj.js → ExternalLink-BCI0q9ib.js} +2 -2
- package/dist/admin/assets/{ExternalLink-KdO72pTj.js.map → ExternalLink-BCI0q9ib.js.map} +1 -1
- package/dist/admin/assets/{FocalPoint-r1MG_y-r.js → FocalPoint-CxicvlJO.js} +2 -2
- package/dist/admin/assets/{FocalPoint-r1MG_y-r.js.map → FocalPoint-CxicvlJO.js.map} +1 -1
- package/dist/admin/assets/{Form-D8vp4Kd_.js → Form-DB03drS9.js} +2 -2
- package/dist/admin/assets/{Form-D8vp4Kd_.js.map → Form-DB03drS9.js.map} +1 -1
- package/dist/admin/assets/{FormCheckboxGroup-8ObPh9cH.js → FormCheckboxGroup-JP1xzReQ.js} +2 -2
- package/dist/admin/assets/{FormCheckboxGroup-8ObPh9cH.js.map → FormCheckboxGroup-JP1xzReQ.js.map} +1 -1
- package/dist/admin/assets/{FormRadioGroup-CAB3qzVS.js → FormRadioGroup-BvSC8SRm.js} +2 -2
- package/dist/admin/assets/{FormRadioGroup-CAB3qzVS.js.map → FormRadioGroup-BvSC8SRm.js.map} +1 -1
- package/dist/admin/assets/{FormSelectField-C7hE05Wq.js → FormSelectField-BDIVhZh6.js} +2 -2
- package/dist/admin/assets/{FormSelectField-C7hE05Wq.js.map → FormSelectField-BDIVhZh6.js.map} +1 -1
- package/dist/admin/assets/{FormSwitchField-7EEYkGOH.js → FormSwitchField-OM4F8ln4.js} +2 -2
- package/dist/admin/assets/{FormSwitchField-7EEYkGOH.js.map → FormSwitchField-OM4F8ln4.js.map} +1 -1
- package/dist/admin/assets/{FormTextareaField-BasuRoXW.js → FormTextareaField-Bw7EkC4H.js} +2 -2
- package/dist/admin/assets/{FormTextareaField-BasuRoXW.js.map → FormTextareaField-Bw7EkC4H.js.map} +1 -1
- package/dist/admin/assets/{HintedLabel-BDV81kIT.js → HintedLabel-BGidukgy.js} +2 -2
- package/dist/admin/assets/{HintedLabel-BDV81kIT.js.map → HintedLabel-BGidukgy.js.map} +1 -1
- package/dist/admin/assets/{InfoHint-DWn9kLf1.js → InfoHint-D3uwei-E.js} +2 -2
- package/dist/admin/assets/{InfoHint-DWn9kLf1.js.map → InfoHint-D3uwei-E.js.map} +1 -1
- package/dist/admin/assets/{InsertMenuItem-DhJk5BeH.js → InsertMenuItem-DAihGvbw.js} +2 -2
- package/dist/admin/assets/{InsertMenuItem-DhJk5BeH.js.map → InsertMenuItem-DAihGvbw.js.map} +1 -1
- package/dist/admin/assets/{LinkTabs-stM3j4aH.js → LinkTabs-DBXbfzME.js} +2 -2
- package/dist/admin/assets/{LinkTabs-stM3j4aH.js.map → LinkTabs-DBXbfzME.js.map} +1 -1
- package/dist/admin/assets/{Match-Zu4pwfCC.js → Match-CgfZTzqs.js} +2 -2
- package/dist/admin/assets/{Match-Zu4pwfCC.js.map → Match-CgfZTzqs.js.map} +1 -1
- package/dist/admin/assets/{Panel-ClY9b33D.js → Panel-DDky5_x9.js} +2 -2
- package/dist/admin/assets/{Panel-ClY9b33D.js.map → Panel-DDky5_x9.js.map} +1 -1
- package/dist/admin/assets/{QueryView-Cu-KPtQI.js → QueryView-C2d392ly.js} +2 -2
- package/dist/admin/assets/{QueryView-Cu-KPtQI.js.map → QueryView-C2d392ly.js.map} +1 -1
- package/dist/admin/assets/{RadioTile-Ci0LucKI.js → RadioTile-CcP78eb_.js} +2 -2
- package/dist/admin/assets/{RadioTile-Ci0LucKI.js.map → RadioTile-CcP78eb_.js.map} +1 -1
- package/dist/admin/assets/{RichTextField-BcYOFkeW.js → RichTextField-CeztaFET.js} +2 -2
- package/dist/admin/assets/{RichTextField-BcYOFkeW.js.map → RichTextField-CeztaFET.js.map} +1 -1
- package/dist/admin/assets/{RowTitle-BdDgA5Lb.js → RowTitle-mkKp4yfl.js} +2 -2
- package/dist/admin/assets/{RowTitle-BdDgA5Lb.js.map → RowTitle-mkKp4yfl.js.map} +1 -1
- package/dist/admin/assets/{SecretReveal-ai1uMW_b.js → SecretReveal-mYCzxF96.js} +2 -2
- package/dist/admin/assets/{SecretReveal-ai1uMW_b.js.map → SecretReveal-mYCzxF96.js.map} +1 -1
- package/dist/admin/assets/{SharedGlyph-y6ZsA_gz.js → SharedGlyph-CuDT7OUU.js} +2 -2
- package/dist/admin/assets/{SharedGlyph-y6ZsA_gz.js.map → SharedGlyph-CuDT7OUU.js.map} +1 -1
- package/dist/admin/assets/{StepList-xmD9CPZl.js → StepList-BDO0Q3Wc.js} +2 -2
- package/dist/admin/assets/{StepList-xmD9CPZl.js.map → StepList-BDO0Q3Wc.js.map} +1 -1
- package/dist/admin/assets/Structure-CL_0hVci.js +2 -0
- package/dist/admin/assets/{Structure-DGt-TDk5.js.map → Structure-CL_0hVci.js.map} +1 -1
- package/dist/admin/assets/{SubNavLink-YjjaDN40.js → SubNavLink-C4eSybWd.js} +2 -2
- package/dist/admin/assets/{SubNavLink-YjjaDN40.js.map → SubNavLink-C4eSybWd.js.map} +1 -1
- package/dist/admin/assets/{SuggestAltButton-D1-v_0wB.js → SuggestAltButton-CxYlhwyd.js} +2 -2
- package/dist/admin/assets/{SuggestAltButton-D1-v_0wB.js.map → SuggestAltButton-CxYlhwyd.js.map} +1 -1
- package/dist/admin/assets/{TextLink-DIqr5zkJ.js → TextLink-DzNaAft6.js} +2 -2
- package/dist/admin/assets/{TextLink-DIqr5zkJ.js.map → TextLink-DzNaAft6.js.map} +1 -1
- package/dist/admin/assets/{Thumbnail-cjA7fSWh.js → Thumbnail-DSPArZ9h.js} +2 -2
- package/dist/admin/assets/{Thumbnail-cjA7fSWh.js.map → Thumbnail-DSPArZ9h.js.map} +1 -1
- package/dist/admin/assets/{UnsavedChangesGuard-B57D0278.js → UnsavedChangesGuard-BPOCBD5T.js} +2 -2
- package/dist/admin/assets/{UnsavedChangesGuard-B57D0278.js.map → UnsavedChangesGuard-BPOCBD5T.js.map} +1 -1
- package/dist/admin/assets/{UserAvatar--pMv2i3c.js → UserAvatar-BHNWHDVb.js} +2 -2
- package/dist/admin/assets/{UserAvatar--pMv2i3c.js.map → UserAvatar-BHNWHDVb.js.map} +1 -1
- package/dist/admin/assets/{auth-YVfK3SxF.js → auth-BzCgJtgr.js} +2 -2
- package/dist/admin/assets/{auth-YVfK3SxF.js.map → auth-BzCgJtgr.js.map} +1 -1
- package/dist/admin/assets/{badge-C5oMRtwJ.js → badge-DBoaS0nQ.js} +2 -2
- package/dist/admin/assets/{badge-C5oMRtwJ.js.map → badge-DBoaS0nQ.js.map} +1 -1
- package/dist/admin/assets/{boxes-DRvd25_u.js → boxes-DhN0ctLo.js} +2 -2
- package/dist/admin/assets/{boxes-DRvd25_u.js.map → boxes-DhN0ctLo.js.map} +1 -1
- package/dist/admin/assets/{calendar-clock-VENf4s1R.js → calendar-clock-BEA3tG17.js} +2 -2
- package/dist/admin/assets/{calendar-clock-VENf4s1R.js.map → calendar-clock-BEA3tG17.js.map} +1 -1
- package/dist/admin/assets/{changeSets-CObZV8H2.js → changeSets-C54Ku-X9.js} +2 -2
- package/dist/admin/assets/{changeSets-CObZV8H2.js.map → changeSets-C54Ku-X9.js.map} +1 -1
- package/dist/admin/assets/chevron-left-BeJdUVAX.js +2 -0
- package/dist/admin/assets/{chevron-left-D2DnQyeV.js.map → chevron-left-BeJdUVAX.js.map} +1 -1
- package/dist/admin/assets/{circle-check-jmRQz1Jq.js → circle-check-ktACw37r.js} +2 -2
- package/dist/admin/assets/{circle-check-jmRQz1Jq.js.map → circle-check-ktACw37r.js.map} +1 -1
- package/dist/admin/assets/{clock-DrSTMGjp.js → clock-BKNNASKp.js} +2 -2
- package/dist/admin/assets/{clock-DrSTMGjp.js.map → clock-BKNNASKp.js.map} +1 -1
- package/dist/admin/assets/cn-h5ORT3LK.js +2 -0
- package/dist/admin/assets/cn-h5ORT3LK.js.map +1 -0
- package/dist/admin/assets/coerce-DDQ1vGLx.js +2 -0
- package/dist/admin/assets/{coerce-B4MJTGg1.js.map → coerce-DDQ1vGLx.js.map} +1 -1
- package/dist/admin/assets/{constants-DT4WPUvz.js → constants-DH7oqfO_.js} +2 -2
- package/dist/admin/assets/{constants-DT4WPUvz.js.map → constants-DH7oqfO_.js.map} +1 -1
- package/dist/admin/assets/content-BptqQO8c.js +3 -0
- package/dist/admin/assets/content-BptqQO8c.js.map +1 -0
- package/dist/admin/assets/{contentCounts-DzIvdeXR.js → contentCounts-BpGlmyeZ.js} +2 -2
- package/dist/admin/assets/{contentCounts-DzIvdeXR.js.map → contentCounts-BpGlmyeZ.js.map} +1 -1
- package/dist/admin/assets/{contentTypes-ArLEfM29.js → contentTypes-B_mAlIcH.js} +2 -2
- package/dist/admin/assets/{contentTypes-ArLEfM29.js.map → contentTypes-B_mAlIcH.js.map} +1 -1
- package/dist/admin/assets/{context-4Jl20mYc.js → context-DyyMW7Md.js} +2 -2
- package/dist/admin/assets/{context-4Jl20mYc.js.map → context-DyyMW7Md.js.map} +1 -1
- package/dist/admin/assets/{copy-t6kAFw-O.js → copy-DjzlFY9u.js} +2 -2
- package/dist/admin/assets/{copy-t6kAFw-O.js.map → copy-DjzlFY9u.js.map} +1 -1
- package/dist/admin/assets/{dateTimeLocal-IDUOKulz.js → dateTimeLocal-DFXY779D.js} +2 -2
- package/dist/admin/assets/{dateTimeLocal-IDUOKulz.js.map → dateTimeLocal-DFXY779D.js.map} +1 -1
- package/dist/admin/assets/{develop-DvKYqVeK.js → develop-DJap_z-1.js} +3 -3
- package/dist/admin/assets/{develop-DvKYqVeK.js.map → develop-DJap_z-1.js.map} +1 -1
- package/dist/admin/assets/{dropdown-menu-DPzDthV7.js → dropdown-menu-DGSMTf23.js} +2 -2
- package/dist/admin/assets/{dropdown-menu-DPzDthV7.js.map → dropdown-menu-DGSMTf23.js.map} +1 -1
- package/dist/admin/assets/{ellipsis-DEHUaCkn.js → ellipsis-BMP-j3yO.js} +2 -2
- package/dist/admin/assets/{ellipsis-DEHUaCkn.js.map → ellipsis-BMP-j3yO.js.map} +1 -1
- package/dist/admin/assets/{external-link-B8UFREQ_.js → external-link-DzOkt97S.js} +2 -2
- package/dist/admin/assets/{external-link-B8UFREQ_.js.map → external-link-DzOkt97S.js.map} +1 -1
- package/dist/admin/assets/{fileRoute-sJvv4Ipn.js → fileRoute-CG0Dufvt.js} +2 -2
- package/dist/admin/assets/{fileRoute-sJvv4Ipn.js.map → fileRoute-CG0Dufvt.js.map} +1 -1
- package/dist/admin/assets/{folder-plus-iDg1hhew.js → folder-plus-C-LhI4a2.js} +2 -2
- package/dist/admin/assets/{folder-plus-iDg1hhew.js.map → folder-plus-C-LhI4a2.js.map} +1 -1
- package/dist/admin/assets/{followPlural-tOh6gDgT.js → followPlural-D-8kzFOe.js} +2 -2
- package/dist/admin/assets/{followPlural-tOh6gDgT.js.map → followPlural-D-8kzFOe.js.map} +1 -1
- package/dist/admin/assets/{globe-TooNSp9V.js → globe-DOoGBy23.js} +2 -2
- package/dist/admin/assets/{globe-TooNSp9V.js.map → globe-DOoGBy23.js.map} +1 -1
- package/dist/admin/assets/{image-CXZXXH58.js → image-D9p_gGE2.js} +2 -2
- package/dist/admin/assets/{image-CXZXXH58.js.map → image-D9p_gGE2.js.map} +1 -1
- package/dist/admin/assets/{image-off-cxva5G-Y.js → image-off-G0M2Nh1I.js} +2 -2
- package/dist/admin/assets/{image-off-cxva5G-Y.js.map → image-off-G0M2Nh1I.js.map} +1 -1
- package/dist/admin/assets/{inbox-B8c9Kj_z.js → inbox-CMzYVMZo.js} +2 -2
- package/dist/admin/assets/{inbox-B8c9Kj_z.js.map → inbox-CMzYVMZo.js.map} +1 -1
- package/dist/admin/assets/{inbox-nfR2K7f6.js → inbox-XaM-nvsM.js} +2 -2
- package/dist/admin/assets/{inbox-nfR2K7f6.js.map → inbox-XaM-nvsM.js.map} +1 -1
- package/dist/admin/assets/index-6iVBpUhu.css +2 -0
- package/dist/admin/assets/index-DHmfMpqz.js +4 -0
- package/dist/admin/assets/index-DHmfMpqz.js.map +1 -0
- package/dist/admin/assets/{key-round-CFJ61iCd.js → key-round-HBvMrmMo.js} +2 -2
- package/dist/admin/assets/{key-round-CFJ61iCd.js.map → key-round-HBvMrmMo.js.map} +1 -1
- package/dist/admin/assets/{languages-eh7U4anI.js → languages-BOv0jYhe.js} +2 -2
- package/dist/admin/assets/{languages-eh7U4anI.js.map → languages-BOv0jYhe.js.map} +1 -1
- package/dist/admin/assets/{layers-mGfmMsKE.js → layers-CkZyCaeb.js} +2 -2
- package/dist/admin/assets/{layers-mGfmMsKE.js.map → layers-CkZyCaeb.js.map} +1 -1
- package/dist/admin/assets/{link-2-off-DbZzRN_w.js → link-2-off-UUkSmPIL.js} +2 -2
- package/dist/admin/assets/{link-2-off-DbZzRN_w.js.map → link-2-off-UUkSmPIL.js.map} +1 -1
- package/dist/admin/assets/{link-b2pFaN-A.js → link-Bvqcg7db.js} +2 -2
- package/dist/admin/assets/{link-b2pFaN-A.js.map → link-Bvqcg7db.js.map} +1 -1
- package/dist/admin/assets/{locales-oBD0q1pN.js → locales-DbrcdhZi.js} +2 -2
- package/dist/admin/assets/{locales-oBD0q1pN.js.map → locales-DbrcdhZi.js.map} +1 -1
- package/dist/admin/assets/{media-BzivlEh2.js → media-CO0HSS3b.js} +2 -2
- package/dist/admin/assets/{media-BzivlEh2.js.map → media-CO0HSS3b.js.map} +1 -1
- package/dist/admin/assets/{media-5ks_0Rre.js → media-ugEyLgwN.js} +2 -2
- package/dist/admin/assets/{media-5ks_0Rre.js.map → media-ugEyLgwN.js.map} +1 -1
- package/dist/admin/assets/{network-Cj04CpFi.js → network-BfDaUb7D.js} +2 -2
- package/dist/admin/assets/{network-Cj04CpFi.js.map → network-BfDaUb7D.js.map} +1 -1
- package/dist/admin/assets/{pencil-C7eD5mlZ.js → pencil-BLNGNJmL.js} +2 -2
- package/dist/admin/assets/{pencil-C7eD5mlZ.js.map → pencil-BLNGNJmL.js.map} +1 -1
- package/dist/admin/assets/{plus-BDZHQBlU.js → plus-BXMBYPoB.js} +2 -2
- package/dist/admin/assets/{plus-BDZHQBlU.js.map → plus-BXMBYPoB.js.map} +1 -1
- package/dist/admin/assets/{preload-helper-CJNJ4S3k.js → preload-helper-DEbJbZwX.js} +2 -2
- package/dist/admin/assets/{preload-helper-CJNJ4S3k.js.map → preload-helper-DEbJbZwX.js.map} +1 -1
- package/dist/admin/assets/{publishing-ChHkrwvr.js → publishing-DKrATBaj.js} +2 -2
- package/dist/admin/assets/{publishing-ChHkrwvr.js.map → publishing-DKrATBaj.js.map} +1 -1
- package/dist/admin/assets/{radio-group-DSK5LPaM.js → radio-group-BIhT_uEK.js} +2 -2
- package/dist/admin/assets/{radio-group-DSK5LPaM.js.map → radio-group-BIhT_uEK.js.map} +1 -1
- package/dist/admin/assets/{rotate-ccw-DCWwb4Ga.js → rotate-ccw-DqbffhiC.js} +2 -2
- package/dist/admin/assets/{rotate-ccw-DCWwb4Ga.js.map → rotate-ccw-DqbffhiC.js.map} +1 -1
- package/dist/admin/assets/{schedules-DXrBSypK.js → schedules-CETl2eLe.js} +2 -2
- package/dist/admin/assets/{schedules-DXrBSypK.js.map → schedules-CETl2eLe.js.map} +1 -1
- package/dist/admin/assets/{schema-B7L9OJrX.js → schema-CWHuez0q.js} +2 -2
- package/dist/admin/assets/{schema-B7L9OJrX.js.map → schema-CWHuez0q.js.map} +1 -1
- package/dist/admin/assets/{scroll-text-BLThe4Ki.js → scroll-text-DlcDEi2k.js} +2 -2
- package/dist/admin/assets/{scroll-text-BLThe4Ki.js.map → scroll-text-DlcDEi2k.js.map} +1 -1
- package/dist/admin/assets/{search-CcJQqtRw.js → search-Dy2dtwyR.js} +2 -2
- package/dist/admin/assets/{search-CcJQqtRw.js.map → search-Dy2dtwyR.js.map} +1 -1
- package/dist/admin/assets/{searchSchemas-BdwAFaVO.js → searchSchemas-Cz4P1iku.js} +2 -2
- package/dist/admin/assets/{searchSchemas-BdwAFaVO.js.map → searchSchemas-Cz4P1iku.js.map} +1 -1
- package/dist/admin/assets/{sections-iNOzo7pL.js → sections-BfG6DTFr.js} +2 -2
- package/dist/admin/assets/{sections-iNOzo7pL.js.map → sections-BfG6DTFr.js.map} +1 -1
- package/dist/admin/assets/{sections-TIN_Nl1b.js → sections-EgXyXN3-.js} +2 -2
- package/dist/admin/assets/{sections-TIN_Nl1b.js.map → sections-EgXyXN3-.js.map} +1 -1
- package/dist/admin/assets/{select-DyD7qIkJ.js → select--mePTdz8.js} +2 -2
- package/dist/admin/assets/{select-DyD7qIkJ.js.map → select--mePTdz8.js.map} +1 -1
- package/dist/admin/assets/{send-CbP0Rc9_.js → send-DVgq5Iwg.js} +2 -2
- package/dist/admin/assets/{send-CbP0Rc9_.js.map → send-DVgq5Iwg.js.map} +1 -1
- package/dist/admin/assets/{seo-uMm2fGPB.js → seo-Zhb62Ojz.js} +2 -2
- package/dist/admin/assets/{seo-uMm2fGPB.js.map → seo-Zhb62Ojz.js.map} +1 -1
- package/dist/admin/assets/{settings-CJVORrIV.js → settings-Mscp6tN5.js} +2 -2
- package/dist/admin/assets/{settings-CJVORrIV.js.map → settings-Mscp6tN5.js.map} +1 -1
- package/dist/admin/assets/{skeleton-B5GJgv7y.js → skeleton-DJVukcn6.js} +2 -2
- package/dist/admin/assets/skeleton-DJVukcn6.js.map +1 -0
- package/dist/admin/assets/{snapshots-DkyyrWX3.js → snapshots-BpLhILlt.js} +2 -2
- package/dist/admin/assets/{snapshots-DkyyrWX3.js.map → snapshots-BpLhILlt.js.map} +1 -1
- package/dist/admin/assets/{sparkles-D88gf3vX.js → sparkles-Dd6S_roX.js} +2 -2
- package/dist/admin/assets/{sparkles-D88gf3vX.js.map → sparkles-Dd6S_roX.js.map} +1 -1
- package/dist/admin/assets/src-Be3Ds5Dc.js +4 -0
- package/dist/admin/assets/src-Be3Ds5Dc.js.map +1 -0
- package/dist/admin/assets/{stableId-DlNKh3HM.js → stableId-DFVM13gJ.js} +2 -2
- package/dist/admin/assets/{stableId-DlNKh3HM.js.map → stableId-DFVM13gJ.js.map} +1 -1
- package/dist/admin/assets/{store-jUWyOXDG.js → store-BP-xStwU.js} +2 -2
- package/dist/admin/assets/{store-jUWyOXDG.js.map → store-BP-xStwU.js.map} +1 -1
- package/dist/admin/assets/{switch-DbIrjP3h.js → switch-skVypg5O.js} +2 -2
- package/dist/admin/assets/{switch-DbIrjP3h.js.map → switch-skVypg5O.js.map} +1 -1
- package/dist/admin/assets/{table-DQ5ILlSh.js → table-BMbbRUK9.js} +2 -2
- package/dist/admin/assets/{table-DQ5ILlSh.js.map → table-BMbbRUK9.js.map} +1 -1
- package/dist/admin/assets/tabs-C1lgOg1B.js +5 -0
- package/dist/admin/assets/tabs-C1lgOg1B.js.map +1 -0
- package/dist/admin/assets/{textarea-FwSvwmyT.js → textarea-CffBBxoQ.js} +2 -2
- package/dist/admin/assets/{textarea-FwSvwmyT.js.map → textarea-CffBBxoQ.js.map} +1 -1
- package/dist/admin/assets/{theme-C0Tv6M38.js → theme-RHTVnR9j.js} +2 -2
- package/dist/admin/assets/{theme-C0Tv6M38.js.map → theme-RHTVnR9j.js.map} +1 -1
- package/dist/admin/assets/{titles-uL13bpi8.js → titles-DWiPmNvn.js} +2 -2
- package/dist/admin/assets/{titles-uL13bpi8.js.map → titles-DWiPmNvn.js.map} +1 -1
- package/dist/admin/assets/{tokens-C-20gLAT.js → tokens-BqyeN1D-.js} +2 -2
- package/dist/admin/assets/{tokens-C-20gLAT.js.map → tokens-BqyeN1D-.js.map} +1 -1
- package/dist/admin/assets/{tooltip-BK5FqmJ0.js → tooltip-BfSF6EyR.js} +2 -2
- package/dist/admin/assets/{tooltip-BK5FqmJ0.js.map → tooltip-BfSF6EyR.js.map} +1 -1
- package/dist/admin/assets/{undo-2-CLy2zklL.js → undo-2-p4YlNhBp.js} +2 -2
- package/dist/admin/assets/{undo-2-CLy2zklL.js.map → undo-2-p4YlNhBp.js.map} +1 -1
- package/dist/admin/assets/{useAuditLabels-BJF7M5RY.js → useAuditLabels-DV5gcaaG.js} +2 -2
- package/dist/admin/assets/{useAuditLabels-BJF7M5RY.js.map → useAuditLabels-DV5gcaaG.js.map} +1 -1
- package/dist/admin/assets/{useConfirmTarget-BUvlrGSW.js → useConfirmTarget-DCvnxNVg.js} +2 -2
- package/dist/admin/assets/{useConfirmTarget-BUvlrGSW.js.map → useConfirmTarget-DCvnxNVg.js.map} +1 -1
- package/dist/admin/assets/{useContentSchema-BCdLYsKa.js → useContentSchema-z6tNif86.js} +2 -2
- package/dist/admin/assets/{useContentSchema-BCdLYsKa.js.map → useContentSchema-z6tNif86.js.map} +1 -1
- package/dist/admin/assets/{useCursorPager-CzB6NDOB.js → useCursorPager-CQGX41_L.js} +2 -2
- package/dist/admin/assets/{useCursorPager-CzB6NDOB.js.map → useCursorPager-CQGX41_L.js.map} +1 -1
- package/dist/admin/assets/{useDiscardGuard-CGFgC3xY.js → useDiscardGuard-Dhbif7VL.js} +2 -2
- package/dist/admin/assets/{useDiscardGuard-CGFgC3xY.js.map → useDiscardGuard-Dhbif7VL.js.map} +1 -1
- package/dist/admin/assets/{useMediaPickerDialog-BOkGEyG7.js → useMediaPickerDialog-D-5uKsMG.js} +2 -2
- package/dist/admin/assets/{useMediaPickerDialog-BOkGEyG7.js.map → useMediaPickerDialog-D-5uKsMG.js.map} +1 -1
- package/dist/admin/assets/{useMediaUploader-D1ouV8jc.js → useMediaUploader-BtLoimmQ.js} +2 -2
- package/dist/admin/assets/{useMediaUploader-D1ouV8jc.js.map → useMediaUploader-BtLoimmQ.js.map} +1 -1
- package/dist/admin/assets/usePaletteItems-D3PZsW0Q.js +2 -0
- package/dist/admin/assets/usePaletteItems-D3PZsW0Q.js.map +1 -0
- package/dist/admin/assets/{usePlaces-6iTN15Xy.js → usePlaces-Cj5PljTy.js} +2 -2
- package/dist/admin/assets/{usePlaces-6iTN15Xy.js.map → usePlaces-Cj5PljTy.js.map} +1 -1
- package/dist/admin/assets/{useQueries-CYfcxI0Q.js → useQueries-CeDzli4Z.js} +2 -2
- package/dist/admin/assets/{useQueries-CYfcxI0Q.js.map → useQueries-CeDzli4Z.js.map} +1 -1
- package/dist/admin/assets/{useResolvedScheme-D0moXjaP.js → useResolvedScheme-DHD-zisP.js} +2 -2
- package/dist/admin/assets/{useResolvedScheme-D0moXjaP.js.map → useResolvedScheme-DHD-zisP.js.map} +1 -1
- package/dist/admin/assets/{useSchemaScopeAccess-WQKmj8_3.js → useSchemaScopeAccess-BNeVslcv.js} +2 -2
- package/dist/admin/assets/{useSchemaScopeAccess-WQKmj8_3.js.map → useSchemaScopeAccess-BNeVslcv.js.map} +1 -1
- package/dist/admin/assets/{users-BgTNDPXx.js → users-BRefbzuS.js} +2 -2
- package/dist/admin/assets/{users-BgTNDPXx.js.map → users-BRefbzuS.js.map} +1 -1
- package/dist/admin/assets/{users-B01EH47o.js → users-CppI8ctO.js} +2 -2
- package/dist/admin/assets/{users-B01EH47o.js.map → users-CppI8ctO.js.map} +1 -1
- package/dist/admin/assets/{zod-CS0EvbwG.js → zod-Dcwk-m8X.js} +2 -2
- package/dist/admin/assets/{zod-CS0EvbwG.js.map → zod-Dcwk-m8X.js.map} +1 -1
- package/dist/admin/index.html +57 -57
- package/dist/cli.js +110 -18
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{public-BSbOGbK-.d.ts → public-DYR4mtVQ.d.ts} +3 -1
- package/dist/s3Adapter-C8AgFVYw.js +125 -0
- package/dist/s3Adapter-C8AgFVYw.js.map +1 -0
- package/dist/{worker-i1rY2TIZ.js → worker-jz_0yAmS.js} +691 -458
- package/dist/worker-jz_0yAmS.js.map +1 -0
- package/package.json +8 -5
- package/dist/admin/assets/Builder-C11yUgu9.js +0 -2
- package/dist/admin/assets/Builder-C11yUgu9.js.map +0 -1
- package/dist/admin/assets/Structure-DGt-TDk5.js +0 -2
- package/dist/admin/assets/chevron-left-D2DnQyeV.js +0 -2
- package/dist/admin/assets/cn-CL1YHRrS.js +0 -2
- package/dist/admin/assets/cn-CL1YHRrS.js.map +0 -1
- package/dist/admin/assets/coerce-B4MJTGg1.js +0 -2
- package/dist/admin/assets/content-HvisCB5m.js +0 -3
- package/dist/admin/assets/content-HvisCB5m.js.map +0 -1
- package/dist/admin/assets/index-Bbb2ER3l.css +0 -2
- package/dist/admin/assets/index-C6FrF34G.js +0 -4
- package/dist/admin/assets/index-C6FrF34G.js.map +0 -1
- package/dist/admin/assets/skeleton-B5GJgv7y.js.map +0 -1
- package/dist/admin/assets/src-B2qcqjNM.js +0 -4
- package/dist/admin/assets/src-B2qcqjNM.js.map +0 -1
- package/dist/admin/assets/tabs-BJhfL-lw.js +0 -5
- package/dist/admin/assets/tabs-BJhfL-lw.js.map +0 -1
- package/dist/admin/assets/usePaletteItems-neKzBlys.js +0 -2
- package/dist/admin/assets/usePaletteItems-neKzBlys.js.map +0 -1
- package/dist/worker-i1rY2TIZ.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{H as n,P as r,l as i}from"./cn-
|
|
2
|
-
//# sourceMappingURL=contentCounts-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{H as n,P as r,l as i}from"./cn-h5ORT3LK.js";var a=e(t(),1),o=6e4,s=()=>{let e=n({queryKey:r.contentCounts,queryFn:()=>i.contentCounts.list(),staleTime:o,meta:{silent:!0}});return(0,a.useMemo)(()=>e.data?new Map(e.data.counts.map(e=>[e.modelId,e.total])):void 0,[e.data])};export{s as t};
|
|
2
|
+
//# sourceMappingURL=contentCounts-BpGlmyeZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentCounts-
|
|
1
|
+
{"version":3,"file":"contentCounts-BpGlmyeZ.js","names":["useMemo","__toESM","useQuery","queryKeys","adminApi","import_react","require_react","COUNTS_STALE_MS","useContentCounts","query","count"],"sources":["../../src/api/contentCounts.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { adminApi } from './client';\nimport { queryKeys } from './queryKeys';\n\n/** The server caches counts for 60s; asking more often would only return the same numbers. */\nconst COUNTS_STALE_MS = 60_000;\n\n/** Entries per model (readable models only), keyed by model ID; undefined while loading or on failure. */\nexport const useContentCounts = () => {\n const query = useQuery({\n queryKey: queryKeys.contentCounts,\n queryFn: () => adminApi.contentCounts.list(),\n staleTime: COUNTS_STALE_MS,\n meta: { silent: true },\n });\n return useMemo(\n () =>\n query.data\n ? new Map(query.data.counts.map((count) => [count.modelId, count.total] as const))\n : undefined,\n [query.data],\n );\n};\n"],"mappings":"wJAMMO,EAAkB,IAGXC,MAAyB,CACpC,IAAMC,EAAQP,EAAS,CACrB,SAAUC,EAAU,cACpB,YAAeC,EAAS,cAAc,KAAK,EAC3C,UAAWG,EACX,KAAM,CAAE,OAAQ,EAAK,CACvB,CAAC,EACD,OAAA,EAAOP,EAAAA,QAAAA,KAEHS,EAAM,KACF,IAAI,IAAIA,EAAM,KAAK,OAAO,IAAK,GAAU,CAACC,EAAM,QAASA,EAAM,KAAK,CAAU,CAAC,EAC/E,IAAA,GACN,CAACD,EAAM,IAAI,CACb,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{j as r}from"./cn-
|
|
2
|
-
//# sourceMappingURL=contentTypes-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{j as r}from"./cn-h5ORT3LK.js";import{C as i,T as a,o,x as s}from"./auth-BzCgJtgr.js";import{_ as c,a as l,i as u,j as d,o as f,t as p}from"./badge-DBoaS0nQ.js";import{t as m}from"./fileRoute-CG0Dufvt.js";import{i as h}from"./skeleton-DJVukcn6.js";import{n as g,t as _}from"./Form-DB03drS9.js";import{a as v,d as y}from"./constants-DH7oqfO_.js";import{t as b}from"./Builder-CnEtRudv.js";import{t as x}from"./plus-BXMBYPoB.js";import{u as S}from"./changeSets-C54Ku-X9.js";import{t as C}from"./HintedLabel-BGidukgy.js";import{s as w}from"./schema-CWHuez0q.js";import{t as T}from"./QueryView-C2d392ly.js";import{t as E}from"./textarea-CffBBxoQ.js";import{c as D,g as O,i as k,r as A,t as j}from"./AssistError-D_vY2CO0.js";import{t as M}from"./Panel-DDky5_x9.js";import{a as N,i as P}from"./followPlural-D-8kzFOe.js";var F=e(n(),1),I=()=>{let{t:e}=r(),t=w(`component`),n=o(`schema.create`),{locked:i,reason:a}=N(),c=n&&!i?(0,F.jsx)(h,{asChild:!0,children:(0,F.jsxs)(s,{to:`/develop/components/new`,children:[(0,F.jsx)(x,{"aria-hidden":`true`}),e(`contentTypes.newComponentTitle`)]})}):null;return(0,F.jsxs)(l,{children:[(0,F.jsx)(u,{title:e(`shell.nav.components`),actions:c}),i?(0,F.jsx)(P,{reason:a}):null,(0,F.jsx)(T,{query:t,isEmpty:e=>e.length===0,empty:(0,F.jsx)(f,{icon:y,title:e(`contentTypes.noComponents`),description:e(`models.emptyDescription`),action:c}),children:e=>(0,F.jsx)(g,{items:e})})]})},L=()=>{let{componentId:e}=d({from:`/app/develop/components/$componentId`});return(0,F.jsx)(b,{category:`component`,id:e})},R=[`component`],z=()=>{let{t:e}=r();return(0,F.jsx)(_,{title:e(`contentTypes.newComponentTitle`),kinds:R,back:i({to:`/develop/components`}),backLabel:e(`shell.nav.components`)})},B=e(t(),1),V=()=>{let{t:e}=r(),t=a(),[n,i]=(0,B.useState)(``),[o,s]=(0,B.useState)(null),c=D(),l=S();return{description:n,setDescription:i,proposal:o,run:()=>{n.trim()!==``&&(s(null),l.reset(),c.mutate({description:n.trim()},{onSuccess:s}))},discard:()=>{s(null),c.reset(),l.reset()},addToChangeSet:()=>{o&&l.mutate({definitions:o.definitions,newSetTitle:e(`assist.describe.setTitle`,{model:o.model})},{onSuccess:e=>void t({to:`/changes/$changeSetId`,params:{changeSetId:e}})})},proposing:c.isPending,proposeError:c.error,adding:l.isPending,addError:l.error}},H=({proposal:e})=>{let{t}=r();return(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t(`assist.describe.proposedBy`,{model:e.model})}),(0,F.jsx)(`ul`,{"aria-label":t(`assist.describe.proposalLabel`),className:`space-y-3`,children:e.definitions.map(e=>(0,F.jsxs)(`li`,{className:`rounded-lg border p-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(`span`,{className:`text-sm font-semibold`,children:e.label}),(0,F.jsx)(p,{variant:`secondary`,children:t(v[e.kind])}),(0,F.jsx)(`span`,{className:`font-mono text-meta text-muted-foreground`,children:e.apiKey})]}),(0,F.jsx)(`ul`,{className:`mt-2 space-y-0.5 text-meta text-muted-foreground`,children:e.fields.map(e=>(0,F.jsxs)(`li`,{children:[(0,F.jsx)(`span`,{className:`text-foreground`,children:e.label}),` `,t(`assist.describe.fieldType`,{type:t(`models.dataTypes.${e.type}.name`)})]},e.id))})]},e.id))})]})},U=()=>{let{t:e}=r(),t=(0,B.useId)(),n=k(),{locked:i}=N(),a=V();return n?(0,F.jsx)(M,{title:e(`assist.describe.title`),titleAs:`h2`,children:(0,F.jsx)(`div`,{className:`space-y-3`,children:a.proposal?(0,F.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),a.addToChangeSet()},children:[(0,F.jsx)(H,{proposal:a.proposal}),(0,F.jsx)(j,{error:a.addError}),(0,F.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[(0,F.jsx)(h,{type:`button`,variant:`outline`,onClick:a.discard,children:e(`assist.discard`)}),(0,F.jsx)(c,{pending:a.adding,pendingLabel:e(`common.saving`),disabled:i,children:e(`assist.describe.add`)})]})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(C,{htmlFor:`${t}-description`,label:e(`assist.describe.label`),hint:e(`assist.describe.hint`)}),(0,F.jsx)(E,{id:`${t}-description`,value:a.description,rows:4,maxLength:O,placeholder:e(`assist.describe.placeholder`),disabled:a.proposing,onChange:e=>a.setDescription(e.target.value)})]}),(0,F.jsx)(j,{error:a.proposeError}),(0,F.jsx)(`div`,{className:`flex justify-end`,children:(0,F.jsx)(A,{variant:`outline`,size:`default`,pending:a.proposing,pendingLabel:e(`assist.working`),disabled:a.description.trim()===``||i,onClick:a.run,children:e(`assist.describe.run`)})})]})})}):null},W=[`collection`,`singleton`],G={newContentType:m(`/app/content/new`)({component:()=>{let{t:e}=r();return(0,F.jsx)(_,{title:e(`contentTypes.newTitle`),kinds:W,back:i({to:`/content`}),backLabel:e(`content.title`),intro:(0,F.jsx)(U,{})})}}),components:m(`/app/develop/components`)({component:I}),newComponent:m(`/app/develop/components/new`)({component:z}),component:m(`/app/develop/components/$componentId`)({component:L})};export{G as contentTypesLazyRoutes};
|
|
2
|
+
//# sourceMappingURL=contentTypes-B_mAlIcH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentTypes-ArLEfM29.js","names":["DefinitionBuilder","KINDS","New","useState","useId","_Fragment","NewContentType","NewComponent","ComponentBuilder","__toESM","require_jsx_runtime","useTranslation","linkOptions","useNavigate","Link","SubmitButton","Page","PageHeader","useParams","EmptyState","Badge","createLazyRoute","Button","List","Form","KIND_LABEL_KEYS","Blocks","Builder$1","Plus","useSaveNewDefinitionsToChangeSet","HintedLabel","useDefinitions","QueryView","Textarea","useProposeSchema","SCHEMA_DESCRIPTION_MAX","useAssistEnabled","AssistButton","AssistError","Panel","useSchemaLock","LockNotice","import_jsx_runtime","Components","components","canCreate","useHasGlobalPermission","createAction","locked","t","data","Builder","componentId","KINDS$1","New$1","import_react","require_react","useDescribeSchema","navigate","description","setDescription","proposal","setProposal","propose","save","Proposal","definition","field","Describe","id","enabled","describe","event","KINDS","contentTypesLazyRoutes"],"sources":["../../src/features/Components/index.tsx","../../src/features/Components/Builder/index.tsx","../../src/features/Components/New/index.tsx","../../src/features/Content/New/hooks/useDescribeSchema.ts","../../src/features/Content/New/Describe/Proposal/index.tsx","../../src/features/Content/New/Describe/index.tsx","../../src/features/Content/New/index.tsx","../../src/app/lazyRoutes/contentTypes.tsx"],"sourcesContent":["import { Link } from '@tanstack/react-router';\nimport { Blocks, Plus } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport { useDefinitions } from '@/api/schema';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Page } from '@/components/Page';\nimport { PageHeader } from '@/components/PageHeader';\nimport { QueryView } from '@/components/QueryView';\nimport { Button } from '@/components/ui/button';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { List } from '@/features/Models/List';\nimport { LockNotice } from '@/features/Models/LockNotice';\n\n/** `/develop/components`: reusable field groups that content types embed (Develop → Components). */\nexport const Components = () => {\n const { t } = useTranslation();\n const components = useDefinitions('component');\n const canCreate = useHasGlobalPermission('schema.create');\n const { locked, reason } = useSchemaLock();\n const createAction =\n canCreate && !locked ? (\n <Button asChild>\n <Link to=\"/develop/components/new\">\n <Plus aria-hidden=\"true\" />\n {t('contentTypes.newComponentTitle')}\n </Link>\n </Button>\n ) : null;\n return (\n <Page>\n <PageHeader title={t('shell.nav.components')} actions={createAction} />\n {locked ? <LockNotice reason={reason} /> : null}\n <QueryView\n query={components}\n isEmpty={(data) => data.length === 0}\n empty={\n <EmptyState\n icon={Blocks}\n title={t('contentTypes.noComponents')}\n description={t('models.emptyDescription')}\n action={createAction}\n />\n }\n >\n {(data) => <List items={data} />}\n </QueryView>\n </Page>\n );\n};\n","import { useParams } from '@tanstack/react-router';\nimport { Builder as DefinitionBuilder } from '@/features/Models/Builder';\n\n/** `/develop/components/:componentId`: a component in the shared definition builder. */\nexport const Builder = () => {\n const { componentId } = useParams({ from: '/app/develop/components/$componentId' });\n return <DefinitionBuilder category=\"component\" id={componentId} />;\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Form } from '@/features/Content/New/Form';\n\nconst KINDS = ['component'] as const;\n\n/** `/develop/components/new`: a reusable component (Develop → Components). */\nexport const New = () => {\n const { t } = useTranslation();\n return (\n <Form\n title={t('contentTypes.newComponentTitle')}\n kinds={KINDS}\n back={linkOptions({ to: '/develop/components' })}\n backLabel={t('shell.nav.components')}\n />\n );\n};\n","import type { SchemaDraftResult } from '@shapio/client';\nimport { useNavigate } from '@tanstack/react-router';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useProposeSchema } from '@/api/assist';\nimport { useSaveNewDefinitionsToChangeSet } from '@/api/changeSets';\n\n/**\n * \"Describe it\": a description → proposed definitions (nothing written) → saved as schema drafts into a\n * change set, whose review opens next. Shipping them stays a person's decision there.\n */\nexport const useDescribeSchema = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const [description, setDescription] = useState('');\n const [proposal, setProposal] = useState<SchemaDraftResult | null>(null);\n const propose = useProposeSchema();\n const save = useSaveNewDefinitionsToChangeSet();\n const run = () => {\n if (description.trim() === '') {\n return;\n }\n setProposal(null);\n save.reset();\n propose.mutate({ description: description.trim() }, { onSuccess: setProposal });\n };\n const discard = () => {\n setProposal(null);\n propose.reset();\n save.reset();\n };\n const addToChangeSet = () => {\n if (!proposal) {\n return;\n }\n save.mutate(\n {\n definitions: proposal.definitions,\n newSetTitle: t('assist.describe.setTitle', { model: proposal.model }),\n },\n {\n onSuccess: (changeSetId) => void navigate({ to: '/changes/$changeSetId', params: { changeSetId } }),\n },\n );\n };\n return {\n description,\n setDescription,\n proposal,\n run,\n discard,\n addToChangeSet,\n proposing: propose.isPending,\n proposeError: propose.error,\n adding: save.isPending,\n addError: save.error,\n };\n};\n","import type { SchemaDraftResult } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '@/components/ui/badge';\nimport { KIND_LABEL_KEYS } from '@/features/Models/constants';\n\ntype ProposalProps = { proposal: SchemaDraftResult };\n\n/** The proposed definitions at a glance: name, kind, API ID and fields, before they go into a change set. */\nexport const Proposal = ({ proposal }: ProposalProps) => {\n const { t } = useTranslation();\n return (\n <div className=\"space-y-3\">\n <p className=\"text-meta text-muted-foreground\">\n {t('assist.describe.proposedBy', { model: proposal.model })}\n </p>\n <ul aria-label={t('assist.describe.proposalLabel')} className=\"space-y-3\">\n {proposal.definitions.map((definition) => (\n <li key={definition.id} className=\"rounded-lg border p-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold\">{definition.label}</span>\n <Badge variant=\"secondary\">{t(KIND_LABEL_KEYS[definition.kind])}</Badge>\n <span className=\"font-mono text-meta text-muted-foreground\">{definition.apiKey}</span>\n </div>\n <ul className=\"mt-2 space-y-0.5 text-meta text-muted-foreground\">\n {definition.fields.map((field) => (\n <li key={field.id}>\n <span className=\"text-foreground\">{field.label}</span>{' '}\n {t('assist.describe.fieldType', { type: t(`models.dataTypes.${field.type}.name`) })}\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n","import { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAssistEnabled } from '@/api/assist';\nimport { AssistButton } from '@/components/AssistButton';\nimport { AssistError } from '@/components/AssistError';\nimport { HintedLabel } from '@/components/HintedLabel';\nimport { Panel } from '@/components/Panel';\nimport { SubmitButton } from '@/components/SubmitButton';\nimport { Button } from '@/components/ui/button';\nimport { Textarea } from '@/components/ui/textarea';\nimport { SCHEMA_DESCRIPTION_MAX } from '@/constants/assist';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { useDescribeSchema } from '../hooks/useDescribeSchema';\nimport { Proposal } from './Proposal';\n\n/** \"Describe it\" above the new content type form: a model proposes the types, a change set holds them. */\nexport const Describe = () => {\n const { t } = useTranslation();\n const id = useId();\n const enabled = useAssistEnabled();\n const { locked } = useSchemaLock();\n const describe = useDescribeSchema();\n if (!enabled) {\n return null;\n }\n return (\n <Panel title={t('assist.describe.title')} titleAs=\"h2\">\n <div className=\"space-y-3\">\n {describe.proposal ? (\n <form\n className=\"space-y-3\"\n onSubmit={(event) => {\n event.preventDefault();\n describe.addToChangeSet();\n }}\n >\n <Proposal proposal={describe.proposal} />\n <AssistError error={describe.addError} />\n <div className=\"flex flex-wrap justify-end gap-2\">\n <Button type=\"button\" variant=\"outline\" onClick={describe.discard}>\n {t('assist.discard')}\n </Button>\n <SubmitButton pending={describe.adding} pendingLabel={t('common.saving')} disabled={locked}>\n {t('assist.describe.add')}\n </SubmitButton>\n </div>\n </form>\n ) : (\n <>\n <div className=\"space-y-2\">\n <HintedLabel\n htmlFor={`${id}-description`}\n label={t('assist.describe.label')}\n hint={t('assist.describe.hint')}\n />\n <Textarea\n id={`${id}-description`}\n value={describe.description}\n rows={4}\n maxLength={SCHEMA_DESCRIPTION_MAX}\n placeholder={t('assist.describe.placeholder')}\n disabled={describe.proposing}\n onChange={(event) => describe.setDescription(event.target.value)}\n />\n </div>\n <AssistError error={describe.proposeError} />\n <div className=\"flex justify-end\">\n <AssistButton\n variant=\"outline\"\n size=\"default\"\n pending={describe.proposing}\n pendingLabel={t('assist.working')}\n disabled={describe.description.trim() === '' || locked}\n onClick={describe.run}\n >\n {t('assist.describe.run')}\n </AssistButton>\n </div>\n </>\n )}\n </div>\n </Panel>\n );\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Describe } from './Describe';\nimport { Form } from './Form';\n\nconst KINDS = ['collection', 'singleton'] as const;\n\n/** `/content/new`: a new content type (a place for editors), live as soon as it is created. */\nexport const New = () => {\n const { t } = useTranslation();\n return (\n <Form\n title={t('contentTypes.newTitle')}\n kinds={KINDS}\n back={linkOptions({ to: '/content' })}\n backLabel={t('content.title')}\n intro={<Describe />}\n />\n );\n};\n","import { createLazyRoute } from '@tanstack/react-router';\nimport { Components } from '@/features/Components';\nimport { Builder as ComponentBuilder } from '@/features/Components/Builder';\nimport { New as NewComponent } from '@/features/Components/New';\nimport { New as NewContentType } from '@/features/Content/New';\n\n/** Creating content types and components, and Develop → Components (with @shapio/schema's validators). */\nexport const contentTypesLazyRoutes = {\n newContentType: createLazyRoute('/app/content/new')({ component: NewContentType }),\n components: createLazyRoute('/app/develop/components')({ component: Components }),\n newComponent: createLazyRoute('/app/develop/components/new')({ component: NewComponent }),\n component: createLazyRoute('/app/develop/components/$componentId')({ component: ComponentBuilder }),\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contentTypes-B_mAlIcH.js","names":["DefinitionBuilder","KINDS","New","useState","useId","_Fragment","NewContentType","NewComponent","ComponentBuilder","__toESM","require_jsx_runtime","useTranslation","linkOptions","useNavigate","Link","SubmitButton","Page","PageHeader","useParams","EmptyState","Badge","createLazyRoute","Button","List","Form","KIND_LABEL_KEYS","Blocks","Builder$1","Plus","useSaveNewDefinitionsToChangeSet","HintedLabel","useDefinitions","QueryView","Textarea","useProposeSchema","SCHEMA_DESCRIPTION_MAX","useAssistEnabled","AssistButton","AssistError","Panel","useSchemaLock","LockNotice","import_jsx_runtime","Components","components","canCreate","useHasGlobalPermission","createAction","locked","t","data","Builder","componentId","KINDS$1","New$1","import_react","require_react","useDescribeSchema","navigate","description","setDescription","proposal","setProposal","propose","save","Proposal","definition","field","Describe","id","enabled","describe","event","KINDS","contentTypesLazyRoutes"],"sources":["../../src/features/Components/index.tsx","../../src/features/Components/Builder/index.tsx","../../src/features/Components/New/index.tsx","../../src/features/Content/New/hooks/useDescribeSchema.ts","../../src/features/Content/New/Describe/Proposal/index.tsx","../../src/features/Content/New/Describe/index.tsx","../../src/features/Content/New/index.tsx","../../src/app/lazyRoutes/contentTypes.tsx"],"sourcesContent":["import { Link } from '@tanstack/react-router';\nimport { Blocks, Plus } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport { useDefinitions } from '@/api/schema';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Page } from '@/components/Page';\nimport { PageHeader } from '@/components/PageHeader';\nimport { QueryView } from '@/components/QueryView';\nimport { Button } from '@/components/ui/button';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { List } from '@/features/Models/List';\nimport { LockNotice } from '@/features/Models/LockNotice';\n\n/** `/develop/components`: reusable field groups that content types embed (Develop → Components). */\nexport const Components = () => {\n const { t } = useTranslation();\n const components = useDefinitions('component');\n const canCreate = useHasGlobalPermission('schema.create');\n const { locked, reason } = useSchemaLock();\n const createAction =\n canCreate && !locked ? (\n <Button asChild>\n <Link to=\"/develop/components/new\">\n <Plus aria-hidden=\"true\" />\n {t('contentTypes.newComponentTitle')}\n </Link>\n </Button>\n ) : null;\n return (\n <Page>\n <PageHeader title={t('shell.nav.components')} actions={createAction} />\n {locked ? <LockNotice reason={reason} /> : null}\n <QueryView\n query={components}\n isEmpty={(data) => data.length === 0}\n empty={\n <EmptyState\n icon={Blocks}\n title={t('contentTypes.noComponents')}\n description={t('models.emptyDescription')}\n action={createAction}\n />\n }\n >\n {(data) => <List items={data} />}\n </QueryView>\n </Page>\n );\n};\n","import { useParams } from '@tanstack/react-router';\nimport { Builder as DefinitionBuilder } from '@/features/Models/Builder';\n\n/** `/develop/components/:componentId`: a component in the shared definition builder. */\nexport const Builder = () => {\n const { componentId } = useParams({ from: '/app/develop/components/$componentId' });\n return <DefinitionBuilder category=\"component\" id={componentId} />;\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Form } from '@/features/Content/New/Form';\n\nconst KINDS = ['component'] as const;\n\n/** `/develop/components/new`: a reusable component (Develop → Components). */\nexport const New = () => {\n const { t } = useTranslation();\n return (\n <Form\n title={t('contentTypes.newComponentTitle')}\n kinds={KINDS}\n back={linkOptions({ to: '/develop/components' })}\n backLabel={t('shell.nav.components')}\n />\n );\n};\n","import type { SchemaDraftResult } from '@shapio/client';\nimport { useNavigate } from '@tanstack/react-router';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useProposeSchema } from '@/api/assist';\nimport { useSaveNewDefinitionsToChangeSet } from '@/api/changeSets';\n\n/**\n * \"Describe it\": a description → proposed definitions (nothing written) → saved as schema drafts into a\n * change set, whose review opens next. Shipping them stays a person's decision there.\n */\nexport const useDescribeSchema = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const [description, setDescription] = useState('');\n const [proposal, setProposal] = useState<SchemaDraftResult | null>(null);\n const propose = useProposeSchema();\n const save = useSaveNewDefinitionsToChangeSet();\n const run = () => {\n if (description.trim() === '') {\n return;\n }\n setProposal(null);\n save.reset();\n propose.mutate({ description: description.trim() }, { onSuccess: setProposal });\n };\n const discard = () => {\n setProposal(null);\n propose.reset();\n save.reset();\n };\n const addToChangeSet = () => {\n if (!proposal) {\n return;\n }\n save.mutate(\n {\n definitions: proposal.definitions,\n newSetTitle: t('assist.describe.setTitle', { model: proposal.model }),\n },\n {\n onSuccess: (changeSetId) => void navigate({ to: '/changes/$changeSetId', params: { changeSetId } }),\n },\n );\n };\n return {\n description,\n setDescription,\n proposal,\n run,\n discard,\n addToChangeSet,\n proposing: propose.isPending,\n proposeError: propose.error,\n adding: save.isPending,\n addError: save.error,\n };\n};\n","import type { SchemaDraftResult } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '@/components/ui/badge';\nimport { KIND_LABEL_KEYS } from '@/features/Models/constants';\n\ntype ProposalProps = { proposal: SchemaDraftResult };\n\n/** The proposed definitions at a glance: name, kind, API ID and fields, before they go into a change set. */\nexport const Proposal = ({ proposal }: ProposalProps) => {\n const { t } = useTranslation();\n return (\n <div className=\"space-y-3\">\n <p className=\"text-meta text-muted-foreground\">\n {t('assist.describe.proposedBy', { model: proposal.model })}\n </p>\n <ul aria-label={t('assist.describe.proposalLabel')} className=\"space-y-3\">\n {proposal.definitions.map((definition) => (\n <li key={definition.id} className=\"rounded-lg border p-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold\">{definition.label}</span>\n <Badge variant=\"secondary\">{t(KIND_LABEL_KEYS[definition.kind])}</Badge>\n <span className=\"font-mono text-meta text-muted-foreground\">{definition.apiKey}</span>\n </div>\n <ul className=\"mt-2 space-y-0.5 text-meta text-muted-foreground\">\n {definition.fields.map((field) => (\n <li key={field.id}>\n <span className=\"text-foreground\">{field.label}</span>{' '}\n {t('assist.describe.fieldType', { type: t(`models.dataTypes.${field.type}.name`) })}\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n","import { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAssistEnabled } from '@/api/assist';\nimport { AssistButton } from '@/components/AssistButton';\nimport { AssistError } from '@/components/AssistError';\nimport { HintedLabel } from '@/components/HintedLabel';\nimport { Panel } from '@/components/Panel';\nimport { SubmitButton } from '@/components/SubmitButton';\nimport { Button } from '@/components/ui/button';\nimport { Textarea } from '@/components/ui/textarea';\nimport { SCHEMA_DESCRIPTION_MAX } from '@/constants/assist';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { useDescribeSchema } from '../hooks/useDescribeSchema';\nimport { Proposal } from './Proposal';\n\n/** \"Describe it\" above the new content type form: a model proposes the types, a change set holds them. */\nexport const Describe = () => {\n const { t } = useTranslation();\n const id = useId();\n const enabled = useAssistEnabled();\n const { locked } = useSchemaLock();\n const describe = useDescribeSchema();\n if (!enabled) {\n return null;\n }\n return (\n <Panel title={t('assist.describe.title')} titleAs=\"h2\">\n <div className=\"space-y-3\">\n {describe.proposal ? (\n <form\n className=\"space-y-3\"\n onSubmit={(event) => {\n event.preventDefault();\n describe.addToChangeSet();\n }}\n >\n <Proposal proposal={describe.proposal} />\n <AssistError error={describe.addError} />\n <div className=\"flex flex-wrap justify-end gap-2\">\n <Button type=\"button\" variant=\"outline\" onClick={describe.discard}>\n {t('assist.discard')}\n </Button>\n <SubmitButton pending={describe.adding} pendingLabel={t('common.saving')} disabled={locked}>\n {t('assist.describe.add')}\n </SubmitButton>\n </div>\n </form>\n ) : (\n <>\n <div className=\"space-y-2\">\n <HintedLabel\n htmlFor={`${id}-description`}\n label={t('assist.describe.label')}\n hint={t('assist.describe.hint')}\n />\n <Textarea\n id={`${id}-description`}\n value={describe.description}\n rows={4}\n maxLength={SCHEMA_DESCRIPTION_MAX}\n placeholder={t('assist.describe.placeholder')}\n disabled={describe.proposing}\n onChange={(event) => describe.setDescription(event.target.value)}\n />\n </div>\n <AssistError error={describe.proposeError} />\n <div className=\"flex justify-end\">\n <AssistButton\n variant=\"outline\"\n size=\"default\"\n pending={describe.proposing}\n pendingLabel={t('assist.working')}\n disabled={describe.description.trim() === '' || locked}\n onClick={describe.run}\n >\n {t('assist.describe.run')}\n </AssistButton>\n </div>\n </>\n )}\n </div>\n </Panel>\n );\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Describe } from './Describe';\nimport { Form } from './Form';\n\nconst KINDS = ['collection', 'singleton'] as const;\n\n/** `/content/new`: a new content type (a place for editors), live as soon as it is created. */\nexport const New = () => {\n const { t } = useTranslation();\n return (\n <Form\n title={t('contentTypes.newTitle')}\n kinds={KINDS}\n back={linkOptions({ to: '/content' })}\n backLabel={t('content.title')}\n intro={<Describe />}\n />\n );\n};\n","import { createLazyRoute } from '@tanstack/react-router';\nimport { Components } from '@/features/Components';\nimport { Builder as ComponentBuilder } from '@/features/Components/Builder';\nimport { New as NewComponent } from '@/features/Components/New';\nimport { New as NewContentType } from '@/features/Content/New';\n\n/** Creating content types and components, and Develop → Components (with @shapio/schema's validators). */\nexport const contentTypesLazyRoutes = {\n newContentType: createLazyRoute('/app/content/new')({ component: NewContentType }),\n components: createLazyRoute('/app/develop/components')({ component: Components }),\n newComponent: createLazyRoute('/app/develop/components/new')({ component: NewComponent }),\n component: createLazyRoute('/app/develop/components/$componentId')({ component: ComponentBuilder }),\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{m as n}from"./cn-
|
|
2
|
-
//# sourceMappingURL=context-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{m as n}from"./cn-h5ORT3LK.js";var r=e(t(),1),i=(0,r.createContext)(null),a=(0,r.createContext)(null),o=()=>{let e=(0,r.useContext)(i);if(!e)throw Error(`useFieldsEnvironment must be used inside <FieldsProvider>`);return e},s=()=>{let e=(0,r.useContext)(a);if(!e)throw Error(`useEntryFormStore must be used inside <FieldsProvider>`);return e},c=e=>n(s(),e),l=(0,r.createContext)(null),u=()=>(0,r.useContext)(l);export{s as a,c as i,i as n,o,l as r,u as s,a as t};
|
|
2
|
+
//# sourceMappingURL=context-DyyMW7Md.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-
|
|
1
|
+
{"version":3,"file":"context-DyyMW7Md.js","names":["createContext","useContext","__toESM","useStore","import_react","require_react","FieldsEnvironmentContext","EntryFormStoreContext","useFieldsEnvironment","environment","useEntryFormStore","store","useEntryForm","selector","SiblingValuesContext","useSiblingValues"],"sources":["../../src/fields/form/context.ts"],"sourcesContent":["import type { EditorDefinition, PickedMedia, MediaPickOptions } from '@shapio/editor-sdk';\nimport type { ComponentDefinition, ModelDefinition, SchemaDefinition } from '@shapio/schema';\nimport { createContext, useContext } from 'react';\nimport { useStore } from 'zustand';\nimport type { UploadedMedia } from '@/hooks/useMediaUploader';\nimport type { EntryFormState, EntryFormStore } from './store';\n\n/** What every field editor in a form shares: the schema, the entry, and capabilities. */\nexport type FieldsEnvironment = {\n /** Prefix for DOM ids, unique per form on the page (the page's form and an inline-create drawer). */\n idPrefix: string;\n /** The model the entry belongs to. */\n model: ModelDefinition;\n /** Components by stable ID (for component and dynamic-zone fields). */\n components: ReadonlyMap<string, ComponentDefinition>;\n /** Every model by stable ID (relation targets). */\n models: ReadonlyMap<string, ModelDefinition>;\n /** The locale being edited, or null when the model is not localized. */\n locale: string | null;\n entryId: string | null;\n /** Nothing can be changed (no update permission, viewing history). */\n readOnly: boolean;\n /** Temporarily unavailable (saving a conflict resolution, reloading). */\n disabled: boolean;\n runtimeEditors: ReadonlyMap<string, EditorDefinition>;\n pickMedia: (options?: MediaPickOptions) => Promise<PickedMedia[] | null>;\n /**\n * Uploads one file into the library (public, root folder) and resolves with the new asset, for files\n * dropped or pasted into rich text. Absent without `media.write`: editors then don't accept files.\n */\n uploadMedia?: (file: File) => Promise<UploadedMedia>;\n};\n\nexport const FieldsEnvironmentContext = createContext<FieldsEnvironment | null>(null);\nexport const EntryFormStoreContext = createContext<EntryFormStore | null>(null);\n\nexport const useFieldsEnvironment = (): FieldsEnvironment => {\n const environment = useContext(FieldsEnvironmentContext);\n if (!environment) {\n throw new Error('useFieldsEnvironment must be used inside <FieldsProvider>');\n }\n return environment;\n};\n\nexport const useEntryFormStore = (): EntryFormStore => {\n const store = useContext(EntryFormStoreContext);\n if (!store) {\n throw new Error('useEntryFormStore must be used inside <FieldsProvider>');\n }\n return store;\n};\n\nexport const useEntryForm = <T>(selector: (state: EntryFormState) => T): T =>\n useStore(useEntryFormStore(), selector);\n\n/** The definition and values of the level a field sits in (the entry, or one component item). */\nexport type SiblingValues = { definition: SchemaDefinition; values: Readonly<Record<string, unknown>> };\n\nexport const SiblingValuesContext = createContext<SiblingValues | null>(null);\n\nexport const useSiblingValues = () => useContext(SiblingValuesContext);\n"],"mappings":"0IAiCaM,GAAA,EAA2BN,EAAAA,cAAAA,CAAwC,IAAI,EACvEO,GAAA,EAAwBP,EAAAA,cAAAA,CAAqC,IAAI,EAEjEQ,MAAgD,CAC3D,IAAMC,GAAA,EAAcR,EAAAA,WAAAA,CAAWK,CAAwB,EACvD,GAAI,CAACG,EACH,MAAU,MAAM,2DAA2D,EAE7E,OAAOA,CACT,EAEaC,MAA0C,CACrD,IAAMC,GAAA,EAAQV,EAAAA,WAAAA,CAAWM,CAAqB,EAC9C,GAAI,CAACI,EACH,MAAU,MAAM,wDAAwD,EAE1E,OAAOA,CACT,EAEaC,EAAmB,GAC9BT,EAASO,EAAkB,EAAGG,CAAQ,EAK3BC,GAAA,EAAuBd,EAAAA,cAAAA,CAAoC,IAAI,EAE/De,OAAA,EAAyBd,EAAAA,WAAAA,CAAWa,CAAoB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./cn-
|
|
2
|
-
//# sourceMappingURL=copy-
|
|
1
|
+
import{i as e}from"./cn-h5ORT3LK.js";var t={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};t.node;var n=e(t);export{n as t};
|
|
2
|
+
//# sourceMappingURL=copy-DjzlFY9u.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-
|
|
1
|
+
{"version":3,"file":"copy-DjzlFY9u.js","names":["createLucideIcon","__iconData","Copy"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/copy.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"copy\",\n size: 24,\n node: [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n ]\n};\n__iconData.node;\nconst Copy = createLucideIcon(__iconData);\n\nexport { __iconData, Copy as default };\n//# sourceMappingURL=copy.mjs.map\n"],"ignoreList":[0],"mappings":"qCASA,IAAMC,EAAa,CACjB,KAAM,OACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,QAAS,CAAC,EACvF,CAAC,OAAQ,CAAE,EAAG,0DAA2D,IAAK,QAAS,CAAC,CAC1F,CACF,EACAA,EAAW,KACX,IAAMC,EAAOF,EAAiBC,CAAU"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{v as e}from"./table-
|
|
2
|
-
//# sourceMappingURL=dateTimeLocal-
|
|
1
|
+
import{v as e}from"./table-BMbbRUK9.js";var t=e=>String(e).padStart(2,`0`),n=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?$/,r=36e5,i=e=>`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}T${t(e.getHours())}:${t(e.getMinutes())}`,a=e=>{let t=n.exec(e);if(!t)return;let[r=0,i=0,a=0,o=0,s=0,c=0]=t.slice(1).map(e=>e===void 0?0:Number(e)),l=new Date(r,i-1,a,o,s,c);return l.getFullYear()===r&&l.getMonth()===i-1&&l.getDate()===a&&l.getHours()===o&&l.getMinutes()===s?l.toISOString():void 0},o=(e=new Date)=>{let t=new Date(e.getTime()+r/2);return t.setMinutes(0,0,0),i(new Date(t.getTime()+r))},s=()=>e().refine(e=>a(e)!==void 0,`validation.dateTime`);export{a as n,o as r,s as t};
|
|
2
|
+
//# sourceMappingURL=dateTimeLocal-DFXY779D.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateTimeLocal-
|
|
1
|
+
{"version":3,"file":"dateTimeLocal-DFXY779D.js","names":["z.string","string","pad","value","DATE_TIME_LOCAL","HOUR_MS","toDateTimeLocalValue","date","dateTimeLocalToIso","match","year","month","day","hours","minutes","seconds","part","defaultScheduleValue","next","now","dateTimeLocalField"],"sources":["../../src/features/Publishing/helpers/dateTimeLocal.ts"],"sourcesContent":["import { z } from 'zod';\n\nconst pad = (value: number) => String(value).padStart(2, '0');\n\nconst DATE_TIME_LOCAL = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2}))?$/;\n\nconst HOUR_MS = 60 * 60 * 1000;\n\n/** `YYYY-MM-DDTHH:mm` in the browser's time zone: the value format of `<input type=\"datetime-local\">`. */\nexport const toDateTimeLocalValue = (date: Date): string =>\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}T${pad(date.getHours())}:${pad(date.getMinutes())}`;\n\n/**\n * The instant a `datetime-local` value means (read in the browser's time zone) as an ISO string for the\n * API, or `undefined` when the value is not a real date and time (e.g. 31 February).\n */\nexport const dateTimeLocalToIso = (value: string): string | undefined => {\n const match = DATE_TIME_LOCAL.exec(value);\n if (!match) {\n return undefined;\n }\n // Seconds are optional in the value; a missing group reads as 0.\n const [year = 0, month = 0, day = 0, hours = 0, minutes = 0, seconds = 0] = match\n .slice(1)\n .map((part) => (part === undefined ? 0 : Number(part)));\n const date = new Date(year, month - 1, day, hours, minutes, seconds);\n const roundTrips =\n date.getFullYear() === year &&\n date.getMonth() === month - 1 &&\n date.getDate() === day &&\n date.getHours() === hours &&\n date.getMinutes() === minutes;\n return roundTrips ? date.toISOString() : undefined;\n};\n\n/** The default time offered for a new schedule: the start of the next hour, at least 30 minutes away. */\nexport const defaultScheduleValue = (now: Date = new Date()): string => {\n const next = new Date(now.getTime() + HOUR_MS / 2);\n next.setMinutes(0, 0, 0);\n return toDateTimeLocalValue(new Date(next.getTime() + HOUR_MS));\n};\n\n/** A form field holding a `datetime-local` value that must be a real date and time. */\nexport const dateTimeLocalField = () =>\n z.string().refine((value) => dateTimeLocalToIso(value) !== undefined, 'validation.dateTime');\n"],"mappings":"wCAEA,IAAME,EAAO,GAAkB,OAAOC,CAAK,CAAC,CAAC,SAAS,EAAG,GAAG,EAEtDC,EAAkB,yDAElBC,EAAU,KAGHC,EAAwB,GACnC,GAAGC,EAAK,YAAY,EAAE,GAAGL,EAAIK,EAAK,SAAS,EAAI,CAAC,EAAE,GAAGL,EAAIK,EAAK,QAAQ,CAAC,EAAE,GAAGL,EAAIK,EAAK,SAAS,CAAC,EAAE,GAAGL,EAAIK,EAAK,WAAW,CAAC,IAM9GC,EAAsB,GAAsC,CACvE,IAAMC,EAAQL,EAAgB,KAAKD,CAAK,EACxC,GAAI,CAACM,EACH,OAGF,GAAM,CAACC,EAAO,EAAGC,EAAQ,EAAGC,EAAM,EAAGC,EAAQ,EAAGC,EAAU,EAAGC,EAAU,GAAKN,EACzE,MAAM,CAAC,CAAC,CACR,IAAK,GAAUO,IAAS,IAAA,GAAY,EAAI,OAAOA,CAAI,CAAE,EAClDT,EAAO,IAAI,KAAKG,EAAMC,EAAQ,EAAGC,EAAKC,EAAOC,EAASC,CAAO,EAOnE,OALER,EAAK,YAAY,IAAMG,GACvBH,EAAK,SAAS,IAAMI,EAAQ,GAC5BJ,EAAK,QAAQ,IAAMK,GACnBL,EAAK,SAAS,IAAMM,GACpBN,EAAK,WAAW,IAAMO,EACJP,EAAK,YAAY,EAAI,IAAA,EAC3C,EAGaU,GAAwB,EAAY,IAAI,OAAmB,CACtE,IAAMC,EAAO,IAAI,KAAKC,EAAI,QAAQ,EAAId,EAAU,CAAC,EAEjD,OADAa,EAAK,WAAW,EAAG,EAAG,CAAC,EAChBZ,EAAqB,IAAI,KAAKY,EAAK,QAAQ,EAAIb,CAAO,CAAC,CAChE,EAGae,MACXpB,EAAS,CAAC,CAAC,OAAQ,GAAUQ,EAAmBL,CAAK,IAAM,IAAA,GAAW,qBAAqB"}
|