@nanisoft/prism-ui 0.5.0 → 0.6.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 (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +81 -0
  3. package/THIRD-PARTY-NOTICES.md +48 -0
  4. package/dist/.tsbuildinfo +1 -0
  5. package/dist/blocks/app-shell-01/app-shell.d.ts +38 -0
  6. package/dist/blocks/app-shell-01/app-shell.d.ts.map +1 -0
  7. package/dist/blocks/app-shell-01/app-shell.js +27 -0
  8. package/dist/blocks/app-shell-01/index.d.ts +3 -0
  9. package/dist/blocks/app-shell-01/index.d.ts.map +1 -0
  10. package/dist/blocks/app-shell-01/index.js +1 -0
  11. package/dist/blocks/auth-form-01/auth-form.d.ts +52 -0
  12. package/dist/blocks/auth-form-01/auth-form.d.ts.map +1 -0
  13. package/dist/blocks/auth-form-01/auth-form.js +23 -0
  14. package/dist/blocks/auth-form-01/index.d.ts +3 -0
  15. package/dist/blocks/auth-form-01/index.d.ts.map +1 -0
  16. package/dist/blocks/auth-form-01/index.js +1 -0
  17. package/dist/blocks/cta-01/cta.d.ts +83 -0
  18. package/dist/blocks/cta-01/cta.d.ts.map +1 -0
  19. package/dist/blocks/cta-01/cta.js +29 -0
  20. package/dist/blocks/cta-01/index.d.ts +3 -0
  21. package/dist/blocks/cta-01/index.d.ts.map +1 -0
  22. package/dist/blocks/cta-01/index.js +1 -0
  23. package/dist/blocks/data-table-01/data-table.d.ts +102 -0
  24. package/dist/blocks/data-table-01/data-table.d.ts.map +1 -0
  25. package/dist/blocks/data-table-01/data-table.js +116 -0
  26. package/dist/blocks/data-table-01/index.d.ts +3 -0
  27. package/dist/blocks/data-table-01/index.d.ts.map +1 -0
  28. package/dist/blocks/data-table-01/index.js +1 -0
  29. package/dist/blocks/feature-grid-01/feature-grid.d.ts +78 -0
  30. package/dist/blocks/feature-grid-01/feature-grid.d.ts.map +1 -0
  31. package/dist/blocks/feature-grid-01/feature-grid.js +24 -0
  32. package/dist/blocks/feature-grid-01/index.d.ts +3 -0
  33. package/dist/blocks/feature-grid-01/index.d.ts.map +1 -0
  34. package/dist/blocks/feature-grid-01/index.js +1 -0
  35. package/dist/blocks/hero-01/hero.d.ts +59 -0
  36. package/dist/blocks/hero-01/hero.d.ts.map +1 -0
  37. package/dist/blocks/hero-01/hero.js +24 -0
  38. package/dist/blocks/hero-01/index.d.ts +2 -0
  39. package/dist/blocks/hero-01/index.d.ts.map +1 -0
  40. package/dist/blocks/hero-01/index.js +1 -0
  41. package/dist/blocks/index.d.ts +28 -0
  42. package/dist/blocks/index.d.ts.map +1 -0
  43. package/dist/blocks/index.js +26 -0
  44. package/dist/blocks/instrument-panel-01/index.d.ts +3 -0
  45. package/dist/blocks/instrument-panel-01/index.d.ts.map +1 -0
  46. package/dist/blocks/instrument-panel-01/index.js +1 -0
  47. package/dist/blocks/instrument-panel-01/instrument-panel.d.ts +114 -0
  48. package/dist/blocks/instrument-panel-01/instrument-panel.d.ts.map +1 -0
  49. package/dist/blocks/instrument-panel-01/instrument-panel.js +64 -0
  50. package/dist/blocks/logo-strip-01/index.d.ts +3 -0
  51. package/dist/blocks/logo-strip-01/index.d.ts.map +1 -0
  52. package/dist/blocks/logo-strip-01/index.js +1 -0
  53. package/dist/blocks/logo-strip-01/logo-strip.d.ts +84 -0
  54. package/dist/blocks/logo-strip-01/logo-strip.d.ts.map +1 -0
  55. package/dist/blocks/logo-strip-01/logo-strip.js +40 -0
  56. package/dist/blocks/note-grid-01/index.d.ts +3 -0
  57. package/dist/blocks/note-grid-01/index.d.ts.map +1 -0
  58. package/dist/blocks/note-grid-01/index.js +1 -0
  59. package/dist/blocks/note-grid-01/note-grid.d.ts +79 -0
  60. package/dist/blocks/note-grid-01/note-grid.d.ts.map +1 -0
  61. package/dist/blocks/note-grid-01/note-grid.js +37 -0
  62. package/dist/blocks/page-header-01/index.d.ts +3 -0
  63. package/dist/blocks/page-header-01/index.d.ts.map +1 -0
  64. package/dist/blocks/page-header-01/index.js +1 -0
  65. package/dist/blocks/page-header-01/page-header.d.ts +48 -0
  66. package/dist/blocks/page-header-01/page-header.d.ts.map +1 -0
  67. package/dist/blocks/page-header-01/page-header.js +27 -0
  68. package/dist/blocks/pricing-01/index.d.ts +2 -0
  69. package/dist/blocks/pricing-01/index.d.ts.map +1 -0
  70. package/dist/blocks/pricing-01/index.js +1 -0
  71. package/dist/blocks/pricing-01/pricing.d.ts +35 -0
  72. package/dist/blocks/pricing-01/pricing.d.ts.map +1 -0
  73. package/dist/blocks/pricing-01/pricing.js +20 -0
  74. package/dist/blocks/process-rail-01/index.d.ts +3 -0
  75. package/dist/blocks/process-rail-01/index.d.ts.map +1 -0
  76. package/dist/blocks/process-rail-01/index.js +1 -0
  77. package/dist/blocks/process-rail-01/process-rail.d.ts +99 -0
  78. package/dist/blocks/process-rail-01/process-rail.d.ts.map +1 -0
  79. package/dist/blocks/process-rail-01/process-rail.js +58 -0
  80. package/dist/blocks/product-grid-01/index.d.ts +3 -0
  81. package/dist/blocks/product-grid-01/index.d.ts.map +1 -0
  82. package/dist/blocks/product-grid-01/index.js +1 -0
  83. package/dist/blocks/product-grid-01/product-grid.d.ts +114 -0
  84. package/dist/blocks/product-grid-01/product-grid.d.ts.map +1 -0
  85. package/dist/blocks/product-grid-01/product-grid.js +51 -0
  86. package/dist/blocks/settings-panel-01/index.d.ts +3 -0
  87. package/dist/blocks/settings-panel-01/index.d.ts.map +1 -0
  88. package/dist/blocks/settings-panel-01/index.js +1 -0
  89. package/dist/blocks/settings-panel-01/settings-panel.d.ts +71 -0
  90. package/dist/blocks/settings-panel-01/settings-panel.d.ts.map +1 -0
  91. package/dist/blocks/settings-panel-01/settings-panel.js +38 -0
  92. package/dist/blocks/site-footer/index.d.ts +3 -0
  93. package/dist/blocks/site-footer/index.d.ts.map +1 -0
  94. package/dist/blocks/site-footer/index.js +1 -0
  95. package/dist/blocks/site-footer/site-footer.d.ts +135 -0
  96. package/dist/blocks/site-footer/site-footer.d.ts.map +1 -0
  97. package/dist/blocks/site-footer/site-footer.js +41 -0
  98. package/dist/blocks/site-header/index.d.ts +3 -0
  99. package/dist/blocks/site-header/index.d.ts.map +1 -0
  100. package/dist/blocks/site-header/index.js +1 -0
  101. package/dist/blocks/site-header/site-header.d.ts +142 -0
  102. package/dist/blocks/site-header/site-header.d.ts.map +1 -0
  103. package/dist/blocks/site-header/site-header.js +46 -0
  104. package/dist/blocks/stack-grid-01/index.d.ts +3 -0
  105. package/dist/blocks/stack-grid-01/index.d.ts.map +1 -0
  106. package/dist/blocks/stack-grid-01/index.js +1 -0
  107. package/dist/blocks/stack-grid-01/stack-grid.d.ts +118 -0
  108. package/dist/blocks/stack-grid-01/stack-grid.d.ts.map +1 -0
  109. package/dist/blocks/stack-grid-01/stack-grid.js +49 -0
  110. package/dist/blocks/stats-01/index.d.ts +2 -0
  111. package/dist/blocks/stats-01/index.d.ts.map +1 -0
  112. package/dist/blocks/stats-01/index.js +1 -0
  113. package/dist/blocks/stats-01/stats.d.ts +28 -0
  114. package/dist/blocks/stats-01/stats.d.ts.map +1 -0
  115. package/dist/blocks/stats-01/stats.js +27 -0
  116. package/dist/blocks/status-ledger-01/index.d.ts +3 -0
  117. package/dist/blocks/status-ledger-01/index.d.ts.map +1 -0
  118. package/dist/blocks/status-ledger-01/index.js +1 -0
  119. package/dist/blocks/status-ledger-01/status-ledger.d.ts +131 -0
  120. package/dist/blocks/status-ledger-01/status-ledger.d.ts.map +1 -0
  121. package/dist/blocks/status-ledger-01/status-ledger.js +80 -0
  122. package/dist/catalog.d.ts +28 -0
  123. package/dist/catalog.d.ts.map +1 -0
  124. package/dist/catalog.js +672 -0
  125. package/dist/components/index.d.ts +64 -0
  126. package/dist/components/index.d.ts.map +1 -0
  127. package/dist/components/index.js +43 -0
  128. package/dist/components/ui/accordion.d.ts +65 -0
  129. package/dist/components/ui/accordion.d.ts.map +1 -0
  130. package/dist/components/ui/accordion.js +30 -0
  131. package/dist/components/ui/alert.d.ts +19 -0
  132. package/dist/components/ui/alert.d.ts.map +1 -0
  133. package/dist/components/ui/alert.js +31 -0
  134. package/dist/components/ui/avatar.d.ts +47 -0
  135. package/dist/components/ui/avatar.d.ts.map +1 -0
  136. package/dist/components/ui/avatar.js +30 -0
  137. package/dist/components/ui/badge.d.ts +14 -0
  138. package/dist/components/ui/badge.d.ts.map +1 -0
  139. package/dist/components/ui/badge.js +26 -0
  140. package/dist/components/ui/breadcrumb.d.ts +35 -0
  141. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  142. package/dist/components/ui/breadcrumb.js +48 -0
  143. package/dist/components/ui/button.d.ts +16 -0
  144. package/dist/components/ui/button.d.ts.map +1 -0
  145. package/dist/components/ui/button.js +63 -0
  146. package/dist/components/ui/card.d.ts +41 -0
  147. package/dist/components/ui/card.d.ts.map +1 -0
  148. package/dist/components/ui/card.js +53 -0
  149. package/dist/components/ui/checkbox.d.ts +43 -0
  150. package/dist/components/ui/checkbox.d.ts.map +1 -0
  151. package/dist/components/ui/checkbox.js +18 -0
  152. package/dist/components/ui/cta-link.d.ts +45 -0
  153. package/dist/components/ui/cta-link.d.ts.map +1 -0
  154. package/dist/components/ui/cta-link.js +81 -0
  155. package/dist/components/ui/diagram.d.ts +154 -0
  156. package/dist/components/ui/diagram.d.ts.map +1 -0
  157. package/dist/components/ui/diagram.js +150 -0
  158. package/dist/components/ui/dialog.d.ts +81 -0
  159. package/dist/components/ui/dialog.d.ts.map +1 -0
  160. package/dist/components/ui/dialog.js +60 -0
  161. package/dist/components/ui/dropdown-menu.d.ts +189 -0
  162. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  163. package/dist/components/ui/dropdown-menu.js +67 -0
  164. package/dist/components/ui/fact-list.d.ts +90 -0
  165. package/dist/components/ui/fact-list.d.ts.map +1 -0
  166. package/dist/components/ui/fact-list.js +38 -0
  167. package/dist/components/ui/field.d.ts +36 -0
  168. package/dist/components/ui/field.d.ts.map +1 -0
  169. package/dist/components/ui/field.js +46 -0
  170. package/dist/components/ui/input.d.ts +12 -0
  171. package/dist/components/ui/input.d.ts.map +1 -0
  172. package/dist/components/ui/input.js +14 -0
  173. package/dist/components/ui/kbd.d.ts +10 -0
  174. package/dist/components/ui/kbd.d.ts.map +1 -0
  175. package/dist/components/ui/kbd.js +12 -0
  176. package/dist/components/ui/pagination.d.ts +40 -0
  177. package/dist/components/ui/pagination.d.ts.map +1 -0
  178. package/dist/components/ui/pagination.js +49 -0
  179. package/dist/components/ui/popover.d.ts +56 -0
  180. package/dist/components/ui/popover.d.ts.map +1 -0
  181. package/dist/components/ui/popover.js +25 -0
  182. package/dist/components/ui/product-mark.d.ts +115 -0
  183. package/dist/components/ui/product-mark.d.ts.map +1 -0
  184. package/dist/components/ui/product-mark.js +82 -0
  185. package/dist/components/ui/product-switcher.d.ts +108 -0
  186. package/dist/components/ui/product-switcher.d.ts.map +1 -0
  187. package/dist/components/ui/product-switcher.js +47 -0
  188. package/dist/components/ui/progress.d.ts +38 -0
  189. package/dist/components/ui/progress.d.ts.map +1 -0
  190. package/dist/components/ui/progress.js +17 -0
  191. package/dist/components/ui/prose.d.ts +88 -0
  192. package/dist/components/ui/prose.d.ts.map +1 -0
  193. package/dist/components/ui/prose.js +53 -0
  194. package/dist/components/ui/radio-group.d.ts +66 -0
  195. package/dist/components/ui/radio-group.d.ts.map +1 -0
  196. package/dist/components/ui/radio-group.js +30 -0
  197. package/dist/components/ui/section.d.ts +60 -0
  198. package/dist/components/ui/section.d.ts.map +1 -0
  199. package/dist/components/ui/section.js +21 -0
  200. package/dist/components/ui/select.d.ts +124 -0
  201. package/dist/components/ui/select.d.ts.map +1 -0
  202. package/dist/components/ui/select.js +47 -0
  203. package/dist/components/ui/separator.d.ts +16 -0
  204. package/dist/components/ui/separator.d.ts.map +1 -0
  205. package/dist/components/ui/separator.js +15 -0
  206. package/dist/components/ui/skeleton.d.ts +12 -0
  207. package/dist/components/ui/skeleton.d.ts.map +1 -0
  208. package/dist/components/ui/skeleton.js +14 -0
  209. package/dist/components/ui/slider.d.ts +43 -0
  210. package/dist/components/ui/slider.d.ts.map +1 -0
  211. package/dist/components/ui/slider.js +23 -0
  212. package/dist/components/ui/switch.d.ts +42 -0
  213. package/dist/components/ui/switch.d.ts.map +1 -0
  214. package/dist/components/ui/switch.js +16 -0
  215. package/dist/components/ui/table.d.ts +27 -0
  216. package/dist/components/ui/table.d.ts.map +1 -0
  217. package/dist/components/ui/table.js +43 -0
  218. package/dist/components/ui/tabs.d.ts +66 -0
  219. package/dist/components/ui/tabs.d.ts.map +1 -0
  220. package/dist/components/ui/tabs.js +29 -0
  221. package/dist/components/ui/textarea.d.ts +11 -0
  222. package/dist/components/ui/textarea.d.ts.map +1 -0
  223. package/dist/components/ui/textarea.js +13 -0
  224. package/dist/components/ui/tooltip.d.ts +63 -0
  225. package/dist/components/ui/tooltip.d.ts.map +1 -0
  226. package/dist/components/ui/tooltip.js +25 -0
  227. package/dist/components/ui/typography.d.ts +32 -0
  228. package/dist/components/ui/typography.d.ts.map +1 -0
  229. package/dist/components/ui/typography.js +51 -0
  230. package/dist/index.d.ts +79 -0
  231. package/dist/index.d.ts.map +1 -0
  232. package/dist/index.js +68 -0
  233. package/dist/lib/utils.d.ts +3 -0
  234. package/dist/lib/utils.d.ts.map +1 -0
  235. package/dist/lib/utils.js +5 -0
  236. package/dist/pages/auth-page/index.d.ts +36 -0
  237. package/dist/pages/auth-page/index.d.ts.map +1 -0
  238. package/dist/pages/auth-page/index.js +23 -0
  239. package/dist/pages/blog-post-page/index.d.ts +174 -0
  240. package/dist/pages/blog-post-page/index.d.ts.map +1 -0
  241. package/dist/pages/blog-post-page/index.js +49 -0
  242. package/dist/pages/dashboard-page/index.d.ts +36 -0
  243. package/dist/pages/dashboard-page/index.d.ts.map +1 -0
  244. package/dist/pages/dashboard-page/index.js +24 -0
  245. package/dist/pages/index.d.ts +21 -0
  246. package/dist/pages/index.d.ts.map +1 -0
  247. package/dist/pages/index.js +14 -0
  248. package/dist/pages/marketing-page/index.d.ts +43 -0
  249. package/dist/pages/marketing-page/index.d.ts.map +1 -0
  250. package/dist/pages/marketing-page/index.js +25 -0
  251. package/dist/pages/not-found-page/index.d.ts +112 -0
  252. package/dist/pages/not-found-page/index.d.ts.map +1 -0
  253. package/dist/pages/not-found-page/index.js +46 -0
  254. package/dist/pages/settings-page/index.d.ts +47 -0
  255. package/dist/pages/settings-page/index.d.ts.map +1 -0
  256. package/dist/pages/settings-page/index.js +24 -0
  257. package/dist/provider/index.d.ts +12 -0
  258. package/dist/provider/index.d.ts.map +1 -0
  259. package/dist/provider/index.js +9 -0
  260. package/dist/provider/provider.d.ts +42 -0
  261. package/dist/provider/provider.d.ts.map +1 -0
  262. package/dist/provider/provider.js +178 -0
  263. package/dist/provider/theme-script.d.ts +55 -0
  264. package/dist/provider/theme-script.d.ts.map +1 -0
  265. package/dist/provider/theme-script.js +79 -0
  266. package/dist/styles.css +2894 -0
  267. package/dist/theming/index.d.ts +173 -0
  268. package/dist/theming/index.d.ts.map +1 -0
  269. package/dist/theming/index.js +186 -0
  270. package/package.json +89 -18
  271. package/components.json +0 -21
  272. package/public/r/badge.json +0 -26
  273. package/public/r/button.json +0 -26
  274. package/public/r/card.json +0 -25
  275. package/public/r/cta-01.json +0 -44
  276. package/public/r/feature-grid-01.json +0 -44
  277. package/public/r/hero-01.json +0 -44
  278. package/public/r/pricing-01.json +0 -46
  279. package/public/r/registry.json +0 -294
  280. package/public/r/section.json +0 -25
  281. package/public/r/stats-01.json +0 -44
  282. package/registry.json +0 -294
  283. package/src/components/ds/blocks/cta-01/block.json +0 -8
  284. package/src/components/ds/blocks/cta-01/cta.tsx +0 -62
  285. package/src/components/ds/blocks/cta-01/index.tsx +0 -1
  286. package/src/components/ds/blocks/feature-grid-01/block.json +0 -8
  287. package/src/components/ds/blocks/feature-grid-01/feature-grid.tsx +0 -69
  288. package/src/components/ds/blocks/feature-grid-01/index.tsx +0 -1
  289. package/src/components/ds/blocks/hero-01/block.json +0 -8
  290. package/src/components/ds/blocks/hero-01/hero.tsx +0 -85
  291. package/src/components/ds/blocks/hero-01/index.tsx +0 -1
  292. package/src/components/ds/blocks/pricing-01/block.json +0 -8
  293. package/src/components/ds/blocks/pricing-01/index.tsx +0 -1
  294. package/src/components/ds/blocks/pricing-01/pricing.tsx +0 -122
  295. package/src/components/ds/blocks/section.meta.json +0 -6
  296. package/src/components/ds/blocks/section.tsx +0 -86
  297. package/src/components/ds/blocks/stats-01/block.json +0 -8
  298. package/src/components/ds/blocks/stats-01/index.tsx +0 -1
  299. package/src/components/ds/blocks/stats-01/stats.tsx +0 -92
  300. package/src/components/ui/badge.tsx +0 -37
  301. package/src/components/ui/button.tsx +0 -77
  302. package/src/components/ui/card.tsx +0 -65
  303. package/src/lib/utils.ts +0 -6
package/registry.json DELETED
@@ -1,294 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry.json",
3
- "name": "nanisoft",
4
- "homepage": "https://prism.nanisoft.com",
5
- "items": [
6
- {
7
- "name": "badge",
8
- "title": "Badge",
9
- "description": "Shared badge primitive. Installed automatically as a dependency of any block that uses it.",
10
- "type": "registry:component",
11
- "dependencies": [
12
- "class-variance-authority",
13
- "clsx",
14
- "tailwind-merge"
15
- ],
16
- "files": [
17
- {
18
- "path": "src/components/ui/badge.tsx",
19
- "type": "registry:component",
20
- "target": "components/ui/badge.tsx"
21
- },
22
- {
23
- "path": "src/lib/utils.ts",
24
- "type": "registry:lib",
25
- "target": "lib/utils.ts"
26
- }
27
- ]
28
- },
29
- {
30
- "name": "button",
31
- "title": "Button",
32
- "description": "Shared button primitive. Installed automatically as a dependency of any block that uses it.",
33
- "type": "registry:component",
34
- "dependencies": [
35
- "class-variance-authority",
36
- "clsx",
37
- "tailwind-merge"
38
- ],
39
- "files": [
40
- {
41
- "path": "src/components/ui/button.tsx",
42
- "type": "registry:component",
43
- "target": "components/ui/button.tsx"
44
- },
45
- {
46
- "path": "src/lib/utils.ts",
47
- "type": "registry:lib",
48
- "target": "lib/utils.ts"
49
- }
50
- ]
51
- },
52
- {
53
- "name": "card",
54
- "title": "Card",
55
- "description": "Shared card primitive. Installed automatically as a dependency of any block that uses it.",
56
- "type": "registry:component",
57
- "dependencies": [
58
- "clsx",
59
- "tailwind-merge"
60
- ],
61
- "files": [
62
- {
63
- "path": "src/components/ui/card.tsx",
64
- "type": "registry:component",
65
- "target": "components/ui/card.tsx"
66
- },
67
- {
68
- "path": "src/lib/utils.ts",
69
- "type": "registry:lib",
70
- "target": "lib/utils.ts"
71
- }
72
- ]
73
- },
74
- {
75
- "name": "cta-01",
76
- "title": "CTA 01 - Filled Banner",
77
- "description": "A closing call to action on a filled primary surface. Headline, supporting line and the action are passed in as props.",
78
- "type": "registry:block",
79
- "categories": [
80
- "marketing"
81
- ],
82
- "registryDependencies": [
83
- "button"
84
- ],
85
- "dependencies": [
86
- "clsx",
87
- "lucide-react",
88
- "tailwind-merge"
89
- ],
90
- "files": [
91
- {
92
- "path": "src/components/ds/blocks/cta-01/cta.tsx",
93
- "type": "registry:component",
94
- "target": "components/ds/blocks/cta-01/cta.tsx"
95
- },
96
- {
97
- "path": "src/components/ds/blocks/cta-01/index.tsx",
98
- "type": "registry:component",
99
- "target": "components/ds/blocks/cta-01/index.tsx"
100
- },
101
- {
102
- "path": "src/components/ds/blocks/section.tsx",
103
- "type": "registry:component",
104
- "target": "components/ds/blocks/section.tsx"
105
- },
106
- {
107
- "path": "src/lib/utils.ts",
108
- "type": "registry:lib",
109
- "target": "lib/utils.ts"
110
- }
111
- ]
112
- },
113
- {
114
- "name": "feature-grid-01",
115
- "title": "Feature Grid 01 - Four Up With Icons",
116
- "description": "A four-up feature grid with icon tiles. Pass the items in; the section heading is optional.",
117
- "type": "registry:block",
118
- "categories": [
119
- "marketing"
120
- ],
121
- "registryDependencies": [
122
- "card"
123
- ],
124
- "dependencies": [
125
- "clsx",
126
- "lucide-react",
127
- "tailwind-merge"
128
- ],
129
- "files": [
130
- {
131
- "path": "src/components/ds/blocks/feature-grid-01/feature-grid.tsx",
132
- "type": "registry:component",
133
- "target": "components/ds/blocks/feature-grid-01/feature-grid.tsx"
134
- },
135
- {
136
- "path": "src/components/ds/blocks/feature-grid-01/index.tsx",
137
- "type": "registry:component",
138
- "target": "components/ds/blocks/feature-grid-01/index.tsx"
139
- },
140
- {
141
- "path": "src/components/ds/blocks/section.tsx",
142
- "type": "registry:component",
143
- "target": "components/ds/blocks/section.tsx"
144
- },
145
- {
146
- "path": "src/lib/utils.ts",
147
- "type": "registry:lib",
148
- "target": "lib/utils.ts"
149
- }
150
- ]
151
- },
152
- {
153
- "name": "hero-01",
154
- "title": "Hero 01 - Centered Marketing Hero",
155
- "description": "A centered hero with an optional eyebrow, headline, supporting line and one or two actions. All copy is passed in as props.",
156
- "type": "registry:block",
157
- "categories": [
158
- "marketing"
159
- ],
160
- "registryDependencies": [
161
- "button"
162
- ],
163
- "dependencies": [
164
- "clsx",
165
- "lucide-react",
166
- "tailwind-merge"
167
- ],
168
- "files": [
169
- {
170
- "path": "src/components/ds/blocks/hero-01/hero.tsx",
171
- "type": "registry:component",
172
- "target": "components/ds/blocks/hero-01/hero.tsx"
173
- },
174
- {
175
- "path": "src/components/ds/blocks/hero-01/index.tsx",
176
- "type": "registry:component",
177
- "target": "components/ds/blocks/hero-01/index.tsx"
178
- },
179
- {
180
- "path": "src/components/ds/blocks/section.tsx",
181
- "type": "registry:component",
182
- "target": "components/ds/blocks/section.tsx"
183
- },
184
- {
185
- "path": "src/lib/utils.ts",
186
- "type": "registry:lib",
187
- "target": "lib/utils.ts"
188
- }
189
- ]
190
- },
191
- {
192
- "name": "pricing-01",
193
- "title": "Pricing 01 - Three Tier With Highlight",
194
- "description": "A three-up plan comparison with one plan lifted. Plans, prices, features and actions are all passed in as props.",
195
- "type": "registry:block",
196
- "categories": [
197
- "marketing"
198
- ],
199
- "registryDependencies": [
200
- "button",
201
- "badge",
202
- "card"
203
- ],
204
- "dependencies": [
205
- "clsx",
206
- "lucide-react",
207
- "tailwind-merge"
208
- ],
209
- "files": [
210
- {
211
- "path": "src/components/ds/blocks/pricing-01/index.tsx",
212
- "type": "registry:component",
213
- "target": "components/ds/blocks/pricing-01/index.tsx"
214
- },
215
- {
216
- "path": "src/components/ds/blocks/pricing-01/pricing.tsx",
217
- "type": "registry:component",
218
- "target": "components/ds/blocks/pricing-01/pricing.tsx"
219
- },
220
- {
221
- "path": "src/components/ds/blocks/section.tsx",
222
- "type": "registry:component",
223
- "target": "components/ds/blocks/section.tsx"
224
- },
225
- {
226
- "path": "src/lib/utils.ts",
227
- "type": "registry:lib",
228
- "target": "lib/utils.ts"
229
- }
230
- ]
231
- },
232
- {
233
- "name": "section",
234
- "title": "Section",
235
- "description": "Container and heading primitives that give every block a consistent vertical rhythm.",
236
- "type": "registry:component",
237
- "dependencies": [
238
- "clsx",
239
- "tailwind-merge"
240
- ],
241
- "files": [
242
- {
243
- "path": "src/components/ds/blocks/section.tsx",
244
- "type": "registry:component",
245
- "target": "components/ds/blocks/section.tsx"
246
- },
247
- {
248
- "path": "src/lib/utils.ts",
249
- "type": "registry:lib",
250
- "target": "lib/utils.ts"
251
- }
252
- ]
253
- },
254
- {
255
- "name": "stats-01",
256
- "title": "Stats 01 - KPI Row With Trend",
257
- "description": "A four-up KPI row with optional directional deltas. Every metric is passed in; the block ships no sample data.",
258
- "type": "registry:block",
259
- "categories": [
260
- "application"
261
- ],
262
- "registryDependencies": [
263
- "card"
264
- ],
265
- "dependencies": [
266
- "clsx",
267
- "lucide-react",
268
- "tailwind-merge"
269
- ],
270
- "files": [
271
- {
272
- "path": "src/components/ds/blocks/stats-01/index.tsx",
273
- "type": "registry:component",
274
- "target": "components/ds/blocks/stats-01/index.tsx"
275
- },
276
- {
277
- "path": "src/components/ds/blocks/stats-01/stats.tsx",
278
- "type": "registry:component",
279
- "target": "components/ds/blocks/stats-01/stats.tsx"
280
- },
281
- {
282
- "path": "src/components/ds/blocks/section.tsx",
283
- "type": "registry:component",
284
- "target": "components/ds/blocks/section.tsx"
285
- },
286
- {
287
- "path": "src/lib/utils.ts",
288
- "type": "registry:lib",
289
- "target": "lib/utils.ts"
290
- }
291
- ]
292
- }
293
- ]
294
- }
@@ -1,8 +0,0 @@
1
- {
2
- "name": "cta-01",
3
- "title": "CTA 01 - Filled Banner",
4
- "description": "A closing call to action on a filled primary surface. Headline, supporting line and the action are passed in as props.",
5
- "categories": ["marketing"],
6
- "registryDependencies": ["button"],
7
- "dependencies": ["lucide-react"]
8
- }
@@ -1,62 +0,0 @@
1
- import { ArrowRight } from 'lucide-react'
2
-
3
- import { Button } from '@/components/ui/button'
4
- import { Section, type HeadingLevel } from '@/components/ds/blocks/section'
5
-
6
- export type Cta01Props = {
7
- title: string
8
- description?: string
9
- action?: { label: string; href?: string; variant?: 'default' | 'secondary' | 'outline' }
10
- /** Heading level for the headline. See `HeadingLevel`. */
11
- headingLevel?: HeadingLevel
12
- }
13
-
14
- /**
15
- * A closing call to action on a filled primary surface.
16
- *
17
- * The copy and the action are props. It previously shipped the catalog's own
18
- * pitch ("Start with one block, keep the tokens") and a hardcoded "Browse the
19
- * catalog" button, both of which described the library rather than whatever
20
- * product installed the block.
21
- */
22
- export function Cta01({ title, description, action, headingLevel = 'h2' }: Cta01Props) {
23
- /*
24
- * The same mechanism `SectionHeading` uses for its own `as` prop, which this
25
- * block cannot borrow: its copy sits on a filled `bg-primary` surface, where
26
- * `SectionHeading`'s muted-surface description colour and `gap-4` would be
27
- * wrong. So the tag is resolved here and the classes stay surface-specific
28
- * rather than the heading level being the reason the markup stays hardcoded.
29
- */
30
- const Heading = headingLevel
31
-
32
- return (
33
- <Section className="py-20">
34
- <div className="bg-primary text-primary-foreground relative overflow-hidden rounded-2xl px-8 py-16 text-center">
35
- <div
36
- aria-hidden
37
- className="from-primary-foreground/15 pointer-events-none absolute inset-0 bg-gradient-to-tr to-transparent"
38
- />
39
- <div className="relative flex flex-col items-center gap-6">
40
- <Heading className="max-w-2xl text-3xl font-semibold tracking-tight text-balance sm:text-4xl">
41
- {title}
42
- </Heading>
43
- {description ? (
44
- <p className="max-w-xl text-lg text-pretty opacity-90">{description}</p>
45
- ) : null}
46
- {action ? (
47
- <Button
48
- size="lg"
49
- variant={action.variant ?? 'secondary'}
50
- className="group"
51
- >
52
- {action.label}
53
- <ArrowRight className="motion-safe:transition-transform size-4 group-hover:translate-x-0.5" />
54
- </Button>
55
- ) : null}
56
- </div>
57
- </div>
58
- </Section>
59
- )
60
- }
61
-
62
- export default Cta01
@@ -1 +0,0 @@
1
- export { Cta01, default } from './cta'
@@ -1,8 +0,0 @@
1
- {
2
- "name": "feature-grid-01",
3
- "title": "Feature Grid 01 - Four Up With Icons",
4
- "description": "A four-up feature grid with icon tiles. Pass the items in; the section heading is optional.",
5
- "categories": ["marketing"],
6
- "registryDependencies": ["card"],
7
- "dependencies": ["lucide-react"]
8
- }
@@ -1,69 +0,0 @@
1
- import type { LucideIcon } from 'lucide-react'
2
-
3
- import { Card, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
4
- import { Section, SectionHeading, type HeadingLevel } from '@/components/ds/blocks/section'
5
-
6
- export type Feature = {
7
- icon: LucideIcon
8
- title: string
9
- body: string
10
- }
11
-
12
- export type FeatureGrid01Props = {
13
- eyebrow?: string
14
- title?: string
15
- description?: string
16
- features: Feature[]
17
- /** `icon` tiles read well at 2-up; `bare` leans on the type alone. */
18
- variant?: 'icon' | 'bare'
19
- /** Heading level for the section title. See `HeadingLevel`. */
20
- headingLevel?: HeadingLevel
21
- }
22
-
23
- /**
24
- * A grid of short feature blurbs.
25
- *
26
- * The feature list is a prop. It previously hardcoded the catalog's own selling
27
- * points under the heading "Why this catalog", so an installed block argued for
28
- * the library inside the consumer's product.
29
- */
30
- export function FeatureGrid01({
31
- eyebrow,
32
- title,
33
- description,
34
- features,
35
- variant = 'icon',
36
- headingLevel = 'h2',
37
- }: FeatureGrid01Props) {
38
- return (
39
- <Section>
40
- {title ? (
41
- <SectionHeading
42
- as={headingLevel}
43
- eyebrow={eyebrow}
44
- title={title}
45
- description={description}
46
- className="mb-12"
47
- />
48
- ) : null}
49
-
50
- <div className="grid gap-6 sm:grid-cols-2">
51
- {features.map((feature) => (
52
- <Card key={feature.title} className="gap-4 py-6">
53
- <CardHeader>
54
- {variant === 'icon' ? (
55
- <span className="bg-accent text-accent-foreground mb-2 flex size-10 items-center justify-center rounded-lg">
56
- <feature.icon className="size-5" />
57
- </span>
58
- ) : null}
59
- <CardTitle>{feature.title}</CardTitle>
60
- <CardDescription>{feature.body}</CardDescription>
61
- </CardHeader>
62
- </Card>
63
- ))}
64
- </div>
65
- </Section>
66
- )
67
- }
68
-
69
- export default FeatureGrid01
@@ -1 +0,0 @@
1
- export { FeatureGrid01, default } from './feature-grid'
@@ -1,8 +0,0 @@
1
- {
2
- "name": "hero-01",
3
- "title": "Hero 01 - Centered Marketing Hero",
4
- "description": "A centered hero with an optional eyebrow, headline, supporting line and one or two actions. All copy is passed in as props.",
5
- "categories": ["marketing"],
6
- "registryDependencies": ["button"],
7
- "dependencies": ["lucide-react"]
8
- }
@@ -1,85 +0,0 @@
1
- import { ArrowRight } from 'lucide-react'
2
-
3
- import { Button } from '@/components/ui/button'
4
- import { Section, SectionHeading, type HeadingLevel } from '@/components/ds/blocks/section'
5
-
6
- export type HeroAction = {
7
- label: string
8
- href?: string
9
- variant?: 'default' | 'outline' | 'secondary' | 'ghost'
10
- }
11
-
12
- export type Hero01Props = {
13
- /**
14
- * Optional label above the headline. Intentionally has no default: an earlier
15
- * version shipped a hardcoded "Now in open beta" pill, which meant every
16
- * consumer who installed this block inherited a status badge making a claim
17
- * about their product. Pass one if you mean it.
18
- */
19
- eyebrow?: string
20
- title: string
21
- description?: string
22
- actions?: HeroAction[]
23
- /**
24
- * Heading level for the title. Defaults to `h2` because a block is composed,
25
- * not a page: it installs into a consumer's layout via `shadcn add` and renders
26
- * inside catalog previews, so the surrounding document already owns the `h1`.
27
- * A page that uses this block as its top-level heading opts in with
28
- * `headingLevel="h1"`; a document that already names this section in its own
29
- * heading passes one level deeper. See `HeadingLevel`.
30
- */
31
- headingLevel?: HeadingLevel
32
- }
33
-
34
- export function Hero01({
35
- eyebrow,
36
- title,
37
- description,
38
- actions = [],
39
- headingLevel = 'h2',
40
- }: Hero01Props) {
41
- return (
42
- <Section className="relative overflow-hidden">
43
- <div
44
- aria-hidden
45
- className="from-primary/5 pointer-events-none absolute inset-0 -z-10 bg-gradient-to-b to-transparent"
46
- />
47
- <div className="flex flex-col items-center gap-10 text-center">
48
- {eyebrow ? (
49
- <span className="bg-muted text-muted-foreground rounded-full px-3 py-1 text-xs font-medium">
50
- {eyebrow}
51
- </span>
52
- ) : null}
53
-
54
- <SectionHeading
55
- as={headingLevel}
56
- title={title}
57
- description={description}
58
- />
59
-
60
- {actions.length ? (
61
- <div className="flex flex-col gap-3 sm:flex-row">
62
- {actions.map((action, index) => (
63
- // Positional, for the same reason as `pricing-01`'s feature list:
64
- // the label is display content, and two actions may share one.
65
- // Safe here because the list is static and never reordered.
66
- <Button
67
- key={index}
68
- size="lg"
69
- variant={action.variant ?? (index === 0 ? 'default' : 'outline')}
70
- className="group"
71
- >
72
- {action.label}
73
- {index === 0 ? (
74
- <ArrowRight className="motion-safe:transition-transform size-4 group-hover:translate-x-0.5" />
75
- ) : null}
76
- </Button>
77
- ))}
78
- </div>
79
- ) : null}
80
- </div>
81
- </Section>
82
- )
83
- }
84
-
85
- export default Hero01
@@ -1 +0,0 @@
1
- export { Hero01, default } from './hero'
@@ -1,8 +0,0 @@
1
- {
2
- "name": "pricing-01",
3
- "title": "Pricing 01 - Three Tier With Highlight",
4
- "description": "A three-up plan comparison with one plan lifted. Plans, prices, features and actions are all passed in as props.",
5
- "categories": ["marketing"],
6
- "registryDependencies": ["button", "badge", "card"],
7
- "dependencies": ["lucide-react"]
8
- }
@@ -1 +0,0 @@
1
- export { Pricing01, default } from './pricing'
@@ -1,122 +0,0 @@
1
- import { Check } from 'lucide-react'
2
-
3
- import { Badge } from '@/components/ui/badge'
4
- import { Button } from '@/components/ui/button'
5
- import {
6
- Card,
7
- CardContent,
8
- CardDescription,
9
- CardFooter,
10
- CardHeader,
11
- CardTitle,
12
- } from '@/components/ui/card'
13
- import { Section, SectionHeading, type HeadingLevel } from '@/components/ds/blocks/section'
14
-
15
- export type Plan = {
16
- name: string
17
- price: string
18
- /** Rendered after the price, e.g. " / month". Omit for a one-off figure. */
19
- period?: string
20
- body?: string
21
- features: string[]
22
- cta: string
23
- /** Lifts the plan with a primary border and a filled button. */
24
- featured?: boolean
25
- /** Overrides the "Popular" badge on the featured plan. */
26
- badge?: string
27
- }
28
-
29
- export type Pricing01Props = {
30
- eyebrow?: string
31
- title?: string
32
- description?: string
33
- plans: Plan[]
34
- /** Heading level for the section title. See `HeadingLevel`. */
35
- headingLevel?: HeadingLevel
36
- }
37
-
38
- /**
39
- * A three-up plan comparison.
40
- *
41
- * Every plan is a prop, including the price and the call to action. It previously
42
- * hardcoded "$0 / $24 / $68", "Talk to us", "MIT licence" and "Figma library",
43
- * and shipped a heading reading "Pricing" above a title already reading "Pick a
44
- * plan". A shared library has no plans to sell, so those strings described a
45
- * business that does not exist here, and every consumer who installed the block
46
- * inherited them.
47
- */
48
- export function Pricing01({
49
- eyebrow,
50
- title,
51
- description,
52
- plans,
53
- headingLevel = 'h2',
54
- }: Pricing01Props) {
55
- return (
56
- <Section>
57
- {title ? (
58
- <SectionHeading
59
- as={headingLevel}
60
- eyebrow={eyebrow}
61
- title={title}
62
- description={description}
63
- className="mb-12"
64
- />
65
- ) : null}
66
-
67
- <div className="grid gap-6 lg:grid-cols-3">
68
- {plans.map((plan) => (
69
- <Card
70
- key={plan.name}
71
- className={plan.featured ? 'border-primary shadow-md' : undefined}
72
- >
73
- <CardHeader>
74
- <div className="flex items-center justify-between">
75
- <CardTitle>{plan.name}</CardTitle>
76
- {plan.featured ? <Badge>{plan.badge ?? 'Popular'}</Badge> : null}
77
- </div>
78
- {plan.body ? <CardDescription>{plan.body}</CardDescription> : null}
79
- <p className="mt-2 text-3xl font-semibold tracking-tight">
80
- {plan.price}
81
- {plan.period ? (
82
- <span className="text-muted-foreground text-sm font-normal">
83
- {plan.period}
84
- </span>
85
- ) : null}
86
- </p>
87
- </CardHeader>
88
-
89
- <CardContent className="flex flex-col gap-3">
90
- {/*
91
- Keyed by position, not by the feature string. The string is display
92
- content rather than identity, and a plan is free to list the same
93
- line twice; keying on it logged React's duplicate-key error and let
94
- React drop and reorder rows. `key={index}` is correct here because
95
- this list is static: it is rendered once from props and never
96
- reordered, filtered or appended to, so there is no state to
97
- preserve across a reorder that a positional key could lose.
98
- */}
99
- {plan.features.map((feature, index) => (
100
- <p key={index} className="flex items-start gap-2 text-sm">
101
- <Check className="text-success mt-0.5 size-4 shrink-0" />
102
- {feature}
103
- </p>
104
- ))}
105
- </CardContent>
106
-
107
- <CardFooter className="mt-auto">
108
- <Button
109
- className="w-full"
110
- variant={plan.featured ? 'default' : 'outline'}
111
- >
112
- {plan.cta}
113
- </Button>
114
- </CardFooter>
115
- </Card>
116
- ))}
117
- </div>
118
- </Section>
119
- )
120
- }
121
-
122
- export default Pricing01