fulldev-ui 0.5.0-beta.8 → 0.6.0-beta.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 (236) hide show
  1. package/.env.example +3 -0
  2. package/.prettierrc.yaml +1 -0
  3. package/astro.config.ts +6 -32
  4. package/package.json +21 -30
  5. package/pnpm-lock.yaml +696 -2176
  6. package/public/favicon/android-chrome-192x192.png +0 -0
  7. package/public/favicon/android-chrome-512x512.png +0 -0
  8. package/public/favicon/apple-touch-icon.png +0 -0
  9. package/public/favicon/manifest.webmanifest +7 -3
  10. package/public/favicon/mstile-150x150.png +0 -0
  11. package/src/blocks/Banner.astro +6 -19
  12. package/src/blocks/Colleagues.astro +0 -1
  13. package/src/blocks/Contact.astro +75 -74
  14. package/src/blocks/Content.astro +124 -6
  15. package/src/blocks/Cta.astro +0 -2
  16. package/src/blocks/Excerpt.astro +0 -2
  17. package/src/blocks/Footer.astro +107 -3
  18. package/src/blocks/Hero.astro +238 -9
  19. package/src/blocks/Intro.astro +89 -11
  20. package/src/blocks/Prices.astro +1 -1
  21. package/src/blocks/Product.astro +51 -68
  22. package/src/blocks/Products.astro +114 -5
  23. package/src/blocks/Reviews.astro +0 -1
  24. package/src/blocks/_Contact.astro +112 -0
  25. package/src/components/Avatar.astro +28 -9
  26. package/src/components/Avatars.astro +36 -0
  27. package/src/components/Badge.astro +73 -26
  28. package/src/components/Badges.astro +16 -23
  29. package/src/components/Breadcrumb.astro +58 -0
  30. package/src/components/Button.astro +56 -112
  31. package/src/components/Buttons.astro +23 -13
  32. package/src/components/Card.astro +129 -115
  33. package/src/components/Cards.astro +33 -35
  34. package/src/components/Carousel.astro +106 -0
  35. package/src/components/Cart.astro +1 -1
  36. package/src/components/CartForm.astro +9 -9
  37. package/src/components/CartList.astro +11 -28
  38. package/src/components/CartSummary.astro +11 -13
  39. package/src/components/Channel.astro +40 -22
  40. package/src/components/Channels.astro +20 -6
  41. package/src/components/Checkbox.astro +52 -27
  42. package/src/components/Code.astro +52 -0
  43. package/src/components/Dialog.astro +2 -2
  44. package/src/components/Drawer.astro +34 -64
  45. package/src/components/Element.astro +16 -8
  46. package/src/components/Form.astro +14 -13
  47. package/src/components/Gallery.astro +172 -0
  48. package/src/components/Head.astro +52 -1
  49. package/src/components/Header.astro +73 -83
  50. package/src/components/Heading.astro +74 -30
  51. package/src/components/Icon.astro +25 -30
  52. package/src/components/Image.astro +23 -38
  53. package/src/components/Input.astro +59 -53
  54. package/src/components/Label.astro +20 -15
  55. package/src/components/Lead.astro +46 -0
  56. package/src/components/Link.astro +51 -26
  57. package/src/components/Links.astro +42 -0
  58. package/src/components/List.astro +41 -16
  59. package/src/components/LocaleSwitcher.astro +2 -2
  60. package/src/components/Logo.astro +45 -0
  61. package/src/components/Menu.astro +21 -17
  62. package/src/components/Paragraph.astro +38 -0
  63. package/src/components/Price.astro +1 -1
  64. package/src/components/Prose.astro +169 -0
  65. package/src/components/Rating.astro +50 -38
  66. package/src/components/Search.astro +1 -1
  67. package/src/components/Section.astro +196 -158
  68. package/src/components/Select.astro +44 -55
  69. package/src/components/Sidebar.astro +31 -38
  70. package/src/components/Social.astro +3 -8
  71. package/src/components/Socials.astro +9 -5
  72. package/src/components/Subheader.astro +59 -0
  73. package/src/components/Switch.astro +72 -29
  74. package/src/components/Table.astro +1 -1
  75. package/src/components/Tagline.astro +40 -12
  76. package/src/components/Text.astro +4 -4
  77. package/src/components/Textarea.astro +40 -50
  78. package/src/components/Themer.astro +76 -0
  79. package/src/components/Toc.astro +24 -32
  80. package/src/components/Writeup.astro +26 -8
  81. package/src/components/docs/PropsTable.astro +38 -264
  82. package/src/components/experimental/Window.astro +5 -57
  83. package/src/components/sections.astro +1 -1
  84. package/src/content/pages/blocks/_categories.mdx +1 -1
  85. package/src/content/pages/blocks/_footer.mdx +1 -1
  86. package/src/content/pages/blocks/_header.mdx +1 -3
  87. package/src/content/pages/blocks/_jobs.mdx +1 -1
  88. package/src/content/pages/blocks/_prices.mdx +1 -1
  89. package/src/content/pages/blocks/_product.mdx +1 -1
  90. package/src/content/pages/blocks/_products.mdx +1 -1
  91. package/src/content/pages/blocks/_stats.mdx +1 -1
  92. package/src/content/pages/blocks/banner.mdx +1 -1
  93. package/src/content/pages/blocks/colleagues.mdx +1 -2
  94. package/src/content/pages/blocks/contact.mdx +1 -1
  95. package/src/content/pages/blocks/content.mdx +1 -5
  96. package/src/content/pages/blocks/cta.mdx +1 -9
  97. package/src/content/pages/blocks/features.mdx +1 -4
  98. package/src/content/pages/blocks/hero.mdx +1 -4
  99. package/src/content/pages/blocks/intro.mdx +1 -4
  100. package/src/content/pages/blocks/posts.mdx +1 -1
  101. package/src/content/pages/blocks/reviews.mdx +1 -2
  102. package/src/content/pages/docs/_internationalization.mdx +55 -0
  103. package/src/content/pages/docs/_using-blocks.mdx +33 -0
  104. package/src/content/pages/docs/_using-presets.mdx +49 -0
  105. package/src/content/pages/docs/blocks.mdx +33 -0
  106. package/src/content/pages/docs/collections/images.mdx +100 -0
  107. package/src/content/pages/docs/collections/pages.mdx +119 -0
  108. package/src/content/pages/docs/collections/presets.mdx +60 -0
  109. package/src/content/pages/docs/collections.mdx +42 -0
  110. package/src/content/pages/{base/card.mdx → docs/components/_card.mdx} +1 -3
  111. package/src/content/pages/{base → docs/components}/_switch.mdx +2 -2
  112. package/src/content/pages/{typography → docs/components}/_tagline.mdx +2 -2
  113. package/src/content/pages/docs/components/_toggle.mdx +31 -0
  114. package/src/content/pages/docs/components/avatar.mdx +35 -0
  115. package/src/content/pages/{base → docs/components}/badge.mdx +27 -8
  116. package/src/content/pages/docs/components/badges.mdx +47 -0
  117. package/src/content/pages/{base → docs/components}/button.mdx +29 -10
  118. package/src/content/pages/docs/components/buttons.mdx +52 -0
  119. package/src/content/pages/docs/components/channel.mdx +92 -0
  120. package/src/content/pages/docs/components/channels.mdx +90 -0
  121. package/src/content/pages/{base → docs/components}/checkbox.mdx +10 -17
  122. package/src/content/pages/docs/components/code.mdx +46 -0
  123. package/src/content/pages/docs/components/heading.mdx +60 -0
  124. package/src/content/pages/docs/components/icon.mdx +49 -0
  125. package/src/content/pages/docs/components/image.mdx +26 -0
  126. package/src/content/pages/docs/components/input.mdx +41 -0
  127. package/src/content/pages/{typography → docs/components}/label.mdx +8 -4
  128. package/src/content/pages/docs/components/lead.mdx +51 -0
  129. package/src/content/pages/{typography → docs/components}/link.mdx +23 -8
  130. package/src/content/pages/docs/components/links.mdx +100 -0
  131. package/src/content/pages/docs/components/list.mdx +45 -0
  132. package/src/content/pages/docs/components/logo.mdx +37 -0
  133. package/src/content/pages/docs/components/menu.mdx +90 -0
  134. package/src/content/pages/docs/components/paragraph.mdx +51 -0
  135. package/src/content/pages/docs/components/prose.mdx +37 -0
  136. package/src/content/pages/docs/components/rating.mdx +77 -0
  137. package/src/content/pages/{base → docs/components}/section.mdx +1 -1
  138. package/src/content/pages/{base → docs/components}/select.mdx +0 -9
  139. package/src/content/pages/docs/components/social.mdx +95 -0
  140. package/src/content/pages/docs/components/socials.mdx +103 -0
  141. package/src/content/pages/docs/components/switch.mdx +35 -0
  142. package/src/content/pages/{base → docs/components}/table.mdx +0 -2
  143. package/src/content/pages/docs/components/tagline.mdx +47 -0
  144. package/src/content/pages/docs/components/textarea.mdx +35 -0
  145. package/src/content/pages/docs/components/themer.mdx +50 -0
  146. package/src/content/pages/docs/components.mdx +40 -0
  147. package/src/content/pages/docs/customization.mdx +151 -0
  148. package/src/content/pages/docs/frameworks.mdx +29 -0
  149. package/src/content/pages/docs/generating-pages.mdx +129 -0
  150. package/src/content/pages/docs/index.mdx +23 -0
  151. package/src/content/pages/docs/installation.mdx +50 -0
  152. package/src/content/pages/docs/layouts.mdx +33 -0
  153. package/src/content/pages/index.mdx +11 -9
  154. package/src/content/pages/showcase.mdx +4 -2
  155. package/src/content/presets/base.yml +80 -63
  156. package/src/content/presets/docs.yml +2 -2
  157. package/src/css/color.css +0 -10
  158. package/src/css/custom.css +10 -12
  159. package/src/css/size.css +2 -11
  160. package/src/css/theme.css +93 -0
  161. package/src/images/logo-1.svg +11 -0
  162. package/src/images/logo-2.svg +13 -0
  163. package/src/images/logo-basic.svg +10 -0
  164. package/src/images/logo-simple.svg +13 -0
  165. package/src/images/logo-thin.svg +15 -0
  166. package/src/images/logo.svg +14 -0
  167. package/src/images/logofat.svg +11 -0
  168. package/src/integration/index.ts +71 -144
  169. package/src/layouts/CategoryLayout.astro +135 -0
  170. package/src/layouts/Layout.astro +62 -117
  171. package/src/layouts/PageLayout.astro +26 -0
  172. package/src/layouts/PostLayout.astro +13 -8
  173. package/src/layouts/ProductLayout.astro +94 -10
  174. package/src/pages/[...page].astro +14 -22
  175. package/src/pages/test.astro +20 -0
  176. package/src/schemas/components/button.ts +21 -13
  177. package/src/schemas/components/card.ts +36 -18
  178. package/src/schemas/components/footer.ts +2 -10
  179. package/src/schemas/components/global.ts +16 -0
  180. package/src/schemas/components/header.ts +8 -0
  181. package/src/schemas/components/image.ts +8 -3
  182. package/src/schemas/components/link.ts +16 -0
  183. package/src/schemas/components/links.ts +4 -0
  184. package/src/schemas/components/menu.ts +2 -0
  185. package/src/schemas/components/sidebar.ts +2 -2
  186. package/src/schemas/components/subheader.ts +9 -0
  187. package/src/schemas/components/themer.ts +3 -0
  188. package/src/schemas/pageSchema.ts +14 -21
  189. package/src/utils/cart.ts +1 -10
  190. package/src/utils/getDeepReferenceChildren.ts +14 -0
  191. package/src/utils/getReferenceChildren.ts +1 -1
  192. package/src/utils/setTheme.ts +18 -0
  193. package/src/utils/slugify.ts +6 -0
  194. package/tailwind.config.ts +67 -0
  195. package/src/blocks/Article.astro +0 -40
  196. package/src/components/Footer.astro +0 -193
  197. package/src/components/ThemeSelect.astro +0 -41
  198. package/src/components/experimental/Form.astro +0 -53
  199. package/src/components/experimental/Gallery.astro +0 -104
  200. package/src/components/experimental/Logo.astro +0 -38
  201. package/src/components/experimental/Prose.astro +0 -192
  202. package/src/content/pages/base/icon.mdx +0 -55
  203. package/src/content/pages/base/image.mdx +0 -42
  204. package/src/content/pages/base/input.mdx +0 -56
  205. package/src/content/pages/base/rating.mdx +0 -55
  206. package/src/content/pages/base/textarea.mdx +0 -58
  207. package/src/content/pages/base/theme-select.mdx +0 -15
  208. package/src/content/pages/layouts/_layout.mdx +0 -14
  209. package/src/content/pages/layouts/docslayout.mdx +0 -14
  210. package/src/content/pages/overview/components.mdx +0 -75
  211. package/src/content/pages/overview/content-collections.mdx +0 -139
  212. package/src/content/pages/overview/frameworks.mdx +0 -198
  213. package/src/content/pages/overview/installation.mdx +0 -53
  214. package/src/content/pages/overview/introduction.mdx +0 -30
  215. package/src/content/pages/overview/theming.mdx +0 -69
  216. package/src/content/pages/schemas/page.mdx +0 -17
  217. package/src/content/pages/schemas/preset.mdx +0 -9
  218. package/src/content/pages/showcase/record.md +0 -3
  219. package/src/content/pages/typography/heading.mdx +0 -73
  220. package/src/content/pages/typography/list.mdx +0 -51
  221. package/src/content/pages/typography/text.mdx +0 -61
  222. package/src/content/presets/blocks.yml +0 -1
  223. package/src/css/space.css +0 -77
  224. package/src/css/styles.css +0 -0
  225. package/src/images/avatar-1.yml +0 -1
  226. package/src/integration/generate-colors.ts +0 -639
  227. package/src/integration/tailwind-plugin.ts +0 -80
  228. package/src/integration/unocss-preset.ts +0 -84
  229. package/src/layouts/BlockLayout.astro +0 -19
  230. package/src/layouts/ContactLayout.astro +0 -21
  231. package/src/layouts/DocsLayout.astro +0 -73
  232. package/src/layouts/OverviewLayout.astro +0 -42
  233. /package/src/content/pages/{base → docs/components}/_dialog.mdx +0 -0
  234. /package/src/content/pages/{base → docs/components}/_drawer.mdx +0 -0
  235. /package/src/content/pages/{base → docs/components}/_localeswitcher.mdx +0 -0
  236. /package/src/schemas/utils/{parents.ts → categories.ts} +0 -0
