From 13a3c3ce8a3bd7063bc8d4af75d9ef0e91b17edc Mon Sep 17 00:00:00 2001 From: Mahyar Khanbolooki Date: Mon, 21 Jul 2025 19:38:00 +0330 Subject: [PATCH] add: rating page --- package-lock.json | 81 ++++++++++++++ package.json | 1 + src/app/[name]/rating/[orderId]/page.tsx | 130 ++++++++++++++++++++++ src/components/button/ToggleButton.tsx | 128 +++++++++++++++++++++ src/components/tab/TabContainer.tsx | 32 +++++- src/components/ui/slider.tsx | 63 +++++++++++ src/components/utils/RateSelectionBar.tsx | 43 +++++++ 7 files changed, 473 insertions(+), 5 deletions(-) create mode 100644 src/app/[name]/rating/[orderId]/page.tsx create mode 100644 src/components/button/ToggleButton.tsx create mode 100644 src/components/ui/slider.tsx create mode 100644 src/components/utils/RateSelectionBar.tsx diff --git a/package-lock.json b/package-lock.json index b620551..1c0959d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.14", "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-slider": "^1.3.5", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-switch": "^1.2.5", "@tanstack/react-query": "^5.81.5", @@ -1031,6 +1032,12 @@ "node": ">=12.4.0" } }, + "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.2", "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", @@ -1060,6 +1067,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", @@ -1126,6 +1159,21 @@ } } }, + "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.10", "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.10.tgz", @@ -1351,6 +1399,39 @@ } } }, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.5.tgz", + "integrity": "sha512-rkfe2pU2NBAYfGaxa3Mqosi7VZEWX5CxKaanRv0vZd4Zhl9fvQrg0VM93dv3xGLGfrHuoTRF3JXH8nb9g+B3fw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.2", + "@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-primitive": "2.1.3", + "@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-use-size": "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-slot": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", diff --git a/package.json b/package.json index 0fb0360..b079fe2 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.14", "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-slider": "^1.3.5", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-switch": "^1.2.5", "@tanstack/react-query": "^5.81.5", diff --git a/src/app/[name]/rating/[orderId]/page.tsx b/src/app/[name]/rating/[orderId]/page.tsx new file mode 100644 index 0000000..9b3760a --- /dev/null +++ b/src/app/[name]/rating/[orderId]/page.tsx @@ -0,0 +1,130 @@ +'use client'; + +import ToggleButton from '@/components/button/ToggleButton'; +import TabContainer, { TabContainerClassNames, TabContainerRenderType } from '@/components/tab/TabContainer'; +import { TabHeader } from '@/components/tab/TabHeader'; +import { Button } from '@/components/ui/button'; +import RateSelectionBar from '@/components/utils/RateSelectionBar'; +import clsx from 'clsx'; +import { useParams } from 'next/navigation'; +import React from 'react' + +type Props = object + +type Params = { + orderId: string; +} + +function RatingOrderIndex({ }: Props) { + const params: Params = useParams(); + console.log(params) + + const badPoitns = () => { + return ( + <> +
+ + اماده سازی زمانبر + + + بهداشت محیطی بد + + + کیفیت منو پایین + + + تنوع پایین منو + + + برخورد نامناسب کارکنان + + + قیمت نامناسب + +
+ + ) + } + + const goodPoitns = () => { + return ( + <> + +
+ + اماده سازی سریع + + + بهداشت محیطی خوب + + + کیفیت منو خوب + + + تنوع بالا منو + + + برخورد مناسب کارکنان + + + قیمت مناسب + +
+ + + ) + } + + const submitForm = (formData: FormData) => { + console.log(formData.get('rating')) + } + + return ( +
+

امتیاز شما به رستوران

+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+