@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.
Files changed (54) hide show
  1. package/dist/manifests.js +917 -170
  2. package/package.json +15 -10
  3. package/src/components/blocks/animated-counter.tsx +70 -0
  4. package/src/components/blocks/gradient-text.tsx +39 -0
  5. package/src/components/blocks/grid-wave.tsx +40 -0
  6. package/src/components/blocks/loading-card.tsx +48 -0
  7. package/src/components/blocks/loading-dots.tsx +68 -0
  8. package/src/components/blocks/orbit-trail.tsx +30 -0
  9. package/src/components/blocks/progress-ring.tsx +72 -0
  10. package/src/components/blocks/registry-card.tsx +6 -7
  11. package/src/components/blocks/signal-arc.tsx +32 -0
  12. package/src/components/blocks/typewriter-text.tsx +62 -0
  13. package/src/components/core/alert-dialog.tsx +2 -2
  14. package/src/components/core/avatar.tsx +8 -4
  15. package/src/components/core/button.tsx +1 -1
  16. package/src/components/core/checkbox.tsx +1 -1
  17. package/src/components/core/combobox.tsx +1 -1
  18. package/src/components/core/command.tsx +7 -4
  19. package/src/components/core/date-picker.tsx +1 -1
  20. package/src/components/core/dialog.tsx +1 -1
  21. package/src/components/core/drawer.tsx +1 -1
  22. package/src/components/core/input.tsx +2 -0
  23. package/src/components/core/label.tsx +1 -1
  24. package/src/components/core/multi-select.tsx +1 -1
  25. package/src/components/core/native-select.tsx +1 -1
  26. package/src/components/core/password-input.tsx +3 -0
  27. package/src/components/core/radio-group.tsx +1 -1
  28. package/src/components/core/resizable.tsx +1 -1
  29. package/src/components/core/select.tsx +1 -1
  30. package/src/components/core/sheet.tsx +1 -1
  31. package/src/components/core/slider.tsx +1 -1
  32. package/src/components/core/status-pulse.tsx +6 -0
  33. package/src/components/core/switch.tsx +1 -1
  34. package/src/components/core/table.tsx +7 -2
  35. package/src/components/core/tabs.tsx +1 -1
  36. package/src/components/core/toggle.tsx +1 -1
  37. package/src/components/core/typing-indicator.tsx +41 -27
  38. package/src/manifests.ts +932 -183
  39. package/src/components/blocks/ai-chat-shell.tsx +0 -97
  40. package/src/components/blocks/auth-panel.tsx +0 -203
  41. package/src/components/blocks/dashboard-shell.tsx +0 -135
  42. package/src/components/blocks/notification-center.tsx +0 -185
  43. package/src/components/blocks/onboarding-flow.tsx +0 -230
  44. package/src/components/blocks/project-command-center.tsx +0 -188
  45. package/src/components/blocks/prompt-input.tsx +0 -81
  46. package/src/components/blocks/settings-layout.tsx +0 -178
  47. package/src/components/blocks/token-stream.tsx +0 -42
  48. package/src/components/core/carousel.tsx +0 -170
  49. package/src/components/core/chart.tsx +0 -377
  50. package/src/components/core/data-table.tsx +0 -173
  51. package/src/components/core/file-upload.tsx +0 -143
  52. package/src/components/core/input-otp.tsx +0 -108
  53. package/src/components/core/stepper.tsx +0 -111
  54. 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: "new",
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: "new",
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: "new",
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: "new",
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: "new",
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: "new",
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: "new",
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: "free",
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: "free",
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: "new",
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
- // ─── New Blocks ───────────────────────────────────────────────────────────
1666
- "waitlist-section": {
1667
- slug: "waitlist-section",
1668
- title: "Waitlist Section",
1669
- description: "Email signup section with a waitlist counter and thank-you state.",
1670
- category: "Marketing",
1671
- tags: ["waitlist", "email", "signup", "landing"],
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/waitlist-section.tsx", type: "block" }],
1680
- tokens: ["foreground", "muted-foreground", "border", "surface-2"],
1660
+ files: [{ path: "components/blocks/orbit-trail.tsx", type: "block" }],
1661
+ tokens: ["foreground"],
1681
1662
  supportsDarkMode: true,
1682
- supportsLightMode: false,
1663
+ supportsLightMode: true,
1683
1664
  promptReady: true,
1684
1665
  },
1685
- "changelog-feed": {
1686
- slug: "changelog-feed",
1687
- title: "Changelog Feed",
1688
- description: "Vertical timeline of versioned product updates with type tags.",
1689
- category: "Display",
1690
- tags: ["changelog", "timeline", "updates", "versioning"],
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/changelog-feed.tsx", type: "block" }],
1699
- tokens: ["foreground", "muted-foreground", "border", "surface-2"],
1679
+ files: [{ path: "components/blocks/grid-wave.tsx", type: "block" }],
1680
+ tokens: ["foreground"],
1700
1681
  supportsDarkMode: true,
1701
- supportsLightMode: false,
1682
+ supportsLightMode: true,
1702
1683
  promptReady: true,
1703
1684
  },
