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

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 (183) hide show
  1. package/package.json +1 -1
  2. package/src/blocks/Banner1.astro +35 -0
  3. package/src/blocks/Contact1.astro +92 -0
  4. package/src/blocks/Cta1.astro +72 -0
  5. package/src/blocks/Feature1.astro +67 -0
  6. package/src/blocks/Footer.astro +47 -54
  7. package/src/blocks/Header1.astro +192 -0
  8. package/src/blocks/Hero1.astro +74 -0
  9. package/src/blocks/Intro1.astro +56 -0
  10. package/src/blocks/Products1.astro +90 -0
  11. package/src/blocks/{Hero.astro → _Hero.astro} +7 -6
  12. package/src/components/Badge.astro +10 -18
  13. package/src/components/Banner.astro +26 -0
  14. package/src/components/Block.astro +49 -0
  15. package/src/components/Blocks.astro +26 -0
  16. package/src/components/Button.astro +10 -23
  17. package/src/components/Card.astro +8 -150
  18. package/src/components/Cart.astro +1 -0
  19. package/src/components/CartSummary.astro +3 -3
  20. package/src/components/Channel.astro +5 -14
  21. package/src/components/Container.astro +25 -0
  22. package/src/components/Drawer.astro +57 -118
  23. package/src/components/DrawerOld.astro +143 -0
  24. package/src/components/Element.astro +2 -0
  25. package/src/components/Form.astro +5 -3
  26. package/src/components/Head.astro +18 -32
  27. package/src/components/Header.astro +8 -105
  28. package/src/components/Heading.astro +29 -70
  29. package/src/components/Icon.astro +6 -4
  30. package/src/components/Link.astro +12 -18
  31. package/src/components/Logo.astro +31 -18
  32. package/src/components/Navigation.astro +39 -0
  33. package/src/components/Panel.astro +25 -0
  34. package/src/components/Paragraph.astro +24 -7
  35. package/src/components/Price.astro +4 -4
  36. package/src/components/Prose.astro +41 -132
  37. package/src/components/Rating.astro +24 -75
  38. package/src/components/Search.astro +4 -3
  39. package/src/components/Section.astro +20 -29
  40. package/src/components/Sidebar.astro +44 -64
  41. package/src/components/Social.astro +9 -2
  42. package/src/components/Tagline.astro +21 -31
  43. package/src/components/Toc.astro +12 -3
  44. package/src/components/_Author.astro +90 -0
  45. package/src/components/_Header.astro +129 -0
  46. package/src/components/_Prose copy.astro +172 -0
  47. package/src/components/_Sidebar copy.astro +87 -0
  48. package/src/content/categories/category.md +7 -0
  49. package/src/content/config.ts +7 -8
  50. package/src/content/docs/components/text.mdx +47 -0
  51. package/src/content/docs/components.mdx +1 -4
  52. package/src/content/docs/index.mdx +1 -4
  53. package/src/content/layouts/base.yml +41 -80
  54. package/src/content/layouts/docs.yml +2 -70
  55. package/src/content/pages/index.mdx +17 -25
  56. package/src/content/{categories/mugs.md → posts/post.md} +1 -1
  57. package/src/content/products/product.md +3 -3
  58. package/src/css/theme.css +2 -0
  59. package/src/images/favicon/android-chrome-192x192.png +0 -0
  60. package/src/images/favicon/android-chrome-512x512.png +0 -0
  61. package/src/images/favicon/apple-touch-icon.png +0 -0
  62. package/src/images/favicon/browserconfig.xml +9 -0
  63. package/src/images/favicon/favicon-16x16.png +0 -0
  64. package/src/images/favicon/favicon-32x32.png +0 -0
  65. package/src/images/favicon/favicon-48x48.png +0 -0
  66. package/src/images/favicon/favicon.ico +0 -0
  67. package/src/images/favicon/favicon.svg +16 -0
  68. package/src/images/favicon/manifest.webmanifest +30 -0
  69. package/src/images/favicon/mstile-150x150.png +0 -0
  70. package/src/images/favicon/safari-pinned-tab.svg +16 -0
  71. package/src/images/favicon/yandex-browser-50x50.png +0 -0
  72. package/src/images/favicon/yandex-browser-manifest.json +9 -0
  73. package/src/integration/index.ts +10 -1
  74. package/src/layouts/CategoryLayout.astro +16 -9
  75. package/src/layouts/DocLayout.astro +49 -7
  76. package/src/layouts/Layout.astro +55 -27
  77. package/src/layouts/PageLayout.astro +12 -5
  78. package/src/layouts/PostLayout.astro +7 -5
  79. package/src/layouts/ProductLayout.astro +12 -7
  80. package/src/pages/test.astro +7 -1
  81. package/src/schemas/blocks/banner.ts +10 -0
  82. package/src/schemas/blocks/categories.ts +14 -0
  83. package/src/schemas/blocks/contact.ts +18 -0
  84. package/src/schemas/blocks/cta.ts +18 -0
  85. package/src/schemas/blocks/feature.ts +18 -0
  86. package/src/schemas/blocks/hero.ts +20 -0
  87. package/src/schemas/blocks/intro.ts +16 -0
  88. package/src/schemas/blocks/products.ts +14 -0
  89. package/src/schemas/categorySchema.ts +8 -8
  90. package/src/schemas/components/avatar.ts +4 -1
  91. package/src/schemas/components/badge.ts +16 -11
  92. package/src/schemas/components/block.ts +18 -0
  93. package/src/schemas/components/button.ts +13 -19
  94. package/src/schemas/components/channel.ts +15 -9
  95. package/src/schemas/components/footer.ts +15 -14
  96. package/src/schemas/components/head.ts +17 -0
  97. package/src/schemas/components/header.ts +19 -16
  98. package/src/schemas/components/heading.ts +7 -1
  99. package/src/schemas/components/icon.ts +7 -1
  100. package/src/schemas/components/image.ts +17 -14
  101. package/src/schemas/components/link.ts +10 -16
  102. package/src/schemas/components/logo.ts +12 -2
  103. package/src/schemas/components/menu.ts +11 -13
  104. package/src/schemas/components/navigation.ts +10 -0
  105. package/src/schemas/components/paragraph.ts +9 -0
  106. package/src/schemas/components/price.ts +9 -0
  107. package/src/schemas/components/rating.ts +8 -13
  108. package/src/schemas/components/sidebar.ts +14 -12
  109. package/src/schemas/components/social.ts +16 -1
  110. package/src/schemas/components/tagline.ts +7 -1
  111. package/src/schemas/docSchema.ts +6 -2
  112. package/src/schemas/imageSchema.ts +30 -1
  113. package/src/schemas/layoutSchema.ts +14 -20
  114. package/src/schemas/pageSchema.ts +9 -12
  115. package/src/schemas/postSchema.ts +6 -8
  116. package/src/schemas/productSchema.ts +18 -18
  117. package/src/types/global-props.ts +0 -9
  118. package/src/types/{virtual-modules.d.ts → virtual.d.ts} +1 -1
  119. package/src/utils/getHref.ts +3 -2
  120. package/tsconfig.json +1 -3
  121. package/example.svelte +0 -0
  122. package/parent.svelte +0 -0
  123. package/src/App.svelte +0 -0
  124. package/src/blocks/Banner.astro +0 -35
  125. package/src/blocks/Categories.astro +0 -12
  126. package/src/blocks/Colleagues.astro +0 -12
  127. package/src/blocks/Contact.astro +0 -117
  128. package/src/blocks/Content.astro +0 -130
  129. package/src/blocks/Cta.astro +0 -13
  130. package/src/blocks/Excerpt.astro +0 -12
  131. package/src/blocks/Features.astro +0 -11
  132. package/src/blocks/Header.astro +0 -7
  133. package/src/blocks/Intro.astro +0 -101
  134. package/src/blocks/Jobs.astro +0 -12
  135. package/src/blocks/Posts.astro +0 -11
  136. package/src/blocks/Prices.astro +0 -24
  137. package/src/blocks/Product.astro +0 -89
  138. package/src/blocks/Products.astro +0 -101
  139. package/src/blocks/Reviews.astro +0 -12
  140. package/src/blocks/_Contact.astro +0 -112
  141. package/src/components/CartForm.astro +0 -120
  142. package/src/components/CartList.astro +0 -122
  143. package/src/components/Lead.astro +0 -46
  144. package/src/components/ProductCard.astro +0 -52
  145. package/src/components/Text.astro +0 -43
  146. package/src/components/Writeup.astro +0 -108
  147. package/src/components/_CartList backup.astro +0 -125
  148. package/src/components/_CartList copy.astro +0 -213
  149. package/src/components/_CartListSimple.astro +0 -148
  150. package/src/components/sections.astro +0 -28
  151. package/src/content/docs/components/lead.mdx +0 -49
  152. package/src/content/docs/components/paragraph.mdx +0 -49
  153. package/src/loaders/imageLoader.ts +0 -26
  154. package/src/schemas/archive/_pageSchema.ts +0 -94
  155. package/src/schemas/components/avatars.ts +0 -4
  156. package/src/schemas/components/banner.ts +0 -3
  157. package/src/schemas/components/buttons.ts +0 -4
  158. package/src/schemas/components/card.ts +0 -43
  159. package/src/schemas/components/cards.ts +0 -4
  160. package/src/schemas/components/channels.ts +0 -4
  161. package/src/schemas/components/global.ts +0 -16
  162. package/src/schemas/components/links.ts +0 -4
  163. package/src/schemas/components/list.ts +0 -3
  164. package/src/schemas/components/section.ts +0 -17
  165. package/src/schemas/components/sections.ts +0 -3
  166. package/src/schemas/components/socials.ts +0 -4
  167. package/src/schemas/components/subheader.ts +0 -10
  168. package/src/schemas/components/text.ts +0 -3
  169. package/src/schemas/components/themer.ts +0 -3
  170. package/src/schemas/components/toc.ts +0 -3
  171. package/src/schemas/components/writeup.ts +0 -20
  172. package/src/schemas/fields/categories.ts +0 -3
  173. package/src/schemas/fields/description.ts +0 -3
  174. package/src/schemas/fields/href.ts +0 -3
  175. package/src/schemas/fields/image.ts +0 -24
  176. package/src/schemas/fields/images.ts +0 -4
  177. package/src/schemas/fields/order.ts +0 -3
  178. package/src/schemas/fields/price.ts +0 -3
  179. package/src/schemas/fields/products.ts +0 -5
  180. package/src/schemas/fields/seo.ts +0 -12
  181. package/src/schemas/fields/soldout.ts +0 -3
  182. package/src/schemas/fields/title.ts +0 -3
  183. package/src/schemas/fields/variants.ts +0 -3
