From de19705d67bb094aa6fccaf0f0d4c2ec56f18d5a Mon Sep 17 00:00:00 2001 From: rodolfo-ferreira Date: Wed, 27 Mar 2024 11:49:51 -0300 Subject: [PATCH] style: page quem somos estilizada --- components/ui/EllipseSnippet.tsx | 83 ++++++ components/ui/ImagesAndBackgroundSide.tsx | 79 ++++++ manifest.gen.ts | 177 ++++++------ sections/Content/ImagesAndBackground.tsx | 110 ++++++++ sections/Content/TitleTextIconsAndImage.tsx | 277 +++++++++++++++++++ static/image/bg-ellipses-multiple-mobile.png | Bin 0 -> 2140 bytes static/image/bg-ellipses-multiple.png | Bin 0 -> 5635 bytes static/image/star.png | Bin 0 -> 6730 bytes tailwind.config.ts | 1 + tailwind.css | 13 + 10 files changed, 654 insertions(+), 86 deletions(-) create mode 100644 components/ui/EllipseSnippet.tsx create mode 100644 components/ui/ImagesAndBackgroundSide.tsx create mode 100644 sections/Content/ImagesAndBackground.tsx create mode 100644 sections/Content/TitleTextIconsAndImage.tsx create mode 100644 static/image/bg-ellipses-multiple-mobile.png create mode 100644 static/image/bg-ellipses-multiple.png create mode 100644 static/image/star.png diff --git a/components/ui/EllipseSnippet.tsx b/components/ui/EllipseSnippet.tsx new file mode 100644 index 0000000..fb5b6b1 --- /dev/null +++ b/components/ui/EllipseSnippet.tsx @@ -0,0 +1,83 @@ +import { clx } from "$store/sdk/clx.ts"; + +interface EllipseProps{ + desktop?:boolean; + mobile?:boolean; +} + +interface Ellipse{ + ellipse01?:EllipseProps; + ellipse02?:EllipseProps; + ellipse03?:EllipseProps; + ellipse04?:EllipseProps; +} + +interface Props{ + ellipse?:Ellipse; +} + +function EllipseSnippet( { ellipse } : Props ){ + return( + <> +
+ +
+ +
+
+ +
+
+ +
+ +
+ + +
+
+ + ) +} + +export default EllipseSnippet; \ No newline at end of file diff --git a/components/ui/ImagesAndBackgroundSide.tsx b/components/ui/ImagesAndBackgroundSide.tsx new file mode 100644 index 0000000..786f6a7 --- /dev/null +++ b/components/ui/ImagesAndBackgroundSide.tsx @@ -0,0 +1,79 @@ +import { Picture, Source } from "apps/website/components/Picture.tsx"; +import type { ImageWidget } from "apps/admin/widgets.ts"; + +interface ImageGeneric{ + src?:ImageWidget; + width?:number; + height?:number; +} + +interface DeviceImage{ + alt?:string; + desktop?:ImageGeneric; + mobile?:ImageGeneric; +} + +interface Side{ + title?:string; + description?:string; + device?:DeviceImage[]; +} + +interface Props{ + bg?:DeviceImage; + side?:Side; +} + +function ImagesAndBackgroundSide( { bg, side }:Props ){ + return ( + <> +
+ {side?.title && side.title !== '


' && ( +
+
+ )} + {side?.description && side.description !== '


' && ( +
+
+ )} +
+ {side && side.device?.map(( { desktop, mobile, alt} )=> { + return( + <> + + {mobile?.src && mobile?.width && mobile?.height && ( + + )} + {desktop?.src && desktop?.width && desktop?.height && ( + + )} + {alt + + + ) + })} +
+
+ + ) +} + +export default ImagesAndBackgroundSide; \ No newline at end of file diff --git a/manifest.gen.ts b/manifest.gen.ts index 138c69f..17ac8ce 100644 --- a/manifest.gen.ts +++ b/manifest.gen.ts @@ -24,49 +24,51 @@ import * as $$$$$$16 from "./sections/Content/Features.tsx"; import * as $$$$$$17 from "./sections/Content/Hero.tsx"; import * as $$$$$$18 from "./sections/Content/IconText.tsx"; import * as $$$$$$19 from "./sections/Content/IconTitleAndTex.tsx"; -import * as $$$$$$20 from "./sections/Content/ImageSection.tsx"; -import * as $$$$$$21 from "./sections/Content/Intro.tsx"; -import * as $$$$$$22 from "./sections/Content/Logos.tsx"; -import * as $$$$$$23 from "./sections/Content/Mosaic.tsx"; -import * as $$$$$$24 from "./sections/Content/Partners.tsx"; -import * as $$$$$$25 from "./sections/Content/RichText.tsx"; -import * as $$$$$$26 from "./sections/Content/Table.tsx"; -import * as $$$$$$27 from "./sections/Content/Testimonials.tsx"; -import * as $$$$$$28 from "./sections/Content/TextIconAndImage.tsx"; -import * as $$$$$$29 from "./sections/Content/TextTopWidthCarousel.tsx"; -import * as $$$$$$30 from "./sections/Content/TextWithImage.tsx"; -import * as $$$$$$31 from "./sections/Content/TextWithImageAnimation.tsx"; -import * as $$$$$$32 from "./sections/Content/TextWithImageCustom.tsx"; -import * as $$$$$$33 from "./sections/Footer/Footer.tsx"; -import * as $$$$$$34 from "./sections/Gallery.tsx"; -import * as $$$$$$35 from "./sections/Header/Header.tsx"; -import * as $$$$$$36 from "./sections/Images/BannerGrid.tsx"; -import * as $$$$$$37 from "./sections/Images/Carousel.tsx"; -import * as $$$$$$38 from "./sections/Images/ImageGallery.tsx"; -import * as $$$$$$39 from "./sections/Images/ShoppableBanner.tsx"; -import * as $$$$$$40 from "./sections/Layout/Container.tsx"; -import * as $$$$$$41 from "./sections/Layout/Flex.tsx"; -import * as $$$$$$42 from "./sections/Layout/Grid.tsx"; -import * as $$$$$$43 from "./sections/Layout/GridItem.tsx"; -import * as $$$$$$44 from "./sections/Links/LinkTree.tsx"; -import * as $$$$$$45 from "./sections/Links/Shortcuts.tsx"; -import * as $$$$$$46 from "./sections/Miscellaneous/CampaignTimer.tsx"; -import * as $$$$$$47 from "./sections/Miscellaneous/CookieConsent.tsx"; -import * as $$$$$$48 from "./sections/Miscellaneous/Slide.tsx"; -import * as $$$$$$49 from "./sections/Newsletter/Newsletter.tsx"; -import * as $$$$$$50 from "./sections/Product/ImageGalleryFrontBack.tsx"; -import * as $$$$$$51 from "./sections/Product/ImageGallerySlider.tsx"; -import * as $$$$$$52 from "./sections/Product/NotFound.tsx"; -import * as $$$$$$53 from "./sections/Product/NotFoundChallenge.tsx"; -import * as $$$$$$54 from "./sections/Product/ProductInfo.tsx"; -import * as $$$$$$55 from "./sections/Product/ProductShelf.tsx"; -import * as $$$$$$56 from "./sections/Product/ProductShelfTabbed.tsx"; -import * as $$$$$$57 from "./sections/Product/SearchResult.tsx"; -import * as $$$$$$58 from "./sections/Product/ShelfWithImage.tsx"; -import * as $$$$$$59 from "./sections/Product/Wishlist.tsx"; -import * as $$$$$$60 from "./sections/Social/InstagramPosts.tsx"; -import * as $$$$$$61 from "./sections/Social/WhatsApp.tsx"; -import * as $$$$$$62 from "./sections/Theme/Theme.tsx"; +import * as $$$$$$20 from "./sections/Content/ImagesAndBackground.tsx"; +import * as $$$$$$21 from "./sections/Content/ImageSection.tsx"; +import * as $$$$$$22 from "./sections/Content/Intro.tsx"; +import * as $$$$$$23 from "./sections/Content/Logos.tsx"; +import * as $$$$$$24 from "./sections/Content/Mosaic.tsx"; +import * as $$$$$$25 from "./sections/Content/Partners.tsx"; +import * as $$$$$$26 from "./sections/Content/RichText.tsx"; +import * as $$$$$$27 from "./sections/Content/Table.tsx"; +import * as $$$$$$28 from "./sections/Content/Testimonials.tsx"; +import * as $$$$$$29 from "./sections/Content/TextIconAndImage.tsx"; +import * as $$$$$$30 from "./sections/Content/TextTopWidthCarousel.tsx"; +import * as $$$$$$31 from "./sections/Content/TextWithImage.tsx"; +import * as $$$$$$32 from "./sections/Content/TextWithImageAnimation.tsx"; +import * as $$$$$$33 from "./sections/Content/TextWithImageCustom.tsx"; +import * as $$$$$$34 from "./sections/Content/TitleTextIconsAndImage.tsx"; +import * as $$$$$$35 from "./sections/Footer/Footer.tsx"; +import * as $$$$$$36 from "./sections/Gallery.tsx"; +import * as $$$$$$37 from "./sections/Header/Header.tsx"; +import * as $$$$$$38 from "./sections/Images/BannerGrid.tsx"; +import * as $$$$$$39 from "./sections/Images/Carousel.tsx"; +import * as $$$$$$40 from "./sections/Images/ImageGallery.tsx"; +import * as $$$$$$41 from "./sections/Images/ShoppableBanner.tsx"; +import * as $$$$$$42 from "./sections/Layout/Container.tsx"; +import * as $$$$$$43 from "./sections/Layout/Flex.tsx"; +import * as $$$$$$44 from "./sections/Layout/Grid.tsx"; +import * as $$$$$$45 from "./sections/Layout/GridItem.tsx"; +import * as $$$$$$46 from "./sections/Links/LinkTree.tsx"; +import * as $$$$$$47 from "./sections/Links/Shortcuts.tsx"; +import * as $$$$$$48 from "./sections/Miscellaneous/CampaignTimer.tsx"; +import * as $$$$$$49 from "./sections/Miscellaneous/CookieConsent.tsx"; +import * as $$$$$$50 from "./sections/Miscellaneous/Slide.tsx"; +import * as $$$$$$51 from "./sections/Newsletter/Newsletter.tsx"; +import * as $$$$$$52 from "./sections/Product/ImageGalleryFrontBack.tsx"; +import * as $$$$$$53 from "./sections/Product/ImageGallerySlider.tsx"; +import * as $$$$$$54 from "./sections/Product/NotFound.tsx"; +import * as $$$$$$55 from "./sections/Product/NotFoundChallenge.tsx"; +import * as $$$$$$56 from "./sections/Product/ProductInfo.tsx"; +import * as $$$$$$57 from "./sections/Product/ProductShelf.tsx"; +import * as $$$$$$58 from "./sections/Product/ProductShelfTabbed.tsx"; +import * as $$$$$$59 from "./sections/Product/SearchResult.tsx"; +import * as $$$$$$60 from "./sections/Product/ShelfWithImage.tsx"; +import * as $$$$$$61 from "./sections/Product/Wishlist.tsx"; +import * as $$$$$$62 from "./sections/Social/InstagramPosts.tsx"; +import * as $$$$$$63 from "./sections/Social/WhatsApp.tsx"; +import * as $$$$$$64 from "./sections/Theme/Theme.tsx"; import * as $$$$$$$$$$$0 from "./apps/decohub.ts"; import * as $$$$$$$$$$$1 from "./apps/site.ts"; @@ -98,50 +100,53 @@ const manifest = { "deco-sites/agencian1/sections/Content/Hero.tsx": $$$$$$17, "deco-sites/agencian1/sections/Content/IconText.tsx": $$$$$$18, "deco-sites/agencian1/sections/Content/IconTitleAndTex.tsx": $$$$$$19, - "deco-sites/agencian1/sections/Content/ImageSection.tsx": $$$$$$20, - "deco-sites/agencian1/sections/Content/Intro.tsx": $$$$$$21, - "deco-sites/agencian1/sections/Content/Logos.tsx": $$$$$$22, - "deco-sites/agencian1/sections/Content/Mosaic.tsx": $$$$$$23, - "deco-sites/agencian1/sections/Content/Partners.tsx": $$$$$$24, - "deco-sites/agencian1/sections/Content/RichText.tsx": $$$$$$25, - "deco-sites/agencian1/sections/Content/Table.tsx": $$$$$$26, - "deco-sites/agencian1/sections/Content/Testimonials.tsx": $$$$$$27, - "deco-sites/agencian1/sections/Content/TextIconAndImage.tsx": $$$$$$28, - "deco-sites/agencian1/sections/Content/TextTopWidthCarousel.tsx": $$$$$$29, - "deco-sites/agencian1/sections/Content/TextWithImage.tsx": $$$$$$30, + "deco-sites/agencian1/sections/Content/ImagesAndBackground.tsx": $$$$$$20, + "deco-sites/agencian1/sections/Content/ImageSection.tsx": $$$$$$21, + "deco-sites/agencian1/sections/Content/Intro.tsx": $$$$$$22, + "deco-sites/agencian1/sections/Content/Logos.tsx": $$$$$$23, + "deco-sites/agencian1/sections/Content/Mosaic.tsx": $$$$$$24, + "deco-sites/agencian1/sections/Content/Partners.tsx": $$$$$$25, + "deco-sites/agencian1/sections/Content/RichText.tsx": $$$$$$26, + "deco-sites/agencian1/sections/Content/Table.tsx": $$$$$$27, + "deco-sites/agencian1/sections/Content/Testimonials.tsx": $$$$$$28, + "deco-sites/agencian1/sections/Content/TextIconAndImage.tsx": $$$$$$29, + "deco-sites/agencian1/sections/Content/TextTopWidthCarousel.tsx": $$$$$$30, + "deco-sites/agencian1/sections/Content/TextWithImage.tsx": $$$$$$31, "deco-sites/agencian1/sections/Content/TextWithImageAnimation.tsx": - $$$$$$31, - "deco-sites/agencian1/sections/Content/TextWithImageCustom.tsx": $$$$$$32, - "deco-sites/agencian1/sections/Footer/Footer.tsx": $$$$$$33, - "deco-sites/agencian1/sections/Gallery.tsx": $$$$$$34, - "deco-sites/agencian1/sections/Header/Header.tsx": $$$$$$35, - "deco-sites/agencian1/sections/Images/BannerGrid.tsx": $$$$$$36, - "deco-sites/agencian1/sections/Images/Carousel.tsx": $$$$$$37, - "deco-sites/agencian1/sections/Images/ImageGallery.tsx": $$$$$$38, - "deco-sites/agencian1/sections/Images/ShoppableBanner.tsx": $$$$$$39, - "deco-sites/agencian1/sections/Layout/Container.tsx": $$$$$$40, - "deco-sites/agencian1/sections/Layout/Flex.tsx": $$$$$$41, - "deco-sites/agencian1/sections/Layout/Grid.tsx": $$$$$$42, - "deco-sites/agencian1/sections/Layout/GridItem.tsx": $$$$$$43, - "deco-sites/agencian1/sections/Links/LinkTree.tsx": $$$$$$44, - "deco-sites/agencian1/sections/Links/Shortcuts.tsx": $$$$$$45, - "deco-sites/agencian1/sections/Miscellaneous/CampaignTimer.tsx": $$$$$$46, - "deco-sites/agencian1/sections/Miscellaneous/CookieConsent.tsx": $$$$$$47, - "deco-sites/agencian1/sections/Miscellaneous/Slide.tsx": $$$$$$48, - "deco-sites/agencian1/sections/Newsletter/Newsletter.tsx": $$$$$$49, - "deco-sites/agencian1/sections/Product/ImageGalleryFrontBack.tsx": $$$$$$50, - "deco-sites/agencian1/sections/Product/ImageGallerySlider.tsx": $$$$$$51, - "deco-sites/agencian1/sections/Product/NotFound.tsx": $$$$$$52, - "deco-sites/agencian1/sections/Product/NotFoundChallenge.tsx": $$$$$$53, - "deco-sites/agencian1/sections/Product/ProductInfo.tsx": $$$$$$54, - "deco-sites/agencian1/sections/Product/ProductShelf.tsx": $$$$$$55, - "deco-sites/agencian1/sections/Product/ProductShelfTabbed.tsx": $$$$$$56, - "deco-sites/agencian1/sections/Product/SearchResult.tsx": $$$$$$57, - "deco-sites/agencian1/sections/Product/ShelfWithImage.tsx": $$$$$$58, - "deco-sites/agencian1/sections/Product/Wishlist.tsx": $$$$$$59, - "deco-sites/agencian1/sections/Social/InstagramPosts.tsx": $$$$$$60, - "deco-sites/agencian1/sections/Social/WhatsApp.tsx": $$$$$$61, - "deco-sites/agencian1/sections/Theme/Theme.tsx": $$$$$$62, + $$$$$$32, + "deco-sites/agencian1/sections/Content/TextWithImageCustom.tsx": $$$$$$33, + "deco-sites/agencian1/sections/Content/TitleTextIconsAndImage.tsx": + $$$$$$34, + "deco-sites/agencian1/sections/Footer/Footer.tsx": $$$$$$35, + "deco-sites/agencian1/sections/Gallery.tsx": $$$$$$36, + "deco-sites/agencian1/sections/Header/Header.tsx": $$$$$$37, + "deco-sites/agencian1/sections/Images/BannerGrid.tsx": $$$$$$38, + "deco-sites/agencian1/sections/Images/Carousel.tsx": $$$$$$39, + "deco-sites/agencian1/sections/Images/ImageGallery.tsx": $$$$$$40, + "deco-sites/agencian1/sections/Images/ShoppableBanner.tsx": $$$$$$41, + "deco-sites/agencian1/sections/Layout/Container.tsx": $$$$$$42, + "deco-sites/agencian1/sections/Layout/Flex.tsx": $$$$$$43, + "deco-sites/agencian1/sections/Layout/Grid.tsx": $$$$$$44, + "deco-sites/agencian1/sections/Layout/GridItem.tsx": $$$$$$45, + "deco-sites/agencian1/sections/Links/LinkTree.tsx": $$$$$$46, + "deco-sites/agencian1/sections/Links/Shortcuts.tsx": $$$$$$47, + "deco-sites/agencian1/sections/Miscellaneous/CampaignTimer.tsx": $$$$$$48, + "deco-sites/agencian1/sections/Miscellaneous/CookieConsent.tsx": $$$$$$49, + "deco-sites/agencian1/sections/Miscellaneous/Slide.tsx": $$$$$$50, + "deco-sites/agencian1/sections/Newsletter/Newsletter.tsx": $$$$$$51, + "deco-sites/agencian1/sections/Product/ImageGalleryFrontBack.tsx": $$$$$$52, + "deco-sites/agencian1/sections/Product/ImageGallerySlider.tsx": $$$$$$53, + "deco-sites/agencian1/sections/Product/NotFound.tsx": $$$$$$54, + "deco-sites/agencian1/sections/Product/NotFoundChallenge.tsx": $$$$$$55, + "deco-sites/agencian1/sections/Product/ProductInfo.tsx": $$$$$$56, + "deco-sites/agencian1/sections/Product/ProductShelf.tsx": $$$$$$57, + "deco-sites/agencian1/sections/Product/ProductShelfTabbed.tsx": $$$$$$58, + "deco-sites/agencian1/sections/Product/SearchResult.tsx": $$$$$$59, + "deco-sites/agencian1/sections/Product/ShelfWithImage.tsx": $$$$$$60, + "deco-sites/agencian1/sections/Product/Wishlist.tsx": $$$$$$61, + "deco-sites/agencian1/sections/Social/InstagramPosts.tsx": $$$$$$62, + "deco-sites/agencian1/sections/Social/WhatsApp.tsx": $$$$$$63, + "deco-sites/agencian1/sections/Theme/Theme.tsx": $$$$$$64, }, "apps": { "deco-sites/agencian1/apps/decohub.ts": $$$$$$$$$$$0, diff --git a/sections/Content/ImagesAndBackground.tsx b/sections/Content/ImagesAndBackground.tsx new file mode 100644 index 0000000..d6c1293 --- /dev/null +++ b/sections/Content/ImagesAndBackground.tsx @@ -0,0 +1,110 @@ +import { Picture, Source } from "apps/website/components/Picture.tsx"; +import type { ImageWidget } from "apps/admin/widgets.ts"; +import ImagesAndBackgroundSide from "$store/components/ui/ImagesAndBackgroundSide.tsx"; +import { clx } from "$store/sdk/clx.ts"; + +interface ImageGeneric{ + /**@title Imagem */ + src?:ImageWidget; + /**@title Largura da Imagem */ + width?:number; + /**@title Altura da Imagem */ + height?:number; + +} + +/**@titleBy alt */ +interface DeviceImage{ + /**@title Nome da Imagem */ + alt?:string; + desktop?:ImageGeneric; + mobile?:ImageGeneric; +} + +interface Side{ + /**@title Título */ + /**@format html */ + title?:string; + /**@title Descrição */ + /**@format html */ + description?:string; + /**@title Imagem */ + device?:DeviceImage[]; +} + +interface Props{ + /**@title Imagem de fundo */ + bg?:DeviceImage; + /**@title Lado esquerdo */ + sideLeft?:Side; + /**@title Lado direito */ + sideRight?:Side; +} + + +function ImagesAndBackground( { bg, sideLeft, sideRight }:Props ){ + return( + <> +
+
+ {bg && ( +
+ + {bg.mobile?.src && bg.mobile?.width && bg.mobile?.height && ( + + )} + {bg?.desktop?.src && bg.desktop?.width && bg.desktop?.height && ( + + )} + + +
+ )} + +

' ? 'flex-col' : "" } + absolute w-full h-full flex items-center justify-between`)}> +
+ +

' + ? 'w-full flex-row justify-around items-center mobile:flex-col mobile:gap-[20px]' + : 'flex-col gap-y-[20px]' + }`)}> + {sideLeft && ( + + )} + {sideRight?.title !== '


' && ( + + )} +
+
+
+ +
+
+ + ) +} + +export default ImagesAndBackground; \ No newline at end of file diff --git a/sections/Content/TitleTextIconsAndImage.tsx b/sections/Content/TitleTextIconsAndImage.tsx new file mode 100644 index 0000000..a0844e2 --- /dev/null +++ b/sections/Content/TitleTextIconsAndImage.tsx @@ -0,0 +1,277 @@ +import type { ImageWidget } from "apps/admin/widgets.ts"; +import { Picture, Source } from "apps/website/components/Picture.tsx"; +import { clx } from "$store/sdk/clx.ts"; +import { FnContext, SectionProps } from "deco/mod.ts"; +import EllipseSnippet from "../../components/ui/EllipseSnippet.tsx"; + +/**@titleBy alt */ +interface ImageGeneric{ + /**@title Nome da Imagem */ + alt?:string; + /**@title Imagem */ + src?:ImageWidget; + /**@title Largura da Imagem */ + width?:number; + /**@title Altura da Imagem */ + height?:number; +} + +interface ImageDevice{ + /**@title Desktop */ + desktop?:ImageGeneric; + /**@title Mobile */ + mobile?:ImageGeneric; +} + +/**@titleBy textLink */ +interface Link{ + /**@title URL */ + /**@description (ex: https://agencian1.com.br/) */ + url?:string; + /**@title Texto do botão */ + textLink?:string; +} + +interface EllipseProps{ + desktop?:boolean; + mobile?:boolean; +} + +interface Ellipse{ + /**@title Ellipse 01 */ + ellipse01?:EllipseProps; + /**@title Ellipse 02 */ + ellipse02?:EllipseProps; + /**@title Ellipse 03 */ + ellipse03?:EllipseProps; + /**@title Ellipse 04 */ + ellipse04?:EllipseProps; +} + +interface Props{ + /**@title Espaço entre Bloco de texto e imagem (somente números) */ + /** @description (ex: 50 - somente números, o resultado é pixel) */ + spaceTextAndImage?:number; + /**@title Largura do Bloco de Texto (somente números) */ + /** @description (ex: 50 - somente números, o resultado é porcentagem) */ + widthBlock?:number; + /**@title Máximo de largura da descrição (somente números)*/ + /** @description (ex: 50 - somente números, o resultado é porcentagem) */ + maxWidthText?:number; + /**@title Título */ + /**@format html */ + title?:string + /**@title Descrição */ + /**@format html */ + description?:string; + /**@title Ícone */ + /**@maxItems 4 */ + iconWidthText?:ImageGeneric[]; + /**@title Fonte dos textos dos ícones */ + fontIconText?: "Noto Sans" | "Archimoto V01"; + /**@title Habilitar Negrito para fonte dos textos dos ícones? */ + activeBold?: boolean; + /**@title Habilitar grid para os ícones? */ + gridActive?:boolean; + /**@title Quantidade de colunas do grid */ + /**@description (opção somente se habilitar o grid) */ + gridColCustom?: 2 | 3 | 4; + /**@title Imagem */ + image?:ImageDevice; + /**@title Habilitar posição manual da imagem */ + activePositionManualImage?:boolean; + /**@title Posição Horizontal (somente números) */ + /**@description (obs: somente se habilitar posição manual, o resultado é pixel) */ + positionImageX?:number; + /**@title Posição Vertical (somente números) */ + /**@description (obs: somente se habilitar posição manual, o resultado é pixel) */ + positionImageY?:number; + /**@title Link */ + link?:Link; + /**@title Inverter Imagem */ + /**@description (Desktop) */ + flexRow: "Esquerdo" | "Direito"; + /**@title Inverter Imagem */ + /**@description (Mobile) */ + flexCol?: "Superior" | "Inferior"; + /**@title Desativar imagem de fundo? */ + ellipse?:Ellipse; +} + +const FONTICONTEXT = { + "Noto Sans": "font-noto-sans", + "Archimoto V01": "font-archimoto-medium" +} + +const GRIDCOLCUSTOM = { + 2 : 'xl:grid-cols-2-auto', + 3 : 'xl:grid-cols-3-auto', + 4 : 'xl:grid-cols-4-auto', +} + +const FLEXROW = { + "Esquerdo" : "xl:flex-row-reverse", + "Direito" : "xl:flex-row" +} + +const FLEXCOL = { + "Inferior" : "mobile:flex-col", + "Superior" : "mobile:flex-col-reverse" +} + +function TitleTextIconsAndImage( props: SectionProps> ){ + const { + title, + description, + iconWidthText, + fontIconText, + activeBold, + gridActive, + gridColCustom, + image, + activePositionManualImage, + positionImageX, + positionImageY, + link, + spaceTextAndImage, + widthBlock, + maxWidthText, + flexRow, + flexCol, + ellipse, + device + } = props; + + return( + <> +
+ + +
+
+ +
+
+
+ { title && title !== '


' && ( +
+
+ )} + { description && description !== '


' && ( +
+
+ )} +
+ +
    + {iconWidthText && iconWidthText?.map(( { alt, src, width, height } )=>{ + return( + <> + { alt && src && width && height && ( +
  • + + {alt} + + {alt} + +
  • + )} + + ) + })} +
+ {link && ( + + )} +
+ +
+ {image && ( +
+ + + {image?.mobile?.src && ( + + )} + {image?.desktop?.src && ( + + )} + + +
+ )} +
+
+
+ + ) +} + +export const loader = (props: Props, _req: Request, ctx: FnContext) => { + return { + ...props, + device: ctx.device, + }; +}; + +export default TitleTextIconsAndImage; \ No newline at end of file diff --git a/static/image/bg-ellipses-multiple-mobile.png b/static/image/bg-ellipses-multiple-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..bae8f758ed514d756ad1b6d88e6b42282993d84b GIT binary patch literal 2140 zcmXw32~?9;7LGC)D}&U73k4G^A}aBSjw}U~8p>)7OW4YiL`@(<2&fPc1ExB4DB1)w z2&iDFK!hy(KtiDWK+sxNAr#0$!Xb48iDsKKP?7-@CZKcAx$mC$&imfI_q*@j;>hq2 z+ii~9AP|UcSZE;HV%Zk0*t*5C<~*z{u$a#-hbCl0AU5{vx(V{A%E5BDDH|OU00AU> z-&r<)AtF&o2&ARN=KTe02n70{us~$YwM~Y{J<)qZJ`Y|=2K=CT+ab^*EBE5iGn+nl zIGCKn3=OOcW&D}vC$Rsv_{(kPG29=BnZikV=ij3nwMYr=>>S=`?hXLRf}tr(5Drjm*2fj zn7)>-4W{DmlY9KhP3;$96*yP_E8+`sZ2w#Y-wn~1staT#B|VGyg_yU@b+aO8JkQXxlq^B8a60$lLqpezH}ZF6b@gWCtFiUrxw{Dw2tm9v)qybDo$;~|voNTe zg$2p<&zU~d--W=C_^r7ArN55`uDh1<(KF<@N7`2u!%^FMpd0mqL$V?Ml|r^w{s6Yk zXV5{fNnhYdQZ2waA@$t2KZyhtdF(Gw+X&by>B9jy|Ab#&U!R&8;f?KNP|J4VQE>{v z)i>S$(8Qbj3hoG|?SkZ8uHhzPb`C!z!RfFL7C);w6(+vQmTN<(-yuq(7j$sz1Q9eU zPDVHRTk?6Z1YJtz*HT@ep8`Z2XpF#6D_aBNxBwGRzkvnHU8JJ2 zRN}>gDXD0`4z3{dI%pj?koqr+0TOQr5b9Ks%B4t3?_^>pfT_RWTmN`6H5cQ=U3oaP zT}d&FzXjKSqeYq>dFVj6J`2lAq-7Y=N9|)%G!C+;JyL0~a zxQ7xqoHdt?F#UX@8=8kSNrtp6YYLmINm=37<}Z)cR-QZCcb!m%^_mju?@^CCH5mCh z*fHOaEIyMk<@La>BLpjAgmqEv8y|1wu+NF*~sYY zw#^=m$s@zKyT$K(G$$ggUaFF2Lf)(fCB%A5N6(Easp`?EiU4@@rVRo!4yB#3PWwaP z8rncA=?|cwaxo_@CD4^Okm%%UFgLA%grh$J$icfQwi|%+2kVOF7Fbuy7KJuU%+^BA zj*u-g$8_3n!*~&FWrHyx((F4RiIwjK`QvISJUNCCJDndSZ=AxfN#=dt48U`0>Lc-T zI=!kT;^|=NJj2#?`j>d2hm#CeoDA?7h~Vc{F}bO$z8byVQyo{&ER%`OA4M+)zhADSVem(1hhVCe;ay#F;bud4sHj(-gA3O!PzmeZDGd zASsxjsdNd9G_u&OoCC~}rVsY@ms$7F12smX@TTCv#88#*ok!nwfVnQ()k%ySZ!RY$ zDjqg^n1UMVDA~Mq!(B7pWv5^b;TLbV^=Ni97@BL05)SDsPDP*?PBr))8%Vvamlw?Y z=6~IaqE7!es)L5Q7fXp!c?pezrV&$l5I4=R^;#wh=^`K|3Ty#7JK|I=}_T)I1_O+bCpwES6v2GnLfWqxq5E z!!mI7KRYLhprqk&8zJ4n@0WPRIYcO171Ibl-6@!wT-6^rt?18yVa=mjB_ns#* z&hSTzj6-tkd~00WNw2UJNjF~cYTr1EL;C1o1*%oW&wRrreM7+{#SxkiCjaH;vBnt1 z{eV-aM&1k4D)^}8pJDN!TcTMx}Uvx3{I45<|if$*cfsSlr3nQLpRamW1 T+oBZd>psJR!UKVT^SAy7b!{jY literal 0 HcmV?d00001 diff --git a/static/image/bg-ellipses-multiple.png b/static/image/bg-ellipses-multiple.png new file mode 100644 index 0000000000000000000000000000000000000000..369e423525858d27670232ba9b5e54357a268ab7 GIT binary patch literal 5635 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 literal 0 HcmV?d00001 diff --git a/static/image/star.png b/static/image/star.png new file mode 100644 index 0000000000000000000000000000000000000000..8862598eb1d7e5e73906f6d232ce0a0ba39fa88f GIT binary patch literal 6730 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