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