fulldev-ui 0.5.0-beta.8 → 0.6.0-beta-4

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 (347) hide show
  1. package/.env.example +3 -0
  2. package/.prettierrc.yaml +1 -0
  3. package/astro.config.ts +10 -34
  4. package/cloudcannon.config.yml +217 -0
  5. package/package.json +25 -29
  6. package/pnpm-lock.yaml +943 -2157
  7. package/public/favicon/android-chrome-192x192.png +0 -0
  8. package/public/favicon/android-chrome-512x512.png +0 -0
  9. package/public/favicon/apple-touch-icon.png +0 -0
  10. package/public/favicon/manifest.webmanifest +7 -3
  11. package/public/favicon/mstile-150x150.png +0 -0
  12. package/src/blocks/Banner.astro +14 -29
  13. package/src/blocks/Contact1.astro +92 -0
  14. package/src/blocks/Cta1.astro +72 -0
  15. package/src/blocks/Feature1.astro +67 -0
  16. package/src/blocks/Features1.astro +75 -0
  17. package/src/blocks/Footer.astro +100 -3
  18. package/src/blocks/Header.astro +192 -3
  19. package/src/blocks/Hero1.astro +74 -0
  20. package/src/blocks/Job1.astro +97 -0
  21. package/src/blocks/Products1.astro +90 -0
  22. package/src/blocks/Reviews1.astro +75 -0
  23. package/src/blocks/_Hero.astro +245 -0
  24. package/src/components/Avatar.astro +28 -9
  25. package/src/components/Avatars.astro +36 -0
  26. package/src/components/Badge.astro +63 -24
  27. package/src/components/Badges.astro +16 -23
  28. package/src/components/Banner.astro +26 -0
  29. package/src/components/Block.astro +49 -0
  30. package/src/components/Blocks.astro +26 -0
  31. package/src/components/Breadcrumb.astro +58 -0
  32. package/src/components/Button.astro +49 -119
  33. package/src/components/Buttons.astro +23 -13
  34. package/src/components/Card.astro +9 -137
  35. package/src/components/Cards.astro +33 -35
  36. package/src/components/Carousel.astro +106 -0
  37. package/src/components/Cart.astro +18 -14
  38. package/src/components/CartAdd.svelte +76 -0
  39. package/src/components/CartCheckout.svelte +58 -0
  40. package/src/components/CartForm.svelte +130 -0
  41. package/src/components/CartList.svelte +88 -0
  42. package/src/components/CartQuantity.svelte +81 -0
  43. package/src/components/CartSummary.astro +16 -104
  44. package/src/components/CartTotal.svelte +15 -0
  45. package/src/components/Channel.astro +44 -35
  46. package/src/components/Channels.astro +20 -6
  47. package/src/components/Checkbox.astro +52 -27
  48. package/src/components/Code.astro +52 -0
  49. package/src/components/Container.astro +25 -0
  50. package/src/components/Dialog.astro +3 -2
  51. package/src/components/Drawer.astro +55 -146
  52. package/src/components/DrawerOld.astro +143 -0
  53. package/src/components/Element.astro +18 -8
  54. package/src/components/Form.astro +16 -13
  55. package/src/components/Gallery.astro +174 -0
  56. package/src/components/Head.astro +62 -25
  57. package/src/components/Header.astro +10 -115
  58. package/src/components/Heading.astro +51 -44
  59. package/src/components/Icon.astro +29 -33
  60. package/src/components/Image.astro +18 -68
  61. package/src/components/Input.astro +65 -51
  62. package/src/components/Label.astro +20 -15
  63. package/src/components/Layout.astro +35 -0
  64. package/src/components/Link.astro +51 -32
  65. package/src/components/Links.astro +42 -0
  66. package/src/components/List.astro +41 -16
  67. package/src/components/LocaleSwitcher.astro +2 -2
  68. package/src/components/Logo.astro +56 -0
  69. package/src/components/Menu.astro +21 -17
  70. package/src/components/Navigation.astro +39 -0
  71. package/src/components/Panel.astro +25 -0
  72. package/src/components/Paragraph.astro +55 -0
  73. package/src/components/Price.astro +4 -4
  74. package/src/components/Prose.astro +78 -0
  75. package/src/components/Rating.astro +23 -62
  76. package/src/components/Search.astro +107 -43
  77. package/src/components/Section.astro +13 -242
  78. package/src/components/Select.astro +45 -55
  79. package/src/components/Sidebar.astro +53 -76
  80. package/src/components/Social.astro +11 -9
  81. package/src/components/Socials.astro +9 -5
  82. package/src/components/Subheader.astro +59 -0
  83. package/src/components/Switch.astro +72 -29
  84. package/src/components/Table.astro +1 -1
  85. package/src/components/Tagline.astro +32 -14
  86. package/src/components/Textarea.astro +40 -50
  87. package/src/components/Themer.astro +76 -0
  88. package/src/components/Toc.astro +32 -31
  89. package/src/components/_Author.astro +90 -0
  90. package/src/components/_Header.astro +129 -0
  91. package/src/components/_Image.astro +79 -0
  92. package/src/components/_Prose copy.astro +172 -0
  93. package/src/components/_Sidebar copy.astro +87 -0
  94. package/src/components/docs/PropsTable.astro +38 -264
  95. package/src/components/experimental/Window.astro +5 -57
  96. package/src/content/config.ts +4 -10
  97. package/src/content/{presets → layouts}/base.yml +52 -73
  98. package/src/content/pages/blocks/_categories.mdx +0 -2
  99. package/src/content/pages/blocks/_footer.mdx +0 -2
  100. package/src/content/pages/blocks/_header.mdx +0 -4
  101. package/src/content/pages/blocks/_jobs.mdx +0 -2
  102. package/src/content/pages/blocks/_prices.mdx +0 -2
  103. package/src/content/pages/blocks/_product.mdx +0 -2
  104. package/src/content/pages/blocks/_products.mdx +0 -2
  105. package/src/content/pages/blocks/_stats.mdx +0 -2
  106. package/src/content/pages/blocks/banner.mdx +0 -2
  107. package/src/content/pages/blocks/colleagues.mdx +0 -3
  108. package/src/content/pages/blocks/contact.mdx +0 -2
  109. package/src/content/pages/blocks/content.mdx +0 -6
  110. package/src/content/pages/blocks/cta.mdx +0 -10
  111. package/src/content/pages/blocks/features.mdx +0 -5
  112. package/src/content/pages/blocks/hero.mdx +0 -5
  113. package/src/content/pages/blocks/intro.mdx +0 -5
  114. package/src/content/pages/blocks/posts.mdx +0 -2
  115. package/src/content/pages/blocks/reviews.mdx +0 -3
  116. package/src/content/pages/categories/category.md +7 -0
  117. package/src/content/pages/docs/_internationalization.mdx +55 -0
  118. package/src/content/pages/docs/_using-blocks.mdx +33 -0
  119. package/src/content/pages/docs/_using-presets.mdx +49 -0
  120. package/src/content/pages/docs/blocks.mdx +33 -0
  121. package/src/content/pages/docs/collections/images.mdx +102 -0
  122. package/src/content/pages/docs/collections/pages.mdx +119 -0
  123. package/src/content/pages/docs/collections/presets.mdx +60 -0
  124. package/src/content/pages/docs/collections.mdx +42 -0
  125. package/src/content/pages/{base/card.mdx → docs/components/_card.mdx} +2 -5
  126. package/src/content/pages/{base → docs/components}/_dialog.mdx +1 -2
  127. package/src/content/pages/{base → docs/components}/_drawer.mdx +1 -2
  128. package/src/content/pages/{base → docs/components}/_localeswitcher.mdx +1 -2
  129. package/src/content/pages/{base → docs/components}/_switch.mdx +3 -4
  130. package/src/content/pages/{typography → docs/components}/_tagline.mdx +3 -4
  131. package/src/content/pages/docs/components/_toggle.mdx +30 -0
  132. package/src/content/pages/docs/components/avatar.mdx +34 -0
  133. package/src/content/pages/{base → docs/components}/badge.mdx +28 -10
  134. package/src/content/pages/docs/components/badges.mdx +46 -0
  135. package/src/content/pages/docs/components/button.mdx +78 -0
  136. package/src/content/pages/docs/components/buttons.mdx +51 -0
  137. package/src/content/pages/docs/components/channel.mdx +91 -0
  138. package/src/content/pages/docs/components/channels.mdx +89 -0
  139. package/src/content/pages/docs/components/checkbox.mdx +34 -0
  140. package/src/content/pages/docs/components/code.mdx +45 -0
  141. package/src/content/pages/docs/components/heading.mdx +59 -0
  142. package/src/content/pages/docs/components/icon.mdx +48 -0
  143. package/src/content/pages/docs/components/image.mdx +25 -0
  144. package/src/content/pages/docs/components/input.mdx +40 -0
  145. package/src/content/pages/{typography → docs/components}/label.mdx +9 -6
  146. package/src/content/pages/{typography → docs/components}/link.mdx +24 -10
  147. package/src/content/pages/docs/components/links.mdx +99 -0
  148. package/src/content/pages/docs/components/list.mdx +44 -0
  149. package/src/content/pages/docs/components/logo.mdx +36 -0
  150. package/src/content/pages/docs/components/menu.mdx +89 -0
  151. package/src/content/pages/docs/components/prose.mdx +36 -0
  152. package/src/content/pages/docs/components/rating.mdx +76 -0
  153. package/src/content/pages/{base → docs/components}/section.mdx +2 -3
  154. package/src/content/pages/{base → docs/components}/select.mdx +1 -11
  155. package/src/content/pages/docs/components/social.mdx +94 -0
  156. package/src/content/pages/docs/components/socials.mdx +102 -0
  157. package/src/content/pages/docs/components/switch.mdx +34 -0
  158. package/src/content/pages/{base → docs/components}/table.mdx +1 -4
  159. package/src/content/pages/docs/components/tagline.mdx +46 -0
  160. package/src/content/pages/docs/components/text.mdx +48 -0
  161. package/src/content/pages/docs/components/textarea.mdx +34 -0
  162. package/src/content/pages/docs/components/themer.mdx +49 -0
  163. package/src/content/pages/docs/components.mdx +37 -0
  164. package/src/content/pages/docs/customization.mdx +151 -0
  165. package/src/content/pages/docs/frameworks.mdx +29 -0
  166. package/src/content/pages/docs/generating-pages.mdx +129 -0
  167. package/src/content/pages/docs/index.mdx +20 -0
  168. package/src/content/pages/docs/installation.mdx +50 -0
  169. package/src/content/pages/docs/layouts.mdx +33 -0
  170. package/src/content/pages/index.mdx +25 -33
  171. package/src/content/pages/posts/post.md +7 -0
  172. package/src/content/pages/products/product.md +20 -0
  173. package/src/content/pages/showcase/anti-slip-profiles.md +2 -2
  174. package/src/content/pages/showcase/fulldev-ui.md +1 -1
  175. package/src/content/pages/showcase/lavis-detailing.md +1 -1
  176. package/src/content/pages/showcase/leren-trainingsacteren.md +1 -1
  177. package/src/content/pages/showcase/miele-witgoedcenter-amsterdam.md +1 -1
  178. package/src/content/pages/showcase/sloepverhuur-bolsward.md +1 -1
  179. package/src/content/pages/showcase/stark-vulcanising-products.md +1 -1
  180. package/src/content/pages/showcase/the-gym-haren.md +1 -1
  181. package/src/content/pages/showcase/van-dillen-antieke-bouwmaterialen.md +1 -1
  182. package/src/content/pages/showcase.mdx +4 -3
  183. package/src/css/color.css +0 -10
  184. package/src/css/custom.css +10 -12
  185. package/src/css/size.css +2 -11
  186. package/src/css/theme.css +95 -0
  187. package/src/env.d.ts +1 -0
  188. package/src/images/favicon/android-chrome-192x192.png +0 -0
  189. package/src/images/favicon/android-chrome-512x512.png +0 -0
  190. package/src/images/favicon/apple-touch-icon.png +0 -0
  191. package/src/images/favicon/browserconfig.xml +9 -0
  192. package/src/images/favicon/favicon-16x16.png +0 -0
  193. package/src/images/favicon/favicon-32x32.png +0 -0
  194. package/src/images/favicon/favicon-48x48.png +0 -0
  195. package/src/images/favicon/favicon.ico +0 -0
  196. package/src/images/favicon/favicon.svg +16 -0
  197. package/src/images/favicon/manifest.webmanifest +30 -0
  198. package/src/images/favicon/mstile-150x150.png +0 -0
  199. package/src/images/favicon/safari-pinned-tab.svg +16 -0
  200. package/src/images/favicon/yandex-browser-50x50.png +0 -0
  201. package/src/images/favicon/yandex-browser-manifest.json +9 -0
  202. package/src/images/logo-1.svg +11 -0
  203. package/src/images/logo-2.svg +13 -0
  204. package/src/images/logo-basic.svg +10 -0
  205. package/src/images/logo-simple.svg +13 -0
  206. package/src/images/logo-thin.svg +15 -0
  207. package/src/images/logo.svg +14 -0
  208. package/src/images/logofat.svg +11 -0
  209. package/src/integration/index.ts +110 -140
  210. package/src/layouts/Category.astro +131 -0
  211. package/src/layouts/Doc.astro +72 -0
  212. package/src/layouts/Job.astro +64 -0
  213. package/src/layouts/Page.astro +30 -0
  214. package/src/layouts/Post.astro +20 -0
  215. package/src/layouts/Product.astro +110 -0
  216. package/src/pages/[...page].astro +29 -24
  217. package/src/pages/test.astro +37 -0
  218. package/src/schemas/blocks/banner.ts +10 -0
  219. package/src/schemas/blocks/categories.ts +14 -0
  220. package/src/schemas/blocks/contact.ts +18 -0
  221. package/src/schemas/blocks/cta.ts +19 -0
  222. package/src/schemas/blocks/feature.ts +18 -0
  223. package/src/schemas/blocks/features.ts +24 -0
  224. package/src/schemas/blocks/hero.ts +20 -0
  225. package/src/schemas/blocks/intro.ts +16 -0
  226. package/src/schemas/blocks/products.ts +14 -0
  227. package/src/schemas/blocks/reviews.ts +24 -0
  228. package/src/schemas/components/avatar.ts +4 -1
  229. package/src/schemas/components/badge.ts +16 -11
  230. package/src/schemas/components/block.ts +22 -0
  231. package/src/schemas/components/button.ts +17 -14
  232. package/src/schemas/components/channel.ts +15 -9
  233. package/src/schemas/components/footer.ts +15 -21
  234. package/src/schemas/components/head.ts +17 -0
  235. package/src/schemas/components/header.ts +19 -7
  236. package/src/schemas/components/heading.ts +7 -1
  237. package/src/schemas/components/icon.ts +7 -1
  238. package/src/schemas/components/image.ts +38 -16
  239. package/src/schemas/components/link.ts +17 -0
  240. package/src/schemas/components/logo.ts +12 -2
  241. package/src/schemas/components/menu.ts +11 -11
  242. package/src/schemas/components/navigation.ts +10 -0
  243. package/src/schemas/components/paragraph.ts +9 -0
  244. package/src/schemas/components/price.ts +7 -1
  245. package/src/schemas/components/rating.ts +8 -13
  246. package/src/schemas/components/sidebar.ts +14 -11
  247. package/src/schemas/components/social.ts +16 -1
  248. package/src/schemas/components/tagline.ts +7 -1
  249. package/src/schemas/imageSchema.ts +30 -1
  250. package/src/schemas/layoutSchema.ts +22 -0
  251. package/src/schemas/pageSchema.ts +26 -96
  252. package/src/stores/cart.svelte.ts +79 -0
  253. package/src/stores/cart.ts +59 -6
  254. package/src/types/global-props.ts +0 -9
  255. package/src/types/{virtual-modules.d.ts → virtual.d.ts} +1 -1
  256. package/src/utils/cart.ts +1 -10
  257. package/src/utils/formatEntries.ts +8 -0
  258. package/src/utils/formatEntry.ts +29 -0
  259. package/src/utils/getDeepReferenceChildren.ts +14 -0
  260. package/src/utils/getHref.ts +6 -0
  261. package/src/utils/getReferenceChildren.ts +1 -1
  262. package/src/utils/setTheme.ts +18 -0
  263. package/src/utils/slugify.ts +6 -0
  264. package/svelte.config.js +5 -0
  265. package/tailwind.config.ts +67 -0
  266. package/tsconfig.json +1 -3
  267. package/src/blocks/Article.astro +0 -40
  268. package/src/blocks/Categories.astro +0 -12
  269. package/src/blocks/Colleagues.astro +0 -13
  270. package/src/blocks/Contact.astro +0 -116
  271. package/src/blocks/Content.astro +0 -12
  272. package/src/blocks/Cta.astro +0 -15
  273. package/src/blocks/Excerpt.astro +0 -14
  274. package/src/blocks/Features.astro +0 -11
  275. package/src/blocks/Hero.astro +0 -15
  276. package/src/blocks/Intro.astro +0 -23
  277. package/src/blocks/Jobs.astro +0 -12
  278. package/src/blocks/Posts.astro +0 -11
  279. package/src/blocks/Prices.astro +0 -24
  280. package/src/blocks/Product.astro +0 -106
  281. package/src/blocks/Products.astro +0 -11
  282. package/src/blocks/Reviews.astro +0 -13
  283. package/src/components/CartForm.astro +0 -121
  284. package/src/components/CartList.astro +0 -134
  285. package/src/components/Footer.astro +0 -193
  286. package/src/components/Text.astro +0 -43
  287. package/src/components/ThemeSelect.astro +0 -41
  288. package/src/components/Writeup.astro +0 -90
  289. package/src/components/experimental/Form.astro +0 -53
  290. package/src/components/experimental/Gallery.astro +0 -104
  291. package/src/components/experimental/Logo.astro +0 -38
  292. package/src/components/experimental/Prose.astro +0 -192
  293. package/src/components/sections.astro +0 -28
  294. package/src/content/pages/base/button.mdx +0 -60
  295. package/src/content/pages/base/checkbox.mdx +0 -42
  296. package/src/content/pages/base/icon.mdx +0 -55
  297. package/src/content/pages/base/image.mdx +0 -42
  298. package/src/content/pages/base/input.mdx +0 -56
  299. package/src/content/pages/base/rating.mdx +0 -55
  300. package/src/content/pages/base/textarea.mdx +0 -58
  301. package/src/content/pages/base/theme-select.mdx +0 -15
  302. package/src/content/pages/layouts/_layout.mdx +0 -14
  303. package/src/content/pages/layouts/docslayout.mdx +0 -14
  304. package/src/content/pages/overview/components.mdx +0 -75
  305. package/src/content/pages/overview/content-collections.mdx +0 -139
  306. package/src/content/pages/overview/frameworks.mdx +0 -198
  307. package/src/content/pages/overview/installation.mdx +0 -53
  308. package/src/content/pages/overview/introduction.mdx +0 -30
  309. package/src/content/pages/overview/theming.mdx +0 -69
  310. package/src/content/pages/schemas/page.mdx +0 -17
  311. package/src/content/pages/schemas/preset.mdx +0 -9
  312. package/src/content/pages/showcase/record.md +0 -3
  313. package/src/content/pages/typography/heading.mdx +0 -73
  314. package/src/content/pages/typography/list.mdx +0 -51
  315. package/src/content/pages/typography/text.mdx +0 -61
  316. package/src/content/presets/blocks.yml +0 -1
  317. package/src/content/presets/docs.yml +0 -6
  318. package/src/css/space.css +0 -77
  319. package/src/css/styles.css +0 -0
  320. package/src/images/avatar-1.yml +0 -1
  321. package/src/integration/generate-colors.ts +0 -639
  322. package/src/integration/tailwind-plugin.ts +0 -80
  323. package/src/integration/unocss-preset.ts +0 -84
  324. package/src/layouts/BlockLayout.astro +0 -19
  325. package/src/layouts/ContactLayout.astro +0 -21
  326. package/src/layouts/DocsLayout.astro +0 -73
  327. package/src/layouts/Layout.astro +0 -163
  328. package/src/layouts/OverviewLayout.astro +0 -42
  329. package/src/layouts/PostLayout.astro +0 -21
  330. package/src/layouts/ProductLayout.astro +0 -21
  331. package/src/loaders/imageLoader.ts +0 -26
  332. package/src/schemas/components/avatars.ts +0 -4
  333. package/src/schemas/components/buttons.ts +0 -4
  334. package/src/schemas/components/card.ts +0 -25
  335. package/src/schemas/components/cards.ts +0 -4
  336. package/src/schemas/components/channels.ts +0 -4
  337. package/src/schemas/components/images.ts +0 -4
  338. package/src/schemas/components/list.ts +0 -3
  339. package/src/schemas/components/section.ts +0 -15
  340. package/src/schemas/components/sections.ts +0 -3
  341. package/src/schemas/components/socials.ts +0 -4
  342. package/src/schemas/components/text.ts +0 -3
  343. package/src/schemas/components/toc.ts +0 -3
  344. package/src/schemas/components/writeup.ts +0 -20
  345. package/src/schemas/presetSchema.ts +0 -3
  346. package/src/schemas/utils/navigation.ts +0 -8
  347. package/src/schemas/utils/parents.ts +0 -3
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "Fulldev UI",
3
+ "short_name": "Fulldev UI",
4
+ "description": "Fulldev UI",
5
+ "dir": "auto",
6
+ "lang": "en-GB",
7
+ "display": "standalone",
8
+ "display_override": [
9
+ "window-controls-overlay",
10
+ "standalone"
11
+ ],
12
+ "orientation": "any",
13
+ "start_url": "/?homescreen=1",
14
+ "background_color": "#fff",
15
+ "theme_color": "#fff",
16
+ "icons": [
17
+ {
18
+ "src": "/favicon/android-chrome-192x192.png",
19
+ "sizes": "192x192",
20
+ "type": "image/png",
21
+ "purpose": "any"
22
+ },
23
+ {
24
+ "src": "/favicon/android-chrome-512x512.png",
25
+ "sizes": "512x512",
26
+ "type": "image/png",
27
+ "purpose": "maskable"
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,16 @@
1
+ <svg width="758" height="758" viewBox="0 0 758 758" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_45_5)">
3
+ <rect width="758" height="758" fill="#FF5500"/>
4
+ <rect x="-133" y="-133" width="1024" height="1024" fill="url(#paint0_radial_45_5)"/>
5
+ <path d="M269.363 565C264.945 565 261.363 561.419 261.363 557V200.637C261.363 196.218 264.945 192.637 269.363 192.637H499.909C504.327 192.637 507.909 196.218 507.909 200.637V249.546C507.909 253.964 504.327 257.546 499.909 257.546H348.091C343.672 257.546 340.091 261.128 340.091 265.546V338.273C340.091 342.691 343.672 346.273 348.091 346.273H483.545C487.963 346.273 491.545 349.855 491.545 354.273V403.182C491.545 407.6 487.963 411.182 483.545 411.182H348.091C343.672 411.182 340.091 414.764 340.091 419.182V557C340.091 561.419 336.509 565 332.091 565H269.363Z" fill="#EEEEEC"/>
6
+ </g>
7
+ <defs>
8
+ <radialGradient id="paint0_radial_45_5" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(379 379) rotate(45) scale(724.077)">
9
+ <stop stop-color="#111110" stop-opacity="0.2"/>
10
+ <stop offset="0.9" stop-color="#111110" stop-opacity="0"/>
11
+ </radialGradient>
12
+ <clipPath id="clip0_45_5">
13
+ <rect width="758" height="758" fill="white"/>
14
+ </clipPath>
15
+ </defs>
16
+ </svg>
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "1.0",
3
+ "api_version": 1,
4
+ "layout": {
5
+ "logo": "/favicon/yandex-browser-50x50.png",
6
+ "color": "#fff",
7
+ "show_title": true
8
+ }
9
+ }
@@ -0,0 +1,11 @@
1
+ <svg width="694" height="671" viewBox="0 0 694 671" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M490.133 0H693.066L660.933 117.5H458L490.133 0Z" fill="#FF5500"/>
3
+ <path d="M286.133 304H489.066L456.933 421.5H254L286.133 304Z" fill="#FF5500"/>
4
+ <path d="M297.133 0H500.066L467.933 117.5H265L297.133 0Z" fill="#FF5500"/>
5
+ <path d="M141.133 304H344.066L311.933 421.5H109L141.133 304Z" fill="#FF5500"/>
6
+ <path d="M110.133 418L244.633 418L212.5 535.5H78L110.133 418Z" fill="#FF5500"/>
7
+ <path d="M89.1329 494L223.633 494L191.5 611.5H57L89.1329 494Z" fill="#FF5500"/>
8
+ <path d="M72.94 553L206.633 553L174.693 670.5H41L72.94 553Z" fill="#FF5500"/>
9
+ <path d="M104.133 0H307.066L274.933 117.5H72L104.133 0Z" fill="#FF5500"/>
10
+ <path d="M32.1329 0H235.066L202.933 117.5H0L32.1329 0Z" fill="#FF5500"/>
11
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg width="694" height="739" viewBox="0 0 694 739" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M490.133 0H693.066L660.933 117.5H458L490.133 0Z" fill="#FF5500"/>
3
+ <path d="M286.133 304H489.066L456.933 421.5H254L286.133 304Z" fill="#FF5500"/>
4
+ <path d="M354.133 304H557.066L524.933 421.5H322L354.133 304Z" fill="#FF5500"/>
5
+ <path d="M297.133 0H500.066L467.933 117.5H265L297.133 0Z" fill="#FF5500"/>
6
+ <path d="M141.133 304H344.066L311.933 421.5H109L141.133 304Z" fill="#FF5500"/>
7
+ <path d="M110.133 418L244.633 418L212.5 535.5H78L110.133 418Z" fill="#FF5500"/>
8
+ <path d="M89.1329 494L223.633 494L191.5 611.5H57L89.1329 494Z" fill="#FF5500"/>
9
+ <path d="M72.94 553L206.633 553L174.693 670.5H41L72.94 553Z" fill="#FF5500"/>
10
+ <path d="M54.94 621L188.633 621L156.693 738.5H23L54.94 621Z" fill="#FF5500"/>
11
+ <path d="M104.133 0H307.066L274.933 117.5H72L104.133 0Z" fill="#FF5500"/>
12
+ <path d="M32.1329 0H235.066L202.933 117.5H0L32.1329 0Z" fill="#FF5500"/>
13
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg width="622" height="601" viewBox="0 0 622 601" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M418.133 0H621.066L588.933 117.5H386L418.133 0Z" fill="#FF5500"/>
3
+ <path d="M275.133 234H478.066L445.933 351.5H243L275.133 234Z" fill="#FF5500"/>
4
+ <path d="M225.133 0H428.066L395.933 117.5H193L225.133 0Z" fill="#FF5500"/>
5
+ <path d="M130.133 234H333.066L300.933 351.5H98L130.133 234Z" fill="#FF5500"/>
6
+ <path d="M99.1329 348L233.633 348L201.5 465.5H67L99.1329 348Z" fill="#FF5500"/>
7
+ <path d="M78.1329 424L212.633 424L180.5 541.5H46L78.1329 424Z" fill="#FF5500"/>
8
+ <path d="M61.94 483L195.633 483L163.693 600.5H30L61.94 483Z" fill="#FF5500"/>
9
+ <path d="M32.1329 0H235.066L202.933 117.5H0L32.1329 0Z" fill="#FF5500"/>
10
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg width="1610" height="1666" viewBox="0 0 1610 1666" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M1250.82 1H1609.5L1542.62 248.771C1524.95 314.216 1465.59 359.68 1397.8 359.68H1154L1250.82 1Z" fill="#FF5500"/>
3
+ <path d="M592.82 0H951.5L854.68 358.68H496L592.82 0Z" fill="#FF5500"/>
4
+ <path d="M908.82 1H1267.5L1170.68 359.68H812L908.82 1Z" fill="#FF5500"/>
5
+ <path d="M234.82 0H593.5L496.68 358.68H138L234.82 0Z" fill="#FF5500"/>
6
+ <path d="M66.882 110.909C84.5479 45.4638 143.911 0 211.699 0H455.5L358.68 358.68H0L66.882 110.909Z" fill="#FF5500"/>
7
+ <path d="M336.681 737H695.36L598.54 1095.68H239.86L336.681 737Z" fill="#FF5500"/>
8
+ <path d="M336.681 737H695.36L598.54 1095.68H239.86L336.681 737Z" fill="#FF5500"/>
9
+ <path d="M693.82 737H1052.5L955.68 1095.68H597L693.82 737Z" fill="#FF5500"/>
10
+ <path d="M1037.82 737H1396.5L1299.68 1095.68H941L1037.82 737Z" fill="#FF5500"/>
11
+ <path d="M240.82 1092H599.5L502.68 1450.68H144L240.82 1092Z" fill="#FF5500"/>
12
+ <path d="M182.82 1307H541.5L444.68 1665.68H86L182.82 1307Z" fill="#FF5500"/>
13
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg width="1960" height="2035" viewBox="0 0 1960 2035" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M1600.82 1H1959.5L1892.62 248.771C1874.95 314.216 1815.59 359.68 1747.8 359.68H1504L1600.82 1Z" fill="#FF5500"/>
3
+ <path d="M942.82 0H1301.5L1204.68 358.68H846L942.82 0Z" fill="#FF5500"/>
4
+ <path d="M1258.82 1H1617.5L1520.68 359.68H1162L1258.82 1Z" fill="#FF5500"/>
5
+ <path d="M584.82 0H943.5L846.68 358.68H488L584.82 0Z" fill="#FF5500"/>
6
+ <path d="M196.882 110.909C214.548 45.4638 273.911 0 341.699 0H585.5L488.68 358.68H130L196.882 110.909Z" fill="#FF5500"/>
7
+ <path d="M716.681 840H1075.36L978.54 1198.68H619.86L716.681 840Z" fill="#FF5500"/>
8
+ <path d="M1064.82 840H1423.5L1326.68 1198.68H968L1064.82 840Z" fill="#FF5500"/>
9
+ <path d="M358.681 840H717.36L620.54 1198.68H261.86L358.681 840Z" fill="#FF5500"/>
10
+ <path d="M262.82 1195H621.5L524.68 1553.68H166L262.82 1195Z" fill="#FF5500"/>
11
+ <path d="M204.82 1410H563.5L466.68 1768.68H108L204.82 1410Z" fill="#FF5500"/>
12
+ <path d="M131.82 1676H490.5L393.68 2034.68H35L131.82 1676Z" fill="#FF5500"/>
13
+ <path d="M177.82 180H536.5L439.68 538.68H81L177.82 180Z" fill="#FF5500"/>
14
+ <path d="M96.8202 481H455.5L358.68 839.68H0L96.8202 481Z" fill="#FF5500"/>
15
+ </svg>
@@ -0,0 +1,14 @@
1
+ <svg width="1960" height="1797" viewBox="0 0 1960 1797" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M1600.82 1H1959.5L1892.62 248.771C1874.95 314.216 1815.59 359.68 1747.8 359.68H1504L1600.82 1Z" fill="#FF5500"/>
3
+ <path d="M942.82 0H1301.5L1204.68 358.68H846L942.82 0Z" fill="#FF5500"/>
4
+ <path d="M1258.82 1H1617.5L1520.68 359.68H1162L1258.82 1Z" fill="#FF5500"/>
5
+ <path d="M584.82 0H943.5L846.68 358.68H488L584.82 0Z" fill="#FF5500"/>
6
+ <path d="M196.882 110.909C214.548 45.4638 273.911 0 341.699 0H585.5L488.68 358.68H130L196.882 110.909Z" fill="#FF5500"/>
7
+ <path d="M1025.68 602H1384.36L1287.54 960.68H928.86L1025.68 602Z" fill="#FF5500"/>
8
+ <path d="M667.681 602H1026.36L929.54 960.68H570.86L667.681 602Z" fill="#FF5500"/>
9
+ <path d="M571.82 957H930.5L833.68 1315.68H475L571.82 957Z" fill="#FF5500"/>
10
+ <path d="M513.82 1172H872.5L775.68 1530.68H417L513.82 1172Z" fill="#FF5500"/>
11
+ <path d="M440.82 1438H799.5L702.68 1796.68H344L440.82 1438Z" fill="#FF5500"/>
12
+ <path d="M177.82 180H536.5L439.68 538.68H81L177.82 180Z" fill="#FF5500"/>
13
+ <path d="M96.8202 481H455.5L358.68 839.68H0L96.8202 481Z" fill="#FF5500"/>
14
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg width="1449" height="1467" viewBox="0 0 1449 1467" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M1089.82 0H1448.5L1381.62 247.771C1363.95 313.216 1304.59 358.68 1236.8 358.68H993L1089.82 0Z" fill="#FF5500"/>
3
+ <path d="M861.82 0H1220.5L1123.68 358.68H765L861.82 0Z" fill="#FF5500"/>
4
+ <path d="M503.82 0H862.5L765.68 358.68H407L503.82 0Z" fill="#FF5500"/>
5
+ <path d="M115.882 110.909C133.548 45.4638 192.911 0 260.699 0H504.5L407.68 358.68H49L115.882 110.909Z" fill="#FF5500"/>
6
+ <path d="M716.681 538H1075.36L978.54 896.68H619.86L716.681 538Z" fill="#FF5500"/>
7
+ <path d="M358.681 538H717.36L620.54 896.68H261.86L358.681 538Z" fill="#FF5500"/>
8
+ <path d="M262.82 893H621.5L524.68 1251.68H166L262.82 893Z" fill="#FF5500"/>
9
+ <path d="M204.82 1108H563.5L466.68 1466.68H108L204.82 1108Z" fill="#FF5500"/>
10
+ <path d="M96.8202 180H455.5L358.68 538.68H0L96.8202 180Z" fill="#FF5500"/>
11
+ </svg>
@@ -1,62 +1,102 @@
1
- import viteYaml from '@rollup/plugin-yaml'
1
+ import mdx from '@astrojs/mdx'
2
+ import sitemap from '@astrojs/sitemap'
2
3
  import type { AstroIntegration } from 'astro'
