@prosistemas/sca-web-kit 1.0.0
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/README.md +33 -0
- package/assets/icons/newsletter-success.svg +85 -0
- package/assets/icons/not-found.svg +36 -0
- package/assets/logos/sca/sca-s-gradient.svg +9 -0
- package/dist/components/layout/footer/footer.d.ts +1 -0
- package/dist/components/layout/footer/footer.js +11 -0
- package/dist/components/layout/footer/footer.module.scss +198 -0
- package/dist/components/shared/autoplayer/autoplayer-row/autoplayer-row.d.ts +8 -0
- package/dist/components/shared/autoplayer/autoplayer-row/autoplayer-row.js +11 -0
- package/dist/components/shared/autoplayer/autoplayer-row/autoplayer-row.module.scss +43 -0
- package/dist/components/shared/autoplayer/autoplayer.d.ts +1 -0
- package/dist/components/shared/autoplayer/autoplayer.js +16 -0
- package/dist/components/shared/autoplayer/autoplayer.module.scss +20 -0
- package/dist/components/shared/footer-banner/footer-banner.d.ts +1 -0
- package/dist/components/shared/footer-banner/footer-banner.js +9 -0
- package/dist/components/shared/footer-banner/footer-banner.module.scss +103 -0
- package/dist/components/shared/footer-banner-autoplayer/footer-banner-autoplayer.d.ts +3 -0
- package/dist/components/shared/footer-banner-autoplayer/footer-banner-autoplayer.js +10 -0
- package/dist/components/shared/footer-banner-autoplayer/footer-banner-autoplayer.module.scss +108 -0
- package/dist/components/shared/index-header/index-header.d.ts +2 -0
- package/dist/components/shared/index-header/index-header.js +35 -0
- package/dist/components/shared/index-header/index-header.module.scss +17 -0
- package/dist/components/shared/index-header/indexed-section-button/indexed-section-button.d.ts +6 -0
- package/dist/components/shared/index-header/indexed-section-button/indexed-section-button.js +8 -0
- package/dist/components/shared/index-header/indexed-section-button/indexed-section-button.module.scss +38 -0
- package/dist/components/shared/info-header/info-header.d.ts +18 -0
- package/dist/components/shared/info-header/info-header.js +14 -0
- package/dist/components/shared/info-header/info-header.module.scss +10 -0
- package/dist/components/shared/newsletter-modal/newsletter-modal.d.ts +4 -0
- package/dist/components/shared/newsletter-modal/newsletter-modal.js +10 -0
- package/dist/components/shared/newsletter-modal/newsletter-modal.module.scss +47 -0
- package/dist/components/shared/newsletter-modal-dialog/newsletter-modal-dialog.d.ts +5 -0
- package/dist/components/shared/newsletter-modal-dialog/newsletter-modal-dialog.js +11 -0
- package/dist/components/shared/newsletter-modal-dialog/newsletter-modal-dialog.module.scss +15 -0
- package/dist/components/shared/newsletter-strip/newsletter-strip.d.ts +7 -0
- package/dist/components/shared/newsletter-strip/newsletter-strip.js +10 -0
- package/dist/components/shared/newsletter-strip/newsletter-strip.module.scss +128 -0
- package/dist/components/shared/phone/phone.d.ts +6 -0
- package/dist/components/shared/phone/phone.js +16 -0
- package/dist/components/shared/phone/phone.module.scss +322 -0
- package/dist/components/shared/success-cases/success-cases-swiper/success-case-card/success-case-card.d.ts +10 -0
- package/dist/components/shared/success-cases/success-cases-swiper/success-case-card/success-case-card.js +9 -0
- package/dist/components/shared/success-cases/success-cases-swiper/success-case-card/success-case-card.module.scss +154 -0
- package/dist/components/shared/success-cases/success-cases-swiper/success-cases-swiper.d.ts +3 -0
- package/dist/components/shared/success-cases/success-cases-swiper/success-cases-swiper.js +15 -0
- package/dist/components/shared/success-cases/success-cases-swiper/success-cases-swiper.module.scss +81 -0
- package/dist/components/shared/success-cases/success-cases.d.ts +5 -0
- package/dist/components/shared/success-cases/success-cases.js +9 -0
- package/dist/components/shared/success-cases/success-cases.module.scss +60 -0
- package/dist/components/shared/support-sticky-button/support-sticky-button.d.ts +1 -0
- package/dist/components/shared/support-sticky-button/support-sticky-button.js +7 -0
- package/dist/components/shared/support-sticky-button/support-sticky-button.module.scss +63 -0
- package/dist/components/ui/accordion/accordion.d.ts +4 -0
- package/dist/components/ui/accordion/accordion.js +7 -0
- package/dist/components/ui/accordion/accordion.module.scss +114 -0
- package/dist/components/ui/button/button.d.ts +34 -0
- package/dist/components/ui/button/button.js +31 -0
- package/dist/components/ui/button/button.module.scss +22 -0
- package/dist/components/ui/decal/decal.d.ts +6 -0
- package/dist/components/ui/decal/decal.js +9 -0
- package/dist/components/ui/decal/decal.module.scss +7 -0
- package/dist/components/ui/icon-with-background/icon-with-background.d.ts +13 -0
- package/dist/components/ui/icon-with-background/icon-with-background.js +22 -0
- package/dist/components/ui/icon-with-background/icon-with-background.module.scss +18 -0
- package/dist/components/ui/progress-bar/progress-bar.d.ts +5 -0
- package/dist/components/ui/progress-bar/progress-bar.js +9 -0
- package/dist/components/ui/progress-bar/progress-bar.module.scss +12 -0
- package/dist/components/ui/pulse-effect/pulse-effect.d.ts +1 -0
- package/dist/components/ui/pulse-effect/pulse-effect.js +5 -0
- package/dist/components/ui/pulse-effect/pulse-effect.module.scss +63 -0
- package/dist/components/ui/stacks/stacks.d.ts +1 -0
- package/dist/components/ui/stacks/stacks.js +5 -0
- package/dist/components/ui/stacks/stacks.module.scss +32 -0
- package/dist/components/ui/subtitle/subtitle.d.ts +5 -0
- package/dist/components/ui/subtitle/subtitle.js +7 -0
- package/dist/components/ui/subtitle/subtitle.module.scss +8 -0
- package/dist/components/ui/tag-label/tag-label.d.ts +18 -0
- package/dist/components/ui/tag-label/tag-label.js +15 -0
- package/dist/components/ui/tag-label/tag-label.module.scss +17 -0
- package/dist/components/ui/three-dots/three-dots.d.ts +3 -0
- package/dist/components/ui/three-dots/three-dots.js +5 -0
- package/dist/components/ui/three-dots/three-dots.module.scss +28 -0
- package/dist/components/ui/title/title.d.ts +8 -0
- package/dist/components/ui/title/title.js +10 -0
- package/dist/components/ui/title/title.module.scss +8 -0
- package/dist/fonts.d.ts +2 -0
- package/dist/fonts.js +9 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.js +29 -0
- package/dist/styles/variables.scss +50 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
.footer-banner-autoplayer {
|
|
2
|
+
width: 100%;
|
|
3
|
+
padding: var(--global-padding);
|
|
4
|
+
|
|
5
|
+
display: flex;
|
|
6
|
+
justify-content: space-between;
|
|
7
|
+
align-items: flex-end;
|
|
8
|
+
gap: 62px;
|
|
9
|
+
|
|
10
|
+
background: var(--dark800);
|
|
11
|
+
border-radius: 24px 24px 0 0;
|
|
12
|
+
|
|
13
|
+
@media (max-width: 1024px) {
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
align-items: center;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.left {
|
|
19
|
+
width: 33%;
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
gap: 16px;
|
|
23
|
+
color: var(--neutral000);
|
|
24
|
+
|
|
25
|
+
@media (max-width: 1024px) {
|
|
26
|
+
width: 100%;
|
|
27
|
+
align-items: center;
|
|
28
|
+
text-align: center;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@media (max-width: 768px) {
|
|
32
|
+
width: 100%;
|
|
33
|
+
align-items: flex-start;
|
|
34
|
+
text-align: start;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.info-header {
|
|
38
|
+
text-align: start;
|
|
39
|
+
align-items: flex-start;
|
|
40
|
+
gap: 16px;
|
|
41
|
+
|
|
42
|
+
@media (max-width: 1024px) {
|
|
43
|
+
align-items: center;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@media (max-width: 768px) {
|
|
47
|
+
align-items: flex-start;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.monthly-fee {
|
|
52
|
+
font-size: 24px;
|
|
53
|
+
font-weight: 600;
|
|
54
|
+
letter-spacing: 1.2px;
|
|
55
|
+
margin-top: 32px;
|
|
56
|
+
|
|
57
|
+
.price {
|
|
58
|
+
font-size: 40px;
|
|
59
|
+
font-weight: 600;
|
|
60
|
+
letter-spacing: 2px;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.button {
|
|
65
|
+
padding: 16px 64px;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.middle {
|
|
70
|
+
position: relative;
|
|
71
|
+
min-height: 351px;
|
|
72
|
+
width: 33%;
|
|
73
|
+
height: 100%;
|
|
74
|
+
|
|
75
|
+
@media (max-width: 1024px) {
|
|
76
|
+
width: 100%;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.image {
|
|
80
|
+
border-radius: 16px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.person {
|
|
84
|
+
position: absolute;
|
|
85
|
+
bottom: 0;
|
|
86
|
+
left: 50%;
|
|
87
|
+
transform: translateX(-50%);
|
|
88
|
+
|
|
89
|
+
@media (max-width: 1330px) {
|
|
90
|
+
scale: 90%;
|
|
91
|
+
transform-origin: bottom left;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@media (max-width: 1024px) {
|
|
95
|
+
scale: 100%;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.right {
|
|
101
|
+
width: 33%;
|
|
102
|
+
height: 100%;
|
|
103
|
+
|
|
104
|
+
@media (max-width: 1024px) {
|
|
105
|
+
width: 100%;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import styles from './index-header.module.scss';
|
|
4
|
+
import { useEffect, useState } from 'react';
|
|
5
|
+
import IndexedSectionButton from './indexed-section-button/indexed-section-button';
|
|
6
|
+
export default function IndexHeader({ sections }) {
|
|
7
|
+
const [activeSection, setActiveSection] = useState('');
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const handleScroll = () => {
|
|
10
|
+
let closestSectionId = '';
|
|
11
|
+
let minDistance = Number.POSITIVE_INFINITY;
|
|
12
|
+
sections.forEach(({ id }) => {
|
|
13
|
+
const el = document.getElementById(id);
|
|
14
|
+
if (el) {
|
|
15
|
+
const top = el.getBoundingClientRect().top;
|
|
16
|
+
if (top >= 0 && top < minDistance) {
|
|
17
|
+
minDistance = top;
|
|
18
|
+
closestSectionId = id;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
if (closestSectionId)
|
|
23
|
+
setActiveSection(closestSectionId);
|
|
24
|
+
};
|
|
25
|
+
window.addEventListener('scroll', handleScroll, { passive: true });
|
|
26
|
+
handleScroll();
|
|
27
|
+
return () => {
|
|
28
|
+
window.removeEventListener('scroll', handleScroll);
|
|
29
|
+
};
|
|
30
|
+
}, [sections]);
|
|
31
|
+
return (_jsx("header", { className: styles['index-header'], children: sections.map(({ id, label }) => (_jsx(IndexedSectionButton, { activeSectionId: activeSection, onClick: () => setActiveSection(id), indexedSection: {
|
|
32
|
+
id: id,
|
|
33
|
+
label: label,
|
|
34
|
+
} }, id))) }));
|
|
35
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.index-header {
|
|
2
|
+
position: sticky;
|
|
3
|
+
top: 0;
|
|
4
|
+
z-index: 2;
|
|
5
|
+
|
|
6
|
+
width: 100%;
|
|
7
|
+
height: 80px;
|
|
8
|
+
background: var(--neutral100);
|
|
9
|
+
padding: var(--global-padding);
|
|
10
|
+
padding-top: 0;
|
|
11
|
+
padding-bottom: 0;
|
|
12
|
+
overflow-x: auto;
|
|
13
|
+
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: flex-end;
|
|
16
|
+
gap: 32px;
|
|
17
|
+
}
|
package/dist/components/shared/index-header/indexed-section-button/indexed-section-button.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IndexedSection } from '../../../../types';
|
|
2
|
+
export default function IndexedSectionButton({ activeSectionId, indexedSection, onClick, }: {
|
|
3
|
+
activeSectionId: string;
|
|
4
|
+
indexedSection: IndexedSection;
|
|
5
|
+
onClick: () => void;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import styles from './indexed-section-button.module.scss';
|
|
3
|
+
export default function IndexedSectionButton({ activeSectionId, indexedSection, onClick, }) {
|
|
4
|
+
return (_jsx("button", { className: styles['button-wrapper'], onClick: onClick, children: _jsxs("a", { href: `#${indexedSection.id}`, className: `
|
|
5
|
+
${styles['section-button']}
|
|
6
|
+
${activeSectionId == indexedSection.id ? styles['active'] : ''}
|
|
7
|
+
`, children: [_jsx("span", { children: indexedSection.label }), _jsx("div", { className: styles['highlight'] })] }) }));
|
|
8
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
.button-wrapper {
|
|
2
|
+
all: unset;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.section-button {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
align-items: center;
|
|
9
|
+
gap: 16px;
|
|
10
|
+
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
color: var(--neutral400);
|
|
13
|
+
text-align: center;
|
|
14
|
+
font-size: 16px;
|
|
15
|
+
font-variation-settings: 'wght' 500;
|
|
16
|
+
line-height: 150%;
|
|
17
|
+
|
|
18
|
+
z-index: 1;
|
|
19
|
+
|
|
20
|
+
white-space: nowrap;
|
|
21
|
+
|
|
22
|
+
transition: color .3s, font-variation-settings .3s;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.highlight {
|
|
26
|
+
width: 120%;
|
|
27
|
+
height: 2px;
|
|
28
|
+
transition: background .3s;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.active {
|
|
32
|
+
color: var(--neutral600);
|
|
33
|
+
font-variation-settings: 'wght' 600;
|
|
34
|
+
|
|
35
|
+
.highlight {
|
|
36
|
+
background: var(--auxiliary-orange);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface InfoHeaderProps {
|
|
2
|
+
className?: string;
|
|
3
|
+
tagLabel?: string;
|
|
4
|
+
tagLabelClassName?: string;
|
|
5
|
+
title: string;
|
|
6
|
+
titleClassName?: string;
|
|
7
|
+
subtitle?: string;
|
|
8
|
+
subtitleClassName?: string;
|
|
9
|
+
buttonLabel?: string;
|
|
10
|
+
buttonClassName?: string;
|
|
11
|
+
buttonHref?: string;
|
|
12
|
+
buttonInternalHref?: string;
|
|
13
|
+
buttonTarget?: React.HTMLAttributeAnchorTarget;
|
|
14
|
+
gap?: string;
|
|
15
|
+
dark?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export default function InfoHeader({ className, tagLabel, tagLabelClassName, title, titleClassName, subtitle, subtitleClassName, buttonLabel, buttonClassName, buttonHref, buttonInternalHref, buttonTarget, gap, dark, }: InfoHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import styles from './info-header.module.scss';
|
|
3
|
+
import TagLabel from '../../ui/tag-label/tag-label';
|
|
4
|
+
import Subtitle from '../../ui/subtitle/subtitle';
|
|
5
|
+
import Button from '../../ui/button/button';
|
|
6
|
+
import Title from '../../ui/title/title';
|
|
7
|
+
export default function InfoHeader({ className, tagLabel, tagLabelClassName, title, titleClassName, subtitle, subtitleClassName, buttonLabel, buttonClassName, buttonHref, buttonInternalHref, buttonTarget, gap, dark, }) {
|
|
8
|
+
return (_jsxs("div", { className: `${styles['info-header']} ${className}`, style: {
|
|
9
|
+
gap: gap,
|
|
10
|
+
}, children: [tagLabel &&
|
|
11
|
+
_jsx(TagLabel, { label: tagLabel, className: tagLabelClassName, dark: dark }), _jsx(Title, { className: titleClassName, text: title, dark: dark }), subtitle &&
|
|
12
|
+
_jsx(Subtitle, { text: subtitle, className: subtitleClassName, dark: dark }), buttonLabel &&
|
|
13
|
+
_jsx(Button, { label: buttonLabel, className: buttonClassName, href: buttonHref, internalHref: buttonInternalHref, target: buttonTarget })] }));
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import styles from './newsletter-modal.module.scss';
|
|
3
|
+
import { montserrat } from '../../../fonts';
|
|
4
|
+
import newsletterErrorIcon from '@prosistemas/sca-web-kit/assets/icons/not-found.svg';
|
|
5
|
+
import newsletterSuccessIcon from '@prosistemas/sca-web-kit/assets/icons/newsletter-success.svg';
|
|
6
|
+
import Button from '../../ui/button/button';
|
|
7
|
+
import { XIcon } from '@phosphor-icons/react/dist/ssr';
|
|
8
|
+
export default function NewsletterModal({ onCloseButtonClick, type, }) {
|
|
9
|
+
return (_jsxs("div", { className: styles['newsletter-modal'], children: [_jsx(Button, { className: styles['close-button'], icon: XIcon, iconWeight: "bold", round: true, onClick: onCloseButtonClick }), _jsx("img", { src: type === "error" ? newsletterErrorIcon : newsletterSuccessIcon, alt: "TODO", width: 150, height: 150, className: styles['icon'] }), type === 'success' ? (_jsxs(_Fragment, { children: [_jsx("p", { className: `${styles['title']} ${montserrat.className}`, children: "Cadastro realizado com sucesso!" }), _jsx("p", { className: styles['subtitle'], children: "Agora voc\u00EA receber\u00E1 em primeira m\u00E3o, os melhores conte\u00FAdos sobre gest\u00E3o de pessoas, despesas e benef\u00EDcios." })] })) : type === 'already-registered' ? (_jsxs(_Fragment, { children: [_jsx("p", { className: `${styles['title']} ${montserrat.className}`, children: "Seu e-mail j\u00E1 est\u00E1 cadastrado!" }), _jsx("p", { className: styles['subtitle'], children: "Esse endere\u00E7o de e-mail j\u00E1 consta no nosso banco de dados. " })] })) : (_jsxs(_Fragment, { children: [_jsx("p", { className: `${styles['title']} ${montserrat.className}`, children: "Um erro ocorreu ao registrar seu e-mail!" }), _jsx("p", { className: styles['subtitle'], children: "Verifique se o seu e-mail foi digitado corretamente e tente novamente por gentileza." })] }))] }));
|
|
10
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
.newsletter-modal {
|
|
2
|
+
position: relative;
|
|
3
|
+
|
|
4
|
+
gap: 24px;
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
|
|
10
|
+
width: 720px;
|
|
11
|
+
height: 415px;
|
|
12
|
+
|
|
13
|
+
background: #FFF;
|
|
14
|
+
border-radius: 14px;
|
|
15
|
+
border: 1.124px solid var(--light100);
|
|
16
|
+
box-shadow: 0 52px 72px 0 rgba(32, 41, 64, 0.10);
|
|
17
|
+
|
|
18
|
+
.close-button {
|
|
19
|
+
position: absolute;
|
|
20
|
+
top: 16px;
|
|
21
|
+
right: 16px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.icon {
|
|
25
|
+
margin-bottom: -32px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.title {
|
|
29
|
+
text-align: center;
|
|
30
|
+
color: var(--neutral500) !important;
|
|
31
|
+
|
|
32
|
+
font-size: 24px;
|
|
33
|
+
font-weight: 600;
|
|
34
|
+
line-height: 120%;
|
|
35
|
+
letter-spacing: -0.24px;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.subtitle {
|
|
39
|
+
max-width: 460px;
|
|
40
|
+
|
|
41
|
+
color: var(--neutral500) !important;
|
|
42
|
+
text-align: center;
|
|
43
|
+
|
|
44
|
+
font-size: 16px;
|
|
45
|
+
line-height: 150%;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import styles from './newsletter-modal-dialog.module.scss';
|
|
4
|
+
import NewsletterModal from '../newsletter-modal/newsletter-modal';
|
|
5
|
+
import * as Dialog from '@radix-ui/react-dialog';
|
|
6
|
+
import * as VisuallyHidden from '@radix-ui/react-visually-hidden';
|
|
7
|
+
export default function NewsletterModalDialog({ modalType, open, setOpenAction, }) {
|
|
8
|
+
return (_jsx(Dialog.Root, { open: open, children: _jsx(Dialog.Portal, { children: _jsx(Dialog.Overlay, { className: styles['overlay'], children: _jsxs(Dialog.Content, { children: [_jsx(VisuallyHidden.Root, { children: _jsx(Dialog.Title, { children: "Tela de confirma\u00E7\u00E3o de inscri\u00E7\u00E3o na Newsletter do SCA" }) }), _jsx(NewsletterModal, { type: modalType, onCloseButtonClick: () => {
|
|
9
|
+
setOpenAction(false);
|
|
10
|
+
} })] }) }) }) }));
|
|
11
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export default function NewsletterStrip({ buttonLabel, onButtonClick, onFormSubmit, buttonLoading, buttonDisabled, }: {
|
|
2
|
+
buttonLabel?: string;
|
|
3
|
+
onButtonClick?: () => void;
|
|
4
|
+
onFormSubmit?: (e: React.FormEvent<HTMLFormElement>) => void;
|
|
5
|
+
buttonLoading?: boolean;
|
|
6
|
+
buttonDisabled?: boolean;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import styles from './newsletter-strip.module.scss';
|
|
3
|
+
import { inter } from '../../../fonts';
|
|
4
|
+
import scaGradientLogo from '@prosistemas/sca-web-kit/assets/logos/sca/sca-s-gradient.svg';
|
|
5
|
+
import InfoHeader from '../info-header/info-header';
|
|
6
|
+
import Button from '../../ui/button/button';
|
|
7
|
+
import { EnvelopeIcon } from '@phosphor-icons/react/dist/ssr';
|
|
8
|
+
export default function NewsletterStrip({ buttonLabel, onButtonClick, onFormSubmit, buttonLoading = false, buttonDisabled = false, }) {
|
|
9
|
+
return (_jsxs("div", { className: styles['newsletter-strip'], children: [_jsxs("div", { className: styles['left'], children: [_jsx(EnvelopeIcon, { color: 'white', weight: 'light', size: 48, className: styles['icon'] }), _jsx(InfoHeader, { title: 'Os melhores conte\u00FAdos de tecnologia e fitness', subtitle: 'Assine e receba novidades toda semana em sua caixa de entrada.', className: styles['feature-card'], titleClassName: styles['feature-card-title'], dark: true })] }), _jsxs("form", { className: styles['right'], onSubmit: onFormSubmit, children: [_jsx("input", { className: `${styles['email']} ${inter.className}`, id: "email", type: "email", name: "email", placeholder: "Insira seu e-mail", required: true }), _jsx(Button, { className: styles['button'], onClick: onButtonClick, label: buttonLabel ?? "Assinar", loading: buttonLoading, disabled: buttonDisabled, type: 'submit' }), _jsx("div", { className: styles['blue-hue'] }), _jsx("img", { src: scaGradientLogo, alt: 'Logo do SCA', width: 243, height: 318, className: styles['background-logo'] })] })] }));
|
|
10
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
.newsletter-strip {
|
|
2
|
+
width: 100%;
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: space-between;
|
|
6
|
+
gap: var(--global-padding-single);
|
|
7
|
+
|
|
8
|
+
padding: 64px var(--global-padding-single);
|
|
9
|
+
background: var(--dark700);
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
|
|
12
|
+
@media (max-width: 1024px) {
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.left,
|
|
17
|
+
.right {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.left {
|
|
23
|
+
gap: 32px;
|
|
24
|
+
|
|
25
|
+
@media (max-width: 1024px) {
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
gap: 16px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.icon {
|
|
31
|
+
z-index: 1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.feature-card {
|
|
35
|
+
gap: 6px;
|
|
36
|
+
text-align: start;
|
|
37
|
+
align-items: flex-start;
|
|
38
|
+
|
|
39
|
+
@media (max-width: 1024px) {
|
|
40
|
+
text-align: center;
|
|
41
|
+
align-items: center;
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.feature-card-title {
|
|
46
|
+
font-size: 24px;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.right {
|
|
52
|
+
position: relative;
|
|
53
|
+
gap: 16px;
|
|
54
|
+
|
|
55
|
+
@media (max-width: 540px) {
|
|
56
|
+
width: 100%;
|
|
57
|
+
flex-direction: column;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.email {
|
|
61
|
+
width: 335px;
|
|
62
|
+
height: 55.5px;
|
|
63
|
+
|
|
64
|
+
padding: 16px 24px;
|
|
65
|
+
border-radius: 8px;
|
|
66
|
+
|
|
67
|
+
background: #FFF;
|
|
68
|
+
border: none;
|
|
69
|
+
outline: none;
|
|
70
|
+
z-index: 1;
|
|
71
|
+
|
|
72
|
+
color: black;
|
|
73
|
+
|
|
74
|
+
@media (max-width: 540px) {
|
|
75
|
+
width: 100%;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.button {
|
|
80
|
+
width: 145px;
|
|
81
|
+
height: 55.5px;
|
|
82
|
+
padding: 16px 48px;
|
|
83
|
+
z-index: 1;
|
|
84
|
+
|
|
85
|
+
@media (max-width: 540px) {
|
|
86
|
+
width: 100%;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.blue-hue,
|
|
91
|
+
.background-logo {
|
|
92
|
+
position: absolute;
|
|
93
|
+
top: -100px;
|
|
94
|
+
right: 0px;
|
|
95
|
+
|
|
96
|
+
z-index: 0;
|
|
97
|
+
|
|
98
|
+
@media (max-width: 1024px) {
|
|
99
|
+
left: 50%;
|
|
100
|
+
transform: translateX(-50%);
|
|
101
|
+
scale: 120%;
|
|
102
|
+
transform-origin: bottom center;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@media (max-width: 540px) {
|
|
106
|
+
display: none;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.blue-hue {
|
|
111
|
+
opacity: 0.7;
|
|
112
|
+
|
|
113
|
+
width: 219px;
|
|
114
|
+
height: 425px;
|
|
115
|
+
border-radius: 100%;
|
|
116
|
+
background: var(--light500);
|
|
117
|
+
filter: blur(125px);
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.background-logo {
|
|
122
|
+
position: absolute;
|
|
123
|
+
z-index: 0;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import styles from './phone.module.scss';
|
|
4
|
+
import { useEffect, useState } from 'react';
|
|
5
|
+
import Image from 'next/image';
|
|
6
|
+
import { ArrowLeftIcon, TimerIcon, PersonIcon, MagnifyingGlassPlusIcon } from '@phosphor-icons/react';
|
|
7
|
+
export default function Phone({ className, phoneClassName, buttonsClassName, cameraClassName, }) {
|
|
8
|
+
const [activeIndex, setActiveIndex] = useState(0);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
const interval = setInterval(() => {
|
|
11
|
+
setActiveIndex(prev => (prev + 1) % 3);
|
|
12
|
+
}, 3000);
|
|
13
|
+
return () => clearInterval(interval);
|
|
14
|
+
}, []);
|
|
15
|
+
return (_jsxs("div", { className: `${styles['phone-wrapper']} ${className}`, children: [_jsxs("div", { className: styles['buttons-left'], children: [_jsx("div", { className: `${styles['action']} ${buttonsClassName}` }), _jsx("div", { className: `${styles['volume']} ${buttonsClassName}` }), _jsx("div", { className: `${styles['volume']} ${buttonsClassName}` })] }), _jsx("div", { className: `${styles['phone']} ${phoneClassName}`, children: _jsx("div", { className: styles['screen'], children: _jsxs("div", { className: styles['screen-shine'], children: [_jsxs("div", { className: styles['system-topbar'], children: [_jsx(Image, { src: '/phone/system-bar.svg', width: 172, height: 7, alt: 'Image dos \u00EDcones de um celular', className: styles['status'] }), _jsxs("div", { className: `${styles['camera']} ${cameraClassName}`, children: [_jsx("div", { className: styles['sound'] }), _jsx("div", { className: styles['aperture'] })] })] }), _jsxs("div", { className: styles['app-topbar'], children: [_jsxs("div", { className: styles['left'], children: [_jsx(ArrowLeftIcon, { weight: 'bold', color: 'var(--neutral100)', className: styles['icon'] }), _jsx("p", { children: "Execu\u00E7\u00E3o" })] }), _jsxs("div", { className: styles['right'], children: [_jsx(TimerIcon, { weight: 'bold', color: 'var(--neutral100)', className: styles['icon'] }), _jsx("p", { children: "00:27:12" })] })] }), _jsxs("div", { className: styles['app-background'], children: [_jsx("p", { className: styles['exercise'], children: "Rosca Direta" }), _jsxs("div", { className: styles['gif-wrapper'], children: [_jsxs("div", { className: styles['series'], children: [_jsx("div", { className: `${activeIndex == 0 ? styles['green-ball'] : styles['series-ball']}`, children: _jsx("p", { children: "1" }) }), _jsx("div", { className: styles['series-line'] }), _jsx("div", { className: `${activeIndex == 1 ? styles['green-ball'] : styles['series-ball']}`, children: _jsx("p", { children: "2" }) }), _jsx("div", { className: styles['series-line'] }), _jsx("div", { className: `${activeIndex == 2 ? styles['green-ball'] : styles['series-ball']}`, children: _jsx("p", { children: "3" }) })] }), _jsx(Image, { src: '/animated/rosca-direta.webp', alt: 'Animação do exercício Rosca Direta', width: 130, height: 130, unoptimized: true })] }), _jsxs("div", { className: styles['series-rest-wrapper'], children: [_jsxs("p", { children: ["S\u00E9ries: ", _jsx("b", { children: "3" })] }), _jsxs("p", { children: ["Descanso: ", _jsx("b", { children: "45s" })] })] }), _jsx("div", { className: styles['progress-bar'], children: _jsx("div", { className: styles['progress'] }) }), _jsxs("div", { className: styles['rest-weight-wrapper'], children: [_jsxs("div", { className: styles['rest'], children: [_jsx("p", { className: styles['title'], children: "12 reps" }), _jsx("p", { children: "Repeti\u00E7\u00F5es ou tempo" })] }), _jsx("div", { className: styles['separator'] }), _jsxs("div", { className: styles['weight'], children: [_jsx("p", { className: styles['title'], children: "15kg" }), _jsx("p", { children: "Carga ou velocidade" })] })] }), _jsxs("div", { className: styles['exercise-buttons'], children: [_jsxs("div", { className: styles['muscles'], children: [_jsx(PersonIcon, { weight: 'bold', color: 'var(--primary)' }), _jsx("p", { children: "M\u00FAsculos" })] }), _jsxs("div", { className: styles['amplify'], children: [_jsx(MagnifyingGlassPlusIcon, { weight: 'bold', color: 'var(--primary)' }), _jsx("p", { children: "Ampliar" })] })] })] }), _jsx("div", { className: styles['home-indicator'] })] }) }) }), _jsx("div", { className: styles['buttons-right'], children: _jsx("div", { className: `${styles['action']} ${buttonsClassName}` }) })] }));
|
|
16
|
+
}
|