diff --git a/apps/web/components/common/spinner.tsx b/apps/web/components/common/spinner.tsx deleted file mode 100644 index 2d31776..0000000 --- a/apps/web/components/common/spinner.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Loader2 } from 'lucide-react'; - -export function LoadingSpinner() { - return ( -
- -
- ); -} diff --git a/apps/web/components/contacts/contacts-list.tsx b/apps/web/components/contacts/contacts-list.tsx index 748424b..d3f890d 100644 --- a/apps/web/components/contacts/contacts-list.tsx +++ b/apps/web/components/contacts/contacts-list.tsx @@ -1,9 +1,9 @@ 'use client'; -import { LoadingSpinner } from '../common/spinner'; import { useCustomerContacts } from '@/hooks/api/contacts'; import * as GQL from '@repo/graphql/types'; import { Avatar, AvatarFallback, AvatarImage } from '@repo/ui/components/ui/avatar'; +import { LoadingSpinner } from '@repo/ui/components/ui/spinner'; import Link from 'next/link'; import { memo } from 'react'; diff --git a/apps/web/components/navigation/bottom-nav.tsx b/apps/web/components/navigation/bottom-nav/index.tsx similarity index 94% rename from apps/web/components/navigation/bottom-nav.tsx rename to apps/web/components/navigation/bottom-nav/index.tsx index 36d3ac0..ee74506 100644 --- a/apps/web/components/navigation/bottom-nav.tsx +++ b/apps/web/components/navigation/bottom-nav/index.tsx @@ -1,6 +1,6 @@ 'use client'; -import { NavButton } from './components/nav-button'; +import { NavButton } from './nav-button'; import { BookOpen, Newspaper, PlusCircle, User, Users } from 'lucide-react'; import { usePathname } from 'next/navigation'; diff --git a/apps/web/components/navigation/components/nav-button.tsx b/apps/web/components/navigation/bottom-nav/nav-button.tsx similarity index 100% rename from apps/web/components/navigation/components/nav-button.tsx rename to apps/web/components/navigation/bottom-nav/nav-button.tsx diff --git a/apps/web/components/navigation/components/back-button.tsx b/apps/web/components/navigation/header/back-button.tsx similarity index 100% rename from apps/web/components/navigation/components/back-button.tsx rename to apps/web/components/navigation/header/back-button.tsx diff --git a/apps/web/components/navigation/header.tsx b/apps/web/components/navigation/header/index.tsx similarity index 85% rename from apps/web/components/navigation/header.tsx rename to apps/web/components/navigation/header/index.tsx index d8c70d9..59f83d0 100644 --- a/apps/web/components/navigation/header.tsx +++ b/apps/web/components/navigation/header/index.tsx @@ -1,6 +1,6 @@ 'use client'; -import { BackButton } from './components/back-button'; +import { BackButton } from './back-button'; type Props = { title: string | undefined }; diff --git a/apps/web/components/orders/components/index.ts b/apps/web/components/orders/components/index.ts deleted file mode 100644 index 6b7f476..0000000 --- a/apps/web/components/orders/components/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from './back-button'; -export * from './contacts-grid'; -export * from './datetime-select'; -export * from './next-button'; -export * from './result'; -export * from './service-select'; -export * from './submit-button'; diff --git a/apps/web/components/orders/components/back-button.tsx b/apps/web/components/orders/order-form/back-button.tsx similarity index 100% rename from apps/web/components/orders/components/back-button.tsx rename to apps/web/components/orders/order-form/back-button.tsx diff --git a/apps/web/components/orders/components/contacts-grid.tsx b/apps/web/components/orders/order-form/contacts-grid.tsx similarity index 98% rename from apps/web/components/orders/components/contacts-grid.tsx rename to apps/web/components/orders/order-form/contacts-grid.tsx index 903f308..c44fe5e 100644 --- a/apps/web/components/orders/components/contacts-grid.tsx +++ b/apps/web/components/orders/order-form/contacts-grid.tsx @@ -1,6 +1,5 @@ 'use client'; -import { LoadingSpinner } from '@/components/common/spinner'; import { CardSectionHeader } from '@/components/ui'; import { ContactsContextProvider } from '@/context/contacts'; import { useCustomerContacts } from '@/hooks/api/contacts'; @@ -11,6 +10,7 @@ import { withContext } from '@/utils/context'; import { type CustomerFieldsFragment } from '@repo/graphql/types'; import { Card } from '@repo/ui/components/ui/card'; import { Label } from '@repo/ui/components/ui/label'; +import { LoadingSpinner } from '@repo/ui/components/ui/spinner'; import { cn } from '@repo/ui/lib/utils'; import Image from 'next/image'; import { useEffect } from 'react'; diff --git a/apps/web/components/orders/components/datetime-select.tsx b/apps/web/components/orders/order-form/datetime-select.tsx similarity index 100% rename from apps/web/components/orders/components/datetime-select.tsx rename to apps/web/components/orders/order-form/datetime-select.tsx diff --git a/apps/web/components/orders/order-form.tsx b/apps/web/components/orders/order-form/index.tsx similarity index 73% rename from apps/web/components/orders/order-form.tsx rename to apps/web/components/orders/order-form/index.tsx index 0a613bf..943a28a 100644 --- a/apps/web/components/orders/order-form.tsx +++ b/apps/web/components/orders/order-form/index.tsx @@ -1,19 +1,15 @@ 'use client'; -import { LoadingSpinner } from '../common/spinner'; -import { - BackButton, - ClientsGrid, - DateTimeSelect, - ErrorPage, - MastersGrid, - NextButton, - ServiceSelect, - SuccessPage, -} from './components'; -import { SubmitButton } from './components/submit-button'; +import { BackButton } from './back-button'; +import { ClientsGrid, MastersGrid } from './contacts-grid'; +import { DateTimeSelect } from './datetime-select'; +import { NextButton } from './next-button'; +import { ErrorPage, SuccessPage } from './result'; +import { ServiceSelect } from './service-select'; +import { SubmitButton } from './submit-button'; import { OrderStoreProvider, useInitOrderStore, useOrderStore } from '@/stores/order'; import { withContext } from '@/utils/context'; +import { LoadingSpinner } from '@repo/ui/components/ui/spinner'; import { type JSX } from 'react'; const STEP_COMPONENTS: Record = { diff --git a/apps/web/components/orders/components/next-button.tsx b/apps/web/components/orders/order-form/next-button.tsx similarity index 100% rename from apps/web/components/orders/components/next-button.tsx rename to apps/web/components/orders/order-form/next-button.tsx diff --git a/apps/web/components/orders/components/result.tsx b/apps/web/components/orders/order-form/result.tsx similarity index 100% rename from apps/web/components/orders/components/result.tsx rename to apps/web/components/orders/order-form/result.tsx diff --git a/apps/web/components/orders/components/service-select.tsx b/apps/web/components/orders/order-form/service-select.tsx similarity index 100% rename from apps/web/components/orders/components/service-select.tsx rename to apps/web/components/orders/order-form/service-select.tsx diff --git a/apps/web/components/orders/components/submit-button.tsx b/apps/web/components/orders/order-form/submit-button.tsx similarity index 100% rename from apps/web/components/orders/components/submit-button.tsx rename to apps/web/components/orders/order-form/submit-button.tsx diff --git a/apps/web/components/profile/components/index.ts b/apps/web/components/profile/components/index.ts deleted file mode 100644 index a1e6bef..0000000 --- a/apps/web/components/profile/components/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './checkbox-field'; -export * from './link-button'; -export * from './text-field'; diff --git a/apps/web/components/profile/components/checkbox-field.tsx b/apps/web/components/profile/data-card/checkbox-field.tsx similarity index 100% rename from apps/web/components/profile/components/checkbox-field.tsx rename to apps/web/components/profile/data-card/checkbox-field.tsx diff --git a/apps/web/components/profile/data-card.tsx b/apps/web/components/profile/data-card/index.tsx similarity index 91% rename from apps/web/components/profile/data-card.tsx rename to apps/web/components/profile/data-card/index.tsx index f13993f..1aae939 100644 --- a/apps/web/components/profile/data-card.tsx +++ b/apps/web/components/profile/data-card/index.tsx @@ -1,8 +1,9 @@ 'use client'; -import { CardSectionHeader } from '../ui'; -import { CheckboxWithText, DataField } from './components'; -import { type ProfileProps } from './types'; +import { type ProfileProps } from '../types'; +import { CheckboxWithText } from './checkbox-field'; +import { DataField } from './text-field'; +import { CardSectionHeader } from '@/components/ui'; import { useCustomerMutation, useCustomerQuery } from '@/hooks/api/customers'; import { Enum_Customer_Role as Role } from '@repo/graphql/types'; import { Button } from '@repo/ui/components/ui/button'; diff --git a/apps/web/components/profile/components/text-field.tsx b/apps/web/components/profile/data-card/text-field.tsx similarity index 100% rename from apps/web/components/profile/components/text-field.tsx rename to apps/web/components/profile/data-card/text-field.tsx diff --git a/apps/web/components/profile/links-card.tsx b/apps/web/components/profile/links-card/index.tsx similarity index 88% rename from apps/web/components/profile/links-card.tsx rename to apps/web/components/profile/links-card/index.tsx index b6f8262..b938d54 100644 --- a/apps/web/components/profile/links-card.tsx +++ b/apps/web/components/profile/links-card/index.tsx @@ -1,8 +1,8 @@ /* eslint-disable canonical/id-match */ 'use client'; -import { LinkButton } from './components'; -import { type ProfileProps } from './types'; +import { type ProfileProps } from '../types'; +import { LinkButton } from './link-button'; import { useCustomerQuery } from '@/hooks/api/customers'; import { Enum_Customer_Role } from '@repo/graphql/types'; diff --git a/apps/web/components/profile/components/link-button.tsx b/apps/web/components/profile/links-card/link-button.tsx similarity index 100% rename from apps/web/components/profile/components/link-button.tsx rename to apps/web/components/profile/links-card/link-button.tsx diff --git a/apps/web/components/profile/person-card.tsx b/apps/web/components/profile/person-card.tsx index f7ac660..a7f7a1b 100644 --- a/apps/web/components/profile/person-card.tsx +++ b/apps/web/components/profile/person-card.tsx @@ -1,10 +1,10 @@ 'use client'; -import { LoadingSpinner } from '../common/spinner'; import { type ProfileProps } from './types'; import { useCustomerQuery } from '@/hooks/api/customers'; import { Avatar, AvatarFallback, AvatarImage } from '@repo/ui/components/ui/avatar'; import { Card } from '@repo/ui/components/ui/card'; +import { LoadingSpinner } from '@repo/ui/components/ui/spinner'; export function PersonCard({ telegramId }: Readonly) { const { data: { customer } = {}, isLoading } = useCustomerQuery({ telegramId }); diff --git a/apps/web/components/schedule/day-slot-add-form.tsx b/apps/web/components/schedule/day-slots-list/day-slot-add-form.tsx similarity index 94% rename from apps/web/components/schedule/day-slot-add-form.tsx rename to apps/web/components/schedule/day-slots-list/day-slot-add-form.tsx index f8990e8..b0633c9 100644 --- a/apps/web/components/schedule/day-slot-add-form.tsx +++ b/apps/web/components/schedule/day-slots-list/day-slot-add-form.tsx @@ -1,7 +1,7 @@ /* eslint-disable canonical/id-match */ 'use client'; -import { EditableTimeRangeForm } from './components/time-range'; +import { EditableTimeRangeForm } from '@/components/shared/time-range'; import { useSlotCreate } from '@/hooks/api/slots'; import { ScheduleStoreProvider, useScheduleStore } from '@/stores/schedule'; import { withContext } from '@/utils/context'; diff --git a/apps/web/components/schedule/day-slots-list.tsx b/apps/web/components/schedule/day-slots-list/index.tsx similarity index 85% rename from apps/web/components/schedule/day-slots-list.tsx rename to apps/web/components/schedule/day-slots-list/index.tsx index 40007c5..a432993 100644 --- a/apps/web/components/schedule/day-slots-list.tsx +++ b/apps/web/components/schedule/day-slots-list/index.tsx @@ -1,10 +1,10 @@ 'use client'; -import { SlotCard } from './components/slot-card'; import { DaySlotAddForm } from './day-slot-add-form'; -import { LoadingSpinner } from '@/components/common/spinner'; +import { SlotCard } from './slot-card'; import { DateContext } from '@/context/date'; import { useSlotsQuery } from '@/hooks/api/slots'; +import { LoadingSpinner } from '@repo/ui/components/ui/spinner'; import { use } from 'react'; export function DaySlotsList() { diff --git a/apps/web/components/schedule/components/slot-card.tsx b/apps/web/components/schedule/day-slots-list/slot-card.tsx similarity index 100% rename from apps/web/components/schedule/components/slot-card.tsx rename to apps/web/components/schedule/day-slots-list/slot-card.tsx diff --git a/apps/web/components/schedule/index.ts b/apps/web/components/schedule/index.ts index 0251181..5fd891e 100644 --- a/apps/web/components/schedule/index.ts +++ b/apps/web/components/schedule/index.ts @@ -1,5 +1,4 @@ export * from './calendar'; -export * from './day-slot-add-form'; export * from './day-slots-list'; export * from './slot-buttons'; export * from './slot-datetime'; diff --git a/apps/web/components/schedule/slot-datetime.tsx b/apps/web/components/schedule/slot-datetime/index.tsx similarity index 70% rename from apps/web/components/schedule/slot-datetime.tsx rename to apps/web/components/schedule/slot-datetime/index.tsx index dd213b3..4c84846 100644 --- a/apps/web/components/schedule/slot-datetime.tsx +++ b/apps/web/components/schedule/slot-datetime/index.tsx @@ -1,8 +1,8 @@ 'use client'; -import { SlotDate } from './components/slot-date'; -import { SlotTime } from './components/slot-time'; -import { type SlotComponentProps } from './types'; +import { type SlotComponentProps } from '../types'; +import { SlotDate } from './slot-date'; +import { SlotTime } from './slot-time'; import { ScheduleStoreProvider } from '@/stores/schedule'; import { withContext } from '@/utils/context'; diff --git a/apps/web/components/schedule/components/slot-date.tsx b/apps/web/components/schedule/slot-datetime/slot-date.tsx similarity index 100% rename from apps/web/components/schedule/components/slot-date.tsx rename to apps/web/components/schedule/slot-datetime/slot-date.tsx diff --git a/apps/web/components/schedule/components/slot-time.tsx b/apps/web/components/schedule/slot-datetime/slot-time.tsx similarity index 95% rename from apps/web/components/schedule/components/slot-time.tsx rename to apps/web/components/schedule/slot-datetime/slot-time.tsx index 4006960..7fa5a66 100644 --- a/apps/web/components/schedule/components/slot-time.tsx +++ b/apps/web/components/schedule/slot-datetime/slot-time.tsx @@ -2,8 +2,7 @@ 'use client'; import { type SlotComponentProps } from '../types'; -import { EditableTimeRangeForm } from './time-range'; -import { ReadonlyTimeRange } from '@/components/shared/time-range'; +import { EditableTimeRangeForm, ReadonlyTimeRange } from '@/components/shared/time-range'; import { useSlotMutation, useSlotQuery } from '@/hooks/api/slots'; import { useZustandStore } from '@/stores/schedule'; import { Button } from '@repo/ui/components/ui/button'; diff --git a/apps/web/components/schedule/slot-orders-list.tsx b/apps/web/components/schedule/slot-orders-list.tsx index 7880ddd..a0a1e6c 100644 --- a/apps/web/components/schedule/slot-orders-list.tsx +++ b/apps/web/components/schedule/slot-orders-list.tsx @@ -1,7 +1,7 @@ 'use client'; -import { OrderCard } from '../shared/order-card'; import { type SlotComponentProps } from './types'; +import { OrderCard } from '@/components/shared/order-card'; import { useSlotQuery } from '@/hooks/api/slots'; export function SlotOrdersList({ documentId }: Readonly) { diff --git a/apps/web/components/shared/order-card.tsx b/apps/web/components/shared/order-card.tsx index 2227033..125674a 100644 --- a/apps/web/components/shared/order-card.tsx +++ b/apps/web/components/shared/order-card.tsx @@ -2,7 +2,7 @@ 'use client'; import { type OrderClient, type OrderComponentProps } from '../schedule/types'; -import { ReadonlyTimeRange } from './time-range'; +import { ReadonlyTimeRange } from './time-range/readonly'; import { useOrderQuery } from '@/hooks/api/orders'; import { Enum_Order_State } from '@repo/graphql/types'; import { Avatar, AvatarFallback, AvatarImage } from '@repo/ui/components/ui/avatar'; diff --git a/apps/web/components/schedule/components/time-range.tsx b/apps/web/components/shared/time-range/editable.tsx similarity index 99% rename from apps/web/components/schedule/components/time-range.tsx rename to apps/web/components/shared/time-range/editable.tsx index 3ab64c9..47e2727 100644 --- a/apps/web/components/schedule/components/time-range.tsx +++ b/apps/web/components/shared/time-range/editable.tsx @@ -1,4 +1,5 @@ 'use client'; + import { useScheduleStore } from '@/stores/schedule'; import { Input } from '@repo/ui/components/ui/input'; import { type FormEvent, type PropsWithChildren } from 'react'; diff --git a/apps/web/components/shared/time-range/index.ts b/apps/web/components/shared/time-range/index.ts new file mode 100644 index 0000000..291f5af --- /dev/null +++ b/apps/web/components/shared/time-range/index.ts @@ -0,0 +1,2 @@ +export * from './editable'; +export * from './readonly'; diff --git a/apps/web/components/shared/time-range.tsx b/apps/web/components/shared/time-range/readonly.tsx similarity index 100% rename from apps/web/components/shared/time-range.tsx rename to apps/web/components/shared/time-range/readonly.tsx