From d533302c08f130cb45629164b310f6da47873d3e Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Fri, 30 Jan 2026 18:47:52 +0900 Subject: [PATCH 1/2] style: replace physical RTL classes with logical ones --- app/assets/main.css | 32 +++++++++++------------- app/components/AppTooltip.vue | 8 +++--- app/components/ColumnPicker.vue | 4 +-- app/components/FilterChips.vue | 2 +- app/components/FilterPanel.vue | 4 +-- app/components/OrgTeamsPanel.vue | 8 +++--- app/components/PackageDeprecatedTree.vue | 8 +++--- app/components/PackageListToolbar.vue | 4 +-- app/components/PackageReplacement.vue | 4 +-- app/components/PackageTable.vue | 16 ++++++------ app/components/PackageTableRow.vue | 10 ++++---- app/components/PaginationControls.vue | 4 +-- app/pages/[...package].vue | 12 +++------ server/utils/docs/render.ts | 2 +- 14 files changed, 54 insertions(+), 64 deletions(-) diff --git a/app/assets/main.css b/app/assets/main.css index eaccb18ff3..efeea3805a 100644 --- a/app/assets/main.css +++ b/app/assets/main.css @@ -156,7 +156,7 @@ button { .skip-link { position: fixed; top: -100%; - left: 0; + inset-inline-start: 0; padding: 0.5rem 1rem; background: var(--fg); color: var(--bg); @@ -165,11 +165,6 @@ button { transition: top 0.2s ease; } -html[dir='rtl'] .skip-link { - left: unset; - right: 0; -} - .skip-link:hover { color: var(--bg); text-decoration: underline; @@ -298,7 +293,7 @@ html.light .shiki span { .readme-content ul, .readme-content ol { margin: 1rem 0; - padding-left: 1.5rem; + padding-inline-start: 1.5rem; } .readme-content ul { @@ -319,8 +314,8 @@ html.light .shiki span { } .readme-content blockquote { - border-left: 2px solid var(--border); - padding-left: 1rem; + border-inline-start: 2px solid var(--border); + padding-inline-start: 1rem; margin: 1.5rem 0; color: var(--fg-subtle); font-style: italic; @@ -328,8 +323,9 @@ html.light .shiki span { /* GitHub-style callouts/alerts */ .readme-content blockquote[data-callout] { - border-left-width: 3px; - padding: 1rem 1rem 1rem 1.25rem; + border-inline-start-width: 3px; + padding: 1rem; + padding-inline-start: 1.25rem; background: var(--bg-subtle); font-style: normal; color: var(--fg-subtle); @@ -344,7 +340,7 @@ html.light .shiki span { text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.5rem; - padding-left: 1.5rem; + padding-inline-start: 1.5rem; } .readme-content blockquote[data-callout]::after { @@ -365,7 +361,7 @@ html.light .shiki span { /* Note - blue */ .readme-content blockquote[data-callout='note'] { - border-left-color: var(--syntax-str); + border-inline-start-color: var(--syntax-str); background: rgba(59, 130, 246, 0.05); } .readme-content blockquote[data-callout='note']::before { @@ -380,7 +376,7 @@ html.light .shiki span { /* Tip - green */ .readme-content blockquote[data-callout='tip'] { - border-left-color: #22c55e; + border-inline-start-color: #22c55e; background: rgba(34, 197, 94, 0.05); } .readme-content blockquote[data-callout='tip']::before { @@ -395,7 +391,7 @@ html.light .shiki span { /* Important - purple */ .readme-content blockquote[data-callout='important'] { - border-left-color: var(--syntax-fn); + border-inline-start-color: var(--syntax-fn); background: rgba(168, 85, 247, 0.05); } .readme-content blockquote[data-callout='important']::before { @@ -410,7 +406,7 @@ html.light .shiki span { /* Warning - yellow/orange */ .readme-content blockquote[data-callout='warning'] { - border-left-color: #eab308; + border-inline-start-color: #eab308; background: rgba(234, 179, 8, 0.05); } .readme-content blockquote[data-callout='warning']::before { @@ -425,7 +421,7 @@ html.light .shiki span { /* Caution - red */ .readme-content blockquote[data-callout='caution'] { - border-left-color: #ef4444; + border-inline-start-color: #ef4444; background: rgba(239, 68, 68, 0.05); } .readme-content blockquote[data-callout='caution']::before { @@ -452,7 +448,7 @@ html.light .shiki span { .readme-content td { border: 1px solid var(--border); padding: 0.75rem 1rem; - text-align: left; + text-align: start; } .readme-content th { diff --git a/app/components/AppTooltip.vue b/app/components/AppTooltip.vue index 575149d50a..d430cae683 100644 --- a/app/components/AppTooltip.vue +++ b/app/components/AppTooltip.vue @@ -10,10 +10,10 @@ const isVisible = shallowRef(false) const tooltipId = useId() const positionClasses: Record = { - top: 'bottom-full left-1/2 -translate-x-1/2 mb-1', - bottom: 'top-full left-0 mt-1', - left: 'right-full top-1/2 -translate-y-1/2 mr-2', - right: 'left-full top-1/2 -translate-y-1/2 ml-2', + top: 'bottom-full inset-is-1/2 -translate-x-1/2 mb-1', + bottom: 'top-full inset-is-0 mt-1', + left: 'inset-ie-full top-1/2 -translate-y-1/2 me-2', + right: 'inset-is-full top-1/2 -translate-y-1/2 ms-2', } const tooltipPosition = computed(() => positionClasses[props.position || 'bottom']) diff --git a/app/components/ColumnPicker.vue b/app/components/ColumnPicker.vue index 553873ebf8..879208b818 100644 --- a/app/components/ColumnPicker.vue +++ b/app/components/ColumnPicker.vue @@ -93,7 +93,7 @@ function handleReset() { v-if="isOpen" ref="menuRef" :id="menuId" - class="absolute right-0 mt-2 w-60 bg-bg-subtle border border-border rounded-lg shadow-lg z-20" + class="absolute inset-ie-0 mt-2 w-60 bg-bg-subtle border border-border rounded-lg shadow-lg z-20" role="group" :aria-label="$t('filters.columns.show')" > @@ -144,7 +144,7 @@ function handleReset() {