fulldev-ui 0.5.0-beta.9 → 0.6.0-beta-5

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 (342) hide show
  1. package/.env.example +3 -0
  2. package/.prettierrc.yaml +1 -0
  3. package/astro.config.ts +10 -34
  4. package/cloudcannon.config.yml +235 -0
  5. package/package.json +25 -29
  6. package/pnpm-lock.yaml +943 -2157
  7. package/public/favicon/android-chrome-192x192.png +0 -0
  8. package/public/favicon/android-chrome-512x512.png +0 -0
  9. package/public/favicon/apple-touch-icon.png +0 -0
  10. package/public/favicon/manifest.webmanifest +7 -3
  11. package/public/favicon/mstile-150x150.png +0 -0
  12. package/src/blocks/Banner.astro +14 -29
  13. package/src/blocks/Contact1.astro +92 -0
  14. package/src/blocks/Content1.astro +77 -0
  15. package/src/blocks/Content2.astro +91 -0
  16. package/src/blocks/Content3.astro +70 -0
  17. package/src/blocks/Content4.astro +72 -0
  18. package/src/blocks/Cta1.astro +58 -0
  19. package/src/blocks/Feature1.astro +61 -0
  20. package/src/blocks/Features1.astro +66 -0
  21. package/src/blocks/Footer.astro +100 -3
  22. package/src/blocks/Header.astro +192 -3
  23. package/src/blocks/Hero1.astro +60 -0
  24. package/src/blocks/Logos1.astro +55 -0
  25. package/src/blocks/Products1.astro +90 -0
  26. package/src/blocks/Reviews1.astro +75 -0
  27. package/src/blocks/_Hero.astro +245 -0
  28. package/src/components/Avatar.astro +28 -9
  29. package/src/components/Avatars.astro +36 -0
  30. package/src/components/Badge.astro +63 -24
  31. package/src/components/Badges.astro +16 -23
  32. package/src/components/Block.astro +30 -0
  33. package/src/components/Blocks.astro +26 -0
  34. package/src/components/Breadcrumb.astro +58 -0
  35. package/src/components/Button.astro +49 -119
  36. package/src/components/Buttons.astro +23 -13
  37. package/src/components/Card.astro +9 -137
  38. package/src/components/Cards.astro +33 -35
  39. package/src/components/Carousel.astro +106 -0
  40. package/src/components/Cart.astro +18 -14
  41. package/src/components/CartAdd.svelte +76 -0
  42. package/src/components/CartCheckout.svelte +58 -0
  43. package/src/components/CartForm.svelte +130 -0
  44. package/src/components/CartList.svelte +88 -0
  45. package/src/components/CartQuantity.svelte +81 -0
  46. package/src/components/CartSummary.astro +16 -105
  47. package/src/components/CartTotal.svelte +15 -0
  48. package/src/components/Channel.astro +44 -35
  49. package/src/components/Channels.astro +20 -6
  50. package/src/components/Checkbox.astro +52 -27
  51. package/src/components/Code.astro +52 -0
  52. package/src/components/Container.astro +25 -0
  53. package/src/components/Dialog.astro +3 -2
  54. package/src/components/Drawer.astro +55 -146
  55. package/src/components/DrawerOld.astro +143 -0
  56. package/src/components/Element.astro +18 -8
  57. package/src/components/Form.astro +16 -13
  58. package/src/components/Gallery.astro +174 -0
  59. package/src/components/Group.astro +25 -0
  60. package/src/components/Head.astro +62 -25
  61. package/src/components/Header.astro +10 -115
  62. package/src/components/Heading.astro +51 -44
  63. package/src/components/Icon.astro +29 -33
  64. package/src/components/Image.astro +18 -68
  65. package/src/components/Input.astro +65 -51
  66. package/src/components/Label.astro +20 -15
  67. package/src/components/Layout.astro +35 -0
  68. package/src/components/Link.astro +51 -32
  69. package/src/components/Links.astro +42 -0
  70. package/src/components/List.astro +41 -16
  71. package/src/components/LocaleSwitcher.astro +2 -2
  72. package/src/components/Logo.astro +56 -0
  73. package/src/components/Menu.astro +21 -17
  74. package/src/components/Navigation.astro +39 -0
  75. package/src/components/Panel.astro +25 -0
  76. package/src/components/Paragraph.astro +55 -0
  77. package/src/components/Price.astro +4 -4
  78. package/src/components/Prose.astro +86 -0
  79. package/src/components/Rating.astro +23 -62
  80. package/src/components/Search.astro +107 -43
  81. package/src/components/Section.astro +13 -242
  82. package/src/components/Select.astro +45 -55
  83. package/src/components/Sidebar.astro +53 -76
  84. package/src/components/Social.astro +11 -9
  85. package/src/components/Socials.astro +9 -5
  86. package/src/components/Stack.astro +25 -0
  87. package/src/components/Subheader.astro +59 -0
  88. package/src/components/Switch.astro +72 -29
  89. package/src/components/Table.astro +1 -1
  90. package/src/components/Tagline.astro +31 -13
  91. package/src/components/Textarea.astro +40 -50
  92. package/src/components/Themer.astro +76 -0
  93. package/src/components/Toc.astro +30 -37
  94. package/src/components/Writeup.astro +34 -65
  95. package/src/components/_Author.astro +90 -0
  96. package/src/components/_Header.astro +129 -0
  97. package/src/components/_Image.astro +79 -0
  98. package/src/components/_Prose copy.astro +172 -0
  99. package/src/components/_Sidebar copy.astro +87 -0
  100. package/src/components/docs/PropsTable.astro +38 -264
  101. package/src/components/experimental/Window.astro +5 -57
  102. package/src/content/config.ts +3 -10
  103. package/src/content/{presets → layouts}/base.yml +52 -73
  104. package/src/content/pages/blocks/_categories.mdx +0 -2
  105. package/src/content/pages/blocks/_footer.mdx +0 -2
  106. package/src/content/pages/blocks/_header.mdx +0 -4
  107. package/src/content/pages/blocks/_jobs.mdx +0 -2
  108. package/src/content/pages/blocks/_prices.mdx +0 -2
  109. package/src/content/pages/blocks/_product.mdx +0 -2
  110. package/src/content/pages/blocks/_products.mdx +0 -2
  111. package/src/content/pages/blocks/_stats.mdx +0 -2
  112. package/src/content/pages/blocks/banner.mdx +0 -2
  113. package/src/content/pages/blocks/colleagues.mdx +0 -3
  114. package/src/content/pages/blocks/contact.mdx +0 -2
  115. package/src/content/pages/blocks/content.mdx +0 -6
  116. package/src/content/pages/blocks/cta.mdx +0 -10
  117. package/src/content/pages/blocks/features.mdx +0 -5
  118. package/src/content/pages/blocks/hero.mdx +0 -5
  119. package/src/content/pages/blocks/intro.mdx +0 -5
  120. package/src/content/pages/blocks/posts.mdx +0 -2
  121. package/src/content/pages/blocks/reviews.mdx +0 -3
  122. package/src/content/pages/categories/category.md +7 -0
  123. package/src/content/pages/docs/_internationalization.mdx +55 -0
  124. package/src/content/pages/docs/_using-blocks.mdx +33 -0
  125. package/src/content/pages/docs/_using-presets.mdx +49 -0
  126. package/src/content/pages/docs/blocks.mdx +33 -0
  127. package/src/content/pages/docs/collections/images.mdx +102 -0
  128. package/src/content/pages/docs/collections/pages.mdx +119 -0
  129. package/src/content/pages/docs/collections/presets.mdx +60 -0
  130. package/src/content/pages/docs/collections.mdx +42 -0
  131. package/src/content/pages/{base/card.mdx → docs/components/_card.mdx} +2 -5
  132. package/src/content/pages/{base → docs/components}/_dialog.mdx +1 -2
  133. package/src/content/pages/{base → docs/components}/_drawer.mdx +1 -2
  134. package/src/content/pages/{base → docs/components}/_localeswitcher.mdx +1 -2
  135. package/src/content/pages/{base → docs/components}/_switch.mdx +3 -4
  136. package/src/content/pages/{typography → docs/components}/_tagline.mdx +3 -4
  137. package/src/content/pages/docs/components/_toggle.mdx +30 -0
  138. package/src/content/pages/docs/components/avatar.mdx +34 -0
  139. package/src/content/pages/{base → docs/components}/badge.mdx +28 -10
  140. package/src/content/pages/docs/components/badges.mdx +46 -0
  141. package/src/content/pages/docs/components/button.mdx +78 -0
  142. package/src/content/pages/docs/components/buttons.mdx +51 -0
  143. package/src/content/pages/docs/components/channel.mdx +91 -0
  144. package/src/content/pages/docs/components/channels.mdx +89 -0
  145. package/src/content/pages/docs/components/checkbox.mdx +34 -0
  146. package/src/content/pages/docs/components/code.mdx +45 -0
  147. package/src/content/pages/docs/components/heading.mdx +59 -0
  148. package/src/content/pages/docs/components/icon.mdx +48 -0
  149. package/src/content/pages/docs/components/image.mdx +25 -0
  150. package/src/content/pages/docs/components/input.mdx +40 -0
  151. package/src/content/pages/{typography → docs/components}/label.mdx +9 -6
  152. package/src/content/pages/{typography → docs/components}/link.mdx +24 -10
  153. package/src/content/pages/docs/components/links.mdx +99 -0
  154. package/src/content/pages/docs/components/list.mdx +44 -0
  155. package/src/content/pages/docs/components/logo.mdx +36 -0
  156. package/src/content/pages/docs/components/menu.mdx +89 -0
  157. package/src/content/pages/docs/components/prose.mdx +36 -0
  158. package/src/content/pages/docs/components/rating.mdx +76 -0
  159. package/src/content/pages/{base → docs/components}/section.mdx +2 -3
  160. package/src/content/pages/{base → docs/components}/select.mdx +1 -11
  161. package/src/content/pages/docs/components/social.mdx +94 -0
  162. package/src/content/pages/docs/components/socials.mdx +102 -0
  163. package/src/content/pages/docs/components/switch.mdx +34 -0
  164. package/src/content/pages/{base → docs/components}/table.mdx +1 -4
  165. package/src/content/pages/docs/components/tagline.mdx +46 -0
  166. package/src/content/pages/docs/components/text.mdx +48 -0
  167. package/src/content/pages/docs/components/textarea.mdx +34 -0
  168. package/src/content/pages/docs/components/themer.mdx +49 -0
  169. package/src/content/pages/docs/components.mdx +37 -0
  170. package/src/content/pages/docs/customization.mdx +151 -0
  171. package/src/content/pages/docs/frameworks.mdx +29 -0
  172. package/src/content/pages/docs/generating-pages.mdx +129 -0
  173. package/src/content/pages/docs/index.mdx +20 -0
  174. package/src/content/pages/docs/installation.mdx +50 -0
  175. package/src/content/pages/docs/layouts.mdx +33 -0
  176. package/src/content/pages/index.mdx +25 -33
  177. package/src/content/pages/posts/post.md +7 -0
  178. package/src/content/pages/products/product.md +20 -0
  179. package/src/content/pages/showcase/anti-slip-profiles.md +2 -2
  180. package/src/content/pages/showcase/fulldev-ui.md +1 -1
  181. package/src/content/pages/showcase/lavis-detailing.md +1 -1
  182. package/src/content/pages/showcase/leren-trainingsacteren.md +1 -1
  183. package/src/content/pages/showcase/miele-witgoedcenter-amsterdam.md +1 -1
  184. package/src/content/pages/showcase/sloepverhuur-bolsward.md +1 -1
  185. package/src/content/pages/showcase/stark-vulcanising-products.md +1 -1
  186. package/src/content/pages/showcase/the-gym-haren.md +1 -1
  187. package/src/content/pages/showcase/van-dillen-antieke-bouwmaterialen.md +1 -1
  188. package/src/content/pages/showcase.mdx +4 -3
  189. package/src/css/color.css +0 -10
  190. package/src/css/custom.css +10 -12
  191. package/src/css/size.css +2 -11
  192. package/src/css/theme.css +95 -0
  193. package/src/env.d.ts +1 -0
  194. package/src/images/favicon/android-chrome-192x192.png +0 -0
  195. package/src/images/favicon/android-chrome-512x512.png +0 -0
  196. package/src/images/favicon/apple-touch-icon.png +0 -0
  197. package/src/images/favicon/browserconfig.xml +9 -0
  198. package/src/images/favicon/favicon-16x16.png +0 -0
  199. package/src/images/favicon/favicon-32x32.png +0 -0
  200. package/src/images/favicon/favicon-48x48.png +0 -0
  201. package/src/images/favicon/favicon.ico +0 -0
  202. package/src/images/favicon/favicon.svg +16 -0
  203. package/src/images/favicon/manifest.webmanifest +30 -0
  204. package/src/images/favicon/mstile-150x150.png +0 -0
  205. package/src/images/favicon/safari-pinned-tab.svg +16 -0
  206. package/src/images/favicon/yandex-browser-50x50.png +0 -0
  207. package/src/images/favicon/yandex-browser-manifest.json +9 -0
  208. package/src/images/logo-1.svg +11 -0
  209. package/src/images/logo-2.svg +13 -0
  210. package/src/images/logo-basic.svg +10 -0
  211. package/src/images/logo-simple.svg +13 -0
  212. package/src/images/logo-thin.svg +15 -0
  213. package/src/images/logo.svg +14 -0
  214. package/src/images/logofat.svg +11 -0
  215. package/src/integration/index.ts +110 -140
  216. package/src/layouts/Category.astro +136 -0
  217. package/src/layouts/Doc.astro +56 -0
  218. package/src/layouts/Job.astro +60 -0
  219. package/src/layouts/Page.astro +29 -0
  220. package/src/layouts/Post.astro +52 -0
  221. package/src/layouts/Product.astro +114 -0
  222. package/src/pages/[...page].astro +29 -24
  223. package/src/pages/test.astro +37 -0
  224. package/src/schemas/components/avatar.ts +4 -1
  225. package/src/schemas/components/badge.ts +16 -11
  226. package/src/schemas/components/block.ts +60 -0
  227. package/src/schemas/components/button.ts +17 -14
  228. package/src/schemas/components/channel.ts +15 -9
  229. package/src/schemas/components/footer.ts +15 -21
  230. package/src/schemas/components/head.ts +17 -0
  231. package/src/schemas/components/header.ts +19 -7
  232. package/src/schemas/components/heading.ts +7 -1
  233. package/src/schemas/components/icon.ts +7 -1
  234. package/src/schemas/components/image.ts +38 -16
  235. package/src/schemas/components/link.ts +17 -0
  236. package/src/schemas/components/logo.ts +12 -2
  237. package/src/schemas/components/menu.ts +11 -11
  238. package/src/schemas/components/navigation.ts +10 -0
  239. package/src/schemas/components/paragraph.ts +9 -0
  240. package/src/schemas/components/price.ts +7 -1
  241. package/src/schemas/components/rating.ts +8 -13
  242. package/src/schemas/components/sidebar.ts +14 -11
  243. package/src/schemas/components/social.ts +16 -1
  244. package/src/schemas/components/tagline.ts +7 -1
  245. package/src/schemas/imageSchema.ts +33 -4
  246. package/src/schemas/page.ts +39 -0
  247. package/src/stores/cart.svelte.ts +79 -0
  248. package/src/stores/cart.ts +59 -6
  249. package/src/types/global-props.ts +0 -9
  250. package/src/types/{virtual-modules.d.ts → virtual.d.ts} +1 -1
  251. package/src/utils/cart.ts +1 -10
  252. package/src/utils/formatEntries.ts +8 -0
  253. package/src/utils/formatEntry.ts +29 -0
  254. package/src/utils/getDeepReferenceChildren.ts +14 -0
  255. package/src/utils/getHref.ts +6 -0
  256. package/src/utils/getReferenceChildren.ts +1 -1
  257. package/src/utils/setTheme.ts +18 -0
  258. package/src/utils/slugify.ts +6 -0
  259. package/svelte.config.js +5 -0
  260. package/tailwind.config.ts +71 -0
  261. package/tsconfig.json +1 -3
  262. package/src/blocks/Article.astro +0 -40
  263. package/src/blocks/Categories.astro +0 -12
  264. package/src/blocks/Colleagues.astro +0 -13
  265. package/src/blocks/Contact.astro +0 -116
  266. package/src/blocks/Content.astro +0 -12
  267. package/src/blocks/Cta.astro +0 -15
  268. package/src/blocks/Excerpt.astro +0 -14
  269. package/src/blocks/Features.astro +0 -11
  270. package/src/blocks/Hero.astro +0 -15
  271. package/src/blocks/Intro.astro +0 -23
  272. package/src/blocks/Jobs.astro +0 -12
  273. package/src/blocks/Posts.astro +0 -11
  274. package/src/blocks/Prices.astro +0 -24
  275. package/src/blocks/Product.astro +0 -110
  276. package/src/blocks/Products.astro +0 -11
  277. package/src/blocks/Reviews.astro +0 -13
  278. package/src/components/CartForm.astro +0 -121
  279. package/src/components/CartList.astro +0 -134
  280. package/src/components/Footer.astro +0 -193
  281. package/src/components/Text.astro +0 -43
  282. package/src/components/ThemeSelect.astro +0 -41
  283. package/src/components/experimental/Form.astro +0 -53
  284. package/src/components/experimental/Gallery.astro +0 -104
  285. package/src/components/experimental/Logo.astro +0 -38
  286. package/src/components/experimental/Prose.astro +0 -192
  287. package/src/components/sections.astro +0 -28
  288. package/src/content/pages/base/button.mdx +0 -60
  289. package/src/content/pages/base/checkbox.mdx +0 -42
  290. package/src/content/pages/base/icon.mdx +0 -55
  291. package/src/content/pages/base/image.mdx +0 -42
  292. package/src/content/pages/base/input.mdx +0 -56
  293. package/src/content/pages/base/rating.mdx +0 -55
  294. package/src/content/pages/base/textarea.mdx +0 -58
  295. package/src/content/pages/base/theme-select.mdx +0 -15
  296. package/src/content/pages/layouts/_layout.mdx +0 -14
  297. package/src/content/pages/layouts/docslayout.mdx +0 -14
  298. package/src/content/pages/overview/components.mdx +0 -75
  299. package/src/content/pages/overview/content-collections.mdx +0 -139
  300. package/src/content/pages/overview/frameworks.mdx +0 -198
  301. package/src/content/pages/overview/installation.mdx +0 -53
  302. package/src/content/pages/overview/introduction.mdx +0 -30
  303. package/src/content/pages/overview/theming.mdx +0 -69
  304. package/src/content/pages/schemas/page.mdx +0 -17
  305. package/src/content/pages/schemas/preset.mdx +0 -9
  306. package/src/content/pages/showcase/record.md +0 -3
  307. package/src/content/pages/typography/heading.mdx +0 -73
  308. package/src/content/pages/typography/list.mdx +0 -51
  309. package/src/content/pages/typography/text.mdx +0 -61
  310. package/src/content/presets/blocks.yml +0 -1
  311. package/src/content/presets/docs.yml +0 -6
  312. package/src/css/space.css +0 -77
  313. package/src/css/styles.css +0 -0
  314. package/src/images/avatar-1.yml +0 -1
  315. package/src/integration/generate-colors.ts +0 -639
  316. package/src/integration/tailwind-plugin.ts +0 -80
  317. package/src/integration/unocss-preset.ts +0 -84
  318. package/src/layouts/BlockLayout.astro +0 -19
  319. package/src/layouts/ContactLayout.astro +0 -21
  320. package/src/layouts/DocsLayout.astro +0 -73
  321. package/src/layouts/Layout.astro +0 -163
  322. package/src/layouts/OverviewLayout.astro +0 -42
  323. package/src/layouts/PostLayout.astro +0 -21
  324. package/src/layouts/ProductLayout.astro +0 -21
  325. package/src/loaders/imageLoader.ts +0 -26
  326. package/src/schemas/components/avatars.ts +0 -4
  327. package/src/schemas/components/buttons.ts +0 -4
  328. package/src/schemas/components/card.ts +0 -25
  329. package/src/schemas/components/cards.ts +0 -4
  330. package/src/schemas/components/channels.ts +0 -4
  331. package/src/schemas/components/images.ts +0 -4
  332. package/src/schemas/components/list.ts +0 -3
  333. package/src/schemas/components/section.ts +0 -15
  334. package/src/schemas/components/sections.ts +0 -3
  335. package/src/schemas/components/socials.ts +0 -4
  336. package/src/schemas/components/text.ts +0 -3
  337. package/src/schemas/components/toc.ts +0 -3
  338. package/src/schemas/components/writeup.ts +0 -20
  339. package/src/schemas/pageSchema.ts +0 -101
  340. package/src/schemas/presetSchema.ts +0 -3
  341. package/src/schemas/utils/navigation.ts +0 -8
  342. package/src/schemas/utils/parents.ts +0 -3