@@ -1,15 +1,10 @@
1
1
  import { z } from 'astro:content'
2
- import avatar from './avatar'
3
- import avatars from './avatars'
4
- import text from './text'
5
2
 
6
- export default z.number().or(
7
- z
8
- .object({
9
- value: z.number(),
10
- avatar,
11
- avatars,
12
- text,
13
- })
14
- .partial()
15
- )
3
+ export const ratingSchema = z
4
+ .object({
5
+ score: z.number().optional(),
6
+ size: z.enum(['sm', 'md', 'lg']).default('md').optional(),
7
+ })
8
+ .strict()
9
+
10
+ export type RatingSchema = z.infer<typeof ratingSchema>
@@ -1,16 +1,18 @@
1
1
  import { z } from 'astro:content'
2
- import logo from '../components/logo'
3
- import menu from '../components/menu'
4
- import heading from './heading'
5
- import themer from './themer'
2
+ import { logoSchema } from '../components/logo'
3
+ import { headingSchema } from './heading'
4
+ import { linkSchema } from './link'
5
+ import { menuSchema } from './menu'
6
6
 
7
- export default z
7
+ export const sidebarSchema = z
8
8
  .object({
9
- themer,
10
- logo,
11
- heading,
12
- menu,
9
+ company: z.string().optional(),
10
+ logo: logoSchema.optional(),
11
+ heading: headingSchema.shape.text,
12
+ themer: z.boolean().optional(),
13
+ menus: menuSchema.array().optional(),
14
+ links: linkSchema.array().optional(),
13
15
  })
