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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/.env.example +3 -0
  2. package/.prettierrc.yaml +1 -0
  3. package/astro.config.ts +10 -34
  4. package/cloudcannon.config.yml +217 -0
  5. package/package.json +25 -29
  6. package/pnpm-lock.yaml +943 -2157
  7. package/public/favicon/android-chrome-192x192.png +0 -0
  8. package/public/favicon/android-chrome-512x512.png +0 -0
  9. package/public/favicon/apple-touch-icon.png +0 -0
  10. package/public/favicon/manifest.webmanifest +7 -3
  11. package/public/favicon/mstile-150x150.png +0 -0
  12. package/src/blocks/Banner.astro +14 -29
  13. package/src/blocks/Contact1.astro +92 -0
  14. package/src/blocks/Cta1.astro +72 -0
  15. package/src/blocks/Feature1.astro +67 -0
  16. package/src/blocks/Features1.astro +75 -0
  17. package/src/blocks/Footer.astro +100 -3
  18. package/src/blocks/Header.astro +192 -3
  19. package/src/blocks/Hero1.astro +74 -0
  20. package/src/blocks/Job1.astro +97 -0
  21. package/src/blocks/Products1.astro +90 -0
  22. package/src/blocks/Reviews1.astro +75 -0
  23. package/src/blocks/_Hero.astro +245 -0
  24. package/src/components/Avatar.astro +28 -9
  25. package/src/components/Avatars.astro +36 -0
  26. package/src/components/Badge.astro +63 -24
  27. package/src/components/Badges.astro +16 -23
  28. package/src/components/Banner.astro +26 -0
  29. package/src/components/Block.astro +49 -0
  30. package/src/components/Blocks.astro +26 -0
  31. package/src/components/Breadcrumb.astro +58 -0
  32. package/src/components/Button.astro +49 -119
  33. package/src/components/Buttons.astro +23 -13
  34. package/src/components/Card.astro +9 -137
  35. package/src/components/Cards.astro +33 -35
  36. package/src/components/Carousel.astro +106 -0
  37. package/src/components/Cart.astro +18 -14
  38. package/src/components/CartAdd.svelte +76 -0
  39. package/src/components/CartCheckout.svelte +58 -0
  40. package/src/components/CartForm.svelte +130 -0
  41. package/src/components/CartList.svelte +88 -0
  42. package/src/components/CartQuantity.svelte +81 -0
  43. package/src/components/CartSummary.astro +16 -105
  44. package/src/components/CartTotal.svelte +15 -0
  45. package/src/components/Channel.astro +44 -35
  46. package/src/components/Channels.astro +20 -6
  47. package/src/components/Checkbox.astro +52 -27
  48. package/src/components/Code.astro +52 -0
  49. package/src/components/Container.astro +25 -0
  50. package/src/components/Dialog.astro +3 -2
  51. package/src/components/Drawer.astro +55 -146
  52. package/src/components/DrawerOld.astro +143 -0
  53. package/src/components/Element.astro +18 -8
  54. package/src/components/Form.astro +16 -13
  55. package/src/components/Gallery.astro +174 -0
  56. package/src/components/Head.astro +62 -25
  57. package/src/components/Header.astro +10 -115
  58. package/src/components/Heading.astro +51 -44
  59. package/src/components/Icon.astro +29 -33
  60. package/src/components/Image.astro +18 -68
  61. package/src/components/Input.astro +65 -51
  62. package/src/components/Label.astro +20 -15
  63. package/src/components/Layout.astro +35 -0
  64. package/src/components/Link.astro +51 -32
  65. package/src/components/Links.astro +42 -0
  66. package/src/components/List.astro +41 -16
  67. package/src/components/LocaleSwitcher.astro +2 -2
  68. package/src/components/Logo.astro +56 -0
  69. package/src/components/Menu.astro +21 -17
  70. package/src/components/Navigation.astro +39 -0
  71. package/src/components/Panel.astro +25 -0
  72. package/src/components/Paragraph.astro +55 -0
  73. package/src/components/Price.astro +4 -4
  74. package/src/components/Prose.astro +78 -0
  75. package/src/components/Rating.astro +23 -62
  76. package/src/components/Search.astro +107 -43
  77. package/src/components/Section.astro +13 -242
  78. package/src/components/Select.astro +45 -55
  79. package/src/components/Sidebar.astro +53 -76
  80. package/src/components/Social.astro +11 -9
  81. package/src/components/Socials.astro +9 -5
  82. package/src/components/Subheader.astro +59 -0
  83. package/src/components/Switch.astro +72 -29
  84. package/src/components/Table.astro +1 -1
  85. package/src/components/Tagline.astro +32 -14
  86. package/src/components/Textarea.astro +40 -50
  87. package/src/components/Themer.astro +76 -0
  88. package/src/components/Toc.astro +32 -31
  89. package/src/components/_Author.astro +90 -0
  90. package/src/components/_Header.astro +129 -0
  91. package/src/components/_Image.astro +79 -0
  92. package/src/components/_Prose copy.astro +172 -0
  93. package/src/components/_Sidebar copy.astro +87 -0
  94. package/src/components/docs/PropsTable.astro +38 -264
  95. package/src/components/experimental/Window.astro +5 -57
  96. package/src/content/config.ts +4 -10
  97. package/src/content/{presets → layouts}/base.yml +52 -73
  98. package/src/content/pages/blocks/_categories.mdx +0 -2
  99. package/src/content/pages/blocks/_footer.mdx +0 -2
  100. package/src/content/pages/blocks/_header.mdx +0 -4
  101. package/src/content/pages/blocks/_jobs.mdx +0 -2
  102. package/src/content/pages/blocks/_prices.mdx +0 -2
  103. package/src/content/pages/blocks/_product.mdx +0 -2
  104. package/src/content/pages/blocks/_products.mdx +0 -2
  105. package/src/content/pages/blocks/_stats.mdx +0 -2
  106. package/src/content/pages/blocks/banner.mdx +0 -2
  107. package/src/content/pages/blocks/colleagues.mdx +0 -3
  108. package/src/content/pages/blocks/contact.mdx +0 -2
  109. package/src/content/pages/blocks/content.mdx +0 -6
  110. package/src/content/pages/blocks/cta.mdx +0 -10
  111. package/src/content/pages/blocks/features.mdx +0 -5
  112. package/src/content/pages/blocks/hero.mdx +0 -5
  113. package/src/content/pages/blocks/intro.mdx +0 -5
  114. package/src/content/pages/blocks/posts.mdx +0 -2
  115. package/src/content/pages/blocks/reviews.mdx +0 -3
  116. package/src/content/pages/categories/category.md +7 -0
  117. package/src/content/pages/docs/_internationalization.mdx +55 -0
  118. package/src/content/pages/docs/_using-blocks.mdx +33 -0
  119. package/src/content/pages/docs/_using-presets.mdx +49 -0
  120. package/src/content/pages/docs/blocks.mdx +33 -0
  121. package/src/content/pages/docs/collections/images.mdx +102 -0
  122. package/src/content/pages/docs/collections/pages.mdx +119 -0
  123. package/src/content/pages/docs/collections/presets.mdx +60 -0
  124. package/src/content/pages/docs/collections.mdx +42 -0
  125. package/src/content/pages/{base/card.mdx → docs/components/_card.mdx} +2 -5
  126. package/src/content/pages/{base → docs/components}/_dialog.mdx +1 -2
  127. package/src/content/pages/{base → docs/components}/_drawer.mdx +1 -2
  128. package/src/content/pages/{base → docs/components}/_localeswitcher.mdx +1 -2
  129. package/src/content/pages/{base → docs/components}/_switch.mdx +3 -4
  130. package/src/content/pages/{typography → docs/components}/_tagline.mdx +3 -4
  131. package/src/content/pages/docs/components/_toggle.mdx +30 -0
  132. package/src/content/pages/docs/components/avatar.mdx +34 -0
  133. package/src/content/pages/{base → docs/components}/badge.mdx +28 -10
  134. package/src/content/pages/docs/components/badges.mdx +46 -0
  135. package/src/content/pages/docs/components/button.mdx +78 -0
  136. package/src/content/pages/docs/components/buttons.mdx +51 -0
  137. package/src/content/pages/docs/components/channel.mdx +91 -0
  138. package/src/content/pages/docs/components/channels.mdx +89 -0
  139. package/src/content/pages/docs/components/checkbox.mdx +34 -0
  140. package/src/content/pages/docs/components/code.mdx +45 -0
  141. package/src/content/pages/docs/components/heading.mdx +59 -0
  142. package/src/content/pages/docs/components/icon.mdx +48 -0
  143. package/src/content/pages/docs/components/image.mdx +25 -0
  144. package/src/content/pages/docs/components/input.mdx +40 -0
  145. package/src/content/pages/{typography → docs/components}/label.mdx +9 -6
  146. package/src/content/pages/{typography → docs/components}/link.mdx +24 -10
  147. package/src/content/pages/docs/components/links.mdx +99 -0
  148. package/src/content/pages/docs/components/list.mdx +44 -0
  149. package/src/content/pages/docs/components/logo.mdx +36 -0
  150. package/src/content/pages/docs/components/menu.mdx +89 -0
  151. package/src/content/pages/docs/components/prose.mdx +36 -0
  152. package/src/content/pages/docs/components/rating.mdx +76 -0
  153. package/src/content/pages/{base → docs/components}/section.mdx +2 -3
  154. package/src/content/pages/{base → docs/components}/select.mdx +1 -11
  155. package/src/content/pages/docs/components/social.mdx +94 -0
  156. package/src/content/pages/docs/components/socials.mdx +102 -0
  157. package/src/content/pages/docs/components/switch.mdx +34 -0
  158. package/src/content/pages/{base → docs/components}/table.mdx +1 -4
  159. package/src/content/pages/docs/components/tagline.mdx +46 -0
  160. package/src/content/pages/docs/components/text.mdx +48 -0
  161. package/src/content/pages/docs/components/textarea.mdx +34 -0
  162. package/src/content/pages/docs/components/themer.mdx +49 -0
  163. package/src/content/pages/docs/components.mdx +37 -0
  164. package/src/content/pages/docs/customization.mdx +151 -0
  165. package/src/content/pages/docs/frameworks.mdx +29 -0
  166. package/src/content/pages/docs/generating-pages.mdx +129 -0
  167. package/src/content/pages/docs/index.mdx +20 -0
  168. package/src/content/pages/docs/installation.mdx +50 -0
  169. package/src/content/pages/docs/layouts.mdx +33 -0
  170. package/src/content/pages/index.mdx +25 -33
  171. package/src/content/pages/posts/post.md +7 -0
  172. package/src/content/pages/products/product.md +20 -0
  173. package/src/content/pages/showcase/anti-slip-profiles.md +2 -2
  174. package/src/content/pages/showcase/fulldev-ui.md +1 -1
  175. package/src/content/pages/showcase/lavis-detailing.md +1 -1
  176. package/src/content/pages/showcase/leren-trainingsacteren.md +1 -1
  177. package/src/content/pages/showcase/miele-witgoedcenter-amsterdam.md +1 -1
  178. package/src/content/pages/showcase/sloepverhuur-bolsward.md +1 -1
  179. package/src/content/pages/showcase/stark-vulcanising-products.md +1 -1
  180. package/src/content/pages/showcase/the-gym-haren.md +1 -1
  181. package/src/content/pages/showcase/van-dillen-antieke-bouwmaterialen.md +1 -1
  182. package/src/content/pages/showcase.mdx +4 -3
  183. package/src/css/color.css +0 -10
  184. package/src/css/custom.css +10 -12
  185. package/src/css/size.css +2 -11
  186. package/src/css/theme.css +95 -0
  187. package/src/env.d.ts +1 -0
  188. package/src/images/favicon/android-chrome-192x192.png +0 -0
  189. package/src/images/favicon/android-chrome-512x512.png +0 -0
  190. package/src/images/favicon/apple-touch-icon.png +0 -0
  191. package/src/images/favicon/browserconfig.xml +9 -0
  192. package/src/images/favicon/favicon-16x16.png +0 -0
  193. package/src/images/favicon/favicon-32x32.png +0 -0
  194. package/src/images/favicon/favicon-48x48.png +0 -0
  195. package/src/images/favicon/favicon.ico +0 -0
  196. package/src/images/favicon/favicon.svg +16 -0
  197. package/src/images/favicon/manifest.webmanifest +30 -0
  198. package/src/images/favicon/mstile-150x150.png +0 -0
  199. package/src/images/favicon/safari-pinned-tab.svg +16 -0
  200. package/src/images/favicon/yandex-browser-50x50.png +0 -0
  201. package/src/images/favicon/yandex-browser-manifest.json +9 -0
  202. package/src/images/logo-1.svg +11 -0
  203. package/src/images/logo-2.svg +13 -0
  204. package/src/images/logo-basic.svg +10 -0
  205. package/src/images/logo-simple.svg +13 -0
  206. package/src/images/logo-thin.svg +15 -0
  207. package/src/images/logo.svg +14 -0
  208. package/src/images/logofat.svg +11 -0
  209. package/src/integration/index.ts +110 -140
  210. package/src/layouts/Category.astro +131 -0
  211. package/src/layouts/Doc.astro +72 -0
  212. package/src/layouts/Job.astro +64 -0
  213. package/src/layouts/Page.astro +30 -0
  214. package/src/layouts/Post.astro +20 -0
  215. package/src/layouts/Product.astro +110 -0
  216. package/src/pages/[...page].astro +29 -24
  217. package/src/pages/test.astro +37 -0
  218. package/src/schemas/blocks/banner.ts +10 -0
  219. package/src/schemas/blocks/categories.ts +14 -0
  220. package/src/schemas/blocks/contact.ts +18 -0
  221. package/src/schemas/blocks/cta.ts +19 -0
  222. package/src/schemas/blocks/feature.ts +18 -0
  223. package/src/schemas/blocks/features.ts +24 -0
  224. package/src/schemas/blocks/hero.ts +20 -0
  225. package/src/schemas/blocks/intro.ts +16 -0
  226. package/src/schemas/blocks/products.ts +14 -0
  227. package/src/schemas/blocks/reviews.ts +24 -0
  228. package/src/schemas/components/avatar.ts +4 -1
  229. package/src/schemas/components/badge.ts +16 -11
  230. package/src/schemas/components/block.ts +22 -0
  231. package/src/schemas/components/button.ts +17 -14
  232. package/src/schemas/components/channel.ts +15 -9
  233. package/src/schemas/components/footer.ts +15 -21
  234. package/src/schemas/components/head.ts +17 -0
  235. package/src/schemas/components/header.ts +19 -7
  236. package/src/schemas/components/heading.ts +7 -1
  237. package/src/schemas/components/icon.ts +7 -1
  238. package/src/schemas/components/image.ts +38 -16
  239. package/src/schemas/components/link.ts +17 -0
  240. package/src/schemas/components/logo.ts +12 -2
  241. package/src/schemas/components/menu.ts +11 -11
  242. package/src/schemas/components/navigation.ts +10 -0
  243. package/src/schemas/components/paragraph.ts +9 -0
  244. package/src/schemas/components/price.ts +7 -1
  245. package/src/schemas/components/rating.ts +8 -13
  246. package/src/schemas/components/sidebar.ts +14 -11
  247. package/src/schemas/components/social.ts +16 -1
  248. package/src/schemas/components/tagline.ts +7 -1
  249. package/src/schemas/imageSchema.ts +30 -1
  250. package/src/schemas/layoutSchema.ts +22 -0
  251. package/src/schemas/pageSchema.ts +26 -96
  252. package/src/stores/cart.svelte.ts +79 -0
  253. package/src/stores/cart.ts +59 -6
  254. package/src/types/global-props.ts +0 -9
  255. package/src/types/{virtual-modules.d.ts → virtual.d.ts} +1 -1
  256. package/src/utils/cart.ts +1 -10
  257. package/src/utils/formatEntries.ts +8 -0
  258. package/src/utils/formatEntry.ts +29 -0
  259. package/src/utils/getDeepReferenceChildren.ts +14 -0
  260. package/src/utils/getHref.ts +6 -0
  261. package/src/utils/getReferenceChildren.ts +1 -1
  262. package/src/utils/setTheme.ts +18 -0
  263. package/src/utils/slugify.ts +6 -0
  264. package/svelte.config.js +5 -0
  265. package/tailwind.config.ts +67 -0
  266. package/tsconfig.json +1 -3
  267. package/src/blocks/Article.astro +0 -40
  268. package/src/blocks/Categories.astro +0 -12
  269. package/src/blocks/Colleagues.astro +0 -13
  270. package/src/blocks/Contact.astro +0 -116
  271. package/src/blocks/Content.astro +0 -12
  272. package/src/blocks/Cta.astro +0 -15
  273. package/src/blocks/Excerpt.astro +0 -14
  274. package/src/blocks/Features.astro +0 -11
  275. package/src/blocks/Hero.astro +0 -15
  276. package/src/blocks/Intro.astro +0 -23
  277. package/src/blocks/Jobs.astro +0 -12
  278. package/src/blocks/Posts.astro +0 -11
  279. package/src/blocks/Prices.astro +0 -24
  280. package/src/blocks/Product.astro +0 -110
  281. package/src/blocks/Products.astro +0 -11
  282. package/src/blocks/Reviews.astro +0 -13
  283. package/src/components/CartForm.astro +0 -121
  284. package/src/components/CartList.astro +0 -134
  285. package/src/components/Footer.astro +0 -193
  286. package/src/components/Text.astro +0 -43
  287. package/src/components/ThemeSelect.astro +0 -41
  288. package/src/components/Writeup.astro +0 -90
  289. package/src/components/experimental/Form.astro +0 -53
  290. package/src/components/experimental/Gallery.astro +0 -104
  291. package/src/components/experimental/Logo.astro +0 -38
  292. package/src/components/experimental/Prose.astro +0 -192
  293. package/src/components/sections.astro +0 -28
  294. package/src/content/pages/base/button.mdx +0 -60
  295. package/src/content/pages/base/checkbox.mdx +0 -42
  296. package/src/content/pages/base/icon.mdx +0 -55
  297. package/src/content/pages/base/image.mdx +0 -42
  298. package/src/content/pages/base/input.mdx +0 -56
  299. package/src/content/pages/base/rating.mdx +0 -55
  300. package/src/content/pages/base/textarea.mdx +0 -58
  301. package/src/content/pages/base/theme-select.mdx +0 -15
  302. package/src/content/pages/layouts/_layout.mdx +0 -14
  303. package/src/content/pages/layouts/docslayout.mdx +0 -14
  304. package/src/content/pages/overview/components.mdx +0 -75
  305. package/src/content/pages/overview/content-collections.mdx +0 -139
  306. package/src/content/pages/overview/frameworks.mdx +0 -198
  307. package/src/content/pages/overview/installation.mdx +0 -53
  308. package/src/content/pages/overview/introduction.mdx +0 -30
  309. package/src/content/pages/overview/theming.mdx +0 -69
  310. package/src/content/pages/schemas/page.mdx +0 -17
  311. package/src/content/pages/schemas/preset.mdx +0 -9
  312. package/src/content/pages/showcase/record.md +0 -3
  313. package/src/content/pages/typography/heading.mdx +0 -73
  314. package/src/content/pages/typography/list.mdx +0 -51
  315. package/src/content/pages/typography/text.mdx +0 -61
  316. package/src/content/presets/blocks.yml +0 -1
  317. package/src/content/presets/docs.yml +0 -6
  318. package/src/css/space.css +0 -77
  319. package/src/css/styles.css +0 -0
  320. package/src/images/avatar-1.yml +0 -1
  321. package/src/integration/generate-colors.ts +0 -639
  322. package/src/integration/tailwind-plugin.ts +0 -80
  323. package/src/integration/unocss-preset.ts +0 -84
  324. package/src/layouts/BlockLayout.astro +0 -19
  325. package/src/layouts/ContactLayout.astro +0 -21
  326. package/src/layouts/DocsLayout.astro +0 -73
  327. package/src/layouts/Layout.astro +0 -163
  328. package/src/layouts/OverviewLayout.astro +0 -42
  329. package/src/layouts/PostLayout.astro +0 -21
  330. package/src/layouts/ProductLayout.astro +0 -21
  331. package/src/loaders/imageLoader.ts +0 -26
  332. package/src/schemas/components/avatars.ts +0 -4
  333. package/src/schemas/components/buttons.ts +0 -4
  334. package/src/schemas/components/card.ts +0 -25
  335. package/src/schemas/components/cards.ts +0 -4
  336. package/src/schemas/components/channels.ts +0 -4
  337. package/src/schemas/components/images.ts +0 -4
  338. package/src/schemas/components/list.ts +0 -3
  339. package/src/schemas/components/section.ts +0 -15
  340. package/src/schemas/components/sections.ts +0 -3
  341. package/src/schemas/components/socials.ts +0 -4
  342. package/src/schemas/components/text.ts +0 -3
  343. package/src/schemas/components/toc.ts +0 -3
  344. package/src/schemas/components/writeup.ts +0 -20
  345. package/src/schemas/presetSchema.ts +0 -3
  346. package/src/schemas/utils/navigation.ts +0 -8
  347. package/src/schemas/utils/parents.ts +0 -3
