fulldev-ui 0.6.0-beta.2 → 0.6.0-beta.6

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 (257) hide show
  1. package/astro.config.ts +1 -7
  2. package/cloudcannon.config.yml +269 -0
  3. package/package.json +1 -1
  4. package/src/blocks/Banner.astro +13 -15
  5. package/src/blocks/Colleagues1.astro +73 -0
  6. package/src/blocks/Contact1.astro +100 -0
  7. package/src/blocks/Content1.astro +79 -0
  8. package/src/blocks/Content2.astro +94 -0
  9. package/src/blocks/Content3.astro +70 -0
  10. package/src/blocks/Content4.astro +75 -0
  11. package/src/blocks/Cta1.astro +73 -0
  12. package/src/blocks/Feature1.astro +61 -0
  13. package/src/blocks/Features1.astro +66 -0
  14. package/src/blocks/Footer.astro +36 -68
  15. package/src/blocks/Header.astro +150 -3
  16. package/src/blocks/Hero1.astro +74 -0
  17. package/src/blocks/Intro1.astro +70 -0
  18. package/src/blocks/Jobs1.astro +73 -0
  19. package/src/blocks/Logos1.astro +55 -0
  20. package/src/blocks/Products1.astro +90 -0
  21. package/src/blocks/Reviews1.astro +79 -0
  22. package/src/blocks/{Hero.astro → _Hero.astro} +7 -6
  23. package/src/components/Badge.astro +10 -18
  24. package/src/components/Badges.astro +12 -35
  25. package/src/components/Block.astro +30 -0
  26. package/src/components/Blocks.astro +26 -0
  27. package/src/components/Button.astro +11 -25
  28. package/src/components/Buttons.astro +12 -43
  29. package/src/components/Card.astro +8 -150
  30. package/src/components/Cart.astro +6 -11
  31. package/src/components/CartSummary.astro +3 -3
  32. package/src/components/Channel.astro +5 -14
  33. package/src/components/Container.astro +25 -0
  34. package/src/components/Drawer.astro +55 -117
  35. package/src/components/DrawerOld.astro +143 -0
  36. package/src/components/Element.astro +2 -0
  37. package/src/components/Form.astro +3 -1
  38. package/src/components/Grid.astro +39 -0
  39. package/src/components/Group.astro +25 -0
  40. package/src/components/Head.astro +18 -32
  41. package/src/components/Header.astro +8 -105
  42. package/src/components/Heading.astro +34 -71
  43. package/src/components/Icon.astro +5 -4
  44. package/src/components/Image.astro +15 -50
  45. package/src/components/Layout.astro +35 -0
  46. package/src/components/Link.astro +12 -18
  47. package/src/components/Links.astro +14 -35
  48. package/src/components/Logo.astro +26 -15
  49. package/src/components/Masonry.astro +42 -0
  50. package/src/components/Menu.astro +17 -38
  51. package/src/components/Menus.astro +20 -0
  52. package/src/components/Navigation.astro +39 -0
  53. package/src/components/Panel.astro +25 -0
  54. package/src/components/Paragraph.astro +24 -7
  55. package/src/components/Price.astro +4 -4
  56. package/src/components/Prose.astro +47 -130
  57. package/src/components/Rating.astro +24 -75
  58. package/src/components/Search.astro +5 -4
  59. package/src/components/Section.astro +20 -29
  60. package/src/components/Sidebar.astro +18 -69
  61. package/src/components/Social.astro +9 -2
  62. package/src/components/Stack.astro +25 -0
  63. package/src/components/Tagline.astro +21 -31
  64. package/src/components/Toc.astro +22 -21
  65. package/src/components/Writeup.astro +33 -82
  66. package/src/components/_Author.astro +90 -0
  67. package/src/components/_Header.astro +129 -0
  68. package/src/components/_Image.astro +79 -0
  69. package/src/components/_Prose copy.astro +172 -0
  70. package/src/components/_Sidebar copy.astro +87 -0
  71. package/src/content/config.ts +2 -29
  72. package/src/content/layouts/base.yml +42 -80
  73. package/src/content/pages/categories/category.md +7 -0
  74. package/src/content/{docs → pages/docs}/_internationalization.mdx +1 -0
  75. package/src/content/{docs → pages/docs}/_using-blocks.mdx +1 -0
  76. package/src/content/{docs → pages/docs}/_using-presets.mdx +1 -0
  77. package/src/content/{docs → pages/docs}/blocks.mdx +1 -0
  78. package/src/content/{docs → pages/docs}/collections/images.mdx +1 -0
  79. package/src/content/{docs → pages/docs}/collections/pages.mdx +1 -0
  80. package/src/content/{docs → pages/docs}/collections/presets.mdx +1 -0
  81. package/src/content/{docs → pages/docs}/collections.mdx +1 -0
  82. package/src/content/{docs → pages/docs}/components/_card.mdx +1 -0
  83. package/src/content/{docs → pages/docs}/components/_dialog.mdx +1 -0
  84. package/src/content/{docs → pages/docs}/components/_drawer.mdx +1 -0
  85. package/src/content/{docs → pages/docs}/components/_localeswitcher.mdx +1 -0
  86. package/src/content/{docs → pages/docs}/components/_switch.mdx +1 -0
  87. package/src/content/{docs → pages/docs}/components/_tagline.mdx +1 -0
  88. package/src/content/{docs → pages/docs}/components/_toggle.mdx +1 -0
  89. package/src/content/{docs → pages/docs}/components/avatar.mdx +1 -0
  90. package/src/content/{docs → pages/docs}/components/badge.mdx +1 -0
  91. package/src/content/{docs → pages/docs}/components/badges.mdx +1 -0
  92. package/src/content/{docs → pages/docs}/components/button.mdx +1 -0
  93. package/src/content/{docs → pages/docs}/components/buttons.mdx +1 -0
  94. package/src/content/{docs → pages/docs}/components/channel.mdx +1 -0
  95. package/src/content/{docs → pages/docs}/components/channels.mdx +1 -0
  96. package/src/content/{docs → pages/docs}/components/checkbox.mdx +1 -0
  97. package/src/content/{docs → pages/docs}/components/code.mdx +1 -0
  98. package/src/content/{docs → pages/docs}/components/heading.mdx +1 -0
  99. package/src/content/{docs → pages/docs}/components/icon.mdx +1 -0
  100. package/src/content/{docs → pages/docs}/components/image.mdx +1 -0
  101. package/src/content/{docs → pages/docs}/components/input.mdx +1 -0
  102. package/src/content/{docs → pages/docs}/components/label.mdx +1 -0
  103. package/src/content/{docs → pages/docs}/components/link.mdx +1 -0
  104. package/src/content/{docs → pages/docs}/components/links.mdx +1 -0
  105. package/src/content/{docs → pages/docs}/components/list.mdx +1 -0
  106. package/src/content/{docs → pages/docs}/components/logo.mdx +1 -0
  107. package/src/content/{docs → pages/docs}/components/menu.mdx +1 -0
  108. package/src/content/{docs → pages/docs}/components/prose.mdx +1 -0
  109. package/src/content/{docs → pages/docs}/components/rating.mdx +1 -0
  110. package/src/content/{docs → pages/docs}/components/section.mdx +1 -0
  111. package/src/content/{docs → pages/docs}/components/select.mdx +1 -0
  112. package/src/content/{docs → pages/docs}/components/social.mdx +1 -0
  113. package/src/content/{docs → pages/docs}/components/socials.mdx +1 -0
  114. package/src/content/{docs → pages/docs}/components/switch.mdx +1 -0
  115. package/src/content/{docs → pages/docs}/components/table.mdx +1 -0
  116. package/src/content/{docs → pages/docs}/components/tagline.mdx +1 -0
  117. package/src/content/pages/docs/components/text.mdx +48 -0
  118. package/src/content/{docs → pages/docs}/components/textarea.mdx +1 -0
  119. package/src/content/{docs → pages/docs}/components/themer.mdx +1 -0
  120. package/src/content/{docs → pages/docs}/components.mdx +2 -4
  121. package/src/content/{docs → pages/docs}/customization.mdx +1 -0
  122. package/src/content/{docs → pages/docs}/frameworks.mdx +1 -0
  123. package/src/content/{docs → pages/docs}/generating-pages.mdx +1 -0
  124. package/src/content/{docs → pages/docs}/index.mdx +2 -4
  125. package/src/content/{docs → pages/docs}/installation.mdx +1 -0
  126. package/src/content/{docs → pages/docs}/layouts.mdx +1 -0
  127. package/src/content/pages/index.mdx +20 -28
  128. package/src/content/{categories/mugs.md → pages/posts/post.md} +1 -1
  129. package/src/content/{products → pages/products}/product.md +4 -4
  130. package/src/css/theme.css +2 -0
  131. package/src/images/favicon/android-chrome-192x192.png +0 -0
  132. package/src/images/favicon/android-chrome-512x512.png +0 -0
  133. package/src/images/favicon/apple-touch-icon.png +0 -0
  134. package/src/images/favicon/browserconfig.xml +9 -0
  135. package/src/images/favicon/favicon-16x16.png +0 -0
  136. package/src/images/favicon/favicon-32x32.png +0 -0
  137. package/src/images/favicon/favicon-48x48.png +0 -0
  138. package/src/images/favicon/favicon.ico +0 -0
  139. package/src/images/favicon/favicon.svg +16 -0
  140. package/src/images/favicon/manifest.webmanifest +30 -0
  141. package/src/images/favicon/mstile-150x150.png +0 -0
  142. package/src/images/favicon/safari-pinned-tab.svg +16 -0
  143. package/src/images/favicon/yandex-browser-50x50.png +0 -0
  144. package/src/images/favicon/yandex-browser-manifest.json +9 -0
  145. package/src/integration/index.ts +48 -17
  146. package/src/layouts/{CategoryLayout.astro → Category.astro} +21 -15
  147. package/src/layouts/Doc.astro +70 -0
  148. package/src/layouts/Job.astro +62 -0
  149. package/src/layouts/Jobs.astro +72 -0
  150. package/src/layouts/Page.astro +29 -0
  151. package/src/layouts/Post.astro +52 -0
  152. package/src/layouts/{ProductLayout.astro → Product.astro} +25 -11
  153. package/src/pages/[...page].astro +36 -4
  154. package/src/pages/test.astro +32 -2
  155. package/src/schemas/components/avatar.ts +4 -1
  156. package/src/schemas/components/badge.ts +16 -11
  157. package/src/schemas/components/block.ts +61 -0
  158. package/src/schemas/components/button.ts +14 -19
  159. package/src/schemas/components/channel.ts +15 -9
  160. package/src/schemas/components/footer.ts +15 -14
  161. package/src/schemas/components/head.ts +17 -0
  162. package/src/schemas/components/header.ts +19 -16
  163. package/src/schemas/components/heading.ts +7 -1
  164. package/src/schemas/components/icon.ts +7 -1
  165. package/src/schemas/components/image.ts +38 -21
  166. package/src/schemas/components/link.ts +10 -16
  167. package/src/schemas/components/logo.ts +12 -2
  168. package/src/schemas/components/menu.ts +12 -13
  169. package/src/schemas/components/navigation.ts +10 -0
  170. package/src/schemas/components/paragraph.ts +9 -0
  171. package/src/schemas/components/price.ts +9 -0
  172. package/src/schemas/components/rating.ts +8 -13
  173. package/src/schemas/components/sidebar.ts +14 -12
  174. package/src/schemas/components/social.ts +16 -1
  175. package/src/schemas/components/tagline.ts +7 -1
  176. package/src/schemas/imageSchema.ts +33 -4
  177. package/src/schemas/page.ts +40 -0
  178. package/src/types/global-props.ts +0 -9
  179. package/src/types/{virtual-modules.d.ts → virtual.d.ts} +1 -1
  180. package/src/utils/getHref.ts +4 -20
  181. package/tailwind.config.ts +4 -0
  182. package/tsconfig.json +1 -3
  183. package/example.svelte +0 -0
  184. package/parent.svelte +0 -0
  185. package/src/App.svelte +0 -0
  186. package/src/blocks/Categories.astro +0 -12
  187. package/src/blocks/Colleagues.astro +0 -12
  188. package/src/blocks/Contact.astro +0 -117
  189. package/src/blocks/Content.astro +0 -130
  190. package/src/blocks/Cta.astro +0 -13
  191. package/src/blocks/Excerpt.astro +0 -12
  192. package/src/blocks/Features.astro +0 -11
  193. package/src/blocks/Intro.astro +0 -101
  194. package/src/blocks/Jobs.astro +0 -12
  195. package/src/blocks/Posts.astro +0 -11
  196. package/src/blocks/Prices.astro +0 -24
  197. package/src/blocks/Product.astro +0 -89
  198. package/src/blocks/Products.astro +0 -101
  199. package/src/blocks/Reviews.astro +0 -12
  200. package/src/blocks/_Contact.astro +0 -112
  201. package/src/components/CartForm.astro +0 -120
  202. package/src/components/CartList.astro +0 -122
  203. package/src/components/Lead.astro +0 -46
  204. package/src/components/ProductCard.astro +0 -52
  205. package/src/components/Text.astro +0 -43
  206. package/src/components/_CartList backup.astro +0 -125
  207. package/src/components/_CartList copy.astro +0 -213
  208. package/src/components/_CartListSimple.astro +0 -148
  209. package/src/components/sections.astro +0 -28
  210. package/src/content/docs/components/lead.mdx +0 -49
  211. package/src/content/docs/components/paragraph.mdx +0 -49
  212. package/src/content/layouts/docs.yml +0 -70
  213. package/src/layouts/DocLayout.astro +0 -17
  214. package/src/layouts/Layout.astro +0 -79
  215. package/src/layouts/PageLayout.astro +0 -20
  216. package/src/layouts/PostLayout.astro +0 -20
  217. package/src/loaders/imageLoader.ts +0 -26
  218. package/src/pages/[...category].astro +0 -17
  219. package/src/pages/[...doc].astro +0 -17
  220. package/src/pages/[...post].astro +0 -17
  221. package/src/pages/[...product].astro +0 -17
  222. package/src/schemas/archive/_pageSchema.ts +0 -94
  223. package/src/schemas/categorySchema.ts +0 -16
  224. package/src/schemas/components/avatars.ts +0 -4
  225. package/src/schemas/components/banner.ts +0 -3
  226. package/src/schemas/components/buttons.ts +0 -4
  227. package/src/schemas/components/card.ts +0 -43
  228. package/src/schemas/components/cards.ts +0 -4
  229. package/src/schemas/components/channels.ts +0 -4
  230. package/src/schemas/components/global.ts +0 -16
  231. package/src/schemas/components/links.ts +0 -4
  232. package/src/schemas/components/list.ts +0 -3
  233. package/src/schemas/components/section.ts +0 -17
  234. package/src/schemas/components/sections.ts +0 -3
  235. package/src/schemas/components/socials.ts +0 -4
  236. package/src/schemas/components/subheader.ts +0 -10
  237. package/src/schemas/components/text.ts +0 -3
  238. package/src/schemas/components/themer.ts +0 -3
  239. package/src/schemas/components/toc.ts +0 -3
  240. package/src/schemas/components/writeup.ts +0 -20
  241. package/src/schemas/docSchema.ts +0 -10
  242. package/src/schemas/fields/categories.ts +0 -3
  243. package/src/schemas/fields/description.ts +0 -3
  244. package/src/schemas/fields/href.ts +0 -3
  245. package/src/schemas/fields/image.ts +0 -24
  246. package/src/schemas/fields/images.ts +0 -4
  247. package/src/schemas/fields/order.ts +0 -3
  248. package/src/schemas/fields/price.ts +0 -3
  249. package/src/schemas/fields/products.ts +0 -5
  250. package/src/schemas/fields/seo.ts +0 -12
  251. package/src/schemas/fields/soldout.ts +0 -3
  252. package/src/schemas/fields/title.ts +0 -3
  253. package/src/schemas/fields/variants.ts +0 -3
  254. package/src/schemas/layoutSchema.ts +0 -28
  255. package/src/schemas/pageSchema.ts +0 -20
  256. package/src/schemas/postSchema.ts +0 -16
  257. package/src/schemas/productSchema.ts +0 -22
