Skip to content

Commit 2502ada

Browse files
authored
feat(registry): add better rtl support (#191)
* refactor: use Radix useDirection directly in components - Updated direction-provider to re-export Radix's DirectionProvider and useDirection - Removed local direction context implementations from 12 UI components - Components now import useDirection directly from @radix-ui/react-direction - Removed direction-provider from registryDependencies in registry-ui.ts - Ensures all components share the same global direction context from Radix - Rebuilt registry with updated dependencies * chore: rebuild media-player
1 parent 1461b85 commit 2502ada

33 files changed

+127
-192
lines changed

docs/components/theme-wrapper.tsx

Lines changed: 0 additions & 33 deletions
This file was deleted.

docs/content/docs/utilities/direction-provider.mdx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ title: Direction Provider
33
description: Provides bidirectional text support (RTL/LTR) across your application.
44
links:
55
api: /docs/utilities/direction-provider#api-reference
6+
docs: https://radix-ui.com/docs/primitives/utilities/direction-provider
67
---
78

89
## Installation
@@ -67,9 +68,9 @@ function Component() {
6768
const dir = useDirection()
6869

6970
return (
70-
<button dir={dir}>
71+
<Button dir={dir}>
7172
Do a kickflip
72-
</button>
73+
</Button>
7374
)
7475
}
7576
```

docs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"@radix-ui/react-checkbox": "^1.3.3",
3434
"@radix-ui/react-collapsible": "^1.1.12",
3535
"@radix-ui/react-dialog": "^1.1.15",
36+
"@radix-ui/react-direction": "^1.1.1",
3637
"@radix-ui/react-dropdown-menu": "^2.1.16",
3738
"@radix-ui/react-hover-card": "^1.1.15",
3839
"@radix-ui/react-label": "^2.1.8",

docs/public/r/index.json

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
"name": "angle-slider",
44
"type": "registry:ui",
55
"dependencies": [
6-
"@radix-ui/react-slot"
6+
"@radix-ui/react-slot",
7+
"@radix-ui/react-direction"
78
],
89
"files": [
910
{
@@ -67,6 +68,7 @@
6768
"dependencies": [
6869
"@radix-ui/react-slider",
6970
"@radix-ui/react-slot",
71+
"@radix-ui/react-direction",
7072
"class-variance-authority",
7173
"lucide-react"
7274
],
@@ -163,7 +165,8 @@
163165
"name": "editable",
164166
"type": "registry:ui",
165167
"dependencies": [
166-
"@radix-ui/react-slot"
168+
"@radix-ui/react-slot",
169+
"@radix-ui/react-direction"
167170
],
168171
"files": [
169172
{
@@ -185,6 +188,7 @@
185188
"type": "registry:ui",
186189
"dependencies": [
187190
"@radix-ui/react-slot",
191+
"@radix-ui/react-direction",
188192
"lucide-react"
189193
],
190194
"files": [
@@ -212,6 +216,7 @@
212216
"type": "registry:ui",
213217
"dependencies": [
214218
"@radix-ui/react-slot",
219+
"@radix-ui/react-direction",
215220
"class-variance-authority"
216221
],
217222
"registryDependencies": [
@@ -264,6 +269,7 @@
264269
"type": "registry:ui",
265270
"dependencies": [
266271
"@radix-ui/react-slot",
272+
"@radix-ui/react-direction",
267273
"class-variance-authority"
268274
],
269275
"files": [
@@ -377,6 +383,7 @@
377383
"type": "registry:ui",
378384
"dependencies": [
379385
"@radix-ui/react-slot",
386+
"@radix-ui/react-direction",
380387
"lucide-react",
381388
"media-chrome"
382389
],
@@ -450,7 +457,8 @@
450457
"name": "scroll-spy",
451458
"type": "registry:ui",
452459
"dependencies": [
453-
"@radix-ui/react-slot"
460+
"@radix-ui/react-slot",
461+
"@radix-ui/react-direction"
454462
],
455463
"files": [
456464
{
@@ -503,6 +511,7 @@
503511
"type": "registry:ui",
504512
"dependencies": [
505513
"@radix-ui/react-slot",
514+
"@radix-ui/react-direction",
506515
"class-variance-authority",
507516
"lucide-react"
508517
],
@@ -542,6 +551,7 @@
542551
"type": "registry:ui",
543552
"dependencies": [
544553
"@radix-ui/react-slot",
554+
"@radix-ui/react-direction",
545555
"lucide-react"
546556
],
547557
"files": [
@@ -609,6 +619,7 @@
609619
"type": "registry:ui",
610620
"dependencies": [
611621
"@radix-ui/react-slot",
622+
"@radix-ui/react-direction",
612623
"class-variance-authority"
613624
],
614625
"files": [
@@ -628,6 +639,7 @@
628639
"dependencies": [
629640
"@floating-ui/react-dom",
630641
"@radix-ui/react-slot",
642+
"@radix-ui/react-direction",
631643
"lucide-react"
632644
],
633645
"files": [

docs/public/r/styles/default/angle-slider.json

Lines changed: 3 additions & 2 deletions
Large diffs are not rendered by default.

docs/public/r/styles/default/color-picker.json

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

docs/public/r/styles/default/direction-provider.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"files": [
55
{
66
"path": "components/direction-provider.tsx",
7-
"content": "\"use client\";\n\nimport * as React from \"react\";\n\ntype Direction = \"ltr\" | \"rtl\";\n\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\nfunction useDirection(dir?: Direction): Direction {\n const contextDir = React.useContext(DirectionContext);\n if (!contextDir) {\n throw new Error(\"useDirection must be used within a DirectionProvider\");\n }\n return dir ?? contextDir ?? \"ltr\";\n}\n\ninterface DirectionProviderProps {\n children: React.ReactNode;\n dir: Direction;\n}\n\nfunction DirectionProvider({ children, dir }: DirectionProviderProps) {\n return (\n <DirectionContext.Provider value={dir}>\n {children}\n </DirectionContext.Provider>\n );\n}\n\nexport { DirectionProvider, useDirection };\n",
7+
"content": "\"use client\";\n\nimport {\n DirectionProvider as GlobalDirectionProvider,\n useDirection,\n} from \"@radix-ui/react-direction\";\nimport type * as React from \"react\";\n\nfunction DirectionProvider(\n props: React.ComponentProps<typeof GlobalDirectionProvider>,\n) {\n return <GlobalDirectionProvider {...props} />;\n}\n\nexport {\n DirectionProvider,\n //\n useDirection,\n};\n",
88
"type": "registry:component",
99
"target": ""
1010
}

docs/public/r/styles/default/editable.json

Lines changed: 3 additions & 2 deletions
Large diffs are not rendered by default.

docs/public/r/styles/default/file-upload.json

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

docs/public/r/styles/default/marquee.json

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)