1704
- "faq-accordion": {
1705
- slug: "faq-accordion",
1706
- title: "FAQ Accordion",
1707
- description: "Expandable FAQ section built without external accordion dependencies.",
1708
- category: "Marketing",
1709
- tags: ["faq", "accordion", "help", "landing"],
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: ["lucide-react"],
1717
- files: [{ path: "components/blocks/faq-accordion.tsx", type: "block" }],
1718
- tokens: ["foreground", "muted-foreground", "border"],
1697
+ dependencies: [],
1698
+ files: [{ path: "components/blocks/signal-arc.tsx", type: "block" }],
1699
+ tokens: ["foreground"],
1719
1700
  supportsDarkMode: true,
1720
- supportsLightMode: false,
1701
+ supportsLightMode: true,
1721
1702
  promptReady: true,
1722
1703
  },
1723
- "cta-banner": {
1724
- slug: "cta-banner",
1725
- title: "CTA Banner",
1726
- description: "End-of-page call-to-action section with primary and secondary buttons.",
1727
- category: "Marketing",
1728
- tags: ["cta", "call-to-action", "landing", "conversion"],
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: "free",
1713
+ status: "pro",
1733
1714
  difficulty: "beginner",
1734
1715
  frameworks: ["nextjs", "react", "vite"],
1735
1716
  dependencies: [],
1736
- files: [{ path: "components/blocks/cta-banner.tsx", type: "block" }],
1737
- tokens: ["foreground", "muted-foreground", "border"],
1717
+ files: [{ path: "components/blocks/data-flow.tsx", type: "block" }],
1718
+ tokens: ["foreground"],
1738
1719
  supportsDarkMode: true,
1739
- supportsLightMode: false,
1720
+ supportsLightMode: true,
1740
1721
  promptReady: true,
1741
1722
  },
1742
- "site-footer": {
1743
- slug: "site-footer",
1744
- title: "Site Footer",
1745
- description: "Full site footer with brand, grouped nav links, social icons, and copyright.",
1746
- category: "Navigation",
1747
- tags: ["footer", "navigation", "links", "social"],
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: "free",
1732
+ status: "pro",
1752
1733
  difficulty: "beginner",
1753
1734
  frameworks: ["nextjs", "react", "vite"],
1754
- dependencies: ["lucide-react"],
1755
- files: [{ path: "components/blocks/site-footer.tsx", type: "block" }],
1756
- tokens: ["foreground", "muted-foreground", "border", "surface-2"],
1735
+ dependencies: [],
1736
+ files: [{ path: "components/blocks/bloom-burst.tsx", type: "block" }],
1737
+ tokens: ["foreground"],
1757
1738
  supportsDarkMode: true,
1758
- supportsLightMode: false,
1739
+ supportsLightMode: true,
1759
1740
  promptReady: true,
1760
1741
  },
1761
- "testimonials-wall": {
1762
- slug: "testimonials-wall",
1763
- title: "Testimonials Wall",
1764
- description: "Responsive grid of testimonial cards with author avatars and quotes.",
1765
- category: "Marketing",
1766
- tags: ["testimonials", "social-proof", "quotes", "grid"],
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: "free",
1751
+ status: "pro",
1771
1752
  difficulty: "beginner",
1772
1753
  frameworks: ["nextjs", "react", "vite"],
1773
1754
  dependencies: [],
1774
- files: [{ path: "components/blocks/testimonials-wall.tsx", type: "block" }],
1775
- tokens: ["foreground", "muted-foreground", "border", "surface-2"],
1755
+ files: [{ path: "components/blocks/helix-wave.tsx", type: "block" }],
1756
+ tokens: ["foreground"],
1776
1757
  supportsDarkMode: true,
1777
- supportsLightMode: false,
1758
+ supportsLightMode: true,
1778
1759
  promptReady: true,
1779
1760
  },
1780
- "metrics-grid": {
1781
- slug: "metrics-grid",
1782
- title: "Metrics Grid",
1783
- description: "Dashboard KPI grid with trend indicators, icons, and configurable columns.",
1784
- category: "Dashboard",
1785
- tags: ["metrics", "kpi", "dashboard", "stats", "analytics"],
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: "free",
1790
- difficulty: "intermediate",
1791
- frameworks: ["nextjs", "react"],
1792
- dependencies: ["lucide-react"],
1793
- files: [{ path: "components/blocks/metrics-grid.tsx", type: "block" }],
1794
- tokens: ["foreground", "muted-foreground", "border", "surface-2"],
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: false,
1777
+ supportsLightMode: true,
1797
1778
  promptReady: true,
1798
1779
  },