@@ -0,0 +1,42 @@
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 Link from './Link.astro'
6
+
7
+ interface Props extends GlobalProps, HTMLAttributes<'div'> {
8
+ variant?: ComponentProps<typeof Link>['variant']
9
+ links?: ComponentProps<typeof Link>[] | undefined
10
+ direction?: 'row' | 'column' | undefined
11
+ }
12
+
13
+ const { variant = 'muted', links, size, ...rest } = Astro.props
14
+ ---
15
+
16
+ <Element
17
+ class:list="links"
18
+ {...rest}
19
+ >
20
+ {
21
+ links?.map((link) => (
22
+ <Link
23
+ {variant}
24
+ {size}
25
+ {...link}
26
+ />
27
+ ))
28
+ }
29
+ <slot />
30
+ </Element>
31
+
32
+ <style is:global>
33
+ @layer fulldev {
34
+ .links {
35
+ @apply flex items-center justify-stretch gap-x-6 gap-y-2;
36
+
37
+ &.direction-column {
38
+ @apply flex-col items-start;
39
+ }
40
+ }
41
+ }
42
+ </style>
@@ -7,8 +7,8 @@ interface Props
7
7
  extends GlobalProps,
8
8
  HTMLAttributes<'ul'>,
9
9
  HTMLAttributes<'ol'> {
10
+ as?: 'ul' | 'ol' | undefined
10
11
  items?: string[] | undefined
11
- as?: 'ul' | 'ol'
12
12
  }