14
- .partial()
15
- .passthrough()
16
- .optional()
16
+ .strict()
17
+
18
+ export type SidebarSchema = z.infer<typeof sidebarSchema>
@@ -1,3 +1,18 @@
1
1
  import { z } from 'astro:content'
2
+ import { iconSchema } from './icon'
2
3
 
3
- export default z.string()
4
+ export const socialSchema = z
5
+ .object({
6
+ icon: iconSchema.optional(),
7
+ text: z.string().optional(),
8
+ href: z.string().optional(),
9
+ target: z.literal('_blank').default('_blank').optional(),
10
+ size: z.enum(['sm', 'md', 'lg']).default('sm').optional(),
11
+ variant: z
12
+ .enum(['primary', 'secondary', 'outline', 'ghost'])
13
+ .default('secondary')
14
+ .optional(),
15
+ })
16
+ .strict()
17
+
18
+ export type ButtonSchema = z.infer<typeof socialSchema>
@@ -1,3 +1,9 @@
1
1
  import { z } from 'astro:content'
2
2
 
3
- export default z.string()
3
+ export const taglineSchema = z
4
+ .object({
5
+ text: z.string().optional(),
6
+ })
7
+ .strict()
8
+
9
+ export type TaglineSchema = z.infer<typeof taglineSchema>
@@ -1,9 +1,13 @@
1
1
  import { z } from 'astro:content'