@@ -0,0 +1,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-16 text-card-foreground lg:px-16;
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="text"
17
+ {as}
18
+ {...rest}
19
+ >
20
+ <Fragment set:html={text} />
21
+ <slot />
22
+ </Element>
23
+
24
+ <style is:global>
25
+ @layer fulldev {
26
+ .text,
27
+ .prose-content p {
28
+ @apply leading-relaxed text-foreground;
29
+
30
+ &.muted {
31
+ @apply text-muted-foreground;
32
+ }
33
+
34
+ &.size-xs {
35
+ @apply text-xs;
36
+ }
37
+
38
+ &.size-sm {
39
+ @apply text-sm;
40
+ }
41
+
42
+ &.size-md {
43
+ @apply text-base;
44
+ }
45
+
46
+ &.size-lg {
47
+ @apply text-lg;
48
+ }
49
+
50
+ &.size-xl {
51
+ @apply text-xl;
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,78 @@
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 py-8;
23
+
24
+ > * {
25
+ @apply mt-6 first:mt-0;
26
+ }
27
+
28
+ p {
29
+ @apply mt-4 first:mt-0;
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 mt-8 scroll-m-20 font-bold first:mt-0;
43
+
44
+ code {
45
+ font-size: inherit !important;
46
+ }
47
+ }
48
+
49
+ > h1 {
50
+ @apply text-4xl;
51
+ }
52
+
53
+ > h2 {
54
+ @apply text-2xl;
55
+ }
56
+
57
+ > h3 {
58
+ @apply 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 mt-6 rounded-md border border-destructive p-4 text-destructive first:mt-0;
75
+ }
76
+ }
77
+ }
78
+ </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>