fulldev-ui 0.4.29 → 0.5.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 (314) hide show
  1. package/.astro/assets.mjs +1 -0
  2. package/.astro/astro/content.d.ts +547 -0
  3. package/.astro/collections/blocks.schema.json +851 -0
  4. package/.astro/collections/collections.json +63 -0
  5. package/.astro/collections/images.schema.json +22 -0
  6. package/.astro/collections/layouts.schema.json +826 -0
  7. package/.astro/collections/pages.schema.json +568 -0
  8. package/.astro/collections/presets.schema.json +489 -0
  9. package/.astro/collections/records.schema.json +822 -0
  10. package/.astro/collections/settings.schema.json +822 -0
  11. package/.astro/data-store.json +1 -0
  12. package/.astro/modules.mjs +1 -0
  13. package/.astro/settings.json +5 -0
  14. package/.astro/types.d.ts +2 -0
  15. package/CONTRIBUTING.md +2 -2
  16. package/astro.config.ts +20 -4
  17. package/package.json +26 -16
  18. package/public/favicon/android-chrome-192x192.png +0 -0
  19. package/public/favicon/android-chrome-512x512.png +0 -0
  20. package/public/favicon/apple-touch-icon.png +0 -0
  21. package/public/favicon/browserconfig.xml +7 -7
  22. package/public/favicon/favicon-16x16-dark.png +0 -0
  23. package/public/favicon/favicon-16x16.png +0 -0
  24. package/public/favicon/favicon-32x32-dark.png +0 -0
  25. package/public/favicon/favicon-32x32.png +0 -0
  26. package/public/favicon/favicon-48x48-dark.png +0 -0
  27. package/public/favicon/favicon-48x48.png +0 -0
  28. package/public/favicon/favicon-dark.ico +0 -0
  29. package/public/favicon/favicon.ico +0 -0
  30. package/public/favicon/favicon.svg +16 -0
  31. package/public/favicon/manifest.webmanifest +26 -0
  32. package/public/favicon/mstile-150x150.png +0 -0
  33. package/public/favicon/safari-pinned-tab.svg +14 -15
  34. package/public/favicon/yandex-browser-50x50.png +0 -0
  35. package/public/favicon/yandex-browser-manifest.json +9 -0
  36. package/src/blocks/Article.astro +21 -0
  37. package/src/blocks/Banner.astro +47 -0
  38. package/src/blocks/Colleagues.astro +2 -1
  39. package/src/blocks/Contact.astro +84 -99
  40. package/src/blocks/Cta.astro +2 -1
  41. package/src/blocks/Hero.astro +1 -2
  42. package/src/blocks/Intro.astro +1 -1
  43. package/src/blocks/Jobs.astro +1 -1
  44. package/src/blocks/Prices.astro +1 -1
  45. package/src/blocks/Product.astro +23 -10
  46. package/src/blocks/Reviews.astro +1 -1
  47. package/src/components/Avatar.astro +3 -20
  48. package/src/components/Badge.astro +17 -54
  49. package/src/components/Badges.astro +50 -0
  50. package/src/components/Button.astro +65 -45
  51. package/src/components/Buttons.astro +49 -0
  52. package/src/components/Card.astro +94 -177
  53. package/src/components/Cards.astro +135 -0
  54. package/src/components/Channel.astro +70 -0
  55. package/src/components/Channels.astro +37 -0
  56. package/src/components/Checkbox.astro +12 -16
  57. package/src/components/Dialog.astro +10 -12
  58. package/src/components/Drawer.astro +16 -22
  59. package/src/components/Element.astro +58 -0
  60. package/src/components/Footer.astro +139 -93
  61. package/src/components/Head.astro +7 -45
  62. package/src/components/Header.astro +78 -160
  63. package/src/components/Heading.astro +18 -26
  64. package/src/components/Icon.astro +9 -9
  65. package/src/components/Image.astro +43 -152
  66. package/src/components/Input.astro +10 -28
  67. package/src/components/Label.astro +14 -17
  68. package/src/components/Link.astro +22 -44
  69. package/src/components/List.astro +12 -10
  70. package/src/components/LocaleSwitcher.astro +25 -0
  71. package/src/components/Price.astro +38 -0
  72. package/src/components/Rating.astro +29 -25
  73. package/src/components/Search.astro +3 -3
  74. package/src/components/Section.astro +196 -236
  75. package/src/components/Select.astro +16 -34
  76. package/src/components/Sidebar.astro +112 -46
  77. package/src/components/Social.astro +28 -0
  78. package/src/components/Socials.astro +37 -0
  79. package/src/components/Switch.astro +14 -22
  80. package/src/components/Table.astro +23 -36
  81. package/src/components/Tagline.astro +11 -16
  82. package/src/components/Text.astro +17 -19
  83. package/src/components/Textarea.astro +8 -22
  84. package/src/components/ThemeSelect.astro +38 -0
  85. package/src/components/Toc.astro +98 -41
  86. package/src/components/Writeup.astro +90 -0
  87. package/src/components/docs/PropsTable.astro +229 -56
  88. package/src/components/experimental/Form.astro +10 -17
  89. package/src/components/experimental/Logo.astro +26 -9
  90. package/src/components/experimental/Prose.astro +9 -5
  91. package/src/components/experimental/Video.astro +1 -1
  92. package/src/components/experimental/Window.astro +3 -4
  93. package/src/components/sections.astro +28 -0
  94. package/src/content/config.ts +10 -7
  95. package/src/content/pages/base/_dialog.mdx +1 -2
  96. package/src/content/pages/base/_drawer.mdx +1 -2
  97. package/src/content/pages/base/_localeswitcher.mdx +17 -0
  98. package/src/content/pages/base/_switch.mdx +1 -2
  99. package/src/content/pages/base/badge.mdx +1 -12
  100. package/src/content/pages/base/button.mdx +1 -12
  101. package/src/content/pages/base/card.mdx +2 -29
  102. package/src/content/pages/base/checkbox.mdx +1 -2
  103. package/src/content/pages/base/icon.mdx +1 -2
  104. package/src/content/pages/base/image.mdx +42 -0
  105. package/src/content/pages/base/input.mdx +1 -12
  106. package/src/content/pages/base/rating.mdx +3 -14
  107. package/src/content/pages/base/section.mdx +2 -3
  108. package/src/content/pages/base/select.mdx +1 -12
  109. package/src/content/pages/base/table.mdx +1 -28
  110. package/src/content/pages/base/textarea.mdx +1 -11
  111. package/src/content/pages/base/theme-select.mdx +15 -0
  112. package/src/content/pages/blocks/_categories.mdx +3 -5
  113. package/src/content/pages/blocks/{footer.mdx → _footer.mdx} +2 -4
  114. package/src/content/pages/blocks/{header.mdx → _header.mdx} +2 -7
  115. package/src/content/pages/blocks/_jobs.mdx +1 -2
  116. package/src/content/pages/blocks/{prices.mdx → _prices.mdx} +5 -7
  117. package/src/content/pages/blocks/_product.mdx +1 -2
  118. package/src/content/pages/blocks/_products.mdx +1 -2
  119. package/src/content/pages/blocks/_stats.mdx +1 -1
  120. package/src/content/pages/blocks/{_banner.mdx → banner.mdx} +2 -2
  121. package/src/content/pages/blocks/colleagues.mdx +6 -8
  122. package/src/content/pages/blocks/contact.mdx +69 -0
  123. package/src/content/pages/blocks/content.mdx +1 -19
  124. package/src/content/pages/blocks/cta.mdx +2 -25
  125. package/src/content/pages/blocks/features.mdx +2 -3
  126. package/src/content/pages/blocks/hero.mdx +5 -3
  127. package/src/content/pages/blocks/intro.mdx +2 -5
  128. package/src/content/pages/blocks/posts.mdx +9 -2
  129. package/src/content/pages/blocks/reviews.mdx +23 -18
  130. package/src/content/pages/index.mdx +19 -20
  131. package/src/content/pages/layouts/docslayout.mdx +5 -0
  132. package/src/content/pages/layouts/layout.mdx +21 -0
  133. package/src/content/pages/layouts/pagelayout.mdx +21 -0
  134. package/src/content/pages/overview/components.mdx +70 -0
  135. package/src/content/pages/overview/content-layer.mdx +128 -0
  136. package/src/content/pages/overview/{theming.mdx → customization.mdx} +6 -6
  137. package/src/content/pages/overview/frameworks.mdx +4 -4
  138. package/src/content/pages/overview/installation.mdx +37 -3
  139. package/src/content/pages/overview/introduction.mdx +6 -2
  140. package/src/content/pages/schemas/page.mdx +11 -0
  141. package/src/content/pages/schemas/preset.mdx +9 -0
  142. package/src/content/pages/showcase/anti-slip-profiles.md +5 -0
  143. package/src/content/pages/showcase/fulldev-ui.md +5 -0
  144. package/src/content/pages/showcase/lavis-detailing.md +5 -0
  145. package/src/content/pages/showcase/leren-trainingsacteren.md +5 -0
  146. package/src/content/pages/showcase/miele-witgoedcenter-amsterdam.md +5 -0
  147. package/src/content/{records/record.yml → pages/showcase/record.md} +2 -0
  148. package/src/content/pages/showcase/sloepverhuur-bolsward.md +5 -0
  149. package/src/content/pages/showcase/stark-vulcanising-products.md +5 -0
  150. package/src/content/pages/showcase/the-gym-haren.md +5 -0
  151. package/src/content/pages/showcase/van-dillen-antieke-bouwmaterialen.md +5 -0
  152. package/src/content/pages/showcase.mdx +11 -41
  153. package/src/content/pages/typography/_tagline.mdx +1 -2
  154. package/src/content/pages/typography/heading.mdx +1 -2
  155. package/src/content/pages/typography/label.mdx +1 -2
  156. package/src/content/pages/typography/link.mdx +1 -13
  157. package/src/content/pages/typography/list.mdx +1 -2
  158. package/src/content/pages/typography/text.mdx +1 -2
  159. package/src/content/presets/base.yml +70 -0
  160. package/src/content/presets/blocks.yml +4 -0
  161. package/src/content/presets/docs.yml +65 -0
  162. package/src/css/color.css +0 -82
  163. package/src/css/custom.css +9 -56
  164. package/src/css/size.css +10 -0
  165. package/src/css/space.css +0 -8
  166. package/src/css/styles.css +0 -15
  167. package/src/images/avatar-1.yml +1 -0
  168. package/src/images/favicon.svg +16 -0
  169. package/src/integration/generate-colors.ts +2 -0
  170. package/src/integration/index.ts +49 -7
  171. package/src/layouts/BlockLayout.astro +10 -15
  172. package/src/layouts/ContactLayout.astro +21 -0
  173. package/src/layouts/ContentLayout.astro +16 -0
  174. package/src/layouts/DocsLayout.astro +85 -0
  175. package/src/layouts/Layout.astro +111 -133
  176. package/src/layouts/OverviewLayout.astro +22 -32
  177. package/src/layouts/PageLayout.astro +7 -24
  178. package/src/layouts/PostLayout.astro +8 -19
  179. package/src/layouts/ProductLayout.astro +9 -22
  180. package/src/loaders/imageLoader.ts +26 -0
  181. package/src/pages/[...page].astro +25 -21
  182. package/src/schemas/components/avatar.ts +3 -0
  183. package/src/schemas/components/avatars.ts +4 -0
  184. package/src/schemas/components/badge.ts +13 -0
  185. package/src/schemas/components/button.ts +16 -0
  186. package/src/schemas/components/buttons.ts +4 -0
  187. package/src/schemas/components/card.ts +25 -0
  188. package/src/schemas/components/cards.ts +4 -0
  189. package/src/schemas/components/channel.ts +13 -0
  190. package/src/schemas/components/channels.ts +4 -0
  191. package/src/schemas/components/footer.ts +24 -0
  192. package/src/schemas/components/header.ts +10 -0
  193. package/src/schemas/components/heading.ts +3 -0
  194. package/src/schemas/components/icon.ts +3 -0
  195. package/src/schemas/components/image.ts +18 -0
  196. package/src/schemas/components/images.ts +4 -0
  197. package/src/schemas/components/list.ts +3 -0
  198. package/src/schemas/components/logo.ts +3 -0
  199. package/src/schemas/components/price.ts +3 -0
  200. package/src/schemas/components/rating.ts +15 -0
  201. package/src/schemas/components/section.ts +15 -0
  202. package/src/schemas/components/sections.ts +3 -0
  203. package/src/schemas/components/social.ts +3 -0
  204. package/src/schemas/components/socials.ts +4 -0
  205. package/src/schemas/components/tagline.ts +3 -0
  206. package/src/schemas/components/text.ts +3 -0
  207. package/src/schemas/components/writeup.ts +20 -0
  208. package/src/schemas/imageSchema.ts +12 -0
  209. package/src/schemas/pageSchema.ts +63 -0
  210. package/src/schemas/presetSchema.ts +29 -0
  211. package/src/schemas/utils/categories.ts +3 -0
  212. package/src/schemas/utils/component.ts +17 -0
  213. package/src/schemas/utils/navigation.ts +53 -0
  214. package/src/schemas/{utils.ts → utils/pathSchema.ts} +2 -11
  215. package/src/types/global-props.d.ts +16 -0
  216. package/src/types/virtual-modules.d.ts +5 -0
  217. package/src/utils/_archive/Childmorphic.ts +1 -1
  218. package/src/utils/_archive/mergeEntries.ts +28 -0
  219. package/src/utils/getCategoryPages.ts +11 -0
  220. package/src/utils/getChildPages.ts +16 -0
  221. package/src/utils/getSiblingPages.ts +14 -0
  222. package/tsconfig.json +1 -2
  223. package/public/favicon/site.webmanifest +0 -19
  224. package/public/images/avatars/1.jpeg +0 -0
  225. package/public/images/avatars/2.jpeg +0 -0
  226. package/public/images/avatars/3.jpeg +0 -0
  227. package/public/images/avatars/300/1.jpeg +0 -0
  228. package/public/images/avatars/300/2.jpeg +0 -0
  229. package/public/images/avatars/300/3.jpeg +0 -0
  230. package/public/images/avatars/300/4.jpeg +0 -0
  231. package/public/images/avatars/4.jpeg +0 -0
  232. package/public/images/avatars/5.jpeg +0 -0
  233. package/public/images/avatars/6.jpeg +0 -0
  234. package/public/images/avatars/7.jpeg +0 -0
  235. package/public/images/avatars/8.jpeg +0 -0
  236. package/public/images/blocks/colleagues.png +0 -0
  237. package/public/images/blocks/content.png +0 -0
  238. package/public/images/blocks/cta.png +0 -0
  239. package/public/images/blocks/features.png +0 -0
  240. package/public/images/blocks/footer.png +0 -0
  241. package/public/images/blocks/header.png +0 -0
  242. package/public/images/blocks/hero.png +0 -0
  243. package/public/images/blocks/intro.png +0 -0
  244. package/public/images/blocks/posts.png +0 -0
  245. package/public/images/blocks/prices.png +0 -0
  246. package/public/images/blocks/reviews.png +0 -0
  247. package/public/images/logo-placeholder.svg +0 -1
  248. package/src/components/Bento.astro +0 -43
  249. package/src/components/Block.astro +0 -157
  250. package/src/components/Blocks.astro +0 -5
  251. package/src/components/Box.astro +0 -63
  252. package/src/components/Carousel.astro +0 -54
  253. package/src/components/Column.astro +0 -73
  254. package/src/components/Grid.astro +0 -32
  255. package/src/components/Masonry.astro +0 -42
  256. package/src/components/Root.astro +0 -94
  257. package/src/components/Row.astro +0 -49
  258. package/src/components/Split.astro +0 -59
  259. package/src/components/Spread.astro +0 -46
  260. package/src/components/Stack.astro +0 -36
  261. package/src/components/Toggle.astro +0 -46
  262. package/src/components/Wrap.astro +0 -42
  263. package/src/components/docs/NavigationButtons.astro +0 -59
  264. package/src/components/experimental/Channel.astro +0 -74
  265. package/src/components/experimental/Price.astro +0 -40
  266. package/src/content/pages/_changelog.mdx +0 -10
  267. package/src/content/pages/_segment/footer.mdx +0 -244
  268. package/src/content/pages/_segment/header.mdx +0 -210
  269. package/src/content/pages/base/_image.mdx +0 -14
  270. package/src/content/pages/base/toggle.mdx +0 -32
  271. package/src/content/pages/blocks.mdx +0 -10
  272. package/src/content/pages/overview/integration.mdx +0 -37
  273. package/src/content/pages/structure/_row.mdx +0 -23
  274. package/src/content/pages/structure/_wrap.mdx +0 -25
  275. package/src/content/pages/structure/carousel.mdx +0 -31
  276. package/src/content/pages/structure/column.mdx +0 -21
  277. package/src/content/pages/structure/grid.mdx +0 -26
  278. package/src/content/pages/structure/masonry.mdx +0 -32
  279. package/src/content/pages/structure/split.mdx +0 -21
  280. package/src/content/pages/structure/spread.mdx +0 -21
  281. package/src/content/pages/structure/stack.mdx +0 -22
  282. package/src/content/settings/base.yml +0 -55
  283. package/src/content/settings/components.yml +0 -29
  284. package/src/layouts/BlockOverviewLayout.astro +0 -39
  285. package/src/layouts/ComponentLayout.astro +0 -23
  286. package/src/layouts/JobsLayout.astro +0 -40
  287. package/src/schemas/base.ts +0 -90
  288. package/src/schemas/block.ts +0 -15
  289. package/src/schemas/card.ts +0 -3
  290. package/src/schemas/page.ts +0 -43
  291. package/src/utils/mergeEntries.ts +0 -28
  292. /package/{public/showcase → src/images}/anti-slip-profiles.webp +0 -0
  293. /package/{public/images/avatars/500/1.jpeg → src/images/avatar-1.jpeg} +0 -0
  294. /package/{public/images/avatars/500/2.jpeg → src/images/avatar-2.jpeg} +0 -0
  295. /package/{public/images/avatars/500/3.jpeg → src/images/avatar-3.jpeg} +0 -0
  296. /package/{public/images/avatars/500/4.jpeg → src/images/avatar-4.jpeg} +0 -0
  297. /package/{public → src}/images/avatar-placeholder.jpg +0 -0
  298. /package/{public → src}/images/block-code.png +0 -0
  299. /package/{public → src}/images/component-code.png +0 -0
  300. /package/{public/showcase → src/images}/fulldev-ui.webp +0 -0
  301. /package/{public/showcase → src/images}/lavis-detailing.webp +0 -0
  302. /package/{public/showcase → src/images}/leren-trainingsacteren.webp +0 -0
  303. /package/{public/showcase → src/images}/miele-witgoedcenter-amsterdam.webp +0 -0
  304. /package/{public → src}/images/og-image.png +0 -0
  305. /package/{public → src}/images/placeholder-center.webp +0 -0
  306. /package/{public → src}/images/placeholder-landscape-dark.png +0 -0
  307. /package/{public → src}/images/placeholder-landscape.webp +0 -0
  308. /package/{public → src}/images/placeholder-portrait.webp +0 -0
  309. /package/{public → src}/images/placeholder-right.webp +0 -0
  310. /package/{public → src}/images/placeholder.webp +0 -0
  311. /package/{public/showcase → src/images}/sloepverhuur-bolsward.webp +0 -0
  312. /package/{public/showcase → src/images}/stark-vulcanising-products.webp +0 -0
  313. /package/{public/showcase → src/images}/the-gym-haren.webp +0 -0
  314. /package/{public/showcase → src/images}/van-dillen-antieke-bouwmaterialen.webp +0 -0
