@ugurdemirel/landcraft 0.1.9 → 0.1.11
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.
- package/dist/cjs/components/Badge.cjs +2 -0
- package/dist/cjs/components/Badge.cjs.map +1 -0
- package/dist/cjs/components/Blog/BlogCard.cjs +2 -0
- package/dist/cjs/components/Blog/BlogCard.cjs.map +1 -0
- package/dist/cjs/components/Blog/BlogSection.cjs +2 -0
- package/dist/cjs/components/Blog/BlogSection.cjs.map +1 -0
- package/dist/cjs/components/Blog/parts.cjs +2 -0
- package/dist/cjs/components/Blog/parts.cjs.map +1 -0
- package/dist/cjs/components/Blog/variants/Card.cjs +2 -0
- package/dist/cjs/components/Blog/variants/Card.cjs.map +1 -0
- package/dist/cjs/components/Blog/variants/Row.cjs +2 -0
- package/dist/cjs/components/Blog/variants/Row.cjs.map +1 -0
- package/dist/cjs/components/Button.cjs +2 -0
- package/dist/cjs/components/Button.cjs.map +1 -0
- package/dist/cjs/components/CTA/CTA.cjs +2 -0
- package/dist/cjs/components/CTA/CTA.cjs.map +1 -0
- package/dist/cjs/components/CTA/parts.cjs +2 -0
- package/dist/cjs/components/CTA/parts.cjs.map +1 -0
- package/dist/cjs/components/CTA/variants/Inverse.cjs +3 -0
- package/dist/cjs/components/CTA/variants/Inverse.cjs.map +1 -0
- package/dist/cjs/components/CTA/variants/Panel.cjs +3 -0
- package/dist/cjs/components/CTA/variants/Panel.cjs.map +1 -0
- package/dist/cjs/components/CTA/variants/Surface.cjs +2 -0
- package/dist/cjs/components/CTA/variants/Surface.cjs.map +1 -0
- package/dist/cjs/components/Card.cjs +2 -0
- package/dist/cjs/components/Card.cjs.map +1 -0
- package/dist/cjs/components/Container.cjs +2 -0
- package/dist/cjs/components/Container.cjs.map +1 -0
- package/dist/cjs/components/FAQ/FAQ.cjs +2 -0
- package/dist/cjs/components/FAQ/FAQ.cjs.map +1 -0
- package/dist/cjs/components/FAQ/parts.cjs +3 -0
- package/dist/cjs/components/FAQ/parts.cjs.map +1 -0
- package/dist/cjs/components/FAQ/variants/Accordion.cjs +3 -0
- package/dist/cjs/components/FAQ/variants/Accordion.cjs.map +1 -0
- package/dist/cjs/components/FAQ/variants/Cards.cjs +2 -0
- package/dist/cjs/components/FAQ/variants/Cards.cjs.map +1 -0
- package/dist/cjs/components/FAQ/variants/Split.cjs +2 -0
- package/dist/cjs/components/FAQ/variants/Split.cjs.map +1 -0
- package/dist/cjs/components/Features/FeatureCard.cjs +2 -0
- package/dist/cjs/components/Features/FeatureCard.cjs.map +1 -0
- package/dist/cjs/components/Features/FeatureGrid.cjs +2 -0
- package/dist/cjs/components/Features/FeatureGrid.cjs.map +1 -0
- package/dist/cjs/components/Features/parts.cjs +2 -0
- package/dist/cjs/components/Features/parts.cjs.map +1 -0
- package/dist/cjs/components/Features/variants/Bento.cjs +2 -0
- package/dist/cjs/components/Features/variants/Bento.cjs.map +1 -0
- package/dist/cjs/components/Features/variants/Columns.cjs +2 -0
- package/dist/cjs/components/Features/variants/Columns.cjs.map +1 -0
- package/dist/cjs/components/Features/variants/EditorialRows.cjs +2 -0
- package/dist/cjs/components/Features/variants/EditorialRows.cjs.map +1 -0
- package/dist/cjs/components/Footer/Footer.cjs +2 -0
- package/dist/cjs/components/Footer/Footer.cjs.map +1 -0
- package/dist/cjs/components/Footer/parts.cjs +2 -0
- package/dist/cjs/components/Footer/parts.cjs.map +1 -0
- package/dist/cjs/components/Footer/variants/Classic.cjs +2 -0
- package/dist/cjs/components/Footer/variants/Classic.cjs.map +1 -0
- package/dist/cjs/components/Footer/variants/Editorial.cjs +2 -0
- package/dist/cjs/components/Footer/variants/Editorial.cjs.map +1 -0
- package/dist/cjs/components/Footer/variants/Minimal.cjs +2 -0
- package/dist/cjs/components/Footer/variants/Minimal.cjs.map +1 -0
- package/dist/cjs/components/Hero/Hero.cjs +2 -0
- package/dist/cjs/components/Hero/Hero.cjs.map +1 -0
- package/dist/cjs/components/Hero/parts.cjs +2 -0
- package/dist/cjs/components/Hero/parts.cjs.map +1 -0
- package/dist/cjs/components/Hero/variants/Centered.cjs +2 -0
- package/dist/cjs/components/Hero/variants/Centered.cjs.map +1 -0
- package/dist/cjs/components/Hero/variants/Split.cjs +2 -0
- package/dist/cjs/components/Hero/variants/Split.cjs.map +1 -0
- package/dist/cjs/components/Hero/variants/Statement.cjs +3 -0
- package/dist/cjs/components/Hero/variants/Statement.cjs.map +1 -0
- package/dist/cjs/components/LanguageSwitcher/LanguageSwitcher.cjs +3 -0
- package/dist/cjs/components/LanguageSwitcher/LanguageSwitcher.cjs.map +1 -0
- package/dist/cjs/components/LanguageSwitcher/parts.cjs +3 -0
- package/dist/cjs/components/LanguageSwitcher/parts.cjs.map +1 -0
- package/dist/cjs/components/LanguageSwitcher/useLanguageSwitcher.cjs +3 -0
- package/dist/cjs/components/LanguageSwitcher/useLanguageSwitcher.cjs.map +1 -0
- package/dist/cjs/components/LanguageSwitcher/variants/Dropdown.cjs +3 -0
- package/dist/cjs/components/LanguageSwitcher/variants/Dropdown.cjs.map +1 -0
- package/dist/cjs/components/LanguageSwitcher/variants/Modal.cjs +3 -0
- package/dist/cjs/components/LanguageSwitcher/variants/Modal.cjs.map +1 -0
- package/dist/cjs/components/LogoCloud/LogoCloud.cjs +2 -0
- package/dist/cjs/components/LogoCloud/LogoCloud.cjs.map +1 -0
- package/dist/cjs/components/LogoCloud/parts.cjs +2 -0
- package/dist/cjs/components/LogoCloud/parts.cjs.map +1 -0
- package/dist/cjs/components/LogoCloud/variants/Marquee.cjs +2 -0
- package/dist/cjs/components/LogoCloud/variants/Marquee.cjs.map +1 -0
- package/dist/cjs/components/LogoCloud/variants/Quiet.cjs +2 -0
- package/dist/cjs/components/LogoCloud/variants/Quiet.cjs.map +1 -0
- package/dist/cjs/components/LogoCloud/variants/Strip.cjs +2 -0
- package/dist/cjs/components/LogoCloud/variants/Strip.cjs.map +1 -0
- package/dist/cjs/components/MegaMenu/MegaMenu.cjs +3 -0
- package/dist/cjs/components/MegaMenu/MegaMenu.cjs.map +1 -0
- package/dist/cjs/components/Modal.cjs +3 -0
- package/dist/cjs/components/Modal.cjs.map +1 -0
- package/dist/cjs/components/Navbar/Navbar.cjs +3 -0
- package/dist/cjs/components/Navbar/Navbar.cjs.map +1 -0
- package/dist/cjs/components/Newsletter/Newsletter.cjs +2 -0
- package/dist/cjs/components/Newsletter/Newsletter.cjs.map +1 -0
- package/dist/cjs/components/Newsletter/parts.cjs +2 -0
- package/dist/cjs/components/Newsletter/parts.cjs.map +1 -0
- package/dist/cjs/components/Newsletter/useNewsletterForm.cjs +3 -0
- package/dist/cjs/components/Newsletter/useNewsletterForm.cjs.map +1 -0
- package/dist/cjs/components/Newsletter/variants/Card.cjs +3 -0
- package/dist/cjs/components/Newsletter/variants/Card.cjs.map +1 -0
- package/dist/cjs/components/Newsletter/variants/Inline.cjs +3 -0
- package/dist/cjs/components/Newsletter/variants/Inline.cjs.map +1 -0
- package/dist/cjs/components/Newsletter/variants/Underline.cjs +3 -0
- package/dist/cjs/components/Newsletter/variants/Underline.cjs.map +1 -0
- package/dist/cjs/components/Pricing/Pricing.cjs +3 -0
- package/dist/cjs/components/Pricing/Pricing.cjs.map +1 -0
- package/dist/cjs/components/Pricing/parts.cjs +3 -0
- package/dist/cjs/components/Pricing/parts.cjs.map +1 -0
- package/dist/cjs/components/Pricing/variants/Bento.cjs +2 -0
- package/dist/cjs/components/Pricing/variants/Bento.cjs.map +1 -0
- package/dist/cjs/components/Pricing/variants/Cards.cjs +2 -0
- package/dist/cjs/components/Pricing/variants/Cards.cjs.map +1 -0
- package/dist/cjs/components/Pricing/variants/Compact.cjs +2 -0
- package/dist/cjs/components/Pricing/variants/Compact.cjs.map +1 -0
- package/dist/cjs/components/Prose.cjs +2 -0
- package/dist/cjs/components/Prose.cjs.map +1 -0
- package/dist/cjs/components/Section.cjs +2 -0
- package/dist/cjs/components/Section.cjs.map +1 -0
- package/dist/cjs/components/Slot.cjs +2 -0
- package/dist/cjs/components/Slot.cjs.map +1 -0
- package/dist/cjs/components/Stats/Stats.cjs +2 -0
- package/dist/cjs/components/Stats/Stats.cjs.map +1 -0
- package/dist/cjs/components/Stats/parts.cjs +2 -0
- package/dist/cjs/components/Stats/parts.cjs.map +1 -0
- package/dist/cjs/components/Stats/variants/Cells.cjs +2 -0
- package/dist/cjs/components/Stats/variants/Cells.cjs.map +1 -0
- package/dist/cjs/components/Stats/variants/Editorial.cjs +2 -0
- package/dist/cjs/components/Stats/variants/Editorial.cjs.map +1 -0
- package/dist/cjs/components/Stats/variants/Hairline.cjs +2 -0
- package/dist/cjs/components/Stats/variants/Hairline.cjs.map +1 -0
- package/dist/cjs/components/Stats/variants/Ticker.cjs +2 -0
- package/dist/cjs/components/Stats/variants/Ticker.cjs.map +1 -0
- package/dist/cjs/components/Testimonials/TestimonialCard.cjs +2 -0
- package/dist/cjs/components/Testimonials/TestimonialCard.cjs.map +1 -0
- package/dist/cjs/components/Testimonials/Testimonials.cjs +2 -0
- package/dist/cjs/components/Testimonials/Testimonials.cjs.map +1 -0
- package/dist/cjs/components/Testimonials/parts.cjs +2 -0
- package/dist/cjs/components/Testimonials/parts.cjs.map +1 -0
- package/dist/cjs/components/Testimonials/variants/Carousel.cjs +3 -0
- package/dist/cjs/components/Testimonials/variants/Carousel.cjs.map +1 -0
- package/dist/cjs/components/Testimonials/variants/Grid.cjs +2 -0
- package/dist/cjs/components/Testimonials/variants/Grid.cjs.map +1 -0
- package/dist/cjs/components/Testimonials/variants/Marquee.cjs +2 -0
- package/dist/cjs/components/Testimonials/variants/Marquee.cjs.map +1 -0
- package/dist/cjs/icons.cjs +2 -0
- package/dist/cjs/icons.cjs.map +1 -0
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.cjs +2 -0
- package/dist/cjs/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.cjs.map +1 -0
- package/dist/cjs/node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.cjs +2 -0
- package/dist/cjs/node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.cjs.map +1 -0
- package/dist/cjs/utils/cn.cjs +2 -0
- package/dist/cjs/utils/cn.cjs.map +1 -0
- package/dist/cjs/utils/contrast.cjs +2 -0
- package/dist/cjs/utils/contrast.cjs.map +1 -0
- package/dist/cjs/utils/iso2Flag.cjs +8 -0
- package/dist/cjs/utils/iso2Flag.cjs.map +1 -0
- package/dist/cjs/utils/useTokenForeground.cjs +3 -0
- package/dist/cjs/utils/useTokenForeground.cjs.map +1 -0
- package/dist/es/components/Badge.js +51 -0
- package/dist/es/components/Badge.js.map +1 -0
- package/dist/es/components/Blog/BlogCard.js +12 -0
- package/dist/es/components/Blog/BlogCard.js.map +1 -0
- package/dist/es/components/Blog/BlogSection.js +65 -0
- package/dist/es/components/Blog/BlogSection.js.map +1 -0
- package/dist/es/components/Blog/parts.js +29 -0
- package/dist/es/components/Blog/parts.js.map +1 -0
- package/dist/es/components/Blog/variants/Card.js +46 -0
- package/dist/es/components/Blog/variants/Card.js.map +1 -0
- package/dist/es/components/Blog/variants/Row.js +33 -0
- package/dist/es/components/Blog/variants/Row.js.map +1 -0
- package/dist/es/components/Button.js +73 -0
- package/dist/es/components/Button.js.map +1 -0
- package/dist/es/components/CTA/CTA.js +11 -0
- package/dist/es/components/CTA/CTA.js.map +1 -0
- package/dist/es/components/CTA/parts.js +26 -0
- package/dist/es/components/CTA/parts.js.map +1 -0
- package/dist/es/components/CTA/variants/Inverse.js +47 -0
- package/dist/es/components/CTA/variants/Inverse.js.map +1 -0
- package/dist/es/components/CTA/variants/Panel.js +63 -0
- package/dist/es/components/CTA/variants/Panel.js.map +1 -0
- package/dist/es/components/CTA/variants/Surface.js +28 -0
- package/dist/es/components/CTA/variants/Surface.js.map +1 -0
- package/dist/es/components/Card.js +63 -0
- package/dist/es/components/Card.js.map +1 -0
- package/dist/es/components/Container.js +58 -0
- package/dist/es/components/Container.js.map +1 -0
- package/dist/es/components/FAQ/FAQ.js +40 -0
- package/dist/es/components/FAQ/FAQ.js.map +1 -0
- package/dist/es/components/FAQ/parts.js +56 -0
- package/dist/es/components/FAQ/parts.js.map +1 -0
- package/dist/es/components/FAQ/variants/Accordion.js +43 -0
- package/dist/es/components/FAQ/variants/Accordion.js.map +1 -0
- package/dist/es/components/FAQ/variants/Cards.js +33 -0
- package/dist/es/components/FAQ/variants/Cards.js.map +1 -0
- package/dist/es/components/FAQ/variants/Split.js +35 -0
- package/dist/es/components/FAQ/variants/Split.js.map +1 -0
- package/dist/es/components/Features/FeatureCard.js +40 -0
- package/dist/es/components/Features/FeatureCard.js.map +1 -0
- package/dist/es/components/Features/FeatureGrid.js +13 -0
- package/dist/es/components/Features/FeatureGrid.js.map +1 -0
- package/dist/es/components/Features/parts.js +17 -0
- package/dist/es/components/Features/parts.js.map +1 -0
- package/dist/es/components/Features/variants/Bento.js +27 -0
- package/dist/es/components/Features/variants/Bento.js.map +1 -0
- package/dist/es/components/Features/variants/Columns.js +13 -0
- package/dist/es/components/Features/variants/Columns.js.map +1 -0
- package/dist/es/components/Features/variants/EditorialRows.js +25 -0
- package/dist/es/components/Features/variants/EditorialRows.js.map +1 -0
- package/dist/es/components/Footer/Footer.js +10 -0
- package/dist/es/components/Footer/Footer.js.map +1 -0
- package/dist/es/components/Footer/parts.js +65 -0
- package/dist/es/components/Footer/parts.js.map +1 -0
- package/dist/es/components/Footer/variants/Classic.js +43 -0
- package/dist/es/components/Footer/variants/Classic.js.map +1 -0
- package/dist/es/components/Footer/variants/Editorial.js +39 -0
- package/dist/es/components/Footer/variants/Editorial.js.map +1 -0
- package/dist/es/components/Footer/variants/Minimal.js +20 -0
- package/dist/es/components/Footer/variants/Minimal.js.map +1 -0
- package/dist/es/components/Hero/Hero.js +11 -0
- package/dist/es/components/Hero/Hero.js.map +1 -0
- package/dist/es/components/Hero/parts.js +21 -0
- package/dist/es/components/Hero/parts.js.map +1 -0
- package/dist/es/components/Hero/variants/Centered.js +41 -0
- package/dist/es/components/Hero/variants/Centered.js.map +1 -0
- package/dist/es/components/Hero/variants/Split.js +36 -0
- package/dist/es/components/Hero/variants/Split.js.map +1 -0
- package/dist/es/components/Hero/variants/Statement.js +46 -0
- package/dist/es/components/Hero/variants/Statement.js.map +1 -0
- package/dist/es/components/LanguageSwitcher/LanguageSwitcher.js +34 -0
- package/dist/es/components/LanguageSwitcher/LanguageSwitcher.js.map +1 -0
- package/dist/es/components/LanguageSwitcher/parts.js +107 -0
- package/dist/es/components/LanguageSwitcher/parts.js.map +1 -0
- package/dist/es/components/LanguageSwitcher/useLanguageSwitcher.js +13 -0
- package/dist/es/components/LanguageSwitcher/useLanguageSwitcher.js.map +1 -0
- package/dist/es/components/LanguageSwitcher/variants/Dropdown.js +87 -0
- package/dist/es/components/LanguageSwitcher/variants/Dropdown.js.map +1 -0
- package/dist/es/components/LanguageSwitcher/variants/Modal.js +54 -0
- package/dist/es/components/LanguageSwitcher/variants/Modal.js.map +1 -0
- package/dist/es/components/LogoCloud/LogoCloud.js +13 -0
- package/dist/es/components/LogoCloud/LogoCloud.js.map +1 -0
- package/dist/es/components/LogoCloud/parts.js +22 -0
- package/dist/es/components/LogoCloud/parts.js.map +1 -0
- package/dist/es/components/LogoCloud/variants/Marquee.js +18 -0
- package/dist/es/components/LogoCloud/variants/Marquee.js.map +1 -0
- package/dist/es/components/LogoCloud/variants/Quiet.js +15 -0
- package/dist/es/components/LogoCloud/variants/Quiet.js.map +1 -0
- package/dist/es/components/LogoCloud/variants/Strip.js +15 -0
- package/dist/es/components/LogoCloud/variants/Strip.js.map +1 -0
- package/dist/es/components/MegaMenu/MegaMenu.js +371 -0
- package/dist/es/components/MegaMenu/MegaMenu.js.map +1 -0
- package/dist/es/components/Modal.js +81 -0
- package/dist/es/components/Modal.js.map +1 -0
- package/dist/es/components/Navbar/Navbar.js +135 -0
- package/dist/es/components/Navbar/Navbar.js.map +1 -0
- package/dist/es/components/Newsletter/Newsletter.js +13 -0
- package/dist/es/components/Newsletter/Newsletter.js.map +1 -0
- package/dist/es/components/Newsletter/parts.js +18 -0
- package/dist/es/components/Newsletter/parts.js.map +1 -0
- package/dist/es/components/Newsletter/useNewsletterForm.js +20 -0
- package/dist/es/components/Newsletter/useNewsletterForm.js.map +1 -0
- package/dist/es/components/Newsletter/variants/Card.js +55 -0
- package/dist/es/components/Newsletter/variants/Card.js.map +1 -0
- package/dist/es/components/Newsletter/variants/Inline.js +51 -0
- package/dist/es/components/Newsletter/variants/Inline.js.map +1 -0
- package/dist/es/components/Newsletter/variants/Underline.js +51 -0
- package/dist/es/components/Newsletter/variants/Underline.js.map +1 -0
- package/dist/es/components/Pricing/Pricing.js +32 -0
- package/dist/es/components/Pricing/Pricing.js.map +1 -0
- package/dist/es/components/Pricing/parts.js +119 -0
- package/dist/es/components/Pricing/parts.js.map +1 -0
- package/dist/es/components/Pricing/variants/Bento.js +47 -0
- package/dist/es/components/Pricing/variants/Bento.js.map +1 -0
- package/dist/es/components/Pricing/variants/Cards.js +49 -0
- package/dist/es/components/Pricing/variants/Cards.js.map +1 -0
- package/dist/es/components/Pricing/variants/Compact.js +49 -0
- package/dist/es/components/Pricing/variants/Compact.js.map +1 -0
- package/dist/es/components/Prose.js +36 -0
- package/dist/es/components/Prose.js.map +1 -0
- package/dist/es/components/Section.js +69 -0
- package/dist/es/components/Section.js.map +1 -0
- package/dist/es/components/Slot.js +33 -0
- package/dist/es/components/Slot.js.map +1 -0
- package/dist/es/components/Stats/Stats.js +14 -0
- package/dist/es/components/Stats/Stats.js.map +1 -0
- package/dist/es/components/Stats/parts.js +32 -0
- package/dist/es/components/Stats/parts.js.map +1 -0
- package/dist/es/components/Stats/variants/Cells.js +28 -0
- package/dist/es/components/Stats/variants/Cells.js.map +1 -0
- package/dist/es/components/Stats/variants/Editorial.js +32 -0
- package/dist/es/components/Stats/variants/Editorial.js.map +1 -0
- package/dist/es/components/Stats/variants/Hairline.js +25 -0
- package/dist/es/components/Stats/variants/Hairline.js.map +1 -0
- package/dist/es/components/Stats/variants/Ticker.js +29 -0
- package/dist/es/components/Stats/variants/Ticker.js.map +1 -0
- package/dist/es/components/Testimonials/TestimonialCard.js +50 -0
- package/dist/es/components/Testimonials/TestimonialCard.js.map +1 -0
- package/dist/es/components/Testimonials/Testimonials.js +13 -0
- package/dist/es/components/Testimonials/Testimonials.js.map +1 -0
- package/dist/es/components/Testimonials/parts.js +5 -0
- package/dist/es/components/Testimonials/parts.js.map +1 -0
- package/dist/es/components/Testimonials/variants/Carousel.js +83 -0
- package/dist/es/components/Testimonials/variants/Carousel.js.map +1 -0
- package/dist/es/components/Testimonials/variants/Grid.js +12 -0
- package/dist/es/components/Testimonials/variants/Grid.js.map +1 -0
- package/dist/es/components/Testimonials/variants/Marquee.js +15 -0
- package/dist/es/components/Testimonials/variants/Marquee.js.map +1 -0
- package/dist/es/icons.js +158 -0
- package/dist/es/icons.js.map +1 -0
- package/dist/es/index.js +106 -0
- package/dist/es/index.js.map +1 -0
- package/dist/es/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js +17 -0
- package/dist/es/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/es/node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.js +2266 -0
- package/dist/es/node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
- package/dist/es/utils/cn.js +9 -0
- package/dist/es/utils/cn.js.map +1 -0
- package/dist/es/utils/contrast.js +48 -0
- package/dist/es/utils/contrast.js.map +1 -0
- package/dist/es/utils/iso2Flag.js +17 -0
- package/dist/es/utils/iso2Flag.js.map +1 -0
- package/dist/es/utils/useTokenForeground.js +28 -0
- package/dist/es/utils/useTokenForeground.js.map +1 -0
- package/package.json +5 -5
- package/dist/index.cjs +0 -8
- package/dist/index.cjs.map +0 -1
- package/dist/index.js +0 -5128
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
3
|
+
import { useState as l } from "react";
|
|
4
|
+
import { cn as c } from "../../utils/cn.js";
|
|
5
|
+
import { Plus as f } from "../../icons.js";
|
|
6
|
+
function b(e, t) {
|
|
7
|
+
const [o, s] = l(
|
|
8
|
+
() => new Set(e ? t : t.slice(0, 1))
|
|
9
|
+
);
|
|
10
|
+
return { openSet: o, toggle: (r) => {
|
|
11
|
+
s((u) => {
|
|
12
|
+
const n = new Set(u);
|
|
13
|
+
return n.has(r) ? n.delete(r) : (e || n.clear(), n.add(r)), n;
|
|
14
|
+
});
|
|
15
|
+
}, isOpen: (r) => o.has(r) };
|
|
16
|
+
}
|
|
17
|
+
function h({
|
|
18
|
+
item: e,
|
|
19
|
+
open: t,
|
|
20
|
+
onToggle: o,
|
|
21
|
+
style: s
|
|
22
|
+
}) {
|
|
23
|
+
return /* @__PURE__ */ a("div", { children: [
|
|
24
|
+
/* @__PURE__ */ i("h3", { children: /* @__PURE__ */ a(
|
|
25
|
+
"button",
|
|
26
|
+
{
|
|
27
|
+
type: "button",
|
|
28
|
+
"aria-expanded": t,
|
|
29
|
+
onClick: o,
|
|
30
|
+
className: s === "boxed" ? "flex w-full cursor-pointer items-center justify-between gap-4 px-6 py-5 text-left text-[15px] font-medium text-foreground transition-colors duration-150 hover:bg-surface-strong/60 focus-visible:outline-none" : "flex w-full cursor-pointer items-center justify-between gap-4 py-5 text-left text-base font-semibold text-foreground transition-colors duration-150 focus-visible:outline-none",
|
|
31
|
+
children: [
|
|
32
|
+
e.question,
|
|
33
|
+
/* @__PURE__ */ i(
|
|
34
|
+
f,
|
|
35
|
+
{
|
|
36
|
+
className: c(
|
|
37
|
+
"h-4.5 w-4.5 shrink-0 text-foreground/45 transition-transform duration-200 sm:h-5 sm:w-5",
|
|
38
|
+
t && "rotate-45 text-primary"
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
) }),
|
|
45
|
+
t ? /* @__PURE__ */ i("p", { className: s === "boxed" ? "px-6 pb-6 text-sm leading-7 text-muted-foreground" : "pb-6 text-sm leading-7 text-muted-foreground", children: e.answer }) : null
|
|
46
|
+
] });
|
|
47
|
+
}
|
|
48
|
+
function w({ label: e }) {
|
|
49
|
+
return /* @__PURE__ */ i("p", { className: "text-xs font-semibold uppercase tracking-[0.18em] text-primary", children: e });
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
w as FaqEyebrow,
|
|
53
|
+
h as FaqItemRow,
|
|
54
|
+
b as useFaqState
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","sources":["../../../../src/components/FAQ/parts.tsx"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Plus } from \"../../icons\";\nimport type { FaqItem } from \"./types\";\n\nexport function useFaqState(allowMultiple: boolean, defaultOpen: number[]) {\n const [openSet, setOpenSet] = useState<Set<number>>(\n () => new Set(allowMultiple ? defaultOpen : defaultOpen.slice(0, 1)),\n );\n\n const toggle = (index: number) => {\n setOpenSet((prev) => {\n const next = new Set(prev);\n if (next.has(index)) {\n next.delete(index);\n } else {\n if (!allowMultiple) next.clear();\n next.add(index);\n }\n return next;\n });\n };\n\n return { openSet, toggle, isOpen: (i: number) => openSet.has(i) };\n}\n\nexport function FaqItemRow({\n item,\n open,\n onToggle,\n style,\n}: {\n item: FaqItem;\n open: boolean;\n onToggle: () => void;\n style: \"boxed\" | \"bare\";\n}) {\n return (\n <div>\n <h3>\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={onToggle}\n className={\n style === \"boxed\"\n ? \"flex w-full cursor-pointer items-center justify-between gap-4 px-6 py-5 text-left text-[15px] font-medium text-foreground transition-colors duration-150 hover:bg-surface-strong/60 focus-visible:outline-none\"\n : \"flex w-full cursor-pointer items-center justify-between gap-4 py-5 text-left text-base font-semibold text-foreground transition-colors duration-150 focus-visible:outline-none\"\n }\n >\n {item.question}\n <Plus\n className={cn(\n \"h-4.5 w-4.5 shrink-0 text-foreground/45 transition-transform duration-200 sm:h-5 sm:w-5\",\n open && \"rotate-45 text-primary\",\n )}\n />\n </button>\n </h3>\n {open ? (\n <p className={style === \"boxed\" ? \"px-6 pb-6 text-sm leading-7 text-muted-foreground\" : \"pb-6 text-sm leading-7 text-muted-foreground\"}>\n {item.answer}\n </p>\n ) : null}\n </div>\n );\n}\n\nexport function FaqEyebrow({ label }: { label: string }) {\n return (\n <p className=\"text-xs font-semibold uppercase tracking-[0.18em] text-primary\">{label}</p>\n );\n}"],"names":["useFaqState","allowMultiple","defaultOpen","openSet","setOpenSet","useState","index","prev","next","i","FaqItemRow","item","open","onToggle","style","jsx","jsxs","Plus","cn","FaqEyebrow","label"],"mappings":";;;;AAMO,SAASA,EAAYC,GAAwBC,GAAuB;AACzE,QAAM,CAACC,GAASC,CAAU,IAAIC;AAAA,IAC5B,MAAM,IAAI,IAAIJ,IAAgBC,IAAcA,EAAY,MAAM,GAAG,CAAC,CAAC;AAAA,EAAA;AAgBrE,SAAO,EAAE,SAAAC,GAAS,QAbH,CAACG,MAAkB;AAChC,IAAAF,EAAW,CAACG,MAAS;AACnB,YAAMC,IAAO,IAAI,IAAID,CAAI;AACzB,aAAIC,EAAK,IAAIF,CAAK,IAChBE,EAAK,OAAOF,CAAK,KAEZL,KAAeO,EAAK,MAAA,GACzBA,EAAK,IAAIF,CAAK,IAETE;AAAA,IACT,CAAC;AAAA,EACH,GAE0B,QAAQ,CAACC,MAAcN,EAAQ,IAAIM,CAAC,EAAA;AAChE;AAEO,SAASC,EAAW;AAAA,EACzB,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AACF,GAKG;AACD,2BACG,OAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAAC,MAAA,EACC,UAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,iBAAeJ;AAAA,QACf,SAASC;AAAA,QACT,WACEC,MAAU,UACN,mNACA;AAAA,QAGL,UAAA;AAAA,UAAAH,EAAK;AAAA,UACN,gBAAAI;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,WAAWC;AAAA,gBACT;AAAA,gBACAN,KAAQ;AAAA,cAAA;AAAA,YACV;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACCA,IACC,gBAAAG,EAAC,KAAA,EAAE,WAAWD,MAAU,UAAU,sDAAsD,gDACrF,UAAAH,EAAK,OAAA,CACR,IACE;AAAA,EAAA,GACN;AAEJ;AAEO,SAASQ,EAAW,EAAE,OAAAC,KAA4B;AACvD,SACE,gBAAAL,EAAC,KAAA,EAAE,WAAU,kEAAkE,UAAAK,GAAM;AAEzF;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
3
|
+
import { cn as p } from "../../../utils/cn.js";
|
|
4
|
+
import { useFaqState as m, FaqItemRow as b } from "../parts.js";
|
|
5
|
+
const f = ({
|
|
6
|
+
className: i,
|
|
7
|
+
items: t,
|
|
8
|
+
allowMultiple: s = !1,
|
|
9
|
+
defaultOpen: a = [],
|
|
10
|
+
bare: o = !1,
|
|
11
|
+
option: g,
|
|
12
|
+
title: q,
|
|
13
|
+
eyebrow: u,
|
|
14
|
+
description: y,
|
|
15
|
+
...n
|
|
16
|
+
}) => {
|
|
17
|
+
const { isOpen: c, toggle: l } = m(s, a);
|
|
18
|
+
return /* @__PURE__ */ d(
|
|
19
|
+
"div",
|
|
20
|
+
{
|
|
21
|
+
className: p(
|
|
22
|
+
!o && "divide-y divide-border rounded-2xl border border-border bg-surface",
|
|
23
|
+
i
|
|
24
|
+
),
|
|
25
|
+
...n,
|
|
26
|
+
children: t.map((e, r) => /* @__PURE__ */ d(
|
|
27
|
+
b,
|
|
28
|
+
{
|
|
29
|
+
item: e,
|
|
30
|
+
open: c(r),
|
|
31
|
+
onToggle: () => l(r),
|
|
32
|
+
style: o ? "bare" : "boxed"
|
|
33
|
+
},
|
|
34
|
+
e.question
|
|
35
|
+
))
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
f.displayName = "FaqAccordion";
|
|
40
|
+
export {
|
|
41
|
+
f as FaqAccordion
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=Accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.js","sources":["../../../../../src/components/FAQ/variants/Accordion.tsx"],"sourcesContent":["\"use client\";\nimport { cn } from \"../../../utils/cn\";\nimport { useFaqState, FaqItemRow } from \"../parts\";\nimport type { FAQProps } from \"../types\";\n\ninterface AccordionProps extends FAQProps {\n allowMultiple?: boolean;\n defaultOpen?: number[];\n bare?: boolean;\n}\n\nexport const FaqAccordion = ({\n className,\n items,\n allowMultiple = false,\n defaultOpen = [],\n bare = false,\n option,\n title,\n eyebrow,\n description,\n ...props\n}: AccordionProps) => {\n const { isOpen, toggle } = useFaqState(allowMultiple, defaultOpen);\n\n return (\n <div\n className={cn(\n !bare && \"divide-y divide-border rounded-2xl border border-border bg-surface\",\n className,\n )}\n {...props}\n >\n {items.map((item, index) => (\n <FaqItemRow\n key={item.question}\n item={item}\n open={isOpen(index)}\n onToggle={() => toggle(index)}\n style={bare ? \"bare\" : \"boxed\"}\n />\n ))}\n </div>\n );\n};\nFaqAccordion.displayName = \"FaqAccordion\";"],"names":["FaqAccordion","className","items","allowMultiple","defaultOpen","bare","option","title","eyebrow","description","props","isOpen","toggle","useFaqState","jsx","cn","item","index","FaqItemRow"],"mappings":";;;AAWO,MAAMA,IAAe,CAAC;AAAA,EAC3B,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,aAAAC,IAAc,CAAA;AAAA,EACd,MAAAC,IAAO;AAAA,EACP,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,MAAsB;AACpB,QAAM,EAAE,QAAAC,GAAQ,QAAAC,EAAA,IAAWC,EAAYV,GAAeC,CAAW;AAEjE,SACE,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT,CAACV,KAAQ;AAAA,QACTJ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEH,UAAAR,EAAM,IAAI,CAACc,GAAMC,MAChB,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UAEC,MAAAF;AAAA,UACA,MAAML,EAAOM,CAAK;AAAA,UAClB,UAAU,MAAML,EAAOK,CAAK;AAAA,UAC5B,OAAOZ,IAAO,SAAS;AAAA,QAAA;AAAA,QAJlBW,EAAK;AAAA,MAAA,CAMb;AAAA,IAAA;AAAA,EAAA;AAGP;AACAhB,EAAa,cAAc;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsxs as s, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { cn as o } from "../../../utils/cn.js";
|
|
3
|
+
import { FaqEyebrow as n } from "../parts.js";
|
|
4
|
+
const c = ({
|
|
5
|
+
className: d,
|
|
6
|
+
items: l,
|
|
7
|
+
eyebrow: a,
|
|
8
|
+
title: m,
|
|
9
|
+
description: p,
|
|
10
|
+
option: f,
|
|
11
|
+
...t
|
|
12
|
+
}) => /* @__PURE__ */ s("div", { className: o("w-full", d), ...t, children: [
|
|
13
|
+
a ? /* @__PURE__ */ e("div", { className: "mb-10", children: /* @__PURE__ */ e(n, { label: String(a) }) }) : null,
|
|
14
|
+
/* @__PURE__ */ e("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: l.map((r, i) => /* @__PURE__ */ s(
|
|
15
|
+
"div",
|
|
16
|
+
{
|
|
17
|
+
className: "flex flex-col rounded-xl border border-border bg-surface p-7",
|
|
18
|
+
children: [
|
|
19
|
+
/* @__PURE__ */ s("div", { className: "flex items-baseline gap-4", children: [
|
|
20
|
+
/* @__PURE__ */ e("span", { className: "font-display text-sm font-semibold tabular-nums text-foreground/35", children: String(i + 1).padStart(2, "0") }),
|
|
21
|
+
/* @__PURE__ */ e("h3", { className: "font-display text-lg font-semibold tracking-tight text-foreground", children: r.question })
|
|
22
|
+
] }),
|
|
23
|
+
/* @__PURE__ */ e("p", { className: "mt-4 border-t border-border pt-4 text-sm leading-6 text-muted-foreground", children: r.answer })
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
r.question
|
|
27
|
+
)) })
|
|
28
|
+
] });
|
|
29
|
+
c.displayName = "FaqCards";
|
|
30
|
+
export {
|
|
31
|
+
c as FaqCards
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=Cards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cards.js","sources":["../../../../../src/components/FAQ/variants/Cards.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { FaqEyebrow } from \"../parts\";\nimport type { FAQProps } from \"../types\";\n\ninterface CardsProps extends FAQProps {}\n\nexport const FaqCards = ({\n className,\n items,\n eyebrow,\n title,\n description,\n option,\n ...props\n}: CardsProps) => (\n <div className={cn(\"w-full\", className)} {...props}>\n {eyebrow ? <div className=\"mb-10\"><FaqEyebrow label={String(eyebrow)} /></div> : null}\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2\">\n {items.map((item, i) => (\n <div\n key={item.question}\n className=\"flex flex-col rounded-xl border border-border bg-surface p-7\"\n >\n <div className=\"flex items-baseline gap-4\">\n <span className=\"font-display text-sm font-semibold tabular-nums text-foreground/35\">\n {String(i + 1).padStart(2, \"0\")}\n </span>\n <h3 className=\"font-display text-lg font-semibold tracking-tight text-foreground\">\n {item.question}\n </h3>\n </div>\n <p className=\"mt-4 border-t border-border pt-4 text-sm leading-6 text-muted-foreground\">\n {item.answer}\n </p>\n </div>\n ))}\n </div>\n </div>\n);\nFaqCards.displayName = \"FaqCards\";"],"names":["FaqCards","className","items","eyebrow","title","description","option","props","jsxs","cn","jsx","FaqEyebrow","item"],"mappings":";;;AAMO,MAAMA,IAAW,CAAC;AAAA,EACvB,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,QAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC,EAAC,SAAI,WAAWC,EAAG,UAAUR,CAAS,GAAI,GAAGM,GAC1C,UAAA;AAAA,EAAAJ,IAAU,gBAAAO,EAAC,OAAA,EAAI,WAAU,SAAQ,UAAA,gBAAAA,EAACC,GAAA,EAAW,OAAO,OAAOR,CAAO,EAAA,CAAG,EAAA,CAAE,IAAS;AAAA,EACjF,gBAAAO,EAAC,SAAI,WAAU,yCACZ,YAAM,IAAI,CAACE,GAAM,MAChB,gBAAAJ;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,UAAA,gBAAAE,EAAC,QAAA,EAAK,WAAU,sEACb,UAAA,OAAO,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,EAAA,CAChC;AAAA,UACA,gBAAAA,EAAC,MAAA,EAAG,WAAU,qEACX,YAAK,SAAA,CACR;AAAA,QAAA,GACF;AAAA,QACA,gBAAAA,EAAC,KAAA,EAAE,WAAU,4EACV,YAAK,OAAA,CACR;AAAA,MAAA;AAAA,IAAA;AAAA,IAbKE,EAAK;AAAA,EAAA,CAeb,EAAA,CACH;AAAA,EAAA,CACF;AAEFZ,EAAS,cAAc;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsxs as i, jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { cn as n } from "../../../utils/cn.js";
|
|
3
|
+
import { FaqEyebrow as c } from "../parts.js";
|
|
4
|
+
import { FaqAccordion as g } from "./Accordion.js";
|
|
5
|
+
const p = ({
|
|
6
|
+
className: a,
|
|
7
|
+
items: d,
|
|
8
|
+
allowMultiple: o = !1,
|
|
9
|
+
defaultOpen: s = [],
|
|
10
|
+
eyebrow: t,
|
|
11
|
+
title: e,
|
|
12
|
+
description: r,
|
|
13
|
+
option: f,
|
|
14
|
+
...m
|
|
15
|
+
}) => /* @__PURE__ */ i("div", { className: n("grid w-full gap-10 lg:grid-cols-[0.9fr_1.1fr] lg:gap-20", a), ...m, children: [
|
|
16
|
+
/* @__PURE__ */ i("div", { className: "lg:sticky lg:top-24 lg:self-start", children: [
|
|
17
|
+
t ? /* @__PURE__ */ l(c, { label: String(t) }) : null,
|
|
18
|
+
e ? /* @__PURE__ */ l("h2", { className: "mt-4 font-display text-3xl font-semibold leading-[1.08] tracking-tight text-foreground sm:text-4xl", children: e }) : null,
|
|
19
|
+
r ? /* @__PURE__ */ l("p", { className: "mt-4 text-pretty text-base leading-7 text-muted-foreground", children: r }) : null
|
|
20
|
+
] }),
|
|
21
|
+
/* @__PURE__ */ l("div", { className: "divide-y divide-border", children: /* @__PURE__ */ l(
|
|
22
|
+
g,
|
|
23
|
+
{
|
|
24
|
+
items: d,
|
|
25
|
+
allowMultiple: o,
|
|
26
|
+
defaultOpen: s,
|
|
27
|
+
bare: !0
|
|
28
|
+
}
|
|
29
|
+
) })
|
|
30
|
+
] });
|
|
31
|
+
p.displayName = "FaqSplit";
|
|
32
|
+
export {
|
|
33
|
+
p as FaqSplit
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=Split.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Split.js","sources":["../../../../../src/components/FAQ/variants/Split.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { FaqEyebrow } from \"../parts\";\nimport { FaqAccordion } from \"./Accordion\";\nimport type { FAQProps } from \"../types\";\n\ninterface SplitProps extends FAQProps {\n allowMultiple?: boolean;\n defaultOpen?: number[];\n}\n\nexport const FaqSplit = ({\n className,\n items,\n allowMultiple = false,\n defaultOpen = [],\n eyebrow,\n title,\n description,\n option,\n ...props\n}: SplitProps) => (\n <div className={cn(\"grid w-full gap-10 lg:grid-cols-[0.9fr_1.1fr] lg:gap-20\", className)} {...props}>\n <div className=\"lg:sticky lg:top-24 lg:self-start\">\n {eyebrow ? <FaqEyebrow label={String(eyebrow)} /> : null}\n {title ? (\n <h2 className=\"mt-4 font-display text-3xl font-semibold leading-[1.08] tracking-tight text-foreground sm:text-4xl\">\n {title}\n </h2>\n ) : null}\n {description ? (\n <p className=\"mt-4 text-pretty text-base leading-7 text-muted-foreground\">{description}</p>\n ) : null}\n </div>\n <div className=\"divide-y divide-border\">\n <FaqAccordion\n items={items}\n allowMultiple={allowMultiple}\n defaultOpen={defaultOpen}\n bare\n />\n </div>\n </div>\n);\nFaqSplit.displayName = \"FaqSplit\";"],"names":["FaqSplit","className","items","allowMultiple","defaultOpen","eyebrow","title","description","option","props","jsxs","cn","FaqEyebrow","jsx","FaqAccordion"],"mappings":";;;;AAUO,MAAMA,IAAW,CAAC;AAAA,EACvB,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,aAAAC,IAAc,CAAA;AAAA,EACd,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,QAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC,EAAC,SAAI,WAAWC,EAAG,2DAA2DV,CAAS,GAAI,GAAGQ,GAC5F,UAAA;AAAA,EAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,IAAAL,sBAAWO,GAAA,EAAW,OAAO,OAAOP,CAAO,GAAG,IAAK;AAAA,IACnDC,IACC,gBAAAO,EAAC,MAAA,EAAG,WAAU,sGACX,aACH,IACE;AAAA,IACHN,IACC,gBAAAM,EAAC,KAAA,EAAE,WAAU,8DAA8D,aAAY,IACrF;AAAA,EAAA,GACN;AAAA,EACA,gBAAAA,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAAZ;AAAA,MACA,eAAAC;AAAA,MACA,aAAAC;AAAA,MACA,MAAI;AAAA,IAAA;AAAA,EAAA,EACN,CACF;AAAA,EAAA,CACF;AAEFJ,EAAS,cAAc;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsxs as m, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as x } from "react";
|
|
3
|
+
import { cn as e } from "../../utils/cn.js";
|
|
4
|
+
import { getContrastText as u } from "../../utils/contrast.js";
|
|
5
|
+
const p = x(
|
|
6
|
+
({ className: f, icon: o, title: i, description: l, accent: r, large: d = !1, ...s }, a) => {
|
|
7
|
+
const n = r ? { backgroundColor: r, color: u(r, "#111111", "#ffffff") } : void 0;
|
|
8
|
+
return /* @__PURE__ */ m(
|
|
9
|
+
"div",
|
|
10
|
+
{
|
|
11
|
+
ref: a,
|
|
12
|
+
className: e(
|
|
13
|
+
"group relative flex h-full flex-col rounded-xl border border-border bg-surface p-7 transition-colors duration-200 hover:border-foreground/15",
|
|
14
|
+
f
|
|
15
|
+
),
|
|
16
|
+
...s,
|
|
17
|
+
children: [
|
|
18
|
+
o ? /* @__PURE__ */ t(
|
|
19
|
+
"div",
|
|
20
|
+
{
|
|
21
|
+
className: e(
|
|
22
|
+
"mb-5 inline-flex h-10 w-10 items-center justify-center rounded-lg text-[1.05rem]",
|
|
23
|
+
!r && "bg-primary-soft text-primary"
|
|
24
|
+
),
|
|
25
|
+
style: n,
|
|
26
|
+
children: o
|
|
27
|
+
}
|
|
28
|
+
) : null,
|
|
29
|
+
/* @__PURE__ */ t("h3", { className: e("font-display font-semibold tracking-tight text-foreground", d ? "text-2xl" : "text-lg"), children: i }),
|
|
30
|
+
l ? /* @__PURE__ */ t("p", { className: e("mt-2.5 text-pretty leading-relaxed text-muted-foreground", d ? "text-[15px]" : "text-sm"), children: l }) : null
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
p.displayName = "FeatureCard";
|
|
37
|
+
export {
|
|
38
|
+
p as FeatureCard
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=FeatureCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureCard.js","sources":["../../../../src/components/Features/FeatureCard.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { getContrastText } from \"../../utils/contrast\";\nimport type { FeatureCardProps } from \"./types\";\n\nexport const FeatureCard = forwardRef<HTMLDivElement, FeatureCardProps>(\n ({ className, icon, title, description, accent, large = false, ...props }, ref) => {\n const chipStyle = accent\n ? { backgroundColor: accent, color: getContrastText(accent, \"#111111\", \"#ffffff\") }\n : undefined;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"group relative flex h-full flex-col rounded-xl border border-border bg-surface p-7 transition-colors duration-200 hover:border-foreground/15\",\n className,\n )}\n {...props}\n >\n {icon ? (\n <div\n className={cn(\n \"mb-5 inline-flex h-10 w-10 items-center justify-center rounded-lg text-[1.05rem]\",\n !accent && \"bg-primary-soft text-primary\",\n )}\n style={chipStyle}\n >\n {icon}\n </div>\n ) : null}\n <h3 className={cn(\"font-display font-semibold tracking-tight text-foreground\", large ? \"text-2xl\" : \"text-lg\")}>\n {title}\n </h3>\n {description ? (\n <p className={cn(\"mt-2.5 text-pretty leading-relaxed text-muted-foreground\", large ? \"text-[15px]\" : \"text-sm\")}>\n {description}\n </p>\n ) : null}\n </div>\n );\n },\n);\nFeatureCard.displayName = \"FeatureCard\";"],"names":["FeatureCard","forwardRef","className","icon","title","description","accent","large","props","ref","chipStyle","getContrastText","jsxs","cn","jsx"],"mappings":";;;;AAKO,MAAMA,IAAcC;AAAA,EACzB,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,OAAAC,GAAO,aAAAC,GAAa,QAAAC,GAAQ,OAAAC,IAAQ,IAAO,GAAGC,EAAA,GAASC,MAAQ;AACjF,UAAMC,IAAYJ,IACd,EAAE,iBAAiBA,GAAQ,OAAOK,EAAgBL,GAAQ,WAAW,SAAS,EAAA,IAC9E;AAEJ,WACE,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAH;AAAA,QACA,WAAWI;AAAA,UACT;AAAA,UACAX;AAAA,QAAA;AAAA,QAED,GAAGM;AAAA,QAEH,UAAA;AAAA,UAAAL,IACC,gBAAAW;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD;AAAA,gBACT;AAAA,gBACA,CAACP,KAAU;AAAA,cAAA;AAAA,cAEb,OAAOI;AAAA,cAEN,UAAAP;AAAA,YAAA;AAAA,UAAA,IAED;AAAA,UACJ,gBAAAW,EAAC,QAAG,WAAWD,EAAG,6DAA6DN,IAAQ,aAAa,SAAS,GAC1G,UAAAH,EAAA,CACH;AAAA,UACCC,IACC,gBAAAS,EAAC,KAAA,EAAE,WAAWD,EAAG,4DAA4DN,IAAQ,gBAAgB,SAAS,GAC3G,UAAAF,EAAA,CACH,IACE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACAL,EAAY,cAAc;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as m } from "react";
|
|
3
|
+
import { FeatureColumns as a } from "./variants/Columns.js";
|
|
4
|
+
import { FeatureBento as u } from "./variants/Bento.js";
|
|
5
|
+
import { FeatureEditorialRows as f } from "./variants/EditorialRows.js";
|
|
6
|
+
const n = m(
|
|
7
|
+
({ option: o = "columns", columns: i = 3, ...r }, t) => o === "editorialRows" ? /* @__PURE__ */ e(f, { ref: t, ...r }) : o === "bento" ? /* @__PURE__ */ e(u, { ref: t, ...r }) : /* @__PURE__ */ e(a, { ref: t, columns: i, ...r })
|
|
8
|
+
);
|
|
9
|
+
n.displayName = "FeatureGrid";
|
|
10
|
+
export {
|
|
11
|
+
n as FeatureGrid
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=FeatureGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureGrid.js","sources":["../../../../src/components/Features/FeatureGrid.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { FeatureGridProps } from \"./types\";\nimport { FeatureColumns } from \"./variants/Columns\";\nimport { FeatureBento } from \"./variants/Bento\";\nimport { FeatureEditorialRows } from \"./variants/EditorialRows\";\n\nexport const FeatureGrid = forwardRef<HTMLDivElement, FeatureGridProps>(\n ({ option = \"columns\", columns = 3, ...props }, ref) => {\n if (option === \"editorialRows\") return <FeatureEditorialRows ref={ref} {...props} />;\n if (option === \"bento\") return <FeatureBento ref={ref} {...props} />;\n return <FeatureColumns ref={ref} columns={columns} {...props} />;\n },\n);\nFeatureGrid.displayName = \"FeatureGrid\";"],"names":["FeatureGrid","forwardRef","option","columns","props","ref","FeatureEditorialRows","FeatureBento","jsx","FeatureColumns"],"mappings":";;;;;AAMO,MAAMA,IAAcC;AAAA,EACzB,CAAC,EAAE,QAAAC,IAAS,WAAW,SAAAC,IAAU,GAAG,GAAGC,EAAA,GAASC,MAC1CH,MAAW,oCAAyBI,GAAA,EAAqB,KAAAD,GAAW,GAAGD,GAAO,IAC9EF,MAAW,4BAAiBK,GAAA,EAAa,KAAAF,GAAW,GAAGD,GAAO,IAC3D,gBAAAI,EAACC,GAAA,EAAe,KAAAJ,GAAU,SAAAF,GAAmB,GAAGC,GAAO;AAElE;AACAJ,EAAY,cAAc;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const s = {
|
|
2
|
+
2: "sm:grid-cols-2",
|
|
3
|
+
3: "sm:grid-cols-2 lg:grid-cols-3",
|
|
4
|
+
4: "sm:grid-cols-2 lg:grid-cols-4"
|
|
5
|
+
}, l = [
|
|
6
|
+
"sm:col-span-2 lg:row-span-2",
|
|
7
|
+
"",
|
|
8
|
+
"",
|
|
9
|
+
"lg:col-span-2",
|
|
10
|
+
"",
|
|
11
|
+
"lg:col-span-2"
|
|
12
|
+
];
|
|
13
|
+
export {
|
|
14
|
+
l as bentoSpans,
|
|
15
|
+
s as gridCols
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","sources":["../../../../src/components/Features/parts.ts"],"sourcesContent":["export const gridCols: Record<2 | 3 | 4, string> = {\n 2: \"sm:grid-cols-2\",\n 3: \"sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"sm:grid-cols-2 lg:grid-cols-4\",\n};\n\n/** Asymmetric bento layout for up to 6 features. */\nexport const bentoSpans: string[] = [\n \"sm:col-span-2 lg:row-span-2\",\n \"\",\n \"\",\n \"lg:col-span-2\",\n \"\",\n \"lg:col-span-2\",\n];"],"names":["gridCols","bentoSpans"],"mappings":"AAAO,MAAMA,IAAsC;AAAA,EACjD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL,GAGaC,IAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as d } from "react";
|
|
3
|
+
import { cn as l } from "../../../utils/cn.js";
|
|
4
|
+
import { FeatureCard as n } from "../FeatureCard.js";
|
|
5
|
+
import { bentoSpans as m } from "../parts.js";
|
|
6
|
+
const c = d(
|
|
7
|
+
({ className: e, features: s, ...t }, i) => /* @__PURE__ */ o(
|
|
8
|
+
"div",
|
|
9
|
+
{
|
|
10
|
+
ref: i,
|
|
11
|
+
className: l(
|
|
12
|
+
"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4 lg:auto-rows-[minmax(9rem,auto)]",
|
|
13
|
+
"w-full",
|
|
14
|
+
e
|
|
15
|
+
),
|
|
16
|
+
...t,
|
|
17
|
+
children: s.map(
|
|
18
|
+
(a, r) => a ? /* @__PURE__ */ o("div", { className: l(r < m.length && m[r]), children: /* @__PURE__ */ o(n, { ...a, large: r === 0, className: "h-full" }) }, r) : null
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
);
|
|
23
|
+
c.displayName = "FeatureBento";
|
|
24
|
+
export {
|
|
25
|
+
c as FeatureBento
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=Bento.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bento.js","sources":["../../../../../src/components/Features/variants/Bento.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { FeatureCard } from \"../FeatureCard\";\nimport { bentoSpans } from \"../parts\";\nimport type { FeatureItem } from \"../types\";\n\ninterface BentoProps extends HTMLAttributes<HTMLDivElement> {\n features: FeatureItem[];\n}\n\nexport const FeatureBento = forwardRef<HTMLDivElement, BentoProps>(\n ({ className, features, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4 lg:auto-rows-[minmax(9rem,auto)]\",\n \"w-full\",\n className,\n )}\n {...props}\n >\n {features.map((feature, i) =>\n feature ? (\n <div key={i} className={cn(i < bentoSpans.length && bentoSpans[i])}>\n <FeatureCard {...feature} large={i === 0} className=\"h-full\" />\n </div>\n ) : null,\n )}\n </div>\n ),\n);\nFeatureBento.displayName = \"FeatureBento\";"],"names":["FeatureBento","forwardRef","className","features","props","ref","jsx","cn","feature","i","bentoSpans","FeatureCard"],"mappings":";;;;;AAUO,MAAMA,IAAeC;AAAA,EAC1B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAClC,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACA;AAAA,QACAL;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,MAEH,UAAAD,EAAS;AAAA,QAAI,CAACK,GAASC,MACtBD,IACE,gBAAAF,EAAC,OAAA,EAAY,WAAWC,EAAGE,IAAIC,EAAW,UAAUA,EAAWD,CAAC,CAAC,GAC/D,UAAA,gBAAAH,EAACK,GAAA,EAAa,GAAGH,GAAS,OAAOC,MAAM,GAAG,WAAU,SAAA,CAAS,EAAA,GADrDA,CAEV,IACE;AAAA,MAAA;AAAA,IACN;AAAA,EAAA;AAGN;AACAT,EAAa,cAAc;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as t } from "react";
|
|
3
|
+
import { cn as f } from "../../../utils/cn.js";
|
|
4
|
+
import { FeatureCard as p } from "../FeatureCard.js";
|
|
5
|
+
import { gridCols as d } from "../parts.js";
|
|
6
|
+
const u = t(
|
|
7
|
+
({ className: o, features: m, columns: a, ...e }, l) => /* @__PURE__ */ r("div", { ref: l, className: f("grid w-full grid-cols-1 gap-4", d[a], o), ...e, children: m.map((i, s) => /* @__PURE__ */ r(p, { ...i, className: "h-full" }, s)) })
|
|
8
|
+
);
|
|
9
|
+
u.displayName = "FeatureColumns";
|
|
10
|
+
export {
|
|
11
|
+
u as FeatureColumns
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=Columns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Columns.js","sources":["../../../../../src/components/Features/variants/Columns.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { FeatureCard } from \"../FeatureCard\";\nimport { gridCols } from \"../parts\";\nimport type { FeatureItem } from \"../types\";\n\ninterface ColumnsProps extends HTMLAttributes<HTMLDivElement> {\n features: FeatureItem[];\n columns: 2 | 3 | 4;\n}\n\nexport const FeatureColumns = forwardRef<HTMLDivElement, ColumnsProps>(\n ({ className, features, columns, ...props }, ref) => (\n <div ref={ref} className={cn(\"grid w-full grid-cols-1 gap-4\", gridCols[columns], className)} {...props}>\n {features.map((feature, i) => (\n <FeatureCard key={i} {...feature} className=\"h-full\" />\n ))}\n </div>\n ),\n);\nFeatureColumns.displayName = \"FeatureColumns\";"],"names":["FeatureColumns","forwardRef","className","features","columns","props","ref","cn","gridCols","feature","i","jsx","FeatureCard"],"mappings":";;;;;AAWO,MAAMA,IAAiBC;AAAA,EAC5B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,SAAAC,GAAS,GAAGC,EAAA,GAASC,wBAC1C,OAAA,EAAI,KAAAA,GAAU,WAAWC,EAAG,iCAAiCC,EAASJ,CAAO,GAAGF,CAAS,GAAI,GAAGG,GAC9F,UAAAF,EAAS,IAAI,CAACM,GAASC,MACtB,gBAAAC,EAACC,GAAA,EAAqB,GAAGH,GAAS,WAAU,SAAA,GAA1BC,CAAmC,CACtD,EAAA,CACH;AAEJ;AACAV,EAAe,cAAc;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as e, jsxs as r } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as o } from "react";
|
|
3
|
+
import { cn as a } from "../../../utils/cn.js";
|
|
4
|
+
const n = o(
|
|
5
|
+
({ className: t, features: d, ...l }, m) => /* @__PURE__ */ e("div", { ref: m, className: a("w-full", t), ...l, children: /* @__PURE__ */ e("div", { className: "divide-y divide-border border-t border-b border-border", children: d.map((s, i) => /* @__PURE__ */ r(
|
|
6
|
+
"div",
|
|
7
|
+
{
|
|
8
|
+
className: "group flex flex-col gap-3 py-6 transition-colors duration-200 sm:flex-row sm:items-baseline sm:gap-10",
|
|
9
|
+
children: [
|
|
10
|
+
/* @__PURE__ */ e("span", { className: "text-sm font-medium tabular-nums text-muted-foreground/60 sm:w-12", children: String(i + 1).padStart(2, "0") }),
|
|
11
|
+
/* @__PURE__ */ r("div", { className: "flex-1 sm:flex sm:items-baseline sm:justify-between sm:gap-10", children: [
|
|
12
|
+
/* @__PURE__ */ e("h3", { className: "font-display text-xl font-semibold tracking-tight text-foreground sm:w-2/5", children: s.title }),
|
|
13
|
+
/* @__PURE__ */ e("p", { className: "mt-1.5 text-sm leading-7 text-muted-foreground sm:mt-0 sm:w-1/2", children: s.description })
|
|
14
|
+
] }),
|
|
15
|
+
s.icon ? /* @__PURE__ */ e("span", { className: "hidden text-foreground/30 sm:inline-flex", children: s.icon }) : null
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
i
|
|
19
|
+
)) }) })
|
|
20
|
+
);
|
|
21
|
+
n.displayName = "FeatureEditorialRows";
|
|
22
|
+
export {
|
|
23
|
+
n as FeatureEditorialRows
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=EditorialRows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditorialRows.js","sources":["../../../../../src/components/Features/variants/EditorialRows.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport type { FeatureItem } from \"../types\";\n\ninterface EditorialRowsProps extends HTMLAttributes<HTMLDivElement> {\n features: FeatureItem[];\n}\n\nexport const FeatureEditorialRows = forwardRef<HTMLDivElement, EditorialRowsProps>(\n ({ className, features, ...props }, ref) => (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n <div className=\"divide-y divide-border border-t border-b border-border\">\n {features.map((feature, i) => (\n <div\n key={i}\n className=\"group flex flex-col gap-3 py-6 transition-colors duration-200 sm:flex-row sm:items-baseline sm:gap-10\"\n >\n <span className=\"text-sm font-medium tabular-nums text-muted-foreground/60 sm:w-12\">\n {String(i + 1).padStart(2, \"0\")}\n </span>\n <div className=\"flex-1 sm:flex sm:items-baseline sm:justify-between sm:gap-10\">\n <h3 className=\"font-display text-xl font-semibold tracking-tight text-foreground sm:w-2/5\">\n {feature.title}\n </h3>\n <p className=\"mt-1.5 text-sm leading-7 text-muted-foreground sm:mt-0 sm:w-1/2\">\n {feature.description}\n </p>\n </div>\n {feature.icon ? (\n <span className=\"hidden text-foreground/30 sm:inline-flex\">{feature.icon}</span>\n ) : null}\n </div>\n ))}\n </div>\n </div>\n ),\n);\nFeatureEditorialRows.displayName = \"FeatureEditorialRows\";"],"names":["FeatureEditorialRows","forwardRef","className","features","props","ref","jsx","cn","feature","jsxs"],"mappings":";;;AAQO,MAAMA,IAAuBC;AAAA,EAClC,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAClC,gBAAAC,EAAC,OAAA,EAAI,KAAAD,GAAU,WAAWE,EAAG,UAAUL,CAAS,GAAI,GAAGE,GACrD,UAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,0DACZ,UAAAH,EAAS,IAAI,CAACK,GAAS,MACtB,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAAH,EAAC,QAAA,EAAK,WAAU,qEACb,UAAA,OAAO,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,EAAA,CAChC;AAAA,QACA,gBAAAG,EAAC,OAAA,EAAI,WAAU,iEACb,UAAA;AAAA,UAAA,gBAAAH,EAAC,MAAA,EAAG,WAAU,8EACX,UAAAE,EAAQ,OACX;AAAA,UACA,gBAAAF,EAAC,KAAA,EAAE,WAAU,mEACV,YAAQ,YAAA,CACX;AAAA,QAAA,GACF;AAAA,QACCE,EAAQ,OACP,gBAAAF,EAAC,QAAA,EAAK,WAAU,4CAA4C,UAAAE,EAAQ,MAAK,IACvE;AAAA,MAAA;AAAA,IAAA;AAAA,IAhBC;AAAA,EAAA,CAkBR,GACH,EAAA,CACF;AAEJ;AACAR,EAAqB,cAAc;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { FooterClassic as t } from "./variants/Classic.js";
|
|
3
|
+
import { FooterMinimal as m } from "./variants/Minimal.js";
|
|
4
|
+
import { FooterEditorial as e } from "./variants/Editorial.js";
|
|
5
|
+
const a = ({ option: i = "classic", ...r }) => i === "minimal" ? /* @__PURE__ */ o(m, { ...r }) : i === "editorial" ? /* @__PURE__ */ o(e, { ...r }) : /* @__PURE__ */ o(t, { ...r });
|
|
6
|
+
a.displayName = "Footer";
|
|
7
|
+
export {
|
|
8
|
+
a as Footer
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=Footer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.js","sources":["../../../../src/components/Footer/Footer.tsx"],"sourcesContent":["import type { FooterProps } from \"./types\";\nimport { FooterClassic } from \"./variants/Classic\";\nimport { FooterMinimal } from \"./variants/Minimal\";\nimport { FooterEditorial } from \"./variants/Editorial\";\n\nexport const Footer = ({ option = \"classic\", ...props }: FooterProps) => {\n if (option === \"minimal\") return <FooterMinimal {...props} />;\n if (option === \"editorial\") return <FooterEditorial {...props} />;\n return <FooterClassic {...props} />;\n};\nFooter.displayName = \"Footer\";"],"names":["Footer","option","props","jsx","FooterMinimal","FooterEditorial","FooterClassic"],"mappings":";;;;AAKO,MAAMA,IAAS,CAAC,EAAE,QAAAC,IAAS,WAAW,GAAGC,QAC1CD,MAAW,YAAkB,gBAAAE,EAACC,GAAA,EAAe,GAAGF,GAAO,IACvDD,MAAW,cAAoB,gBAAAE,EAACE,GAAA,EAAiB,GAAGH,GAAO,IACxD,gBAAAC,EAACG,GAAA,EAAe,GAAGJ,EAAA,CAAO;AAEnCF,EAAO,cAAc;"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as r, jsxs as s } from "react/jsx-runtime";
|
|
2
|
+
import { cn as a } from "../../utils/cn.js";
|
|
3
|
+
function m({
|
|
4
|
+
logo: e,
|
|
5
|
+
logoSrc: n,
|
|
6
|
+
logoAlt: i,
|
|
7
|
+
logoClassName: l,
|
|
8
|
+
brand: t,
|
|
9
|
+
imageClassName: o = "h-7 w-auto"
|
|
10
|
+
}) {
|
|
11
|
+
return e || (n ? /* @__PURE__ */ r(
|
|
12
|
+
"img",
|
|
13
|
+
{
|
|
14
|
+
src: n,
|
|
15
|
+
alt: i ?? (typeof t == "string" ? t : "Logo"),
|
|
16
|
+
className: a(o, l)
|
|
17
|
+
}
|
|
18
|
+
) : null);
|
|
19
|
+
}
|
|
20
|
+
function u({ brand: e }) {
|
|
21
|
+
return /* @__PURE__ */ s("span", { className: "flex items-center gap-2 font-display text-lg font-bold tracking-tight", children: [
|
|
22
|
+
/* @__PURE__ */ r("span", { "aria-hidden": !0, className: "inline-block h-2.5 w-2.5 rounded-sm bg-current" }),
|
|
23
|
+
e
|
|
24
|
+
] });
|
|
25
|
+
}
|
|
26
|
+
function f({ brand: e }) {
|
|
27
|
+
return /* @__PURE__ */ r("span", { className: "font-display text-5xl font-bold tracking-[-0.03em] text-foreground sm:text-7xl", children: e });
|
|
28
|
+
}
|
|
29
|
+
function h({
|
|
30
|
+
columns: e,
|
|
31
|
+
Link: n,
|
|
32
|
+
linkClassName: i
|
|
33
|
+
}) {
|
|
34
|
+
return /* @__PURE__ */ r("div", { className: "grid grid-cols-2 gap-8 md:grid-cols-4", children: e.map((l) => /* @__PURE__ */ s("div", { children: [
|
|
35
|
+
/* @__PURE__ */ r("h3", { className: "text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground", children: l.title }),
|
|
36
|
+
/* @__PURE__ */ r("ul", { className: "mt-4 space-y-2.5", children: l.links.map((t) => /* @__PURE__ */ r("li", { children: /* @__PURE__ */ r(n, { href: t.href, className: i, children: t.label }) }, t.href)) })
|
|
37
|
+
] }, l.title)) });
|
|
38
|
+
}
|
|
39
|
+
function p({
|
|
40
|
+
bottom: e,
|
|
41
|
+
languageSwitcher: n,
|
|
42
|
+
brand: i,
|
|
43
|
+
wrapperClassName: l,
|
|
44
|
+
textClassName: t
|
|
45
|
+
}) {
|
|
46
|
+
return /* @__PURE__ */ s("div", { className: l, children: [
|
|
47
|
+
/* @__PURE__ */ r("span", { className: a(t), children: e }),
|
|
48
|
+
n ? /* @__PURE__ */ r("div", { children: n }) : null,
|
|
49
|
+
/* @__PURE__ */ s("span", { className: a(t), children: [
|
|
50
|
+
"© ",
|
|
51
|
+
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
52
|
+
" ",
|
|
53
|
+
i,
|
|
54
|
+
". All rights reserved."
|
|
55
|
+
] })
|
|
56
|
+
] });
|
|
57
|
+
}
|
|
58
|
+
export {
|
|
59
|
+
p as FooterBottomBar,
|
|
60
|
+
h as FooterColumnsBlock,
|
|
61
|
+
f as FooterEditorialWordmark,
|
|
62
|
+
m as FooterLogoNode,
|
|
63
|
+
u as FooterWordmark
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","sources":["../../../../src/components/Footer/parts.tsx"],"sourcesContent":["import type { ElementType, ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { FooterColumn } from \"./types\";\n\nexport function FooterLogoNode({\n logo,\n logoSrc,\n logoAlt,\n logoClassName,\n brand,\n imageClassName = \"h-7 w-auto\",\n}: {\n logo?: ReactNode;\n logoSrc?: string;\n logoAlt?: string;\n logoClassName?: string;\n brand?: ReactNode;\n imageClassName?: string;\n}) {\n if (logo) return logo;\n if (logoSrc) {\n return (\n <img\n src={logoSrc}\n alt={logoAlt ?? (typeof brand === \"string\" ? brand : \"Logo\")}\n className={cn(imageClassName, logoClassName)}\n />\n );\n }\n return null;\n}\n\nexport function FooterWordmark({ brand }: { brand?: ReactNode }) {\n return (\n <span className=\"flex items-center gap-2 font-display text-lg font-bold tracking-tight\">\n <span aria-hidden className=\"inline-block h-2.5 w-2.5 rounded-sm bg-current\" />\n {brand}\n </span>\n );\n}\n\nexport function FooterEditorialWordmark({ brand }: { brand?: ReactNode }) {\n return (\n <span className=\"font-display text-5xl font-bold tracking-[-0.03em] text-foreground sm:text-7xl\">\n {brand}\n </span>\n );\n}\n\nexport function FooterColumnsBlock({\n columns,\n Link,\n linkClassName,\n}: {\n columns: FooterColumn[];\n Link: ElementType;\n linkClassName: string;\n}) {\n return (\n <div className=\"grid grid-cols-2 gap-8 md:grid-cols-4\">\n {columns.map((column) => (\n <div key={column.title}>\n <h3 className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {column.title}\n </h3>\n <ul className=\"mt-4 space-y-2.5\">\n {column.links.map((link) => (\n <li key={link.href}>\n <Link href={link.href} className={linkClassName}>\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n );\n}\n\nexport function FooterBottomBar({\n bottom,\n languageSwitcher,\n brand,\n wrapperClassName,\n textClassName,\n}: {\n bottom?: ReactNode;\n languageSwitcher?: ReactNode;\n brand?: ReactNode;\n wrapperClassName: string;\n textClassName: string;\n}) {\n return (\n <div className={wrapperClassName}>\n <span className={cn(textClassName)}>{bottom}</span>\n {languageSwitcher ? <div>{languageSwitcher}</div> : null}\n <span className={cn(textClassName)}>© {new Date().getFullYear()} {brand}. All rights reserved.</span>\n </div>\n );\n}"],"names":["FooterLogoNode","logo","logoSrc","logoAlt","logoClassName","brand","imageClassName","jsx","cn","FooterWordmark","jsxs","FooterEditorialWordmark","FooterColumnsBlock","columns","Link","linkClassName","column","link","FooterBottomBar","bottom","languageSwitcher","wrapperClassName","textClassName"],"mappings":";;AAIO,SAASA,EAAe;AAAA,EAC7B,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAC;AAAA,EACA,gBAAAC,IAAiB;AACnB,GAOG;AACD,SAAIL,MACAC,IAEA,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKL;AAAA,MACL,KAAKC,MAAY,OAAOE,KAAU,WAAWA,IAAQ;AAAA,MACrD,WAAWG,EAAGF,GAAgBF,CAAa;AAAA,IAAA;AAAA,EAAA,IAI1C;AACT;AAEO,SAASK,EAAe,EAAE,OAAAJ,KAAgC;AAC/D,SACE,gBAAAK,EAAC,QAAA,EAAK,WAAU,yEACd,UAAA;AAAA,IAAA,gBAAAH,EAAC,QAAA,EAAK,eAAW,IAAC,WAAU,kDAAiD;AAAA,IAC5EF;AAAA,EAAA,GACH;AAEJ;AAEO,SAASM,EAAwB,EAAE,OAAAN,KAAgC;AACxE,SACE,gBAAAE,EAAC,QAAA,EAAK,WAAU,kFACb,UAAAF,GACH;AAEJ;AAEO,SAASO,EAAmB;AAAA,EACjC,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,eAAAC;AACF,GAIG;AACD,SACE,gBAAAR,EAAC,SAAI,WAAU,yCACZ,YAAQ,IAAI,CAACS,MACZ,gBAAAN,EAAC,OAAA,EACC,UAAA;AAAA,IAAA,gBAAAH,EAAC,MAAA,EAAG,WAAU,2EACX,UAAAS,EAAO,OACV;AAAA,IACA,gBAAAT,EAAC,MAAA,EAAG,WAAU,oBACX,UAAAS,EAAO,MAAM,IAAI,CAACC,MACjB,gBAAAV,EAAC,MAAA,EACC,UAAA,gBAAAA,EAACO,KAAK,MAAMG,EAAK,MAAM,WAAWF,GAC/B,UAAAE,EAAK,OACR,EAAA,GAHOA,EAAK,IAId,CACD,EAAA,CACH;AAAA,EAAA,EAAA,GAZQD,EAAO,KAajB,CACD,GACH;AAEJ;AAEO,SAASE,EAAgB;AAAA,EAC9B,QAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,OAAAf;AAAA,EACA,kBAAAgB;AAAA,EACA,eAAAC;AACF,GAMG;AACD,SACE,gBAAAZ,EAAC,OAAA,EAAI,WAAWW,GACd,UAAA;AAAA,IAAA,gBAAAd,EAAC,QAAA,EAAK,WAAWC,EAAGc,CAAa,GAAI,UAAAH,GAAO;AAAA,IAC3CC,IAAmB,gBAAAb,EAAC,OAAA,EAAK,UAAAa,EAAA,CAAiB,IAAS;AAAA,IACpD,gBAAAV,EAAC,QAAA,EAAK,WAAWF,EAAGc,CAAa,GAAG,UAAA;AAAA,MAAA;AAAA,OAAG,oBAAI,KAAA,GAAO,YAAA;AAAA,MAAc;AAAA,MAAEjB;AAAA,MAAM;AAAA,IAAA,EAAA,CAAsB;AAAA,EAAA,GAChG;AAEJ;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as e, jsxs as r } from "react/jsx-runtime";
|
|
2
|
+
import { cn as v } from "../../../utils/cn.js";
|
|
3
|
+
import { Container as w } from "../../Container.js";
|
|
4
|
+
import { FooterLogoNode as b, FooterWordmark as C, FooterBottomBar as F } from "../parts.js";
|
|
5
|
+
function j({ className: n, brand: t, logo: i, logoSrc: m, logoAlt: d, logoClassName: x, description: a, columns: p, socials: l, bottom: h, languageSwitcher: f, badge: c, LinkComponent: N, ...y }) {
|
|
6
|
+
const g = N ?? "a", u = b({ logo: i, logoSrc: m, logoAlt: d, logoClassName: x, brand: t }) ?? /* @__PURE__ */ e(C, { brand: t });
|
|
7
|
+
return /* @__PURE__ */ e("footer", { className: v("w-full bg-secondary text-on-secondary", n), ...y, children: /* @__PURE__ */ r(w, { className: "py-16", children: [
|
|
8
|
+
/* @__PURE__ */ r("div", { className: "grid grid-cols-2 gap-10 md:grid-cols-4 lg:grid-cols-6", children: [
|
|
9
|
+
/* @__PURE__ */ r("div", { className: "col-span-2", children: [
|
|
10
|
+
/* @__PURE__ */ e("span", { style: { color: "rgb(var(--color-on-secondary))" }, children: u }),
|
|
11
|
+
a ? /* @__PURE__ */ e("p", { className: "mt-4 max-w-xs text-sm leading-6 text-on-secondary/60", children: a }) : null,
|
|
12
|
+
l ? /* @__PURE__ */ e("div", { className: "mt-6 flex items-center gap-3", children: l }) : null,
|
|
13
|
+
c ? /* @__PURE__ */ e("div", { className: "mt-6", children: c }) : null
|
|
14
|
+
] }),
|
|
15
|
+
p.map((o) => /* @__PURE__ */ r("div", { children: [
|
|
16
|
+
/* @__PURE__ */ e("h3", { className: "text-xs font-semibold uppercase tracking-[0.16em] text-on-secondary/50", children: o.title }),
|
|
17
|
+
/* @__PURE__ */ e("ul", { className: "mt-4 space-y-2.5", children: o.links.map((s) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
|
|
18
|
+
g,
|
|
19
|
+
{
|
|
20
|
+
href: s.href,
|
|
21
|
+
className: "text-sm text-on-secondary/70 transition-colors duration-150 hover:text-on-secondary",
|
|
22
|
+
children: s.label
|
|
23
|
+
}
|
|
24
|
+
) }, s.href)) })
|
|
25
|
+
] }, o.title))
|
|
26
|
+
] }),
|
|
27
|
+
/* @__PURE__ */ e(
|
|
28
|
+
F,
|
|
29
|
+
{
|
|
30
|
+
bottom: h,
|
|
31
|
+
languageSwitcher: f,
|
|
32
|
+
brand: t,
|
|
33
|
+
wrapperClassName: "mt-14 flex flex-col items-center justify-between gap-4 border-t border-white/10 pt-8 text-sm text-on-secondary/50 sm:flex-row",
|
|
34
|
+
textClassName: ""
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
] }) });
|
|
38
|
+
}
|
|
39
|
+
j.displayName = "FooterClassic";
|
|
40
|
+
export {
|
|
41
|
+
j as FooterClassic
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=Classic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Classic.js","sources":["../../../../../src/components/Footer/variants/Classic.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport type { FooterProps } from \"../types\";\nimport {\n FooterWordmark,\n FooterLogoNode,\n FooterBottomBar,\n} from \"../parts\";\n\ninterface ClassicProps extends FooterProps {}\n\nexport function FooterClassic({ className, brand, logo, logoSrc, logoAlt, logoClassName, description, columns, socials, bottom, languageSwitcher, badge, LinkComponent, ...props }: ClassicProps) {\n const Link = LinkComponent ?? \"a\";\n const brandNode = FooterLogoNode({ logo, logoSrc, logoAlt, logoClassName, brand }) ?? <FooterWordmark brand={brand} />;\n\n return (\n <footer className={cn(\"w-full bg-secondary text-on-secondary\", className)} {...props}>\n <Container className=\"py-16\">\n <div className=\"grid grid-cols-2 gap-10 md:grid-cols-4 lg:grid-cols-6\">\n <div className=\"col-span-2\">\n <span style={{ color: \"rgb(var(--color-on-secondary))\" }}>{brandNode}</span>\n {description ? (\n <p className=\"mt-4 max-w-xs text-sm leading-6 text-on-secondary/60\">{description}</p>\n ) : null}\n {socials ? <div className=\"mt-6 flex items-center gap-3\">{socials}</div> : null}\n {badge ? <div className=\"mt-6\">{badge}</div> : null}\n </div>\n {columns.map((column) => (\n <div key={column.title}>\n <h3 className=\"text-xs font-semibold uppercase tracking-[0.16em] text-on-secondary/50\">\n {column.title}\n </h3>\n <ul className=\"mt-4 space-y-2.5\">\n {column.links.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n className=\"text-sm text-on-secondary/70 transition-colors duration-150 hover:text-on-secondary\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n <FooterBottomBar\n bottom={bottom}\n languageSwitcher={languageSwitcher}\n brand={brand}\n wrapperClassName=\"mt-14 flex flex-col items-center justify-between gap-4 border-t border-white/10 pt-8 text-sm text-on-secondary/50 sm:flex-row\"\n textClassName=\"\"\n />\n </Container>\n </footer>\n );\n}\nFooterClassic.displayName = \"FooterClassic\";"],"names":["FooterClassic","className","brand","logo","logoSrc","logoAlt","logoClassName","description","columns","socials","bottom","languageSwitcher","badge","LinkComponent","props","Link","brandNode","FooterLogoNode","jsx","FooterWordmark","cn","jsxs","Container","column","link","FooterBottomBar"],"mappings":";;;;AAWO,SAASA,EAAc,EAAE,WAAAC,GAAW,OAAAC,GAAO,MAAAC,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,aAAAC,GAAa,SAAAC,GAAS,SAAAC,GAAS,QAAAC,GAAQ,kBAAAC,GAAkB,OAAAC,GAAO,eAAAC,GAAe,GAAGC,KAAuB;AAChM,QAAMC,IAAOF,KAAiB,KACxBG,IAAYC,EAAe,EAAE,MAAAd,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,OAAAJ,EAAA,CAAO,KAAK,gBAAAgB,EAACC,GAAA,EAAe,OAAAjB,EAAA,CAAc;AAEpH,SACE,gBAAAgB,EAAC,UAAA,EAAO,WAAWE,EAAG,yCAAyCnB,CAAS,GAAI,GAAGa,GAC7E,UAAA,gBAAAO,EAACC,GAAA,EAAU,WAAU,SACnB,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,yDACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,cACb,UAAA;AAAA,QAAA,gBAAAH,EAAC,UAAK,OAAO,EAAE,OAAO,iCAAA,GAAqC,UAAAF,GAAU;AAAA,QACpET,IACC,gBAAAW,EAAC,KAAA,EAAE,WAAU,wDAAwD,aAAY,IAC/E;AAAA,QACHT,IAAU,gBAAAS,EAAC,OAAA,EAAI,WAAU,gCAAgC,aAAQ,IAAS;AAAA,QAC1EN,IAAQ,gBAAAM,EAAC,OAAA,EAAI,WAAU,QAAQ,aAAM,IAAS;AAAA,MAAA,GACjD;AAAA,MACCV,EAAQ,IAAI,CAACe,wBACX,OAAA,EACC,UAAA;AAAA,QAAA,gBAAAL,EAAC,MAAA,EAAG,WAAU,0EACX,UAAAK,EAAO,OACV;AAAA,QACA,gBAAAL,EAAC,MAAA,EAAG,WAAU,oBACX,UAAAK,EAAO,MAAM,IAAI,CAACC,MACjB,gBAAAN,EAAC,MAAA,EACC,UAAA,gBAAAA;AAAA,UAACH;AAAA,UAAA;AAAA,YACC,MAAMS,EAAK;AAAA,YACX,WAAU;AAAA,YAET,UAAAA,EAAK;AAAA,UAAA;AAAA,QAAA,KALDA,EAAK,IAOd,CACD,EAAA,CACH;AAAA,MAAA,EAAA,GAfQD,EAAO,KAgBjB,CACD;AAAA,IAAA,GACH;AAAA,IACA,gBAAAL;AAAA,MAACO;AAAA,MAAA;AAAA,QACC,QAAAf;AAAA,QACA,kBAAAC;AAAA,QACA,OAAAT;AAAA,QACA,kBAAiB;AAAA,QACjB,eAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAChB,EAAA,CACF,EAAA,CACF;AAEJ;AACAF,EAAc,cAAc;"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as e, jsxs as o } from "react/jsx-runtime";
|
|
2
|
+
import { cn as N } from "../../../utils/cn.js";
|
|
3
|
+
import { Container as g } from "../../Container.js";
|
|
4
|
+
import { FooterLogoNode as h, FooterEditorialWordmark as w, FooterColumnsBlock as C, FooterBottomBar as F } from "../parts.js";
|
|
5
|
+
function k({ className: m, brand: r, logo: a, logoSrc: s, logoAlt: d, logoClassName: i, description: t, columns: n, socials: l, bottom: c, languageSwitcher: f, LinkComponent: x, ...u }) {
|
|
6
|
+
const p = x ?? "a", b = h({ logo: a, logoSrc: s, logoAlt: d, logoClassName: i, brand: r, imageClassName: "h-12 w-auto" }) ?? /* @__PURE__ */ e(w, { brand: r });
|
|
7
|
+
return /* @__PURE__ */ e("footer", { className: N("w-full border-t border-border bg-background", m), ...u, children: /* @__PURE__ */ o(g, { className: "py-16 sm:py-20", children: [
|
|
8
|
+
/* @__PURE__ */ o("div", { className: "mb-14 flex flex-col justify-between gap-8 sm:flex-row sm:items-end", children: [
|
|
9
|
+
/* @__PURE__ */ o("div", { children: [
|
|
10
|
+
b,
|
|
11
|
+
t ? /* @__PURE__ */ e("p", { className: "mt-3 max-w-sm text-sm leading-6 text-muted-foreground", children: t }) : null
|
|
12
|
+
] }),
|
|
13
|
+
l ? /* @__PURE__ */ e("div", { className: "flex items-center gap-3", children: l }) : null
|
|
14
|
+
] }),
|
|
15
|
+
/* @__PURE__ */ e("div", { className: "border-t border-border pt-12", children: /* @__PURE__ */ e(
|
|
16
|
+
C,
|
|
17
|
+
{
|
|
18
|
+
columns: n,
|
|
19
|
+
Link: p,
|
|
20
|
+
linkClassName: "text-[15px] text-foreground/80 transition-colors duration-150 hover:text-foreground"
|
|
21
|
+
}
|
|
22
|
+
) }),
|
|
23
|
+
/* @__PURE__ */ e(
|
|
24
|
+
F,
|
|
25
|
+
{
|
|
26
|
+
bottom: c,
|
|
27
|
+
languageSwitcher: f,
|
|
28
|
+
brand: r,
|
|
29
|
+
wrapperClassName: "mt-12 flex flex-col items-center justify-between gap-4 border-t border-border pt-8 text-sm text-muted-foreground sm:flex-row",
|
|
30
|
+
textClassName: ""
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
] }) });
|
|
34
|
+
}
|
|
35
|
+
k.displayName = "FooterEditorial";
|
|
36
|
+
export {
|
|
37
|
+
k as FooterEditorial
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=Editorial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Editorial.js","sources":["../../../../../src/components/Footer/variants/Editorial.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport type { FooterProps } from \"../types\";\nimport {\n FooterColumnsBlock,\n FooterEditorialWordmark,\n FooterLogoNode,\n FooterBottomBar,\n} from \"../parts\";\n\ninterface EditorialProps extends FooterProps {}\n\nexport function FooterEditorial({ className, brand, logo, logoSrc, logoAlt, logoClassName, description, columns, socials, bottom, languageSwitcher, LinkComponent, ...props }: EditorialProps) {\n const Link = LinkComponent ?? \"a\";\n const brandNode = FooterLogoNode({ logo, logoSrc, logoAlt, logoClassName, brand, imageClassName: \"h-12 w-auto\" }) ?? <FooterEditorialWordmark brand={brand} />;\n\n return (\n <footer className={cn(\"w-full border-t border-border bg-background\", className)} {...props}>\n <Container className=\"py-16 sm:py-20\">\n <div className=\"mb-14 flex flex-col justify-between gap-8 sm:flex-row sm:items-end\">\n <div>\n {brandNode}\n {description ? (\n <p className=\"mt-3 max-w-sm text-sm leading-6 text-muted-foreground\">{description}</p>\n ) : null}\n </div>\n {socials ? <div className=\"flex items-center gap-3\">{socials}</div> : null}\n </div>\n <div className=\"border-t border-border pt-12\">\n <FooterColumnsBlock\n columns={columns}\n Link={Link}\n linkClassName=\"text-[15px] text-foreground/80 transition-colors duration-150 hover:text-foreground\"\n />\n </div>\n <FooterBottomBar\n bottom={bottom}\n languageSwitcher={languageSwitcher}\n brand={brand}\n wrapperClassName=\"mt-12 flex flex-col items-center justify-between gap-4 border-t border-border pt-8 text-sm text-muted-foreground sm:flex-row\"\n textClassName=\"\"\n />\n </Container>\n </footer>\n );\n}\nFooterEditorial.displayName = \"FooterEditorial\";"],"names":["FooterEditorial","className","brand","logo","logoSrc","logoAlt","logoClassName","description","columns","socials","bottom","languageSwitcher","LinkComponent","props","Link","brandNode","FooterLogoNode","jsx","FooterEditorialWordmark","cn","jsxs","Container","FooterColumnsBlock","FooterBottomBar"],"mappings":";;;;AAYO,SAASA,EAAgB,EAAE,WAAAC,GAAW,OAAAC,GAAO,MAAAC,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,aAAAC,GAAa,SAAAC,GAAS,SAAAC,GAAS,QAAAC,GAAQ,kBAAAC,GAAkB,eAAAC,GAAe,GAAGC,KAAyB;AAC7L,QAAMC,IAAOF,KAAiB,KACxBG,IAAYC,EAAe,EAAE,MAAAb,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,OAAAJ,GAAO,gBAAgB,cAAA,CAAe,KAAK,gBAAAe,EAACC,KAAwB,OAAAhB,GAAc;AAE5J,SACE,gBAAAe,EAAC,UAAA,EAAO,WAAWE,EAAG,+CAA+ClB,CAAS,GAAI,GAAGY,GACnF,UAAA,gBAAAO,EAACC,GAAA,EAAU,WAAU,kBACnB,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,sEACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EACE,UAAA;AAAA,QAAAL;AAAA,QACAR,IACC,gBAAAU,EAAC,KAAA,EAAE,WAAU,yDAAyD,aAAY,IAChF;AAAA,MAAA,GACN;AAAA,MACCR,IAAU,gBAAAQ,EAAC,OAAA,EAAI,WAAU,2BAA2B,aAAQ,IAAS;AAAA,IAAA,GACxE;AAAA,IACA,gBAAAA,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA,gBAAAA;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,SAAAd;AAAA,QACA,MAAAM;AAAA,QACA,eAAc;AAAA,MAAA;AAAA,IAAA,GAElB;AAAA,IACA,gBAAAG;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,QAAAb;AAAA,QACA,kBAAAC;AAAA,QACA,OAAAT;AAAA,QACA,kBAAiB;AAAA,QACjB,eAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAChB,EAAA,CACF,EAAA,CACF;AAEJ;AACAF,EAAgB,cAAc;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as e, jsxs as l } from "react/jsx-runtime";
|
|
2
|
+
import { cn as h } from "../../../utils/cn.js";
|
|
3
|
+
import { Container as N } from "../../Container.js";
|
|
4
|
+
import { FooterLogoNode as g, FooterWordmark as b } from "../parts.js";
|
|
5
|
+
function y({ className: i, brand: o, logo: n, logoSrc: s, logoAlt: a, logoClassName: m, columns: c, languageSwitcher: t, bottom: d, LinkComponent: f, ...x }) {
|
|
6
|
+
const p = f ?? "a", u = g({ logo: n, logoSrc: s, logoAlt: a, logoClassName: m, brand: o }) ?? /* @__PURE__ */ e(b, { brand: o });
|
|
7
|
+
return /* @__PURE__ */ e("footer", { className: h("w-full border-t border-border bg-background", i), ...x, children: /* @__PURE__ */ l(N, { className: "flex flex-col items-center justify-between gap-6 py-10 sm:flex-row", children: [
|
|
8
|
+
u,
|
|
9
|
+
/* @__PURE__ */ e("ul", { className: "flex flex-wrap items-center justify-center gap-x-8 gap-y-3", children: c.flatMap((r) => r.links).slice(0, 6).map((r) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(p, { href: r.href, className: "text-sm text-muted-foreground transition-colors duration-150 hover:text-foreground", children: r.label }) }, r.href)) }),
|
|
10
|
+
/* @__PURE__ */ l("div", { className: "flex flex-col items-center gap-3", children: [
|
|
11
|
+
t ? /* @__PURE__ */ e("div", { children: t }) : null,
|
|
12
|
+
/* @__PURE__ */ e("div", { className: "text-sm text-muted-foreground", children: d })
|
|
13
|
+
] })
|
|
14
|
+
] }) });
|
|
15
|
+
}
|
|
16
|
+
y.displayName = "FooterMinimal";
|
|
17
|
+
export {
|
|
18
|
+
y as FooterMinimal
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=Minimal.js.map
|