fulldev-ui 0.4.33 → 0.5.0-beta-16

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 (315) hide show
  1. package/.env.example +3 -0
  2. package/CONTRIBUTING.md +10 -4
  3. package/astro.config.ts +11 -11
  4. package/package.json +31 -17
  5. package/pnpm-lock.yaml +1353 -438
  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/browserconfig.xml +7 -7
  10. package/public/favicon/favicon-16x16-dark.png +0 -0
  11. package/public/favicon/favicon-16x16.png +0 -0
  12. package/public/favicon/favicon-32x32-dark.png +0 -0
  13. package/public/favicon/favicon-32x32.png +0 -0
  14. package/public/favicon/favicon-48x48-dark.png +0 -0
  15. package/public/favicon/favicon-48x48.png +0 -0
  16. package/public/favicon/favicon-dark.ico +0 -0
  17. package/public/favicon/favicon.ico +0 -0
  18. package/public/favicon/favicon.svg +16 -0
  19. package/public/favicon/manifest.webmanifest +26 -0
  20. package/public/favicon/mstile-150x150.png +0 -0
  21. package/public/favicon/safari-pinned-tab.svg +14 -15
  22. package/public/favicon/yandex-browser-50x50.png +0 -0
  23. package/public/favicon/yandex-browser-manifest.json +9 -0
  24. package/src/blocks/Article.astro +40 -0
  25. package/src/blocks/Banner.astro +48 -0
  26. package/src/blocks/Colleagues.astro +2 -1
  27. package/src/blocks/Contact.astro +61 -99
  28. package/src/blocks/Cta.astro +2 -1
  29. package/src/blocks/Excerpt.astro +14 -0
  30. package/src/blocks/Hero.astro +1 -2
  31. package/src/blocks/Intro.astro +4 -1
  32. package/src/blocks/Jobs.astro +1 -1
  33. package/src/blocks/Prices.astro +1 -1
  34. package/src/blocks/Product.astro +75 -27
  35. package/src/blocks/Reviews.astro +1 -1
  36. package/src/components/Avatar.astro +3 -20
  37. package/src/components/Badge.astro +17 -54
  38. package/src/components/Badges.astro +40 -0
  39. package/src/components/Button.astro +65 -46
  40. package/src/components/Buttons.astro +49 -0
  41. package/src/components/Card.astro +100 -178
  42. package/src/components/Cards.astro +135 -0
  43. package/src/components/Cart.astro +38 -0
  44. package/src/components/CartForm.astro +122 -0
  45. package/src/components/CartList.astro +134 -0
  46. package/src/components/CartSummary.astro +148 -0
  47. package/src/components/Channel.astro +70 -0
  48. package/src/components/Channels.astro +37 -0
  49. package/src/components/Checkbox.astro +12 -16
  50. package/src/components/Dialog.astro +10 -12
  51. package/src/components/Drawer.astro +131 -63
  52. package/src/components/Element.astro +58 -0
  53. package/src/components/Footer.astro +142 -93
  54. package/src/components/Form.astro +49 -0
  55. package/src/components/Head.astro +11 -45
  56. package/src/components/Header.astro +91 -163
  57. package/src/components/Heading.astro +18 -26
  58. package/src/components/Icon.astro +9 -9
  59. package/src/components/Image.astro +42 -152
  60. package/src/components/Input.astro +16 -28
  61. package/src/components/Label.astro +14 -17
  62. package/src/components/Link.astro +22 -44
  63. package/src/components/List.astro +12 -10
  64. package/src/components/LocaleSwitcher.astro +25 -0
  65. package/src/components/Menu.astro +57 -0
  66. package/src/components/Price.astro +34 -0
  67. package/src/components/Rating.astro +29 -25
  68. package/src/components/Search.astro +4 -7
  69. package/src/components/Section.astro +196 -234
  70. package/src/components/Select.astro +16 -34
  71. package/src/components/Sidebar.astro +85 -58
  72. package/src/components/Social.astro +36 -0
  73. package/src/components/Socials.astro +37 -0
  74. package/src/components/Switch.astro +14 -22
  75. package/src/components/Table.astro +23 -36
  76. package/src/components/Tagline.astro +11 -16
  77. package/src/components/Text.astro +17 -19
  78. package/src/components/Textarea.astro +8 -22
  79. package/src/components/ThemeSelect.astro +41 -0
  80. package/src/components/Toc.astro +59 -56
  81. package/src/components/Writeup.astro +90 -0
  82. package/src/components/docs/PropsTable.astro +229 -56
  83. package/src/components/experimental/Form.astro +36 -17
  84. package/src/components/experimental/Gallery.astro +50 -126
  85. package/src/components/experimental/Logo.astro +26 -9
  86. package/src/components/experimental/Prose.astro +41 -5
  87. package/src/components/experimental/Video.astro +1 -1
  88. package/src/components/experimental/Window.astro +3 -4
  89. package/src/components/sections.astro +28 -0
  90. package/src/content/config.ts +10 -7
  91. package/src/content/pages/base/_dialog.mdx +1 -2
  92. package/src/content/pages/base/_drawer.mdx +1 -2
  93. package/src/content/pages/base/_localeswitcher.mdx +17 -0
  94. package/src/content/pages/base/_switch.mdx +1 -2
  95. package/src/content/pages/base/badge.mdx +1 -12
  96. package/src/content/pages/base/button.mdx +1 -12
  97. package/src/content/pages/base/card.mdx +2 -29
  98. package/src/content/pages/base/checkbox.mdx +1 -2
  99. package/src/content/pages/base/icon.mdx +1 -2
  100. package/src/content/pages/base/image.mdx +42 -0
  101. package/src/content/pages/base/input.mdx +1 -12
  102. package/src/content/pages/base/rating.mdx +3 -14
  103. package/src/content/pages/base/section.mdx +2 -3
  104. package/src/content/pages/base/select.mdx +1 -20
  105. package/src/content/pages/base/table.mdx +1 -28
  106. package/src/content/pages/base/textarea.mdx +1 -16
  107. package/src/content/pages/base/theme-select.mdx +15 -0
  108. package/src/content/pages/blocks/_categories.mdx +3 -5
  109. package/src/content/pages/blocks/{footer.mdx → _footer.mdx} +2 -4
  110. package/src/content/pages/blocks/{header.mdx → _header.mdx} +2 -7
  111. package/src/content/pages/blocks/_jobs.mdx +1 -2
  112. package/src/content/pages/blocks/{prices.mdx → _prices.mdx} +5 -7
  113. package/src/content/pages/blocks/_product.mdx +74 -4
  114. package/src/content/pages/blocks/_products.mdx +1 -2
  115. package/src/content/pages/blocks/_stats.mdx +1 -1
  116. package/src/content/pages/blocks/{_banner.mdx → banner.mdx} +2 -2
  117. package/src/content/pages/blocks/colleagues.mdx +6 -8
  118. package/src/content/pages/blocks/contact.mdx +69 -0
  119. package/src/content/pages/blocks/content.mdx +1 -19
  120. package/src/content/pages/blocks/cta.mdx +2 -25
  121. package/src/content/pages/blocks/features.mdx +2 -3
  122. package/src/content/pages/blocks/hero.mdx +5 -3
  123. package/src/content/pages/blocks/intro.mdx +2 -5
  124. package/src/content/pages/blocks/posts.mdx +9 -2
  125. package/src/content/pages/blocks/reviews.mdx +23 -18
  126. package/src/content/pages/index.mdx +16 -20
  127. package/src/content/pages/layouts/_layout.mdx +14 -0
  128. package/src/content/pages/layouts/docslayout.mdx +14 -0
  129. package/src/content/pages/overview/components.mdx +75 -0
  130. package/src/content/pages/overview/content-collections.mdx +139 -0
  131. package/src/content/pages/overview/frameworks.mdx +4 -4
  132. package/src/content/pages/overview/installation.mdx +36 -3
  133. package/src/content/pages/overview/introduction.mdx +19 -9
  134. package/src/content/pages/overview/theming.mdx +53 -67
  135. package/src/content/pages/schemas/page.mdx +17 -0
  136. package/src/content/pages/schemas/preset.mdx +9 -0
  137. package/src/content/pages/showcase/anti-slip-profiles.md +5 -0
  138. package/src/content/pages/showcase/fulldev-ui.md +5 -0
  139. package/src/content/pages/showcase/lavis-detailing.md +5 -0
  140. package/src/content/pages/showcase/leren-trainingsacteren.md +5 -0
  141. package/src/content/pages/showcase/miele-witgoedcenter-amsterdam.md +5 -0
  142. package/src/content/{records/record.yml → pages/showcase/record.md} +2 -0
  143. package/src/content/pages/showcase/sloepverhuur-bolsward.md +5 -0
  144. package/src/content/pages/showcase/stark-vulcanising-products.md +5 -0
  145. package/src/content/pages/showcase/the-gym-haren.md +5 -0
  146. package/src/content/pages/showcase/van-dillen-antieke-bouwmaterialen.md +5 -0
  147. package/src/content/pages/showcase.mdx +11 -41
  148. package/src/content/pages/typography/_tagline.mdx +1 -2
  149. package/src/content/pages/typography/heading.mdx +1 -2
  150. package/src/content/pages/typography/label.mdx +1 -2
  151. package/src/content/pages/typography/link.mdx +1 -13
  152. package/src/content/pages/typography/list.mdx +1 -2
  153. package/src/content/pages/typography/text.mdx +1 -2
  154. package/src/content/{settings → presets}/base.yml +62 -45
  155. package/src/content/presets/blocks.yml +1 -0
  156. package/src/content/presets/docs.yml +6 -0
  157. package/src/css/color.css +0 -82
  158. package/src/css/custom.css +9 -56
  159. package/src/css/size.css +10 -0
  160. package/src/css/space.css +0 -8
  161. package/src/css/styles.css +0 -15
  162. package/src/env.d.ts +1 -1
  163. package/src/images/avatar-1.yml +1 -0
  164. package/src/images/favicon.svg +16 -0
  165. package/src/integration/generate-colors.ts +2 -0
  166. package/src/integration/index.ts +95 -7
  167. package/src/layouts/BlockLayout.astro +10 -15
  168. package/src/layouts/ContactLayout.astro +21 -0
  169. package/src/layouts/DocsLayout.astro +73 -0
  170. package/src/layouts/Layout.astro +114 -133
  171. package/src/layouts/OverviewLayout.astro +28 -31
  172. package/src/layouts/PostLayout.astro +12 -23
  173. package/src/layouts/ProductLayout.astro +10 -20
  174. package/src/loaders/imageLoader.ts +26 -0
  175. package/src/pages/[...page].astro +25 -21
  176. package/src/schemas/components/avatar.ts +3 -0
  177. package/src/schemas/components/avatars.ts +4 -0
  178. package/src/schemas/components/badge.ts +13 -0
  179. package/src/schemas/components/button.ts +16 -0
  180. package/src/schemas/components/buttons.ts +4 -0
  181. package/src/schemas/components/card.ts +25 -0
  182. package/src/schemas/components/cards.ts +4 -0
  183. package/src/schemas/components/channel.ts +13 -0
  184. package/src/schemas/components/channels.ts +4 -0
  185. package/src/schemas/components/footer.ts +25 -0
  186. package/src/schemas/components/header.ts +11 -0
  187. package/src/schemas/components/heading.ts +3 -0
  188. package/src/schemas/components/icon.ts +3 -0
  189. package/src/schemas/components/image.ts +25 -0
  190. package/src/schemas/components/images.ts +4 -0
  191. package/src/schemas/components/list.ts +3 -0
  192. package/src/schemas/components/logo.ts +3 -0
  193. package/src/schemas/components/menu.ts +13 -0
  194. package/src/schemas/components/price.ts +3 -0
  195. package/src/schemas/components/rating.ts +15 -0
  196. package/src/schemas/components/section.ts +15 -0
  197. package/src/schemas/components/sections.ts +3 -0
  198. package/src/schemas/components/sidebar.ts +15 -0
  199. package/src/schemas/components/social.ts +3 -0
  200. package/src/schemas/components/socials.ts +4 -0
  201. package/src/schemas/components/tagline.ts +3 -0
  202. package/src/schemas/components/text.ts +3 -0
  203. package/src/schemas/components/toc.ts +3 -0
  204. package/src/schemas/components/writeup.ts +20 -0
  205. package/src/schemas/imageSchema.ts +12 -0
  206. package/src/schemas/pageSchema.ts +91 -0
  207. package/src/schemas/presetSchema.ts +3 -0
  208. package/src/schemas/utils/component.ts +17 -0
  209. package/src/schemas/utils/navigation.ts +8 -0
  210. package/src/schemas/utils/parents.ts +3 -0
  211. package/src/schemas/{utils.ts → utils/pathSchema.ts} +2 -11
  212. package/src/stores/cart.ts +23 -0
  213. package/src/types/global-props.ts +16 -0
  214. package/src/types/virtual-modules.d.ts +5 -0
  215. package/src/utils/_archive/Childmorphic.ts +1 -1
  216. package/src/utils/_archive/mergeEntries.ts +28 -0
  217. package/src/utils/cart.ts +32 -0
  218. package/src/utils/getDeepReferenceChildren.ts +14 -0
  219. package/src/utils/getFolderChildren.ts +18 -0
  220. package/src/utils/getReferenceChildren.ts +14 -0
  221. package/src/utils/getSiblingPages.ts +14 -0
  222. package/tsconfig.json +2 -5
  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/GalleryVertical.astro +0 -161
  266. package/src/components/experimental/Price.astro +0 -40
  267. package/src/content/pages/_changelog.mdx +0 -10
  268. package/src/content/pages/_segment/footer.mdx +0 -244
  269. package/src/content/pages/_segment/header.mdx +0 -210
  270. package/src/content/pages/base/_image.mdx +0 -14
  271. package/src/content/pages/base/toggle.mdx +0 -32
  272. package/src/content/pages/blocks.mdx +0 -10
  273. package/src/content/pages/overview/integration.mdx +0 -37
  274. package/src/content/pages/structure/_row.mdx +0 -23
  275. package/src/content/pages/structure/_wrap.mdx +0 -25
  276. package/src/content/pages/structure/carousel.mdx +0 -31
  277. package/src/content/pages/structure/column.mdx +0 -21
  278. package/src/content/pages/structure/grid.mdx +0 -26
  279. package/src/content/pages/structure/masonry.mdx +0 -32
  280. package/src/content/pages/structure/split.mdx +0 -21
  281. package/src/content/pages/structure/spread.mdx +0 -21
  282. package/src/content/pages/structure/stack.mdx +0 -22
  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/layouts/PageLayout.astro +0 -32
  288. package/src/schemas/base.ts +0 -90
  289. package/src/schemas/block.ts +0 -15
  290. package/src/schemas/card.ts +0 -3
  291. package/src/schemas/page.ts +0 -43
  292. package/src/utils/mergeEntries.ts +0 -28
  293. /package/{public/showcase → src/images}/anti-slip-profiles.webp +0 -0
  294. /package/{public/images/avatars/500/1.jpeg → src/images/avatar-1.jpeg} +0 -0
  295. /package/{public/images/avatars/500/2.jpeg → src/images/avatar-2.jpeg} +0 -0
  296. /package/{public/images/avatars/500/3.jpeg → src/images/avatar-3.jpeg} +0 -0
  297. /package/{public/images/avatars/500/4.jpeg → src/images/avatar-4.jpeg} +0 -0
  298. /package/{public → src}/images/avatar-placeholder.jpg +0 -0
  299. /package/{public → src}/images/block-code.png +0 -0
  300. /package/{public → src}/images/component-code.png +0 -0
  301. /package/{public/showcase → src/images}/fulldev-ui.webp +0 -0
  302. /package/{public/showcase → src/images}/lavis-detailing.webp +0 -0
  303. /package/{public/showcase → src/images}/leren-trainingsacteren.webp +0 -0
  304. /package/{public/showcase → src/images}/miele-witgoedcenter-amsterdam.webp +0 -0
  305. /package/{public → src}/images/og-image.png +0 -0
  306. /package/{public → src}/images/placeholder-center.webp +0 -0
  307. /package/{public → src}/images/placeholder-landscape-dark.png +0 -0
  308. /package/{public → src}/images/placeholder-landscape.webp +0 -0
  309. /package/{public → src}/images/placeholder-portrait.webp +0 -0
  310. /package/{public → src}/images/placeholder-right.webp +0 -0
  311. /package/{public → src}/images/placeholder.webp +0 -0
  312. /package/{public/showcase → src/images}/sloepverhuur-bolsward.webp +0 -0
  313. /package/{public/showcase → src/images}/stark-vulcanising-products.webp +0 -0
  314. /package/{public/showcase → src/images}/the-gym-haren.webp +0 -0
  315. /package/{public/showcase → src/images}/van-dillen-antieke-bouwmaterialen.webp +0 -0