@@ -0,0 +1,24 @@
1
+ import { z } from 'astro:content'
2
+ import buttons from './buttons'
3
+ import channels from './channels'
4
+ import heading from './heading'
5
+ import logo from './logo'
6
+ import socials from './socials'
7
+ import text from './text'
8
+
9
+ export default z
10
+ .object({
11
+ logo,
12
+ text,
13
+ socials,
14
+ channels,
15
+ columns: z.array(
16
+ z
17
+ .object({
18
+ heading,
19
+ buttons,
20
+ })
21
+ .partial()
22
+ ),
23
+ })
24
+ .partial()
@@ -0,0 +1,10 @@
1
+ import { z } from 'astro:content'
2
+ import buttons from './buttons'
3
+ import logo from './logo'
4
+
5
+ export default z
6
+ .object({
7
+ logo,
8
+ buttons,
9
+ })
10
+ .partial()
@@ -0,0 +1,3 @@
1
+ import { z } from 'astro:content'
2
+
3
+ export default z.string()
@@ -0,0 +1,3 @@
1
+ import { z } from 'astro:content'
2
+
3
+ export default z.string()
@@ -0,0 +1,18 @@
1
+ import { reference, z } from 'astro:content'
2
+
3
+ export default z.union([reference('images'), z.object({}).passthrough()]).pipe(
4
+ z
5
+ .object({
6
+ id: z
7
+ .string()
8
+ .refine(async (data) => await reference('images').parseAsync(data)),
9
+ src: z.string(),
10
+ alt: z.string(),
11
+ width: z.number(),
12
+ height: z.number(),
13
+ })
14
+ .partial()
15
+ .passthrough()
16
+ )
17
+
18
+ // export default z.any()
@@ -0,0 +1,4 @@
1
+ import { z } from 'astro:content'
2
+ import image from './image'
3
+
4
+ export default z.array(image)
@@ -0,0 +1,3 @@
1
+ import { z } from 'astro:content'
2
+
3
+ export default z.array(z.string())
@@ -0,0 +1,3 @@
1
+ import image from './image'
2
+
3
+ export default image
@@ -0,0 +1,3 @@
1
+ import { z } from 'astro:content'
2
+
3
+ export default z.number()
@@ -0,0 +1,15 @@
1
+ import { z } from 'astro:content'
2
+ import avatar from './avatar'
3
+ import avatars from './avatars'
4
+ import text from './text'
5
+
6
+ export default z.number().or(
7
+ z
8
+ .object({
9
+ value: z.number(),
10
+ avatar,
11
+ avatars,
12
+ text,
13
+ })
14
+ .partial()
15
+ )
@@ -0,0 +1,15 @@
1
+ import component from '../utils/component'
2
+ import buttons from './buttons'
3
+ import cards from './cards'
4
+ import image from './image'
5
+ import writeup from './writeup'
6
+
7
+ export default writeup
8
+ .extend({
9
+ component,
10
+ image,
11
+ buttons,
12
+ cards,
13
+ })
14
+ .partial()
15
+ .passthrough()
@@ -0,0 +1,3 @@
1
+ import section from './section'
2
+
3
+ export default section.array()
@@ -0,0 +1,3 @@
1
+ import { z } from 'astro:content'
2
+
3
+ export default z.string()
@@ -0,0 +1,4 @@
1
+ import { z } from 'astro:content'
2
+ import social from './social'
3
+
4
+ export default z.array(social)
@@ -0,0 +1,3 @@
1
+ import { z } from 'astro:content'
2
+
3
+ export default z.string()
@@ -0,0 +1,3 @@
1
+ import { z } from 'astro:content'
2
+
3
+ export default z.string()
@@ -0,0 +1,20 @@
1
+ import { z } from 'astro:content'
2
+ import badge from './badge'
3
+ import heading from './heading'
4
+ import list from './list'
5
+ import price from './price'
6
+ import rating from './rating'
7
+ import tagline from './tagline'
8
+ import text from './text'
9
+
10
+ export default z
11
+ .object({
12
+ rating,
13
+ badge,
14
+ tagline,
15
+ heading,
16
+ text,
17
+ list,
18
+ price,
19
+ })
20
+ .partial()
@@ -0,0 +1,12 @@
1
+ import { z } from 'astro:content'
2
+
3
+ export default z
4
+ .object({
5
+ id: z.string(),
6
+ src: z.string(),
7
+ alt: z.string().default(''),
8
+ width: z.number(),
9
+ height: z.number(),
10
+ format: z.string(),
11
+ })
12
+ .passthrough()
@@ -0,0 +1,63 @@
1
+ import { getEntries, getEntry, z } from 'astro:content'
2
+ import { assign } from 'radash'
3
+ import image from './components/image'
4
+ import sections from './components/sections'
5
+ import categories from './utils/categories'
6
+ import component from './utils/component'
7
+ import navigation from './utils/navigation'
8
+ import pathSchema from './utils/pathSchema'
9
+
10
+ const i18n = z
11
+ .object({
12
+ i18n: pathSchema('pages').optional(),
13
+ })
14
+ .passthrough()
15
+ .transform(async ({ i18n, ...rest }) => {
16
+ if (!i18n) return rest
17
+ const entry = await getEntry(i18n)
18
+ const merged = assign(entry.data, rest) as typeof rest
19
+ return merged as typeof rest
20
+ })
21
+
22
+ const presets = z
23
+ .object({
24
+ presets: z.array(pathSchema('presets')).optional(),
25
+ })
26
+ .passthrough()
27
+ .transform(async ({ presets, ...rest }) => {
28
+ if (!presets) return rest
29
+ const entries = await getEntries(presets)
30
+ let mergedData = {}
31
+ entries.forEach(
32
+ (preset: any) => (mergedData = assign(mergedData, preset.data))
33
+ )
34
+ mergedData = assign(mergedData, rest)
35
+ return mergedData as typeof rest
36
+ })
37
+
38
+ export default i18n.pipe(presets).pipe(
39
+ z
40
+ .object({
41
+ component,
42
+ categories,
43
+ theme: z.enum(['light', 'dark']),
44
+ lang: z.string(),
45
+ seo: z
46
+ .object({
47
+ title: z.string().optional(),
48
+ description: z.string().optional(),
49
+ })
50
+ .optional(),
51
+ title: z.string(),
52
+ description: z.string().optional(),
53
+ image,
54
+ sections,
55
+ header: z.any(),
56
+ footer: z.any(),
57
+ navigation,
58
+ toc: z.any(),
59
+ sidebar: z.any(),
60
+ })
61
+ .partial()
62
+ .passthrough()
63
+ )
@@ -0,0 +1,29 @@
1
+ import { z } from 'astro:content'
2
+ import image from './components/image'
3
+ import sections from './components/sections'
4
+ import categories from './utils/categories'
5
+ import component from './utils/component'
6
+
7
+ export default z
8
+ .object({
9
+ component,
10
+ categories,
11
+ theme: z.enum(['light', 'dark']),
12
+ lang: z.string(),
13
+ seo: z
14
+ .object({
15
+ title: z.string().optional(),
16
+ description: z.string().optional(),
17
+ })
18
+ .optional(),
19
+ title: z.string(),
20
+ description: z.string().optional(),
21
+ image,
22
+ sections,
23
+ header: z.any(),
24
+ footer: z.any(),
25
+ navigation: z.any(),
26
+ toc: z.any(),
27
+ sidebar: z.any(),
28
+ })
29
+ .partial()
@@ -0,0 +1,3 @@
1
+ import pathSchema from './pathSchema'
2
+
3
+ export default pathSchema('pages').array().optional()
@@ -0,0 +1,17 @@
1
+ import { z } from 'astro:content'
2
+ import { mapKeys } from 'radash'
3
+
4
+ export default z.string().refine(
5
+ (value) => {
6
+ const packageComponents = import.meta.glob('../../**/*.astro')
7
+ const userComponents = import.meta.glob('/src/**/*.astro')
8
+ const mapBlockKeys = (blocks: any) =>
9
+ mapKeys(blocks, (key: any) => key.split('/').pop().split('.').shift())
10
+ const mergedComponents = {
11
+ ...mapBlockKeys(packageComponents),
12
+ ...mapBlockKeys(userComponents),
13
+ }
14
+ return mergedComponents[value] !== undefined
15
+ },
16
+ (value) => ({ message: `component: the component "${value}" does not exist` })
17
+ )
@@ -0,0 +1,53 @@
1
+ // import { z } from 'astro:content'
2
+ // import button from '../components/button'
3
+ // import buttons from '../components/buttons'
4
+ // import heading from '../components/heading'
5
+ // import logo from '../components/logo'
6
+
7
+ // export default z.object({
8
+ // logo,
9
+ // buttons: z.array(
10
+ // button.or(
11
+ // z.object({
12
+ // heading,
13
+ // buttons,
14
+ // })
15
+ // )
16
+ // ),
17
+ // })
18
+
19
+ import { z } from 'astro:content'
20
+ import pathSchema from '../utils/pathSchema'
21
+
22
+ const button = pathSchema('pages').or(
23
+ z
24
+ .object({
25
+ text: z.string(),
26
+ href: z.string(),
27
+ heading: z.never(),
28
+ buttons: z.never(),
29
+ })
30
+ .partial()
31
+ .passthrough()
32
+ )
33
+
34
+ const group = z
35
+ .object({
36
+ heading: z.string(),
37
+ buttons: z.array(button),
38
+ text: z.never(),
39
+ href: z.never(),
40
+ })
41
+ .partial()
42
+ .passthrough()
43
+
44
+ export default z
45
+ .object({
46
+ logo: z.string(),
47
+ search: z.boolean(),
48
+ sidebar: z.boolean(),
49
+ toc: z.boolean(),
50
+ buttons: z.array(button.or(group)),
51
+ })
52
+ .partial()
53
+ .passthrough()
@@ -1,19 +1,10 @@
1
1
  import { reference, z, type AnyEntryMap } from 'astro:content'