2
- import title from 'fulldev-ui/schemas/fields/title'
2
+ import { headSchema } from 'fulldev-ui/schemas/components/head.ts'
3
+ import { imageSchema } from './imageSchema'
3
4
 
4
5
  export const docSchema = z
5
6
  .object({
6
- title,
7
+ title: z.string().optional(),
8
+ description: z.string().optional(),
9
+ image: imageSchema.optional(),
10
+ head: headSchema.optional(),
7
11
  })
8
12
  .strict()
9
13
 
@@ -1,6 +1,6 @@
1
1
  import { z } from 'astro:content'
2
2
 
3
- export default z
3
+ export const imageSchema = z
4
4
  .object({
5
5
  id: z.string(),
6
6
  src: z.string(),
@@ -10,3 +10,32 @@ export default z
10
10
  format: z.string(),
11
11
  })
12
12
  .passthrough()
13
+
14
+ export type ImageSchema = z.infer<typeof imageSchema>
15
+
16
+ export const imageLoader = async () => {
17
+ const files = import.meta.glob('/src/images/**/*.{webp,png,jpg,jpeg,svg}', {
18
+ eager: true,
19
+ })
20
+ const entries = import.meta.glob('/src/images/**/*.{yml,yaml,json}', {
21
+ eager: true,
22
+ })
23
+
24
+ const allImages = Object.entries(files).map(([src, file]) => {
25
+ const id = src.split('/images/').pop()
26
+ const matchPath = Object.keys(entries).find(
27
+ (entry) => entry.split('.').shift() === src
28
+ ) as any
29
+ const matchFile = entries[matchPath]
30
+ const matchData = matchFile ? (matchFile as any).default : {}
31
+ const fileData = file ? (file as any).default : {}
32
+ return {
33
+ id,
34
+ ...fileData,
35
+ src,
36
+ ...matchData,
37
+ }
38
+ })
39
+
40
+ return allImages as any
41
+ }
@@ -1,28 +1,22 @@
1
1
  import { z } from 'astro:content'
