@pelatform/starter.shared 0.2.16 → 0.2.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +45 -15
- package/dist/index.js +361 -218
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import Link3 from "next/link";
|
|
|
5
5
|
import { usePathname } from "next/navigation";
|
|
6
6
|
import { useTranslations as useTranslations4 } from "next-intl";
|
|
7
7
|
import { useConfig as useConfig3 } from "@pelatform/starter.hook";
|
|
8
|
+
import { cn as cn3 } from "pelatform-ui";
|
|
8
9
|
import { LayoutBlank } from "pelatform-ui/components";
|
|
9
10
|
|
|
10
11
|
// src/components/logo.tsx
|
|
@@ -52,11 +53,11 @@ import { useTranslations as useTranslations2 } from "next-intl";
|
|
|
52
53
|
import { useSession as useSession2 } from "@pelatform/starter.hook";
|
|
53
54
|
import { ScreenLoader } from "pelatform-ui/components";
|
|
54
55
|
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
55
|
-
function LayoutLoader({ children }) {
|
|
56
|
+
function LayoutLoader({ children, className }) {
|
|
56
57
|
const t = useTranslations2();
|
|
57
58
|
const { isPending } = useSession2();
|
|
58
59
|
if (isPending) {
|
|
59
|
-
return /* @__PURE__ */ jsx3(ScreenLoader, { loadingText: t("common.status.loading") });
|
|
60
|
+
return /* @__PURE__ */ jsx3(ScreenLoader, { className, loadingText: t("common.status.loading") });
|
|
60
61
|
}
|
|
61
62
|
return children;
|
|
62
63
|
}
|
|
@@ -148,6 +149,7 @@ function ToolbarRSC({ show = DEFAULT_SHOW }) {
|
|
|
148
149
|
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
149
150
|
function AuthLayout({
|
|
150
151
|
children,
|
|
152
|
+
className,
|
|
151
153
|
logo = /* @__PURE__ */ jsx6(LogoWithHref, {}),
|
|
152
154
|
disableFooter = false,
|
|
153
155
|
signInHint = false,
|
|
@@ -184,7 +186,7 @@ function AuthLayout({
|
|
|
184
186
|
/* @__PURE__ */ jsx6(
|
|
185
187
|
LayoutBlank,
|
|
186
188
|
{
|
|
187
|
-
className: "[&_.max-w-4xl]:max-w-sm [&_.max-w-4xl]:px-0",
|
|
189
|
+
className: cn3("[&_.max-w-4xl]:max-w-sm [&_.max-w-4xl]:px-0", className),
|
|
188
190
|
logo,
|
|
189
191
|
footer: disableFooter || pathname === path.auth.SIGN_OUT || pathname === path.auth.CALLBACK ? null : footer,
|
|
190
192
|
children
|
|
@@ -200,6 +202,7 @@ import { useEffect as useEffect2, useState as useState2 } from "react";
|
|
|
200
202
|
import { usePathname as usePathname2 } from "next/navigation";
|
|
201
203
|
import { MenuIcon, PanelRightIcon } from "lucide-react";
|
|
202
204
|
import { useLayout } from "@pelatform/starter.hook";
|
|
205
|
+
import { cn as cn6 } from "pelatform-ui";
|
|
203
206
|
import {
|
|
204
207
|
Button as Button2,
|
|
205
208
|
Sheet,
|
|
@@ -215,7 +218,14 @@ import {
|
|
|
215
218
|
import { Fragment as Fragment2, useCallback, useEffect, useState } from "react";
|
|
216
219
|
import Link4 from "next/link";
|
|
217
220
|
import { useRouter as useRouter2 } from "next/navigation";
|
|
218
|
-
import {
|
|
221
|
+
import {
|
|
222
|
+
HouseIcon,
|
|
223
|
+
LogOutIcon,
|
|
224
|
+
PlusCircleIcon,
|
|
225
|
+
SettingsIcon,
|
|
226
|
+
ShieldIcon,
|
|
227
|
+
UserStarIcon
|
|
228
|
+
} from "lucide-react";
|
|
219
229
|
import { useTranslations as useTranslations7 } from "next-intl";
|
|
220
230
|
import {
|
|
221
231
|
useConfig as useConfig4,
|
|
@@ -238,13 +248,13 @@ import {
|
|
|
238
248
|
// src/components/view.tsx
|
|
239
249
|
import { KeyRoundIcon } from "lucide-react";
|
|
240
250
|
import { useLocale as useLocale2, useTranslations as useTranslations6 } from "next-intl";
|
|
241
|
-
import { cn as
|
|
251
|
+
import { cn as cn5, formatDate, getUserName as getUserName2 } from "pelatform-ui";
|
|
242
252
|
import { Skeleton as Skeleton2 } from "pelatform-ui/default";
|
|
243
253
|
|
|
244
254
|
// src/components/avatar.tsx
|
|
245
255
|
import { BuildingIcon, UserRoundIcon } from "lucide-react";
|
|
246
256
|
import { useTranslations as useTranslations5 } from "next-intl";
|
|
247
|
-
import { cn as
|
|
257
|
+
import { cn as cn4, getSizeAvatar, getUserName } from "pelatform-ui";
|
|
248
258
|
import { getInitials } from "pelatform-ui/components";
|
|
249
259
|
import { Avatar, AvatarFallback, AvatarImage, Skeleton } from "pelatform-ui/default";
|
|
250
260
|
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
@@ -264,7 +274,7 @@ function UserAvatar({
|
|
|
264
274
|
return /* @__PURE__ */ jsx7(
|
|
265
275
|
Skeleton,
|
|
266
276
|
{
|
|
267
|
-
className:
|
|
277
|
+
className: cn4(
|
|
268
278
|
"shrink-0 rounded-full",
|
|
269
279
|
getSizeAvatar(size),
|
|
270
280
|
className,
|
|
@@ -277,7 +287,7 @@ function UserAvatar({
|
|
|
277
287
|
return /* @__PURE__ */ jsxs5(
|
|
278
288
|
Avatar,
|
|
279
289
|
{
|
|
280
|
-
className:
|
|
290
|
+
className: cn4("rounded-full bg-accent", getSizeAvatar(size), className, classNames?.base),
|
|
281
291
|
...props,
|
|
282
292
|
children: [
|
|
283
293
|
/* @__PURE__ */ jsx7(
|
|
@@ -291,9 +301,9 @@ function UserAvatar({
|
|
|
291
301
|
/* @__PURE__ */ jsx7(
|
|
292
302
|
AvatarFallback,
|
|
293
303
|
{
|
|
294
|
-
className:
|
|
304
|
+
className: cn4("text-foreground uppercase", classNames?.fallback),
|
|
295
305
|
delayMs: src ? 600 : void 0,
|
|
296
|
-
children: getInitials(name, 2) || /* @__PURE__ */ jsx7(UserRoundIcon, { className:
|
|
306
|
+
children: getInitials(name, 2) || /* @__PURE__ */ jsx7(UserRoundIcon, { className: cn4("size-[50%]", classNames?.fallbackIcon) })
|
|
297
307
|
}
|
|
298
308
|
)
|
|
299
309
|
]
|
|
@@ -316,7 +326,7 @@ function WorkspaceLogo({
|
|
|
316
326
|
return /* @__PURE__ */ jsx7(
|
|
317
327
|
Skeleton,
|
|
318
328
|
{
|
|
319
|
-
className:
|
|
329
|
+
className: cn4(
|
|
320
330
|
"shrink-0 rounded-full",
|
|
321
331
|
getSizeAvatar(size),
|
|
322
332
|
className,
|
|
@@ -329,7 +339,7 @@ function WorkspaceLogo({
|
|
|
329
339
|
return /* @__PURE__ */ jsxs5(
|
|
330
340
|
Avatar,
|
|
331
341
|
{
|
|
332
|
-
className:
|
|
342
|
+
className: cn4("rounded-full bg-accent", getSizeAvatar(size), className, classNames?.base),
|
|
333
343
|
...props,
|
|
334
344
|
children: [
|
|
335
345
|
/* @__PURE__ */ jsx7(
|
|
@@ -343,9 +353,9 @@ function WorkspaceLogo({
|
|
|
343
353
|
/* @__PURE__ */ jsx7(
|
|
344
354
|
AvatarFallback,
|
|
345
355
|
{
|
|
346
|
-
className:
|
|
356
|
+
className: cn4("text-foreground", classNames?.fallback),
|
|
347
357
|
delayMs: src ? 600 : void 0,
|
|
348
|
-
children: /* @__PURE__ */ jsx7(BuildingIcon, { className:
|
|
358
|
+
children: /* @__PURE__ */ jsx7(BuildingIcon, { className: cn4("size-[50%]", classNames?.fallbackIcon) })
|
|
349
359
|
}
|
|
350
360
|
)
|
|
351
361
|
]
|
|
@@ -357,22 +367,22 @@ function WorkspaceLogo({
|
|
|
357
367
|
import { Fragment, jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
358
368
|
function UserView({ className, classNames, isPending, size, user }) {
|
|
359
369
|
const t = useTranslations6();
|
|
360
|
-
return /* @__PURE__ */ jsxs6("div", { className:
|
|
370
|
+
return /* @__PURE__ */ jsxs6("div", { className: cn5("flex items-center gap-2", className, classNames?.base), children: [
|
|
361
371
|
/* @__PURE__ */ jsx8(
|
|
362
372
|
UserAvatar,
|
|
363
373
|
{
|
|
364
|
-
className:
|
|
374
|
+
className: cn5(size !== "sm" && "my-0.5"),
|
|
365
375
|
classNames: classNames?.avatar,
|
|
366
376
|
isPending,
|
|
367
377
|
size,
|
|
368
378
|
user
|
|
369
379
|
}
|
|
370
380
|
),
|
|
371
|
-
/* @__PURE__ */ jsx8("div", { className:
|
|
381
|
+
/* @__PURE__ */ jsx8("div", { className: cn5("grid flex-1 text-start leading-tight", classNames?.content), children: isPending ? /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
372
382
|
/* @__PURE__ */ jsx8(
|
|
373
383
|
Skeleton2,
|
|
374
384
|
{
|
|
375
|
-
className:
|
|
385
|
+
className: cn5(
|
|
376
386
|
"max-w-full",
|
|
377
387
|
size === "lg" ? "h-4.5 w-32" : "h-3.5 w-24",
|
|
378
388
|
classNames?.title,
|
|
@@ -383,7 +393,7 @@ function UserView({ className, classNames, isPending, size, user }) {
|
|
|
383
393
|
size !== "sm" && /* @__PURE__ */ jsx8(
|
|
384
394
|
Skeleton2,
|
|
385
395
|
{
|
|
386
|
-
className:
|
|
396
|
+
className: cn5(
|
|
387
397
|
"mt-1.5 max-w-full",
|
|
388
398
|
size === "lg" ? "h-3.5 w-40" : "h-3 w-32",
|
|
389
399
|
classNames?.subtitle,
|
|
@@ -395,7 +405,7 @@ function UserView({ className, classNames, isPending, size, user }) {
|
|
|
395
405
|
/* @__PURE__ */ jsx8(
|
|
396
406
|
"span",
|
|
397
407
|
{
|
|
398
|
-
className:
|
|
408
|
+
className: cn5(
|
|
399
409
|
"truncate font-semibold",
|
|
400
410
|
size === "lg" ? "text-base" : "text-sm",
|
|
401
411
|
classNames?.title
|
|
@@ -406,7 +416,7 @@ function UserView({ className, classNames, isPending, size, user }) {
|
|
|
406
416
|
!user?.isAnonymous && size !== "sm" && (user?.name || user?.username) && /* @__PURE__ */ jsx8(
|
|
407
417
|
"span",
|
|
408
418
|
{
|
|
409
|
-
className:
|
|
419
|
+
className: cn5(
|
|
410
420
|
"truncate opacity-70",
|
|
411
421
|
size === "lg" ? "text-sm" : "text-xs",
|
|
412
422
|
classNames?.subtitle
|
|
@@ -431,8 +441,8 @@ function ApiKeyView({ className, classNames, apiKey }) {
|
|
|
431
441
|
);
|
|
432
442
|
return `${t("common.time.expires")} ${expiresDate}`;
|
|
433
443
|
};
|
|
434
|
-
return /* @__PURE__ */ jsxs6("div", { className:
|
|
435
|
-
/* @__PURE__ */ jsx8(KeyRoundIcon, { className:
|
|
444
|
+
return /* @__PURE__ */ jsxs6("div", { className: cn5("flex items-center gap-3 truncate", className, classNames?.base), children: [
|
|
445
|
+
/* @__PURE__ */ jsx8(KeyRoundIcon, { className: cn5("size-4 shrink-0", classNames?.icon) }),
|
|
436
446
|
/* @__PURE__ */ jsxs6("div", { className: "flex flex-col truncate text-start", children: [
|
|
437
447
|
/* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2", children: [
|
|
438
448
|
/* @__PURE__ */ jsx8("span", { className: "truncate font-semibold text-sm", children: apiKey.name }),
|
|
@@ -447,22 +457,22 @@ function ApiKeyView({ className, classNames, apiKey }) {
|
|
|
447
457
|
}
|
|
448
458
|
function WorkspaceView({ className, classNames, isPending, size, workspace }) {
|
|
449
459
|
const t = useTranslations6();
|
|
450
|
-
return /* @__PURE__ */ jsxs6("div", { className:
|
|
460
|
+
return /* @__PURE__ */ jsxs6("div", { className: cn5("flex items-center gap-2 truncate", className, classNames?.base), children: [
|
|
451
461
|
/* @__PURE__ */ jsx8(
|
|
452
462
|
WorkspaceLogo,
|
|
453
463
|
{
|
|
454
|
-
className:
|
|
464
|
+
className: cn5(size !== "sm" && "my-0.5"),
|
|
455
465
|
classNames: classNames?.avatar,
|
|
456
466
|
isPending,
|
|
457
467
|
workspace,
|
|
458
468
|
size
|
|
459
469
|
}
|
|
460
470
|
),
|
|
461
|
-
/* @__PURE__ */ jsx8("div", { className:
|
|
471
|
+
/* @__PURE__ */ jsx8("div", { className: cn5("flex flex-col truncate text-start leading-tight", classNames?.content), children: isPending ? /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
462
472
|
/* @__PURE__ */ jsx8(
|
|
463
473
|
Skeleton2,
|
|
464
474
|
{
|
|
465
|
-
className:
|
|
475
|
+
className: cn5(
|
|
466
476
|
"max-w-full",
|
|
467
477
|
size === "lg" ? "h-4.5 w-32" : "h-3.5 w-24",
|
|
468
478
|
classNames?.title,
|
|
@@ -473,7 +483,7 @@ function WorkspaceView({ className, classNames, isPending, size, workspace }) {
|
|
|
473
483
|
size !== "sm" && /* @__PURE__ */ jsx8(
|
|
474
484
|
Skeleton2,
|
|
475
485
|
{
|
|
476
|
-
className:
|
|
486
|
+
className: cn5(
|
|
477
487
|
"mt-1.5 max-w-full",
|
|
478
488
|
size === "lg" ? "h-3.5 w-24" : "h-3 w-16",
|
|
479
489
|
classNames?.subtitle,
|
|
@@ -485,7 +495,7 @@ function WorkspaceView({ className, classNames, isPending, size, workspace }) {
|
|
|
485
495
|
/* @__PURE__ */ jsx8(
|
|
486
496
|
"span",
|
|
487
497
|
{
|
|
488
|
-
className:
|
|
498
|
+
className: cn5(
|
|
489
499
|
"truncate font-semibold",
|
|
490
500
|
size === "lg" ? "text-base" : "text-sm",
|
|
491
501
|
classNames?.title
|
|
@@ -496,7 +506,7 @@ function WorkspaceView({ className, classNames, isPending, size, workspace }) {
|
|
|
496
506
|
size !== "sm" && workspace?.slug && /* @__PURE__ */ jsx8(
|
|
497
507
|
"span",
|
|
498
508
|
{
|
|
499
|
-
className:
|
|
509
|
+
className: cn5(
|
|
500
510
|
"truncate opacity-70",
|
|
501
511
|
size === "lg" ? "text-sm" : "text-xs",
|
|
502
512
|
classNames?.subtitle
|
|
@@ -512,6 +522,9 @@ function WorkspaceView({ className, classNames, isPending, size, workspace }) {
|
|
|
512
522
|
import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
513
523
|
function UserMenu({
|
|
514
524
|
homeUrl,
|
|
525
|
+
disableSettings = false,
|
|
526
|
+
disableSecurity = false,
|
|
527
|
+
disableAdminMenu = true,
|
|
515
528
|
hiddenSwitcher = false,
|
|
516
529
|
side = "bottom",
|
|
517
530
|
align = "end",
|
|
@@ -570,14 +583,18 @@ function UserMenu({
|
|
|
570
583
|
/* @__PURE__ */ jsx9(HouseIcon, {}),
|
|
571
584
|
/* @__PURE__ */ jsx9("span", { children: t("ui.navigation.home") })
|
|
572
585
|
] }) }),
|
|
573
|
-
/* @__PURE__ */ jsx9(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxs7(Link4, { href: path.account.SETTINGS, children: [
|
|
586
|
+
!disableSettings && /* @__PURE__ */ jsx9(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxs7(Link4, { href: path.account.SETTINGS, children: [
|
|
574
587
|
/* @__PURE__ */ jsx9(SettingsIcon, {}),
|
|
575
588
|
/* @__PURE__ */ jsx9("span", { children: t("ui.navigation.preferences") })
|
|
576
589
|
] }) }),
|
|
577
|
-
/* @__PURE__ */ jsx9(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxs7(Link4, { href: path.account.SECURITY, children: [
|
|
590
|
+
!disableSecurity && /* @__PURE__ */ jsx9(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxs7(Link4, { href: path.account.SECURITY, children: [
|
|
578
591
|
/* @__PURE__ */ jsx9(ShieldIcon, {}),
|
|
579
592
|
/* @__PURE__ */ jsx9("span", { children: t("ui.navigation.security") })
|
|
580
593
|
] }) }),
|
|
594
|
+
!disableAdminMenu && "admin" === userRole && /* @__PURE__ */ jsx9(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxs7(Link4, { href: path.admin.OVERVIEW, children: [
|
|
595
|
+
/* @__PURE__ */ jsx9(UserStarIcon, {}),
|
|
596
|
+
/* @__PURE__ */ jsx9("span", { children: "Admin Dashboard" })
|
|
597
|
+
] }) }),
|
|
581
598
|
!hiddenSwitcher && /* @__PURE__ */ jsxs7(Fragment3, { children: [
|
|
582
599
|
/* @__PURE__ */ jsx9(DropdownMenuSeparator, {}),
|
|
583
600
|
/* @__PURE__ */ jsx9(
|
|
@@ -630,16 +647,34 @@ function UserMenu({
|
|
|
630
647
|
|
|
631
648
|
// src/components/layouts/header.tsx
|
|
632
649
|
import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
633
|
-
function Header({ children }) {
|
|
650
|
+
function Header({ children, className }) {
|
|
634
651
|
const { version } = useLayout();
|
|
635
652
|
if (version === "v2") {
|
|
636
|
-
return /* @__PURE__ */ jsx10(
|
|
653
|
+
return /* @__PURE__ */ jsx10(
|
|
654
|
+
"header",
|
|
655
|
+
{
|
|
656
|
+
className: cn6(
|
|
657
|
+
"fixed start-0 end-0 top-0 z-50 flex h-(--header-height-mobile) shrink-0 items-center bg-background/95 pe-[var(--removed-body-scroll-bar-size,0px)] backdrop-blur-sm transition-[start,end] duration-300 supports-backdrop-filter:bg-muted",
|
|
658
|
+
className
|
|
659
|
+
),
|
|
660
|
+
children: /* @__PURE__ */ jsx10("div", { className: "@container flex grow items-stretch justify-between gap-2.5 pe-5", children })
|
|
661
|
+
}
|
|
662
|
+
);
|
|
637
663
|
}
|
|
638
|
-
return /* @__PURE__ */ jsx10(
|
|
664
|
+
return /* @__PURE__ */ jsx10(
|
|
665
|
+
"header",
|
|
666
|
+
{
|
|
667
|
+
className: cn6(
|
|
668
|
+
"fixed start-0 end-0 top-0 z-10 flex h-(--header-height-mobile) shrink-0 items-stretch border-border border-b bg-background/95 pe-(--removed-body-scroll-bar-size,0px) backdrop-blur-sm supports-backdrop-filter:bg-background/60 lg:h-(--header-height)",
|
|
669
|
+
className
|
|
670
|
+
),
|
|
671
|
+
children: /* @__PURE__ */ jsx10("div", { className: "@container flex grow items-stretch justify-between gap-2.5 pe-5", children })
|
|
672
|
+
}
|
|
673
|
+
);
|
|
639
674
|
}
|
|
640
|
-
function HeaderLeft() {
|
|
675
|
+
function HeaderLeft({ className }) {
|
|
641
676
|
const { logoHeader, sidebarToggle } = useLayout();
|
|
642
|
-
return /* @__PURE__ */ jsx10("div", { className: "flex items-center gap-2 px-5 lg:w-(--sidebar-width)", children: /* @__PURE__ */ jsxs8("div", { className: "flex w-full items-center justify-between", children: [
|
|
677
|
+
return /* @__PURE__ */ jsx10("div", { className: cn6("flex items-center gap-2 px-5 lg:w-(--sidebar-width)", className), children: /* @__PURE__ */ jsxs8("div", { className: "flex w-full items-center justify-between", children: [
|
|
643
678
|
logoHeader,
|
|
644
679
|
/* @__PURE__ */ jsx10(
|
|
645
680
|
Button2,
|
|
@@ -654,18 +689,22 @@ function HeaderLeft() {
|
|
|
654
689
|
] }) });
|
|
655
690
|
}
|
|
656
691
|
function HeaderRight({
|
|
692
|
+
className,
|
|
657
693
|
sidebar,
|
|
658
694
|
button,
|
|
659
695
|
homeUrl
|
|
660
696
|
}) {
|
|
661
697
|
const { isMobile } = useLayout();
|
|
662
|
-
return /* @__PURE__ */ jsxs8("nav", { className: "flex items-center gap-1.5 lg:gap-2.5", children: [
|
|
698
|
+
return /* @__PURE__ */ jsxs8("nav", { className: cn6("flex items-center gap-1.5 lg:gap-2.5", className), children: [
|
|
663
699
|
button,
|
|
664
700
|
isMobile && sidebar,
|
|
665
701
|
/* @__PURE__ */ jsx10(UserMenu, { homeUrl })
|
|
666
702
|
] });
|
|
667
703
|
}
|
|
668
|
-
function HeaderSidebarMobile({
|
|
704
|
+
function HeaderSidebarMobile({
|
|
705
|
+
children,
|
|
706
|
+
className
|
|
707
|
+
}) {
|
|
669
708
|
const pathname = usePathname2();
|
|
670
709
|
const [isSheetOpen, setIsSheetOpen] = useState2(false);
|
|
671
710
|
useEffect2(() => {
|
|
@@ -673,13 +712,21 @@ function HeaderSidebarMobile({ children }) {
|
|
|
673
712
|
}, [pathname]);
|
|
674
713
|
return /* @__PURE__ */ jsxs8(Sheet, { open: isSheetOpen, onOpenChange: setIsSheetOpen, children: [
|
|
675
714
|
/* @__PURE__ */ jsx10(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsx10(Button2, { variant: "ghost", mode: "icon", size: "icon", children: /* @__PURE__ */ jsx10(MenuIcon, { className: "size-4" }) }) }),
|
|
676
|
-
/* @__PURE__ */ jsxs8(
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
715
|
+
/* @__PURE__ */ jsxs8(
|
|
716
|
+
SheetContent,
|
|
717
|
+
{
|
|
718
|
+
className: cn6("w-(--sidebar-width) gap-0 p-0", className),
|
|
719
|
+
side: "left",
|
|
720
|
+
close: false,
|
|
721
|
+
children: [
|
|
722
|
+
/* @__PURE__ */ jsxs8(SheetHeader, { className: "hidden space-y-0 p-0", children: [
|
|
723
|
+
/* @__PURE__ */ jsx10(SheetTitle, { className: "sr-only", children: "Navigation menu" }),
|
|
724
|
+
/* @__PURE__ */ jsx10(SheetDescription, { className: "sr-only", children: "NavigatSheet Description" })
|
|
725
|
+
] }),
|
|
726
|
+
/* @__PURE__ */ jsx10(SheetBody, { className: "flex grow flex-col p-0", children })
|
|
727
|
+
]
|
|
728
|
+
}
|
|
729
|
+
)
|
|
683
730
|
] });
|
|
684
731
|
}
|
|
685
732
|
|
|
@@ -689,7 +736,7 @@ import Link5 from "next/link";
|
|
|
689
736
|
import { usePathname as usePathname3 } from "next/navigation";
|
|
690
737
|
import { useLocale as useLocale3, useTranslations as useTranslations8 } from "next-intl";
|
|
691
738
|
import { useLayout as useLayout2 } from "@pelatform/starter.hook";
|
|
692
|
-
import { cn as
|
|
739
|
+
import { cn as cn7 } from "pelatform-ui";
|
|
693
740
|
import { BackLink } from "pelatform-ui/components";
|
|
694
741
|
import {
|
|
695
742
|
AccordionMenu,
|
|
@@ -704,46 +751,85 @@ import {
|
|
|
704
751
|
ScrollArea
|
|
705
752
|
} from "pelatform-ui/default";
|
|
706
753
|
import { Fragment as Fragment4, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
707
|
-
function Sidebar({ children }) {
|
|
754
|
+
function Sidebar({ children, className }) {
|
|
708
755
|
const { isMobile, logoHeader, version } = useLayout2();
|
|
709
756
|
if (isMobile) {
|
|
710
757
|
return null;
|
|
711
758
|
}
|
|
712
759
|
if (version === "v2") {
|
|
713
|
-
return /* @__PURE__ */ jsx11(
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
760
|
+
return /* @__PURE__ */ jsx11(
|
|
761
|
+
"aside",
|
|
762
|
+
{
|
|
763
|
+
className: cn7(
|
|
764
|
+
"fixed start-2.5 top-2.5 bottom-2.5 z-20 flex in-data-[sidebar-open=false]:w-(--sidebar-width-collapsed) w-(--sidebar-width) shrink-0 items-stretch overflow-hidden rounded-xl border border-input bg-background transition-all duration-300",
|
|
765
|
+
className
|
|
766
|
+
),
|
|
767
|
+
children: /* @__PURE__ */ jsxs9("div", { className: "w-(--sidebar-width) shrink-0 grow transition-all duration-300", children: [
|
|
768
|
+
/* @__PURE__ */ jsx11("div", { className: "flex h-14 shrink-0 items-center justify-center px-2.5 lg:h-15", children: logoHeader }),
|
|
769
|
+
children
|
|
770
|
+
] })
|
|
771
|
+
}
|
|
772
|
+
);
|
|
717
773
|
}
|
|
718
|
-
return /* @__PURE__ */ jsxs9(
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
774
|
+
return /* @__PURE__ */ jsxs9(
|
|
775
|
+
"aside",
|
|
776
|
+
{
|
|
777
|
+
className: cn7(
|
|
778
|
+
"fixed in-data-[sidebar-open=false]:-start-full start-0 top-(--header-height) bottom-0 flex w-(--sidebar-width) shrink-0 flex-col items-stretch border-border border-e transition-all duration-300",
|
|
779
|
+
className
|
|
780
|
+
),
|
|
781
|
+
children: [
|
|
782
|
+
children,
|
|
783
|
+
/* @__PURE__ */ jsx11("div", {})
|
|
784
|
+
]
|
|
785
|
+
}
|
|
786
|
+
);
|
|
722
787
|
}
|
|
723
788
|
function SidebarHeaderBack({
|
|
789
|
+
className,
|
|
724
790
|
linkHref = "/",
|
|
725
791
|
admin = false,
|
|
726
792
|
text
|
|
727
793
|
}) {
|
|
728
794
|
const t = useTranslations8();
|
|
729
|
-
return /* @__PURE__ */ jsx11(
|
|
795
|
+
return /* @__PURE__ */ jsx11(
|
|
796
|
+
"div",
|
|
797
|
+
{
|
|
798
|
+
className: cn7(
|
|
799
|
+
"flex h-14 shrink-0 items-center gap-2 border-border border-b px-2.5 lg:h-15",
|
|
800
|
+
className
|
|
801
|
+
),
|
|
802
|
+
children: /* @__PURE__ */ jsx11(BackLink, { Link: Link5, href: linkHref, children: text ?? (admin ? t("common.actions.back") : t("ui.navigation.settings")) })
|
|
803
|
+
}
|
|
804
|
+
);
|
|
730
805
|
}
|
|
731
|
-
function SidebarContent({
|
|
806
|
+
function SidebarContent({
|
|
807
|
+
children,
|
|
808
|
+
className
|
|
809
|
+
}) {
|
|
732
810
|
const { isMobile, version } = useLayout2();
|
|
733
811
|
if (version === "v2") {
|
|
734
812
|
return /* @__PURE__ */ jsx11(
|
|
735
813
|
ScrollArea,
|
|
736
814
|
{
|
|
737
|
-
className:
|
|
738
|
-
isMobile ? "my-2 h-[calc(100vh-5.5rem)] grow" : "my-2 h-[calc(100vh-1rem)] w-full shrink-0 lg:my-4 lg:h-[calc(100vh-14.7rem)]"
|
|
815
|
+
className: cn7(
|
|
816
|
+
isMobile ? "my-2 h-[calc(100vh-5.5rem)] grow" : "my-2 h-[calc(100vh-1rem)] w-full shrink-0 lg:my-4 lg:h-[calc(100vh-14.7rem)]",
|
|
817
|
+
className
|
|
739
818
|
),
|
|
740
819
|
children
|
|
741
820
|
}
|
|
742
821
|
);
|
|
743
822
|
}
|
|
744
|
-
return /* @__PURE__ */ jsx11(
|
|
823
|
+
return /* @__PURE__ */ jsx11(
|
|
824
|
+
ScrollArea,
|
|
825
|
+
{
|
|
826
|
+
className: cn7("my-2 h-[calc(100vh-5.5rem)] grow lg:my-4 lg:h-[calc(100vh-4rem)]", className),
|
|
827
|
+
children
|
|
828
|
+
}
|
|
829
|
+
);
|
|
745
830
|
}
|
|
746
831
|
function SidebarContentMenu({
|
|
832
|
+
className,
|
|
747
833
|
menu,
|
|
748
834
|
type = "default"
|
|
749
835
|
}) {
|
|
@@ -792,7 +878,7 @@ function SidebarContentMenu({
|
|
|
792
878
|
defaultValue: "menu-trigger",
|
|
793
879
|
matchPath,
|
|
794
880
|
collapsible: true,
|
|
795
|
-
className: "space-y-7.5 px-2.5",
|
|
881
|
+
className: cn7("space-y-7.5 px-2.5", className),
|
|
796
882
|
classNames: {
|
|
797
883
|
item: "h-8.5 px-2.5 text-sm font-normal text-foreground hover:text-primary data-[selected=true]:bg-muted data-[selected=true]:text-foreground [&[data-selected=true]_svg]:opacity-100",
|
|
798
884
|
subTrigger: "text-xs font-normal text-muted-foreground hover:bg-transparent",
|
|
@@ -843,7 +929,7 @@ function SidebarContentMenu({
|
|
|
843
929
|
type: "multiple",
|
|
844
930
|
selectedValue: pathname,
|
|
845
931
|
matchPath,
|
|
846
|
-
className: "space-y-7.5 px-2.5",
|
|
932
|
+
className: cn7("space-y-7.5 px-2.5", className),
|
|
847
933
|
classNames: {
|
|
848
934
|
label: "text-xs font-normal text-muted-foreground mb-2",
|
|
849
935
|
item: "h-8.5 px-2.5 text-sm font-normal text-foreground hover:text-primary data-[selected=true]:bg-muted data-[selected=true]:font-medium data-[selected=true]:text-foreground [&[data-selected=true]_svg]:opacity-100",
|
|
@@ -897,7 +983,7 @@ function SidebarFooter({
|
|
|
897
983
|
return /* @__PURE__ */ jsxs9(
|
|
898
984
|
"div",
|
|
899
985
|
{
|
|
900
|
-
className:
|
|
986
|
+
className: cn7(
|
|
901
987
|
"flex h-14 shrink-0 items-center gap-2 border-border border-t px-2.5 lg:h-15",
|
|
902
988
|
className
|
|
903
989
|
),
|
|
@@ -913,36 +999,45 @@ function SidebarFooter({
|
|
|
913
999
|
import Link6 from "next/link";
|
|
914
1000
|
import { useTranslations as useTranslations9 } from "next-intl";
|
|
915
1001
|
import { useConfig as useConfig5 } from "@pelatform/starter.hook";
|
|
916
|
-
import { cn as
|
|
1002
|
+
import { cn as cn8 } from "pelatform-ui";
|
|
917
1003
|
import { SiteFooter as UISiteFooter } from "pelatform-ui/components";
|
|
918
1004
|
import { Button as Button3 } from "pelatform-ui/default";
|
|
919
1005
|
import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
920
|
-
function SiteFooter({
|
|
1006
|
+
function SiteFooter({
|
|
1007
|
+
className,
|
|
1008
|
+
disableProjectBy = false
|
|
1009
|
+
}) {
|
|
921
1010
|
const { app } = useConfig5();
|
|
922
1011
|
const t = useTranslations9();
|
|
923
|
-
return /* @__PURE__ */ jsxs10(
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
(
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
1012
|
+
return /* @__PURE__ */ jsxs10(
|
|
1013
|
+
UISiteFooter,
|
|
1014
|
+
{
|
|
1015
|
+
className: cn8("*:gap-2! *:py-0!", disableProjectBy ? "*:justify-center!" : "", className),
|
|
1016
|
+
children: [
|
|
1017
|
+
/* @__PURE__ */ jsxs10("div", { className: "text-balance text-center text-muted-foreground text-sm leading-loose md:text-left", children: [
|
|
1018
|
+
"\xA9 ",
|
|
1019
|
+
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
1020
|
+
" ",
|
|
1021
|
+
app.name,
|
|
1022
|
+
". ",
|
|
1023
|
+
t("ui.common.copyright")
|
|
1024
|
+
] }),
|
|
1025
|
+
!disableProjectBy && /* @__PURE__ */ jsx12("div", { className: "flex items-center gap-2.5 text-balance text-sm leading-loose", children: /* @__PURE__ */ jsxs10("div", { className: "inline-flex items-center gap-1", children: [
|
|
1026
|
+
/* @__PURE__ */ jsx12("span", { className: "text-muted-foreground", children: t("ui.common.projectBy") }),
|
|
1027
|
+
" ",
|
|
1028
|
+
/* @__PURE__ */ jsx12(Button3, { mode: "link", underline: "dashed", children: /* @__PURE__ */ jsx12(
|
|
1029
|
+
Link6,
|
|
1030
|
+
{
|
|
1031
|
+
href: "https://pelatform.com",
|
|
1032
|
+
target: "_blank",
|
|
1033
|
+
className: "font-medium text-foreground",
|
|
1034
|
+
children: "Pelatform"
|
|
1035
|
+
}
|
|
1036
|
+
) })
|
|
1037
|
+
] }) })
|
|
1038
|
+
]
|
|
1039
|
+
}
|
|
1040
|
+
);
|
|
946
1041
|
}
|
|
947
1042
|
|
|
948
1043
|
// src/components/layouts/site-header.tsx
|
|
@@ -951,6 +1046,7 @@ import Link7 from "next/link";
|
|
|
951
1046
|
import { usePathname as usePathname4, useRouter as useRouter3 } from "next/navigation";
|
|
952
1047
|
import { useTranslations as useTranslations10 } from "next-intl";
|
|
953
1048
|
import { useConfig as useConfig6, useSession as useSession4 } from "@pelatform/starter.hook";
|
|
1049
|
+
import { cn as cn9 } from "pelatform-ui";
|
|
954
1050
|
import {
|
|
955
1051
|
MainNav,
|
|
956
1052
|
MobileNav,
|
|
@@ -961,6 +1057,7 @@ import {
|
|
|
961
1057
|
import { Button as Button4, Separator } from "pelatform-ui/default";
|
|
962
1058
|
import { Fragment as Fragment5, jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
963
1059
|
function SiteHeader({
|
|
1060
|
+
className,
|
|
964
1061
|
menu,
|
|
965
1062
|
logo = /* @__PURE__ */ jsx13(LogoWithHref, { href: "/" })
|
|
966
1063
|
}) {
|
|
@@ -971,45 +1068,52 @@ function SiteHeader({
|
|
|
971
1068
|
const { isPending, session, user } = useSession4();
|
|
972
1069
|
const [, setMobileNavOpen] = useState3(false);
|
|
973
1070
|
const isAuthenticated = !isPending && session && user;
|
|
974
|
-
return /* @__PURE__ */ jsxs11(
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1071
|
+
return /* @__PURE__ */ jsxs11(
|
|
1072
|
+
UISiteHeader,
|
|
1073
|
+
{
|
|
1074
|
+
className: cn9("backdrop-blur-none supports-backdrop-filter:bg-background", className),
|
|
1075
|
+
children: [
|
|
1076
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-4.5", children: [
|
|
1077
|
+
logo,
|
|
1078
|
+
/* @__PURE__ */ jsx13(MainNav, { Link: Link7, pathname, items: menu })
|
|
1079
|
+
] }),
|
|
1080
|
+
/* @__PURE__ */ jsx13("div", { className: "flex items-center justify-end gap-3", children: /* @__PURE__ */ jsxs11("nav", { className: "flex items-center gap-0 md:gap-1", children: [
|
|
1081
|
+
/* @__PURE__ */ jsx13(ModeSwitcher3, {}),
|
|
1082
|
+
/* @__PURE__ */ jsx13(LanguageSwitcher, {}),
|
|
1083
|
+
/* @__PURE__ */ jsx13(Separator, { orientation: "vertical", className: "mx-3 h-5 max-lg:hidden" }),
|
|
1084
|
+
/* @__PURE__ */ jsx13(MobileNav, { children: /* @__PURE__ */ jsxs11("div", { className: "flex flex-col space-y-3", children: [
|
|
1085
|
+
menu?.map(
|
|
1086
|
+
(item, navIndex) => item.href || item.children ? /* @__PURE__ */ jsx13(
|
|
1087
|
+
MobileNavItemRenderer,
|
|
1088
|
+
{
|
|
1089
|
+
item,
|
|
1090
|
+
Link: Link7,
|
|
1091
|
+
pathname,
|
|
1092
|
+
level: 1,
|
|
1093
|
+
onOpenChange: setMobileNavOpen
|
|
1094
|
+
},
|
|
1095
|
+
`nav-${navIndex}-${item.href}`
|
|
1096
|
+
) : null
|
|
1097
|
+
),
|
|
1098
|
+
/* @__PURE__ */ jsx13("div", { className: "border-t pt-3", children: isAuthenticated ? /* @__PURE__ */ jsx13(
|
|
1099
|
+
Button4,
|
|
1100
|
+
{
|
|
1101
|
+
variant: "outline",
|
|
1102
|
+
size: "sm",
|
|
1103
|
+
className: "w-full",
|
|
1104
|
+
onClick: () => router.push(path.auth.SIGN_OUT),
|
|
1105
|
+
children: t("ui.navigation.signOut")
|
|
1106
|
+
}
|
|
1107
|
+
) : /* @__PURE__ */ jsx13(Button4, { variant: "secondary", size: "sm", className: "w-full", children: /* @__PURE__ */ jsx13(Link7, { href: path.auth.SIGN_IN, children: t("ui.navigation.signIn") }) }) })
|
|
1108
|
+
] }) }),
|
|
1109
|
+
isAuthenticated ? /* @__PURE__ */ jsx13(UserMenu, { hiddenSwitcher: true }) : /* @__PURE__ */ jsx13(Button4, { variant: "secondary", size: "sm", className: "hidden md:flex", children: /* @__PURE__ */ jsx13(Link7, { href: path.auth.SIGN_IN, children: t("ui.navigation.signIn") }) })
|
|
1110
|
+
] }) })
|
|
1111
|
+
]
|
|
1112
|
+
}
|
|
1113
|
+
);
|
|
1011
1114
|
}
|
|
1012
1115
|
function SiteHeaderSecondary({
|
|
1116
|
+
className,
|
|
1013
1117
|
menu,
|
|
1014
1118
|
logo = /* @__PURE__ */ jsx13(LogoWithHref, { href: "/" }),
|
|
1015
1119
|
loginHref,
|
|
@@ -1018,36 +1122,42 @@ function SiteHeaderSecondary({
|
|
|
1018
1122
|
const pathname = usePathname4();
|
|
1019
1123
|
const t = useTranslations10();
|
|
1020
1124
|
const [, setMobileNavOpen] = useState3(false);
|
|
1021
|
-
return /* @__PURE__ */ jsxs11(
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1125
|
+
return /* @__PURE__ */ jsxs11(
|
|
1126
|
+
UISiteHeader,
|
|
1127
|
+
{
|
|
1128
|
+
className: cn9("backdrop-blur-none supports-backdrop-filter:bg-background", className),
|
|
1129
|
+
children: [
|
|
1130
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-4.5", children: [
|
|
1131
|
+
logo,
|
|
1132
|
+
/* @__PURE__ */ jsx13(MainNav, { Link: Link7, pathname, items: menu })
|
|
1133
|
+
] }),
|
|
1134
|
+
/* @__PURE__ */ jsx13("div", { className: "flex items-center justify-end gap-3", children: /* @__PURE__ */ jsxs11("nav", { className: "flex items-center gap-0 md:gap-1", children: [
|
|
1135
|
+
/* @__PURE__ */ jsx13(ModeSwitcher3, {}),
|
|
1136
|
+
/* @__PURE__ */ jsx13(LanguageSwitcher, {}),
|
|
1137
|
+
/* @__PURE__ */ jsx13(MobileNav, { children: /* @__PURE__ */ jsxs11("div", { className: "flex flex-col space-y-3", children: [
|
|
1138
|
+
menu?.map(
|
|
1139
|
+
(item, navIndex) => item.href || item.children ? /* @__PURE__ */ jsx13(
|
|
1140
|
+
MobileNavItemRenderer,
|
|
1141
|
+
{
|
|
1142
|
+
item,
|
|
1143
|
+
Link: Link7,
|
|
1144
|
+
pathname,
|
|
1145
|
+
level: 1,
|
|
1146
|
+
onOpenChange: setMobileNavOpen
|
|
1147
|
+
},
|
|
1148
|
+
`nav-${navIndex}-${item.href}`
|
|
1149
|
+
) : null
|
|
1150
|
+
),
|
|
1151
|
+
loginHref && /* @__PURE__ */ jsx13("div", { className: "border-t pt-3", children: /* @__PURE__ */ jsx13(Button4, { variant: "secondary", size: "sm", className: "w-full", children: /* @__PURE__ */ jsx13(Link7, { href: loginHref, target: loginTarget, children: t("ui.navigation.signIn") }) }) })
|
|
1152
|
+
] }) }),
|
|
1153
|
+
loginHref && /* @__PURE__ */ jsxs11(Fragment5, { children: [
|
|
1154
|
+
/* @__PURE__ */ jsx13(Separator, { orientation: "vertical", className: "mx-3 h-5 max-md:hidden" }),
|
|
1155
|
+
/* @__PURE__ */ jsx13(Button4, { variant: "secondary", size: "sm", className: "hidden md:flex", children: /* @__PURE__ */ jsx13(Link7, { href: loginHref, target: loginTarget, children: t("ui.navigation.signIn") }) })
|
|
1156
|
+
] })
|
|
1157
|
+
] }) })
|
|
1158
|
+
]
|
|
1159
|
+
}
|
|
1160
|
+
);
|
|
1051
1161
|
}
|
|
1052
1162
|
|
|
1053
1163
|
// src/components/layouts/wrapper.tsx
|
|
@@ -1055,13 +1165,13 @@ import { useEffect as useEffect4, useState as useState5 } from "react";
|
|
|
1055
1165
|
import Link8 from "next/link";
|
|
1056
1166
|
import { RocketIcon } from "lucide-react";
|
|
1057
1167
|
import { useLayout as useLayout3, useSession as useSession5 } from "@pelatform/starter.hook";
|
|
1058
|
-
import { cn as
|
|
1168
|
+
import { cn as cn11 } from "pelatform-ui";
|
|
1059
1169
|
import { Button as Button5 } from "pelatform-ui/default";
|
|
1060
1170
|
|
|
1061
1171
|
// src/components/providers/layout.tsx
|
|
1062
1172
|
import { useEffect as useEffect3, useMemo as useMemo2, useState as useState4 } from "react";
|
|
1063
1173
|
import { LayoutContext } from "@pelatform/starter.hook";
|
|
1064
|
-
import { cn as
|
|
1174
|
+
import { cn as cn10 } from "pelatform-ui";
|
|
1065
1175
|
import { TooltipProvider } from "pelatform-ui/default";
|
|
1066
1176
|
import { useIsMobile } from "pelatform-ui/hooks";
|
|
1067
1177
|
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
@@ -1134,7 +1244,7 @@ function LayoutProvider({
|
|
|
1134
1244
|
"div",
|
|
1135
1245
|
{
|
|
1136
1246
|
"data-slot": "layout-wrapper",
|
|
1137
|
-
className:
|
|
1247
|
+
className: cn10("flex grow", className),
|
|
1138
1248
|
"data-sidebar-open": isSidebarOpen,
|
|
1139
1249
|
style,
|
|
1140
1250
|
children: /* @__PURE__ */ jsx14(TooltipProvider, { delayDuration: 0, children })
|
|
@@ -1148,6 +1258,7 @@ function LayoutProvider({
|
|
|
1148
1258
|
import { Fragment as Fragment6, jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1149
1259
|
function LayoutWrapper({
|
|
1150
1260
|
children,
|
|
1261
|
+
classNames,
|
|
1151
1262
|
logoHeader,
|
|
1152
1263
|
version = "v1",
|
|
1153
1264
|
...props
|
|
@@ -1158,13 +1269,15 @@ function LayoutWrapper({
|
|
|
1158
1269
|
{
|
|
1159
1270
|
logoHeader,
|
|
1160
1271
|
version,
|
|
1161
|
-
bodyClassName: isVersionV1 ? "" : "bg-muted!",
|
|
1162
|
-
|
|
1272
|
+
bodyClassName: cn11(isVersionV1 ? "" : "bg-muted!", classNames?.body),
|
|
1273
|
+
className: classNames?.layout,
|
|
1274
|
+
children: isVersionV1 ? /* @__PURE__ */ jsx15(ContentWrapper, { classNames, ...props, children }) : /* @__PURE__ */ jsx15(ContentWrapperV2, { classNames, ...props, children })
|
|
1163
1275
|
}
|
|
1164
1276
|
);
|
|
1165
1277
|
}
|
|
1166
1278
|
function ContentWrapper({
|
|
1167
1279
|
children,
|
|
1280
|
+
classNames,
|
|
1168
1281
|
sidebarHeader,
|
|
1169
1282
|
sidebarMenu,
|
|
1170
1283
|
homeUrl,
|
|
@@ -1173,32 +1286,52 @@ function ContentWrapper({
|
|
|
1173
1286
|
const { user } = useSession5();
|
|
1174
1287
|
const sidebarContent = /* @__PURE__ */ jsxs12(Fragment6, { children: [
|
|
1175
1288
|
sidebarHeader,
|
|
1176
|
-
/* @__PURE__ */ jsx15(SidebarContent, { children: sidebarMenu })
|
|
1289
|
+
/* @__PURE__ */ jsx15(SidebarContent, { className: classNames?.sidebarContent, children: sidebarMenu })
|
|
1177
1290
|
] });
|
|
1178
|
-
const studioButton = /* @__PURE__ */ jsx15(Button5, { variant: "ghost", asChild: true, children: /* @__PURE__ */ jsxs12(Link8, { href: studioUrl || "#", target: "_blank", children: [
|
|
1291
|
+
const studioButton = /* @__PURE__ */ jsx15(Button5, { variant: "ghost", asChild: true, className: classNames?.studioButton, children: /* @__PURE__ */ jsxs12(Link8, { href: studioUrl || "#", target: "_blank", children: [
|
|
1179
1292
|
/* @__PURE__ */ jsx15(RocketIcon, {}),
|
|
1180
1293
|
" Studio"
|
|
1181
1294
|
] }) });
|
|
1182
1295
|
return /* @__PURE__ */ jsxs12(Fragment6, { children: [
|
|
1183
|
-
/* @__PURE__ */ jsxs12(Header, { children: [
|
|
1184
|
-
/* @__PURE__ */ jsx15(HeaderLeft, {}),
|
|
1296
|
+
/* @__PURE__ */ jsxs12(Header, { className: classNames?.header, children: [
|
|
1297
|
+
/* @__PURE__ */ jsx15(HeaderLeft, { className: classNames?.headerLeft }),
|
|
1185
1298
|
/* @__PURE__ */ jsx15(
|
|
1186
1299
|
HeaderRight,
|
|
1187
1300
|
{
|
|
1301
|
+
className: classNames?.headerRight,
|
|
1188
1302
|
sidebar: /* @__PURE__ */ jsx15(HeaderSidebarMobile, { children: sidebarContent }),
|
|
1189
1303
|
button: studioUrl && user?.role === "admin" ? studioButton : null,
|
|
1190
1304
|
homeUrl
|
|
1191
1305
|
}
|
|
1192
1306
|
)
|
|
1193
1307
|
] }),
|
|
1194
|
-
/* @__PURE__ */ jsxs12(
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1308
|
+
/* @__PURE__ */ jsxs12(
|
|
1309
|
+
"div",
|
|
1310
|
+
{
|
|
1311
|
+
className: cn11(
|
|
1312
|
+
"flex grow pt-(--header-height-mobile) lg:pt-(--header-height)",
|
|
1313
|
+
classNames?.wrapper
|
|
1314
|
+
),
|
|
1315
|
+
children: [
|
|
1316
|
+
/* @__PURE__ */ jsx15(Sidebar, { className: classNames?.sidebar, children: sidebarContent }),
|
|
1317
|
+
/* @__PURE__ */ jsx15(
|
|
1318
|
+
"main",
|
|
1319
|
+
{
|
|
1320
|
+
className: cn11(
|
|
1321
|
+
"grow transition-all duration-300 lg:in-data-[sidebar-open=false]:ps-0 lg:ps-(--sidebar-width)",
|
|
1322
|
+
classNames?.content
|
|
1323
|
+
),
|
|
1324
|
+
children
|
|
1325
|
+
}
|
|
1326
|
+
)
|
|
1327
|
+
]
|
|
1328
|
+
}
|
|
1329
|
+
)
|
|
1198
1330
|
] });
|
|
1199
1331
|
}
|
|
1200
1332
|
function ContentWrapperV2({
|
|
1201
1333
|
children,
|
|
1334
|
+
classNames,
|
|
1202
1335
|
sidebarHeader,
|
|
1203
1336
|
sidebarMenu,
|
|
1204
1337
|
sidebarFooter,
|
|
@@ -1214,21 +1347,31 @@ function ContentWrapperV2({
|
|
|
1214
1347
|
}, []);
|
|
1215
1348
|
const sidebarContent = /* @__PURE__ */ jsxs12(Fragment6, { children: [
|
|
1216
1349
|
sidebarHeader,
|
|
1217
|
-
/* @__PURE__ */ jsx15(SidebarContent, { children: sidebarMenu }),
|
|
1350
|
+
/* @__PURE__ */ jsx15(SidebarContent, { className: classNames?.sidebarContent, children: sidebarMenu }),
|
|
1218
1351
|
!isMobile && sidebarFooter
|
|
1219
1352
|
] });
|
|
1220
|
-
const studioButton = /* @__PURE__ */ jsx15(
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1353
|
+
const studioButton = /* @__PURE__ */ jsx15(
|
|
1354
|
+
Button5,
|
|
1355
|
+
{
|
|
1356
|
+
variant: "mono",
|
|
1357
|
+
size: "sm",
|
|
1358
|
+
className: cn11("rounded-full", classNames?.studioButton),
|
|
1359
|
+
asChild: true,
|
|
1360
|
+
children: /* @__PURE__ */ jsxs12(Link8, { href: studioUrl || "#", target: "_blank", children: [
|
|
1361
|
+
/* @__PURE__ */ jsx15(RocketIcon, {}),
|
|
1362
|
+
" Studio"
|
|
1363
|
+
] })
|
|
1364
|
+
}
|
|
1365
|
+
);
|
|
1366
|
+
return /* @__PURE__ */ jsxs12("div", { className: cn11("flex h-screen w-full [&_.container-fluid]:px-5", classNames?.wrapper), children: [
|
|
1367
|
+
/* @__PURE__ */ jsx15(Sidebar, { className: classNames?.sidebar, children: sidebarContent }),
|
|
1226
1368
|
/* @__PURE__ */ jsxs12("div", { className: "flex w-full min-w-0 flex-1 flex-col pt-(--header-height-mobile) lg:pt-0", children: [
|
|
1227
|
-
isMobile && /* @__PURE__ */ jsxs12(Header, { children: [
|
|
1228
|
-
/* @__PURE__ */ jsx15(HeaderLeft, {}),
|
|
1369
|
+
isMobile && /* @__PURE__ */ jsxs12(Header, { className: classNames?.header, children: [
|
|
1370
|
+
/* @__PURE__ */ jsx15(HeaderLeft, { className: classNames?.headerLeft }),
|
|
1229
1371
|
/* @__PURE__ */ jsx15(
|
|
1230
1372
|
HeaderRight,
|
|
1231
1373
|
{
|
|
1374
|
+
className: classNames?.headerRight,
|
|
1232
1375
|
sidebar: /* @__PURE__ */ jsx15(HeaderSidebarMobile, { children: sidebarContent }),
|
|
1233
1376
|
button: studioUrl && user?.role === "admin" ? studioButton : null,
|
|
1234
1377
|
homeUrl
|
|
@@ -1238,11 +1381,11 @@ function ContentWrapperV2({
|
|
|
1238
1381
|
/* @__PURE__ */ jsx15("div", { className: "mx-5 flex grow py-2.5 lg:mx-2.5", children: /* @__PURE__ */ jsx15(
|
|
1239
1382
|
"div",
|
|
1240
1383
|
{
|
|
1241
|
-
className:
|
|
1384
|
+
className: cn11(
|
|
1242
1385
|
"grow overflow-y-auto rounded-xl border border-input bg-background shadow-xs duration-300 lg:in-data-[sidebar-open=true]:ms-[calc(var(--sidebar-width)+0.6rem)] lg:ms-[calc(var(--sidebar-width-collapsed)+0.6rem)]",
|
|
1243
1386
|
enableTransitions ? "transition-all duration-300" : "transition-none"
|
|
1244
1387
|
),
|
|
1245
|
-
children: /* @__PURE__ */ jsx15("main", { className: "grow", children })
|
|
1388
|
+
children: /* @__PURE__ */ jsx15("main", { className: cn11("grow", classNames?.content), children })
|
|
1246
1389
|
}
|
|
1247
1390
|
) })
|
|
1248
1391
|
] })
|
|
@@ -1332,7 +1475,7 @@ import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
|
|
|
1332
1475
|
import { NextIntlClientProvider } from "next-intl";
|
|
1333
1476
|
import { useConfig as useConfig7 } from "@pelatform/starter.hook";
|
|
1334
1477
|
import { QueryProvider, ThemeProvider } from "pelatform-ui/components";
|
|
1335
|
-
import { Toaster as Sonner } from "pelatform-ui/default";
|
|
1478
|
+
import { Toaster as Sonner, TooltipProvider as TooltipProvider2 } from "pelatform-ui/default";
|
|
1336
1479
|
import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1337
1480
|
function SharedProviders({
|
|
1338
1481
|
children,
|
|
@@ -1343,16 +1486,16 @@ function SharedProviders({
|
|
|
1343
1486
|
}) {
|
|
1344
1487
|
const config = useConfig7();
|
|
1345
1488
|
return /* @__PURE__ */ jsxs13(QueryProvider, { children: [
|
|
1346
|
-
/* @__PURE__ */ jsx17(ThemeProvider, { defaultTheme: config.ui.defaultTheme, children: /* @__PURE__ */ jsx17(NextIntlClientProvider, { locale, messages, timeZone, children: /* @__PURE__ */ jsxs13(Suspense2, { children: [
|
|
1489
|
+
/* @__PURE__ */ jsx17(ThemeProvider, { defaultTheme: config.ui.defaultTheme, children: /* @__PURE__ */ jsx17(TooltipProvider2, { children: /* @__PURE__ */ jsx17(NextIntlClientProvider, { locale, messages, timeZone, children: /* @__PURE__ */ jsxs13(Suspense2, { children: [
|
|
1347
1490
|
children,
|
|
1348
1491
|
/* @__PURE__ */ jsx17(Sonner, { position: sonnerPosition })
|
|
1349
|
-
] }) }) }),
|
|
1492
|
+
] }) }) }) }),
|
|
1350
1493
|
/* @__PURE__ */ jsx17(ReactQueryDevtools, { initialIsOpen: false })
|
|
1351
1494
|
] });
|
|
1352
1495
|
}
|
|
1353
1496
|
|
|
1354
1497
|
// src/components/utils/card.tsx
|
|
1355
|
-
import { cn as
|
|
1498
|
+
import { cn as cn12 } from "pelatform-ui";
|
|
1356
1499
|
import { Button as Button6, Card, CardContent, CardFooter, Skeleton as Skeleton4, Spinner } from "pelatform-ui/default";
|
|
1357
1500
|
import { Fragment as Fragment7, jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1358
1501
|
function CardComponent({
|
|
@@ -1373,7 +1516,7 @@ function CardComponent({
|
|
|
1373
1516
|
return /* @__PURE__ */ jsxs14(
|
|
1374
1517
|
Card,
|
|
1375
1518
|
{
|
|
1376
|
-
className:
|
|
1519
|
+
className: cn12(
|
|
1377
1520
|
"w-full overflow-hidden",
|
|
1378
1521
|
isDestructive && "border-destructive/70",
|
|
1379
1522
|
className,
|
|
@@ -1381,7 +1524,7 @@ function CardComponent({
|
|
|
1381
1524
|
),
|
|
1382
1525
|
...props,
|
|
1383
1526
|
children: [
|
|
1384
|
-
/* @__PURE__ */ jsxs14(CardContent, { className:
|
|
1527
|
+
/* @__PURE__ */ jsxs14(CardContent, { className: cn12("space-y-6 p-5 sm:p-10", classNames?.content), children: [
|
|
1385
1528
|
/* @__PURE__ */ jsx18(
|
|
1386
1529
|
CardHeaderComponent,
|
|
1387
1530
|
{
|
|
@@ -1417,12 +1560,12 @@ function CardHeaderComponent({
|
|
|
1417
1560
|
description,
|
|
1418
1561
|
isPending
|
|
1419
1562
|
}) {
|
|
1420
|
-
return /* @__PURE__ */ jsx18("div", { className:
|
|
1421
|
-
/* @__PURE__ */ jsx18(Skeleton4, { className:
|
|
1422
|
-
description && /* @__PURE__ */ jsx18(Skeleton4, { className:
|
|
1563
|
+
return /* @__PURE__ */ jsx18("div", { className: cn12("flex flex-col space-y-2", className, classNames?.header), children: isPending ? /* @__PURE__ */ jsxs14(Fragment7, { children: [
|
|
1564
|
+
/* @__PURE__ */ jsx18(Skeleton4, { className: cn12("h-7 w-1/3", classNames?.skeleton) }),
|
|
1565
|
+
description && /* @__PURE__ */ jsx18(Skeleton4, { className: cn12("h-5 w-2/3", classNames?.skeleton) })
|
|
1423
1566
|
] }) : /* @__PURE__ */ jsxs14(Fragment7, { children: [
|
|
1424
|
-
/* @__PURE__ */ jsx18("h2", { className:
|
|
1425
|
-
description && /* @__PURE__ */ jsx18("p", { className:
|
|
1567
|
+
/* @__PURE__ */ jsx18("h2", { className: cn12("font-medium text-xl", classNames?.title), children: title }),
|
|
1568
|
+
description && /* @__PURE__ */ jsx18("p", { className: cn12("text-muted-foreground text-sm", classNames?.description), children: description })
|
|
1426
1569
|
] }) });
|
|
1427
1570
|
}
|
|
1428
1571
|
function CardFooterComponent({
|
|
@@ -1439,7 +1582,7 @@ function CardFooterComponent({
|
|
|
1439
1582
|
return /* @__PURE__ */ jsx18(
|
|
1440
1583
|
CardFooter,
|
|
1441
1584
|
{
|
|
1442
|
-
className:
|
|
1585
|
+
className: cn12(
|
|
1443
1586
|
"flex items-center justify-between space-x-4 bg-muted p-3 sm:px-10",
|
|
1444
1587
|
isDestructive && "border-destructive/70",
|
|
1445
1588
|
className,
|
|
@@ -1449,7 +1592,7 @@ function CardFooterComponent({
|
|
|
1449
1592
|
instructions && /* @__PURE__ */ jsx18(
|
|
1450
1593
|
Skeleton4,
|
|
1451
1594
|
{
|
|
1452
|
-
className:
|
|
1595
|
+
className: cn12(
|
|
1453
1596
|
"h-4 w-48 max-w-full bg-muted-foreground/10 md:h-5 md:w-60",
|
|
1454
1597
|
classNames?.skeleton
|
|
1455
1598
|
)
|
|
@@ -1458,14 +1601,14 @@ function CardFooterComponent({
|
|
|
1458
1601
|
actionLabel && /* @__PURE__ */ jsx18(
|
|
1459
1602
|
Skeleton4,
|
|
1460
1603
|
{
|
|
1461
|
-
className:
|
|
1604
|
+
className: cn12("h-8 w-20 bg-muted-foreground/10 md:ms-auto", classNames?.skeleton)
|
|
1462
1605
|
}
|
|
1463
1606
|
)
|
|
1464
1607
|
] }) : /* @__PURE__ */ jsxs14(Fragment7, { children: [
|
|
1465
1608
|
instructions && /* @__PURE__ */ jsx18(
|
|
1466
1609
|
"div",
|
|
1467
1610
|
{
|
|
1468
|
-
className:
|
|
1611
|
+
className: cn12("text-muted-foreground text-xs md:text-sm", classNames?.instructions),
|
|
1469
1612
|
children: instructions
|
|
1470
1613
|
}
|
|
1471
1614
|
),
|
|
@@ -1499,7 +1642,7 @@ function CardActionComponent({
|
|
|
1499
1642
|
type: onClick ? "button" : "submit",
|
|
1500
1643
|
variant: isDestructive ? "destructive" : "primary",
|
|
1501
1644
|
size: "sm",
|
|
1502
|
-
className:
|
|
1645
|
+
className: cn12(
|
|
1503
1646
|
"ms-auto",
|
|
1504
1647
|
isSubmitting || disabled ? "pointer-events-auto! cursor-not-allowed" : "",
|
|
1505
1648
|
classNames?.button,
|
|
@@ -1518,7 +1661,7 @@ function CardActionComponent({
|
|
|
1518
1661
|
|
|
1519
1662
|
// src/components/utils/dialog.tsx
|
|
1520
1663
|
import { useTranslations as useTranslations11 } from "next-intl";
|
|
1521
|
-
import { cn as
|
|
1664
|
+
import { cn as cn13 } from "pelatform-ui";
|
|
1522
1665
|
import {
|
|
1523
1666
|
Button as Button7,
|
|
1524
1667
|
Dialog,
|
|
@@ -1546,13 +1689,13 @@ function DialogComponent({
|
|
|
1546
1689
|
DialogContent,
|
|
1547
1690
|
{
|
|
1548
1691
|
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
1549
|
-
className:
|
|
1692
|
+
className: cn13("bg-muted sm:max-w-md", classNames?.dialog?.content),
|
|
1550
1693
|
showCloseButton,
|
|
1551
1694
|
children: [
|
|
1552
1695
|
/* @__PURE__ */ jsxs15(
|
|
1553
1696
|
DialogHeader,
|
|
1554
1697
|
{
|
|
1555
|
-
className:
|
|
1698
|
+
className: cn13(
|
|
1556
1699
|
"-ms-6 -me-6 -mt-6 space-y-2 rounded-t-lg bg-background p-6",
|
|
1557
1700
|
classNames?.header
|
|
1558
1701
|
),
|
|
@@ -1586,13 +1729,13 @@ function DialogFooterComponent({
|
|
|
1586
1729
|
button
|
|
1587
1730
|
}) {
|
|
1588
1731
|
const t = useTranslations11();
|
|
1589
|
-
return /* @__PURE__ */ jsxs15(DialogFooter, { className:
|
|
1732
|
+
return /* @__PURE__ */ jsxs15(DialogFooter, { className: cn13(className, classNames?.dialog?.footer), children: [
|
|
1590
1733
|
cancelButton && /* @__PURE__ */ jsx19(
|
|
1591
1734
|
Button7,
|
|
1592
1735
|
{
|
|
1593
1736
|
type: "button",
|
|
1594
1737
|
variant: "ghost",
|
|
1595
|
-
className:
|
|
1738
|
+
className: cn13(classNames?.button),
|
|
1596
1739
|
onClick: () => onOpenChange?.(false),
|
|
1597
1740
|
disabled: cancelButtonDisabled,
|
|
1598
1741
|
children: t("common.actions.cancel")
|
|
@@ -1603,22 +1746,22 @@ function DialogFooterComponent({
|
|
|
1603
1746
|
}
|
|
1604
1747
|
|
|
1605
1748
|
// src/components/utils/skeleton.tsx
|
|
1606
|
-
import { cn as
|
|
1749
|
+
import { cn as cn14 } from "pelatform-ui";
|
|
1607
1750
|
import { Card as Card2, Skeleton as Skeleton5 } from "pelatform-ui/default";
|
|
1608
1751
|
import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1609
1752
|
function SkeletonViewComponent({ classNames }) {
|
|
1610
|
-
return /* @__PURE__ */ jsxs16(Card2, { className:
|
|
1753
|
+
return /* @__PURE__ */ jsxs16(Card2, { className: cn14("flex-row items-center gap-3 px-4 py-3", classNames?.cell), children: [
|
|
1611
1754
|
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
|
|
1612
|
-
/* @__PURE__ */ jsx20(Skeleton5, { className:
|
|
1613
|
-
/* @__PURE__ */ jsx20("div", { children: /* @__PURE__ */ jsx20(Skeleton5, { className:
|
|
1755
|
+
/* @__PURE__ */ jsx20(Skeleton5, { className: cn14("size-5 rounded-full", classNames?.skeleton) }),
|
|
1756
|
+
/* @__PURE__ */ jsx20("div", { children: /* @__PURE__ */ jsx20(Skeleton5, { className: cn14("h-4 w-32", classNames?.skeleton) }) })
|
|
1614
1757
|
] }),
|
|
1615
|
-
/* @__PURE__ */ jsx20(Skeleton5, { className:
|
|
1758
|
+
/* @__PURE__ */ jsx20(Skeleton5, { className: cn14("ms-auto size-8 w-16", classNames?.skeleton) })
|
|
1616
1759
|
] });
|
|
1617
1760
|
}
|
|
1618
1761
|
function SkeletonInputComponent({ classNames }) {
|
|
1619
1762
|
return /* @__PURE__ */ jsxs16("div", { className: "flex flex-col gap-1.5", children: [
|
|
1620
|
-
/* @__PURE__ */ jsx20(Skeleton5, { className:
|
|
1621
|
-
/* @__PURE__ */ jsx20(Skeleton5, { className:
|
|
1763
|
+
/* @__PURE__ */ jsx20(Skeleton5, { className: cn14("h-4 w-32", classNames?.skeleton) }),
|
|
1764
|
+
/* @__PURE__ */ jsx20(Skeleton5, { className: cn14("h-9 w-full", classNames?.skeleton) })
|
|
1622
1765
|
] });
|
|
1623
1766
|
}
|
|
1624
1767
|
|
|
@@ -1626,14 +1769,14 @@ function SkeletonInputComponent({ classNames }) {
|
|
|
1626
1769
|
import { useRef } from "react";
|
|
1627
1770
|
import { CheckIcon, CopyIcon } from "lucide-react";
|
|
1628
1771
|
import { useTranslations as useTranslations12 } from "next-intl";
|
|
1629
|
-
import { cn as
|
|
1772
|
+
import { cn as cn15 } from "pelatform-ui";
|
|
1630
1773
|
import {
|
|
1631
1774
|
Button as Button8,
|
|
1632
1775
|
Input,
|
|
1633
1776
|
Skeleton as Skeleton6,
|
|
1634
1777
|
Tooltip,
|
|
1635
1778
|
TooltipContent,
|
|
1636
|
-
TooltipProvider as
|
|
1779
|
+
TooltipProvider as TooltipProvider3,
|
|
1637
1780
|
TooltipTrigger
|
|
1638
1781
|
} from "pelatform-ui/default";
|
|
1639
1782
|
import { useCopyToClipboard } from "pelatform-ui/hooks";
|
|
@@ -1664,17 +1807,17 @@ function DisplayIdCard({
|
|
|
1664
1807
|
description,
|
|
1665
1808
|
isPending,
|
|
1666
1809
|
...props,
|
|
1667
|
-
children: isPending ? /* @__PURE__ */ jsx21(Skeleton6, { className:
|
|
1810
|
+
children: isPending ? /* @__PURE__ */ jsx21(Skeleton6, { className: cn15("h-11.5 w-full max-w-md", classNames?.skeleton) }) : /* @__PURE__ */ jsxs17(
|
|
1668
1811
|
"div",
|
|
1669
1812
|
{
|
|
1670
|
-
className:
|
|
1813
|
+
className: cn15(
|
|
1671
1814
|
"flex w-full max-w-md items-center justify-between rounded-md border p-2",
|
|
1672
1815
|
classNames?.grid
|
|
1673
1816
|
),
|
|
1674
1817
|
children: [
|
|
1675
1818
|
/* @__PURE__ */ jsx21(Input, { value: id, ref: inputRef, disabled: true, className: "border-none! bg-transparent!" }),
|
|
1676
|
-
/* @__PURE__ */ jsx21(
|
|
1677
|
-
/* @__PURE__ */ jsx21(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx21(Button8, { variant: "dim", onClick: handleCopy, disabled: copied, children: copied ? /* @__PURE__ */ jsx21(CheckIcon, { className:
|
|
1819
|
+
/* @__PURE__ */ jsx21(TooltipProvider3, { delayDuration: 0, children: /* @__PURE__ */ jsxs17(Tooltip, { children: [
|
|
1820
|
+
/* @__PURE__ */ jsx21(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx21(Button8, { variant: "dim", onClick: handleCopy, disabled: copied, children: copied ? /* @__PURE__ */ jsx21(CheckIcon, { className: cn15("stroke-green-600", classNames?.icon) }) : /* @__PURE__ */ jsx21(CopyIcon, { className: classNames?.icon }) }) }),
|
|
1678
1821
|
/* @__PURE__ */ jsx21(TooltipContent, { className: "px-2 py-1 text-xs", children: t("common.actions.copy") })
|
|
1679
1822
|
] }) })
|
|
1680
1823
|
]
|
|
@@ -1687,7 +1830,7 @@ function DisplayIdCard({
|
|
|
1687
1830
|
// src/components/empty-state.tsx
|
|
1688
1831
|
import Link9 from "next/link";
|
|
1689
1832
|
import { useTranslations as useTranslations13 } from "next-intl";
|
|
1690
|
-
import { cn as
|
|
1833
|
+
import { cn as cn16 } from "pelatform-ui";
|
|
1691
1834
|
import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1692
1835
|
function EmptyState({
|
|
1693
1836
|
className,
|
|
@@ -1699,7 +1842,7 @@ function EmptyState({
|
|
|
1699
1842
|
children
|
|
1700
1843
|
}) {
|
|
1701
1844
|
const t = useTranslations13();
|
|
1702
|
-
return /* @__PURE__ */ jsxs18("div", { className:
|
|
1845
|
+
return /* @__PURE__ */ jsxs18("div", { className: cn16("flex flex-col items-center justify-center gap-y-4", className), children: [
|
|
1703
1846
|
Icon && /* @__PURE__ */ jsx22("div", { className: "flex size-14 items-center justify-center rounded-2xl border bg-muted", children: /* @__PURE__ */ jsx22(Icon, { className: "size-6 text-foreground" }) }),
|
|
1704
1847
|
/* @__PURE__ */ jsx22("p", { className: "text-center font-medium text-base text-foreground", children: title }),
|
|
1705
1848
|
description && /* @__PURE__ */ jsxs18("p", { className: "max-w-sm text-balance text-center text-muted-foreground text-sm", children: [
|
|
@@ -1771,7 +1914,7 @@ function OTPInputGroup({ otpSeparators = 0 }) {
|
|
|
1771
1914
|
// src/components/password-input.tsx
|
|
1772
1915
|
import { useState as useState6 } from "react";
|
|
1773
1916
|
import { EyeIcon, EyeOffIcon } from "lucide-react";
|
|
1774
|
-
import { cn as
|
|
1917
|
+
import { cn as cn17 } from "pelatform-ui";
|
|
1775
1918
|
import { Button as Button9, Input as Input2 } from "pelatform-ui/default";
|
|
1776
1919
|
import { Fragment as Fragment9, jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1777
1920
|
function PasswordInput({
|
|
@@ -1789,7 +1932,7 @@ function PasswordInput({
|
|
|
1789
1932
|
{
|
|
1790
1933
|
type: isVisible && enableToggle ? "text" : "password",
|
|
1791
1934
|
variant,
|
|
1792
|
-
className:
|
|
1935
|
+
className: cn17(enableToggle && "pe-10", className),
|
|
1793
1936
|
...props,
|
|
1794
1937
|
onChange: (event) => {
|
|
1795
1938
|
setDisabled(!event.target.value);
|