diff --git a/actions/startAlgoliaCrawler.ts b/actions/startAlgoliaCrawler.ts index d652e362..d2d79a79 100644 --- a/actions/startAlgoliaCrawler.ts +++ b/actions/startAlgoliaCrawler.ts @@ -17,10 +17,12 @@ export interface Props { const action = async ( { crawlerUserId, crawlerApiKey, crawlerId }: Props, ): Promise => { - const url = `https://crawler.algolia.com/api/1/crawlers/${crawlerId.get()}/reindex`; + const url = + `https://crawler.algolia.com/api/1/crawlers/${crawlerId.get()}/reindex`; const headers = { "Content-Type": "application/json", - "Authorization": "Basic " + btoa(`${crawlerUserId.get()}:${crawlerApiKey.get()}`), + "Authorization": "Basic " + + btoa(`${crawlerUserId.get()}:${crawlerApiKey.get()}`), }; await fetch(url, { diff --git a/animations/assets/Cursors.tsx b/animations/assets/Cursors.tsx index 0763e125..28c7aa97 100644 --- a/animations/assets/Cursors.tsx +++ b/animations/assets/Cursors.tsx @@ -352,8 +352,14 @@ export const DesignSystemCursor = () => ( -) +); export const DesignSystemCursorPath = () => ( - -) \ No newline at end of file + +); diff --git a/apps/decohub.ts b/apps/decohub.ts index bcccbb2b..9ed80446 100644 --- a/apps/decohub.ts +++ b/apps/decohub.ts @@ -1 +1 @@ -export { default, Preview } from "apps/decohub/mod.ts"; \ No newline at end of file +export { default, Preview } from "apps/decohub/mod.ts"; diff --git a/components/decohelp/pages/ui/Sidebar/SearchButton.tsx b/components/decohelp/pages/ui/Sidebar/SearchButton.tsx index add132fc..6a0bc1bc 100644 --- a/components/decohelp/pages/ui/Sidebar/SearchButton.tsx +++ b/components/decohelp/pages/ui/Sidebar/SearchButton.tsx @@ -1,4 +1,4 @@ -import { Head, asset } from "$fresh/runtime.ts"; +import { asset, Head } from "$fresh/runtime.ts"; import { useEffect, useRef } from "preact/hooks"; import docsearch from "https://esm.sh/@docsearch/js@3.5.2?target=es2020"; diff --git a/components/decohelp/pages/ui/Sidebar/Sidebar.tsx b/components/decohelp/pages/ui/Sidebar/Sidebar.tsx index a6f2985c..deff6f73 100644 --- a/components/decohelp/pages/ui/Sidebar/Sidebar.tsx +++ b/components/decohelp/pages/ui/Sidebar/Sidebar.tsx @@ -123,8 +123,30 @@ export default function Sidebar({ if (Topics) { Topics.forEach((topic, index) => { const isActive = topic.SubTopics.some( - (subTopic) => - subTopic.SidebarLink?.split("/").pop()?.toLowerCase() === slug, + (subTopic, subTopicIndex) => { + if ( + subTopic.SidebarLink?.split("/").pop()?.toLowerCase() === slug + ) { + const hasNestedTopics = subTopic.NestedTopics + ? subTopic.NestedTopics?.length > 0 + : false; + if (hasNestedTopics) setOpenSubTopicIndex(subTopicIndex); + + return true; + } + + const nestedTopicOpened = subTopic.NestedTopics?.some(( + childTopic, + ) => + childTopic.SidebarLink?.split("/").pop()?.toLowerCase() === slug + ); + + if (nestedTopicOpened) { + setOpenSubTopicIndex(subTopicIndex); + return true; + } + return false; + }, ); if (isActive) { setOpenTopicIndex(index); @@ -327,6 +349,17 @@ export default function Sidebar({ width={16} height={16} strokeWidth={"3"} + onClick={(event) => { + event.stopPropagation(); + event.preventDefault(); + if ( + openSubTopicIndex === subTopicIndex + ) { + setOpenSubTopicIndex(null); + } else { + setOpenSubTopicIndex(subTopicIndex); + } + }} /> )} {subTopic.label} @@ -336,23 +369,34 @@ export default function Sidebar({ openSubTopicIndex === subTopicIndex && (
    {subTopic.NestedTopics.map( - (ChildTopic, subSubIndex) => ( -
  1. - - - {ChildTopic.label} - - -
  2. - ), + (ChildTopic, subSubIndex) => { + const isNestedTopicActive = + isSubTopicActive( + currentSlug, + ChildTopic, + ); + return ( +
  3. + + + {ChildTopic.label} + + +
  4. + ); + }, )}
)} diff --git a/components/nrf/editor/RealtimeEditor.tsx b/components/nrf/editor/RealtimeEditor.tsx index 78b1e929..999e831b 100644 --- a/components/nrf/editor/RealtimeEditor.tsx +++ b/components/nrf/editor/RealtimeEditor.tsx @@ -135,7 +135,8 @@ export const RealtimeEditor = (props: AnimatedSvgProps) => { that will make your customer want to buy it{" "} - right now — no lorem ipsum needed, just{" "} + right now — no lorem ipsum needed, + just{" "} pure delightment! diff --git a/components/nrf/editor/Segmentation.tsx b/components/nrf/editor/Segmentation.tsx index 66e19924..11191946 100644 --- a/components/nrf/editor/Segmentation.tsx +++ b/components/nrf/editor/Segmentation.tsx @@ -235,7 +235,8 @@ export const Segmentation = (props: AnimatedSvgProps) => { letter-spacing="0em" > - The perfect description for your product{" "} + The perfect description for your + product{" "} that will make your customer want to buy @@ -676,7 +677,8 @@ export const Segmentation = (props: AnimatedSvgProps) => { letter-spacing="0em" > - The perfect description for your product{" "} + The perfect description for your + product{" "} that will make your customer want to buy @@ -1696,7 +1698,8 @@ export const Segmentation = (props: AnimatedSvgProps) => { letter-spacing="0em" > - The perfect description for your product{" "} + The perfect description for your + product{" "} that will make your customer want to buy diff --git a/components/nrf/hero/Monitoring.tsx b/components/nrf/hero/Monitoring.tsx index 8b1aafd2..3d76df30 100644 --- a/components/nrf/hero/Monitoring.tsx +++ b/components/nrf/hero/Monitoring.tsx @@ -242,7 +242,10 @@ export const Monitoring = () => { fill="url(#monitoring-p0)" fill-opacity="0.25" /> - + { stroke-width="0.7853" /> - + { rx="18.8588" fill="black" /> - + { /** * Symbol id from element to render. Take a look at `/static/icons.svg`. diff --git a/components/ui/ImpactCalculator.tsx b/components/ui/ImpactCalculator.tsx index 64d7f38a..3164e962 100644 --- a/components/ui/ImpactCalculator.tsx +++ b/components/ui/ImpactCalculator.tsx @@ -77,7 +77,6 @@ export default function ImpactCalculator({ .catch((error) => { loading.value = false; alert("Request to PageSpeed has failed. Please try again."); - console.log("errorrrr", error); }); const promiseDesktop = fetch( `https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=${website.value}&strategy=desktop`, @@ -86,7 +85,6 @@ export default function ImpactCalculator({ .catch((error) => { loading.value = false; alert("Request to PageSpeed has failed. Please try again."); - console.log("errorrrr", error); }); const formData = new FormData(); diff --git a/docs/concepts/app/en.md b/docs/concepts/app/en.md index 16c0a791..1fb6a71b 100644 --- a/docs/concepts/app/en.md +++ b/docs/concepts/app/en.md @@ -38,8 +38,8 @@ process and allows for efficient version control and maintenance of Apps. To create your own deco Apps, follow these steps: -1. Run the command `deno run -Ar https://deco.cx/start` to initialize a new - deco App. +1. Run the command `deno run -Ar https://deco.cx/start` to initialize a new deco + App. 2. Define the functionalities or components you want to bundle into the App. 3. Organize the functions, sections, loaders, or other deco components within the App directory. diff --git a/docs/developing/islands/en.md b/docs/developing/islands/en.md index 194e3817..ff394e39 100644 --- a/docs/developing/islands/en.md +++ b/docs/developing/islands/en.md @@ -113,13 +113,18 @@ export default function Counter() { # Sharing state among islands. -In normal Preact development, sharing state between components is usually done via the [Context](https://preactjs.com/guide/v10/context/) API. This works fine for a full client-side application. However, since we are using islands architecture, sharing state among islands require a new approach. +In normal Preact development, sharing state between components is usually done +via the [Context](https://preactjs.com/guide/v10/context/) API. This works fine +for a full client-side application. However, since we are using islands +architecture, sharing state among islands require a new approach. -Signals are also a great way of sharing state between islands, since one can publish and subscribe for change events in a concise API. +Signals are also a great way of sharing state between islands, since one can +publish and subscribe for change events in a concise API. -To use signals, -```tsx -import { signal } from '@preact/signals'; +To use signals, + +```tsx +import { signal } from "@preact/signals"; ``` Now, use the global scope to create, mutate and subscribe to a signal: diff --git a/docs/getting-started/custom-domains/apex-domains/en.md b/docs/getting-started/custom-domains/apex-domains/en.md new file mode 100644 index 00000000..4f39a52e --- /dev/null +++ b/docs/getting-started/custom-domains/apex-domains/en.md @@ -0,0 +1,48 @@ +--- +description: How to Redirect a Non-www Domain +since: 1.1.0 +--- + +## What is an Apex Domain? + +An apex domain is the term used for a root domain, without a subdomain. + +Example: + +- `www.example.com.br` -> Subdomain +- `loja.example.com.br` -> Subdomain +- `example.com.br` - Apex Domain + +## Can I point a deco.cx site to the apex domain? + +No, it is not yet possible to point a deco.cx site to your apex domain. + +Therefore, we have created an easy redirection solution so that access to the +Apex domain is not lost. + +## How to Redirect an Apex Domain in deco.cx? + +1 - In the control panel of your site on deco.cx, go to the Settings page. + +2 - Click on "Add existing domain" + +3 - Enter your apex domain (without subdomain): + +![Domain step](https://github.com/deco-cx/apps/assets/76620866/85b1bcd5-5dec-4a61-bb0b-635e0b8a3d3a) + +4 - Define which subdomain to redirect to: + +![Sudomain step](https://github.com/deco-cx/apps/assets/76620866/ab92d6cb-ef08-4f98-a0e5-b241f932722d) + +5 - Now, you will see the settings that must be made in your domain hosting +platform: + +![DNS Setup](https://github.com/deco-cx/apps/assets/76620866/ff13f321-58b2-4cc7-9015-5738dd31b849) + +6 - After making the configurations, click on Validate Domain. + +The validation step is essential for functionality and depends on the DNS +propagation set up in the hosting service. + +Generally, propagation occurs within a few hours, but it can take up to 48 hours +in some cases. diff --git a/docs/getting-started/custom-domains/apex-domains/pt.md b/docs/getting-started/custom-domains/apex-domains/pt.md new file mode 100644 index 00000000..8c44b422 --- /dev/null +++ b/docs/getting-started/custom-domains/apex-domains/pt.md @@ -0,0 +1,48 @@ +--- +description: Como redirecionar domínio sem www +since: 1.1.0 +--- + +## O que é domínio apex? + +Domínio apex é o termo utilizado para domínio raiz, sem subdomínio. + +Exemplo: + +- `www.example.com.br` -> Subdomínio +- `loja.example.com.br` -> Subdomínio +- `example.com.br` - Domínio Apex + +## Posso apontar um site deco.cx para o domínio apex? + +Não, ainda não é possível apontar um site deco.cx para o seu domínio apex. + +Por isso, criamos uma solução fácil de redirecionamento, para que os acessos ao +domínio Apex não sejam perdidos. + +## Como redirecionar um domínio apex na deco.cx? + +1 - No painel do seu site na deco.cx, acesse a página de Configurações. + +2 - Clique em "Adicionar domínio existente" + +3 - Insira o seu domínio apex (sem subdomínio): + +![Domain step](https://github.com/deco-cx/apps/assets/76620866/85b1bcd5-5dec-4a61-bb0b-635e0b8a3d3a) + +4 - Defina para qual subdomínio redirecionar: + +![Sudomain step](https://github.com/deco-cx/apps/assets/76620866/ab92d6cb-ef08-4f98-a0e5-b241f932722d) + +5 - Agora, você verá os apontamentos que devem ser feitos na sua plataforma de +hospedagem de domínio: + +![DNS Setup](https://github.com/deco-cx/apps/assets/76620866/ff13f321-58b2-4cc7-9015-5738dd31b849) + +6 - Após realizar as configurações, clique em Validar Domínio. + +A etapa de validação é essencial para o funcionamento e ela depende da +propagação do DNS configurado no serviço de hospedagem. + +No geral, a propagação ocorre dentro algumas horas, mas pode levar até 48 horas +em alguns casos. diff --git a/docs/toc.ts b/docs/toc.ts index 41a96bb1..ceda68ff 100644 --- a/docs/toc.ts +++ b/docs/toc.ts @@ -43,6 +43,15 @@ const tableOfContents: TableOfContents = [ en: "Adding custom domains", }, slug: "getting-started/custom-domains", + children: [ + { + title: { + pt: "Como redirecionar domínio sem wwww", + en: "How to redirect domain without www", + }, + slug: "getting-started/custom-domains/apex-domains", + }, + ], }, { title: { @@ -280,8 +289,10 @@ const tableOfContents: TableOfContents = [ }, { title: { - pt: "Aprenda a usar a técnica de SVG sprites para otimizar a performance do seu site", - en: "Learn how to use the SVG sprites technique to optimize the performance of your website", + pt: + "Aprenda a usar a técnica de SVG sprites para otimizar a performance do seu site", + en: + "Learn how to use the SVG sprites technique to optimize the performance of your website", }, slug: "performance/tips/svg-sprites", }, @@ -540,17 +551,24 @@ since: 1.0.0 } const tableOfContentsBySlug = tableOfContents.reduce((acc, cur) => { - const entries: TopLevelEntry[] = [cur, ...(cur.children || [])]; - return Object.assign( - acc, - entries.reduce((acc, cur) => { - if (!cur.slug) return acc; - acc[cur.slug] = cur; - return acc; - }, {} as Record), - ); + return addEntriesToAccumulator(acc, cur); }, {} as Record); +function addEntriesToAccumulator( + acc: Record, + entry: TopLevelEntry, +) { + if (entry.slug) { + acc[entry.slug] = entry; + } + if (entry.children) { + entry.children.forEach((child: TopLevelEntry) => + addEntriesToAccumulator(acc, child) + ); + } + return acc; +} + export const getMenuDataForLanguage = (language: "en" | "pt") => tableOfContents.map(({ title, slug, children }) => ({ title: title[language], diff --git a/islands/NRF/BackgroundGrid.tsx b/islands/NRF/BackgroundGrid.tsx index 52d809c5..cadb1e12 100644 --- a/islands/NRF/BackgroundGrid.tsx +++ b/islands/NRF/BackgroundGrid.tsx @@ -21,7 +21,8 @@ export const CursorFollower = () => { const { x, y } = position.value; - const transform = `translate3d(${x}vw, ${y}vh, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg)`; + const transform = + `translate3d(${x}vw, ${y}vh, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg)`; return (
{ transformStyle: "preserve-3d", transform: transform, }} - >
+ > + ); }; diff --git a/islands/NRF/Editor.tsx b/islands/NRF/Editor.tsx index 1ab68d5b..92a9c102 100644 --- a/islands/NRF/Editor.tsx +++ b/islands/NRF/Editor.tsx @@ -1,5 +1,5 @@ import { useEffect } from "preact/hooks"; -import { animate, scroll, inView, stagger, timeline } from "motion"; +import { animate, inView, scroll, stagger, timeline } from "motion"; import { ComponentLibrary } from "deco-sites/starting/components/nrf/editor/ComponentLibrary.tsx"; import { RealtimeEditor } from "deco-sites/starting/components/nrf/editor/RealtimeEditor.tsx"; @@ -15,7 +15,7 @@ import { EDITOR_TIMELINES } from "deco-sites/starting/animations/timelines/edito /** * @title {{{key}}} - **/ + */ export interface EditorFeature { title: string; subtitle: string; @@ -56,7 +56,7 @@ export default function Editor({ title, features }: Props) { animate( target.querySelectorAll(".item"), { opacity: 1, transform: "translateY(0px)" }, - { delay: stagger(0.1), duration: 1, easing: "ease-out" } + { delay: stagger(0.1), duration: 1, easing: "ease-out" }, ); }; @@ -66,8 +66,8 @@ export default function Editor({ title, features }: Props) { const index = Math.floor(y.progress * elements.length); const fractionPerElement = 1 / elements.length; - const fraction = - (y.progress - index * fractionPerElement) / fractionPerElement; + const fraction = (y.progress - index * fractionPerElement) / + fractionPerElement; animate( `#feature-progress-${index}`, @@ -76,23 +76,21 @@ export default function Editor({ title, features }: Props) { }, { duration: 0, - } + }, ); }, { target: document.querySelector(`.editor`)!, - } + }, ); const animateFeature = ( target: Element, index: number, - isEntering: boolean + isEntering: boolean, ) => { const directionY = isScrollingDown - ? isEntering - ? "100px" - : "-100px" + ? isEntering ? "100px" : "-100px" : isEntering ? "-100px" : "100px"; @@ -110,7 +108,7 @@ export default function Editor({ title, features }: Props) { animate( `#feature-image-${index}`, { opacity: opacityValue }, - { duration: 0.3 } + { duration: 0.3 }, ); timeline(EDITOR_TIMELINES[target.id]); @@ -118,7 +116,7 @@ export default function Editor({ title, features }: Props) { animate( `#feature-title-${index}`, { color: colorValue }, - { duration: 0.3 } + { duration: 0.3 }, ); animate( @@ -127,7 +125,7 @@ export default function Editor({ title, features }: Props) { opacity: opacityValue, transform: [transformStarting, transformEnding], }, - { delay: 0.1, duration: 0.3 } + { delay: 0.1, duration: 0.3 }, ); }; @@ -144,7 +142,7 @@ export default function Editor({ title, features }: Props) { animate( `#feature-progress-wrapper-${index}`, { opacity: 1 }, - { duration: 0.3 } + { duration: 0.3 }, ); animate(`#feature-title-${index}`, { x: 0 }, { duration: 0.3 }); @@ -155,14 +153,14 @@ export default function Editor({ title, features }: Props) { animate( `#feature-progress-wrapper-${index}`, { opacity: 0 }, - { duration: 0.3 } + { duration: 0.3 }, ); animate(`#feature-title-${index}`, { x: "-24px" }, { duration: 0.3 }); animateFeature(target, index, false); }; }, - { margin: "0px 0px -85% 0px" } + { margin: "0px 0px -85% 0px" }, ); }, []); diff --git a/islands/NRF/EditorMobile.tsx b/islands/NRF/EditorMobile.tsx index a622771c..9d9a331f 100644 --- a/islands/NRF/EditorMobile.tsx +++ b/islands/NRF/EditorMobile.tsx @@ -15,7 +15,7 @@ import { EDITOR_TIMELINES } from "deco-sites/starting/animations/timelines/edito /** * @title {{{key}}} - **/ + */ export interface EditorFeature { title: string; subtitle: string; @@ -48,7 +48,7 @@ export default function Editor({ features }: Props) { timeline(EDITOR_TIMELINES[target.id]); }, - { margin: "0px 0px -85% 0px" } + { margin: "0px 0px -85% 0px" }, ); }, []); diff --git a/islands/NRF/Features.tsx b/islands/NRF/Features.tsx index 83ad5868..ff5fb1ed 100644 --- a/islands/NRF/Features.tsx +++ b/islands/NRF/Features.tsx @@ -47,12 +47,12 @@ export default function Features({ title, cards }: Props) { animate( target.querySelectorAll(".feature-card"), { opacity: 1, transform: "translateY(0px)" }, - { delay: stagger(0.1), duration: 1, easing: "ease-out" } + { delay: stagger(0.1), duration: 1, easing: "ease-out" }, ); }, { margin: "0px 0px -100px 0px", - } + }, ); }, []); @@ -65,9 +65,7 @@ export default function Features({ title, cards }: Props) { )}
- {cards?.map((card) => ( - - ))} + {cards?.map((card) => )}
{/*
    {props.menuLinks.map((link) => { diff --git a/islands/NRF/PageWrapper.tsx b/islands/NRF/PageWrapper.tsx index 2d3e05dc..44e124b5 100644 --- a/islands/NRF/PageWrapper.tsx +++ b/islands/NRF/PageWrapper.tsx @@ -7,9 +7,7 @@ export interface Props { export default function PageWrapper({ sections }: Props) { return (
    - {sections.map(({ Component, props }) => ( - - ))} + {sections.map(({ Component, props }) => )}
    ); } diff --git a/islands/NRF/TextLines.tsx b/islands/NRF/TextLines.tsx index 4b14a067..2104d0e3 100644 --- a/islands/NRF/TextLines.tsx +++ b/islands/NRF/TextLines.tsx @@ -24,7 +24,7 @@ function TextLines({ lines, speedRatio = 1, animateOnScroll }: Props) { const handleScroll = ({ y }: { y: { progress: number } }) => { const currHighlighted = Math.floor( - y.progress * 2 * paragraphs.length + y.progress * 2 * paragraphs.length, ); const direction = currHighlighted > lastHighlighted ? 1 : -1; const color = direction === 1 ? "white" : "#131313"; @@ -63,7 +63,8 @@ function TextLines({ lines, speedRatio = 1, animateOnScroll }: Props) { class={`inline text-white`} > {word} -

    {" "} +

    + {" "} ))}
diff --git a/loaders/denoTopicsLoader.ts b/loaders/denoTopicsLoader.ts index 22287d25..986cf303 100644 --- a/loaders/denoTopicsLoader.ts +++ b/loaders/denoTopicsLoader.ts @@ -38,6 +38,7 @@ const loader = ( }) ?? ([] as SubTopic[]), }); }); + return topics; }; diff --git a/sections/Head.tsx b/sections/Head.tsx index 8d2c7c95..a9f74fa0 100644 --- a/sections/Head.tsx +++ b/sections/Head.tsx @@ -38,25 +38,29 @@ export default function HeadComponent({ rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" - > + > + + > + + > + + > + @@ -74,16 +78,19 @@ export default function HeadComponent({ } `, }} - > + > + )} {/* TODO: Procurar o script */} {/* */} + > + ); } diff --git a/sections/NRF/Brands.tsx b/sections/NRF/Brands.tsx index dcb7f6ee..50118e82 100644 --- a/sections/NRF/Brands.tsx +++ b/sections/NRF/Brands.tsx @@ -36,7 +36,10 @@ const LogoSlider = ({ logos }: { logos: Image[] }) => { const renderLogoSlide = () => (
{logos.map((logo) => ( -
+
{logo.label} { return (
- {/*
-
*/} + { + /*
+
*/ + }
- (e.currentTarget.style.animationPlayState = "paused") - } - onMouseLeave={(e) => - (e.currentTarget.style.animationPlayState = "running") - } + onMouseEnter={( + e, + ) => (e.currentTarget.style.animationPlayState = "paused")} + onMouseLeave={( + e, + ) => (e.currentTarget.style.animationPlayState = "running")} > {renderLogoSlide()} {renderLogoSlide()} @@ -72,12 +77,10 @@ const LogoSlider = ({ logos }: { logos: Image[] }) => { export default function Brands({ title, url, images }: Props) { const list = useMemo( () => - images && images.length > 0 - ? images - : Array(6) - .fill(null) - .map((_, i) => IMAGES[i % 2]), - [] + images && images.length > 0 ? images : Array(6) + .fill(null) + .map((_, i) => IMAGES[i % 2]), + [], ); return ( diff --git a/sections/NRF/CallToAction.tsx b/sections/NRF/CallToAction.tsx index aa8e0d12..5b23b61b 100644 --- a/sections/NRF/CallToAction.tsx +++ b/sections/NRF/CallToAction.tsx @@ -30,7 +30,8 @@ export default function CallToAction({ text, cta }: Props) { : "bg-[#02F67C] hover:from-[#02F67C] hover:to-[#06E474] text-black hover:shadow-hero" }`} > - + + {item?.text} diff --git a/sections/NRF/DecoFooter.tsx b/sections/NRF/DecoFooter.tsx index ced4b4b2..f9e51057 100644 --- a/sections/NRF/DecoFooter.tsx +++ b/sections/NRF/DecoFooter.tsx @@ -40,7 +40,8 @@ function SubMenu({ menu }: { menu: Menu[] }) {
  • {submenuItem.title}
    -
    +
    +
  • ); diff --git a/sections/NRF/Hero.tsx b/sections/NRF/Hero.tsx index eada4344..084064ad 100644 --- a/sections/NRF/Hero.tsx +++ b/sections/NRF/Hero.tsx @@ -76,14 +76,16 @@ export default function Hero({ title, subtitle, cta, alert, tabs }: Props) { dangerouslySetInnerHTML={{ __html: title, }} - >
    + > +
    {subtitle && (
    + > +
    )} {cta && (
    @@ -99,7 +101,8 @@ export default function Hero({ title, subtitle, cta, alert, tabs }: Props) { : "bg-[#02F67C] hover:from-[#02F67C] hover:to-[#06E474] text-black hover:shadow-hero" }`} > - + + {item?.text} diff --git a/sections/NRF/HeroFlat.tsx b/sections/NRF/HeroFlat.tsx index 4b501d4c..571c8257 100644 --- a/sections/NRF/HeroFlat.tsx +++ b/sections/NRF/HeroFlat.tsx @@ -62,7 +62,8 @@ export default function HeroFlats({ dangerouslySetInnerHTML={{ __html: title, }} - >
    + > +

    {description}

    @@ -79,7 +80,8 @@ export default function HeroFlats({ : "bg-[#02F67C] hover:from-[#02F67C] hover:to-[#06E474] text-black hover:shadow-hero" }`} > - + + {item?.text} diff --git a/sections/NRF/PageWrapper.tsx b/sections/NRF/PageWrapper.tsx index ad070bbe..2b208098 100644 --- a/sections/NRF/PageWrapper.tsx +++ b/sections/NRF/PageWrapper.tsx @@ -7,9 +7,7 @@ export interface Props { export default function PageWrapper({ sections }: Props) { return (
    - {sections.map(({ Component, props }) => ( - - ))} + {sections.map(({ Component, props }) => )}
    ); } diff --git a/sections/NRF/Pricing.tsx b/sections/NRF/Pricing.tsx index 077cdbfd..88f08b43 100644 --- a/sections/NRF/Pricing.tsx +++ b/sections/NRF/Pricing.tsx @@ -27,7 +27,8 @@ function Button({ text, link }: { text: string; link: string }) { target="_blank" class={`group relative relative overflow-hidden rounded-full hover:bg-gradient-to-r px-6 py-2 lg:px-8 lg:py-3 transition-all duration-300 ease-out bg-[#02F67C] hover:from-[#02F67C] hover:to-[#06E474] text-black hover:shadow-hero text-center`} > - + + {text} diff --git a/sections/NRF/PricingValue.tsx b/sections/NRF/PricingValue.tsx index ba3a2e54..09fdb524 100644 --- a/sections/NRF/PricingValue.tsx +++ b/sections/NRF/PricingValue.tsx @@ -18,9 +18,14 @@ export default function PricingValue({ price, text, subtext, button }: Props) {
    -

    {price}

    +

    + {price} +

    -

    +

    {subtext}

    diff --git a/tailwind.config.ts b/tailwind.config.ts index 6b81b456..b59cfb25 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -49,7 +49,8 @@ export default { "linear-gradient(to bottom, #F3FFF9 300px, #ffffff 20%);", }, boxShadow: { - hero: "rgb(0, 0, 0) 0px 0px 0px 2px, rgb(6, 228, 116) 0px 0px 0px 4px, rgba(0, 0, 0, 0) 0px 0px 0px 0px", + hero: + "rgb(0, 0, 0) 0px 0px 0px 2px, rgb(6, 228, 116) 0px 0px 0px 4px, rgba(0, 0, 0, 0) 0px 0px 0px 0px", "hero-reverse": "rgb(0, 0, 0) 0px 0px 0px 2px, rgb(17, 48, 50) 0px 0px 0px 4px, rgba(0, 0, 0, 0) 0px 0px 0px 0px", "custom-shadow": "0px 4px 60px rgba(0, 0, 0, 0.17)",