2
- import banner from 'fulldev-ui/schemas/components/banner'
3
- import footer from 'fulldev-ui/schemas/components/footer'
4
- import header from 'fulldev-ui/schemas/components/header'
5
- import sidebar from 'fulldev-ui/schemas/components/sidebar'
6
- import subheader from 'fulldev-ui/schemas/components/subheader'
7
- import seo from './fields/seo'
2
+ import { footerSchema } from 'fulldev-ui/schemas/components/footer'
3
+ import { headSchema } from 'fulldev-ui/schemas/components/head.ts'
4
+ import { headerSchema } from 'fulldev-ui/schemas/components/header'
5
+ import { linkSchema } from 'fulldev-ui/schemas/components/link.ts'
6
+ import { sidebarSchema } from 'fulldev-ui/schemas/components/sidebar'
7
+ import { bannerSchema } from './blocks/banner'
8
+ import { navigationSchema } from './components/navigation'
8
9
 
9
10
  export const layoutSchema = z
10
11
  .object({
11
- theme: z.any(),
12
- code: z
13
- .object({
14
- head: z.string().optional(),
15
- body: z.string().optional(),
16
- })
17
- .optional(),
18
- seo,
19
- banner,
20
- header,
21
- subheader,
22
- footer,
23
- sidebar,
12
+ head: headSchema.optional(),
13
+ banner: bannerSchema.optional(),
14
+ navigation: navigationSchema.optional(),
15
+ header: headerSchema.optional(),
16
+ subheader: linkSchema.array().optional(),
17
+ sidebar: sidebarSchema.optional(),
18
+ footer: footerSchema.optional(),
24
19
  })
25
20
  .strict()
26
- .nullable()
27
21
 
28
22
  export type LayoutSchema = z.infer<typeof layoutSchema>
@@ -1,19 +1,16 @@
1
1
  import { z } from 'astro:content'
2
- import title from 'fulldev-ui/schemas/fields/title'
3
- import sections from './components/sections'
4
- import description from './fields/description'
5
- import href from './fields/href'
6
- import image from './fields/image'
7
- import seo from './fields/seo'
2
+ import { blockSchema } from 'fulldev-ui/schemas/components/block.ts'
3
+ import { headSchema } from 'fulldev-ui/schemas/components/head.ts'
4
+ import { imageSchema } from 'fulldev-ui/schemas/components/image.ts'
8
5
 
9
6
  export const pageSchema = z
10
7
  .object({
11
- seo,
12
- title,
13
- description,
14
- image,
15
- sections,
16
- href,
8
+ href: z.string().optional(),
9
+ title: z.string().optional(),
10
+ description: z.string().optional(),
11
+ image: imageSchema.optional(),
12
+ head: headSchema.optional(),
13
+ blocks: blockSchema.array().optional(),
17
14
  })
18
15
  .strict()
19
16
 
@@ -1,15 +1,13 @@
1
1
  import { z } from 'astro:content'
2
- import image from 'fulldev-ui/schemas/components/image'
3
- import sections from 'fulldev-ui/schemas/components/sections'
4
- import description from 'fulldev-ui/schemas/fields/description'
5
- import title from 'fulldev-ui/schemas/fields/title'
2
+ import { headSchema } from 'fulldev-ui/schemas/components/head.ts'
3
+ import { imageSchema } from 'fulldev-ui/schemas/components/image.ts'
6
4
 
7
5
  export const postSchema = z
8
6
  .object({
9
- title,
10
- description,
11
- image,
12
- sections,
7
+ title: z.string().optional(),
8
+ description: z.string().optional(),
9
+ image: imageSchema.optional(),
10
+ head: headSchema.optional(),
13
11
  })
