diff --git a/src/assets/scripts/main.js b/src/assets/scripts/main.js new file mode 100644 index 00000000..7932ccda --- /dev/null +++ b/src/assets/scripts/main.js @@ -0,0 +1,34 @@ +let currentFeatureId = 0; +function nextFeatureId() { + if (currentFeatureId >= 3) { + currentFeatureId = 0; + } else { + currentFeatureId += 1; + } + return currentFeatureId; +} +function selectFeature(t) { + const windowContent = document.querySelector('.showcase .window__content'); + const r = windowContent.src; + const o = '' + r.substr(0, r.lastIndexOf('/') + 1) + t + '.jpg'; + const c = document.querySelector(".showcase__feature[data-id='" + t + "']"); + windowContent.src = o; + document.querySelectorAll('.showcase__feature').forEach(function (f) { + f.classList.remove('showcase__feature--active'); + }); + + c.classList.add('showcase__feature--active'); +} +const i = setInterval(function () { + selectFeature(nextFeatureId()); +}, 4e3); +document.querySelectorAll('.showcase__feature').forEach(function (feature) { + feature.onclick = function (e) { + e.preventDefault(); + clearInterval(i); + selectFeature(this.getAttribute('data-id')); + return false; + }; +}); + +console.log('main.js loaded'); \ No newline at end of file diff --git a/src/components/ui/ItemGrid5.astro b/src/components/ui/ItemGrid5.astro new file mode 100644 index 00000000..7fedede0 --- /dev/null +++ b/src/components/ui/ItemGrid5.astro @@ -0,0 +1,65 @@ +--- +import type { ItemGrid as Props } from '~/types'; +import { twMerge } from 'tailwind-merge'; +import Button from './Button.astro'; +import { Icon } from 'astro-icon/components'; + +const { items = [], columns, defaultIcon = '', classes = {} } = Astro.props; + +const { + container: containerClass = '', + panel: panelClass = '', + title: titleClass = '', + description: descriptionClass = '', + icon: defaultIconClass = 'text-primary', + action: actionClass = '', +} = classes; +--- + +{ + items && ( +
+ {items.map(({ title, description, icon, callToAction, classes: itemClasses = {} }, idx) => ( +
+
+
+ {(icon || defaultIcon) && ( + + )} +
+
+ {title &&

{title}

} + {description && ( +

+ )} + {callToAction && ( +

+
+ )} +
+
+
+ ))} +
+ ) +} diff --git a/src/components/widgets/Content3.astro b/src/components/widgets/Content3.astro new file mode 100644 index 00000000..dd03367d --- /dev/null +++ b/src/components/widgets/Content3.astro @@ -0,0 +1,177 @@ +--- +import type { Content3 as Props } from '~/types'; +import Headline from '../ui/Headline.astro'; +import WidgetWrapper from '../ui/WidgetWrapper.astro'; +import Image from '~/components/common/Image.astro'; +import Button from '~/components/ui/Button.astro'; +import ItemGrid5 from '../ui/ItemGrid5.astro'; + +const { + title = await Astro.slots.render('title'), + subtitle = await Astro.slots.render('subtitle'), + tagline, + content = await Astro.slots.render('content'), + callToAction, + items = [], + columns, + isReversed = false, + isAfterContent = false, + + img1 = await Astro.slots.render('img1'), + img2 = await Astro.slots.render('img2'), + img3 = await Astro.slots.render('img3'), + img4 = await Astro.slots.render('img4'), + + id, + isDark = false, + classes = {}, + bg = await Astro.slots.render('bg'), +} = Astro.props; +--- + + + +
+
+
+ {content &&
} + + { + callToAction && ( +
+
+ ) + } + +
+ +
+
+ + diff --git a/src/pages/index.astro b/src/pages/index.astro index 59f6ca54..7208132f 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -5,9 +5,9 @@ import Hero from '~/components/widgets/Hero.astro'; // import Note from '~/components/widgets/Note.astro'; // import Features from '~/components/widgets/Features.astro'; // import Features2 from '~/components/widgets/Features2.astro'; -import Steps from '~/components/widgets/Steps.astro'; +// import Steps from '~/components/widgets/Steps.astro'; import Content from '~/components/widgets/Content.astro'; -import Content2 from '~/components/widgets/Content2.astro'; +import Content3 from '~/components/widgets/Content3.astro'; // import Image from '~/components/common/Image.astro'; // import { Image } from "astro:assets" import { Image } from 'astro:assets'; @@ -18,6 +18,9 @@ import CallToAction from '~/components/widgets/CallToAction.astro'; import showcase from '../assets/images/showcase.jpg'; import Features4 from '~/components/widgets/Features4.astro'; import show0 from '../assets/images/showcase/0.jpg'; +import show1 from '../assets/images/showcase/1.jpg'; +import show2 from '../assets/images/showcase/2.jpg'; +import show3 from '../assets/images/showcase/3.jpg'; const metadata = { title: 'AstroWind — Free template for creating websites with Astro + Tailwind CSS', @@ -143,7 +146,7 @@ const metadata = { ]} /> - diff --git a/src/types.d.ts b/src/types.d.ts index 6c4223bd..bd39060e 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -283,4 +283,17 @@ export interface Content extends Omit, Widget { callToAction?: CallToAction; } +export interface Content3 extends Omit, Widget { + content?: string; + img1?: string | unknown; + img2?: string | unknown; + img3?: string | unknown; + img4?: string | unknown; + items?: Array; + columns?: number; + isReversed?: boolean; + isAfterContent?: boolean; + callToAction?: CallToAction; +} + export interface Contact extends Omit, Form, Widget {}