banhaten 0.1.2 → 0.1.3
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 +93 -328
- package/banhaten.config.example.json +1 -1
- package/docs/design-system/README.md +11 -0
- package/docs/design-system/appearance-presets.md +184 -0
- package/docs/design-system/appearances/default.md +94 -0
- package/docs/design-system/appearances/rounded.md +95 -0
- package/docs/design-system/appearances/sharp.md +95 -0
- package/docs/design-system/component-showcase-consistency-report.md +217 -0
- package/docs/design-system/component-token-consistency-audit.md +163 -0
- package/docs/design-system/components/README.md +74 -0
- package/docs/design-system/components/accordion.md +51 -0
- package/docs/design-system/components/activity-feed.md +92 -0
- package/docs/design-system/components/alert-dialog.md +70 -0
- package/docs/design-system/components/alert.md +79 -0
- package/docs/design-system/components/aspect-ratio.md +44 -0
- package/docs/design-system/components/attribute.md +87 -0
- package/docs/design-system/components/autocomplete.md +74 -0
- package/docs/design-system/components/avatar.md +52 -0
- package/docs/design-system/components/badge.md +53 -0
- package/docs/design-system/components/banner.md +85 -0
- package/docs/design-system/components/breadcrumbs.md +174 -0
- package/docs/design-system/components/button-group.md +83 -0
- package/docs/design-system/components/button.md +77 -0
- package/docs/design-system/components/card.md +78 -0
- package/docs/design-system/components/carousel.md +44 -0
- package/docs/design-system/components/catalog-components.md +45 -0
- package/docs/design-system/components/chart.md +43 -0
- package/docs/design-system/components/checkbox.md +52 -0
- package/docs/design-system/components/collapsible.md +48 -0
- package/docs/design-system/components/command-bar.md +57 -0
- package/docs/design-system/components/command.md +60 -0
- package/docs/design-system/components/context-menu.md +44 -0
- package/docs/design-system/components/date-picker.md +77 -0
- package/docs/design-system/components/divider.md +101 -0
- package/docs/design-system/components/empty-state.md +55 -0
- package/docs/design-system/components/field.md +69 -0
- package/docs/design-system/components/file-upload.md +185 -0
- package/docs/design-system/components/hover-card.md +46 -0
- package/docs/design-system/components/icons.md +48 -0
- package/docs/design-system/components/input-group.md +56 -0
- package/docs/design-system/components/input-otp.md +55 -0
- package/docs/design-system/components/input.md +48 -0
- package/docs/design-system/components/kbd.md +44 -0
- package/docs/design-system/components/label.md +48 -0
- package/docs/design-system/components/menu.md +59 -0
- package/docs/design-system/components/menubar.md +45 -0
- package/docs/design-system/components/modal.md +98 -0
- package/docs/design-system/components/native-select.md +52 -0
- package/docs/design-system/components/navigation-menu.md +48 -0
- package/docs/design-system/components/onboarding-step-list-item.md +80 -0
- package/docs/design-system/components/page-header.md +84 -0
- package/docs/design-system/components/pagination.md +49 -0
- package/docs/design-system/components/popover.md +58 -0
- package/docs/design-system/components/progress-slider.md +48 -0
- package/docs/design-system/components/progress.md +75 -0
- package/docs/design-system/components/radio-card.md +49 -0
- package/docs/design-system/components/radio-group.md +55 -0
- package/docs/design-system/components/resizable.md +42 -0
- package/docs/design-system/components/scroll-area.md +45 -0
- package/docs/design-system/components/select.md +50 -0
- package/docs/design-system/components/sheet.md +65 -0
- package/docs/design-system/components/sidebar.md +68 -0
- package/docs/design-system/components/skeleton.md +73 -0
- package/docs/design-system/components/slideout.md +63 -0
- package/docs/design-system/components/slider.md +61 -0
- package/docs/design-system/components/social-button.md +47 -0
- package/docs/design-system/components/spinner.md +61 -0
- package/docs/design-system/components/steps.md +63 -0
- package/docs/design-system/components/table.md +397 -0
- package/docs/design-system/components/tabs.md +52 -0
- package/docs/design-system/components/tag.md +78 -0
- package/docs/design-system/components/textarea.md +48 -0
- package/docs/design-system/components/timeline.md +81 -0
- package/docs/design-system/components/toast.md +56 -0
- package/docs/design-system/components/toggle.md +79 -0
- package/docs/design-system/components/toolbar.md +85 -0
- package/docs/design-system/components/tooltip.md +90 -0
- package/docs/design-system/components/typography.md +18 -0
- package/docs/design-system/design-system-test-missing-items.md +368 -0
- package/docs/design-system/icons.md +69 -0
- package/docs/design-system/registry-and-cli.md +41 -0
- package/docs/design-system/tabs.md +53 -0
- package/docs/design-system/token-governance.md +38 -0
- package/package.json +83 -65
- package/registry/components/alert-dialog.tsx +297 -0
- package/registry/components/aspect-ratio.tsx +30 -0
- package/registry/components/carousel.tsx +234 -0
- package/registry/components/chart.tsx +170 -0
- package/registry/components/collapsible.tsx +69 -0
- package/registry/components/command.tsx +174 -0
- package/registry/components/context-menu.tsx +236 -0
- package/registry/components/date-picker.tsx +1 -1
- package/registry/components/expanded/PageHeader.tsx +1 -1
- package/registry/components/expanded/breadcrumbs.css +139 -139
- package/registry/components/expanded/catalogComponentsShowcase.css +83 -83
- package/registry/components/expanded/steps.css +274 -274
- package/registry/components/expanded/timeline.css +264 -264
- package/registry/components/field.tsx +230 -0
- package/registry/components/hover-card.tsx +48 -0
- package/registry/components/input-group.tsx +130 -0
- package/registry/components/input.tsx +2 -2
- package/registry/components/kbd.tsx +44 -0
- package/registry/components/label.tsx +78 -0
- package/registry/components/menu.tsx +3 -1
- package/registry/components/menubar.tsx +226 -0
- package/registry/components/modal.tsx +109 -76
- package/registry/components/native-select.tsx +205 -0
- package/registry/components/navigation-menu.tsx +171 -0
- package/registry/components/radio-group.tsx +1 -1
- package/registry/components/resizable.tsx +74 -0
- package/registry/components/scroll-area.tsx +67 -0
- package/registry/components/select.tsx +2 -4
- package/registry/components/sheet.tsx +305 -0
- package/registry/components/sidebar.tsx +352 -0
- package/registry/components/social-button.tsx +74 -10
- package/registry/components/{expanded/tabs.css → tabs.css} +127 -106
- package/registry/components/tabs.tsx +242 -0
- package/registry/components/textarea.tsx +1 -1
- package/registry/components/toast.tsx +131 -0
- package/registry/examples/alert-dialog-demo.tsx +42 -0
- package/registry/examples/aspect-ratio-demo.tsx +11 -0
- package/registry/examples/carousel-demo.tsx +25 -0
- package/registry/examples/chart-demo.tsx +33 -0
- package/registry/examples/collapsible-demo.tsx +16 -0
- package/registry/examples/command-demo.tsx +42 -0
- package/registry/examples/context-menu-demo.tsx +29 -0
- package/registry/examples/expanded/tabs-demo.tsx +1 -1
- package/registry/examples/field-demo.tsx +51 -0
- package/registry/examples/hover-card-demo.tsx +23 -0
- package/registry/examples/input-group-demo.tsx +16 -0
- package/registry/examples/kbd-demo.tsx +11 -0
- package/registry/examples/label-demo.tsx +20 -0
- package/registry/examples/menubar-demo.tsx +34 -0
- package/registry/examples/native-select-demo.tsx +16 -0
- package/registry/examples/navigation-menu-demo.tsx +29 -0
- package/registry/examples/resizable-demo.tsx +22 -0
- package/registry/examples/scroll-area-demo.tsx +15 -0
- package/registry/examples/sheet-demo.tsx +47 -0
- package/registry/examples/sidebar-demo.tsx +55 -0
- package/registry/examples/tabs-demo.tsx +13 -0
- package/registry/examples/toast-demo.tsx +35 -0
- package/registry/index.json +655 -11
- package/registry/styles/globals.css +4733 -4690
- package/registry.json +1612 -0
- package/schema/config.schema.json +48 -0
- package/schema/registry.schema.json +85 -0
- package/schema/tokens.schema.json +63 -0
- package/src/cli/index.js +312 -18
- package/tokens/banhaten.tokens.json +1 -1
- package/registry/assets/avatars/avatar-02.jpg +0 -0
- package/registry/assets/avatars/avatar-03.jpg +0 -0
- package/registry/assets/avatars/avatar-04.jpg +0 -0
- package/registry/assets/avatars/avatar-05.jpg +0 -0
- package/registry/assets/avatars/avatar-06.jpg +0 -0
- package/registry/assets/avatars/avatar-07.jpg +0 -0
- package/registry/assets/avatars/avatar-08.jpg +0 -0
- package/registry/assets/avatars/avatar-09.jpg +0 -0
- package/registry/assets/avatars/avatar-10.jpg +0 -0
- package/registry/assets/avatars/avatar-11.jpg +0 -0
- package/registry/assets/avatars/avatar-12.jpg +0 -0
- package/registry/assets/avatars/avatar-13.jpg +0 -0
- package/registry/assets/avatars/avatar-14.jpg +0 -0
- package/registry/assets/avatars/avatar-15.jpg +0 -0
- package/registry/assets/avatars/avatar-16.jpg +0 -0
- package/registry/assets/avatars/avatar-17.jpg +0 -0
- package/registry/assets/avatars/avatar-18.jpg +0 -0
- package/registry/assets/avatars/avatar-19.jpg +0 -0
- package/registry/assets/avatars/avatar-20.jpg +0 -0
- package/registry/assets/avatars/avatar-21.jpg +0 -0
- package/registry/assets/avatars/avatar-22.jpg +0 -0
- package/registry/assets/avatars/avatar-23.jpg +0 -0
- package/registry/assets/avatars/avatar-24.jpg +0 -0
- package/registry/assets/avatars/avatar-25.jpg +0 -0
- package/registry/assets/avatars/avatar-26.jpg +0 -0
- package/registry/assets/avatars/avatar-27.jpg +0 -0
- package/registry/assets/avatars/avatar-28.jpg +0 -0
- package/registry/assets/avatars/avatar-29.jpg +0 -0
- package/registry/assets/avatars/avatar-30.jpg +0 -0
- package/registry/assets/avatars/avatar-31.jpg +0 -0
- package/registry/assets/avatars/avatar-32.jpg +0 -0
- package/registry/assets/avatars/avatar-33.jpg +0 -0
- package/registry/assets/avatars/avatar-34.jpg +0 -0
- package/registry/assets/avatars/avatar-35.jpg +0 -0
- package/registry/assets/image-assets.json +0 -744
- package/registry/assets/images/art-02.jpg +0 -0
- package/registry/assets/images/art-03.jpg +0 -0
- package/registry/assets/images/art-04.jpg +0 -0
- package/registry/assets/images/art-05.jpg +0 -0
- package/registry/assets/images/art-06.jpg +0 -0
- package/registry/assets/images/art-07.jpg +0 -0
- package/registry/assets/images/art-08.jpg +0 -0
- package/registry/assets/images/art-09.jpg +0 -0
- package/registry/assets/images/art-10.jpg +0 -0
- package/registry/assets/images/art-11.jpg +0 -0
- package/registry/assets/images/art-12.jpg +0 -0
- package/registry/assets/images/art-13.jpg +0 -0
- package/registry/assets/images/art-14.jpg +0 -0
- package/registry/assets/images/art-15.jpg +0 -0
- package/registry/assets/images/art-16.jpg +0 -0
- package/registry/assets/images/art-17.jpg +0 -0
- package/registry/assets/images/art-18.jpg +0 -0
- package/registry/assets/images/art-19.jpg +0 -0
- package/registry/assets/images/art-20.jpg +0 -0
- package/registry/assets/images/art-21.jpg +0 -0
- package/registry/assets/images/art-22.jpg +0 -0
- package/registry/assets/images/art-23.jpg +0 -0
- package/registry/assets/images/art-24.jpg +0 -0
- package/registry/assets/images/art-25.jpg +0 -0
- package/registry/assets/images/art-26.jpg +0 -0
- package/registry/assets/images/art-27.jpg +0 -0
- package/registry/assets/images/nature-01.jpg +0 -0
- package/registry/assets/images/nature-02.jpg +0 -0
- package/registry/assets/images/nature-03.jpg +0 -0
- package/registry/assets/images/nature-04.jpg +0 -0
- package/registry/assets/images/nature-05.jpg +0 -0
- package/registry/assets/images/nature-06.jpg +0 -0
- package/registry/assets/images/nature-07.jpg +0 -0
- package/registry/assets/images/nature-08.jpg +0 -0
- package/registry/assets/images/nature-09.jpg +0 -0
- package/registry/assets/images/nature-10.jpg +0 -0
- package/registry/assets/images/nature-11.jpg +0 -0
- package/registry/assets/images/nature-12.jpg +0 -0
- package/registry/assets/images/nature-13.jpg +0 -0
- package/registry/assets/images/nature-14.jpg +0 -0
- package/registry/assets/images/nature-15.jpg +0 -0
- package/registry/assets/images/nature-16.jpg +0 -0
- package/registry/assets/images/nature-17.jpg +0 -0
- package/registry/assets/images/nature-18.jpg +0 -0
- package/registry/assets/images/nature-19.jpg +0 -0
- package/registry/assets/images/nature-20.jpg +0 -0
- package/registry/components/expanded/Tabs.tsx +0 -86
package/registry.json
ADDED
|
@@ -0,0 +1,1612 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry.json",
|
|
3
|
+
"name": "banhaten",
|
|
4
|
+
"homepage": "https://github.com/AhmadGalal85/Banhaten-design-system/tree/main/docs",
|
|
5
|
+
"items": [
|
|
6
|
+
{
|
|
7
|
+
"name": "base",
|
|
8
|
+
"type": "registry:block",
|
|
9
|
+
"title": "Banhaten Base",
|
|
10
|
+
"description": "Banhaten base utilities, direction hook, and generated token stylesheet required by registry components.",
|
|
11
|
+
"author": "Ahmad Galal",
|
|
12
|
+
"dependencies": [
|
|
13
|
+
"@fontsource/inter@^5.2.8",
|
|
14
|
+
"class-variance-authority@^0.7.1",
|
|
15
|
+
"clsx@^2.1.1",
|
|
16
|
+
"tailwind-merge@^3.3.1"
|
|
17
|
+
],
|
|
18
|
+
"files": [
|
|
19
|
+
{
|
|
20
|
+
"path": "registry/utils/cn.ts",
|
|
21
|
+
"type": "registry:lib",
|
|
22
|
+
"target": "@lib/utils.ts"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"path": "registry/hooks/use-direction.ts",
|
|
26
|
+
"type": "registry:hook",
|
|
27
|
+
"target": "@hooks/use-direction.ts"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"path": "registry/styles/globals.css",
|
|
31
|
+
"type": "registry:style",
|
|
32
|
+
"target": "app/globals.css"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "accordion",
|
|
38
|
+
"type": "registry:component",
|
|
39
|
+
"title": "Accordion",
|
|
40
|
+
"description": "Accessible disclosure primitive with single or multiple expansion, Banhaten variants, size scale, animation, and RTL-safe text alignment.",
|
|
41
|
+
"author": "Ahmad Galal",
|
|
42
|
+
"registryDependencies": [
|
|
43
|
+
"base"
|
|
44
|
+
],
|
|
45
|
+
"dependencies": [
|
|
46
|
+
"@radix-ui/react-accordion@^1.2.12",
|
|
47
|
+
"class-variance-authority@^0.7.1",
|
|
48
|
+
"lucide-react@^1.17.0"
|
|
49
|
+
],
|
|
50
|
+
"files": [
|
|
51
|
+
{
|
|
52
|
+
"path": "registry/components/accordion.tsx",
|
|
53
|
+
"type": "registry:component",
|
|
54
|
+
"target": "@ui/accordion.tsx"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "aspect-ratio",
|
|
60
|
+
"type": "registry:component",
|
|
61
|
+
"title": "Aspect Ratio",
|
|
62
|
+
"description": "Radix AspectRatio wrapper for fixed-format media, screenshots, previews, and product surfaces with Banhaten radius and neutral background tokens.",
|
|
63
|
+
"author": "Ahmad Galal",
|
|
64
|
+
"registryDependencies": [
|
|
65
|
+
"base"
|
|
66
|
+
],
|
|
67
|
+
"dependencies": [
|
|
68
|
+
"@radix-ui/react-aspect-ratio@^1.1.11"
|
|
69
|
+
],
|
|
70
|
+
"files": [
|
|
71
|
+
{
|
|
72
|
+
"path": "registry/components/aspect-ratio.tsx",
|
|
73
|
+
"type": "registry:component",
|
|
74
|
+
"target": "@ui/aspect-ratio.tsx"
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "avatar",
|
|
80
|
+
"type": "registry:component",
|
|
81
|
+
"title": "Avatar",
|
|
82
|
+
"description": "Figma-matched user avatar primitive with image, initials, icon fallback, circular and rounded forms, status dots, call-to-action overlays, stacked group count, size scale, and RTL-safe overlap.",
|
|
83
|
+
"author": "Ahmad Galal",
|
|
84
|
+
"registryDependencies": [
|
|
85
|
+
"base"
|
|
86
|
+
],
|
|
87
|
+
"dependencies": [
|
|
88
|
+
"@radix-ui/react-avatar@^1.1.10",
|
|
89
|
+
"class-variance-authority@^0.7.1",
|
|
90
|
+
"lucide-react@^1.17.0"
|
|
91
|
+
],
|
|
92
|
+
"files": [
|
|
93
|
+
{
|
|
94
|
+
"path": "registry/components/avatar.tsx",
|
|
95
|
+
"type": "registry:component",
|
|
96
|
+
"target": "@ui/avatar.tsx"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"path": "registry/assets/avatars/avatar-01.jpg",
|
|
100
|
+
"type": "registry:file",
|
|
101
|
+
"target": "@ui/assets/avatars/avatar-01.jpg"
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "badge",
|
|
107
|
+
"type": "registry:component",
|
|
108
|
+
"title": "Badge",
|
|
109
|
+
"description": "Figma Badge primitive with light, outline, and solid styles, semantic accent colors, dot, flag, icon, numeric, optional split trailing actions, and RTL-safe composition.",
|
|
110
|
+
"author": "Ahmad Galal",
|
|
111
|
+
"registryDependencies": [
|
|
112
|
+
"base"
|
|
113
|
+
],
|
|
114
|
+
"dependencies": [
|
|
115
|
+
"@radix-ui/react-slot@^1.2.3",
|
|
116
|
+
"class-variance-authority@^0.7.1"
|
|
117
|
+
],
|
|
118
|
+
"files": [
|
|
119
|
+
{
|
|
120
|
+
"path": "registry/components/badge.tsx",
|
|
121
|
+
"type": "registry:component",
|
|
122
|
+
"target": "@ui/badge.tsx"
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"name": "tag",
|
|
128
|
+
"type": "registry:component",
|
|
129
|
+
"title": "Tag",
|
|
130
|
+
"description": "Figma Tag primitive with simple, dot, flag, avatar, and icon types, default/active/disabled states plus native hover and focus-visible styling, xs/md/lg sizes, optional close button, and RTL-safe composition.",
|
|
131
|
+
"author": "Ahmad Galal",
|
|
132
|
+
"registryDependencies": [
|
|
133
|
+
"base"
|
|
134
|
+
],
|
|
135
|
+
"dependencies": [
|
|
136
|
+
"@radix-ui/react-slot@^1.2.3",
|
|
137
|
+
"class-variance-authority@^0.7.1",
|
|
138
|
+
"lucide-react@^1.17.0"
|
|
139
|
+
],
|
|
140
|
+
"files": [
|
|
141
|
+
{
|
|
142
|
+
"path": "registry/components/tag.tsx",
|
|
143
|
+
"type": "registry:component",
|
|
144
|
+
"target": "@ui/tag.tsx"
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "attribute",
|
|
150
|
+
"type": "registry:component",
|
|
151
|
+
"title": "Attribute",
|
|
152
|
+
"description": "Figma Attribute Card primitive for semantic description lists, key-value rows, detail cards, status values, copyable values, loading rows, two-column summaries, and RTL-safe layouts.",
|
|
153
|
+
"author": "Ahmad Galal",
|
|
154
|
+
"registryDependencies": [
|
|
155
|
+
"base"
|
|
156
|
+
],
|
|
157
|
+
"dependencies": [
|
|
158
|
+
"class-variance-authority@^0.7.1"
|
|
159
|
+
],
|
|
160
|
+
"files": [
|
|
161
|
+
{
|
|
162
|
+
"path": "registry/components/attribute.tsx",
|
|
163
|
+
"type": "registry:component",
|
|
164
|
+
"target": "@ui/attribute.tsx"
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"name": "button",
|
|
170
|
+
"type": "registry:component",
|
|
171
|
+
"title": "Button",
|
|
172
|
+
"description": "Accessible button primitive with semantic variants, size scale, loading composition, and RTL-safe icon behavior.",
|
|
173
|
+
"author": "Ahmad Galal",
|
|
174
|
+
"registryDependencies": [
|
|
175
|
+
"base"
|
|
176
|
+
],
|
|
177
|
+
"dependencies": [
|
|
178
|
+
"@radix-ui/react-slot@^1.2.3",
|
|
179
|
+
"class-variance-authority@^0.7.1"
|
|
180
|
+
],
|
|
181
|
+
"files": [
|
|
182
|
+
{
|
|
183
|
+
"path": "registry/components/button.tsx",
|
|
184
|
+
"type": "registry:component",
|
|
185
|
+
"target": "@ui/button.tsx"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"path": "registry/components/spinner.tsx",
|
|
189
|
+
"type": "registry:component",
|
|
190
|
+
"target": "@ui/spinner.tsx"
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"name": "card",
|
|
196
|
+
"type": "registry:component",
|
|
197
|
+
"title": "Card",
|
|
198
|
+
"description": "Token-built card primitive with vertical and horizontal image layouts, full-image treatment, desktop/mobile spacing, Button-composed footer actions, and RTL-safe copy.",
|
|
199
|
+
"author": "Ahmad Galal",
|
|
200
|
+
"registryDependencies": [
|
|
201
|
+
"base",
|
|
202
|
+
"button"
|
|
203
|
+
],
|
|
204
|
+
"dependencies": [
|
|
205
|
+
"class-variance-authority@^0.7.1",
|
|
206
|
+
"lucide-react@^1.17.0"
|
|
207
|
+
],
|
|
208
|
+
"files": [
|
|
209
|
+
{
|
|
210
|
+
"path": "registry/components/card.tsx",
|
|
211
|
+
"type": "registry:component",
|
|
212
|
+
"target": "@ui/card.tsx"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"path": "registry/assets/images/art-01.jpg",
|
|
216
|
+
"type": "registry:file",
|
|
217
|
+
"target": "@ui/assets/images/art-01.jpg"
|
|
218
|
+
}
|
|
219
|
+
]
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"name": "chart",
|
|
223
|
+
"type": "registry:component",
|
|
224
|
+
"title": "Chart",
|
|
225
|
+
"description": "Recharts wrapper with Banhaten chart color tokens, responsive container, tooltip content, legend content, and config-driven color variables.",
|
|
226
|
+
"author": "Ahmad Galal",
|
|
227
|
+
"registryDependencies": [
|
|
228
|
+
"base"
|
|
229
|
+
],
|
|
230
|
+
"dependencies": [
|
|
231
|
+
"recharts@^3.9.2"
|
|
232
|
+
],
|
|
233
|
+
"files": [
|
|
234
|
+
{
|
|
235
|
+
"path": "registry/components/chart.tsx",
|
|
236
|
+
"type": "registry:component",
|
|
237
|
+
"target": "@ui/chart.tsx"
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"name": "carousel",
|
|
243
|
+
"type": "registry:component",
|
|
244
|
+
"title": "Carousel",
|
|
245
|
+
"description": "Embla-backed carousel with content, item, previous, and next controls, horizontal or vertical orientation, and RTL-safe directional icons.",
|
|
246
|
+
"author": "Ahmad Galal",
|
|
247
|
+
"registryDependencies": [
|
|
248
|
+
"base",
|
|
249
|
+
"button"
|
|
250
|
+
],
|
|
251
|
+
"dependencies": [
|
|
252
|
+
"embla-carousel-react@^8.6.0",
|
|
253
|
+
"lucide-react@^1.17.0"
|
|
254
|
+
],
|
|
255
|
+
"files": [
|
|
256
|
+
{
|
|
257
|
+
"path": "registry/components/carousel.tsx",
|
|
258
|
+
"type": "registry:component",
|
|
259
|
+
"target": "@ui/carousel.tsx"
|
|
260
|
+
}
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"name": "button-group",
|
|
265
|
+
"type": "registry:component",
|
|
266
|
+
"title": "Button Group",
|
|
267
|
+
"description": "Connected Button Group primitive with seven-item default and icon-only layouts, md/sm/xs size scale, reusable surface shadow, dividers, RTL-safe content spacing, native hover/focus/pressed styling, and active/disabled states.",
|
|
268
|
+
"author": "Ahmad Galal",
|
|
269
|
+
"registryDependencies": [
|
|
270
|
+
"base"
|
|
271
|
+
],
|
|
272
|
+
"dependencies": [
|
|
273
|
+
"@radix-ui/react-slot@^1.2.3",
|
|
274
|
+
"class-variance-authority@^0.7.1"
|
|
275
|
+
],
|
|
276
|
+
"files": [
|
|
277
|
+
{
|
|
278
|
+
"path": "registry/components/button-group.tsx",
|
|
279
|
+
"type": "registry:component",
|
|
280
|
+
"target": "@ui/button-group.tsx"
|
|
281
|
+
}
|
|
282
|
+
]
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"name": "toggle",
|
|
286
|
+
"type": "registry:component",
|
|
287
|
+
"title": "Toggle",
|
|
288
|
+
"description": "Radix Switch-backed toggle primitive and labeled field composition with sm/md geometry, active and disabled states, optional handle icons, tokenized focus ring, and RTL-safe label placement.",
|
|
289
|
+
"author": "Ahmad Galal",
|
|
290
|
+
"registryDependencies": [
|
|
291
|
+
"base"
|
|
292
|
+
],
|
|
293
|
+
"dependencies": [
|
|
294
|
+
"@radix-ui/react-switch@^1.3.0",
|
|
295
|
+
"class-variance-authority@^0.7.1"
|
|
296
|
+
],
|
|
297
|
+
"files": [
|
|
298
|
+
{
|
|
299
|
+
"path": "registry/components/toggle.tsx",
|
|
300
|
+
"type": "registry:component",
|
|
301
|
+
"target": "@ui/toggle.tsx"
|
|
302
|
+
}
|
|
303
|
+
]
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"name": "menu",
|
|
307
|
+
"type": "registry:component",
|
|
308
|
+
"title": "Menu",
|
|
309
|
+
"description": "Radix DropdownMenu-backed, Figma-matched menu surface and composable menu item slots for default, multiline, call-to-action, progress, divider, button, label, caption, badge, switch, avatar, meta text, submenus, and RTL layouts.",
|
|
310
|
+
"author": "Ahmad Galal",
|
|
311
|
+
"registryDependencies": [
|
|
312
|
+
"base"
|
|
313
|
+
],
|
|
314
|
+
"dependencies": [
|
|
315
|
+
"@radix-ui/react-dropdown-menu@^2.1.17",
|
|
316
|
+
"@radix-ui/react-slot@^1.2.3",
|
|
317
|
+
"class-variance-authority@^0.7.1"
|
|
318
|
+
],
|
|
319
|
+
"files": [
|
|
320
|
+
{
|
|
321
|
+
"path": "registry/components/menu.tsx",
|
|
322
|
+
"type": "registry:component",
|
|
323
|
+
"target": "@ui/menu.tsx"
|
|
324
|
+
}
|
|
325
|
+
]
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"name": "menubar",
|
|
329
|
+
"type": "registry:component",
|
|
330
|
+
"title": "Menubar",
|
|
331
|
+
"description": "Radix Menubar-backed application menu with trigger, content, item, checkbox, radio, label, separator, shortcut, and keyboard navigation parts.",
|
|
332
|
+
"author": "Ahmad Galal",
|
|
333
|
+
"registryDependencies": [
|
|
334
|
+
"base"
|
|
335
|
+
],
|
|
336
|
+
"dependencies": [
|
|
337
|
+
"@radix-ui/react-menubar@^1.1.19",
|
|
338
|
+
"lucide-react@^1.17.0"
|
|
339
|
+
],
|
|
340
|
+
"files": [
|
|
341
|
+
{
|
|
342
|
+
"path": "registry/components/menubar.tsx",
|
|
343
|
+
"type": "registry:component",
|
|
344
|
+
"target": "@ui/menubar.tsx"
|
|
345
|
+
}
|
|
346
|
+
]
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"name": "command",
|
|
350
|
+
"type": "registry:component",
|
|
351
|
+
"title": "Command",
|
|
352
|
+
"description": "cmdk-backed command menu with search input, grouped results, keyboard navigation, shortcuts, separators, and empty state.",
|
|
353
|
+
"author": "Ahmad Galal",
|
|
354
|
+
"registryDependencies": [
|
|
355
|
+
"base"
|
|
356
|
+
],
|
|
357
|
+
"dependencies": [
|
|
358
|
+
"cmdk@^1.1.1",
|
|
359
|
+
"lucide-react@^1.17.0"
|
|
360
|
+
],
|
|
361
|
+
"files": [
|
|
362
|
+
{
|
|
363
|
+
"path": "registry/components/command.tsx",
|
|
364
|
+
"type": "registry:component",
|
|
365
|
+
"target": "@ui/command.tsx"
|
|
366
|
+
}
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"name": "context-menu",
|
|
371
|
+
"type": "registry:component",
|
|
372
|
+
"title": "Context Menu",
|
|
373
|
+
"description": "Radix ContextMenu-backed right-click menu with item, checkbox, radio, label, separator, shortcut, and submenu parts.",
|
|
374
|
+
"author": "Ahmad Galal",
|
|
375
|
+
"registryDependencies": [
|
|
376
|
+
"base"
|
|
377
|
+
],
|
|
378
|
+
"dependencies": [
|
|
379
|
+
"@radix-ui/react-context-menu@^2.3.2",
|
|
380
|
+
"lucide-react@^1.17.0"
|
|
381
|
+
],
|
|
382
|
+
"files": [
|
|
383
|
+
{
|
|
384
|
+
"path": "registry/components/context-menu.tsx",
|
|
385
|
+
"type": "registry:component",
|
|
386
|
+
"target": "@ui/context-menu.tsx"
|
|
387
|
+
}
|
|
388
|
+
]
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"name": "tooltip",
|
|
392
|
+
"type": "registry:component",
|
|
393
|
+
"title": "Tooltip",
|
|
394
|
+
"description": "Radix Tooltip-backed primitive with Figma-matched dark and default surfaces, small and large sizes, shortcut and close slots, logical pointer positions, tokenized shadows, and RTL-safe layout.",
|
|
395
|
+
"author": "Ahmad Galal",
|
|
396
|
+
"registryDependencies": [
|
|
397
|
+
"base"
|
|
398
|
+
],
|
|
399
|
+
"dependencies": [
|
|
400
|
+
"@radix-ui/react-tooltip@^1.2.9",
|
|
401
|
+
"class-variance-authority@^0.7.1",
|
|
402
|
+
"lucide-react@^1.17.0"
|
|
403
|
+
],
|
|
404
|
+
"files": [
|
|
405
|
+
{
|
|
406
|
+
"path": "registry/components/tooltip.tsx",
|
|
407
|
+
"type": "registry:component",
|
|
408
|
+
"target": "@ui/tooltip.tsx"
|
|
409
|
+
}
|
|
410
|
+
]
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"name": "popover",
|
|
414
|
+
"type": "registry:component",
|
|
415
|
+
"title": "Popover",
|
|
416
|
+
"description": "Token-built popover primitive with click, focus, and hover-capable triggers, positioned content, optional arrow, alignment and offset controls, close affordance, small to large surfaces, and RTL-safe composition.",
|
|
417
|
+
"author": "Ahmad Galal",
|
|
418
|
+
"registryDependencies": [
|
|
419
|
+
"base",
|
|
420
|
+
"badge",
|
|
421
|
+
"button",
|
|
422
|
+
"checkbox",
|
|
423
|
+
"input",
|
|
424
|
+
"menu",
|
|
425
|
+
"select",
|
|
426
|
+
"toggle"
|
|
427
|
+
],
|
|
428
|
+
"dependencies": [
|
|
429
|
+
"@radix-ui/react-slot@^1.2.3",
|
|
430
|
+
"class-variance-authority@^0.7.1",
|
|
431
|
+
"lucide-react@^1.17.0"
|
|
432
|
+
],
|
|
433
|
+
"files": [
|
|
434
|
+
{
|
|
435
|
+
"path": "registry/components/popover.tsx",
|
|
436
|
+
"type": "registry:component",
|
|
437
|
+
"target": "@ui/popover.tsx"
|
|
438
|
+
}
|
|
439
|
+
]
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"name": "hover-card",
|
|
443
|
+
"type": "registry:component",
|
|
444
|
+
"title": "Hover Card",
|
|
445
|
+
"description": "Radix HoverCard-backed preview surface for rich hover and focus context with tokenized raised content.",
|
|
446
|
+
"author": "Ahmad Galal",
|
|
447
|
+
"registryDependencies": [
|
|
448
|
+
"base"
|
|
449
|
+
],
|
|
450
|
+
"dependencies": [
|
|
451
|
+
"@radix-ui/react-hover-card@^1.1.18"
|
|
452
|
+
],
|
|
453
|
+
"files": [
|
|
454
|
+
{
|
|
455
|
+
"path": "registry/components/hover-card.tsx",
|
|
456
|
+
"type": "registry:component",
|
|
457
|
+
"target": "@ui/hover-card.tsx"
|
|
458
|
+
}
|
|
459
|
+
]
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"name": "modal",
|
|
463
|
+
"type": "registry:component",
|
|
464
|
+
"title": "Modal",
|
|
465
|
+
"description": "Radix Dialog-backed modal primitive with Figma Small, Default, and Large sizes, tokenized raised surface, header/body/footer slots, ConfirmModal guardrails, Button actions, Checkbox opt-out, and RTL-safe layout.",
|
|
466
|
+
"author": "Ahmad Galal",
|
|
467
|
+
"registryDependencies": [
|
|
468
|
+
"base",
|
|
469
|
+
"alert-dialog",
|
|
470
|
+
"button",
|
|
471
|
+
"checkbox",
|
|
472
|
+
"spinner"
|
|
473
|
+
],
|
|
474
|
+
"dependencies": [
|
|
475
|
+
"@radix-ui/react-dialog@^1.1.16",
|
|
476
|
+
"class-variance-authority@^0.7.1",
|
|
477
|
+
"lucide-react@^1.17.0"
|
|
478
|
+
],
|
|
479
|
+
"files": [
|
|
480
|
+
{
|
|
481
|
+
"path": "registry/components/modal.tsx",
|
|
482
|
+
"type": "registry:component",
|
|
483
|
+
"target": "@ui/modal.tsx"
|
|
484
|
+
}
|
|
485
|
+
]
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"name": "alert-dialog",
|
|
489
|
+
"type": "registry:component",
|
|
490
|
+
"title": "Alert Dialog",
|
|
491
|
+
"description": "Radix AlertDialog-backed confirmation primitive for destructive or consequential actions with tokenized alert surface, semantic intent icon, safe cancel/action buttons, focus management, and RTL-safe layout.",
|
|
492
|
+
"author": "Ahmad Galal",
|
|
493
|
+
"registryDependencies": [
|
|
494
|
+
"base",
|
|
495
|
+
"button"
|
|
496
|
+
],
|
|
497
|
+
"dependencies": [
|
|
498
|
+
"@radix-ui/react-alert-dialog@^1.1.18",
|
|
499
|
+
"class-variance-authority@^0.7.1",
|
|
500
|
+
"lucide-react@^1.17.0"
|
|
501
|
+
],
|
|
502
|
+
"files": [
|
|
503
|
+
{
|
|
504
|
+
"path": "registry/components/alert-dialog.tsx",
|
|
505
|
+
"type": "registry:component",
|
|
506
|
+
"target": "@ui/alert-dialog.tsx"
|
|
507
|
+
}
|
|
508
|
+
]
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
"name": "checkbox",
|
|
512
|
+
"type": "registry:component",
|
|
513
|
+
"title": "Checkbox",
|
|
514
|
+
"description": "Figma-matched checkbox primitive and checkbox card composition with 20px root, 16px control, selected and disabled states, native hover styling, component shadow, body text styles, and RTL-safe layout.",
|
|
515
|
+
"author": "Ahmad Galal",
|
|
516
|
+
"registryDependencies": [
|
|
517
|
+
"base"
|
|
518
|
+
],
|
|
519
|
+
"dependencies": [
|
|
520
|
+
"@radix-ui/react-checkbox@^1.3.3",
|
|
521
|
+
"class-variance-authority@^0.7.1"
|
|
522
|
+
],
|
|
523
|
+
"files": [
|
|
524
|
+
{
|
|
525
|
+
"path": "registry/components/checkbox.tsx",
|
|
526
|
+
"type": "registry:component",
|
|
527
|
+
"target": "@ui/checkbox.tsx"
|
|
528
|
+
}
|
|
529
|
+
]
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"name": "collapsible",
|
|
533
|
+
"type": "registry:component",
|
|
534
|
+
"title": "Collapsible",
|
|
535
|
+
"description": "Radix Collapsible wrapper for disclosure sections with tokenized trigger, icon rotation, and content slots.",
|
|
536
|
+
"author": "Ahmad Galal",
|
|
537
|
+
"registryDependencies": [
|
|
538
|
+
"base"
|
|
539
|
+
],
|
|
540
|
+
"dependencies": [
|
|
541
|
+
"@radix-ui/react-collapsible@^1.1.15",
|
|
542
|
+
"lucide-react@^1.17.0"
|
|
543
|
+
],
|
|
544
|
+
"files": [
|
|
545
|
+
{
|
|
546
|
+
"path": "registry/components/collapsible.tsx",
|
|
547
|
+
"type": "registry:component",
|
|
548
|
+
"target": "@ui/collapsible.tsx"
|
|
549
|
+
}
|
|
550
|
+
]
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
"name": "radio-group",
|
|
554
|
+
"type": "registry:component",
|
|
555
|
+
"title": "Radio Group",
|
|
556
|
+
"description": "Native-input radio primitive and group composition with field rows, group label, description, error and disabled states, horizontal and vertical layouts, controlled or uncontrolled value, and RTL-safe tokenized copy.",
|
|
557
|
+
"author": "Ahmad Galal",
|
|
558
|
+
"registryDependencies": [
|
|
559
|
+
"base"
|
|
560
|
+
],
|
|
561
|
+
"dependencies": [
|
|
562
|
+
"class-variance-authority@^0.7.1"
|
|
563
|
+
],
|
|
564
|
+
"files": [
|
|
565
|
+
{
|
|
566
|
+
"path": "registry/components/radio-group.tsx",
|
|
567
|
+
"type": "registry:component",
|
|
568
|
+
"target": "@ui/radio-group.tsx"
|
|
569
|
+
}
|
|
570
|
+
]
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
"name": "radio-card",
|
|
574
|
+
"type": "registry:component",
|
|
575
|
+
"title": "Radio Card",
|
|
576
|
+
"description": "Figma Radio Card component with seven content types, default/active/disabled states, native hover styling, RTL variants, system radio indicator, and token-bound spacing, typography, border, and shadow.",
|
|
577
|
+
"author": "Ahmad Galal",
|
|
578
|
+
"registryDependencies": [
|
|
579
|
+
"base"
|
|
580
|
+
],
|
|
581
|
+
"dependencies": [
|
|
582
|
+
"class-variance-authority@^0.7.1"
|
|
583
|
+
],
|
|
584
|
+
"files": [
|
|
585
|
+
{
|
|
586
|
+
"path": "registry/components/radio-card.tsx",
|
|
587
|
+
"type": "registry:component",
|
|
588
|
+
"target": "@ui/radio-card.tsx"
|
|
589
|
+
}
|
|
590
|
+
]
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
"name": "divider",
|
|
594
|
+
"type": "registry:component",
|
|
595
|
+
"title": "Divider",
|
|
596
|
+
"description": "Figma-matched divider primitive with horizontal and vertical directions plus solid and dotted types.",
|
|
597
|
+
"author": "Ahmad Galal",
|
|
598
|
+
"registryDependencies": [
|
|
599
|
+
"base"
|
|
600
|
+
],
|
|
601
|
+
"dependencies": [
|
|
602
|
+
"class-variance-authority@^0.7.1"
|
|
603
|
+
],
|
|
604
|
+
"files": [
|
|
605
|
+
{
|
|
606
|
+
"path": "registry/components/divider.tsx",
|
|
607
|
+
"type": "registry:component",
|
|
608
|
+
"target": "@ui/divider.tsx"
|
|
609
|
+
}
|
|
610
|
+
]
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
"name": "pagination",
|
|
614
|
+
"type": "registry:component",
|
|
615
|
+
"title": "Pagination",
|
|
616
|
+
"description": "Figma-matched pagination primitive with numeric, simple, and summary layouts, soft and ghost styles, exact 32px controls, caption variants, and RTL labels.",
|
|
617
|
+
"author": "Ahmad Galal",
|
|
618
|
+
"registryDependencies": [
|
|
619
|
+
"base"
|
|
620
|
+
],
|
|
621
|
+
"dependencies": [
|
|
622
|
+
"class-variance-authority@^0.7.1"
|
|
623
|
+
],
|
|
624
|
+
"files": [
|
|
625
|
+
{
|
|
626
|
+
"path": "registry/components/pagination.tsx",
|
|
627
|
+
"type": "registry:component",
|
|
628
|
+
"target": "@ui/pagination.tsx"
|
|
629
|
+
}
|
|
630
|
+
]
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
"name": "toolbar",
|
|
634
|
+
"type": "registry:component",
|
|
635
|
+
"title": "Toolbar",
|
|
636
|
+
"description": "Figma Filter Toolbar primitive with eight filter/action styles, search fields, select triggers, icon actions, chips, selected-count badges, desktop/mobile wrapping, and RTL-safe composition.",
|
|
637
|
+
"author": "Ahmad Galal",
|
|
638
|
+
"registryDependencies": [
|
|
639
|
+
"base"
|
|
640
|
+
],
|
|
641
|
+
"dependencies": [
|
|
642
|
+
"@radix-ui/react-slot@^1.2.3",
|
|
643
|
+
"class-variance-authority@^0.7.1",
|
|
644
|
+
"lucide-react@^1.17.0"
|
|
645
|
+
],
|
|
646
|
+
"files": [
|
|
647
|
+
{
|
|
648
|
+
"path": "registry/components/toolbar.tsx",
|
|
649
|
+
"type": "registry:component",
|
|
650
|
+
"target": "@ui/toolbar.tsx"
|
|
651
|
+
}
|
|
652
|
+
]
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
"name": "social-button",
|
|
656
|
+
"type": "registry:component",
|
|
657
|
+
"title": "Social Button",
|
|
658
|
+
"description": "Social sign-in button primitive with Figma-matched platform styles, solid and outlined variants, icon-only mode, native focus-visible styling, and RTL labels.",
|
|
659
|
+
"author": "Ahmad Galal",
|
|
660
|
+
"registryDependencies": [
|
|
661
|
+
"base"
|
|
662
|
+
],
|
|
663
|
+
"dependencies": [
|
|
664
|
+
"@radix-ui/react-slot@^1.2.3",
|
|
665
|
+
"class-variance-authority@^0.7.1"
|
|
666
|
+
],
|
|
667
|
+
"files": [
|
|
668
|
+
{
|
|
669
|
+
"path": "registry/components/social-button.tsx",
|
|
670
|
+
"type": "registry:component",
|
|
671
|
+
"target": "@ui/social-button.tsx"
|
|
672
|
+
}
|
|
673
|
+
]
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
"name": "input",
|
|
677
|
+
"type": "registry:component",
|
|
678
|
+
"title": "Input",
|
|
679
|
+
"description": "Figma-matched input field with labels, helper and error text, add-ons, shortcuts, tags, dropdown/button/quantity adornments, default and soft styles, md/lg sizes, and RTL states.",
|
|
680
|
+
"author": "Ahmad Galal",
|
|
681
|
+
"registryDependencies": [
|
|
682
|
+
"base"
|
|
683
|
+
],
|
|
684
|
+
"dependencies": [
|
|
685
|
+
"class-variance-authority@^0.7.1"
|
|
686
|
+
],
|
|
687
|
+
"files": [
|
|
688
|
+
{
|
|
689
|
+
"path": "registry/components/input-content.ts",
|
|
690
|
+
"type": "registry:component",
|
|
691
|
+
"target": "@ui/input-content.ts"
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
"path": "registry/components/input.tsx",
|
|
695
|
+
"type": "registry:component",
|
|
696
|
+
"target": "@ui/input.tsx"
|
|
697
|
+
}
|
|
698
|
+
]
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
"name": "input-group",
|
|
702
|
+
"type": "registry:component",
|
|
703
|
+
"title": "Input Group",
|
|
704
|
+
"description": "Grouped input shell for protocol add-ons, inline actions, prefixes, suffixes, compact field rows, and RTL-safe native input composition.",
|
|
705
|
+
"author": "Ahmad Galal",
|
|
706
|
+
"registryDependencies": [
|
|
707
|
+
"base",
|
|
708
|
+
"button"
|
|
709
|
+
],
|
|
710
|
+
"dependencies": [
|
|
711
|
+
"@radix-ui/react-slot@^1.2.3",
|
|
712
|
+
"class-variance-authority@^0.7.1"
|
|
713
|
+
],
|
|
714
|
+
"files": [
|
|
715
|
+
{
|
|
716
|
+
"path": "registry/components/input-group.tsx",
|
|
717
|
+
"type": "registry:component",
|
|
718
|
+
"target": "@ui/input-group.tsx"
|
|
719
|
+
}
|
|
720
|
+
]
|
|
721
|
+
},
|
|
722
|
+
{
|
|
723
|
+
"name": "label",
|
|
724
|
+
"type": "registry:component",
|
|
725
|
+
"title": "Label",
|
|
726
|
+
"description": "Radix Label-backed accessible label primitive with required markers, optional text, tone variants, disabled state styling, and RTL-safe copy.",
|
|
727
|
+
"author": "Ahmad Galal",
|
|
728
|
+
"registryDependencies": [
|
|
729
|
+
"base"
|
|
730
|
+
],
|
|
731
|
+
"dependencies": [
|
|
732
|
+
"@radix-ui/react-label@^2.1.11",
|
|
733
|
+
"class-variance-authority@^0.7.1"
|
|
734
|
+
],
|
|
735
|
+
"files": [
|
|
736
|
+
{
|
|
737
|
+
"path": "registry/components/label.tsx",
|
|
738
|
+
"type": "registry:component",
|
|
739
|
+
"target": "@ui/label.tsx"
|
|
740
|
+
}
|
|
741
|
+
]
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
"name": "kbd",
|
|
745
|
+
"type": "registry:component",
|
|
746
|
+
"title": "Kbd",
|
|
747
|
+
"description": "Keyboard hint primitive for shortcuts, command rows, and form help text with tokenized border, soft surface, and body-xs typography.",
|
|
748
|
+
"author": "Ahmad Galal",
|
|
749
|
+
"registryDependencies": [
|
|
750
|
+
"base"
|
|
751
|
+
],
|
|
752
|
+
"dependencies": [
|
|
753
|
+
"class-variance-authority@^0.7.1"
|
|
754
|
+
],
|
|
755
|
+
"files": [
|
|
756
|
+
{
|
|
757
|
+
"path": "registry/components/kbd.tsx",
|
|
758
|
+
"type": "registry:component",
|
|
759
|
+
"target": "@ui/kbd.tsx"
|
|
760
|
+
}
|
|
761
|
+
]
|
|
762
|
+
},
|
|
763
|
+
{
|
|
764
|
+
"name": "field",
|
|
765
|
+
"type": "registry:component",
|
|
766
|
+
"title": "Field",
|
|
767
|
+
"description": "Accessible form field composition with label, control slot, description, error message, grouped fields, fieldsets, validation state, and responsive or horizontal layout.",
|
|
768
|
+
"author": "Ahmad Galal",
|
|
769
|
+
"registryDependencies": [
|
|
770
|
+
"base",
|
|
771
|
+
"label"
|
|
772
|
+
],
|
|
773
|
+
"dependencies": [
|
|
774
|
+
"@radix-ui/react-slot@^1.2.3"
|
|
775
|
+
],
|
|
776
|
+
"files": [
|
|
777
|
+
{
|
|
778
|
+
"path": "registry/components/field.tsx",
|
|
779
|
+
"type": "registry:component",
|
|
780
|
+
"target": "@ui/field.tsx"
|
|
781
|
+
}
|
|
782
|
+
]
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
"name": "input-otp",
|
|
786
|
+
"type": "registry:component",
|
|
787
|
+
"title": "Input Otp",
|
|
788
|
+
"description": "One-time passcode input composed from the Banhaten Input surface, control typography, labels, helper text, tokenized slot gaps, paste handling, grouped slots, masked values, and RTL-aware keyboard navigation.",
|
|
789
|
+
"author": "Ahmad Galal",
|
|
790
|
+
"registryDependencies": [
|
|
791
|
+
"base",
|
|
792
|
+
"input"
|
|
793
|
+
],
|
|
794
|
+
"dependencies": [
|
|
795
|
+
"class-variance-authority@^0.7.1"
|
|
796
|
+
],
|
|
797
|
+
"files": [
|
|
798
|
+
{
|
|
799
|
+
"path": "registry/components/input-otp.tsx",
|
|
800
|
+
"type": "registry:component",
|
|
801
|
+
"target": "@ui/input-otp.tsx"
|
|
802
|
+
}
|
|
803
|
+
]
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
"name": "select",
|
|
807
|
+
"type": "registry:component",
|
|
808
|
+
"title": "Select",
|
|
809
|
+
"description": "Radix Select-backed, Figma-matched select field and menu item primitives with default and soft trigger styles, lg/md sizes, error/filled/disabled states, menu surface, checkbox and check selection, and item media for text, icons, avatars, company, payment, and status dots.",
|
|
810
|
+
"author": "Ahmad Galal",
|
|
811
|
+
"registryDependencies": [
|
|
812
|
+
"base"
|
|
813
|
+
],
|
|
814
|
+
"dependencies": [
|
|
815
|
+
"@radix-ui/react-select@^2.3.0",
|
|
816
|
+
"class-variance-authority@^0.7.1",
|
|
817
|
+
"lucide-react@^1.17.0"
|
|
818
|
+
],
|
|
819
|
+
"files": [
|
|
820
|
+
{
|
|
821
|
+
"path": "registry/components/select-content.tsx",
|
|
822
|
+
"type": "registry:component",
|
|
823
|
+
"target": "@ui/select-content.tsx"
|
|
824
|
+
},
|
|
825
|
+
{
|
|
826
|
+
"path": "registry/components/select.tsx",
|
|
827
|
+
"type": "registry:component",
|
|
828
|
+
"target": "@ui/select.tsx"
|
|
829
|
+
}
|
|
830
|
+
]
|
|
831
|
+
},
|
|
832
|
+
{
|
|
833
|
+
"name": "native-select",
|
|
834
|
+
"type": "registry:component",
|
|
835
|
+
"title": "Native Select",
|
|
836
|
+
"description": "Tokenized native select field for platform forms, mobile fallback, lightweight option sets, validation state, helper text, and RTL layout.",
|
|
837
|
+
"author": "Ahmad Galal",
|
|
838
|
+
"registryDependencies": [
|
|
839
|
+
"base",
|
|
840
|
+
"label"
|
|
841
|
+
],
|
|
842
|
+
"dependencies": [
|
|
843
|
+
"class-variance-authority@^0.7.1",
|
|
844
|
+
"lucide-react@^1.17.0"
|
|
845
|
+
],
|
|
846
|
+
"files": [
|
|
847
|
+
{
|
|
848
|
+
"path": "registry/components/native-select.tsx",
|
|
849
|
+
"type": "registry:component",
|
|
850
|
+
"target": "@ui/native-select.tsx"
|
|
851
|
+
}
|
|
852
|
+
]
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
"name": "sheet",
|
|
856
|
+
"type": "registry:component",
|
|
857
|
+
"title": "Sheet",
|
|
858
|
+
"description": "Radix Dialog-based edge panel with logical start/end placement, top and bottom placement, size variants, overlay, close control, header, body, footer, and RTL-safe layout.",
|
|
859
|
+
"author": "Ahmad Galal",
|
|
860
|
+
"registryDependencies": [
|
|
861
|
+
"base"
|
|
862
|
+
],
|
|
863
|
+
"dependencies": [
|
|
864
|
+
"@radix-ui/react-dialog@^1.1.16",
|
|
865
|
+
"class-variance-authority@^0.7.1",
|
|
866
|
+
"lucide-react@^1.17.0"
|
|
867
|
+
],
|
|
868
|
+
"files": [
|
|
869
|
+
{
|
|
870
|
+
"path": "registry/components/sheet.tsx",
|
|
871
|
+
"type": "registry:component",
|
|
872
|
+
"target": "@ui/sheet.tsx"
|
|
873
|
+
}
|
|
874
|
+
]
|
|
875
|
+
},
|
|
876
|
+
{
|
|
877
|
+
"name": "sidebar",
|
|
878
|
+
"type": "registry:component",
|
|
879
|
+
"title": "Sidebar",
|
|
880
|
+
"description": "Composable app sidebar with controlled or uncontrolled collapse state, grouped menu items, logical start/end placement, RTL mirroring, and generated sidebar tokens.",
|
|
881
|
+
"author": "Ahmad Galal",
|
|
882
|
+
"registryDependencies": [
|
|
883
|
+
"base"
|
|
884
|
+
],
|
|
885
|
+
"dependencies": [
|
|
886
|
+
"@radix-ui/react-slot@^1.2.3",
|
|
887
|
+
"lucide-react@^1.17.0"
|
|
888
|
+
],
|
|
889
|
+
"files": [
|
|
890
|
+
{
|
|
891
|
+
"path": "registry/components/sidebar.tsx",
|
|
892
|
+
"type": "registry:component",
|
|
893
|
+
"target": "@ui/sidebar.tsx"
|
|
894
|
+
}
|
|
895
|
+
]
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
"name": "navigation-menu",
|
|
899
|
+
"type": "registry:component",
|
|
900
|
+
"title": "Navigation Menu",
|
|
901
|
+
"description": "Radix NavigationMenu-backed top navigation with trigger, content, link, viewport, and indicator parts.",
|
|
902
|
+
"author": "Ahmad Galal",
|
|
903
|
+
"registryDependencies": [
|
|
904
|
+
"base"
|
|
905
|
+
],
|
|
906
|
+
"dependencies": [
|
|
907
|
+
"@radix-ui/react-navigation-menu@^1.2.17",
|
|
908
|
+
"lucide-react@^1.17.0"
|
|
909
|
+
],
|
|
910
|
+
"files": [
|
|
911
|
+
{
|
|
912
|
+
"path": "registry/components/navigation-menu.tsx",
|
|
913
|
+
"type": "registry:component",
|
|
914
|
+
"target": "@ui/navigation-menu.tsx"
|
|
915
|
+
}
|
|
916
|
+
]
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
"name": "scroll-area",
|
|
920
|
+
"type": "registry:component",
|
|
921
|
+
"title": "Scroll Area",
|
|
922
|
+
"description": "Radix ScrollArea wrapper with tokenized viewport, scrollbar, thumb, and corner styling for bounded panels and menus.",
|
|
923
|
+
"author": "Ahmad Galal",
|
|
924
|
+
"registryDependencies": [
|
|
925
|
+
"base"
|
|
926
|
+
],
|
|
927
|
+
"dependencies": [
|
|
928
|
+
"@radix-ui/react-scroll-area@^1.2.13"
|
|
929
|
+
],
|
|
930
|
+
"files": [
|
|
931
|
+
{
|
|
932
|
+
"path": "registry/components/scroll-area.tsx",
|
|
933
|
+
"type": "registry:component",
|
|
934
|
+
"target": "@ui/scroll-area.tsx"
|
|
935
|
+
}
|
|
936
|
+
]
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
"name": "resizable",
|
|
940
|
+
"type": "registry:component",
|
|
941
|
+
"title": "Resizable",
|
|
942
|
+
"description": "react-resizable-panels-backed split pane primitive with horizontal and vertical panel groups plus tokenized resize handle.",
|
|
943
|
+
"author": "Ahmad Galal",
|
|
944
|
+
"registryDependencies": [
|
|
945
|
+
"base"
|
|
946
|
+
],
|
|
947
|
+
"dependencies": [
|
|
948
|
+
"lucide-react@^1.17.0",
|
|
949
|
+
"react-resizable-panels@^4.12.1"
|
|
950
|
+
],
|
|
951
|
+
"files": [
|
|
952
|
+
{
|
|
953
|
+
"path": "registry/components/resizable.tsx",
|
|
954
|
+
"type": "registry:component",
|
|
955
|
+
"target": "@ui/resizable.tsx"
|
|
956
|
+
}
|
|
957
|
+
]
|
|
958
|
+
},
|
|
959
|
+
{
|
|
960
|
+
"name": "autocomplete",
|
|
961
|
+
"type": "registry:component",
|
|
962
|
+
"title": "Autocomplete",
|
|
963
|
+
"description": "Composable autocomplete and combobox field built from Banhaten Input, Select menu items, and Tag selections with filtering, single or multiple selection, keyboard navigation, error/disabled states, and RTL-safe layout.",
|
|
964
|
+
"author": "Ahmad Galal",
|
|
965
|
+
"registryDependencies": [
|
|
966
|
+
"base",
|
|
967
|
+
"input",
|
|
968
|
+
"select",
|
|
969
|
+
"tag"
|
|
970
|
+
],
|
|
971
|
+
"dependencies": [
|
|
972
|
+
"lucide-react@^1.17.0"
|
|
973
|
+
],
|
|
974
|
+
"files": [
|
|
975
|
+
{
|
|
976
|
+
"path": "registry/components/autocomplete.tsx",
|
|
977
|
+
"type": "registry:component",
|
|
978
|
+
"target": "@ui/autocomplete.tsx"
|
|
979
|
+
}
|
|
980
|
+
]
|
|
981
|
+
},
|
|
982
|
+
{
|
|
983
|
+
"name": "date-picker",
|
|
984
|
+
"type": "registry:component",
|
|
985
|
+
"title": "Date Picker",
|
|
986
|
+
"description": "Figma-matched Calendar, Range Calendar, Date Picker, and Date Range Picker suite with single, month/year, double calendar, preset list, open/closed, time row, range selection, and RTL use cases.",
|
|
987
|
+
"author": "Ahmad Galal",
|
|
988
|
+
"registryDependencies": [
|
|
989
|
+
"base"
|
|
990
|
+
],
|
|
991
|
+
"dependencies": [
|
|
992
|
+
"class-variance-authority@^0.7.1",
|
|
993
|
+
"lucide-react@^1.17.0"
|
|
994
|
+
],
|
|
995
|
+
"files": [
|
|
996
|
+
{
|
|
997
|
+
"path": "registry/components/date-picker.tsx",
|
|
998
|
+
"type": "registry:component",
|
|
999
|
+
"target": "@ui/date-picker.tsx"
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
"path": "registry/components/date-picker-state.ts",
|
|
1003
|
+
"type": "registry:component",
|
|
1004
|
+
"target": "@ui/date-picker-state.ts"
|
|
1005
|
+
}
|
|
1006
|
+
]
|
|
1007
|
+
},
|
|
1008
|
+
{
|
|
1009
|
+
"name": "slider",
|
|
1010
|
+
"type": "registry:component",
|
|
1011
|
+
"title": "Slider",
|
|
1012
|
+
"description": "Figma-matched accessible range control built on Radix Slider with single and double-node values, text and tooltip indicators, RTL, vertical, disabled, ticked, tone, size, pill, and keyboard-ready states.",
|
|
1013
|
+
"author": "Ahmad Galal",
|
|
1014
|
+
"registryDependencies": [
|
|
1015
|
+
"base"
|
|
1016
|
+
],
|
|
1017
|
+
"dependencies": [
|
|
1018
|
+
"@radix-ui/react-slider@^1.4.0",
|
|
1019
|
+
"class-variance-authority@^0.7.1"
|
|
1020
|
+
],
|
|
1021
|
+
"files": [
|
|
1022
|
+
{
|
|
1023
|
+
"path": "registry/components/slider.tsx",
|
|
1024
|
+
"type": "registry:component",
|
|
1025
|
+
"target": "@ui/slider.tsx"
|
|
1026
|
+
}
|
|
1027
|
+
]
|
|
1028
|
+
},
|
|
1029
|
+
{
|
|
1030
|
+
"name": "progress",
|
|
1031
|
+
"type": "registry:component",
|
|
1032
|
+
"title": "Progress",
|
|
1033
|
+
"description": "Read-only progress meter with Figma-matched value fill, sm/lg track sizes, top/bottom/helper/inline label compositions, tokenized indicator colors, helper text, info icon, spinner, and RTL-safe start anchoring.",
|
|
1034
|
+
"author": "Ahmad Galal",
|
|
1035
|
+
"registryDependencies": [
|
|
1036
|
+
"base"
|
|
1037
|
+
],
|
|
1038
|
+
"dependencies": [
|
|
1039
|
+
"class-variance-authority@^0.7.1",
|
|
1040
|
+
"lucide-react@^1.17.0"
|
|
1041
|
+
],
|
|
1042
|
+
"files": [
|
|
1043
|
+
{
|
|
1044
|
+
"path": "registry/components/progress.tsx",
|
|
1045
|
+
"type": "registry:component",
|
|
1046
|
+
"target": "@ui/progress.tsx"
|
|
1047
|
+
}
|
|
1048
|
+
]
|
|
1049
|
+
},
|
|
1050
|
+
{
|
|
1051
|
+
"name": "progress-slider",
|
|
1052
|
+
"type": "registry:component",
|
|
1053
|
+
"title": "Progress Slider",
|
|
1054
|
+
"description": "Start-anchored progress slider built on Radix Slider where the filled surface grows from the start edge and the grip handle stays on the trailing edge.",
|
|
1055
|
+
"author": "Ahmad Galal",
|
|
1056
|
+
"registryDependencies": [
|
|
1057
|
+
"base"
|
|
1058
|
+
],
|
|
1059
|
+
"dependencies": [
|
|
1060
|
+
"@radix-ui/react-slider@^1.4.0",
|
|
1061
|
+
"class-variance-authority@^0.7.1"
|
|
1062
|
+
],
|
|
1063
|
+
"files": [
|
|
1064
|
+
{
|
|
1065
|
+
"path": "registry/components/progress-slider.tsx",
|
|
1066
|
+
"type": "registry:component",
|
|
1067
|
+
"target": "@ui/progress-slider.tsx"
|
|
1068
|
+
}
|
|
1069
|
+
]
|
|
1070
|
+
},
|
|
1071
|
+
{
|
|
1072
|
+
"name": "textarea",
|
|
1073
|
+
"type": "registry:component",
|
|
1074
|
+
"title": "Textarea",
|
|
1075
|
+
"description": "Figma-matched textarea field with label, helper and error text, default and tags modes, placeholder, filled, disabled, and RTL states.",
|
|
1076
|
+
"author": "Ahmad Galal",
|
|
1077
|
+
"registryDependencies": [
|
|
1078
|
+
"base"
|
|
1079
|
+
],
|
|
1080
|
+
"dependencies": [
|
|
1081
|
+
"class-variance-authority@^0.7.1"
|
|
1082
|
+
],
|
|
1083
|
+
"files": [
|
|
1084
|
+
{
|
|
1085
|
+
"path": "registry/components/textarea.tsx",
|
|
1086
|
+
"type": "registry:component",
|
|
1087
|
+
"target": "@ui/textarea.tsx"
|
|
1088
|
+
}
|
|
1089
|
+
]
|
|
1090
|
+
},
|
|
1091
|
+
{
|
|
1092
|
+
"name": "skeleton",
|
|
1093
|
+
"type": "registry:component",
|
|
1094
|
+
"title": "Skeleton",
|
|
1095
|
+
"description": "Token-built loading placeholder primitive with text, avatar, button, input, card, list, table, and form compositions, shimmer motion, reduced-motion fallback, and RTL-safe direction.",
|
|
1096
|
+
"author": "Ahmad Galal",
|
|
1097
|
+
"registryDependencies": [
|
|
1098
|
+
"base"
|
|
1099
|
+
],
|
|
1100
|
+
"dependencies": [
|
|
1101
|
+
"class-variance-authority@^0.7.1"
|
|
1102
|
+
],
|
|
1103
|
+
"files": [
|
|
1104
|
+
{
|
|
1105
|
+
"path": "registry/components/skeleton.css",
|
|
1106
|
+
"type": "registry:style",
|
|
1107
|
+
"target": "@ui/skeleton.css"
|
|
1108
|
+
},
|
|
1109
|
+
{
|
|
1110
|
+
"path": "registry/components/skeleton.tsx",
|
|
1111
|
+
"type": "registry:component",
|
|
1112
|
+
"target": "@ui/skeleton.tsx"
|
|
1113
|
+
}
|
|
1114
|
+
]
|
|
1115
|
+
},
|
|
1116
|
+
{
|
|
1117
|
+
"name": "spinner",
|
|
1118
|
+
"type": "registry:component",
|
|
1119
|
+
"title": "Spinner",
|
|
1120
|
+
"description": "Small composable loading indicators with a steady Spinner and a smoother variable-arc DynamicSpinner, both inheriting text color and CSS variable sizing.",
|
|
1121
|
+
"author": "Ahmad Galal",
|
|
1122
|
+
"registryDependencies": [
|
|
1123
|
+
"base"
|
|
1124
|
+
],
|
|
1125
|
+
"dependencies": [],
|
|
1126
|
+
"files": [
|
|
1127
|
+
{
|
|
1128
|
+
"path": "registry/components/spinner.tsx",
|
|
1129
|
+
"type": "registry:component",
|
|
1130
|
+
"target": "@ui/spinner.tsx"
|
|
1131
|
+
}
|
|
1132
|
+
]
|
|
1133
|
+
},
|
|
1134
|
+
{
|
|
1135
|
+
"name": "toast",
|
|
1136
|
+
"type": "registry:component",
|
|
1137
|
+
"title": "Toast",
|
|
1138
|
+
"description": "Sonner-style transient feedback primitive with Banhaten token styling, success, danger, warning, info, and default intents, action slot support, and logical RTL placement.",
|
|
1139
|
+
"author": "Ahmad Galal",
|
|
1140
|
+
"registryDependencies": [
|
|
1141
|
+
"base"
|
|
1142
|
+
],
|
|
1143
|
+
"dependencies": [
|
|
1144
|
+
"sonner@^2.0.7"
|
|
1145
|
+
],
|
|
1146
|
+
"files": [
|
|
1147
|
+
{
|
|
1148
|
+
"path": "registry/components/toast.tsx",
|
|
1149
|
+
"type": "registry:component",
|
|
1150
|
+
"target": "@ui/toast.tsx"
|
|
1151
|
+
}
|
|
1152
|
+
]
|
|
1153
|
+
},
|
|
1154
|
+
{
|
|
1155
|
+
"name": "activity-feed",
|
|
1156
|
+
"type": "registry:block",
|
|
1157
|
+
"title": "Activity Feed",
|
|
1158
|
+
"description": "Expanded activity feed composition with avatar indicators, status dots, captions, action buttons, slot rows, timestamps, links, and RTL copy.",
|
|
1159
|
+
"author": "Ahmad Galal",
|
|
1160
|
+
"registryDependencies": [
|
|
1161
|
+
"base",
|
|
1162
|
+
"button"
|
|
1163
|
+
],
|
|
1164
|
+
"dependencies": [],
|
|
1165
|
+
"files": [
|
|
1166
|
+
{
|
|
1167
|
+
"path": "registry/components/expanded/activityFeed.css",
|
|
1168
|
+
"type": "registry:style",
|
|
1169
|
+
"target": "@ui/expanded/activityFeed.css"
|
|
1170
|
+
},
|
|
1171
|
+
{
|
|
1172
|
+
"path": "registry/components/expanded/ActivityFeed.tsx",
|
|
1173
|
+
"type": "registry:component",
|
|
1174
|
+
"target": "@ui/expanded/ActivityFeed.tsx"
|
|
1175
|
+
},
|
|
1176
|
+
{
|
|
1177
|
+
"path": "registry/assets/activity-feed-avatar.png",
|
|
1178
|
+
"type": "registry:file",
|
|
1179
|
+
"target": "@ui/assets/activity-feed-avatar.png"
|
|
1180
|
+
}
|
|
1181
|
+
]
|
|
1182
|
+
},
|
|
1183
|
+
{
|
|
1184
|
+
"name": "alert",
|
|
1185
|
+
"type": "registry:component",
|
|
1186
|
+
"title": "Alert",
|
|
1187
|
+
"description": "Contextual feedback primitive with danger, success, warning, info, neutral, compact, expandable, action, close, and RTL variants.",
|
|
1188
|
+
"author": "Ahmad Galal",
|
|
1189
|
+
"registryDependencies": [
|
|
1190
|
+
"base"
|
|
1191
|
+
],
|
|
1192
|
+
"dependencies": [
|
|
1193
|
+
"class-variance-authority@^0.7.1"
|
|
1194
|
+
],
|
|
1195
|
+
"files": [
|
|
1196
|
+
{
|
|
1197
|
+
"path": "registry/components/alert.tsx",
|
|
1198
|
+
"type": "registry:component",
|
|
1199
|
+
"target": "@ui/alert.tsx"
|
|
1200
|
+
}
|
|
1201
|
+
]
|
|
1202
|
+
},
|
|
1203
|
+
{
|
|
1204
|
+
"name": "banner",
|
|
1205
|
+
"type": "registry:block",
|
|
1206
|
+
"title": "Banner",
|
|
1207
|
+
"description": "Expanded banner system with slim, inline action, single action, input, floating, full-width, brand, grey, brand-light, and RTL variants.",
|
|
1208
|
+
"author": "Ahmad Galal",
|
|
1209
|
+
"registryDependencies": [
|
|
1210
|
+
"base",
|
|
1211
|
+
"button",
|
|
1212
|
+
"input"
|
|
1213
|
+
],
|
|
1214
|
+
"dependencies": [],
|
|
1215
|
+
"files": [
|
|
1216
|
+
{
|
|
1217
|
+
"path": "registry/components/expanded/banner.css",
|
|
1218
|
+
"type": "registry:style",
|
|
1219
|
+
"target": "@ui/expanded/banner.css"
|
|
1220
|
+
},
|
|
1221
|
+
{
|
|
1222
|
+
"path": "registry/components/expanded/Banner.tsx",
|
|
1223
|
+
"type": "registry:component",
|
|
1224
|
+
"target": "@ui/expanded/Banner.tsx"
|
|
1225
|
+
},
|
|
1226
|
+
{
|
|
1227
|
+
"path": "registry/components/expanded/BannerBoard.tsx",
|
|
1228
|
+
"type": "registry:component",
|
|
1229
|
+
"target": "@ui/expanded/BannerBoard.tsx"
|
|
1230
|
+
}
|
|
1231
|
+
]
|
|
1232
|
+
},
|
|
1233
|
+
{
|
|
1234
|
+
"name": "catalog-components",
|
|
1235
|
+
"type": "registry:block",
|
|
1236
|
+
"title": "Catalog Components",
|
|
1237
|
+
"description": "Expanded catalog showcase with breadcrumbs, catalog-only content dividers, catalog tag previews, file upload states, and table previews.",
|
|
1238
|
+
"author": "Ahmad Galal",
|
|
1239
|
+
"registryDependencies": [
|
|
1240
|
+
"base",
|
|
1241
|
+
"button"
|
|
1242
|
+
],
|
|
1243
|
+
"dependencies": [
|
|
1244
|
+
"lucide-react@^1.17.0"
|
|
1245
|
+
],
|
|
1246
|
+
"files": [
|
|
1247
|
+
{
|
|
1248
|
+
"path": "registry/components/expanded/breadcrumbs.css",
|
|
1249
|
+
"type": "registry:style",
|
|
1250
|
+
"target": "@ui/expanded/breadcrumbs.css"
|
|
1251
|
+
},
|
|
1252
|
+
{
|
|
1253
|
+
"path": "registry/components/expanded/Breadcrumbs.tsx",
|
|
1254
|
+
"type": "registry:component",
|
|
1255
|
+
"target": "@ui/expanded/Breadcrumbs.tsx"
|
|
1256
|
+
},
|
|
1257
|
+
{
|
|
1258
|
+
"path": "registry/components/expanded/catalogComponentsShowcase.css",
|
|
1259
|
+
"type": "registry:style",
|
|
1260
|
+
"target": "@ui/expanded/catalogComponentsShowcase.css"
|
|
1261
|
+
},
|
|
1262
|
+
{
|
|
1263
|
+
"path": "registry/components/expanded/CatalogComponentsShowcase.tsx",
|
|
1264
|
+
"type": "registry:component",
|
|
1265
|
+
"target": "@ui/expanded/CatalogComponentsShowcase.tsx"
|
|
1266
|
+
},
|
|
1267
|
+
{
|
|
1268
|
+
"path": "registry/components/expanded/divider.css",
|
|
1269
|
+
"type": "registry:style",
|
|
1270
|
+
"target": "@ui/expanded/divider.css"
|
|
1271
|
+
},
|
|
1272
|
+
{
|
|
1273
|
+
"path": "registry/components/expanded/CatalogDivider.tsx",
|
|
1274
|
+
"type": "registry:component",
|
|
1275
|
+
"target": "@ui/expanded/CatalogDivider.tsx"
|
|
1276
|
+
},
|
|
1277
|
+
{
|
|
1278
|
+
"path": "registry/components/expanded/fileUpload.css",
|
|
1279
|
+
"type": "registry:style",
|
|
1280
|
+
"target": "@ui/expanded/fileUpload.css"
|
|
1281
|
+
},
|
|
1282
|
+
{
|
|
1283
|
+
"path": "registry/components/expanded/FileUpload.tsx",
|
|
1284
|
+
"type": "registry:component",
|
|
1285
|
+
"target": "@ui/expanded/FileUpload.tsx"
|
|
1286
|
+
},
|
|
1287
|
+
{
|
|
1288
|
+
"path": "registry/components/expanded/table.css",
|
|
1289
|
+
"type": "registry:style",
|
|
1290
|
+
"target": "@ui/expanded/table.css"
|
|
1291
|
+
},
|
|
1292
|
+
{
|
|
1293
|
+
"path": "registry/components/expanded/Table.tsx",
|
|
1294
|
+
"type": "registry:component",
|
|
1295
|
+
"target": "@ui/expanded/Table.tsx"
|
|
1296
|
+
},
|
|
1297
|
+
{
|
|
1298
|
+
"path": "registry/components/expanded/tag.css",
|
|
1299
|
+
"type": "registry:style",
|
|
1300
|
+
"target": "@ui/expanded/tag.css"
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
"path": "registry/components/expanded/CatalogTag.tsx",
|
|
1304
|
+
"type": "registry:component",
|
|
1305
|
+
"target": "@ui/expanded/CatalogTag.tsx"
|
|
1306
|
+
}
|
|
1307
|
+
]
|
|
1308
|
+
},
|
|
1309
|
+
{
|
|
1310
|
+
"name": "breadcrumbs",
|
|
1311
|
+
"type": "registry:block",
|
|
1312
|
+
"title": "Breadcrumbs",
|
|
1313
|
+
"description": "Expanded breadcrumbs navigation with default, raised, icon, overflow, separator, and RTL variants.",
|
|
1314
|
+
"author": "Ahmad Galal",
|
|
1315
|
+
"registryDependencies": [
|
|
1316
|
+
"base"
|
|
1317
|
+
],
|
|
1318
|
+
"dependencies": [],
|
|
1319
|
+
"files": [
|
|
1320
|
+
{
|
|
1321
|
+
"path": "registry/components/expanded/breadcrumbs.css",
|
|
1322
|
+
"type": "registry:style",
|
|
1323
|
+
"target": "@ui/expanded/breadcrumbs.css"
|
|
1324
|
+
},
|
|
1325
|
+
{
|
|
1326
|
+
"path": "registry/components/expanded/Breadcrumbs.tsx",
|
|
1327
|
+
"type": "registry:component",
|
|
1328
|
+
"target": "@ui/expanded/Breadcrumbs.tsx"
|
|
1329
|
+
}
|
|
1330
|
+
]
|
|
1331
|
+
},
|
|
1332
|
+
{
|
|
1333
|
+
"name": "file-upload",
|
|
1334
|
+
"type": "registry:block",
|
|
1335
|
+
"title": "File Upload",
|
|
1336
|
+
"description": "Expanded file upload composition with drag-and-drop zones, file rows, upload states, disabled behavior, and RTL direction.",
|
|
1337
|
+
"author": "Ahmad Galal",
|
|
1338
|
+
"registryDependencies": [
|
|
1339
|
+
"base",
|
|
1340
|
+
"button"
|
|
1341
|
+
],
|
|
1342
|
+
"dependencies": [
|
|
1343
|
+
"lucide-react@^1.17.0"
|
|
1344
|
+
],
|
|
1345
|
+
"files": [
|
|
1346
|
+
{
|
|
1347
|
+
"path": "registry/components/expanded/fileUpload.css",
|
|
1348
|
+
"type": "registry:style",
|
|
1349
|
+
"target": "@ui/expanded/fileUpload.css"
|
|
1350
|
+
},
|
|
1351
|
+
{
|
|
1352
|
+
"path": "registry/components/expanded/FileUpload.tsx",
|
|
1353
|
+
"type": "registry:component",
|
|
1354
|
+
"target": "@ui/expanded/FileUpload.tsx"
|
|
1355
|
+
}
|
|
1356
|
+
]
|
|
1357
|
+
},
|
|
1358
|
+
{
|
|
1359
|
+
"name": "table",
|
|
1360
|
+
"type": "registry:block",
|
|
1361
|
+
"title": "Table",
|
|
1362
|
+
"description": "Expanded table and data table composition with selection, stateful sortable headers, search, filters, bulk actions, pagination, empty/loading/error states, status badges, progress cells, actions, row states, and RTL mirroring.",
|
|
1363
|
+
"author": "Ahmad Galal",
|
|
1364
|
+
"registryDependencies": [
|
|
1365
|
+
"base",
|
|
1366
|
+
"toolbar",
|
|
1367
|
+
"pagination",
|
|
1368
|
+
"spinner"
|
|
1369
|
+
],
|
|
1370
|
+
"dependencies": [],
|
|
1371
|
+
"files": [
|
|
1372
|
+
{
|
|
1373
|
+
"path": "registry/components/expanded/table.css",
|
|
1374
|
+
"type": "registry:style",
|
|
1375
|
+
"target": "@ui/expanded/table.css"
|
|
1376
|
+
},
|
|
1377
|
+
{
|
|
1378
|
+
"path": "registry/components/expanded/Table.tsx",
|
|
1379
|
+
"type": "registry:component",
|
|
1380
|
+
"target": "@ui/expanded/Table.tsx"
|
|
1381
|
+
}
|
|
1382
|
+
]
|
|
1383
|
+
},
|
|
1384
|
+
{
|
|
1385
|
+
"name": "command-bar",
|
|
1386
|
+
"type": "registry:block",
|
|
1387
|
+
"title": "Command Bar",
|
|
1388
|
+
"description": "Expanded command bar composition for default, recent, results, and empty command-palette states across desktop, mobile, LTR, and RTL.",
|
|
1389
|
+
"author": "Ahmad Galal",
|
|
1390
|
+
"registryDependencies": [
|
|
1391
|
+
"base",
|
|
1392
|
+
"button"
|
|
1393
|
+
],
|
|
1394
|
+
"dependencies": [
|
|
1395
|
+
"lucide-react@^1.17.0"
|
|
1396
|
+
],
|
|
1397
|
+
"files": [
|
|
1398
|
+
{
|
|
1399
|
+
"path": "registry/components/expanded/commandBar.css",
|
|
1400
|
+
"type": "registry:style",
|
|
1401
|
+
"target": "@ui/expanded/commandBar.css"
|
|
1402
|
+
},
|
|
1403
|
+
{
|
|
1404
|
+
"path": "registry/components/expanded/CommandBar.tsx",
|
|
1405
|
+
"type": "registry:component",
|
|
1406
|
+
"target": "@ui/expanded/CommandBar.tsx"
|
|
1407
|
+
}
|
|
1408
|
+
]
|
|
1409
|
+
},
|
|
1410
|
+
{
|
|
1411
|
+
"name": "empty-state",
|
|
1412
|
+
"type": "registry:block",
|
|
1413
|
+
"title": "Empty State",
|
|
1414
|
+
"description": "Expanded empty and result state composition with neutral icon halo, title, supporting copy, optional Button actions, alignment, compact density, custom icons, and RTL-safe text.",
|
|
1415
|
+
"author": "Ahmad Galal",
|
|
1416
|
+
"registryDependencies": [
|
|
1417
|
+
"base",
|
|
1418
|
+
"button"
|
|
1419
|
+
],
|
|
1420
|
+
"dependencies": [
|
|
1421
|
+
"lucide-react@^1.17.0"
|
|
1422
|
+
],
|
|
1423
|
+
"files": [
|
|
1424
|
+
{
|
|
1425
|
+
"path": "registry/components/expanded/emptyState.css",
|
|
1426
|
+
"type": "registry:style",
|
|
1427
|
+
"target": "@ui/expanded/emptyState.css"
|
|
1428
|
+
},
|
|
1429
|
+
{
|
|
1430
|
+
"path": "registry/components/expanded/EmptyState.tsx",
|
|
1431
|
+
"type": "registry:component",
|
|
1432
|
+
"target": "@ui/expanded/EmptyState.tsx"
|
|
1433
|
+
}
|
|
1434
|
+
]
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
"name": "icons",
|
|
1438
|
+
"type": "registry:block",
|
|
1439
|
+
"title": "Icons",
|
|
1440
|
+
"description": "Expanded icon explorer for open-source icon pack review, semantic mapping, shortlist comparison, and Iconify catalog inspection.",
|
|
1441
|
+
"author": "Ahmad Galal",
|
|
1442
|
+
"registryDependencies": [
|
|
1443
|
+
"base"
|
|
1444
|
+
],
|
|
1445
|
+
"dependencies": [],
|
|
1446
|
+
"files": [
|
|
1447
|
+
{
|
|
1448
|
+
"path": "registry/components/expanded/iconExplorer.css",
|
|
1449
|
+
"type": "registry:style",
|
|
1450
|
+
"target": "@ui/expanded/iconExplorer.css"
|
|
1451
|
+
},
|
|
1452
|
+
{
|
|
1453
|
+
"path": "registry/components/expanded/iconPacks.ts",
|
|
1454
|
+
"type": "registry:component",
|
|
1455
|
+
"target": "@ui/expanded/iconPacks.ts"
|
|
1456
|
+
},
|
|
1457
|
+
{
|
|
1458
|
+
"path": "registry/components/expanded/IconExplorer.tsx",
|
|
1459
|
+
"type": "registry:component",
|
|
1460
|
+
"target": "@ui/expanded/IconExplorer.tsx"
|
|
1461
|
+
}
|
|
1462
|
+
]
|
|
1463
|
+
},
|
|
1464
|
+
{
|
|
1465
|
+
"name": "onboarding-step",
|
|
1466
|
+
"type": "registry:block",
|
|
1467
|
+
"title": "Onboarding Step",
|
|
1468
|
+
"description": "Expanded onboarding step list item with finished, active, and inactive progress states for compact setup flows in LTR and RTL.",
|
|
1469
|
+
"author": "Ahmad Galal",
|
|
1470
|
+
"registryDependencies": [
|
|
1471
|
+
"base"
|
|
1472
|
+
],
|
|
1473
|
+
"dependencies": [],
|
|
1474
|
+
"files": [
|
|
1475
|
+
{
|
|
1476
|
+
"path": "registry/components/expanded/onboardingStepListItem.css",
|
|
1477
|
+
"type": "registry:style",
|
|
1478
|
+
"target": "@ui/expanded/onboardingStepListItem.css"
|
|
1479
|
+
},
|
|
1480
|
+
{
|
|
1481
|
+
"path": "registry/components/expanded/OnboardingStepListItem.tsx",
|
|
1482
|
+
"type": "registry:component",
|
|
1483
|
+
"target": "@ui/expanded/OnboardingStepListItem.tsx"
|
|
1484
|
+
}
|
|
1485
|
+
]
|
|
1486
|
+
},
|
|
1487
|
+
{
|
|
1488
|
+
"name": "page-header",
|
|
1489
|
+
"type": "registry:block",
|
|
1490
|
+
"title": "Page Header",
|
|
1491
|
+
"description": "Expanded page header composition with breadcrumbs, metadata, description copy, action groups, responsive layout, and optional local tabs.",
|
|
1492
|
+
"author": "Ahmad Galal",
|
|
1493
|
+
"registryDependencies": [
|
|
1494
|
+
"base",
|
|
1495
|
+
"tabs"
|
|
1496
|
+
],
|
|
1497
|
+
"dependencies": [],
|
|
1498
|
+
"files": [
|
|
1499
|
+
{
|
|
1500
|
+
"path": "registry/components/expanded/pageHeader.css",
|
|
1501
|
+
"type": "registry:style",
|
|
1502
|
+
"target": "@ui/expanded/pageHeader.css"
|
|
1503
|
+
},
|
|
1504
|
+
{
|
|
1505
|
+
"path": "registry/components/expanded/PageHeader.tsx",
|
|
1506
|
+
"type": "registry:component",
|
|
1507
|
+
"target": "@ui/expanded/PageHeader.tsx"
|
|
1508
|
+
}
|
|
1509
|
+
]
|
|
1510
|
+
},
|
|
1511
|
+
{
|
|
1512
|
+
"name": "slideout",
|
|
1513
|
+
"type": "registry:block",
|
|
1514
|
+
"title": "Slideout",
|
|
1515
|
+
"description": "Expanded slideout panel with desktop and mobile breakpoints, header and footer actions, slotted content, and RTL coverage.",
|
|
1516
|
+
"author": "Ahmad Galal",
|
|
1517
|
+
"registryDependencies": [
|
|
1518
|
+
"base"
|
|
1519
|
+
],
|
|
1520
|
+
"dependencies": [],
|
|
1521
|
+
"files": [
|
|
1522
|
+
{
|
|
1523
|
+
"path": "registry/components/expanded/slideout.css",
|
|
1524
|
+
"type": "registry:style",
|
|
1525
|
+
"target": "@ui/expanded/slideout.css"
|
|
1526
|
+
},
|
|
1527
|
+
{
|
|
1528
|
+
"path": "registry/components/expanded/Slideout.tsx",
|
|
1529
|
+
"type": "registry:component",
|
|
1530
|
+
"target": "@ui/expanded/Slideout.tsx"
|
|
1531
|
+
}
|
|
1532
|
+
]
|
|
1533
|
+
},
|
|
1534
|
+
{
|
|
1535
|
+
"name": "steps",
|
|
1536
|
+
"type": "registry:block",
|
|
1537
|
+
"title": "Steps",
|
|
1538
|
+
"description": "Expanded steps composition with horizontal and vertical progress indicators, icon markers, number markers, item alignment, and RTL layouts.",
|
|
1539
|
+
"author": "Ahmad Galal",
|
|
1540
|
+
"registryDependencies": [
|
|
1541
|
+
"base",
|
|
1542
|
+
"button"
|
|
1543
|
+
],
|
|
1544
|
+
"dependencies": [],
|
|
1545
|
+
"files": [
|
|
1546
|
+
{
|
|
1547
|
+
"path": "registry/components/expanded/steps.css",
|
|
1548
|
+
"type": "registry:style",
|
|
1549
|
+
"target": "@ui/expanded/steps.css"
|
|
1550
|
+
},
|
|
1551
|
+
{
|
|
1552
|
+
"path": "registry/components/expanded/Steps.tsx",
|
|
1553
|
+
"type": "registry:component",
|
|
1554
|
+
"target": "@ui/expanded/Steps.tsx"
|
|
1555
|
+
}
|
|
1556
|
+
]
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
"name": "tabs",
|
|
1560
|
+
"type": "registry:component",
|
|
1561
|
+
"title": "Tabs",
|
|
1562
|
+
"description": "Radix Tabs-backed local navigation primitive with underline, segmented, and rounded treatments across size, width behavior, controlled state, LTR, and RTL.",
|
|
1563
|
+
"author": "Ahmad Galal",
|
|
1564
|
+
"registryDependencies": [
|
|
1565
|
+
"base"
|
|
1566
|
+
],
|
|
1567
|
+
"dependencies": [
|
|
1568
|
+
"@radix-ui/react-tabs@^1.1.16"
|
|
1569
|
+
],
|
|
1570
|
+
"files": [
|
|
1571
|
+
{
|
|
1572
|
+
"path": "registry/components/tabs.css",
|
|
1573
|
+
"type": "registry:style",
|
|
1574
|
+
"target": "@ui/tabs.css"
|
|
1575
|
+
},
|
|
1576
|
+
{
|
|
1577
|
+
"path": "registry/components/tabs.tsx",
|
|
1578
|
+
"type": "registry:component",
|
|
1579
|
+
"target": "@ui/tabs.tsx"
|
|
1580
|
+
}
|
|
1581
|
+
]
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
"name": "timeline",
|
|
1585
|
+
"type": "registry:block",
|
|
1586
|
+
"title": "Timeline",
|
|
1587
|
+
"description": "Expanded timeline composition with vertical and horizontal orientations, dates, captions, active states, finished states, item variants, and RTL layouts.",
|
|
1588
|
+
"author": "Ahmad Galal",
|
|
1589
|
+
"registryDependencies": [
|
|
1590
|
+
"base"
|
|
1591
|
+
],
|
|
1592
|
+
"dependencies": [],
|
|
1593
|
+
"files": [
|
|
1594
|
+
{
|
|
1595
|
+
"path": "registry/components/expanded/timeline.css",
|
|
1596
|
+
"type": "registry:style",
|
|
1597
|
+
"target": "@ui/expanded/timeline.css"
|
|
1598
|
+
},
|
|
1599
|
+
{
|
|
1600
|
+
"path": "registry/components/expanded/Timeline.tsx",
|
|
1601
|
+
"type": "registry:component",
|
|
1602
|
+
"target": "@ui/expanded/Timeline.tsx"
|
|
1603
|
+
},
|
|
1604
|
+
{
|
|
1605
|
+
"path": "registry/components/expanded/TimelineShowcase.tsx",
|
|
1606
|
+
"type": "registry:component",
|
|
1607
|
+
"target": "@ui/expanded/TimelineShowcase.tsx"
|
|
1608
|
+
}
|
|
1609
|
+
]
|
|
1610
|
+
}
|
|
1611
|
+
]
|
|
1612
|
+
}
|