@object-ui/components 0.3.1 → 0.5.0

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 (299) hide show
  1. package/.turbo/turbo-build.log +47 -0
  2. package/README.md +13 -0
  3. package/dist/index.css +1 -1
  4. package/dist/index.js +34610 -24854
  5. package/dist/index.umd.cjs +53 -32
  6. package/dist/src/SchemaRenderer.d.ts +3 -0
  7. package/dist/src/{ui → custom}/button-group.d.ts +1 -1
  8. package/dist/src/custom/field.d.ts +19 -0
  9. package/dist/src/custom/index.d.ts +12 -0
  10. package/dist/src/custom/input-group.d.ts +14 -0
  11. package/dist/src/{ui → custom}/item.d.ts +1 -1
  12. package/dist/src/custom/native-select.d.ts +12 -0
  13. package/dist/src/custom/sort-builder.d.ts +22 -0
  14. package/dist/src/index.d.ts +1 -0
  15. package/dist/src/renderers/data-display/table.d.ts +1 -1
  16. package/dist/src/renderers/layout/page.d.ts +1 -1
  17. package/dist/src/renderers/placeholders.d.ts +1 -1
  18. package/dist/src/ui/accordion.d.ts +4 -4
  19. package/dist/src/ui/alert-dialog.d.ts +17 -11
  20. package/dist/src/ui/alert.d.ts +4 -5
  21. package/dist/src/ui/aspect-ratio.d.ts +1 -1
  22. package/dist/src/ui/avatar.d.ts +3 -3
  23. package/dist/src/ui/badge.d.ts +3 -3
  24. package/dist/src/ui/breadcrumb.d.ts +16 -8
  25. package/dist/src/ui/calendar.d.ts +7 -7
  26. package/dist/src/ui/card.d.ts +7 -8
  27. package/dist/src/ui/carousel.d.ts +5 -6
  28. package/dist/src/ui/chart.d.ts +62 -0
  29. package/dist/src/ui/checkbox.d.ts +1 -1
  30. package/dist/src/ui/collapsible.d.ts +3 -3
  31. package/dist/src/ui/command.d.ts +78 -16
  32. package/dist/src/ui/context-menu.d.ts +14 -12
  33. package/dist/src/ui/dialog.d.ts +17 -13
  34. package/dist/src/ui/drawer.d.ts +19 -10
  35. package/dist/src/ui/dropdown-menu.d.ts +20 -18
  36. package/dist/src/ui/form.d.ts +6 -7
  37. package/dist/src/ui/hover-card.d.ts +3 -3
  38. package/dist/src/ui/index.d.ts +2 -8
  39. package/dist/src/ui/input-otp.d.ts +30 -7
  40. package/dist/src/ui/label.d.ts +2 -1
  41. package/dist/src/ui/menubar.d.ts +19 -17
  42. package/dist/src/ui/navigation-menu.d.ts +9 -11
  43. package/dist/src/ui/pagination.d.ts +25 -10
  44. package/dist/src/ui/popover.d.ts +4 -5
  45. package/dist/src/ui/progress.d.ts +1 -1
  46. package/dist/src/ui/radio-group.d.ts +2 -2
  47. package/dist/src/ui/resizable.d.ts +5 -8
  48. package/dist/src/ui/scroll-area.d.ts +2 -2
  49. package/dist/src/ui/select.d.ts +11 -13
  50. package/dist/src/ui/sheet.d.ts +23 -11
  51. package/dist/src/ui/sidebar.d.ts +27 -29
  52. package/dist/src/ui/skeleton.d.ts +1 -1
  53. package/dist/src/ui/slider.d.ts +1 -1
  54. package/dist/src/ui/sonner.d.ts +2 -1
  55. package/dist/src/ui/switch.d.ts +2 -2
  56. package/dist/src/ui/tabs.d.ts +1 -1
  57. package/dist/src/ui/textarea.d.ts +1 -1
  58. package/dist/src/ui/toast.d.ts +22 -0
  59. package/dist/src/ui/toggle-group.d.ts +8 -3
  60. package/dist/src/ui/toggle.d.ts +4 -1
  61. package/dist/src/ui/tooltip.d.ts +4 -4
  62. package/dist/src/ui/typography.d.ts +21 -0
  63. package/package.json +17 -7
  64. package/shadcn-components.json +52 -47
  65. package/src/SchemaRenderer.tsx +28 -0
  66. package/src/__tests__/PageRendererRegions.test.tsx +59 -0
  67. package/src/__tests__/Registry.test.ts +21 -0
  68. package/src/__tests__/basic-renderers.test.tsx +1 -1
  69. package/src/__tests__/complex-disclosure-renderers.test.tsx +3 -2
  70. package/src/__tests__/feedback-overlay-renderers.test.tsx +1 -1
  71. package/src/__tests__/form-renderers.test.tsx +1 -1
  72. package/src/__tests__/layout-data-renderers.test.tsx +1 -1
  73. package/src/{ui → custom}/button-group.tsx +1 -1
  74. package/src/{ui → custom}/combobox.tsx +3 -3
  75. package/src/{ui → custom}/date-picker.tsx +3 -3
  76. package/src/custom/field.tsx +81 -0
  77. package/src/{ui → custom}/filter-builder.tsx +3 -3
  78. package/src/custom/index.ts +12 -0
  79. package/src/custom/input-group.tsx +53 -0
  80. package/src/{ui → custom}/item.tsx +1 -1
  81. package/src/custom/native-select.tsx +33 -0
  82. package/src/custom/sort-builder.tsx +129 -0
  83. package/src/index.css +20 -1
  84. package/src/index.ts +1 -0
  85. package/src/renderers/basic/button-group.tsx +1 -0
  86. package/src/renderers/basic/div.tsx +12 -1
  87. package/src/renderers/basic/html.tsx +1 -0
  88. package/src/renderers/basic/icon.tsx +1 -0
  89. package/src/renderers/basic/image.tsx +1 -0
  90. package/src/renderers/basic/navigation-menu.tsx +1 -0
  91. package/src/renderers/basic/pagination.tsx +31 -4
  92. package/src/renderers/basic/separator.tsx +1 -0
  93. package/src/renderers/basic/span.tsx +12 -1
  94. package/src/renderers/basic/text.tsx +4 -2
  95. package/src/renderers/complex/carousel.tsx +1 -0
  96. package/src/renderers/complex/data-table.tsx +134 -95
  97. package/src/renderers/complex/filter-builder.tsx +2 -1
  98. package/src/renderers/complex/resizable.tsx +2 -1
  99. package/src/renderers/complex/scroll-area.tsx +25 -7
  100. package/src/renderers/complex/table.tsx +1 -0
  101. package/src/renderers/data-display/alert.tsx +1 -0
  102. package/src/renderers/data-display/avatar.tsx +1 -0
  103. package/src/renderers/data-display/badge.tsx +1 -0
  104. package/src/renderers/data-display/breadcrumb.tsx +1 -0
  105. package/src/renderers/data-display/kbd.tsx +1 -0
  106. package/src/renderers/data-display/list.tsx +21 -49
  107. package/src/renderers/data-display/statistic.tsx +21 -5
  108. package/src/renderers/data-display/table.tsx +21 -11
  109. package/src/renderers/data-display/tree-view.tsx +7 -1
  110. package/src/renderers/disclosure/accordion.tsx +1 -0
  111. package/src/renderers/disclosure/collapsible.tsx +1 -0
  112. package/src/renderers/disclosure/toggle-group.tsx +2 -0
  113. package/src/renderers/feedback/empty.tsx +1 -0
  114. package/src/renderers/feedback/loading.tsx +2 -1
  115. package/src/renderers/feedback/progress.tsx +1 -0
  116. package/src/renderers/feedback/skeleton.tsx +1 -0
  117. package/src/renderers/feedback/sonner.tsx +1 -0
  118. package/src/renderers/feedback/spinner.tsx +1 -0
  119. package/src/renderers/feedback/toast.tsx +1 -0
  120. package/src/renderers/feedback/toaster.tsx +1 -0
  121. package/src/renderers/form/button.tsx +35 -1
  122. package/src/renderers/form/calendar.tsx +1 -0
  123. package/src/renderers/form/checkbox.tsx +38 -16
  124. package/src/renderers/form/combobox.tsx +2 -1
  125. package/src/renderers/form/command.tsx +1 -0
  126. package/src/renderers/form/date-picker.tsx +1 -0
  127. package/src/renderers/form/file-upload.tsx +1 -0
  128. package/src/renderers/form/form.tsx +92 -15
  129. package/src/renderers/form/input-otp.tsx +1 -0
  130. package/src/renderers/form/input.tsx +3 -0
  131. package/src/renderers/form/label.tsx +1 -0
  132. package/src/renderers/form/radio-group.tsx +1 -0
  133. package/src/renderers/form/select.tsx +35 -15
  134. package/src/renderers/form/slider.tsx +1 -0
  135. package/src/renderers/form/switch.tsx +1 -0
  136. package/src/renderers/form/textarea.tsx +50 -27
  137. package/src/renderers/form/toggle.tsx +3 -45
  138. package/src/renderers/layout/aspect-ratio.tsx +2 -1
  139. package/src/renderers/layout/card.tsx +10 -2
  140. package/src/renderers/layout/container.tsx +1 -0
  141. package/src/renderers/layout/flex.tsx +1 -0
  142. package/src/renderers/layout/grid.tsx +23 -8
  143. package/src/renderers/layout/page.tsx +35 -23
  144. package/src/renderers/layout/semantic.tsx +1 -0
  145. package/src/renderers/layout/stack.tsx +2 -1
  146. package/src/renderers/layout/tabs.tsx +43 -17
  147. package/src/renderers/navigation/header-bar.tsx +1 -0
  148. package/src/renderers/navigation/sidebar.tsx +5 -0
  149. package/src/renderers/overlay/alert-dialog.tsx +1 -0
  150. package/src/renderers/overlay/context-menu.tsx +1 -0
  151. package/src/renderers/overlay/dialog.tsx +1 -0
  152. package/src/renderers/overlay/drawer.tsx +1 -0
  153. package/src/renderers/overlay/dropdown-menu.tsx +1 -0
  154. package/src/renderers/overlay/hover-card.tsx +1 -0
  155. package/src/renderers/overlay/menubar.tsx +1 -0
  156. package/src/renderers/overlay/popover.tsx +1 -0
  157. package/src/renderers/overlay/sheet.tsx +1 -0
  158. package/src/renderers/overlay/tooltip.tsx +1 -0
  159. package/src/renderers/placeholders.tsx +2 -2
  160. package/src/stories/CRMApp.stories.tsx +706 -0
  161. package/src/stories/Guide.mdx +55 -0
  162. package/src/stories/Introduction.mdx +34 -0
  163. package/src/stories/MockedData.stories.tsx +71 -0
  164. package/src/stories/assets/accessibility.png +0 -0
  165. package/src/stories/assets/accessibility.svg +1 -0
  166. package/src/stories/assets/addon-library.png +0 -0
  167. package/src/stories/assets/assets.png +0 -0
  168. package/src/stories/assets/avif-test-image.avif +0 -0
  169. package/src/stories/assets/context.png +0 -0
  170. package/src/stories/assets/discord.svg +1 -0
  171. package/src/stories/assets/docs.png +0 -0
  172. package/src/stories/assets/figma-plugin.png +0 -0
  173. package/src/stories/assets/github.svg +1 -0
  174. package/src/stories/assets/share.png +0 -0
  175. package/src/stories/assets/styling.png +0 -0
  176. package/src/stories/assets/testing.png +0 -0
  177. package/src/stories/assets/theming.png +0 -0
  178. package/src/stories/assets/tutorials.svg +1 -0
  179. package/src/stories/assets/youtube.svg +1 -0
  180. package/src/stories/button.css +30 -0
  181. package/src/stories/header.css +32 -0
  182. package/src/stories/page.css +68 -0
  183. package/src/stories-json/accordion.stories.tsx +43 -0
  184. package/src/stories-json/aggrid.stories.tsx +103 -0
  185. package/src/stories-json/alert.stories.tsx +39 -0
  186. package/src/stories-json/aspect-ratio.stories.tsx +34 -0
  187. package/src/stories-json/avatar.stories.tsx +38 -0
  188. package/src/stories-json/badge.stories.tsx +53 -0
  189. package/src/stories-json/breadcrumb.stories.tsx +30 -0
  190. package/src/stories-json/button-group.stories.tsx +43 -0
  191. package/src/stories-json/button.stories.tsx +73 -0
  192. package/src/stories-json/calendar.stories.tsx +85 -0
  193. package/src/stories-json/card.stories.tsx +48 -0
  194. package/src/stories-json/carousel.stories.tsx +33 -0
  195. package/src/stories-json/charts.stories.tsx +195 -0
  196. package/src/stories-json/chatbot.stories.tsx +248 -0
  197. package/src/stories-json/code-editor.stories.tsx +92 -0
  198. package/src/stories-json/collapsible.stories.tsx +40 -0
  199. package/src/stories-json/controls.stories.tsx +36 -0
  200. package/src/stories-json/dashboard.stories.tsx +318 -0
  201. package/src/stories-json/data-table.stories.tsx +60 -0
  202. package/src/stories-json/data_display_extras.stories.tsx +102 -0
  203. package/src/stories-json/date-picker.stories.tsx +28 -0
  204. package/src/stories-json/detail-view.stories.tsx +258 -0
  205. package/src/stories-json/dialog.stories.tsx +43 -0
  206. package/src/stories-json/feedback_extras.stories.tsx +40 -0
  207. package/src/stories-json/feedback_others.stories.tsx +46 -0
  208. package/src/stories-json/form_advanced.stories.tsx +117 -0
  209. package/src/stories-json/form_extras.stories.tsx +123 -0
  210. package/src/stories-json/grid.stories.tsx +56 -0
  211. package/src/stories-json/icon.stories.tsx +36 -0
  212. package/src/stories-json/input.stories.tsx +52 -0
  213. package/src/stories-json/kanban.stories.tsx +295 -0
  214. package/src/stories-json/layout_extended.stories.tsx +76 -0
  215. package/src/stories-json/layout_flex.stories.tsx +107 -0
  216. package/src/stories-json/list-view.stories.tsx +97 -0
  217. package/src/stories-json/markdown.stories.tsx +129 -0
  218. package/src/stories-json/menus.stories.tsx +63 -0
  219. package/src/stories-json/metric-card.stories.tsx +143 -0
  220. package/src/stories-json/navigation-menu.stories.tsx +37 -0
  221. package/src/stories-json/object-aggrid.stories.tsx +252 -0
  222. package/src/stories-json/object-form.stories.tsx +130 -0
  223. package/src/stories-json/object-gantt.stories.tsx +114 -0
  224. package/src/stories-json/object-grid.stories.tsx +157 -0
  225. package/src/stories-json/object-map.stories.tsx +116 -0
  226. package/src/stories-json/object-view.stories.tsx +118 -0
  227. package/src/stories-json/overlay_extras.stories.tsx +113 -0
  228. package/src/stories-json/overlay_others.stories.tsx +76 -0
  229. package/src/stories-json/page.stories.tsx +55 -0
  230. package/src/stories-json/reports.stories.tsx +163 -0
  231. package/src/stories-json/resizable.stories.tsx +44 -0
  232. package/src/stories-json/select.stories.tsx +34 -0
  233. package/src/stories-json/separator.stories.tsx +41 -0
  234. package/src/stories-json/sidebar.stories.tsx +147 -0
  235. package/src/stories-json/statistic.stories.tsx +44 -0
  236. package/src/stories-json/tabs.stories.tsx +51 -0
  237. package/src/stories-json/timeline.stories.tsx +188 -0
  238. package/src/stories-json/typography.stories.tsx +45 -0
  239. package/src/ui/accordion.tsx +47 -53
  240. package/src/ui/alert-dialog.tsx +103 -117
  241. package/src/ui/alert.tsx +35 -36
  242. package/src/ui/aspect-ratio.tsx +1 -5
  243. package/src/ui/avatar.tsx +41 -42
  244. package/src/ui/badge.tsx +6 -15
  245. package/src/ui/breadcrumb.tsx +81 -75
  246. package/src/ui/button.tsx +10 -11
  247. package/src/ui/calendar.tsx +178 -51
  248. package/src/ui/card.tsx +51 -110
  249. package/src/ui/carousel.tsx +136 -113
  250. package/src/ui/chart.tsx +367 -0
  251. package/src/ui/checkbox.tsx +20 -22
  252. package/src/ui/collapsible.tsx +5 -25
  253. package/src/ui/command.tsx +106 -135
  254. package/src/ui/context-menu.tsx +69 -116
  255. package/src/ui/dialog.tsx +94 -113
  256. package/src/ui/drawer.tsx +82 -99
  257. package/src/ui/dropdown-menu.tsx +134 -188
  258. package/src/ui/form.tsx +51 -40
  259. package/src/ui/hover-card.tsx +18 -33
  260. package/src/ui/index.ts +2 -8
  261. package/src/ui/input-otp.tsx +42 -52
  262. package/src/ui/input.tsx +13 -15
  263. package/src/ui/label.tsx +17 -15
  264. package/src/ui/menubar.tsx +188 -206
  265. package/src/ui/navigation-menu.tsx +96 -136
  266. package/src/ui/pagination.tsx +86 -96
  267. package/src/ui/popover.tsx +24 -41
  268. package/src/ui/progress.tsx +21 -22
  269. package/src/ui/radio-group.tsx +19 -20
  270. package/src/ui/resizable.tsx +32 -42
  271. package/src/ui/scroll-area.tsx +38 -48
  272. package/src/ui/select.tsx +129 -157
  273. package/src/ui/separator.tsx +2 -2
  274. package/src/ui/sheet.tsx +110 -107
  275. package/src/ui/sidebar.tsx +442 -408
  276. package/src/ui/skeleton.tsx +6 -11
  277. package/src/ui/slider.tsx +19 -54
  278. package/src/ui/sonner.tsx +19 -1
  279. package/src/ui/switch.tsx +19 -21
  280. package/src/ui/tabs.tsx +6 -37
  281. package/src/ui/textarea.tsx +8 -4
  282. package/src/ui/toast.tsx +137 -0
  283. package/src/ui/toggle-group.tsx +28 -37
  284. package/src/ui/toggle.tsx +19 -19
  285. package/src/ui/tooltip.tsx +21 -52
  286. package/src/ui/typography.tsx +85 -0
  287. package/tsconfig.json +1 -1
  288. package/vite.config.ts +9 -1
  289. package/vitest.config.ts +5 -0
  290. package/ISSUES_FOUND.md +0 -128
  291. /package/dist/src/{ui → custom}/combobox.d.ts +0 -0
  292. /package/dist/src/{ui → custom}/date-picker.d.ts +0 -0
  293. /package/dist/src/{ui → custom}/empty.d.ts +0 -0
  294. /package/dist/src/{ui → custom}/filter-builder.d.ts +0 -0
  295. /package/dist/src/{ui → custom}/kbd.d.ts +0 -0
  296. /package/dist/src/{ui → custom}/spinner.d.ts +0 -0
  297. /package/src/{ui → custom}/empty.tsx +0 -0
  298. /package/src/{ui → custom}/kbd.tsx +0 -0
  299. /package/src/{ui → custom}/spinner.tsx +0 -0
