@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thumbnail-cjA7fSWh.js","names":["__iconData","__iconData","__iconData","i18next","FileVideo","FileAudio","__toESM","createLucideIcon","useTranslation","cn","useMe","StatusChip","instance","FileText","VARIANT_LABEL_KEYS","isKnownVariant","__iconData$3","FileHeadphone","__iconData$2","FileImage","__iconData$1","FilePlay","__iconData","File","useMediaPermissions","me","permissions","role","UNITS","formatBytes","value","bytes","unit","MEDIA_STATUS_DISPLAY","import_jsx_runtime","require_jsx_runtime","Variants","asset","label","variant","status","FileIcon","mimeType","isImage","MAX_KIND_LENGTH","fileKindLabel","extension","filename","thumbnailUrl","candidate","Thumbnail","url","className"],"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/file-headphone.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-image.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-play.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file.mjs","../../src/hooks/useMediaPermissions.ts","../../src/features/Media/helpers/formatBytes.ts","../../src/features/Media/helpers/statusDisplay.ts","../../src/features/Media/Details/Variants/index.tsx","../../src/features/Media/FileIcon/index.tsx","../../src/features/Media/helpers/fileKind.ts","../../src/features/Media/Thumbnail/index.tsx"],"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: \"file-headphone\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343\",\n key: \"1vfytu\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n {\n d: \"M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0\",\n key: \"1etmh7\"\n }\n ]\n ],\n aliases: [\"file-audio\", \"file-audio-2\"]\n};\n__iconData.node;\nconst FileHeadphone = createLucideIcon(__iconData);\n\nexport { __iconData, FileHeadphone as default };\n//# sourceMappingURL=file-headphone.mjs.map\n","/**\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: \"file-image\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"circle\", { cx: \"10\", cy: \"12\", r: \"2\", key: \"737tya\" }],\n [\"path\", { d: \"m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22\", key: \"wt3hpn\" }]\n ]\n};\n__iconData.node;\nconst FileImage = createLucideIcon(__iconData);\n\nexport { __iconData, FileImage as default };\n//# sourceMappingURL=file-image.mjs.map\n","/**\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: \"file-play\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n {\n d: \"M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z\",\n key: \"1tzo1f\"\n }\n ]\n ],\n aliases: [\"file-video\"]\n};\n__iconData.node;\nconst FilePlay = createLucideIcon(__iconData);\n\nexport { __iconData, FilePlay as default };\n//# sourceMappingURL=file-play.mjs.map\n","/**\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: \"file\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }]\n ]\n};\n__iconData.node;\nconst File = createLucideIcon(__iconData);\n\nexport { __iconData, File as default };\n//# sourceMappingURL=file.mjs.map\n","import { useMe } from '@/api/auth';\n\n/** What the signed-in admin may do in the media library (the server checks again). */\nexport const useMediaPermissions = () => {\n const me = useMe().data;\n const permissions = me?.globalPermissions ?? [];\n return {\n canWrite: permissions.includes('media.write'),\n canManage: permissions.includes('media.manage'),\n /** Only owners may delete media that content still uses. */\n isOwner: me?.roles.some((role) => role.key === 'owner') ?? false,\n };\n};\n","import { i18next } from '@/app/i18n';\n\nconst UNITS = ['byte', 'kilobyte', 'megabyte', 'gigabyte'] as const;\n\n/** `1536` → `1.5 kB`, in the admin's language. */\nexport const formatBytes = (bytes: number): string => {\n let value = bytes;\n let unit = 0;\n while (value >= 1000 && unit < UNITS.length - 1) {\n value /= 1000;\n unit += 1;\n }\n return new Intl.NumberFormat(i18next.language, {\n style: 'unit',\n unit: UNITS[unit],\n unitDisplay: 'short',\n maximumFractionDigits: unit === 0 ? 0 : 1,\n }).format(value);\n};\n","import type { MediaAssetStatus, MediaVariantStatus } from '@shapio/client';\nimport type { StatusTone } from '@/components/StatusChip';\n\ntype Display = { labelKey: string; tone: StatusTone };\n\n/** How an asset's or variant's processing state reads as a `StatusChip`. */\nexport const MEDIA_STATUS_DISPLAY = {\n pending: { labelKey: 'media.status.pending', tone: 'progress' },\n processing: { labelKey: 'media.status.processing', tone: 'progress' },\n ready: { labelKey: 'media.status.ready', tone: 'success' },\n failed: { labelKey: 'media.status.failed', tone: 'danger' },\n} as const satisfies Record<MediaAssetStatus | MediaVariantStatus, Display>;\n","import type { MediaAsset } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { StatusChip } from '@/components/StatusChip';\nimport { isKnownVariant, VARIANT_LABEL_KEYS } from '../../constants';\nimport { formatBytes } from '../../helpers/formatBytes';\nimport { MEDIA_STATUS_DISPLAY } from '../../helpers/statusDisplay';\n\ntype VariantsProps = { asset: MediaAsset };\n\n/** Generated sizes and their status (made in the background after upload). */\nexport const Variants = ({ asset }: VariantsProps) => {\n const { t } = useTranslation();\n if (asset.variants.length === 0) {\n return (\n <p className=\"text-sm text-muted-foreground\">\n {asset.status === 'processing' ? t('media.variants.processing') : t('media.variants.none')}\n </p>\n );\n }\n return (\n <ul className=\"divide-y rounded-lg border\">\n {asset.variants.map((variant) => {\n const label = isKnownVariant(variant.name) ? t(VARIANT_LABEL_KEYS[variant.name]) : variant.name;\n const status = MEDIA_STATUS_DISPLAY[variant.status];\n return (\n <li key={variant.name} className=\"flex min-w-0 items-center gap-3 px-3 py-2\">\n <span className=\"min-w-0 flex-1\">\n {variant.url ? (\n <a\n href={variant.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"rounded-sm text-sm font-medium text-link underline-offset-4 outline-none hover:underline focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n >\n {label}\n </a>\n ) : (\n <span className=\"text-sm font-medium\">{label}</span>\n )}\n <span className=\"block truncate text-meta text-muted-foreground\">\n {variant.width && variant.height\n ? t('media.dimensions', { width: variant.width, height: variant.height })\n : null}\n {variant.sizeBytes ? ` · ${formatBytes(variant.sizeBytes)}` : null}\n </span>\n </span>\n <StatusChip tone={status.tone} label={t(status.labelKey)} size=\"sm\" />\n </li>\n );\n })}\n </ul>\n );\n};\n","import { File, FileAudio, FileImage, FileText, FileVideo } from 'lucide-react';\n\ntype FileIconProps = { mimeType: string; className?: string };\n\n/** An icon for files without a preview. Decorative: the file's name or type is always shown beside it. */\nexport const FileIcon = ({ mimeType, className }: FileIconProps) => {\n if (mimeType.startsWith('image/')) {\n return <FileImage aria-hidden=\"true\" className={className} />;\n }\n if (mimeType.startsWith('video/')) {\n return <FileVideo aria-hidden=\"true\" className={className} />;\n }\n if (mimeType.startsWith('audio/')) {\n return <FileAudio aria-hidden=\"true\" className={className} />;\n }\n if (mimeType === 'application/pdf' || mimeType.startsWith('text/')) {\n return <FileText aria-hidden=\"true\" className={className} />;\n }\n return <File aria-hidden=\"true\" className={className} />;\n};\n","export const isImage = (mimeType: string) => mimeType.startsWith('image/');\n\nconst MAX_KIND_LENGTH = 5;\n\n/**\n * A short format code for a file (\"PNG\", \"PDF\"): the file name's extension, else the MIME subtype. A code,\n * not prose, so it is not translated.\n */\nexport const fileKindLabel = (filename: string, mimeType: string): string => {\n const extension = /\\.([a-z0-9]+)$/i.exec(filename)?.[1];\n if (extension && extension.length <= MAX_KIND_LENGTH) {\n return extension.toUpperCase();\n }\n const subtype = mimeType.split('/')[1]?.split(/[.+;-]/)[0] ?? '';\n return subtype.toUpperCase();\n};\n","import type { MediaAsset } from '@shapio/client';\nimport { cn } from '@/helpers/cn';\nimport { FileIcon } from '../FileIcon';\nimport { isImage } from '../helpers/fileKind';\n\ntype ThumbnailProps = { asset: MediaAsset; className?: string };\n\n/** The library thumbnail: the `thumbnail` variant once ready, the original for small images and SVGs. */\nconst thumbnailUrl = (asset: MediaAsset): string | undefined => {\n const variant = asset.variants.find((candidate) => candidate.name === 'thumbnail' && candidate.url);\n if (variant?.url) {\n return variant.url;\n }\n return isImage(asset.mimeType) ? asset.url : undefined;\n};\n\n/** Decorative: the asset's name is always shown beside it, so the image has empty alt text. */\nexport const Thumbnail = ({ asset, className }: ThumbnailProps) => {\n const url = thumbnailUrl(asset);\n return (\n <div className={cn('flex items-center justify-center overflow-hidden bg-muted', className)}>\n {url ? (\n <img src={url} alt=\"\" loading=\"lazy\" decoding=\"async\" className=\"size-full object-cover\" />\n ) : (\n <FileIcon mimeType={asset.mimeType} className=\"size-8 text-muted-foreground\" />\n )}\n </div>\n );\n};\n"],"ignoreList":[0,1,2,3],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Thumbnail-DSPArZ9h.js","names":["__iconData","__iconData","__iconData","i18next","FileVideo","FileAudio","__toESM","createLucideIcon","useTranslation","cn","useMe","StatusChip","instance","FileText","VARIANT_LABEL_KEYS","isKnownVariant","__iconData$3","FileHeadphone","__iconData$2","FileImage","__iconData$1","FilePlay","__iconData","File","useMediaPermissions","me","permissions","role","UNITS","formatBytes","value","bytes","unit","MEDIA_STATUS_DISPLAY","import_jsx_runtime","require_jsx_runtime","Variants","asset","label","variant","status","FileIcon","mimeType","isImage","MAX_KIND_LENGTH","fileKindLabel","extension","filename","thumbnailUrl","candidate","Thumbnail","url","className"],"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/file-headphone.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-image.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-play.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file.mjs","../../src/hooks/useMediaPermissions.ts","../../src/features/Media/helpers/formatBytes.ts","../../src/features/Media/helpers/statusDisplay.ts","../../src/features/Media/Details/Variants/index.tsx","../../src/features/Media/FileIcon/index.tsx","../../src/features/Media/helpers/fileKind.ts","../../src/features/Media/Thumbnail/index.tsx"],"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: \"file-headphone\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343\",\n key: \"1vfytu\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n {\n d: \"M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0\",\n key: \"1etmh7\"\n }\n ]\n ],\n aliases: [\"file-audio\", \"file-audio-2\"]\n};\n__iconData.node;\nconst FileHeadphone = createLucideIcon(__iconData);\n\nexport { __iconData, FileHeadphone as default };\n//# sourceMappingURL=file-headphone.mjs.map\n","/**\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: \"file-image\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"circle\", { cx: \"10\", cy: \"12\", r: \"2\", key: \"737tya\" }],\n [\"path\", { d: \"m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22\", key: \"wt3hpn\" }]\n ]\n};\n__iconData.node;\nconst FileImage = createLucideIcon(__iconData);\n\nexport { __iconData, FileImage as default };\n//# sourceMappingURL=file-image.mjs.map\n","/**\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: \"file-play\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n {\n d: \"M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z\",\n key: \"1tzo1f\"\n }\n ]\n ],\n aliases: [\"file-video\"]\n};\n__iconData.node;\nconst FilePlay = createLucideIcon(__iconData);\n\nexport { __iconData, FilePlay as default };\n//# sourceMappingURL=file-play.mjs.map\n","/**\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: \"file\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }]\n ]\n};\n__iconData.node;\nconst File = createLucideIcon(__iconData);\n\nexport { __iconData, File as default };\n//# sourceMappingURL=file.mjs.map\n","import { useMe } from '@/api/auth';\n\n/** What the signed-in admin may do in the media library (the server checks again). */\nexport const useMediaPermissions = () => {\n const me = useMe().data;\n const permissions = me?.globalPermissions ?? [];\n return {\n canWrite: permissions.includes('media.write'),\n canManage: permissions.includes('media.manage'),\n /** Only owners may delete media that content still uses. */\n isOwner: me?.roles.some((role) => role.key === 'owner') ?? false,\n };\n};\n","import { i18next } from '@/app/i18n';\n\nconst UNITS = ['byte', 'kilobyte', 'megabyte', 'gigabyte'] as const;\n\n/** `1536` → `1.5 kB`, in the admin's language. */\nexport const formatBytes = (bytes: number): string => {\n let value = bytes;\n let unit = 0;\n while (value >= 1000 && unit < UNITS.length - 1) {\n value /= 1000;\n unit += 1;\n }\n return new Intl.NumberFormat(i18next.language, {\n style: 'unit',\n unit: UNITS[unit],\n unitDisplay: 'short',\n maximumFractionDigits: unit === 0 ? 0 : 1,\n }).format(value);\n};\n","import type { MediaAssetStatus, MediaVariantStatus } from '@shapio/client';\nimport type { StatusTone } from '@/components/StatusChip';\n\ntype Display = { labelKey: string; tone: StatusTone };\n\n/** How an asset's or variant's processing state reads as a `StatusChip`. */\nexport const MEDIA_STATUS_DISPLAY = {\n pending: { labelKey: 'media.status.pending', tone: 'progress' },\n processing: { labelKey: 'media.status.processing', tone: 'progress' },\n ready: { labelKey: 'media.status.ready', tone: 'success' },\n failed: { labelKey: 'media.status.failed', tone: 'danger' },\n} as const satisfies Record<MediaAssetStatus | MediaVariantStatus, Display>;\n","import type { MediaAsset } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { StatusChip } from '@/components/StatusChip';\nimport { isKnownVariant, VARIANT_LABEL_KEYS } from '../../constants';\nimport { formatBytes } from '../../helpers/formatBytes';\nimport { MEDIA_STATUS_DISPLAY } from '../../helpers/statusDisplay';\n\ntype VariantsProps = { asset: MediaAsset };\n\n/** Generated sizes and their status (made in the background after upload). */\nexport const Variants = ({ asset }: VariantsProps) => {\n const { t } = useTranslation();\n if (asset.variants.length === 0) {\n return (\n <p className=\"text-sm text-muted-foreground\">\n {asset.status === 'processing' ? t('media.variants.processing') : t('media.variants.none')}\n </p>\n );\n }\n return (\n <ul className=\"divide-y rounded-lg border\">\n {asset.variants.map((variant) => {\n const label = isKnownVariant(variant.name) ? t(VARIANT_LABEL_KEYS[variant.name]) : variant.name;\n const status = MEDIA_STATUS_DISPLAY[variant.status];\n return (\n <li key={variant.name} className=\"flex min-w-0 items-center gap-3 px-3 py-2\">\n <span className=\"min-w-0 flex-1\">\n {variant.url ? (\n <a\n href={variant.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"rounded-sm text-sm font-medium text-link underline-offset-4 outline-none hover:underline focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n >\n {label}\n </a>\n ) : (\n <span className=\"text-sm font-medium\">{label}</span>\n )}\n <span className=\"block truncate text-meta text-muted-foreground\">\n {variant.width && variant.height\n ? t('media.dimensions', { width: variant.width, height: variant.height })\n : null}\n {variant.sizeBytes ? ` · ${formatBytes(variant.sizeBytes)}` : null}\n </span>\n </span>\n <StatusChip tone={status.tone} label={t(status.labelKey)} size=\"sm\" />\n </li>\n );\n })}\n </ul>\n );\n};\n","import { File, FileAudio, FileImage, FileText, FileVideo } from 'lucide-react';\n\ntype FileIconProps = { mimeType: string; className?: string };\n\n/** An icon for files without a preview. Decorative: the file's name or type is always shown beside it. */\nexport const FileIcon = ({ mimeType, className }: FileIconProps) => {\n if (mimeType.startsWith('image/')) {\n return <FileImage aria-hidden=\"true\" className={className} />;\n }\n if (mimeType.startsWith('video/')) {\n return <FileVideo aria-hidden=\"true\" className={className} />;\n }\n if (mimeType.startsWith('audio/')) {\n return <FileAudio aria-hidden=\"true\" className={className} />;\n }\n if (mimeType === 'application/pdf' || mimeType.startsWith('text/')) {\n return <FileText aria-hidden=\"true\" className={className} />;\n }\n return <File aria-hidden=\"true\" className={className} />;\n};\n","export const isImage = (mimeType: string) => mimeType.startsWith('image/');\n\nconst MAX_KIND_LENGTH = 5;\n\n/**\n * A short format code for a file (\"PNG\", \"PDF\"): the file name's extension, else the MIME subtype. A code,\n * not prose, so it is not translated.\n */\nexport const fileKindLabel = (filename: string, mimeType: string): string => {\n const extension = /\\.([a-z0-9]+)$/i.exec(filename)?.[1];\n if (extension && extension.length <= MAX_KIND_LENGTH) {\n return extension.toUpperCase();\n }\n const subtype = mimeType.split('/')[1]?.split(/[.+;-]/)[0] ?? '';\n return subtype.toUpperCase();\n};\n","import type { MediaAsset } from '@shapio/client';\nimport { cn } from '@/helpers/cn';\nimport { FileIcon } from '../FileIcon';\nimport { isImage } from '../helpers/fileKind';\n\ntype ThumbnailProps = { asset: MediaAsset; className?: string };\n\n/** The library thumbnail: the `thumbnail` variant once ready, the original for small images and SVGs. */\nconst thumbnailUrl = (asset: MediaAsset): string | undefined => {\n const variant = asset.variants.find((candidate) => candidate.name === 'thumbnail' && candidate.url);\n if (variant?.url) {\n return variant.url;\n }\n return isImage(asset.mimeType) ? asset.url : undefined;\n};\n\n/** Decorative: the asset's name is always shown beside it, so the image has empty alt text. */\nexport const Thumbnail = ({ asset, className }: ThumbnailProps) => {\n const url = thumbnailUrl(asset);\n return (\n <div className={cn('flex items-center justify-center overflow-hidden bg-muted', className)}>\n {url ? (\n <img src={url} alt=\"\" loading=\"lazy\" decoding=\"async\" className=\"size-full object-cover\" />\n ) : (\n <FileIcon mimeType={asset.mimeType} className=\"size-8 text-muted-foreground\" />\n )}\n </div>\n );\n};\n"],"ignoreList":[0,1,2,3],"mappings":"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"}
|
package/dist/admin/assets/{UnsavedChangesGuard-B57D0278.js → UnsavedChangesGuard-BPOCBD5T.js}
RENAMED
|
@@ -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=UnsavedChangesGuard-
|
|
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{D as i}from"./auth-BzCgJtgr.js";import{t as a}from"./ConfirmDialog-BW-l3Whg.js";var o=e(t(),1);function s(e,t){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if(`shouldBlockFn`in e)return e;if(typeof e==`function`){let n=!!(t??!0);return{shouldBlockFn:async()=>n?await e():!1,enableBeforeUnload:n,withResolver:!1}}let n=!!(e.condition??!0),r=e.blockerFn;return{shouldBlockFn:async()=>n&&r!==void 0?await r():n,enableBeforeUnload:n,withResolver:r===void 0}}function c(e,t){let{shouldBlockFn:n,enableBeforeUnload:r=!0,disabled:a=!1,withResolver:c=!1}=s(e,t),l=i(),{history:u}=l,[d,f]=o.useState({status:`idle`,current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return o.useEffect(()=>a?void 0:u.block({blockerFn:async e=>{function t(e){let t=l.parseLocation(e),[,n,r]=l.getMatchedRoutes(t.pathname);return r===void 0?{routeId:`__notFound__`,fullPath:t.pathname,pathname:t.pathname,params:n,search:l.options.parseSearch(e.search)}:{routeId:r.id,fullPath:r.fullPath,pathname:t.pathname,params:n,search:l.options.parseSearch(e.search)}}let r=t(e.currentLocation),i=t(e.nextLocation);if(r.routeId===`__notFound__`&&i.routeId!==`__notFound__`)return!1;let a=await n({action:e.action,current:r,next:i});if(!c)return a;if(!a)return!1;let o=await new Promise(t=>{f({status:`blocked`,current:r,next:i,action:e.action,proceed:()=>t(!1),reset:()=>t(!0)})});return f({status:`idle`,current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),o},enableBeforeUnload:r}),[n,r,a,c,u,l]),d}var l=e(n(),1),u=({when:e,shouldBlock:t,title:n,description:i,stayLabel:o,leaveLabel:s})=>{let{t:u}=r(),d=c({shouldBlockFn:({current:n,next:r})=>e&&(t?.({currentPath:n.pathname,nextPath:r.pathname})??!0),enableBeforeUnload:()=>e,withResolver:!0});return(0,l.jsx)(a,{open:d.status===`blocked`,onOpenChange:e=>{!e&&d.status===`blocked`&&d.reset()},title:n??u(`unsaved.title`),description:i??u(`unsaved.description`),cancelLabel:o??u(`unsaved.stay`),confirmLabel:s??u(`unsaved.leave`),destructive:!0,onConfirm:()=>d.proceed?.()})};export{u as t};
|
|
2
|
+
//# sourceMappingURL=UnsavedChangesGuard-BPOCBD5T.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnsavedChangesGuard-
|
|
1
|
+
{"version":3,"file":"UnsavedChangesGuard-BPOCBD5T.js","names":["__toESM","require_jsx_runtime","useTranslation","useRouter","ConfirmDialog","import_react","require_react","_resolveBlockerOpts","opts","shouldBlock","condition","fn","useBlocker","router","resolver","setResolver","disabled","history","getLocation","parsedLocation","location","rawParams","foundRoute","current","blockerFnArgs","next","shouldBlockFn","withResolver","canNavigateAsync","resolve","enableBeforeUnload","import_jsx_runtime","UnsavedChangesGuard","blocker","when","open","title","t","description","stayLabel","leaveLabel"],"sources":["../../../../node_modules/.pnpm/@tanstack+react-router@1.170.41_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@tanstack/react-router/dist/esm/useBlocker.js","../../src/components/UnsavedChangesGuard/index.tsx"],"sourcesContent":["\"use client\";\nimport { useRouter } from \"./useRouter.js\";\nimport * as React$1 from \"react\";\n//#region src/useBlocker.tsx\nfunction _resolveBlockerOpts(opts, condition) {\n\tif (opts === void 0) return {\n\t\tshouldBlockFn: () => true,\n\t\twithResolver: false\n\t};\n\tif (\"shouldBlockFn\" in opts) return opts;\n\tif (typeof opts === \"function\") {\n\t\tconst shouldBlock = Boolean(condition ?? true);\n\t\tconst _customBlockerFn = async () => {\n\t\t\tif (shouldBlock) return await opts();\n\t\t\treturn false;\n\t\t};\n\t\treturn {\n\t\t\tshouldBlockFn: _customBlockerFn,\n\t\t\tenableBeforeUnload: shouldBlock,\n\t\t\twithResolver: false\n\t\t};\n\t}\n\tconst shouldBlock = Boolean(opts.condition ?? true);\n\tconst fn = opts.blockerFn;\n\tconst _customBlockerFn = async () => {\n\t\tif (shouldBlock && fn !== void 0) return await fn();\n\t\treturn shouldBlock;\n\t};\n\treturn {\n\t\tshouldBlockFn: _customBlockerFn,\n\t\tenableBeforeUnload: shouldBlock,\n\t\twithResolver: fn === void 0\n\t};\n}\nfunction useBlocker(opts, condition) {\n\tconst { shouldBlockFn, enableBeforeUnload = true, disabled = false, withResolver = false } = _resolveBlockerOpts(opts, condition);\n\tconst router = useRouter();\n\tconst { history } = router;\n\tconst [resolver, setResolver] = React$1.useState({\n\t\tstatus: \"idle\",\n\t\tcurrent: void 0,\n\t\tnext: void 0,\n\t\taction: void 0,\n\t\tproceed: void 0,\n\t\treset: void 0\n\t});\n\tReact$1.useEffect(() => {\n\t\tconst blockerFnComposed = async (blockerFnArgs) => {\n\t\t\tfunction getLocation(location) {\n\t\t\t\tconst parsedLocation = router.parseLocation(location);\n\t\t\t\tconst [, rawParams, foundRoute] = router.getMatchedRoutes(parsedLocation.pathname);\n\t\t\t\tif (foundRoute === void 0) return {\n\t\t\t\t\trouteId: \"__notFound__\",\n\t\t\t\t\tfullPath: parsedLocation.pathname,\n\t\t\t\t\tpathname: parsedLocation.pathname,\n\t\t\t\t\tparams: rawParams,\n\t\t\t\t\tsearch: router.options.parseSearch(location.search)\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\trouteId: foundRoute.id,\n\t\t\t\t\tfullPath: foundRoute.fullPath,\n\t\t\t\t\tpathname: parsedLocation.pathname,\n\t\t\t\t\tparams: rawParams,\n\t\t\t\t\tsearch: router.options.parseSearch(location.search)\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst current = getLocation(blockerFnArgs.currentLocation);\n\t\t\tconst next = getLocation(blockerFnArgs.nextLocation);\n\t\t\tif (current.routeId === \"__notFound__\" && next.routeId !== \"__notFound__\") return false;\n\t\t\tconst shouldBlock = await shouldBlockFn({\n\t\t\t\taction: blockerFnArgs.action,\n\t\t\t\tcurrent,\n\t\t\t\tnext\n\t\t\t});\n\t\t\tif (!withResolver) return shouldBlock;\n\t\t\tif (!shouldBlock) return false;\n\t\t\tconst canNavigateAsync = await new Promise((resolve) => {\n\t\t\t\tsetResolver({\n\t\t\t\t\tstatus: \"blocked\",\n\t\t\t\t\tcurrent,\n\t\t\t\t\tnext,\n\t\t\t\t\taction: blockerFnArgs.action,\n\t\t\t\t\tproceed: () => resolve(false),\n\t\t\t\t\treset: () => resolve(true)\n\t\t\t\t});\n\t\t\t});\n\t\t\tsetResolver({\n\t\t\t\tstatus: \"idle\",\n\t\t\t\tcurrent: void 0,\n\t\t\t\tnext: void 0,\n\t\t\t\taction: void 0,\n\t\t\t\tproceed: void 0,\n\t\t\t\treset: void 0\n\t\t\t});\n\t\t\treturn canNavigateAsync;\n\t\t};\n\t\treturn disabled ? void 0 : history.block({\n\t\t\tblockerFn: blockerFnComposed,\n\t\t\tenableBeforeUnload\n\t\t});\n\t}, [\n\t\tshouldBlockFn,\n\t\tenableBeforeUnload,\n\t\tdisabled,\n\t\twithResolver,\n\t\thistory,\n\t\trouter\n\t]);\n\treturn resolver;\n}\nvar _resolvePromptBlockerArgs = (props) => {\n\tif (\"shouldBlockFn\" in props) return { ...props };\n\tconst shouldBlock = Boolean(props.condition ?? true);\n\tconst fn = props.blockerFn;\n\tconst _customBlockerFn = async () => {\n\t\tif (shouldBlock && fn !== void 0) return await fn();\n\t\treturn shouldBlock;\n\t};\n\treturn {\n\t\tshouldBlockFn: _customBlockerFn,\n\t\tenableBeforeUnload: shouldBlock,\n\t\twithResolver: fn === void 0\n\t};\n};\nfunction Block(opts) {\n\tconst { children, ...rest } = opts;\n\tconst resolver = useBlocker(_resolvePromptBlockerArgs(rest));\n\treturn children ? typeof children === \"function\" ? children(resolver) : children : null;\n}\n//#endregion\nexport { Block, useBlocker };\n\n//# sourceMappingURL=useBlocker.js.map","import { useBlocker } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\n/** A navigation the guard may let through: the pathnames it goes from and to. */\nexport type GuardedNavigation = { currentPath: string; nextPath: string };\n\ntype UnsavedChangesGuardProps = {\n when: boolean;\n /**\n * While `when`, which navigations ask (default: all). E.g. a screen whose edits survive a search-param\n * change asks only when the path changes. Reloading or closing the page always warns.\n */\n shouldBlock?: (navigation: GuardedNavigation) => boolean;\n /** The question; defaults to \"Discard unsaved changes?\" (and its description and buttons). */\n title?: string;\n description?: string;\n /** The button that stays on the page. */\n stayLabel?: string;\n /** The button that leaves. */\n leaveLabel?: string;\n};\n\n/**\n * Dirty-state protection: while `when` is true, in-app navigation asks before discarding edits and the\n * browser warns on reload/close.\n */\nexport const UnsavedChangesGuard = ({\n when,\n shouldBlock,\n title,\n description,\n stayLabel,\n leaveLabel,\n}: UnsavedChangesGuardProps) => {\n const { t } = useTranslation();\n const blocker = useBlocker({\n shouldBlockFn: ({ current, next }) =>\n when && (shouldBlock?.({ currentPath: current.pathname, nextPath: next.pathname }) ?? true),\n enableBeforeUnload: () => when,\n withResolver: true,\n });\n return (\n <ConfirmDialog\n open={blocker.status === 'blocked'}\n onOpenChange={(open) => {\n if (!open && blocker.status === 'blocked') {\n blocker.reset();\n }\n }}\n title={title ?? t('unsaved.title')}\n description={description ?? t('unsaved.description')}\n cancelLabel={stayLabel ?? t('unsaved.stay')}\n confirmLabel={leaveLabel ?? t('unsaved.leave')}\n destructive\n onConfirm={() => blocker.proceed?.()}\n />\n );\n};\n"],"ignoreList":[0],"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{t as n}from"./jsx-runtime-DREnUpxT.js";import{t as r}from"./cn-
|
|
2
|
-
//# sourceMappingURL=UserAvatar
|
|
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{t as r}from"./cn-h5ORT3LK.js";import{_ as i,b as a,y as o}from"./skeleton-DJVukcn6.js";var s=e(t(),1),c=e(n(),1),l=Object.defineProperty,u=(e,t)=>l(e,`name`,{value:t,configurable:!0}),d=`Avatar`,[f,p]=o(d),m=[0,()=>void 0],[h,g]=f(d),_=s.forwardRef(u(function(e,t){let{__scopeAvatar:n,...r}=e,[i,o]=s.useState(`idle`),[l,u]=S();return(0,c.jsx)(h,{scope:n,imageLoadingStatus:i,setImageLoadingStatus:o,imageCount:l,setImageCount:u,children:(0,c.jsx)(a.span,{...r,ref:t})})},`Avatar`)),v=`AvatarFallback`,y=s.forwardRef(u(function(e,t){let{__scopeAvatar:n,delayMs:r,...i}=e,o=g(v,n),[l,u]=s.useState(r===void 0);return s.useEffect(()=>{if(r!==void 0){let e=window.setTimeout(()=>u(!0),r);return()=>window.clearTimeout(e)}},[r]),l&&o.imageLoadingStatus!==`loaded`?(0,c.jsx)(a.span,{...i,ref:t}):null},`AvatarFallback`));function b(e,{loadingStatus:t,setLoadingStatus:n,referrerPolicy:r,crossOrigin:a}){return i(()=>{if(!e){n(`error`);return}let t=new window.Image,i=u(e=>{let t=e.currentTarget;n(x(t))},`handleLoad`),o=u(()=>n(`error`),`handleError`);return t.addEventListener(`load`,i),t.addEventListener(`error`,o),r&&(t.referrerPolicy=r),t.crossOrigin=a??null,t.src=e,n(x(t)),()=>{t.removeEventListener(`load`,i),t.removeEventListener(`error`,o),n(`idle`)}},[e,a,r,n]),t}u(b,`useImageLoadingStatus`);function x(e){return e.complete?e.naturalWidth>0?`loaded`:`error`:`loading`}u(x,`getImageLoadingStatus`);function S(){return m}u(S,`useImageCount`);function C(e){}u(C,`useUpdateImageCount`);function w({className:e,size:t=`default`,...n}){return(0,c.jsx)(_,{"data-slot":`avatar`,"data-size":t,className:r(`group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6`,e),...n})}function T({className:e,...t}){return(0,c.jsx)(y,{"data-slot":`avatar-fallback`,className:r(`flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs`,e),...t})}function E({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`avatar-group`,className:r(`group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background`,e),...t})}function D({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`avatar-group-count`,className:r(`relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3`,e),...t})}var O=e=>{let t=e.replace(/@.*$/,``).split(/[\s._-]+/).filter(Boolean);return(t.length>1?`${t[0]?.[0]??``}${t.at(-1)?.[0]??``}`:t[0]?.[0]??`?`).toUpperCase()},k=({name:e,size:t=`default`,className:n})=>(0,c.jsx)(w,{size:t,"aria-hidden":`true`,className:n,children:(0,c.jsx)(T,{className:`text-xs font-semibold group-data-[size=sm]/avatar:text-2xs`,children:O(e)})});export{E as a,T as i,O as n,D as o,w as r,k as t};
|
|
2
|
+
//# sourceMappingURL=UserAvatar-BHNWHDVb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAvatar--pMv2i3c.js","names":["Avatar","AvatarFallback","AvatarPrimitive.Root","AvatarPrimitive.Fallback","__toESM","require_jsx_runtime","cn","useLayoutEffect2","Primitive","createContextScope","import_react","require_react","import_jsx_runtime","__defProp","__name","target","AVATAR_NAME","createAvatarContext","createAvatarScope","STATIC_IMAGE_COUNT_STATE","AvatarProvider","useAvatarContext","Avatar$1","avatarProps","props","imageLoadingStatus","setImageLoadingStatus","imageCount","setImageCount","useImageCount","__scopeAvatar","forwardedRef","FALLBACK_NAME","AvatarFallback$1","fallbackProps","context","canRender","setCanRender","delayMs","timerId","useImageLoadingStatus","src","setLoadingStatus","image","handleLoad","image2","event","getImageLoadingStatus","handleError","referrerPolicy","crossOrigin","loadingStatus","state","useUpdateImageCount","Avatar","size","className","AvatarFallback","AvatarGroup","AvatarGroupCount","initialsOf","words","name","UserAvatar"],"sources":["../../../../node_modules/.pnpm/@radix-ui+react-avatar@1.2.6_@types+react-dom@19.3.0_@types+react@19.3.0__@types+react@_7afe6898fb0821d3b48e9a7a5e9acf8a/node_modules/@radix-ui/react-avatar/dist/index.mjs","../../src/components/ui/avatar.tsx","../../src/helpers/initials.ts","../../src/components/UserAvatar/index.tsx"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/avatar.tsx\nimport * as React from \"react\";\nimport { IS_DEVELOPMENT } from \"@radix-ui/primitive/is-development\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AVATAR_NAME = \"Avatar\";\nvar [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME);\nvar STATIC_IMAGE_COUNT_STATE = [\n 0,\n () => void 0\n];\nvar [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);\nvar Avatar = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function Avatar2(props, forwardedRef) {\n const { __scopeAvatar, ...avatarProps } = props;\n const [imageLoadingStatus, setImageLoadingStatus] = React.useState(\"idle\");\n const [imageCount, setImageCount] = useImageCount();\n return /* @__PURE__ */ jsx(\n AvatarProvider,\n {\n scope: __scopeAvatar,\n imageLoadingStatus,\n setImageLoadingStatus,\n imageCount,\n setImageCount,\n children: /* @__PURE__ */ jsx(Primitive.span, { ...avatarProps, ref: forwardedRef })\n }\n );\n }, \"Avatar\")\n);\nvar IMAGE_NAME = \"AvatarImage\";\nvar AvatarImage = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function AvatarImage2(props, forwardedRef) {\n const { __scopeAvatar, src, onLoadingStatusChange, ...imageProps } = props;\n const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n useUpdateImageCount(context.setImageCount);\n const imageLoadingStatus = useImageLoadingStatus(src, {\n referrerPolicy: imageProps.referrerPolicy,\n crossOrigin: imageProps.crossOrigin,\n loadingStatus: context.imageLoadingStatus,\n setLoadingStatus: context.setImageLoadingStatus\n });\n const handleLoadingStatusChange = useCallbackRef((status) => {\n onLoadingStatusChange?.(status);\n });\n const loadingStatusRef = React.useRef(imageLoadingStatus);\n useLayoutEffect(() => {\n const previousLoadingStatus = loadingStatusRef.current;\n loadingStatusRef.current = imageLoadingStatus;\n if (imageLoadingStatus !== previousLoadingStatus) {\n handleLoadingStatusChange(imageLoadingStatus);\n }\n }, [imageLoadingStatus, handleLoadingStatusChange]);\n return imageLoadingStatus === \"loaded\" ? /* @__PURE__ */ jsx(Primitive.img, { ...imageProps, ref: forwardedRef, src }) : null;\n }, \"AvatarImage\")\n);\nvar FALLBACK_NAME = \"AvatarFallback\";\nvar AvatarFallback = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function AvatarFallback2(props, forwardedRef) {\n const { __scopeAvatar, delayMs, ...fallbackProps } = props;\n const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n const [canRender, setCanRender] = React.useState(delayMs === void 0);\n React.useEffect(() => {\n if (delayMs !== void 0) {\n const timerId = window.setTimeout(() => setCanRender(true), delayMs);\n return () => window.clearTimeout(timerId);\n }\n }, [delayMs]);\n return canRender && context.imageLoadingStatus !== \"loaded\" ? /* @__PURE__ */ jsx(Primitive.span, { ...fallbackProps, ref: forwardedRef }) : null;\n }, \"AvatarFallback\")\n);\nfunction useImageLoadingStatus(src, {\n loadingStatus,\n setLoadingStatus,\n referrerPolicy,\n crossOrigin\n}) {\n useLayoutEffect(() => {\n if (!src) {\n setLoadingStatus(\"error\");\n return;\n }\n const image = new window.Image();\n const handleLoad = /* @__PURE__ */ __name((event) => {\n const image2 = event.currentTarget;\n setLoadingStatus(getImageLoadingStatus(image2));\n }, \"handleLoad\");\n const handleError = /* @__PURE__ */ __name(() => setLoadingStatus(\"error\"), \"handleError\");\n image.addEventListener(\"load\", handleLoad);\n image.addEventListener(\"error\", handleError);\n if (referrerPolicy) {\n image.referrerPolicy = referrerPolicy;\n }\n image.crossOrigin = crossOrigin ?? null;\n image.src = src;\n setLoadingStatus(getImageLoadingStatus(image));\n return () => {\n image.removeEventListener(\"load\", handleLoad);\n image.removeEventListener(\"error\", handleError);\n setLoadingStatus(\"idle\");\n };\n }, [src, crossOrigin, referrerPolicy, setLoadingStatus]);\n return loadingStatus;\n}\n__name(useImageLoadingStatus, \"useImageLoadingStatus\");\nfunction getImageLoadingStatus(image) {\n return image.complete ? image.naturalWidth > 0 ? \"loaded\" : \"error\" : \"loading\";\n}\n__name(getImageLoadingStatus, \"getImageLoadingStatus\");\nfunction useImageCount() {\n let state = STATIC_IMAGE_COUNT_STATE;\n if (IS_DEVELOPMENT) {\n state = React.useState(0);\n const [imageCount] = state;\n const hasWarnedRef = React.useRef(false);\n React.useEffect(() => {\n if (imageCount > 1 && !hasWarnedRef.current) {\n hasWarnedRef.current = true;\n console.warn(\n \"Avatar: Only one `Avatar.Image` component should be rendered per `Avatar.Root`, but multiple were detected. This will lead to unexpected behavior.\"\n );\n }\n }, [imageCount]);\n }\n return state;\n}\n__name(useImageCount, \"useImageCount\");\nfunction useUpdateImageCount(setImageCount) {\n if (IS_DEVELOPMENT) {\n React.useEffect(() => {\n setImageCount((imageCount) => imageCount + 1);\n return () => {\n setImageCount((imageCount) => imageCount - 1);\n };\n }, [setImageCount]);\n }\n}\n__name(useUpdateImageCount, \"useUpdateImageCount\");\nexport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n AvatarFallback as Fallback,\n AvatarImage as Image,\n Avatar as Root,\n createAvatarScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport { Avatar as AvatarPrimitive } from 'radix-ui';\nimport * as React from 'react';\nimport { cn } from '@/helpers/cn';\n\nfunction Avatar({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: 'default' | 'sm' | 'lg';\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n 'absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none',\n 'group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden',\n 'group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2',\n 'group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n 'group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n 'relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };\n","/** Up to two initials for an avatar: \"Ada Lovelace\" → \"AL\", \"ada@example.com\" → \"A\". */\nexport const initialsOf = (name: string): string => {\n const words = name\n .replace(/@.*$/, '')\n .split(/[\\s._-]+/)\n .filter(Boolean);\n const initials =\n words.length > 1 ? `${words[0]?.[0] ?? ''}${words.at(-1)?.[0] ?? ''}` : (words[0]?.[0] ?? '?');\n return initials.toUpperCase();\n};\n","import { Avatar, AvatarFallback } from '@/components/ui/avatar';\nimport { initialsOf } from '@/helpers/initials';\n\ntype UserAvatarProps = {\n /** A display name or email; up to two initials are shown. */\n name: string;\n /** sm 24px (dense tables, activity rows), default 32px (user lists). */\n size?: 'sm' | 'default';\n className?: string;\n};\n\n/** A person's initials in a circle. Decorative: the name is always shown beside it. */\nexport const UserAvatar = ({ name, size = 'default', className }: UserAvatarProps) => (\n <Avatar size={size} aria-hidden=\"true\" className={className}>\n <AvatarFallback className=\"text-xs font-semibold group-data-[size=sm]/avatar:text-2xs\">\n {initialsOf(name)}\n </AvatarFallback>\n </Avatar>\n);\n"],"ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UserAvatar-BHNWHDVb.js","names":["Avatar","AvatarFallback","AvatarPrimitive.Root","AvatarPrimitive.Fallback","__toESM","require_jsx_runtime","cn","useLayoutEffect2","Primitive","createContextScope","import_react","require_react","import_jsx_runtime","__defProp","__name","target","AVATAR_NAME","createAvatarContext","createAvatarScope","STATIC_IMAGE_COUNT_STATE","AvatarProvider","useAvatarContext","Avatar$1","avatarProps","props","imageLoadingStatus","setImageLoadingStatus","imageCount","setImageCount","useImageCount","__scopeAvatar","forwardedRef","FALLBACK_NAME","AvatarFallback$1","fallbackProps","context","canRender","setCanRender","delayMs","timerId","useImageLoadingStatus","src","setLoadingStatus","image","handleLoad","image2","event","getImageLoadingStatus","handleError","referrerPolicy","crossOrigin","loadingStatus","state","useUpdateImageCount","Avatar","size","className","AvatarFallback","AvatarGroup","AvatarGroupCount","initialsOf","words","name","UserAvatar"],"sources":["../../../../node_modules/.pnpm/@radix-ui+react-avatar@1.2.6_@types+react-dom@19.3.0_@types+react@19.3.0__@types+react@_7afe6898fb0821d3b48e9a7a5e9acf8a/node_modules/@radix-ui/react-avatar/dist/index.mjs","../../src/components/ui/avatar.tsx","../../src/helpers/initials.ts","../../src/components/UserAvatar/index.tsx"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/avatar.tsx\nimport * as React from \"react\";\nimport { IS_DEVELOPMENT } from \"@radix-ui/primitive/is-development\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AVATAR_NAME = \"Avatar\";\nvar [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME);\nvar STATIC_IMAGE_COUNT_STATE = [\n 0,\n () => void 0\n];\nvar [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);\nvar Avatar = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function Avatar2(props, forwardedRef) {\n const { __scopeAvatar, ...avatarProps } = props;\n const [imageLoadingStatus, setImageLoadingStatus] = React.useState(\"idle\");\n const [imageCount, setImageCount] = useImageCount();\n return /* @__PURE__ */ jsx(\n AvatarProvider,\n {\n scope: __scopeAvatar,\n imageLoadingStatus,\n setImageLoadingStatus,\n imageCount,\n setImageCount,\n children: /* @__PURE__ */ jsx(Primitive.span, { ...avatarProps, ref: forwardedRef })\n }\n );\n }, \"Avatar\")\n);\nvar IMAGE_NAME = \"AvatarImage\";\nvar AvatarImage = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function AvatarImage2(props, forwardedRef) {\n const { __scopeAvatar, src, onLoadingStatusChange, ...imageProps } = props;\n const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n useUpdateImageCount(context.setImageCount);\n const imageLoadingStatus = useImageLoadingStatus(src, {\n referrerPolicy: imageProps.referrerPolicy,\n crossOrigin: imageProps.crossOrigin,\n loadingStatus: context.imageLoadingStatus,\n setLoadingStatus: context.setImageLoadingStatus\n });\n const handleLoadingStatusChange = useCallbackRef((status) => {\n onLoadingStatusChange?.(status);\n });\n const loadingStatusRef = React.useRef(imageLoadingStatus);\n useLayoutEffect(() => {\n const previousLoadingStatus = loadingStatusRef.current;\n loadingStatusRef.current = imageLoadingStatus;\n if (imageLoadingStatus !== previousLoadingStatus) {\n handleLoadingStatusChange(imageLoadingStatus);\n }\n }, [imageLoadingStatus, handleLoadingStatusChange]);\n return imageLoadingStatus === \"loaded\" ? /* @__PURE__ */ jsx(Primitive.img, { ...imageProps, ref: forwardedRef, src }) : null;\n }, \"AvatarImage\")\n);\nvar FALLBACK_NAME = \"AvatarFallback\";\nvar AvatarFallback = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function AvatarFallback2(props, forwardedRef) {\n const { __scopeAvatar, delayMs, ...fallbackProps } = props;\n const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n const [canRender, setCanRender] = React.useState(delayMs === void 0);\n React.useEffect(() => {\n if (delayMs !== void 0) {\n const timerId = window.setTimeout(() => setCanRender(true), delayMs);\n return () => window.clearTimeout(timerId);\n }\n }, [delayMs]);\n return canRender && context.imageLoadingStatus !== \"loaded\" ? /* @__PURE__ */ jsx(Primitive.span, { ...fallbackProps, ref: forwardedRef }) : null;\n }, \"AvatarFallback\")\n);\nfunction useImageLoadingStatus(src, {\n loadingStatus,\n setLoadingStatus,\n referrerPolicy,\n crossOrigin\n}) {\n useLayoutEffect(() => {\n if (!src) {\n setLoadingStatus(\"error\");\n return;\n }\n const image = new window.Image();\n const handleLoad = /* @__PURE__ */ __name((event) => {\n const image2 = event.currentTarget;\n setLoadingStatus(getImageLoadingStatus(image2));\n }, \"handleLoad\");\n const handleError = /* @__PURE__ */ __name(() => setLoadingStatus(\"error\"), \"handleError\");\n image.addEventListener(\"load\", handleLoad);\n image.addEventListener(\"error\", handleError);\n if (referrerPolicy) {\n image.referrerPolicy = referrerPolicy;\n }\n image.crossOrigin = crossOrigin ?? null;\n image.src = src;\n setLoadingStatus(getImageLoadingStatus(image));\n return () => {\n image.removeEventListener(\"load\", handleLoad);\n image.removeEventListener(\"error\", handleError);\n setLoadingStatus(\"idle\");\n };\n }, [src, crossOrigin, referrerPolicy, setLoadingStatus]);\n return loadingStatus;\n}\n__name(useImageLoadingStatus, \"useImageLoadingStatus\");\nfunction getImageLoadingStatus(image) {\n return image.complete ? image.naturalWidth > 0 ? \"loaded\" : \"error\" : \"loading\";\n}\n__name(getImageLoadingStatus, \"getImageLoadingStatus\");\nfunction useImageCount() {\n let state = STATIC_IMAGE_COUNT_STATE;\n if (IS_DEVELOPMENT) {\n state = React.useState(0);\n const [imageCount] = state;\n const hasWarnedRef = React.useRef(false);\n React.useEffect(() => {\n if (imageCount > 1 && !hasWarnedRef.current) {\n hasWarnedRef.current = true;\n console.warn(\n \"Avatar: Only one `Avatar.Image` component should be rendered per `Avatar.Root`, but multiple were detected. This will lead to unexpected behavior.\"\n );\n }\n }, [imageCount]);\n }\n return state;\n}\n__name(useImageCount, \"useImageCount\");\nfunction useUpdateImageCount(setImageCount) {\n if (IS_DEVELOPMENT) {\n React.useEffect(() => {\n setImageCount((imageCount) => imageCount + 1);\n return () => {\n setImageCount((imageCount) => imageCount - 1);\n };\n }, [setImageCount]);\n }\n}\n__name(useUpdateImageCount, \"useUpdateImageCount\");\nexport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n AvatarFallback as Fallback,\n AvatarImage as Image,\n Avatar as Root,\n createAvatarScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport { Avatar as AvatarPrimitive } from 'radix-ui';\nimport * as React from 'react';\nimport { cn } from '@/helpers/cn';\n\nfunction Avatar({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: 'default' | 'sm' | 'lg';\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n 'absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none',\n 'group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden',\n 'group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2',\n 'group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n 'group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n 'relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };\n","/** Up to two initials for an avatar: \"Ada Lovelace\" → \"AL\", \"ada@example.com\" → \"A\". */\nexport const initialsOf = (name: string): string => {\n const words = name\n .replace(/@.*$/, '')\n .split(/[\\s._-]+/)\n .filter(Boolean);\n const initials =\n words.length > 1 ? `${words[0]?.[0] ?? ''}${words.at(-1)?.[0] ?? ''}` : (words[0]?.[0] ?? '?');\n return initials.toUpperCase();\n};\n","import { Avatar, AvatarFallback } from '@/components/ui/avatar';\nimport { initialsOf } from '@/helpers/initials';\n\ntype UserAvatarProps = {\n /** A display name or email; up to two initials are shown. */\n name: string;\n /** sm 24px (dense tables, activity rows), default 32px (user lists). */\n size?: 'sm' | 'default';\n className?: string;\n};\n\n/** A person's initials in a circle. Decorative: the name is always shown beside it. */\nexport const UserAvatar = ({ name, size = 'default', className }: UserAvatarProps) => (\n <Avatar size={size} aria-hidden=\"true\" className={className}>\n <AvatarFallback className=\"text-xs font-semibold group-data-[size=sm]/avatar:text-2xs\">\n {initialsOf(name)}\n </AvatarFallback>\n </Avatar>\n);\n"],"ignoreList":[0],"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{t as n}from"./jsx-runtime-DREnUpxT.js";import{F as r,H as i,P as a,V as o,_ as s,a as c,b as l,bt as u,l as d,o as f,s as p,z as ee}from"./cn-CL1YHRrS.js";function m(e){return e}var h=e(t(),1),g=h.useLayoutEffect;function _(e){return e[e.length-1]}function v(e,t){return typeof e==`function`?e(t):e}var y=Object.prototype.hasOwnProperty;function b(e){for(let t in e)if(y.call(e,t))return!0;return!1}var x=()=>Object.create(null),S=(e,t)=>C(e,t,!0);function C(e,t,n,r=0){if(e===t)return e;if(r++>500)return t;let i=Array.isArray(e)&&Array.isArray(t);if(!i&&!(w(e)&&w(t)))return t;let a=Object.keys(e),o=a.length,s=Object.keys(t),c=s.length;if(i?o!==e.length||c!==t.length||o&&_(a)!==`${o-1}`||c&&_(s)!==`${c-1}`:o!==Object.getOwnPropertyNames(e).length||c!==Object.getOwnPropertyNames(t).length||Object.getOwnPropertySymbols(t).length)return t;let l=0,u,d,f;if(i){for(;l<c&&(f=l,d=e[f],u=t[f],u=d===u?d:typeof d==`object`?C(d,u,n,r):u,u===d);l++);if(l===c&&o===c)return e}else{let i=o===c,p=!0;for(;l<c;l++){f=s[l],d=e[f];let o=t[f];u=d===o?d:typeof d==`object`?C(d,o,n,r):o,i&&=u===d&&(a[l]===f||y.call(e,f)),p&&=Object.is(u,o),a[l]=u}if(i)return Object.getOwnPropertySymbols(e).length?t:e;if(p)return t}let p=i?s.fill(0):n?x():{};for(let o=0;o<c;o++)f=i?o:s[o],i?(d=e[f],o>l&&(u=t[f],u=d===u?d:typeof d==`object`?C(d,u,n,r):u),p[f]=o<l?d:u):p[f]=a[o];return p}function w(e){return!e||typeof e!=`object`?!1:(Object.getPrototypeOf(e)?.constructor??Object)===Object}function T(e,t,n,r){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let i=0,a=e.length;i<a;i++){let a=e[i],o=t[i];if(a!==o&&!T(a,o,n,r))return!1}return!0}if(w(e)&&w(t)){if(n){for(let i in t)if((r||t[i]!==void 0)&&!T(e[i],t[i],n,r))return!1;return!0}let i=0;if(r)i=Object.keys(e).length;else for(let t in e)e[t]!==void 0&&i++;for(let a in t)if((r||t[a]!==void 0)&&(i--===0||!T(e[a],t[a],n,r)))return!1;return i===0}return!1}var te=/[\x00-\x1f\x7f"<>`{}]/g;function E(e){return e.replace(te,e=>`%`+e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`))}function D(e){let t;try{t=decodeURI(e)}catch{t=e.replaceAll(/%[0-9A-F]{2}/gi,e=>{try{return decodeURI(e)}catch{return e}})}return E(t)}var O=[`http:`,`https:`,`mailto:`,`tel:`];function k(e){if(e[0]!==`/`&&e.includes(`:`))return/^[\x00-\x20]*([a-z][a-z\d+.\t\n\r-]*:)/i.exec(e)?.[1]?.replace(/[\t\n\r]/g,``).toLowerCase()}var A=/^[\x00-\x20]*[\\/][\t\n\r]*[\\/]/;function j(e,t){if(!e)return!1;if(A.test(e))return!0;let n=k(e);return n?!t.has(n):!1}var M={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},N=/[&><\u2028\u2029]/g;function P(e){return e.replace(N,e=>M[e])}function F(e){if(!e)return e;let t=e;if(/[%\\\x00-\x1f\x7f]/.test(e)){let n=/%25|%5C/gi,r=0,i;for(t=``;(i=n.exec(e))!==null;)t+=D(e.slice(r,i.index))+i[0],r=n.lastIndex;t+=D(r?e.slice(r):e)}return t}function I(e){return/[\s\u0080-\uFFFF]/.test(e)?e.replace(/\s|[^\u0000-\u007F]/gu,encodeURIComponent):e}function L(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function R(e){return e.replace(/\/{2,}/g,`/`)}function z(e){return e===`/`?e:e.replace(/^\/+/,``)}function B(e){let t=e.length;return t>1&&e[t-1]===`/`?e.replace(/\/+$/,``):e}function V(e){return B(z(e))}function H(e,t){return e?.endsWith(`/`)&&e!==`/`&&e!==`${t}/`?e.slice(0,-1):e}function ne(e,t,n=`never`,r){if(t.includes(`//`)&&(t=R(t)),t.startsWith(`/`))return t.length===1||n===`preserve`?t:n===`always`?t.endsWith(`/`)?t:`${t}/`:t.endsWith(`/`)?t.slice(0,-1):t;let i=t===`.`,a;if(r){a=i?e:e+`\0`+t;let n=r.get(a);if(n)return n}let o;if(i)o=e.split(`/`);else{for(e.includes(`//`)&&(e=R(e)),o=e.split(`/`);o.length>1&&_(o)===``;)o.pop();let n=t.split(`/`);for(let e=0,t=n.length;e<t;e++){let r=n[e];r===``?e?e===t-1&&o.push(r):o=[r]:r===`..`?o.length>1?o.pop():o=[``]:r===`.`||o.push(r)}}o.length>1&&(_(o)===``?n===`never`&&o.pop():n===`always`&&o.push(``));let s=o.join(`/`),c=(i?R(s):s)||`/`;return a&&r&&r.set(a,c),c}function re(e){let t=new Map(e.map(e=>[encodeURIComponent(e),e])),n=new RegExp([...t.keys()].join(`|`).replace(/[.*()]/g,`\\$&`),`g`);return e=>e.replace(n,e=>t.get(e)??e)}function ie(e){return e==null||e===``}function ae(e,t,n){if(typeof t!=`string`)return``+(t??void 0);let r=e===`_splat`;if(r&&(!t||/^[a-zA-Z0-9\-._~!/]*$/.test(t)))return t;let i=encodeURIComponent(t);return r&&(i=i.replaceAll(`%2F`,`/`)),n?n(i):i}function oe(e,t,n,r,i){let a=e.endsWith(`/`)?`/`:``,o=``;for(let e of t){if(typeof e==`string`){o+=e;continue}let[t,s,c,l]=e,u=t===2,d=u&&l!==void 0?l+a:l,f=n[s];if(t!==3||f!=null){if(i&&(i[s]=f,u&&(i[`*`]=f)),u&&ie(f)){if(c===`/`&&!d)continue;f=``}o+=c+ae(s,f,r)+(d||``)}}return o+a||`/`}var se=`Error preloading route! ☝️`,U=e(n(),1),W=()=>!0,ce=()=>!1;function le({children:e,fallback:t=null}){return(0,U.jsx)(h.Fragment,{children:ue()?e:t})}function ue(e=!0){return h.useSyncExternalStore(de,W,e?ce:W)}function de(){return()=>{}}var fe=h.createContext(null);function G(e){return h.useContext(fe)}var pe=ee();function me(e,t){return e===t}function he(e,t=e=>e,n){let r=n?.compare??me,i=(0,h.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,h.useCallback)(()=>e.get(),[e]);return(0,pe.useSyncExternalStoreWithSelector)(i,a,a,t,r)}function ge(e){let t=G();return h.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function _e(e){let t=G(),n=ge(),r=h.useRef(null);return g(()=>{r.current!==e&&(n(e),r.current=e)},[t,e,n]),null}function ve(...e){let t=h.useRef(e),n=t.current;return e.forEach((e,t)=>{T(n[t],e,!1,!0)||(n[t]=e)}),t.current}function K(e,t){e.preloadRoute(t).catch(e=>{console.warn(e),console.warn(se)})}var ye={compare:(e,t)=>e[0]===t[0]&&e[1]===t[1]};function be(e,t){let n=typeof e==`string`&&k(e);if(n)return t.has(n)?e:null}function xe(e,t,n,r,i){let a=H(e.pathname,r),o=H(t.pathname,r);return(n?.exact?a!==o:!a.startsWith(o)||a.length!==o.length&&a[o.length]!==`/`)||(n?.includeSearch??!0)&&!T(e.search,t.search,!n?.exact,n?.explicitUndefined)?!1:!n?.includeHash||i&&e.hash===t.hash}function Se(e,t,n){let r=G(),i=h.useRef(null),a=h.useCallback(e=>{if(i.current=e,typeof t==`function`)return t(e);t&&(t.current=e)},[t]),{activeOptions:o,to:s,preload:c,preloadDelay:l,hashScrollIntoView:u,replace:d,startTransition:f,resetScroll:p,viewTransition:ee,ignoreBlocker:m,disabled:g,target:_,onClick:v,onBlur:y,onFocus:b,onMouseEnter:x,onMouseLeave:S,onTouchStart:C}=e,w=ue(!!o?.includeHash),[T,te,E]=ve(e.search,e.params,o),[D,O]=h.useMemo(()=>[e,{...e}],[r,e.from,e._fromLocation,e.hash,e.to,T,te,e.state,e.mask,e.unsafeRelative]),A=h.useMemo(()=>{let e=be(s,r.protocolAllowlist);if(e!==void 0){let t=[e??void 0];return()=>t}let t,n;return e=>{D._fromLocation||(O._fromLocation=e);let i=r.buildLocation(O),a=Oe(i,r,g);return(!t||t[0]!==a)&&(t=[a,!(g||a&&!k(a))&&void 0],n=[a,!0]),t[1]!==void 0&&xe(e,i,E,r.basepath,w)?n:t}},[E,g,w,D,O,r,s]),[j,M]=he(r.stores.location,A,ye),N=M===void 0&&j,P=g||j===void 0,F=h.useRef(!1),I=e.reloadDocument||N||P?!1:c??r.options.defaultPreload,L=l??r.options.defaultPreloadDelay??0,R=h.useCallback(e=>{let t=e?.isIntersecting;if(!(t??I===`intent`)){t===!1&&J(i);return}if(!L){K(r,D);return}q.has(i)||q.set(i,setTimeout(()=>{q.delete(i),K(r,D)},L))},[r,D,i,I,L]);h.useEffect(()=>{if(!I)return;I===`render`&&!F.current&&(F.current=!0,K(r,D));let e=!0,t;return I===`viewport`&&i.current&&typeof IntersectionObserver==`function`&&(t=new IntersectionObserver(t=>{e&&R(t.pop())},{rootMargin:`100px`}),t.observe(i.current)),()=>{e=!1,t?.disconnect(),J(i)}},[r,D,I,R,i]);let z=Ee(e,n);if(z.ref=t?a:i,N)return z.href=N,z;let B=e=>{let t=_??e.currentTarget.getAttribute(`target`);!P&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(!t||t===`_self`)&&e.button===0&&(e.preventDefault(),r.navigate({...D,replace:d,resetScroll:p,hashScrollIntoView:u,startTransition:f,viewTransition:ee,ignoreBlocker:m}))},V=()=>{I===`intent`&&K(r,D)},H=()=>{I===`intent`&&J(i)};return z.onClick=Y(v,B),z.onBlur=Y(y,H),z.onFocus=Y(b,R),z.onMouseEnter=Y(x,R),z.onMouseLeave=Y(S,H),z.onTouchStart=Y(C,V),De(z,e,M,j,P,n)}var Ce={},we={className:`active`},Te=new Set([`to`,`params`,`search`,`hash`,`state`,`mask`,`from`,`unsafeRelative`,`_fromLocation`,`reloadDocument`,`preload`,`preloadDelay`,`preloadIntentProximity`,`hashScrollIntoView`,`replace`,`startTransition`,`resetScroll`,`viewTransition`,`ignoreBlocker`,`activeProps`,`inactiveProps`,`activeOptions`,`_asChild`]);function Ee(e,t){let n={};for(let r in e)Te.has(r)||r===`type`&&t!==void 0||r===`disabled`&&t===`a`||(n[r]=e[r]);return n}function De(e,t,n,r,i,a){let{activeProps:o,inactiveProps:s,className:c,style:l,target:u}=t,d=v(n?o:s,{})??(n?we:Ce);Object.assign(e,d),e.href=r,a!==`a`&&(e.disabled=i),e.target=u;let f=d.style;(l||f)&&(e.style=l&&f?{...l,...f}:l||f);let p=d.className;return(c||p)&&(e.className=c?p?`${c} ${p}`:c:p),i&&(e.role=`link`,e[`aria-disabled`]=!0),n&&(e[`data-status`]=`active`,e[`aria-current`]=`page`),e}var q=new WeakMap,J=e=>{clearTimeout(q.get(e)),q.delete(e)},Y=(e,t)=>e?n=>n.defaultPrevented||(e(n),n.defaultPrevented||t(n)):t;function Oe(e,t,n){if(n)return;let r=e.maskedLocation??e,i=r.external?r.publicHref:t.history.createHref(r.publicHref)||`/`;if(!r.external&&i===r.publicHref||!j(i,t.protocolAllowlist))return i}function ke(e){return h.forwardRef(function(t,n){return(0,U.jsx)(Ae,{...t,_asChild:e,ref:n})})}var Ae=h.memo(h.forwardRef((e,t)=>{let n=e._asChild||`a`,r=Se(e,t,n),i=typeof e.children==`function`?e.children({isActive:r[`data-status`]===`active`}):e.children;return h.createElement(n,r,i)}),je);function je(e,t){let n=0;for(let r in t)if(n++,e[r]!==t[r]&&(!Te.has(r)||!T(e[r],t[r],!1,!0)))return!1;for(let t in e)n--;return n===0}var Me=e=>e,Ne=e=>e instanceof r&&e.status===401,Pe=e=>e instanceof r&&e.status===403,Fe=e=>e instanceof r&&e.status===404,Ie=e=>e instanceof r&&e.status===409,X=(e,t)=>e instanceof r&&e.code===t,Le=e=>{if(!X(e,`SCHEMA_INVALID`))return[];let t=e.details?.issues;return Array.isArray(t)?t:[]},Z=m({queryKey:a.me,queryFn:async()=>{try{let e=await d.auth.me();return f(e.csrfToken),e}catch(e){if(Ne(e))return null;if(X(e,`SITE_NOT_FOUND`)&&!s().explicit)return l(),new Promise(()=>void 0);throw e}},staleTime:6e4}),Re=m({queryKey:a.setupStatus,queryFn:()=>d.setup.status(),staleTime:1/0}),ze=()=>i(Z),Be=()=>i(Re),Q=async(e,t)=>{f(t.csrfToken),e.removeQueries({predicate:e=>e.queryKey[0]!==a.me[0]}),e.setQueryData(a.setupStatus,e=>({requiresToken:!1,...e,required:!1})),await e.fetchQuery({...Z,staleTime:0})},$={silent:!0},Ve=()=>{let e=u();return o({mutationKey:[`auth`,`login`],meta:$,mutationFn:e=>p(()=>d.auth.login(e)),onSuccess:t=>Q(e,t)})},He=()=>{let e=u();return o({mutationKey:[`setup`],meta:$,mutationFn:e=>p(()=>d.setup.complete(e)),onSuccess:t=>Q(e,t)})},Ue=()=>{let e=u();return o({mutationKey:[`auth`,`acceptInvitation`],meta:$,mutationFn:e=>p(()=>d.invitations.accept(e)),onSuccess:t=>Q(e,t)})},We=()=>{let e=u();return o({mutationKey:[`auth`,`logout`],mutationFn:()=>p(()=>d.auth.logout()),onSettled:()=>{c(),e.setQueryData(a.me,null),e.removeQueries({predicate:e=>e.queryKey[0]!==a.me[0]})}})},Ge=()=>o({mutationKey:[`auth`,`requestPasswordReset`],meta:$,mutationFn:e=>p(()=>d.auth.requestPasswordReset(e))}),Ke=e=>i({queryKey:a.invitationInspect(e??``),queryFn:()=>d.invitations.inspect(e??``),enabled:!!e,retry:!1,staleTime:1/0,meta:{silent:!0}}),qe=()=>o({mutationKey:[`auth`,`confirmPasswordReset`],meta:$,mutationFn:e=>p(()=>d.auth.confirmPasswordReset(e))}),Je=()=>{let e=u();return o({mutationKey:[`auth`,`updateProfile`],meta:$,mutationFn:e=>p(()=>d.auth.updateProfile(e)),onSuccess:t=>e.setQueryData(a.me,e=>e&&{...e,user:t})})},Ye=()=>o({mutationKey:[`auth`,`changePassword`],meta:$,mutationFn:e=>p(()=>d.auth.changePassword(e)),onSuccess:({csrfToken:e})=>f(e)}),Xe=e=>{let{data:t}=ze();return t?.globalPermissions.includes(e)??!1};export{g as $,R as A,F as B,Me as C,G as D,he as E,z as F,k as G,I as H,B as I,j as J,b as K,O as L,oe as M,ne as N,fe as O,V as P,C as Q,L as R,ke as S,ge as T,P as U,T as V,v as W,S as X,_ as Y,A as Z,Pe as _,qe as a,Le as b,Ve as c,Ge as d,m as et,He as f,Ie as g,X as h,Ye as i,re as j,le as k,We as l,Je as m,Re as n,Xe as o,Be as p,y as q,Ue as r,Ke as s,Z as t,ze as u,Fe as v,_e as w,Ae as x,Ne as y,x as z};
|
|
2
|
-
//# sourceMappingURL=auth-
|
|
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{F as r,H as i,P as a,V as o,_ as s,a as c,b as l,bt as u,l as d,o as f,s as p,z as ee}from"./cn-h5ORT3LK.js";function m(e){return e}var h=e(t(),1),g=h.useLayoutEffect;function _(e){return e[e.length-1]}function v(e,t){return typeof e==`function`?e(t):e}var y=Object.prototype.hasOwnProperty;function b(e){for(let t in e)if(y.call(e,t))return!0;return!1}var x=()=>Object.create(null),S=(e,t)=>C(e,t,!0);function C(e,t,n,r=0){if(e===t)return e;if(r++>500)return t;let i=Array.isArray(e)&&Array.isArray(t);if(!i&&!(w(e)&&w(t)))return t;let a=Object.keys(e),o=a.length,s=Object.keys(t),c=s.length;if(i?o!==e.length||c!==t.length||o&&_(a)!==`${o-1}`||c&&_(s)!==`${c-1}`:o!==Object.getOwnPropertyNames(e).length||c!==Object.getOwnPropertyNames(t).length||Object.getOwnPropertySymbols(t).length)return t;let l=0,u,d,f;if(i){for(;l<c&&(f=l,d=e[f],u=t[f],u=d===u?d:typeof d==`object`?C(d,u,n,r):u,u===d);l++);if(l===c&&o===c)return e}else{let i=o===c,p=!0;for(;l<c;l++){f=s[l],d=e[f];let o=t[f];u=d===o?d:typeof d==`object`?C(d,o,n,r):o,i&&=u===d&&(a[l]===f||y.call(e,f)),p&&=Object.is(u,o),a[l]=u}if(i)return Object.getOwnPropertySymbols(e).length?t:e;if(p)return t}let p=i?s.fill(0):n?x():{};for(let o=0;o<c;o++)f=i?o:s[o],i?(d=e[f],o>l&&(u=t[f],u=d===u?d:typeof d==`object`?C(d,u,n,r):u),p[f]=o<l?d:u):p[f]=a[o];return p}function w(e){return!e||typeof e!=`object`?!1:(Object.getPrototypeOf(e)?.constructor??Object)===Object}function T(e,t,n,r){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let i=0,a=e.length;i<a;i++){let a=e[i],o=t[i];if(a!==o&&!T(a,o,n,r))return!1}return!0}if(w(e)&&w(t)){if(n){for(let i in t)if((r||t[i]!==void 0)&&!T(e[i],t[i],n,r))return!1;return!0}let i=0;if(r)i=Object.keys(e).length;else for(let t in e)e[t]!==void 0&&i++;for(let a in t)if((r||t[a]!==void 0)&&(i--===0||!T(e[a],t[a],n,r)))return!1;return i===0}return!1}var te=/[\x00-\x1f\x7f"<>`{}]/g;function E(e){return e.replace(te,e=>`%`+e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`))}function D(e){let t;try{t=decodeURI(e)}catch{t=e.replaceAll(/%[0-9A-F]{2}/gi,e=>{try{return decodeURI(e)}catch{return e}})}return E(t)}var O=[`http:`,`https:`,`mailto:`,`tel:`];function k(e){if(e[0]!==`/`&&e.includes(`:`))return/^[\x00-\x20]*([a-z][a-z\d+.\t\n\r-]*:)/i.exec(e)?.[1]?.replace(/[\t\n\r]/g,``).toLowerCase()}var A=/^[\x00-\x20]*[\\/][\t\n\r]*[\\/]/;function j(e,t){if(!e)return!1;if(A.test(e))return!0;let n=k(e);return n?!t.has(n):!1}var M={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},N=/[&><\u2028\u2029]/g;function P(e){return e.replace(N,e=>M[e])}function F(e){if(!e)return e;let t=e;if(/[%\\\x00-\x1f\x7f]/.test(e)){let n=/%25|%5C/gi,r=0,i;for(t=``;(i=n.exec(e))!==null;)t+=D(e.slice(r,i.index))+i[0],r=n.lastIndex;t+=D(r?e.slice(r):e)}return t}function I(e){return/[\s\u0080-\uFFFF]/.test(e)?e.replace(/\s|[^\u0000-\u007F]/gu,encodeURIComponent):e}function L(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function R(e){return e.replace(/\/{2,}/g,`/`)}function z(e){return e===`/`?e:e.replace(/^\/+/,``)}function B(e){let t=e.length;return t>1&&e[t-1]===`/`?e.replace(/\/+$/,``):e}function V(e){return B(z(e))}function H(e,t){return e?.endsWith(`/`)&&e!==`/`&&e!==`${t}/`?e.slice(0,-1):e}function ne(e,t,n=`never`,r){if(t.includes(`//`)&&(t=R(t)),t.startsWith(`/`))return t.length===1||n===`preserve`?t:n===`always`?t.endsWith(`/`)?t:`${t}/`:t.endsWith(`/`)?t.slice(0,-1):t;let i=t===`.`,a;if(r){a=i?e:e+`\0`+t;let n=r.get(a);if(n)return n}let o;if(i)o=e.split(`/`);else{for(e.includes(`//`)&&(e=R(e)),o=e.split(`/`);o.length>1&&_(o)===``;)o.pop();let n=t.split(`/`);for(let e=0,t=n.length;e<t;e++){let r=n[e];r===``?e?e===t-1&&o.push(r):o=[r]:r===`..`?o.length>1?o.pop():o=[``]:r===`.`||o.push(r)}}o.length>1&&(_(o)===``?n===`never`&&o.pop():n===`always`&&o.push(``));let s=o.join(`/`),c=(i?R(s):s)||`/`;return a&&r&&r.set(a,c),c}function re(e){let t=new Map(e.map(e=>[encodeURIComponent(e),e])),n=new RegExp([...t.keys()].join(`|`).replace(/[.*()]/g,`\\$&`),`g`);return e=>e.replace(n,e=>t.get(e)??e)}function ie(e){return e==null||e===``}function ae(e,t,n){if(typeof t!=`string`)return``+(t??void 0);let r=e===`_splat`;if(r&&(!t||/^[a-zA-Z0-9\-._~!/]*$/.test(t)))return t;let i=encodeURIComponent(t);return r&&(i=i.replaceAll(`%2F`,`/`)),n?n(i):i}function oe(e,t,n,r,i){let a=e.endsWith(`/`)?`/`:``,o=``;for(let e of t){if(typeof e==`string`){o+=e;continue}let[t,s,c,l]=e,u=t===2,d=u&&l!==void 0?l+a:l,f=n[s];if(t!==3||f!=null){if(i&&(i[s]=f,u&&(i[`*`]=f)),u&&ie(f)){if(c===`/`&&!d)continue;f=``}o+=c+ae(s,f,r)+(d||``)}}return o+a||`/`}var se=`Error preloading route! ☝️`,U=e(n(),1),W=()=>!0,ce=()=>!1;function le({children:e,fallback:t=null}){return(0,U.jsx)(h.Fragment,{children:ue()?e:t})}function ue(e=!0){return h.useSyncExternalStore(de,W,e?ce:W)}function de(){return()=>{}}var fe=h.createContext(null);function G(e){return h.useContext(fe)}var pe=ee();function me(e,t){return e===t}function he(e,t=e=>e,n){let r=n?.compare??me,i=(0,h.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,h.useCallback)(()=>e.get(),[e]);return(0,pe.useSyncExternalStoreWithSelector)(i,a,a,t,r)}function ge(e){let t=G();return h.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function _e(e){let t=G(),n=ge(),r=h.useRef(null);return g(()=>{r.current!==e&&(n(e),r.current=e)},[t,e,n]),null}function ve(...e){let t=h.useRef(e),n=t.current;return e.forEach((e,t)=>{T(n[t],e,!1,!0)||(n[t]=e)}),t.current}function K(e,t){e.preloadRoute(t).catch(e=>{console.warn(e),console.warn(se)})}var ye={compare:(e,t)=>e[0]===t[0]&&e[1]===t[1]};function be(e,t){let n=typeof e==`string`&&k(e);if(n)return t.has(n)?e:null}function xe(e,t,n,r,i){let a=H(e.pathname,r),o=H(t.pathname,r);return(n?.exact?a!==o:!a.startsWith(o)||a.length!==o.length&&a[o.length]!==`/`)||(n?.includeSearch??!0)&&!T(e.search,t.search,!n?.exact,n?.explicitUndefined)?!1:!n?.includeHash||i&&e.hash===t.hash}function Se(e,t,n){let r=G(),i=h.useRef(null),a=h.useCallback(e=>{if(i.current=e,typeof t==`function`)return t(e);t&&(t.current=e)},[t]),{activeOptions:o,to:s,preload:c,preloadDelay:l,hashScrollIntoView:u,replace:d,startTransition:f,resetScroll:p,viewTransition:ee,ignoreBlocker:m,disabled:g,target:_,onClick:v,onBlur:y,onFocus:b,onMouseEnter:x,onMouseLeave:S,onTouchStart:C}=e,w=ue(!!o?.includeHash),[T,te,E]=ve(e.search,e.params,o),[D,O]=h.useMemo(()=>[e,{...e}],[r,e.from,e._fromLocation,e.hash,e.to,T,te,e.state,e.mask,e.unsafeRelative]),A=h.useMemo(()=>{let e=be(s,r.protocolAllowlist);if(e!==void 0){let t=[e??void 0];return()=>t}let t,n;return e=>{D._fromLocation||(O._fromLocation=e);let i=r.buildLocation(O),a=Oe(i,r,g);return(!t||t[0]!==a)&&(t=[a,!(g||a&&!k(a))&&void 0],n=[a,!0]),t[1]!==void 0&&xe(e,i,E,r.basepath,w)?n:t}},[E,g,w,D,O,r,s]),[j,M]=he(r.stores.location,A,ye),N=M===void 0&&j,P=g||j===void 0,F=h.useRef(!1),I=e.reloadDocument||N||P?!1:c??r.options.defaultPreload,L=l??r.options.defaultPreloadDelay??0,R=h.useCallback(e=>{let t=e?.isIntersecting;if(!(t??I===`intent`)){t===!1&&J(i);return}if(!L){K(r,D);return}q.has(i)||q.set(i,setTimeout(()=>{q.delete(i),K(r,D)},L))},[r,D,i,I,L]);h.useEffect(()=>{if(!I)return;I===`render`&&!F.current&&(F.current=!0,K(r,D));let e=!0,t;return I===`viewport`&&i.current&&typeof IntersectionObserver==`function`&&(t=new IntersectionObserver(t=>{e&&R(t.pop())},{rootMargin:`100px`}),t.observe(i.current)),()=>{e=!1,t?.disconnect(),J(i)}},[r,D,I,R,i]);let z=Ee(e,n);if(z.ref=t?a:i,N)return z.href=N,z;let B=e=>{let t=_??e.currentTarget.getAttribute(`target`);!P&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(!t||t===`_self`)&&e.button===0&&(e.preventDefault(),r.navigate({...D,replace:d,resetScroll:p,hashScrollIntoView:u,startTransition:f,viewTransition:ee,ignoreBlocker:m}))},V=()=>{I===`intent`&&K(r,D)},H=()=>{I===`intent`&&J(i)};return z.onClick=Y(v,B),z.onBlur=Y(y,H),z.onFocus=Y(b,R),z.onMouseEnter=Y(x,R),z.onMouseLeave=Y(S,H),z.onTouchStart=Y(C,V),De(z,e,M,j,P,n)}var Ce={},we={className:`active`},Te=new Set([`to`,`params`,`search`,`hash`,`state`,`mask`,`from`,`unsafeRelative`,`_fromLocation`,`reloadDocument`,`preload`,`preloadDelay`,`preloadIntentProximity`,`hashScrollIntoView`,`replace`,`startTransition`,`resetScroll`,`viewTransition`,`ignoreBlocker`,`activeProps`,`inactiveProps`,`activeOptions`,`_asChild`]);function Ee(e,t){let n={};for(let r in e)Te.has(r)||r===`type`&&t!==void 0||r===`disabled`&&t===`a`||(n[r]=e[r]);return n}function De(e,t,n,r,i,a){let{activeProps:o,inactiveProps:s,className:c,style:l,target:u}=t,d=v(n?o:s,{})??(n?we:Ce);Object.assign(e,d),e.href=r,a!==`a`&&(e.disabled=i),e.target=u;let f=d.style;(l||f)&&(e.style=l&&f?{...l,...f}:l||f);let p=d.className;return(c||p)&&(e.className=c?p?`${c} ${p}`:c:p),i&&(e.role=`link`,e[`aria-disabled`]=!0),n&&(e[`data-status`]=`active`,e[`aria-current`]=`page`),e}var q=new WeakMap,J=e=>{clearTimeout(q.get(e)),q.delete(e)},Y=(e,t)=>e?n=>n.defaultPrevented||(e(n),n.defaultPrevented||t(n)):t;function Oe(e,t,n){if(n)return;let r=e.maskedLocation??e,i=r.external?r.publicHref:t.history.createHref(r.publicHref)||`/`;if(!r.external&&i===r.publicHref||!j(i,t.protocolAllowlist))return i}function ke(e){return h.forwardRef(function(t,n){return(0,U.jsx)(Ae,{...t,_asChild:e,ref:n})})}var Ae=h.memo(h.forwardRef((e,t)=>{let n=e._asChild||`a`,r=Se(e,t,n),i=typeof e.children==`function`?e.children({isActive:r[`data-status`]===`active`}):e.children;return h.createElement(n,r,i)}),je);function je(e,t){let n=0;for(let r in t)if(n++,e[r]!==t[r]&&(!Te.has(r)||!T(e[r],t[r],!1,!0)))return!1;for(let t in e)n--;return n===0}var Me=e=>e,Ne=e=>e instanceof r&&e.status===401,Pe=e=>e instanceof r&&e.status===403,Fe=e=>e instanceof r&&e.status===404,Ie=e=>e instanceof r&&e.status===409,X=(e,t)=>e instanceof r&&e.code===t,Le=e=>{if(!X(e,`SCHEMA_INVALID`))return[];let t=e.details?.issues;return Array.isArray(t)?t:[]},Z=m({queryKey:a.me,queryFn:async()=>{try{let e=await d.auth.me();return f(e.csrfToken),e}catch(e){if(Ne(e))return null;if(X(e,`SITE_NOT_FOUND`)&&!s().explicit)return l(),new Promise(()=>void 0);throw e}},staleTime:6e4}),Re=m({queryKey:a.setupStatus,queryFn:()=>d.setup.status(),staleTime:1/0}),ze=()=>i(Z),Be=()=>i(Re),Q=async(e,t)=>{f(t.csrfToken),e.removeQueries({predicate:e=>e.queryKey[0]!==a.me[0]}),e.setQueryData(a.setupStatus,e=>({requiresToken:!1,...e,required:!1})),await e.fetchQuery({...Z,staleTime:0})},$={silent:!0},Ve=()=>{let e=u();return o({mutationKey:[`auth`,`login`],meta:$,mutationFn:e=>p(()=>d.auth.login(e)),onSuccess:t=>Q(e,t)})},He=()=>{let e=u();return o({mutationKey:[`setup`],meta:$,mutationFn:e=>p(()=>d.setup.complete(e)),onSuccess:t=>Q(e,t)})},Ue=()=>{let e=u();return o({mutationKey:[`auth`,`acceptInvitation`],meta:$,mutationFn:e=>p(()=>d.invitations.accept(e)),onSuccess:t=>Q(e,t)})},We=()=>{let e=u();return o({mutationKey:[`auth`,`logout`],mutationFn:()=>p(()=>d.auth.logout()),onSettled:()=>{c(),e.setQueryData(a.me,null),e.removeQueries({predicate:e=>e.queryKey[0]!==a.me[0]})}})},Ge=()=>o({mutationKey:[`auth`,`requestPasswordReset`],meta:$,mutationFn:e=>p(()=>d.auth.requestPasswordReset(e))}),Ke=e=>i({queryKey:a.invitationInspect(e??``),queryFn:()=>d.invitations.inspect(e??``),enabled:!!e,retry:!1,staleTime:1/0,meta:{silent:!0}}),qe=()=>o({mutationKey:[`auth`,`confirmPasswordReset`],meta:$,mutationFn:e=>p(()=>d.auth.confirmPasswordReset(e))}),Je=()=>{let e=u();return o({mutationKey:[`auth`,`updateProfile`],meta:$,mutationFn:e=>p(()=>d.auth.updateProfile(e)),onSuccess:t=>e.setQueryData(a.me,e=>e&&{...e,user:t})})},Ye=()=>o({mutationKey:[`auth`,`changePassword`],meta:$,mutationFn:e=>p(()=>d.auth.changePassword(e)),onSuccess:({csrfToken:e})=>f(e)}),Xe=e=>{let{data:t}=ze();return t?.globalPermissions.includes(e)??!1};export{g as $,R as A,F as B,Me as C,G as D,he as E,z as F,k as G,I as H,B as I,j as J,b as K,O as L,oe as M,ne as N,fe as O,V as P,C as Q,L as R,ke as S,ge as T,P as U,T as V,v as W,S as X,_ as Y,A as Z,Pe as _,qe as a,Le as b,Ve as c,Ge as d,m as et,He as f,Ie as g,X as h,Ye as i,re as j,le as k,We as l,Je as m,Re as n,Xe as o,Be as p,y as q,Ue as r,Ke as s,Z as t,ze as u,Fe as v,_e as w,Ae as x,Ne as y,x as z};
|
|
2
|
+
//# sourceMappingURL=auth-BzCgJtgr.js.map
|