@nulib/clover 4.4.2 → 4.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/components/Annotations/Annotations.mjs +11 -5
- package/dist/components/Items/Items.mjs +15 -5
- package/dist/components/Items/PagerLayout.mjs +1 -0
- package/dist/components/Map/MapView.mjs +1 -1
- package/dist/components/Panel/About.mjs +16 -5
- package/dist/components/Panel/AboutActions.mjs +10 -16
- package/dist/components/Panel/LanguageToggle.mjs +69 -0
- package/dist/components/Panel/Panel.mjs +9 -1
- package/dist/components/Panel/ReadingLanguages.mjs +2 -16
- package/dist/components/Panel/sections.mjs +6 -1
- package/dist/components/Root/useRootState.mjs +46 -4
- package/dist/components/Search/Search.mjs +10 -7
- package/dist/components/Transcript/Transcript.mjs +42 -33
- package/dist/core/image-service-content.mjs +108 -0
- package/dist/core/load.mjs +38 -1
- package/dist/i18n/config.mjs +88 -14
- package/dist/i18n/languages.mjs +42 -8
- package/dist/i18n/locales/index.mjs +4 -1
- package/dist/i18n/locales/ja.json.mjs +5 -0
- package/dist/i18n/locales/zh-Hans.json.mjs +5 -0
- package/dist/i18n/locales/zh-Hant.json.mjs +5 -0
- package/dist/index.d.mts +109 -24
- package/dist/lib/renderer/CanvasRenderer.mjs +20 -5
- package/dist/map/index.d.mts +3 -2
- package/dist/react/readingLanguages.mjs +15 -2
- package/dist/styles/default.css +1 -1
- package/dist/styles/items.css +1 -1
- package/dist/styles/panel.css +1 -1
- package/dist/styles.css +1 -1
- package/dist/templates/default/Default.mjs +2 -0
- package/dist/templates/document/Document.mjs +5 -1
- package/dist/templates/gallery/Gallery.mjs +2 -0
- package/dist/templates/index.d.mts +53 -11
- package/dist/templates/shared/LightboxView.mjs +2 -0
- package/dist/ui/GlobeGlyph.mjs +26 -0
- package/dist/ui/LanguageChoice.mjs +87 -20
- package/dist/ui/LanguageMenu.mjs +94 -0
- package/dist/ui/useScrollTrack.mjs +34 -19
- package/dist/web-components/About-BMlEaTqj.mjs +1 -0
- package/dist/web-components/AnnotationItems-DNur2mn_.mjs +1 -0
- package/dist/web-components/{AnnotationMenu-BiM0n-6H.mjs → AnnotationMenu-9pQOKEMb.mjs} +1 -1
- package/dist/web-components/AnnotationState-BVDRV-1B.mjs +1 -0
- package/dist/web-components/{Annotations-x5H_Vls9.mjs → Annotations-B5WD596p.mjs} +1 -1
- package/dist/web-components/Annotations-BmETEgUn.mjs +2 -0
- package/dist/web-components/{Body-BWOsHKU1.mjs → Body-BgCsKpGr.mjs} +1 -1
- package/dist/web-components/{BodyAlert-DYfrepDo.mjs → BodyAlert-Dt_medBN.mjs} +1 -1
- package/dist/web-components/{Button-Ch0E6GVj.mjs → Button-DW1Y9SI4.mjs} +1 -1
- package/dist/web-components/{Camera-CY4adJpn.mjs → Camera-Cj_vOD9V.mjs} +1 -1
- package/dist/web-components/{Canvas2DBackend-eFcDTxq6.mjs → Canvas2DBackend-BjCgV8Gn.mjs} +1 -1
- package/dist/web-components/{CanvasView-BqsXUI8n.mjs → CanvasView-fCOQzA_R.mjs} +2 -2
- package/dist/web-components/{CaptionDetails-CuYSbD70.mjs → CaptionDetails-Z5FFvEp8.mjs} +1 -1
- package/dist/web-components/{ChaptersMenu-IlAt1pp2.mjs → ChaptersMenu-b80HFV28.mjs} +1 -1
- package/dist/web-components/{Chevron-uZe3N2Pt.mjs → Chevron-D9HTNAaC.mjs} +1 -1
- package/dist/web-components/{ChoiceMenu-DBJynLGl.mjs → ChoiceMenu-CXtI293_.mjs} +1 -1
- package/dist/web-components/{Collection-C1sRlJK1.mjs → Collection-CASEkwgi.mjs} +1 -1
- package/dist/web-components/{CollectionSelect-BYMQaanx.mjs → CollectionSelect-Boc7wy9j.mjs} +1 -1
- package/dist/web-components/{Connected-Bd2T2EUc.mjs → Connected-Biw2I6Po.mjs} +1 -1
- package/dist/web-components/{Connected-Ckar86TI.mjs → Connected-CNlmumRT.mjs} +1 -1
- package/dist/web-components/{Connected-Dpp3iO3D.mjs → Connected-DXm_z3q9.mjs} +1 -1
- package/dist/web-components/{Contents-DjtD3iKA.mjs → Contents-N3FNf9QU.mjs} +1 -1
- package/dist/web-components/{ControlMenu-CaD8Frag.mjs → ControlMenu-DLJsVZnm.mjs} +1 -1
- package/dist/web-components/ControlsFade-DcPvrXFf.mjs +1 -0
- package/dist/web-components/{CountMenu-DBiLd3X6.mjs → CountMenu-DyBK1e4z.mjs} +1 -1
- package/dist/web-components/Cue-CrnTNjnn.mjs +1 -0
- package/dist/web-components/Document-CZ3qHszc.mjs +1 -0
- package/dist/web-components/{DomLayers-DXbbsOVO.mjs → DomLayers-BwlLZSRc.mjs} +1 -1
- package/dist/web-components/{Download-CgRv1Jio.mjs → Download-WldBPDxr.mjs} +1 -1
- package/dist/web-components/{EntryBodies-DnXLIVR-.mjs → EntryBodies-BwWEgZ1_.mjs} +1 -1
- package/dist/web-components/{EntryThumbnail-BtRvqME5.mjs → EntryThumbnail-C56uAnMQ.mjs} +1 -1
- package/dist/web-components/{FieldPill-CmagfxvU.mjs → FieldPill-C1UAftNo.mjs} +1 -1
- package/dist/web-components/{FrameAnimation-DmqYAi-M.mjs → FrameAnimation-BpHvVjI3.mjs} +1 -1
- package/dist/web-components/Gallery-h9AR15s0.mjs +1 -0
- package/dist/web-components/GlobeGlyph-CnvS-FYu.mjs +1 -0
- package/dist/web-components/{HideToggle-aDBXi6F0.mjs → HideToggle-D-r79OIC.mjs} +1 -1
- package/dist/web-components/{ImageControls-CdEwkNkw.mjs → ImageControls-CdcicjR7.mjs} +1 -1
- package/dist/web-components/Items-CVvtjq7r.mjs +1 -0
- package/dist/web-components/Label-CvbxytPx.mjs +1 -0
- package/dist/web-components/LanguageChoice-BJd_RsYq.mjs +1 -0
- package/dist/web-components/LanguageMenu-BsnzmKwN.mjs +1 -0
- package/dist/web-components/LightboxView-DReKv-Dd.mjs +1 -0
- package/dist/web-components/{ListEnd-D1Y0rzNK.mjs → ListEnd-DwtNoi_1.mjs} +1 -1
- package/dist/web-components/{Loaded-Bebqgt6V.mjs → Loaded-BPOKsLbO.mjs} +1 -1
- package/dist/web-components/LoadedCanvas-HQwMz-9o.mjs +1 -0
- package/dist/web-components/LoadedMap-Totn9tyS.mjs +1 -0
- package/dist/web-components/{Loading-B5lpxt7E.mjs → Loading-C5mJstXv.mjs} +1 -1
- package/dist/web-components/{Map-DsHQLS6G.mjs → Map-Drj3FcfB.mjs} +1 -1
- package/dist/web-components/MapView-Bf4alyhB.mjs +3 -0
- package/dist/web-components/{Markup-CQb91uB6.mjs → Markup-DgJRP5fa.mjs} +1 -1
- package/dist/web-components/{MediaBody-BbipyE0n.mjs → MediaBody-1FBP2j7l.mjs} +1 -1
- package/dist/web-components/{MediaBody-CuCVF-N7.mjs → MediaBody-BEWLYzRU.mjs} +1 -1
- package/dist/web-components/{NavDate-CjJTuBbs.mjs → NavDate-rtQNHF_X.mjs} +1 -1
- package/dist/web-components/{Navigator-BKVI3csP.mjs → Navigator-Byl5hEjY.mjs} +1 -1
- package/dist/web-components/{Pager-CTvxvbel.mjs → Pager-DkTHvyHN.mjs} +1 -1
- package/dist/web-components/PagerLayout-C6kl1hk2.mjs +1 -0
- package/dist/web-components/Panel-C6gKilND.mjs +1 -0
- package/dist/web-components/PanelPart-B_2EB7jQ.mjs +1 -0
- package/dist/web-components/{PanelToggle-Dsp3JD1s.mjs → PanelToggle-DqoE9niZ.mjs} +1 -1
- package/dist/web-components/{PartOfManifest-Bu5XTdcH.mjs → PartOfManifest-ydDwjNTt.mjs} +1 -1
- package/dist/web-components/{Pending-C7ZSt2eL.mjs → Pending-DWJWng2S.mjs} +1 -1
- package/dist/web-components/{PlaceBox-PwpqCwOS.mjs → PlaceBox-DB54T8Pe.mjs} +1 -1
- package/dist/web-components/{Placeholder-B_DxAE6y.mjs → Placeholder-DJg1rjuD.mjs} +1 -1
- package/dist/web-components/{Position-CQ7FBqd0.mjs → Position-BHc5qoff.mjs} +1 -1
- package/dist/web-components/Primitives-Ea4kfG9I.mjs +1 -0
- package/dist/web-components/Provider-D9_x7agY.mjs +1 -0
- package/dist/web-components/{ReadMore-0vMRgzA8.mjs → ReadMore-Dv-gInr5.mjs} +1 -1
- package/dist/web-components/Root-Cju5jUFL.mjs +1 -0
- package/dist/web-components/Scene-B6doLHT0.mjs +1 -0
- package/dist/web-components/{SceneView-DSUVfGQR.mjs → SceneView-CekvA-s4.mjs} +1 -1
- package/dist/web-components/Search-Dp2mguRJ.mjs +1 -0
- package/dist/web-components/{Sections-BdEZZD0J.mjs → Sections-DURsiaS-.mjs} +1 -1
- package/dist/web-components/{SeekMarks-ByDBrurH.mjs → SeekMarks-DT6hra-w.mjs} +1 -1
- package/dist/web-components/StandaloneItems-aPSHNgk2.mjs +1 -0
- package/dist/web-components/{Status-CK2v5LdZ.mjs → Status-pDPG5ab1.mjs} +1 -1
- package/dist/web-components/{Steps-DlYRgYiS.mjs → Steps-DCyGkbOP.mjs} +1 -1
- package/dist/web-components/{TargetItems-B0ZkDWAH.mjs → TargetItems-Be6A1gcy.mjs} +1 -1
- package/dist/web-components/Timeline-Cj9cCYCA.mjs +1 -0
- package/dist/web-components/{Tip-BPxXnFcb.mjs → Tip-Bsd8bCx9.mjs} +1 -1
- package/dist/web-components/Transcript-bQaRVoI_.mjs +1 -0
- package/dist/web-components/{Transport-nQ1ytZeY.mjs → Transport-DOzVY_IU.mjs} +1 -1
- package/dist/web-components/{Transport-Cc1VnGe1.mjs → Transport-DUGGwa-G.mjs} +1 -1
- package/dist/web-components/{annotation-collection-JrLc_Org.mjs → annotation-collection-DGCbF6YN.mjs} +1 -1
- package/dist/web-components/{annotation-name-WwXE5c2m.mjs → annotation-name-DFdgSllS.mjs} +1 -1
- package/dist/web-components/{annotations-content-G5YUyhp2.mjs → annotations-content-CwUfqHPh.mjs} +1 -1
- package/dist/web-components/{body-BvY3Vpf_.mjs → body-C3LAo8pl.mjs} +1 -1
- package/dist/web-components/{canvas-CaNpS96c.mjs → canvas-BUmbx6sa.mjs} +1 -1
- package/dist/web-components/{cloverEngine-Cpp8BjZa.mjs → cloverEngine-gT8L7Xi7.mjs} +1 -1
- package/dist/web-components/{content-state-reader-DakKAf36.mjs → content-state-reader-B3GmJui6.mjs} +1 -1
- package/dist/web-components/{controlGlyphs-bqWNGQ1-.mjs → controlGlyphs-BC2tLOYb.mjs} +1 -1
- package/dist/web-components/{controls-Db0929rf.mjs → controls-n8BSf19H.mjs} +1 -1
- package/dist/web-components/custom-elements.json +35 -3
- package/dist/web-components/downloads-CurHNK9M.mjs +1 -0
- package/dist/web-components/{dragToClose-D5AN98l4.mjs → dragToClose-Cbxkgv9j.mjs} +1 -1
- package/dist/web-components/{engine-B1m2m56g.mjs → engine-C51pr0Wa.mjs} +1 -1
- package/dist/web-components/{engines-CBm3cDwx.mjs → engines-CZzpPjXO.mjs} +1 -1
- package/dist/web-components/{fetchManifest-lvHWlQYu.mjs → fetchManifest-Crn4VJ56.mjs} +1 -1
- package/dist/web-components/{fromManifest-ZbH8cYoN.mjs → fromManifest-Ci0vEX5i.mjs} +1 -1
- package/dist/web-components/{glyphs-BtnJwbd5.mjs → glyphs-BcLY9GG7.mjs} +1 -1
- package/dist/web-components/hooks-C9BeaqLZ.mjs +1 -0
- package/dist/web-components/{image-layers-DjUA6eWF.mjs → image-layers-zWauwKEw.mjs} +1 -1
- package/dist/web-components/image-service-content-BAmoCFAH.mjs +1 -0
- package/dist/web-components/{imageService-B9yNXMcD.mjs → imageService-DXS2KuSL.mjs} +1 -1
- package/dist/web-components/index-BxhBBH2G.mjs +1 -0
- package/dist/web-components/index.mjs +1 -1
- package/dist/web-components/items-CPW7LZpT.mjs +1 -0
- package/dist/web-components/items-DUZSfcSf.mjs +1 -0
- package/dist/web-components/ja-Cg1enUhM.mjs +1 -0
- package/dist/web-components/label-BswVRwfJ.mjs +1 -0
- package/dist/web-components/layout-NPxKIp1S.mjs +1 -0
- package/dist/web-components/{link-BhvZNgtv.mjs → link-DI1Gv9P_.mjs} +1 -1
- package/dist/web-components/logo-Ccv2scvi.mjs +1 -0
- package/dist/web-components/{models-CIHL07o7.mjs → models-DtSFB57l.mjs} +1 -1
- package/dist/web-components/{nodes-TS4tB7cC.mjs → nodes-BEUmRfuQ.mjs} +1 -1
- package/dist/web-components/{overlayImage-B3ItMjXk.mjs → overlayImage-BOqTHR8E.mjs} +1 -1
- package/dist/web-components/{panel-M3PpVN7f.mjs → panel-Cd5S9Ezy.mjs} +1 -1
- package/dist/web-components/part-C7WLTw20.mjs +1 -0
- package/dist/web-components/{playerSurface-BGgYHT2u.mjs → playerSurface-QGjBv9Yq.mjs} +1 -1
- package/dist/web-components/{pointer-J2gT4W9m.mjs → pointer-BLFSppkR.mjs} +1 -1
- package/dist/web-components/{provider-CdJfEMUj.mjs → provider-BMZpItBJ.mjs} +1 -1
- package/dist/web-components/{range-regions-DxSIpIVo.mjs → range-regions-DX9sTrBU.mjs} +1 -1
- package/dist/web-components/{read-more-wCGc6ELt.mjs → read-more-DSnuyAMI.mjs} +1 -1
- package/dist/web-components/readingLanguages-C83aK9na.mjs +1 -0
- package/dist/web-components/rendererSurface-Clg0MuAj.mjs +22 -0
- package/dist/web-components/{renderers-zAtpns1S.mjs → renderers-DnnMGnA9.mjs} +1 -1
- package/dist/web-components/resource-BxbCXGtG.mjs +1 -0
- package/dist/web-components/{save-file-DquBqxrS.mjs → save-file-CuRpXpO7.mjs} +1 -1
- package/dist/web-components/{search-ChOKTYz9.mjs → search-B8ycnAKR.mjs} +1 -1
- package/dist/web-components/shared-CzlxExGR.mjs +1 -0
- package/dist/web-components/{show-link-Dry4M5w1.mjs → show-link-BOEKHpcs.mjs} +1 -1
- package/dist/web-components/{sizedImage-CjFqzhUE.mjs → sizedImage-BNlShxVG.mjs} +1 -1
- package/dist/web-components/{split-88HcOLCm.mjs → split-BwdAJ7v3.mjs} +1 -1
- package/dist/web-components/{status-BNrkhMe7.mjs → status-DwwUoyYG.mjs} +1 -1
- package/dist/web-components/styles-C51FhQQr.mjs +1 -0
- package/dist/web-components/three.mjs +1 -1
- package/dist/web-components/{thumbnail-CoFd2duc.mjs → thumbnail-Bx8UP6ak.mjs} +1 -1
- package/dist/web-components/{tip-BCClTo0G.mjs → tip-DNLMHjGA.mjs} +1 -1
- package/dist/web-components/{toggle-DavvlVdF.mjs → toggle-D-vRsWQx.mjs} +1 -1
- package/dist/web-components/{useContainerName-B_Kzx2Wp.mjs → useContainerName-CAlWJohz.mjs} +1 -1
- package/dist/web-components/{useControlsVisibility-BdD2byHj.mjs → useControlsVisibility-IAlNQKAy.mjs} +1 -1
- package/dist/web-components/{useNearViewport-Bj8qJEA0.mjs → useNearViewport-B8E_rit4.mjs} +1 -1
- package/dist/web-components/useScrollTrack-D7S-3b7o.mjs +1 -0
- package/dist/web-components/viewer/{AnnotationItems-3Sf8MxRQ.mjs → AnnotationItems-DLBXufXN.mjs} +1 -1
- package/dist/web-components/viewer/{AnnotationMenu-_xBnZtm1.mjs → AnnotationMenu-VQICxqCw.mjs} +1 -1
- package/dist/web-components/viewer/AnnotationState-Blwq33RX.mjs +1 -0
- package/dist/web-components/viewer/Annotations-DE9evpU8.mjs +2 -0
- package/dist/web-components/viewer/{Annotations-24ComVk9.mjs → Annotations-DHKvpN_g.mjs} +1 -1
- package/dist/web-components/viewer/{Canvas2DBackend-DPWYD9ST.mjs → Canvas2DBackend-CRMajv3c.mjs} +1 -1
- package/dist/web-components/viewer/CaptionDetails-B13rxFZq.mjs +1 -0
- package/dist/web-components/viewer/{ChaptersMenu-C5J0d8Ck.mjs → ChaptersMenu-IAVcnwMF.mjs} +1 -1
- package/dist/web-components/viewer/{ChoiceMenu-B8iukYiR.mjs → ChoiceMenu-CORn4IQ7.mjs} +1 -1
- package/dist/web-components/viewer/{Collection-CPVQ3JtI.mjs → Collection-CefKVGoo.mjs} +1 -1
- package/dist/web-components/viewer/{Connected-x3v9xr7x.mjs → Connected-BwhumfiG.mjs} +1 -1
- package/dist/web-components/viewer/{Connected-D5_bZzr5.mjs → Connected-KiqCyCyf.mjs} +1 -1
- package/dist/web-components/viewer/{Contents-Ma7oDW1R.mjs → Contents-DLGRh2XL.mjs} +1 -1
- package/dist/web-components/viewer/{ControlMenu-D2HokCqd.mjs → ControlMenu-DBSEW19Y.mjs} +1 -1
- package/dist/web-components/viewer/ControlsFade-CQ-g8cVb.mjs +1 -0
- package/dist/web-components/viewer/{CountMenu-BnDN2b0n.mjs → CountMenu-C8_qWHK5.mjs} +1 -1
- package/dist/web-components/viewer/Cue-BwJDU9Vs.mjs +1 -0
- package/dist/web-components/viewer/Document-CbMXbIZ9.mjs +1 -0
- package/dist/web-components/viewer/{DomLayers-BW2A4z82.mjs → DomLayers-ByxbcmL1.mjs} +1 -1
- package/dist/web-components/viewer/{Download-Cc_NA7QN.mjs → Download-3rtn7gLF.mjs} +1 -1
- package/dist/web-components/viewer/{EntryBodies-Bz69SWZh.mjs → EntryBodies-BP12ovq7.mjs} +1 -1
- package/dist/web-components/viewer/{EntryThumbnail-C8cUA5qc.mjs → EntryThumbnail-DpP82iU_.mjs} +1 -1
- package/dist/web-components/viewer/{FieldPill-BzKvMF-K.mjs → FieldPill-BSdPIm-Q.mjs} +1 -1
- package/dist/web-components/viewer/{FrameAnimation-DiQgfgri.mjs → FrameAnimation-DpoTQ3xX.mjs} +1 -1
- package/dist/web-components/viewer/Gallery-BtJZKRID.mjs +1 -0
- package/dist/web-components/viewer/GlobeGlyph-CI64v0-v.mjs +1 -0
- package/dist/web-components/viewer/{HideToggle-jg311sUK.mjs → HideToggle-CmpZYjui.mjs} +1 -1
- package/dist/web-components/viewer/{ImageControls-8ZIWLAkf.mjs → ImageControls-Da6YHXjJ.mjs} +1 -1
- package/dist/web-components/viewer/LanguageChoice-CbS8ksEM.mjs +1 -0
- package/dist/web-components/viewer/LanguageMenu-l2Me1RBQ.mjs +1 -0
- package/dist/web-components/viewer/LightboxView-BCDkk6yf.mjs +1 -0
- package/dist/web-components/viewer/{ListEnd-JjGQ_q6c.mjs → ListEnd-DFpeNm-y.mjs} +1 -1
- package/dist/web-components/viewer/{MapView-tAZ4vINr.mjs → MapView-DG-ZUI7R.mjs} +2 -2
- package/dist/web-components/viewer/{MediaBody-Da60tZIj.mjs → MediaBody-BgBDbfHg.mjs} +1 -1
- package/dist/web-components/viewer/{MediaBody-CQAJJpuz.mjs → MediaBody-byvlUB_B.mjs} +1 -1
- package/dist/web-components/viewer/{NavDate-B7T2iPfP.mjs → NavDate-DpToOfYG.mjs} +1 -1
- package/dist/web-components/viewer/{Navigator-sEfTvK-l.mjs → Navigator-UVu84RyI.mjs} +1 -1
- package/dist/web-components/viewer/PagerLayout-C3HEM9Ev.mjs +1 -0
- package/dist/web-components/viewer/PanelPart-7DmaKxVo.mjs +1 -0
- package/dist/web-components/viewer/{PartOfManifest-BYgk9r1j.mjs → PartOfManifest-CAG-54_j.mjs} +1 -1
- package/dist/web-components/viewer/{PlaceBox-BBtsMTsl.mjs → PlaceBox-4kYT5bX0.mjs} +1 -1
- package/dist/web-components/viewer/{Placeholder-5focqckW.mjs → Placeholder-BGtNqkT3.mjs} +1 -1
- package/dist/web-components/viewer/Search-lYKOtFBO.mjs +1 -0
- package/dist/web-components/viewer/{SeekMarks-CUyvbMfC.mjs → SeekMarks-By4ZSK6u.mjs} +1 -1
- package/dist/web-components/viewer/{StandaloneItems-DsoMdwWS.mjs → StandaloneItems-NfsSxROI.mjs} +1 -1
- package/dist/web-components/viewer/{Steps-zpuoH0K0.mjs → Steps-BOB1n3WM.mjs} +1 -1
- package/dist/web-components/viewer/{TargetItems-DIKBor9X.mjs → TargetItems-vP03hWU8.mjs} +1 -1
- package/dist/web-components/viewer/Transcript-CCn5yqeZ.mjs +1 -0
- package/dist/web-components/viewer/{Transport-DMnPpTsQ.mjs → Transport-B-GTF-rz.mjs} +1 -1
- package/dist/web-components/viewer/{Transport-BM3IMXDW.mjs → Transport-Qi3YTaFs.mjs} +1 -1
- package/dist/web-components/viewer/{annotation-collection-C_9c9NPs.mjs → annotation-collection-CqFki-7M.mjs} +1 -1
- package/dist/web-components/viewer/{annotation-name-jt1y3erg.mjs → annotation-name-z-zyEc1-.mjs} +1 -1
- package/dist/web-components/viewer/annotations-content-xp-O7sy-.mjs +1 -0
- package/dist/web-components/viewer/{cloverEngine-CVyaltw7.mjs → cloverEngine-BSk-sfvP.mjs} +2 -2
- package/dist/web-components/viewer/{content-state-reader-DIcY4zWj.mjs → content-state-reader-DL-mMGZi.mjs} +1 -1
- package/dist/web-components/viewer/{dragToClose-D2h8gIpa.mjs → dragToClose-vevhuGlo.mjs} +1 -1
- package/dist/web-components/viewer/{fetchManifest-C66Fk39V.mjs → fetchManifest-C-_la_Ym.mjs} +1 -1
- package/dist/web-components/viewer/{host-Fl21T-Pt.mjs → host-DHOefZ2L.mjs} +1 -1
- package/dist/web-components/viewer/{image-layers-CpDOoRh9.mjs → image-layers-qNcOTmq3.mjs} +1 -1
- package/dist/web-components/viewer/image-service-content-D63obMOY.mjs +1 -0
- package/dist/web-components/viewer/index.mjs +1 -1
- package/dist/web-components/viewer/{link-DlX6OdhG.mjs → link-BZAbKwFF.mjs} +1 -1
- package/dist/web-components/viewer/overlayImage-oEpv2EvC.mjs +1 -0
- package/dist/web-components/viewer/{range-regions--YB9ll1N.mjs → range-regions-YtOKXMW8.mjs} +1 -1
- package/dist/web-components/viewer/{renderers-zvRp3xYJ.mjs → renderers-BdXu40PJ.mjs} +1 -1
- package/dist/web-components/viewer/{save-file-83yWcPHX.mjs → save-file-Cktvr4HF.mjs} +1 -1
- package/dist/web-components/viewer/{search-DDXsrZz3.mjs → search-CSjEe4Yv.mjs} +1 -1
- package/dist/web-components/viewer/styles-BjjJM8OS.mjs +1 -0
- package/dist/web-components/viewer/{useControlsVisibility-CudUJBCj.mjs → useControlsVisibility-CBeiyfcO.mjs} +1 -1
- package/dist/web-components/viewer/viewer-B7xAOtQD.mjs +29 -0
- package/dist/web-components/viewer/{vtt-D1xyC48J.mjs → vtt-BRwEspJw.mjs} +1 -1
- package/dist/web-components/viewer-BomG9B8d.mjs +1 -0
- package/dist/web-components/{vtt-ChAUl4lm.mjs → vtt-Cx6_Tym1.mjs} +1 -1
- package/dist/web-components/zh-Hans-DnYm6PWu.mjs +1 -0
- package/dist/web-components/zh-Hant-DsxnuLPZ.mjs +1 -0
- package/package.json +1 -1
- package/dist/web-components/About-rhhglI1Z.mjs +0 -1
- package/dist/web-components/AnnotationItems-9o4vZn9M.mjs +0 -1
- package/dist/web-components/AnnotationState-BCfjI6kC.mjs +0 -1
- package/dist/web-components/Annotations-bAuL-Vo6.mjs +0 -2
- package/dist/web-components/ControlsFade-qs_zu-DZ.mjs +0 -1
- package/dist/web-components/Cue-CrlByfoX.mjs +0 -1
- package/dist/web-components/Document-C3K-CXHu.mjs +0 -1
- package/dist/web-components/Gallery-DMNATgzf.mjs +0 -1
- package/dist/web-components/Items-xeEzg7uu.mjs +0 -1
- package/dist/web-components/Label-7SZqCiYh.mjs +0 -1
- package/dist/web-components/LanguageChoice-DrIQjsPP.mjs +0 -1
- package/dist/web-components/LightboxView-BzxRQK6r.mjs +0 -1
- package/dist/web-components/LoadedCanvas-8To8LkUE.mjs +0 -1
- package/dist/web-components/LoadedMap-BmF3Gmnw.mjs +0 -1
- package/dist/web-components/MapView-DcLIazmJ.mjs +0 -3
- package/dist/web-components/PagerLayout-DR6V9wwv.mjs +0 -1
- package/dist/web-components/Panel-BBRkfdof.mjs +0 -1
- package/dist/web-components/PanelPart-Cdbsnr8P.mjs +0 -1
- package/dist/web-components/Primitives-D5lVsBs8.mjs +0 -1
- package/dist/web-components/Provider-B9X74RHz.mjs +0 -1
- package/dist/web-components/Root-COIMTFHh.mjs +0 -1
- package/dist/web-components/Scene-DjUgqzXR.mjs +0 -1
- package/dist/web-components/Search-DOitIwis.mjs +0 -1
- package/dist/web-components/StandaloneItems-DATV9XoT.mjs +0 -1
- package/dist/web-components/Timeline-D-FevrUe.mjs +0 -1
- package/dist/web-components/Transcript-BLm9tljk.mjs +0 -1
- package/dist/web-components/downloads-CGkM4OSO.mjs +0 -1
- package/dist/web-components/hooks-BLpTDu28.mjs +0 -1
- package/dist/web-components/index-2F1l5TLi.mjs +0 -1
- package/dist/web-components/items-C56FfpBX.mjs +0 -1
- package/dist/web-components/items-DlG6IYqm.mjs +0 -1
- package/dist/web-components/label-DJ-Udq1e.mjs +0 -1
- package/dist/web-components/layout-Dh0myod-.mjs +0 -1
- package/dist/web-components/logo-k93ZgyqF.mjs +0 -1
- package/dist/web-components/part-Df1Vr2Ss.mjs +0 -1
- package/dist/web-components/readingLanguages-DmZ8CHoc.mjs +0 -1
- package/dist/web-components/rendererSurface-Bk7SHYws.mjs +0 -22
- package/dist/web-components/resource-Cb3AnAXL.mjs +0 -1
- package/dist/web-components/shared-D4j4IirO.mjs +0 -1
- package/dist/web-components/styles-Ca564vB9.mjs +0 -1
- package/dist/web-components/useScrollTrack-DBIW4pCJ.mjs +0 -1
- package/dist/web-components/viewer/AnnotationState-o4goI6T-.mjs +0 -1
- package/dist/web-components/viewer/Annotations-CJamLUnL.mjs +0 -2
- package/dist/web-components/viewer/CaptionDetails-DNPq32gk.mjs +0 -1
- package/dist/web-components/viewer/ControlsFade-JoRgQt8U.mjs +0 -1
- package/dist/web-components/viewer/Cue-FHw5d8zO.mjs +0 -1
- package/dist/web-components/viewer/Document-DiXiOkPn.mjs +0 -1
- package/dist/web-components/viewer/Gallery-BYmzAEuZ.mjs +0 -1
- package/dist/web-components/viewer/LanguageChoice-BXXMBe-A.mjs +0 -1
- package/dist/web-components/viewer/LightboxView-DnN0fkeg.mjs +0 -1
- package/dist/web-components/viewer/PagerLayout-B4C72jTV.mjs +0 -1
- package/dist/web-components/viewer/PanelPart-Di406l-a.mjs +0 -1
- package/dist/web-components/viewer/Search-DbHlUxOS.mjs +0 -1
- package/dist/web-components/viewer/Transcript-B_puRtfb.mjs +0 -1
- package/dist/web-components/viewer/annotations-content-Dg8h7vJX.mjs +0 -1
- package/dist/web-components/viewer/overlayImage-yGXMVHgX.mjs +0 -1
- package/dist/web-components/viewer/styles-04jB_4IT.mjs +0 -1
- package/dist/web-components/viewer/viewer-0aUYzmQj.mjs +0 -29
- package/dist/web-components/viewer-B_5rFgy5.mjs +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -307,8 +307,9 @@ export declare function buildContentState({ manifestId, canvasId, type, region,
|
|
|
307
307
|
* state (JSON or base64url). The resource may be a Manifest, a Collection (its first
|
|
308
308
|
* Manifest is shown), a lone Canvas (its `partOf` Manifest, or a Manifest made around
|
|
309
309
|
* it), or annotations, an AnnotationPage or AnnotationCollection (the Manifest their first
|
|
310
|
-
* annotation's Canvas is `partOf`, at that Canvas).
|
|
311
|
-
*
|
|
310
|
+
* annotation's Canvas is `partOf`, at that Canvas). It may also be a IIIF Image service,
|
|
311
|
+
* its `info.json` or its base URI, shown as the one image it is (`imageServiceContent`).
|
|
312
|
+
* Everything is fetched once, with the request settings, and upgraded to Presentation 4.
|
|
312
313
|
*/
|
|
313
314
|
export type IIIFContent = string | Record<string, unknown>;
|
|
314
315
|
/**
|
|
@@ -934,7 +935,7 @@ export type ControlButtonProps = {
|
|
|
934
935
|
"aria-label": string;
|
|
935
936
|
/**
|
|
936
937
|
* The language of the name, when it is not the page's: a Choice's own label, or one
|
|
937
|
-
* of Clover's strings in another language. Spread it with the rest (WCAG 3.1.2).
|
|
938
|
+
* of Clover's interface strings in another language. Spread it with the rest (WCAG 3.1.2).
|
|
938
939
|
*/
|
|
939
940
|
lang?: string;
|
|
940
941
|
/** The key the Canvas answers to for this control, when it has one. */
|
|
@@ -1012,6 +1013,11 @@ export interface CloverCanvasOptions {
|
|
|
1012
1013
|
maxZoomPixelRatio?: number;
|
|
1013
1014
|
/** Smallest zoom, as a fraction of the home zoom. Default 0.9. */
|
|
1014
1015
|
minZoomImageRatio?: number;
|
|
1016
|
+
/**
|
|
1017
|
+
* Whether home may enlarge the image past `maxZoomPixelRatio` to fill the box. False,
|
|
1018
|
+
* home stops at that zoom and centers the image, smaller than the box. Default true.
|
|
1019
|
+
*/
|
|
1020
|
+
upscale?: boolean;
|
|
1015
1021
|
/** Seconds for an animation to close most of its distance. 0 disables easing. */
|
|
1016
1022
|
animationTime?: number;
|
|
1017
1023
|
/**
|
|
@@ -1429,6 +1435,12 @@ export interface ItemsProps extends Omit<React.HTMLAttributes<HTMLElement>, "onS
|
|
|
1429
1435
|
* under the one above it, still in reading order, left to right.
|
|
1430
1436
|
*/
|
|
1431
1437
|
layout?: ItemsLayout;
|
|
1438
|
+
/**
|
|
1439
|
+
* The slider's direction: a row (`horizontal`), or a column (`vertical`) that fills
|
|
1440
|
+
* the height of what holds it, as a filmstrip beside the Body, its pictures as wide as
|
|
1441
|
+
* the column. Default `"horizontal"`.
|
|
1442
|
+
*/
|
|
1443
|
+
orientation?: "horizontal" | "vertical";
|
|
1432
1444
|
/**
|
|
1433
1445
|
* The line under an item's label, where it has one (a Collection's members do): its
|
|
1434
1446
|
* `summary` (the default), its `navDate`, or `none`. Default `"summary"`.
|
|
@@ -1676,7 +1688,7 @@ export declare function usePanelSections(sections?: readonly PanelSection[]): Pa
|
|
|
1676
1688
|
/** How the sections are laid out. */
|
|
1677
1689
|
export type SectionsLayout = "tabs" | "accordion";
|
|
1678
1690
|
/**
|
|
1679
|
-
* What a page calls a section, in place of Clover's
|
|
1691
|
+
* What a page calls a section, in place of its word in Clover's interface language: its words, taken to
|
|
1680
1692
|
* be in the page's language, or its words by language tag, one of which the tab carries
|
|
1681
1693
|
* as its `lang` where it is not the page's (WCAG 3.1.2).
|
|
1682
1694
|
*/
|
|
@@ -1747,6 +1759,13 @@ export interface PanelProps extends Omit<React.HTMLAttributes<HTMLElement>, "def
|
|
|
1747
1759
|
* leaves the choice out, and the Root reads in its `language`, else the reader's.
|
|
1748
1760
|
*/
|
|
1749
1761
|
languages?: boolean;
|
|
1762
|
+
/**
|
|
1763
|
+
* Whether About's language toggle also offers Clover's interface languages (its
|
|
1764
|
+
* control labels, section titles and announcements) that the resource has none of: the
|
|
1765
|
+
* visitor's and the site's, where they differ, one choice for the page. Default
|
|
1766
|
+
* `true`; `false` leaves them out, and Clover speaks the visitor's.
|
|
1767
|
+
*/
|
|
1768
|
+
interfaceLanguages?: boolean;
|
|
1750
1769
|
/**
|
|
1751
1770
|
* Which of the default sections the panel may have, in Clover's own order: with
|
|
1752
1771
|
* `["contents", "search"]` it has those two and no About. Each still shows only where
|
|
@@ -1755,7 +1774,7 @@ export interface PanelProps extends Omit<React.HTMLAttributes<HTMLElement>, "def
|
|
|
1755
1774
|
*/
|
|
1756
1775
|
sections?: readonly PanelSection[];
|
|
1757
1776
|
/**
|
|
1758
|
-
* What a default section's tab or heading says, in place of Clover's
|
|
1777
|
+
* What a default section's tab or heading says, in place of its word in Clover's interface language:
|
|
1759
1778
|
* `{ annotations: "Chapters" }`, or `{ annotations: { en: "Chapters", de: "Kapitel" } }`
|
|
1760
1779
|
* to say it in several, read in the one Clover speaks and marked with its language
|
|
1761
1780
|
* where that is not the page's (WCAG 3.1.2). A `Tab` of your own says it in `label`.
|
|
@@ -1825,6 +1844,13 @@ export interface AboutProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
1825
1844
|
* In a Panel, its heading offers them (the Panel's `languages`). Default `true`.
|
|
1826
1845
|
*/
|
|
1827
1846
|
languages?: boolean;
|
|
1847
|
+
/**
|
|
1848
|
+
* Alone, outside a Panel: whether its language toggle also offers Clover's interface
|
|
1849
|
+
* languages (its control labels, section titles and announcements) that the resource
|
|
1850
|
+
* has none of, the visitor's and the site's, where they differ. In a Panel, the Panel's
|
|
1851
|
+
* `interfaceLanguages`. Default `true`.
|
|
1852
|
+
*/
|
|
1853
|
+
interfaceLanguages?: boolean;
|
|
1828
1854
|
}
|
|
1829
1855
|
/**
|
|
1830
1856
|
* Everything the Manifest says about itself, in the order 3.x's About tab shows it:
|
|
@@ -1835,11 +1861,12 @@ export interface AboutProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
1835
1861
|
* it. The downloads are Download's: the `rendering` of the page in view ("This page")
|
|
1836
1862
|
* and of the Manifest ("All pages").
|
|
1837
1863
|
*
|
|
1838
|
-
* Where what it says comes in several languages, the
|
|
1839
|
-
*
|
|
1840
|
-
* its heading, where
|
|
1864
|
+
* Where what it says comes in several languages, or the visitor's language differs from
|
|
1865
|
+
* the site's, the languages to read in, as one toggle (`LanguageToggle`): over what About
|
|
1866
|
+
* says, or, in a Panel's `about` section, beside its heading, where it shows whichever
|
|
1867
|
+
* section is open.
|
|
1841
1868
|
*/
|
|
1842
|
-
export declare function About({ languages, ...props }: AboutProps): React.JSX.Element;
|
|
1869
|
+
export declare function About({ languages, interfaceLanguages, ...props }: AboutProps): React.JSX.Element;
|
|
1843
1870
|
export interface AnnotationsProps extends React.HTMLAttributes<HTMLElement> {
|
|
1844
1871
|
/**
|
|
1845
1872
|
* Every annotation in the Manifest (default), as the Viewer's panel lists them: by
|
|
@@ -2433,7 +2460,7 @@ export declare function useLocalized(value: LanguageMapLike): LocalizedValue;
|
|
|
2433
2460
|
/** Clover's interface strings in the current language: `t("commonClose")`. */
|
|
2434
2461
|
export declare function useT(): (key: string, values?: Record<string, unknown>) => string;
|
|
2435
2462
|
/**
|
|
2436
|
-
* The language of one of Clover's strings where it is not the page's (a French reader on
|
|
2463
|
+
* The language of one of Clover's interface strings where it is not the page's (a French reader on
|
|
2437
2464
|
* an English page, or a key that fell back to English), for the element that shows it, or
|
|
2438
2465
|
* is named by it, to carry as `lang` (WCAG 3.1.2). Undefined otherwise: the string takes
|
|
2439
2466
|
* the page's language. The page's is the nearest `lang` around the Root.
|
|
@@ -2578,6 +2605,13 @@ export interface CloverContextValue {
|
|
|
2578
2605
|
* inside reads in it, until the Root is given another `language`.
|
|
2579
2606
|
*/
|
|
2580
2607
|
chooseLanguage?: (tag: string) => void;
|
|
2608
|
+
/**
|
|
2609
|
+
* Whether a language toggle of the Root's is drawn (About's, `LanguageToggle`), so the
|
|
2610
|
+
* parts that would offer their own (an annotation set's languages, a Transcript's
|
|
2611
|
+
* caption files) follow it instead; `drawsToggle` says one is, until its cleanup runs.
|
|
2612
|
+
*/
|
|
2613
|
+
toggleDrawn?: boolean;
|
|
2614
|
+
drawsToggle?: () => () => void;
|
|
2581
2615
|
/** Renderers of the host's own, for `Body` to draw some views with. */
|
|
2582
2616
|
renderers?: BodyRenderer[];
|
|
2583
2617
|
}
|
|
@@ -2718,7 +2752,8 @@ export declare function regionSource(canvas: Json | undefined, rect: {
|
|
|
2718
2752
|
h: number;
|
|
2719
2753
|
}, image?: string): ThumbnailSource | null;
|
|
2720
2754
|
/**
|
|
2721
|
-
* Clover's
|
|
2755
|
+
* Clover's interface language: the language of its control labels ("Zoom in"), section
|
|
2756
|
+
* titles ("About") and announcements ("Item 2 of 17"), without a translation library.
|
|
2722
2757
|
*
|
|
2723
2758
|
* Clover needs a key lookup with a fallback chain, `{{name}}` interpolation and language
|
|
2724
2759
|
* detection. i18next did that at about 20 kB gzipped across three packages;
|
|
@@ -2726,44 +2761,84 @@ export declare function regionSource(canvas: Json | undefined, rect: {
|
|
|
2726
2761
|
* them, so existing `initCloverI18n` calls keep working:
|
|
2727
2762
|
*
|
|
2728
2763
|
* initCloverI18n({
|
|
2729
|
-
*
|
|
2764
|
+
* languages: ["de"],
|
|
2730
2765
|
* fallbackLng: ["de", "en"],
|
|
2731
2766
|
* resources: { de: { clover: { informationPanelTabsAbout: "Über" } } },
|
|
2732
2767
|
* });
|
|
2733
2768
|
*
|
|
2769
|
+
* Which it speaks (Mat, 2026-11-05): the languages configured (`languages`, or `lng` for
|
|
2770
|
+
* one), then the page's `<html lang>` (Mat, 2026-11-05: derived, as the visitor's is),
|
|
2771
|
+
* else English; then the visitor's languages, from
|
|
2772
|
+
* the browser. The visitor's first that Clover has strings for is the default, else the
|
|
2773
|
+
* first configured; where the two differ, `interfaceLanguages()` offers both, and
|
|
2774
|
+
* `chooseInterfaceLanguage` takes the visitor's choice.
|
|
2775
|
+
*
|
|
2734
2776
|
* English ships with Clover. Each other language it ships loads the first time Clover is
|
|
2735
2777
|
* to speak it, so until it arrives a string shows in English, marked as English by
|
|
2736
|
-
* `langOf`, and the
|
|
2778
|
+
* `langOf`, and the parts re-render when it does. `cloverI18n.ready()` waits for it.
|
|
2737
2779
|
*/
|
|
2738
2780
|
export declare const CLOVER_I18N_NAMESPACE = "clover";
|
|
2739
2781
|
/** `resources[language][namespace][key]` — i18next's resource shape. */
|
|
2740
2782
|
export type CloverI18nResources = Record<string, Record<string, Record<string, string>>>;
|
|
2741
2783
|
export interface CloverI18nOptions {
|
|
2742
2784
|
/**
|
|
2743
|
-
* The
|
|
2744
|
-
*
|
|
2785
|
+
* The languages your site offers Clover's interface in, most preferred first. A
|
|
2786
|
+
* visitor whose own language Clover has strings for sees theirs, with these offered
|
|
2787
|
+
* beside it, with the page's `<html lang>`; any other visitor sees the first of these.
|
|
2788
|
+
* When not given, the page's
|
|
2789
|
+
* `<html lang>`, else English.
|
|
2745
2790
|
*/
|
|
2791
|
+
languages?: string | readonly string[];
|
|
2792
|
+
/** One language to offer, as `languages: [lng]` does. */
|
|
2746
2793
|
lng?: string;
|
|
2747
2794
|
/** Languages to try, in order, when a key is missing. English is always last. */
|
|
2748
2795
|
fallbackLng?: string | readonly string[] | false;
|
|
2749
2796
|
/** Strings to add or override, merged into what Clover ships. */
|
|
2750
2797
|
resources?: CloverI18nResources;
|
|
2751
2798
|
}
|
|
2752
|
-
/** One of Clover's strings, and the language it is written in. */
|
|
2799
|
+
/** One of Clover's interface strings, and the language it is written in. */
|
|
2753
2800
|
export interface CloverString {
|
|
2754
2801
|
text: string;
|
|
2755
2802
|
/** The language the string came from; undefined when no language has the key. */
|
|
2756
2803
|
lang?: string;
|
|
2757
2804
|
}
|
|
2758
2805
|
declare const cloverI18n: {
|
|
2759
|
-
/**
|
|
2806
|
+
/**
|
|
2807
|
+
* Clover's interface language: the one the visitor chose, else the first of the chain
|
|
2808
|
+
* whose strings have loaded.
|
|
2809
|
+
*/
|
|
2760
2810
|
readonly language: string;
|
|
2811
|
+
/** The interface language the visitor chose, if they chose one. */
|
|
2812
|
+
readonly chosenLanguage: string | undefined;
|
|
2813
|
+
/**
|
|
2814
|
+
* The tag Clover has strings for that speaks `lng` (`zh-Hans` for `zh-CN`, `en` for
|
|
2815
|
+
* `en-US`), shipped or given by the page; none where it has no strings for it.
|
|
2816
|
+
*/
|
|
2817
|
+
stringsFor(lng: string): string | undefined;
|
|
2818
|
+
/**
|
|
2819
|
+
* The interface languages to offer, and the one in use (`chosen`): the default (the
|
|
2820
|
+
* visitor's, where Clover has strings for it), then the languages configured, each as
|
|
2821
|
+
* the tag Clover has strings for. A choice is worth offering only where there are two
|
|
2822
|
+
* or more.
|
|
2823
|
+
*/
|
|
2824
|
+
interfaceLanguages(): {
|
|
2825
|
+
languages: string[];
|
|
2826
|
+
chosen: string;
|
|
2827
|
+
};
|
|
2761
2828
|
/**
|
|
2762
|
-
*
|
|
2829
|
+
* Speak `lng` whatever the visitor's languages, as their choice of interface language;
|
|
2830
|
+
* none goes back to the default. Settles once its strings have loaded, or failed to.
|
|
2831
|
+
*
|
|
2832
|
+
* await cloverI18n.chooseInterfaceLanguage("fr");
|
|
2833
|
+
*/
|
|
2834
|
+
chooseInterfaceLanguage(lng?: string): Promise<void>;
|
|
2835
|
+
/**
|
|
2836
|
+
* The language Clover's interface strings are in: the first of the lookup chain that has any. A
|
|
2763
2837
|
* language set with no strings of its own resolves to the next, English at the last.
|
|
2764
2838
|
*/
|
|
2765
2839
|
readonly resolvedLanguage: string;
|
|
2766
|
-
|
|
2840
|
+
/** As `chooseInterfaceLanguage` does: i18next's name for it. */
|
|
2841
|
+
changeLanguage(lng: string): Promise<void>;
|
|
2767
2842
|
/** A string and the language it came from, which a missing key leaves in another. */
|
|
2768
2843
|
resolve(key: string, values?: Record<string, unknown>, namespace?: string): CloverString;
|
|
2769
2844
|
t(key: string, values?: Record<string, unknown>, namespace?: string): string;
|
|
@@ -2778,7 +2853,7 @@ declare const cloverI18n: {
|
|
|
2778
2853
|
* Settles once the language Clover speaks has loaded, or failed to: for a server render,
|
|
2779
2854
|
* or a test, that needs the strings in place before it draws.
|
|
2780
2855
|
*
|
|
2781
|
-
* await initCloverI18n({
|
|
2856
|
+
* await initCloverI18n({ languages: ["fr"] }).ready();
|
|
2782
2857
|
*/
|
|
2783
2858
|
ready(): Promise<void>;
|
|
2784
2859
|
/** For `useSyncExternalStore`: re-render readers when the language or strings change. */
|
|
@@ -2787,8 +2862,11 @@ declare const cloverI18n: {
|
|
|
2787
2862
|
};
|
|
2788
2863
|
export type CloverI18n = typeof cloverI18n;
|
|
2789
2864
|
/**
|
|
2790
|
-
*
|
|
2791
|
-
* call
|
|
2865
|
+
* Configure Clover's interface language (`languages`, or `lng` for one) and add or
|
|
2866
|
+
* override strings. Safe to call more than once: each call merges its `resources` and
|
|
2867
|
+
* applies any `languages`, `lng` or `fallbackLng` it is given. A visitor whose language
|
|
2868
|
+
* Clover has strings for still sees theirs first, with yours offered beside it; to speak
|
|
2869
|
+
* one language whatever the visitor's, `chooseInterfaceLanguage`.
|
|
2792
2870
|
*/
|
|
2793
2871
|
export declare function initCloverI18n(options?: CloverI18nOptions): CloverI18n;
|
|
2794
2872
|
export type DefaultProps = Omit<RootProps, "children"> & {
|
|
@@ -2820,7 +2898,7 @@ export type DefaultProps = Omit<RootProps, "children"> & {
|
|
|
2820
2898
|
*/
|
|
2821
2899
|
panelSections?: readonly PanelSection[];
|
|
2822
2900
|
/**
|
|
2823
|
-
* What a panel section's tab or heading says, in place of Clover's
|
|
2901
|
+
* What a panel section's tab or heading says, in place of its word in Clover's interface language:
|
|
2824
2902
|
* `{ annotations: "Chapters" }`, or a word by language tag to say it in several (the
|
|
2825
2903
|
* Panel's `labels`).
|
|
2826
2904
|
*/
|
|
@@ -2832,6 +2910,13 @@ export type DefaultProps = Omit<RootProps, "children"> & {
|
|
|
2832
2910
|
* it says of itself comes in several (the Panel's `languages`). Default `true`.
|
|
2833
2911
|
*/
|
|
2834
2912
|
languages?: boolean;
|
|
2913
|
+
/**
|
|
2914
|
+
* Default, Document and Gallery: whether the panel's language toggle, beside its About
|
|
2915
|
+
* heading, also offers Clover's interface languages (its control labels, section
|
|
2916
|
+
* titles and announcements) that the resource has none of, the visitor's and the
|
|
2917
|
+
* site's, where they differ (the Panel's `interfaceLanguages`). Default `true`.
|
|
2918
|
+
*/
|
|
2919
|
+
interfaceLanguages?: boolean;
|
|
2835
2920
|
/** The thumbnails under the Body: a layout, or `false` for none. Default `slider`. */
|
|
2836
2921
|
items?: Exclude<ItemsLayout, "pager"> | false;
|
|
2837
2922
|
/**
|
|
@@ -2860,7 +2945,7 @@ export type DefaultProps = Omit<RootProps, "children"> & {
|
|
|
2860
2945
|
/** The Body's Canvas `options`: its gestures, zoom limits and motion. */
|
|
2861
2946
|
canvasOptions?: CloverCanvasOptions;
|
|
2862
2947
|
};
|
|
2863
|
-
declare function Default({ className, header, headingLevel, panel, defaultPanelOpen, panelLayout, panelSections, panelLabels, download, languages, items, singleItem, storageKey, fill, collapseControls, canvasOptions, ...root }: DefaultProps): React.JSX.Element;
|
|
2948
|
+
declare function Default({ className, header, headingLevel, panel, defaultPanelOpen, panelLayout, panelSections, panelLabels, download, languages, interfaceLanguages, items, singleItem, storageKey, fill, collapseControls, canvasOptions, ...root }: DefaultProps): React.JSX.Element;
|
|
2864
2949
|
/**
|
|
2865
2950
|
* A layout the Viewer draws: one from `@nulib/clover/templates`, or a component of your
|
|
2866
2951
|
* own that takes the `Clover.Root` props.
|
|
@@ -18,6 +18,7 @@ import { sameSpec, prepareItem, layoutItems, pixelsToWorld, itemToWorld, MEDIA_K
|
|
|
18
18
|
const DEFAULTS = {
|
|
19
19
|
maxZoomPixelRatio: 1.1,
|
|
20
20
|
minZoomImageRatio: 0.9,
|
|
21
|
+
upscale: true,
|
|
21
22
|
animationTime: 0.09,
|
|
22
23
|
animationDuration: void 0,
|
|
23
24
|
springStiffness: 6.5,
|
|
@@ -355,9 +356,9 @@ class CanvasRenderer {
|
|
|
355
356
|
* The camera that frames `bounds`, turned by `rotation`, in the part of the viewport
|
|
356
357
|
* `inset` leaves: centered there, off the viewport's center where its sides differ.
|
|
357
358
|
*/
|
|
358
|
-
fit(bounds, rotation, { top, right, bottom, left }) {
|
|
359
|
+
fit(bounds, rotation, { top, right, bottom, left }, maxZoom = Infinity) {
|
|
359
360
|
const { width, height } = this.viewport;
|
|
360
|
-
const
|
|
361
|
+
const fitted = fitCamera(
|
|
361
362
|
bounds,
|
|
362
363
|
{
|
|
363
364
|
width: Math.max(1, width - left - right),
|
|
@@ -365,6 +366,7 @@ class CanvasRenderer {
|
|
|
365
366
|
},
|
|
366
367
|
rotation
|
|
367
368
|
);
|
|
369
|
+
const zoom = Math.min(fitted.zoom, maxZoom);
|
|
368
370
|
const center = anchoredCenter(
|
|
369
371
|
rectCenter(bounds),
|
|
370
372
|
{ x: (width + left - right) / 2, y: (height + top - bottom) / 2 },
|
|
@@ -415,13 +417,21 @@ class CanvasRenderer {
|
|
|
415
417
|
getZoomLimits() {
|
|
416
418
|
var _a;
|
|
417
419
|
const home = ((_a = this.homeCamera()) == null ? void 0 : _a.zoom) ?? 1;
|
|
418
|
-
const worldPerPixel = this.items.length ? Math.min(...this.items.map((item) => pixelsToWorld(item).x)) : 1;
|
|
419
420
|
return {
|
|
420
421
|
home,
|
|
421
422
|
min: home * this.options.minZoomImageRatio,
|
|
422
|
-
max: Math.max(home, this.
|
|
423
|
+
max: Math.max(home, this.closestZoom())
|
|
423
424
|
};
|
|
424
425
|
}
|
|
426
|
+
/**
|
|
427
|
+
* `maxZoomPixelRatio` is CSS pixels per *image* pixel, and world units may differ from
|
|
428
|
+
* those. Measured against the sharpest image in the scene, so an inset photograph
|
|
429
|
+
* denser than the page it sits on can still be zoomed to its own full resolution.
|
|
430
|
+
*/
|
|
431
|
+
closestZoom() {
|
|
432
|
+
const worldPerPixel = this.items.length ? Math.min(...this.items.map((item) => pixelsToWorld(item).x)) : 1;
|
|
433
|
+
return this.options.maxZoomPixelRatio / worldPerPixel;
|
|
434
|
+
}
|
|
425
435
|
home(immediate = false) {
|
|
426
436
|
const home = this.homeCamera();
|
|
427
437
|
if (!home) return;
|
|
@@ -723,7 +733,12 @@ class CanvasRenderer {
|
|
|
723
733
|
if (!this.worldBounds) return null;
|
|
724
734
|
const turn = 2 * Math.PI;
|
|
725
735
|
const upright = Math.round(this.camera.destination.rotation / turn) * turn || 0;
|
|
726
|
-
return this.fit(
|
|
736
|
+
return this.fit(
|
|
737
|
+
this.worldBounds,
|
|
738
|
+
upright,
|
|
739
|
+
this.inset,
|
|
740
|
+
this.options.upscale ? Infinity : this.closestZoom()
|
|
741
|
+
);
|
|
727
742
|
}
|
|
728
743
|
/**
|
|
729
744
|
* Keep the camera usable: zoom within limits, and the center over the world so the
|
package/dist/map/index.d.mts
CHANGED
|
@@ -161,8 +161,9 @@ export interface CloverRequest {
|
|
|
161
161
|
* state (JSON or base64url). The resource may be a Manifest, a Collection (its first
|
|
162
162
|
* Manifest is shown), a lone Canvas (its `partOf` Manifest, or a Manifest made around
|
|
163
163
|
* it), or annotations, an AnnotationPage or AnnotationCollection (the Manifest their first
|
|
164
|
-
* annotation's Canvas is `partOf`, at that Canvas).
|
|
165
|
-
*
|
|
164
|
+
* annotation's Canvas is `partOf`, at that Canvas). It may also be a IIIF Image service,
|
|
165
|
+
* its `info.json` or its base URI, shown as the one image it is (`imageServiceContent`).
|
|
166
|
+
* Everything is fetched once, with the request settings, and upgraded to Presentation 4.
|
|
166
167
|
*/
|
|
167
168
|
export type IIIFContent = string | Record<string, unknown>;
|
|
168
169
|
export interface MapProps extends Omit<React.HTMLAttributes<HTMLElement>, "onSelect"> {
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
import { descriptionLanguages, startingLanguage } from "../core/language-choice.mjs";
|
|
4
|
+
import { sameLanguage } from "../i18n/languages.mjs";
|
|
4
5
|
import { useClover, useCloverSelector } from "./context.mjs";
|
|
5
6
|
function useReadingLanguages() {
|
|
6
|
-
const { language, chooseLanguage } = useClover("About");
|
|
7
|
+
const { language, chooseLanguage, toggleDrawn } = useClover("About");
|
|
7
8
|
const manifest = useCloverSelector(
|
|
8
9
|
(state) => state.manifest
|
|
9
10
|
);
|
|
10
11
|
const languages = useMemo(() => descriptionLanguages(manifest), [manifest]);
|
|
11
12
|
const chosen = startingLanguage(languages, language);
|
|
12
|
-
return chosen && chooseLanguage ? {
|
|
13
|
+
return chosen && chooseLanguage ? {
|
|
14
|
+
languages,
|
|
15
|
+
chosen,
|
|
16
|
+
onChange: chooseLanguage,
|
|
17
|
+
drawn: toggleDrawn ?? false
|
|
18
|
+
} : null;
|
|
19
|
+
}
|
|
20
|
+
function covers(offered, languages) {
|
|
21
|
+
if (!(offered == null ? void 0 : offered.drawn)) return false;
|
|
22
|
+
return languages.every(
|
|
23
|
+
(tag) => !!tag && tag !== "none" && offered.languages.some((each) => sameLanguage(each, tag))
|
|
24
|
+
);
|
|
13
25
|
}
|
|
14
26
|
export {
|
|
27
|
+
covers,
|
|
15
28
|
useReadingLanguages
|
|
16
29
|
};
|
package/dist/styles/default.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer clover{.clover-template-default{--clover-body-height: min(65vh, 40rem);display:flex;flex-direction:column;color:var(--clover-color-primary, #1a1d1e)}@supports (height: 1svh){.clover-template-default{--clover-body-height: min(65svh, 40rem)}}.clover-template-default:is([data-fill],:fullscreen){--clover-body-height: auto;height:100%;min-height:min-content}.clover-template-default:is([data-fill],:fullscreen)>.clover-template-default-panes{flex:1 1 auto}.clover-template-default:is([data-fill],:fullscreen) .clover-template-default-body{flex:1 1 0;min-height:16rem}.clover-template-default-header{display:flex;align-items:center;gap:var(--clover-space-s);padding:var(--clover-inset)}@media (width < 31rem){.clover-template-default-header,.clover-template-default-rail{--clover-inset: var(--clover-space-m)}}.clover-template-default-pager{flex:none;padding-block:0}.clover-template-default-header:has(>.clover-template-default-pager){flex-wrap:wrap;row-gap:var(--clover-space-xs)}.clover-template-default-header:has(>.clover-template-default-pager)>:is(.clover-template-default-title,.clover-template-default-pager){align-self:last baseline}.clover-template-default-header:has(>.clover-template-default-collection-row){display:grid;grid-template-columns:minmax(0,1fr) fit-content(38.2%);row-gap:var(--clover-space-xs)}.clover-template-default-header>:is(.clover-template-default-title,.clover-template-default-collection-row){grid-column:1}.clover-template-default-header:has(>.clover-template-default-collection-row)>.clover-template-default-provider{grid-column:2;grid-row:1 / span 2;align-self:end;max-width:none}.clover-template-default-collection-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--clover-space-xs) var(--clover-space-s);min-width:0}.clover-template-default-collection{min-width:0;margin:0;overflow-wrap:anywhere;color:var(--clover-color-primary-muted, #26292b);font-size:inherit}.clover-template-default-provider{flex:0 1 auto;max-width:38.2%;margin-inline-start:auto}@container clover-template-default-main (width < 36rem){.clover-template-default-header:has(>.clover-template-default-collection-row)>.clover-template-default-provider{grid-row:1;align-self:start}.clover-template-default-header>.clover-template-default-collection-row{grid-column:1 / -1}}@container clover-template-default-main (width < 26rem){.clover-template-default:has(.clover-template-default-panel[data-about]) .clover-template-default-provider{display:none}}.clover-template-default-panes{position:relative}.clover-template-default-main{display:flex;flex-direction:column;container:clover-template-default-main / inline-size}.clover-template-panes[data-panel=over]>.clover-template-default-main{isolation:isolate}.clover-template-panes{position:relative}.clover-template-panel{contain:size;overflow-y:auto;overscroll-behavior:contain;background-color:var(--clover-color-secondary, #fff)}.clover-template-panel[hidden]{display:none}.clover-template-panes>.clover-template-panel-handle{translate:-1.5px 0}.clover-template-panes:dir(rtl)>.clover-template-panel-handle{translate:1.5px 0}.clover-template-default-panes:dir(ltr) .clover-items-viewport{margin-right:0}.clover-template-default-panes:dir(rtl) .clover-items-viewport{margin-left:0}.clover-template-default-panes:dir(ltr) .clover-items .clover-items-frame:not([dir=rtl]):after,.clover-template-default-panes:dir(ltr) .clover-items .clover-items-frame[dir=rtl]:before{right:0}.clover-template-default-panes:dir(rtl) .clover-items .clover-items-frame:not([dir=rtl]):before,.clover-template-default-panes:dir(rtl) .clover-items .clover-items-frame[dir=rtl]:after{left:0}.clover-template-panes[data-panel=over]{overflow:clip}.clover-template-panes[data-panel=over]>.clover-template-drawer{position:absolute;inset-block:0;inset-inline-end:0;z-index:4;width:min(24rem,calc(100% - var(--clover-space-2xl)));max-width:none;max-height:none;border-inline-start:1px solid var(--clover-color-secondary-muted, #e6e8eb);--clover-template-inner: left;--clover-template-toward: -1;--clover-template-out: translateX(calc(100% + var(--clover-space-xl)));transform:var(--clover-template-out);transition:transform .24s cubic-bezier(.16,1,.3,1)}.clover-template-panes[data-panel=over]>.clover-template-drawer:dir(rtl){--clover-template-out: translateX(calc(-100% - var(--clover-space-xl)));--clover-template-inner: right;--clover-template-toward: 1}.clover-template-panes[data-panel=over]>.clover-template-drawer[data-side=start]{inset-inline:0 auto;border-inline-start:0;border-inline-end:1px solid var(--clover-color-secondary-muted, #e6e8eb);--clover-template-out: translateX(calc(-100% - var(--clover-space-xl)));--clover-template-inner: right;--clover-template-toward: 1}.clover-template-panes[data-panel=over]>.clover-template-drawer[data-side=start]:dir(rtl){--clover-template-out: translateX(calc(100% + var(--clover-space-xl)));--clover-template-inner: left;--clover-template-toward: -1}.clover-template-panes[data-panel=over]>.clover-template-drawer,.clover-template-float{--clover-grip: color-mix( in srgb, var(--clover-color-primary-muted, #26292b) 30%, transparent );background:linear-gradient(var(--clover-grip),var(--clover-grip)) no-repeat var(--clover-template-inner) var(--clover-space-2xs) center / 3px var(--clover-control),var(--clover-color-secondary, #fff);touch-action:pan-y;box-shadow:calc(var(--clover-template-toward) * var(--clover-space-s)) 0 var(--clover-space-l) #0000001f}.clover-template-panes[data-panel=over]>.clover-template-drawer[data-open=true]{transform:none}.clover-template-scrim{position:absolute;inset:0;z-index:3;background-color:#0003;opacity:0;cursor:pointer;transition:opacity .24s ease}.clover-template-scrim[data-open=true]{opacity:1}@media (prefers-reduced-motion: reduce){.clover-template-panes[data-panel=over]>.clover-template-drawer,.clover-template-scrim{transition:none}}.clover-template-default-rail{display:flex;flex-direction:column;gap:var(--clover-space-m);padding:var(--clover-inset)}.clover-template-default-rail>.clover-items{margin-inline-end:calc(-1 * var(--clover-inset))}.clover-template-default-rail .clover-items-viewport{margin-inline-end:0}.clover-template-default-rail .clover-items-frame:not([dir=rtl])>button.clover-items-scroll-prev,.clover-template-default-rail .clover-items-frame[dir=rtl]>button.clover-items-scroll-next{left:calc(-1 * var(--clover-space-s))}.clover-template-default-rail .clover-items-frame:not([dir=rtl])>button.clover-items-scroll-next,.clover-template-default-rail .clover-items-frame[dir=rtl]>button.clover-items-scroll-prev{right:var(--clover-inset)}.clover-template-default-rail:not(:has(.clover-items,.clover-pager-position)){display:none}.clover-template-default-rail-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--clover-space-s)}.clover-template-default-titles{min-width:0;margin:0;overflow-wrap:anywhere}.clover-template-default-titles>.clover-template-default-titles-dot{margin-inline:var(--clover-space-xs);color:var(--clover-color-primary-muted, #26292b)}.clover-template-default-rail-header .clover-pager-position{flex-shrink:0;margin-inline-start:auto;font-size:var(--clover-text-s)}.clover-template-spine{position:relative;z-index:4;flex:none;width:0}.clover-template-spine>*{position:absolute;top:calc(var(--clover-template-spine-top, 0px) + var(--clover-inset));inset-inline-start:-1.5px;translate:-50%}.clover-template-panes:has(>.clover-template-spine)>:first-child .clover-canvas>.clover-canvas-controls[data-fit]{inset-inline-end:calc(var(--clover-control) / 2 - 1.5px + var(--clover-space-xs))}.clover-template-panes .clover-template-spine>*{transition-property:background-color,color,outline-color}.clover-root[data-status=idle] .clover-template-spine{visibility:hidden}.clover-template-spine:dir(rtl)>*{translate:50%}}
|
|
1
|
+
@layer clover{.clover-template-default{--clover-body-height: min(65vh, 40rem);display:flex;flex-direction:column;color:var(--clover-color-primary, #1a1d1e)}@supports (height: 1svh){.clover-template-default{--clover-body-height: min(65svh, 40rem)}}.clover-template-default:is([data-fill],:fullscreen){--clover-body-height: auto;height:100%;min-height:min-content}.clover-template-default:is([data-fill],:fullscreen)>.clover-template-default-panes{flex:1 1 auto}.clover-template-default:is([data-fill],:fullscreen) .clover-template-default-body{flex:1 1 0;min-height:16rem}.clover-template-default-header{display:flex;align-items:center;gap:var(--clover-space-s);padding:var(--clover-inset)}.clover-template-default-header:empty{display:none}@media (width < 31rem){.clover-template-default-header,.clover-template-default-rail{--clover-inset: var(--clover-space-m)}}.clover-template-default-pager{flex:none;padding-block:0}.clover-template-default-header:has(>.clover-template-default-pager){flex-wrap:wrap;row-gap:var(--clover-space-xs)}.clover-template-default-header:has(>.clover-template-default-pager)>:is(.clover-template-default-title,.clover-template-default-pager){align-self:last baseline}.clover-template-default-header:has(>.clover-template-default-collection-row){display:grid;grid-template-columns:minmax(0,1fr) fit-content(38.2%);row-gap:var(--clover-space-xs)}.clover-template-default-header>:is(.clover-template-default-title,.clover-template-default-collection-row){grid-column:1}.clover-template-default-header:has(>.clover-template-default-collection-row)>.clover-template-default-provider{grid-column:2;grid-row:1 / span 2;align-self:end;max-width:none}.clover-template-default-collection-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--clover-space-xs) var(--clover-space-s);min-width:0}.clover-template-default-collection{min-width:0;margin:0;overflow-wrap:anywhere;color:var(--clover-color-primary-muted, #26292b);font-size:inherit}.clover-template-default-provider{flex:0 1 auto;max-width:38.2%;margin-inline-start:auto}@container clover-template-default-main (width < 36rem){.clover-template-default-header:has(>.clover-template-default-collection-row)>.clover-template-default-provider{grid-row:1;align-self:start}.clover-template-default-header>.clover-template-default-collection-row{grid-column:1 / -1}}@container clover-template-default-main (width < 26rem){.clover-template-default:has(.clover-template-default-panel[data-about]) .clover-template-default-provider{display:none}}.clover-template-default-panes{position:relative}.clover-template-default-main{display:flex;flex-direction:column;container:clover-template-default-main / inline-size}.clover-template-panes[data-panel=over]>.clover-template-default-main{isolation:isolate}.clover-template-panes{position:relative}.clover-template-panel{contain:size;overflow-y:auto;overscroll-behavior:contain;background-color:var(--clover-color-secondary, #fff)}.clover-template-panel[hidden]{display:none}.clover-template-panes>.clover-template-panel-handle{translate:-1.5px 0}.clover-template-panes:dir(rtl)>.clover-template-panel-handle{translate:1.5px 0}.clover-template-default-panes:dir(ltr) .clover-items-viewport{margin-right:0}.clover-template-default-panes:dir(rtl) .clover-items-viewport{margin-left:0}.clover-template-default-panes:dir(ltr) .clover-items .clover-items-frame:not([dir=rtl]):after,.clover-template-default-panes:dir(ltr) .clover-items .clover-items-frame[dir=rtl]:before{right:0}.clover-template-default-panes:dir(rtl) .clover-items .clover-items-frame:not([dir=rtl]):before,.clover-template-default-panes:dir(rtl) .clover-items .clover-items-frame[dir=rtl]:after{left:0}.clover-template-panes[data-panel=over]{overflow:clip}.clover-template-panes[data-panel=over]>.clover-template-drawer{position:absolute;inset-block:0;inset-inline-end:0;z-index:4;width:min(24rem,calc(100% - var(--clover-space-2xl)));max-width:none;max-height:none;border-inline-start:1px solid var(--clover-color-secondary-muted, #e6e8eb);--clover-template-inner: left;--clover-template-toward: -1;--clover-template-out: translateX(calc(100% + var(--clover-space-xl)));transform:var(--clover-template-out);transition:transform .24s cubic-bezier(.16,1,.3,1)}.clover-template-panes[data-panel=over]>.clover-template-drawer:dir(rtl){--clover-template-out: translateX(calc(-100% - var(--clover-space-xl)));--clover-template-inner: right;--clover-template-toward: 1}.clover-template-panes[data-panel=over]>.clover-template-drawer[data-side=start]{inset-inline:0 auto;border-inline-start:0;border-inline-end:1px solid var(--clover-color-secondary-muted, #e6e8eb);--clover-template-out: translateX(calc(-100% - var(--clover-space-xl)));--clover-template-inner: right;--clover-template-toward: 1}.clover-template-panes[data-panel=over]>.clover-template-drawer[data-side=start]:dir(rtl){--clover-template-out: translateX(calc(100% + var(--clover-space-xl)));--clover-template-inner: left;--clover-template-toward: -1}.clover-template-panes[data-panel=over]>.clover-template-drawer,.clover-template-float{--clover-grip: color-mix( in srgb, var(--clover-color-primary-muted, #26292b) 30%, transparent );background:linear-gradient(var(--clover-grip),var(--clover-grip)) no-repeat var(--clover-template-inner) var(--clover-space-2xs) center / 3px var(--clover-control),var(--clover-color-secondary, #fff);touch-action:pan-y;box-shadow:calc(var(--clover-template-toward) * var(--clover-space-s)) 0 var(--clover-space-l) #0000001f}.clover-template-panes[data-panel=over]>.clover-template-drawer[data-open=true]{transform:none}.clover-template-scrim{position:absolute;inset:0;z-index:3;background-color:#0003;opacity:0;cursor:pointer;transition:opacity .24s ease}.clover-template-scrim[data-open=true]{opacity:1}@media (prefers-reduced-motion: reduce){.clover-template-panes[data-panel=over]>.clover-template-drawer,.clover-template-scrim{transition:none}}.clover-template-default-rail{display:flex;flex-direction:column;gap:var(--clover-space-m);padding:var(--clover-inset)}.clover-template-default-rail>.clover-items{margin-inline-end:calc(-1 * var(--clover-inset))}.clover-template-default-rail .clover-items-viewport{margin-inline-end:0}.clover-template-default-rail .clover-items-frame:not([dir=rtl])>button.clover-items-scroll-prev,.clover-template-default-rail .clover-items-frame[dir=rtl]>button.clover-items-scroll-next{left:calc(-1 * var(--clover-space-s))}.clover-template-default-rail .clover-items-frame:not([dir=rtl])>button.clover-items-scroll-next,.clover-template-default-rail .clover-items-frame[dir=rtl]>button.clover-items-scroll-prev{right:var(--clover-inset)}.clover-template-default-rail:not(:has(.clover-items,.clover-pager-position)){display:none}.clover-template-default-rail-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--clover-space-s)}.clover-template-default-titles{min-width:0;margin:0;overflow-wrap:anywhere}.clover-template-default-titles>.clover-template-default-titles-dot{margin-inline:var(--clover-space-xs);color:var(--clover-color-primary-muted, #26292b)}.clover-template-default-rail-header .clover-pager-position{flex-shrink:0;margin-inline-start:auto;font-size:var(--clover-text-s)}.clover-template-spine{position:relative;z-index:4;flex:none;width:0}.clover-template-spine>*{position:absolute;top:calc(var(--clover-template-spine-top, 0px) + var(--clover-inset));inset-inline-start:-1.5px;translate:-50%}.clover-template-panes:has(>.clover-template-spine)>:first-child .clover-canvas>.clover-canvas-controls[data-fit]{inset-inline-end:calc(var(--clover-control) / 2 - 1.5px + var(--clover-space-xs))}.clover-template-panes .clover-template-spine>*{transition-property:background-color,color,outline-color}.clover-root[data-status=idle] .clover-template-spine{visibility:hidden}.clover-template-spine:dir(rtl)>*{translate:50%}}
|
package/dist/styles/items.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer clover{.clover-items{--clover-items-ring-room: 4px;--clover-items-picture-height: var(--clover-items-height, 8rem);color:var(--clover-color-primary, #1a1d1e)}.clover-items-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--clover-space-xs) var(--clover-space-m);margin-bottom:var(--clover-space-s)}.clover-items-description{flex:1 0 100%;order:3;margin:0;color:var(--clover-color-primary-muted, #26292b)}.clover-items-homepage{margin-inline-start:auto;color:var( --clover-color-accent-text, var(--clover-accent-text-fallback, var(--clover-color-accent, #0065c3)) );text-decoration-line:underline;text-underline-offset:var(--clover-space-3xs)}.clover-items-track{margin:0;padding:0;list-style:none;gap:var(--clover-items-gap, var(--clover-space-m))}.clover-items-viewport{margin:calc(-1 * var(--clover-items-ring-room));padding:var(--clover-items-ring-room);scroll-padding-inline:var(--clover-items-ring-room);scrollbar-width:none}.clover-items-viewport::-webkit-scrollbar{display:none}.clover-items-viewport[data-dragging]{cursor:grabbing;-webkit-user-select:none;user-select:none}@supports (timeline-scope: --clover-items-track){.clover-items[data-layout=slider] .clover-items-frame{timeline-scope:--clover-items-track}.clover-items[data-layout=slider] .clover-items-viewport{scroll-timeline:--clover-items-track inline}.clover-items[data-layout=slider] .clover-items-frame:before,.clover-items[data-layout=slider] .clover-items-frame:after{content:"";position:absolute;top:var(--clover-items-ring-room);z-index:1;width:var(--clover-space-s);height:var(--clover-items-picture-height);background:linear-gradient(var(--clover-items-shade),rgb(0 0 0 / .16),transparent);-webkit-mask-image:linear-gradient(transparent,#000 var(--clover-space-s),#000 calc(100% - var(--clover-space-s)),transparent);mask-image:linear-gradient(transparent,#000 var(--clover-space-s),#000 calc(100% - var(--clover-space-s)),transparent);opacity:0;pointer-events:none;animation:clover-shade linear both;animation-timeline:--clover-items-track}.clover-items[data-layout=slider] .clover-items-frame:before{--clover-items-shade: to right;left:calc(-1 * var(--clover-items-ring-room));animation-range:0 var(--clover-space-m)}.clover-items[data-layout=slider] .clover-items-frame:after{--clover-items-shade: to left;right:calc(-1 * var(--clover-items-ring-room));animation-direction:reverse;animation-range:calc(100% - var(--clover-space-m)) 100%}.clover-items[data-layout=slider] .clover-items-frame[dir=rtl]:before{--clover-items-shade: to left;right:calc(-1 * var(--clover-items-ring-room));left:auto}.clover-items[data-layout=slider] .clover-items-frame[dir=rtl]:after{--clover-items-shade: to right;left:calc(-1 * var(--clover-items-ring-room));right:auto}}.clover-items[data-layout=list] .clover-items-track{display:flex;flex-direction:column}.clover-items:is([data-layout=grid],[data-layout=masonry]) .clover-items-track{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--clover-items-size, 10rem)),1fr))}.clover-items-item{position:relative;cursor:pointer}.clover-items-link{display:block;color:inherit;text-decoration:none}:is(.clover-items-item[role=option],.clover-items-link){margin:calc(-1 * var(--clover-items-ring-room));padding:var(--clover-items-ring-room);outline:none}.clover-items:not([data-layout=slider]) :is(.clover-items-viewport,.clover-items-item[role=option],.clover-items-link){margin-inline:0;padding-inline:0}.clover-items-figure{display:grid;grid-template-columns:repeat(var(--parts, 1),auto);justify-content:start;gap:var(--clover-space-xs) 0;margin:0}.clover-items-pictures{position:relative;display:grid;grid-column:1 / -1;grid-template-columns:subgrid;border-radius:var(--clover-radius, 3px);outline:3px solid var(--ring-color, transparent);outline-offset:1px;transition:outline-color .2s cubic-bezier(.16,1,.3,1)}.clover-items-picture{position:relative;display:block;overflow:hidden;background-color:var(--clover-color-secondary-muted, #f1f1f1)}.clover-items-picture img{display:block;opacity:0;transition:opacity .3s ease}.clover-items-picture[data-loaded=true] img{opacity:1}.clover-items-picture[data-empty]{display:grid;place-items:center;aspect-ratio:var(--clover-items-ratio, 1);color:var(--clover-color-primary-muted, #26292b)}.clover-items-picture[data-empty]>svg{width:33%;max-width:var(--clover-space-xl);height:auto;fill:currentColor}.clover-items-pictures>.clover-items-picture:first-child{border-start-start-radius:inherit;border-end-start-radius:inherit}.clover-items-pictures>.clover-items-picture:last-child{border-start-end-radius:inherit;border-end-end-radius:inherit}.clover-items-duration{position:absolute;inset-inline-end:var(--clover-space-xs);bottom:var(--clover-space-xs);padding:var(--clover-space-3xs) var(--clover-space-xs);border-radius:var(--clover-radius, 3px);background-color:#000000b8;color:#fff;font-size:var(--clover-text-xs);font-variant-numeric:tabular-nums}.clover-items-caption{display:grid;grid-column:1 / -1;grid-template-columns:subgrid;gap:var(--clover-space-3xs) 0;font-size:var(--clover-text-s)}.clover-items-label{position:relative;contain:inline-size}.clover-items:is([data-layout=slider],[data-layout=grid],[data-layout=masonry]) .clover-items-label-text{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:var(--clover-items-lines, 3);line-clamp:var(--clover-items-lines, 3)}.clover-items-label-full{position:absolute;inset-inline:0;bottom:0;z-index:1;padding-block-start:var(--clover-space-2xs);background-color:var(--clover-color-secondary, #fff);box-shadow:0 calc(-1 * var(--clover-space-2xs)) var(--clover-space-s) #00000029;pointer-events:none}:is(.clover-items-item[role=option],.clover-items-link):is(:hover,:focus-visible):not([data-full-hidden]) .clover-items-label[data-clamped]>.clover-items-label-full{display:block}@media (forced-colors: active){.clover-items-label-full{border:1px solid CanvasText}}.clover-items-date{grid-column:1 / -1;color:var(--clover-color-primary-muted, #26292b);font-size:var(--clover-text-xs)}.clover-items-summary{grid-column:1 / -1;color:var(--clover-color-primary-muted, #26292b)}.clover-items[data-layout=slider] .clover-items-picture[data-empty],.clover-items[data-layout=slider] .clover-items-picture img{width:auto;height:var(--clover-items-picture-height)}.clover-items:is([data-layout=grid],[data-layout=masonry]) .clover-items-figure{grid-template-columns:repeat(var(--parts, 1),1fr)}.clover-items:is([data-layout=grid],[data-layout=masonry]) .clover-items-pictures{aspect-ratio:1;overflow:hidden}.clover-items:is([data-layout=grid],[data-layout=masonry]) .clover-items-picture{min-width:0}.clover-items:is([data-layout=grid],[data-layout=masonry]) .clover-items-picture img{width:100%;height:100%;object-fit:contain}.clover-items[data-layout=masonry] .clover-items-viewport[data-masonry] .clover-items-track{grid-auto-rows:4px;row-gap:0;align-items:start}.clover-items[data-layout=masonry] .clover-items-pictures{aspect-ratio:auto}.clover-items[data-layout=masonry] .clover-items-picture img{height:auto}.clover-items[data-layout=list] .clover-items-figure{grid-template-columns:auto 1fr;align-items:start;gap:0 var(--clover-space-s)}.clover-items[data-layout=list] .clover-items-pictures{grid-column:1;grid-template-columns:repeat(var(--parts, 1),auto);gap:0}.clover-items[data-layout=list] .clover-items-caption{grid-column:2;grid-template-columns:none}.clover-items[data-layout=list] .clover-items-label{contain:none}.clover-items[data-layout=list] .clover-items-picture img{width:auto;height:var(--clover-space-xl)}.clover-items[data-layout=list] .clover-items-picture[data-empty]{height:var(--clover-space-xl)}:is(.clover-items-item[role=option],.clover-items-link):hover{--ring-color: color-mix( in srgb, var(--clover-color-accent, #0065c3) 50%, transparent )}.clover-items-item[aria-selected=true]{--ring-color: var(--clover-color-accent, #0065c3)}:is(.clover-items-item[role=option],.clover-items-link):focus-visible{--ring-color: var(--clover-color-primary, #1a1d1e)}:is(.clover-items-item[role=option],.clover-items-link):focus-visible .clover-items-pictures:after{position:absolute;inset:0;border-radius:inherit;outline:2px solid var(--clover-color-secondary, #fff);outline-offset:-2px;box-shadow:inset 0 0 0 4px var(--clover-color-primary, #1a1d1e);content:"";pointer-events:none}:is(.clover-items-item[role=option],.clover-items-link):not(:has(.clover-items-pictures)):focus-visible{border-radius:var(--clover-radius, 3px);outline:3px solid var(--clover-color-primary, #1a1d1e);outline-offset:calc(1px - var(--clover-items-ring-room))}@media (forced-colors: active){.clover-items-pictures{outline-color:var(--ring-color, Canvas)}.clover-items-item[aria-selected=true]{--ring-color: Highlight}:is(.clover-items-item[role=option],.clover-items-link):focus-visible{--ring-color: CanvasText}:is(.clover-items-item[role=option],.clover-items-link):focus-visible .clover-items-pictures:after{outline-color:CanvasText}:is(.clover-items-item[role=option],.clover-items-link):not(:has(.clover-items-pictures)):focus-visible{outline-color:CanvasText}}.clover-items-item[aria-selected=true] .clover-items-label{color:var( --clover-color-accent-text, var(--clover-accent-text-fallback, var(--clover-color-accent, #0065c3)) );font-weight:600}:is(button.clover-items-scroll-prev,button.clover-items-scroll-next){position:absolute;top:calc(var(--clover-items-picture-height) / 2);z-index:2;translate:0 -50%;box-shadow:0 1px 4px #00000040}.clover-items-scroll-prev{inset-inline-start:var(--clover-space-2xs)}.clover-items-scroll-next{inset-inline-end:var(--clover-space-2xs)}.clover-pager{display:flex;align-items:center;justify-content:center;gap:var(--clover-space-s);padding-block:var(--clover-space-s)}.clover-pager-position{display:inline-grid;justify-items:end;font-variant-numeric:tabular-nums;color:var(--clover-color-primary-muted, #26292b)}.clover-pager[data-direction=right-to-left] .clover-pager-position{justify-items:start}.clover-pager-position>[aria-hidden]{grid-area:1 / 1}.clover-pager-position>.clover-pager-room[hidden]{display:block;visibility:hidden}.clover-pager:has(>.clover-pager-count){position:relative;z-index:5}.clover-pager-count{position:relative}.clover-pager:has(>.clover-pager-count)>button,.clover-pager-count>.clover-pager-count-button{position:relative;z-index:1}.clover-pager-count-button{display:inline-flex;align-items:center;gap:var(--clover-space-2xs);min-height:var(--clover-space-l);padding:0 var(--clover-space-xs);border:0;border-radius:var(--clover-radius-pill, 2rem);background:none;color:var(--clover-color-primary-muted, #26292b);font:inherit;cursor:pointer}.clover-pager-count-button .clover-pager-position{color:inherit}.clover-pager-count-button .clover-pager-position>span{grid-area:1 / 1}.clover-pager-count-button:is(:hover,:focus-visible,[aria-expanded=true]){color:var( --clover-color-accent-text, var(--clover-accent-text-fallback, var(--clover-color-accent, #0065c3)) )}.clover-pager-count-button:focus-visible{outline:2px solid var(--clover-color-accent, #0065c3);outline-offset:2px}.clover-pager-count>.clover-pager-menu{z-index:0;top:calc(-1 * var(--clover-space-m));inset-inline-start:calc(-1 * var(--clover-space-m));width:min(20rem,calc(100vw - 2 * var(--clover-space-m)));max-height:min(24rem,60vh);max-height:min(24rem,60dvh);--clover-pager-menu-head: calc( var(--clover-space-m) + var(--clover-space-l) + var(--clover-space-m) );padding:var(--clover-space-m);padding-block:var(--clover-pager-menu-head) 0}.clover-pager-count>.clover-pager-menu{display:flex;flex-direction:column;overflow:hidden}.clover-pager-count>.clover-pager-menu>.clover-pager-list{min-height:0;margin:calc(-1 * var(--clover-items-ring-room, 4px));margin-block-end:0;padding:var(--clover-items-ring-room, 4px);padding-block-end:var(--clover-space-m);overflow-y:auto;overscroll-behavior:contain}@supports (timeline-scope: --clover-pager-list){.clover-pager-count>.clover-pager-menu{timeline-scope:--clover-pager-list}.clover-pager-count>.clover-pager-menu>.clover-pager-list{scroll-timeline:--clover-pager-list block}.clover-pager-count>.clover-pager-menu:before{content:"";position:absolute;z-index:1;top:calc(var(--clover-pager-menu-head) - var(--clover-items-ring-room, 4px));inset-inline:calc(var(--clover-space-m) - var(--clover-items-ring-room, 4px));height:var(--clover-space-s);background:linear-gradient(rgb(0 0 0 / .16),transparent);-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--clover-space-s),#000 calc(100% - var(--clover-space-s)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--clover-space-s),#000 calc(100% - var(--clover-space-s)),transparent);opacity:0;pointer-events:none;animation:clover-shade linear both;animation-timeline:--clover-pager-list;animation-range:0 var(--clover-space-m)}}.clover-pager[data-direction=right-to-left] .clover-pager-count>.clover-pager-menu{inset-inline:auto calc(-1 * var(--clover-space-m))}.clover-pager-count-button[aria-expanded=true] svg{rotate:180deg}.clover-pager-list.clover-collection>.clover-items{--clover-items-gap: var(--clover-space-m);margin:0}.clover-pager[data-size=small]{gap:var(--clover-space-2xs);padding-block:0}.clover-pager[data-size=small] .clover-pager-count-button{font-size:var(--clover-text-xs);line-height:1}.clover-pager[data-size=small] .clover-pager-position{font-weight:600}}
|
|
1
|
+
@layer clover{.clover-items{--clover-items-ring-room: 4px;--clover-items-picture-height: var(--clover-items-height, 8rem);color:var(--clover-color-primary, #1a1d1e)}.clover-items-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--clover-space-xs) var(--clover-space-m);margin-bottom:var(--clover-space-s)}.clover-items-description{flex:1 0 100%;order:3;margin:0;color:var(--clover-color-primary-muted, #26292b)}.clover-items-homepage{margin-inline-start:auto;color:var( --clover-color-accent-text, var(--clover-accent-text-fallback, var(--clover-color-accent, #0065c3)) );text-decoration-line:underline;text-underline-offset:var(--clover-space-3xs)}.clover-items-track{margin:0;padding:0;list-style:none;gap:var(--clover-items-gap, var(--clover-space-m))}.clover-items-viewport{margin:calc(-1 * var(--clover-items-ring-room));padding:var(--clover-items-ring-room);scroll-padding-inline:var(--clover-items-ring-room);scrollbar-width:none}.clover-items[data-layout=slider] .clover-items-viewport{padding-inline:calc(var(--clover-items-ring-room) + var(--clover-items-inset, 0px));scroll-padding-inline:calc(var(--clover-items-ring-room) + var(--clover-items-inset, 0px))}.clover-items-viewport::-webkit-scrollbar{display:none}.clover-items-viewport[data-dragging]{cursor:grabbing;-webkit-user-select:none;user-select:none}@supports (timeline-scope: --clover-items-track){.clover-items[data-layout=slider] .clover-items-frame{timeline-scope:--clover-items-track}.clover-items[data-layout=slider] .clover-items-viewport{scroll-timeline:--clover-items-track inline}.clover-items[data-layout=slider] .clover-items-frame:before,.clover-items[data-layout=slider] .clover-items-frame:after{content:"";position:absolute;top:var(--clover-items-ring-room);z-index:1;width:var(--clover-space-s);height:var(--clover-items-picture-height);background:linear-gradient(var(--clover-items-shade),rgb(0 0 0 / .16),transparent);-webkit-mask-image:linear-gradient(transparent,#000 var(--clover-space-s),#000 calc(100% - var(--clover-space-s)),transparent);mask-image:linear-gradient(transparent,#000 var(--clover-space-s),#000 calc(100% - var(--clover-space-s)),transparent);opacity:0;pointer-events:none;animation:clover-shade linear both;animation-timeline:--clover-items-track}.clover-items[data-layout=slider] .clover-items-frame:before{--clover-items-shade: to right;left:calc(-1 * var(--clover-items-ring-room));animation-range:0 var(--clover-space-m)}.clover-items[data-layout=slider] .clover-items-frame:after{--clover-items-shade: to left;right:calc(-1 * var(--clover-items-ring-room));animation-direction:reverse;animation-range:calc(100% - var(--clover-space-m)) 100%}.clover-items[data-layout=slider] .clover-items-frame[dir=rtl]:before{--clover-items-shade: to left;right:calc(-1 * var(--clover-items-ring-room));left:auto}.clover-items[data-layout=slider] .clover-items-frame[dir=rtl]:after{--clover-items-shade: to right;left:calc(-1 * var(--clover-items-ring-room));right:auto}}.clover-items[data-layout=list] .clover-items-track{display:flex;flex-direction:column}.clover-items:is([data-layout=grid],[data-layout=masonry]) .clover-items-track{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--clover-items-size, 10rem)),1fr))}.clover-items-item{position:relative;cursor:pointer}.clover-items-link{display:block;color:inherit;text-decoration:none}:is(.clover-items-item[role=option],.clover-items-link){margin:calc(-1 * var(--clover-items-ring-room));padding:var(--clover-items-ring-room);outline:none}.clover-items:not([data-layout=slider]) :is(.clover-items-viewport,.clover-items-item[role=option],.clover-items-link){margin-inline:0;padding-inline:0}.clover-items-figure{display:grid;grid-template-columns:repeat(var(--parts, 1),auto);justify-content:start;gap:var(--clover-space-xs) 0;margin:0}.clover-items-pictures{position:relative;display:grid;grid-column:1 / -1;grid-template-columns:subgrid;border-radius:var(--clover-radius, 3px);outline:3px solid var(--ring-color, transparent);outline-offset:1px;transition:outline-color .2s cubic-bezier(.16,1,.3,1)}.clover-items-picture{position:relative;display:block;overflow:hidden;background-color:var(--clover-color-secondary-muted, #f1f1f1)}.clover-items-picture img{display:block;opacity:0;transition:opacity .3s ease}.clover-items-picture[data-loaded=true] img{opacity:1}.clover-items-picture[data-empty]{display:grid;place-items:center;aspect-ratio:var(--clover-items-ratio, 1);color:var(--clover-color-primary-muted, #26292b)}.clover-items-picture[data-empty]>svg{width:33%;max-width:var(--clover-space-xl);height:auto;fill:currentColor}.clover-items-pictures>.clover-items-picture:first-child{border-start-start-radius:inherit;border-end-start-radius:inherit}.clover-items-pictures>.clover-items-picture:last-child{border-start-end-radius:inherit;border-end-end-radius:inherit}.clover-items-duration{position:absolute;inset-inline-end:var(--clover-space-xs);bottom:var(--clover-space-xs);padding:var(--clover-space-3xs) var(--clover-space-xs);border-radius:var(--clover-radius, 3px);background-color:#000000b8;color:#fff;font-size:var(--clover-text-xs);font-variant-numeric:tabular-nums}.clover-items-caption{display:grid;grid-column:1 / -1;grid-template-columns:subgrid;gap:var(--clover-space-3xs) 0;font-size:var(--clover-text-s)}.clover-items-label{position:relative;contain:inline-size}.clover-items:is([data-layout=slider],[data-layout=grid],[data-layout=masonry]) .clover-items-label-text{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:var(--clover-items-lines, 3);line-clamp:var(--clover-items-lines, 3)}.clover-items-label-full{position:absolute;inset-inline:0;bottom:0;z-index:1;padding-block-start:var(--clover-space-2xs);background-color:var(--clover-color-secondary, #fff);box-shadow:0 calc(-1 * var(--clover-space-2xs)) var(--clover-space-s) #00000029;pointer-events:none}:is(.clover-items-item[role=option],.clover-items-link):is(:hover,:focus-visible):not([data-full-hidden]) .clover-items-label[data-clamped]>.clover-items-label-full{display:block}@media (forced-colors: active){.clover-items-label-full{border:1px solid CanvasText}}.clover-items-date{grid-column:1 / -1;color:var(--clover-color-primary-muted, #26292b);font-size:var(--clover-text-xs)}.clover-items-summary{grid-column:1 / -1;color:var(--clover-color-primary-muted, #26292b)}.clover-items[data-layout=slider] .clover-items-picture[data-empty],.clover-items[data-layout=slider] .clover-items-picture img{width:auto;height:var(--clover-items-picture-height)}.clover-items:is([data-layout=grid],[data-layout=masonry]) .clover-items-figure{grid-template-columns:repeat(var(--parts, 1),1fr)}.clover-items:is([data-layout=grid],[data-layout=masonry]) .clover-items-pictures{aspect-ratio:1;overflow:hidden}.clover-items:is([data-layout=grid],[data-layout=masonry]) .clover-items-picture{min-width:0}.clover-items:is([data-layout=grid],[data-layout=masonry]) .clover-items-picture img{width:100%;height:100%;object-fit:contain}.clover-items[data-layout=masonry] .clover-items-viewport[data-masonry] .clover-items-track{grid-auto-rows:4px;row-gap:0;align-items:start}.clover-items[data-layout=masonry] .clover-items-pictures{aspect-ratio:auto}.clover-items[data-layout=masonry] .clover-items-picture img{height:auto}.clover-items[data-layout=list] .clover-items-figure{grid-template-columns:auto 1fr;align-items:start;gap:0 var(--clover-space-s)}.clover-items[data-layout=list] .clover-items-pictures{grid-column:1;grid-template-columns:repeat(var(--parts, 1),auto);gap:0}.clover-items[data-layout=list] .clover-items-caption{grid-column:2;grid-template-columns:none}.clover-items[data-layout=list] .clover-items-label{contain:none}.clover-items[data-layout=list] .clover-items-picture img{width:auto;height:var(--clover-space-xl)}.clover-items[data-layout=list] .clover-items-picture[data-empty]{height:var(--clover-space-xl)}:is(.clover-items-item[role=option],.clover-items-link):hover{--ring-color: color-mix( in srgb, var(--clover-color-accent, #0065c3) 50%, transparent )}.clover-items-item[aria-selected=true]{--ring-color: var(--clover-color-accent, #0065c3)}:is(.clover-items-item[role=option],.clover-items-link):focus-visible{--ring-color: var(--clover-color-primary, #1a1d1e)}:is(.clover-items-item[role=option],.clover-items-link):focus-visible .clover-items-pictures:after{position:absolute;inset:0;border-radius:inherit;outline:2px solid var(--clover-color-secondary, #fff);outline-offset:-2px;box-shadow:inset 0 0 0 4px var(--clover-color-primary, #1a1d1e);content:"";pointer-events:none}:is(.clover-items-item[role=option],.clover-items-link):not(:has(.clover-items-pictures)):focus-visible{border-radius:var(--clover-radius, 3px);outline:3px solid var(--clover-color-primary, #1a1d1e);outline-offset:calc(1px - var(--clover-items-ring-room))}@media (forced-colors: active){.clover-items-pictures{outline-color:var(--ring-color, Canvas)}.clover-items-item[aria-selected=true]{--ring-color: Highlight}:is(.clover-items-item[role=option],.clover-items-link):focus-visible{--ring-color: CanvasText}:is(.clover-items-item[role=option],.clover-items-link):focus-visible .clover-items-pictures:after{outline-color:CanvasText}:is(.clover-items-item[role=option],.clover-items-link):not(:has(.clover-items-pictures)):focus-visible{outline-color:CanvasText}}.clover-items-item[aria-selected=true] .clover-items-label{color:var( --clover-color-accent-text, var(--clover-accent-text-fallback, var(--clover-color-accent, #0065c3)) );font-weight:600}:is(button.clover-items-scroll-prev,button.clover-items-scroll-next){position:absolute;top:calc(var(--clover-items-picture-height) / 2);z-index:2;translate:0 -50%;box-shadow:0 1px 4px #00000040}.clover-items-scroll-prev{inset-inline-start:var(--clover-space-2xs)}.clover-items-scroll-next{inset-inline-end:var(--clover-space-2xs)}.clover-items[data-layout=slider][data-orientation=vertical]{display:flex;flex-direction:column;height:100%}.clover-items[data-layout=slider][data-orientation=vertical] .clover-items-frame{flex:1;min-height:0}.clover-items[data-layout=slider][data-orientation=vertical] .clover-items-viewport{box-sizing:border-box;height:calc(100% + 2 * var(--clover-items-ring-room));padding:calc(var(--clover-items-ring-room) + var(--clover-items-inset, 0px)) var(--clover-items-ring-room);scroll-padding:calc(var(--clover-items-ring-room) + var(--clover-items-inset, 0px)) 0}.clover-items[data-layout=slider][data-orientation=vertical] .clover-items-figure{grid-template-columns:repeat(var(--parts, 1),1fr)}.clover-items[data-orientation=vertical] .clover-items-picture img,.clover-items[data-orientation=vertical] .clover-items-picture[data-empty]{width:100%;height:auto}.clover-items[data-orientation=vertical] .clover-items-picture[data-empty]{aspect-ratio:4 / 3}@supports (timeline-scope: --clover-items-track){.clover-items[data-layout=slider][data-orientation=vertical] .clover-items-viewport{scroll-timeline:--clover-items-track block}.clover-items[data-layout=slider][data-orientation=vertical] .clover-items-frame:before,.clover-items[data-layout=slider][data-orientation=vertical] .clover-items-frame:after{left:0;right:0;width:auto;height:var(--clover-space-s);-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--clover-space-s),#000 calc(100% - var(--clover-space-s)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--clover-space-s),#000 calc(100% - var(--clover-space-s)),transparent)}.clover-items[data-layout=slider][data-orientation=vertical] .clover-items-frame:before{--clover-items-shade: to bottom;top:calc(-1 * var(--clover-items-ring-room))}.clover-items[data-layout=slider][data-orientation=vertical] .clover-items-frame:after{--clover-items-shade: to top;top:auto;bottom:calc(-1 * var(--clover-items-ring-room))}}.clover-items[data-orientation=vertical] :is(button.clover-items-scroll-prev,button.clover-items-scroll-next){inset-inline:auto;left:50%;translate:-50% 0}.clover-items[data-orientation=vertical] button.clover-items-scroll-prev{top:var(--clover-space-2xs)}.clover-items[data-orientation=vertical] button.clover-items-scroll-next{top:auto;bottom:var(--clover-space-2xs)}.clover-pager{display:flex;align-items:center;justify-content:center;gap:var(--clover-space-s);padding-block:var(--clover-space-s)}.clover-pager-position{display:inline-grid;justify-items:end;font-variant-numeric:tabular-nums;color:var(--clover-color-primary-muted, #26292b)}.clover-pager[data-direction=right-to-left] .clover-pager-position{justify-items:start}.clover-pager-position>[aria-hidden]{grid-area:1 / 1}.clover-pager-position>.clover-pager-room[hidden]{display:block;visibility:hidden}.clover-pager:has(>.clover-pager-count){position:relative;z-index:5}.clover-pager-count{position:relative}.clover-pager:has(>.clover-pager-count)>button,.clover-pager-count>.clover-pager-count-button{position:relative;z-index:1}.clover-pager-count-button{display:inline-flex;align-items:center;gap:var(--clover-space-2xs);min-height:var(--clover-space-l);padding:0 var(--clover-space-xs);border:0;border-radius:var(--clover-radius-pill, 2rem);background:none;color:var(--clover-color-primary-muted, #26292b);font:inherit;cursor:pointer}.clover-pager-count-button .clover-pager-position{color:inherit}.clover-pager-count-button .clover-pager-position>span{grid-area:1 / 1}.clover-pager-count-button:is(:hover,:focus-visible,[aria-expanded=true]){color:var( --clover-color-accent-text, var(--clover-accent-text-fallback, var(--clover-color-accent, #0065c3)) )}.clover-pager-count-button:focus-visible{outline:2px solid var(--clover-color-accent, #0065c3);outline-offset:2px}.clover-pager-count>.clover-pager-menu{z-index:0;top:calc(-1 * var(--clover-space-m));inset-inline-start:calc(-1 * var(--clover-space-m));width:min(20rem,calc(100vw - 2 * var(--clover-space-m)));max-height:min(24rem,60vh);max-height:min(24rem,60dvh);--clover-pager-menu-head: calc( var(--clover-space-m) + var(--clover-space-l) + var(--clover-space-m) );padding:var(--clover-space-m);padding-block:var(--clover-pager-menu-head) 0}.clover-pager-count>.clover-pager-menu{display:flex;flex-direction:column;overflow:hidden}.clover-pager-count>.clover-pager-menu>.clover-pager-list{min-height:0;margin:calc(-1 * var(--clover-items-ring-room, 4px));margin-block-end:0;padding:var(--clover-items-ring-room, 4px);padding-block-end:var(--clover-space-m);overflow-y:auto;overscroll-behavior:contain}@supports (timeline-scope: --clover-pager-list){.clover-pager-count>.clover-pager-menu{timeline-scope:--clover-pager-list}.clover-pager-count>.clover-pager-menu>.clover-pager-list{scroll-timeline:--clover-pager-list block}.clover-pager-count>.clover-pager-menu:before{content:"";position:absolute;z-index:1;top:calc(var(--clover-pager-menu-head) - var(--clover-items-ring-room, 4px));inset-inline:calc(var(--clover-space-m) - var(--clover-items-ring-room, 4px));height:var(--clover-space-s);background:linear-gradient(rgb(0 0 0 / .16),transparent);-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--clover-space-s),#000 calc(100% - var(--clover-space-s)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--clover-space-s),#000 calc(100% - var(--clover-space-s)),transparent);opacity:0;pointer-events:none;animation:clover-shade linear both;animation-timeline:--clover-pager-list;animation-range:0 var(--clover-space-m)}}.clover-pager[data-direction=right-to-left] .clover-pager-count>.clover-pager-menu{inset-inline:auto calc(-1 * var(--clover-space-m))}.clover-pager-count-button[aria-expanded=true] svg{rotate:180deg}.clover-pager-list.clover-collection>.clover-items{--clover-items-gap: var(--clover-space-m);margin:0}.clover-pager[data-size=small]{gap:var(--clover-space-2xs);padding-block:0}.clover-pager[data-size=small] .clover-pager-count-button{font-size:var(--clover-text-xs);line-height:1}.clover-pager[data-size=small] .clover-pager-position{font-weight:600}}
|