@@ -13,57 +13,26 @@ import * as TooltipPrimitive from "@radix-ui/react-tooltip"
13
13
 
14
14
  import { cn } from "../lib/utils"
15
15
 
16
- function TooltipProvider({
17
- delayDuration = 0,
18
- ...props
19
- }: React.ComponentProps<typeof TooltipPrimitive.Provider>) {
20
- return (
21
- <TooltipPrimitive.Provider
22
- data-slot="tooltip-provider"
23
- delayDuration={delayDuration}
24
- {...props}
25
- />
26
- )
27
- }
28
-
29
- function Tooltip({
30
- ...props
31
- }: React.ComponentProps<typeof TooltipPrimitive.Root>) {
32
- return (
33
- <TooltipProvider>
34
- <TooltipPrimitive.Root data-slot="tooltip" {...props} />
35
- </TooltipProvider>
36
- )
37
- }
38
-
39
- function TooltipTrigger({
40
- ...props
41
- }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {
42
- return <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />
43
- }
44
-
45
- function TooltipContent({
46
- className,
47
- sideOffset = 0,
48
- children,
49
- ...props
50
- }: React.ComponentProps<typeof TooltipPrimitive.Content>) {
51
- return (
52
- <TooltipPrimitive.Portal>
53
- <TooltipPrimitive.Content
54
- data-slot="tooltip-content"
55
- sideOffset={sideOffset}
56
- className={cn(
57
- "bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
58
- className
59
- )}
60
- {...props}
61
- >
62
- {children}
63
- <TooltipPrimitive.Arrow className="bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" />
64
- </TooltipPrimitive.Content>
65
- </TooltipPrimitive.Portal>
66
- )
67
- }
16
+ const TooltipProvider = TooltipPrimitive.Provider
17
+
18
+ const Tooltip = TooltipPrimitive.Root
19
+
20
+ const TooltipTrigger = TooltipPrimitive.Trigger
21
+
22
+ const TooltipContent = React.forwardRef<
23
+ React.ElementRef<typeof TooltipPrimitive.Content>,
24
+ React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
25
+ >(({ className, sideOffset = 4, ...props }, ref) => (
26
+ <TooltipPrimitive.Content
27
+ ref={ref}
28
+ sideOffset={sideOffset}
29
+ className={cn(
30
+ "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",
31
+ className
32
+ )}
33
+ {...props}
34
+ />
35
+ ))
36
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName
68
37
 
69
38
  export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * ObjectUI
3
+ * Copyright (c) 2024-present ObjectStack Inc.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ import * as React from "react"
10
+ import { cn } from "../lib/utils"
11
+
12
+ const TypographyH1 = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(({ className, ...props }, ref) => (
13
+ <h1 ref={ref} className={cn("scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl", className)} {...props} />
14
+ ))
15
+ TypographyH1.displayName = "TypographyH1"
16
+
17
+ const TypographyH2 = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(({ className, ...props }, ref) => (
18
+ <h2 ref={ref} className={cn("scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0", className)} {...props} />
19
+ ))
20
+ TypographyH2.displayName = "TypographyH2"
21
+
22
+ const TypographyH3 = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(({ className, ...props }, ref) => (
23
+ <h3 ref={ref} className={cn("scroll-m-20 text-2xl font-semibold tracking-tight", className)} {...props} />
24
+ ))
25
+ TypographyH3.displayName = "TypographyH3"
26
+
27
+ const TypographyH4 = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(({ className, ...props }, ref) => (
28
+ <h4 ref={ref} className={cn("scroll-m-20 text-xl font-semibold tracking-tight", className)} {...props} />
29
+ ))
30
+ TypographyH4.displayName = "TypographyH4"
31
+
32
+ const TypographyP = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(({ className, ...props }, ref) => (
33
+ <p ref={ref} className={cn("leading-7 [&:not(:first-child)]:mt-6", className)} {...props} />
34
+ ))
35
+ TypographyP.displayName = "TypographyP"
36
+
37
+ const TypographyBlockquote = React.forwardRef<HTMLQuoteElement, React.HTMLAttributes<HTMLQuoteElement>>(({ className, ...props }, ref) => (
38
+ <blockquote ref={ref} className={cn("mt-6 border-l-2 pl-6 italic", className)} {...props} />
39
+ ))
40
+ TypographyBlockquote.displayName = "TypographyBlockquote"
41
+
42
+ const TypographyList = React.forwardRef<HTMLUListElement, React.HTMLAttributes<HTMLUListElement>>(({ className, ...props }, ref) => (
43
+ <ul ref={ref} className={cn("my-6 ml-6 list-disc [&>li]:mt-2", className)} {...props} />
44
+ ))
45
+ TypographyList.displayName = "TypographyList"
46
+
47
+ const TypographyInlineCode = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(({ className, ...props }, ref) => (
48
+ <code ref={ref} className={cn("relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold", className)} {...props} />
49
+ ))
50
+ TypographyInlineCode.displayName = "TypographyInlineCode"
51
+
52
+ const TypographyLead = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(({ className, ...props }, ref) => (
53
+ <p ref={ref} className={cn("text-xl text-muted-foreground", className)} {...props} />
54
+ ))
55
+ TypographyLead.displayName = "TypographyLead"
56
+
57
+ const TypographyLarge = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => (
58
+ <div ref={ref} className={cn("text-lg font-semibold", className)} {...props} />
59
+ ))
60
+ TypographyLarge.displayName = "TypographyLarge"
61
+
62
+ const TypographySmall = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(({ className, ...props }, ref) => (
63
+ <small ref={ref} className={cn("text-sm font-medium leading-none", className)} {...props} />
64
+ ))
65
+ TypographySmall.displayName = "TypographySmall"
66
+
67
+ const TypographyMuted = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(({ className, ...props }, ref) => (
68
+ <p ref={ref} className={cn("text-sm text-muted-foreground", className)} {...props} />
69
+ ))
70
+ TypographyMuted.displayName = "TypographyMuted"
71
+
72
+ export {
73
+ TypographyH1,
74
+ TypographyH2,
75
+ TypographyH3,
76
+ TypographyH4,
77
+ TypographyP,
78
+ TypographyBlockquote,
79
+ TypographyList,
80
+ TypographyInlineCode,
81
+ TypographyLead,
82
+ TypographyLarge,
83
+ TypographySmall,
84
+ TypographyMuted,
85
+ }
package/tsconfig.json CHANGED
@@ -15,5 +15,5 @@
15
15
  "skipLibCheck": true
