fulldev-ui 0.6.0-beta.3 → 0.6.0-beta.7

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 (153) hide show
  1. package/astro.config.ts +1 -7
  2. package/cloudcannon.config.yml +270 -0
  3. package/package.json +1 -1
  4. package/src/blocks/Banner.astro +33 -0
  5. package/src/blocks/Colleagues1.astro +73 -0
  6. package/src/blocks/Contact1.astro +12 -4
  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 +35 -34
  12. package/src/blocks/Feature1.astro +20 -26
  13. package/src/blocks/Features1.astro +66 -0
  14. package/src/blocks/Footer.astro +27 -52
  15. package/src/blocks/Header.astro +154 -0
  16. package/src/blocks/Hero1.astro +41 -41
  17. package/src/blocks/Intro1.astro +32 -18
  18. package/src/blocks/Jobs1.astro +73 -0
  19. package/src/blocks/Logos1.astro +55 -0
  20. package/src/blocks/Products1.astro +4 -4
  21. package/src/blocks/Reviews1.astro +79 -0
  22. package/src/components/Badges.astro +12 -35
  23. package/src/components/Block.astro +5 -24
  24. package/src/components/Button.astro +1 -2
  25. package/src/components/Buttons.astro +12 -43
  26. package/src/components/Cart.astro +6 -12
  27. package/src/components/Drawer.astro +1 -2
  28. package/src/components/Form.astro +3 -3
  29. package/src/components/Grid.astro +39 -0
  30. package/src/components/{Banner.astro → Group.astro} +5 -6
  31. package/src/components/Heading.astro +5 -1
  32. package/src/components/Icon.astro +0 -1
  33. package/src/components/Image.astro +15 -50
  34. package/src/components/Layout.astro +35 -0
  35. package/src/components/Links.astro +14 -35
  36. package/src/components/Logo.astro +5 -7
  37. package/src/components/Masonry.astro +42 -0
  38. package/src/components/Menu.astro +17 -38
  39. package/src/components/Menus.astro +20 -0
  40. package/src/components/Panel.astro +1 -1
  41. package/src/components/Paragraph.astro +8 -8
  42. package/src/components/Prose.astro +15 -7
  43. package/src/components/Search.astro +1 -1
  44. package/src/components/Section.astro +1 -1
  45. package/src/components/Sidebar.astro +11 -42
  46. package/src/components/Stack.astro +25 -0
  47. package/src/components/Tagline.astro +1 -1
  48. package/src/components/Toc.astro +22 -30
  49. package/src/components/Writeup.astro +59 -0
  50. package/src/components/_Image.astro +79 -0
  51. package/src/content/config.ts +2 -28
  52. package/src/content/layouts/base.yml +4 -3
  53. package/src/content/{docs → pages/docs}/_internationalization.mdx +1 -0
  54. package/src/content/{docs → pages/docs}/_using-blocks.mdx +1 -0
  55. package/src/content/{docs → pages/docs}/_using-presets.mdx +1 -0
  56. package/src/content/{docs → pages/docs}/blocks.mdx +1 -0
  57. package/src/content/{docs → pages/docs}/collections/images.mdx +1 -0
  58. package/src/content/{docs → pages/docs}/collections/pages.mdx +1 -0
  59. package/src/content/{docs → pages/docs}/collections/presets.mdx +1 -0
  60. package/src/content/{docs → pages/docs}/collections.mdx +1 -0
  61. package/src/content/{docs → pages/docs}/components/_card.mdx +1 -0
  62. package/src/content/{docs → pages/docs}/components/_dialog.mdx +1 -0
  63. package/src/content/{docs → pages/docs}/components/_drawer.mdx +1 -0
  64. package/src/content/{docs → pages/docs}/components/_localeswitcher.mdx +1 -0
  65. package/src/content/{docs → pages/docs}/components/_switch.mdx +1 -0
  66. package/src/content/{docs → pages/docs}/components/_tagline.mdx +1 -0
  67. package/src/content/{docs → pages/docs}/components/_toggle.mdx +1 -0
  68. package/src/content/{docs → pages/docs}/components/avatar.mdx +1 -0
  69. package/src/content/{docs → pages/docs}/components/badge.mdx +1 -0
  70. package/src/content/{docs → pages/docs}/components/badges.mdx +1 -0
  71. package/src/content/{docs → pages/docs}/components/button.mdx +1 -0
  72. package/src/content/{docs → pages/docs}/components/buttons.mdx +1 -0
  73. package/src/content/{docs → pages/docs}/components/channel.mdx +1 -0
  74. package/src/content/{docs → pages/docs}/components/channels.mdx +1 -0
  75. package/src/content/{docs → pages/docs}/components/checkbox.mdx +1 -0
  76. package/src/content/{docs → pages/docs}/components/code.mdx +1 -0
  77. package/src/content/{docs → pages/docs}/components/heading.mdx +1 -0
  78. package/src/content/{docs → pages/docs}/components/icon.mdx +1 -0
  79. package/src/content/{docs → pages/docs}/components/image.mdx +1 -0
  80. package/src/content/{docs → pages/docs}/components/input.mdx +1 -0
  81. package/src/content/{docs → pages/docs}/components/label.mdx +1 -0
  82. package/src/content/{docs → pages/docs}/components/link.mdx +1 -0
  83. package/src/content/{docs → pages/docs}/components/links.mdx +1 -0
  84. package/src/content/{docs → pages/docs}/components/list.mdx +1 -0
  85. package/src/content/{docs → pages/docs}/components/logo.mdx +1 -0
  86. package/src/content/{docs → pages/docs}/components/menu.mdx +1 -0
  87. package/src/content/{docs → pages/docs}/components/prose.mdx +1 -0
  88. package/src/content/{docs → pages/docs}/components/rating.mdx +1 -0
  89. package/src/content/{docs → pages/docs}/components/section.mdx +1 -0
  90. package/src/content/{docs → pages/docs}/components/select.mdx +1 -0
  91. package/src/content/{docs → pages/docs}/components/social.mdx +1 -0
  92. package/src/content/{docs → pages/docs}/components/socials.mdx +1 -0
  93. package/src/content/{docs → pages/docs}/components/switch.mdx +1 -0
  94. package/src/content/{docs → pages/docs}/components/table.mdx +1 -0
  95. package/src/content/{docs → pages/docs}/components/tagline.mdx +1 -0
  96. package/src/content/{docs → pages/docs}/components/text.mdx +1 -0
  97. package/src/content/{docs → pages/docs}/components/textarea.mdx +1 -0
  98. package/src/content/{docs → pages/docs}/components/themer.mdx +1 -0
  99. package/src/content/{docs → pages/docs}/components.mdx +1 -0
  100. package/src/content/{docs → pages/docs}/customization.mdx +1 -0
  101. package/src/content/{docs → pages/docs}/frameworks.mdx +1 -0
  102. package/src/content/{docs → pages/docs}/generating-pages.mdx +1 -0
  103. package/src/content/{docs → pages/docs}/index.mdx +1 -0
  104. package/src/content/{docs → pages/docs}/installation.mdx +1 -0
  105. package/src/content/{docs → pages/docs}/layouts.mdx +1 -0
  106. package/src/content/pages/index.mdx +3 -3
  107. package/src/content/{products → pages/products}/product.md +2 -2
  108. package/src/integration/index.ts +36 -16
  109. package/src/layouts/{CategoryLayout.astro → Category.astro} +19 -20
  110. package/src/layouts/Doc.astro +70 -0
  111. package/src/layouts/Job.astro +60 -0
  112. package/src/layouts/Jobs.astro +72 -0
  113. package/src/layouts/Page.astro +29 -0
  114. package/src/layouts/Post.astro +52 -0
  115. package/src/layouts/{ProductLayout.astro → Product.astro} +20 -11
  116. package/src/pages/[...page].astro +36 -4
  117. package/src/pages/test.astro +25 -1
  118. package/src/schemas/components/block.ts +58 -15
  119. package/src/schemas/components/button.ts +1 -0
  120. package/src/schemas/components/image.ts +32 -18
  121. package/src/schemas/components/menu.ts +1 -0
  122. package/src/schemas/imageSchema.ts +3 -3
  123. package/src/schemas/page.ts +40 -0
  124. package/src/stores/cart.svelte.ts +0 -1
  125. package/src/utils/getHref.ts +4 -21
  126. package/tailwind.config.ts +4 -0
  127. package/src/blocks/Banner1.astro +0 -35
  128. package/src/blocks/Header1.astro +0 -192
  129. package/src/content/layouts/docs.yml +0 -2
  130. package/src/layouts/DocLayout.astro +0 -59
  131. package/src/layouts/Layout.astro +0 -107
  132. package/src/layouts/PageLayout.astro +0 -27
  133. package/src/layouts/PostLayout.astro +0 -22
  134. package/src/pages/[...category].astro +0 -17
  135. package/src/pages/[...doc].astro +0 -17
  136. package/src/pages/[...post].astro +0 -17
  137. package/src/pages/[...product].astro +0 -17
  138. package/src/schemas/blocks/banner.ts +0 -10
  139. package/src/schemas/blocks/categories.ts +0 -14
  140. package/src/schemas/blocks/contact.ts +0 -18
  141. package/src/schemas/blocks/cta.ts +0 -18
  142. package/src/schemas/blocks/feature.ts +0 -18
  143. package/src/schemas/blocks/hero.ts +0 -20
  144. package/src/schemas/blocks/intro.ts +0 -16
  145. package/src/schemas/blocks/products.ts +0 -14
  146. package/src/schemas/categorySchema.ts +0 -16
  147. package/src/schemas/docSchema.ts +0 -14
  148. package/src/schemas/layoutSchema.ts +0 -22
  149. package/src/schemas/pageSchema.ts +0 -17
  150. package/src/schemas/postSchema.ts +0 -14
  151. package/src/schemas/productSchema.ts +0 -22
  152. /package/src/content/{categories → pages/categories}/category.md +0 -0
  153. /package/src/content/{posts → pages/posts}/post.md +0 -0