14
12
  .strict()
15
13
 
@@ -1,22 +1,22 @@
1
1
  import { z } from 'astro:content'
2
- import categories from 'fulldev-ui/schemas/fields/categories'
3
- import description from 'fulldev-ui/schemas/fields/description'
4
- import images from 'fulldev-ui/schemas/fields/images'
5
- import title from 'fulldev-ui/schemas/fields/title'
6
- import order from './fields/order'
7
- import price from './fields/price'
8
- import soldout from './fields/soldout'
9
- import variants from './fields/variants'
2
+ import { headSchema } from 'fulldev-ui/schemas/components/head.ts'
3
+ import { imageSchema } from 'fulldev-ui/schemas/components/image.ts'
4
+ import pathSchema from 'fulldev-ui/schemas/utils/pathSchema.ts'
5
+ import { priceSchema } from './components/price'
10
6
 
11
- export const productSchema = z.object({
12
- soldout,
13
- order,
14
- title,
15
- description,
16
- price,
17
- categories,
18
- images,
19
- variants,
20
- })
7
+ export const productSchema = z
8
+ .object({
9
+ title: z.string().optional(),
10
+ description: z.string().optional(),
11
+ image: imageSchema.optional(),
12
+ order: z.number().optional(),
13
+ price: priceSchema.shape.amount,
14
+ categories: pathSchema('categories').array().optional(),
15
+ images: imageSchema.array().optional(),
16
+ head: headSchema.optional(),
17
+ variants: z.record(z.string(), z.string().array()).optional(),
18
+ soldout: z.boolean().optional(),
19
+ })
20
+ .strict()
21
21
 
22
22
  export type ProductSchema = z.infer<typeof productSchema>
@@ -5,12 +5,3 @@ export type GlobalProps = {
5
5
  size?: 'sm' | 'md' | 'lg' | string | number | null | undefined
6
6
  contrast?: boolean | undefined
7
7
  }
