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

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 (236) hide show
  1. package/.env.example +3 -0
  2. package/.prettierrc.yaml +1 -0
  3. package/astro.config.ts +6 -32
  4. package/package.json +21 -30
  5. package/pnpm-lock.yaml +696 -2176
  6. package/public/favicon/android-chrome-192x192.png +0 -0
  7. package/public/favicon/android-chrome-512x512.png +0 -0
  8. package/public/favicon/apple-touch-icon.png +0 -0
  9. package/public/favicon/manifest.webmanifest +7 -3
  10. package/public/favicon/mstile-150x150.png +0 -0
  11. package/src/blocks/Banner.astro +6 -19
  12. package/src/blocks/Colleagues.astro +0 -1
  13. package/src/blocks/Contact.astro +75 -74
  14. package/src/blocks/Content.astro +124 -6
  15. package/src/blocks/Cta.astro +0 -2
  16. package/src/blocks/Excerpt.astro +0 -2
  17. package/src/blocks/Footer.astro +107 -3
  18. package/src/blocks/Hero.astro +238 -9
  19. package/src/blocks/Intro.astro +89 -11
  20. package/src/blocks/Prices.astro +1 -1
  21. package/src/blocks/Product.astro +49 -70
  22. package/src/blocks/Products.astro +114 -5
  23. package/src/blocks/Reviews.astro +0 -1
  24. package/src/blocks/_Contact.astro +112 -0
  25. package/src/components/Avatar.astro +28 -9
  26. package/src/components/Avatars.astro +36 -0
  27. package/src/components/Badge.astro +73 -26
  28. package/src/components/Badges.astro +16 -23
  29. package/src/components/Breadcrumb.astro +58 -0
  30. package/src/components/Button.astro +56 -112
  31. package/src/components/Buttons.astro +23 -13
  32. package/src/components/Card.astro +129 -115
  33. package/src/components/Cards.astro +33 -35
  34. package/src/components/Carousel.astro +106 -0
  35. package/src/components/Cart.astro +1 -1
  36. package/src/components/CartForm.astro +10 -10
  37. package/src/components/CartList.astro +11 -28
  38. package/src/components/CartSummary.astro +11 -14
  39. package/src/components/Channel.astro +40 -22
  40. package/src/components/Channels.astro +20 -6
  41. package/src/components/Checkbox.astro +52 -27
  42. package/src/components/Code.astro +52 -0
  43. package/src/components/Dialog.astro +2 -2
  44. package/src/components/Drawer.astro +34 -64
  45. package/src/components/Element.astro +16 -8
  46. package/src/components/Form.astro +14 -13
  47. package/src/components/Gallery.astro +172 -0
  48. package/src/components/Head.astro +52 -1
  49. package/src/components/Header.astro +73 -83
  50. package/src/components/Heading.astro +74 -30
  51. package/src/components/Icon.astro +25 -30
  52. package/src/components/Image.astro +23 -38
  53. package/src/components/Input.astro +59 -53
  54. package/src/components/Label.astro +20 -15
  55. package/src/components/Lead.astro +46 -0
  56. package/src/components/Link.astro +51 -26
  57. package/src/components/Links.astro +42 -0
  58. package/src/components/List.astro +41 -16
  59. package/src/components/LocaleSwitcher.astro +2 -2
  60. package/src/components/Logo.astro +45 -0
  61. package/src/components/Menu.astro +21 -17
  62. package/src/components/Paragraph.astro +38 -0
  63. package/src/components/Price.astro +1 -1
  64. package/src/components/Prose.astro +169 -0
  65. package/src/components/Rating.astro +50 -38
  66. package/src/components/Search.astro +1 -1
  67. package/src/components/Section.astro +196 -158
  68. package/src/components/Select.astro +44 -55
  69. package/src/components/Sidebar.astro +31 -38
  70. package/src/components/Social.astro +3 -8
  71. package/src/components/Socials.astro +9 -5
  72. package/src/components/Subheader.astro +59 -0
  73. package/src/components/Switch.astro +72 -29
  74. package/src/components/Table.astro +1 -1
  75. package/src/components/Tagline.astro +40 -12
  76. package/src/components/Text.astro +4 -4
  77. package/src/components/Textarea.astro +40 -50
  78. package/src/components/Themer.astro +76 -0
  79. package/src/components/Toc.astro +24 -32
  80. package/src/components/Writeup.astro +26 -8
  81. package/src/components/docs/PropsTable.astro +38 -264
  82. package/src/components/experimental/Window.astro +5 -57
  83. package/src/components/sections.astro +1 -1
  84. package/src/content/pages/blocks/_categories.mdx +1 -1
  85. package/src/content/pages/blocks/_footer.mdx +1 -1
  86. package/src/content/pages/blocks/_header.mdx +1 -3
  87. package/src/content/pages/blocks/_jobs.mdx +1 -1
  88. package/src/content/pages/blocks/_prices.mdx +1 -1
  89. package/src/content/pages/blocks/_product.mdx +1 -1
  90. package/src/content/pages/blocks/_products.mdx +1 -1
  91. package/src/content/pages/blocks/_stats.mdx +1 -1
  92. package/src/content/pages/blocks/banner.mdx +1 -1
  93. package/src/content/pages/blocks/colleagues.mdx +1 -2
  94. package/src/content/pages/blocks/contact.mdx +1 -1
  95. package/src/content/pages/blocks/content.mdx +1 -5
  96. package/src/content/pages/blocks/cta.mdx +1 -9
  97. package/src/content/pages/blocks/features.mdx +1 -4
  98. package/src/content/pages/blocks/hero.mdx +1 -4
  99. package/src/content/pages/blocks/intro.mdx +1 -4
  100. package/src/content/pages/blocks/posts.mdx +1 -1
  101. package/src/content/pages/blocks/reviews.mdx +1 -2
  102. package/src/content/pages/docs/_internationalization.mdx +55 -0
  103. package/src/content/pages/docs/_using-blocks.mdx +33 -0
  104. package/src/content/pages/docs/_using-presets.mdx +49 -0
  105. package/src/content/pages/docs/blocks.mdx +33 -0
  106. package/src/content/pages/docs/collections/images.mdx +100 -0
  107. package/src/content/pages/docs/collections/pages.mdx +119 -0
  108. package/src/content/pages/docs/collections/presets.mdx +60 -0
  109. package/src/content/pages/docs/collections.mdx +42 -0
  110. package/src/content/pages/{base/card.mdx → docs/components/_card.mdx} +1 -3
  111. package/src/content/pages/{base → docs/components}/_switch.mdx +2 -2
  112. package/src/content/pages/{typography → docs/components}/_tagline.mdx +2 -2
  113. package/src/content/pages/docs/components/_toggle.mdx +31 -0
  114. package/src/content/pages/docs/components/avatar.mdx +35 -0
  115. package/src/content/pages/{base → docs/components}/badge.mdx +27 -8
  116. package/src/content/pages/docs/components/badges.mdx +47 -0
  117. package/src/content/pages/{base → docs/components}/button.mdx +29 -10
  118. package/src/content/pages/docs/components/buttons.mdx +52 -0
  119. package/src/content/pages/docs/components/channel.mdx +92 -0
  120. package/src/content/pages/docs/components/channels.mdx +90 -0
  121. package/src/content/pages/{base → docs/components}/checkbox.mdx +10 -17
  122. package/src/content/pages/docs/components/code.mdx +46 -0
  123. package/src/content/pages/docs/components/heading.mdx +60 -0
  124. package/src/content/pages/docs/components/icon.mdx +49 -0
  125. package/src/content/pages/docs/components/image.mdx +26 -0
  126. package/src/content/pages/docs/components/input.mdx +41 -0
  127. package/src/content/pages/{typography → docs/components}/label.mdx +8 -4
  128. package/src/content/pages/docs/components/lead.mdx +51 -0
  129. package/src/content/pages/{typography → docs/components}/link.mdx +23 -8
  130. package/src/content/pages/docs/components/links.mdx +100 -0
  131. package/src/content/pages/docs/components/list.mdx +45 -0
  132. package/src/content/pages/docs/components/logo.mdx +37 -0
  133. package/src/content/pages/docs/components/menu.mdx +90 -0
  134. package/src/content/pages/docs/components/paragraph.mdx +51 -0
  135. package/src/content/pages/docs/components/prose.mdx +37 -0
  136. package/src/content/pages/docs/components/rating.mdx +77 -0
  137. package/src/content/pages/{base → docs/components}/section.mdx +1 -1
  138. package/src/content/pages/{base → docs/components}/select.mdx +0 -9
  139. package/src/content/pages/docs/components/social.mdx +95 -0
  140. package/src/content/pages/docs/components/socials.mdx +103 -0
  141. package/src/content/pages/docs/components/switch.mdx +35 -0
  142. package/src/content/pages/{base → docs/components}/table.mdx +0 -2
  143. package/src/content/pages/docs/components/tagline.mdx +47 -0
  144. package/src/content/pages/docs/components/textarea.mdx +35 -0
  145. package/src/content/pages/docs/components/themer.mdx +50 -0
  146. package/src/content/pages/docs/components.mdx +40 -0
  147. package/src/content/pages/docs/customization.mdx +151 -0
  148. package/src/content/pages/docs/frameworks.mdx +29 -0
  149. package/src/content/pages/docs/generating-pages.mdx +129 -0
  150. package/src/content/pages/docs/index.mdx +23 -0
  151. package/src/content/pages/docs/installation.mdx +50 -0
  152. package/src/content/pages/docs/layouts.mdx +33 -0
  153. package/src/content/pages/index.mdx +11 -9
  154. package/src/content/pages/showcase.mdx +4 -2
  155. package/src/content/presets/base.yml +80 -63
  156. package/src/content/presets/docs.yml +2 -2
  157. package/src/css/color.css +0 -10
  158. package/src/css/custom.css +10 -12
  159. package/src/css/size.css +2 -11
  160. package/src/css/theme.css +93 -0
  161. package/src/images/logo-1.svg +11 -0
  162. package/src/images/logo-2.svg +13 -0
  163. package/src/images/logo-basic.svg +10 -0
  164. package/src/images/logo-simple.svg +13 -0
  165. package/src/images/logo-thin.svg +15 -0
  166. package/src/images/logo.svg +14 -0
  167. package/src/images/logofat.svg +11 -0
  168. package/src/integration/index.ts +71 -144
  169. package/src/layouts/CategoryLayout.astro +135 -0
  170. package/src/layouts/Layout.astro +62 -117
  171. package/src/layouts/PageLayout.astro +26 -0
  172. package/src/layouts/PostLayout.astro +13 -8
  173. package/src/layouts/ProductLayout.astro +94 -10
  174. package/src/pages/[...page].astro +14 -22
  175. package/src/pages/test.astro +20 -0
  176. package/src/schemas/components/button.ts +21 -13
  177. package/src/schemas/components/card.ts +36 -18
  178. package/src/schemas/components/footer.ts +2 -10
  179. package/src/schemas/components/global.ts +16 -0
  180. package/src/schemas/components/header.ts +8 -0
  181. package/src/schemas/components/image.ts +8 -3
  182. package/src/schemas/components/link.ts +16 -0
  183. package/src/schemas/components/links.ts +4 -0
  184. package/src/schemas/components/menu.ts +2 -0
  185. package/src/schemas/components/sidebar.ts +2 -2
  186. package/src/schemas/components/subheader.ts +9 -0
  187. package/src/schemas/components/themer.ts +3 -0
  188. package/src/schemas/pageSchema.ts +14 -21
  189. package/src/utils/cart.ts +1 -10
  190. package/src/utils/getDeepReferenceChildren.ts +14 -0
  191. package/src/utils/getReferenceChildren.ts +1 -1
  192. package/src/utils/setTheme.ts +18 -0
  193. package/src/utils/slugify.ts +6 -0
  194. package/tailwind.config.ts +67 -0
  195. package/src/blocks/Article.astro +0 -40
  196. package/src/components/Footer.astro +0 -193
  197. package/src/components/ThemeSelect.astro +0 -41
  198. package/src/components/experimental/Form.astro +0 -53
  199. package/src/components/experimental/Gallery.astro +0 -104
  200. package/src/components/experimental/Logo.astro +0 -38
  201. package/src/components/experimental/Prose.astro +0 -192
  202. package/src/content/pages/base/icon.mdx +0 -55
  203. package/src/content/pages/base/image.mdx +0 -42
  204. package/src/content/pages/base/input.mdx +0 -56
  205. package/src/content/pages/base/rating.mdx +0 -55
  206. package/src/content/pages/base/textarea.mdx +0 -58
  207. package/src/content/pages/base/theme-select.mdx +0 -15
  208. package/src/content/pages/layouts/_layout.mdx +0 -14
  209. package/src/content/pages/layouts/docslayout.mdx +0 -14
  210. package/src/content/pages/overview/components.mdx +0 -75
  211. package/src/content/pages/overview/content-collections.mdx +0 -139
  212. package/src/content/pages/overview/frameworks.mdx +0 -198
  213. package/src/content/pages/overview/installation.mdx +0 -53
  214. package/src/content/pages/overview/introduction.mdx +0 -30
  215. package/src/content/pages/overview/theming.mdx +0 -69
  216. package/src/content/pages/schemas/page.mdx +0 -17
  217. package/src/content/pages/schemas/preset.mdx +0 -9
  218. package/src/content/pages/showcase/record.md +0 -3
  219. package/src/content/pages/typography/heading.mdx +0 -73
  220. package/src/content/pages/typography/list.mdx +0 -51
  221. package/src/content/pages/typography/text.mdx +0 -61
  222. package/src/content/presets/blocks.yml +0 -1
  223. package/src/css/space.css +0 -77
  224. package/src/css/styles.css +0 -0
  225. package/src/images/avatar-1.yml +0 -1
  226. package/src/integration/generate-colors.ts +0 -639
  227. package/src/integration/tailwind-plugin.ts +0 -80
  228. package/src/integration/unocss-preset.ts +0 -84
  229. package/src/layouts/BlockLayout.astro +0 -19
  230. package/src/layouts/ContactLayout.astro +0 -21
  231. package/src/layouts/DocsLayout.astro +0 -73
  232. package/src/layouts/OverviewLayout.astro +0 -42
  233. /package/src/content/pages/{base → docs/components}/_dialog.mdx +0 -0
  234. /package/src/content/pages/{base → docs/components}/_drawer.mdx +0 -0
  235. /package/src/content/pages/{base → docs/components}/_localeswitcher.mdx +0 -0
  236. /package/src/schemas/utils/{parents.ts → categories.ts} +0 -0