@@ -1,180 +1,104 @@
1
1
  ---
2
- import Icon from 'fulldev-ui/components/Icon.astro'
2
+ import Element from 'fulldev-ui/components/Element.astro'
3
3
  import Image from 'fulldev-ui/components/Image.astro'
4
4
 
5
- const { images, direction } = Astro.props
5
+ const { images } = Astro.props
6
6
  ---
7
7
 
8
8
  <script>
9
- const carousel = document.querySelector('.gallery .large-carousel')
10
- const icon = document.querySelector('.gallery .icon')
11
- const smallImages = document.querySelectorAll('.gallery .small-image')
12
-
13
- carousel &&
14
- icon?.addEventListener('click', () => {
15
- const carouselWidth = (carousel as HTMLElement).offsetWidth
16
- const currentScroll = carousel.scrollLeft
17
- const maxScroll = carousel.scrollWidth - carouselWidth
18
-
19
- let scrollAmount = currentScroll + carouselWidth
20
- if (scrollAmount > maxScroll) {
21
- scrollAmount = 0 // Reset to beginning if we're at the end
22
- }
23
-
24
- carousel.scrollTo({
25
- left: scrollAmount,
26
- behavior: 'smooth',
27
- })
28
- })
29
-
30
- carousel &&
31
- smallImages?.forEach((image, i) => {
32
- image.addEventListener('click', () => {
33
- const imageWidth = (carousel as HTMLElement).offsetWidth
34
- carousel.scrollTo({
35
- left: i * imageWidth,
36
- behavior: 'smooth',
9
+ const setupGallery = (document: Document) => {
10
+ const galleries = document.querySelectorAll('.gallery')
11
+
12
+ galleries.forEach((gallery) => {
13
+ const carousel = gallery.querySelector('.large-carousel')
14
+ const smallImages = gallery.querySelectorAll('.small-image')
15
+
16
+ carousel &&
17
+ smallImages?.forEach((image, i) => {
18
+ image.addEventListener('click', () => {
19
+ const largeImages = carousel.querySelectorAll('.large-image')
20
+ if (largeImages[i]) {
21
+ largeImages[i].scrollIntoView({
22
+ behavior: 'smooth',
23
+ block: 'nearest',
24
+ inline: 'start',
25
+ })
26
+ }
27
+ })
37
28
  })
38
- })
39
29
  })
30
+ }
31
+
32
+ setupGallery(document)
33
+
34
+ document.addEventListener('astro:before-swap', (event) => {
35
+ setupGallery(event.newDocument)
36
+ })
40
37
  </script>
41
38
 
42
- <div
43
- class:list={[
44
- 'full',
45
- 'gallery',
46
- {
47
- [`direction-${direction}`]: direction,
48
- },
49
- ]}
50
- >
51
- <div class="large-container">
52
- <div class="large-carousel">
53
- {
54
- images?.map((image: any) => (
55
- <Image
56
- class="large-image"
57
- src={image}
58
- />
59
- ))
60
- }
61
- </div>
39
+ <Element class:list={['gallery']}>
40
+ <Element class="large-carousel">
62
41
  {
63
- images?.length > 1 && (
64
- <Icon
65
- class="icon"
66
- name="swipe-left"
42
+ images?.map((image: any) => (
43
+ <Image
44
+ class="large-image"
45
+ {...(typeof image === 'string' ? { src: image } : image)}
67
46
  />
68
- )
47
+ ))
69
48
  }
70
- </div>
71
- <div class="small-carousel">
49
+ </Element>
50
+ <Element class="small-carousel">
72
51
  {
73
52
  images?.length > 1 &&
74
53
  images.map((image: any) => (
75
54
  <Image
76
55
  class="small-image"
77
- src={image}
56
+ {...(typeof image === 'string' ? { src: image } : image)}
78
57
  />
79
58
  ))
80
59
  }
81
- </div>
82
- </div>
60
+ </Element>
61
+ </Element>
83
62
 
84
63
  <style is:global lang="scss">
85
64
  .gallery {
86
65
  display: flex;
87
66
  position: relative;
88
- column-gap: var(--space-4);
89
- row-gap: var(--space-1);
90
67
  flex-direction: column;
91
-
92
- @media (min-width: 1024px) {
93
- flex-direction: row-reverse;
94
- }
95
-
96
- .large-container {
97
- display: flex;
98
- justify-content: space-between;
99
- align-items: center;
100
-
101
- &:hover .icon {
102
- opacity: 1;
103
- }
104
-
105
- .icon {
106
- position: absolute;
107
- right: var(--space-3);
108
- opacity: 0.5;
109
- animation: swipe-icon 1.6s ease-in-out infinite;
110
- transition: opacity 0.2s ease-in-out;
111
- font-size: calc(var(--text-2) * 1.7);
112
-
113
- @media (min-width: 1024px) {
114
- display: none;
115
- }
116
- }
117
-
118
- @keyframes swipe-icon {
119
- 0%,
120
- 100% {
121
- right: var(--space-3);
122
- }
123
- 50% {
124
- right: calc(var(--space-3) * 2);
125
- }
126
- }
127
- }
68
+ gap: var(--space-1) var(--space-4);
128
69
 
129
70
  .small-carousel,
130
71
  .large-carousel {
131
- --column-width: 100%;
132
72
  display: flex;
133
73
  position: relative;
134
- align-items: flex-start;
74
+ align-items: center;
135
75
  gap: var(--space-4);
136
-
137
76
  box-sizing: border-box;
138
77
  padding-bottom: var(--space-4);
139
78
  width: 100%;
140
- overflow-x: auto;
79
+ overflow: auto;
141
80
  scroll-behavior: smooth;
142
81
  scroll-snap-type: x mandatory;
143
82
 
144
- > .root {
83
+ > .image {
145
84
  flex-grow: 0;
146
85
  flex-shrink: 0;
147
86
  width: var(--column-width);
148
87
  scroll-snap-align: center;
149
88
  }
89
+ }
150
90
 
151
- &.position-inset {
152
- margin-right: calc(var(--inner-x) * -1);
153
- margin-left: calc(var(--inner-x) * -1);
154
- padding-right: var(--inner-x);
155
- padding-left: var(--inner-x);
156
- width: calc(100% + var(--inner-x) * 2);
157
- }
91
+ .large-carousel {
92
+ --column-width: 100%;
158
93
  }
159
94
 
160
95
  .small-carousel {
161
96
  --column-width: var(--space-7);
162
97
 
163
- @media (min-width: 1024px) {
164
- --column-width: 100%;
165
-
166
- flex-direction: column;
167
- width: 40%;
98
+ .image:hover {
99
+ opacity: 0.8;
100
+ cursor: pointer;
168
101
  }
169
102
  }
170
-
171
- .small-image,
172
- .large-image {
173
- }
174
-
175
- .small-image:hover {
176
- opacity: 0.8;
177
- cursor: pointer;
178
- }
179
103
  }
180
104
  </style>
@@ -1,21 +1,38 @@
1
1
  ---
2
2
  import type { ComponentProps } from 'astro/types'
3
+ import Element from 'fulldev-ui/components/Element.astro'
3
4
  import Image from 'fulldev-ui/components/Image.astro'
4
5
 
5
- type Props = Omit<ComponentProps<typeof Image>, 'position' | 'frame'> & {}
6
+ interface Props extends ComponentProps<typeof Image> {
7
+ company?: string | undefined
8
+ }
6
9
 
7
- const { ...rest } = Astro.props
10
+ const { company, ...rest } = Astro.props as Props
8
11
  ---
9
12
 
10
- <Image
13
+ <Element
14
+ as="a"
15
+ href="/"
11
16
  class:list="logo"
12
- {...rest}
13
- />
17
+ >
18
+ {company ? <Fragment set:html={company} /> : <Image {...rest} />}
19
+ </Element>
14
20
 
15
21
  <style is:global lang="scss">
16
- .logo {
17
- max-width: calc(15 * var(--space-2));
18
- height: 100%;
19
- object-fit: contain;
22
+ @layer fulldev {
23
+ .logo {
24
+ display: flex;
25
+ align-items: center;
26
+ color: var(--color-12);
27
+ font-weight: 700;
28
+ font-size: var(--text-6);
29
+ line-height: 1.1;
30
+
31
+ .image {
32
+ max-width: calc(15 * var(--space-2));
33
+ height: 100%;
34
+ object-fit: contain;
35
+ }
36
+ }
20
37
  }
21
38
  </style>
@@ -1,19 +1,19 @@
1
1
  ---
2
2
  import type { HTMLTag, Polymorphic } from 'astro/types'
3
- import Root from 'fulldev-ui/components/Root.astro'
3
+ import Element from 'fulldev-ui/components/Element.astro'
4
4
 
5
5
  type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }>
6
6
 
7
7
  const { as = 'div', ...rest } = Astro.props
8
8
  ---
9
9
 
10
- <Root
10
+ <Element
11
11
  class:list="prose"
12
12
  {as}
13
13
  {...rest}
14
14
  >
15
15
  <slot />
16
- </Root>
16
+ </Element>
17
17
 
18
18
  <style is:global lang="scss">
19
19
  @layer fulldev {
@@ -21,10 +21,8 @@ const { as = 'div', ...rest } = Astro.props
21
21
  width: 100%;
22
22
  scroll-margin-top: var(--space-6);
23
23
  color: var(--color-11);
24
- font-weight: var(--font-weight);
25
24
  font-size: var(--text-3);
26
25
  line-height: 1.7;
27
- font-family: var(--font-family);
28
26
 
29
27
  > {
30
28
  .astro-code,
@@ -152,5 +150,43 @@ const { as = 'div', ...rest } = Astro.props
152
150
  text-decoration: underline;
153
151
  }
154
152
  }
153
+
154
+ ul,
155
+ ol {
156
+ display: flex;
157
+ flex-direction: column;
158
+ margin: var(--space-4) 0;
159
+ padding-left: var(--space-5);
160
+ color: var(--color-11);
161
+ font-size: var(--text-2);
162
+ line-height: 1.625;
163
+ }
164
+
165
+ ul {
166
+ list-style-type: disc;
167
+ }
168
+
169
+ ol {
170
+ list-style-type: decimal;
171
+ }
172
+
173
+ li {
174
+ align-items: center;
175
+ margin-bottom: var(--space-2);
176
+ max-width: calc(var(--space-4) * 44);
177
+ color: var(--color-11);
178
+ font-size: var(--text-2);
179
+ line-height: 1.625;
180
+ }
181
+
182
+ li:last-child {
183
+ margin-bottom: 0;
184
+ }
185
+
186
+ p code {
187
+ background-color: var(--base-12);
188
+ padding: 0 var(--space-1);
189
+ color: var(--base-1);
190
+ }
155
191
  }
156
192
  </style>
@@ -2,7 +2,7 @@
2
2
  //
3
3
  type Props = any & {
4
4
  src: string
5
- thumbnail?: string
5
+ thumbnail?: string | undefined
6
6
  }
7
7
 
8
8
  const { src, thumbnail } = Astro.props
@@ -28,7 +28,6 @@ const isComponent =
28
28
  <div class="block window">
29
29
  <div class="button-header">
30
30
  <Button
31
- as="label"
32
31
  for={id}
33
32
  variant="secondary"
34
33
  >
@@ -64,7 +63,7 @@ const isComponent =
64
63
 
65
64
  .astro-code {
66
65
  margin: 0;
67
- background-color: var(--base-2) !important;
66
+ background-color: #191919 !important;
68
67
  padding: var(--space-5);
69
68
  }
70
69
  }
@@ -88,8 +87,8 @@ const isComponent =
88
87
  border-radius: 0px;
89
88
 
90
89
  .astro-code {
91
- border: none;
92
- border-radius: 0px;
90
+ border: none !important;
91
+ border-radius: 0px !important;
93
92
  }
94
93
  }
95
94
  }
@@ -0,0 +1,28 @@
1
+ ---
2
+ import type { ComponentProps, HTMLAttributes } from 'astro/types'
3
+ import Element from 'fulldev-ui/components/Element.astro'
4
+ import type { GlobalProps } from 'fulldev-ui/types/global-props'
5
+ import Section from './Section.astro'
6
+
7
+ interface Props extends GlobalProps, HTMLAttributes<'div'> {
8
+ sections?: ComponentProps<typeof Section>[] | undefined
9
+ }
10
+
11
+ const { sections, ...rest } = Astro.props
12
+ ---
13
+
14
+ <Element
15
+ class:list="sections"
16
+ {...rest}
17
+ >
18
+ {sections?.map((section) => <Section {...section} />)}
19
+ </Element>
20
+
21
+ <style is:global lang="scss">
22
+ @layer fulldev {
23
+ .sections {
24
+ display: flex;
25
+ flex-direction: column;
26
+ }
27
+ }
28
+ </style>
@@ -1,17 +1,20 @@
1
1
  import { defineCollection } from 'astro:content'
2
- import { page } from 'fulldev-ui/schemas/page'
2
+ import imageLoader from 'fulldev-ui/loaders/imageLoader.ts'
3
+ import imageSchema from 'fulldev-ui/schemas/imageSchema.ts'
4
+ import pageSchema from 'fulldev-ui/schemas/pageSchema.ts'
5
+ import presetSchema from 'fulldev-ui/schemas/presetSchema.ts'
3
6
 
4
7
  export const collections = {
5
8
  pages: defineCollection({
6
9
  type: 'content',
7
- schema: page,
10
+ schema: pageSchema,
8
11
  }),
9
- records: defineCollection({
12
+ presets: defineCollection({
10
13
  type: 'data',
11
- schema: page,
14
+ schema: presetSchema,
12
15
  }),
13
- settings: defineCollection({
14
- type: 'data',
15
- schema: page,
16
+ images: defineCollection({
17
+ loader: imageLoader,
18
+ schema: imageSchema,
16
19
  }),
17
20
  }
@@ -1,6 +1,5 @@
1
1
  ---
2
- _layout: ComponentLayout
3
- settings: components
2
+ presets: [docs]
4
3
 
5
4
  title: Dialog
6
5
  ---
@@ -1,6 +1,5 @@
1
1
  ---
2
- _layout: ComponentLayout
3
- settings: components
2
+ presets: [docs]
4
3
 
5
4
  title: Drawer
6
5
  ---
@@ -0,0 +1,17 @@
1
+ ---
2
+ presets: [docs]
3
+
4
+ title: LocaleSwitcher
5
+ ---
6
+
7
+ # Theme Switcher
8
+
9
+ ```astro live
10
+ ---
11
+ import LocaleSwitcher from 'fulldev-ui/components/LocaleSwitcher.astro'
12
+ ---
13
+
14
+ <LocaleSwitcher />
15
+ ```
16
+
17
+ ## Props
@@ -1,6 +1,5 @@
1
1
  ---
2
- _layout: ComponentLayout
3
- settings: components
2
+ presets: [docs]
4
3
 
5
4
  title: Switch
6
5
  ---
@@ -1,6 +1,5 @@
1
1
  ---
2
- _layout: ComponentLayout
3
- settings: components
2
+ presets: [docs]
4
3
 
5
4
  title: Badge
6
5
  ---
@@ -56,15 +55,5 @@ import Badge from 'fulldev-ui/components/Badge.astro'
56
55
  import Badge from 'fulldev-ui/components/Badge.astro'
57
56
  ---
58
57
 
59
- <Badge radius="none">Badge</Badge>
60
- <Badge radius="auto">Badge</Badge>
61
- <Badge radius="full">Badge</Badge>
62
- ```
63
-
64
- ```astro live
65
- ---
66
- import Badge from 'fulldev-ui/components/Badge.astro'
67
- ---
68
-
69
58
  <Badge icon="circle" text="Badge" />
70
59
  ```
@@ -1,6 +1,5 @@
1
1
  ---
2
- _layout: ComponentLayout
3
- settings: components
2
+ presets: [docs]
4
3
 
5
4
  title: Button
6
5
  ---
@@ -59,13 +58,3 @@ import Button from 'fulldev-ui/components/Button.astro'
59
58
  <Button color="base" text="Button" />
60
59
  <Button color="brand" text="Button" />
61
60
  ```
62
-
63
- ```astro live
64
- ---
65
- import Button from 'fulldev-ui/components/Button.astro'
66
- ---
67
-
68
- <Button radius="none" text="Button" />
69
- <Button radius="auto" text="Button" />
70
- <Button radius="full" text="Button" />
71
- ```
@@ -1,6 +1,5 @@
1
1
  ---
2
- _layout: ComponentLayout
3
- settings: components
2
+ presets: [docs]
4
3
 
5
4
  title: Card
6
5
  ---
@@ -32,14 +31,13 @@ import Card from 'fulldev-ui/components/Card.astro'
32
31
  ---
33
32
 
34
33
  <Card
35
- frame="panel"
36
34
  size="sm"
37
35
  heading="Lorem ipsum dolor"
38
36
  text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
39
37
  />
40
38
 
41
39
  <Card
42
- frame="fill"
40
+ panel={false}
43
41
  size="sm"
44
42
  heading="Lorem ipsum dolor"
45
43
  text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
@@ -52,21 +50,18 @@ import Card from 'fulldev-ui/components/Card.astro'
52
50
  ---
53
51
 
54
52
  <Card
55
- frame="panel"
56
53
  size="sm"
57
54
  heading="Lorem ipsum dolor"
58
55
  text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
59
56
  />
60
57
 
61
58
  <Card
62
- frame="panel"
63
59
  size="md"
64
60
  heading="Lorem ipsum dolor"
65
61
  text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
66
62
  />
67
63
 
68
64
  <Card
69
- frame="panel"
70
65
  size="lg"
71
66
  heading="Lorem ipsum dolor"
72
67
  text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
@@ -79,36 +74,14 @@ import Card from 'fulldev-ui/components/Card.astro'
79
74
  ---
80
75
 
81
76
  <Card
82
- frame="panel"
83
77
  color="base"
84
78
  heading="Lorem ipsum dolor"
85
79
  text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
86
80
  />
87
81
 
88
82
  <Card
89
- frame="panel"
90
83
  color="brand"
91
84
  heading="Lorem ipsum dolor"
92
85
  text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
93
86
  />
94
87
  ```
95
-
96
- ```astro live
97
- ---
98
- import Card from 'fulldev-ui/components/Card.astro'
99
- ---
100
-
101
- <Card
102
- frame="panel"
103
- radius="none"
104
- heading="Lorem ipsum dolor"
105
- text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
106
- />
107
-
108
- <Card
109
- frame="panel"
110
- radius="auto"
111
- heading="Lorem ipsum dolor"
112
- text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
113
- />
114
- ```
@@ -1,6 +1,5 @@
1
1
  ---
2
- _layout: ComponentLayout
3
- settings: components
2
+ presets: [docs]
4
3
 
5
4
  title: Checkbox
6
5
  ---
@@ -1,6 +1,5 @@
1
1
  ---
2
- _layout: ComponentLayout
3
- settings: components
2
+ presets: [docs]
4
3
 
5
4
  title: Icon
6
5
  ---
@@ -0,0 +1,42 @@
1
+ ---
2
+ presets: [docs]
3
+
4
+ title: Image
5
+ ---
6
+
7
+ # Image
8
+
9
+ import Link from 'fulldev-ui/components/Link.astro'
10
+
11
+ To use content collections for alt texts, see <Link href="/overview/content-layer/#image-alt-collections">generateImageEntries</Link>.
12
+
13
+ import PropsTable from 'fulldev-ui/components/docs/PropsTable.astro'
14
+
15
+ ```astro live
16
+ ---
17
+ import Image from 'fulldev-ui/components/Image.astro'
18
+ ---
19
+
20
+ <Image src="placeholder-landscape.webp" />
21
+ ```
22
+
23
+ ## Props
24
+
25
+ <PropsTable />
26
+
27
+ ## Examples
28
+
29
+ ```astro live
30
+ ---
31
+ import Image from 'fulldev-ui/components/Image.astro'
32
+ ---
33
+
34
+ {/* image in public/images/ */}
35
+ <Image src="/images/placeholder-landscape.webp" />
36
+
37
+ {/* optimized image in public/images/ using astro:assets */}
38
+ <Image src="/images/placeholder-landscape.webp" width={600} height={400} />
39
+
40
+ {/* automatically optimized image in src/images/ using astro:assets */}
41
+ <Image src="placeholder-landscape.webp" />
42
+ ```