@once-ui-system/core 1.7.10 → 1.7.12

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 (518) hide show
  1. package/ai/catalog.json +1650 -0
  2. package/ai/catalog.seed.json +411 -0
  3. package/ai/components/Accordion.json +136 -0
  4. package/ai/components/AccordionGroup.json +128 -0
  5. package/ai/components/Animation.json +146 -0
  6. package/ai/components/Arrow.json +128 -0
  7. package/ai/components/AutoScroll.json +130 -0
  8. package/ai/components/Avatar.json +133 -0
  9. package/ai/components/AvatarGroup.json +129 -0
  10. package/ai/components/Background.json +131 -0
  11. package/ai/components/Badge.json +132 -0
  12. package/ai/components/Banner.json +122 -0
  13. package/ai/components/BarChart.json +123 -0
  14. package/ai/components/BlobFx.json +125 -0
  15. package/ai/components/BlockQuote.json +132 -0
  16. package/ai/components/Button.json +26 -0
  17. package/ai/components/Card.json +129 -0
  18. package/ai/components/Carousel.json +134 -0
  19. package/ai/components/CelebrationFx.json +132 -0
  20. package/ai/components/ChartHeader.json +130 -0
  21. package/ai/components/ChartStatus.json +12 -0
  22. package/ai/components/Checkbox.json +13 -0
  23. package/ai/components/Chip.json +132 -0
  24. package/ai/components/CodeBlock.json +122 -0
  25. package/ai/components/ColorInput.json +13 -0
  26. package/ai/components/Column.json +128 -0
  27. package/ai/components/CompareImage.json +126 -0
  28. package/ai/components/ContextMenu.json +22 -0
  29. package/ai/components/CountFx.json +82 -0
  30. package/ai/components/CountdownFx.json +11 -0
  31. package/ai/components/Cursor.json +9 -0
  32. package/ai/components/CursorCard.json +128 -0
  33. package/ai/components/DataTooltip.json +15 -0
  34. package/ai/components/DateInput.json +21 -0
  35. package/ai/components/DatePicker.json +143 -0
  36. package/ai/components/DateRangeInput.json +18 -0
  37. package/ai/components/DateRangePicker.json +129 -0
  38. package/ai/components/Dialog.json +134 -0
  39. package/ai/components/DialogProvider.json +8 -0
  40. package/ai/components/Dropdown.json +128 -0
  41. package/ai/components/DropdownWrapper.json +28 -0
  42. package/ai/components/EmojiPicker.json +129 -0
  43. package/ai/components/EmojiPickerDropdown.json +13 -0
  44. package/ai/components/Fade.json +130 -0
  45. package/ai/components/FadingLettersFx.json +77 -0
  46. package/ai/components/Feedback.json +132 -0
  47. package/ai/components/Flex.json +125 -0
  48. package/ai/components/FlipFx.json +133 -0
  49. package/ai/components/GlitchFx.json +128 -0
  50. package/ai/components/Grid.json +121 -0
  51. package/ai/components/Heading.json +75 -0
  52. package/ai/components/HeadingLink.json +127 -0
  53. package/ai/components/HeadingNav.json +124 -0
  54. package/ai/components/HoloFx.json +128 -0
  55. package/ai/components/Hover.json +130 -0
  56. package/ai/components/HoverCard.json +122 -0
  57. package/ai/components/Icon.json +132 -0
  58. package/ai/components/IconButton.json +22 -0
  59. package/ai/components/InfiniteScroll.json +130 -0
  60. package/ai/components/InlineCode.json +126 -0
  61. package/ai/components/Input.json +24 -0
  62. package/ai/components/InteractiveDetails.json +14 -0
  63. package/ai/components/Kbar.json +10 -0
  64. package/ai/components/Kbd.json +127 -0
  65. package/ai/components/Legend.json +14 -0
  66. package/ai/components/LetterFx.json +14 -0
  67. package/ai/components/Line.json +125 -0
  68. package/ai/components/LineBarChart.json +123 -0
  69. package/ai/components/LineChart.json +123 -0
  70. package/ai/components/LinearGauge.json +130 -0
  71. package/ai/components/LinearGradient.json +15 -0
  72. package/ai/components/List.json +127 -0
  73. package/ai/components/ListItem.json +77 -0
  74. package/ai/components/Logo.json +16 -0
  75. package/ai/components/LogoCloud.json +124 -0
  76. package/ai/components/Mask.json +131 -0
  77. package/ai/components/MasonryGrid.json +132 -0
  78. package/ai/components/MatrixFx.json +135 -0
  79. package/ai/components/Media.json +142 -0
  80. package/ai/components/MediaUpload.json +122 -0
  81. package/ai/components/MegaMenu.json +125 -0
  82. package/ai/components/MobileMegaMenu.json +125 -0
  83. package/ai/components/Modal.json +12 -0
  84. package/ai/components/NavIcon.json +127 -0
  85. package/ai/components/NumberInput.json +16 -0
  86. package/ai/components/OTPInput.json +13 -0
  87. package/ai/components/OgCard.json +135 -0
  88. package/ai/components/Option.json +137 -0
  89. package/ai/components/Particle.json +135 -0
  90. package/ai/components/PasswordInput.json +8 -0
  91. package/ai/components/PieChart.json +123 -0
  92. package/ai/components/ProgressBar.json +131 -0
  93. package/ai/components/Pulse.json +129 -0
  94. package/ai/components/RadialGauge.json +134 -0
  95. package/ai/components/RadialGradient.json +16 -0
  96. package/ai/components/RadioButton.json +17 -0
  97. package/ai/components/RevealFx.json +131 -0
  98. package/ai/components/Row.json +128 -0
  99. package/ai/components/Schema.json +17 -0
  100. package/ai/components/ScrollContainer.json +126 -0
  101. package/ai/components/ScrollToTop.json +124 -0
  102. package/ai/components/Scroller.json +128 -0
  103. package/ai/components/SegmentedControl.json +132 -0
  104. package/ai/components/Select.json +21 -0
  105. package/ai/components/ShineFx.json +80 -0
  106. package/ai/components/Skeleton.json +129 -0
  107. package/ai/components/Slider.json +17 -0
  108. package/ai/components/SmartLink.json +17 -0
  109. package/ai/components/Spinner.json +127 -0
  110. package/ai/components/SplitView.json +129 -0
  111. package/ai/components/StatusIndicator.json +128 -0
  112. package/ai/components/StyleOverlay.json +126 -0
  113. package/ai/components/StylePanel.json +125 -0
  114. package/ai/components/Swiper.json +130 -0
  115. package/ai/components/Switch.json +20 -0
  116. package/ai/components/Table.json +125 -0
  117. package/ai/components/Tag.json +129 -0
  118. package/ai/components/TagInput.json +12 -0
  119. package/ai/components/Text.json +72 -0
  120. package/ai/components/Textarea.json +24 -0
  121. package/ai/components/ThemeSwitcher.json +122 -0
  122. package/ai/components/TiltFx.json +126 -0
  123. package/ai/components/Timeline.json +126 -0
  124. package/ai/components/Toast.json +13 -0
  125. package/ai/components/Toaster.json +14 -0
  126. package/ai/components/ToggleButton.json +24 -0
  127. package/ai/components/Tooltip.json +129 -0
  128. package/ai/components/TypeFx.json +15 -0
  129. package/ai/components/User.json +15 -0
  130. package/ai/components/UserMenu.json +16 -0
  131. package/ai/components/WeatherFx.json +133 -0
  132. package/ai/examples/auth.tsx +105 -0
  133. package/ai/examples/blocks/Background6.tsx +25 -0
  134. package/ai/examples/blocks/Chat1.tsx +70 -0
  135. package/ai/examples/blocks/Dashboard1.tsx +404 -0
  136. package/ai/examples/blocks/Feed3.tsx +151 -0
  137. package/ai/examples/blocks/Footer1.tsx +30 -0
  138. package/ai/examples/blocks/Footer2.tsx +96 -0
  139. package/ai/examples/blocks/Footer3.tsx +127 -0
  140. package/ai/examples/blocks/Footer4.tsx +406 -0
  141. package/ai/examples/blocks/Header1.tsx +370 -0
  142. package/ai/examples/blocks/Header2.tsx +98 -0
  143. package/ai/examples/blocks/Header3.tsx +133 -0
  144. package/ai/examples/blocks/Header4.tsx +123 -0
  145. package/ai/examples/blocks/Productivity1.tsx +318 -0
  146. package/ai/examples/blocks/Roadmap1.tsx +133 -0
  147. package/ai/examples/blocks/Sidebar1.tsx +34 -0
  148. package/ai/examples/blocks/Sidebar2.tsx +17 -0
  149. package/ai/examples/blocks/Sidebar4.tsx +92 -0
  150. package/ai/examples/blocks/Sidebar5.tsx +73 -0
  151. package/ai/examples/blocks/Streaming1.tsx +353 -0
  152. package/ai/examples/blocks/Table1.tsx +303 -0
  153. package/ai/examples/blocks/Waitlist1.tsx +141 -0
  154. package/ai/examples/blocks/content/chat1content.ts +65 -0
  155. package/ai/examples/blocks/content/resources.ts +5 -0
  156. package/ai/examples/blocks/content/roadmap1content.ts +51 -0
  157. package/ai/examples/blocks/manifest.json +191 -0
  158. package/ai/examples/dashboard.tsx +150 -0
  159. package/ai/examples/marketing-hero.tsx +152 -0
  160. package/ai/examples/pricing.tsx +219 -0
  161. package/ai/examples/settings.tsx +140 -0
  162. package/ai/gotchas.json +85 -0
  163. package/ai/manifest.json +21 -0
  164. package/ai/rules.compact.md +73 -0
  165. package/ai/spec.json +2679 -2701
  166. package/ai/tasks/auth.json +23 -0
  167. package/ai/tasks/chat.json +28 -0
  168. package/ai/tasks/dashboard.json +39 -0
  169. package/ai/tasks/index.json +12 -0
  170. package/ai/tasks/marketing-hero.json +38 -0
  171. package/ai/tasks/pricing.json +42 -0
  172. package/ai/tasks/roadmap.json +22 -0
  173. package/ai/tasks/settings.json +34 -0
  174. package/dist/ai/catalog.json +1650 -0
  175. package/dist/ai/catalog.seed.json +411 -0
  176. package/dist/ai/components/Accordion.json +136 -0
  177. package/dist/ai/components/AccordionGroup.json +128 -0
  178. package/dist/ai/components/Animation.json +146 -0
  179. package/dist/ai/components/Arrow.json +128 -0
  180. package/dist/ai/components/AutoScroll.json +130 -0
  181. package/dist/ai/components/Avatar.json +133 -0
  182. package/dist/ai/components/AvatarGroup.json +129 -0
  183. package/dist/ai/components/Background.json +131 -0
  184. package/dist/ai/components/Badge.json +132 -0
  185. package/dist/ai/components/Banner.json +122 -0
  186. package/dist/ai/components/BarChart.json +123 -0
  187. package/dist/ai/components/BlobFx.json +125 -0
  188. package/dist/ai/components/BlockQuote.json +132 -0
  189. package/dist/ai/components/Button.json +26 -0
  190. package/dist/ai/components/Card.json +129 -0
  191. package/dist/ai/components/Carousel.json +134 -0
  192. package/dist/ai/components/CelebrationFx.json +132 -0
  193. package/dist/ai/components/ChartHeader.json +130 -0
  194. package/dist/ai/components/ChartStatus.json +12 -0
  195. package/dist/ai/components/Checkbox.json +13 -0
  196. package/dist/ai/components/Chip.json +132 -0
  197. package/dist/ai/components/CodeBlock.json +122 -0
  198. package/dist/ai/components/ColorInput.json +13 -0
  199. package/dist/ai/components/Column.json +128 -0
  200. package/dist/ai/components/CompareImage.json +126 -0
  201. package/dist/ai/components/ContextMenu.json +22 -0
  202. package/dist/ai/components/CountFx.json +82 -0
  203. package/dist/ai/components/CountdownFx.json +11 -0
  204. package/dist/ai/components/Cursor.json +9 -0
  205. package/dist/ai/components/CursorCard.json +128 -0
  206. package/dist/ai/components/DataTooltip.json +15 -0
  207. package/dist/ai/components/DateInput.json +21 -0
  208. package/dist/ai/components/DatePicker.json +143 -0
  209. package/dist/ai/components/DateRangeInput.json +18 -0
  210. package/dist/ai/components/DateRangePicker.json +129 -0
  211. package/dist/ai/components/Dialog.json +134 -0
  212. package/dist/ai/components/DialogProvider.json +8 -0
  213. package/dist/ai/components/Dropdown.json +128 -0
  214. package/dist/ai/components/DropdownWrapper.json +28 -0
  215. package/dist/ai/components/EmojiPicker.json +129 -0
  216. package/dist/ai/components/EmojiPickerDropdown.json +13 -0
  217. package/dist/ai/components/Fade.json +130 -0
  218. package/dist/ai/components/FadingLettersFx.json +77 -0
  219. package/dist/ai/components/Feedback.json +132 -0
  220. package/dist/ai/components/Flex.json +125 -0
  221. package/dist/ai/components/FlipFx.json +133 -0
  222. package/dist/ai/components/GlitchFx.json +128 -0
  223. package/dist/ai/components/Grid.json +121 -0
  224. package/dist/ai/components/Heading.json +75 -0
  225. package/dist/ai/components/HeadingLink.json +127 -0
  226. package/dist/ai/components/HeadingNav.json +124 -0
  227. package/dist/ai/components/HoloFx.json +128 -0
  228. package/dist/ai/components/Hover.json +130 -0
  229. package/dist/ai/components/HoverCard.json +122 -0
  230. package/dist/ai/components/Icon.json +132 -0
  231. package/dist/ai/components/IconButton.json +22 -0
  232. package/dist/ai/components/InfiniteScroll.json +130 -0
  233. package/dist/ai/components/InlineCode.json +126 -0
  234. package/dist/ai/components/Input.json +24 -0
  235. package/dist/ai/components/InteractiveDetails.json +14 -0
  236. package/dist/ai/components/Kbar.json +10 -0
  237. package/dist/ai/components/Kbd.json +127 -0
  238. package/dist/ai/components/Legend.json +14 -0
  239. package/dist/ai/components/LetterFx.json +14 -0
  240. package/dist/ai/components/Line.json +125 -0
  241. package/dist/ai/components/LineBarChart.json +123 -0
  242. package/dist/ai/components/LineChart.json +123 -0
  243. package/dist/ai/components/LinearGauge.json +130 -0
  244. package/dist/ai/components/LinearGradient.json +15 -0
  245. package/dist/ai/components/List.json +127 -0
  246. package/dist/ai/components/ListItem.json +77 -0
  247. package/dist/ai/components/Logo.json +16 -0
  248. package/dist/ai/components/LogoCloud.json +124 -0
  249. package/dist/ai/components/Mask.json +131 -0
  250. package/dist/ai/components/MasonryGrid.json +132 -0
  251. package/dist/ai/components/MatrixFx.json +135 -0
  252. package/dist/ai/components/Media.json +142 -0
  253. package/dist/ai/components/MediaUpload.json +122 -0
  254. package/dist/ai/components/MegaMenu.json +125 -0
  255. package/dist/ai/components/MobileMegaMenu.json +125 -0
  256. package/dist/ai/components/Modal.json +12 -0
  257. package/dist/ai/components/NavIcon.json +127 -0
  258. package/dist/ai/components/NumberInput.json +16 -0
  259. package/dist/ai/components/OTPInput.json +13 -0
  260. package/dist/ai/components/OgCard.json +135 -0
  261. package/dist/ai/components/Option.json +137 -0
  262. package/dist/ai/components/Particle.json +135 -0
  263. package/dist/ai/components/PasswordInput.json +8 -0
  264. package/dist/ai/components/PieChart.json +123 -0
  265. package/dist/ai/components/ProgressBar.json +131 -0
  266. package/dist/ai/components/Pulse.json +129 -0
  267. package/dist/ai/components/RadialGauge.json +134 -0
  268. package/dist/ai/components/RadialGradient.json +16 -0
  269. package/dist/ai/components/RadioButton.json +17 -0
  270. package/dist/ai/components/RevealFx.json +131 -0
  271. package/dist/ai/components/Row.json +128 -0
  272. package/dist/ai/components/Schema.json +17 -0
  273. package/dist/ai/components/ScrollContainer.json +126 -0
  274. package/dist/ai/components/ScrollToTop.json +124 -0
  275. package/dist/ai/components/Scroller.json +128 -0
  276. package/dist/ai/components/SegmentedControl.json +132 -0
  277. package/dist/ai/components/Select.json +21 -0
  278. package/dist/ai/components/ShineFx.json +80 -0
  279. package/dist/ai/components/Skeleton.json +129 -0
  280. package/dist/ai/components/Slider.json +17 -0
  281. package/dist/ai/components/SmartLink.json +17 -0
  282. package/dist/ai/components/Spinner.json +127 -0
  283. package/dist/ai/components/SplitView.json +129 -0
  284. package/dist/ai/components/StatusIndicator.json +128 -0
  285. package/dist/ai/components/StyleOverlay.json +126 -0
  286. package/dist/ai/components/StylePanel.json +125 -0
  287. package/dist/ai/components/Swiper.json +130 -0
  288. package/dist/ai/components/Switch.json +20 -0
  289. package/dist/ai/components/Table.json +125 -0
  290. package/dist/ai/components/Tag.json +129 -0
  291. package/dist/ai/components/TagInput.json +12 -0
  292. package/dist/ai/components/Text.json +72 -0
  293. package/dist/ai/components/Textarea.json +24 -0
  294. package/dist/ai/components/ThemeSwitcher.json +122 -0
  295. package/dist/ai/components/TiltFx.json +126 -0
  296. package/dist/ai/components/Timeline.json +126 -0
  297. package/dist/ai/components/Toast.json +13 -0
  298. package/dist/ai/components/Toaster.json +14 -0
  299. package/dist/ai/components/ToggleButton.json +24 -0
  300. package/dist/ai/components/Tooltip.json +129 -0
  301. package/dist/ai/components/TypeFx.json +15 -0
  302. package/dist/ai/components/User.json +15 -0
  303. package/dist/ai/components/UserMenu.json +16 -0
  304. package/dist/ai/components/WeatherFx.json +133 -0
  305. package/dist/ai/eval-tasks.md +71 -0
  306. package/dist/ai/examples/blocks/manifest.json +191 -0
  307. package/dist/ai/gotchas.json +85 -0
  308. package/dist/ai/manifest.json +21 -0
  309. package/dist/ai/recipes.md +149 -0
  310. package/dist/ai/rules.compact.md +73 -0
  311. package/dist/ai/rules.md +217 -0
  312. package/dist/ai/spec.json +2680 -0
  313. package/dist/ai/tasks/auth.json +23 -0
  314. package/dist/ai/tasks/chat.json +28 -0
  315. package/dist/ai/tasks/dashboard.json +39 -0
  316. package/dist/ai/tasks/index.json +12 -0
  317. package/dist/ai/tasks/marketing-hero.json +38 -0
  318. package/dist/ai/tasks/pricing.json +42 -0
  319. package/dist/ai/tasks/roadmap.json +22 -0
  320. package/dist/ai/tasks/settings.json +34 -0
  321. package/dist/components/Accordion.d.ts +2 -1
  322. package/dist/components/Accordion.d.ts.map +1 -1
  323. package/dist/components/Accordion.js.map +1 -1
  324. package/dist/components/Accordion.module.scss +1 -0
  325. package/dist/components/AccordionGroup.d.ts +2 -1
  326. package/dist/components/AccordionGroup.d.ts.map +1 -1
  327. package/dist/components/AccordionGroup.js +17 -1
  328. package/dist/components/AccordionGroup.js.map +1 -1
  329. package/dist/components/Avatar.d.ts +2 -1
  330. package/dist/components/Avatar.d.ts.map +1 -1
  331. package/dist/components/Avatar.js.map +1 -1
  332. package/dist/components/AvatarGroup.d.ts +2 -1
  333. package/dist/components/AvatarGroup.d.ts.map +1 -1
  334. package/dist/components/AvatarGroup.js.map +1 -1
  335. package/dist/components/Button.d.ts +7 -5
  336. package/dist/components/Button.d.ts.map +1 -1
  337. package/dist/components/Button.js +3 -3
  338. package/dist/components/Button.js.map +1 -1
  339. package/dist/components/Button.module.scss +233 -111
  340. package/dist/components/Carousel.d.ts.map +1 -1
  341. package/dist/components/Carousel.js +14 -3
  342. package/dist/components/Carousel.js.map +1 -1
  343. package/dist/components/ColorInput.d.ts.map +1 -1
  344. package/dist/components/ColorInput.js +11 -11
  345. package/dist/components/ColorInput.js.map +1 -1
  346. package/dist/components/CompareImage.d.ts.map +1 -1
  347. package/dist/components/CompareImage.js +24 -23
  348. package/dist/components/CompareImage.js.map +1 -1
  349. package/dist/components/CompareImage.module.scss +0 -2
  350. package/dist/components/CursorCard.d.ts.map +1 -1
  351. package/dist/components/CursorCard.js.map +1 -1
  352. package/dist/components/CursorCard.module.scss +1 -1
  353. package/dist/components/DatePicker.d.ts +2 -1
  354. package/dist/components/DatePicker.d.ts.map +1 -1
  355. package/dist/components/DatePicker.js +11 -15
  356. package/dist/components/DatePicker.js.map +1 -1
  357. package/dist/components/DateRangePicker.d.ts +2 -1
  358. package/dist/components/DateRangePicker.d.ts.map +1 -1
  359. package/dist/components/DateRangePicker.js.map +1 -1
  360. package/dist/components/DropdownWrapper.d.ts.map +1 -1
  361. package/dist/components/DropdownWrapper.js +9 -9
  362. package/dist/components/DropdownWrapper.js.map +1 -1
  363. package/dist/components/ElementType.d.ts +5 -6
  364. package/dist/components/ElementType.d.ts.map +1 -1
  365. package/dist/components/ElementType.js.map +1 -1
  366. package/dist/components/EmojiPicker.d.ts +2 -2
  367. package/dist/components/EmojiPickerDropdown.d.ts +2 -2
  368. package/dist/components/Feedback.d.ts.map +1 -1
  369. package/dist/components/Feedback.js +1 -1
  370. package/dist/components/Feedback.js.map +1 -1
  371. package/dist/components/Heading.d.ts +3 -3
  372. package/dist/components/Heading.d.ts.map +1 -1
  373. package/dist/components/Heading.js +6 -3
  374. package/dist/components/Heading.js.map +1 -1
  375. package/dist/components/Icon.d.ts +2 -2
  376. package/dist/components/Icon.d.ts.map +1 -1
  377. package/dist/components/IconButton.d.ts +7 -5
  378. package/dist/components/IconButton.d.ts.map +1 -1
  379. package/dist/components/IconButton.js +2 -2
  380. package/dist/components/IconButton.js.map +1 -1
  381. package/dist/components/Input.d.ts +2 -1
  382. package/dist/components/Input.d.ts.map +1 -1
  383. package/dist/components/Input.js.map +1 -1
  384. package/dist/components/Input.module.scss +1 -196
  385. package/dist/components/Logo.d.ts +2 -1
  386. package/dist/components/Logo.d.ts.map +1 -1
  387. package/dist/components/MatrixFx.d.ts.map +1 -1
  388. package/dist/components/MatrixFx.js +521 -481
  389. package/dist/components/MatrixFx.js.map +1 -1
  390. package/dist/components/Media.d.ts.map +1 -1
  391. package/dist/components/Media.js +5 -1
  392. package/dist/components/Media.js.map +1 -1
  393. package/dist/components/ProgressBar.d.ts +1 -0
  394. package/dist/components/ProgressBar.d.ts.map +1 -1
  395. package/dist/components/ProgressBar.js +9 -3
  396. package/dist/components/ProgressBar.js.map +1 -1
  397. package/dist/components/Pulse.d.ts +1 -0
  398. package/dist/components/Pulse.d.ts.map +1 -1
  399. package/dist/components/Pulse.js +2 -2
  400. package/dist/components/Pulse.js.map +1 -1
  401. package/dist/components/Scroller.js +1 -1
  402. package/dist/components/Scroller.js.map +1 -1
  403. package/dist/components/ServerFlex.d.ts +2 -2
  404. package/dist/components/ServerFlex.d.ts.map +1 -1
  405. package/dist/components/ServerFlex.js +4 -1
  406. package/dist/components/ServerFlex.js.map +1 -1
  407. package/dist/components/ServerGrid.d.ts +2 -2
  408. package/dist/components/ServerGrid.d.ts.map +1 -1
  409. package/dist/components/SmartLink.d.ts +5 -4
  410. package/dist/components/SmartLink.d.ts.map +1 -1
  411. package/dist/components/SmartLink.js.map +1 -1
  412. package/dist/components/Spinner.d.ts +2 -1
  413. package/dist/components/Spinner.d.ts.map +1 -1
  414. package/dist/components/Spinner.js.map +1 -1
  415. package/dist/components/SplitView.d.ts +1 -1
  416. package/dist/components/SplitView.d.ts.map +1 -1
  417. package/dist/components/SplitView.js +1 -1
  418. package/dist/components/SplitView.js.map +1 -1
  419. package/dist/components/StatusIndicator.d.ts +2 -1
  420. package/dist/components/StatusIndicator.d.ts.map +1 -1
  421. package/dist/components/StatusIndicator.js.map +1 -1
  422. package/dist/components/Swiper.d.ts.map +1 -1
  423. package/dist/components/Swiper.js +3 -3
  424. package/dist/components/Swiper.js.map +1 -1
  425. package/dist/components/Tag.d.ts +2 -2
  426. package/dist/components/Tag.d.ts.map +1 -1
  427. package/dist/components/Text.d.ts +3 -3
  428. package/dist/components/Text.d.ts.map +1 -1
  429. package/dist/components/Text.js +6 -3
  430. package/dist/components/Text.js.map +1 -1
  431. package/dist/components/Textarea.d.ts +2 -1
  432. package/dist/components/Textarea.d.ts.map +1 -1
  433. package/dist/components/Textarea.js.map +1 -1
  434. package/dist/components/Toast.d.ts +1 -1
  435. package/dist/components/Toast.d.ts.map +1 -1
  436. package/dist/components/Toast.js +2 -0
  437. package/dist/components/Toast.js.map +1 -1
  438. package/dist/components/Toaster.d.ts +1 -1
  439. package/dist/components/Toaster.d.ts.map +1 -1
  440. package/dist/components/ToggleButton.d.ts +6 -5
  441. package/dist/components/ToggleButton.d.ts.map +1 -1
  442. package/dist/components/ToggleButton.js.map +1 -1
  443. package/dist/components/ToggleButton.module.scss +19 -0
  444. package/dist/components/index.d.ts +0 -3
  445. package/dist/components/index.d.ts.map +1 -1
  446. package/dist/components/index.js +0 -3
  447. package/dist/components/index.js.map +1 -1
  448. package/dist/contexts/ToastProvider.d.ts +1 -1
  449. package/dist/contexts/ToastProvider.d.ts.map +1 -1
  450. package/dist/css/tokens.css +1 -1
  451. package/dist/css/tokens.css.map +1 -1
  452. package/dist/interfaces.d.ts +9 -10
  453. package/dist/interfaces.d.ts.map +1 -1
  454. package/dist/modules/code/CodeBlock.impl.d.ts +2 -0
  455. package/dist/modules/code/CodeBlock.impl.d.ts.map +1 -1
  456. package/dist/modules/code/CodeBlock.impl.js +48 -16
  457. package/dist/modules/code/CodeBlock.impl.js.map +1 -1
  458. package/dist/modules/code/index.d.ts +3 -0
  459. package/dist/modules/code/index.d.ts.map +1 -0
  460. package/dist/modules/code/index.js +2 -0
  461. package/dist/modules/code/index.js.map +1 -0
  462. package/dist/modules/data/BarChart.impl.d.ts +2 -2
  463. package/dist/modules/data/DataTooltip.d.ts +1 -1
  464. package/dist/modules/data/DataTooltip.d.ts.map +1 -1
  465. package/dist/modules/data/DataTooltip.js.map +1 -1
  466. package/dist/modules/data/Legend.d.ts +1 -1
  467. package/dist/modules/data/Legend.d.ts.map +1 -1
  468. package/dist/modules/data/Legend.js.map +1 -1
  469. package/dist/modules/data/LineBarChart.impl.d.ts +2 -2
  470. package/dist/modules/data/LinearGauge.d.ts +1 -2
  471. package/dist/modules/data/LinearGauge.d.ts.map +1 -1
  472. package/dist/modules/data/RadialGauge.d.ts +1 -2
  473. package/dist/modules/data/RadialGauge.d.ts.map +1 -1
  474. package/dist/modules/data/interfaces.d.ts +4 -4
  475. package/dist/modules/index.d.ts +3 -4
  476. package/dist/modules/index.d.ts.map +1 -1
  477. package/dist/modules/index.js +3 -4
  478. package/dist/modules/index.js.map +1 -1
  479. package/dist/modules/media/index.d.ts +3 -0
  480. package/dist/modules/media/index.d.ts.map +1 -0
  481. package/dist/modules/media/index.js +2 -0
  482. package/dist/modules/media/index.js.map +1 -0
  483. package/dist/modules/navigation/HeadingLink.d.ts +1 -2
  484. package/dist/modules/navigation/HeadingLink.d.ts.map +1 -1
  485. package/dist/modules/navigation/HeadingNav.d.ts +2 -2
  486. package/dist/modules/navigation/HeadingNav.d.ts.map +1 -1
  487. package/dist/modules/navigation/HeadingNav.js.map +1 -1
  488. package/dist/modules/navigation/Kbar.d.ts +6 -5
  489. package/dist/modules/navigation/Kbar.d.ts.map +1 -1
  490. package/dist/modules/navigation/Kbar.js +20 -12
  491. package/dist/modules/navigation/Kbar.js.map +1 -1
  492. package/dist/modules/navigation/MobileMegaMenu.d.ts +4 -4
  493. package/dist/modules/navigation/MobileMegaMenu.d.ts.map +1 -1
  494. package/dist/modules/navigation/index.d.ts +2 -2
  495. package/dist/modules/navigation/index.d.ts.map +1 -1
  496. package/dist/modules/navigation/index.js +2 -2
  497. package/dist/modules/navigation/index.js.map +1 -1
  498. package/dist/modules/seo/index.d.ts +5 -0
  499. package/dist/modules/seo/index.d.ts.map +1 -0
  500. package/dist/modules/seo/index.js +3 -0
  501. package/dist/modules/seo/index.js.map +1 -0
  502. package/dist/package.json +13 -2
  503. package/dist/tokens/theme.scss +20 -2
  504. package/dist/types.d.ts +3 -3
  505. package/dist/types.d.ts.map +1 -1
  506. package/dist/types.js +5 -5
  507. package/dist/types.js.map +1 -1
  508. package/dist/utils/dropdownState.d.ts +4 -0
  509. package/dist/utils/dropdownState.d.ts.map +1 -0
  510. package/dist/utils/dropdownState.js +9 -0
  511. package/dist/utils/dropdownState.js.map +1 -0
  512. package/dist/utils/index.d.ts +1 -0
  513. package/dist/utils/index.d.ts.map +1 -1
  514. package/dist/utils/index.js +1 -0
  515. package/dist/utils/index.js.map +1 -1
  516. package/package.json +139 -127
  517. package/LICENSE.md +0 -21
  518. package/next-env.d.ts +0 -5