Binary file
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "Fulldev UI",
3
3
  "short_name": "Fulldev UI",
4
- "description": "A Multi-platform Favicon generator for Astro Project.",
4
+ "description": "Fulldev UI",
5
5
  "dir": "auto",
6
- "lang": "en-US",
6
+ "lang": "en-GB",
7
7
  "display": "standalone",
8
+ "display_override": [
9
+ "window-controls-overlay",
10
+ "standalone"
11
+ ],
8
12
  "orientation": "any",
9
13
  "start_url": "/?homescreen=1",
10
14
  "background_color": "#fff",
@@ -20,7 +24,7 @@
20
24
  "src": "/favicon/android-chrome-512x512.png",
21
25
  "sizes": "512x512",
22
26
  "type": "image/png",
23
- "purpose": "any"
27
+ "purpose": "maskable"
24
28
  }
25
29
  ]
26
30
  }
Binary file
@@ -1,43 +1,30 @@
1
1
  ---
2
+ import type { ComponentProps } from 'astro/types'
2
3
  import Element from 'fulldev-ui/components/Element.astro'
3
4
  import Text from 'fulldev-ui/components/Text.astro'
4
5
 
5
6
  type Props = {
6
- color?: 'base' | 'brand' | undefined
7
7
  size?: 'sm' | 'md' | 'lg' | undefined
8
- text?: string | undefined
8
+ text?: ComponentProps<typeof Text>['text']
9
9
  }