1799
- "announcement-bar": {
1800
- slug: "announcement-bar",
1801
- title: "Announcement Bar",
1802
- description: "Dismissible top-of-page announcement banner with optional CTA.",
1803
- category: "Feedback",
1804
- tags: ["announcement", "banner", "notification", "top-bar"],
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: "free",
1789
+ status: "pro",
1809
1790
  difficulty: "beginner",
1810
1791
  frameworks: ["nextjs", "react", "vite"],
1811
- dependencies: ["lucide-react"],
1812
- files: [{ path: "components/blocks/announcement-bar.tsx", type: "block" }],
1813
- tokens: ["foreground", "muted-foreground", "border", "surface-2"],
1792
+ dependencies: [],
1793
+ files: [{ path: "components/blocks/scatter-field.tsx", type: "block" }],
1794
+ tokens: ["foreground"],
1814
1795
  supportsDarkMode: true,
1815
- supportsLightMode: false,
1796
+ supportsLightMode: true,
1816
1797
  promptReady: true,
1817
1798
  },
1818
- "social-proof-bar": {
1819
- slug: "social-proof-bar",
1820
- title: "Social Proof Bar",
1821
- description: "Horizontal logo strip showing companies or teams using your product.",
1822
- category: "Marketing",
1823
- tags: ["logos", "social-proof", "companies", "trust"],
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/social-proof-bar.tsx", type: "block" }],
1832
- tokens: ["muted-foreground", "border"],
1813
+ files: [{ path: "components/blocks/animated-counter.tsx", type: "block" }],
1814
+ tokens: ["foreground", "muted-foreground"],
1833
1815
  supportsDarkMode: true,
1834
- supportsLightMode: false,
1816
+ supportsLightMode: true,
1835
1817
  promptReady: true,
1836
1818
  },
1837
- "feature-comparison": {
1838
- slug: "feature-comparison",
1839
- title: "Feature Comparison",
1840
- description: "Plan comparison table with highlighted column, checkmarks, and custom values.",
1841
- category: "Marketing",
1842
- tags: ["pricing", "comparison", "table", "features", "plans"],
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: "intermediate",
1829
+ difficulty: "beginner",
1848
1830
  frameworks: ["nextjs", "react", "vite"],
1849
1831
  dependencies: [],
1850
- files: [{ path: "components/blocks/feature-comparison.tsx", type: "block" }],
1851
- tokens: ["foreground", "muted-foreground", "border", "surface-2"],
1832
+ files: [{ path: "components/blocks/typewriter-text.tsx", type: "block" }],
1833
+ tokens: ["foreground"],
1852
1834
  supportsDarkMode: true,
1853
- supportsLightMode: false,
1835
+ supportsLightMode: true,
1854
1836
  promptReady: true,
1855
1837
  },
1856
- "team-grid": {
1857
- slug: "team-grid",
1858
- title: "Team Grid",
1859
- description: "Responsive grid of team member cards with avatars, roles, bios, and social links.",
1860
- category: "Display",
1861
- tags: ["team", "about", "members", "grid", "people"],
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: ["lucide-react"],
1869
- files: [{ path: "components/blocks/team-grid.tsx", type: "block" }],
1870
- tokens: ["foreground", "muted-foreground", "border", "surface-2"],
1850
+ dependencies: [],
1851
+ files: [{ path: "components/blocks/loading-card.tsx", type: "block" }],
1852
+ tokens: ["surface-2", "surface-3"],
1871
1853
  supportsDarkMode: true,
1872
- supportsLightMode: false,
1854
+ supportsLightMode: true,
1873
1855
  promptReady: true,
1874
1856
  },
1875
- "empty-state": {
1876
- slug: "empty-state",
1877
- title: "Empty State",
1878
- description: "Centered empty state with icon, title, description, and optional action.",
1879
- category: "Feedback",
1880
- tags: ["empty", "no-data", "placeholder", "state"],
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: ["lucide-react"],
1888
- files: [{ path: "components/blocks/empty-state.tsx", type: "block" }],
1889
- tokens: ["foreground", "muted-foreground", "border"],
1869
+ dependencies: [],
1870
+ files: [{ path: "components/blocks/loading-dots.tsx", type: "block" }],
1871
+ tokens: ["foreground"],
1890
1872
  supportsDarkMode: true,
1891
- supportsLightMode: false,
1873
+ supportsLightMode: true,
1892
1874
  promptReady: true,
1893
1875
  },
1894
- "error-page": {
1895
- slug: "error-page",
1896
- title: "Error Page",
1897
- description: "Minimal full-page error display (404/500) with code, title, and back button.",
1898
- category: "Feedback",
1899
- tags: ["error", "404", "500", "not-found", "page"],
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/error-page.tsx", type: "block" }],
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: false,
1949
+ supportsLightMode: true,
1911
1950
  promptReady: true,
1912
1951
  },
1913
- "cookie-consent": {
1914
- slug: "cookie-consent",
1915
- title: "Cookie Consent",
1916
- description: "GDPR-compliant fixed-bottom cookie consent banner with accept/decline/customize actions.",
1917
- category: "UI",
1918
- tags: ["cookie", "gdpr", "consent", "privacy", "banner"],
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: "free",
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/cookie-consent.tsx", type: "block" }],
1927
- tokens: ["foreground", "muted-foreground", "border", "surface-2"],
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: false,
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);