16
16
  },
17
17
  "include": ["src"],
18
- "exclude": ["src/__tests__", "**/*.test.ts", "**/*.test.tsx"]
18
+ "exclude": ["src/__tests__", "**/*.test.ts", "**/*.test.tsx", "src/stories-json", "**/*.stories.tsx"]
19
19
  }
package/vite.config.ts CHANGED
@@ -22,6 +22,13 @@ export default defineConfig({
22
22
  resolve: {
23
23
  alias: {
24
24
  '@': resolve(__dirname, './src'),
25
+ '@object-ui/core': resolve(__dirname, '../core/src'),
26
+ '@object-ui/types': resolve(__dirname, '../types/src'),
27
+ '@object-ui/react': resolve(__dirname, '../react/src'),
28
+ '@object-ui/components': resolve(__dirname, './src'), // Self-reference for vitest.setup.tsx
29
+ '@object-ui/fields': resolve(__dirname, '../fields/src'),
30
+ '@object-ui/plugin-dashboard': resolve(__dirname, '../plugin-dashboard/src'),
31
+ '@object-ui/plugin-grid': resolve(__dirname, '../plugin-grid/src'),
25
32
  },
26
33
  },
27
34
  build: {
@@ -45,7 +52,8 @@ export default defineConfig({
45
52
  test: {
46
53
  globals: true,
47
54
  environment: 'happy-dom',
48
- setupFiles: [],
55
+ setupFiles: ['../../vitest.setup.tsx'],
56
+ passWithNoTests: true,
49
57
  // Ensure dependencies are resolved properly for tests
50
58
  deps: {
51
59
  inline: ['@object-ui/core', '@object-ui/react'],
@@ -0,0 +1,5 @@
1
+ import { mergeConfig } from 'vitest/config';
2
+ import rootConfig from '../../vitest.config.mts';
3
+ import viteConfig from './vite.config';
4
+
5
+ export default mergeConfig(rootConfig, viteConfig);
package/ISSUES_FOUND.md DELETED
@@ -1,128 +0,0 @@
1
- # Display Issues Automatically Detected by Tests
2
-
3
- This document lists the real display and rendering issues automatically discovered by the comprehensive test suite.
4
-
5
- ## Summary
6
-
7
- The automated test suite (150 tests total) successfully identified **10 real issues** across different component renderers:
8
-
9
- - ✅ **140 tests passing** - Components working correctly
10
- - ⚠️ **10 tests failing** - Automatically detected issues requiring fixes
11
-
12
- ## Issues Detected
13
-
14
- ### 1. Container Renderer - Missing Children Support
15
- **Location:** `layout-data-renderers.test.tsx`
16
- **Issue:** Container component does not properly render child components passed via `body` prop
17
- **Expected:** Should render nested children
18
- **Actual:** Children not rendering, possibly schema mismatch
19
-
20
- ### 2. Grid Renderer - Children Not Rendering
21
- **Location:** `layout-data-renderers.test.tsx`
22
- **Issue:** Grid layout component not displaying child items
23
- **Expected:** Should render grid with child items
24
- **Actual:** Empty content
25
-
26
- ### 3. Tree View Renderer - Data Prop Mismatch
27
- **Location:** `layout-data-renderers.test.tsx`
28
- **Issue:** Tree view component not rendering tree data structure
29
- **Expected:** Should display hierarchical tree data
30
- **Actual:** No content rendered, possible prop name mismatch (`data` vs `items`)
31
-
32
- ### 4. Badge Renderer - Text Prop Issue
33
- **Location:** `layout-data-renderers.test.tsx`
34
- **Issue:** Badge component not rendering text content
35
- **Expected:** Should display badge text via `text` prop
36
- **Actual:** Empty badge, possible prop name should be `children` or `content`
37
-
38
- ### 5. Avatar Renderer - Image Not Rendering
39
- **Location:** `layout-data-renderers.test.tsx`
40
- **Issue:** Avatar component image not displaying
41
- **Expected:** Should render image from `src` prop
42
- **Actual:** No image element found in DOM
43
-
44
- ### 6. Loading Renderer - Message Prop Not Working
45
- **Location:** `feedback-overlay-renderers.test.tsx`
46
- **Issue:** Loading component not displaying message text
47
- **Expected:** Should show loading message
48
- **Actual:** Message text not rendered
49
-
50
- ### 7. Tooltip Renderer - Trigger Content Not Rendering
51
- **Location:** `feedback-overlay-renderers.test.tsx`
52
- **Issue:** Tooltip trigger content (button) not visible
53
- **Expected:** Should render trigger element that shows tooltip on hover
54
- **Actual:** Trigger content missing
55
-
56
- ### 8. Scroll Area Renderer - Content Not Displaying
57
- **Location:** `complex-disclosure-renderers.test.tsx`
58
- **Issue:** Scroll area component not showing scrollable content
59
- **Expected:** Should render content within scrollable container
60
- **Actual:** Only CSS rules visible, content not rendered
61
-
62
- ## Component Schema Mismatches Found
63
-
64
- | Component | Test Prop | Expected Behavior | Likely Fix |
65
- |-----------|-----------|-------------------|------------|
66
- | Container | `body` | Render children | Check SchemaRenderer integration |
67
- | Grid | `body` | Render grid items | Check children rendering |
68
- | Tree View | `data` | Display tree structure | Verify prop name or data format |
69
- | Badge | `text` | Show badge text | Change to `children` or verify prop |
70
- | Avatar | `src` | Render image | Check Radix UI Avatar implementation |
71
- | Loading | `message` | Display message | Verify prop name |
72
- | Tooltip | `body` | Render trigger | Check trigger rendering |
73
- | Scroll Area | `body` | Show content | Verify content prop handling |
74
-
75
- ## Automated Checks That Found Issues
76
-
77
- The test utilities successfully detected:
78
-
79
- 1. **Empty Content Detection**
80
- ```typescript
81
- const domCheck = checkDOMStructure(container);
82
- expect(domCheck.hasContent).toBe(true); // FAILED - found empty components
83
- ```
84
-
85
- 2. **Missing DOM Elements**
86
- ```typescript
87
- expect(container.textContent).toContain('Expected Text'); // FAILED - content not rendered
88
- ```
89
-
90
- 3. **Missing Image Elements**
91
- ```typescript
92
- const img = container.querySelector('img');
93
- expect(img).toBeTruthy(); // FAILED - image not found
94
- ```
95
-
96
- ## Next Steps
97
-
98
- To fix these issues:
99
-
100
- 1. **Verify Component Schemas** - Check TypeScript type definitions in `@object-ui/types`
101
- 2. **Update Renderers** - Ensure renderers properly handle documented props
102
- 3. **Fix Prop Mappings** - Align prop names between schema and component implementation
103
- 4. **Test SchemaRenderer Integration** - Verify children rendering works correctly
104
- 5. **Update Documentation** - Ensure component examples use correct props
105
-
106
- ## Value of Automated Testing
107
-
108
- These tests have proven their value by:
109
- - ✅ Automatically discovering 10 real issues without manual testing
110
- - ✅ Identifying schema/implementation mismatches
111
- - ✅ Providing specific locations and expected behaviors
112
- - ✅ Enabling quick regression testing as fixes are applied
113
- - ✅ Serving as living documentation of component APIs
114
-
115
- ## Running Tests to Verify Fixes
116
-
117
- After fixing issues, verify with:
118
- ```bash
119
- # Run all tests
120
- pnpm vitest run packages/components/src/__tests__/
121
-
122
- # Run specific failing tests
123
- pnpm vitest run packages/components/src/__tests__/layout-data-renderers.test.tsx
124
- pnpm vitest run packages/components/src/__tests__/feedback-overlay-renderers.test.tsx
125
- pnpm vitest run packages/components/src/__tests__/complex-disclosure-renderers.test.tsx
126
- ```
127
-
128
- When all 150 tests pass, all display issues will be resolved!
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes