@once-ui-system/core 1.7.11 → 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 (325) 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/data/emoji-data.json +0 -18
  322. package/dist/package.json +13 -2
  323. package/package.json +139 -127
  324. package/LICENSE.md +0 -21
  325. package/next-env.d.ts +0 -5
@@ -0,0 +1,123 @@
1
+ import { Row, Logo, IconButton, UserMenu, Column, Icon, Option, Line, SmartLink, Text, ToggleButton } from "@once-ui-system/core"
2
+
3
+ interface HeaderProps extends React.ComponentProps<typeof Row> {
4
+ cartCount?: number;
5
+ }
6
+
7
+ export const Header4: React.FC<HeaderProps> = ({ cartCount = 0, ...flex }) => {
8
+ return (
9
+ <Row
10
+ as="header"
11
+ paddingY="8"
12
+ paddingLeft="20"
13
+ paddingRight="32"
14
+ fillWidth
15
+ vertical="center"
16
+ horizontal="between"
17
+ {...flex}
18
+ >
19
+ <Row gap="24">
20
+ <Logo href="#" dark icon="/trademarks/icon-dark.svg" />
21
+ <Logo href="#" light icon="/trademarks/icon-light.svg" />
22
+ <Row gap="8">
23
+ <ToggleButton label="All products"/>
24
+ <ToggleButton label="Trending"/>
25
+ <ToggleButton label="New"/>
26
+ <ToggleButton label="On sale"/>
27
+ </Row>
28
+ </Row>
29
+ <Row gap="24" paddingY="2" vertical="center">
30
+ <Row>
31
+ <IconButton
32
+ data-border="rounded"
33
+ variant="ghost"
34
+ tooltip="Cart"
35
+ tooltipPosition="bottom"
36
+ icon="cart"
37
+ />
38
+ {cartCount > 0 && (
39
+ <Row
40
+ data-scaling="90"
41
+ position="absolute"
42
+ vertical="center"
43
+ horizontal="center"
44
+ textVariant="body-default-xs"
45
+ solid="brand-strong"
46
+ onSolid="brand-strong"
47
+ radius="full"
48
+ minWidth="20"
49
+ height="20"
50
+ border="neutral-weak"
51
+ style={{
52
+ top: "-0.125rem",
53
+ right: "-0.5rem",
54
+ }}
55
+ >
56
+ {cartCount}
57
+ </Row>
58
+ )}
59
+ </Row>
60
+ <UserMenu
61
+ placement="bottom-end"
62
+ avatarProps={{ src: "/images/creators/lorant.jpg" }}
63
+ dropdown={[
64
+ <Column key="cart" padding="4" gap="2" fitWidth>
65
+ <Option
66
+ key="cart-option"
67
+ label="Cart"
68
+ value="cart"
69
+ hasPrefix={
70
+ <Icon
71
+ size="xs"
72
+ onBackground="neutral-weak"
73
+ name="cart"
74
+ />
75
+ }
76
+ />
77
+ <Line key="line-1" marginY="2" />
78
+ <Option
79
+ key="order-history-option"
80
+ label="Order history"
81
+ value="orders"
82
+ hasPrefix={
83
+ <Icon size="xs" onBackground="neutral-weak" name="payment" />
84
+ }
85
+ />
86
+ <Option
87
+ key="returned-orders-option"
88
+ label="Returned orders"
89
+ value="returns"
90
+ hasPrefix={
91
+ <Icon size="xs" onBackground="neutral-weak" name="return" />
92
+ }
93
+ />
94
+ <Line key="line-2" marginY="2" />
95
+ <Option
96
+ key="settings-option"
97
+ label="Settings"
98
+ hasPrefix={
99
+ <Icon size="xs" onBackground="neutral-weak" name="settings" />
100
+ }
101
+ value="settings"
102
+ />
103
+ <Option
104
+ key="help-option"
105
+ label="Help"
106
+ hasPrefix={<Icon size="xs" onBackground="neutral-weak" name="help" />}
107
+ value="help"
108
+ />
109
+ <Line key="line-3" marginY="2" />
110
+ <Row padding="4" fillWidth horizontal="center">
111
+ <SmartLink href="#">
112
+ <Text onBackground="neutral-weak" variant="body-default-xs">
113
+ Terms of Use
114
+ </Text>
115
+ </SmartLink>
116
+ </Row>
117
+ </Column>
118
+ ]}
119
+ />
120
+ </Row>
121
+ </Row>
122
+ )
123
+ }
@@ -0,0 +1,318 @@
1
+ import {
2
+ Row,
3
+ Icon,
4
+ IconButton,
5
+ Button,
6
+ Text,
7
+ AvatarGroup,
8
+ Column,
9
+ Card,
10
+ } from "@once-ui-system/core";
11
+ import { Sidebar2 } from "./Sidebar2";
12
+
13
+ const issues = [
14
+ {
15
+ title: "To do",
16
+ tasks: [
17
+ {
18
+ title: "Fix login bug",
19
+ description: "Implement new authentication flow with OAuth2",
20
+ assignee: { avatars: ["/images/avatars/07.png"] },
21
+ project: "Frontend",
22
+ issuetype: "Bug",
23
+ issueColor: "danger-strong",
24
+ },
25
+ {
26
+ title: "Design new UI",
27
+ description: "Add responsive layouts and improve mobile experience",
28
+ assignee: { avatars: ["/images/avatars/08.png"] },
29
+ project: "Frontend",
30
+ issuetype: "Feature",
31
+ issueColor: "brand-strong",
32
+ },
33
+ {
34
+ title: "Update database schema",
35
+ description: "Create comprehensive test suite for authentication system",
36
+ assignee: {
37
+ avatars: ["/images/avatars/05.png", "/images/avatars/04.png"],
38
+ },
39
+ project: "Backend",
40
+ issuetype: "Feature",
41
+ issueColor: "brand-strong",
42
+ },
43
+ ],
44
+ },
45
+ {
46
+ title: "In progress",
47
+ tasks: [
48
+ {
49
+ title: "Write unit tests",
50
+ description: "Integrate and test Stripe payment processing",
51
+ assignee: { avatars: ["/images/avatars/05.png"] },
52
+ project: "Backend",
53
+ issuetype: "Tech",
54
+ issueColor: "accent-strong",
55
+ },
56
+ {
57
+ title: "Test payment gateway",
58
+ description: "Implement code splitting and lazy loading",
59
+ assignee: { avatars: ["/images/avatars/02.png"] },
60
+ project: "Frontend",
61
+ issuetype: "Bug",
62
+ issueColor: "danger-strong",
63
+ },
64
+ {
65
+ title: "Optimize performance",
66
+ description: "Configure 2FA and update password policies",
67
+ assignee: { avatars: ["/images/avatars/01.png"] },
68
+ project: "Frontend",
69
+ issuetype: "Feature",
70
+ issueColor: "brand-strong",
71
+ },
72
+ {
73
+ title: "Update security settings",
74
+ description: "Design and implement user onboarding wizard",
75
+ assignee: {
76
+ avatars: ["/images/avatars/06.png", "/images/avatars/05.png"],
77
+ },
78
+ project: "Backend",
79
+ issuetype: "Feature",
80
+ issueColor: "brand-strong",
81
+ },
82
+ {
83
+ title: "Complete onboarding flow",
84
+ description: "Fix responsive layout issues on mobile devices",
85
+ assignee: { avatars: ["/images/avatars/04.png"] },
86
+ project: "Website",
87
+ issuetype: "Feature",
88
+ issueColor: "brand-strong",
89
+ },
90
+ {
91
+ title: "Fix CSS issues",
92
+ description: "Set up AWS infrastructure and deploy application",
93
+ assignee: {
94
+ avatars: ["/images/avatars/03.png", "/images/avatars/02.png"],
95
+ },
96
+ project: "Frontend",
97
+ issuetype: "Bug",
98
+ issueColor: "danger-strong",
99
+ },
100
+ ],
101
+ },
102
+ {
103
+ title: "Done",
104
+ tasks: [
105
+ {
106
+ title: "Deploy to production",
107
+ description: "Update API documentation and usage examples",
108
+ assignee: { avatars: ["/images/avatars/02.png"] },
109
+ project: "Backend",
110
+ issuetype: "Feature",
111
+ issueColor: "brand-strong",
112
+ },
113
+ {
114
+ title: "Update documentation",
115
+ description: "Set up automated testing and deployment workflow",
116
+ assignee: { avatars: ["/images/avatars/03.png"] },
117
+ project: "Frontend",
118
+ issuetype: "Bug",
119
+ issueColor: "danger-strong",
120
+ },
121
+ {
122
+ title: "Implement CI/CD pipeline",
123
+ description: "Configure Jenkins pipeline with automated testing",
124
+ assignee: {
125
+ avatars: ["/images/avatars/02.png", "/images/avatars/07.png"],
126
+ },
127
+ project: "Platform",
128
+ issuetype: "Tech",
129
+ issueColor: "accent-strong",
130
+ },
131
+ {
132
+ title: "Implement CI/CD pipeline",
133
+ description: "Configure Jenkins pipeline with automated testing",
134
+ assignee: {
135
+ avatars: ["/images/avatars/02.png", "/images/avatars/07.png"],
136
+ },
137
+ project: "Platform",
138
+ issuetype: "Tech",
139
+ issueColor: "accent-strong",
140
+ },
141
+ ],
142
+ },
143
+ ];
144
+
145
+ export const Productivity1 = () => {
146
+ return (
147
+ <Row fillWidth paddingX="8" gap="m">
148
+ <Sidebar2 position="sticky"/>
149
+ <Column fillWidth>
150
+ <Row
151
+ as="header"
152
+ paddingY="12"
153
+ paddingLeft="16"
154
+ paddingRight="8"
155
+ fillWidth
156
+ vertical="center"
157
+ horizontal="between"
158
+ >
159
+ <Row fillWidth>
160
+ <Text variant="body-strong-m" onBackground="neutral-strong">
161
+ Platform Squad
162
+ </Text>
163
+ </Row>
164
+ <Row gap="12" vertical="center" horizontal="end" fillWidth zIndex={1}>
165
+ <IconButton
166
+ data-border="rounded"
167
+ variant="ghost"
168
+ tooltip="Search"
169
+ tooltipPosition="bottom"
170
+ icon="search"
171
+ />
172
+ <Row>
173
+ <IconButton
174
+ data-border="rounded"
175
+ variant="ghost"
176
+ tooltip="Notifications"
177
+ tooltipPosition="bottom"
178
+ icon="bell"
179
+ />
180
+ <Row
181
+ position="absolute"
182
+ style={{
183
+ top: "0.15rem",
184
+ right: "0.15rem",
185
+ }}
186
+ >
187
+ <Row
188
+ style={{ borderColor: "var(--page-background)" }}
189
+ height="12"
190
+ width="12"
191
+ solid="brand-strong"
192
+ radius="full"
193
+ />
194
+ </Row>
195
+ </Row>
196
+ <div
197
+ style={{
198
+ width: "1px",
199
+ margin: "0 var(--static-space-8)",
200
+ height: "1.5rem",
201
+ backgroundColor: "var(--neutral-border-medium",
202
+ }}
203
+ ></div>
204
+ <Button size="s" variant="secondary" label="New project" prefixIcon="plus" />
205
+ </Row>
206
+ </Row>
207
+ <Row
208
+ fillWidth
209
+ paddingBottom="12"
210
+ paddingRight="8"
211
+ paddingLeft="16"
212
+ horizontal="between"
213
+ >
214
+ <AvatarGroup
215
+ avatars={[
216
+ { src: "/images/avatars/01.png", size: "s" },
217
+ { src: "/images/avatars/02.png", size: "s" },
218
+ { src: "/images/avatars/03.png", size: "s" },
219
+ { src: "/images/avatars/04.png", size: "s" },
220
+ { src: "/images/avatars/05.png", size: "s" },
221
+ { value: "3", size: "s" },
222
+ ]}
223
+ reverse
224
+ />
225
+ <Row gap="8" s={{hide: true}}>
226
+ <Button variant="tertiary" size="s" label="Filter" prefixIcon="trend" />
227
+ <Button
228
+ variant="tertiary"
229
+ size="s"
230
+ label="Display"
231
+ prefixIcon="adjustments"
232
+ />
233
+ </Row>
234
+ </Row>
235
+ <Row fillWidth gap="8" overflowX="auto">
236
+ {issues.map((column, index) => (
237
+ <Column
238
+ key={index}
239
+ minWidth={20}
240
+ border="neutral-alpha-weak"
241
+ fillWidth
242
+ paddingX="4"
243
+ radius="m-4"
244
+ background="overlay"
245
+ >
246
+ <Row paddingY="8" paddingX="12" fillWidth horizontal="between">
247
+ <Row textVariant="body-default-s" gap="8" vertical="center">
248
+ <Text>{column.title}</Text>
249
+ <Text onBackground="neutral-weak">{column.tasks.length}</Text>
250
+ </Row>
251
+ <Row gap="4">
252
+ <IconButton
253
+ data-border="rounded"
254
+ variant="ghost"
255
+ tooltip="More actions"
256
+ size="s"
257
+ tooltipPosition="left"
258
+ icon="moreHorizontal"
259
+ />
260
+ <IconButton
261
+ data-border="rounded"
262
+ variant="ghost"
263
+ tooltip="Add task"
264
+ size="s"
265
+ tooltipPosition="left"
266
+ icon="plus"
267
+ />
268
+ </Row>
269
+ </Row>
270
+ {column.tasks.map((task, index) => (
271
+ <Card
272
+ key={index}
273
+ fillWidth
274
+ direction="column"
275
+ radius="m"
276
+ padding="12"
277
+ gap="8"
278
+ marginBottom="4"
279
+ >
280
+ <Row horizontal="between" vertical="center">
281
+ <Text variant="label-default-s">{task.title}</Text>
282
+ <AvatarGroup
283
+ avatars={task.assignee.avatars.map((src) => ({ src, size: "xs" }))}
284
+ />
285
+ </Row>
286
+ <Text onBackground="neutral-weak" variant="label-default-s">
287
+ {task.description}
288
+ </Text>
289
+ <Row gap="4" paddingTop="8" vertical="center" horizontal="between">
290
+ <Row vertical="center" fillWidth gap="8">
291
+ <Icon name="code" size="xs" />
292
+ <Text variant="body-default-xs" onBackground="neutral-weak">
293
+ {task.project}
294
+ </Text>
295
+ </Row>
296
+ <Row vertical="center" gap="8" paddingRight="4">
297
+ <Text variant="body-default-xs" onBackground="neutral-weak">
298
+ {task.issuetype}
299
+ </Text>
300
+ <Row
301
+ radius="full"
302
+ height="8"
303
+ width="8"
304
+ solid={
305
+ task.issueColor as "brand-strong" | "accent-strong" | "danger-strong"
306
+ }
307
+ />
308
+ </Row>
309
+ </Row>
310
+ </Card>
311
+ ))}
312
+ </Column>
313
+ ))}
314
+ </Row>
315
+ </Column>
316
+ </Row>
317
+ );
318
+ };
@@ -0,0 +1,133 @@
1
+ import { Card, Column, Heading, Row, Schemes, StatusIndicator, Text, User } from "@once-ui-system/core";
2
+ import { roadmap, task } from "./content/roadmap1content";
3
+
4
+ export interface Task {
5
+ title: string;
6
+ description?: string;
7
+ user?: {
8
+ name?: string;
9
+ avatar?: string;
10
+ };
11
+ href?: string;
12
+ type?: keyof typeof task;
13
+ }
14
+
15
+ const RoadmapTask = ({ task: taskItem }: { task: Task }) => (
16
+ <Column gap="8" fillWidth>
17
+ <Text align="left" onBackground="neutral-strong" variant="body-strong-m">
18
+ {taskItem.title}
19
+ </Text>
20
+
21
+ {taskItem.description && (
22
+ <Text align="left" variant="body-default-s" onBackground="neutral-weak">
23
+ {taskItem.description}
24
+ </Text>
25
+ )}
26
+
27
+ {(taskItem.user || taskItem.type) && (
28
+ <Row marginTop="8" fillWidth vertical="center" horizontal="between">
29
+ {taskItem.user && (
30
+ <User
31
+ avatarProps={{
32
+ size: "s",
33
+ src: taskItem.user.avatar,
34
+ empty: !taskItem.user.avatar
35
+ }}
36
+ >
37
+ <Row paddingLeft="4" textVariant="label-default-s">
38
+ {taskItem.user.name}
39
+ </Row>
40
+ </User>
41
+ )}
42
+ {taskItem.type && (
43
+ <Row vertical="center" gap="8">
44
+ <StatusIndicator
45
+ color={task[taskItem.type].color as Schemes}
46
+ />
47
+ <Text onBackground="neutral-weak" variant="label-default-s">{task[taskItem.type].label}</Text>
48
+ </Row>
49
+ )}
50
+ </Row>
51
+ )}
52
+ </Column>
53
+ );
54
+
55
+ export function Roadmap1() {
56
+ return (
57
+ <Column maxWidth="l" as="main">
58
+ <Column fillWidth gap="12" paddingBottom="l" paddingX="8">
59
+ <Heading variant="display-strong-s">
60
+ Roadmap
61
+ </Heading>
62
+ <Text wrap="balance" onBackground="neutral-weak" variant="body-default-xl" marginBottom="20">
63
+ List of features planned for Q4 2025
64
+ </Text>
65
+ </Column>
66
+
67
+ {roadmap.map((product, productIndex) => (
68
+ <Column key={productIndex} gap="24" marginTop={productIndex > 0 ? "48" : "0"} fillWidth>
69
+ {product.product && (
70
+ <Row gap="16" marginBottom="16" vertical="center" fillWidth>
71
+ <Row minWidth="40" width="40" height="40" padding="8" vertical="center">
72
+ <Row radius="full" fillWidth minHeight="4" solid="brand-medium" data-brand={product.brand as Schemes} data-solid="inverse"/>
73
+ </Row>
74
+ <Heading as="h2" variant="display-default-xs">
75
+ {product.product}
76
+ </Heading>
77
+ </Row>
78
+ )}
79
+
80
+ <Row gap="4" fillWidth overflowX="auto" paddingBottom="16">
81
+ {product.columns.map((column, columnIndex) => (
82
+ <Column key={columnIndex} padding="4" gap="4" radius="s-4" border="neutral-alpha-weak" background="overlay" fillWidth minWidth={20}>
83
+ <Row fillWidth vertical="center" gap="8" paddingY="8" paddingX="16">
84
+ <Text variant="label-default-m">
85
+ {column.title}
86
+ </Text>
87
+ <Text variant="label-default-s" onBackground="neutral-weak">
88
+ {column.tasks.length}
89
+ </Text>
90
+ </Row>
91
+
92
+ <Column gap="4" fillWidth>
93
+ {column.tasks.map((taskItem, taskIndex) => {
94
+ const typedTask: Task = {
95
+ ...taskItem,
96
+ type: taskItem.type as keyof typeof task
97
+ };
98
+
99
+ return typedTask.href ? (
100
+ <Card
101
+ onBackground="neutral-strong"
102
+ border="neutral-alpha-weak"
103
+ fillWidth
104
+ radius="s"
105
+ key={taskIndex}
106
+ href={typedTask.href}
107
+ padding="16"
108
+ >
109
+ <RoadmapTask task={typedTask} />
110
+ </Card>
111
+ ) : (
112
+ <Column
113
+ onBackground="neutral-strong"
114
+ border="neutral-alpha-weak"
115
+ fillWidth
116
+ radius="s"
117
+ key={taskIndex}
118
+ padding="16"
119
+ gap="8"
120
+ >
121
+ <RoadmapTask task={typedTask} />
122
+ </Column>
123
+ );
124
+ })}
125
+ </Column>
126
+ </Column>
127
+ ))}
128
+ </Row>
129
+ </Column>
130
+ ))}
131
+ </Column>
132
+ );
133
+ }
@@ -0,0 +1,34 @@
1
+ "use client";
2
+
3
+ import { Column, Row, Text, ToggleButton } from "@once-ui-system/core";
4
+
5
+ const nav = [
6
+ { label: "Overview", href: "#" },
7
+ { label: "Analytics", href: "#" },
8
+ { label: "Orders", href: "#" },
9
+ { label: "Customers", href: "#" },
10
+ { label: "Settings", href: "#" },
11
+ ];
12
+
13
+ /** App sidebar shell — compose with Header1 + Table1 in Dashboard1 */
14
+ export const Sidebar1: React.FC<React.ComponentProps<typeof Column>> = ({ ...flex }) => (
15
+ <Column
16
+ fillHeight
17
+ maxWidth={18}
18
+ background="surface"
19
+ borderRight="neutral-alpha-weak"
20
+ padding="8"
21
+ gap="4"
22
+ {...flex}
23
+ >
24
+ <Text variant="label-default-s" onBackground="neutral-weak" padding="12">
25
+ Dashboard
26
+ </Text>
27
+ {nav.map((item) => (
28
+ <ToggleButton key={item.label} fillWidth horizontal="start">
29
+ {item.label}
30
+ </ToggleButton>
31
+ ))}
32
+ <Row flex={1} />
33
+ </Column>
34
+ );
@@ -0,0 +1,17 @@
1
+ "use client";
2
+
3
+ import { Column, Text, ToggleButton } from "@once-ui-system/core";
4
+
5
+ /** Productivity sidebar — minimal stub for Productivity1 reference */
6
+ export const Sidebar2: React.FC<React.ComponentProps<typeof Column>> = ({ ...flex }) => (
7
+ <Column fillHeight maxWidth={18} background="surface" borderRight="neutral-alpha-weak" padding="8" gap="4" {...flex}>
8
+ <Text variant="label-default-s" onBackground="neutral-weak" padding="12">
9
+ Workspace
10
+ </Text>
11
+ {["Inbox", "Today", "Upcoming", "Projects"].map((label) => (
12
+ <ToggleButton key={label} fillWidth horizontal="start">
13
+ {label}
14
+ </ToggleButton>
15
+ ))}
16
+ </Column>
17
+ );