13
13
 
14
14
  const { as = 'ul', items, ...rest } = Astro.props
@@ -19,26 +19,51 @@ const { as = 'ul', items, ...rest } = Astro.props
19
19
  {as}
20
20
  {...rest}
21
21
  >
22
- {items?.map((item) => <li set:html={item} />)}
22
+ {
23
+ items?.map((item) => (
24
+ <Element
25
+ as="li"
26
+ set:html={item}
27
+ />
28
+ ))
29
+ }
30
+ <slot />
23
31
  </Element>
24
32
 
25
- <style is:global lang="scss">
33
+ <style is:global>
26
34
  @layer fulldev {
27
- .list {
28
- display: flex;
29
- flex-direction: column;
30
- padding-left: var(--space-5);
31
- color: var(--color-11);
32
- font-size: var(--text-2);
33
- line-height: 1.625;
34
- list-style-type: disc;
35
+ .list,
36
+ .prose :is(ul, ol) {
37
+ @apply ml-6;
38
+
39
+ &:is(ul) {
40
+ @apply list-disc;
41
+ }
42
+
43
+ ul {
44
+ @apply ml-6 mt-2 list-disc;
45
+ }
46
+
47
+ &:is(ol) {
48
+ @apply list-decimal;
49
+ }
50
+
51
+ ol {
52
+ @apply ml-6 mt-2 list-decimal;
53
+ }
35
54
 
36
55
  li {
37
- align-items: center;
38
- max-width: calc(var(--space-4) * 44);
39
- color: var(--color-11);
40
- font-size: var(--text-2);
41
- line-height: 1.625;
56
+ @apply mt-2 first:mt-0;
57
+ }
58
+
59
+ &.size-sm,
60
+ &:where(.size-sm &) {
61
+ @apply text-sm;
62
+ }
63
+
64
+ &.size-lg,
65
+ &:where(.size-lg &) {
66
+ @apply text-lg;
42
67
  }
43
68
  }
44
69
  }
@@ -13,7 +13,7 @@ import Select from 'fulldev-ui/components/Select.astro'
13
13
  )
