@gv-tech/design-system 2.5.0 → 2.5.2

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.
Files changed (440) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.json +5 -2
  3. package/.agent/skills/dogfood-components/SKILL.md +0 -34
  4. package/.agent/skills/maintain-component/SKILL.md +0 -77
  5. package/.agent/workflows/native-playground.md +0 -93
  6. package/.github/CODEOWNERS +0 -2
  7. package/.github/CONTRIBUTING.md +0 -42
  8. package/.github/FUNDING.yml +0 -4
  9. package/.github/PULL_REQUEST_TEMPLATE/build.md +0 -5
  10. package/.github/PULL_REQUEST_TEMPLATE/standard.md +0 -3
  11. package/.github/RELEASING.md +0 -37
  12. package/.github/copilot-instructions.md +0 -61
  13. package/.github/workflows/ci.yml +0 -91
  14. package/.github/workflows/codeql-analysis.yml +0 -34
  15. package/.github/workflows/release-please.yml +0 -79
  16. package/.husky/pre-commit +0 -1
  17. package/.prettierignore +0 -3
  18. package/.release-please-manifest.json +0 -9
  19. package/.tool-versions +0 -1
  20. package/.vscode/launch.json +0 -22
  21. package/.vscode/mcp.json +0 -8
  22. package/.vscode/settings.json +0 -30
  23. package/.yarnrc.yml +0 -7
  24. package/SECURITY.md +0 -9
  25. package/apps/.gitkeep +0 -0
  26. package/apps/native-playground/CHANGELOG.md +0 -8
  27. package/apps/native-playground/app.json +0 -37
  28. package/apps/native-playground/assets/fonts/.gitkeep +0 -0
  29. package/apps/native-playground/assets/images/adaptive-icon.png +0 -0
  30. package/apps/native-playground/assets/images/favicon.png +0 -0
  31. package/apps/native-playground/assets/images/icon.png +0 -0
  32. package/apps/native-playground/assets/images/splash-icon.png +0 -0
  33. package/apps/native-playground/babel.config.js +0 -6
  34. package/apps/native-playground/eas.json +0 -25
  35. package/apps/native-playground/index.js +0 -8
  36. package/apps/native-playground/metro.config.js +0 -26
  37. package/apps/native-playground/nativewind-env.d.ts +0 -1
  38. package/apps/native-playground/package.json +0 -23
  39. package/apps/native-playground/project.json +0 -15
  40. package/apps/native-playground/src/app/App.tsx +0 -842
  41. package/apps/native-playground/src/global.css +0 -49
  42. package/apps/native-playground/tailwind.config.js +0 -49
  43. package/apps/native-playground/tsconfig.app.json +0 -24
  44. package/apps/native-playground/tsconfig.json +0 -23
  45. package/apps/native-playground/tsconfig.spec.json +0 -24
  46. package/apps/playground-web/CHANGELOG.md +0 -8
  47. package/apps/playground-web/index.html +0 -13
  48. package/apps/playground-web/package.json +0 -31
  49. package/apps/playground-web/public/favicon.png +0 -0
  50. package/apps/playground-web/public/index.demo.html +0 -40
  51. package/apps/playground-web/public/logo192.png +0 -0
  52. package/apps/playground-web/public/logo512.png +0 -0
  53. package/apps/playground-web/public/manifest.json +0 -25
  54. package/apps/playground-web/public/robots.txt +0 -2
  55. package/apps/playground-web/src/App.tsx +0 -179
  56. package/apps/playground-web/src/components/docs/CodeBlock.tsx +0 -34
  57. package/apps/playground-web/src/components/docs/CombinedDocsLayout.tsx +0 -103
  58. package/apps/playground-web/src/components/docs/ComponentShowcase.tsx +0 -96
  59. package/apps/playground-web/src/components/docs/ErrorBoundary.tsx +0 -55
  60. package/apps/playground-web/src/components/docs/Footer.tsx +0 -146
  61. package/apps/playground-web/src/components/docs/PropsTable.tsx +0 -43
  62. package/apps/playground-web/src/components/docs/Search.tsx +0 -75
  63. package/apps/playground-web/src/components/docs/Sidebar.tsx +0 -77
  64. package/apps/playground-web/src/components/docs/ThemeToggle.tsx +0 -19
  65. package/apps/playground-web/src/components/docs/index.ts +0 -9
  66. package/apps/playground-web/src/config/docs.ts +0 -293
  67. package/apps/playground-web/src/globals.css +0 -148
  68. package/apps/playground-web/src/hooks/useDocMetadata.ts +0 -34
  69. package/apps/playground-web/src/hooks/usePackageManager.tsx +0 -42
  70. package/apps/playground-web/src/lib/react-native-shim.js +0 -34
  71. package/apps/playground-web/src/main.tsx +0 -11
  72. package/apps/playground-web/src/pages/index.ts +0 -4
  73. package/apps/playground-web/src/pages/native/AccordionDocs.tsx +0 -85
  74. package/apps/playground-web/src/pages/native/AlertDialogDocs.tsx +0 -128
  75. package/apps/playground-web/src/pages/native/AlertDocs.tsx +0 -89
  76. package/apps/playground-web/src/pages/native/AspectRatioDocs.tsx +0 -52
  77. package/apps/playground-web/src/pages/native/AvatarDocs.tsx +0 -92
  78. package/apps/playground-web/src/pages/native/BadgeDocs.tsx +0 -63
  79. package/apps/playground-web/src/pages/native/BreadcrumbDocs.tsx +0 -71
  80. package/apps/playground-web/src/pages/native/ButtonDocs.tsx +0 -103
  81. package/apps/playground-web/src/pages/native/CalendarDocs.tsx +0 -74
  82. package/apps/playground-web/src/pages/native/CardDocs.tsx +0 -75
  83. package/apps/playground-web/src/pages/native/CarouselDocs.tsx +0 -113
  84. package/apps/playground-web/src/pages/native/ChartDocs.tsx +0 -115
  85. package/apps/playground-web/src/pages/native/CheckboxDocs.tsx +0 -38
  86. package/apps/playground-web/src/pages/native/CollapsibleDocs.tsx +0 -89
  87. package/apps/playground-web/src/pages/native/CommandDocs.tsx +0 -170
  88. package/apps/playground-web/src/pages/native/ContextMenuDocs.tsx +0 -121
  89. package/apps/playground-web/src/pages/native/DialogDocs.tsx +0 -132
  90. package/apps/playground-web/src/pages/native/DrawerDocs.tsx +0 -158
  91. package/apps/playground-web/src/pages/native/DropdownMenuDocs.tsx +0 -168
  92. package/apps/playground-web/src/pages/native/HoverCardDocs.tsx +0 -119
  93. package/apps/playground-web/src/pages/native/InputDocs.tsx +0 -86
  94. package/apps/playground-web/src/pages/native/LabelDocs.tsx +0 -55
  95. package/apps/playground-web/src/pages/native/MenubarDocs.tsx +0 -197
  96. package/apps/playground-web/src/pages/native/NavigationMenuDocs.tsx +0 -190
  97. package/apps/playground-web/src/pages/native/PaginationDocs.tsx +0 -70
  98. package/apps/playground-web/src/pages/native/PopoverDocs.tsx +0 -156
  99. package/apps/playground-web/src/pages/native/ProgressDocs.tsx +0 -61
  100. package/apps/playground-web/src/pages/native/RadioGroupDocs.tsx +0 -125
  101. package/apps/playground-web/src/pages/native/ResizableDocs.tsx +0 -118
  102. package/apps/playground-web/src/pages/native/ScrollAreaDocs.tsx +0 -92
  103. package/apps/playground-web/src/pages/native/SearchDocs.tsx +0 -150
  104. package/apps/playground-web/src/pages/native/SelectDocs.tsx +0 -141
  105. package/apps/playground-web/src/pages/native/SeparatorDocs.tsx +0 -72
  106. package/apps/playground-web/src/pages/native/SheetDocs.tsx +0 -140
  107. package/apps/playground-web/src/pages/native/SkeletonDocs.tsx +0 -44
  108. package/apps/playground-web/src/pages/native/SliderDocs.tsx +0 -118
  109. package/apps/playground-web/src/pages/native/SonnerDocs.tsx +0 -111
  110. package/apps/playground-web/src/pages/native/SwitchDocs.tsx +0 -87
  111. package/apps/playground-web/src/pages/native/TableDocs.tsx +0 -67
  112. package/apps/playground-web/src/pages/native/TabsDocs.tsx +0 -175
  113. package/apps/playground-web/src/pages/native/TextareaDocs.tsx +0 -61
  114. package/apps/playground-web/src/pages/native/ThemeToggleDocs.tsx +0 -288
  115. package/apps/playground-web/src/pages/native/ToastDocs.tsx +0 -124
  116. package/apps/playground-web/src/pages/native/ToggleDocs.tsx +0 -81
  117. package/apps/playground-web/src/pages/native/ToggleGroupDocs.tsx +0 -128
  118. package/apps/playground-web/src/pages/native/TooltipDocs.tsx +0 -140
  119. package/apps/playground-web/src/pages/native/index.ts +0 -47
  120. package/apps/playground-web/src/pages/shared/ColorTokensDocs.tsx +0 -234
  121. package/apps/playground-web/src/pages/shared/GettingStarted.tsx +0 -413
  122. package/apps/playground-web/src/pages/web/AccordionDocs.tsx +0 -194
  123. package/apps/playground-web/src/pages/web/AlertDialogDocs.tsx +0 -157
  124. package/apps/playground-web/src/pages/web/AlertDocs.tsx +0 -110
  125. package/apps/playground-web/src/pages/web/AspectRatioDocs.tsx +0 -94
  126. package/apps/playground-web/src/pages/web/AvatarDocs.tsx +0 -81
  127. package/apps/playground-web/src/pages/web/BadgeDocs.tsx +0 -66
  128. package/apps/playground-web/src/pages/web/BreadcrumbDocs.tsx +0 -93
  129. package/apps/playground-web/src/pages/web/ButtonDocs.tsx +0 -129
  130. package/apps/playground-web/src/pages/web/CalendarDocs.tsx +0 -78
  131. package/apps/playground-web/src/pages/web/CardDocs.tsx +0 -115
  132. package/apps/playground-web/src/pages/web/CarouselDocs.tsx +0 -176
  133. package/apps/playground-web/src/pages/web/ChartDocs.tsx +0 -151
  134. package/apps/playground-web/src/pages/web/CheckboxDocs.tsx +0 -95
  135. package/apps/playground-web/src/pages/web/CollapsibleDocs.tsx +0 -111
  136. package/apps/playground-web/src/pages/web/CommandDocs.tsx +0 -219
  137. package/apps/playground-web/src/pages/web/ContextMenuDocs.tsx +0 -164
  138. package/apps/playground-web/src/pages/web/DialogDocs.tsx +0 -175
  139. package/apps/playground-web/src/pages/web/DrawerDocs.tsx +0 -283
  140. package/apps/playground-web/src/pages/web/DropdownMenuDocs.tsx +0 -319
  141. package/apps/playground-web/src/pages/web/FormDocs.tsx +0 -175
  142. package/apps/playground-web/src/pages/web/HoverCardDocs.tsx +0 -151
  143. package/apps/playground-web/src/pages/web/InputDocs.tsx +0 -118
  144. package/apps/playground-web/src/pages/web/LabelDocs.tsx +0 -59
  145. package/apps/playground-web/src/pages/web/MenubarDocs.tsx +0 -296
  146. package/apps/playground-web/src/pages/web/NavigationMenuDocs.tsx +0 -263
  147. package/apps/playground-web/src/pages/web/PaginationDocs.tsx +0 -102
  148. package/apps/playground-web/src/pages/web/PopoverDocs.tsx +0 -189
  149. package/apps/playground-web/src/pages/web/ProgressDocs.tsx +0 -70
  150. package/apps/playground-web/src/pages/web/RadioGroupDocs.tsx +0 -137
  151. package/apps/playground-web/src/pages/web/ResizableDocs.tsx +0 -143
  152. package/apps/playground-web/src/pages/web/ScrollAreaDocs.tsx +0 -107
  153. package/apps/playground-web/src/pages/web/SearchDocs.tsx +0 -203
  154. package/apps/playground-web/src/pages/web/SelectDocs.tsx +0 -164
  155. package/apps/playground-web/src/pages/web/SeparatorDocs.tsx +0 -88
  156. package/apps/playground-web/src/pages/web/SheetDocs.tsx +0 -186
  157. package/apps/playground-web/src/pages/web/SkeletonDocs.tsx +0 -53
  158. package/apps/playground-web/src/pages/web/SliderDocs.tsx +0 -119
  159. package/apps/playground-web/src/pages/web/SonnerDocs.tsx +0 -126
  160. package/apps/playground-web/src/pages/web/SwitchDocs.tsx +0 -91
  161. package/apps/playground-web/src/pages/web/TableDocs.tsx +0 -148
  162. package/apps/playground-web/src/pages/web/TabsDocs.tsx +0 -241
  163. package/apps/playground-web/src/pages/web/TextareaDocs.tsx +0 -65
  164. package/apps/playground-web/src/pages/web/ThemeToggleDocs.tsx +0 -303
  165. package/apps/playground-web/src/pages/web/ToastDocs.tsx +0 -149
  166. package/apps/playground-web/src/pages/web/ToggleDocs.tsx +0 -85
  167. package/apps/playground-web/src/pages/web/ToggleGroupDocs.tsx +0 -140
  168. package/apps/playground-web/src/pages/web/TooltipDocs.tsx +0 -150
  169. package/apps/playground-web/src/pages/web/index.ts +0 -47
  170. package/apps/playground-web/src/routes/doc-routes.tsx +0 -363
  171. package/apps/playground-web/tailwind.config.js +0 -47
  172. package/apps/playground-web/tsconfig.app.json +0 -16
  173. package/apps/playground-web/tsconfig.json +0 -4
  174. package/apps/playground-web/tsconfig.node.json +0 -13
  175. package/apps/playground-web/vite.config.ts +0 -41
  176. package/components.json +0 -20
  177. package/docs/architecture-pivot.md +0 -165
  178. package/docs/native-setup-decision.md +0 -57
  179. package/docs/phase-1-tracker.md +0 -144
  180. package/docs/release-tooling-evaluation.md +0 -67
  181. package/docs/universal-implementation.md +0 -195
  182. package/docs/update-plan.md +0 -268
  183. package/eslint.config.mjs +0 -13
  184. package/nx.json +0 -50
  185. package/packages/.gitkeep +0 -0
  186. package/packages/design-tokens/CHANGELOG.md +0 -8
  187. package/packages/design-tokens/package.json +0 -20
  188. package/packages/design-tokens/src/index.ts +0 -35
  189. package/packages/design-tokens/src/palette.ts +0 -36
  190. package/packages/design-tokens/src/radii.ts +0 -26
  191. package/packages/design-tokens/src/shadows.ts +0 -16
  192. package/packages/design-tokens/src/spacing.ts +0 -33
  193. package/packages/design-tokens/src/theme.ts +0 -54
  194. package/packages/design-tokens/src/typography.ts +0 -36
  195. package/packages/design-tokens/tsconfig.json +0 -17
  196. package/packages/ui-core/CHANGELOG.md +0 -8
  197. package/packages/ui-core/package.json +0 -40
  198. package/packages/ui-core/src/contracts/accordion.ts +0 -23
  199. package/packages/ui-core/src/contracts/alert-dialog.ts +0 -48
  200. package/packages/ui-core/src/contracts/alert.ts +0 -17
  201. package/packages/ui-core/src/contracts/aspect-ratio.ts +0 -7
  202. package/packages/ui-core/src/contracts/avatar.ts +0 -17
  203. package/packages/ui-core/src/contracts/badge.ts +0 -7
  204. package/packages/ui-core/src/contracts/breadcrumb.ts +0 -37
  205. package/packages/ui-core/src/contracts/button.ts +0 -17
  206. package/packages/ui-core/src/contracts/calendar.ts +0 -4
  207. package/packages/ui-core/src/contracts/card.ts +0 -11
  208. package/packages/ui-core/src/contracts/carousel.ts +0 -29
  209. package/packages/ui-core/src/contracts/chart.ts +0 -31
  210. package/packages/ui-core/src/contracts/checkbox.ts +0 -11
  211. package/packages/ui-core/src/contracts/collapsible.ts +0 -21
  212. package/packages/ui-core/src/contracts/command.ts +0 -43
  213. package/packages/ui-core/src/contracts/context-menu.ts +0 -78
  214. package/packages/ui-core/src/contracts/dialog.ts +0 -29
  215. package/packages/ui-core/src/contracts/drawer.ts +0 -39
  216. package/packages/ui-core/src/contracts/dropdown-menu.ts +0 -87
  217. package/packages/ui-core/src/contracts/form.ts +0 -29
  218. package/packages/ui-core/src/contracts/hover-card.ts +0 -21
  219. package/packages/ui-core/src/contracts/input.ts +0 -11
  220. package/packages/ui-core/src/contracts/label.ts +0 -7
  221. package/packages/ui-core/src/contracts/menubar.ts +0 -86
  222. package/packages/ui-core/src/contracts/navigation-menu.ts +0 -55
  223. package/packages/ui-core/src/contracts/pagination.ts +0 -38
  224. package/packages/ui-core/src/contracts/popover.ts +0 -28
  225. package/packages/ui-core/src/contracts/progress.ts +0 -4
  226. package/packages/ui-core/src/contracts/radio.ts +0 -16
  227. package/packages/ui-core/src/contracts/resizable.ts +0 -36
  228. package/packages/ui-core/src/contracts/scroll-area.ts +0 -15
  229. package/packages/ui-core/src/contracts/search.ts +0 -13
  230. package/packages/ui-core/src/contracts/select.ts +0 -64
  231. package/packages/ui-core/src/contracts/separator.ts +0 -5
  232. package/packages/ui-core/src/contracts/sheet.ts +0 -58
  233. package/packages/ui-core/src/contracts/skeleton.ts +0 -6
  234. package/packages/ui-core/src/contracts/slider.ts +0 -15
  235. package/packages/ui-core/src/contracts/sonner.ts +0 -15
  236. package/packages/ui-core/src/contracts/switch.ts +0 -11
  237. package/packages/ui-core/src/contracts/table.ts +0 -41
  238. package/packages/ui-core/src/contracts/tabs.ts +0 -31
  239. package/packages/ui-core/src/contracts/text.ts +0 -12
  240. package/packages/ui-core/src/contracts/textarea.ts +0 -7
  241. package/packages/ui-core/src/contracts/theme-provider.ts +0 -14
  242. package/packages/ui-core/src/contracts/theme-toggle.ts +0 -15
  243. package/packages/ui-core/src/contracts/toast.ts +0 -15
  244. package/packages/ui-core/src/contracts/toaster.ts +0 -3
  245. package/packages/ui-core/src/contracts/toggle-group.ts +0 -23
  246. package/packages/ui-core/src/contracts/toggle.ts +0 -49
  247. package/packages/ui-core/src/contracts/tooltip.ts +0 -28
  248. package/packages/ui-core/src/index.ts +0 -327
  249. package/packages/ui-core/tsconfig.json +0 -18
  250. package/packages/ui-native/CHANGELOG.md +0 -8
  251. package/packages/ui-native/package.json +0 -76
  252. package/packages/ui-native/src/accordion.tsx +0 -93
  253. package/packages/ui-native/src/alert-dialog.tsx +0 -123
  254. package/packages/ui-native/src/alert.tsx +0 -50
  255. package/packages/ui-native/src/aspect-ratio.tsx +0 -9
  256. package/packages/ui-native/src/avatar.tsx +0 -38
  257. package/packages/ui-native/src/badge.tsx +0 -51
  258. package/packages/ui-native/src/breadcrumb.tsx +0 -9
  259. package/packages/ui-native/src/button.test.tsx +0 -27
  260. package/packages/ui-native/src/button.tsx +0 -75
  261. package/packages/ui-native/src/calendar.tsx +0 -9
  262. package/packages/ui-native/src/card.test.tsx +0 -33
  263. package/packages/ui-native/src/card.tsx +0 -56
  264. package/packages/ui-native/src/carousel.tsx +0 -9
  265. package/packages/ui-native/src/chart.tsx +0 -9
  266. package/packages/ui-native/src/checkbox.test.tsx +0 -58
  267. package/packages/ui-native/src/checkbox.tsx +0 -31
  268. package/packages/ui-native/src/collapsible.test.tsx +0 -50
  269. package/packages/ui-native/src/collapsible.tsx +0 -15
  270. package/packages/ui-native/src/command.tsx +0 -9
  271. package/packages/ui-native/src/context-menu.tsx +0 -9
  272. package/packages/ui-native/src/dialog.test.tsx +0 -91
  273. package/packages/ui-native/src/dialog.tsx +0 -121
  274. package/packages/ui-native/src/drawer.tsx +0 -9
  275. package/packages/ui-native/src/dropdown-menu.tsx +0 -9
  276. package/packages/ui-native/src/form.tsx +0 -9
  277. package/packages/ui-native/src/hover-card.tsx +0 -9
  278. package/packages/ui-native/src/index.ts +0 -209
  279. package/packages/ui-native/src/input.test.tsx +0 -27
  280. package/packages/ui-native/src/input.tsx +0 -27
  281. package/packages/ui-native/src/label.tsx +0 -29
  282. package/packages/ui-native/src/lib/render-native.tsx +0 -17
  283. package/packages/ui-native/src/lib/utils.ts +0 -6
  284. package/packages/ui-native/src/menubar.tsx +0 -9
  285. package/packages/ui-native/src/nativewind-env.d.ts +0 -1
  286. package/packages/ui-native/src/navigation-menu.tsx +0 -9
  287. package/packages/ui-native/src/pagination.tsx +0 -9
  288. package/packages/ui-native/src/popover.tsx +0 -9
  289. package/packages/ui-native/src/progress.tsx +0 -9
  290. package/packages/ui-native/src/radio-group.test.tsx +0 -77
  291. package/packages/ui-native/src/radio-group.tsx +0 -42
  292. package/packages/ui-native/src/resizable.tsx +0 -25
  293. package/packages/ui-native/src/scroll-area.tsx +0 -9
  294. package/packages/ui-native/src/search.tsx +0 -17
  295. package/packages/ui-native/src/select.tsx +0 -229
  296. package/packages/ui-native/src/separator.tsx +0 -20
  297. package/packages/ui-native/src/sheet.test.tsx +0 -93
  298. package/packages/ui-native/src/sheet.tsx +0 -127
  299. package/packages/ui-native/src/skeleton.test.tsx +0 -29
  300. package/packages/ui-native/src/skeleton.tsx +0 -31
  301. package/packages/ui-native/src/slider.tsx +0 -9
  302. package/packages/ui-native/src/sonner.tsx +0 -9
  303. package/packages/ui-native/src/switch.tsx +0 -34
  304. package/packages/ui-native/src/table.tsx +0 -73
  305. package/packages/ui-native/src/tabs.tsx +0 -74
  306. package/packages/ui-native/src/text.test.tsx +0 -24
  307. package/packages/ui-native/src/text.tsx +0 -43
  308. package/packages/ui-native/src/textarea.test.tsx +0 -27
  309. package/packages/ui-native/src/textarea.tsx +0 -29
  310. package/packages/ui-native/src/theme-provider.tsx +0 -6
  311. package/packages/ui-native/src/theme-toggle.tsx +0 -11
  312. package/packages/ui-native/src/toast.test.tsx +0 -61
  313. package/packages/ui-native/src/toast.tsx +0 -88
  314. package/packages/ui-native/src/toaster.tsx +0 -9
  315. package/packages/ui-native/src/toggle-group.tsx +0 -78
  316. package/packages/ui-native/src/toggle.tsx +0 -35
  317. package/packages/ui-native/src/tooltip.tsx +0 -44
  318. package/packages/ui-native/tsconfig.json +0 -23
  319. package/packages/ui-native/vite.config.ts +0 -17
  320. package/packages/ui-web/CHANGELOG.md +0 -8
  321. package/packages/ui-web/package.json +0 -84
  322. package/packages/ui-web/src/accordion.test.tsx +0 -86
  323. package/packages/ui-web/src/accordion.tsx +0 -58
  324. package/packages/ui-web/src/alert-dialog.test.tsx +0 -91
  325. package/packages/ui-web/src/alert-dialog.tsx +0 -121
  326. package/packages/ui-web/src/alert.test.tsx +0 -47
  327. package/packages/ui-web/src/alert.tsx +0 -49
  328. package/packages/ui-web/src/aspect-ratio.test.tsx +0 -34
  329. package/packages/ui-web/src/aspect-ratio.tsx +0 -7
  330. package/packages/ui-web/src/avatar.test.tsx +0 -33
  331. package/packages/ui-web/src/avatar.tsx +0 -40
  332. package/packages/ui-web/src/badge.test.tsx +0 -24
  333. package/packages/ui-web/src/badge.tsx +0 -34
  334. package/packages/ui-web/src/breadcrumb.tsx +0 -105
  335. package/packages/ui-web/src/button.test.tsx +0 -62
  336. package/packages/ui-web/src/button.tsx +0 -47
  337. package/packages/ui-web/src/calendar.test.tsx +0 -23
  338. package/packages/ui-web/src/calendar.tsx +0 -163
  339. package/packages/ui-web/src/card.test.tsx +0 -35
  340. package/packages/ui-web/src/card.tsx +0 -46
  341. package/packages/ui-web/src/carousel.test.tsx +0 -37
  342. package/packages/ui-web/src/carousel.tsx +0 -234
  343. package/packages/ui-web/src/chart.test.tsx +0 -62
  344. package/packages/ui-web/src/chart.tsx +0 -296
  345. package/packages/ui-web/src/checkbox.test.tsx +0 -30
  346. package/packages/ui-web/src/checkbox.tsx +0 -31
  347. package/packages/ui-web/src/collapsible.test.tsx +0 -51
  348. package/packages/ui-web/src/collapsible.tsx +0 -15
  349. package/packages/ui-web/src/command.test.tsx +0 -79
  350. package/packages/ui-web/src/command.tsx +0 -154
  351. package/packages/ui-web/src/context-menu.test.tsx +0 -37
  352. package/packages/ui-web/src/context-menu.tsx +0 -208
  353. package/packages/ui-web/src/dialog.test.tsx +0 -66
  354. package/packages/ui-web/src/dialog.tsx +0 -95
  355. package/packages/ui-web/src/drawer.test.tsx +0 -68
  356. package/packages/ui-web/src/drawer.tsx +0 -110
  357. package/packages/ui-web/src/dropdown-menu.test.tsx +0 -93
  358. package/packages/ui-web/src/dropdown-menu.tsx +0 -212
  359. package/packages/ui-web/src/form.test.tsx +0 -84
  360. package/packages/ui-web/src/form.tsx +0 -160
  361. package/packages/ui-web/src/hooks/use-theme.ts +0 -15
  362. package/packages/ui-web/src/hooks/use-toast.ts +0 -189
  363. package/packages/ui-web/src/hover-card.test.tsx +0 -48
  364. package/packages/ui-web/src/hover-card.tsx +0 -35
  365. package/packages/ui-web/src/index.ts +0 -474
  366. package/packages/ui-web/src/input.test.tsx +0 -33
  367. package/packages/ui-web/src/input.tsx +0 -23
  368. package/packages/ui-web/src/label.test.tsx +0 -27
  369. package/packages/ui-web/src/label.tsx +0 -21
  370. package/packages/ui-web/src/lib/utils.ts +0 -6
  371. package/packages/ui-web/src/menubar.test.tsx +0 -92
  372. package/packages/ui-web/src/menubar.tsx +0 -244
  373. package/packages/ui-web/src/navigation-menu.test.tsx +0 -53
  374. package/packages/ui-web/src/navigation-menu.tsx +0 -143
  375. package/packages/ui-web/src/pagination.test.tsx +0 -57
  376. package/packages/ui-web/src/pagination.tsx +0 -107
  377. package/packages/ui-web/src/popover.test.tsx +0 -31
  378. package/packages/ui-web/src/popover.tsx +0 -45
  379. package/packages/ui-web/src/progress.test.tsx +0 -18
  380. package/packages/ui-web/src/progress.tsx +0 -28
  381. package/packages/ui-web/src/radio-group.test.tsx +0 -39
  382. package/packages/ui-web/src/radio-group.tsx +0 -41
  383. package/packages/ui-web/src/resizable.test.tsx +0 -23
  384. package/packages/ui-web/src/resizable.tsx +0 -59
  385. package/packages/ui-web/src/scroll-area.test.tsx +0 -15
  386. package/packages/ui-web/src/scroll-area.tsx +0 -42
  387. package/packages/ui-web/src/search.test.tsx +0 -81
  388. package/packages/ui-web/src/search.tsx +0 -87
  389. package/packages/ui-web/src/select.test.tsx +0 -42
  390. package/packages/ui-web/src/select.tsx +0 -169
  391. package/packages/ui-web/src/separator.test.tsx +0 -16
  392. package/packages/ui-web/src/separator.tsx +0 -24
  393. package/packages/ui-web/src/setupTests.ts +0 -114
  394. package/packages/ui-web/src/sheet.test.tsx +0 -48
  395. package/packages/ui-web/src/sheet.tsx +0 -136
  396. package/packages/ui-web/src/skeleton.test.tsx +0 -13
  397. package/packages/ui-web/src/skeleton.tsx +0 -10
  398. package/packages/ui-web/src/slider.test.tsx +0 -18
  399. package/packages/ui-web/src/slider.tsx +0 -27
  400. package/packages/ui-web/src/sonner.test.tsx +0 -13
  401. package/packages/ui-web/src/sonner.tsx +0 -32
  402. package/packages/ui-web/src/switch.test.tsx +0 -22
  403. package/packages/ui-web/src/switch.tsx +0 -31
  404. package/packages/ui-web/src/table.test.tsx +0 -29
  405. package/packages/ui-web/src/table.tsx +0 -104
  406. package/packages/ui-web/src/tabs.test.tsx +0 -43
  407. package/packages/ui-web/src/tabs.tsx +0 -62
  408. package/packages/ui-web/src/text.test.tsx +0 -34
  409. package/packages/ui-web/src/text.tsx +0 -55
  410. package/packages/ui-web/src/textarea.test.tsx +0 -21
  411. package/packages/ui-web/src/textarea.tsx +0 -25
  412. package/packages/ui-web/src/theme-provider.tsx +0 -15
  413. package/packages/ui-web/src/theme-toggle.test.tsx +0 -49
  414. package/packages/ui-web/src/theme-toggle.tsx +0 -92
  415. package/packages/ui-web/src/toast.test.tsx +0 -42
  416. package/packages/ui-web/src/toast.tsx +0 -111
  417. package/packages/ui-web/src/toaster.tsx +0 -27
  418. package/packages/ui-web/src/toggle-group.test.tsx +0 -40
  419. package/packages/ui-web/src/toggle-group.tsx +0 -55
  420. package/packages/ui-web/src/toggle.test.tsx +0 -21
  421. package/packages/ui-web/src/toggle.tsx +0 -24
  422. package/packages/ui-web/src/tooltip.tsx +0 -51
  423. package/packages/ui-web/tsconfig.json +0 -24
  424. package/packages/ui-web/vite.config.ts +0 -21
  425. package/postcss.config.mjs +0 -5
  426. package/release-please-config.json +0 -60
  427. package/scripts/build-registry.ts +0 -80
  428. package/scripts/sync-tokens.ts +0 -86
  429. package/scripts/validate.ts +0 -74
  430. package/src/globals.css +0 -146
  431. package/src/index.ts +0 -4
  432. package/src/setupTests.ts +0 -47
  433. package/src/types/nativewind.d.ts +0 -19
  434. package/tailwind.config.js +0 -48
  435. package/tsconfig.build.json +0 -22
  436. package/tsconfig.json +0 -30
  437. package/tsconfig.node.json +0 -11
  438. package/vite.config.ts +0 -106
  439. package/vitest.config.ts +0 -23
  440. package/wrangler.toml +0 -22
