glass other page

This commit is contained in:
hamid zarghami
2026-06-21 15:02:18 +03:30
parent de45b1f197
commit d34a3a92f1
33 changed files with 106 additions and 65 deletions
+4 -3
View File
@@ -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
View File
@@ -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>
+9 -9
View File
@@ -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" />
+3 -2
View File
@@ -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>
+2 -1
View File
@@ -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) => {
+4 -3
View File
@@ -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) ? (
+3 -2
View File
@@ -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>
+2 -1
View File
@@ -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
+2 -1
View File
@@ -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">
+2 -1
View File
@@ -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}
+2 -1
View File
@@ -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>
+10
View File
@@ -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);
}