diff --git a/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue b/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue index c286640bf3ff..457eab584fab 100644 --- a/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue +++ b/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue @@ -50,15 +50,16 @@ function removeSpaces(str: string) { } .VPApiPreference:first-child { - margin-top: 0; + margin-block-start: 0; } .VPApiPreference:last-child { - margin-bottom: 0; + margin-block-end: 0; } .VPApiPreference.screen-menu { - margin: 12px 0 0 12px; + margin-block: 12px 0; + margin-inline: 12px 0; } .VPApiPreference input[type='radio'] { diff --git a/__tests__/unit/node/markdown/plugins/snippet.test.ts b/__tests__/unit/node/markdown/plugins/snippet.test.ts index aa940784a0f3..f0704fe80657 100644 --- a/__tests__/unit/node/markdown/plugins/snippet.test.ts +++ b/__tests__/unit/node/markdown/plugins/snippet.test.ts @@ -208,16 +208,16 @@ describe('node/markdown/plugins/snippet', () => { const lines = [ '.body-content {', '/* #region foo */', - ' padding-left: 15px;', + ' padding-inline-start: 15px;', '/* #endregion foo */', - ' padding-right: 15px;', + ' padding-inline-end: 15px;', '}' ] const result = findRegion(lines, 'foo') expect(result).not.toBeNull() if (result) { expect(lines.slice(result.start, result.end).join('\n')).toBe( - ' padding-left: 15px;' + ' padding-inline-start: 15px;' ) } }) diff --git a/docs/components/ModalDemo.vue b/docs/components/ModalDemo.vue index 93dbab8f641f..58e9e76476e8 100644 --- a/docs/components/ModalDemo.vue +++ b/docs/components/ModalDemo.vue @@ -26,8 +26,8 @@ const showModal = ref(false) .modal-mask { position: fixed; z-index: 200; - top: 0; - left: 0; + inset-block-start: 0; + inset-inline-start: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); @@ -48,8 +48,8 @@ const showModal = ref(false) } .model-footer { - margin-top: 8px; - text-align: right; + margin-block-start: 8px; + text-align: end; } .modal-button { diff --git a/docs/ru/components/ModalDemo.vue b/docs/ru/components/ModalDemo.vue index 85c9dec127b3..54c580f9f2fa 100644 --- a/docs/ru/components/ModalDemo.vue +++ b/docs/ru/components/ModalDemo.vue @@ -28,8 +28,8 @@ const showModal = ref(false) .modal-mask { position: fixed; z-index: 200; - top: 0; - left: 0; + inset-block-start: 0; + inset-inline-start: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); @@ -50,8 +50,8 @@ const showModal = ref(false) } .model-footer { - margin-top: 8px; - text-align: right; + margin-block-start: 8px; + text-align: end; } .modal-button { diff --git a/src/client/theme-default/NotFound.vue b/src/client/theme-default/NotFound.vue index f65d3a6db458..a2dd2ceba0aa 100644 --- a/src/client/theme-default/NotFound.vue +++ b/src/client/theme-default/NotFound.vue @@ -50,7 +50,7 @@ const { currentLang } = useLangs() } .title { - padding-top: 12px; + padding-block-start: 12px; letter-spacing: 2px; line-height: 20px; font-size: 20px; @@ -73,7 +73,7 @@ const { currentLang } = useLangs() } .action { - padding-top: 20px; + padding-block-start: 20px; } .link { diff --git a/src/client/theme-default/components/VPBackdrop.vue b/src/client/theme-default/components/VPBackdrop.vue index 8b0757d40122..e28437a1d3af 100644 --- a/src/client/theme-default/components/VPBackdrop.vue +++ b/src/client/theme-default/components/VPBackdrop.vue @@ -13,12 +13,7 @@ defineProps<{ diff --git a/src/client/theme-default/components/VPDoc.vue b/src/client/theme-default/components/VPDoc.vue index 4ac18bd93d91..62a7a6f0e276 100644 --- a/src/client/theme-default/components/VPDoc.vue +++ b/src/client/theme-default/components/VPDoc.vue @@ -121,21 +121,21 @@ const pageName = computed(() => display: none; order: 2; flex-grow: 1; - padding-left: 32px; + padding-inline-start: 32px; width: 100%; max-width: 256px; } .left-aside { order: 1; - padding-left: unset; - padding-right: 32px; + padding-inline-start: unset; + padding-inline-end: 32px; } .aside-container { position: fixed; - top: 0; - padding-top: calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px); + inset-block-start: 0; + padding-block-start: calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px); width: 224px; height: 100vh; overflow-x: hidden; @@ -149,7 +149,7 @@ const pageName = computed(() => .aside-curtain { position: fixed; - bottom: 0; + inset-block-end: 0; z-index: 10; width: 224px; height: 32px; @@ -161,7 +161,7 @@ const pageName = computed(() => display: flex; flex-direction: column; min-height: calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px)); - padding-bottom: 32px; + padding-block-end: 32px; } .content { diff --git a/src/client/theme-default/components/VPDocAside.vue b/src/client/theme-default/components/VPDocAside.vue index 314e8a4b5d73..1df2fe1c2fc0 100644 --- a/src/client/theme-default/components/VPDocAside.vue +++ b/src/client/theme-default/components/VPDocAside.vue @@ -37,10 +37,10 @@ const { theme } = useData() .VPDocAside :deep(.spacer + .VPDocAsideSponsors), .VPDocAside :deep(.spacer + .VPDocAsideCarbonAds) { - margin-top: 24px; + margin-block-start: 24px; } .VPDocAside :deep(.VPDocAsideSponsors + .VPDocAsideCarbonAds) { - margin-top: 16px; + margin-block-start: 16px; } diff --git a/src/client/theme-default/components/VPDocAsideOutline.vue b/src/client/theme-default/components/VPDocAsideOutline.vue index efaadc095275..a038990893dc 100644 --- a/src/client/theme-default/components/VPDocAsideOutline.vue +++ b/src/client/theme-default/components/VPDocAsideOutline.vue @@ -50,16 +50,16 @@ useActiveAnchor(container, marker) .content { position: relative; - border-left: 1px solid var(--vp-c-divider); - padding-left: 16px; + border-inline-start: 1px solid var(--vp-c-divider); + padding-inline-start: 16px; font-size: 13px; font-weight: 500; } .outline-marker { position: absolute; - top: 32px; - left: -1px; + inset-block-start: 32px; + inset-inline-start: -1px; z-index: 0; opacity: 0; width: 2px; @@ -67,7 +67,7 @@ useActiveAnchor(container, marker) height: 18px; background-color: var(--vp-c-brand-1); transition: - top 0.25s cubic-bezier(0, 1, 0.5, 1), + inset-block-start 0.25s cubic-bezier(0, 1, 0.5, 1), background-color 0.5s, opacity 0.25s; } diff --git a/src/client/theme-default/components/VPDocFooter.vue b/src/client/theme-default/components/VPDocFooter.vue index 0b6ff2a885d6..1d17846c41fe 100644 --- a/src/client/theme-default/components/VPDocFooter.vue +++ b/src/client/theme-default/components/VPDocFooter.vue @@ -80,11 +80,11 @@ const showFooter = computed( diff --git a/src/client/theme-default/components/VPFeature.vue b/src/client/theme-default/components/VPFeature.vue index ff36fe978b0b..9032168487ac 100644 --- a/src/client/theme-default/components/VPFeature.vue +++ b/src/client/theme-default/components/VPFeature.vue @@ -74,14 +74,14 @@ defineProps<{ } .box > :deep(.VPImage) { - margin-bottom: 20px; + margin-block-end: 20px; } .icon { display: flex; justify-content: center; align-items: center; - margin-bottom: 20px; + margin-block-end: 20px; border-radius: 6px; background-color: var(--vp-c-default-soft); width: 48px; @@ -98,7 +98,7 @@ defineProps<{ .details { flex-grow: 1; - padding-top: 8px; + padding-block-start: 8px; line-height: 24px; font-size: 14px; font-weight: 500; @@ -106,7 +106,7 @@ defineProps<{ } .link-text { - padding-top: 8px; + padding-block-start: 8px; } .link-text-value { @@ -118,6 +118,6 @@ defineProps<{ } .link-text-icon { - margin-left: 6px; + margin-inline-start: 6px; } diff --git a/src/client/theme-default/components/VPFlyout.vue b/src/client/theme-default/components/VPFlyout.vue index c05c579cfe23..4c6c0f6b8144 100644 --- a/src/client/theme-default/components/VPFlyout.vue +++ b/src/client/theme-default/components/VPFlyout.vue @@ -112,12 +112,12 @@ function onBlur() { } .option-icon { - margin-right: 0px; + margin-inline-end: 0px; font-size: 16px; } .text-icon { - margin-left: 4px; + margin-inline-start: 4px; font-size: 14px; } @@ -128,8 +128,8 @@ function onBlur() { .menu { position: absolute; - top: calc(var(--vp-nav-height) / 2 + 20px); - right: 0; + inset-block-start: calc(var(--vp-nav-height) / 2 + 20px); + inset-inline-end: 0; opacity: 0; visibility: hidden; transition: opacity 0.25s, visibility 0.25s, transform 0.25s; diff --git a/src/client/theme-default/components/VPFooter.vue b/src/client/theme-default/components/VPFooter.vue index 636380448810..d1f088fd006f 100644 --- a/src/client/theme-default/components/VPFooter.vue +++ b/src/client/theme-default/components/VPFooter.vue @@ -19,7 +19,7 @@ const { hasSidebar } = useLayout() .VPFooter { position: relative; z-index: var(--vp-z-index-footer); - border-top: 1px solid var(--vp-c-gutter); + border-block-start: 1px solid var(--vp-c-gutter); padding: 32px 24px; background-color: var(--vp-c-bg); } diff --git a/src/client/theme-default/components/VPHero.vue b/src/client/theme-default/components/VPHero.vue index 4e1e2e9b083e..06a2204c5be1 100644 --- a/src/client/theme-default/components/VPHero.vue +++ b/src/client/theme-default/components/VPHero.vue @@ -68,7 +68,7 @@ const { heroImageSlotExists } = inject(layoutInfoInjectionKey)! diff --git a/src/client/theme-default/components/VPHomeContent.vue b/src/client/theme-default/components/VPHomeContent.vue index 3e0262351977..14a9c6b9edd8 100644 --- a/src/client/theme-default/components/VPHomeContent.vue +++ b/src/client/theme-default/components/VPHomeContent.vue @@ -39,12 +39,11 @@ const { width: vw } = useWindowSize({ .vp-doc :deep(.VPHomeSponsors), .vp-doc :deep(.VPTeamPage) { - margin-left: var(--vp-offset, calc(50% - 50vw)); - margin-right: var(--vp-offset, calc(50% - 50vw)); + margin-inline: var(--vp-offset, calc(50% - 50vw)); } .vp-doc :deep(.VPHomeSponsors h2) { - border-top: none; + border-block-start: none; letter-spacing: normal; } diff --git a/src/client/theme-default/components/VPHomeSponsors.vue b/src/client/theme-default/components/VPHomeSponsors.vue index d4eaacd29966..04abce7ff364 100644 --- a/src/client/theme-default/components/VPHomeSponsors.vue +++ b/src/client/theme-default/components/VPHomeSponsors.vue @@ -48,8 +48,8 @@ withDefaults(defineProps(), { diff --git a/src/client/theme-default/components/VPLocalNav.vue b/src/client/theme-default/components/VPLocalNav.vue index f80bb3611844..8e5930cd46a9 100644 --- a/src/client/theme-default/components/VPLocalNav.vue +++ b/src/client/theme-default/components/VPLocalNav.vue @@ -68,8 +68,8 @@ const classes = computed(() => { /*rtl:ignore*/ left: 0; z-index: var(--vp-z-index-local-nav); - border-bottom: 1px solid var(--vp-c-gutter); - padding-top: var(--vp-layout-top-height, 0px); + border-block-end: 1px solid var(--vp-c-gutter); + padding-block-start: var(--vp-layout-top-height, 0px); width: 100%; background-color: var(--vp-local-nav-bg-color); } @@ -84,7 +84,7 @@ const classes = computed(() => { } .VPLocalNav.has-sidebar { - padding-left: var(--vp-sidebar-width); + padding-inline-start: var(--vp-sidebar-width); } .VPLocalNav.empty { @@ -126,7 +126,7 @@ const classes = computed(() => { } .menu-icon { - margin-right: 8px; + margin-inline-end: 8px; font-size: 14px; } diff --git a/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue b/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue index cf842baa3292..a322e53bf98d 100644 --- a/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue +++ b/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue @@ -114,10 +114,11 @@ function scrollToTop() { .icon { display: inline-block; vertical-align: middle; - margin-left: 2px; + margin-inline-start: 2px; font-size: 14px; - transform: rotate(0) /*rtl:rotate(180deg)*/; - transition: transform 0.25s; + /*rtl:ignore*/ + scale: calc(1 * var(--vp-direction-multiplier)) 1; /* Flip in RTL */ + transition: scale 0.25s; } @media (min-width: 960px) { @@ -137,9 +138,8 @@ function scrollToTop() { .items { position: absolute; - top: 40px; - right: 16px; - left: 16px; + inset-block-start: 40px; + inset-inline: 16px; display: grid; gap: 1px; border: 1px solid var(--vp-c-border); @@ -152,8 +152,8 @@ function scrollToTop() { @media (min-width: 960px) { .items { - right: auto; - left: calc(var(--vp-sidebar-width) + 32px); + inset-inline-end: auto; + inset-inline-start: calc(var(--vp-sidebar-width) + 32px); width: 320px; } } diff --git a/src/client/theme-default/components/VPLocalSearchBox.vue b/src/client/theme-default/components/VPLocalSearchBox.vue index 825a22b5867a..208e82e7bafc 100644 --- a/src/client/theme-default/components/VPLocalSearchBox.vue +++ b/src/client/theme-default/components/VPLocalSearchBox.vue @@ -812,7 +812,7 @@ function onMouseMove(e: MouseEvent) { max-height: 140px; overflow: hidden; position: relative; - margin-top: 4px; + margin-block-start: 4px; } .result.selected .excerpt { @@ -842,8 +842,8 @@ function onMouseMove(e: MouseEvent) { .excerpt-gradient-bottom { position: absolute; - bottom: -1px; - left: 0; + inset-block-end: -1px; + inset-inline-start: 0; width: 100%; height: 8px; background: linear-gradient(transparent, var(--vp-local-search-result-bg)); @@ -852,8 +852,8 @@ function onMouseMove(e: MouseEvent) { .excerpt-gradient-top { position: absolute; - top: -1px; - left: 0; + inset-block-start: -1px; + inset-inline-start: 0; width: 100%; height: 8px; background: linear-gradient(var(--vp-local-search-result-bg), transparent); diff --git a/src/client/theme-default/components/VPMenu.vue b/src/client/theme-default/components/VPMenu.vue index 91ebb404dccc..93c1bed24a16 100644 --- a/src/client/theme-default/components/VPMenu.vue +++ b/src/client/theme-default/components/VPMenu.vue @@ -45,16 +45,16 @@ defineProps<{ } .VPMenu :deep(.group + .group) { - border-top: 1px solid var(--vp-c-divider); + border-block-start: 1px solid var(--vp-c-divider); padding: 11px 12px 12px; } .VPMenu :deep(.group:last-child) { - padding-bottom: 0; + padding-block-end: 0; } .VPMenu :deep(.group + .item) { - border-top: 1px solid var(--vp-c-divider); + border-block-start: 1px solid var(--vp-c-divider); padding: 11px 16px 0; } @@ -73,6 +73,6 @@ defineProps<{ } .VPMenu :deep(.action) { - padding-left: 24px; + padding-inline-start: 24px; } diff --git a/src/client/theme-default/components/VPMenuGroup.vue b/src/client/theme-default/components/VPMenuGroup.vue index 7d12eb7570e6..3e480471126e 100644 --- a/src/client/theme-default/components/VPMenuGroup.vue +++ b/src/client/theme-default/components/VPMenuGroup.vue @@ -21,19 +21,19 @@ defineProps<{ diff --git a/src/client/theme-default/components/VPNavBarTitle.vue b/src/client/theme-default/components/VPNavBarTitle.vue index 9679f8a5c592..75af74f0f3c4 100644 --- a/src/client/theme-default/components/VPNavBarTitle.vue +++ b/src/client/theme-default/components/VPNavBarTitle.vue @@ -50,7 +50,7 @@ const target = computed(() => .title { display: flex; align-items: center; - border-bottom: 1px solid transparent; + border-block-end: 1px solid transparent; width: 100%; height: var(--vp-nav-height); font-size: 16px; @@ -70,7 +70,7 @@ const target = computed(() => } :deep(.logo) { - margin-right: 8px; + margin-inline-end: 8px; height: var(--vp-nav-logo-height); } diff --git a/src/client/theme-default/components/VPNavBarTranslations.vue b/src/client/theme-default/components/VPNavBarTranslations.vue index 4f61458a13c3..41100c633c3e 100644 --- a/src/client/theme-default/components/VPNavBarTranslations.vue +++ b/src/client/theme-default/components/VPNavBarTranslations.vue @@ -38,7 +38,8 @@ const { localeLinks, currentLang } = useLangs({ correspondingLink: true }) } .title { - padding: 0 24px 0 12px; + padding-block: 0; + padding-inline: 12px 24px; line-height: 32px; font-size: 14px; font-weight: 700; diff --git a/src/client/theme-default/components/VPNavScreen.vue b/src/client/theme-default/components/VPNavScreen.vue index fec143d86481..6e89dd1f41ae 100644 --- a/src/client/theme-default/components/VPNavScreen.vue +++ b/src/client/theme-default/components/VPNavScreen.vue @@ -37,12 +37,7 @@ const isLocked = useScrollLock(inBrowser ? document.body : null) diff --git a/src/client/theme-default/components/VPNavScreenAppearance.vue b/src/client/theme-default/components/VPNavScreenAppearance.vue index 4f7d26403d27..eee5ee641544 100644 --- a/src/client/theme-default/components/VPNavScreenAppearance.vue +++ b/src/client/theme-default/components/VPNavScreenAppearance.vue @@ -27,7 +27,8 @@ const { site, theme } = useData() justify-content: space-between; align-items: center; border-radius: 8px; - padding: 12px 14px 12px 16px; + padding-block: 12px; + padding-inline: 16px 14px; background-color: var(--vp-c-bg-soft); } diff --git a/src/client/theme-default/components/VPNavScreenMenuGroup.vue b/src/client/theme-default/components/VPNavScreenMenuGroup.vue index f5d78e663b6f..91540041b905 100644 --- a/src/client/theme-default/components/VPNavScreenMenuGroup.vue +++ b/src/client/theme-default/components/VPNavScreenMenuGroup.vue @@ -51,7 +51,7 @@ function toggle() { diff --git a/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue b/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue index 32e97c83babd..03c769f6ffbe 100644 --- a/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue +++ b/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue @@ -36,7 +36,7 @@ const { closeScreen } = inject(navInjectionKey)! diff --git a/src/client/theme-default/components/VPTeamMembersItem.vue b/src/client/theme-default/components/VPTeamMembersItem.vue index a4dc411b0a45..034df23a7a5a 100644 --- a/src/client/theme-default/components/VPTeamMembersItem.vue +++ b/src/client/theme-default/components/VPTeamMembersItem.vue @@ -68,7 +68,7 @@ withDefaults(defineProps(), { } .VPTeamMembersItem.small .data { - padding-top: 20px; + padding-block-start: 20px; } .VPTeamMembersItem.small .avatar { @@ -82,13 +82,13 @@ withDefaults(defineProps(), { } .VPTeamMembersItem.small .affiliation { - padding-top: 4px; + padding-block-start: 4px; line-height: 20px; font-size: 14px; } .VPTeamMembersItem.small .desc { - padding-top: 12px; + padding-block-start: 12px; line-height: 20px; font-size: 14px; } @@ -103,7 +103,7 @@ withDefaults(defineProps(), { } .VPTeamMembersItem.medium .data { - padding-top: 24px; + padding-block-start: 24px; text-align: center; } @@ -119,12 +119,12 @@ withDefaults(defineProps(), { } .VPTeamMembersItem.medium .affiliation { - padding-top: 4px; + padding-block-start: 4px; font-size: 16px; } .VPTeamMembersItem.medium .desc { - padding-top: 16px; + padding-block-start: 16px; max-width: 288px; font-size: 16px; } @@ -153,10 +153,7 @@ withDefaults(defineProps(), { .avatar-img { position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; + inset: 0; border-radius: 50%; object-fit: cover; } @@ -219,7 +216,7 @@ withDefaults(defineProps(), { } .sp-icon { - margin-right: 8px; + margin-inline-end: 8px; font-size: 16px; } diff --git a/src/client/theme-default/components/VPTeamPage.vue b/src/client/theme-default/components/VPTeamPage.vue index 71d9bdb51007..408a29b5e9b1 100644 --- a/src/client/theme-default/components/VPTeamPage.vue +++ b/src/client/theme-default/components/VPTeamPage.vue @@ -16,27 +16,27 @@ } .VPHome :slotted(.VPTeamPageTitle) { - border-top: 1px solid var(--vp-c-gutter); - padding-top: 88px !important; + border-block-start: 1px solid var(--vp-c-gutter); + padding-block-start: 88px !important; } :slotted(.VPTeamPageSection + .VPTeamPageSection), :slotted(.VPTeamMembers + .VPTeamPageSection) { - margin-top: 64px; + margin-block-start: 64px; } :slotted(.VPTeamMembers + .VPTeamMembers) { - margin-top: 24px; + margin-block-start: 24px; } @media (min-width: 768px) { :slotted(.VPTeamPageTitle + .VPTeamPageSection) { - margin-top: 16px; + margin-block-start: 16px; } :slotted(.VPTeamPageSection + .VPTeamPageSection), :slotted(.VPTeamMembers + .VPTeamPageSection) { - margin-top: 96px; + margin-block-start: 96px; } } diff --git a/src/client/theme-default/components/VPTeamPageSection.vue b/src/client/theme-default/components/VPTeamPageSection.vue index 2bb52ab9aefe..a51bbce3b8ad 100644 --- a/src/client/theme-default/components/VPTeamPageSection.vue +++ b/src/client/theme-default/components/VPTeamPageSection.vue @@ -42,8 +42,8 @@ .title-line { position: absolute; - top: 16px; - left: 0; + inset-block-start: 16px; + inset-inline-start: 0; width: 100%; height: 1px; background-color: var(--vp-c-divider); @@ -63,7 +63,7 @@ .lead { margin: 0 auto; max-width: 480px; - padding-top: 12px; + padding-block-start: 12px; text-align: center; line-height: 24px; font-size: 16px; @@ -72,6 +72,6 @@ } .members { - padding-top: 40px; + padding-block-start: 40px; } diff --git a/src/client/theme-default/components/VPTeamPageTitle.vue b/src/client/theme-default/components/VPTeamPageTitle.vue index 9751a1886aa5..84292c41ed57 100644 --- a/src/client/theme-default/components/VPTeamPageTitle.vue +++ b/src/client/theme-default/components/VPTeamPageTitle.vue @@ -45,7 +45,7 @@ .lead { margin: 0 auto; max-width: 512px; - padding-top: 12px; + padding-block-start: 12px; line-height: 24px; font-size: 16px; font-weight: 500; diff --git a/src/client/theme-default/styles/base.css b/src/client/theme-default/styles/base.css index 8041b6bc37a2..4b443351c986 100644 --- a/src/client/theme-default/styles/base.css +++ b/src/client/theme-default/styles/base.css @@ -249,3 +249,11 @@ mjx-container > svg { display: inline-block; margin: auto; } + +:root { + --vp-direction-multiplier: 1; /* 1 for LTR, -1 for RTL */ +} + +[dir='rtl'] { + --vp-direction-multiplier: -1; +} diff --git a/src/client/theme-default/styles/components/vp-code-group.css b/src/client/theme-default/styles/components/vp-code-group.css index 4f23a41692da..82ec6139174c 100644 --- a/src/client/theme-default/styles/components/vp-code-group.css +++ b/src/client/theme-default/styles/components/vp-code-group.css @@ -1,12 +1,11 @@ .vp-code-group { - margin-top: 16px; + margin-block-start: 16px; } .vp-code-group .tabs { position: relative; display: flex; - margin-right: -24px; - margin-left: -24px; + margin-inline: -24px; padding: 0 12px; background-color: var(--vp-code-tab-bg); overflow-x: auto; @@ -16,9 +15,11 @@ @media (min-width: 640px) { .vp-code-group .tabs { - margin-right: 0; - margin-left: 0; - border-radius: 8px 8px 0 0; + margin-inline: 0; + border-start-start-radius: 8px; + border-start-end-radius: 8px; + border-end-end-radius: 0; + border-end-start-radius: 0; } } @@ -31,7 +32,7 @@ .vp-code-group .tabs label { position: relative; display: inline-block; - border-bottom: 1px solid transparent; + border-block-end: 1px solid transparent; padding: 0 12px; line-height: 48px; font-size: 14px; @@ -44,9 +45,8 @@ .vp-code-group .tabs label::after { position: absolute; - right: 8px; - bottom: -1px; - left: 8px; + inset-inline: 8px; + inset-block-end: -1px; z-index: 1; height: 2px; border-radius: 2px; @@ -70,9 +70,9 @@ .vp-code-group div[class*='language-'], .vp-block { display: none; - margin-top: 0 !important; - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important; + margin-block-start: 0 !important; + border-start-start-radius: 0 !important; + border-start-end-radius: 0 !important; } .vp-code-group div[class*='language-'].active, diff --git a/src/client/theme-default/styles/components/vp-doc.css b/src/client/theme-default/styles/components/vp-doc.css index abc58243eddb..bb48d7b2db14 100644 --- a/src/client/theme-default/styles/components/vp-doc.css +++ b/src/client/theme-default/styles/components/vp-doc.css @@ -21,8 +21,8 @@ .vp-doc h2 { margin: 48px 0 16px; - border-top: 1px solid var(--vp-c-divider); - padding-top: 24px; + border-block-start: 1px solid var(--vp-c-divider); + padding-block-start: 24px; letter-spacing: -0.02em; line-height: 32px; font-size: 24px; @@ -44,9 +44,9 @@ .vp-doc .header-anchor { position: absolute; - top: 0; - left: 0; - margin-left: -0.87em; + inset-block-start: 0; + inset-inline-start: 0; + margin-inline-start: -0.87em; font-weight: 500; user-select: none; opacity: 0; @@ -84,7 +84,7 @@ } .vp-doc h2 .header-anchor { - top: 24px; + inset-block-start: 24px; } /** @@ -102,8 +102,8 @@ .vp-doc blockquote { margin: 16px 0; - border-left: 2px solid var(--vp-c-divider); - padding-left: 16px; + border-inline-start: 2px solid var(--vp-c-divider); + padding-inline-start: 16px; transition: border-color 0.5s; color: var(--vp-c-text-2); } @@ -138,7 +138,7 @@ .vp-doc ul, .vp-doc ol { - padding-left: 1.25rem; + padding-inline-start: 1.25rem; margin: 16px 0; } @@ -151,7 +151,7 @@ } .vp-doc li + li { - margin-top: 8px; + margin-block-start: 8px; } .vp-doc li > ol, @@ -172,7 +172,7 @@ .vp-doc tr { background-color: var(--vp-c-bg); - border-top: 1px solid var(--vp-c-divider); + border-block-start: 1px solid var(--vp-c-divider); transition: background-color 0.5s; } @@ -187,7 +187,7 @@ } .vp-doc th { - text-align: left; + text-align: start; font-size: 14px; font-weight: 600; color: var(--vp-c-text-2); @@ -205,7 +205,7 @@ .vp-doc hr { margin: 16px 0; border: none; - border-top: 1px solid var(--vp-c-divider); + border-block-start: 1px solid var(--vp-c-divider); } /** @@ -237,7 +237,10 @@ .vp-doc .custom-block .vp-code-group .tabs { margin: 0; - border-radius: 8px 8px 0 0; + border-start-start-radius: 8px; + border-start-end-radius: 8px; + border-end-end-radius: 0; + border-end-start-radius: 0; } /** @@ -293,14 +296,17 @@ @media (max-width: 639px) { .vp-doc li div[class*='language-'] { - border-radius: 8px 0 0 8px; + border-start-start-radius: 8px; + border-start-end-radius: 0; + border-end-end-radius: 0; + border-end-start-radius: 8px; } } .vp-doc div[class*='language-'] + div[class*='language-'], .vp-doc div[class$='-api'] + div[class*='language-'], .vp-doc div[class*='language-'] + div[class$='-api'] > div[class*='language-'] { - margin-top: -8px; + margin-block-start: -8px; } .vp-doc [class*='language-'] pre, @@ -317,8 +323,7 @@ padding: 20px 0; background: transparent; overflow-x: auto; - /*rtl:ignore*/ - text-align: left; + text-align: start; } .vp-doc [class*='language-'] code { @@ -359,7 +364,7 @@ .vp-doc [class*='language-'] code .diff::before { position: absolute; - left: 10px; + inset-inline-start: 10px; } .vp-doc [class*='language-'] .has-focused-lines .line:not(.has-focus) { @@ -415,7 +420,7 @@ z-index: 3; /*rtl:ignore*/ border-right: 1px solid var(--vp-code-block-divider-color); - padding-top: 20px; + padding-block-start: 20px; width: 32px; text-align: center; font-family: var(--vp-font-family-mono); @@ -465,8 +470,10 @@ .vp-doc [class*='language-'] > button.copy.copied, .vp-doc [class*='language-'] > button.copy:hover.copied { - /*rtl:ignore*/ - border-radius: 0 4px 4px 0; + border-start-start-radius: 0; + border-start-end-radius: 4px; + border-end-end-radius: 4px; + border-end-start-radius: 0; background-color: var(--vp-code-copy-code-hover-bg); background-image: var(--vp-icon-copied); } @@ -483,8 +490,10 @@ border: 1px solid var(--vp-code-copy-code-hover-border-color); /*rtl:ignore*/ border-right: 0; - /*rtl:ignore*/ - border-radius: 4px 0 0 4px; + border-start-start-radius: 4px; + border-start-end-radius: 0; + border-end-end-radius: 0; + border-end-start-radius: 4px; padding: 0 10px; width: fit-content; height: 40px; @@ -522,7 +531,7 @@ * -------------------------------------------------------------------------- */ .vp-doc .VPTeamMembers { - margin-top: 24px; + margin-block-start: 24px; } .vp-doc .VPTeamMembers.small.count-1 .container { @@ -547,8 +556,8 @@ /* prettier-ignore */ :is(.vp-external-link-icon, .vp-doc a[href*='://'], .vp-doc a[target='_blank']):not(:is(.no-icon, svg a, :has(img, svg)))::after { display: inline-block; - margin-top: -1px; - margin-left: 4px; + margin-block-start: -1px; + margin-inline-start: 4px; width: 11px; height: 11px; background: currentColor; @@ -557,7 +566,8 @@ --icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E"); -webkit-mask-image: var(--icon); mask-image: var(--icon); - /*rtl:raw:transform: scaleX(-1);*/ + /*rtl:ignore*/ + transform: scaleX(var(--vp-direction-multiplier)); } .vp-external-link-icon::after { diff --git a/src/client/theme-default/styles/components/vp-sponsor.css b/src/client/theme-default/styles/components/vp-sponsor.css index 9e677ab9bc9a..aee65d37284c 100644 --- a/src/client/theme-default/styles/components/vp-sponsor.css +++ b/src/client/theme-default/styles/components/vp-sponsor.css @@ -12,7 +12,7 @@ } .vp-sponsor-section + .vp-sponsor-section { - margin-top: 4px; + margin-block-start: 4px; } .vp-sponsor-tier { @@ -37,7 +37,7 @@ } .vp-sponsor-grid + .vp-sponsor-tier { - margin-top: 4px; + margin-block-start: 4px; } .vp-sponsor-grid {