diff --git a/src/uix/eidos/components/feed/feed.css b/src/uix/eidos/components/feed/feed.css index 23f6d4e2e..d26d101ef 100644 --- a/src/uix/eidos/components/feed/feed.css +++ b/src/uix/eidos/components/feed/feed.css @@ -139,14 +139,14 @@ gap: var(--_feed-gap); margin-block-start: var(--space-2); padding-inline-start: var(--_feed-thread-indent); + /* The rail marks the edge the thread is indented FROM, so it rides the same + logical side as the padding and mirrors with it. A `:dir(rtl)` rule that + repainted it at `inline-end` used to live here: that is a DOUBLE flip — + the logical property had already mirrored — and it left the indent on one + edge and the rail on the other. RTL-1 cannot see this shape. */ border-inline-start: var(--border-width-medium) solid var(--_feed-palette-element); } -[data-feed-root]:dir(rtl) [data-feed-thread] { - border-inline-start: 0; - border-inline-end: var(--border-width-medium) solid var(--_feed-palette-element); -} - /* ── Sentinel ─ * * The sentinel is decorative (`aria-hidden`) — soma drives the diff --git a/src/uix/eidos/components/tree-view/tree-view.css b/src/uix/eidos/components/tree-view/tree-view.css index 0085d5311..54b379f24 100644 --- a/src/uix/eidos/components/tree-view/tree-view.css +++ b/src/uix/eidos/components/tree-view/tree-view.css @@ -198,6 +198,10 @@ inset-block: 0; inline-size: 1px; background: var(--_tree-view-guide); + /* Logical inset, so the guide mirrors with the rows it marks. A `:dir(rtl)` + rule that moved it to `inset-inline-end` used to live here: that is a + DOUBLE flip — the logical inset had already mirrored — and it parked the + guide on the far side of its own subtree. RTL-1 cannot see this shape. */ inset-inline-start: calc( var(--tree-depth, 0) * var(--_tree-view-indent) + var(--_tree-view-indent) / 2 + @@ -206,15 +210,6 @@ pointer-events: none; } -[data-tree-view-root][data-indent-guides]:dir(rtl) [data-tree-view-branch]::before { - inset-inline-start: auto; - inset-inline-end: calc( - var(--tree-depth, 0) * var(--_tree-view-indent) + - var(--_tree-view-indent) / 2 + - var(--_tree-view-row-padding-inline) - ); -} - /* The soma `` part itself is now decorative-only — hide it so consumers can keep it in markup (soma assertion) without visual duplication of the pseudo-element guide above. */ diff --git a/src/uix/soma/components/waveform/types.ts b/src/uix/soma/components/waveform/types.ts index 6595aaad9..ea0b08432 100644 --- a/src/uix/soma/components/waveform/types.ts +++ b/src/uix/soma/components/waveform/types.ts @@ -35,7 +35,9 @@ export type WaveformProps = WithChild<{ disabled?: boolean; /** * Text direction, forwarded to the embedded Slider so its value anchoring - * agrees with the recipe's mirrored painting. @default from Soma config + * agrees with the recipe's mirrored painting. Resolved by NOBODY here: the + * raw prop rides the root AND reaches the Slider, which runs the chain + * itself. @default inherited — with no prop there is no attribute. */ dir?: Direction; /** Secondary track (buffered / preloaded), forwarded to the Slider (G-2). */