From fbc682b41f517b44cb0876d9336729696f810753 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Fri, 7 Mar 2025 16:13:58 +0300 Subject: [PATCH] add contacts scroller --- apps/web/app/(main)/orders/add/page.tsx | 15 +++- .../orders/components/contacts-scroller.tsx | 64 ++++++++++++++++++ .../web/components/orders/components/index.ts | 1 + apps/web/components/orders/index.ts | 1 + apps/web/components/orders/order-form.tsx | 9 +++ apps/web/public/avatar/avatar_placeholder.png | Bin 0 -> 2011 bytes 6 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 apps/web/components/orders/components/contacts-scroller.tsx create mode 100644 apps/web/components/orders/components/index.ts create mode 100644 apps/web/components/orders/index.ts create mode 100644 apps/web/components/orders/order-form.tsx create mode 100644 apps/web/public/avatar/avatar_placeholder.png diff --git a/apps/web/app/(main)/orders/add/page.tsx b/apps/web/app/(main)/orders/add/page.tsx index bf5b793..a917e2d 100644 --- a/apps/web/app/(main)/orders/add/page.tsx +++ b/apps/web/app/(main)/orders/add/page.tsx @@ -1,3 +1,14 @@ -export default function AddOrdersPage() { - return 'Add Orders'; +import { Container } from '@/components/layout'; +import { PageHeader } from '@/components/navigation'; +import { OrderForm } from '@/components/orders'; + +export default async function AddOrdersPage() { + return ( + <> + + + + + + ); } diff --git a/apps/web/components/orders/components/contacts-scroller.tsx b/apps/web/components/orders/components/contacts-scroller.tsx new file mode 100644 index 0000000..cd21a4a --- /dev/null +++ b/apps/web/components/orders/components/contacts-scroller.tsx @@ -0,0 +1,64 @@ +'use client'; +import { LoadingSpinner } from '../../common/spinner'; +import { useCustomerContacts } from '@/hooks/contacts'; +// eslint-disable-next-line import/extensions +import AvatarPlaceholder from '@/public/avatar/avatar_placeholder.png'; +import { Label } from '@repo/ui/components/ui/label'; +import { cn } from '@repo/ui/lib/utils'; +import Image from 'next/image'; +import { useState } from 'react'; + +export function ContactsScroller() { + const [selected, setSelected] = useState(null); + const { contacts, isLoading } = useCustomerContacts(); + + if (isLoading) return ; + + return ( +
+
+
+ {contacts.map((contact) => { + if (!contact) return null; + + return ( + + ); + })} +
+
+
+ ); +} diff --git a/apps/web/components/orders/components/index.ts b/apps/web/components/orders/components/index.ts new file mode 100644 index 0000000..50c9fb1 --- /dev/null +++ b/apps/web/components/orders/components/index.ts @@ -0,0 +1 @@ +export * from './contacts-scroller'; diff --git a/apps/web/components/orders/index.ts b/apps/web/components/orders/index.ts new file mode 100644 index 0000000..180a379 --- /dev/null +++ b/apps/web/components/orders/index.ts @@ -0,0 +1 @@ +export * from './order-form'; diff --git a/apps/web/components/orders/order-form.tsx b/apps/web/components/orders/order-form.tsx new file mode 100644 index 0000000..95656cb --- /dev/null +++ b/apps/web/components/orders/order-form.tsx @@ -0,0 +1,9 @@ +import { ContactsScroller } from './components'; + +export function OrderForm() { + return ( +
+ +
+ ); +} diff --git a/apps/web/public/avatar/avatar_placeholder.png b/apps/web/public/avatar/avatar_placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..09892098aa943af5fe95e7dd434a07fe03e7ccd1 GIT binary patch literal 2011 zcmV<12PF83P)D!y%g4vZ*x1<2%*?Q`u)x5;+S=OH)zz}HvdGBD zw6wIs!oteR%FWHqrlzLJ$;r^r(7(UGt*x!9s;a}o!>FjJ#>U3Iy}i%R&$YF+x3{;h zuCCtR-nO>3udlDMv9Z$9(zv*|ySuyA*4EqG+ZlWNivR!y*-1n}RCr$O+*gj>NDPM2 zpNco<96RTn9rwSi8F&oCZFlz#Qq{xgJ4+x4LZrx&UjP6A00000000000000000000 z0000000000h)13Iv~gIg9X6)(&Ma2$kko6>k^LchuGJIe1?9VT%ih&$-<6da;(GtY zRygU`V`YKSGPJdX%aOK)>O)}bd#Gv~*uA$6-S28s*y-CA`a9YL;;WKvrF0c*ZKyul z)*h=`7wH^W2Elqsjqd}?Xz*Ptp%PkVVMQxo5?Bs`i9Upe<)onxU}?Eo>Ro7Cj@nv* ze0H1D=vvOYdIRQ`ySe^?YRPg}s_G9&F3o|+E;KJf72K|Qva4ddGB4O%8ki>o6?HI`i*6#+w#5|Y?<y|LwN+|wJ-DOs*c9lZ(lz;YDS^$r~880p|x z??Sy~IVsik0el`?F2Y>=KFtcZ1R zaGELyc&axa?H!NJ`jhg5v~%-y@6vvAx%c&^lgbGsy=v!Q)n20Y000000000000000 z0000001(G=0_9$3(l{U9f4Ydqf&CDSql-`X!}G?Z(<>_@q?M!EmqlnRgo`h=qe`mH zp^F!L#dKMP=0-j66q)X!m2_UKU< z?=gcl`PrjD-Z_UQ!Oo*l-Y$R@ac4on7M&O-j9L_~HG+QG8x@#l(9NwQst~Om6uTU# z#^D0B?jkA@-9e`x4^-yi2NWuOs^gbXXX{ZRZwp;qmr8Y=vc4+;?DuSiV=6Wdp+vB! zYWn~xgnKHt51~MOqTGjPD@PoaW3S(TV1qAdpLGPU;{}n+CNZ&z1&l zAk)yBhI<>K$Szko#25&!NK0f~qZEphQ8{ z3aIf)#a^Mvnrf|~$}^REhB95M)P*|TX3iCPq&kn#$aR|+5*6uFl|Ix;s7M0Ewp3#a z)kYpw@J3LsOsPOxLcOd<@p>5y2p=fiLkJUGpQ800tayqjR`dizEyTFw96Gb|` z!YX_?aV~Q~zz%VD}8+~-=U|TkA>Od+oZ}G}nbJRjS zi+DxREJj@nPrRDb5Owl07n$q)ia(q8)f$NXg*KhY?6EB-U9U5WqIxO65S z|C%@HT<{BxaK1b6FYI^o5WlAp7RhA6Kem`8MTkGt$mX+;7JpOgV>ZtqfL8IK*!Dm6 zzQ>>P{QXCNTMXj=+Nnb$0D%|)f;hy>mx(1hlm3f?BA8dZ4V=5bdfd6DDtbSk-BC3w tPksUb00000000000000000000fEW70#Mag`cL)Fg002ovPDHLkV1gNB=am2e literal 0 HcmV?d00001