@@ -1,31 +1,9 @@
1
1
  ---
2
- // @ts-nocheck
3
- import type { ImageMetadata } from 'astro'
4
2
  import type { HTMLAttributes } from 'astro/types'
5
3
  import { Image as AstroImage } from 'astro:assets'
6
- import { getEntry } from 'astro:content'
4
+ import type { ImageSchema } from 'fulldev-ui/schemas/imageSchema'
7
5
 
8
- interface Props extends GlobalProps, HTMLAttributes<'img'> {
9
- id?: any
10
- size?: 'sm' | 'md' | 'lg' | undefined
11
- position?: 'background' | 'cover' | 'inset' | undefined
12
- }
13
-
14
- const { id } = Astro.props
15
- const entry = id ? (await getEntry('images', id))?.data : {}
16
-
17
- const {
18
- width = 1920,
19
- height = 1920,
20
- position,
21
- src,
22
- alt,
23
- size,
24
- ...rest
25
- } = {
26
- ...entry,
27
- ...Astro.props,
28
- }
6
+ interface Props extends HTMLAttributes<'img'>, ImageSchema {}
29
7
 
30
8
  function getAltBySrc() {
31
9
  if (!src) return
@@ -35,24 +13,23 @@ function getAltBySrc() {
35
13
  return unslugged || ''
36
14
  }
37
15
 
38
- const images = import.meta.glob<{ default: ImageMetadata }>('/src/images/*')
39
- const image = images[src as keyof typeof images]
16
+ const {
17
+ src,
18
+ alt = getAltBySrc(),
19
+ height = 1920,
20
+ width = 1920,
21
+ ...rest
22
+ } = Astro.props
40
23
  ---
41
24
 
42
25
  {
43
- (image || src) && (
26
+ src && (
44
27
  <AstroImage
45
- class:list={[
46
- 'image',
47
- {
48
- [`size-${size}`]: size,
49
- [`position-${position}`]: position,
50
- },
51
- ]}
52
- alt={alt || getAltBySrc()}
53
- src={image ? image() : src}
54
- width={width ? Number(width) : undefined}
55
- height={height ? Number(height) : undefined}
28
+ class:list="image"
29
+ {alt}
30
+ {src}
31
+ {width}
32
+ {height}
56
33
  {...rest}
57
34
  />
58
35
  )
@@ -62,18 +39,6 @@ const image = images[src as keyof typeof images]
62
39
  @layer fulldev {
63
40
  .image {
64
41
  @apply block;
65
-
66
- &.position-contain {
67
- @apply h-auto w-full object-contain;
68
- }
69
-
70
- &.position-cover {
71
- @apply h-full w-full object-cover;
72
- }
73
-
74
- &.position-background {
75
- @apply absolute inset-0 h-full max-h-none w-full max-w-none object-cover opacity-30;
76
- }
77
42
  }
78
43
  }
79
44
  </style>
@@ -0,0 +1,35 @@
1
+ ---
2
+ import type { HTMLAttributes } from 'astro/types'
3
+ import Head from 'fulldev-ui/components/Head.astro'
4
+ import type { HeadSchema } from 'fulldev-ui/schemas/components/head'
5
+
6
+ type Props = Omit<HTMLAttributes<'body'>, 'title'> & {
7
+ head?: HeadSchema
8
+ }
9
+
10
+ const { head, ...rest } = Astro.props
11
+ ---
12
+
13
+ <!doctype html>
14
+ <html>
15
+ <Head {...head} />
16
+ <body {...rest}>
17
+ <slot />
18
+ <style is:global>
19
+ @layer fulldev {
20
+ html {
21
+ @apply w-full font-sans text-base leading-relaxed text-foreground;
22
+ color-scheme: light;
23
+ }
24
+
25
+ .dark {
26
+ color-scheme: dark;
27
+ }
28
+
29
+ body {
30
+ @apply w-full bg-background font-sans text-foreground;
31
+ }
32
+ }
33
+ </style>
34
+ </body>
35
+ </html>
@@ -1,29 +1,21 @@
1
1
  ---
2
- import type { ComponentProps, HTMLAttributes, HTMLTag } from 'astro/types'
3
- import type { CollectionEntry } from 'astro:content'
4
- import { getEntry } from 'astro:content'
2
+ import type { HTMLAttributes, HTMLTag } from 'astro/types'
5
3
  import Element from 'fulldev-ui/components/Element.astro'
6
4
  import Icon from 'fulldev-ui/components/Icon.astro'
7
- import type { GlobalProps } from 'fulldev-ui/types/global-props'
5
+ import type { LinkSchema } from 'fulldev-ui/schemas/components/link'
8
6
 
9
- interface Props extends GlobalProps, HTMLAttributes<'a'> {
7
+ interface Props
8
+ extends Omit<HTMLAttributes<'a'>, 'href' | 'target'>,
9
+ LinkSchema {
10
10
  as?: HTMLTag
11
- href?: string | null | undefined
12
- slug?: CollectionEntry<'pages'>['slug'] | undefined
13
- icon?: ComponentProps<typeof Icon>['name']
14
- variant?: 'primary' | 'muted' | undefined
15
- text?: string | undefined
16
11
  current?: boolean | undefined
17
12
  }
18
13
 
19
14
  const {
20
- slug,
21
- href = slug === 'index' ? '/' : slug ? `/${slug}/` : undefined,
22
- text = slug ? (await getEntry('pages', slug)).data.title : undefined,
23
- target = href?.startsWith('http') ? '_blank' : undefined,
24
- current = Astro.url.pathname === href,
25
15
  as = 'a',
26
16
  variant = 'primary',
17
+ size = 'md',
18
+ text,
27
19
  icon,
28
20
  ...rest
29
21
  } = Astro.props
@@ -31,11 +23,9 @@ const {
31
23
 
32
24
  <Element
33
25
  class:list="link"
34
- {href}
35
26
  {as}
36
- {target}
37
27
  {variant}
38
- {current}
28
+ {size}
39
29
  {...rest}
40
30
  >
41
31
  <Fragment set:html={text} />
@@ -54,6 +44,10 @@ const {
54
44
  @apply text-primary underline underline-offset-4;
55
45
  }
56
46
 
47
+ &.variant-underline {
48
+ @apply underline underline-offset-4;
49
+ }
50
+
57
51
  &.variant-muted {
58
52
  @apply text-muted-foreground hover:text-foreground;
59
53
 
@@ -1,42 +1,21 @@
1
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'
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Link from 'fulldev-ui/components/Link.astro'
6
4
 
7
- interface Props extends GlobalProps, HTMLAttributes<'div'> {
8
- variant?: ComponentProps<typeof Link>['variant']
5
+ interface Props extends ComponentProps<typeof Link> {
6
+ link?: ComponentProps<typeof Link> | undefined
9
7
  links?: ComponentProps<typeof Link>[] | undefined
10
- direction?: 'row' | 'column' | undefined
11
8
  }
12
9
 
13
- const { variant = 'muted', links, size, ...rest } = Astro.props
10
+ const { variant = 'muted', link, links, ...rest } = Astro.props
14
11
  ---
15
12
 
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>
13
+ {
14
+ [link, ...(links || [])].filter(Boolean).map((link) => (
15
+ <Link
16
+ {variant}
17
+ {...rest}
18
+ {...link}
19
+ />
20
+ ))
21
+ }
@@ -1,44 +1,55 @@
1
1
  ---
2
- import type { ComponentProps } from 'astro/types'
3
- import Element from 'fulldev-ui/components/Element.astro'
2
+ import type { HTMLAttributes, HTMLTag } from 'astro/types'
4
3
  import Image from 'fulldev-ui/components/Image.astro'
5
-
6
- interface Props extends ComponentProps<typeof Image> {
7
- company?: string | undefined
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
8
12
  }
9
13
 
10
- const { size = 'md', company, ...rest } = Astro.props as Props
14
+ const {
15
+ href = '/',
16
+ as = href ? 'a' : 'div',
17
+ size = 'md',
18
+ image,
19
+ text,
20
+ ...rest
21
+ } = Astro.props as Props
11
22
  ---
12
23
 
13
24
  <Element
14
25
  class:list="logo"
15
- as="a"
16
- href="/"
26
+ {href}
27
+ {as}
17
28
  {size}
18
29
  >
19
- <Image {...rest} />
20
- <Fragment set:html={company} />
30
+ <Image {...image} />
31
+ <Fragment set:html={text} />
21
32
  </Element>
22
33
 
23
34
  <style is:global>
24
35
  @layer fulldev {
25
36
  .logo {
26
- @apply inline-flex grow-0 items-center justify-start font-semibold;
37
+ @apply flex w-auto items-center gap-2 whitespace-nowrap object-contain text-base font-bold leading-none text-foreground;
27
38
 
28
39
  .image {
29
- @apply block h-full w-auto object-contain;
40
+ @apply h-full w-auto object-contain;
30
41
  }
31
42
 
32
43
  &.size-sm {
33
- @apply h-6 gap-2 text-base;
44
+ @apply h-6;
34
45
  }
35
46
 
36
47
  &.size-md {
37
- @apply h-7 gap-2.5 text-lg;
48
+ @apply h-7;
38
49
  }
39
50
 
40
51
  &.size-lg {
41
- @apply h-8 gap-3 text-xl;
52
+ @apply h-8;
42
53
  }
43
54
  }
44
55
  }
@@ -0,0 +1,42 @@
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="masonry"
14
+ {...rest}
15
+ >
16
+ <slot />
17
+ </Element>
18
+
19
+ <style is:global>
20
+ @layer fulldev {
21
+ .masonry {
22
+ --column-width: 20rem;
23
+ @apply relative w-full columns-sm gap-5 space-y-5;
24
+
25
+ & > * {
26
+ @apply break-inside-avoid;
27
+ }
28
+
29
+ /* &.size-sm {
30
+ --column-width: 16rem;
31
+ }
32
+
33
+ &.size-md {
34
+ --column-width: 20rem;
35
+ }
36
+
37
+ &.size-lg {
38
+ --column-width: 26rem;
39
+ } */
40
+ }
41
+ }
42
+ </style>
@@ -1,59 +1,38 @@
1
1
  ---
2
- import type { ComponentProps, HTMLAttributes } from 'astro/types'
2
+ import type { HTMLAttributes } from 'astro/types'
3
3
  import Element from 'fulldev-ui/components/Element.astro'
4
4
  import Heading from 'fulldev-ui/components/Heading.astro'
5
- import type { GlobalProps } from 'fulldev-ui/types/global-props'
6
- import type Link from './Link.astro'
5
+ import type { MenuSchema } from 'fulldev-ui/schemas/components/menu'
7
6
  import Links from './Links.astro'
8
7
 
9
- interface Props extends GlobalProps, HTMLAttributes<'div'> {
10
- direction?: 'row' | 'column'
11
- groups?:
12
- | {
13
- heading?: ComponentProps<typeof Heading>['text']
14
- links?: ComponentProps<typeof Link>[]
15
- }[]
16
- | undefined
17
- }
8
+ interface Props extends HTMLAttributes<'div'>, MenuSchema {}
18
9
 
19
- const { direction = 'column', groups, size = 'md', ...rest } = Astro.props
10
+ const { size = 'md', heading, links, ...rest } = Astro.props
20
11
  ---
21
12
 
22
13
  <Element
23
14
  class:list="menu"
24
- {direction}
25
- {size}
26
15
  {...rest}
27
16
  >
28
- {
29
- groups?.map(({ heading, links }) => (
30
- <Element class:list="menu-group">
31
- <Heading
32
- level={6}
33
- text={heading}
34
- {size}
35
- />
36
- <Links
37
- direction="column"
38
- {links}
39
- {size}
40
- />
41
- </Element>
42
- ))
43
- }
17
+ <Heading
18
+ text={heading}
19
+ as="h6"
20
+ {size}
21
+ />
22
+ <Links
23
+ variant="muted"
24
+ {size}
25
+ {links}
26
+ />
44
27
  </Element>
45
28
 
46
29
  <style is:global>
47
30
  @layer fulldev {
48
31
  .menu {
49
- @apply flex flex-col gap-6;
50
-
51
- .menu-group {
52
- @apply flex flex-col gap-3;
53
- }
32
+ @apply flex flex-col gap-2;
54
33
 
55
- &.direction-row {
56
- @apply flex-row flex-wrap gap-12;
34
+ .heading {
35
+ @apply mb-1;
57
36
  }
58
37
  }
59
38
  }
@@ -0,0 +1,20 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Menu from 'fulldev-ui/components/Menu.astro'
4
+
5
+ interface Props extends ComponentProps<typeof Menu> {
6
+ menu?: ComponentProps<typeof Menu> | undefined
7
+ menus?: ComponentProps<typeof Menu>[] | undefined
8
+ }
9
+
10
+ const { menu, menus, ...rest } = Astro.props
11
+ ---
12
+
13
+ {
14
+ [menu, ...(menus || [])].filter(Boolean).map((menu) => (
15
+ <Menu
16
+ {...rest}
17
+ {...menu}
18
+ />
19
+ ))
20
+ }
@@ -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>
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  import type { HTMLAttributes, HTMLTag } from 'astro/types'
3
3
  import Element from 'fulldev-ui/components/Element.astro'
4
- import type { GlobalProps } from 'fulldev-ui/types/global-props'
4
+ import type { ParagraphSchema } from 'fulldev-ui/schemas/components/paragraph.ts'
5
5
 
6
- interface Props extends GlobalProps, HTMLAttributes<'p'> {
6
+ interface Props extends HTMLAttributes<'p'>, ParagraphSchema {
7
7
  as?: HTMLTag
8
- text?: string | undefined
8
+ muted?: boolean | undefined
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | undefined
9
10
  }
10
11
 
11
12
  const { as = 'p', text, ...rest } = Astro.props
@@ -16,22 +17,38 @@ const { as = 'p', text, ...rest } = Astro.props
16
17
  {as}
17
18
  {...rest}
18
19
  >
19
- <slot />
20
20
  <Fragment set:html={text} />
21
+ <slot />
21
22
  </Element>
22
23
 
23
24
  <style is:global>
24
25
  @layer fulldev {
25
26
  .paragraph,
26
27
  .prose-content p {
27
- @apply leading-7 text-foreground;
28
+ @apply text-foreground;
29
+
30
+ &.muted {
31
+ @apply text-muted-foreground;
32
+ }
33
+
34
+ &.size-xs {
35
+ @apply text-xs leading-relaxed;
36
+ }
28
37
 
29
38
  &.size-sm {
30
- @apply text-sm;
39
+ @apply text-sm leading-relaxed;
40
+ }
41
+
42
+ &.size-md {
43
+ @apply text-base leading-relaxed;
31
44
  }
32
45
 
33
46
  &.size-lg {
34
- @apply text-lg;
47
+ @apply text-lg leading-relaxed;
48
+ }
49
+
50
+ &.size-xl {
51
+ @apply text-xl leading-relaxed;
35
52
  }
36
53
  }
37
54
  }
@@ -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 >
24
+ <style is:global>
25
25
  @layer fulldev {
26
26
  .price {
27
27
  margin: 0;