14
14
  }
15
15
 
16
- <script>
16
+ <!-- <script>
17
17
  const select = document.querySelector('.theme-switcher select')
18
18
  select?.addEventListener('change', (event) => {
19
19
  const target = event.target as HTMLSelectElement
@@ -22,4 +22,4 @@ import Select from 'fulldev-ui/components/Select.astro'
22
22
  currentUrl.pathname = '/' + selectedLocale + currentUrl.pathname
23
23
  window.location.href = currentUrl.toString()
24
24
  })
25
- </script>
25
+ </script> -->
@@ -0,0 +1,56 @@
1
+ ---
2
+ import type { HTMLAttributes, HTMLTag } from 'astro/types'
3
+ import Image from 'fulldev-ui/components/Image.astro'
4
+ import type { LogoSchema } from 'fulldev-ui/schemas/components/logo'
5
+ import Element from './Element.astro'
6
+
7
+ interface Props
8
+ extends Omit<HTMLAttributes<'a'>, 'href'>,
9
+ HTMLAttributes<'div'>,
10
+ LogoSchema {
11
+ as?: HTMLTag
12
+ }
13
+
14
+ const {
15
+ href = '/',
16
+ as = href ? 'a' : 'div',
17
+ size = 'md',
18
+ image,
19
+ text,
20
+ ...rest
21
+ } = Astro.props as Props
22
+ ---
23
+
24
+ <Element
25
+ class:list="logo"
26
+ {href}
27
+ {as}
28
+ {size}
29
+ >
30
+ <Image {...image} />
31
+ <Fragment set:html={text} />
32
+ </Element>
33
+
34
+ <style is:global>
35
+ @layer fulldev {
36
+ .logo {
37
+ @apply flex w-auto items-center gap-2 object-contain text-base font-bold leading-none text-foreground;
38
+
39
+ .image {
40
+ @apply h-10 w-auto object-contain;
41
+ }
42
+
43
+ &.size-sm {
44
+ @apply h-6;
45
+ }
46
+
47
+ &.size-md {
48
+ @apply h-7;
49
+ }
50
+
51
+ &.size-lg {
52
+ @apply h-8;
53
+ }
54
+ }
55
+ }
56
+ </style>
@@ -1,55 +1,59 @@
1
1
  ---
