@stampui/blocks 1.1.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/manifests.js +917 -170
- package/package.json +15 -10
- package/src/components/blocks/animated-counter.tsx +70 -0
- package/src/components/blocks/gradient-text.tsx +39 -0
- package/src/components/blocks/grid-wave.tsx +40 -0
- package/src/components/blocks/loading-card.tsx +48 -0
- package/src/components/blocks/loading-dots.tsx +68 -0
- package/src/components/blocks/orbit-trail.tsx +30 -0
- package/src/components/blocks/progress-ring.tsx +72 -0
- package/src/components/blocks/registry-card.tsx +6 -7
- package/src/components/blocks/signal-arc.tsx +32 -0
- package/src/components/blocks/typewriter-text.tsx +62 -0
- package/src/components/core/alert-dialog.tsx +2 -2
- package/src/components/core/avatar.tsx +8 -4
- package/src/components/core/button.tsx +1 -1
- package/src/components/core/checkbox.tsx +1 -1
- package/src/components/core/combobox.tsx +1 -1
- package/src/components/core/command.tsx +7 -4
- package/src/components/core/date-picker.tsx +1 -1
- package/src/components/core/dialog.tsx +1 -1
- package/src/components/core/drawer.tsx +1 -1
- package/src/components/core/input.tsx +2 -0
- package/src/components/core/label.tsx +1 -1
- package/src/components/core/multi-select.tsx +1 -1
- package/src/components/core/native-select.tsx +1 -1
- package/src/components/core/password-input.tsx +3 -0
- package/src/components/core/radio-group.tsx +1 -1
- package/src/components/core/resizable.tsx +1 -1
- package/src/components/core/select.tsx +1 -1
- package/src/components/core/sheet.tsx +1 -1
- package/src/components/core/slider.tsx +1 -1
- package/src/components/core/status-pulse.tsx +6 -0
- package/src/components/core/switch.tsx +1 -1
- package/src/components/core/table.tsx +7 -2
- package/src/components/core/tabs.tsx +1 -1
- package/src/components/core/toggle.tsx +1 -1
- package/src/components/core/typing-indicator.tsx +41 -27
- package/src/manifests.ts +932 -183
- package/src/components/blocks/ai-chat-shell.tsx +0 -97
- package/src/components/blocks/auth-panel.tsx +0 -203
- package/src/components/blocks/dashboard-shell.tsx +0 -135
- package/src/components/blocks/notification-center.tsx +0 -185
- package/src/components/blocks/onboarding-flow.tsx +0 -230
- package/src/components/blocks/project-command-center.tsx +0 -188
- package/src/components/blocks/prompt-input.tsx +0 -81
- package/src/components/blocks/settings-layout.tsx +0 -178
- package/src/components/blocks/token-stream.tsx +0 -42
- package/src/components/core/carousel.tsx +0 -170
- package/src/components/core/chart.tsx +0 -377
- package/src/components/core/data-table.tsx +0 -173
- package/src/components/core/file-upload.tsx +0 -143
- package/src/components/core/input-otp.tsx +0 -108
- package/src/components/core/stepper.tsx +0 -111
- package/src/components/core/timeline.tsx +0 -81
package/src/manifests.ts
CHANGED
|
@@ -949,7 +949,7 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
949
949
|
version: "1.0.0",
|
|
950
950
|
updatedAt: "2026-05-10",
|
|
951
951
|
changelog: ["Initial release"],
|
|
952
|
-
status: "
|
|
952
|
+
status: "pro",
|
|
953
953
|
difficulty: "intermediate",
|
|
954
954
|
frameworks: ["nextjs", "react", "vite"],
|
|
955
955
|
dependencies: ["lucide-react"],
|
|
@@ -968,7 +968,7 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
968
968
|
version: "1.0.0",
|
|
969
969
|
updatedAt: "2026-05-10",
|
|
970
970
|
changelog: ["Initial release"],
|
|
971
|
-
status: "
|
|
971
|
+
status: "pro",
|
|
972
972
|
difficulty: "intermediate",
|
|
973
973
|
frameworks: ["nextjs", "react", "vite"],
|
|
974
974
|
dependencies: [],
|
|
@@ -987,7 +987,7 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
987
987
|
version: "1.0.0",
|
|
988
988
|
updatedAt: "2026-05-10",
|
|
989
989
|
changelog: ["Initial release"],
|
|
990
|
-
status: "
|
|
990
|
+
status: "pro",
|
|
991
991
|
difficulty: "advanced",
|
|
992
992
|
frameworks: ["nextjs", "react", "vite"],
|
|
993
993
|
dependencies: ["lucide-react"],
|
|
@@ -1006,7 +1006,7 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1006
1006
|
version: "1.0.0",
|
|
1007
1007
|
updatedAt: "2026-05-10",
|
|
1008
1008
|
changelog: ["Initial release"],
|
|
1009
|
-
status: "
|
|
1009
|
+
status: "pro",
|
|
1010
1010
|
difficulty: "intermediate",
|
|
1011
1011
|
frameworks: ["nextjs", "react", "vite"],
|
|
1012
1012
|
dependencies: ["lucide-react"],
|
|
@@ -1025,7 +1025,7 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1025
1025
|
version: "1.0.0",
|
|
1026
1026
|
updatedAt: "2026-05-10",
|
|
1027
1027
|
changelog: ["Initial release"],
|
|
1028
|
-
status: "
|
|
1028
|
+
status: "pro",
|
|
1029
1029
|
difficulty: "intermediate",
|
|
1030
1030
|
frameworks: ["nextjs", "react", "vite"],
|
|
1031
1031
|
dependencies: ["lucide-react"],
|
|
@@ -1044,7 +1044,7 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1044
1044
|
version: "1.0.0",
|
|
1045
1045
|
updatedAt: "2026-05-10",
|
|
1046
1046
|
changelog: ["Initial release"],
|
|
1047
|
-
status: "
|
|
1047
|
+
status: "pro",
|
|
1048
1048
|
difficulty: "beginner",
|
|
1049
1049
|
frameworks: ["nextjs", "react", "vite"],
|
|
1050
1050
|
dependencies: [],
|
|
@@ -1063,7 +1063,7 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1063
1063
|
version: "1.0.0",
|
|
1064
1064
|
updatedAt: "2026-05-10",
|
|
1065
1065
|
changelog: ["Initial release"],
|
|
1066
|
-
status: "
|
|
1066
|
+
status: "pro",
|
|
1067
1067
|
difficulty: "intermediate",
|
|
1068
1068
|
frameworks: ["nextjs", "react", "vite"],
|
|
1069
1069
|
dependencies: [],
|
|
@@ -1126,7 +1126,7 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1126
1126
|
version: "1.0.0",
|
|
1127
1127
|
updatedAt: "2026-05-09",
|
|
1128
1128
|
changelog: ["Initial release"],
|
|
1129
|
-
status: "
|
|
1129
|
+
status: "pro",
|
|
1130
1130
|
difficulty: "beginner",
|
|
1131
1131
|
frameworks: ["nextjs", "react"],
|
|
1132
1132
|
dependencies: [],
|
|
@@ -1145,7 +1145,7 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1145
1145
|
version: "1.0.0",
|
|
1146
1146
|
updatedAt: "2026-05-09",
|
|
1147
1147
|
changelog: ["Initial release"],
|
|
1148
|
-
status: "
|
|
1148
|
+
status: "pro",
|
|
1149
1149
|
difficulty: "beginner",
|
|
1150
1150
|
frameworks: ["nextjs", "react"],
|
|
1151
1151
|
dependencies: ["lucide-react"],
|
|
@@ -1227,7 +1227,7 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1227
1227
|
version: "1.0.0",
|
|
1228
1228
|
updatedAt: "2026-05-09",
|
|
1229
1229
|
changelog: ["Initial release"],
|
|
1230
|
-
status: "
|
|
1230
|
+
status: "pro",
|
|
1231
1231
|
difficulty: "intermediate",
|
|
1232
1232
|
frameworks: ["nextjs", "react"],
|
|
1233
1233
|
dependencies: ["lucide-react"],
|
|
@@ -1370,25 +1370,6 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1370
1370
|
supportsLightMode: true,
|
|
1371
1371
|
promptReady: true,
|
|
1372
1372
|
},
|
|
1373
|
-
"project-command-center": {
|
|
1374
|
-
slug: "project-command-center",
|
|
1375
|
-
title: "Project Command Center",
|
|
1376
|
-
description: "Compact project dashboard with launch metrics, milestone progress, team avatars, activity, and health tabs.",
|
|
1377
|
-
category: "App",
|
|
1378
|
-
tags: ["dashboard", "project", "progress", "team", "status"],
|
|
1379
|
-
version: "1.0.0",
|
|
1380
|
-
updatedAt: "2026-05-11",
|
|
1381
|
-
changelog: ["Initial release"],
|
|
1382
|
-
status: "new",
|
|
1383
|
-
difficulty: "intermediate",
|
|
1384
|
-
frameworks: ["nextjs", "react"],
|
|
1385
|
-
dependencies: ["lucide-react"],
|
|
1386
|
-
files: [{ path: "components/blocks/project-command-center.tsx", type: "block" }],
|
|
1387
|
-
tokens: ["background", "card", "border", "foreground", "muted-foreground", "surface"],
|
|
1388
|
-
supportsDarkMode: true,
|
|
1389
|
-
supportsLightMode: true,
|
|
1390
|
-
promptReady: true,
|
|
1391
|
-
},
|
|
1392
1373
|
"registry-explorer": {
|
|
1393
1374
|
slug: "registry-explorer",
|
|
1394
1375
|
title: "Registry Explorer",
|
|
@@ -1678,14 +1659,14 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1678
1659
|
promptReady: true,
|
|
1679
1660
|
},
|
|
1680
1661
|
|
|
1681
|
-
// ───
|
|
1662
|
+
// ─── Motion ───────────────────────────────────────────────────────────────
|
|
1682
1663
|
|
|
1683
|
-
"
|
|
1684
|
-
slug: "
|
|
1685
|
-
title: "
|
|
1686
|
-
description: "
|
|
1687
|
-
category: "
|
|
1688
|
-
tags: ["
|
|
1664
|
+
"orbit-trail": {
|
|
1665
|
+
slug: "orbit-trail",
|
|
1666
|
+
title: "Orbit Trail",
|
|
1667
|
+
description: "Three dots orbiting a center point at different radii and speeds.",
|
|
1668
|
+
category: "Motion",
|
|
1669
|
+
tags: ["loader", "spinner", "orbital", "animation"],
|
|
1689
1670
|
version: "1.0.0",
|
|
1690
1671
|
updatedAt: "2026-05-17",
|
|
1691
1672
|
changelog: ["Initial release"],
|
|
@@ -1693,19 +1674,18 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1693
1674
|
difficulty: "beginner",
|
|
1694
1675
|
frameworks: ["nextjs", "react", "vite"],
|
|
1695
1676
|
dependencies: [],
|
|
1696
|
-
files: [{ path: "components/blocks/
|
|
1697
|
-
tokens: ["foreground"
|
|
1677
|
+
files: [{ path: "components/blocks/orbit-trail.tsx", type: "block" }],
|
|
1678
|
+
tokens: ["foreground"],
|
|
1698
1679
|
supportsDarkMode: true,
|
|
1699
|
-
supportsLightMode:
|
|
1680
|
+
supportsLightMode: true,
|
|
1700
1681
|
promptReady: true,
|
|
1701
1682
|
},
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
tags: ["changelog", "timeline", "updates", "versioning"],
|
|
1683
|
+
"grid-wave": {
|
|
1684
|
+
slug: "grid-wave",
|
|
1685
|
+
title: "Grid Wave",
|
|
1686
|
+
description: "4×4 dot grid with diagonal ripple wave animation.",
|
|
1687
|
+
category: "Motion",
|
|
1688
|
+
tags: ["loader", "grid", "dots", "wave", "animation"],
|
|
1709
1689
|
version: "1.0.0",
|
|
1710
1690
|
updatedAt: "2026-05-17",
|
|
1711
1691
|
changelog: ["Initial release"],
|
|
@@ -1713,139 +1693,135 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1713
1693
|
difficulty: "beginner",
|
|
1714
1694
|
frameworks: ["nextjs", "react", "vite"],
|
|
1715
1695
|
dependencies: [],
|
|
1716
|
-
files: [{ path: "components/blocks/
|
|
1717
|
-
tokens: ["foreground"
|
|
1696
|
+
files: [{ path: "components/blocks/grid-wave.tsx", type: "block" }],
|
|
1697
|
+
tokens: ["foreground"],
|
|
1718
1698
|
supportsDarkMode: true,
|
|
1719
|
-
supportsLightMode:
|
|
1699
|
+
supportsLightMode: true,
|
|
1720
1700
|
promptReady: true,
|
|
1721
1701
|
},
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
tags: ["faq", "accordion", "help", "landing"],
|
|
1702
|
+
"signal-arc": {
|
|
1703
|
+
slug: "signal-arc",
|
|
1704
|
+
title: "Signal Arc",
|
|
1705
|
+
description: "Concentric rings that expand and fade like sonar pulses.",
|
|
1706
|
+
category: "Motion",
|
|
1707
|
+
tags: ["loader", "pulse", "sonar", "rings", "animation"],
|
|
1729
1708
|
version: "1.0.0",
|
|
1730
1709
|
updatedAt: "2026-05-17",
|
|
1731
1710
|
changelog: ["Initial release"],
|
|
1732
1711
|
status: "free",
|
|
1733
1712
|
difficulty: "beginner",
|
|
1734
1713
|
frameworks: ["nextjs", "react", "vite"],
|
|
1735
|
-
dependencies: [
|
|
1736
|
-
files: [{ path: "components/blocks/
|
|
1737
|
-
tokens: ["foreground"
|
|
1714
|
+
dependencies: [],
|
|
1715
|
+
files: [{ path: "components/blocks/signal-arc.tsx", type: "block" }],
|
|
1716
|
+
tokens: ["foreground"],
|
|
1738
1717
|
supportsDarkMode: true,
|
|
1739
|
-
supportsLightMode:
|
|
1718
|
+
supportsLightMode: true,
|
|
1740
1719
|
promptReady: true,
|
|
1741
1720
|
},
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
tags: ["cta", "call-to-action", "landing", "conversion"],
|
|
1721
|
+
"data-flow": {
|
|
1722
|
+
slug: "data-flow",
|
|
1723
|
+
title: "Data Flow",
|
|
1724
|
+
description: "Streaming dots that flow across in a continuous horizontal stream.",
|
|
1725
|
+
category: "Motion",
|
|
1726
|
+
tags: ["loader", "stream", "flow", "dots", "animation"],
|
|
1749
1727
|
version: "1.0.0",
|
|
1750
1728
|
updatedAt: "2026-05-17",
|
|
1751
1729
|
changelog: ["Initial release"],
|
|
1752
|
-
status: "
|
|
1730
|
+
status: "pro",
|
|
1753
1731
|
difficulty: "beginner",
|
|
1754
1732
|
frameworks: ["nextjs", "react", "vite"],
|
|
1755
1733
|
dependencies: [],
|
|
1756
|
-
files: [{ path: "components/blocks/
|
|
1757
|
-
tokens: ["foreground"
|
|
1734
|
+
files: [{ path: "components/blocks/data-flow.tsx", type: "block" }],
|
|
1735
|
+
tokens: ["foreground"],
|
|
1758
1736
|
supportsDarkMode: true,
|
|
1759
|
-
supportsLightMode:
|
|
1737
|
+
supportsLightMode: true,
|
|
1760
1738
|
promptReady: true,
|
|
1761
1739
|
},
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
tags: ["footer", "navigation", "links", "social"],
|
|
1740
|
+
"bloom-burst": {
|
|
1741
|
+
slug: "bloom-burst",
|
|
1742
|
+
title: "Bloom Burst",
|
|
1743
|
+
description: "Eight radial lines that bloom outward and retract like a starburst.",
|
|
1744
|
+
category: "Motion",
|
|
1745
|
+
tags: ["loader", "radial", "burst", "bloom", "animation"],
|
|
1769
1746
|
version: "1.0.0",
|
|
1770
1747
|
updatedAt: "2026-05-17",
|
|
1771
1748
|
changelog: ["Initial release"],
|
|
1772
|
-
status: "
|
|
1749
|
+
status: "pro",
|
|
1773
1750
|
difficulty: "beginner",
|
|
1774
1751
|
frameworks: ["nextjs", "react", "vite"],
|
|
1775
|
-
dependencies: [
|
|
1776
|
-
files: [{ path: "components/blocks/
|
|
1777
|
-
tokens: ["foreground"
|
|
1752
|
+
dependencies: [],
|
|
1753
|
+
files: [{ path: "components/blocks/bloom-burst.tsx", type: "block" }],
|
|
1754
|
+
tokens: ["foreground"],
|
|
1778
1755
|
supportsDarkMode: true,
|
|
1779
|
-
supportsLightMode:
|
|
1756
|
+
supportsLightMode: true,
|
|
1780
1757
|
promptReady: true,
|
|
1781
1758
|
},
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
tags: ["testimonials", "social-proof", "quotes", "grid"],
|
|
1759
|
+
"helix-wave": {
|
|
1760
|
+
slug: "helix-wave",
|
|
1761
|
+
title: "Helix Wave",
|
|
1762
|
+
description: "Two rows of dots oscillating in counterphase to create a DNA helix illusion.",
|
|
1763
|
+
category: "Motion",
|
|
1764
|
+
tags: ["loader", "helix", "wave", "dots", "animation"],
|
|
1789
1765
|
version: "1.0.0",
|
|
1790
1766
|
updatedAt: "2026-05-17",
|
|
1791
1767
|
changelog: ["Initial release"],
|
|
1792
|
-
status: "
|
|
1768
|
+
status: "pro",
|
|
1793
1769
|
difficulty: "beginner",
|
|
1794
1770
|
frameworks: ["nextjs", "react", "vite"],
|
|
1795
1771
|
dependencies: [],
|
|
1796
|
-
files: [{ path: "components/blocks/
|
|
1797
|
-
tokens: ["foreground"
|
|
1772
|
+
files: [{ path: "components/blocks/helix-wave.tsx", type: "block" }],
|
|
1773
|
+
tokens: ["foreground"],
|
|
1798
1774
|
supportsDarkMode: true,
|
|
1799
|
-
supportsLightMode:
|
|
1775
|
+
supportsLightMode: true,
|
|
1800
1776
|
promptReady: true,
|
|
1801
1777
|
},
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
tags: ["metrics", "kpi", "dashboard", "stats", "analytics"],
|
|
1778
|
+
"trace-path": {
|
|
1779
|
+
slug: "trace-path",
|
|
1780
|
+
title: "Trace Path",
|
|
1781
|
+
description: "A circuit-like path that draws itself with a moving dot at its head.",
|
|
1782
|
+
category: "Motion",
|
|
1783
|
+
tags: ["loader", "circuit", "trace", "path", "animation"],
|
|
1809
1784
|
version: "1.0.0",
|
|
1810
1785
|
updatedAt: "2026-05-17",
|
|
1811
1786
|
changelog: ["Initial release"],
|
|
1812
|
-
status: "
|
|
1813
|
-
difficulty: "
|
|
1814
|
-
frameworks: ["nextjs", "react"],
|
|
1815
|
-
dependencies: [
|
|
1816
|
-
files: [{ path: "components/blocks/
|
|
1817
|
-
tokens: ["foreground"
|
|
1787
|
+
status: "pro",
|
|
1788
|
+
difficulty: "beginner",
|
|
1789
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
1790
|
+
dependencies: [],
|
|
1791
|
+
files: [{ path: "components/blocks/trace-path.tsx", type: "block" }],
|
|
1792
|
+
tokens: ["foreground"],
|
|
1818
1793
|
supportsDarkMode: true,
|
|
1819
|
-
supportsLightMode:
|
|
1794
|
+
supportsLightMode: true,
|
|
1820
1795
|
promptReady: true,
|
|
1821
1796
|
},
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
tags: ["announcement", "banner", "notification", "top-bar"],
|
|
1797
|
+
"scatter-field": {
|
|
1798
|
+
slug: "scatter-field",
|
|
1799
|
+
title: "Scatter Field",
|
|
1800
|
+
description: "Nine dots scatter outward from a grid and reconverge in a rhythmic loop.",
|
|
1801
|
+
category: "Motion",
|
|
1802
|
+
tags: ["loader", "scatter", "particles", "grid", "animation"],
|
|
1829
1803
|
version: "1.0.0",
|
|
1830
1804
|
updatedAt: "2026-05-17",
|
|
1831
1805
|
changelog: ["Initial release"],
|
|
1832
|
-
status: "
|
|
1806
|
+
status: "pro",
|
|
1833
1807
|
difficulty: "beginner",
|
|
1834
1808
|
frameworks: ["nextjs", "react", "vite"],
|
|
1835
|
-
dependencies: [
|
|
1836
|
-
files: [{ path: "components/blocks/
|
|
1837
|
-
tokens: ["foreground"
|
|
1809
|
+
dependencies: [],
|
|
1810
|
+
files: [{ path: "components/blocks/scatter-field.tsx", type: "block" }],
|
|
1811
|
+
tokens: ["foreground"],
|
|
1838
1812
|
supportsDarkMode: true,
|
|
1839
|
-
supportsLightMode:
|
|
1813
|
+
supportsLightMode: true,
|
|
1840
1814
|
promptReady: true,
|
|
1841
1815
|
},
|
|
1842
1816
|
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1817
|
+
// ─── Motion: Animation & Loaders ─────────────────────────────────────────
|
|
1818
|
+
|
|
1819
|
+
"animated-counter": {
|
|
1820
|
+
slug: "animated-counter",
|
|
1821
|
+
title: "Animated Counter",
|
|
1822
|
+
description: "Number that animates to its target value with easing on mount.",
|
|
1823
|
+
category: "Motion",
|
|
1824
|
+
tags: ["counter", "number", "animation", "motion"],
|
|
1849
1825
|
version: "1.0.0",
|
|
1850
1826
|
updatedAt: "2026-05-17",
|
|
1851
1827
|
changelog: ["Initial release"],
|
|
@@ -1853,79 +1829,75 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1853
1829
|
difficulty: "beginner",
|
|
1854
1830
|
frameworks: ["nextjs", "react", "vite"],
|
|
1855
1831
|
dependencies: [],
|
|
1856
|
-
files: [{ path: "components/blocks/
|
|
1857
|
-
tokens: ["
|
|
1832
|
+
files: [{ path: "components/blocks/animated-counter.tsx", type: "block" }],
|
|
1833
|
+
tokens: ["foreground", "muted-foreground"],
|
|
1858
1834
|
supportsDarkMode: true,
|
|
1859
|
-
supportsLightMode:
|
|
1835
|
+
supportsLightMode: true,
|
|
1860
1836
|
promptReady: true,
|
|
1861
1837
|
},
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
tags: ["pricing", "comparison", "table", "features", "plans"],
|
|
1838
|
+
"typewriter-text": {
|
|
1839
|
+
slug: "typewriter-text",
|
|
1840
|
+
title: "Typewriter Text",
|
|
1841
|
+
description: "Text that types, pauses, and deletes itself in a looping typewriter effect.",
|
|
1842
|
+
category: "Motion",
|
|
1843
|
+
tags: ["typewriter", "text", "animation", "motion"],
|
|
1869
1844
|
version: "1.0.0",
|
|
1870
1845
|
updatedAt: "2026-05-17",
|
|
1871
1846
|
changelog: ["Initial release"],
|
|
1872
1847
|
status: "free",
|
|
1873
|
-
difficulty: "
|
|
1848
|
+
difficulty: "beginner",
|
|
1874
1849
|
frameworks: ["nextjs", "react", "vite"],
|
|
1875
1850
|
dependencies: [],
|
|
1876
|
-
files: [{ path: "components/blocks/
|
|
1877
|
-
tokens: ["foreground"
|
|
1851
|
+
files: [{ path: "components/blocks/typewriter-text.tsx", type: "block" }],
|
|
1852
|
+
tokens: ["foreground"],
|
|
1878
1853
|
supportsDarkMode: true,
|
|
1879
|
-
supportsLightMode:
|
|
1854
|
+
supportsLightMode: true,
|
|
1880
1855
|
promptReady: true,
|
|
1881
1856
|
},
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
tags: ["team", "about", "members", "grid", "people"],
|
|
1857
|
+
"loading-card": {
|
|
1858
|
+
slug: "loading-card",
|
|
1859
|
+
title: "Loading Card",
|
|
1860
|
+
description: "Card skeleton with shimmer animation for loading states.",
|
|
1861
|
+
category: "Motion",
|
|
1862
|
+
tags: ["skeleton", "loading", "shimmer", "card"],
|
|
1889
1863
|
version: "1.0.0",
|
|
1890
1864
|
updatedAt: "2026-05-17",
|
|
1891
1865
|
changelog: ["Initial release"],
|
|
1892
1866
|
status: "free",
|
|
1893
1867
|
difficulty: "beginner",
|
|
1894
1868
|
frameworks: ["nextjs", "react", "vite"],
|
|
1895
|
-
dependencies: [
|
|
1896
|
-
files: [{ path: "components/blocks/
|
|
1897
|
-
tokens: ["
|
|
1869
|
+
dependencies: [],
|
|
1870
|
+
files: [{ path: "components/blocks/loading-card.tsx", type: "block" }],
|
|
1871
|
+
tokens: ["surface-2", "surface-3"],
|
|
1898
1872
|
supportsDarkMode: true,
|
|
1899
|
-
supportsLightMode:
|
|
1873
|
+
supportsLightMode: true,
|
|
1900
1874
|
promptReady: true,
|
|
1901
1875
|
},
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
tags: ["empty", "no-data", "placeholder", "state"],
|
|
1876
|
+
"loading-dots": {
|
|
1877
|
+
slug: "loading-dots",
|
|
1878
|
+
title: "Loading Dots",
|
|
1879
|
+
description: "Three dots that bounce sequentially as a loading indicator.",
|
|
1880
|
+
category: "Motion",
|
|
1881
|
+
tags: ["loader", "dots", "bouncing", "spinner"],
|
|
1909
1882
|
version: "1.0.0",
|
|
1910
1883
|
updatedAt: "2026-05-17",
|
|
1911
1884
|
changelog: ["Initial release"],
|
|
1912
1885
|
status: "free",
|
|
1913
1886
|
difficulty: "beginner",
|
|
1914
1887
|
frameworks: ["nextjs", "react", "vite"],
|
|
1915
|
-
dependencies: [
|
|
1916
|
-
files: [{ path: "components/blocks/
|
|
1917
|
-
tokens: ["foreground"
|
|
1888
|
+
dependencies: [],
|
|
1889
|
+
files: [{ path: "components/blocks/loading-dots.tsx", type: "block" }],
|
|
1890
|
+
tokens: ["foreground"],
|
|
1918
1891
|
supportsDarkMode: true,
|
|
1919
|
-
supportsLightMode:
|
|
1892
|
+
supportsLightMode: true,
|
|
1920
1893
|
promptReady: true,
|
|
1921
1894
|
},
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
tags: ["error", "404", "500", "not-found", "page"],
|
|
1895
|
+
"progress-ring": {
|
|
1896
|
+
slug: "progress-ring",
|
|
1897
|
+
title: "Progress Ring",
|
|
1898
|
+
description: "SVG circular progress ring with animated fill and percentage label.",
|
|
1899
|
+
category: "Motion",
|
|
1900
|
+
tags: ["progress", "ring", "circular", "animation"],
|
|
1929
1901
|
version: "1.0.0",
|
|
1930
1902
|
updatedAt: "2026-05-17",
|
|
1931
1903
|
changelog: ["Initial release"],
|
|
@@ -1933,33 +1905,810 @@ export const manifests: Record<string, BlockManifest> = {
|
|
|
1933
1905
|
difficulty: "beginner",
|
|
1934
1906
|
frameworks: ["nextjs", "react", "vite"],
|
|
1935
1907
|
dependencies: [],
|
|
1936
|
-
files: [{ path: "components/blocks/
|
|
1908
|
+
files: [{ path: "components/blocks/progress-ring.tsx", type: "block" }],
|
|
1909
|
+
tokens: ["foreground", "surface-3"],
|
|
1910
|
+
supportsDarkMode: true,
|
|
1911
|
+
supportsLightMode: true,
|
|
1912
|
+
promptReady: true,
|
|
1913
|
+
},
|
|
1914
|
+
"skeleton-feed": {
|
|
1915
|
+
slug: "skeleton-feed",
|
|
1916
|
+
title: "Skeleton Feed",
|
|
1917
|
+
description: "Feed-style skeleton rows with avatar and text shimmer placeholders.",
|
|
1918
|
+
category: "Motion",
|
|
1919
|
+
tags: ["skeleton", "feed", "loading", "shimmer"],
|
|
1920
|
+
version: "1.0.0",
|
|
1921
|
+
updatedAt: "2026-05-17",
|
|
1922
|
+
changelog: ["Initial release"],
|
|
1923
|
+
status: "pro",
|
|
1924
|
+
difficulty: "beginner",
|
|
1925
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
1926
|
+
dependencies: [],
|
|
1927
|
+
files: [{ path: "components/blocks/skeleton-feed.tsx", type: "block" }],
|
|
1928
|
+
tokens: ["surface-2", "surface-3"],
|
|
1929
|
+
supportsDarkMode: true,
|
|
1930
|
+
supportsLightMode: true,
|
|
1931
|
+
promptReady: true,
|
|
1932
|
+
},
|
|
1933
|
+
"skeleton-table": {
|
|
1934
|
+
slug: "skeleton-table",
|
|
1935
|
+
title: "Skeleton Table",
|
|
1936
|
+
description: "Table skeleton with header and row shimmer placeholders.",
|
|
1937
|
+
category: "Motion",
|
|
1938
|
+
tags: ["skeleton", "table", "loading", "shimmer"],
|
|
1939
|
+
version: "1.0.0",
|
|
1940
|
+
updatedAt: "2026-05-17",
|
|
1941
|
+
changelog: ["Initial release"],
|
|
1942
|
+
status: "pro",
|
|
1943
|
+
difficulty: "beginner",
|
|
1944
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
1945
|
+
dependencies: [],
|
|
1946
|
+
files: [{ path: "components/blocks/skeleton-table.tsx", type: "block" }],
|
|
1947
|
+
tokens: ["surface-2", "surface-3"],
|
|
1948
|
+
supportsDarkMode: true,
|
|
1949
|
+
supportsLightMode: true,
|
|
1950
|
+
promptReady: true,
|
|
1951
|
+
},
|
|
1952
|
+
"blur-reveal": {
|
|
1953
|
+
slug: "blur-reveal",
|
|
1954
|
+
title: "Blur Reveal",
|
|
1955
|
+
description: "Content that blurs in with fade when it enters the viewport.",
|
|
1956
|
+
category: "Motion",
|
|
1957
|
+
tags: ["reveal", "blur", "scroll", "animation"],
|
|
1958
|
+
version: "1.0.0",
|
|
1959
|
+
updatedAt: "2026-05-17",
|
|
1960
|
+
changelog: ["Initial release"],
|
|
1961
|
+
status: "pro",
|
|
1962
|
+
difficulty: "intermediate",
|
|
1963
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
1964
|
+
dependencies: [],
|
|
1965
|
+
files: [{ path: "components/blocks/blur-reveal.tsx", type: "block" }],
|
|
1937
1966
|
tokens: ["foreground", "muted-foreground"],
|
|
1938
1967
|
supportsDarkMode: true,
|
|
1939
|
-
supportsLightMode:
|
|
1968
|
+
supportsLightMode: true,
|
|
1940
1969
|
promptReady: true,
|
|
1941
1970
|
},
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
tags: ["cookie", "gdpr", "consent", "privacy", "banner"],
|
|
1971
|
+
"stagger-reveal": {
|
|
1972
|
+
slug: "stagger-reveal",
|
|
1973
|
+
title: "Stagger Reveal",
|
|
1974
|
+
description: "List items that slide in one by one with staggered delay on scroll.",
|
|
1975
|
+
category: "Motion",
|
|
1976
|
+
tags: ["reveal", "stagger", "scroll", "animation"],
|
|
1949
1977
|
version: "1.0.0",
|
|
1950
1978
|
updatedAt: "2026-05-17",
|
|
1951
1979
|
changelog: ["Initial release"],
|
|
1952
|
-
status: "
|
|
1980
|
+
status: "pro",
|
|
1981
|
+
difficulty: "intermediate",
|
|
1982
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
1983
|
+
dependencies: [],
|
|
1984
|
+
files: [{ path: "components/blocks/stagger-reveal.tsx", type: "block" }],
|
|
1985
|
+
tokens: ["foreground", "surface-2", "border"],
|
|
1986
|
+
supportsDarkMode: true,
|
|
1987
|
+
supportsLightMode: true,
|
|
1988
|
+
promptReady: true,
|
|
1989
|
+
},
|
|
1990
|
+
"scroll-reveal": {
|
|
1991
|
+
slug: "scroll-reveal",
|
|
1992
|
+
title: "Scroll Reveal",
|
|
1993
|
+
description: "Elements that fade and slide up when they enter the viewport.",
|
|
1994
|
+
category: "Motion",
|
|
1995
|
+
tags: ["reveal", "scroll", "fade", "animation"],
|
|
1996
|
+
version: "1.0.0",
|
|
1997
|
+
updatedAt: "2026-05-17",
|
|
1998
|
+
changelog: ["Initial release"],
|
|
1999
|
+
status: "pro",
|
|
2000
|
+
difficulty: "intermediate",
|
|
2001
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2002
|
+
dependencies: [],
|
|
2003
|
+
files: [{ path: "components/blocks/scroll-reveal.tsx", type: "block" }],
|
|
2004
|
+
tokens: ["foreground", "muted-foreground"],
|
|
2005
|
+
supportsDarkMode: true,
|
|
2006
|
+
supportsLightMode: true,
|
|
2007
|
+
promptReady: true,
|
|
2008
|
+
},
|
|
2009
|
+
"number-flow": {
|
|
2010
|
+
slug: "number-flow",
|
|
2011
|
+
title: "Number Flow",
|
|
2012
|
+
description: "Numbers that animate digit-by-digit when their value changes.",
|
|
2013
|
+
category: "Motion",
|
|
2014
|
+
tags: ["number", "counter", "animation", "motion"],
|
|
2015
|
+
version: "1.0.0",
|
|
2016
|
+
updatedAt: "2026-05-17",
|
|
2017
|
+
changelog: ["Initial release"],
|
|
2018
|
+
status: "pro",
|
|
2019
|
+
difficulty: "intermediate",
|
|
2020
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2021
|
+
dependencies: [],
|
|
2022
|
+
files: [{ path: "components/blocks/number-flow.tsx", type: "block" }],
|
|
2023
|
+
tokens: ["foreground", "muted-foreground"],
|
|
2024
|
+
supportsDarkMode: true,
|
|
2025
|
+
supportsLightMode: true,
|
|
2026
|
+
promptReady: true,
|
|
2027
|
+
},
|
|
2028
|
+
"shimmer-overlay": {
|
|
2029
|
+
slug: "shimmer-overlay",
|
|
2030
|
+
title: "Shimmer Overlay",
|
|
2031
|
+
description: "Shimmer highlight that sweeps across any content as a loading overlay.",
|
|
2032
|
+
category: "Motion",
|
|
2033
|
+
tags: ["shimmer", "overlay", "loading", "animation"],
|
|
2034
|
+
version: "1.0.0",
|
|
2035
|
+
updatedAt: "2026-05-17",
|
|
2036
|
+
changelog: ["Initial release"],
|
|
2037
|
+
status: "pro",
|
|
1953
2038
|
difficulty: "beginner",
|
|
1954
2039
|
frameworks: ["nextjs", "react", "vite"],
|
|
1955
2040
|
dependencies: [],
|
|
1956
|
-
files: [{ path: "components/blocks/
|
|
1957
|
-
tokens: ["
|
|
2041
|
+
files: [{ path: "components/blocks/shimmer-overlay.tsx", type: "block" }],
|
|
2042
|
+
tokens: ["surface-2", "surface-3", "border"],
|
|
1958
2043
|
supportsDarkMode: true,
|
|
1959
|
-
supportsLightMode:
|
|
2044
|
+
supportsLightMode: true,
|
|
1960
2045
|
promptReady: true,
|
|
1961
2046
|
},
|
|
1962
|
-
|
|
2047
|
+
"morphing-loader": {
|
|
2048
|
+
slug: "morphing-loader",
|
|
2049
|
+
title: "Morphing Loader",
|
|
2050
|
+
description: "A shape that continuously morphs its border-radius in a fluid loop.",
|
|
2051
|
+
category: "Motion",
|
|
2052
|
+
tags: ["loader", "morph", "shape", "animation"],
|
|
2053
|
+
version: "1.0.0",
|
|
2054
|
+
updatedAt: "2026-05-17",
|
|
2055
|
+
changelog: ["Initial release"],
|
|
2056
|
+
status: "pro",
|
|
2057
|
+
difficulty: "beginner",
|
|
2058
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2059
|
+
dependencies: [],
|
|
2060
|
+
files: [{ path: "components/blocks/morphing-loader.tsx", type: "block" }],
|
|
2061
|
+
tokens: ["foreground"],
|
|
2062
|
+
supportsDarkMode: true,
|
|
2063
|
+
supportsLightMode: true,
|
|
2064
|
+
promptReady: true,
|
|
2065
|
+
},
|
|
2066
|
+
"text-scramble": {
|
|
2067
|
+
slug: "text-scramble",
|
|
2068
|
+
title: "Text Scramble",
|
|
2069
|
+
description: "Text that scrambles through random characters before resolving to the final string.",
|
|
2070
|
+
category: "Motion",
|
|
2071
|
+
tags: ["text", "scramble", "animation", "motion"],
|
|
2072
|
+
version: "1.0.0",
|
|
2073
|
+
updatedAt: "2026-05-17",
|
|
2074
|
+
changelog: ["Initial release"],
|
|
2075
|
+
status: "pro",
|
|
2076
|
+
difficulty: "intermediate",
|
|
2077
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2078
|
+
dependencies: [],
|
|
2079
|
+
files: [{ path: "components/blocks/text-scramble.tsx", type: "block" }],
|
|
2080
|
+
tokens: ["foreground", "muted-foreground"],
|
|
2081
|
+
supportsDarkMode: true,
|
|
2082
|
+
supportsLightMode: true,
|
|
2083
|
+
promptReady: true,
|
|
2084
|
+
},
|
|
2085
|
+
|
|
2086
|
+
// ─── New Core Components ──────────────────────────────────────────────────
|
|
2087
|
+
|
|
2088
|
+
"phone-input": {
|
|
2089
|
+
slug: "phone-input",
|
|
2090
|
+
title: "Phone Input",
|
|
2091
|
+
description: "International phone number input with searchable country code selector and flag emoji. Supports 50+ countries.",
|
|
2092
|
+
category: "Forms",
|
|
2093
|
+
tags: ["phone", "input", "country", "international", "form"],
|
|
2094
|
+
version: "1.0.0",
|
|
2095
|
+
updatedAt: "2026-05-26",
|
|
2096
|
+
changelog: ["Initial release"],
|
|
2097
|
+
status: "pro",
|
|
2098
|
+
difficulty: "beginner",
|
|
2099
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2100
|
+
dependencies: ["lucide-react"],
|
|
2101
|
+
files: [{ path: "components/core/phone-input.tsx", type: "registry:ui" }],
|
|
2102
|
+
tokens: ["border", "border-strong", "surface-2", "surface-3", "foreground", "muted-foreground", "input", "background"],
|
|
2103
|
+
supportsDarkMode: true,
|
|
2104
|
+
supportsLightMode: true,
|
|
2105
|
+
promptReady: true,
|
|
2106
|
+
},
|
|
2107
|
+
"color-picker": {
|
|
2108
|
+
slug: "color-picker",
|
|
2109
|
+
title: "Color Picker",
|
|
2110
|
+
description: "Popover color picker with 24-color swatch grid and hex input. Controlled and uncontrolled modes.",
|
|
2111
|
+
category: "Forms",
|
|
2112
|
+
tags: ["color", "picker", "swatch", "hex", "form"],
|
|
2113
|
+
version: "1.0.0",
|
|
2114
|
+
updatedAt: "2026-05-26",
|
|
2115
|
+
changelog: ["Initial release"],
|
|
2116
|
+
status: "pro",
|
|
2117
|
+
difficulty: "beginner",
|
|
2118
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2119
|
+
dependencies: ["lucide-react"],
|
|
2120
|
+
files: [{ path: "components/core/color-picker.tsx", type: "registry:ui" }],
|
|
2121
|
+
tokens: ["border", "border-strong", "surface-2", "input", "foreground", "muted-foreground"],
|
|
2122
|
+
supportsDarkMode: true,
|
|
2123
|
+
supportsLightMode: true,
|
|
2124
|
+
promptReady: true,
|
|
2125
|
+
},
|
|
2126
|
+
"file-tree": {
|
|
2127
|
+
slug: "file-tree",
|
|
2128
|
+
title: "File Tree",
|
|
2129
|
+
description: "Hierarchical file and folder tree with expand/collapse, infinite nesting, auto extension icons, and selection state.",
|
|
2130
|
+
category: "Data",
|
|
2131
|
+
tags: ["file", "tree", "folder", "explorer", "hierarchy"],
|
|
2132
|
+
version: "1.0.0",
|
|
2133
|
+
updatedAt: "2026-05-26",
|
|
2134
|
+
changelog: ["Initial release"],
|
|
2135
|
+
status: "pro",
|
|
2136
|
+
difficulty: "beginner",
|
|
2137
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2138
|
+
dependencies: ["lucide-react"],
|
|
2139
|
+
files: [{ path: "components/core/file-tree.tsx", type: "registry:ui" }],
|
|
2140
|
+
tokens: ["surface-2", "foreground", "muted-foreground", "border-strong"],
|
|
2141
|
+
supportsDarkMode: true,
|
|
2142
|
+
supportsLightMode: true,
|
|
2143
|
+
promptReady: true,
|
|
2144
|
+
},
|
|
2145
|
+
|
|
2146
|
+
// ─── Marketing ────────────────────────────────────────────────────────────
|
|
2147
|
+
|
|
2148
|
+
"announcement-bar": {
|
|
2149
|
+
slug: "announcement-bar",
|
|
2150
|
+
title: "Announcement Bar",
|
|
2151
|
+
description: "Site-wide dismissible notification banner for announcements, promotions, and alerts.",
|
|
2152
|
+
category: "Marketing",
|
|
2153
|
+
tags: ["announcement", "banner", "notification", "marketing"],
|
|
2154
|
+
version: "1.0.0",
|
|
2155
|
+
updatedAt: "2026-05-30",
|
|
2156
|
+
changelog: ["Initial release"],
|
|
2157
|
+
status: "free",
|
|
2158
|
+
difficulty: "beginner",
|
|
2159
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2160
|
+
dependencies: ["lucide-react"],
|
|
2161
|
+
files: [{ path: "components/blocks/announcement-bar.tsx", type: "block" }],
|
|
2162
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2163
|
+
supportsDarkMode: true,
|
|
2164
|
+
supportsLightMode: true,
|
|
2165
|
+
promptReady: true,
|
|
2166
|
+
},
|
|
2167
|
+
"cta-banner": {
|
|
2168
|
+
slug: "cta-banner",
|
|
2169
|
+
title: "CTA Banner",
|
|
2170
|
+
description: "Full-width call-to-action banner with headline, description, and primary/secondary action buttons.",
|
|
2171
|
+
category: "Marketing",
|
|
2172
|
+
tags: ["cta", "banner", "marketing", "landing"],
|
|
2173
|
+
version: "1.0.0",
|
|
2174
|
+
updatedAt: "2026-05-30",
|
|
2175
|
+
changelog: ["Initial release"],
|
|
2176
|
+
status: "free",
|
|
2177
|
+
difficulty: "beginner",
|
|
2178
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2179
|
+
dependencies: [],
|
|
2180
|
+
files: [{ path: "components/blocks/cta-banner.tsx", type: "block" }],
|
|
2181
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2182
|
+
supportsDarkMode: true,
|
|
2183
|
+
supportsLightMode: true,
|
|
2184
|
+
promptReady: true,
|
|
2185
|
+
},
|
|
2186
|
+
"faq-accordion": {
|
|
2187
|
+
slug: "faq-accordion",
|
|
2188
|
+
title: "FAQ Accordion",
|
|
2189
|
+
description: "Animated expand/collapse FAQ list with plus/minus icons and optional section heading.",
|
|
2190
|
+
category: "Marketing",
|
|
2191
|
+
tags: ["faq", "accordion", "marketing", "landing"],
|
|
2192
|
+
version: "1.0.0",
|
|
2193
|
+
updatedAt: "2026-05-30",
|
|
2194
|
+
changelog: ["Initial release"],
|
|
2195
|
+
status: "free",
|
|
2196
|
+
difficulty: "beginner",
|
|
2197
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2198
|
+
dependencies: ["lucide-react"],
|
|
2199
|
+
files: [{ path: "components/blocks/faq-accordion.tsx", type: "block" }],
|
|
2200
|
+
tokens: ["foreground", "muted-foreground", "border"],
|
|
2201
|
+
supportsDarkMode: true,
|
|
2202
|
+
supportsLightMode: true,
|
|
2203
|
+
promptReady: true,
|
|
2204
|
+
},
|
|
2205
|
+
"feature-comparison": {
|
|
2206
|
+
slug: "feature-comparison",
|
|
2207
|
+
title: "Feature Comparison",
|
|
2208
|
+
description: "Side-by-side plan comparison table with check/cross feature rows and highlighted recommended tier.",
|
|
2209
|
+
category: "Marketing",
|
|
2210
|
+
tags: ["pricing", "comparison", "table", "marketing"],
|
|
2211
|
+
version: "1.0.0",
|
|
2212
|
+
updatedAt: "2026-05-30",
|
|
2213
|
+
changelog: ["Initial release"],
|
|
2214
|
+
status: "free",
|
|
2215
|
+
difficulty: "beginner",
|
|
2216
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2217
|
+
dependencies: [],
|
|
2218
|
+
files: [{ path: "components/blocks/feature-comparison.tsx", type: "block" }],
|
|
2219
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2220
|
+
supportsDarkMode: true,
|
|
2221
|
+
supportsLightMode: true,
|
|
2222
|
+
promptReady: true,
|
|
2223
|
+
},
|
|
2224
|
+
"social-proof-bar": {
|
|
2225
|
+
slug: "social-proof-bar",
|
|
2226
|
+
title: "Social Proof Bar",
|
|
2227
|
+
description: "Logo strip with star rating, user count, and trusted-by label for landing page credibility.",
|
|
2228
|
+
category: "Marketing",
|
|
2229
|
+
tags: ["social-proof", "logos", "trust", "marketing"],
|
|
2230
|
+
version: "1.0.0",
|
|
2231
|
+
updatedAt: "2026-05-30",
|
|
2232
|
+
changelog: ["Initial release"],
|
|
2233
|
+
status: "free",
|
|
2234
|
+
difficulty: "beginner",
|
|
2235
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2236
|
+
dependencies: [],
|
|
2237
|
+
files: [{ path: "components/blocks/social-proof-bar.tsx", type: "block" }],
|
|
2238
|
+
tokens: ["foreground", "muted-foreground", "border"],
|
|
2239
|
+
supportsDarkMode: true,
|
|
2240
|
+
supportsLightMode: true,
|
|
2241
|
+
promptReady: true,
|
|
2242
|
+
},
|
|
2243
|
+
"team-grid": {
|
|
2244
|
+
slug: "team-grid",
|
|
2245
|
+
title: "Team Grid",
|
|
2246
|
+
description: "Responsive team member card grid with avatar, name, role, bio, and social links.",
|
|
2247
|
+
category: "Marketing",
|
|
2248
|
+
tags: ["team", "grid", "about", "marketing"],
|
|
2249
|
+
version: "1.0.0",
|
|
2250
|
+
updatedAt: "2026-05-30",
|
|
2251
|
+
changelog: ["Initial release"],
|
|
2252
|
+
status: "free",
|
|
2253
|
+
difficulty: "beginner",
|
|
2254
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2255
|
+
dependencies: ["lucide-react"],
|
|
2256
|
+
files: [{ path: "components/blocks/team-grid.tsx", type: "block" }],
|
|
2257
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2258
|
+
supportsDarkMode: true,
|
|
2259
|
+
supportsLightMode: true,
|
|
2260
|
+
promptReady: true,
|
|
2261
|
+
},
|
|
2262
|
+
"testimonials-wall": {
|
|
2263
|
+
slug: "testimonials-wall",
|
|
2264
|
+
title: "Testimonials Wall",
|
|
2265
|
+
description: "Masonry-style testimonial quote wall with avatar, name, role, and star rating.",
|
|
2266
|
+
category: "Marketing",
|
|
2267
|
+
tags: ["testimonials", "reviews", "social-proof", "marketing"],
|
|
2268
|
+
version: "1.0.0",
|
|
2269
|
+
updatedAt: "2026-05-30",
|
|
2270
|
+
changelog: ["Initial release"],
|
|
2271
|
+
status: "free",
|
|
2272
|
+
difficulty: "beginner",
|
|
2273
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2274
|
+
dependencies: [],
|
|
2275
|
+
files: [{ path: "components/blocks/testimonials-wall.tsx", type: "block" }],
|
|
2276
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2277
|
+
supportsDarkMode: true,
|
|
2278
|
+
supportsLightMode: true,
|
|
2279
|
+
promptReady: true,
|
|
2280
|
+
},
|
|
2281
|
+
"waitlist-section": {
|
|
2282
|
+
slug: "waitlist-section",
|
|
2283
|
+
title: "Waitlist Section",
|
|
2284
|
+
description: "Email capture section for product launches with social proof count and submit feedback.",
|
|
2285
|
+
category: "Marketing",
|
|
2286
|
+
tags: ["waitlist", "email", "launch", "marketing"],
|
|
2287
|
+
version: "1.0.0",
|
|
2288
|
+
updatedAt: "2026-05-30",
|
|
2289
|
+
changelog: ["Initial release"],
|
|
2290
|
+
status: "free",
|
|
2291
|
+
difficulty: "beginner",
|
|
2292
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2293
|
+
dependencies: [],
|
|
2294
|
+
files: [{ path: "components/blocks/waitlist-section.tsx", type: "block" }],
|
|
2295
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2296
|
+
supportsDarkMode: true,
|
|
2297
|
+
supportsLightMode: true,
|
|
2298
|
+
promptReady: true,
|
|
2299
|
+
},
|
|
2300
|
+
|
|
2301
|
+
// ─── Display ─────────────────────────────────────────────────────────────
|
|
2302
|
+
|
|
2303
|
+
"changelog-feed": {
|
|
2304
|
+
slug: "changelog-feed",
|
|
2305
|
+
title: "Changelog Feed",
|
|
2306
|
+
description: "Vertical timeline changelog with versioned entries, date, tag badges, and feature descriptions.",
|
|
2307
|
+
category: "Display",
|
|
2308
|
+
tags: ["changelog", "timeline", "updates", "content"],
|
|
2309
|
+
version: "1.0.0",
|
|
2310
|
+
updatedAt: "2026-05-30",
|
|
2311
|
+
changelog: ["Initial release"],
|
|
2312
|
+
status: "free",
|
|
2313
|
+
difficulty: "beginner",
|
|
2314
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2315
|
+
dependencies: [],
|
|
2316
|
+
files: [{ path: "components/blocks/changelog-feed.tsx", type: "block" }],
|
|
2317
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2318
|
+
supportsDarkMode: true,
|
|
2319
|
+
supportsLightMode: true,
|
|
2320
|
+
promptReady: true,
|
|
2321
|
+
},
|
|
2322
|
+
"gradient-text": {
|
|
2323
|
+
slug: "gradient-text",
|
|
2324
|
+
title: "Gradient Text",
|
|
2325
|
+
description: "Text with a configurable CSS gradient fill. Supports any heading level and direction.",
|
|
2326
|
+
category: "Display",
|
|
2327
|
+
tags: ["gradient", "text", "typography", "animation"],
|
|
2328
|
+
version: "1.0.0",
|
|
2329
|
+
updatedAt: "2026-05-30",
|
|
2330
|
+
changelog: ["Initial release"],
|
|
2331
|
+
status: "free",
|
|
2332
|
+
difficulty: "beginner",
|
|
2333
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2334
|
+
dependencies: [],
|
|
2335
|
+
files: [{ path: "components/blocks/gradient-text.tsx", type: "block" }],
|
|
2336
|
+
tokens: ["foreground"],
|
|
2337
|
+
supportsDarkMode: true,
|
|
2338
|
+
supportsLightMode: true,
|
|
2339
|
+
promptReady: true,
|
|
2340
|
+
},
|
|
2341
|
+
"metrics-grid": {
|
|
2342
|
+
slug: "metrics-grid",
|
|
2343
|
+
title: "Metrics Grid",
|
|
2344
|
+
description: "KPI card grid with value, label, trend direction, and percentage change indicator.",
|
|
2345
|
+
category: "Display",
|
|
2346
|
+
tags: ["metrics", "kpi", "dashboard", "stats"],
|
|
2347
|
+
version: "1.0.0",
|
|
2348
|
+
updatedAt: "2026-05-30",
|
|
2349
|
+
changelog: ["Initial release"],
|
|
2350
|
+
status: "free",
|
|
2351
|
+
difficulty: "beginner",
|
|
2352
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2353
|
+
dependencies: ["lucide-react"],
|
|
2354
|
+
files: [{ path: "components/blocks/metrics-grid.tsx", type: "block" }],
|
|
2355
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2356
|
+
supportsDarkMode: true,
|
|
2357
|
+
supportsLightMode: true,
|
|
2358
|
+
promptReady: true,
|
|
2359
|
+
},
|
|
2360
|
+
|
|
2361
|
+
// ─── App ─────────────────────────────────────────────────────────────────
|
|
2362
|
+
|
|
2363
|
+
"empty-state": {
|
|
2364
|
+
slug: "empty-state",
|
|
2365
|
+
title: "Empty State",
|
|
2366
|
+
description: "Centered empty-state block with icon, title, description, and optional action button.",
|
|
2367
|
+
category: "App",
|
|
2368
|
+
tags: ["empty", "state", "feedback", "placeholder"],
|
|
2369
|
+
version: "1.0.0",
|
|
2370
|
+
updatedAt: "2026-05-30",
|
|
2371
|
+
changelog: ["Initial release"],
|
|
2372
|
+
status: "free",
|
|
2373
|
+
difficulty: "beginner",
|
|
2374
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2375
|
+
dependencies: ["lucide-react"],
|
|
2376
|
+
files: [{ path: "components/blocks/empty-state.tsx", type: "block" }],
|
|
2377
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2378
|
+
supportsDarkMode: true,
|
|
2379
|
+
supportsLightMode: true,
|
|
2380
|
+
promptReady: true,
|
|
2381
|
+
},
|
|
2382
|
+
"error-page": {
|
|
2383
|
+
slug: "error-page",
|
|
2384
|
+
title: "Error Page",
|
|
2385
|
+
description: "Full-page error template for 404, 500, and other status codes with back/home navigation.",
|
|
2386
|
+
category: "App",
|
|
2387
|
+
tags: ["error", "404", "500", "page"],
|
|
2388
|
+
version: "1.0.0",
|
|
2389
|
+
updatedAt: "2026-05-30",
|
|
2390
|
+
changelog: ["Initial release"],
|
|
2391
|
+
status: "free",
|
|
2392
|
+
difficulty: "beginner",
|
|
2393
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2394
|
+
dependencies: [],
|
|
2395
|
+
files: [{ path: "components/blocks/error-page.tsx", type: "block" }],
|
|
2396
|
+
tokens: ["foreground", "muted-foreground", "border"],
|
|
2397
|
+
supportsDarkMode: true,
|
|
2398
|
+
supportsLightMode: true,
|
|
2399
|
+
promptReady: true,
|
|
2400
|
+
},
|
|
2401
|
+
"project-command-center": {
|
|
2402
|
+
slug: "project-command-center",
|
|
2403
|
+
title: "Project Command Center",
|
|
2404
|
+
description: "Dashboard overview widget showing project health, active tasks, team avatars, and deployment status.",
|
|
2405
|
+
category: "App",
|
|
2406
|
+
tags: ["project", "dashboard", "status", "overview"],
|
|
2407
|
+
version: "1.0.0",
|
|
2408
|
+
updatedAt: "2026-05-30",
|
|
2409
|
+
changelog: ["Initial release"],
|
|
2410
|
+
status: "pro",
|
|
2411
|
+
difficulty: "intermediate",
|
|
2412
|
+
frameworks: ["nextjs", "react"],
|
|
2413
|
+
dependencies: ["lucide-react"],
|
|
2414
|
+
files: [{ path: "components/blocks/project-command-center.tsx", type: "block" }],
|
|
2415
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2416
|
+
supportsDarkMode: true,
|
|
2417
|
+
supportsLightMode: true,
|
|
2418
|
+
promptReady: true,
|
|
2419
|
+
},
|
|
2420
|
+
"site-footer": {
|
|
2421
|
+
slug: "site-footer",
|
|
2422
|
+
title: "Site Footer",
|
|
2423
|
+
description: "Multi-column site footer with brand logo, navigation links, social icons, and copyright line.",
|
|
2424
|
+
category: "App",
|
|
2425
|
+
tags: ["footer", "layout", "navigation", "site"],
|
|
2426
|
+
version: "1.0.0",
|
|
2427
|
+
updatedAt: "2026-05-30",
|
|
2428
|
+
changelog: ["Initial release"],
|
|
2429
|
+
status: "free",
|
|
2430
|
+
difficulty: "beginner",
|
|
2431
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2432
|
+
dependencies: ["lucide-react"],
|
|
2433
|
+
files: [{ path: "components/blocks/site-footer.tsx", type: "block" }],
|
|
2434
|
+
tokens: ["foreground", "muted-foreground", "border"],
|
|
2435
|
+
supportsDarkMode: true,
|
|
2436
|
+
supportsLightMode: true,
|
|
2437
|
+
promptReady: true,
|
|
2438
|
+
},
|
|
2439
|
+
|
|
2440
|
+
// ─── Utility ─────────────────────────────────────────────────────────────
|
|
2441
|
+
|
|
2442
|
+
"cookie-consent": {
|
|
2443
|
+
slug: "cookie-consent",
|
|
2444
|
+
title: "Cookie Consent",
|
|
2445
|
+
description: "GDPR cookie consent banner with accept, decline, and customize options. Sticks to the bottom of the viewport.",
|
|
2446
|
+
category: "Utility",
|
|
2447
|
+
tags: ["cookie", "gdpr", "consent", "legal", "banner"],
|
|
2448
|
+
version: "1.0.0",
|
|
2449
|
+
updatedAt: "2026-05-30",
|
|
2450
|
+
changelog: ["Initial release"],
|
|
2451
|
+
status: "free",
|
|
2452
|
+
difficulty: "beginner",
|
|
2453
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2454
|
+
dependencies: [],
|
|
2455
|
+
files: [{ path: "components/blocks/cookie-consent.tsx", type: "block" }],
|
|
2456
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2457
|
+
supportsDarkMode: true,
|
|
2458
|
+
supportsLightMode: true,
|
|
2459
|
+
promptReady: true,
|
|
2460
|
+
},
|
|
2461
|
+
|
|
2462
|
+
// ─── Web-Only Promoted ───────────────────────────────────────────────────
|
|
2463
|
+
|
|
2464
|
+
"shortcut": {
|
|
2465
|
+
slug: "shortcut",
|
|
2466
|
+
title: "Shortcut",
|
|
2467
|
+
description: "Keyboard shortcut display. Renders key combos like cmd+k with platform-aware symbols.",
|
|
2468
|
+
category: "UI",
|
|
2469
|
+
tags: ["keyboard", "shortcut", "hotkey", "kbd"],
|
|
2470
|
+
version: "1.0.0",
|
|
2471
|
+
updatedAt: "2026-06-05",
|
|
2472
|
+
changelog: ["Initial release"],
|
|
2473
|
+
status: "pro",
|
|
2474
|
+
difficulty: "beginner",
|
|
2475
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2476
|
+
dependencies: [],
|
|
2477
|
+
files: [{ path: "components/core/shortcut.tsx", type: "block" }],
|
|
2478
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2479
|
+
supportsDarkMode: true,
|
|
2480
|
+
supportsLightMode: true,
|
|
2481
|
+
promptReady: true,
|
|
2482
|
+
},
|
|
2483
|
+
"rating": {
|
|
2484
|
+
slug: "rating",
|
|
2485
|
+
title: "Rating",
|
|
2486
|
+
description: "Interactive star rating with hover, controlled and uncontrolled modes, and readonly display.",
|
|
2487
|
+
category: "UI",
|
|
2488
|
+
tags: ["rating", "stars", "review", "feedback"],
|
|
2489
|
+
version: "1.0.0",
|
|
2490
|
+
updatedAt: "2026-06-05",
|
|
2491
|
+
changelog: ["Initial release"],
|
|
2492
|
+
status: "pro",
|
|
2493
|
+
difficulty: "beginner",
|
|
2494
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2495
|
+
dependencies: ["lucide-react"],
|
|
2496
|
+
files: [{ path: "components/core/rating.tsx", type: "block" }],
|
|
2497
|
+
tokens: ["foreground", "muted-foreground"],
|
|
2498
|
+
supportsDarkMode: true,
|
|
2499
|
+
supportsLightMode: true,
|
|
2500
|
+
promptReady: true,
|
|
2501
|
+
},
|
|
2502
|
+
"number-input": {
|
|
2503
|
+
slug: "number-input",
|
|
2504
|
+
title: "Number Input",
|
|
2505
|
+
description: "Numeric input with custom stepper buttons, min/max/step clamping, and bare mode for InputGroup.",
|
|
2506
|
+
category: "UI",
|
|
2507
|
+
tags: ["number", "input", "form", "stepper"],
|
|
2508
|
+
version: "1.0.0",
|
|
2509
|
+
updatedAt: "2026-06-05",
|
|
2510
|
+
changelog: ["Initial release"],
|
|
2511
|
+
status: "pro",
|
|
2512
|
+
difficulty: "beginner",
|
|
2513
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2514
|
+
dependencies: ["lucide-react"],
|
|
2515
|
+
files: [{ path: "components/core/number-input.tsx", type: "block" }],
|
|
2516
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2", "surface-3"],
|
|
2517
|
+
supportsDarkMode: true,
|
|
2518
|
+
supportsLightMode: true,
|
|
2519
|
+
promptReady: true,
|
|
2520
|
+
},
|
|
2521
|
+
"reading-progress": {
|
|
2522
|
+
slug: "reading-progress",
|
|
2523
|
+
title: "Reading Progress",
|
|
2524
|
+
description: "Fixed-top scroll progress indicator. Tracks reading or page scroll position.",
|
|
2525
|
+
category: "UI",
|
|
2526
|
+
tags: ["progress", "scroll", "reading", "indicator"],
|
|
2527
|
+
version: "1.0.0",
|
|
2528
|
+
updatedAt: "2026-06-05",
|
|
2529
|
+
changelog: ["Initial release"],
|
|
2530
|
+
status: "pro",
|
|
2531
|
+
difficulty: "beginner",
|
|
2532
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2533
|
+
dependencies: [],
|
|
2534
|
+
files: [{ path: "components/core/reading-progress.tsx", type: "block" }],
|
|
2535
|
+
tokens: ["foreground"],
|
|
2536
|
+
supportsDarkMode: true,
|
|
2537
|
+
supportsLightMode: true,
|
|
2538
|
+
promptReady: true,
|
|
2539
|
+
},
|
|
2540
|
+
"segmented-control": {
|
|
2541
|
+
slug: "segmented-control",
|
|
2542
|
+
title: "Segmented Control",
|
|
2543
|
+
description: "Sliding pill selector for mutually exclusive options. Smoother than tabs for compact view switching.",
|
|
2544
|
+
category: "UI",
|
|
2545
|
+
tags: ["segmented", "control", "tabs", "toggle", "selector"],
|
|
2546
|
+
version: "1.0.0",
|
|
2547
|
+
updatedAt: "2026-06-05",
|
|
2548
|
+
changelog: ["Initial release"],
|
|
2549
|
+
status: "pro",
|
|
2550
|
+
difficulty: "beginner",
|
|
2551
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2552
|
+
dependencies: [],
|
|
2553
|
+
files: [{ path: "components/core/segmented-control.tsx", type: "block" }],
|
|
2554
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2", "background"],
|
|
2555
|
+
supportsDarkMode: true,
|
|
2556
|
+
supportsLightMode: true,
|
|
2557
|
+
promptReady: true,
|
|
2558
|
+
},
|
|
2559
|
+
"color-swatch": {
|
|
2560
|
+
slug: "color-swatch",
|
|
2561
|
+
title: "Color Swatch",
|
|
2562
|
+
description: "Clickable color swatch with copy-to-clipboard and tooltip. Includes a ColorPalette group component.",
|
|
2563
|
+
category: "UI",
|
|
2564
|
+
tags: ["color", "swatch", "palette", "design"],
|
|
2565
|
+
version: "1.0.0",
|
|
2566
|
+
updatedAt: "2026-06-05",
|
|
2567
|
+
changelog: ["Initial release"],
|
|
2568
|
+
status: "pro",
|
|
2569
|
+
difficulty: "beginner",
|
|
2570
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2571
|
+
dependencies: ["lucide-react"],
|
|
2572
|
+
files: [{ path: "components/core/color-swatch.tsx", type: "block" }],
|
|
2573
|
+
tokens: ["border"],
|
|
2574
|
+
supportsDarkMode: true,
|
|
2575
|
+
supportsLightMode: true,
|
|
2576
|
+
promptReady: true,
|
|
2577
|
+
},
|
|
2578
|
+
"file-card": {
|
|
2579
|
+
slug: "file-card",
|
|
2580
|
+
title: "File Card",
|
|
2581
|
+
description: "Compact file metadata card with type icon, size, upload progress, and status states.",
|
|
2582
|
+
category: "UI",
|
|
2583
|
+
tags: ["file", "upload", "card", "attachment"],
|
|
2584
|
+
version: "1.0.0",
|
|
2585
|
+
updatedAt: "2026-06-05",
|
|
2586
|
+
changelog: ["Initial release"],
|
|
2587
|
+
status: "pro",
|
|
2588
|
+
difficulty: "beginner",
|
|
2589
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2590
|
+
dependencies: ["lucide-react"],
|
|
2591
|
+
files: [{ path: "components/core/file-card.tsx", type: "block" }],
|
|
2592
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2", "surface-3"],
|
|
2593
|
+
supportsDarkMode: true,
|
|
2594
|
+
supportsLightMode: true,
|
|
2595
|
+
promptReady: true,
|
|
2596
|
+
},
|
|
2597
|
+
"copy-input": {
|
|
2598
|
+
slug: "copy-input",
|
|
2599
|
+
title: "Copy Input",
|
|
2600
|
+
description: "Read-only input with integrated copy-to-clipboard. Use for API keys, tokens, and webhook URLs.",
|
|
2601
|
+
category: "UI",
|
|
2602
|
+
tags: ["copy", "input", "api-key", "token", "clipboard", "readonly"],
|
|
2603
|
+
version: "1.0.0",
|
|
2604
|
+
updatedAt: "2026-06-05",
|
|
2605
|
+
changelog: ["Initial release"],
|
|
2606
|
+
status: "pro",
|
|
2607
|
+
difficulty: "beginner",
|
|
2608
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2609
|
+
dependencies: ["lucide-react"],
|
|
2610
|
+
files: [{ path: "components/core/copy-input.tsx", type: "block" }],
|
|
2611
|
+
tokens: ["foreground", "muted-foreground", "border", "border-strong"],
|
|
2612
|
+
supportsDarkMode: true,
|
|
2613
|
+
supportsLightMode: true,
|
|
2614
|
+
promptReady: true,
|
|
2615
|
+
},
|
|
2616
|
+
"json-viewer": {
|
|
2617
|
+
slug: "json-viewer",
|
|
2618
|
+
title: "JSON Viewer",
|
|
2619
|
+
description: "Collapsible JSON tree with monochrome value styling. For API responses, AI output, and debug panels.",
|
|
2620
|
+
category: "UI",
|
|
2621
|
+
tags: ["json", "viewer", "tree", "data", "debug", "api"],
|
|
2622
|
+
version: "1.0.0",
|
|
2623
|
+
updatedAt: "2026-06-05",
|
|
2624
|
+
changelog: ["Initial release"],
|
|
2625
|
+
status: "pro",
|
|
2626
|
+
difficulty: "beginner",
|
|
2627
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2628
|
+
dependencies: ["lucide-react"],
|
|
2629
|
+
files: [{ path: "components/core/json-viewer.tsx", type: "block" }],
|
|
2630
|
+
tokens: ["foreground", "muted-foreground", "border", "surface-2"],
|
|
2631
|
+
supportsDarkMode: true,
|
|
2632
|
+
supportsLightMode: true,
|
|
2633
|
+
promptReady: true,
|
|
2634
|
+
},
|
|
2635
|
+
"loading-bar": {
|
|
2636
|
+
slug: "loading-bar",
|
|
2637
|
+
title: "Loading Bar",
|
|
2638
|
+
description: "Top-of-page linear progress indicator. Indeterminate or determinate, with smooth completion animation.",
|
|
2639
|
+
category: "UI",
|
|
2640
|
+
tags: ["loading", "progress", "bar", "indicator", "async"],
|
|
2641
|
+
version: "1.0.0",
|
|
2642
|
+
updatedAt: "2026-06-05",
|
|
2643
|
+
changelog: ["Initial release"],
|
|
2644
|
+
status: "pro",
|
|
2645
|
+
difficulty: "beginner",
|
|
2646
|
+
frameworks: ["nextjs", "react", "vite"],
|
|
2647
|
+
dependencies: [],
|
|
2648
|
+
files: [{ path: "components/core/loading-bar.tsx", type: "block" }],
|
|
2649
|
+
tokens: ["foreground"],
|
|
2650
|
+
supportsDarkMode: true,
|
|
2651
|
+
supportsLightMode: true,
|
|
2652
|
+
promptReady: true,
|
|
2653
|
+
},
|
|
2654
|
+
|
|
2655
|
+
// ─── Complex Components 2026-06-05 ─────────────────────────────────────────
|
|
2656
|
+
|
|
2657
|
+
"mention-input": {
|
|
2658
|
+
slug: "mention-input", title: "Mention Input",
|
|
2659
|
+
description: "Textarea with @-triggered floating suggestion list. Keyboard navigable, optionally shows avatars.",
|
|
2660
|
+
category: "Forms", tags: ["input","mention","autocomplete","textarea","at"],
|
|
2661
|
+
version: "1.0.0", updatedAt: "2026-06-05", changelog: ["Initial release"],
|
|
2662
|
+
status: "pro", difficulty: "intermediate",
|
|
2663
|
+
frameworks: ["nextjs","react","vite"], dependencies: ["lucide-react"],
|
|
2664
|
+
files: [{ path: "components/core/mention-input.tsx", type: "registry:ui" }],
|
|
2665
|
+
tokens: ["border","border-strong","bg-input","bg-card","foreground","muted-foreground","surface-2"],
|
|
2666
|
+
supportsDarkMode: true, supportsLightMode: true, promptReady: true,
|
|
2667
|
+
},
|
|
2668
|
+
"filter-bar": {
|
|
2669
|
+
slug: "filter-bar", title: "Filter Bar",
|
|
2670
|
+
description: "Active filter pills with an add-filter popover. Supports text, select, and boolean filter types.",
|
|
2671
|
+
category: "Forms", tags: ["filter","chips","search","table","toolbar"],
|
|
2672
|
+
version: "1.0.0", updatedAt: "2026-06-05", changelog: ["Initial release"],
|
|
2673
|
+
status: "pro", difficulty: "intermediate",
|
|
2674
|
+
frameworks: ["nextjs","react","vite"], dependencies: ["lucide-react"],
|
|
2675
|
+
files: [{ path: "components/core/filter-bar.tsx", type: "registry:ui" }],
|
|
2676
|
+
tokens: ["border","border-strong","bg-surface-2","bg-surface-3","bg-card","foreground","muted-foreground"],
|
|
2677
|
+
supportsDarkMode: true, supportsLightMode: true, promptReady: true,
|
|
2678
|
+
},
|
|
2679
|
+
"key-value-editor": {
|
|
2680
|
+
slug: "key-value-editor", title: "Key Value Editor",
|
|
2681
|
+
description: "Editable key/value row table for env vars and config entries. Add, remove, enable/disable rows. Keyboard navigable.",
|
|
2682
|
+
category: "Forms", tags: ["key-value","env","config","table","editor","form"],
|
|
2683
|
+
version: "1.0.0", updatedAt: "2026-06-05", changelog: ["Initial release"],
|
|
2684
|
+
status: "pro", difficulty: "intermediate",
|
|
2685
|
+
frameworks: ["nextjs","react","vite"], dependencies: ["lucide-react"],
|
|
2686
|
+
files: [{ path: "components/core/key-value-editor.tsx", type: "registry:ui" }],
|
|
2687
|
+
tokens: ["border","border-strong","bg-input","bg-surface-2","bg-surface-3","foreground","muted-foreground"],
|
|
2688
|
+
supportsDarkMode: true, supportsLightMode: true, promptReady: true,
|
|
2689
|
+
},
|
|
2690
|
+
"transfer-list": {
|
|
2691
|
+
slug: "transfer-list", title: "Transfer List",
|
|
2692
|
+
description: "Two-column available/selected list with move-one, move-all, and optional per-column search.",
|
|
2693
|
+
category: "Forms", tags: ["transfer","list","multi-select","columns","form"],
|
|
2694
|
+
version: "1.0.0", updatedAt: "2026-06-05", changelog: ["Initial release"],
|
|
2695
|
+
status: "pro", difficulty: "intermediate",
|
|
2696
|
+
frameworks: ["nextjs","react","vite"], dependencies: ["lucide-react"],
|
|
2697
|
+
files: [{ path: "components/core/transfer-list.tsx", type: "registry:ui" }],
|
|
2698
|
+
tokens: ["border","bg-surface-2","bg-surface-3","bg-card","foreground","muted-foreground"],
|
|
2699
|
+
supportsDarkMode: true, supportsLightMode: true, promptReady: true,
|
|
2700
|
+
},
|
|
2701
|
+
"rich-radio-group": {
|
|
2702
|
+
slug: "rich-radio-group", title: "Rich Radio Group",
|
|
2703
|
+
description: "Radio options rendered as full-width cards with title, description, and icon slot. Vertical or horizontal layout.",
|
|
2704
|
+
category: "Forms", tags: ["radio","card","form","selection","options"],
|
|
2705
|
+
version: "1.0.0", updatedAt: "2026-06-05", changelog: ["Initial release"],
|
|
2706
|
+
status: "pro", difficulty: "beginner",
|
|
2707
|
+
frameworks: ["nextjs","react","vite"], dependencies: [],
|
|
2708
|
+
files: [{ path: "components/core/rich-radio-group.tsx", type: "registry:ui" }],
|
|
2709
|
+
tokens: ["border","border-strong","bg-surface-2","bg-transparent","foreground","muted-foreground"],
|
|
2710
|
+
supportsDarkMode: true, supportsLightMode: true, promptReady: true,
|
|
2711
|
+
},
|
|
1963
2712
|
}
|
|
1964
2713
|
|
|
1965
2714
|
export const blockList = Object.values(manifests)
|