3
4
  import favicons from 'astro-favicons'
4
- import type { CollectionEntry } from 'astro:content'
5
- import merge from 'deepmerge'
5
+ import liveCode from 'astro-live-code'
6
+ import robotsTxt from 'astro-robots-txt'
7
+ import { envField } from 'astro/config'
8
+ import fs from 'fs'
9
+ import yaml from 'js-yaml'
10
+ import path from 'path'
11
+ import { assign } from 'radash'
12
+ import tailwindcss from 'tailwindcss'
13
+ import tailwindcssNesting from 'tailwindcss/nesting'
14
+ import { loadEnv } from 'vite'
6
15
  import virtual from 'vite-plugin-virtual'
7
- import { generateRadixColors } from './generate-colors'
8
-
9
- type Color = {
10
- background: Parameters<typeof generateRadixColors>[0]['background']
11
- base: Parameters<typeof generateRadixColors>[0]['gray']
12
- brand: Parameters<typeof generateRadixColors>[0]['accent']
13
- }
16
+ import tailwindConfig from '../../tailwind.config.ts'
14
17
 
15
18
  interface Config {
16
19
  favicon?: string
17
20
  company?: string
18
21
  css?: string
19
- basePreset?: CollectionEntry<'presets'>['id']
20
22
  injectRoutes?: boolean
21
- // generateImageEntries?: boolean
22
- colors: {
23
- theme: 'light' | 'dark'
24
- light?: Color | undefined
25
- dark?: Color | undefined
23
+ cloudcannon?: boolean
24
+ cart?: boolean
25
+ overrides?: {
26
+ [k: string]: string
26
27
  }
27
28
  }
28
29
 
29
- const defaultConfig: Config = {
30
- colors: {
31
- theme: 'light',
32
- light: {
33
- background: '#fff',
34
- base: '#000',
35
- brand: '#000',
36
- },
37
- },
38
- // generateImageEntries: false,
39
- }
40
-
41
30
  export default function fulldevIntegration(
42
- userConfig?: Partial<Config> | undefined
31
+ config: Partial<Config> | undefined
43
32
  ): AstroIntegration {
44
- const config = merge(defaultConfig, userConfig ?? {})
45
-
46
33
  return {
47
34
  name: '/integration',
48
35
  hooks: {
49
36
  'astro:config:setup': async ({
50
- config: astroConfig,
51
37
  updateConfig,
52
- injectScript,
53
38
  injectRoute,
39
+ injectScript,
54
40
  }) => {
55
41
  // ----------------------
56
- // Inject favicon integration
42
+ // Update config
57
43
  // ----------------------
58
- config.favicon &&
59
- config.company &&
44
+ updateConfig({
45
+ site: loadEnv(process.env.NODE_ENV as any, process.cwd(), '').URL,
46
+ experimental: {
47
+ contentLayer: true,
48
+ env: {
49
+ schema: {
50
+ URL: envField.string({
51
+ context: 'client',
52
+ access: 'public',
53
+ }),
54
+ STRIPE_RESTRICTED_KEY: envField.string({
55
+ context: 'client',
56
+ access: 'public',
57
+ optional: true,
58
+ }),
59
+ STRIPE_SECRET_KEY: envField.string({
60
+ context: 'server',
61
+ access: 'secret',
62
+ optional: true,
63
+ }),
64
+ },
65
+ validateSecrets: true,
66
+ },
67
+ },
68
+ integrations: [
69
+ mdx(),
70
+ sitemap(),
71
+ robotsTxt(),
72
+ liveCode({
73
+ layout: '/src/components/Code.astro',
74
+ }),
75
+ ],
76
+ vite: {
77
+ resolve: {
78
+ alias: {
79
+ ...config?.overrides,
80
+ },
81
+ },
82
+ plugins: [
83
+ virtual({
84
+ 'virtual:fulldev-ui/config': config ?? {},
85
+ }),
86
+ ],
87
+ css: {
88
+ postcss: {
89
+ plugins: [tailwindcss(tailwindConfig), tailwindcssNesting],
90
+ },
91
+ },
92
+ },
93
+ })
94
+
95
+ // ----------------------
96
+ // Inject Favicon
97
+ // ----------------------
98
+ config?.favicon &&
99
+ config?.company &&
60
100
  updateConfig({
61
101
  integrations: [
62
102
  favicons({
@@ -64,109 +104,29 @@ export default function fulldevIntegration(
64
104
  masterPicture: config.favicon,
65
105
  appName: config.company,
66
106
  appShortName: config.company,
107
+ appDescription: config.company,
67
108
  }),
68
109
  ],
69
110
  })
111
+
70
112
  // ----------------------
71
- // Inject css
113
+ // Inject routes
72
114
  // ----------------------
73
- config?.css && injectScript('page-ssr', `import "${config?.css}";`)
74
-
75
- const generateCss = (
76
- defaultTheme: 'light' | 'dark',
77
- theme: 'light' | 'dark',
78
- color: Color
79
- ) => {
80
- const { background, base, brand } = color
81
- const generated = generateRadixColors({
82
- background,
83
- appearance: theme,
84
- gray: base,
85
- accent: brand,
115
+ if (config?.injectRoutes) {
116
+ injectRoute({
117
+ pattern: '/[...page]',
118
+ entrypoint: 'fulldev-ui/pages/[...page].astro',
86
119
  })
87
-
88
- const scaleToString = (
89
- scale: any,
90
- palette: 'base' | 'brand',
91
- alpha?: boolean | undefined
92
- ) =>
93
- scale
94
- .map(
95
- (color: any, i: any) =>
96
- `--${palette}-${alpha ? 'a' : ''}${i + 1}: ${color};`
97
- )
98
- .join('\n')
99
-
100
- const baseString = scaleToString(generated.grayScale, 'base', false)
101
- const baseAlphaString = scaleToString(
102
- generated.grayScaleAlpha,
103
- 'base',
104
- true
105
- )
106
- const brandString = scaleToString(
107
- generated.accentScale,
108
- 'brand',
109
- false
110
- )
111
- const brandAlphaString = scaleToString(
112
- generated.accentScaleAlpha,
113
- 'brand',
114
- true
115
- )
116
- const brandContrastString = `--brand-contrast: ${generated.accentContrast};`
117
- const baseContrastString = `--base-contrast: ${generated.accentContrast};`
118
- const baseBackgroundString = `--base-background: ${generated.background};`
119
- const brandBackgroundString = `--brand-background: ${generated.background};`
120
- const colorSchemeString = `--color-scheme: ${theme};`
121
-
122
- const css = `${defaultTheme == theme ? ':root, ' : ''} .theme-${theme} {
123
- ${baseString}
124
- ${baseAlphaString}
125
- ${baseContrastString}
126
- ${baseBackgroundString}
127
- ${brandString}
128
- ${brandAlphaString}
129
- ${brandContrastString}
130
- ${brandBackgroundString}
131
- ${colorSchemeString}
132
- }`
133
- return css
134
120
  }
135
121
 
136
- const lightCss =
137
- (config.colors.light &&
138
- generateCss(config.colors.theme, 'light', config.colors.light)) ||
139
- ''
140
- const darkCss =
141
- (config.colors.dark &&
142
- generateCss(config.colors.theme, 'dark', config.colors.dark)) ||
143
- ''
144
-
145
- const css = lightCss + '\n' + darkCss
146
-
147
- updateConfig({
148
- vite: {
149
- plugins: [
150
- viteYaml(),
151
- virtual({
152
- 'virtual:astro/config': `export default ${JSON.stringify(astroConfig)}`,
153
- 'virtual:fulldev-ui/config': `export default ${JSON.stringify({
154
- ...config,
155
- })}`,
156
- 'virtual:colors.css': css,
157
- }) as any,
158
- ],
159
- css: {
160
- preprocessorOptions: {
161
- scss: {
162
- api: 'modern',
163
- },
164
- },
165
- },
166
- },
167
- })
122
+ // ----------------------
123
+ // Inject css
124
+ // ----------------------
125
+ config?.css && injectScript('page-ssr', `import "${config?.css}";`)
168
126
 
169
- injectScript('page-ssr', `import "virtual:colors.css";`)
127
+ // ----------------------
128
+ // merge Cloudcannon configs
129
+ // ----------------------
170
130
 
171
131
  // ----------------------
172
132
  // Generate image YAML files
@@ -198,17 +158,27 @@ export default function fulldevIntegration(
198
158
  // console.error('Error generating image YAML files:', error)
199
159
  // }
200
160
  // }
161
+ },
162
+ 'astro:build:done': async () => {
163
+ if (config?.cloudcannon) {
164
+ const __dirname = path.dirname(new URL(import.meta.url).pathname)
165
+ const libDir = path.join(__dirname, '../../cloudcannon.config.yml')
166
+ const userDir = path.join(process.cwd(), 'cloudcannon.config.yml')
201
167
 
202
- // ----------------------
203
- // Inject routes
204
- // ----------------------
205
- if (config.injectRoutes) {
206
- const pages = import.meta.glob('/src/pages/**/*.astro')
207
- !pages['/src/pages/[...page].astro'] &&
208
- injectRoute({
209
- pattern: '/[...page]',
210
- entrypoint: 'fulldev-ui/[...page].astro',
211
- })
168
+ console.log({ libDir, userDir })
169
+
170
+ const libConfig = yaml.load(
171
+ fs.readFileSync(path.resolve(libDir), 'utf8')
172
+ )
173
+
174
+ const userConfig = yaml.load(
175
+ fs.readFileSync(path.resolve(userDir), 'utf8')
176
+ )
177
+
178
+ const mergedConfig = assign(libConfig || {}, userConfig || {})
179
+ const yamlContent = yaml.dump(mergedConfig)
180
+
181
+ await fs.promises.writeFile(userDir, yamlContent, 'utf8')
212
182
  }
213
183
  },
214
184
  },
@@ -0,0 +1,131 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import { getCollection } from 'astro:content'
4
+ import Products1 from 'fulldev-ui/blocks/Products1.astro'
5
+ import Carousel from 'fulldev-ui/components/Carousel.astro'
6
+ import Element from 'fulldev-ui/components/Element.astro'
7
+ import Layout from 'fulldev-ui/components/Layout.astro'
8
+ import Prose from 'fulldev-ui/components/Prose.astro'
9
+ import Select from 'fulldev-ui/components/Select.astro'
10
+ import { getHref } from 'fulldev-ui/utils/getHref'
11
+
12
+ type Props = ComponentProps<typeof Layout>
13
+
14
+ const { render, slug, title, description } = Astro.props
15
+
16
+ const categories = await getCollection('pages', ({ data }) =>
17
+ data.categories?.some((c) => c.slug.includes(slug))
18
+ )
19
+
20
+ const products = await getCollection('pages', ({ data }) =>
21
+ data.categories?.some((c) => c.slug.includes(slug))
22
+ )
23
+
24
+ const sorts = [
25
+ {
26
+ option: 'Aanbevolen',
27
+ products: [...products].sort(
28
+ (a, b) => (a.data.order || 0) - (b.data.order || 0)
29
+ ),
30
+ },
31
+ {
32
+ option: 'Prijs (laag - hoog)',
33
+ products: [...products].sort(
34
+ (a, b) => (a.data.price || 0) - (b.data.price || 0)
35
+ ),
36
+ },
37
+ {
38
+ option: 'Prijs (hoog - laag)',
39
+ products: [...products].sort(
40
+ (a, b) => (b.data.price || 0) - (a.data.price || 0)
41
+ ),
42
+ },
43
+ {
44
+ option: 'Alfabetisch (A-Z)',
45
+ products: [...products],
46
+ },
47
+ {
48
+ option: 'Alfabetisch (Z-A)',
49
+ products: [...products].sort((a, b) =>
50
+ (b.data.title || '').localeCompare(a.data.title || '')
51
+ ),
52
+ },
53
+ ]
54
+ ---
55
+
56
+ <script>
57
+ document.addEventListener('astro:page-load', () => {
58
+ const sort = document.querySelector('.sort')
59
+
60
+ sort?.addEventListener('change', (e) => {
61
+ const blocks = document.querySelectorAll('.products')
62
+ const value = (e.target as HTMLSelectElement).value
63
+ blocks?.forEach((block) => block.classList.add('hide'))
64
+
65
+ const block = document.querySelector(`.products[id='${value}']`)
66
+ block?.classList.remove('hide')
67
+ })
68
+ })
69
+ </script>
70
+
71
+ <Layout
72
+ class:list="category"
73
+ {...Astro.props}
74
+ >
75
+ <!-- <Intro1
76
+ heading={title}
77
+ text={description}
78
+ /> -->
79
+ <Carousel>
80
+ {
81
+ categories.map((category) => (
82
+ <Element
83
+ as="a"
84
+ class:list="item"
85
+ href={getHref(category.slug)}
86
+ >
87
+ {category.data.title}
88
+ </Element>
89
+ ))
90
+ }
91
+ </Carousel>
92
+ <Element class:list="toolbar">
93
+ <span>{products.length} resultaten</span>
94
+ <Select
95
+ class:list="sort"
96
+ size="sm"
97
+ name="Sorteren"
98
+ options={sorts.map((sort) => sort.option)}
99
+ />
100
+ </Element>
101
+ {
102
+ sorts.map((sort: any) => (
103
+ <Products1
104
+ class:list={sort.option !== 'Aanbevolen' ? 'hide' : ''}
105
+ products={sort.products}
106
+ />
107
+ ))
108
+ }
109
+ <Prose {render} />
110
+ <slot />
111
+ </Layout>
112
+
113
+ <style is:global>
114
+ .carousel {
115
+ .item {
116
+ @apply min-w-48 rounded-sm border p-4 text-sm;
117
+ }
118
+ }
119
+
120
+ .products.hide {
121
+ @apply hidden;
122
+ }
123
+
124
+ .toolbar {
125
+ @apply container flex items-center justify-between pt-8;
126
+
127
+ span {
128
+ @apply text-sm text-muted-foreground;
129
+ }
130
+ }
131
+ </style>
@@ -0,0 +1,72 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import type { CollectionEntry } from 'astro:content'
4
+ import Footer from 'fulldev-ui/blocks/Footer.astro'
5
+ import Header from 'fulldev-ui/blocks/Header.astro'
6
+ import Container from 'fulldev-ui/components/Container.astro'
7
+ import Element from 'fulldev-ui/components/Element.astro'
8
+ import Heading from 'fulldev-ui/components/Heading.astro'
9
+ import Layout from 'fulldev-ui/components/Layout.astro'
10
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
11
+ import Prose from 'fulldev-ui/components/Prose.astro'
12
+ import Sidebar from 'fulldev-ui/components/Sidebar.astro'
13
+ import Toc from 'fulldev-ui/components/Toc.astro'
14
+ import type { LayoutSchema } from 'fulldev-ui/schemas/layoutSchema.ts'
15
+ import type { PageSchema } from 'fulldev-ui/schemas/pageSchema.ts'
16
+
17
+ type Props = ComponentProps<typeof Layout> &
18
+ LayoutSchema &
19
+ PageSchema &
20
+ Pick<CollectionEntry<'pages'>, 'render'>
21
+
22
+ const { header, sidebar, render, title, description, footer } = Astro.props
23
+
24
+ const { Content } = await render()
25
+ ---
26
+
27
+ <Layout
28
+ class:list="doc"
29
+ {...Astro.props}
30
+ >
31
+ <Header
32
+ {...sidebar}
33
+ {...header}
34
+ />
35
+ <Container class:list="doc-container">
36
+ <Sidebar {...sidebar} />
37
+ <Element
38
+ class:list="doc-main"
39
+ as="main"
40
+ >
41
+ <Prose>
42
+ <Heading
43
+ as="h1"
44
+ size="4xl"
45
+ text={title}
46
+ />
47
+ <Paragraph
48
+ muted
49
+ size="lg"
50
+ text={description}
51
+ />
52
+ <Content />
53
+ </Prose>
54
+ <Toc {render} />
55
+ </Element>
56
+ </Container>
57
+ <Footer {...footer} />
58
+ </Layout>
59
+
60
+ <style is:global>
61
+ @layer fulldev {
62
+ .doc {
63
+ .doc-container {
64
+ @apply flex gap-x-gutter;
65
+ }
66
+
67
+ .doc-main {
68
+ @apply flex grow justify-evenly gap-x-gutter;
69
+ }
70
+ }
71
+ }
72
+ </style>