@@ -11,7 +11,6 @@ interface Props extends Omit<HTMLAttributes<'svg'>, 'name'>, IconSchema {
11
11
 
12
12
  const { size = 'md', name, ...rest } = Astro.props
13
13
 
14
- console.log(name)
15
14
  const trimmedName = name?.trim()
16
15
  const icon = trimmedName
17
16
  ? (tablerIcons as any)?.icons[trimmedName]?.body
@@ -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,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
+ }
@@ -31,16 +31,14 @@ const {
31
31
  <Fragment set:html={text} />
32
32
  </Element>
33
33
 
34
- <Image
35
- class:list="logo"
36
- {size}
37
- {...rest}
38
- />
39
-
40
34
  <style is:global>
41
35
  @layer fulldev {
42
36
  .logo {
43
- @apply flex w-auto items-center object-contain text-base font-bold leading-none text-foreground;
37
+ @apply flex w-auto items-center gap-2 whitespace-nowrap object-contain text-base font-bold leading-none text-foreground;
38
+
39
+ .image {
40
+ @apply h-full w-auto object-contain;
41
+ }
44
42
 
45
43
  &.size-sm {
46
44
  @apply h-6;
@@ -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
+ }
@@ -19,7 +19,7 @@ const { ...rest } = Astro.props
19
19
  <style is:global>
20
20
  @layer fulldev {
21
21
  .panel {
22
- @apply w-full gap-x-gutter rounded-lg border bg-card px-gutter py-16 text-card-foreground lg:px-16;
22
+ @apply w-full gap-x-gutter rounded-lg border bg-card px-gutter py-20 text-card-foreground lg:px-20;
23
23
  }
24
24
  }
25
25
  </style>
@@ -13,7 +13,7 @@ const { as = 'p', text, ...rest } = Astro.props
13
13
  ---
14
14
 
15
15
  <Element
16
- class:list="text"
16
+ class:list="paragraph"
17
17
  {as}
18
18
  {...rest}
19
19
  >
@@ -23,32 +23,32 @@ const { as = 'p', text, ...rest } = Astro.props
23
23
 
24
24
  <style is:global>
25
25
  @layer fulldev {
26
- .text,
26
+ .paragraph,
27
27
  .prose-content p {
28
- @apply leading-relaxed text-foreground;
28
+ @apply text-foreground;
29
29
 
30
30
  &.muted {
31
31
  @apply text-muted-foreground;
32
32
  }
33
33
 
34
34
  &.size-xs {
35
- @apply text-xs;
35
+ @apply text-xs leading-relaxed;
36
36
  }
37
37
 
38
38
  &.size-sm {
39
- @apply text-sm;
39
+ @apply text-sm leading-relaxed;
40
40
  }
41
41
 
42
42
  &.size-md {
43
- @apply text-base;
43
+ @apply text-base leading-relaxed;
44
44
  }
45
45
 
46
46
  &.size-lg {
47
- @apply text-lg;
47
+ @apply text-lg leading-relaxed;
48
48
  }
49
49
 
50
50
  &.size-xl {
51
- @apply text-xl;
51
+ @apply text-xl leading-relaxed;
52
52
  }
53
53
  }
54
54
  }
@@ -19,14 +19,14 @@ const { ...rest } = Astro.props
19
19
  <style is:global>
20
20
  @layer fulldev {
21
21
  .prose {
22
- @apply relative w-full max-w-screen-md py-8;
22
+ @apply relative w-full max-w-screen-md;
23
23
 
24
24
  > * {
25
- @apply mt-6 first:mt-0;
25
+ @apply mt-6;
26
26
  }
27
27
 
28
28
  p {
29
- @apply mt-4 first:mt-0;
29
+ @apply mt-4;
30
30
  }
31
31
 
32
32
  code:not(.astro-code code) {
@@ -39,7 +39,7 @@ const { ...rest } = Astro.props
39
39
  h4,
40
40
  h5,
41
41
  h6 {
42
- @apply mt-8 scroll-m-20 font-bold first:mt-0;
42
+ @apply scroll-m-20 font-bold;
43
43
 
44
44
  code {
45
45
  font-size: inherit !important;
@@ -51,11 +51,11 @@ const { ...rest } = Astro.props
51
51
  }
52
52
 
53
53
  > h2 {
54
- @apply text-2xl;
54
+ @apply mt-10 text-2xl;
55
55
  }
56
56
 
57
57
  > h3 {
58
- @apply text-xl;
58
+ @apply mt-8 text-xl;
59
59
  }
60
60
 
61
61
  > h4 {
@@ -71,7 +71,15 @@ const { ...rest } = Astro.props
71
71
  }
72
72
 
73
73
  > aside {
74
- @apply mt-6 rounded-md border border-destructive p-4 text-destructive first:mt-0;
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;
75
83
  }
76
84
  }
77
85
  }
@@ -63,7 +63,7 @@ const entries = [...pages, ...categories, ...products, ...posts, ...docs]
63
63
  entries.map(({ collection, slug, data }) => (
64
64
  <Element
65
65
  as="a"
66
- href={getHref(collection, slug)}
66
+ href={getHref(slug)}
67
67
  class="search-item hide"
68
68
  >
69
69
  <Heading
@@ -20,7 +20,7 @@ const { as = 'section', ...rest } = Astro.props
20
20
  <style is:global>
21
21
  @layer fulldev {
22
22
  .section {
23
- @apply relative w-full bg-background py-16 first:py-8;
23
+ @apply relative w-full bg-background py-20 first:pt-20 lg:py-32;
24
24
  }
25
25
  }
26
26
  </style>
@@ -2,13 +2,11 @@
2
2
  import type { HTMLAttributes } from 'astro/types'
3
3
  import Element from 'fulldev-ui/components/Element.astro'
4
4
  import type { SidebarSchema } from 'fulldev-ui/schemas/components/sidebar'
5
- import Container from './Container.astro'
6
- import Heading from './Heading.astro'
7
- import Link from './Link.astro'
5
+ import Menus from './Menus.astro'
8
6
 
9
7
  interface Props extends HTMLAttributes<'aside'>, SidebarSchema {}
10
8
 
11
- const { company, logo, menus, links, heading, themer, ...rest } = Astro.props
9
+ const { menus, ...rest } = Astro.props
12
10
  ---
13
11
 
14
12
  <Element
@@ -16,59 +14,30 @@ const { company, logo, menus, links, heading, themer, ...rest } = Astro.props
16
14
  as="aside"
17
15
  {...rest}
18
16
  >
19
- <Container>
20
- {
21
- menus?.map(({ heading, links }) => (
22
- <Element class:list="sidebar-menu">
23
- <Heading
24
- text={heading}
25
- size="sm"
26
- as="h6"
27
- />
28
- <Element class:list="sidebar-links">
29
- {links?.map((link) => (
30
- <Link
31
- size="sm"
32
- variant="muted"
33
- {...link}
34
- />
35
- ))}
36
- </Element>
37
- </Element>
38
- ))
39
- }
40
- </Container>
17
+ <Menus
18
+ size="sm"
19
+ menu={rest}
20
+ {menus}
21
+ />
41
22
  </Element>
42
23
 
43
24
  <style is:global>
44
25
  @layer fulldev {
45
26
  .sidebar {
46
- @apply sticky bottom-0 left-0 hidden w-64 max-w-[75vw] border-r bg-background py-8 lg:flex;
27
+ @apply sticky bottom-0 left-0 hidden h-full max-w-[75vw] flex-col items-start gap-8 overflow-y-auto border-r bg-background py-8 pr-8 lg:flex;
28
+ @apply scrollbar scrollbar-track-transparent scrollbar-thumb-accent scrollbar-thumb-rounded-full scrollbar-w-2 hover:scrollbar-thumb-accent-hover;
47
29
 
48
30
  --headers: calc(var(--header-height, 0px) + var(--subheader-height, 0px));
49
31
  top: var(--headers);
50
32
  width: var(--sidebar-width);
51
- max-height: calc(100vh - var(--headers));
33
+ height: calc(100vh - var(--headers));
52
34
 
53
35
  &,
54
36
  & ~ * {
55
37
  @media (min-width: 1024px) {
56
- --sidebar-width: 16rem;
38
+ --sidebar-width: 14rem;
57
39
  }
58
40
  }
59
-
60
- .container {
61
- @apply flex h-full w-full grow flex-col items-start gap-8 overflow-y-auto;
62
- /* @apply scrollbar scrollbar-track-transparent scrollbar-thumb-accent scrollbar-thumb-rounded-full scrollbar-w-2 hover:scrollbar-thumb-accent-hover; */
63
- }
64
-
65
- .sidebar-menu {
66
- @apply flex flex-col gap-3;
67
- }
68
-
69
- .sidebar-links {
70
- @apply flex flex-col gap-2;
71
- }
72
41
  }
73
42
  }
74
43
  </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="stack"
14
+ {...rest}
15
+ >
16
+ <slot />
17
+ </Element>
18
+
19
+ <style is:global>
20
+ @layer fulldev {
21
+ .stack {
22
+ @apply relative grid w-full auto-cols-fr items-start gap-x-16 gap-y-8 lg:grid-flow-col;
23
+ }
24
+ }
25
+ </style>
@@ -13,7 +13,7 @@ const { as = 'p', text, ...rest } = Astro.props
13
13
  ---
14
14
 
15
15
  <Element
16
- class:list="text"
16
+ class:list="tagline"
17
17
  {as}
18
18
  {...rest}
19
19
  >