2
2
 
3
- // export const pagesPath = z
4
- // .string()
5
- // .transform((value) => {
6
- // const fullpath = value?.split(`pages/`).pop()
7
- // const slug = fullpath?.split('.').shift()
8
- // return slug
9
- // })
10
- // .pipe(reference('pages'))
11
-
12
- export const pathSchema = <C extends keyof AnyEntryMap>(collection: C) =>
3
+ // TODO: preprocess instead
4
+ export default <C extends keyof AnyEntryMap>(collection: C) =>
13
5
  z
14
6
  .string()
15
7
  .transform((value) => {
16
- // @ts-ignore
17
8
  const fullpath = value?.split(`${collection}/`).pop()
18
9
  const slug = fullpath?.split('.').shift()
19
10
  const noIndexEnding = slug?.replace('/index', '')
@@ -0,0 +1,16 @@
1
+ export type GlobalProps = {
2
+ if?: any
3
+ theme?: 'light' | 'dark' | string | null | undefined
4
+ color?: 'base' | 'brand' | string | null | undefined
5
+ size?: 'sm' | 'md' | 'lg' | string | number | null | undefined
6
+ contrast?: boolean | undefined
7
+ }
8
+
9
+ // declare global {
10
+ // type GlobalProps = {
11
+ // theme?: 'light' | 'dark' | undefined
12
+ // color?: 'base' | 'brand' | undefined
13
+ // size?: 'sm' | 'md' | 'lg' | undefined
14
+ // contrast?: boolean | undefined
15
+ // }
16
+ // }
@@ -0,0 +1,5 @@
1
+ declare module 'virtual:*' {
2
+ import type { Config } from 'fulldev-ui/integration'
3
+ const content: Config
4
+ export default content
5
+ }
@@ -4,5 +4,5 @@
4
4
  // [Key in keyof C & string as
5
5
  // | Lowercase<Key>
6
6
  // | Capitalize<Key>
7
- // | `${string}${Capitalize<Key>}`]?: C[Key]
7
+ // | `${string}${Capitalize<Key>}`]?: undefined | C[Key]
8
8
  // }
@@ -0,0 +1,28 @@
1
+ // import { getEntry } from 'astro:content'
2
+ // import { assign } from 'radash'
3
+
4
+ // export const mergeEntries = async (entry: any) => {
5
+ // if (!entry) return entry
6
+ // const { data, slug } = entry
7
+ // const baseSettings = await getEntry('layouts', 'base')
8
+ // const enSettings = await getEntry('layouts', 'en')
9
+ // const deSettings = await getEntry('layouts', 'de')
10
+ // const frSettings = await getEntry('layouts', 'fr')
11
+ // const pageSettings = data.settings && (await getEntry(data.settings))
12
+ // const i18nSettings = data.i18n && (await getEntry(data.i18n))
13
+
14
+ // let merged = {}
15
+ // merged = assign(merged, baseSettings?.data ?? {})
16
+ // slug?.startsWith('en') && (merged = assign(merged, enSettings?.data ?? {}))
17
+ // slug?.startsWith('de') && (merged = assign(merged, deSettings?.data ?? {}))
18
+ // slug?.startsWith('fr') && (merged = assign(merged, frSettings?.data ?? {}))
19
+ // merged = assign(merged, i18nSettings?.data ?? {})
20
+ // merged = assign(merged, pageSettings?.data ?? {})
21
+ // merged = assign(merged, data)
22
+
23
+ // const newEntry = {
24
+ // ...entry,
25
+ // data: merged,
26
+ // }
27
+ // return newEntry
28
+ // }
@@ -0,0 +1,11 @@
1
+ import { getCollection, type CollectionEntry } from 'astro:content'
2
+
3
+ // Pages that reference the current page
4
+ export const getCategoryPages = async (
5
+ slug: CollectionEntry<'pages'>['slug']
6
+ ) =>
7
+ (
8
+ await getCollection('pages', (page) =>
9
+ page.data?.categories?.some((p: any) => p.slug === slug)
10
+ )
11
+ )?.map((page) => page.data)
@@ -0,0 +1,16 @@
1
+ import { getCollection, type CollectionEntry } from 'astro:content'
2
+
3
+ // Records that are in a folder with the current page's slug
4
+ export const getChildPages = async (slug: CollectionEntry<'pages'>['slug']) =>
5
+ (
6
+ await getCollection(
7
+ 'pages',
8
+ (page) =>
9
+ page.slug.startsWith(slug) &&
10
+ page.slug !== slug &&
11
+ !page.slug.replace(`${slug}/`, '').includes('/')
12
+ )
13
+ )?.map(({ slug, data }) => ({
14
+ ...data,
15
+ href: `/${slug}/`,
16
+ }))
@@ -0,0 +1,14 @@
1
+ import { getCollection, type CollectionEntry } from 'astro:content'
2
+
3
+ // Pages that are in the same folder as the current page
4
+ export const getSiblingPages = async (slug: CollectionEntry<'pages'>['slug']) =>
5
+ (
6
+ await getCollection('pages', (page) => {
7
+ const currentPageFolder = slug.split('/').slice(0, -1).join('/')
8
+ const pageFolder = page.slug.split('/').slice(0, -1).join('/')
9
+ return page.slug !== slug && pageFolder === currentPageFolder
10
+ })
11
+ )?.map(({ slug, data }) => ({
12
+ ...data,
13
+ href: `/${slug}/`,
14
+ }))
package/tsconfig.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
- "extends": "astro/tsconfigs/strict",
2
+ "extends": "astro/tsconfigs/strictest",
3
3
  "compilerOptions": {
4
- "jsx": "preserve",
5
4
  "baseUrl": ".",
6
5
  "paths": {
7
6
  "fulldev-ui/*": [
@@ -1,19 +0,0 @@
1
- {
2
- "name": "",
3
- "short_name": "",
4
- "icons": [
5
- {
6
- "src": "/favicon/android-chrome-192x192.png",
7
- "sizes": "192x192",
8
- "type": "image/png"
9
- },
10
- {
11
- "src": "/favicon/android-chrome-512x512.png",
12
- "sizes": "512x512",
13
- "type": "image/png"
14
- }
15
- ],
16
- "theme_color": "#ffffff",
17
- "background_color": "#ffffff",
18
- "display": "standalone"
19
- }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="220" height="40" fill="none" viewBox="0 0 220 40"><path fill="#0E1534" d="M20 40c11.046 0 20-8.954 20-20V6a6 6 0 0 0-6-6H21v8.774c0 2.002.122 4.076 1.172 5.78a9.999 9.999 0 0 0 6.904 4.627l.383.062a.8.8 0 0 1 0 1.514l-.383.062a10 10 0 0 0-8.257 8.257l-.062.383a.8.8 0 0 1-1.514 0l-.062-.383a10 10 0 0 0-4.627-6.904C12.85 21.122 10.776 21 8.774 21H.024C.547 31.581 9.29 40 20 40Z"></path><path fill="#0E1534" d="M0 19h8.774c2.002 0 4.076-.122 5.78-1.172a10.018 10.018 0 0 0 3.274-3.274C18.878 12.85 19 10.776 19 8.774V0H6a6 6 0 0 0-6 6v13ZM46.455 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM211.711 12.104c5.591 0 8.289 3.905 8.289 8.428v8.495h-5.851V21.54c0-2.05-.748-3.742-2.893-3.742-2.145 0-2.86 1.692-2.86 3.742v7.486h-5.851V21.54c0-2.05-.715-3.742-2.861-3.742-2.145 0-2.893 1.692-2.893 3.742v7.486h-5.85v-8.495c0-4.523 2.697-8.428 8.288-8.428 3.056 0 5.266 1.204 6.274 3.189 1.072-1.985 3.413-3.19 6.208-3.19ZM180.427 23.82c1.885 0 2.698-1.725 2.698-3.776v-7.29h5.85v8.006c0 4.784-2.795 8.755-8.548 8.755-5.754 0-8.549-3.97-8.549-8.755v-8.006h5.851v7.29c0 2.05.812 3.776 2.698 3.776ZM163.275 29.547c-3.673 0-6.046-1.269-7.444-3.742l4.226-2.376c.585 1.041 1.462 1.562 2.925 1.562 1.203 0 1.755-.423 1.755-.944 0-1.985-8.581.033-8.581-6.28 0-3.06 2.6-5.533 7.021-5.533 3.868 0 5.981 1.887 6.924 3.71l-4.226 2.408c-.357-.976-1.463-1.562-2.568-1.562-.845 0-1.3.358-1.3.846 0 2.018 8.581.163 8.581 6.281 0 3.417-3.348 5.63-7.313 5.63ZM142.833 36.512h-5.851V20.858c0-4.98 3.738-8.592 8.939-8.592 5.071 0 8.939 3.873 8.939 8.592 0 5.207-3.446 8.657-8.614 8.657-1.203 0-2.405-.358-3.413-.912v7.909Zm3.088-12.497c1.853 0 3.088-1.432 3.088-3.125 0-1.724-1.235-3.124-3.088-3.124s-3.088 1.4-3.088 3.125c0 1.692 1.235 3.124 3.088 3.124ZM131.121 11.03c-1.918 0-3.51-1.595-3.51-3.515 0-1.92 1.592-3.515 3.51-3.515 1.918 0 3.511 1.595 3.511 3.515 0 1.92-1.593 3.515-3.511 3.515Zm-2.925 1.724h5.851v16.273h-5.851V12.754ZM116.97 29.515c-5.071 0-8.939-3.905-8.939-8.657 0-4.719 3.868-8.624 8.939-8.624s8.939 3.905 8.939 8.624c0 4.752-3.868 8.657-8.939 8.657Zm0-5.5c1.853 0 3.088-1.432 3.088-3.125 0-1.724-1.235-3.156-3.088-3.156s-3.088 1.432-3.088 3.156c0 1.693 1.235 3.125 3.088 3.125ZM96.983 37c-4.03 0-6.956-1.79-8.451-4.98l4.843-2.603c.52 1.107 1.495 2.246 3.51 2.246 2.114 0 3.511-1.335 3.674-3.678-.78.684-2.016 1.204-3.868 1.204-4.519 0-8.16-3.482-8.16-8.364 0-4.718 3.869-8.559 8.94-8.559 5.201 0 8.939 3.613 8.939 8.592v6.444c0 5.858-4.064 9.698-9.427 9.698Zm.39-13.31c1.755 0 3.088-1.205 3.088-2.995 0-1.757-1.332-2.929-3.088-2.929-1.723 0-3.088 1.172-3.088 2.93 0 1.79 1.365 2.993 3.088 2.993ZM78.607 29.515c-5.071 0-8.94-3.905-8.94-8.657 0-4.719 3.869-8.624 8.94-8.624 5.07 0 8.939 3.905 8.939 8.624 0 4.752-3.869 8.657-8.94 8.657Zm0-5.5c1.853 0 3.088-1.432 3.088-3.125 0-1.724-1.235-3.156-3.088-3.156s-3.088 1.432-3.088 3.156c0 1.693 1.235 3.125 3.088 3.125ZM59.013 7.06v16.434H68.7v5.533H58.2c-3.705 0-5.2-1.953-5.2-5.045V7.06h6.013Z"></path></svg>
@@ -1,43 +0,0 @@
1
- ---
2
- import type { HTMLTag, Polymorphic } from 'astro/types'
3
- import Root from 'fulldev-ui/components/Root.astro'
4
-
5
- type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }> & {
6
- size?: 'sm' | 'md' | 'lg'
7
- color?: 'base' | 'brand'
8
- }
9
-
10
- const { ...rest } = Astro.props
11
- ---
12
-
13
- <Root
14
- class:list="bento"
15
- {...rest}
16
- >
17
- <slot />
18
- </Root>
19
-
20
- <style is:global lang="scss">
21
- @layer fulldev {
22
- .bento {
23
- display: grid;
24
- position: relative;
25
- grid-template-columns: 1fr;
26
- gap: var(--space-4);
27
- width: 100%;
28
-
29
- @media (min-width: 1024px) {
30
- grid-template-columns: repeat(5, 1fr);
31
-
32
- & > * {
33
- grid-column: span 2;
34
- }
35
-
36
- & > *:nth-child(3n + 2),
37
- & > *:nth-child(3n + 3) {
38
- grid-column: span 3;
39
- }
40
- }
41
- }
42
- }
43
- </style>