summaryrefslogtreecommitdiff
path: root/src/components/widgets/Features3.astro
blob: 62ab475e5aba14ef72ba28b2fd6fce02fda586ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
---
import Headline from '~/components/ui/Headline.astro';
import ItemGrid from '~/components/ui/ItemGrid.astro';
import WidgetWrapper from '~/components/ui/WidgetWrapper.astro';
import Image from '~/components/common/Image.astro';
import type { Features as Props } from '~/types';

const {
  title = await Astro.slots.render('title'),
  subtitle = await Astro.slots.render('subtitle'),
  tagline = await Astro.slots.render('tagline'),
  image,
  items = [],
  columns,
  defaultIcon,
  isBeforeContent,
  isAfterContent,

  id,
  isDark = false,
  classes = {},
  bg = await Astro.slots.render('bg'),
} = Astro.props;
---

<WidgetWrapper
  id={id}
  isDark={isDark}
  containerClass={`${isBeforeContent ? 'md:pb-8 lg:pb-12' : ''} ${isAfterContent ? 'pt-0 md:pt-0 lg:pt-0' : ''} ${
    classes?.container ?? ''
  }`}
  bg={bg}
>
  <Headline title={title} subtitle={subtitle} tagline={tagline} classes={classes?.headline as Record<string, string>} />

  <div aria-hidden="true" class="aspect-w-16 aspect-h-7">
    {
      image && (
        <div class="w-full h-80 object-cover rounded-xl mx-auto bg-gray-500 shadow-lg">
          {typeof image === 'string' ? (
            <Fragment set:html={image} />
          ) : (
            <Image
              class="w-full h-80 object-cover rounded-xl mx-auto bg-gray-500 shadow-lg"
              width="auto"
              height={320}
              widths={[400, 768]}
              layout="fullWidth"
              {...image}
            />
          )}
        </div>
      )
    }
  </div>

  <ItemGrid
    items={items}
    columns={columns}
    defaultIcon={defaultIcon}
    classes={{
      container: 'mt-12',
      panel: 'max-w-full sm:max-w-md',
      title: 'text-lg font-semibold',
      description: 'mt-0.5',
      icon: 'flex-shrink-0 mt-1 text-primary w-6 h-6',
      ...((classes?.items as object) ?? {}),
    }}
  />
</WidgetWrapper>