10
10
 
11
- const { color = 'brand', size = 'sm', text, ...rest } = Astro.props
11
+ const { size = 'sm', text, ...rest } = Astro.props
12
12
  ---
13
13
 
14
14
  <Element
15
15
  class:list={'banner'}
16
16
  as="header"
17
17
  {size}
18
- {color}
19
18
  {...rest}
20
19
  >
21
20
  <Text text={text} />
22
21
  </Element>
23
22
 
24
- <style lang="scss" is:global>
23
+ <style is:global>
25
24
  @layer fulldev {
26
25
  .banner {
27
- display: flex;
28
- position: relative;
29
- justify-content: center;
30
- align-items: center;
31
- background-color: var(--color-9);
32
- padding: 0 var(--gutter);
33
- width: 100%;
34
- min-height: var(--banner-height);
35
- overflow: hidden;
36
- text-align: center;
37
-
38
- .text {
39
- color: var(--color-contrast);
40
- }
26
+ @apply relative z-50 flex w-full items-center justify-center overflow-hidden bg-primary px-gutter text-center text-sm text-primary-foreground;
27
+ height: var(--banner-height);
41
28
 
42
29
  &,
43
30
  & ~ * {
@@ -7,7 +7,6 @@ const { ...rest } = Astro.props
7
7
  <Section
8
8
  class:list="colleagues"
9
9
  structure="grid"
10
- align="center"
11
10
  position="inset"
12
11
  {...rest}
13
12
  />
@@ -1,24 +1,23 @@
1
1
  ---
2
- import Button from 'fulldev-ui/components/Button.astro'
3
- import Buttons from 'fulldev-ui/components/Buttons.astro'
4
2
  import Channels from 'fulldev-ui/components/Channels.astro'
5
3
  import Element from 'fulldev-ui/components/Element.astro'
6
- import Form from 'fulldev-ui/components/experimental/Form.astro'
4
+ import Form from 'fulldev-ui/components/Form.astro'
7
5
  import Heading from 'fulldev-ui/components/Heading.astro'
8
6
  import Image from 'fulldev-ui/components/Image.astro'
9
- import Input from 'fulldev-ui/components/Input.astro'
10
- import Section from 'fulldev-ui/components/Section.astro'
7
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
11
8
  import Socials from 'fulldev-ui/components/Socials.astro'
12
9
  import Tagline from 'fulldev-ui/components/Tagline.astro'
13
- import Text from 'fulldev-ui/components/Text.astro'
14
- import Textarea from 'fulldev-ui/components/Textarea.astro'
15
10
 
16
11
  const {
12
+ as = 'section',
13
+ size = 'md',
14
+ variant = 1,
17
15
  heading,
18
16
  form,
19
17
  text,
20
18
  tagline,
21
19
  googleMaps,
20
+ paragraph,
22
21
  buttons,
23
22
  socials,
24
23
  position,
@@ -29,87 +28,89 @@ const {
29
28
  } = Astro.props
30
29
  ---
31
30
 
32
- <Section
31
+ <Element
33
32
  class:list="contact"
34
- structure="split"
33
+ {as}
34
+ {size}
35
+ {variant}
35
36
  {...rest}
36
37
  >
37
- <Element class:list="column">
38
- <Tagline
39
- color="brand"
40
- text={tagline}
41
- />
42
- <Heading
43
- size={'sm'}
44
- level={level}
45
- text={heading}
46
- />
47
- <Text text={text} />
48
- <Buttons {buttons} />
49
- <Channels {channels} />
50
- <Socials {socials} />
51
- <Form
52
- action="/thank-you"
53
- method="POST"
54
- >
55
- {
56
- form.fields.map((field: any) => {
57
- if (field.type === 'textarea') {
58
- return (
59
- <Textarea
60
- label={field.label}
61
- id={field.name}
62
- name={field.name}
63
- required={field.required}
64
- />
65
- )
66
- }
67
- return (
68
- <Input
69
- label={field.label}
70
- id={field.name}
71
- name={field.name}
72
- type={field.type}
73
- required={field.required}
74
- />
75
- )
76
- })
77
- }
78
- <Button
79
- type="submit"
80
- color="brand"
81
- variant="primary"
82
- text={form.button}
38
+ <Element class:list="contact-container">
39
+ <Element class:list="contact-segment">
40
+ <Element class:list="contact-content">
41
+ <Tagline text={tagline} />
42
+ <Heading
43
+ size={'sm'}
44
+ level={level}
45
+ text={heading}
46
+ />
47
+ <Paragraph text={paragraph} />
48
+ </Element>
49
+ <Channels {channels} />
50
+ <Socials {socials} />
51
+ <Form
52
+ action="/thank-you"
53
+ method="POST"
54
+ {...form}
83
55
  />
84
- </Form>
56
+ </Element>
57
+ <Image
58
+ class:list="contact-image"
59
+ {position}
60
+ {...image}
61
+ />
85
62
  </Element>
63
+ </Element>
86
64
 
87
- <Image
88
- {position}
89
- {...image}
90
- />
91
- </Section>
92
-
93
- <style is:global lang="scss">
65
+ <style is:global>
94
66
  @layer fulldev {
95
67
  .contact {
96
- .column {
97
- display: flex;
98
- flex-direction: column;
99
- align-items: flex-start;
68
+ @apply relative w-full;
69
+
70
+ .contact-container {
71
+ @apply mx-auto flex h-full w-full flex-col;
72
+ }
73
+
74
+ .contact-segment {
75
+ @apply z-10 flex flex-col items-start gap-8;
100
76
  }
101
77
 
102
- > .column {
103
- gap: var(--space-5);
78
+ .contact-content {
79
+ @apply flex max-w-screen-md flex-col gap-6;
104
80
  }
105
81
 
106
- .channel + .channel {
107
- margin-top: var(--space-3) !important;
82
+ &.dark {
83
+ @apply bg-background;
108
84
  }
109
85
 
110
- .socials {
111
- display: flex;
112
- gap: var(--space-2);
86
+ /* Narrow left aligned */
87
+ &.variant-1 {
88
+ .contact-container {
89
+ @apply max-w-screen-md px-gutter py-8;
90
+ }
91
+
92
+ .contact-segment {
93
+ @apply gap-8 py-16;
94
+ }
95
+
96
+ .content-image {
97
+ @apply rounded-lg;
98
+ }
99
+ }
100
+
101
+ /* Split */
102
+ &.variant-2 {
103
+ .contact-container {
104
+ @apply container gap-x-gutter gap-y-16 py-20 lg:grid lg:grid-cols-2 lg:items-center;
105
+ }
106
+
107
+ .contact-segment {
108
+ @apply max-w-xl;
109
+ }
110
+
111
+ .contact-image {
112
+ @apply rounded-lg;
113
+ }
113
114
  }
114
115
  }
115
116
  }
@@ -1,12 +1,130 @@
1
1
  ---
2
- import Section from 'fulldev-ui/components/Section.astro'
2
+ import type { ComponentProps, HTMLAttributes, HTMLTag } from 'astro/types'
3
+ import Badge from 'fulldev-ui/components/Badge.astro'
4
+ import Buttons from 'fulldev-ui/components/Buttons.astro'
5
+ import Element from 'fulldev-ui/components/Element.astro'
6
+ import Heading from 'fulldev-ui/components/Heading.astro'
7
+ import Image from 'fulldev-ui/components/Image.astro'
8
+ import Lead from 'fulldev-ui/components/Lead.astro'
9
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
10
+ import Rating from 'fulldev-ui/components/Rating.astro'
11
+ import Tagline from 'fulldev-ui/components/Tagline.astro'
3
12
 
4
- const { ...rest } = Astro.props
13
+ interface Props extends HTMLAttributes<'section'> {
14
+ rating?: ComponentProps<typeof Rating> | undefined
15
+ badge?: ComponentProps<typeof Badge> | undefined
16
+ tagline?: ComponentProps<typeof Tagline>['text']
17
+ heading?: ComponentProps<typeof Heading>['text']
18
+ lead?: ComponentProps<typeof Lead>['text']
19
+ paragraph?: ComponentProps<typeof Paragraph>['text']
20
+ buttons?: ComponentProps<typeof Buttons>['buttons']
21
+ image?: ComponentProps<typeof Image>['id']
22
+ level?: ComponentProps<typeof Heading>['level']
23
+ as?: HTMLTag
24
+ size?: 'sm' | 'md' | 'lg' | undefined
25
+ variant?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | undefined
26
+ }
27
+
28
+ const {
29
+ as = 'section',
30
+ size = 'md',
31
+ variant = 1,
32
+ level = 2,
33
+ rating,
34
+ tagline,
35
+ badge,
36
+ heading,
37
+ lead,
38
+ paragraph,
39
+ buttons,
40
+ image,
41
+ ...rest
42
+ } = Astro.props
5
43
  ---
6
44
 
7
- <Section
45
+ <Element
8
46
  class:list="content"
9
- structure="split"
10
- align="center"
47
+ {as}
48
+ {size}
49
+ {variant}
11
50
  {...rest}
12
- />
51
+ >
52
+ <Element class:list="content-container">
53
+ <Element class:list="content-segment">
54
+ <Element class:list="content-content">
55
+ <Rating
56
+ {size}
57
+ {...rating}
58
+ />
59
+ <Tagline
60
+ text={tagline}
61
+ {size}
62
+ />
63
+ <Badge
64
+ {size}
65
+ {...badge}
66
+ />
67
+ <Heading
68
+ text={heading}
69
+ {level}
70
+ {size}
71
+ />
72
+ <Lead
73
+ text={lead}
74
+ {size}
75
+ />
76
+ <Paragraph
77
+ text={paragraph}
78
+ {size}
79
+ />
80
+ <slot name="content" />
81
+ </Element>
82
+ <Buttons
83
+ variant="secondary"
84
+ {size}
85
+ {buttons}
86
+ />
87
+ <slot name="segment" />
88
+ </Element>
89
+ <Image
90
+ class:list="content-image"
91
+ {...image}
92
+ />
93
+ <slot />
94
+ </Element>
95
+ </Element>
96
+
97
+ <style is:global>
98
+ @layer fulldev {
99
+ .content {
100
+ @apply relative w-full;
101
+
102
+ .content-container {
103
+ @apply flex h-full flex-col;
104
+ }
105
+
106
+ .content-segment {
107
+ @apply z-10 flex flex-col items-start gap-8;
108
+ }
109
+
110
+ .content-content {
111
+ @apply flex max-w-screen-md flex-col gap-6;
112
+ }
113
+
114
+ &.dark {
115
+ @apply bg-background;
116
+ }
117
+
118
+ /* Split */
119
+ &.variant-1 {
120
+ .content-container {
121
+ @apply container py-16 lg:grid lg:grid-cols-2 lg:items-center;
122
+ }
123
+
124
+ .content-image {
125
+ @apply rounded-lg;
126
+ }
127
+ }
128
+ }
129
+ }
130
+ </style>
@@ -7,9 +7,7 @@ const { ...rest } = Astro.props
7
7
  <Section
8
8
  class:list="cta"
9
9
  variant="primary"
10
- align="center"
11
10
  size="lg"
12
- color="brand"
13
11
  panel
14
12
  {...rest}
15
13
  />
@@ -7,8 +7,6 @@ const { ...rest } = Astro.props
7
7
  <Section
8
8
  level={1}
9
9
  size="lg"
10
- align="center"
11
10
  variant="primary"
12
- color="brand"
13
11
  {...rest}
14
12
  />
@@ -1,7 +1,111 @@
1
1
  ---
2
- import FooterComponent from 'fulldev-ui/components/Footer.astro'
2
+ import type { ComponentProps, HTMLAttributes, HTMLTag } from 'astro/types'
3
+ import Channels from 'fulldev-ui/components/Channels.astro'
4
+ import Element from 'fulldev-ui/components/Element.astro'
5
+ import Heading from 'fulldev-ui/components/Heading.astro'
6
+ import Logo from 'fulldev-ui/components/Logo.astro'
7
+ import Menu from 'fulldev-ui/components/Menu.astro'
8
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
9
+ import Socials from 'fulldev-ui/components/Socials.astro'
10
+ import Text from 'fulldev-ui/components/Text.astro'
11
+ import type { GlobalProps } from 'fulldev-ui/types/global-props'
3
12
 
4
- const { ...rest } = Astro.props
13
+ interface Props extends GlobalProps, HTMLAttributes<'footer'> {
14
+ as?: HTMLTag
15
+ variant?: 1 | undefined
16
+ size?: 'sm' | 'md' | 'lg' | undefined
17
+ logo?: ComponentProps<typeof Logo>['src']
18
+ company?: ComponentProps<typeof Logo>['company']
19
+ paragraph?: ComponentProps<typeof Paragraph>['text']
20
+ socials?: ComponentProps<typeof Socials>['socials']
21
+ channels?: ComponentProps<typeof Channels>['channels']
22
+ hours?: any
23
+ menu?: ComponentProps<typeof Menu>['groups']
24
+ html?: any
25
+ }
26
+
27
+ const {
28
+ as = 'footer',
29
+ size = 'sm',
30
+ variant = 1,
31
+ logo,
32
+ company,
33
+ paragraph,
34
+ socials,
35
+ channels,
36
+ hours,
37
+ menu,
38
+ html,
39
+ ...rest
40
+ } = Astro.props
5
41
  ---
6
42
 
7
- <FooterComponent {...rest} />
43
+ <Element
44
+ class:list="footer"
45
+ {as}
46
+ {size}
47
+ {variant}
48
+ {...rest}
49
+ >
50
+ <Element class:list="footer-container">
51
+ <Element class:list="footer-content">
52
+ <Logo
53
+ {size}
54
+ {company}
55
+ {...typeof logo === 'string' ? { src: logo } : logo}
56
+ />
57
+ <Paragraph
58
+ {size}
59
+ text={paragraph}
60
+ />
61
+ <Socials
62
+ {size}
63
+ {socials}
64
+ />
65
+ </Element>
66
+ <Channels {channels} />
67
+ <Fragment set:html={html} />
68
+ <!-- <Hours {hours} /> -->
69
+ <Menu
70
+ direction="row"
71
+ groups={menu}
72
+ {size}
73
+ />
74
+ <Element class:list="hours column">
75
+ <Heading
76
+ text={hours?.heading}
77
+ level={5}
78
+ />
79
+ <Element>
80
+ {
81
+ Object.entries(hours?.days ?? {})?.map(([key, value]: any) => (
82
+ <Element class:list="spread">
83
+ <Text text={key} />
84
+ <Text text={value} />
85
+ </Element>
86
+ ))
87
+ }
88
+ </Element>
89
+ </Element>
90
+ </Element>
91
+ </Element>
92
+
93
+ <style is:global>
94
+ @layer fulldev {
95
+ .footer {
96
+ @apply relative mt-auto w-full;
97
+
98
+ &.dark {
99
+ @apply bg-background;
100
+ }
101
+
102
+ .footer-container {
103
+ @apply container flex flex-wrap justify-between gap-12 py-12;
104
+ }
105
+
106
+ .footer-content {
107
+ @apply flex max-w-60 flex-col gap-4;
108
+ }
109
+ }
110
+ }
111
+ </style>