@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/dist/index.js ADDED
@@ -0,0 +1,68 @@
1
+ /**
2
+ * The curated Prism barrel.
3
+ *
4
+ * The most-used components, blocks and theming vocabulary in one import. It
5
+ * carries no styles and no runtime side effects: importing this entry must not
6
+ * pull the provider, the catalogue or a stylesheet. Consumers that want one
7
+ * item import its own subpath instead.
8
+ */
9
+ export { Button } from './components/ui/button';
10
+ export { CtaLink } from './components/ui/cta-link';
11
+ export { Badge } from './components/ui/badge';
12
+ export { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, } from './components/ui/card';
13
+ export { Section, SectionHeading } from './components/ui/section';
14
+ export { Alert, AlertTitle, AlertDescription } from './components/ui/alert';
15
+ export { Separator } from './components/ui/separator';
16
+ export { Skeleton } from './components/ui/skeleton';
17
+ export { Input } from './components/ui/input';
18
+ export { Textarea } from './components/ui/textarea';
19
+ export { Field, FieldLabel, FieldDescription, FieldError, FieldGroup, } from './components/ui/field';
20
+ export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, } from './components/ui/table';
21
+ export { Heading, Text } from './components/ui/typography';
22
+ export { Kbd } from './components/ui/kbd';
23
+ export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, } from './components/ui/breadcrumb';
24
+ export { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis, } from './components/ui/pagination';
25
+ export { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, SelectGroup, SelectLabel, SelectSeparator, } from './components/ui/select';
26
+ export { Checkbox } from './components/ui/checkbox';
27
+ export { RadioGroup, RadioGroupItem } from './components/ui/radio-group';
28
+ export { Switch } from './components/ui/switch';
29
+ export { Slider } from './components/ui/slider';
30
+ export { Progress } from './components/ui/progress';
31
+ export { Tooltip, TooltipTrigger, TooltipContent } from './components/ui/tooltip';
32
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from './components/ui/accordion';
33
+ export { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, DialogClose, } from './components/ui/dialog';
34
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuGroup, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, } from './components/ui/dropdown-menu';
35
+ export { Popover, PopoverTrigger, PopoverContent } from './components/ui/popover';
36
+ export { Tabs, TabsList, TabsTrigger, TabsContent } from './components/ui/tabs';
37
+ export { Avatar, AvatarImage, AvatarFallback } from './components/ui/avatar';
38
+ export { Diagram } from './components/ui/diagram';
39
+ export { ProductMark } from './components/ui/product-mark';
40
+ export { Prose } from './components/ui/prose';
41
+ export { FactList } from './components/ui/fact-list';
42
+ export { ProductSwitcher } from './components/ui/product-switcher';
43
+ export { Hero01 } from './blocks/hero-01';
44
+ export { FeatureGrid01 } from './blocks/feature-grid-01';
45
+ export { Stats01 } from './blocks/stats-01';
46
+ export { Pricing01 } from './blocks/pricing-01';
47
+ export { Cta01 } from './blocks/cta-01';
48
+ export { PageHeader01 } from './blocks/page-header-01';
49
+ export { DataTable01 } from './blocks/data-table-01';
50
+ export { SettingsPanel01 } from './blocks/settings-panel-01';
51
+ export { AuthForm01 } from './blocks/auth-form-01';
52
+ export { AppShell01 } from './blocks/app-shell-01';
53
+ export { ProcessRail01 } from './blocks/process-rail-01';
54
+ export { StatusLedger01, STATUS_TIERS } from './blocks/status-ledger-01';
55
+ export { ProductGrid01 } from './blocks/product-grid-01';
56
+ export { StackGrid01 } from './blocks/stack-grid-01';
57
+ export { LogoStrip01 } from './blocks/logo-strip-01';
58
+ export { NoteGrid01 } from './blocks/note-grid-01';
59
+ export { InstrumentPanel01 } from './blocks/instrument-panel-01';
60
+ export { SiteHeader } from './blocks/site-header';
61
+ export { SiteFooter } from './blocks/site-footer';
62
+ export { MarketingPage } from './pages/marketing-page';
63
+ export { DashboardPage } from './pages/dashboard-page';
64
+ export { SettingsPage } from './pages/settings-page';
65
+ export { AuthPage } from './pages/auth-page';
66
+ export { NotFoundPage } from './pages/not-found-page';
67
+ export { BlogPostPage } from './pages/blog-post-page';
68
+ export { PACKS, MODES, parseStoredTheme, themeAttributes } from './theming';
@@ -0,0 +1,3 @@
1
+ import { type ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAA;AAG5C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -0,0 +1,5 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
@@ -0,0 +1,36 @@
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ import { AuthForm01 } from '../../blocks/auth-form-01';
3
+ export type AuthPageAside = {
4
+ /** The supporting card's title. */
5
+ title: string;
6
+ /** One line under the title. */
7
+ description?: string;
8
+ /** The card body: product context, a short list or a supporting note. */
9
+ children?: ReactNode;
10
+ };
11
+ export type AuthPageProps = {
12
+ /** The credential form. */
13
+ form: ComponentProps<typeof AuthForm01>;
14
+ /**
15
+ * A supporting card beside the form. Omit it for a single centered column.
16
+ */
17
+ aside?: AuthPageAside;
18
+ /** A node under the form, such as a legal line or a link to another screen. */
19
+ footer?: ReactNode;
20
+ };
21
+ /**
22
+ * A complete authentication screen.
23
+ *
24
+ * It composes `AuthForm01` with `Card`: the form carries the credentials and an
25
+ * optional supporting card sits beside it with product context. The page owns
26
+ * the layout, the centering and the breakpoint only. Every field, label,
27
+ * handler and error is a prop through `form`, and the page fetches nothing and
28
+ * imports no router, so the consumer owns the links and the request.
29
+ *
30
+ * The layout is one centered column when no `aside` is passed, and a two-column
31
+ * split from the large breakpoint up when one is. That keeps the docs preview
32
+ * and a narrow screen on the same, readable path.
33
+ */
34
+ export declare function AuthPage({ form, aside, footer }: AuthPageProps): import("react").JSX.Element;
35
+ export default AuthPage;
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/auth-page/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAStD,MAAM,MAAM,aAAa,GAAG;IAC1B,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,2BAA2B;IAC3B,IAAI,EAAE,cAAc,CAAC,OAAO,UAAU,CAAC,CAAA;IACvC;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,aAAa,+BA+B9D;AAED,eAAe,QAAQ,CAAA"}
@@ -0,0 +1,23 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AuthForm01 } from '../../blocks/auth-form-01';
4
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '../../components/ui/card';
5
+ /**
6
+ * A complete authentication screen.
7
+ *
8
+ * It composes `AuthForm01` with `Card`: the form carries the credentials and an
9
+ * optional supporting card sits beside it with product context. The page owns
10
+ * the layout, the centering and the breakpoint only. Every field, label,
11
+ * handler and error is a prop through `form`, and the page fetches nothing and
12
+ * imports no router, so the consumer owns the links and the request.
13
+ *
14
+ * The layout is one centered column when no `aside` is passed, and a two-column
15
+ * split from the large breakpoint up when one is. That keeps the docs preview
16
+ * and a narrow screen on the same, readable path.
17
+ */
18
+ export function AuthPage({ form, aside, footer }) {
19
+ return (_jsx("div", { className: "bg-background text-foreground flex min-h-svh w-full items-center justify-center px-6 py-16", children: _jsxs("div", { className: aside
20
+ ? 'grid w-full max-w-page items-center gap-10 lg:grid-cols-2'
21
+ : 'w-full max-w-measure-narrow', children: [aside ? (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: aside.title }), aside.description ? (_jsx(CardDescription, { children: aside.description })) : null] }), aside.children ? _jsx(CardContent, { children: aside.children }) : null] })) : null, _jsxs("div", { className: "mx-auto w-full max-w-measure-narrow", children: [_jsx(AuthForm01, { ...form }), footer ? (_jsx("div", { className: "text-muted-foreground mt-4 text-center text-sm", children: footer })) : null] })] }) }));
22
+ }
23
+ export default AuthPage;
@@ -0,0 +1,174 @@
1
+ import type { ReactNode } from 'react';
2
+ /**
3
+ * One tag on a post, or one step in the trail to the next one.
4
+ *
5
+ * `href` is optional and a tag without one renders as text. A tag that goes
6
+ * somewhere is a link, a tag that does not is a word, and a post's tags are
7
+ * usually the words.
8
+ */
9
+ export type BlogPostTag = {
10
+ /** The word on the tag. */
11
+ label: string;
12
+ /** Where the tag goes, for a tag that filters an archive. */
13
+ href?: string;
14
+ };
15
+ /**
16
+ * One neighbour of this post: the title and where it is.
17
+ *
18
+ * `title` and `href` are both required. A next post with no title is an arrow
19
+ * with a destination and no promise about what is at the other end, which is the
20
+ * one thing a reader deciding whether to click cannot afford.
21
+ */
22
+ export type BlogPostNeighbour = {
23
+ /** The post's title. */
24
+ title: string;
25
+ /** Where the post is. */
26
+ href: string;
27
+ };
28
+ /**
29
+ * The two words the trail renders above the neighbouring posts' titles.
30
+ *
31
+ * Both are required, and both are the caller's: "Previous" and "Next" are this
32
+ * Page's own phrasing, a site that files posts newest-last says the opposite pair,
33
+ * and a Page that ships no copy ships no reader-facing copy either.
34
+ */
35
+ export type BlogPostTrailLabels = {
36
+ /** The word above the previous post's title. */
37
+ previous: string;
38
+ /** The word above the next post's title. */
39
+ next: string;
40
+ };
41
+ /**
42
+ * The props a BlogPostPage takes.
43
+ *
44
+ * The post's own text is `children`, because a post's body is authored wherever it
45
+ * is authored - a Markdown file, a CMS, a headless store - and Prism owns the
46
+ * measure and the rhythm around it, not the words. Everything that is a *fact*
47
+ * about the post rather than its text is a prop: the title, the standfirst, the
48
+ * date, the tags and the neighbours.
49
+ */
50
+ export type BlogPostPageProps = {
51
+ /**
52
+ * The post's title. It is the page's `h1`, so the page has exactly one and it
53
+ * is the post's name.
54
+ */
55
+ title: string;
56
+ /**
57
+ * The standfirst: one or two sentences under the title that say what the post
58
+ * is about. It is a prop rather than the first paragraph of the body because a
59
+ * reader deciding whether to read needs it before the body starts, and because
60
+ * it is what an index, a feed and a search result show.
61
+ */
62
+ description?: string;
63
+ /**
64
+ * The publication date, already formatted for display, and the machine value
65
+ * for the `time` element's `dateTime`. Both are props, and the machine one is
66
+ * required: `dateTime` is what a reader's browser, a feed reader and a search
67
+ * engine use to order posts, and a formatted string is none of those.
68
+ */
69
+ date: string;
70
+ /**
71
+ * The date in a machine-readable form, `YYYY-MM-DD`, carried on the `time`
72
+ * element. Required, and deliberately not derived from `date`: parsing a
73
+ * formatted date back into an ISO one is a guess about a locale, and a guess
74
+ * in a `datetime` attribute is a wrong date in a feed.
75
+ */
76
+ dateTime: string;
77
+ /** Who wrote the post. A name, or a link to an author page. */
78
+ author?: ReactNode;
79
+ /**
80
+ * The tags on the post, in the order a reader should meet them. Omit them for a
81
+ * post with none: an empty row of badges is a row of nothing.
82
+ */
83
+ tags?: readonly BlogPostTag[];
84
+ /** How long the post takes to read, in the consumer's own words. */
85
+ readingTime?: string;
86
+ /**
87
+ * The post's body. Any flow content: paragraphs, headings, lists, code, images,
88
+ * tables. `Prose` holds it to the reading measure and to the block rhythm.
89
+ */
90
+ children: ReactNode;
91
+ /**
92
+ * The post before this one and the post after it, for the trail at the foot of
93
+ * the page. Omit the half there is no neighbour for; a "previous" link with no
94
+ * previous post is a link to nothing.
95
+ */
96
+ previous?: BlogPostNeighbour;
97
+ next?: BlogPostNeighbour;
98
+ /**
99
+ * The two words the trail renders above the neighbouring posts' titles. Required
100
+ * whenever either neighbour is passed, because they are words a reader reads and
101
+ * a Page that ships no copy ships no reader-facing copy either.
102
+ */
103
+ trailLabels: BlogPostTrailLabels;
104
+ /**
105
+ * The accessible name of the trail between the neighbouring posts. It is
106
+ * required whenever either neighbour is passed, because it is a word a reader
107
+ * hears and a Page that ships no copy ships no reader-facing copy either. "More
108
+ * posts" is the Page's own phrasing and a site that files posts by release calls
109
+ * the same landmark something else.
110
+ */
111
+ trailLabel: string;
112
+ /**
113
+ * The way back to the archive the post is filed in, rendered as one call to
114
+ * action under the trail. A prop rather than a hardcoded "back to the index",
115
+ * because the words and the route belong to the site that publishes the post
116
+ * and a Page that held either would be a Page making a claim about a consumer's
117
+ * own site.
118
+ */
119
+ indexLink?: BlogPostNeighbour;
120
+ /**
121
+ * A slot for what comes after the trail: a related-posts grid, a newsletter
122
+ * form, a call to action. A slot rather than a prop because every one of those
123
+ * is a Block, and a Page that took a Block per prop would be a Page whose
124
+ * interface lists the whole catalogue.
125
+ */
126
+ footer?: ReactNode;
127
+ /**
128
+ * Layout only, exactly as on every Component. Changing a Prism-owned visual
129
+ * property from here is prohibited.
130
+ */
131
+ className?: string;
132
+ };
133
+ /**
134
+ * A complete blog post screen: the title, the standfirst, the byline, the body at
135
+ * the measure, and the trail to the neighbouring posts.
136
+ *
137
+ * All four NaniSoft sites publish a blog, each with four posts and the same
138
+ * frontmatter: a title, a description, a date and a list of tags. Each one then
139
+ * rendered that frontmatter in its own component, with its own wrapper, its own
140
+ * measure and its own treatment of the date, and each of them wrote the trail to
141
+ * the neighbouring posts separately or not at all.
142
+ *
143
+ * It is a Page rather than a Block because it is a whole screen and it is the
144
+ * screen a content pipeline targets: a route that reads one document and hands
145
+ * its frontmatter to this Page. The Page is what makes the frontmatter a
146
+ * contract, because a field that is not a prop is a field nothing checks.
147
+ *
148
+ * **The date is two props.** `date` is the words a reader sees and `dateTime` is
149
+ * the machine value on the `time` element, and they are kept apart because
150
+ * parsing a formatted date back into an ISO one is a guess about a locale. A
151
+ * wrong date in a `datetime` attribute is a wrong date in a feed reader and in a
152
+ * search result, and neither reader can see the string that was wrong. This is
153
+ * the arrangement every one of the four sites needs and none of them has, because
154
+ * each of them formats its date in one place and has nowhere else to put the ISO
155
+ * value.
156
+ *
157
+ * The body is `children` and it is held by `Prose`, not by a set of per-element
158
+ * props. A post's body is authored somewhere else - a Markdown pipeline, a CMS -
159
+ * and a Page that took `paragraphs` and `headings` as arrays would be a Page that
160
+ * had to be handed a parsed document, which is a second representation of
161
+ * something the consumer's own pipeline already owns.
162
+ *
163
+ * The trail is one `nav` with two links, and it renders only the halves it is
164
+ * given. A previous link on the oldest post is a link to the first post a reader
165
+ * has already read, and a next link on the newest is a promise the site cannot
166
+ * keep.
167
+ *
168
+ * It is a server Component. It fetches nothing, it holds no state and it imports
169
+ * no router, so a consumer renders it from a server route and hands it the
170
+ * document their pipeline produced.
171
+ */
172
+ export declare function BlogPostPage({ title, description, date, dateTime, author, tags, readingTime, children, previous, next, trailLabels, trailLabel, indexLink, footer, className, }: BlogPostPageProps): import("react").JSX.Element;
173
+ export default BlogPostPage;
174
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/blog-post-page/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAC7B,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IAC5B,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB;;;;OAIG;IACH,WAAW,EAAE,mBAAmB,CAAA;IAChC;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAA;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,UAAU,EACV,SAAS,EACT,MAAM,EACN,SAAS,GACV,EAAE,iBAAiB,+BAgFnB;AAED,eAAe,YAAY,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Badge } from '../../components/ui/badge';
3
+ import { CtaLink } from '../../components/ui/cta-link';
4
+ import { Heading, Text } from '../../components/ui/typography';
5
+ import { Prose } from '../../components/ui/prose';
6
+ import { Section } from '../../components/ui/section';
7
+ /**
8
+ * A complete blog post screen: the title, the standfirst, the byline, the body at
9
+ * the measure, and the trail to the neighbouring posts.
10
+ *
11
+ * All four NaniSoft sites publish a blog, each with four posts and the same
12
+ * frontmatter: a title, a description, a date and a list of tags. Each one then
13
+ * rendered that frontmatter in its own component, with its own wrapper, its own
14
+ * measure and its own treatment of the date, and each of them wrote the trail to
15
+ * the neighbouring posts separately or not at all.
16
+ *
17
+ * It is a Page rather than a Block because it is a whole screen and it is the
18
+ * screen a content pipeline targets: a route that reads one document and hands
19
+ * its frontmatter to this Page. The Page is what makes the frontmatter a
20
+ * contract, because a field that is not a prop is a field nothing checks.
21
+ *
22
+ * **The date is two props.** `date` is the words a reader sees and `dateTime` is
23
+ * the machine value on the `time` element, and they are kept apart because
24
+ * parsing a formatted date back into an ISO one is a guess about a locale. A
25
+ * wrong date in a `datetime` attribute is a wrong date in a feed reader and in a
26
+ * search result, and neither reader can see the string that was wrong. This is
27
+ * the arrangement every one of the four sites needs and none of them has, because
28
+ * each of them formats its date in one place and has nowhere else to put the ISO
29
+ * value.
30
+ *
31
+ * The body is `children` and it is held by `Prose`, not by a set of per-element
32
+ * props. A post's body is authored somewhere else - a Markdown pipeline, a CMS -
33
+ * and a Page that took `paragraphs` and `headings` as arrays would be a Page that
34
+ * had to be handed a parsed document, which is a second representation of
35
+ * something the consumer's own pipeline already owns.
36
+ *
37
+ * The trail is one `nav` with two links, and it renders only the halves it is
38
+ * given. A previous link on the oldest post is a link to the first post a reader
39
+ * has already read, and a next link on the newest is a promise the site cannot
40
+ * keep.
41
+ *
42
+ * It is a server Component. It fetches nothing, it holds no state and it imports
43
+ * no router, so a consumer renders it from a server route and hands it the
44
+ * document their pipeline produced.
45
+ */
46
+ export function BlogPostPage({ title, description, date, dateTime, author, tags, readingTime, children, previous, next, trailLabels, trailLabel, indexLink, footer, className, }) {
47
+ return (_jsxs(Section, { className: className, children: [_jsxs("article", { "data-slot": "blog-post", className: "flex flex-col gap-8", children: [_jsxs("header", { className: "flex flex-col gap-4", children: [_jsx(Heading, { as: "h1", size: "3xl", children: title }), description ? (_jsx(Text, { size: "lg", className: "text-muted-foreground max-w-measure", children: description })) : null, _jsxs("div", { className: "text-muted-foreground flex flex-wrap items-center gap-x-3 gap-y-2 text-sm", children: [author ? _jsx("span", { className: "text-foreground font-medium", children: author }) : null, _jsx("time", { dateTime: dateTime, children: date }), readingTime ? _jsx("span", { children: readingTime }) : null] }), tags && tags.length > 0 ? (_jsx("ul", { className: "flex flex-wrap items-center gap-2", children: tags.map((tag) => (_jsx("li", { children: tag.href ? (_jsx("a", { href: tag.href, className: "rounded-sm", "aria-label": `Posts tagged ${tag.label}`, children: _jsx(Badge, { variant: "secondary", children: tag.label }) })) : (_jsx(Badge, { variant: "secondary", children: tag.label })) }, tag.label))) })) : null] }), _jsx(Prose, { children: children }), previous || next ? (_jsxs("nav", { "aria-label": trailLabel, className: "border-border grid gap-4 border-t pt-6 sm:grid-cols-2", children: [previous ? (_jsxs("a", { href: previous.href, className: "flex flex-col gap-1 rounded-sm", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium tracking-wide uppercase", children: trailLabels.previous }), _jsx("span", { className: "text-sm font-semibold", children: previous.title })] })) : null, next ? (_jsxs("a", { href: next.href, className: "flex flex-col gap-1 rounded-sm sm:items-end sm:text-right", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium tracking-wide uppercase", children: trailLabels.next }), _jsx("span", { className: "text-sm font-semibold", children: next.title })] })) : null] })) : null, footer ? _jsx("div", { className: "border-border border-t pt-8", children: footer }) : null] }), indexLink ? (_jsx("div", { className: "mt-10 flex justify-center", children: _jsx(CtaLink, { href: indexLink.href, variant: "outline", children: indexLink.title }) })) : null] }));
48
+ }
49
+ export default BlogPostPage;
@@ -0,0 +1,36 @@
1
+ import type { ComponentProps } from 'react';
2
+ import { AppShell01 } from '../../blocks/app-shell-01';
3
+ import { DataTable01 } from '../../blocks/data-table-01';
4
+ import { PageHeader01 } from '../../blocks/page-header-01';
5
+ import { Stats01 } from '../../blocks/stats-01';
6
+ export type DashboardPageProps = {
7
+ /**
8
+ * The frame: the navigation rail, the top bar and the mobile navigation
9
+ * sheet. Navigation, actions and the rail slots are passed as nodes, so the
10
+ * page never imports a router.
11
+ */
12
+ shell: Omit<ComponentProps<typeof AppShell01>, 'children'>;
13
+ /** The page title band. */
14
+ header: ComponentProps<typeof PageHeader01>;
15
+ /** The key-figure row above the table. */
16
+ stats: ComponentProps<typeof Stats01>;
17
+ /** The main table, with its rows, columns, labels and callbacks. */
18
+ table: ComponentProps<typeof DataTable01>;
19
+ };
20
+ /**
21
+ * A complete dashboard screen.
22
+ *
23
+ * It composes `AppShell01`, `PageHeader01`, `Stats01` and `DataTable01`: the
24
+ * shell provides the frame, the header names the screen, the stats summarise it
25
+ * and the table carries the working set. The page owns the sequence and the
26
+ * spacing only. Every row, column, label and handler is a prop, and the page
27
+ * fetches nothing.
28
+ *
29
+ * The page is a client component because the blocks it composes are stateful.
30
+ * That is a property of this composition, not of the data: the consumer still
31
+ * owns the rows and the callbacks, and can drive the table from a server render
32
+ * or a client cache by the same props.
33
+ */
34
+ export declare function DashboardPage({ shell, header, stats, table }: DashboardPageProps): import("react").JSX.Element;
35
+ export default DashboardPage;
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/dashboard-page/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE/C,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;OAIG;IACH,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EAAE,UAAU,CAAC,CAAA;IAC1D,2BAA2B;IAC3B,MAAM,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,CAAA;IAC3C,0CAA0C;IAC1C,KAAK,EAAE,cAAc,CAAC,OAAO,OAAO,CAAC,CAAA;IACrC,oEAAoE;IACpE,KAAK,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,CAAA;CAC1C,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,kBAAkB,+BAUhF;AAED,eAAe,aAAa,CAAA"}
@@ -0,0 +1,24 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AppShell01 } from '../../blocks/app-shell-01';
4
+ import { DataTable01 } from '../../blocks/data-table-01';
5
+ import { PageHeader01 } from '../../blocks/page-header-01';
6
+ import { Stats01 } from '../../blocks/stats-01';
7
+ /**
8
+ * A complete dashboard screen.
9
+ *
10
+ * It composes `AppShell01`, `PageHeader01`, `Stats01` and `DataTable01`: the
11
+ * shell provides the frame, the header names the screen, the stats summarise it
12
+ * and the table carries the working set. The page owns the sequence and the
13
+ * spacing only. Every row, column, label and handler is a prop, and the page
14
+ * fetches nothing.
15
+ *
16
+ * The page is a client component because the blocks it composes are stateful.
17
+ * That is a property of this composition, not of the data: the consumer still
18
+ * owns the rows and the callbacks, and can drive the table from a server render
19
+ * or a client cache by the same props.
20
+ */
21
+ export function DashboardPage({ shell, header, stats, table }) {
22
+ return (_jsx(AppShell01, { ...shell, children: _jsxs("div", { className: "mx-auto flex w-full max-w-page flex-col gap-8", children: [_jsx(PageHeader01, { ...header, headingLevel: header.headingLevel ?? 'h1' }), _jsx(Stats01, { ...stats }), _jsx(DataTable01, { ...table })] }) }));
23
+ }
24
+ export default DashboardPage;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Every Prism Page.
3
+ *
4
+ * A Page is a shipped, installable screen model composed of Blocks and
5
+ * Components that receives application-owned navigation, content and data
6
+ * (ticket 07). The v1 roster ships four Pages. Each is also importable on its
7
+ * own subpath, `@nanisoft/prism-ui/pages/<slug>`.
8
+ */
9
+ export { MarketingPage } from './marketing-page';
10
+ export type { MarketingPageProps } from './marketing-page';
11
+ export { DashboardPage } from './dashboard-page';
12
+ export type { DashboardPageProps } from './dashboard-page';
13
+ export { SettingsPage } from './settings-page';
14
+ export type { SettingsPageProps, SettingsPageTab } from './settings-page';
15
+ export { AuthPage } from './auth-page';
16
+ export type { AuthPageProps, AuthPageAside } from './auth-page';
17
+ export { NotFoundPage } from './not-found-page';
18
+ export type { NotFoundPageProps, NotFoundLink } from './not-found-page';
19
+ export { BlogPostPage } from './blog-post-page';
20
+ export type { BlogPostPageProps, BlogPostTag, BlogPostNeighbour, BlogPostTrailLabels } from './blog-post-page';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Every Prism Page.
3
+ *
4
+ * A Page is a shipped, installable screen model composed of Blocks and
5
+ * Components that receives application-owned navigation, content and data
6
+ * (ticket 07). The v1 roster ships four Pages. Each is also importable on its
7
+ * own subpath, `@nanisoft/prism-ui/pages/<slug>`.
8
+ */
9
+ export { MarketingPage } from './marketing-page';
10
+ export { DashboardPage } from './dashboard-page';
11
+ export { SettingsPage } from './settings-page';
12
+ export { AuthPage } from './auth-page';
13
+ export { NotFoundPage } from './not-found-page';
14
+ export { BlogPostPage } from './blog-post-page';
@@ -0,0 +1,43 @@
1
+ import type { ComponentProps } from 'react';
2
+ import { Cta01 } from '../../blocks/cta-01';
3
+ import { FeatureGrid01 } from '../../blocks/feature-grid-01';
4
+ import { Hero01 } from '../../blocks/hero-01';
5
+ import { Pricing01 } from '../../blocks/pricing-01';
6
+ import { Stats01 } from '../../blocks/stats-01';
7
+ import type { HeadingLevel } from '../../components/ui/section';
8
+ export type MarketingPageProps = {
9
+ /** The opening band: an optional eyebrow, the headline and one or two actions. */
10
+ hero: ComponentProps<typeof Hero01>;
11
+ /** The capability grid below the hero. */
12
+ features: ComponentProps<typeof FeatureGrid01>;
13
+ /** The key-figure row. */
14
+ stats: ComponentProps<typeof Stats01>;
15
+ /** The plan comparison. */
16
+ pricing: ComponentProps<typeof Pricing01>;
17
+ /** The closing call to action. */
18
+ cta: ComponentProps<typeof Cta01>;
19
+ /**
20
+ * The heading level for the hero. Defaults to `h1`, because a page owns the
21
+ * top of the document outline. A consumer that embeds the page under a
22
+ * heading it already owns passes one level deeper.
23
+ */
24
+ headingLevel?: HeadingLevel;
25
+ };
26
+ /**
27
+ * A complete marketing page.
28
+ *
29
+ * It composes `Hero01`, `FeatureGrid01`, `Stats01`, `Pricing01` and `Cta01` in
30
+ * reading order and passes each block its own props unchanged, so the page adds
31
+ * the sequence and nothing else. Every string, number and action is a prop, and
32
+ * the page ships no sample copy and fetches nothing. It is a product-agnostic
33
+ * screen model, not this site's own landing route: a consumer installs it,
34
+ * passes their own content and owns the links.
35
+ *
36
+ * The hero is the page's primary heading, so it defaults to `h1`; set
37
+ * `headingLevel` when the page is embedded rather than rendered as a screen.
38
+ * The composed blocks keep their own `h2` defaults, so the outline stays one
39
+ * heading per section below the hero.
40
+ */
41
+ export declare function MarketingPage({ hero, features, stats, pricing, cta, headingLevel, }: MarketingPageProps): import("react").JSX.Element;
42
+ export default MarketingPage;
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/marketing-page/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE/D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kFAAkF;IAClF,IAAI,EAAE,cAAc,CAAC,OAAO,MAAM,CAAC,CAAA;IACnC,0CAA0C;IAC1C,QAAQ,EAAE,cAAc,CAAC,OAAO,aAAa,CAAC,CAAA;IAC9C,0BAA0B;IAC1B,KAAK,EAAE,cAAc,CAAC,OAAO,OAAO,CAAC,CAAA;IACrC,2BAA2B;IAC3B,OAAO,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,CAAA;IACzC,kCAAkC;IAClC,GAAG,EAAE,cAAc,CAAC,OAAO,KAAK,CAAC,CAAA;IACjC;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,OAAO,EACP,GAAG,EACH,YAAmB,GACpB,EAAE,kBAAkB,+BAUpB;AAED,eAAe,aAAa,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Cta01 } from '../../blocks/cta-01';
3
+ import { FeatureGrid01 } from '../../blocks/feature-grid-01';
4
+ import { Hero01 } from '../../blocks/hero-01';
5
+ import { Pricing01 } from '../../blocks/pricing-01';
6
+ import { Stats01 } from '../../blocks/stats-01';
7
+ /**
8
+ * A complete marketing page.
9
+ *
10
+ * It composes `Hero01`, `FeatureGrid01`, `Stats01`, `Pricing01` and `Cta01` in
11
+ * reading order and passes each block its own props unchanged, so the page adds
12
+ * the sequence and nothing else. Every string, number and action is a prop, and
13
+ * the page ships no sample copy and fetches nothing. It is a product-agnostic
14
+ * screen model, not this site's own landing route: a consumer installs it,
15
+ * passes their own content and owns the links.
16
+ *
17
+ * The hero is the page's primary heading, so it defaults to `h1`; set
18
+ * `headingLevel` when the page is embedded rather than rendered as a screen.
19
+ * The composed blocks keep their own `h2` defaults, so the outline stays one
20
+ * heading per section below the hero.
21
+ */
22
+ export function MarketingPage({ hero, features, stats, pricing, cta, headingLevel = 'h1', }) {
23
+ return (_jsxs("div", { className: "bg-background text-foreground", children: [_jsx(Hero01, { ...hero, headingLevel: headingLevel }), _jsx(FeatureGrid01, { ...features }), _jsx(Stats01, { ...stats }), _jsx(Pricing01, { ...pricing }), _jsx(Cta01, { ...cta })] }));
24
+ }
25
+ export default MarketingPage;