@@ -1,842 +0,0 @@
1
- import '../global.css';
2
-
3
- import {
4
- Accordion,
5
- AccordionContent,
6
- AccordionItem,
7
- AccordionTrigger,
8
- Alert,
9
- AlertDescription,
10
- AlertDialog,
11
- AlertDialogAction,
12
- AlertDialogCancel,
13
- AlertDialogContent,
14
- AlertDialogDescription,
15
- AlertDialogFooter,
16
- AlertDialogHeader,
17
- AlertDialogTitle,
18
- AlertDialogTrigger,
19
- AlertTitle,
20
- Avatar,
21
- AvatarFallback,
22
- AvatarImage,
23
- Badge,
24
- Button,
25
- Card,
26
- CardContent,
27
- CardDescription,
28
- CardFooter,
29
- CardHeader,
30
- CardTitle,
31
- Checkbox,
32
- Collapsible,
33
- CollapsibleContent,
34
- CollapsibleTrigger,
35
- Dialog,
36
- DialogContent,
37
- DialogDescription,
38
- DialogFooter,
39
- DialogHeader,
40
- DialogTitle,
41
- DialogTrigger,
42
- Input,
43
- Label,
44
- RadioGroup,
45
- RadioGroupItem,
46
- Select,
47
- SelectContent,
48
- SelectItem,
49
- SelectTrigger,
50
- SelectValue,
51
- Separator,
52
- Sheet,
53
- SheetContent,
54
- SheetDescription,
55
- SheetFooter,
56
- SheetHeader,
57
- SheetTitle,
58
- SheetTrigger,
59
- Skeleton,
60
- Switch,
61
- Table,
62
- TableBody,
63
- TableCaption,
64
- TableCell,
65
- TableHead,
66
- TableHeader,
67
- TableRow,
68
- Tabs,
69
- TabsContent,
70
- TabsList,
71
- TabsTrigger,
72
- Text,
73
- Textarea,
74
- ThemeProvider,
75
- ThemeToggle,
76
- Toggle,
77
- ToggleGroup,
78
- ToggleGroupItem,
79
- Tooltip,
80
- TooltipContent,
81
- TooltipProvider,
82
- TooltipTrigger,
83
- } from '@gv-tech/ui-native';
84
- import { Bell, Bold, Italic, Underline } from 'lucide-react-native';
85
- import * as React from 'react';
86
- import { Alert as RNAlert, ScrollView, View } from 'react-native';
87
-
88
- // ─── Section Header ──────────────────────────────────────────────────────────
89
- function SectionHeader({ title, subtitle }: { title: string; subtitle?: string }) {
90
- return (
91
- <View className="mb-4">
92
- <Text variant="h2" className="font-bold text-foreground">
93
- {title}
94
- </Text>
95
- {subtitle && (
96
- <Text variant="caption" className="text-muted-foreground mt-1">
97
- {subtitle}
98
- </Text>
99
- )}
100
- <Separator className="mt-3" />
101
- </View>
102
- );
103
- }
104
-
105
- // ─── Forms Screen ─────────────────────────────────────────────────────────────
106
- function FormsScreen() {
107
- const [name, setName] = React.useState('');
108
- const [bio, setBio] = React.useState('');
109
- const [checked, setChecked] = React.useState(false);
110
- const [switchOn, setSwitchOn] = React.useState(false);
111
- const [radioValue, setRadioValue] = React.useState('option-one');
112
- const [selectValue, setSelectValue] = React.useState('');
113
- const [toggleActive, setToggleActive] = React.useState(false);
114
- const [toggleGroup, setToggleGroup] = React.useState<string[]>([]);
115
-
116
- return (
117
- <ScrollView className="flex-1 bg-background" contentContainerStyle={{ padding: 16, paddingBottom: 40 }}>
118
- <SectionHeader title="Forms" subtitle="Input, Checkbox, Switch, RadioGroup, Select, Textarea, Toggle" />
119
-
120
- {/* Input */}
121
- <Card className="mb-4">
122
- <CardHeader>
123
- <CardTitle>Input</CardTitle>
124
- <CardDescription>Text input with label</CardDescription>
125
- </CardHeader>
126
- <CardContent className="gap-3">
127
- <View className="gap-2">
128
- <Label nativeID="name-input">Full Name</Label>
129
- <Input placeholder="Enter your name" value={name} onChangeText={setName} aria-labelledby="name-input" />
130
- </View>
131
- {name.length > 0 && (
132
- <Text variant="caption" className="text-muted-foreground">
133
- Hello, {name}!
134
- </Text>
135
- )}
136
- </CardContent>
137
- </Card>
138
-
139
- {/* Textarea */}
140
- <Card className="mb-4">
141
- <CardHeader>
142
- <CardTitle>Textarea</CardTitle>
143
- <CardDescription>Multi-line text input</CardDescription>
144
- </CardHeader>
145
- <CardContent>
146
- <Textarea
147
- placeholder="Tell us about yourself..."
148
- value={bio}
149
- onChangeText={setBio}
150
- numberOfLines={4}
151
- className="min-h-[100px]"
152
- />
153
- <Text variant="caption" className="text-muted-foreground mt-2">
154
- {bio.length} characters
155
- </Text>
156
- </CardContent>
157
- </Card>
158
-
159
- {/* Checkbox & Switch */}
160
- <Card className="mb-4">
161
- <CardHeader>
162
- <CardTitle>Checkbox & Switch</CardTitle>
163
- </CardHeader>
164
- <CardContent className="gap-4">
165
- <View className="flex-row items-center gap-3">
166
- <Checkbox checked={checked} onCheckedChange={setChecked} id="terms" />
167
- <Label onPress={() => setChecked(!checked)}>Accept terms and conditions</Label>
168
- </View>
169
- <View className="flex-row items-center justify-between">
170
- <Label>Email notifications</Label>
171
- <Switch checked={switchOn} onCheckedChange={setSwitchOn} />
172
- </View>
173
- </CardContent>
174
- </Card>
175
-
176
- {/* RadioGroup */}
177
- <Card className="mb-4">
178
- <CardHeader>
179
- <CardTitle>Radio Group</CardTitle>
180
- </CardHeader>
181
- <CardContent>
182
- <RadioGroup value={radioValue} onValueChange={setRadioValue} className="gap-3">
183
- {[
184
- { value: 'option-one', label: 'Option One' },
185
- { value: 'option-two', label: 'Option Two' },
186
- { value: 'option-three', label: 'Option Three' },
187
- ].map((opt) => (
188
- <View key={opt.value} className="flex-row items-center gap-3">
189
- <RadioGroupItem value={opt.value} id={opt.value} />
190
- <Label onPress={() => setRadioValue(opt.value)}>{opt.label}</Label>
191
- </View>
192
- ))}
193
- </RadioGroup>
194
- <Text variant="caption" className="text-muted-foreground mt-3">
195
- Selected: {radioValue}
196
- </Text>
197
- </CardContent>
198
- </Card>
199
-
200
- {/* Select */}
201
- <Card className="mb-4">
202
- <CardHeader>
203
- <CardTitle>Select</CardTitle>
204
- </CardHeader>
205
- <CardContent>
206
- <Select
207
- value={selectValue ? { value: selectValue, label: selectValue } : undefined}
208
- onValueChange={(opt) => setSelectValue(opt?.value ?? '')}
209
- >
210
- <SelectTrigger>
211
- <SelectValue placeholder="Choose a framework…" />
212
- </SelectTrigger>
213
- <SelectContent>
214
- <SelectItem value="react-native" label="React Native" />
215
- <SelectItem value="expo" label="Expo" />
216
- <SelectItem value="flutter" label="Flutter" />
217
- <SelectItem value="swiftui" label="SwiftUI" />
218
- </SelectContent>
219
- </Select>
220
- </CardContent>
221
- </Card>
222
-
223
- {/* Toggle */}
224
- <Card className="mb-4">
225
- <CardHeader>
226
- <CardTitle>Toggle & Toggle Group</CardTitle>
227
- </CardHeader>
228
- <CardContent className="gap-4">
229
- <View className="flex-row items-center gap-3">
230
- <Toggle pressed={toggleActive} onPressedChange={setToggleActive}>
231
- <Bell size={16} className="text-foreground" />
232
- </Toggle>
233
- <Text variant="body" className="text-muted-foreground">
234
- {toggleActive ? 'Notifications on' : 'Notifications off'}
235
- </Text>
236
- </View>
237
- <View>
238
- <Text variant="caption" className="text-muted-foreground mb-2">
239
- Text formatting
240
- </Text>
241
- <ToggleGroup
242
- type="multiple"
243
- value={toggleGroup}
244
- onValueChange={setToggleGroup}
245
- className="justify-start gap-1"
246
- >
247
- <ToggleGroupItem value="bold">
248
- <Bold size={16} className="text-foreground" />
249
- </ToggleGroupItem>
250
- <ToggleGroupItem value="italic">
251
- <Italic size={16} className="text-foreground" />
252
- </ToggleGroupItem>
253
- <ToggleGroupItem value="underline">
254
- <Underline size={16} className="text-foreground" />
255
- </ToggleGroupItem>
256
- </ToggleGroup>
257
- </View>
258
- </CardContent>
259
- </Card>
260
-
261
- {/* Button variants */}
262
- <Card className="mb-4">
263
- <CardHeader>
264
- <CardTitle>Button</CardTitle>
265
- <CardDescription>All variants and sizes</CardDescription>
266
- </CardHeader>
267
- <CardContent className="gap-3">
268
- <View className="flex-row flex-wrap gap-2">
269
- {(['default', 'secondary', 'destructive', 'outline', 'ghost'] as const).map((variant) => (
270
- <Button key={variant} variant={variant} onPress={() => RNAlert.alert('Button', `Pressed: ${variant}`)}>
271
- <Text>{variant.charAt(0).toUpperCase() + variant.slice(1)}</Text>
272
- </Button>
273
- ))}
274
- </View>
275
- <View className="flex-row gap-2">
276
- <Button size="sm" className="flex-1">
277
- <Text>Small</Text>
278
- </Button>
279
- <Button size="default" className="flex-1">
280
- <Text>Default</Text>
281
- </Button>
282
- <Button size="lg" className="flex-1">
283
- <Text>Large</Text>
284
- </Button>
285
- </View>
286
- </CardContent>
287
- </Card>
288
- </ScrollView>
289
- );
290
- }
291
-
292
- // ─── Display Screen ────────────────────────────────────────────────────────────
293
- function DisplayScreen() {
294
- return (
295
- <ScrollView className="flex-1 bg-background" contentContainerStyle={{ padding: 16, paddingBottom: 40 }}>
296
- <SectionHeader title="Data Display" subtitle="Text, Badge, Avatar, Card, Accordion, Table, Skeleton" />
297
-
298
- {/* Typography */}
299
- <Card className="mb-4">
300
- <CardHeader>
301
- <CardTitle>Typography</CardTitle>
302
- </CardHeader>
303
- <CardContent className="gap-2">
304
- {(['h1', 'h2', 'h3', 'h4', 'body', 'caption'] as const).map((variant) => (
305
- <Text key={variant} variant={variant} className="text-foreground">
306
- {variant.toUpperCase()} — The quick brown fox
307
- </Text>
308
- ))}
309
- </CardContent>
310
- </Card>
311
-
312
- {/* Badges */}
313
- <Card className="mb-4">
314
- <CardHeader>
315
- <CardTitle>Badge</CardTitle>
316
- </CardHeader>
317
- <CardContent>
318
- <View className="flex-row flex-wrap gap-2">
319
- {(['default', 'secondary', 'destructive', 'outline'] as const).map((variant) => (
320
- <Badge key={variant} variant={variant}>
321
- <Text>{variant}</Text>
322
- </Badge>
323
- ))}
324
- </View>
325
- </CardContent>
326
- </Card>
327
-
328
- {/* Avatar */}
329
- <Card className="mb-4">
330
- <CardHeader>
331
- <CardTitle>Avatar</CardTitle>
332
- </CardHeader>
333
- <CardContent>
334
- <View className="flex-row gap-3 items-center">
335
- <Avatar alt="GV Tech">
336
- <AvatarImage source={{ uri: 'https://github.com/eng618.png' }} />
337
- <AvatarFallback>
338
- <Text>GV</Text>
339
- </AvatarFallback>
340
- </Avatar>
341
- <Avatar alt="Fallback">
342
- <AvatarImage source={{ uri: 'https://invalid-url-to-show-fallback' }} />
343
- <AvatarFallback>
344
- <Text>FB</Text>
345
- </AvatarFallback>
346
- </Avatar>
347
- <View className="gap-1">
348
- <Text variant="body" className="font-semibold text-foreground">
349
- Eric Garcia
350
- </Text>
351
- <Text variant="caption" className="text-muted-foreground">
352
- @eng618
353
- </Text>
354
- </View>
355
- </View>
356
- </CardContent>
357
- </Card>
358
-
359
- {/* Accordion */}
360
- <Card className="mb-4">
361
- <CardHeader>
362
- <CardTitle>Accordion</CardTitle>
363
- </CardHeader>
364
- <CardContent>
365
- <Accordion type="single" collapsible defaultValue="item-1">
366
- <AccordionItem value="item-1">
367
- <AccordionTrigger>
368
- <Text className="text-foreground font-medium">Is it accessible?</Text>
369
- </AccordionTrigger>
370
- <AccordionContent>
371
- <Text className="text-muted-foreground">
372
- Yes. It follows the WAI-ARIA design pattern and uses rn-primitives for native accessibility.
373
- </Text>
374
- </AccordionContent>
375
- </AccordionItem>
376
- <AccordionItem value="item-2">
377
- <AccordionTrigger>
378
- <Text className="text-foreground font-medium">Is it animated?</Text>
379
- </AccordionTrigger>
380
- <AccordionContent>
381
- <Text className="text-muted-foreground">
382
- Yes. Uses react-native-reanimated for smooth height and chevron animations.
383
- </Text>
384
- </AccordionContent>
385
- </AccordionItem>
386
- <AccordionItem value="item-3">
387
- <AccordionTrigger>
388
- <Text className="text-foreground font-medium">Can I customize it?</Text>
389
- </AccordionTrigger>
390
- <AccordionContent>
391
- <Text className="text-muted-foreground">
392
- Absolutely. Use className and NativeWind to apply any styles.
393
- </Text>
394
- </AccordionContent>
395
- </AccordionItem>
396
- </Accordion>
397
- </CardContent>
398
- </Card>
399
-
400
- {/* Table */}
401
- <Card className="mb-4">
402
- <CardHeader>
403
- <CardTitle>Table</CardTitle>
404
- </CardHeader>
405
- <CardContent className="p-0 overflow-hidden">
406
- <Table>
407
- <TableCaption>GV Tech Component Status</TableCaption>
408
- <TableHeader>
409
- <TableRow>
410
- <TableHead>Component</TableHead>
411
- <TableHead>Web</TableHead>
412
- <TableHead>Native</TableHead>
413
- </TableRow>
414
- </TableHeader>
415
- <TableBody>
416
- {[
417
- { name: 'Button', web: '✅', native: '✅' },
418
- { name: 'Card', web: '✅', native: '✅' },
419
- { name: 'Input', web: '✅', native: '✅' },
420
- { name: 'Dialog', web: '✅', native: '✅' },
421
- { name: 'Carousel', web: '✅', native: '🚫' },
422
- ].map((row) => (
423
- <TableRow key={row.name}>
424
- <TableCell>
425
- <Text className="text-foreground">{row.name}</Text>
426
- </TableCell>
427
- <TableCell>
428
- <Text>{row.web}</Text>
429
- </TableCell>
430
- <TableCell>
431
- <Text>{row.native}</Text>
432
- </TableCell>
433
- </TableRow>
434
- ))}
435
- </TableBody>
436
- </Table>
437
- </CardContent>
438
- </Card>
439
-
440
- {/* Skeleton */}
441
- <Card className="mb-4">
442
- <CardHeader>
443
- <CardTitle>Skeleton</CardTitle>
444
- <CardDescription>Animated loading placeholders</CardDescription>
445
- </CardHeader>
446
- <CardContent className="gap-3">
447
- <View className="flex-row items-center gap-4">
448
- <Skeleton className="h-12 w-12 rounded-full" />
449
- <View className="gap-2 flex-1">
450
- <Skeleton className="h-4 w-[80%]" />
451
- <Skeleton className="h-4 w-[60%]" />
452
- </View>
453
- </View>
454
- <Skeleton className="h-24 w-full rounded-lg" />
455
- </CardContent>
456
- </Card>
457
-
458
- {/* Tabs */}
459
- <Card className="mb-4">
460
- <CardHeader>
461
- <CardTitle>Tabs</CardTitle>
462
- </CardHeader>
463
- <CardContent>
464
- <Tabs defaultValue="account">
465
- <TabsList className="flex-row w-full">
466
- <TabsTrigger value="account" className="flex-1">
467
- <Text>Account</Text>
468
- </TabsTrigger>
469
- <TabsTrigger value="password" className="flex-1">
470
- <Text>Password</Text>
471
- </TabsTrigger>
472
- </TabsList>
473
- <TabsContent value="account" className="mt-4">
474
- <Text className="text-muted-foreground">
475
- Update your account settings here. Changes take effect immediately.
476
- </Text>
477
- </TabsContent>
478
- <TabsContent value="password" className="mt-4">
479
- <Text className="text-muted-foreground">
480
- Change your password here. You'll be logged out after saving.
481
- </Text>
482
- </TabsContent>
483
- </Tabs>
484
- </CardContent>
485
- </Card>
486
- </ScrollView>
487
- );
488
- }
489
-
490
- // ─── Feedback Screen ───────────────────────────────────────────────────────────
491
- function FeedbackScreen() {
492
- return (
493
- <ScrollView className="flex-1 bg-background" contentContainerStyle={{ padding: 16, paddingBottom: 40 }}>
494
- <SectionHeader title="Feedback" subtitle="Alert, AlertDialog, Dialog, Sheet, Tooltip, Toast, Collapsible" />
495
-
496
- {/* Alert variants */}
497
- <Card className="mb-4">
498
- <CardHeader>
499
- <CardTitle>Alert</CardTitle>
500
- </CardHeader>
501
- <CardContent className="gap-3">
502
- <Alert>
503
- <AlertTitle>Default Alert</AlertTitle>
504
- <AlertDescription>This is a default informational alert message.</AlertDescription>
505
- </Alert>
506
- <Alert variant="destructive">
507
- <AlertTitle>Destructive Alert</AlertTitle>
508
- <AlertDescription>Something went wrong. Please try again.</AlertDescription>
509
- </Alert>
510
- <Alert variant="warning">
511
- <AlertTitle>Warning</AlertTitle>
512
- <AlertDescription>Your session expires in 5 minutes.</AlertDescription>
513
- </Alert>
514
- <Alert variant="info">
515
- <AlertTitle>Info</AlertTitle>
516
- <AlertDescription>A new version is available. Update now.</AlertDescription>
517
- </Alert>
518
- </CardContent>
519
- </Card>
520
-
521
- {/* AlertDialog */}
522
- <Card className="mb-4">
523
- <CardHeader>
524
- <CardTitle>Alert Dialog</CardTitle>
525
- <CardDescription>A modal that requires a response</CardDescription>
526
- </CardHeader>
527
- <CardContent>
528
- <AlertDialog>
529
- <AlertDialogTrigger asChild>
530
- <Button variant="destructive">
531
- <Text>Delete Account</Text>
532
- </Button>
533
- </AlertDialogTrigger>
534
- <AlertDialogContent>
535
- <AlertDialogHeader>
536
- <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>
537
- <AlertDialogDescription>
538
- This action cannot be undone. This will permanently delete your account and remove all your data.
539
- </AlertDialogDescription>
540
- </AlertDialogHeader>
541
- <AlertDialogFooter>
542
- <AlertDialogCancel>
543
- <Text>Cancel</Text>
544
- </AlertDialogCancel>
545
- <AlertDialogAction>
546
- <Text>Continue</Text>
547
- </AlertDialogAction>
548
- </AlertDialogFooter>
549
- </AlertDialogContent>
550
- </AlertDialog>
551
- </CardContent>
552
- </Card>
553
-
554
- {/* Dialog */}
555
- <Card className="mb-4">
556
- <CardHeader>
557
- <CardTitle>Dialog</CardTitle>
558
- <CardDescription>Standard modal dialog</CardDescription>
559
- </CardHeader>
560
- <CardContent>
561
- <Dialog>
562
- <DialogTrigger asChild>
563
- <Button variant="outline">
564
- <Text>Open Dialog</Text>
565
- </Button>
566
- </DialogTrigger>
567
- <DialogContent>
568
- <DialogHeader>
569
- <DialogTitle>Edit Profile</DialogTitle>
570
- <DialogDescription>Make changes to your profile here. Click save when done.</DialogDescription>
571
- </DialogHeader>
572
- <View className="gap-3 py-2">
573
- <View className="gap-2">
574
- <Label nativeID="dialog-name">Name</Label>
575
- <Input placeholder="Your name" aria-labelledby="dialog-name" />
576
- </View>
577
- </View>
578
- <DialogFooter>
579
- <Button>
580
- <Text>Save changes</Text>
581
- </Button>
582
- </DialogFooter>
583
- </DialogContent>
584
- </Dialog>
585
- </CardContent>
586
- </Card>
587
-
588
- {/* Sheet */}
589
- <Card className="mb-4">
590
- <CardHeader>
591
- <CardTitle>Sheet</CardTitle>
592
- <CardDescription>Slides in from the side</CardDescription>
593
- </CardHeader>
594
- <CardContent className="flex-row gap-2 flex-wrap">
595
- {(['bottom', 'right', 'left'] as const).map((side) => (
596
- <Sheet key={side}>
597
- <SheetTrigger asChild>
598
- <Button variant="outline" size="sm">
599
- <Text className="capitalize">{side}</Text>
600
- </Button>
601
- </SheetTrigger>
602
- <SheetContent side={side}>
603
- <SheetHeader>
604
- <SheetTitle>Sheet ({side})</SheetTitle>
605
- <SheetDescription>This sheet slides in from the {side}.</SheetDescription>
606
- </SheetHeader>
607
- <View className="flex-1 py-4">
608
- <Text className="text-muted-foreground">Add your content here.</Text>
609
- </View>
610
- <SheetFooter>
611
- <Button>
612
- <Text>Save</Text>
613
- </Button>
614
- </SheetFooter>
615
- </SheetContent>
616
- </Sheet>
617
- ))}
618
- </CardContent>
619
- </Card>
620
-
621
- {/* Tooltip */}
622
- <Card className="mb-4">
623
- <CardHeader>
624
- <CardTitle>Tooltip</CardTitle>
625
- <CardDescription>Long-press to reveal</CardDescription>
626
- </CardHeader>
627
- <CardContent className="flex-row gap-3 flex-wrap">
628
- <TooltipProvider>
629
- <Tooltip>
630
- <TooltipTrigger asChild>
631
- <Button variant="outline" size="sm">
632
- <Text>Hover me</Text>
633
- </Button>
634
- </TooltipTrigger>
635
- <TooltipContent>
636
- <Text>Long-press on native to see this tooltip</Text>
637
- </TooltipContent>
638
- </Tooltip>
639
- </TooltipProvider>
640
- </CardContent>
641
- </Card>
642
-
643
- {/* Collapsible */}
644
- <Card className="mb-4">
645
- <CardHeader>
646
- <CardTitle>Collapsible</CardTitle>
647
- </CardHeader>
648
- <CardContent>
649
- <Collapsible>
650
- <CollapsibleTrigger asChild>
651
- <Button variant="outline" className="w-full">
652
- <Text>Toggle content</Text>
653
- </Button>
654
- </CollapsibleTrigger>
655
- <CollapsibleContent>
656
- <View className="mt-3 gap-2">
657
- <Text className="text-muted-foreground text-sm">
658
- This content is revealed when the collapsible is open. It can contain any child components.
659
- </Text>
660
- </View>
661
- </CollapsibleContent>
662
- </Collapsible>
663
- </CardContent>
664
- </Card>
665
- </ScrollView>
666
- );
667
- }
668
-
669
- // ─── Layout Screen ─────────────────────────────────────────────────────────────
670
- function LayoutScreen() {
671
- return (
672
- <ScrollView className="flex-1 bg-background" contentContainerStyle={{ padding: 16, paddingBottom: 40 }}>
673
- <SectionHeader title="Layout & Theme" subtitle="Card, Separator, ThemeToggle" />
674
-
675
- {/* Theme Toggle */}
676
- <Card className="mb-4">
677
- <CardHeader>
678
- <CardTitle>Theme Toggle</CardTitle>
679
- <CardDescription>Switch between light, dark, and system</CardDescription>
680
- </CardHeader>
681
- <CardContent className="flex-row items-center justify-between">
682
- <Text className="text-foreground">Current theme</Text>
683
- <ThemeToggle />
684
- </CardContent>
685
- </Card>
686
-
687
- {/* Card Variants */}
688
- <Card className="mb-4">
689
- <CardHeader>
690
- <CardTitle>Card</CardTitle>
691
- <CardDescription>Full card with header, content, and footer</CardDescription>
692
- </CardHeader>
693
- <CardContent>
694
- <Text className="text-muted-foreground text-sm">
695
- Cards are the primary surface for grouping related content. They support header, content, description, and
696
- footer sub-components.
697
- </Text>
698
- </CardContent>
699
- <CardFooter className="flex-row gap-3">
700
- <Button variant="outline" className="flex-1">
701
- <Text>Cancel</Text>
702
- </Button>
703
- <Button className="flex-1">
704
- <Text>Confirm</Text>
705
- </Button>
706
- </CardFooter>
707
- </Card>
708
-
709
- {/* Separator */}
710
- <Card className="mb-4">
711
- <CardHeader>
712
- <CardTitle>Separator</CardTitle>
713
- </CardHeader>
714
- <CardContent className="gap-3">
715
- <Text className="text-foreground">Above separator</Text>
716
- <Separator />
717
- <Text className="text-foreground">Below separator</Text>
718
- <View className="flex-row items-center gap-3">
719
- <Text className="text-muted-foreground">Left</Text>
720
- <Separator orientation="vertical" className="h-4" />
721
- <Text className="text-muted-foreground">Center</Text>
722
- <Separator orientation="vertical" className="h-4" />
723
- <Text className="text-muted-foreground">Right</Text>
724
- </View>
725
- </CardContent>
726
- </Card>
727
-
728
- {/* Component Count */}
729
- <Card className="mb-4 bg-primary/5">
730
- <CardContent className="pt-6">
731
- <View className="items-center gap-3">
732
- <Text variant="h1" className="text-primary font-bold text-center">
733
- 27+
734
- </Text>
735
- <Text variant="body" className="text-center text-foreground font-medium">
736
- Real Native Components
737
- </Text>
738
- <Text variant="caption" className="text-center text-muted-foreground">
739
- All built with NativeWind + RN Primitives + Reanimated, sharing contracts with the web library.
740
- </Text>
741
- <View className="flex-row gap-2 flex-wrap justify-center mt-2">
742
- {[
743
- 'Button',
744
- 'Card',
745
- 'Input',
746
- 'Checkbox',
747
- 'Switch',
748
- 'RadioGroup',
749
- 'Select',
750
- 'Tabs',
751
- 'Accordion',
752
- 'Alert',
753
- 'Dialog',
754
- 'Sheet',
755
- 'Toast',
756
- 'Tooltip',
757
- 'Badge',
758
- 'Avatar',
759
- 'Skeleton',
760
- 'Table',
761
- 'Text',
762
- 'Textarea',
763
- 'Toggle',
764
- 'ToggleGroup',
765
- 'Separator',
766
- 'Collapsible',
767
- 'Label',
768
- 'AlertDialog',
769
- 'ThemeToggle',
770
- ].map((name) => (
771
- <Badge key={name} variant="secondary">
772
- <Text className="text-xs">{name}</Text>
773
- </Badge>
774
- ))}
775
- </View>
776
- </View>
777
- </CardContent>
778
- </Card>
779
- </ScrollView>
780
- );
781
- }
782
-
783
- // ─── Root App ─────────────────────────────────────────────────────────────────
784
- export const App = () => {
785
- return (
786
- <ThemeProvider>
787
- <TooltipProvider>
788
- <View className="flex-1 bg-background">
789
- {/* Header */}
790
- <View className="pt-12 pb-3 px-4 border-b border-border bg-background">
791
- <View className="flex-row items-center justify-between">
792
- <View className="flex-row items-center gap-2">
793
- <Text variant="h3" className="font-bold text-foreground">
794
- GV Native
795
- </Text>
796
- <Badge variant="outline">
797
- <Text className="text-xs">Alpha</Text>
798
- </Badge>
799
- </View>
800
- <ThemeToggle />
801
- </View>
802
- <Text variant="caption" className="text-muted-foreground mt-1">
803
- Component showcase for @gv-tech/ui-native
804
- </Text>
805
- </View>
806
-
807
- {/* Main Tabs */}
808
- <Tabs defaultValue="forms" className="flex-1">
809
- <View className="border-b border-border bg-background px-4">
810
- <TabsList className="flex-row bg-transparent p-0 h-12">
811
- {(['forms', 'display', 'feedback', 'layout'] as const).map((tab) => (
812
- <TabsTrigger
813
- key={tab}
814
- value={tab}
815
- className="flex-1 capitalize rounded-none border-b-2 border-transparent data-[state=active]:border-primary bg-transparent"
816
- >
817
- <Text className="capitalize text-sm">{tab}</Text>
818
- </TabsTrigger>
819
- ))}
820
- </TabsList>
821
- </View>
822
-
823
- <TabsContent value="forms" className="flex-1 mt-0">
824
- <FormsScreen />
825
- </TabsContent>
826
- <TabsContent value="display" className="flex-1 mt-0">
827
- <DisplayScreen />
828
- </TabsContent>
829
- <TabsContent value="feedback" className="flex-1 mt-0">
830
- <FeedbackScreen />
831
- </TabsContent>
832
- <TabsContent value="layout" className="flex-1 mt-0">
833
- <LayoutScreen />
834
- </TabsContent>
835
- </Tabs>
836
- </View>
837
- </TooltipProvider>
838
- </ThemeProvider>
839
- );
840
- };
841
-
842
- export default App;