@once-ui-system/core 1.7.11 → 1.7.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +53 -0
- package/README.md +27 -0
- package/agent/once-ui-codegen.mdc +27 -0
- package/ai/catalog.json +1650 -0
- package/ai/catalog.seed.json +411 -0
- package/ai/components/Accordion.json +136 -0
- package/ai/components/AccordionGroup.json +128 -0
- package/ai/components/Animation.json +146 -0
- package/ai/components/Arrow.json +128 -0
- package/ai/components/AutoScroll.json +130 -0
- package/ai/components/Avatar.json +133 -0
- package/ai/components/AvatarGroup.json +129 -0
- package/ai/components/Background.json +131 -0
- package/ai/components/Badge.json +132 -0
- package/ai/components/Banner.json +122 -0
- package/ai/components/BarChart.json +123 -0
- package/ai/components/BlobFx.json +125 -0
- package/ai/components/BlockQuote.json +132 -0
- package/ai/components/Button.json +26 -0
- package/ai/components/Card.json +129 -0
- package/ai/components/Carousel.json +134 -0
- package/ai/components/CelebrationFx.json +132 -0
- package/ai/components/ChartHeader.json +130 -0
- package/ai/components/ChartStatus.json +12 -0
- package/ai/components/Checkbox.json +13 -0
- package/ai/components/Chip.json +132 -0
- package/ai/components/CodeBlock.json +122 -0
- package/ai/components/ColorInput.json +13 -0
- package/ai/components/Column.json +128 -0
- package/ai/components/CompareImage.json +126 -0
- package/ai/components/ContextMenu.json +22 -0
- package/ai/components/CountFx.json +82 -0
- package/ai/components/CountdownFx.json +11 -0
- package/ai/components/Cursor.json +9 -0
- package/ai/components/CursorCard.json +128 -0
- package/ai/components/DataTooltip.json +15 -0
- package/ai/components/DateInput.json +21 -0
- package/ai/components/DatePicker.json +143 -0
- package/ai/components/DateRangeInput.json +18 -0
- package/ai/components/DateRangePicker.json +129 -0
- package/ai/components/Dialog.json +134 -0
- package/ai/components/DialogProvider.json +8 -0
- package/ai/components/Dropdown.json +128 -0
- package/ai/components/DropdownWrapper.json +28 -0
- package/ai/components/EmojiPicker.json +129 -0
- package/ai/components/EmojiPickerDropdown.json +13 -0
- package/ai/components/Fade.json +130 -0
- package/ai/components/FadingLettersFx.json +77 -0
- package/ai/components/Feedback.json +132 -0
- package/ai/components/Flex.json +125 -0
- package/ai/components/FlipFx.json +133 -0
- package/ai/components/GlitchFx.json +128 -0
- package/ai/components/Grid.json +121 -0
- package/ai/components/Heading.json +75 -0
- package/ai/components/HeadingLink.json +127 -0
- package/ai/components/HeadingNav.json +124 -0
- package/ai/components/HoloFx.json +128 -0
- package/ai/components/Hover.json +130 -0
- package/ai/components/HoverCard.json +122 -0
- package/ai/components/Icon.json +132 -0
- package/ai/components/IconButton.json +22 -0
- package/ai/components/InfiniteScroll.json +130 -0
- package/ai/components/InlineCode.json +126 -0
- package/ai/components/Input.json +24 -0
- package/ai/components/InteractiveDetails.json +14 -0
- package/ai/components/Kbar.json +10 -0
- package/ai/components/Kbd.json +127 -0
- package/ai/components/Legend.json +14 -0
- package/ai/components/LetterFx.json +14 -0
- package/ai/components/Line.json +125 -0
- package/ai/components/LineBarChart.json +123 -0
- package/ai/components/LineChart.json +123 -0
- package/ai/components/LinearGauge.json +130 -0
- package/ai/components/LinearGradient.json +15 -0
- package/ai/components/List.json +127 -0
- package/ai/components/ListItem.json +77 -0
- package/ai/components/Logo.json +16 -0
- package/ai/components/LogoCloud.json +124 -0
- package/ai/components/Mask.json +131 -0
- package/ai/components/MasonryGrid.json +132 -0
- package/ai/components/MatrixFx.json +135 -0
- package/ai/components/Media.json +142 -0
- package/ai/components/MediaUpload.json +122 -0
- package/ai/components/MegaMenu.json +125 -0
- package/ai/components/MobileMegaMenu.json +125 -0
- package/ai/components/Modal.json +12 -0
- package/ai/components/NavIcon.json +127 -0
- package/ai/components/NumberInput.json +16 -0
- package/ai/components/OTPInput.json +13 -0
- package/ai/components/OgCard.json +135 -0
- package/ai/components/Option.json +137 -0
- package/ai/components/Particle.json +135 -0
- package/ai/components/PasswordInput.json +8 -0
- package/ai/components/PieChart.json +123 -0
- package/ai/components/ProgressBar.json +131 -0
- package/ai/components/Pulse.json +129 -0
- package/ai/components/RadialGauge.json +134 -0
- package/ai/components/RadialGradient.json +16 -0
- package/ai/components/RadioButton.json +17 -0
- package/ai/components/RevealFx.json +131 -0
- package/ai/components/Row.json +128 -0
- package/ai/components/Schema.json +17 -0
- package/ai/components/ScrollContainer.json +126 -0
- package/ai/components/ScrollToTop.json +124 -0
- package/ai/components/Scroller.json +128 -0
- package/ai/components/SegmentedControl.json +132 -0
- package/ai/components/Select.json +21 -0
- package/ai/components/ShineFx.json +80 -0
- package/ai/components/Skeleton.json +129 -0
- package/ai/components/Slider.json +17 -0
- package/ai/components/SmartLink.json +17 -0
- package/ai/components/Spinner.json +127 -0
- package/ai/components/SplitView.json +129 -0
- package/ai/components/StatusIndicator.json +128 -0
- package/ai/components/StyleOverlay.json +126 -0
- package/ai/components/StylePanel.json +125 -0
- package/ai/components/Swiper.json +130 -0
- package/ai/components/Switch.json +20 -0
- package/ai/components/Table.json +140 -0
- package/ai/components/Tag.json +129 -0
- package/ai/components/TagInput.json +12 -0
- package/ai/components/Text.json +72 -0
- package/ai/components/Textarea.json +24 -0
- package/ai/components/ThemeSwitcher.json +122 -0
- package/ai/components/TiltFx.json +126 -0
- package/ai/components/Timeline.json +126 -0
- package/ai/components/Toast.json +13 -0
- package/ai/components/Toaster.json +14 -0
- package/ai/components/ToggleButton.json +24 -0
- package/ai/components/Tooltip.json +129 -0
- package/ai/components/TypeFx.json +15 -0
- package/ai/components/User.json +15 -0
- package/ai/components/UserMenu.json +16 -0
- package/ai/components/WeatherFx.json +133 -0
- package/ai/examples/auth.tsx +105 -0
- package/ai/examples/blocks/Background6.tsx +25 -0
- package/ai/examples/blocks/Chat1.tsx +70 -0
- package/ai/examples/blocks/Dashboard1.tsx +404 -0
- package/ai/examples/blocks/Feed3.tsx +151 -0
- package/ai/examples/blocks/Footer1.tsx +30 -0
- package/ai/examples/blocks/Footer2.tsx +96 -0
- package/ai/examples/blocks/Footer3.tsx +127 -0
- package/ai/examples/blocks/Footer4.tsx +406 -0
- package/ai/examples/blocks/Header1.tsx +370 -0
- package/ai/examples/blocks/Header2.tsx +98 -0
- package/ai/examples/blocks/Header3.tsx +133 -0
- package/ai/examples/blocks/Header4.tsx +123 -0
- package/ai/examples/blocks/Productivity1.tsx +318 -0
- package/ai/examples/blocks/Roadmap1.tsx +133 -0
- package/ai/examples/blocks/Sidebar1.tsx +34 -0
- package/ai/examples/blocks/Sidebar2.tsx +17 -0
- package/ai/examples/blocks/Sidebar4.tsx +92 -0
- package/ai/examples/blocks/Sidebar5.tsx +73 -0
- package/ai/examples/blocks/Streaming1.tsx +353 -0
- package/ai/examples/blocks/Table1.tsx +303 -0
- package/ai/examples/blocks/Waitlist1.tsx +141 -0
- package/ai/examples/blocks/content/chat1content.ts +65 -0
- package/ai/examples/blocks/content/resources.ts +5 -0
- package/ai/examples/blocks/content/roadmap1content.ts +51 -0
- package/ai/examples/blocks/manifest.json +191 -0
- package/ai/examples/dashboard.tsx +150 -0
- package/ai/examples/marketing-hero.tsx +152 -0
- package/ai/examples/pricing.tsx +219 -0
- package/ai/examples/settings.tsx +140 -0
- package/ai/gotchas.json +85 -0
- package/ai/manifest.json +21 -0
- package/ai/rules.compact.md +73 -0
- package/ai/spec.json +2694 -2701
- package/ai/tasks/auth.json +23 -0
- package/ai/tasks/chat.json +28 -0
- package/ai/tasks/dashboard.json +39 -0
- package/ai/tasks/index.json +12 -0
- package/ai/tasks/marketing-hero.json +38 -0
- package/ai/tasks/pricing.json +42 -0
- package/ai/tasks/roadmap.json +22 -0
- package/ai/tasks/settings.json +34 -0
- package/dist/AGENTS.md +53 -0
- package/dist/README.md +27 -0
- package/dist/agent/once-ui-codegen.mdc +27 -0
- package/dist/ai/catalog.json +1650 -0
- package/dist/ai/catalog.seed.json +411 -0
- package/dist/ai/components/Accordion.json +136 -0
- package/dist/ai/components/AccordionGroup.json +128 -0
- package/dist/ai/components/Animation.json +146 -0
- package/dist/ai/components/Arrow.json +128 -0
- package/dist/ai/components/AutoScroll.json +130 -0
- package/dist/ai/components/Avatar.json +133 -0
- package/dist/ai/components/AvatarGroup.json +129 -0
- package/dist/ai/components/Background.json +131 -0
- package/dist/ai/components/Badge.json +132 -0
- package/dist/ai/components/Banner.json +122 -0
- package/dist/ai/components/BarChart.json +123 -0
- package/dist/ai/components/BlobFx.json +125 -0
- package/dist/ai/components/BlockQuote.json +132 -0
- package/dist/ai/components/Button.json +26 -0
- package/dist/ai/components/Card.json +129 -0
- package/dist/ai/components/Carousel.json +134 -0
- package/dist/ai/components/CelebrationFx.json +132 -0
- package/dist/ai/components/ChartHeader.json +130 -0
- package/dist/ai/components/ChartStatus.json +12 -0
- package/dist/ai/components/Checkbox.json +13 -0
- package/dist/ai/components/Chip.json +132 -0
- package/dist/ai/components/CodeBlock.json +122 -0
- package/dist/ai/components/ColorInput.json +13 -0
- package/dist/ai/components/Column.json +128 -0
- package/dist/ai/components/CompareImage.json +126 -0
- package/dist/ai/components/ContextMenu.json +22 -0
- package/dist/ai/components/CountFx.json +82 -0
- package/dist/ai/components/CountdownFx.json +11 -0
- package/dist/ai/components/Cursor.json +9 -0
- package/dist/ai/components/CursorCard.json +128 -0
- package/dist/ai/components/DataTooltip.json +15 -0
- package/dist/ai/components/DateInput.json +21 -0
- package/dist/ai/components/DatePicker.json +143 -0
- package/dist/ai/components/DateRangeInput.json +18 -0
- package/dist/ai/components/DateRangePicker.json +129 -0
- package/dist/ai/components/Dialog.json +134 -0
- package/dist/ai/components/DialogProvider.json +8 -0
- package/dist/ai/components/Dropdown.json +128 -0
- package/dist/ai/components/DropdownWrapper.json +28 -0
- package/dist/ai/components/EmojiPicker.json +129 -0
- package/dist/ai/components/EmojiPickerDropdown.json +13 -0
- package/dist/ai/components/Fade.json +130 -0
- package/dist/ai/components/FadingLettersFx.json +77 -0
- package/dist/ai/components/Feedback.json +132 -0
- package/dist/ai/components/Flex.json +125 -0
- package/dist/ai/components/FlipFx.json +133 -0
- package/dist/ai/components/GlitchFx.json +128 -0
- package/dist/ai/components/Grid.json +121 -0
- package/dist/ai/components/Heading.json +75 -0
- package/dist/ai/components/HeadingLink.json +127 -0
- package/dist/ai/components/HeadingNav.json +124 -0
- package/dist/ai/components/HoloFx.json +128 -0
- package/dist/ai/components/Hover.json +130 -0
- package/dist/ai/components/HoverCard.json +122 -0
- package/dist/ai/components/Icon.json +132 -0
- package/dist/ai/components/IconButton.json +22 -0
- package/dist/ai/components/InfiniteScroll.json +130 -0
- package/dist/ai/components/InlineCode.json +126 -0
- package/dist/ai/components/Input.json +24 -0
- package/dist/ai/components/InteractiveDetails.json +14 -0
- package/dist/ai/components/Kbar.json +10 -0
- package/dist/ai/components/Kbd.json +127 -0
- package/dist/ai/components/Legend.json +14 -0
- package/dist/ai/components/LetterFx.json +14 -0
- package/dist/ai/components/Line.json +125 -0
- package/dist/ai/components/LineBarChart.json +123 -0
- package/dist/ai/components/LineChart.json +123 -0
- package/dist/ai/components/LinearGauge.json +130 -0
- package/dist/ai/components/LinearGradient.json +15 -0
- package/dist/ai/components/List.json +127 -0
- package/dist/ai/components/ListItem.json +77 -0
- package/dist/ai/components/Logo.json +16 -0
- package/dist/ai/components/LogoCloud.json +124 -0
- package/dist/ai/components/Mask.json +131 -0
- package/dist/ai/components/MasonryGrid.json +132 -0
- package/dist/ai/components/MatrixFx.json +135 -0
- package/dist/ai/components/Media.json +142 -0
- package/dist/ai/components/MediaUpload.json +122 -0
- package/dist/ai/components/MegaMenu.json +125 -0
- package/dist/ai/components/MobileMegaMenu.json +125 -0
- package/dist/ai/components/Modal.json +12 -0
- package/dist/ai/components/NavIcon.json +127 -0
- package/dist/ai/components/NumberInput.json +16 -0
- package/dist/ai/components/OTPInput.json +13 -0
- package/dist/ai/components/OgCard.json +135 -0
- package/dist/ai/components/Option.json +137 -0
- package/dist/ai/components/Particle.json +135 -0
- package/dist/ai/components/PasswordInput.json +8 -0
- package/dist/ai/components/PieChart.json +123 -0
- package/dist/ai/components/ProgressBar.json +131 -0
- package/dist/ai/components/Pulse.json +129 -0
- package/dist/ai/components/RadialGauge.json +134 -0
- package/dist/ai/components/RadialGradient.json +16 -0
- package/dist/ai/components/RadioButton.json +17 -0
- package/dist/ai/components/RevealFx.json +131 -0
- package/dist/ai/components/Row.json +128 -0
- package/dist/ai/components/Schema.json +17 -0
- package/dist/ai/components/ScrollContainer.json +126 -0
- package/dist/ai/components/ScrollToTop.json +124 -0
- package/dist/ai/components/Scroller.json +128 -0
- package/dist/ai/components/SegmentedControl.json +132 -0
- package/dist/ai/components/Select.json +21 -0
- package/dist/ai/components/ShineFx.json +80 -0
- package/dist/ai/components/Skeleton.json +129 -0
- package/dist/ai/components/Slider.json +17 -0
- package/dist/ai/components/SmartLink.json +17 -0
- package/dist/ai/components/Spinner.json +127 -0
- package/dist/ai/components/SplitView.json +129 -0
- package/dist/ai/components/StatusIndicator.json +128 -0
- package/dist/ai/components/StyleOverlay.json +126 -0
- package/dist/ai/components/StylePanel.json +125 -0
- package/dist/ai/components/Swiper.json +130 -0
- package/dist/ai/components/Switch.json +20 -0
- package/dist/ai/components/Table.json +140 -0
- package/dist/ai/components/Tag.json +129 -0
- package/dist/ai/components/TagInput.json +12 -0
- package/dist/ai/components/Text.json +72 -0
- package/dist/ai/components/Textarea.json +24 -0
- package/dist/ai/components/ThemeSwitcher.json +122 -0
- package/dist/ai/components/TiltFx.json +126 -0
- package/dist/ai/components/Timeline.json +126 -0
- package/dist/ai/components/Toast.json +13 -0
- package/dist/ai/components/Toaster.json +14 -0
- package/dist/ai/components/ToggleButton.json +24 -0
- package/dist/ai/components/Tooltip.json +129 -0
- package/dist/ai/components/TypeFx.json +15 -0
- package/dist/ai/components/User.json +15 -0
- package/dist/ai/components/UserMenu.json +16 -0
- package/dist/ai/components/WeatherFx.json +133 -0
- package/dist/ai/eval-tasks.md +71 -0
- package/dist/ai/examples/blocks/manifest.json +191 -0
- package/dist/ai/gotchas.json +85 -0
- package/dist/ai/manifest.json +21 -0
- package/dist/ai/recipes.md +149 -0
- package/dist/ai/rules.compact.md +73 -0
- package/dist/ai/rules.md +217 -0
- package/dist/ai/spec.json +2695 -0
- package/dist/ai/tasks/auth.json +23 -0
- package/dist/ai/tasks/chat.json +28 -0
- package/dist/ai/tasks/dashboard.json +39 -0
- package/dist/ai/tasks/index.json +12 -0
- package/dist/ai/tasks/marketing-hero.json +38 -0
- package/dist/ai/tasks/pricing.json +42 -0
- package/dist/ai/tasks/roadmap.json +22 -0
- package/dist/ai/tasks/settings.json +34 -0
- package/dist/components/ContextMenu.d.ts +2 -2
- package/dist/components/ContextMenu.d.ts.map +1 -1
- package/dist/components/ContextMenu.js +3 -3
- package/dist/components/ContextMenu.js.map +1 -1
- package/dist/components/ElementType.d.ts.map +1 -1
- package/dist/components/ElementType.js +6 -4
- package/dist/components/ElementType.js.map +1 -1
- package/dist/components/Media.d.ts.map +1 -1
- package/dist/components/Media.js +6 -3
- package/dist/components/Media.js.map +1 -1
- package/dist/components/MediaVideoPlayer.d.ts +12 -0
- package/dist/components/MediaVideoPlayer.d.ts.map +1 -0
- package/dist/components/MediaVideoPlayer.js +246 -0
- package/dist/components/MediaVideoPlayer.js.map +1 -0
- package/dist/components/MediaVideoPlayer.module.scss +90 -0
- package/dist/components/Table.d.ts +34 -6
- package/dist/components/Table.d.ts.map +1 -1
- package/dist/components/Table.js +114 -30
- package/dist/components/Table.js.map +1 -1
- package/dist/components/Table.module.scss +174 -3
- package/dist/components/ThemeInit.d.ts.map +1 -1
- package/dist/components/ThemeInit.js +2 -1
- package/dist/components/ThemeInit.js.map +1 -1
- package/dist/components/Timeline.d.ts +1 -1
- package/dist/components/Timeline.d.ts.map +1 -1
- package/dist/components/Timeline.js +16 -52
- package/dist/components/Timeline.js.map +1 -1
- package/dist/data/emoji-data.json +0 -10
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +7 -2
- package/dist/icons.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/code/CodeBlock.impl.d.ts.map +1 -1
- package/dist/modules/code/CodeBlock.impl.js +11 -5
- package/dist/modules/code/CodeBlock.impl.js.map +1 -1
- package/dist/modules/seo/Schema.d.ts.map +1 -1
- package/dist/modules/seo/Schema.js +3 -4
- package/dist/modules/seo/Schema.js.map +1 -1
- package/dist/package.json +33 -3
- package/dist/server/og-url-validation.d.ts +10 -0
- package/dist/server/og-url-validation.d.ts.map +1 -0
- package/dist/server/og-url-validation.js +234 -0
- package/dist/server/og-url-validation.js.map +1 -0
- package/dist/server/og-utils.d.ts +5 -2
- package/dist/server/og-utils.d.ts.map +1 -1
- package/dist/server/og-utils.js +39 -14
- package/dist/server/og-utils.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/safe-html.d.ts +19 -0
- package/dist/utils/safe-html.d.ts.map +1 -0
- package/dist/utils/safe-html.js +43 -0
- package/dist/utils/safe-html.js.map +1 -0
- package/package.json +159 -127
- package/scripts/copy-files.js +103 -0
- package/scripts/generate-ai-spec.js +464 -0
- package/scripts/generate-emoji-data.js +128 -0
- package/scripts/init-agent.js +156 -0
- package/scripts/validate-ai-code.js +149 -0
- package/LICENSE.md +0 -21
- package/next-env.d.ts +0 -5
|
@@ -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,150 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Gold example: dashboard
|
|
5
|
+
* Target: KPI stat row, chart placeholders, recent activity table
|
|
6
|
+
*/
|
|
7
|
+
import { useEffect, useRef, useState } from "react";
|
|
8
|
+
import {
|
|
9
|
+
Column,
|
|
10
|
+
CountFx,
|
|
11
|
+
Grid,
|
|
12
|
+
Heading,
|
|
13
|
+
Icon,
|
|
14
|
+
Line,
|
|
15
|
+
RevealFx,
|
|
16
|
+
Row,
|
|
17
|
+
SegmentedControl,
|
|
18
|
+
StatusIndicator,
|
|
19
|
+
Table,
|
|
20
|
+
Tag,
|
|
21
|
+
Text,
|
|
22
|
+
useInViewport,
|
|
23
|
+
} from "@once-ui-system/core";
|
|
24
|
+
|
|
25
|
+
const stats = [
|
|
26
|
+
{ label: "Revenue", value: 128400, prefix: "$", change: "+12.4%", up: true },
|
|
27
|
+
{ label: "Active users", value: 2847, change: "+8.1%", up: true },
|
|
28
|
+
{ label: "Churn rate", value: 2.1, suffix: "%", change: "−0.3%", up: true },
|
|
29
|
+
{ label: "Support tickets", value: 34, change: "+4", up: false },
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const activity = {
|
|
33
|
+
headers: [
|
|
34
|
+
{ content: "Event", key: "event" },
|
|
35
|
+
{ content: "User", key: "user" },
|
|
36
|
+
{ content: "Status", key: "status" },
|
|
37
|
+
{ content: "Time", key: "time" },
|
|
38
|
+
],
|
|
39
|
+
rows: [
|
|
40
|
+
["Plan upgraded to Pro", "jane@acme.co", <Tag size="s" variant="success">Completed</Tag>, "2m ago"],
|
|
41
|
+
["New signup", "alex@studio.io", <Tag size="s" variant="brand">New</Tag>, "14m ago"],
|
|
42
|
+
["Payment failed", "ops@build.dev", <Tag size="s" variant="danger">Action</Tag>, "1h ago"],
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export function DashboardExample() {
|
|
47
|
+
const [range, setRange] = useState("7d");
|
|
48
|
+
const statsRef = useRef<HTMLDivElement>(null);
|
|
49
|
+
const inViewport = useInViewport(statsRef);
|
|
50
|
+
const [seen, setSeen] = useState(false);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (inViewport) setSeen(true);
|
|
53
|
+
}, [inViewport]);
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<Column as="main" fillWidth horizontal="center" paddingY="48" paddingX="24" gap="40">
|
|
57
|
+
<Column fillWidth maxWidth="l" gap="40">
|
|
58
|
+
<Row fillWidth horizontal="between" vertical="end" gap="24" s={{ direction: "column", horizontal: "start" }}>
|
|
59
|
+
<Column gap="8">
|
|
60
|
+
<Text variant="label-default-s" onBackground="brand-medium">
|
|
61
|
+
Analytics
|
|
62
|
+
</Text>
|
|
63
|
+
<Heading as="h1" variant="display-strong-s">
|
|
64
|
+
Overview
|
|
65
|
+
</Heading>
|
|
66
|
+
</Column>
|
|
67
|
+
<SegmentedControl
|
|
68
|
+
selected={range}
|
|
69
|
+
onToggle={setRange}
|
|
70
|
+
buttons={[
|
|
71
|
+
{ value: "7d", label: "7 days" },
|
|
72
|
+
{ value: "30d", label: "30 days" },
|
|
73
|
+
{ value: "90d", label: "90 days" },
|
|
74
|
+
]}
|
|
75
|
+
/>
|
|
76
|
+
</Row>
|
|
77
|
+
|
|
78
|
+
<Grid ref={statsRef} columns="4" gap="16" m={{ columns: 2 }} s={{ columns: 1 }}>
|
|
79
|
+
{stats.map((stat, index) => (
|
|
80
|
+
<RevealFx key={stat.label} fill trigger={seen} translateY="8" delay={index * 0.1}>
|
|
81
|
+
<Column background="surface" border="neutral-alpha-weak" radius="l" padding="24" gap="16">
|
|
82
|
+
<Row fillWidth horizontal="between" vertical="center">
|
|
83
|
+
<Text variant="label-default-s" onBackground="neutral-weak">
|
|
84
|
+
{stat.label}
|
|
85
|
+
</Text>
|
|
86
|
+
<StatusIndicator color={stat.up ? "green" : "orange"} />
|
|
87
|
+
</Row>
|
|
88
|
+
<Row vertical="end" gap="4">
|
|
89
|
+
{stat.prefix && (
|
|
90
|
+
<Text variant="display-strong-xs">{stat.prefix}</Text>
|
|
91
|
+
)}
|
|
92
|
+
<CountFx
|
|
93
|
+
variant="display-strong-xs"
|
|
94
|
+
value={seen ? stat.value : 0}
|
|
95
|
+
speed={1200}
|
|
96
|
+
separator=","
|
|
97
|
+
/>
|
|
98
|
+
{stat.suffix && (
|
|
99
|
+
<Text variant="display-strong-xs">{stat.suffix}</Text>
|
|
100
|
+
)}
|
|
101
|
+
</Row>
|
|
102
|
+
<Text variant="label-default-s" onBackground={stat.up ? "success-medium" : "warning-medium"}>
|
|
103
|
+
{stat.change}
|
|
104
|
+
</Text>
|
|
105
|
+
</Column>
|
|
106
|
+
</RevealFx>
|
|
107
|
+
))}
|
|
108
|
+
</Grid>
|
|
109
|
+
|
|
110
|
+
<Grid columns="2" gap="24" s={{ columns: 1 }}>
|
|
111
|
+
<Column background="surface" border="neutral-alpha-weak" radius="l" padding="24" gap="16" minHeight={32}>
|
|
112
|
+
<Heading as="h2" variant="heading-strong-s">
|
|
113
|
+
Revenue trend
|
|
114
|
+
</Heading>
|
|
115
|
+
<Column flex={1} center background="neutral-alpha-weak" radius="m" padding="48">
|
|
116
|
+
<Icon name="linearGauge" size="l" onBackground="neutral-weak" />
|
|
117
|
+
<Text variant="label-default-s" onBackground="neutral-weak">
|
|
118
|
+
Chart area — use recharts or your data viz module
|
|
119
|
+
</Text>
|
|
120
|
+
</Column>
|
|
121
|
+
</Column>
|
|
122
|
+
<Column background="surface" border="neutral-alpha-weak" radius="l" padding="24" gap="16" minHeight={32}>
|
|
123
|
+
<Heading as="h2" variant="heading-strong-s">
|
|
124
|
+
Signups by channel
|
|
125
|
+
</Heading>
|
|
126
|
+
<Column flex={1} center background="neutral-alpha-weak" radius="m" padding="48">
|
|
127
|
+
<Icon name="radialGauge" size="l" onBackground="neutral-weak" />
|
|
128
|
+
<Text variant="label-default-s" onBackground="neutral-weak">
|
|
129
|
+
Chart area
|
|
130
|
+
</Text>
|
|
131
|
+
</Column>
|
|
132
|
+
</Column>
|
|
133
|
+
</Grid>
|
|
134
|
+
|
|
135
|
+
<Column background="surface" border="neutral-alpha-weak" radius="l" padding="24" gap="24">
|
|
136
|
+
<Row fillWidth horizontal="between" vertical="center">
|
|
137
|
+
<Heading as="h2" variant="heading-strong-s">
|
|
138
|
+
Recent activity
|
|
139
|
+
</Heading>
|
|
140
|
+
<Text variant="label-default-s" onBackground="brand-medium" cursor="interactive">
|
|
141
|
+
View all
|
|
142
|
+
</Text>
|
|
143
|
+
</Row>
|
|
144
|
+
<Line />
|
|
145
|
+
<Table fillWidth data={activity} />
|
|
146
|
+
</Column>
|
|
147
|
+
</Column>
|
|
148
|
+
</Column>
|
|
149
|
+
);
|
|
150
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Gold example: marketing-hero
|
|
5
|
+
* Target: once-ui.com homepage — glow + dots, display headline, feature grid, CTAs
|
|
6
|
+
*/
|
|
7
|
+
import {
|
|
8
|
+
Background,
|
|
9
|
+
Button,
|
|
10
|
+
Column,
|
|
11
|
+
Grid,
|
|
12
|
+
Heading,
|
|
13
|
+
Icon,
|
|
14
|
+
Line,
|
|
15
|
+
RevealFx,
|
|
16
|
+
Row,
|
|
17
|
+
Text,
|
|
18
|
+
} from "@once-ui-system/core";
|
|
19
|
+
|
|
20
|
+
const features = [
|
|
21
|
+
{
|
|
22
|
+
icon: "document" as const,
|
|
23
|
+
title: "Contexts",
|
|
24
|
+
description: "App-level state for themes, toasts, icons and layouts.",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
icon: "sparkle" as const,
|
|
28
|
+
title: "Basics",
|
|
29
|
+
description: "Wrappers and utilities that make complex functionality approachable.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
icon: "radialGauge" as const,
|
|
33
|
+
title: "Form controls",
|
|
34
|
+
description: "Interactive elements for forms and data entry.",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
icon: "document" as const,
|
|
38
|
+
title: "Static elements",
|
|
39
|
+
description: "Feedbacks, badges, tags, skeletons and more.",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
icon: "linearGauge" as const,
|
|
43
|
+
title: "Data visualization",
|
|
44
|
+
description: "Responsive, interactive charts and gauges.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
icon: "sparkle" as const,
|
|
48
|
+
title: "Modules",
|
|
49
|
+
description: "High functionality, minimal syntax: megamenu, command palette.",
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
export function MarketingHeroExample() {
|
|
54
|
+
return (
|
|
55
|
+
<Column as="main" fillWidth horizontal="center" gap="104" paddingBottom="104">
|
|
56
|
+
{/* Full-bleed hero — ambient layer outside maxWidth */}
|
|
57
|
+
<Column fillWidth horizontal="center" paddingY="80">
|
|
58
|
+
<Background
|
|
59
|
+
position="absolute"
|
|
60
|
+
top="0"
|
|
61
|
+
left="0"
|
|
62
|
+
fill
|
|
63
|
+
pointerEvents="none"
|
|
64
|
+
gradient={{
|
|
65
|
+
display: true,
|
|
66
|
+
colorStart: "brand-alpha-medium",
|
|
67
|
+
colorEnd: "static-transparent",
|
|
68
|
+
x: 50,
|
|
69
|
+
y: 0,
|
|
70
|
+
width: 150,
|
|
71
|
+
height: 80,
|
|
72
|
+
opacity: 60,
|
|
73
|
+
}}
|
|
74
|
+
dots={{ display: true, color: "neutral-alpha-weak", size: "2", opacity: 40 }}
|
|
75
|
+
/>
|
|
76
|
+
<Column zIndex={1} horizontal="center" gap="24" maxWidth={48}>
|
|
77
|
+
<RevealFx translateY="16">
|
|
78
|
+
<Column horizontal="center" gap="16">
|
|
79
|
+
<Text variant="label-default-s" onBackground="brand-medium">
|
|
80
|
+
v1.7 — Discover what's new
|
|
81
|
+
</Text>
|
|
82
|
+
<Heading as="h1" variant="display-strong-l" align="center">
|
|
83
|
+
Write 70% less code with human-readable, machine-writable syntax
|
|
84
|
+
</Heading>
|
|
85
|
+
</Column>
|
|
86
|
+
</RevealFx>
|
|
87
|
+
<RevealFx delay={0.1} translateY="16">
|
|
88
|
+
<Text variant="body-default-l" onBackground="neutral-weak" align="center">
|
|
89
|
+
Build semantic layouts with Row, Column and Grid. Add 100+ pre-styled components.
|
|
90
|
+
Manage themes in a single file.
|
|
91
|
+
</Text>
|
|
92
|
+
</RevealFx>
|
|
93
|
+
<RevealFx delay={0.2} translateY="16">
|
|
94
|
+
<Row gap="12" s={{ direction: "column" }}>
|
|
95
|
+
<Button arrowIcon>View docs</Button>
|
|
96
|
+
<Button variant="secondary" suffixIcon="arrowUpRight">
|
|
97
|
+
Discover Pro
|
|
98
|
+
</Button>
|
|
99
|
+
</Row>
|
|
100
|
+
</RevealFx>
|
|
101
|
+
</Column>
|
|
102
|
+
</Column>
|
|
103
|
+
|
|
104
|
+
{/* Feature grid — left-aligned section header, not repeated centered blocks */}
|
|
105
|
+
<Column fillWidth horizontal="center">
|
|
106
|
+
<Column fillWidth maxWidth="l" gap="40">
|
|
107
|
+
<Column gap="12" maxWidth={32}>
|
|
108
|
+
<Text variant="label-default-s" onBackground="brand-medium">
|
|
109
|
+
Components
|
|
110
|
+
</Text>
|
|
111
|
+
<Heading as="h2" variant="display-strong-xs">
|
|
112
|
+
Copy and paste. Insert from 100+ open-source, pre-styled components.
|
|
113
|
+
</Heading>
|
|
114
|
+
</Column>
|
|
115
|
+
<Grid columns="3" gap="24" m={{ columns: 2 }} s={{ columns: 1 }}>
|
|
116
|
+
{features.map((feature) => (
|
|
117
|
+
<Column
|
|
118
|
+
key={feature.title}
|
|
119
|
+
background="surface"
|
|
120
|
+
border="neutral-alpha-weak"
|
|
121
|
+
radius="l"
|
|
122
|
+
padding="24"
|
|
123
|
+
gap="16"
|
|
124
|
+
>
|
|
125
|
+
<Row
|
|
126
|
+
center
|
|
127
|
+
width={10}
|
|
128
|
+
height={10}
|
|
129
|
+
radius="m"
|
|
130
|
+
background="brand-alpha-weak"
|
|
131
|
+
border="brand-alpha-medium"
|
|
132
|
+
>
|
|
133
|
+
<Icon name={feature.icon} size="s" onBackground="brand-medium" />
|
|
134
|
+
</Row>
|
|
135
|
+
<Heading as="h3" variant="heading-strong-s">
|
|
136
|
+
{feature.title}
|
|
137
|
+
</Heading>
|
|
138
|
+
<Text variant="body-default-s" onBackground="neutral-weak">
|
|
139
|
+
{feature.description}
|
|
140
|
+
</Text>
|
|
141
|
+
</Column>
|
|
142
|
+
))}
|
|
143
|
+
</Grid>
|
|
144
|
+
</Column>
|
|
145
|
+
</Column>
|
|
146
|
+
|
|
147
|
+
<Column fillWidth horizontal="center">
|
|
148
|
+
<Line width="40" />
|
|
149
|
+
</Column>
|
|
150
|
+
</Column>
|
|
151
|
+
);
|
|
152
|
+
}
|