2
2
  import type { ComponentProps, HTMLAttributes } from 'astro/types'
3
- import Button from 'fulldev-ui/components/Button.astro'
4
3
  import Element from 'fulldev-ui/components/Element.astro'
5
4
  import Heading from 'fulldev-ui/components/Heading.astro'
6
5
  import type { GlobalProps } from 'fulldev-ui/types/global-props'
6
+ import type Link from './Link.astro'
7
+ import Links from './Links.astro'
7
8
 
8
9
  interface Props extends GlobalProps, HTMLAttributes<'div'> {
10
+ direction?: 'row' | 'column'
9
11
  groups?:
10
12
  | {
11
13
  heading?: ComponentProps<typeof Heading>['text']
12
- buttons?: ComponentProps<typeof Button>[]
14
+ links?: ComponentProps<typeof Link>[]
13
15
  }[]
14
16
  | undefined
15
17
  }
16
18
 
17
- const { groups, ...rest } = Astro.props
19
+ const { direction = 'column', groups, size = 'md', ...rest } = Astro.props
18
20
  ---
19
21
 
20
22
  <Element
21
23
  class:list="menu"
24
+ {direction}
25
+ {size}
22
26
  {...rest}
23
27
  >
24
28
  {
25
- groups?.map(({ heading, buttons }) => (
29
+ groups?.map(({ heading, links }) => (
26
30
  <Element class:list="menu-group">
27
31
  <Heading
28
32
  level={6}
29
33
  text={heading}
34
+ {size}
35
+ />
36
+ <Links
37
+ direction="column"
38
+ {links}
39
+ {size}
30
40
  />
31
- {buttons?.map((button) => (
32
- <Button
33
- variant="link"
34
- {...button}
35
- />
36
- ))}
37
41
  </Element>
38
42
  ))
39
43
  }
40
44
  </Element>
41
45
 
42
- <style lang="scss" is:global>
46
+ <style is:global>
43
47
  @layer fulldev {
44
48
  .menu {
45
- display: flex;
46
- flex-direction: column;
47
- gap: var(--space-5);
49
+ @apply flex flex-col gap-6;
48
50
 
49
51
  .menu-group {
50
- display: flex;
51
- flex-direction: column;
52
- gap: var(--space-4);
52
+ @apply flex flex-col gap-3;
53
+ }
54
+
55
+ &.direction-row {
56
+ @apply flex-row flex-wrap gap-12;
53
57
  }
54
58
  }
55
59
  }
@@ -0,0 +1,39 @@
1
+ ---
2
+ import type { HTMLAttributes, HTMLTag } from 'astro/types'
3
+ import Element from 'fulldev-ui/components/Element.astro'
4
+
5
+ interface Props extends HTMLAttributes<'header'> {
6
+ as?: HTMLTag
7
+ }
8
+
9
+ const { as = 'header', ...rest } = Astro.props
10
+ ---
11
+
12
+ <Element
13
+ class:list="navigation"
14
+ {as}
15
+ {...rest}
16
+ >
17
+ <header>header</header>
18
+ <aside>sidebar</aside>
19
+ </Element>
20
+
21
+ <style is:global>
22
+ @layer fulldev {
23
+ .navigation {
24
+ @apply flex h-screen flex-col;
25
+
26
+ grid-row-start: 1;
27
+ grid-row-end: 2;
28
+ grid-column-start: 1;
29
+
30
+ header {
31
+ @apply h-12 w-full border-b;
32
+ }
33
+
34
+ aside {
35
+ @apply h-full w-64 grow border-r p-6;
36
+ }
37
+ }
38
+ }
39
+ </style>
@@ -0,0 +1,25 @@
1
+ ---
2
+ import type { HTMLAttributes, HTMLTag } from 'astro/types'
3
+ import Element from 'fulldev-ui/components/Element.astro'
4
+
5
+ interface Props extends HTMLAttributes<'div'> {
6
+ as?: HTMLTag
7
+ }
8
+
9
+ const { ...rest } = Astro.props
10
+ ---
11
+
12
+ <Element
13
+ class:list="panel"
14
+ {...rest}
15
+ >
16
+ <slot />
17
+ </Element>
18
+
19
+ <style is:global>
20
+ @layer fulldev {
21
+ .panel {
22
+ @apply w-full gap-x-gutter rounded-lg border bg-card px-gutter py-20 text-card-foreground lg:px-20;
23
+ }
24
+ }
25
+ </style>
@@ -0,0 +1,55 @@
1
+ ---
2
+ import type { HTMLAttributes, HTMLTag } from 'astro/types'
3
+ import Element from 'fulldev-ui/components/Element.astro'
4
+ import type { ParagraphSchema } from 'fulldev-ui/schemas/components/paragraph.ts'
5
+
6
+ interface Props extends HTMLAttributes<'p'>, ParagraphSchema {
7
+ as?: HTMLTag
8
+ muted?: boolean | undefined
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | undefined
10
+ }
11
+
12
+ const { as = 'p', text, ...rest } = Astro.props
13
+ ---
14
+
15
+ <Element
16
+ class:list="paragraph"
17
+ {as}
18
+ {...rest}
19
+ >
20
+ <Fragment set:html={text} />
21
+ <slot />
22
+ </Element>
23
+
24
+ <style is:global>
25
+ @layer fulldev {
26
+ .paragraph,
27
+ .prose-content p {
28
+ @apply text-foreground;
29
+
30
+ &.muted {
31
+ @apply text-muted-foreground;
32
+ }
33
+
34
+ &.size-xs {
35
+ @apply text-xs leading-relaxed;
36
+ }
37
+
38
+ &.size-sm {
39
+ @apply text-sm leading-relaxed;
40
+ }
41
+
42
+ &.size-md {
43
+ @apply text-base leading-relaxed;
44
+ }
45
+
46
+ &.size-lg {
47
+ @apply text-lg leading-relaxed;
48
+ }
49
+
50
+ &.size-xl {
51
+ @apply text-xl leading-relaxed;
52
+ }
53
+ }
54
+ }
55
+ </style>
@@ -8,20 +8,20 @@ interface Props extends GlobalProps, HTMLAttributes<'div'> {
8
8
  size?: 'sm' | 'md' | 'lg' | undefined
9
9
  color?: 'base' | 'brand' | undefined
10
10
  contrast?: boolean | undefined
11
- value?: number | undefined
11
+ amount?: number | undefined
12
12
  }
13
13
 
14
- const { value, ...rest } = Astro.props
14
+ const { amount, ...rest } = Astro.props
15
15
  ---
16
16
 
17
17
  <Element
18
18
  class:list="price"
19
19
  {...rest}
20
20
  >
21
- {value && <Fragment set:html={formatPrice(value)} />}
21
+ {amount && <Fragment set:html={formatPrice(amount)} />}
22
22
  </Element>
23
23
 
24
- <style is:global lang="scss">
24
+ <style is:global>
25
25
  @layer fulldev {
26
26
  .price {
27
27
  margin: 0;
@@ -0,0 +1,86 @@
1
+ ---
2
+ import type { HTMLAttributes, HTMLTag } from 'astro/types'
3
+ import Element from 'fulldev-ui/components/Element.astro'
4
+
5
+ interface Props extends HTMLAttributes<'div'> {
6
+ as?: HTMLTag
7
+ }
8
+
9
+ const { ...rest } = Astro.props
10
+ ---
11
+
12
+ <Element
13
+ class:list="prose"
14
+ {...rest}
15
+ >
16
+ <slot />
17
+ </Element>
18
+
19
+ <style is:global>
20
+ @layer fulldev {
21
+ .prose {
22
+ @apply relative w-full max-w-screen-md;
23
+
24
+ > * {
25
+ @apply mt-6;
26
+ }
27
+
28
+ p {
29
+ @apply mt-4;
30
+ }
31
+
32
+ code:not(.astro-code code) {
33
+ @apply rounded bg-muted px-1.5 py-0.5 font-mono text-sm font-medium;
34
+ }
35
+
36
+ h1,
37
+ h2,
38
+ h3,
39
+ h4,
40
+ h5,
41
+ h6 {
42
+ @apply scroll-m-20 font-bold;
43
+
44
+ code {
45
+ font-size: inherit !important;
46
+ }
47
+ }
48
+
49
+ > h1 {
50
+ @apply text-4xl;
51
+ }
52
+
53
+ > h2 {
54
+ @apply mt-10 text-2xl;
55
+ }
56
+
57
+ > h3 {
58
+ @apply mt-8 text-xl;
59
+ }
60
+
61
+ > h4 {
62
+ @apply text-lg;
63
+ }
64
+
65
+ > h5 {
66
+ @apply text-base;
67
+ }
68
+
69
+ > h6 {
70
+ @apply text-sm;
71
+ }
72
+
73
+ > aside {
74
+ @apply rounded-md border border-destructive p-4 text-destructive;
75
+ }
76
+
77
+ img {
78
+ @apply my-12 rounded-lg;
79
+ }
80
+
81
+ > *:first-child {
82
+ @apply mt-0;
83
+ }
84
+ }
85
+ }
86
+ </style>
@@ -1,30 +1,20 @@
1
1
  ---
2
2
  import type { HTMLAttributes } from 'astro/types'
3
- import Avatar from 'fulldev-ui/components/Avatar.astro'
4
3
  import Element from 'fulldev-ui/components/Element.astro'
5
4
  import Icon from 'fulldev-ui/components/Icon.astro'
6
- import Label from 'fulldev-ui/components/Label.astro'
7
- import type { GlobalProps } from 'fulldev-ui/types/global-props'
5
+ import type { RatingSchema } from 'fulldev-ui/schemas/components/rating'
8
6
 
9
- interface Props extends GlobalProps, HTMLAttributes<'div'> {
10
- align?: 'start' | 'center' | 'end' | undefined
11
- value?: number | undefined
12
- label?: string | undefined
13
- avatars?: string[] | undefined
14
- avatar?: string | undefined
15
- }
7
+ interface Props extends HTMLAttributes<'div'>, RatingSchema {}
16
8
 
17
- const { value, label, avatars, avatar, align, ...rest } = Astro.props
9
+ const { size = 'md', score, ...rest } = Astro.props
18
10
 
19
11
  const getIcon = (count: number) => {
20
- if (!value) return
21
- const difference = value - count
12
+ if (!score) return
13
+ const difference = score - count
22
14
  if (difference >= -0.25) return 'star-filled'
23
15
  if (difference >= -0.75) return 'star-half-filled'
24
16
  return 'star'
25
17
  }
26
-
27
- const hasAvatars = avatars && avatars?.length > 0
28
18
  ---
29
19
 
30
20
  <Element
@@ -32,61 +22,32 @@ const hasAvatars = avatars && avatars?.length > 0
32
22
  {...rest}
33
23
  >
34
24
  {
35
- [avatar, ...(avatars ?? [])]
36
- ?.filter(Boolean)
37
- ?.map((avatar) => <Avatar src={avatar} />)
25
+ score &&
26
+ [1, 2, 3, 4, 5].map((count) => (
27
+ <Icon
28
+ name={getIcon(count)}
29
+ {size}
30
+ />
31
+ ))
38
32
  }
39
- <Element
40
- class:list="column"
41
- align={!hasAvatars ? align : undefined}
42
- >
43
- <Element
44
- class:list={'stars'}
45
- {...rest}
46
- >
47
- {
48
- value &&
49
- [1, 2, 3, 4, 5].map((_, i) => (
50
- <Icon
51
- name={getIcon(i + 1)}
52
- class:list={'rating-icon-solid'}
53
- />
54
- ))
55
- }
56
- </Element>
57
- <Label
58
- color="base"
59
- text={label}
60
- />
61
- </Element>
62
33
  </Element>
63
34
 
64
- <style is:global lang="scss">
35
+ <style is:global>
65
36
  @layer fulldev {
66
37
  .rating {
67
- display: flex;
68
- align-items: center;
69
- gap: var(--space-4);
70
-
71
- .column {
72
- display: flex;
73
- flex-direction: column;
74
- align-items: flex-start;
75
- }
38
+ @apply flex gap-1 text-primary;
39
+ }
76
40
 
77
- .avatar + .avatar {
78
- margin-left: calc(var(--space-4) * -2.5);
79
- }
41
+ &.size-sm {
42
+ @apply text-xs;
43
+ }
80
44
 
81
- .label {
82
- margin-top: var(--space-2) !important;
83
- }
45
+ &.size-md {
46
+ @apply text-sm;
47
+ }
84
48
 
85
- .stars {
86
- display: flex;
87
- align-items: center;
88
- gap: var(--space-2);
89
- }
49
+ &.size-lg {
50
+ @apply text-base;
90
51
  }
91
52
  }
92
53
  </style>