glass other page
This commit is contained in:
@@ -4,6 +4,7 @@ import { type FC } from 'react'
|
|||||||
import { useRouter } from 'next/navigation'
|
import { useRouter } from 'next/navigation'
|
||||||
import Seperator from '@/components/utils/Seperator'
|
import Seperator from '@/components/utils/Seperator'
|
||||||
import Image from 'next/image'
|
import Image from 'next/image'
|
||||||
|
import { glassSurfaceCardFlat } from '@/lib/styles/glassSurface'
|
||||||
|
|
||||||
const GamePage: FC = () => {
|
const GamePage: FC = () => {
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ const GamePage: FC = () => {
|
|||||||
<div className='mt-8 flex flex-col gap-4'>
|
<div className='mt-8 flex flex-col gap-4'>
|
||||||
<div
|
<div
|
||||||
style={{ direction: 'ltr' }}
|
style={{ direction: 'ltr' }}
|
||||||
className='bg-white dark:bg-container shadow-sm rounded-[10px] p-2 flex justify-between items-center cursor-pointer border border-transparent dark:border-border/50'
|
className={glassSurfaceCardFlat('rounded-[10px] p-2 flex justify-between items-center cursor-pointer')}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
const currentPath = window.location.pathname
|
const currentPath = window.location.pathname
|
||||||
const basePath = currentPath.split('/game')[0]
|
const basePath = currentPath.split('/game')[0]
|
||||||
@@ -76,7 +77,7 @@ const GamePage: FC = () => {
|
|||||||
|
|
||||||
<div
|
<div
|
||||||
style={{ direction: 'ltr' }}
|
style={{ direction: 'ltr' }}
|
||||||
className='bg-white dark:bg-container shadow-sm rounded-[10px] p-2 flex justify-between items-center cursor-pointer border border-transparent dark:border-border/50'
|
className={glassSurfaceCardFlat('rounded-[10px] p-2 flex justify-between items-center cursor-pointer')}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
const currentPath = window.location.pathname
|
const currentPath = window.location.pathname
|
||||||
const basePath = currentPath.split('/game')[0]
|
const basePath = currentPath.split('/game')[0]
|
||||||
@@ -106,7 +107,7 @@ const GamePage: FC = () => {
|
|||||||
|
|
||||||
<div
|
<div
|
||||||
style={{ direction: 'ltr' }}
|
style={{ direction: 'ltr' }}
|
||||||
className='bg-white dark:bg-container shadow-sm rounded-[10px] p-2 flex justify-between items-center cursor-pointer border border-transparent dark:border-border/50'
|
className={glassSurfaceCardFlat('rounded-[10px] p-2 flex justify-between items-center cursor-pointer')}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
const currentPath = window.location.pathname
|
const currentPath = window.location.pathname
|
||||||
const basePath = currentPath.split('/game')[0]
|
const basePath = currentPath.split('/game')[0]
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import { useGetNotifications, useReadAllNotifications } from './hooks/useNotific
|
|||||||
import type { Notification } from './types/Types';
|
import type { Notification } from './types/Types';
|
||||||
import { useGetNotificationsCount } from '../../(Main)/hooks/useMenuData';
|
import { useGetNotificationsCount } from '../../(Main)/hooks/useMenuData';
|
||||||
import Prompt from '@/components/utils/Prompt';
|
import Prompt from '@/components/utils/Prompt';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
type Props = object
|
type Props = object
|
||||||
|
|
||||||
@@ -110,7 +111,7 @@ export default function NotificationsIndex({ }: Props) {
|
|||||||
const formattedTime = formatTime(notification.createdAt);
|
const formattedTime = formatTime(notification.createdAt);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<li key={notification.id} className='bg-container py-5 px-4 rounded-container shadow-lg'>
|
<li key={notification.id} className={glassSurfaceCard('py-5 px-4')}>
|
||||||
{/* <h5 className='font-medium text-sm'>{notification.title}</h5> */}
|
{/* <h5 className='font-medium text-sm'>{notification.title}</h5> */}
|
||||||
<p className='text-xs mt-2 leading-5'>{notification.content}</p>
|
<p className='text-xs mt-2 leading-5'>{notification.content}</p>
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import Link from 'next/link';
|
|||||||
import { useParams } from 'next/navigation';
|
import { useParams } from 'next/navigation';
|
||||||
import { useEffect, useMemo } from 'react';
|
import { useEffect, useMemo } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
import { useCheckoutStore } from '../../store/Store';
|
import { useCheckoutStore } from '../../store/Store';
|
||||||
import useToggle from '@/hooks/helpers/useToggle';
|
import useToggle from '@/hooks/helpers/useToggle';
|
||||||
import { AddressSelectionModal } from './AddressSelectionModal';
|
import { AddressSelectionModal } from './AddressSelectionModal';
|
||||||
@@ -66,7 +67,7 @@ export const AddressSection = () => {
|
|||||||
// اگر آدرس ندارد
|
// اگر آدرس ندارد
|
||||||
if (addresses.length === 0) {
|
if (addresses.length === 0) {
|
||||||
return (
|
return (
|
||||||
<section className="bg-container rounded-container box-shadow-normal p-4">
|
<section className={glassSurfaceCard('p-4')}>
|
||||||
<div className="py-3">
|
<div className="py-3">
|
||||||
<h3 className="text-sm2 font-medium leading-5 mb-4">{t("SectionAddress.Title")}</h3>
|
<h3 className="text-sm2 font-medium leading-5 mb-4">{t("SectionAddress.Title")}</h3>
|
||||||
<p className='text-sm2 text-disabled-text mb-4'>
|
<p className='text-sm2 text-disabled-text mb-4'>
|
||||||
@@ -89,7 +90,7 @@ export const AddressSection = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<section className="bg-container rounded-container box-shadow-normal p-4">
|
<section className={glassSurfaceCard('p-4')}>
|
||||||
<div className="py-3">
|
<div className="py-3">
|
||||||
<div className='w-full flex justify-between items-center gap-2'>
|
<div className='w-full flex justify-between items-center gap-2'>
|
||||||
<h3 className="text-sm2 font-medium leading-5 inline-block">{t("SectionAddress.Title")}</h3>
|
<h3 className="text-sm2 font-medium leading-5 inline-block">{t("SectionAddress.Title")}</h3>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import InputField from '@/components/input/InputField';
|
import InputField from '@/components/input/InputField';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
import { useCheckoutStore } from '../../store/Store';
|
import { useCheckoutStore } from '../../store/Store';
|
||||||
import { useCallback, useEffect } from 'react';
|
import { useCallback, useEffect } from 'react';
|
||||||
|
|
||||||
@@ -42,7 +43,7 @@ export const CarAddressSection = () => {
|
|||||||
}, [carAddress, setCarAddress]);
|
}, [carAddress, setCarAddress]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="bg-container rounded-container box-shadow-normal p-4">
|
<section className={glassSurfaceCard('p-4')}>
|
||||||
<div className="py-3">
|
<div className="py-3">
|
||||||
<h3 className="text-sm2 font-medium leading-5 mb-4">
|
<h3 className="text-sm2 font-medium leading-5 mb-4">
|
||||||
اطلاعات خودرو
|
اطلاعات خودرو
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { useApplyCoupon, useRemoveCoupon } from '../../hooks/useOrderData';
|
|||||||
import Button from '@/components/button/PrimaryButton';
|
import Button from '@/components/button/PrimaryButton';
|
||||||
import { extractErrorMessage } from '@/lib/func';
|
import { extractErrorMessage } from '@/lib/func';
|
||||||
import { toast } from '@/components/Toast';
|
import { toast } from '@/components/Toast';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useGetCartItems } from '@/app/[name]/(Main)/cart/hooks/useCartData';
|
import { useGetCartItems } from '@/app/[name]/(Main)/cart/hooks/useCartData';
|
||||||
|
|
||||||
@@ -73,7 +74,7 @@ export const CouponSection = ({
|
|||||||
}, [cartItems, onCouponCodeChange]);
|
}, [cartItems, onCouponCodeChange]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="bg-container rounded-container box-shadow-normal p-4">
|
<section className={glassSurfaceCard('p-4')}>
|
||||||
<div className="py-3">
|
<div className="py-3">
|
||||||
<h3 className="text-sm2 font-medium leading-5">{t("SectionCoupon.Title")}</h3>
|
<h3 className="text-sm2 font-medium leading-5">{t("SectionCoupon.Title")}</h3>
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
|
|||||||
import { extractErrorMessage } from "@/lib/func";
|
import { extractErrorMessage } from "@/lib/func";
|
||||||
import { Card, Icon, Wallet2 } from "iconsax-react";
|
import { Card, Icon, Wallet2 } from "iconsax-react";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
import { glassSurfaceCard } from "@/lib/styles/glassSurface";
|
||||||
import { useCallback, useMemo, useRef } from "react";
|
import { useCallback, useMemo, useRef } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { PaymentMethodEnum } from "../../enum/Enum";
|
import { PaymentMethodEnum } from "../../enum/Enum";
|
||||||
@@ -121,7 +122,7 @@ export const PaymentSection = ({ paymentType, onPaymentTypeChange }: PaymentSect
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="bg-container rounded-container box-shadow-normal p-4">
|
<section className={glassSurfaceCard('p-4')}>
|
||||||
<div className="py-3">
|
<div className="py-3">
|
||||||
<h3 className="text-sm2 font-medium leading-5">{tOrderDetail("SectionPayment.Title")}</h3>
|
<h3 className="text-sm2 font-medium leading-5">{tOrderDetail("SectionPayment.Title")}</h3>
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { useTranslation } from 'react-i18next';
|
|||||||
import { useGetShipmentMethod } from '../../hooks/useOrderData';
|
import { useGetShipmentMethod } from '../../hooks/useOrderData';
|
||||||
import { DeliveryMethod } from '../../types/Types';
|
import { DeliveryMethod } from '../../types/Types';
|
||||||
import { useCheckoutStore } from '../../store/Store';
|
import { useCheckoutStore } from '../../store/Store';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
type ShippingSectionProps = {
|
type ShippingSectionProps = {
|
||||||
deliveryType: string;
|
deliveryType: string;
|
||||||
@@ -57,7 +58,7 @@ export const ShippingSection = ({ deliveryType, onDeliveryTypeChange }: Shipping
|
|||||||
})) || [];
|
})) || [];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="bg-container rounded-container box-shadow-normal p-4">
|
<section className={glassSurfaceCard('p-4')}>
|
||||||
<div className="py-3">
|
<div className="py-3">
|
||||||
<h3 className="text-sm2 font-medium leading-5">{tOrderDetail("SectionShipping.Title")}</h3>
|
<h3 className="text-sm2 font-medium leading-5">{tOrderDetail("SectionShipping.Title")}</h3>
|
||||||
<Combobox
|
<Combobox
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
import { MinusIcon, PlusIcon } from 'lucide-react';
|
import { MinusIcon, PlusIcon } from 'lucide-react';
|
||||||
import { motion } from 'framer-motion';
|
import { motion } from 'framer-motion';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
type TableSectionProps = {
|
type TableSectionProps = {
|
||||||
tableNumber: number;
|
tableNumber: number;
|
||||||
@@ -14,7 +15,7 @@ export const TableSection = ({ tableNumber, onIncrement, onDecrement }: TableSec
|
|||||||
const { t } = useTranslation('parallels', { keyPrefix: 'OrderDetail' });
|
const { t } = useTranslation('parallels', { keyPrefix: 'OrderDetail' });
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="bg-container rounded-container box-shadow-normal p-4 py-2">
|
<section className={glassSurfaceCard('p-4 py-2')}>
|
||||||
<div className="py-3">
|
<div className="py-3">
|
||||||
<div className='w-full grid grid-cols-2 justify-between items-center gap-2'>
|
<div className='w-full grid grid-cols-2 justify-between items-center gap-2'>
|
||||||
<h3 className="text-sm2 font-medium leading-5 inline-block">{t("SectionTable.Title")}</h3>
|
<h3 className="text-sm2 font-medium leading-5 inline-block">{t("SectionTable.Title")}</h3>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import React, { useEffect, useState } from 'react'
|
|||||||
import { useVerify } from '../hooks/useVerifyData';
|
import { useVerify } from '../hooks/useVerifyData';
|
||||||
import { toast } from '@/components/Toast';
|
import { toast } from '@/components/Toast';
|
||||||
import { VerifyData } from '../types/Types';
|
import { VerifyData } from '../types/Types';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
type Props = object
|
type Props = object
|
||||||
|
|
||||||
@@ -74,7 +75,7 @@ export default function VerifyIndex({ }: Props) {
|
|||||||
return (
|
return (
|
||||||
<div className='h-full bg-inherit relative flex flex-col lg:gap-4'>
|
<div className='h-full bg-inherit relative flex flex-col lg:gap-4'>
|
||||||
<div className='flex-1 flex flex-col items-center justify-center'>
|
<div className='flex-1 flex flex-col items-center justify-center'>
|
||||||
<div className='bg-container py-5 px-2 rounded-container shadow-lg w-full'>
|
<div className={glassSurfaceCard('py-5 px-2 w-full')}>
|
||||||
<div className={`items-center gap-2 rounded-2xl h-35 flex flex-col justify-center ${isError ? 'bg-red-50' : 'bg-gray-50'}`}>
|
<div className={`items-center gap-2 rounded-2xl h-35 flex flex-col justify-center ${isError ? 'bg-red-50' : 'bg-gray-50'}`}>
|
||||||
{isError ? (
|
{isError ? (
|
||||||
<CloseCircle className='size-10 stroke-red-500' variant='TwoTone' />
|
<CloseCircle className='size-10 stroke-red-500' variant='TwoTone' />
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { toast, toastLoginRequired } from "@/components/Toast";
|
|||||||
import { getToken } from "@/lib/api/func";
|
import { getToken } from "@/lib/api/func";
|
||||||
import { ef } from "@/lib/helpers/utfNumbers";
|
import { ef } from "@/lib/helpers/utfNumbers";
|
||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
|
import { glassSurface, glassSurfaceCard, glassSurfaceFlat } from "@/lib/styles/glassSurface";
|
||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
import { ArrowLeft, Clock, Cup, Heart, TruckTick } from "iconsax-react";
|
import { ArrowLeft, Clock, Cup, Heart, TruckTick } from "iconsax-react";
|
||||||
import { useParams, useRouter } from "next/navigation";
|
import { useParams, useRouter } from "next/navigation";
|
||||||
@@ -135,7 +136,7 @@ function FoodPage({}: Props) {
|
|||||||
!isAvailable && "opacity-50",
|
!isAvailable && "opacity-50",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<div className="relative w-full lg:h-full min-h-0 not-lg:bg-container rounded-2xl overflow-hidden lg:rounded-r-none lg:order-1">
|
<div className={glassSurface('relative w-full lg:h-full min-h-0 rounded-2xl overflow-hidden lg:rounded-r-none lg:order-1 lg:!bg-transparent lg:!border-0 lg:!shadow-none lg:[backdrop-filter:none]')}>
|
||||||
{/* eslint-disable-next-line @next/next/no-img-element */}
|
{/* eslint-disable-next-line @next/next/no-img-element */}
|
||||||
<img
|
<img
|
||||||
className="lg:object-cover lg:h-full object-cover bg-[#F2F2F9] w-full"
|
className="lg:object-cover lg:h-full object-cover bg-[#F2F2F9] w-full"
|
||||||
@@ -146,12 +147,12 @@ function FoodPage({}: Props) {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<div className="absolute top-4 left-0 pe-5.5 ps-7 w-full inline-flex justify-between items-center">
|
<div className="absolute top-4 left-0 pe-5.5 ps-7 w-full inline-flex justify-between items-center">
|
||||||
<div className="bg-container whitespace-nowrap rounded-[34px] py-1.5 px-4 w-min text-xs text-disabled2 dark:text-disabled-text font-bold">
|
<div className={glassSurfaceFlat('whitespace-nowrap rounded-[34px] py-1.5 px-4 w-min text-xs text-disabled2 dark:text-disabled-text font-bold')}>
|
||||||
{categoryName || "-"}
|
{categoryName || "-"}
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
onClick={handleBackToMenu}
|
onClick={handleBackToMenu}
|
||||||
className="p-2 rounded-full bg-container/40"
|
className={glassSurfaceFlat('p-2 rounded-full')}
|
||||||
>
|
>
|
||||||
<ArrowLeft
|
<ArrowLeft
|
||||||
size={18}
|
size={18}
|
||||||
@@ -161,7 +162,7 @@ function FoodPage({}: Props) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="relative px-6 pt-6 pb-7.5 lg:flex lg:flex-col lg:h-full lg:min-h-0 bg-container w-full rounded-3xl overflow-hidden not-lg:-translate-y-6 lg:rounded-l-none lg:overflow-y-auto">
|
<div className={glassSurfaceCard('relative px-6 pt-6 pb-7.5 lg:flex lg:flex-col lg:h-full lg:min-h-0 w-full overflow-hidden not-lg:-translate-y-6 lg:rounded-l-none lg:overflow-y-auto rounded-3xl')}>
|
||||||
<div className="w-full inline-flex justify-between items-center shrink-0">
|
<div className="w-full inline-flex justify-between items-center shrink-0">
|
||||||
<h5 className="text-base font-bold">{foodName}</h5>
|
<h5 className="text-base font-bold">{foodName}</h5>
|
||||||
<button
|
<button
|
||||||
@@ -249,7 +250,7 @@ function FoodPage({}: Props) {
|
|||||||
<button
|
<button
|
||||||
onClick={handleAddToCart}
|
onClick={handleAddToCart}
|
||||||
disabled={!isAvailable}
|
disabled={!isAvailable}
|
||||||
className="bg-container hover:bg-container/60 active:bg-container/30 rounded-sm p-2 transition-colors disabled:opacity-40 disabled:pointer-events-none"
|
className={glassSurfaceFlat('hover:brightness-95 active:brightness-90 rounded-sm p-2 transition-all disabled:opacity-40 disabled:pointer-events-none')}
|
||||||
>
|
>
|
||||||
<PlusIcon className="text-foreground" />
|
<PlusIcon className="text-foreground" />
|
||||||
</button>
|
</button>
|
||||||
@@ -264,7 +265,7 @@ function FoodPage({}: Props) {
|
|||||||
</motion.div>
|
</motion.div>
|
||||||
<button
|
<button
|
||||||
onClick={handleRemoveFromCart}
|
onClick={handleRemoveFromCart}
|
||||||
className="bg-container hover:bg-container/60 active:bg-container/30 rounded-sm p-2 transition-colors"
|
className={glassSurfaceFlat('hover:brightness-95 active:brightness-90 rounded-sm p-2 transition-all')}
|
||||||
>
|
>
|
||||||
<MinusIcon className="text-foreground" />
|
<MinusIcon className="text-foreground" />
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import Image from 'next/image';
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import { useGetAbout, useGetReviews, useGetSchedules } from './hooks/useAboutData';
|
import { useGetAbout, useGetReviews, useGetSchedules } from './hooks/useAboutData';
|
||||||
import AboutSkeleton from './components/AboutSkeleton';
|
import AboutSkeleton from './components/AboutSkeleton';
|
||||||
|
import { glassSurfaceCard, glassSurfaceCardFlat, glassSurfaceFlat } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
const sortings = [
|
const sortings = [
|
||||||
'جدیدترین',
|
'جدیدترین',
|
||||||
@@ -81,7 +82,7 @@ function AboutPage() {
|
|||||||
return (
|
return (
|
||||||
<section aria-labelledby="about-title" className='py-4'>
|
<section aria-labelledby="about-title" className='py-4'>
|
||||||
<section
|
<section
|
||||||
className="bg-container rounded-container shadow-container p-4">
|
className={glassSurfaceCard('p-4')}>
|
||||||
<div className="flex justify-between items-center border-b-[1.5px] border-gray-200 pb-[25px]">
|
<div className="flex justify-between items-center border-b-[1.5px] border-gray-200 pb-[25px]">
|
||||||
<div className="">
|
<div className="">
|
||||||
<h2 className='text-sm2 font-bold leading-5'>{restaurant.name}</h2>
|
<h2 className='text-sm2 font-bold leading-5'>{restaurant.name}</h2>
|
||||||
@@ -123,7 +124,7 @@ function AboutPage() {
|
|||||||
|
|
||||||
{(restaurant.phone || restaurant.telegram || restaurant.whatsapp || restaurant.instagram) && (
|
{(restaurant.phone || restaurant.telegram || restaurant.whatsapp || restaurant.instagram) && (
|
||||||
<section
|
<section
|
||||||
className="bg-container rounded-container shadow-container pt-3 pb-3.5 px-[16px] mt-4 grid grid-cols-3 items-center">
|
className={glassSurfaceCard('pt-3 pb-3.5 px-[16px] mt-4 grid grid-cols-3 items-center')}>
|
||||||
<h2 className='text-sm2 font-medium leading-5'>ارتباط</h2>
|
<h2 className='text-sm2 font-medium leading-5'>ارتباط</h2>
|
||||||
<div className='col-span-1 text-center flex justify-center gap-4'>
|
<div className='col-span-1 text-center flex justify-center gap-4'>
|
||||||
{restaurant.phone &&
|
{restaurant.phone &&
|
||||||
@@ -151,7 +152,7 @@ function AboutPage() {
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{restaurant.address && (
|
{restaurant.address && (
|
||||||
<section className="bg-container rounded-container shadow-container px-4 pt-6 pb-6 mt-4">
|
<section className={glassSurfaceCard('px-4 pt-6 pb-6 mt-4')}>
|
||||||
<h2 className='text-sm2 font-medium leading-5'>آدرس</h2>
|
<h2 className='text-sm2 font-medium leading-5'>آدرس</h2>
|
||||||
<p className='text-sm2 mt-[9px] leading-5'>{restaurant.address}</p>
|
<p className='text-sm2 mt-[9px] leading-5'>{restaurant.address}</p>
|
||||||
{restaurant.latitude && restaurant.longitude && (
|
{restaurant.latitude && restaurant.longitude && (
|
||||||
@@ -166,7 +167,7 @@ function AboutPage() {
|
|||||||
{schedules.length > 0 && getTodaySchedule() && (
|
{schedules.length > 0 && getTodaySchedule() && (
|
||||||
<section
|
<section
|
||||||
aria-label='ساعات کاری'
|
aria-label='ساعات کاری'
|
||||||
className="bg-container rounded-container shadow-container py-6 px-4 mt-4 flex justify-between items-center">
|
className={glassSurfaceCard('py-6 px-4 mt-4 flex justify-between items-center')}>
|
||||||
<div className="flex items-center gap-2 justify-start">
|
<div className="flex items-center gap-2 justify-start">
|
||||||
<Clock size={16} className='stroke-disabled-text' />
|
<Clock size={16} className='stroke-disabled-text' />
|
||||||
<div className='text-sm2 font-medium leading-5 mt-0.5 text-[#8C90A3]'>باز</div>
|
<div className='text-sm2 font-medium leading-5 mt-0.5 text-[#8C90A3]'>باز</div>
|
||||||
@@ -186,8 +187,7 @@ function AboutPage() {
|
|||||||
.map(([weekDay, daySchedules]) => (
|
.map(([weekDay, daySchedules]) => (
|
||||||
<div
|
<div
|
||||||
key={weekDay}
|
key={weekDay}
|
||||||
style={{ boxShadow: '0px 0px 14px 0px #0000000F' }}
|
className={glassSurfaceCardFlat('leading-5 py-6 px-4 mt-4 flex justify-between items-center')}>
|
||||||
className="bg-[#F6F6FA] dark:bg-border rounded-container leading-5 py-6 px-4 mt-4 flex justify-between items-center">
|
|
||||||
<div className="text-sm2">
|
<div className="text-sm2">
|
||||||
{getDayName(Number(weekDay))}
|
{getDayName(Number(weekDay))}
|
||||||
</div>
|
</div>
|
||||||
@@ -254,7 +254,7 @@ function AboutPage() {
|
|||||||
<section aria-labelledby="reviews-title" className='py-4'>
|
<section aria-labelledby="reviews-title" className='py-4'>
|
||||||
<section
|
<section
|
||||||
aria-label='امتیاز کاربران'
|
aria-label='امتیاز کاربران'
|
||||||
className="bg-container rounded-container shadow-container p-4 py-6 grid grid-cols-2 items-center">
|
className={glassSurfaceCard('p-4 py-6 grid grid-cols-2 items-center')}>
|
||||||
<div className="text-center font-bold text-5xl">
|
<div className="text-center font-bold text-5xl">
|
||||||
{averageRating.toFixed(1)}
|
{averageRating.toFixed(1)}
|
||||||
</div>
|
</div>
|
||||||
@@ -267,10 +267,10 @@ function AboutPage() {
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section className="bg-container rounded-container shadow-container pt-3 pb-3.5 px-[16px] mt-4">
|
<section className={glassSurfaceCard('pt-3 pb-3.5 px-[16px] mt-4')}>
|
||||||
<div className="flex justify-between items-center border-b-[1.5px] border-border pb-2">
|
<div className="flex justify-between items-center border-b-[1.5px] border-border pb-2">
|
||||||
<h2 className='text-sm2 font-medium leading-5'>نظرات کاربران</h2>
|
<h2 className='text-sm2 font-medium leading-5'>نظرات کاربران</h2>
|
||||||
<button onClick={toggleSortingModal} className="rounded-xl h-8 bg-container pattern-secondary-bg ps-4 pe-2 py-1.5 inline-flex items-center justify-between gap-[7px]">
|
<button onClick={toggleSortingModal} className={glassSurfaceFlat('rounded-xl h-8 pattern-secondary-bg ps-4 pe-2 py-1.5 inline-flex items-center justify-between gap-[7px]')}>
|
||||||
<EqualizerIcon className='dark:text-white' />
|
<EqualizerIcon className='dark:text-white' />
|
||||||
<span className="text-xs leading-5 font-medium">{sortings[+sorting]}</span>
|
<span className="text-xs leading-5 font-medium">{sortings[+sorting]}</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -4,12 +4,13 @@ import { Skeleton } from "@/components/ui/skeleton";
|
|||||||
import TabContainer from "@/components/tab/TabContainer";
|
import TabContainer from "@/components/tab/TabContainer";
|
||||||
import { TabHeader } from "@/components/tab/TabHeader";
|
import { TabHeader } from "@/components/tab/TabHeader";
|
||||||
import { InfoCircle, Star1 } from 'iconsax-react';
|
import { InfoCircle, Star1 } from 'iconsax-react';
|
||||||
|
import { glassSurfaceCard, glassSurfaceCardFlat } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
const AboutSkeleton = () => {
|
const AboutSkeleton = () => {
|
||||||
const firstTabSkeleton = () => (
|
const firstTabSkeleton = () => (
|
||||||
<section className='py-4'>
|
<section className='py-4'>
|
||||||
{/* اطلاعات رستوران */}
|
{/* اطلاعات رستوران */}
|
||||||
<section className="bg-container rounded-container shadow-container p-4">
|
<section className={glassSurfaceCard('p-4')}>
|
||||||
<div className="flex justify-between items-center border-b-[1.5px] border-gray-200 pb-[25px]">
|
<div className="flex justify-between items-center border-b-[1.5px] border-gray-200 pb-[25px]">
|
||||||
<div className="flex-1">
|
<div className="flex-1">
|
||||||
<Skeleton className="h-6 w-32 rounded-md mb-4" />
|
<Skeleton className="h-6 w-32 rounded-md mb-4" />
|
||||||
@@ -31,7 +32,7 @@ const AboutSkeleton = () => {
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* ارتباط */}
|
{/* ارتباط */}
|
||||||
<section className="bg-container rounded-container shadow-container pt-3 pb-3.5 px-[16px] mt-4 grid grid-cols-3 items-center">
|
<section className={glassSurfaceCard('pt-3 pb-3.5 px-[16px] mt-4 grid grid-cols-3 items-center')}>
|
||||||
<Skeleton className="h-5 w-16 rounded-md" />
|
<Skeleton className="h-5 w-16 rounded-md" />
|
||||||
<div className='col-span-1 text-center flex justify-center gap-4'>
|
<div className='col-span-1 text-center flex justify-center gap-4'>
|
||||||
{[...Array(3)].map((_, index) => (
|
{[...Array(3)].map((_, index) => (
|
||||||
@@ -41,7 +42,7 @@ const AboutSkeleton = () => {
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* آدرس */}
|
{/* آدرس */}
|
||||||
<section className="bg-container rounded-container shadow-container px-4 pt-6 pb-6 mt-4">
|
<section className={glassSurfaceCard('px-4 pt-6 pb-6 mt-4')}>
|
||||||
<Skeleton className="h-5 w-12 rounded-md mb-[9px]" />
|
<Skeleton className="h-5 w-12 rounded-md mb-[9px]" />
|
||||||
<Skeleton className="h-4 w-full rounded-md mb-2" />
|
<Skeleton className="h-4 w-full rounded-md mb-2" />
|
||||||
<Skeleton className="h-4 w-3/4 rounded-md mb-[23px]" />
|
<Skeleton className="h-4 w-3/4 rounded-md mb-[23px]" />
|
||||||
@@ -52,7 +53,7 @@ const AboutSkeleton = () => {
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* ساعات کاری امروز */}
|
{/* ساعات کاری امروز */}
|
||||||
<section className="bg-container rounded-container shadow-container py-6 px-4 mt-4 flex justify-between items-center">
|
<section className={glassSurfaceCard('py-6 px-4 mt-4 flex justify-between items-center')}>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<Skeleton className="w-4 h-4 rounded-full" />
|
<Skeleton className="w-4 h-4 rounded-full" />
|
||||||
<Skeleton className="h-5 w-8 rounded-md" />
|
<Skeleton className="h-5 w-8 rounded-md" />
|
||||||
@@ -66,7 +67,7 @@ const AboutSkeleton = () => {
|
|||||||
{[...Array(3)].map((_, index) => (
|
{[...Array(3)].map((_, index) => (
|
||||||
<div
|
<div
|
||||||
key={index}
|
key={index}
|
||||||
className="bg-[#F6F6FA] dark:bg-border rounded-container leading-5 py-6 px-4 mt-4 flex justify-between items-center">
|
className={glassSurfaceCardFlat('leading-5 py-6 px-4 mt-4 flex justify-between items-center')}>
|
||||||
<Skeleton className="h-5 w-20 rounded-md" />
|
<Skeleton className="h-5 w-20 rounded-md" />
|
||||||
<Skeleton className="h-5 w-24 rounded-md" />
|
<Skeleton className="h-5 w-24 rounded-md" />
|
||||||
</div>
|
</div>
|
||||||
@@ -77,7 +78,7 @@ const AboutSkeleton = () => {
|
|||||||
const secondTabSkeleton = () => (
|
const secondTabSkeleton = () => (
|
||||||
<section className='py-4'>
|
<section className='py-4'>
|
||||||
{/* امتیاز کاربران */}
|
{/* امتیاز کاربران */}
|
||||||
<section className="bg-container rounded-container shadow-container p-4 py-6 grid grid-cols-2 items-center">
|
<section className={glassSurfaceCard('p-4 py-6 grid grid-cols-2 items-center')}>
|
||||||
<Skeleton className="h-16 w-20 rounded-md mx-auto" />
|
<Skeleton className="h-16 w-20 rounded-md mx-auto" />
|
||||||
<div className="flex flex-col w-fit items-end gap-1">
|
<div className="flex flex-col w-fit items-end gap-1">
|
||||||
{[...Array(5)].map((_, index) => (
|
{[...Array(5)].map((_, index) => (
|
||||||
@@ -87,7 +88,7 @@ const AboutSkeleton = () => {
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* نظرات کاربران */}
|
{/* نظرات کاربران */}
|
||||||
<section className="bg-container rounded-container shadow-container pt-3 pb-3.5 px-[16px] mt-4">
|
<section className={glassSurfaceCard('pt-3 pb-3.5 px-[16px] mt-4')}>
|
||||||
<div className="flex justify-between items-center border-b-[1.5px] border-border pb-2">
|
<div className="flex justify-between items-center border-b-[1.5px] border-border pb-2">
|
||||||
<Skeleton className="h-5 w-24 rounded-md" />
|
<Skeleton className="h-5 w-24 rounded-md" />
|
||||||
<Skeleton className="h-8 w-28 rounded-xl" />
|
<Skeleton className="h-8 w-28 rounded-xl" />
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import CartSkeleton from "./components/CartSkeleton";
|
|||||||
import CartSummary from "./components/CartSummary";
|
import CartSummary from "./components/CartSummary";
|
||||||
import { useCart } from "./hook/useCart";
|
import { useCart } from "./hook/useCart";
|
||||||
import { useCartPageState } from "./hooks/useCartPageState";
|
import { useCartPageState } from "./hooks/useCartPageState";
|
||||||
|
import { glassSurfaceCard } from "@/lib/styles/glassSurface";
|
||||||
|
|
||||||
const CartPage = () => {
|
const CartPage = () => {
|
||||||
const { t } = useTranslation("parallels", { keyPrefix: "Cart" });
|
const { t } = useTranslation("parallels", { keyPrefix: "Cart" });
|
||||||
@@ -42,7 +43,7 @@ const CartPage = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="overflow-y-auto h-full noscrollbar flex flex-col bg-background">
|
<div className="overflow-y-auto h-full noscrollbar flex flex-col">
|
||||||
<div className="grid grid-cols-3 items-center mt-6">
|
<div className="grid grid-cols-3 items-center mt-6">
|
||||||
{isCartEmpty || isLoading ? (
|
{isCartEmpty || isLoading ? (
|
||||||
<span></span>
|
<span></span>
|
||||||
@@ -93,7 +94,7 @@ const CartPage = () => {
|
|||||||
) : (
|
) : (
|
||||||
<div className="flex flex-col gap-4 pb-24">
|
<div className="flex flex-col gap-4 pb-24">
|
||||||
{!isPremium && (
|
{!isPremium && (
|
||||||
<div className="bg-container rounded-container p-4 border border-border shadow-sm">
|
<div className={glassSurfaceCard('p-4')}>
|
||||||
<div className="flex items-start gap-3 mb-4">
|
<div className="flex items-start gap-3 mb-4">
|
||||||
<div className="shrink-0 mt-0.5">
|
<div className="shrink-0 mt-0.5">
|
||||||
<NotificationBellIcon
|
<NotificationBellIcon
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { useGetProfile } from '@/app/[name]/(Profile)/profile/hooks/userProfileD
|
|||||||
import { useGetCartItems } from '../hooks/useCartData';
|
import { useGetCartItems } from '../hooks/useCartData';
|
||||||
import { useCartStore } from '../store/Store';
|
import { useCartStore } from '../store/Store';
|
||||||
import { guestCartItemsToFoods } from '../lib/cartUtils';
|
import { guestCartItemsToFoods } from '../lib/cartUtils';
|
||||||
|
import { glassSurfaceNav } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
interface CartSummaryProps {
|
interface CartSummaryProps {
|
||||||
isPremium: boolean;
|
isPremium: boolean;
|
||||||
@@ -73,7 +74,7 @@ const CartSummary = ({ isPremium, hasItems }: CartSummaryProps) => {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div className='fixed bottom-0 left-0 right-0 z-50 bg-white dark:bg-container border-t border-border p-4 w-full'>
|
<div className={glassSurfaceNav('fixed bottom-0 left-0 right-0 z-50 border-t border-border p-4 w-full')}>
|
||||||
<div className='flex justify-between items-center gap-4'>
|
<div className='flex justify-between items-center gap-4'>
|
||||||
<div className='flex flex-col'>
|
<div className='flex flex-col'>
|
||||||
<div className='text-xs text-gray-400 dark:text-disabled-text'>{t('PayableAmountLabel')}</div>
|
<div className='text-xs text-gray-400 dark:text-disabled-text'>{t('PayableAmountLabel')}</div>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { ef } from '@/lib/helpers/utfNumbers'
|
|||||||
import { EmojiHappy, Microphone2, Paperclip2 } from 'iconsax-react'
|
import { EmojiHappy, Microphone2, Paperclip2 } from 'iconsax-react'
|
||||||
import React, { useMemo, useState } from 'react'
|
import React, { useMemo, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface'
|
||||||
|
|
||||||
type Props = object
|
type Props = object
|
||||||
|
|
||||||
@@ -64,7 +65,7 @@ function ChatIndex ({}: Props) {
|
|||||||
<section className='flex flex-col h-full pt-6'>
|
<section className='flex flex-col h-full pt-6'>
|
||||||
<h1 className='font-medium'>علی مصلحی</h1>
|
<h1 className='font-medium'>علی مصلحی</h1>
|
||||||
|
|
||||||
<div className='bg-container rounded-[30px] flex flex-col justify-between mt-6 flex-1 px-6 pt-7 pb-8 overflow-hidden'>
|
<div className={glassSurfaceCard('rounded-[30px] flex flex-col justify-between mt-6 flex-1 px-6 pt-7 pb-8 overflow-hidden')}>
|
||||||
<div className='overflow-y-auto flex flex-col-reverse'>
|
<div className='overflow-y-auto flex flex-col-reverse'>
|
||||||
<ul className='grid gap-6 pb-6 '>
|
<ul className='grid gap-6 pb-6 '>
|
||||||
{messagesMemo.map((v, i) => {
|
{messagesMemo.map((v, i) => {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import {
|
|||||||
import { useRouter } from 'next/navigation'
|
import { useRouter } from 'next/navigation'
|
||||||
import useToggle from '@/hooks/helpers/useToggle'
|
import useToggle from '@/hooks/helpers/useToggle'
|
||||||
import Prompt from '@/components/utils/Prompt'
|
import Prompt from '@/components/utils/Prompt'
|
||||||
|
import { glassSurfaceFlat } from '@/lib/styles/glassSurface'
|
||||||
|
|
||||||
type Props = object
|
type Props = object
|
||||||
|
|
||||||
@@ -170,7 +171,7 @@ function ChatIndex ({}: Props) {
|
|||||||
{selectedChats.length > 0 ? (
|
{selectedChats.length > 0 ? (
|
||||||
<span
|
<span
|
||||||
onClick={toggleDeleteModal}
|
onClick={toggleDeleteModal}
|
||||||
className='bg-container p-2 rounded-xl active:bg-gray-50 dark:active:bg-neutral-500'
|
className={glassSurfaceFlat('p-2 rounded-xl active:brightness-95 cursor-pointer')}
|
||||||
>
|
>
|
||||||
<Trash
|
<Trash
|
||||||
size={24}
|
size={24}
|
||||||
@@ -180,7 +181,7 @@ function ChatIndex ({}: Props) {
|
|||||||
) : (
|
) : (
|
||||||
<Link
|
<Link
|
||||||
href={'chat/nearby'}
|
href={'chat/nearby'}
|
||||||
className='bg-container p-2 rounded-xl active:bg-gray-50 dark:active:bg-neutral-500'
|
className={glassSurfaceFlat('p-2 rounded-xl active:brightness-95 cursor-pointer')}
|
||||||
>
|
>
|
||||||
<Radar2
|
<Radar2
|
||||||
size={24}
|
size={24}
|
||||||
@@ -198,7 +199,7 @@ function ChatIndex ({}: Props) {
|
|||||||
<li
|
<li
|
||||||
key={i}
|
key={i}
|
||||||
{...longPress(chat.id)}
|
{...longPress(chat.id)}
|
||||||
className='select-none flex items-center gap-x-2 hover:brightness-105 cursor-default active:brightness-102 p-2 bg-background rounded-xl'
|
className={glassSurfaceFlat('select-none flex items-center gap-x-2 hover:brightness-105 cursor-default active:brightness-102 p-2 rounded-xl')}
|
||||||
>
|
>
|
||||||
<div className='size-[49px] min-w-[49px]'>
|
<div className='size-[49px] min-w-[49px]'>
|
||||||
{selectedChats.includes(chat.id) ? (
|
{selectedChats.includes(chat.id) ? (
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { useTranslation } from 'react-i18next';
|
|||||||
import { useGetOrders } from './hooks/useHistoryData';
|
import { useGetOrders } from './hooks/useHistoryData';
|
||||||
import { HistoryOrderItem } from './types/Types';
|
import { HistoryOrderItem } from './types/Types';
|
||||||
import { OrderStatus } from './enum/Enum';
|
import { OrderStatus } from './enum/Enum';
|
||||||
|
import { glassSurface } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
const fallbackImage = '/assets/images/food-preview.png';
|
const fallbackImage = '/assets/images/food-preview.png';
|
||||||
|
|
||||||
@@ -80,7 +81,7 @@ function OrdersIndex() {
|
|||||||
const items: HistoryOrderItem[] = order.items || [];
|
const items: HistoryOrderItem[] = order.items || [];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div key={order.id} className='w-full px-[17px] mb-4 pt-8 pb-6 bg-container rounded-3xl'>
|
<div key={order.id} className={glassSurface('w-full px-[17px] mb-4 pt-8 pb-6 rounded-3xl')}>
|
||||||
<div className="text-sm2">
|
<div className="text-sm2">
|
||||||
<div className='flex items-center justify-between mb-2'>
|
<div className='flex items-center justify-between mb-2'>
|
||||||
<div className='flex gap-2 items-center'>
|
<div className='flex gap-2 items-center'>
|
||||||
@@ -165,7 +166,7 @@ function OrdersIndex() {
|
|||||||
const items: HistoryOrderItem[] = order.items || [];
|
const items: HistoryOrderItem[] = order.items || [];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div key={order.id} className='w-full px-[17px] mb-4 pt-8 pb-6 bg-container rounded-3xl'>
|
<div key={order.id} className={glassSurface('w-full px-[17px] mb-4 pt-8 pb-6 rounded-3xl')}>
|
||||||
<div className="text-sm2">
|
<div className="text-sm2">
|
||||||
<div className='flex items-center justify-between mb-2'>
|
<div className='flex items-center justify-between mb-2'>
|
||||||
<div className='flex gap-2 items-center'>
|
<div className='flex gap-2 items-center'>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import { CreateRateType } from '../types/Types';
|
|||||||
import { toast } from '@/components/Toast';
|
import { toast } from '@/components/Toast';
|
||||||
import { PositivePointEnum, NegativePointEnum } from '../enum/Enum';
|
import { PositivePointEnum, NegativePointEnum } from '../enum/Enum';
|
||||||
import { extractErrorMessage } from '@/lib/func';
|
import { extractErrorMessage } from '@/lib/func';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
type Props = object
|
type Props = object
|
||||||
|
|
||||||
@@ -148,7 +149,7 @@ function RatingOrderIndex({ }: Props) {
|
|||||||
<section className='flex flex-col h-full pt-6'>
|
<section className='flex flex-col h-full pt-6'>
|
||||||
<h1 className='font-medium'>{t("Heading")}</h1>
|
<h1 className='font-medium'>{t("Heading")}</h1>
|
||||||
|
|
||||||
<form onSubmit={submitForm} className='bg-container flex flex-col h-min justify-between rounded-[30px] pt-10 px-6 pb-7.5 mt-4'>
|
<form onSubmit={submitForm} className={glassSurfaceCard('flex flex-col h-min justify-between rounded-[30px] pt-10 px-6 pb-7.5 mt-4')}>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div className='w-full'>
|
<div className='w-full'>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { Button } from '@/components/ui/button';
|
|||||||
import { useGetAbout } from '../../../about/hooks/useAboutData';
|
import { useGetAbout } from '../../../about/hooks/useAboutData';
|
||||||
import { toast } from '@/components/Toast';
|
import { toast } from '@/components/Toast';
|
||||||
import { extractErrorMessage } from '@/lib/func';
|
import { extractErrorMessage } from '@/lib/func';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
function TransactionsIndex() {
|
function TransactionsIndex() {
|
||||||
|
|
||||||
@@ -37,7 +38,7 @@ function TransactionsIndex() {
|
|||||||
|
|
||||||
<section
|
<section
|
||||||
aria-label="درباره باشگاه مشتریان"
|
aria-label="درباره باشگاه مشتریان"
|
||||||
className='mt-3 bg-container dark:bg-container rounded-normal grid grid-cols-4 items-center border border-transparent dark:border-border/50'
|
className={glassSurfaceCard('mt-3 rounded-normal grid grid-cols-4 items-center')}
|
||||||
>
|
>
|
||||||
<div className='col-span-3 py-5 pe-7 ps-5 relative h-36.5'>
|
<div className='col-span-3 py-5 pe-7 ps-5 relative h-36.5'>
|
||||||
<div className='w-full h-full absolute top-0 left-0 overflow-clip text-muted-foreground/30 dark:text-foreground/20'>
|
<div className='w-full h-full absolute top-0 left-0 overflow-clip text-muted-foreground/30 dark:text-foreground/20'>
|
||||||
@@ -78,7 +79,7 @@ function TransactionsIndex() {
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* بخش نمایش اعتبار کاربر */}
|
{/* بخش نمایش اعتبار کاربر */}
|
||||||
<section className='mt-6 bg-container dark:bg-container rounded-normal p-5 border border-transparent dark:border-border/50'>
|
<section className={glassSurfaceCard('mt-6 rounded-normal p-5')}>
|
||||||
<div className='flex items-center gap-2 mb-4'>
|
<div className='flex items-center gap-2 mb-4'>
|
||||||
<MoneyRecive color='currentColor' size={24} className='text-primary dark:text-foreground' variant='Bold' />
|
<MoneyRecive color='currentColor' size={24} className='text-primary dark:text-foreground' variant='Bold' />
|
||||||
<h2 className='font-bold text-base dark:text-foreground'>اعتبار شما</h2>
|
<h2 className='font-bold text-base dark:text-foreground'>اعتبار شما</h2>
|
||||||
@@ -92,7 +93,7 @@ function TransactionsIndex() {
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* بخش تبدیل امتیاز به اعتبار */}
|
{/* بخش تبدیل امتیاز به اعتبار */}
|
||||||
<section className='mt-6 bg-container dark:bg-container rounded-normal p-5 border border-transparent dark:border-border/50'>
|
<section className={glassSurfaceCard('mt-6 rounded-normal p-5')}>
|
||||||
<div className='flex items-center gap-2 mb-4'>
|
<div className='flex items-center gap-2 mb-4'>
|
||||||
<MoneyRecive color='currentColor' size={24} className='text-primary dark:text-foreground' variant='Bold' />
|
<MoneyRecive color='currentColor' size={24} className='text-primary dark:text-foreground' variant='Bold' />
|
||||||
<h2 className='font-bold text-base dark:text-foreground'>تبدیل امتیاز به اعتبار</h2>
|
<h2 className='font-bold text-base dark:text-foreground'>تبدیل امتیاز به اعتبار</h2>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import React, { useCallback } from 'react'
|
|||||||
import { useGetMyCoupons } from '../hooks/useTransactionData';
|
import { useGetMyCoupons } from '../hooks/useTransactionData';
|
||||||
import { toast } from '@/components/Toast';
|
import { toast } from '@/components/Toast';
|
||||||
import type { Coupon } from '../types/Types';
|
import type { Coupon } from '../types/Types';
|
||||||
|
import { glassSurfaceCard, glassSurfaceCardFlat } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
function TransactionsIndex() {
|
function TransactionsIndex() {
|
||||||
const { data: myCoupons, isLoading } = useGetMyCoupons();
|
const { data: myCoupons, isLoading } = useGetMyCoupons();
|
||||||
@@ -32,7 +33,7 @@ function TransactionsIndex() {
|
|||||||
|
|
||||||
<section
|
<section
|
||||||
aria-label="درباره کدهای تخفیف"
|
aria-label="درباره کدهای تخفیف"
|
||||||
className='mt-3 bg-container rounded-normal grid grid-cols-4 items-center'
|
className={glassSurfaceCard('mt-3 rounded-normal grid grid-cols-4 items-center')}
|
||||||
>
|
>
|
||||||
<div className='col-span-3 py-9.5 pe-7 ps-5 relative'>
|
<div className='col-span-3 py-9.5 pe-7 ps-5 relative'>
|
||||||
<div className='w-full h-full absolute top-0 left-0 overflow-clip'>
|
<div className='w-full h-full absolute top-0 left-0 overflow-clip'>
|
||||||
@@ -94,7 +95,7 @@ function TransactionsIndex() {
|
|||||||
{coupons.map((coupon) => (
|
{coupons.map((coupon) => (
|
||||||
<article
|
<article
|
||||||
key={coupon.id}
|
key={coupon.id}
|
||||||
className='bg-container rounded-normal flex justify-between items-center'
|
className={glassSurfaceCardFlat('rounded-normal flex justify-between items-center')}
|
||||||
>
|
>
|
||||||
<div className='py-4 pe-7 ps-5 border-e-2 w-full border-border border-dashed'>
|
<div className='py-4 pe-7 ps-5 border-e-2 w-full border-border border-dashed'>
|
||||||
<h3 className='font-bold text-sm2'>مبلغ تخفیف: {formatDiscount(coupon)}</h3>
|
<h3 className='font-bold text-sm2'>مبلغ تخفیف: {formatDiscount(coupon)}</h3>
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import React from 'react'
|
|||||||
import { useGetTransactions } from './hooks/useTransactionData';
|
import { useGetTransactions } from './hooks/useTransactionData';
|
||||||
import { TransactionsTable } from './components/TransactionsTable';
|
import { TransactionsTable } from './components/TransactionsTable';
|
||||||
import LoadingOverlay from '@/components/overlays/LoadingOverlay';
|
import LoadingOverlay from '@/components/overlays/LoadingOverlay';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
function TransactionsReviewIndex() {
|
function TransactionsReviewIndex() {
|
||||||
const { data: transactionsResponse, isLoading: isLoadingTransactions } = useGetTransactions();
|
const { data: transactionsResponse, isLoading: isLoadingTransactions } = useGetTransactions();
|
||||||
@@ -56,7 +57,7 @@ function TransactionsReviewIndex() {
|
|||||||
</div>
|
</div>
|
||||||
</div> */}
|
</div> */}
|
||||||
|
|
||||||
<div className='w-full h-full bg-container rounded-3xl mt-0'>
|
<div className={glassSurfaceCard('w-full h-full mt-0 rounded-3xl')}>
|
||||||
<TransactionsTable transactions={transactions} />
|
<TransactionsTable transactions={transactions} />
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { Address } from './types/Types';
|
|||||||
import Prompt from '@/components/utils/Prompt';
|
import Prompt from '@/components/utils/Prompt';
|
||||||
import { toast } from '@/components/Toast';
|
import { toast } from '@/components/Toast';
|
||||||
import useToggle from '@/hooks/helpers/useToggle';
|
import useToggle from '@/hooks/helpers/useToggle';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
type Props = object
|
type Props = object
|
||||||
|
|
||||||
@@ -107,7 +108,7 @@ function UserAddressesPage({ }: Props) {
|
|||||||
addresses.map((address) => (
|
addresses.map((address) => (
|
||||||
<div
|
<div
|
||||||
key={address.id}
|
key={address.id}
|
||||||
className={`bg-container rounded-container w-full shadow-xl px-4 py-4 flex flex-col justify-between ${address.isDefault ? 'border border-primary' : ''}`}
|
className={glassSurfaceCard(`w-full px-4 py-4 flex flex-col justify-between ${address.isDefault ? 'border border-primary' : ''}`)}
|
||||||
>
|
>
|
||||||
<div className="flex justify-between items-start mb-2">
|
<div className="flex justify-between items-start mb-2">
|
||||||
<h2 className='text-sm font-medium'>{address.title}</h2>
|
<h2 className='text-sm font-medium'>{address.title}</h2>
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import Calendar from '@/components/ui/calendar';
|
|||||||
import { getDateLib } from "react-day-picker/persian";
|
import { getDateLib } from "react-day-picker/persian";
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useGetProfile, useSingleUpload, useUpdateProfile } from '../hooks/userProfileData';
|
import { useGetProfile, useSingleUpload, useUpdateProfile } from '../hooks/userProfileData';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
import { useFormik } from 'formik';
|
import { useFormik } from 'formik';
|
||||||
import * as Yup from 'yup';
|
import * as Yup from 'yup';
|
||||||
import { UpdateProfileType } from '../types/Types';
|
import { UpdateProfileType } from '../types/Types';
|
||||||
@@ -197,7 +198,7 @@ function ProfileIndex({ }: Props) {
|
|||||||
<h1 className='text-sm2 place-self-center font-medium'>ویرایش اطلاعات</h1>
|
<h1 className='text-sm2 place-self-center font-medium'>ویرایش اطلاعات</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form onSubmit={formik.handleSubmit} className="mt-8 flex-1 bg-container rounded-container w-full box-shadow-normal py-6 px-4 flex flex-col justify-between">
|
<form onSubmit={formik.handleSubmit} className={glassSurfaceCard('mt-8 flex-1 w-full py-6 px-4 flex flex-col justify-between')}>
|
||||||
<div className="bg-inherit">
|
<div className="bg-inherit">
|
||||||
<div className="justify-self-center w-fit relative text-center pb-10">
|
<div className="justify-self-center w-fit relative text-center pb-10">
|
||||||
<input
|
<input
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import Link from 'next/link';
|
|||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import { useGetProfile } from './hooks/userProfileData';
|
import { useGetProfile } from './hooks/userProfileData';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
type Props = object
|
type Props = object
|
||||||
|
|
||||||
@@ -43,7 +44,7 @@ function ProfileIndex({ }: Props) {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mt-8 flex-1 h-full bg-container rounded-container w-full box-shadow-normal py-6 px-4 flex flex-col justify-between">
|
<div className={glassSurfaceCard('mt-8 flex-1 h-full w-full py-6 px-4 flex flex-col justify-between')}>
|
||||||
|
|
||||||
<div className="">
|
<div className="">
|
||||||
<div className="flex items-center justify-start gap-3 pb-6 border-b-[1.5px] border-border">
|
<div className="flex items-center justify-start gap-3 pb-6 border-b-[1.5px] border-border">
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import { Key, KeySquare, Notification1, ArrowLeft, TickCircle } from 'iconsax-re
|
|||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import React, { Fragment, useState } from 'react'
|
import React, { Fragment, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
function UserSettingsIndex() {
|
function UserSettingsIndex() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -38,7 +39,7 @@ function UserSettingsIndex() {
|
|||||||
return (
|
return (
|
||||||
<section aria-labelledby="about-title" className='py-4 flex-1 h-full'>
|
<section aria-labelledby="about-title" className='py-4 flex-1 h-full'>
|
||||||
<section
|
<section
|
||||||
className="bg-container rounded-container shadow-container p-4">
|
className={glassSurfaceCard('p-4')}>
|
||||||
|
|
||||||
<div className="flex justify-between items-center pb-[25px]">
|
<div className="flex justify-between items-center pb-[25px]">
|
||||||
<h2 className='text-sm leading-5'>{data.TabNotifications.Heading}</h2>
|
<h2 className='text-sm leading-5'>{data.TabNotifications.Heading}</h2>
|
||||||
@@ -94,7 +95,7 @@ function UserSettingsIndex() {
|
|||||||
return (
|
return (
|
||||||
<section aria-labelledby="reviews-title" className='py-4'>
|
<section aria-labelledby="reviews-title" className='py-4'>
|
||||||
<section
|
<section
|
||||||
className="bg-container rounded-container shadow-container p-4">
|
className={glassSurfaceCard('p-4')}>
|
||||||
|
|
||||||
<div className="flex justify-between items-center pb-[25px]">
|
<div className="flex justify-between items-center pb-[25px]">
|
||||||
<h2 className='text-sm leading-5'>{data.TabPassword.Heading}</h2>
|
<h2 className='text-sm leading-5'>{data.TabPassword.Heading}</h2>
|
||||||
@@ -154,7 +155,7 @@ function UserSettingsIndex() {
|
|||||||
return (
|
return (
|
||||||
<section aria-labelledby="reviews-title" className='py-4'>
|
<section aria-labelledby="reviews-title" className='py-4'>
|
||||||
<div
|
<div
|
||||||
className="bg-container rounded-container shadow-container p-4">
|
className={glassSurfaceCard('p-4')}>
|
||||||
|
|
||||||
<div className="pb-4">
|
<div className="pb-4">
|
||||||
<h2 className='text-sm leading-5'>{data.TabAuthenticator.Heading}</h2>
|
<h2 className='text-sm leading-5'>{data.TabAuthenticator.Heading}</h2>
|
||||||
@@ -236,7 +237,7 @@ function UserSettingsIndex() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<section className='bg-container rounded-container shadow-container p-4'>
|
<section className={glassSurfaceCard('p-4')}>
|
||||||
<div className='flex justify-between items-center pb-4'>
|
<div className='flex justify-between items-center pb-4'>
|
||||||
<h2 className='text-sm leading-5'>{data.StatisticalParticipation.Heading}</h2>
|
<h2 className='text-sm leading-5'>{data.StatisticalParticipation.Heading}</h2>
|
||||||
<Switch
|
<Switch
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { ef, ue } from '@/lib/helpers/utfNumbers';
|
|||||||
import { ArrowLeft, ArrowRight, WalletMinus } from 'iconsax-react';
|
import { ArrowLeft, ArrowRight, WalletMinus } from 'iconsax-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import React, { useState } from 'react'
|
import React, { useState } from 'react'
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
type Props = object
|
type Props = object
|
||||||
|
|
||||||
@@ -34,7 +35,7 @@ function UserWalletIndex({ }: Props) {
|
|||||||
|
|
||||||
<form
|
<form
|
||||||
onSubmit={chargeAction}
|
onSubmit={chargeAction}
|
||||||
className="mt-8 flex-1 h-full bg-container rounded-container w-full box-shadow-normal py-6 px-4 flex flex-col justify-between">
|
className={glassSurfaceCard('mt-8 flex-1 h-full w-full py-6 px-4 flex flex-col justify-between')}>
|
||||||
|
|
||||||
<div className="">
|
<div className="">
|
||||||
<div className="flex items-center justify-center text-center gap-4 pb-6 border-b-[1.5px] border-border">
|
<div className="flex items-center justify-center text-center gap-4 pb-6 border-b-[1.5px] border-border">
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { TabHeader, TabItemProps } from './TabHeader';
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import TabHeaderRenderer from './TabHeaderRenderer';
|
import TabHeaderRenderer from './TabHeaderRenderer';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
|
import { glassSurfaceNav } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
itemRenderer?: (child: ReactNode, index: number) => ReactElement;
|
itemRenderer?: (child: ReactNode, index: number) => ReactElement;
|
||||||
@@ -38,7 +39,7 @@ export type TabContainerClassName = {
|
|||||||
|
|
||||||
export const TabContainerClassNames: TabContainerClassName = {
|
export const TabContainerClassNames: TabContainerClassName = {
|
||||||
wrapper: 'h-full',
|
wrapper: 'h-full',
|
||||||
scrollView: 'h-[72px] gradient-border !pt-3 !pb-2 w-full overflow-y-hidden bg-[#FFFFFF70] dark:bg-container/70 justify-center rounded-[32px] inline-flex items-center gap-10',
|
scrollView: glassSurfaceNav('h-[72px] gradient-border !pt-3 !pb-2 w-full overflow-y-hidden justify-center rounded-[32px] inline-flex items-center gap-10'),
|
||||||
header: '',
|
header: '',
|
||||||
headerDeactive: '',
|
headerDeactive: '',
|
||||||
headerActive: '',
|
headerActive: '',
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
// import LoadingOverlay from '@/components/overlays/LoadingOverlay';
|
// import LoadingOverlay from '@/components/overlays/LoadingOverlay';
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
import { glassSurfaceCard } from '@/lib/styles/glassSurface';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
isPending: boolean,
|
isPending: boolean,
|
||||||
@@ -24,7 +25,7 @@ function AuthFormWrapper({ children, isPending, onSubmit, ...restProps }: Props)
|
|||||||
onSubmit={handleSubmit}
|
onSubmit={handleSubmit}
|
||||||
className='p-6 lg:py-[75px] w-full flex items-center justify-center py-4 lg:items-center lg:px-10 px-4 drop-shadow-black h-full'
|
className='p-6 lg:py-[75px] w-full flex items-center justify-center py-4 lg:items-center lg:px-10 px-4 drop-shadow-black h-full'
|
||||||
>
|
>
|
||||||
<div className='relative h-full w-full px-4 sm:px-6 lg:p-0 flex flex-col max-h-[812px] max-w-[1200px] bg-container rounded-container overflow-clip lg:flex-row justify-between'>
|
<div className={glassSurfaceCard('relative h-full w-full px-4 sm:px-6 lg:p-0 flex flex-col max-h-[812px] max-w-[1200px] overflow-clip lg:flex-row justify-between')}>
|
||||||
{children}
|
{children}
|
||||||
{/* <LoadingOverlay visible={isPending} bgOpacity={0} /> */}
|
{/* <LoadingOverlay visible={isPending} bgOpacity={0} /> */}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import Image from 'next/image'
|
|||||||
import React, { useState } from 'react'
|
import React, { useState } from 'react'
|
||||||
import type { ChangeEvent } from 'react'
|
import type { ChangeEvent } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
import { glassSurfaceFlat } from '@/lib/styles/glassSurface'
|
||||||
import { useFormik } from 'formik'
|
import { useFormik } from 'formik'
|
||||||
import * as Yup from 'yup'
|
import * as Yup from 'yup'
|
||||||
import { useOtpRequest } from '@/app/auth/login/hooks/useAuthData'
|
import { useOtpRequest } from '@/app/auth/login/hooks/useAuthData'
|
||||||
@@ -115,7 +116,7 @@ function StepEnterNumber(_props: StepEnterNumberProps = {}) {
|
|||||||
inputMode='tel'
|
inputMode='tel'
|
||||||
autoComplete='tel'
|
autoComplete='tel'
|
||||||
dir='ltr'
|
dir='ltr'
|
||||||
className='mt-10 w-full bg-container'
|
className={glassSurfaceFlat('mt-10 w-full')}
|
||||||
inputClassName='text-left dltr'
|
inputClassName='text-left dltr'
|
||||||
htmlFor={AUTH_PAGE_ELEMENT.INPUT_PHONE}
|
htmlFor={AUTH_PAGE_ELEMENT.INPUT_PHONE}
|
||||||
labelText={t('Enter.LabelPhoneNumber')}
|
labelText={t('Enter.LabelPhoneNumber')}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import Image from 'next/image'
|
|||||||
import Link from 'next/link'
|
import Link from 'next/link'
|
||||||
import React, { useEffect, useState } from 'react'
|
import React, { useEffect, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
import { glassSurfaceFlat } from '@/lib/styles/glassSurface'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
onChange: ((e: React.ChangeEvent<HTMLInputElement>) => void) &
|
onChange: ((e: React.ChangeEvent<HTMLInputElement>) => void) &
|
||||||
@@ -68,7 +69,7 @@ function StepEnterPassword ({
|
|||||||
aria-errormessage={error}
|
aria-errormessage={error}
|
||||||
autoFocus
|
autoFocus
|
||||||
autoComplete='current-password'
|
autoComplete='current-password'
|
||||||
className='mt-10 bg-container'
|
className={glassSurfaceFlat('mt-10')}
|
||||||
htmlFor={AUTH_PAGE_ELEMENT.INPUT_PASSWORD}
|
htmlFor={AUTH_PAGE_ELEMENT.INPUT_PASSWORD}
|
||||||
labelText={t('EnterPass.LabelPass')}
|
labelText={t('EnterPass.LabelPass')}
|
||||||
value={value}
|
value={value}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { AUTH_PAGE_ELEMENT } from '@/enums'
|
|||||||
import Image from 'next/image'
|
import Image from 'next/image'
|
||||||
import React, { useEffect, useState } from 'react'
|
import React, { useEffect, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
import { glassSurfaceFlat } from '@/lib/styles/glassSurface'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
onChange: ((e: React.ChangeEvent<HTMLInputElement>) => void) &
|
onChange: ((e: React.ChangeEvent<HTMLInputElement>) => void) &
|
||||||
@@ -84,7 +85,7 @@ function StepNewPassword ({
|
|||||||
valid={!hasError()}
|
valid={!hasError()}
|
||||||
aria-errormessage={error}
|
aria-errormessage={error}
|
||||||
autoComplete='new-password'
|
autoComplete='new-password'
|
||||||
className='mt-10 bg-container'
|
className={glassSurfaceFlat('mt-10')}
|
||||||
htmlFor={AUTH_PAGE_ELEMENT.INPUT_PASSWORD}
|
htmlFor={AUTH_PAGE_ELEMENT.INPUT_PASSWORD}
|
||||||
labelText={t('NewPassword.LabelPass')}
|
labelText={t('NewPassword.LabelPass')}
|
||||||
value={value}
|
value={value}
|
||||||
@@ -108,7 +109,7 @@ function StepNewPassword ({
|
|||||||
valid={!hasError(error2)}
|
valid={!hasError(error2)}
|
||||||
aria-errormessage={error2}
|
aria-errormessage={error2}
|
||||||
autoComplete='new-password'
|
autoComplete='new-password'
|
||||||
className='mt-6 bg-container'
|
className={glassSurfaceFlat('mt-6')}
|
||||||
htmlFor={AUTH_PAGE_ELEMENT.INPUT_PASSWORD_REPEAT}
|
htmlFor={AUTH_PAGE_ELEMENT.INPUT_PASSWORD_REPEAT}
|
||||||
labelText={t('NewPassword.LabelRepeatPass')}
|
labelText={t('NewPassword.LabelRepeatPass')}
|
||||||
value={repeatValue}
|
value={repeatValue}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { useBulkCart } from '@/app/[name]/(Main)/cart/hooks/useCartData'
|
|||||||
import { setRefreshToken, setToken } from '@/lib/api/func'
|
import { setRefreshToken, setToken } from '@/lib/api/func'
|
||||||
import { useSearchParams } from 'next/navigation'
|
import { useSearchParams } from 'next/navigation'
|
||||||
import { AUTH_PAGE_ELEMENT } from '@/enums'
|
import { AUTH_PAGE_ELEMENT } from '@/enums'
|
||||||
|
import { glassSurfaceFlat } from '@/lib/styles/glassSurface'
|
||||||
import clsx from 'clsx'
|
import clsx from 'clsx'
|
||||||
import { formatCountdown } from '@/hooks/useCountdown'
|
import { formatCountdown } from '@/hooks/useCountdown'
|
||||||
|
|
||||||
@@ -110,7 +111,7 @@ const StepOtp = ({ phone, slug, timerRunning, secondsLeft, onResend, isResendPen
|
|||||||
type='tel'
|
type='tel'
|
||||||
autoComplete="one-time-code"
|
autoComplete="one-time-code"
|
||||||
inputMode="numeric"
|
inputMode="numeric"
|
||||||
className='w-full h-[45px] sm:h-[50px] flex-1 mx-1 sm:mx-2 bg-container border border-border text-foreground outline-0 rounded-[10px] text-center text-sm' />
|
className={glassSurfaceFlat('w-full h-[45px] sm:h-[50px] flex-1 mx-1 sm:mx-2 border border-border text-foreground outline-0 rounded-[10px] text-center text-sm')} />
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,3 +20,13 @@ export function glassSurfaceFlat(...extra: ClassValue[]) {
|
|||||||
export function glassSurfaceSelected(...extra: ClassValue[]) {
|
export function glassSurfaceSelected(...extra: ClassValue[]) {
|
||||||
return clsx(GLASS_SURFACE, GLASS_SURFACE_SELECTED, extra);
|
return clsx(GLASS_SURFACE, GLASS_SURFACE_SELECTED, extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Page-level card sections (about, cart, profile, etc.) */
|
||||||
|
export function glassSurfaceCard(...extra: ClassValue[]) {
|
||||||
|
return clsx(GLASS_SURFACE, "rounded-container", extra);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Nested / secondary card sections with no shadow */
|
||||||
|
export function glassSurfaceCardFlat(...extra: ClassValue[]) {
|
||||||
|
return clsx(GLASS_SURFACE, GLASS_SURFACE_FLAT, "rounded-container", extra);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user