8
-
9
- // declare global {
10
- // type GlobalProps = {
11
- // theme?: 'light' | 'dark' | undefined
12
- // color?: 'base' | 'brand' | undefined
13
- // size?: 'sm' | 'md' | 'lg' | undefined
14
- // contrast?: boolean | undefined
15
- // }
16
- // }
@@ -1,4 +1,4 @@
1
- declare module 'virtual:*' {
1
+ declare module 'virtual:fulldev-ui/config' {
2
2
  import type { Config } from 'fulldev-ui/integration'
3
3
  const content: Config
4
4
  export default content
@@ -15,8 +15,9 @@ export function getHref(
15
15
  slug: CollectionEntry<ContentCollectionKey>['slug']
16
16
  ) {
17
17
  let href
18
- if (slug === 'index') href = `/`
19
- else if (slug) href = `/${routes[collection]}/${slug}/`
18
+ if (collection === 'pages' && slug === 'index') href = `/`
19
+ else if (slug === 'index') href = `/${routes[collection]}/`
20
+ else href = `/${routes[collection]}/${slug}/`
20
21
  href = href?.replace('//', '/')
21
22
  return href
22
23
  }
package/tsconfig.json CHANGED
@@ -4,9 +4,7 @@
4
4
  "compilerOptions": {
5
5
  "baseUrl": ".",
6
6
  "paths": {
7
- "fulldev-ui/*": [
8
- "src/*"
9
- ]
7
+ "fulldev-ui/*": ["src/*"],
10
8
  }
11
9
  },
12
10
  }
package/example.svelte DELETED
File without changes
package/parent.svelte DELETED
File without changes
package/src/App.svelte DELETED
File without changes
@@ -1,35 +0,0 @@
1
- ---
2
- import type { ComponentProps } from 'astro/types'
3
- import Element from 'fulldev-ui/components/Element.astro'
4
- import Text from 'fulldev-ui/components/Text.astro'
5
-
6
- type Props = {
7
- size?: 'sm' | 'md' | 'lg' | undefined
8
- text?: ComponentProps<typeof Text>['text']
9
- }
10
-
11
- const { size = 'sm', text, ...rest } = Astro.props
12
- ---
13
-
14
- <Element
15
- class:list={'banner'}
16
- as="header"
17
- {size}
18
- {...rest}
19
- >
20
- <Text text={text} />
21
- </Element>
22
-
23
- <style is:global>
24
- @layer fulldev {
25
- .banner {
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);
28
-
29
- &,
30
- & ~ * {
31
- --banner-height: 32px;
32
- }
33
- }
34
- }
35
- </style>
@@ -1,12 +0,0 @@
1
- ---
2
- import Section from 'fulldev-ui/components/Section.astro'
3
-
4
- const { ...rest } = Astro.props
5
- ---
6
-
7
- <Section
8
- class:list="categories"
9
- structure="grid"
10
- position="inset"
11
- {...rest}
12
- />
@@ -1,12 +0,0 @@
1
- ---
2
- import Section from 'fulldev-ui/components/Section.astro'
3
-
4
- const { ...rest } = Astro.props
5
- ---
6
-
7
- <Section
8
- class:list="colleagues"
9
- structure="grid"
10
- position="inset"
11
- {...rest}
12
- />
@@ -1,117 +0,0 @@
1
- ---
2
- import Channels from 'fulldev-ui/components/Channels.astro'
3
- import Element from 'fulldev-ui/components/Element.astro'
4
- import Form from 'fulldev-ui/components/Form.astro'
5
- import Heading from 'fulldev-ui/components/Heading.astro'
6
- import Image from 'fulldev-ui/components/Image.astro'
7
- import Paragraph from 'fulldev-ui/components/Paragraph.astro'
8
- import Socials from 'fulldev-ui/components/Socials.astro'
9
- import Tagline from 'fulldev-ui/components/Tagline.astro'
10
-
11
- const {
12
- as = 'section',
13
- size = 'md',
14
- variant = 1,
15
- heading,
16
- form,
17
- text,
18
- tagline,
19
- googleMaps,
20
- paragraph,
21
- buttons,
22
- socials,
23
- position,
24
- image,
25
- channels,
26
- level = 1,
27
- ...rest
28
- } = Astro.props
29
- ---
30
-
31
- <Element
32
- class:list="contact"
33
- {as}
34
- {size}
35
- {variant}
36
- {...rest}
37
- >
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}
55
- />
56
- </Element>
57
- <Image
58
- class:list="contact-image"
59
- {position}
60
- {...image}
61
- />
62
- </Element>
63
- </Element>
64
-
65
- <style is:global>
66
- @layer fulldev {
67
- .contact {
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;
76
- }
77
-
78
- .contact-content {
79
- @apply flex max-w-screen-md flex-col gap-6;
80
- }
81
-
82
- &.dark {
83
- @apply bg-background;
84
- }
85
-
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
- }
114
- }
115
- }
116
- }
117
- </style>
@@ -1,130 +0,0 @@
1
- ---
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'
12
-
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
43
- ---
44
-
45
- <Element
46
- class:list="content"
47
- {as}
48
- {size}
49
- {variant}
50
- {...rest}
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>
@@ -1,13 +0,0 @@
1
- ---
2
- import Section from 'fulldev-ui/components/Section.astro'
3
-
4
- const { ...rest } = Astro.props
5
- ---
6
-
7
- <Section
8
- class:list="cta"
9
- variant="primary"
10
- size="lg"
11
- panel
12
- {...rest}
13
- />
@@ -1,12 +0,0 @@
1
- ---
2
- import Section from 'fulldev-ui/components/Section.astro'
3
-
4
- const { ...rest } = Astro.props
5
- ---
6
-
7
- <Section
8
- level={1}
9
- size="lg"
10
- variant="primary"
11
- {...rest}
12
- />