diff --git a/cloudcannon.config.yml b/cloudcannon.config.yml index c06296c5c..3a8d8cd98 100644 --- a/cloudcannon.config.yml +++ b/cloudcannon.config.yml @@ -80,6 +80,9 @@ _inputs: step: 0.1 head: label: SEO / Settings + type: object + options: + empty_type: object head.title: label: SEO title comment: 50-60 characters diff --git a/src/blocks/Compare1.astro b/src/blocks/Compare1.astro new file mode 100644 index 000000000..0005239c9 --- /dev/null +++ b/src/blocks/Compare1.astro @@ -0,0 +1,64 @@ +--- +import Button from 'fulldev-ui/components/Button.astro' +import Heading from 'fulldev-ui/components/Heading.astro' +import List from 'fulldev-ui/components/List.astro' +import Paragraph from 'fulldev-ui/components/Paragraph.astro' +import Tagline from 'fulldev-ui/components/Tagline.astro' +import type { BlockSchema } from 'fulldev-ui/schemas/block' +import Card from 'fulldev-ui/structures/Card.astro' +import Container from 'fulldev-ui/structures/Container.astro' +import Prose from 'fulldev-ui/structures/Prose.astro' +import Section from 'fulldev-ui/structures/Section.astro' +import Stack from 'fulldev-ui/structures/Stack.astro' + +interface Props extends BlockSchema {} + +const { depth = 2, heading, paragraph, button, pros, cons } = Astro.props +--- + +
+ + + + + + + { + [cons || {}, pros || {}].map( + ({ tagline, heading, paragraph, list }, i) => ( + + + + + + + + + ) + ) + } + +
diff --git a/src/components/List.astro b/src/components/List.astro index 8377fd3a2..e082ae8db 100644 --- a/src/components/List.astro +++ b/src/components/List.astro @@ -1,28 +1,32 @@ --- import type { HTMLAttributes } from 'astro/types' import Element from 'fulldev-ui/components/Element.astro' +import Icon from 'fulldev-ui/components/Icon.astro' interface Props extends HTMLAttributes<'ul' | 'ol'> { as?: 'ul' | 'ol' | undefined size?: 'sm' | 'md' | 'lg' | undefined items?: string[] | undefined muted?: boolean | undefined + icon?: string | undefined } -const { as = 'ul', items, ...rest } = Astro.props +const { as = 'ul', items, icon, ...rest } = Astro.props --- { items?.map((item) => ( - + + + + + + )) } @@ -32,14 +36,14 @@ const { as = 'ul', items, ...rest } = Astro.props @layer fulldev { .list, .prose :is(ul, ol) { - @apply ml-6; + @apply pl-4; &:is(ul) { @apply list-disc; } ul { - @apply ml-6 mt-2 list-disc; + @apply ml-5 mt-2 list-disc; } &:is(ol) { @@ -47,7 +51,7 @@ const { as = 'ul', items, ...rest } = Astro.props } ol { - @apply ml-6 mt-2 list-decimal; + @apply ml-5 mt-2 list-decimal; } li { @@ -57,11 +61,35 @@ const { as = 'ul', items, ...rest } = Astro.props &.size-sm, &:where(.size-sm &) { @apply text-sm; + + .icon { + @apply mt-0; + } } &.size-lg, &:where(.size-lg &) { @apply text-lg; + + .icon { + @apply mt-1; + } + } + + &.muted { + @apply text-muted-foreground; + } + + .icon { + @apply -ml-5 mt-0.5 shrink-0 text-inherit; + } + + &.has-icon { + @apply ml-0 list-none; + + li { + @apply flex gap-2; + } } } } diff --git a/src/content/pages/docs/components/list.mdx b/src/content/pages/docs/components/list.mdx index d5db20980..e2e89f899 100644 --- a/src/content/pages/docs/components/list.mdx +++ b/src/content/pages/docs/components/list.mdx @@ -40,3 +40,14 @@ import List from 'fulldev-ui/components/List.astro' ``` + +### `icon` + +```astro live +--- +import List from 'fulldev-ui/components/List.astro' +--- + + + +``` diff --git a/src/schemas/block.ts b/src/schemas/block.ts index 911534219..992155712 100644 --- a/src/schemas/block.ts +++ b/src/schemas/block.ts @@ -11,6 +11,8 @@ export const blockSchema = cardSchema search: z.boolean().optional(), cart: z.boolean().optional(), cards: cardSchema.array().optional(), + pros: cardSchema.optional(), + cons: cardSchema.optional(), pages: pathSchema('pages').array().optional(), records: pathSchema('records').array().optional(), soldout: z.boolean().optional(),