@@ -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,16 +1,15 @@
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'
5
+ import liveCode from 'astro-live-code'
6
+ import robotsTxt from 'astro-robots-txt'
7
+ import { envField } from 'astro/config'
4
8
  import type { CollectionEntry } from 'astro:content'
5
- import merge from 'deepmerge'
6
- 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
- }
9
+ import tailwindcss from 'tailwindcss'
10
+ import tailwindcssNesting from 'tailwindcss/nesting'
11
+ import { loadEnv } from 'vite'
12
+ import tailwindConfig from '../../tailwind.config.ts'
14
13
 
15
14
  interface Config {
16
15
  favicon?: string
@@ -18,45 +17,68 @@ interface Config {
18
17
  css?: string
19
18
  basePreset?: CollectionEntry<'presets'>['id']
20
19
  injectRoutes?: boolean
21
- // generateImageEntries?: boolean
22
- colors: {
23
- theme: 'light' | 'dark'
24
- light?: Color | undefined
25
- dark?: Color | undefined
26
- }
27
- }
28
-
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
20
  }
40
21
 
41
22
  export default function fulldevIntegration(
42
- userConfig?: Partial<Config> | undefined
23
+ config?: Partial<Config> | undefined
43
24
  ): AstroIntegration {
44
- const config = merge(defaultConfig, userConfig ?? {})
45
-
46
25
  return {
47
26
  name: '/integration',
48
27
  hooks: {
49
28
  'astro:config:setup': async ({
50
- config: astroConfig,
51
29
  updateConfig,
52
- injectScript,
53
30
  injectRoute,
31
+ injectScript,
54
32
  }) => {
55
33
  // ----------------------
56
- // Inject favicon integration
34
+ // Update config
57
35
  // ----------------------
58
- config.favicon &&
59
- config.company &&
36
+ updateConfig({
37
+ site: loadEnv(process.env.NODE_ENV as any, process.cwd(), '').URL,
38
+ experimental: {
39
+ contentLayer: true,
40
+ env: {
41
+ schema: {
42
+ URL: envField.string({
43
+ context: 'client',
44
+ access: 'public',
45
+ }),
46
+ STRIPE_RESTRICTED_KEY: envField.string({
47
+ context: 'client',
48
+ access: 'public',
49
+ optional: true,
50
+ }),
51
+ STRIPE_SECRET_KEY: envField.string({
52
+ context: 'server',
53
+ access: 'secret',
54
+ optional: true,
55
+ }),
56
+ },
57
+ validateSecrets: true,
58
+ },
59
+ },
60
+ integrations: [
61
+ mdx(),
62
+ sitemap(),
63
+ robotsTxt(),
64
+ liveCode({
65
+ layout: '/src/components/Code.astro',
66
+ }),
67
+ ],
68
+ vite: {
69
+ css: {
70
+ postcss: {
71
+ plugins: [tailwindcss(tailwindConfig), tailwindcssNesting],
72
+ },
73
+ },
74
+ },
75
+ })
76
+
77
+ // ----------------------
78
+ // Inject Favicon
79
+ // ----------------------
80
+ config?.favicon &&
81
+ config?.company &&
60
82
  updateConfig({
61
83
  integrations: [
62
84
  favicons({
@@ -64,109 +86,26 @@ export default function fulldevIntegration(
64
86
  masterPicture: config.favicon,
65
87
  appName: config.company,
66
88
  appShortName: config.company,
89
+ appDescription: config.company,
67
90
  }),
68
91
  ],
69
92
  })
70
93
  // ----------------------
71
- // Inject css
94
+ // Inject routes
72
95
  // ----------------------
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,
86
- })
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
96
+ if (config?.injectRoutes) {
97
+ const pages = import.meta.glob('/src/pages/**/*.astro')
98
+ !pages['/src/pages/[...page].astro'] &&
99
+ injectRoute({
100
+ pattern: '/[...page]',
101
+ entrypoint: 'fulldev-ui/[...page].astro',
102
+ })
134
103
  }
135
104
 
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
- })
168
-
169
- injectScript('page-ssr', `import "virtual:colors.css";`)
105
+ // ----------------------
106
+ // Inject css
107
+ // ----------------------
108
+ config?.css && injectScript('page-ssr', `import "${config?.css}";`)
170
109
 
171
110
  // ----------------------
172
111
  // Generate image YAML files
@@ -198,18 +137,6 @@ export default function fulldevIntegration(
198
137
  // console.error('Error generating image YAML files:', error)
199
138
  // }
200
139
  // }
201
-
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
- })
212
- }
213
140
  },
