From 8101de209be96a2fd3bceed8d5363f612591fa29 Mon Sep 17 00:00:00 2001 From: gofnnp Date: Sat, 27 Sep 2025 21:20:18 +0400 Subject: [PATCH] develop new components --- package-lock.json | 900 +++++++++++++++++- package.json | 8 +- public/female-portrait.jpg | Bin 0 -> 59934 bytes public/file.svg | 1 - public/globe.svg | 1 - public/heart-in-fire.svg | 213 +++++ public/male-portrait.jpg | Bin 0 -> 86135 bytes public/next.svg | 1 - public/vercel.svg | 1 - public/window.svg | 1 - src/app/globals.css | 10 +- src/components/layout/Header/Header.tsx | 8 +- .../layout/LayoutQuestion/LayoutQuestion.tsx | 59 +- .../templates/Coupon/Coupon.stories.tsx | 80 ++ src/components/templates/Coupon/Coupon.tsx | 70 ++ .../templates/Email/Email.stories.tsx | 104 ++ src/components/templates/Email/Email.tsx | 126 +++ .../templates/Loaders/Loaders.stories.tsx | 108 +++ src/components/templates/Loaders/Loaders.tsx | 67 ++ .../templates/Question/Question.stories.tsx | 174 ---- .../templates/Question/Question.tsx | 45 - .../QuestionDateAnswers.stories.tsx | 127 +++ .../QuestionDateAnswers.tsx | 73 ++ .../QuestionInformation.stories.tsx | 92 ++ .../QuestionInformation.tsx | 51 + .../QuestionRadioAnswers.stories.tsx | 75 ++ .../QuestionRadioAnswers.tsx | 24 + .../QuestionSelectAnswers.stories.tsx | 104 ++ .../QuestionSelectAnswers.tsx | 70 ++ .../SoulmatePortrait.stories.tsx | 40 + .../SoulmatePortrait/SoulmatePortrait.tsx | 69 ++ .../ui/SelectInput/SelectInput.stories.tsx | 81 ++ src/components/ui/SelectInput/SelectInput.tsx | 99 ++ src/components/ui/TextInput/TextInput.tsx | 13 +- src/components/ui/button.tsx | 2 +- src/components/ui/card.tsx | 92 ++ src/components/ui/chart.tsx | 357 +++++++ src/components/ui/select.tsx | 202 ++++ .../BottomActionButton/BottomActionButton.tsx | 6 + .../CircularProgressbar.stories.tsx | 18 + .../CircularProgressbar.tsx | 88 ++ .../CircularProgressbarsList.module.css | 22 + .../CircularProgressbarsList.stories.tsx | 63 ++ .../CircularProgressbarsList.tsx | 169 ++++ src/components/widgets/Coupon/Coupon.tsx | 70 +- .../widgets/DateInput/DateInput.stories.tsx | 120 +++ .../widgets/DateInput/DateInput.tsx | 104 ++ .../PrivacySecurityBanner.stories.tsx | 24 + .../PrivacySecurityBanner.tsx | 48 + .../PrivacyTermsConsent.stories.tsx | 18 + .../PrivacyTermsConsent.tsx | 42 + src/hooks/DOM/useDynamicSize.ts | 43 + src/hooks/useDateInput.ts | 162 ++++ 53 files changed, 4234 insertions(+), 311 deletions(-) create mode 100644 public/female-portrait.jpg delete mode 100644 public/file.svg delete mode 100644 public/globe.svg create mode 100644 public/heart-in-fire.svg create mode 100644 public/male-portrait.jpg delete mode 100644 public/next.svg delete mode 100644 public/vercel.svg delete mode 100644 public/window.svg create mode 100644 src/components/templates/Coupon/Coupon.stories.tsx create mode 100644 src/components/templates/Coupon/Coupon.tsx create mode 100644 src/components/templates/Email/Email.stories.tsx create mode 100644 src/components/templates/Email/Email.tsx create mode 100644 src/components/templates/Loaders/Loaders.stories.tsx create mode 100644 src/components/templates/Loaders/Loaders.tsx delete mode 100644 src/components/templates/Question/Question.stories.tsx delete mode 100644 src/components/templates/Question/Question.tsx create mode 100644 src/components/templates/QuestionDateAnswers/QuestionDateAnswers.stories.tsx create mode 100644 src/components/templates/QuestionDateAnswers/QuestionDateAnswers.tsx create mode 100644 src/components/templates/QuestionInformation/QuestionInformation.stories.tsx create mode 100644 src/components/templates/QuestionInformation/QuestionInformation.tsx create mode 100644 src/components/templates/QuestionRadioAnswers/QuestionRadioAnswers.stories.tsx create mode 100644 src/components/templates/QuestionRadioAnswers/QuestionRadioAnswers.tsx create mode 100644 src/components/templates/QuestionSelectAnswers/QuestionSelectAnswers.stories.tsx create mode 100644 src/components/templates/QuestionSelectAnswers/QuestionSelectAnswers.tsx create mode 100644 src/components/templates/SoulmatePortrait/SoulmatePortrait.stories.tsx create mode 100644 src/components/templates/SoulmatePortrait/SoulmatePortrait.tsx create mode 100644 src/components/ui/SelectInput/SelectInput.stories.tsx create mode 100644 src/components/ui/SelectInput/SelectInput.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/chart.tsx create mode 100644 src/components/ui/select.tsx create mode 100644 src/components/widgets/CircularProgressbar/CircularProgressbar.stories.tsx create mode 100644 src/components/widgets/CircularProgressbar/CircularProgressbar.tsx create mode 100644 src/components/widgets/CircularProgressbarsList/CircularProgressbarsList.module.css create mode 100644 src/components/widgets/CircularProgressbarsList/CircularProgressbarsList.stories.tsx create mode 100644 src/components/widgets/CircularProgressbarsList/CircularProgressbarsList.tsx create mode 100644 src/components/widgets/DateInput/DateInput.stories.tsx create mode 100644 src/components/widgets/DateInput/DateInput.tsx create mode 100644 src/components/widgets/PrivacySecurityBanner/PrivacySecurityBanner.stories.tsx create mode 100644 src/components/widgets/PrivacySecurityBanner/PrivacySecurityBanner.tsx create mode 100644 src/components/widgets/PrivacyTermsConsent/PrivacyTermsConsent.stories.tsx create mode 100644 src/components/widgets/PrivacyTermsConsent/PrivacyTermsConsent.tsx create mode 100644 src/hooks/DOM/useDynamicSize.ts create mode 100644 src/hooks/useDateInput.ts diff --git a/package-lock.json b/package-lock.json index eb818bb..b638682 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,11 @@ "name": "witlab-funnel", "version": "0.1.0", "dependencies": { + "@hookform/resolvers": "^5.2.2", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-label": "^2.1.7", "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-separator": "^1.1.7", "@radix-ui/react-slot": "^1.2.3", "class-variance-authority": "^0.7.1", @@ -18,8 +20,12 @@ "lucide-react": "^0.544.0", "next": "15.5.3", "react": "19.1.0", + "react-circular-progressbar": "^2.2.0", "react-dom": "19.1.0", - "tailwind-merge": "^3.3.1" + "react-hook-form": "^7.63.0", + "recharts": "^2.15.4", + "tailwind-merge": "^3.3.1", + "zod": "^4.1.11" }, "devDependencies": { "@chromatic-com/storybook": "^4.1.1", @@ -310,7 +316,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1011,6 +1016,56 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.4" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@hookform/resolvers": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz", + "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==", + "license": "MIT", + "dependencies": { + "@standard-schema/utils": "^0.3.0" + }, + "peerDependencies": { + "react-hook-form": "^7.55.0" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1900,12 +1955,41 @@ "dev": true, "license": "MIT" }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, "node_modules/@radix-ui/primitive": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", "license": "MIT" }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-checkbox": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", @@ -1936,6 +2020,32 @@ } } }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-compose-refs": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", @@ -1966,6 +2076,106 @@ } } }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-label": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", @@ -1989,6 +2199,62 @@ } } }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-presence": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", @@ -2060,6 +2326,49 @@ } } }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-separator": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", @@ -2101,6 +2410,21 @@ } } }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-use-controllable-state": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", @@ -2138,6 +2462,24 @@ } } }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-use-layout-effect": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", @@ -2168,6 +2510,24 @@ } } }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-use-size": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", @@ -2186,6 +2546,35 @@ } } }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, "node_modules/@rollup/pluginutils": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", @@ -2537,6 +2926,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, "node_modules/@storybook/addon-a11y": { "version": "9.1.6", "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-9.1.6.tgz", @@ -3384,6 +3779,69 @@ "@types/deep-eql": "*" } }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, "node_modules/@types/deep-eql": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", @@ -4553,6 +5011,18 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", @@ -5205,9 +5675,129 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true, "license": "MIT" }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -5287,6 +5877,12 @@ } } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, "node_modules/deep-eql": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", @@ -5370,6 +5966,12 @@ "node": ">=8" } }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -5390,6 +5992,16 @@ "dev": true, "license": "MIT" }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -6169,6 +6781,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -6197,6 +6815,15 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-equals": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.3.2.tgz", + "integrity": "sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-glob": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", @@ -6467,6 +7094,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -6773,6 +7409,15 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -7385,7 +8030,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -7805,6 +8449,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -7816,7 +8466,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -8193,7 +8842,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8654,7 +9302,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -8713,6 +9360,15 @@ "node": ">=0.10.0" } }, + "node_modules/react-circular-progressbar": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.2.0.tgz", + "integrity": "sha512-cgyqEHOzB0nWMZjKfWN3MfSa1LV3OatcDjPz68lchXQUEiBD5O1WsAtoVK4/DSL0B4USR//cTdok4zCBkq8X5g==", + "license": "MIT", + "peerDependencies": { + "react": ">=0.14.0" + } + }, "node_modules/react-docgen-typescript": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.4.0.tgz", @@ -8735,13 +9391,128 @@ "react": "^19.1.0" } }, + "node_modules/react-hook-form": { + "version": "7.63.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.63.0.tgz", + "integrity": "sha512-ZwueDMvUeucovM2VjkCf7zIHcs1aAlDimZu2Hvel5C5907gUzMpm4xCrQXtRzCvsBqFjonB4m3x4LzCFI1ZKWA==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, "license": "MIT" }, + "node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-smooth": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", + "license": "MIT", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/recast": { "version": "0.23.11", "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", @@ -8769,6 +9540,44 @@ "node": ">=0.10.0" } }, + "node_modules/recharts": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", + "integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", + "license": "MIT", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.4", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "license": "MIT", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/recharts/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -9976,7 +10785,6 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "dev": true, "license": "MIT" }, "node_modules/tinybench": { @@ -10411,6 +11219,71 @@ "punycode": "^2.1.0" } }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/vite": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", @@ -11051,6 +11924,15 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.11.tgz", + "integrity": "sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/package.json b/package.json index d0bfb5c..5dcd154 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,11 @@ "build-storybook": "storybook build" }, "dependencies": { + "@hookform/resolvers": "^5.2.2", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-label": "^2.1.7", "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-separator": "^1.1.7", "@radix-ui/react-slot": "^1.2.3", "class-variance-authority": "^0.7.1", @@ -21,8 +23,12 @@ "lucide-react": "^0.544.0", "next": "15.5.3", "react": "19.1.0", + "react-circular-progressbar": "^2.2.0", "react-dom": "19.1.0", - "tailwind-merge": "^3.3.1" + "react-hook-form": "^7.63.0", + "recharts": "^2.15.4", + "tailwind-merge": "^3.3.1", + "zod": "^4.1.11" }, "devDependencies": { "@chromatic-com/storybook": "^4.1.1", diff --git a/public/female-portrait.jpg b/public/female-portrait.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0fcc4a91a1d251d9dfca5dcec7b72dfbcf16ab53 GIT binary patch literal 59934 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 G>i+}T_!G7O literal 0 HcmV?d00001 diff --git a/public/file.svg b/public/file.svg deleted file mode 100644 index 004145c..0000000 --- a/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/heart-in-fire.svg b/public/heart-in-fire.svg new file mode 100644 index 0000000..00c0857 --- /dev/null +++ b/public/heart-in-fire.svg @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/male-portrait.jpg b/public/male-portrait.jpg new file mode 100644 index 0000000000000000000000000000000000000000..43aa969e282f54ddfa6b15405adc0d938cb345b9 GIT binary patch literal 86135 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
    |-$wRL~FcU5zIxiaJu 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�( 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 O2mu2D0Y3l}2mjff2g4Zv literal 0 HcmV?d00001 diff --git a/public/next.svg b/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/window.svg b/public/window.svg deleted file mode 100644 index b2b2a44..0000000 --- a/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/app/globals.css b/src/app/globals.css index dc3d160..a2c2082 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -25,7 +25,9 @@ --color-chart-3: var(--chart-3); --color-chart-2: var(--chart-2); --color-chart-1: var(--chart-1); + --color-chart-secondary: var(--chart-secondary); --color-ring: var(--ring); + --color-placeholder-foreground: var(--placeholder-foreground); --color-input: var(--input); --color-border: var(--border); --color-destructive: var(--destructive); @@ -53,6 +55,7 @@ 0px 0px 0px 0px rgba(59, 130, 246, 0.2); --shadow-black-glow: 0px 8px 15px 0px #00000026, 0px 4px 6px 0px #00000014; --shadow-coupon: 0px 20px 40px 0px #0000004d, 0px 8px 16px 0px #00000033; + --shadow-destructive: 0 0 0 2px rgba(239, 68, 68, 0.2); } :root { @@ -80,7 +83,7 @@ /* Muted - для второстепенного контента */ --muted: oklch(0.97 0 0); /* Светло-серый фон */ - --muted-foreground: oklch(0.59 0.02 260.8); /* #64748B - серый текст */ + --muted-foreground: oklch(0.5544 0.0407 257.42); /* #64748B - серый текст */ /* Accent - для акцентов */ --accent: oklch(0.97 0 0); /* Светло-серый фон */ @@ -94,8 +97,12 @@ /* Border и Input */ --border: oklch(0.9288 0.0126 255.51); /* Светло-серая граница */ + --border-black: oklch(0 0 0); /* Черная граница */ --input: oklch(0.922 0 0); /* Светло-серый фон инпутов */ --ring: oklch(0.6231 0.188 259.81); /* Синий фокус */ + --placeholder-foreground: oklch( + 0.7544 0.0199 282.65 + ); /* #ADAEBC - placeholder текст */ /* Chart цвета - можно оставить как есть или переопределить */ --chart-1: oklch(0.646 0.222 41.116); @@ -103,6 +110,7 @@ --chart-3: oklch(0.398 0.07 227.392); --chart-4: oklch(0.828 0.189 84.429); --chart-5: oklch(0.769 0.188 70.08); + --chart-secondary: oklch(0.881 0.0536 260.65) /* #C4D9FC */; /* Sidebar - можно оставить как есть */ --sidebar: oklch(0.985 0 0); diff --git a/src/components/layout/Header/Header.tsx b/src/components/layout/Header/Header.tsx index 0a1525c..dad9eb2 100644 --- a/src/components/layout/Header/Header.tsx +++ b/src/components/layout/Header/Header.tsx @@ -22,9 +22,11 @@ function Header({ className, progressProps, onBack, ...props }: HeaderProps) { -
    - -
    + {progressProps && ( +
    + +
    + )} ); } diff --git a/src/components/layout/LayoutQuestion/LayoutQuestion.tsx b/src/components/layout/LayoutQuestion/LayoutQuestion.tsx index f7aac4d..b6b9edb 100644 --- a/src/components/layout/LayoutQuestion/LayoutQuestion.tsx +++ b/src/components/layout/LayoutQuestion/LayoutQuestion.tsx @@ -5,19 +5,15 @@ import { Header } from "@/components/layout/Header/Header"; import Typography, { TypographyProps, } from "@/components/ui/Typography/Typography"; -import { - BottomActionButton, - BottomActionButtonProps, -} from "@/components/widgets/BottomActionButton/BottomActionButton"; -import { useEffect, useRef, useState } from "react"; export interface LayoutQuestionProps extends Omit, "title" | "content"> { headerProps?: React.ComponentProps; - title: TypographyProps<"h2">; - subtitle: TypographyProps<"p">; + title?: TypographyProps<"h2">; + subtitle?: TypographyProps<"p">; children: React.ReactNode; - bottomActionButtonProps?: BottomActionButtonProps; + contentProps?: React.ComponentProps<"div">; + childrenWrapperProps?: React.ComponentProps<"div">; } function LayoutQuestion({ @@ -26,32 +22,20 @@ function LayoutQuestion({ title, subtitle, children, - bottomActionButtonProps, + contentProps, + childrenWrapperProps, ...props }: LayoutQuestionProps) { - const bottomActionButtonRef = useRef(null); - const [bottomActionButtonHeight, setBottomActionButtonHeight] = - useState(132); - - useEffect(() => { - if (bottomActionButtonRef.current) { - console.log(bottomActionButtonRef.current.clientHeight); - - setBottomActionButtonHeight(bottomActionButtonRef.current.clientHeight); - } - }, [bottomActionButtonProps]); - return ( -
    +
    -
    +
    {title && ( )} - {children} - {bottomActionButtonProps && ( - - )} + +
    + {children} +
    ); diff --git a/src/components/templates/Coupon/Coupon.stories.tsx b/src/components/templates/Coupon/Coupon.stories.tsx new file mode 100644 index 0000000..9700e3a --- /dev/null +++ b/src/components/templates/Coupon/Coupon.stories.tsx @@ -0,0 +1,80 @@ +import { Meta, StoryObj } from "@storybook/nextjs-vite"; +import { Coupon } from "./Coupon"; +import { fn } from "storybook/test"; +import { + LayoutQuestion, + LayoutQuestionProps, +} from "@/components/layout/LayoutQuestion/LayoutQuestion"; + +const layoutQuestionProps: Omit = { + headerProps: { + onBack: fn(), + }, + title: { + children: "Тебе повезло!", + align: "center", + }, + subtitle: { + children: "Ты получил специальную эксклюзивную скидку на 94%", + align: "center", + }, +}; + +/** Reusable Coupon page Component */ +const meta: Meta = { + title: "Templates/Coupon", + component: Coupon, + tags: ["autodocs"], + parameters: { + layout: "fullscreen", + }, + args: { + couponProps: { + title: { + children: "Special Offer", + }, + offer: { + title: { + children: "94% OFF", + }, + description: { + children: "Одноразовая эксклюзивная скидка", + }, + }, + promoCode: { + children: "HAIR50", + }, + footer: { + children: ( + <> + Скопируйте или нажмите Continue + + ), + }, + onCopyPromoCode: fn(), + }, + bottomActionButtonProps: { + actionButtonProps: { + children: "Continue", + onClick: fn(), + }, + }, + }, + argTypes: { + bottomActionButtonProps: { + control: { type: "object" }, + }, + }, + render: (args) => { + return ( + + + + ); + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default = {} satisfies Story; diff --git a/src/components/templates/Coupon/Coupon.tsx b/src/components/templates/Coupon/Coupon.tsx new file mode 100644 index 0000000..3b3b7d0 --- /dev/null +++ b/src/components/templates/Coupon/Coupon.tsx @@ -0,0 +1,70 @@ +"use client"; + +import { + BottomActionButton, + BottomActionButtonProps, +} from "@/components/widgets/BottomActionButton/BottomActionButton"; +import { Coupon as CouponWidget } from "@/components/widgets/Coupon/Coupon"; +import { useDynamicSize } from "@/hooks/DOM/useDynamicSize"; +import { cn } from "@/lib/utils"; + +interface CouponProps extends Omit, "title"> { + couponProps: React.ComponentProps; + bottomActionButtonProps?: BottomActionButtonProps; +} + +function Coupon({ + couponProps, + bottomActionButtonProps, + ...props +}: CouponProps) { + const { + height: bottomActionButtonHeight, + elementRef: bottomActionButtonRef, + } = useDynamicSize({ + defaultHeight: 132, + }); + + return ( +
    + {/* {title && ( + + )} + {subtitle && ( + + )} */} + + {bottomActionButtonProps && ( + + )} +
    + ); +} + +export { Coupon }; diff --git a/src/components/templates/Email/Email.stories.tsx b/src/components/templates/Email/Email.stories.tsx new file mode 100644 index 0000000..5e3b30d --- /dev/null +++ b/src/components/templates/Email/Email.stories.tsx @@ -0,0 +1,104 @@ +import { Meta, StoryObj } from "@storybook/nextjs-vite"; +import { Email } from "./Email"; +import { fn } from "storybook/test"; +import { + LayoutQuestion, + LayoutQuestionProps, +} from "@/components/layout/LayoutQuestion/LayoutQuestion"; +import Image from "next/image"; + +const layoutQuestionProps: Omit = { + headerProps: { + onBack: fn(), + }, + title: { + children: "Портрет твоей второй половинки готов! Куда нам его отправить?", + align: "center", + }, + contentProps: { + className: "pt-0!", + }, +}; + +/** Reusable Email page Component */ +const meta: Meta = { + title: "Templates/Email", + component: Email, + tags: ["autodocs"], + parameters: { + layout: "fullscreen", + }, + args: { + textInputProps: { + label: "Email", + placeholder: "Enter your Email", + type: "email", + onChange: fn(), + }, + bottomActionButtonProps: { + actionButtonProps: { + children: "Continue", + onClick: fn(), + }, + }, + image: ( + male portrait + ), + privacyTermsConsentProps: { + privacyPolicy: { + children: "Privacy Policy", + href: "#privacy-policy", + }, + termsOfUse: { + children: "Terms of use", + href: "#terms-of-use", + }, + }, + privacySecurityBannerProps: { + text: { + children: + "Мы не передаем личную информацию, она остаётся в безопасности и под вашим контролем.", + }, + }, + }, + argTypes: { + textInputProps: { + control: { type: "object" }, + }, + bottomActionButtonProps: { + control: { type: "object" }, + }, + }, + render: (args) => { + return ( + + + + ); + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default = {} satisfies Story; + +export const FemalePortrait = { + args: { + image: ( + female portrait + ), + }, +} satisfies Story; diff --git a/src/components/templates/Email/Email.tsx b/src/components/templates/Email/Email.tsx new file mode 100644 index 0000000..b2f44cf --- /dev/null +++ b/src/components/templates/Email/Email.tsx @@ -0,0 +1,126 @@ +"use client"; + +import { TextInput } from "@/components/ui/TextInput/TextInput"; +import { + BottomActionButton, + BottomActionButtonProps, +} from "@/components/widgets/BottomActionButton/BottomActionButton"; +import { useDynamicSize } from "@/hooks/DOM/useDynamicSize"; +import { cn } from "@/lib/utils"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import { useEffect, useState } from "react"; +import PrivacyTermsConsent from "@/components/widgets/PrivacyTermsConsent/PrivacyTermsConsent"; +import PrivacySecurityBanner from "@/components/widgets/PrivacySecurityBanner/PrivacySecurityBanner"; + +const formSchema = z.object({ + email: z.email({ + message: "Please enter a valid email address", + }), +}); + +interface EmailProps extends Omit, "title"> { + textInputProps: React.ComponentProps; + bottomActionButtonProps?: BottomActionButtonProps; + image?: React.ReactNode; + privacyTermsConsentProps?: React.ComponentProps; + privacySecurityBannerProps?: React.ComponentProps< + typeof PrivacySecurityBanner + >; +} + +function Email({ + textInputProps, + bottomActionButtonProps, + image, + privacyTermsConsentProps, + privacySecurityBannerProps, + ...props +}: EmailProps) { + const { + height: bottomActionButtonHeight, + elementRef: bottomActionButtonRef, + } = useDynamicSize({ + defaultHeight: 132, + }); + const [isTouched, setIsTouched] = useState(false); + + const form = useForm>({ + resolver: zodResolver(formSchema), + defaultValues: { + email: String(textInputProps.value || ""), + }, + }); + + useEffect(() => { + form.setValue("email", String(textInputProps.value || "")); + }, [textInputProps.value, form]); + + const handleChange = (e: React.ChangeEvent) => { + const value = e.target.value; + form.setValue("email", value); + form.trigger("email"); + textInputProps.onChange?.(e); + }; + + const isFormValid = form.formState.isValid && form.getValues("email"); + + return ( +
    + { + setIsTouched(true); + form.trigger("email"); + }} + aria-invalid={isTouched && !!form.formState.errors.email} + aria-errormessage={ + isTouched ? form.formState.errors.email?.message : undefined + } + /> + {image} + {privacySecurityBannerProps && ( + + )} + {bottomActionButtonProps && ( + + ) + } + /> + )} +
    + ); +} + +export { Email }; diff --git a/src/components/templates/Loaders/Loaders.stories.tsx b/src/components/templates/Loaders/Loaders.stories.tsx new file mode 100644 index 0000000..214ad2c --- /dev/null +++ b/src/components/templates/Loaders/Loaders.stories.tsx @@ -0,0 +1,108 @@ +import { Meta, StoryObj } from "@storybook/nextjs-vite"; +import { Loaders } from "./Loaders"; +import { fn } from "storybook/test"; +import { + LayoutQuestion, + LayoutQuestionProps, +} from "@/components/layout/LayoutQuestion/LayoutQuestion"; + +const layoutQuestionProps: Omit = { + headerProps: { + onBack: fn(), + }, + title: { + children: "Создаем портрет твоей второй половинки.", + align: "center", + }, + contentProps: { + className: "pt-5", + }, + childrenWrapperProps: { + className: "mt-[57px]", + }, +}; + +/** Reusable Loaders page Component */ +const meta: Meta = { + title: "Templates/Loaders", + component: Loaders, + tags: ["autodocs"], + parameters: { + layout: "fullscreen", + }, + args: { + circularProgressbarsListProps: { + progressbarItems: [ + { + processing: { + title: { children: "Анализ твоих ответов" }, + text: { + children: "Processing...", + }, + }, + completed: { + title: { children: "Анализ твоих ответов" }, + text: { + children: "Complete", + }, + }, + }, + { + processing: { + title: { children: "Portrait of the Soulmate" }, + text: { + children: "Processing...", + }, + }, + completed: { + title: { children: "Portrait of the Soulmate" }, + text: { + children: "Complete", + }, + }, + }, + { + processing: { + title: { children: "Portrait of the Soulmate" }, + text: { + children: "Processing...", + }, + }, + completed: { + title: { children: "Connection Insights" }, + text: { + children: "Complete", + }, + }, + }, + ], + onAnimationEnd: fn(), + }, + bottomActionButtonProps: { + actionButtonProps: { + children: "Continue", + onClick: fn(), + }, + }, + }, + argTypes: { + circularProgressbarsListProps: { + control: { type: "object" }, + }, + bottomActionButtonProps: { + control: { type: "object" }, + }, + }, + render: (args) => { + return ( + + + + ); + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default = {} satisfies Story; diff --git a/src/components/templates/Loaders/Loaders.tsx b/src/components/templates/Loaders/Loaders.tsx new file mode 100644 index 0000000..d19890a --- /dev/null +++ b/src/components/templates/Loaders/Loaders.tsx @@ -0,0 +1,67 @@ +"use client"; + +import { + BottomActionButton, + BottomActionButtonProps, +} from "@/components/widgets/BottomActionButton/BottomActionButton"; +import CircularProgressbarsList from "@/components/widgets/CircularProgressbarsList/CircularProgressbarsList"; +import { useDynamicSize } from "@/hooks/DOM/useDynamicSize"; +import { cn } from "@/lib/utils"; +import { useState } from "react"; + +interface LoadersProps extends Omit, "title"> { + circularProgressbarsListProps: React.ComponentProps< + typeof CircularProgressbarsList + >; + bottomActionButtonProps?: BottomActionButtonProps; +} + +function Loaders({ + circularProgressbarsListProps, + bottomActionButtonProps, + ...props +}: LoadersProps) { + const { + height: bottomActionButtonHeight, + elementRef: bottomActionButtonRef, + } = useDynamicSize({ + defaultHeight: 132, + }); + const [isVisibleButton, setIsVisibleButton] = useState(false); + + const onAnimationEnd = () => { + setIsVisibleButton(true); + circularProgressbarsListProps.onAnimationEnd?.(); + }; + + return ( +
    + + {bottomActionButtonProps && ( + + )} +
    + ); +} + +export { Loaders }; diff --git a/src/components/templates/Question/Question.stories.tsx b/src/components/templates/Question/Question.stories.tsx deleted file mode 100644 index 28ff678..0000000 --- a/src/components/templates/Question/Question.stories.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import { Meta, StoryObj } from "@storybook/nextjs-vite"; -import { Question } from "./Question"; -import { fn } from "storybook/test"; -import { useState } from "react"; -import { MainButtonProps } from "@/components/ui/MainButton/MainButton"; -import { SelectAnswersListProps } from "@/components/widgets/SelectAnswersList/SelectAnswersList"; - -/** Reusable Question page Component */ -const meta: Meta = { - title: "Templates/Question", - component: Question, - tags: ["autodocs"], - parameters: { - layout: "fullscreen", - }, - args: { - layoutQuestionProps: { - headerProps: { - progressProps: { - value: (5 / 15) * 100, - label: "5 of 15", - className: "max-w-[198px]", - }, - onBack: fn(), - }, - title: { - children: "Which best represents your hair loss and goals?", - }, - subtitle: { - children: "Let's personalize your hair care journey", - }, - }, - contentType: "radio-answers-list", - }, - argTypes: { - contentType: { - control: { type: "select" }, - options: ["radio-answers-list", "select-answers-list"], - }, - content: { - control: { type: "object" }, - }, - }, -}; - -export default meta; -type Story = StoryObj; - -export const Default = {} satisfies Story; - -export const RadioAnswers = { - args: { - contentType: "radio-answers-list", - content: { - answers: [ - { - children: "FEMALE", - emoji: "👩", - id: "female", - }, - { - children: "MALE", - emoji: "👨", - isCheckbox: true, - id: "male", - }, - { - children: "Receding hairline, want to slow its progress", - id: "without-emoji", - }, - ], - activeAnswer: { - children: "MALE", - emoji: "👨", - isCheckbox: true, - id: "male", - }, - onAnswerClick: fn(), - onChangeSelectedAnswer: fn(), - }, - }, -} satisfies Story; - -export const SelectAnswers = { - args: { - contentType: "select-answers-list", - content: { - answers: [ - { - children: "Receding hairline, want to slow its progress", - isCheckbox: true, - id: "hairline", - }, - { - children: "Experiencing hair loss, exploring", - isCheckbox: true, - id: "exploring", - }, - { - children: "Experiencing hair loss, ready to start", - isCheckbox: true, - id: "ready-to-start", - }, - { - children: "Experiencing hair loss, ready to start", - id: "ready-to-start-text", - }, - { - children: "Experiencing hair loss, ready to start", - emoji: "👩🏼", - id: "ready-to-start-emoji", - }, - { - children: "Experiencing hair loss, ready to start", - emoji: "👩🏼", - isCheckbox: true, - id: "ready-to-start-emoji-checkbox", - }, - ], - activeAnswers: [ - { - children: "Experiencing hair loss, ready to start", - isCheckbox: true, - id: "ready-to-start", - }, - { - children: "Experiencing hair loss, ready to start", - emoji: "👩🏼", - id: "ready-to-start-emoji", - }, - ], - onChangeSelectedAnswers: fn(), - onAnswerClick: fn(), - }, - }, - render: (args) => { - const { layoutQuestionProps, content, ...rest } = args; - const [selectedAnswers, setSelectedAnswers] = useState< - MainButtonProps[] | null - >((content as SelectAnswersListProps).activeAnswers); - - const onActionButtonClick = () => { - fn()(selectedAnswers); - }; - - const layoutQuestionArgs = { - ...layoutQuestionProps, - bottomActionButtonProps: { - actionButtonProps: { - children: "Continue", - onClick: onActionButtonClick, - }, - }, - }; - - const onChangeSelectedAnswers = (answers: MainButtonProps[] | null) => { - setSelectedAnswers(answers); - fn()(answers); - }; - - const contentArgs = { - ...content, - onChangeSelectedAnswers, - }; - - return ( - - ); - }, -} satisfies Story; diff --git a/src/components/templates/Question/Question.tsx b/src/components/templates/Question/Question.tsx deleted file mode 100644 index b500478..0000000 --- a/src/components/templates/Question/Question.tsx +++ /dev/null @@ -1,45 +0,0 @@ -"use client"; - -import { - RadioAnswersList, - RadioAnswersListProps, -} from "@/components/widgets/RadioAnswersList/RadioAnswersList"; -import { - LayoutQuestion, - LayoutQuestionProps, -} from "@/components/layout/LayoutQuestion/LayoutQuestion"; -import { - SelectAnswersList, - SelectAnswersListProps, -} from "@/components/widgets/SelectAnswersList/SelectAnswersList"; - -interface QuestionProps - extends Omit, "title" | "content"> { - layoutQuestionProps: Omit; - content: RadioAnswersListProps | SelectAnswersListProps; - contentType: "radio-answers-list" | "select-answers-list"; -} - -function Question({ - layoutQuestionProps, - content, - contentType, - ...props -}: QuestionProps) { - return ( - - {content && ( -
    - {contentType === "radio-answers-list" && ( - - )} - {contentType === "select-answers-list" && ( - - )} -
    - )} -
    - ); -} - -export { Question }; diff --git a/src/components/templates/QuestionDateAnswers/QuestionDateAnswers.stories.tsx b/src/components/templates/QuestionDateAnswers/QuestionDateAnswers.stories.tsx new file mode 100644 index 0000000..ae2ac58 --- /dev/null +++ b/src/components/templates/QuestionDateAnswers/QuestionDateAnswers.stories.tsx @@ -0,0 +1,127 @@ +import { Meta, StoryObj } from "@storybook/nextjs-vite"; +import { QuestionDateAnswers } from "./QuestionDateAnswers"; +import { fn } from "storybook/test"; +import { LayoutQuestion } from "@/components/layout/LayoutQuestion/LayoutQuestion"; + +const layoutQuestionProps = { + headerProps: { + progressProps: { + value: (5 / 15) * 100, + label: "5 of 15", + className: "max-w-[198px]", + }, + onBack: fn(), + }, + title: { + children: "When is your birthday?", + }, + subtitle: { + children: "We need this information to personalize your experience", + }, +}; + +/** Reusable QuestionDateAnswers page Component */ +const meta: Meta = { + title: "Templates/QuestionDateAnswers", + component: QuestionDateAnswers, + tags: ["autodocs"], + parameters: { + layout: "fullscreen", + }, + args: { + content: { + value: null, + onChange: fn(), + maxYear: new Date().getFullYear() - 11, + yearsRange: 100, + locale: "en", + }, + bottomActionButtonProps: { + actionButtonProps: { + children: "Continue", + onClick: fn(), + }, + }, + }, + argTypes: { + content: { + control: { type: "object" }, + }, + bottomActionButtonProps: { + control: { type: "object" }, + }, + }, + render: (args) => { + return ( + + + + ); + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default = {} satisfies Story; + +export const WithInitialValue = { + args: { + content: { + value: "1990-05-15", + onChange: fn(), + maxYear: new Date().getFullYear() - 11, + yearsRange: 100, + locale: "en", + }, + }, +} satisfies Story; + +export const WithError = { + args: { + content: { + value: "", + onChange: fn(), + maxYear: new Date().getFullYear() - 11, + yearsRange: 100, + locale: "en", + }, + }, +} satisfies Story; + +export const WithCustomLocale = { + args: { + content: { + value: null, + onChange: fn(), + maxYear: new Date().getFullYear() - 11, + yearsRange: 100, + locale: "ru", + }, + }, +} satisfies Story; + +export const WithCustomYearRange = { + args: { + content: { + value: null, + onChange: fn(), + maxYear: 2000, + yearsRange: 50, + locale: "en", + }, + }, +} satisfies Story; + +export const WithoutBottomButton = { + args: { + content: { + value: null, + onChange: fn(), + maxYear: new Date().getFullYear() - 11, + yearsRange: 100, + locale: "en", + }, + bottomActionButtonProps: undefined, + }, +} satisfies Story; diff --git a/src/components/templates/QuestionDateAnswers/QuestionDateAnswers.tsx b/src/components/templates/QuestionDateAnswers/QuestionDateAnswers.tsx new file mode 100644 index 0000000..bf7c754 --- /dev/null +++ b/src/components/templates/QuestionDateAnswers/QuestionDateAnswers.tsx @@ -0,0 +1,73 @@ +"use client"; + +import { + BottomActionButton, + BottomActionButtonProps, +} from "@/components/widgets/BottomActionButton/BottomActionButton"; +import DateInput, { + DateInputProps, +} from "@/components/widgets/DateInput/DateInput"; +import { cn } from "@/lib/utils"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import { useEffect } from "react"; + +const formSchema = z.object({ + date: z.string().min(1, { + message: "Please select a date", + }), +}); + +interface QuestionDateAnswersProps + extends Omit, "content"> { + content: DateInputProps; + bottomActionButtonProps?: BottomActionButtonProps; +} + +function QuestionDateAnswers({ + content, + bottomActionButtonProps, + ...props +}: QuestionDateAnswersProps) { + const form = useForm>({ + resolver: zodResolver(formSchema), + defaultValues: { + date: content.value || "", + }, + }); + + useEffect(() => { + form.setValue("date", content.value || ""); + }, [content.value, form]); + + const handleChange = (value: string | null) => { + form.setValue("date", value || ""); + form.trigger("date"); + content.onChange?.(value); + }; + + const isFormValid = form.formState.isValid && form.getValues("date"); + + return ( +
    + + {bottomActionButtonProps && ( + + )} +
    + ); +} + +export { QuestionDateAnswers }; diff --git a/src/components/templates/QuestionInformation/QuestionInformation.stories.tsx b/src/components/templates/QuestionInformation/QuestionInformation.stories.tsx new file mode 100644 index 0000000..764c958 --- /dev/null +++ b/src/components/templates/QuestionInformation/QuestionInformation.stories.tsx @@ -0,0 +1,92 @@ +import { Meta, StoryObj } from "@storybook/nextjs-vite"; +import { QuestionInformation } from "./QuestionInformation"; +import { fn } from "storybook/test"; +import { LayoutQuestion } from "@/components/layout/LayoutQuestion/LayoutQuestion"; +import Typography from "@/components/ui/Typography/Typography"; +import Image from "next/image"; + +const layoutQuestionProps = { + headerProps: { + progressProps: { + value: (3 / 15) * 100, + label: "3 of 15", + className: "max-w-[198px]", + }, + onBack: fn(), + }, +}; + +/** Reusable QuestionInformation page Component */ +const meta: Meta = { + title: "Templates/QuestionInformation", + component: QuestionInformation, + tags: ["autodocs"], + parameters: { + layout: "fullscreen", + }, + args: { + image: ( + Information + ), + text: ( + + По нашей статистике 51 % женщин Овнов доверяются эмоциям. Но + одной чувствительности мало. Мы покажем, какие качества второй половинки + дадут тепло и уверенность, и изобразим её портрет. + + ), + bottomActionButtonProps: { + actionButtonProps: { + children: "Continue", + onClick: fn(), + }, + }, + }, + argTypes: { + image: { + control: { type: "object" }, + }, + text: { + control: { type: "object" }, + }, + bottomActionButtonProps: { + control: { type: "object" }, + }, + }, + render: (args) => { + return ( + + + + ); + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default = {} satisfies Story; + +export const WithoutImage = { + args: { + image: undefined, + }, +} satisfies Story; + +export const WithoutText = { + args: { + text: undefined, + }, +} satisfies Story; + +export const WithoutBottomButton = { + args: { + bottomActionButtonProps: undefined, + }, +} satisfies Story; diff --git a/src/components/templates/QuestionInformation/QuestionInformation.tsx b/src/components/templates/QuestionInformation/QuestionInformation.tsx new file mode 100644 index 0000000..b352f2c --- /dev/null +++ b/src/components/templates/QuestionInformation/QuestionInformation.tsx @@ -0,0 +1,51 @@ +"use client"; + +import { + BottomActionButton, + BottomActionButtonProps, +} from "@/components/widgets/BottomActionButton/BottomActionButton"; +import { useDynamicSize } from "@/hooks/DOM/useDynamicSize"; +import { cn } from "@/lib/utils"; + +interface QuestionInformationProps extends React.ComponentProps<"div"> { + image?: React.ReactNode; + text?: React.ReactNode; + bottomActionButtonProps?: BottomActionButtonProps; +} + +function QuestionInformation({ + image, + text, + bottomActionButtonProps, + ...props +}: QuestionInformationProps) { + const { + height: bottomActionButtonHeight, + elementRef: bottomActionButtonRef, + } = useDynamicSize({ + defaultHeight: 132, + }); + + return ( +
    + {image} + {text} + {bottomActionButtonProps && ( + + )} +
    + ); +} + +export { QuestionInformation }; diff --git a/src/components/templates/QuestionRadioAnswers/QuestionRadioAnswers.stories.tsx b/src/components/templates/QuestionRadioAnswers/QuestionRadioAnswers.stories.tsx new file mode 100644 index 0000000..8f28ef4 --- /dev/null +++ b/src/components/templates/QuestionRadioAnswers/QuestionRadioAnswers.stories.tsx @@ -0,0 +1,75 @@ +import { Meta, StoryObj } from "@storybook/nextjs-vite"; +import { QuestionRadioAnswers } from "./QuestionRadioAnswers"; +import { fn } from "storybook/test"; +import { LayoutQuestion } from "@/components/layout/LayoutQuestion/LayoutQuestion"; + +const layoutQuestionProps = { + headerProps: { + progressProps: { + value: (5 / 15) * 100, + label: "5 of 15", + className: "max-w-[198px]", + }, + onBack: fn(), + }, + title: { + children: "Which best represents your hair loss and goals?", + }, + subtitle: { + children: "Let's personalize your hair care journey", + }, +}; + +/** Reusable QuestionRadioAnswers page Component */ +const meta: Meta = { + title: "Templates/QuestionRadioAnswers", + component: QuestionRadioAnswers, + tags: ["autodocs"], + parameters: { + layout: "fullscreen", + }, + args: { + content: { + answers: [ + { + children: "FEMALE", + emoji: "👩", + id: "female", + }, + { + children: "MALE", + emoji: "👨", + isCheckbox: true, + id: "male", + }, + { + children: "Receding hairline, want to slow its progress", + id: "without-emoji", + }, + ], + activeAnswer: { + children: "MALE", + emoji: "👨", + isCheckbox: true, + id: "male", + }, + onAnswerClick: fn(), + onChangeSelectedAnswer: fn(), + }, + }, + argTypes: { + content: { + control: { type: "object" }, + }, + }, + render: (args) => ( + + + + ), +}; + +export default meta; +type Story = StoryObj; + +export const Default = {} satisfies Story; diff --git a/src/components/templates/QuestionRadioAnswers/QuestionRadioAnswers.tsx b/src/components/templates/QuestionRadioAnswers/QuestionRadioAnswers.tsx new file mode 100644 index 0000000..a57eb12 --- /dev/null +++ b/src/components/templates/QuestionRadioAnswers/QuestionRadioAnswers.tsx @@ -0,0 +1,24 @@ +"use client"; + +import { + RadioAnswersList, + RadioAnswersListProps, +} from "@/components/widgets/RadioAnswersList/RadioAnswersList"; + +interface QuestionRadioAnswersProps + extends Omit, "content"> { + content: RadioAnswersListProps; +} + +function QuestionRadioAnswers({ + content, + ...props +}: QuestionRadioAnswersProps) { + return ( +
    + +
    + ); +} + +export { QuestionRadioAnswers }; diff --git a/src/components/templates/QuestionSelectAnswers/QuestionSelectAnswers.stories.tsx b/src/components/templates/QuestionSelectAnswers/QuestionSelectAnswers.stories.tsx new file mode 100644 index 0000000..9625bf8 --- /dev/null +++ b/src/components/templates/QuestionSelectAnswers/QuestionSelectAnswers.stories.tsx @@ -0,0 +1,104 @@ +import { Meta, StoryObj } from "@storybook/nextjs-vite"; +import { QuestionSelectAnswers } from "./QuestionSelectAnswers"; +import { fn } from "storybook/test"; +import { LayoutQuestion } from "@/components/layout/LayoutQuestion/LayoutQuestion"; + +const layoutQuestionProps = { + headerProps: { + progressProps: { + value: (5 / 15) * 100, + label: "5 of 15", + className: "max-w-[198px]", + }, + onBack: fn(), + }, + title: { + children: "Which best represents your hair loss and goals?", + }, + subtitle: { + children: "Let's personalize your hair care journey", + }, +}; + +/** Reusable QuestionSelectAnswers page Component */ +const meta: Meta = { + title: "Templates/QuestionSelectAnswers", + component: QuestionSelectAnswers, + tags: ["autodocs"], + parameters: { + layout: "fullscreen", + }, + args: { + content: { + answers: [ + { + children: "Receding hairline, want to slow its progress", + isCheckbox: true, + id: "hairline", + }, + { + children: "Experiencing hair loss, exploring", + isCheckbox: true, + id: "exploring", + }, + { + children: "Experiencing hair loss, ready to start", + isCheckbox: true, + id: "ready-to-start", + }, + { + children: "Experiencing hair loss, ready to start", + id: "ready-to-start-text", + }, + { + children: "Experiencing hair loss, ready to start", + emoji: "👩🏼", + id: "ready-to-start-emoji", + }, + { + children: "Experiencing hair loss, ready to start", + emoji: "👩🏼", + isCheckbox: true, + id: "ready-to-start-emoji-checkbox", + }, + ], + activeAnswers: [ + { + children: "Experiencing hair loss, ready to start", + isCheckbox: true, + id: "ready-to-start", + }, + { + children: "Experiencing hair loss, ready to start", + emoji: "👩🏼", + id: "ready-to-start-emoji", + }, + ], + onChangeSelectedAnswers: fn(), + onAnswerClick: fn(), + }, + bottomActionButtonProps: { + actionButtonProps: { + children: "Continue", + onClick: fn(), + }, + }, + }, + argTypes: { + content: { + control: { type: "object" }, + }, + }, + render: (args) => { + return ( + + + + ); + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default = {} satisfies Story; diff --git a/src/components/templates/QuestionSelectAnswers/QuestionSelectAnswers.tsx b/src/components/templates/QuestionSelectAnswers/QuestionSelectAnswers.tsx new file mode 100644 index 0000000..fae7fed --- /dev/null +++ b/src/components/templates/QuestionSelectAnswers/QuestionSelectAnswers.tsx @@ -0,0 +1,70 @@ +"use client"; + +import { MainButtonProps } from "@/components/ui/MainButton/MainButton"; +import { + BottomActionButton, + BottomActionButtonProps, +} from "@/components/widgets/BottomActionButton/BottomActionButton"; +import { + SelectAnswersList, + SelectAnswersListProps, +} from "@/components/widgets/SelectAnswersList/SelectAnswersList"; +import { useDynamicSize } from "@/hooks/DOM/useDynamicSize"; +import { cn } from "@/lib/utils"; +import { useState } from "react"; + +interface QuestionSelectAnswersProps + extends Omit, "content"> { + content: SelectAnswersListProps; + bottomActionButtonProps?: BottomActionButtonProps; +} + +function QuestionSelectAnswers({ + content, + bottomActionButtonProps, + ...props +}: QuestionSelectAnswersProps) { + const { + height: bottomActionButtonHeight, + elementRef: bottomActionButtonRef, + } = useDynamicSize({ + defaultHeight: 132, + }); + const [selectedAnswers, setSelectedAnswers] = useState< + MainButtonProps[] | null + >(content.activeAnswers); + + const handleChangeSelectedAnswers = (answers: MainButtonProps[] | null) => { + setSelectedAnswers(answers); + content.onChangeSelectedAnswers?.(answers); + }; + + return ( +
    + + {bottomActionButtonProps && ( + + )} +
    + ); +} + +export { QuestionSelectAnswers }; diff --git a/src/components/templates/SoulmatePortrait/SoulmatePortrait.stories.tsx b/src/components/templates/SoulmatePortrait/SoulmatePortrait.stories.tsx new file mode 100644 index 0000000..eeff31e --- /dev/null +++ b/src/components/templates/SoulmatePortrait/SoulmatePortrait.stories.tsx @@ -0,0 +1,40 @@ +import { Meta, StoryObj } from "@storybook/nextjs-vite"; +import SoulmatePortrait from "./SoulmatePortrait"; +import { fn } from "storybook/test"; + +/** Reusable SoulmatePortrait page Component */ +const meta: Meta = { + title: "Templates/SoulmatePortrait", + component: SoulmatePortrait, + tags: ["autodocs"], + parameters: { + layout: "fullscreen", + }, + args: { + bottomActionButtonProps: { + actionButtonProps: { + children: "Continue", + onClick: fn(), + }, + }, + privacyTermsConsentProps: { + privacyPolicy: { + children: "Privacy Policy", + href: "#privacy-policy", + }, + termsOfUse: { + children: "Terms of use", + href: "#terms-of-use", + }, + }, + title: { + children: "Soulmate Portrait", + }, + }, + argTypes: {}, +}; + +export default meta; +type Story = StoryObj; + +export const Default = {} satisfies Story; diff --git a/src/components/templates/SoulmatePortrait/SoulmatePortrait.tsx b/src/components/templates/SoulmatePortrait/SoulmatePortrait.tsx new file mode 100644 index 0000000..f16902e --- /dev/null +++ b/src/components/templates/SoulmatePortrait/SoulmatePortrait.tsx @@ -0,0 +1,69 @@ +import Typography, { + TypographyProps, +} from "@/components/ui/Typography/Typography"; +import { BottomActionButton } from "@/components/widgets/BottomActionButton/BottomActionButton"; +import PrivacyTermsConsent from "@/components/widgets/PrivacyTermsConsent/PrivacyTermsConsent"; +import { useDynamicSize } from "@/hooks/DOM/useDynamicSize"; +import { cn } from "@/lib/utils"; + +export interface SoulmatePortraitProps + extends Omit, "title"> { + bottomActionButtonProps?: React.ComponentProps; + privacyTermsConsentProps?: React.ComponentProps; + title?: TypographyProps<"h2">; +} + +export default function SoulmatePortrait({ + bottomActionButtonProps, + privacyTermsConsentProps, + title, + ...props +}: SoulmatePortraitProps) { + const { + height: bottomActionButtonHeight, + elementRef: bottomActionButtonRef, + } = useDynamicSize({ + defaultHeight: 132, + }); + + return ( +
    +
    + {title && ( + + )} +
    + {bottomActionButtonProps && ( + + ) + } + /> + )} +
    + ); +} diff --git a/src/components/ui/SelectInput/SelectInput.stories.tsx b/src/components/ui/SelectInput/SelectInput.stories.tsx new file mode 100644 index 0000000..cfb9b41 --- /dev/null +++ b/src/components/ui/SelectInput/SelectInput.stories.tsx @@ -0,0 +1,81 @@ +import { Meta, StoryObj } from "@storybook/nextjs-vite"; +import SelectInput from "./SelectInput"; +import { fn } from "storybook/test"; +import { useState } from "react"; +import { useDateInput } from "@/hooks/useDateInput"; +import Typography from "../Typography/Typography"; + +/** Reusable SelectInput Component */ +const meta: Meta = { + title: "UI/SelectInput", + component: SelectInput, + tags: ["autodocs"], + args: { + defaultValue: "01", + onValueChange: fn(), + }, + argTypes: { + value: { + control: { type: "text" }, + }, + options: { + control: { type: "object" }, + }, + }, + render: (args) => { + const { dayOptions } = useDateInput({}); + const [value, setValue] = useState(args.defaultValue); + + return ( +
    + Value: {value} + { + setValue(value); + args.onValueChange?.(value); + }} + options={dayOptions} + /> +
    + ); + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default = {} satisfies Story; + +export const Disabled = { + args: { + disabled: true, + }, +} satisfies Story; + +export const WithLabel = { + args: { + label: "Month", + placeholder: "MM", + defaultValue: undefined, + }, +} satisfies Story; + +export const WithPlaceholder = { + args: { + placeholder: "Placeholder", + defaultValue: undefined, + }, +} satisfies Story; + +export const WithError = { + args: { + placeholder: "With Error", + // "aria-invalid": true, + error: true, + errorProps: { + children: "Error", + }, + }, +} satisfies Story; diff --git a/src/components/ui/SelectInput/SelectInput.tsx b/src/components/ui/SelectInput/SelectInput.tsx new file mode 100644 index 0000000..a23b553 --- /dev/null +++ b/src/components/ui/SelectInput/SelectInput.tsx @@ -0,0 +1,99 @@ +"use client"; + +import { cn } from "@/lib/utils"; +import { useId } from "react"; +import Typography from "../Typography/Typography"; +import { Label } from "../label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../select"; + +type Option = { + value: string | number; + label: string; +}; + +export interface SelectInputProps extends React.ComponentProps { + error?: boolean; + options: Option[]; + placeholder?: string; + label?: string; + labelProps?: React.ComponentProps; + triggerProps?: React.ComponentProps; + contentProps?: React.ComponentProps; + itemProps?: React.ComponentProps; + errorProps?: React.ComponentProps; +} + +export default function SelectInput({ + error, + options, + placeholder, + label, + labelProps, + triggerProps, + contentProps, + itemProps, + errorProps, + ...props +}: SelectInputProps) { + const id = useId(); + + return ( +
    + {label && ( + + )} + + {error && ( + + {errorProps?.children} + + )} +
    + ); +} diff --git a/src/components/ui/TextInput/TextInput.tsx b/src/components/ui/TextInput/TextInput.tsx index 4c45e90..ca8abcd 100644 --- a/src/components/ui/TextInput/TextInput.tsx +++ b/src/components/ui/TextInput/TextInput.tsx @@ -5,14 +5,23 @@ import { useId } from "react"; interface TextInputProps extends React.ComponentProps { label?: string; + containerProps?: React.ComponentProps<"div">; } -function TextInput({ className, label, ...props }: TextInputProps) { +function TextInput({ + className, + label, + containerProps, + ...props +}: TextInputProps) { const id = useId(); const inputId = props.id || id; return ( -
    +
    {label && (