diff --git a/src/front/Components/Elements/NavTab/classes.module.scss b/src/front/Components/Elements/NavTab/classes.module.scss new file mode 100644 index 00000000..46b89064 --- /dev/null +++ b/src/front/Components/Elements/NavTab/classes.module.scss @@ -0,0 +1,25 @@ +.root { + nav { + display: flex; + gap: 32px; + .link { + cursor: pointer; + padding: 16px; + text-decoration: none; + border-bottom: 1px solid transparent; + + &:hover { + border-bottom: 1px solid black; + } + + &.active { + color: black; + border-bottom: 1px solid black; + } + } + } + + .content { + margin-top: 24px; + } +} diff --git a/src/front/Components/Elements/NavTab/index.tsx b/src/front/Components/Elements/NavTab/index.tsx new file mode 100644 index 00000000..b7494abe --- /dev/null +++ b/src/front/Components/Elements/NavTab/index.tsx @@ -0,0 +1,43 @@ +import classNames from "classnames"; +import classes from "./classes.module.scss"; +import Link from "next/link"; +import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography"; +import { useRouter } from "next/router"; + +type ITabItem = { + label: string; + path: string; + activePaths?: string[]; +}; + +type IProps = { + items: ITabItem[]; +}; + +export default function NavTab(props: IProps) { + const router = useRouter(); + return ( +
+ +
+ ); +} diff --git a/src/front/Components/Elements/NumberPicker/classes.module.scss b/src/front/Components/Elements/NumberPicker/classes.module.scss new file mode 100644 index 00000000..c3a2af63 --- /dev/null +++ b/src/front/Components/Elements/NumberPicker/classes.module.scss @@ -0,0 +1,2 @@ +.root { +} diff --git a/src/front/Components/Elements/NumberPicker/index.tsx b/src/front/Components/Elements/NumberPicker/index.tsx new file mode 100644 index 00000000..c141ef3d --- /dev/null +++ b/src/front/Components/Elements/NumberPicker/index.tsx @@ -0,0 +1,47 @@ +import { useState } from "react"; +import classes from "./classes.module.scss"; + +type IProps = { + defaultValue: number; + onChange: (value: number) => void; + min?: number; + max?: number; + disabled?: boolean; +}; + +export default function NumberPicker(props: IProps) { + const { defaultValue, onChange, min, max, disabled } = props; + const [value, setValue] = useState(defaultValue); + + const handleChange = (e: React.ChangeEvent) => { + let value = parseInt(e.target.value); + if (min && value < min) { + value = min; + } + if (max && value > max) { + value = max; + } + setValue(value); + onChange(value); + }; + + const handleMinus = () => { + handleChange({ target: { value: value - 1 } } as any); + }; + + const handlePlus = () => { + handleChange({ target: { value: value + 1 } } as any); + }; + + return ( +
+ + + +
+ ); +} diff --git a/src/front/Components/Layouts/Subscription/Subscribe/SubscribeCheckoutTicket/classes.module.scss b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeCheckoutTicket/classes.module.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/front/Components/Layouts/Subscription/Subscribe/SubscribeCheckoutTicket/index.tsx b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeCheckoutTicket/index.tsx new file mode 100644 index 00000000..3b567fcc --- /dev/null +++ b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeCheckoutTicket/index.tsx @@ -0,0 +1,11 @@ +import { EForfeitType } from "../../SubscriptionFacturation"; +import classes from "./classes.module.scss"; + +type IProps = { + forfeitType: EForfeitType; +}; +export default function SubscribeCheckoutTicket(props: IProps) { + const { forfeitType } = props; + + return
; +} diff --git a/src/front/Components/Layouts/Subscription/Subscribe/SubscribeIllimity/classes.module.scss b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeIllimity/classes.module.scss new file mode 100644 index 00000000..80936b83 --- /dev/null +++ b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeIllimity/classes.module.scss @@ -0,0 +1,25 @@ +@import "@Themes/constants.scss"; + +.root { + max-width: 1024px; + display: flex; + gap: 104px; + .left { + display: flex; + gap: 40px; + flex-direction: column; + .infos-container { + display: flex; + flex-direction: column; + gap: 16px; + .line { + display: flex; + gap: 16px; + } + } + } + + .right { + width: 372px; + } +} diff --git a/src/front/Components/Layouts/Subscription/Subscribe/SubscribeIllimity/index.tsx b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeIllimity/index.tsx new file mode 100644 index 00000000..bf7548fa --- /dev/null +++ b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeIllimity/index.tsx @@ -0,0 +1,55 @@ +import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography"; +import classes from "./classes.module.scss"; +import DefaultTemplate from "@Front/Components/LayoutTemplates/DefaultTemplate"; +import NavTab from "@Front/Components/Elements/NavTab"; +import CheckIcon from "@Assets/Icons/check.svg"; +import Image from "next/image"; + +export default function SubscribeIllimity() { + return ( + +
+
+ + + Nombre de collaborateurs illimités + +
+
+ Check icon + + Accompagnement facilité : profitez d'un onboarding individualisé, où nous vous guidons pour une prise en + main optimale de l'application + +
+
+ Check icon + + Support technique : notre équipe support est disponible pour vous assister en cas d’incident + +
+
+ Check icon + + Mises à jour régulières : bénéficiez de mises à jour fréquentes pour profiter des dernières fonctionnalités, + améliorations de sécurité et performances optimisées + +
+
+ Check icon + + Sans limite d'utilisateurs + +
+
+
+
+
+
+ ); +} diff --git a/src/front/Components/Layouts/Subscription/Subscribe/SubscribeStandard/classes.module.scss b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeStandard/classes.module.scss new file mode 100644 index 00000000..80936b83 --- /dev/null +++ b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeStandard/classes.module.scss @@ -0,0 +1,25 @@ +@import "@Themes/constants.scss"; + +.root { + max-width: 1024px; + display: flex; + gap: 104px; + .left { + display: flex; + gap: 40px; + flex-direction: column; + .infos-container { + display: flex; + flex-direction: column; + gap: 16px; + .line { + display: flex; + gap: 16px; + } + } + } + + .right { + width: 372px; + } +} diff --git a/src/front/Components/Layouts/Subscription/Subscribe/SubscribeStandard/index.tsx b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeStandard/index.tsx new file mode 100644 index 00000000..dc9336d9 --- /dev/null +++ b/src/front/Components/Layouts/Subscription/Subscribe/SubscribeStandard/index.tsx @@ -0,0 +1,51 @@ +import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography"; +import classes from "./classes.module.scss"; +import DefaultTemplate from "@Front/Components/LayoutTemplates/DefaultTemplate"; +import NavTab from "@Front/Components/Elements/NavTab"; +import CheckIcon from "@Assets/Icons/check.svg"; +import Image from "next/image"; +import NumberPicker from "@Front/Components/Elements/NumberPicker"; + +export default function SubscribeIllimity() { + return ( + +
+
+ + + Choisissez le nombre de collaborateurs pour votre abonnement + + {}} min={1} /> +
+
+ Check icon + + Accompagnement facilité : profitez d'un onboarding individualisé, où nous vous guidons pour une prise en + main optimale de l'application + +
+
+ Check icon + + Support technique : notre équipe support est disponible pour vous assister en cas d’incident + +
+
+ Check icon + + Mises à jour régulières : bénéficiez de mises à jour fréquentes pour profiter des dernières fonctionnalités, + améliorations de sécurité et performances optimisées + +
+
+
+
+
+
+ ); +} diff --git a/src/front/Components/Layouts/Subscription/SubscriptionFacturation/index.tsx b/src/front/Components/Layouts/Subscription/SubscriptionFacturation/index.tsx index c3b03958..33e3be63 100644 --- a/src/front/Components/Layouts/Subscription/SubscriptionFacturation/index.tsx +++ b/src/front/Components/Layouts/Subscription/SubscriptionFacturation/index.tsx @@ -7,7 +7,7 @@ import Confirm from "@Front/Components/DesignSystem/Modal/Confirm"; import useOpenable from "@Front/Hooks/useOpenable"; import MessageBox from "@Front/Components/Elements/MessageBox"; -enum EForfeitType { +export enum EForfeitType { "standard", "unlimited", } diff --git a/src/pages/subscription/subscribe/illimity/index.tsx b/src/pages/subscription/subscribe/illimity/index.tsx new file mode 100644 index 00000000..5eb8e37a --- /dev/null +++ b/src/pages/subscription/subscribe/illimity/index.tsx @@ -0,0 +1,5 @@ +import SubscribeIllimity from "@Front/Components/Layouts/Subscription/Subscribe/SubscribeIllimity"; + +export default function Route() { + return ; +} diff --git a/src/pages/subscription/subscribe/standard/index.tsx b/src/pages/subscription/subscribe/standard/index.tsx new file mode 100644 index 00000000..ec4481f0 --- /dev/null +++ b/src/pages/subscription/subscribe/standard/index.tsx @@ -0,0 +1,5 @@ +import SubscribeStandard from "@Front/Components/Layouts/Subscription/Subscribe/SubscribeStandard"; + +export default function Route() { + return ; +}