214
141
  },
215
142
  }
@@ -0,0 +1,135 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import { getCollection } from 'astro:content'
4
+ import Intro from 'fulldev-ui/blocks/Intro.astro'
5
+ import Products from 'fulldev-ui/blocks/Products.astro'
6
+ import Carousel from 'fulldev-ui/components/Carousel.astro'
7
+ import Element from 'fulldev-ui/components/Element.astro'
8
+ import Prose from 'fulldev-ui/components/Prose.astro'
9
+ import Sections from 'fulldev-ui/components/sections.astro'
10
+ import Select from 'fulldev-ui/components/Select.astro'
11
+ import Layout from 'fulldev-ui/layouts/Layout.astro'
12
+
13
+ type Props = ComponentProps<typeof Layout>
14
+
15
+ const { slug, sections, title, image, images, description, render } =
16
+ Astro.props
17
+
18
+ const children = await getCollection('pages', (page) =>
19
+ page.data.categories?.some((c: any) => c.slug.includes(slug))
20
+ )
21
+
22
+ const categories = children?.filter(
23
+ (c) => c.data.component === 'CategoryLayout'
24
+ )
25
+
26
+ const products = children?.filter((c) => c.data.component === 'ProductLayout')
27
+
28
+ const sorts = [
29
+ {
30
+ option: 'Aanbevolen',
31
+ products: [...products].sort(
32
+ (a, b) => (a.data.order || 0) - (b.data.order || 0)
33
+ ),
34
+ },
35
+ {
36
+ option: 'Prijs (laag - hoog)',
37
+ products: [...products].sort(
38
+ (a, b) => (a.data.price || 0) - (b.data.price || 0)
39
+ ),
40
+ },
41
+ {
42
+ option: 'Prijs (hoog - laag)',
43
+ products: [...products].sort(
44
+ (a, b) => (b.data.price || 0) - (a.data.price || 0)
45
+ ),
46
+ },
47
+ {
48
+ option: 'Alfabetisch (A-Z)',
49
+ products: [...products],
50
+ },
51
+ {
52
+ option: 'Alfabetisch (Z-A)',
53
+ products: [...products].sort((a, b) =>
54
+ (b.data.title || '').localeCompare(a.data.title || '')
55
+ ),
56
+ },
57
+ ]
58
+ ---
59
+
60
+ <script>
61
+ document.addEventListener('astro:page-load', () => {
62
+ const sort = document.querySelector('.sort')
63
+
64
+ sort?.addEventListener('change', (e) => {
65
+ const blocks = document.querySelectorAll('.products')
66
+ const value = (e.target as HTMLSelectElement).value
67
+ blocks?.forEach((block) => block.classList.add('hide'))
68
+
69
+ const block = document.querySelector(`.products[id='${value}']`)
70
+ block?.classList.remove('hide')
71
+ })
72
+ })
73
+ </script>
74
+
75
+ <Layout {...Astro.props}>
76
+ <Intro
77
+ heading={title}
78
+ paragraph={description}
79
+ image={image || images?.[0]}
80
+ />
81
+ <Carousel>
82
+ {
83
+ categories.map((category) => (
84
+ <Element
85
+ as="a"
86
+ class:list="item"
87
+ href={`/${category.slug}/`}
88
+ >
89
+ {category.data.title}
90
+ </Element>
91
+ ))
92
+ }
93
+ </Carousel>
94
+ <Element class:list="toolbar">
95
+ <span>{products.length} resultaten</span>
96
+ <Select
97
+ class:list="sort"
98
+ size="sm"
99
+ name="Sorteren"
100
+ options={sorts.map((sort) => sort.option)}
101
+ />
102
+ </Element>
103
+ {
104
+ sorts.map((sort) => (
105
+ <Products
106
+ class:list={sort.option !== 'Aanbevolen' ? 'hide' : ''}
107
+ id={sort.option}
108
+ cards={sort.products}
109
+ />
110
+ ))
111
+ }
112
+ <Prose {render} />
113
+ <Sections {sections} />
114
+ <slot />
115
+ </Layout>
116
+
117
+ <style is:global>
118
+ .carousel {
119
+ .item {
120
+ @apply min-w-48 rounded-sm border p-4 text-sm;
121
+ }
122
+ }
123
+
124
+ .products.hide {
125
+ @apply hidden;
126
+ }
127
+
128
+ .toolbar {
129
+ @apply container flex items-center justify-between pt-8;
130
+
131
+ span {
132
+ @apply text-sm text-muted-foreground;
133
+ }
134
+ }
135
+ </style>