@@ -0,0 +1,71 @@
1
+ # Once UI — AI generation eval suite
2
+
3
+ Fixed prompt set for measuring harness effectiveness. Run each task with and
4
+ without the harness (rules.md + spec.json), ideally across two models, and
5
+ score with the checklist below. Add a regression task whenever a new pitfall
6
+ is found in the wild.
7
+
8
+ ## Tasks
9
+
10
+ 1. **Analytics dashboard** — KPI stat cards (trend indicators), a line chart, a bar chart, recent-activity list. Tests: data components, `CountFx`, grid responsiveness.
11
+ 2. **Settings page** — sidebar sections, profile form (avatar upload, inputs, selects), danger zone. Tests: form controls, `MediaUpload`, surface recipes.
12
+ 3. **Pricing page** — three tiers, highlighted middle tier, feature comparison table, FAQ accordion. Tests: `Card`, `Badge`, `Table`, `Accordion`, proportional emphasis.
13
+ 4. **Chat UI** — message list with avatars, streaming indicator, input bar with emoji picker, command palette hint. Tests: `EmojiPickerDropdown`, `Kbd`, `Spinner`, scroll containers.
14
+ 5. **Marketing hero** — headline with text effect, CTA pair, social proof logos, background effect. Tests: effects usage (`LetterFx`/`TypeFx`/`RevealFx`, `Background`/`MatrixFx`/`BlobFx`), restraint.
15
+ 6. **Auth flow** — login with password + OTP step in a stacked dialog. Tests: `Dialog` `stack`, `OTPInput`, `PasswordInput`, validation states.
16
+ 7. **E-commerce product card grid** — image, price, tag, hover actions, skeleton loading state. Tests: `Card`, `Media`, `Skeleton`, `Tag`, hover patterns.
17
+ 8. **Onboarding checklist** — progress bar, step list with status indicators, celebratory completion. Tests: `ProgressBar`, `StatusIndicator`, `CelebrationFx`.
18
+ 9. **Data table page** — sortable table, filters row (segmented control, date range, search), pagination. Tests: `Table`, `SegmentedControl`, `DateRangePicker`, toolbar composition.
19
+ 10. **User profile popover** — avatar trigger, `UserMenu`/`HoverCard` with stats and actions. Tests: overlay components, `AvatarGroup`.
20
+ 11. **Changelog/timeline page** — versioned entries on a `Timeline`, tags per release, copyable code snippets. Tests: `Timeline`, `CodeBlock`, `InlineCode`.
21
+ 12. **Feedback widget** — floating trigger, dialog with rating chips, textarea, toast on submit. Tests: `Chip` selection, `useToast`/`Feedback`, positioning.
22
+
23
+ ## Scoring checklist (per task)
24
+
25
+ Mechanical (count occurrences):
26
+
27
+ - [ ] Compiles / no invented props or components
28
+ - [ ] Redundant-default props (`position="relative"`, `variant="primary"` on Button, ...) — target: 0
29
+ - [ ] Shorthand violations (`fillWidth fillHeight` instead of `fill`, `horizontal+vertical center` instead of `center`, `Flex direction=` instead of `Row`/`Column`) — target: 0
30
+ - [ ] `style={{}}` uses where a token prop exists — target: 0
31
+ - [ ] Raw HTML elements where a component exists (`img`, `a`, `button`) — target: 0
32
+ - [ ] Hex/rgb colors — target: 0
33
+ - [ ] Distinct Once UI components used — higher is better (task-appropriate)
34
+
35
+ Judgment (1–5):
36
+
37
+ - [ ] Proportionality: spacing rhythm, type scale, surface hierarchy look like real Once UI
38
+ - [ ] Component appropriateness: purpose-built components chosen over generic primitives
39
+ - [ ] Responsiveness: breakpoint props used where layout should adapt
40
+ - [ ] Restraint: effects enhance rather than dominate
41
+
42
+ ## Pitfall log
43
+
44
+ Record every recurring failure here; each entry should become a rule in
45
+ `rules.md` or a gold example, plus stay in this list as a regression check.
46
+
47
+ | Date | Pitfall observed | Fix applied |
48
+ |------|------------------|-------------|
49
+ | 2026-06-12 | `position="relative"` written despite being default | rules.md #3 |
50
+ | 2026-06-12 | `fillWidth fillHeight` instead of `fill` | rules.md #2 |
51
+ | 2026-06-12 | `horizontal="center" vertical="center"` instead of `center` | rules.md #2 |
52
+ | 2026-06-12 | Only ~10 common components used, defaults only | rules.md #12–13 |
53
+ | 2026-06-12 | Section gaps too small (48), page feels cramped | rules.md #17 |
54
+ | 2026-06-12 | Section headings too small (`heading-strong-m`), hero undersized | rules.md #18 |
55
+ | 2026-06-12 | Testimonial quote (BlockQuote default) larger than section title | rules.md #19 |
56
+ | 2026-06-12 | Identical centered heading+subtitle on every section (dated); Tag+sparkle eyebrow | rules.md #20 |
57
+ | 2026-06-12 | Absolute Background missing `top="0" left="0"` → offset by parent padding | rules.md #21, recipes.md |
58
+ | 2026-06-12 | Gradient `width: 500` (125% of container); units misunderstood | rules.md #22 |
59
+ | 2026-06-12 | `brand-background-weak` glow at `opacity: 30` — invisible vs page | rules.md #23, recipes.md |
60
+ | 2026-06-12 | `RevealFx delay={index * 80}` (seconds!) and `translateY={16}` (16rem!) | rules.md #24, recipes.md #7 |
61
+ | 2026-06-12 | `LogoCloud` without `columns` → single-column stack | rules.md #25 |
62
+ | 2026-06-12 | No decorative components used beyond one gradient; flat result | recipes.md + rules.md #26 |
63
+ | 2026-06-12 | RevealFx on every section (dated, eye-grabbing); mount-timed animations finish off-screen | rules.md #27–29, recipes.md #7 |
64
+ | 2026-06-12 | Hero gradient clipped: ambient layer inside narrow `maxWidth` container with `overflow="hidden"` | rules.md #21b, recipes.md #1 |
65
+ | 2026-06-12 | Reveal on hero text fragments + lone highlighted card (incoherent grouping) | rules.md #28b |
66
+ | 2026-06-12 | `Card` used for static panels (tiers, testimonials, stats) | rules.md #12 |
67
+ | 2026-06-12 | Arbitrary `maxWidth` numbers; no container-width convention | rules.md #15 |
68
+ | 2026-06-12 | Design intent (style/layout/color/decoration/imagery) guessed instead of asked | rules.md "Before you build" |
69
+ | 2026-06-12 | Invented icon names (`more`, `bell`, `arrowRight`) | rules.md #14b, IconName list in spec.json |
70
+ | 2026-06-12 | `Badge title` + children rendered same text twice ("2 unread2") | rules.md #14c |
71
+ | 2026-06-12 | `Fade` wrapped the whole message list → washed-out content | rules.md #14d |
@@ -0,0 +1,191 @@
1
+ {
2
+ "version": 1,
3
+ "description": "Once UI Pro block references for agent codegen — canonical composition patterns at production quality. Reference-only; not all blocks are runnable standalone.",
4
+ "usage": "Load the block matching your task intent. Mimic structure and prop patterns; adapt data and copy.",
5
+ "blocks": [
6
+ {
7
+ "id": "Header1",
8
+ "file": "Header1.tsx",
9
+ "title": "App header with MegaMenu + Kbar",
10
+ "tags": ["navigation", "header", "marketing"],
11
+ "components": ["MegaMenu", "MobileMegaMenu", "Kbar", "Logo", "UserMenu", "NavIcon", "SmartLink"],
12
+ "patterns": ["sticky header", "mega menu sections with featured links", "command palette ⌘K"],
13
+ "tasks": ["marketing-hero", "dashboard"],
14
+ "standalone": true
15
+ },
16
+ {
17
+ "id": "Header2",
18
+ "file": "Header2.tsx",
19
+ "title": "Minimal marketing header",
20
+ "tags": ["navigation", "header", "marketing"],
21
+ "components": ["Logo", "Row", "Button", "SmartLink"],
22
+ "tasks": ["marketing-hero"],
23
+ "standalone": true
24
+ },
25
+ {
26
+ "id": "Header3",
27
+ "file": "Header3.tsx",
28
+ "title": "Streaming/media header",
29
+ "tags": ["navigation", "header", "streaming"],
30
+ "components": ["Logo", "IconButton", "UserMenu"],
31
+ "tasks": ["streaming"],
32
+ "standalone": true
33
+ },
34
+ {
35
+ "id": "Header4",
36
+ "file": "Header4.tsx",
37
+ "title": "Compact docs-style header",
38
+ "tags": ["navigation", "header", "docs"],
39
+ "components": ["Logo", "UserMenu", "ToggleButton", "SmartLink"],
40
+ "tasks": ["settings"],
41
+ "standalone": true
42
+ },
43
+ {
44
+ "id": "Footer1",
45
+ "file": "Footer1.tsx",
46
+ "title": "Minimal footer bar",
47
+ "tags": ["footer"],
48
+ "components": ["Row", "IconButton", "Text"],
49
+ "standalone": true
50
+ },
51
+ {
52
+ "id": "Footer2",
53
+ "file": "Footer2.tsx",
54
+ "title": "Footer with CTA",
55
+ "tags": ["footer", "marketing"],
56
+ "components": ["Column", "Button", "SmartLink"],
57
+ "standalone": true
58
+ },
59
+ {
60
+ "id": "Footer3",
61
+ "file": "Footer3.tsx",
62
+ "title": "Multi-column sitemap footer",
63
+ "tags": ["footer", "marketing"],
64
+ "components": ["Grid", "SmartLink", "Tag", "Logo", "IconButton"],
65
+ "patterns": ["5-column nav grid with responsive collapse"],
66
+ "tasks": ["marketing-hero"],
67
+ "standalone": true
68
+ },
69
+ {
70
+ "id": "Footer4",
71
+ "file": "Footer4.tsx",
72
+ "title": "Premium footer with TypeFx + Particle",
73
+ "tags": ["footer", "marketing", "effect"],
74
+ "components": ["Background", "Particle", "TypeFx", "Mask", "Avatar", "Tag"],
75
+ "patterns": ["animated wordmark", "particle decoration", "masked gradient"],
76
+ "tasks": ["marketing-hero"],
77
+ "standalone": true
78
+ },
79
+ {
80
+ "id": "Waitlist1",
81
+ "file": "Waitlist1.tsx",
82
+ "title": "Waitlist / coming-soon hero",
83
+ "tags": ["marketing", "hero", "waitlist"],
84
+ "components": ["RevealFx", "CountFx", "AvatarGroup", "Input", "Badge", "Background"],
85
+ "patterns": ["custom cursor SVG", "subscriber count animation", "email capture with validation"],
86
+ "tasks": ["marketing-hero"],
87
+ "related": ["Background6.tsx"],
88
+ "standalone": true
89
+ },
90
+ {
91
+ "id": "Dashboard1",
92
+ "file": "Dashboard1.tsx",
93
+ "title": "Full analytics dashboard shell",
94
+ "tags": ["dashboard", "data"],
95
+ "components": ["Card", "LineChart", "Grid", "Scroller", "StatusIndicator", "Table1"],
96
+ "patterns": ["StatCard with sparkline chart overlay", "activity feed with Card rows", "orders table"],
97
+ "tasks": ["dashboard"],
98
+ "compose": ["Sidebar1.tsx", "Header1.tsx", "Table1.tsx"],
99
+ "standalone": false
100
+ },
101
+ {
102
+ "id": "Table1",
103
+ "file": "Table1.tsx",
104
+ "title": "Data table with search, pagination, selection",
105
+ "tags": ["data", "dashboard", "table"],
106
+ "components": ["Input", "Checkbox", "DropdownWrapper", "CountFx", "IconButton", "ToggleButton"],
107
+ "patterns": ["custom render columns", "selectable rows", "items per page"],
108
+ "tasks": ["dashboard", "chat"],
109
+ "standalone": true
110
+ },
111
+ {
112
+ "id": "Chat1",
113
+ "file": "Chat1.tsx",
114
+ "title": "Three-pane chat layout",
115
+ "tags": ["chat", "layout"],
116
+ "components": ["SplitView pattern via Row", "Sidebar4", "Feed3", "Sidebar5", "Table1"],
117
+ "patterns": ["channel sidebar + feed + members panel", "view switching"],
118
+ "tasks": ["chat"],
119
+ "compose": ["Feed3.tsx", "Sidebar4.tsx", "Sidebar5.tsx"],
120
+ "standalone": false
121
+ },
122
+ {
123
+ "id": "Feed3",
124
+ "file": "Feed3.tsx",
125
+ "title": "Chat message feed + composer",
126
+ "tags": ["chat", "social"],
127
+ "components": ["Avatar", "Textarea", "EmojiPickerDropdown", "Media", "OgCard", "IconButton"],
128
+ "patterns": ["thread messages without bubbles", "attachment grid", "reactions row", "emoji picker prefix"],
129
+ "tasks": ["chat"],
130
+ "standalone": true
131
+ },
132
+ {
133
+ "id": "Sidebar4",
134
+ "file": "Sidebar4.tsx",
135
+ "title": "Chat channel sidebar",
136
+ "tags": ["chat", "sidebar", "navigation"],
137
+ "components": ["Scroller", "ToggleButton", "Fade", "Media", "Avatar"],
138
+ "patterns": ["cover image header with Fade strip", "grouped channel list", "user status footer"],
139
+ "tasks": ["chat"],
140
+ "standalone": true
141
+ },
142
+ {
143
+ "id": "Sidebar5",
144
+ "file": "Sidebar5.tsx",
145
+ "title": "Chat members panel",
146
+ "tags": ["chat", "sidebar"],
147
+ "components": ["Card", "Avatar", "DropdownWrapper", "Heading"],
148
+ "tasks": ["chat"],
149
+ "standalone": true
150
+ },
151
+ {
152
+ "id": "Roadmap1",
153
+ "file": "Roadmap1.tsx",
154
+ "title": "Kanban-style product roadmap",
155
+ "tags": ["roadmap", "content", "community"],
156
+ "components": ["Card", "StatusIndicator", "User", "Scroller"],
157
+ "patterns": ["horizontal column scroll", "Card for linked tasks / Column for static", "brand dot product header"],
158
+ "tasks": ["roadmap"],
159
+ "standalone": true
160
+ },
161
+ {
162
+ "id": "Streaming1",
163
+ "file": "Streaming1.tsx",
164
+ "title": "Video streaming page",
165
+ "tags": ["streaming", "media", "marketing"],
166
+ "components": ["Media", "Carousel", "ProgressBar", "Fade", "Scroller"],
167
+ "patterns": ["floating controls portal", "episode carousel", "hero video player"],
168
+ "compose": ["Header3.tsx", "Footer2.tsx"],
169
+ "standalone": false
170
+ },
171
+ {
172
+ "id": "Productivity1",
173
+ "file": "Productivity1.tsx",
174
+ "title": "Issue board / kanban productivity",
175
+ "tags": ["productivity", "dashboard"],
176
+ "components": ["Card", "AvatarGroup", "IconButton", "Scroller"],
177
+ "patterns": ["horizontal issue columns", "Card task items with avatars"],
178
+ "compose": ["Sidebar2.tsx"],
179
+ "standalone": false
180
+ }
181
+ ],
182
+ "byTask": {
183
+ "marketing-hero": ["Waitlist1", "Header1", "Footer4", "Footer3"],
184
+ "dashboard": ["Dashboard1", "Table1", "Header1", "Sidebar1"],
185
+ "chat": ["Chat1", "Feed3", "Sidebar4", "Sidebar5", "Table1"],
186
+ "settings": ["Header4", "Sidebar1"],
187
+ "pricing": ["Header2", "Footer2"],
188
+ "auth": ["Header2"],
189
+ "roadmap": ["Roadmap1"]
190
+ }
191
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "Background.gradient.width": {
3
+ "rule": "Quarter-percent units: 400 = 100% of container. Soft glows use width 100–200, not 500.",
4
+ "components": ["Background"]
5
+ },
6
+ "Background.gradient.x": {
7
+ "rule": "x/y are percent positions of the container (50/50 = center).",
8
+ "components": ["Background"]
9
+ },
10
+ "Background.absolute": {
11
+ "rule": "Every absolute decorative layer needs top=\"0\" left=\"0\" or it offsets by parent padding.",
12
+ "components": ["Background", "MatrixFx", "BlobFx"]
13
+ },
14
+ "Card.interactive": {
15
+ "rule": "Card is for interactive surfaces only (href or onClick). Static panels use Column + background=\"surface\" border=\"neutral-alpha-weak\" radius=\"l\".",
16
+ "components": ["Card"]
17
+ },
18
+ "Fade.edge": {
19
+ "rule": "Fade is an edge overlay strip on scroll containers, not a content wrapper.",
20
+ "components": ["Fade"]
21
+ },
22
+ "RevealFx.delay": {
23
+ "rule": "delay is in seconds — stagger with delay={index * 0.1}, never index * 80.",
24
+ "components": ["RevealFx"]
25
+ },
26
+ "RevealFx.translateY": {
27
+ "rule": "translateY as a number is in rem. Use translateY={1} or token \"16\" (1rem); 16 means 16rem.",
28
+ "components": ["RevealFx"]
29
+ },
30
+ "LogoCloud.columns": {
31
+ "rule": "LogoCloud extends Grid — always set columns and responsive overrides or logos stack in one column.",
32
+ "components": ["LogoCloud"]
33
+ },
34
+ "StatusIndicator.color": {
35
+ "rule": "StatusIndicator uses color=\"green\" | \"red\" | \"orange\" | \"gray\" etc. — not variant or semantic scheme names.",
36
+ "components": ["StatusIndicator"]
37
+ },
38
+ "rule": "Icon names must come from IconName in spec.json — never invent names like more, bell, arrowRight.",
39
+ "components": ["Icon", "Button", "IconButton"]
40
+ },
41
+ "Badge.duplicate": {
42
+ "rule": "Do not pass the same text as both title prop and children — it renders twice.",
43
+ "components": ["Badge"]
44
+ },
45
+ "Tag.duplicate": {
46
+ "rule": "Do not pass the same text as both label prop and children — it renders twice.",
47
+ "components": ["Tag"]
48
+ },
49
+ "color.tokens": {
50
+ "rule": "Colors are semantic tokens ({scheme}-{weight}), never hex/rgb. background also accepts surface | overlay | page | transparent.",
51
+ "components": ["Column", "Row", "Text", "Button"]
52
+ },
53
+ "color.background-weak": {
54
+ "rule": "*-background-weak is nearly the page color — invisible as accent. Use alpha tokens (brand-alpha-medium) for glows.",
55
+ "components": ["Background"]
56
+ },
57
+ "layout.shorthands": {
58
+ "rule": "Use fill not fillWidth fillHeight; center not horizontal=\"center\" vertical=\"center\"; Row/Column not Flex direction=.",
59
+ "components": ["Row", "Column", "Flex", "Grid"]
60
+ },
61
+ "layout.defaults": {
62
+ "rule": "Never write props equal to defaults: position=\"relative\", direction on Row/Column, variant=\"primary\" on Button.",
63
+ "components": ["Row", "Column", "Button"]
64
+ },
65
+ "section.gaps": {
66
+ "rule": "Gap between page sections: 80–160 (typical 104). Inside sections: 24–40.",
67
+ "components": ["Column"]
68
+ },
69
+ "heading.scale": {
70
+ "rule": "Hero = display-strong-l/xl; section titles = display-strong-xs/s — never heading-* for section titles.",
71
+ "components": ["Heading"]
72
+ },
73
+ "animation.budget": {
74
+ "rule": "Entry animation budget: hero + at most 1–2 key moments. Animate coherent blocks all-or-none within a sibling set.",
75
+ "components": ["RevealFx", "CountFx"]
76
+ },
77
+ "CountFx.trigger": {
78
+ "rule": "CountFx has no trigger prop — drive value from useInViewport latch instead.",
79
+ "components": ["CountFx"]
80
+ },
81
+ "overflow.hero": {
82
+ "rule": "overflow=\"hidden\" on full-bleed sections clips glows into hard bands — only use when parent has radius.",
83
+ "components": ["Column", "Background"]
84
+ }
85
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "version": "1.7.12",
3
+ "generated": "2026-07-05",
4
+ "files": {
5
+ "spec": "spec.json",
6
+ "catalog": "catalog.json",
7
+ "rules": "rules.compact.md",
8
+ "rulesFull": "rules.md",
9
+ "recipes": "recipes.md",
10
+ "gotchas": "gotchas.json",
11
+ "tasks": "tasks/index.json",
12
+ "examples": "examples/",
13
+ "blocks": "examples/blocks/manifest.json",
14
+ "components": "components/"
15
+ },
16
+ "bootstrap": [
17
+ "rules.compact.md",
18
+ "catalog.json"
19
+ ],
20
+ "resolve": "tasks/index.json"
21
+ }
@@ -0,0 +1,149 @@
1
+ # Once UI — decoration recipes
2
+
3
+ Curated decorative patterns that keep pages premium without going over the top.
4
+ Use them verbatim, then adjust values. All units follow rules.md #21–24.
5
+
6
+ ## Budget (hard limits)
7
+
8
+ - **One ambient background layer per section**, and only in sections that anchor the page (hero, highlighted card, final CTA). Plain sections stay plain — contrast is what makes the decorated ones read as premium.
9
+ - **Continuous motion** (MatrixFx flicker, BlobFx drift) in at most **two places per page**, never adjacent.
10
+ - **One accent family per page.** Decorations use `brand-*` (or `neutral-*`); never mix brand + accent + schemes in decoration.
11
+ - Every decorative layer: `position="absolute" top="0" left="0" fill pointerEvents="none"`, content sibling `zIndex={1}`, parent `overflow="hidden"`.
12
+
13
+ ## 1. Hero glow + dots
14
+
15
+ Soft brand glow from the top edge with a subtle dot texture. The workhorse ambient layer.
16
+
17
+ Placement matters: the wrapper is **full-bleed** (`fillWidth`, outside any `maxWidth` column) and has **no** `overflow="hidden"` — the gradient fades out via `colorEnd: "static-transparent"`. Clipping it inside a narrow container produces a hard-edged band.
18
+
19
+ ```tsx
20
+ <Column fillWidth horizontal="center" paddingY="80">
21
+ <Background
22
+ position="absolute" top="0" left="0" fill pointerEvents="none"
23
+ gradient={{
24
+ display: true,
25
+ colorStart: "brand-alpha-medium",
26
+ colorEnd: "static-transparent",
27
+ x: 50, y: 0,
28
+ width: 150, height: 80,
29
+ opacity: 60,
30
+ }}
31
+ dots={{ display: true, color: "neutral-alpha-weak", size: "2", opacity: 40 }}
32
+ />
33
+ <Column zIndex={1} horizontal="center" gap="24" maxWidth={48}>
34
+ {/* hero content */}
35
+ </Column>
36
+ </Column>
37
+ ```
38
+
39
+ ## 2. MatrixFx hero strip (with fade-out)
40
+
41
+ Animated matrix field behind a hero, faded into the page with a `page-background` gradient so it doesn't compete with content. Pair exactly like this:
42
+
43
+ ```tsx
44
+ <Column fillWidth minHeight="s" center overflow="hidden">
45
+ <MatrixFx
46
+ position="absolute" top="0" left="0" fill
47
+ flicker size={1.5} spacing={8}
48
+ colors={["brand-solid-strong"]}
49
+ bulge={{ type: "wave", duration: 3, intensity: 20, repeat: true }}
50
+ />
51
+ <Background
52
+ position="absolute" top="0" left="0" fill pointerEvents="none"
53
+ gradient={{ display: true, colorStart: "page-background", x: 0, y: 50, width: 150, height: 300 }}
54
+ />
55
+ <Column zIndex={1} center gap="16" padding="48">
56
+ {/* hero content */}
57
+ </Column>
58
+ </Column>
59
+ ```
60
+
61
+ ## 3. Highlighted card glow
62
+
63
+ For the emphasized item in a set (e.g. "most popular" pricing tier). Border + top glow, nothing else:
64
+
65
+ ```tsx
66
+ <Card fillWidth padding="24" radius="l" background="surface" border="brand-alpha-medium" overflow="hidden">
67
+ <Background
68
+ position="absolute" top="0" left="0" fill pointerEvents="none"
69
+ gradient={{
70
+ display: true,
71
+ colorStart: "brand-alpha-medium",
72
+ colorEnd: "static-transparent",
73
+ x: 50, y: 0,
74
+ width: 200, height: 60,
75
+ opacity: 50,
76
+ }}
77
+ />
78
+ <Column zIndex={1} gap="20" fillWidth>
79
+ {/* card content */}
80
+ </Column>
81
+ </Card>
82
+ ```
83
+
84
+ ## 4. BlobFx ambient panel
85
+
86
+ Self-contained drifting brand/accent blobs (already blurred and pointer-transparent). Use behind a final CTA or feature visual — counts as continuous motion:
87
+
88
+ ```tsx
89
+ <Card fillWidth radius="l" border="neutral-alpha-weak" overflow="hidden" padding="48">
90
+ <BlobFx position="absolute" top="0" left="0" fill opacity={60} seed={2} />
91
+ <Column zIndex={1} center gap="24">
92
+ {/* CTA content */}
93
+ </Column>
94
+ </Card>
95
+ ```
96
+
97
+ ## 5. Technical texture (lines / grid)
98
+
99
+ Diagonal lines or grid texture for footers of cards, table headers, "engineering" flavored strips. No motion:
100
+
101
+ ```tsx
102
+ <Background
103
+ position="absolute" top="0" left="0" fill pointerEvents="none"
104
+ lines={{ display: true, color: "neutral-alpha-weak", angle: -45, size: "4" }}
105
+ />
106
+ ```
107
+
108
+ ## 6. Section divider
109
+
110
+ Between major sections when the gap alone isn't enough — a short line, optionally with an eyebrow:
111
+
112
+ ```tsx
113
+ <Column fillWidth horizontal="center" gap="16">
114
+ <Line width="40" />
115
+ </Column>
116
+ ```
117
+
118
+ ## 7. Reveal stagger (entry, not ambient)
119
+
120
+ Entrance animation for **one** key set per page (rules.md #27–28), viewport-triggered and latched so it plays once, when actually seen (rules.md #29):
121
+
122
+ ```tsx
123
+ const ref = useRef<HTMLDivElement>(null);
124
+ const inViewport = useInViewport(ref);
125
+ const [seen, setSeen] = useState(false);
126
+ useEffect(() => {
127
+ if (inViewport) setSeen(true);
128
+ }, [inViewport]);
129
+
130
+ <Grid ref={ref} columns="3" gap="16" s={{ columns: 1 }}>
131
+ {items.map((item, index) => (
132
+ <RevealFx key={item.id} trigger={seen} translateY="8" delay={index * 0.1}>
133
+ <Card ... />
134
+ </RevealFx>
135
+ ))}
136
+ </Grid>
137
+ ```
138
+
139
+ For stats, drive `CountFx` value from the same latch: `<CountFx value={seen ? 2400 : 0} separator="," />`.
140
+
141
+ ## Anti-patterns
142
+
143
+ - Glow with `colorStart: "brand-background-weak"` — invisible against the page; use alpha tokens.
144
+ - `width: 500` gradients — that's 125% of the container blown past its edges; stay ≤ 200 for glows.
145
+ - Background layers without `top="0" left="0"` inside padded parents — misaligned.
146
+ - Decorating every section — if everything glows, nothing does.
147
+ - Two different Fx components fighting in one viewport (MatrixFx + BlobFx side by side).
148
+ - `overflow="hidden"` on a full-bleed section (no radius) — clips the glow into a hard-edged band.
149
+ - Animating one item out of a sibling set (only the highlighted card) — stagger all or animate none.
@@ -0,0 +1,73 @@
1
+ # Once UI — compact codegen rules
2
+
3
+ Load with task bundle from `@once-ui-system/core/ai/tasks/{intent}.json`. For production-quality composition, read matching Pro blocks from `examples/blocks/manifest.json`. Fetch component slices on demand.
4
+
5
+ ## Layout
6
+
7
+ | Write | Never write |
8
+ |-------|-------------|
9
+ | `<Column gap="16">` | `<Flex direction="column">` |
10
+ | `<Row gap="16">` | `<Flex direction="row">` |
11
+ | `fill` | `fillWidth fillHeight` |
12
+ | `fit` | `fitWidth fitHeight` |
13
+ | `center` | `horizontal="center" vertical="center"` |
14
+
15
+ - `Flex` only when direction changes at breakpoints: `<Row s={{ direction: "column" }}>`
16
+ - Page skeleton: `Column as="main" fillWidth horizontal="center"` → content `Column maxWidth="l"` → sections
17
+ - Section gaps: `"104"` between sections, `"24"`–`"40"` inside. Never `"48"` between major sections.
18
+ - Responsive: breakpoint props `xl l m s xs` — never media queries for layout
19
+
20
+ ## Surfaces
21
+
22
+ Static panel recipe (pricing tiers, stats, settings sections):
23
+
24
+ ```tsx
25
+ <Column background="surface" border="neutral-alpha-weak" radius="l" padding="24" gap="16">
26
+ ```
27
+
28
+ - `Card` = interactive only (`href` or `onClick`). Static panels = Column + surface recipe.
29
+ - Colors: `{scheme}-{weight}` or `{scheme}-alpha-{weight}`. Never hex/rgb.
30
+ - `background` also: `surface | overlay | page | transparent`
31
+
32
+ ## Typography
33
+
34
+ - Hero: `display-strong-l` or `display-strong-xl`
35
+ - Section titles: `display-strong-xs` or `display-strong-s` — not `heading-*`
36
+ - Eyebrow: `<Text variant="label-default-s" onBackground="brand-medium">`
37
+ - Text on layout: `textVariant` + `onBackground` on Row/Column instead of nesting Text
38
+
39
+ ## Decoration
40
+
41
+ Absolute layers always: `position="absolute" top="0" left="0" fill pointerEvents="none"`, content `zIndex={1}`.
42
+
43
+ - Gradient `width`: quarter-percent (400 = 100%). Glows: 100–200.
44
+ - Glow colors: `brand-alpha-medium`, not `brand-background-weak`
45
+ - Ambient layers on full-bleed section wrapper, outside `maxWidth` column
46
+ - Budget: one ambient layer per section; motion in hero + one CTA max
47
+
48
+ ## Motion
49
+
50
+ - `RevealFx delay` in **seconds**: `delay={index * 0.1}`
51
+ - `RevealFx translateY`: number = rem; prefer `"8"`–`"16"` tokens
52
+ - Viewport-trigger with `useInViewport` + latch; `CountFx` driven by `value`, no trigger prop
53
+ - Animate all siblings in a set or none — never one lone animated card
54
+
55
+ ## Components
56
+
57
+ | Need | Use |
58
+ |------|-----|
59
+ | Image | `Media` |
60
+ | Link | `SmartLink` / `Button href` |
61
+ | Status dot | `StatusIndicator` |
62
+ | Loading | `Spinner` / `Skeleton` |
63
+ | Scroll fade | `Fade` as edge strip, not wrapper |
64
+ | Icons | `IconName` from spec only |
65
+ | Logos grid | `LogoCloud` with `columns` set |
66
+
67
+ ## Defaults — omit these
68
+
69
+ `position="relative"`, `direction` on Row/Column, `variant="primary"` on Button, `size="m"` when default.
70
+
71
+ ## Before building
72
+
73
+ If design intent unclear, ask: content style, layout width, color approach, decoration level, imagery. Default: restrained, centered `maxWidth="m"`, single brand accent, one subtle gradient, no placeholder images.