Skip to content

Commit 8ab5df6

Browse files
authored
Merge pull request #465 from Leo-Corporation/vNext
Version 1.9.0.2407
2 parents 561c209 + 36b1f4c commit 8ab5df6

16 files changed

+2893
-630
lines changed

components/history-card.tsx

+83-13
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
DrawerTrigger,
3434
} from "./ui/drawer";
3535
import { getLabelFromValue } from "@/lib/barcodeTypes";
36+
import { ScrollArea } from "./ui/scroll-area";
3637

3738
export default function HistoryItem(props: {
3839
item: GeneratedItem;
@@ -123,6 +124,9 @@ export default function HistoryItem(props: {
123124
isQrCode(props.item.bcid) ? "qrcode" : "barcode",
124125
);
125126
}
127+
128+
const keys = props.item.metadata ? Object.keys(props.item.metadata) : [];
129+
const vals = props.item.metadata ? Object.values(props.item.metadata) : [];
126130
return (
127131
<div className="m-2 flex w-[230px] flex-col items-center justify-center rounded-md bg-white p-3 shadow-md dark:bg-slate-900">
128132
{isQrCode(props.item.bcid) ? (
@@ -156,17 +160,57 @@ export default function HistoryItem(props: {
156160
<DialogContent className="bg-white dark:bg-slate-900">
157161
<DialogHeader>
158162
<DialogTitle>
159-
{t("preview")} - {props.item.text}
163+
{t("preview")} -{" "}
164+
{props.item.metadata
165+
? t("interactive")
166+
: props.item.text}
160167
</DialogTitle>
161168
</DialogHeader>
162-
<div className="flex justify-center">
163-
<Image
164-
width={300}
165-
height={300}
166-
src={url}
167-
alt={props.item.text}
168-
/>
169-
</div>
169+
{props.item.metadata !== null &&
170+
props.item.metadata !== undefined ? (
171+
<div className="grid grid-cols-2 gap-2">
172+
<div className="flex items-center justify-center">
173+
<Image
174+
width={300}
175+
height={300}
176+
src={url}
177+
alt={props.item.text}
178+
/>
179+
</div>
180+
<ScrollArea className="max-h-[250px]">
181+
{keys.map((key, i) => (
182+
<span key={i} className="my-2">
183+
<h3 className="font-bold" key={i}>
184+
{t(key === "title" ? "event-title" : key)}
185+
</h3>
186+
{typeof vals[i] === "object" ? (
187+
<div className="rounded-md border border-slate-200 p-2 text-sm dark:border-slate-800">
188+
{Object.keys(vals[i]).map((k, j) => (
189+
<span key={j}>
190+
<h3 className="font-bold">{t(k)}</h3>
191+
<p>
192+
{Object.values(vals[i])[j] as string}
193+
</p>
194+
</span>
195+
))}
196+
</div>
197+
) : (
198+
<p>{vals[i]}</p>
199+
)}
200+
</span>
201+
))}
202+
</ScrollArea>
203+
</div>
204+
) : (
205+
<div className="flex justify-center">
206+
<Image
207+
width={300}
208+
height={300}
209+
src={url}
210+
alt={props.item.text}
211+
/>
212+
</div>
213+
)}
170214
<div className="flex justify-center space-x-2">
171215
<Button onClick={copyBtn} className="h-auto p-1 px-2">
172216
{t("copy")}
@@ -196,7 +240,10 @@ export default function HistoryItem(props: {
196240
<DrawerContent className="bg-white dark:bg-slate-900">
197241
<DrawerHeader>
198242
<DrawerTitle>
199-
{t("preview")} - {props.item.text}
243+
{t("preview")} -{" "}
244+
{props.item.metadata
245+
? t("interactive")
246+
: props.item.text}
200247
</DrawerTitle>
201248
</DrawerHeader>
202249
<div className="flex justify-center">
@@ -207,6 +254,27 @@ export default function HistoryItem(props: {
207254
alt={props.item.text}
208255
/>
209256
</div>
257+
<ScrollArea className="max-h-[250px] overflow-y-scroll p-4">
258+
{keys.map((key, i) => (
259+
<span key={i} className="my-2">
260+
<h3 className="font-bold" key={i}>
261+
{t(key === "title" ? "event-title" : key)}
262+
</h3>
263+
{typeof vals[i] === "object" ? (
264+
<div className="rounded-md border border-slate-200 p-2 text-sm dark:border-slate-800">
265+
{Object.keys(vals[i]).map((k, j) => (
266+
<span key={j}>
267+
<h3 className="font-bold">{t(k)}</h3>
268+
<p>{Object.values(vals[i])[j] as string}</p>
269+
</span>
270+
))}
271+
</div>
272+
) : (
273+
<p>{vals[i]}</p>
274+
)}
275+
</span>
276+
))}
277+
</ScrollArea>
210278
<DrawerFooter>
211279
<div className="flex justify-center space-x-2">
212280
<Button onClick={copyBtn} className="h-auto p-1 px-2">
@@ -283,9 +351,11 @@ export default function HistoryItem(props: {
283351
</div>
284352
{isQrCode(props.item.bcid) ? (
285353
<p className="mt-2 text-wrap text-center">
286-
{props.item.text.length > 30
287-
? props.item.text.substring(0, 27) + "..."
288-
: props.item.text}
354+
{props.item.metadata
355+
? t("interactive")
356+
: props.item.text.length > 30
357+
? props.item.text.substring(0, 27) + "..."
358+
: props.item.text}
289359
</p>
290360
) : (
291361
<></>

components/page.tsx

+16-11
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export function PageContent({ children, page }: PageProps) {
6666

6767
return (
6868
<div className="h-screen overflow-hidden">
69-
<header className="flex space-x-2 p-2 pt-5">
69+
<header className="flex space-x-2 border-b border-slate-200 p-2 py-5 shadow-sm dark:border-slate-700 md:hidden">
7070
<Sheet>
7171
<SheetTrigger>
7272
<Button className="md:hidden" variant="ghost">
@@ -98,7 +98,7 @@ export function PageContent({ children, page }: PageProps) {
9898
size: "sm",
9999
variant: page == "history" ? "navselect" : "nav",
100100
className:
101-
" mx-2 my-1 h-auto w-full pl-0 pr-3 text-black dark:text-white",
101+
"mx-2 my-1 h-auto w-full pl-0 pr-3 text-black dark:text-white",
102102
})}
103103
href={"/history"}
104104
>
@@ -112,7 +112,7 @@ export function PageContent({ children, page }: PageProps) {
112112
size: "sm",
113113
variant: page == "settings" ? "navselect" : "nav",
114114
className:
115-
" mx-2 my-1 h-auto w-full pl-0 pr-3 text-black dark:text-white",
115+
"mx-2 my-1 h-auto w-full pl-0 pr-3 text-black dark:text-white",
116116
})}
117117
href={"/settings"}
118118
>
@@ -153,16 +153,21 @@ export function PageContent({ children, page }: PageProps) {
153153
<p className="font-bold">{GetWelcomeMessage()}</p>
154154
</div>
155155
</header>
156-
<section className="grid grid-cols-4 xl:grid-cols-5">
157-
<ScrollArea className="md:h-scroll">
158-
<nav className="m-2 mr-10 hidden md:block">
156+
157+
<section className="grid grid-cols-4 xl:grid-cols-6">
158+
<ScrollArea className="md:h-scroll border-r border-slate-200 bg-slate-100 shadow-sm dark:border-slate-700 dark:bg-slate-900">
159+
<div className="hidden border-b border-slate-200 p-4 pb-2 dark:border-slate-700 md:block">
160+
<h1 className="text-3xl font-bold">{t("title")}</h1>
161+
<p className="text-sm font-semibold">{GetWelcomeMessage()}</p>
162+
</div>
163+
<nav className="hidden flex-col p-2 md:flex">
159164
<h3 className="m-2 mt-0 text-xs font-bold">{t("pinned")}</h3>
160165
<Link
161166
className={buttonVariants({
162167
size: "sm",
163168
variant: page == "home" ? "navselect" : "nav",
164169
className:
165-
"mx-2 my-1 h-auto w-full pl-0 pr-3 text-black dark:text-white",
170+
"mx-2 my-1 h-auto pl-0 pr-3 text-black dark:text-white",
166171
})}
167172
href={"/"}
168173
>
@@ -176,7 +181,7 @@ export function PageContent({ children, page }: PageProps) {
176181
size: "sm",
177182
variant: page == "history" ? "navselect" : "nav",
178183
className:
179-
" mx-2 my-1 h-auto w-full pl-0 pr-3 text-black dark:text-white",
184+
"mx-2 my-1 h-auto pl-0 pr-3 text-black dark:text-white",
180185
})}
181186
href={"/history"}
182187
>
@@ -190,7 +195,7 @@ export function PageContent({ children, page }: PageProps) {
190195
size: "sm",
191196
variant: page == "settings" ? "navselect" : "nav",
192197
className:
193-
" mx-2 my-1 h-auto w-full pl-0 pr-3 text-black dark:text-white",
198+
"mx-2 my-1 h-auto pl-0 pr-3 text-black dark:text-white",
194199
})}
195200
href={"/settings"}
196201
>
@@ -204,7 +209,7 @@ export function PageContent({ children, page }: PageProps) {
204209
className={buttonVariants({
205210
size: "nav",
206211
variant: page == "barcode" ? "navselect2" : "nav2",
207-
className: "mx-2 my-1 w-full text-accent-color",
212+
className: "mx-2 my-1 text-accent-color",
208213
})}
209214
href={"/barcode"}
210215
>
@@ -215,7 +220,7 @@ export function PageContent({ children, page }: PageProps) {
215220
className={buttonVariants({
216221
size: "nav",
217222
variant: page == "qrcode" ? "navselect2" : "nav2",
218-
className: "mx-2 my-1 w-full text-accent-color",
223+
className: "mx-2 my-1 text-accent-color",
219224
})}
220225
href={"/qrcode"}
221226
>

components/ui/button.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ const buttonVariants = cva(
1818
secondary:
1919
"bg-secondary text-secondary-foreground hover:bg-secondary/80",
2020
ghost: "hover:bg-accent hover:text-accent-foreground",
21-
nav: "justify-start bg-transparent hover:bg-slate-100 dark:hover:bg-slate-900 dark:text-slate-100 dark:hover:text-slate-100 data-[state=open]:bg-transparent dark:data-[state=open]:bg-transparent",
21+
nav: "justify-start bg-transparent hover:bg-slate-200 dark:hover:bg-slate-800 dark:text-slate-100 dark:hover:text-slate-100 data-[state=open]:bg-transparent dark:data-[state=open]:bg-transparent",
2222
nav2: "justify-start bg-transparent hover:bg-[#DDC1FB] dark:hover:bg-[#590CAC] data-[state=open]:bg-transparent",
2323
link: "justify-center bg-transparent dark:bg-transparent underline-offset-4 hover:underline text-slate-900 dark:text-slate-100 hover:bg-transparent dark:hover:bg-transparent",
2424
destructiveghost:
2525
"justify-center bg-transparent hover:bg-red-100 dark:hover:bg-red-800 data-[state=open]:bg-transparent dark:data-[state=open]:bg-transparent text-red-500",
2626
navselect:
27-
"justify-start bg-slate-100 text-slate-900 hover:bg-slate-200 dark:bg-slate-900 dark:text-slate-100",
27+
"justify-start bg-slate-200 text-slate-900 hover:bg-slate-200 dark:bg-slate-800 dark:text-slate-100",
2828
navselect2:
2929
"justify-start bg-accent-color text-white hover:text-white hover:bg-accent-color dark:text-slate-100",
3030
},

locales/en/common.json

+11-1
Original file line numberDiff line numberDiff line change
@@ -115,5 +115,15 @@
115115
"end-date": "End date",
116116
"event-title": "Event title",
117117
"location": "Location",
118-
"select-date": "Pick a date"
118+
"select-date": "Pick a date",
119+
"interactive": "Interactive QR Code",
120+
"mail": "Email",
121+
"protocol": "Encryption",
122+
"number": "Phone number",
123+
"start": "Start",
124+
"end": "End",
125+
"firstName": "First name",
126+
"lastName": "Last name",
127+
"address": "Address",
128+
"search": "Search..."
119129
}

locales/fr/common.json

+11-1
Original file line numberDiff line numberDiff line change
@@ -115,5 +115,15 @@
115115
"end-date": "Date de fin",
116116
"event-title": "Titre de l'événement",
117117
"location": "Emplacement",
118-
"select-date": "Choisir une date"
118+
"select-date": "Choisir une date",
119+
"interactive": "QR Code Intéractif",
120+
"mail": "Email",
121+
"protocol": "Cryptage",
122+
"number": "Numéro de téléphone",
123+
"start": "Début",
124+
"end": "Fin",
125+
"firstName": "Prénom",
126+
"lastName": "Nom de famille",
127+
"address": "Adresse",
128+
"search": "Rechercher..."
119129
}

0 commit comments

Comments
 (0)