@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.
Files changed (3) hide show
  1. package/dist/index.d.ts +45 -15
  2. package/dist/index.js +361 -218
  3. 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 { HouseIcon, LogOutIcon, PlusCircleIcon, SettingsIcon, ShieldIcon } from "lucide-react";
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 cn4, formatDate, getUserName as getUserName2 } from "pelatform-ui";
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 cn3, getSizeAvatar, getUserName } from "pelatform-ui";
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: cn3(
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: cn3("rounded-full bg-accent", getSizeAvatar(size), className, classNames?.base),
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: cn3("text-foreground uppercase", classNames?.fallback),
304
+ className: cn4("text-foreground uppercase", classNames?.fallback),
295
305
  delayMs: src ? 600 : void 0,
296
- children: getInitials(name, 2) || /* @__PURE__ */ jsx7(UserRoundIcon, { className: cn3("size-[50%]", classNames?.fallbackIcon) })
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: cn3(
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: cn3("rounded-full bg-accent", getSizeAvatar(size), className, classNames?.base),
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: cn3("text-foreground", classNames?.fallback),
356
+ className: cn4("text-foreground", classNames?.fallback),
347
357
  delayMs: src ? 600 : void 0,
348
- children: /* @__PURE__ */ jsx7(BuildingIcon, { className: cn3("size-[50%]", classNames?.fallbackIcon) })
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: cn4("flex items-center gap-2", className, classNames?.base), children: [
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: cn4(size !== "sm" && "my-0.5"),
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: cn4("grid flex-1 text-start leading-tight", classNames?.content), children: isPending ? /* @__PURE__ */ jsxs6(Fragment, { children: [
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: cn4(
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: cn4(
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: cn4(
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: cn4(
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: cn4("flex items-center gap-3 truncate", className, classNames?.base), children: [
435
- /* @__PURE__ */ jsx8(KeyRoundIcon, { className: cn4("size-4 shrink-0", classNames?.icon) }),
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: cn4("flex items-center gap-2 truncate", className, classNames?.base), children: [
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: cn4(size !== "sm" && "my-0.5"),
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: cn4("flex flex-col truncate text-start leading-tight", classNames?.content), children: isPending ? /* @__PURE__ */ jsxs6(Fragment, { children: [
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: cn4(
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: cn4(
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: cn4(
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: cn4(
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("header", { className: "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", children: /* @__PURE__ */ jsx10("div", { className: "@container flex grow items-stretch justify-between gap-2.5 pe-5", children }) });
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("header", { className: "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)", children: /* @__PURE__ */ jsx10("div", { className: "@container flex grow items-stretch justify-between gap-2.5 pe-5", children }) });
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({ children }) {
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(SheetContent, { className: "w-(--sidebar-width) gap-0 p-0", side: "left", close: false, children: [
677
- /* @__PURE__ */ jsxs8(SheetHeader, { className: "hidden space-y-0 p-0", children: [
678
- /* @__PURE__ */ jsx10(SheetTitle, { className: "sr-only", children: "Navigation menu" }),
679
- /* @__PURE__ */ jsx10(SheetDescription, { className: "sr-only", children: "NavigatSheet Description" })
680
- ] }),
681
- /* @__PURE__ */ jsx10(SheetBody, { className: "flex grow flex-col p-0", children })
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 cn5 } from "pelatform-ui";
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("aside", { className: "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", children: /* @__PURE__ */ jsxs9("div", { className: "w-(--sidebar-width) shrink-0 grow transition-all duration-300", children: [
714
- /* @__PURE__ */ jsx11("div", { className: "flex h-14 shrink-0 items-center justify-center px-2.5 lg:h-15", children: logoHeader }),
715
- children
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("aside", { className: "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", children: [
719
- children,
720
- /* @__PURE__ */ jsx11("div", {})
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("div", { className: "flex h-14 shrink-0 items-center gap-2 border-border border-b px-2.5 lg:h-15", children: /* @__PURE__ */ jsx11(BackLink, { Link: Link5, href: linkHref, children: text ?? (admin ? t("common.actions.back") : t("ui.navigation.settings")) }) });
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({ children }) {
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: cn5(
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(ScrollArea, { className: "my-2 h-[calc(100vh-5.5rem)] grow lg:my-4 lg:h-[calc(100vh-4rem)]", children });
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: cn5(
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 cn6 } from "pelatform-ui";
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({ disableProjectBy = false }) {
1006
+ function SiteFooter({
1007
+ className,
1008
+ disableProjectBy = false
1009
+ }) {
921
1010
  const { app } = useConfig5();
922
1011
  const t = useTranslations9();
923
- return /* @__PURE__ */ jsxs10(UISiteFooter, { className: cn6("*:gap-2! *:py-0!", disableProjectBy ? "*:justify-center!" : ""), children: [
924
- /* @__PURE__ */ jsxs10("div", { className: "text-balance text-center text-muted-foreground text-sm leading-loose md:text-left", children: [
925
- "\xA9 ",
926
- (/* @__PURE__ */ new Date()).getFullYear(),
927
- " ",
928
- app.name,
929
- ". ",
930
- t("ui.common.copyright")
931
- ] }),
932
- !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: [
933
- /* @__PURE__ */ jsx12("span", { className: "text-muted-foreground", children: t("ui.common.projectBy") }),
934
- " ",
935
- /* @__PURE__ */ jsx12(Button3, { mode: "link", underline: "dashed", children: /* @__PURE__ */ jsx12(
936
- Link6,
937
- {
938
- href: "https://pelatform.com",
939
- target: "_blank",
940
- className: "font-medium text-foreground",
941
- children: "Pelatform"
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(UISiteHeader, { className: "backdrop-blur-none supports-backdrop-filter:bg-background", children: [
975
- /* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-4.5", children: [
976
- logo,
977
- /* @__PURE__ */ jsx13(MainNav, { Link: Link7, pathname, items: menu })
978
- ] }),
979
- /* @__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: [
980
- /* @__PURE__ */ jsx13(ModeSwitcher3, {}),
981
- /* @__PURE__ */ jsx13(LanguageSwitcher, {}),
982
- /* @__PURE__ */ jsx13(Separator, { orientation: "vertical", className: "mx-3 h-5 max-lg:hidden" }),
983
- /* @__PURE__ */ jsx13(MobileNav, { children: /* @__PURE__ */ jsxs11("div", { className: "flex flex-col space-y-3", children: [
984
- menu?.map(
985
- (item, navIndex) => item.href || item.children ? /* @__PURE__ */ jsx13(
986
- MobileNavItemRenderer,
987
- {
988
- item,
989
- Link: Link7,
990
- pathname,
991
- level: 1,
992
- onOpenChange: setMobileNavOpen
993
- },
994
- `nav-${navIndex}-${item.href}`
995
- ) : null
996
- ),
997
- /* @__PURE__ */ jsx13("div", { className: "border-t pt-3", children: isAuthenticated ? /* @__PURE__ */ jsx13(
998
- Button4,
999
- {
1000
- variant: "outline",
1001
- size: "sm",
1002
- className: "w-full",
1003
- onClick: () => router.push(path.auth.SIGN_OUT),
1004
- children: t("ui.navigation.signOut")
1005
- }
1006
- ) : /* @__PURE__ */ jsx13(Button4, { variant: "secondary", size: "sm", className: "w-full", children: /* @__PURE__ */ jsx13(Link7, { href: path.auth.SIGN_IN, children: t("ui.navigation.signIn") }) }) })
1007
- ] }) }),
1008
- 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") }) })
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(UISiteHeader, { className: "backdrop-blur-none supports-backdrop-filter:bg-background", children: [
1022
- /* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-4.5", children: [
1023
- logo,
1024
- /* @__PURE__ */ jsx13(MainNav, { Link: Link7, pathname, items: menu })
1025
- ] }),
1026
- /* @__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: [
1027
- /* @__PURE__ */ jsx13(ModeSwitcher3, {}),
1028
- /* @__PURE__ */ jsx13(LanguageSwitcher, {}),
1029
- /* @__PURE__ */ jsx13(MobileNav, { children: /* @__PURE__ */ jsxs11("div", { className: "flex flex-col space-y-3", children: [
1030
- menu?.map(
1031
- (item, navIndex) => item.href || item.children ? /* @__PURE__ */ jsx13(
1032
- MobileNavItemRenderer,
1033
- {
1034
- item,
1035
- Link: Link7,
1036
- pathname,
1037
- level: 1,
1038
- onOpenChange: setMobileNavOpen
1039
- },
1040
- `nav-${navIndex}-${item.href}`
1041
- ) : null
1042
- ),
1043
- 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") }) }) })
1044
- ] }) }),
1045
- loginHref && /* @__PURE__ */ jsxs11(Fragment5, { children: [
1046
- /* @__PURE__ */ jsx13(Separator, { orientation: "vertical", className: "mx-3 h-5 max-md:hidden" }),
1047
- /* @__PURE__ */ jsx13(Button4, { variant: "secondary", size: "sm", className: "hidden md:flex", children: /* @__PURE__ */ jsx13(Link7, { href: loginHref, target: loginTarget, children: t("ui.navigation.signIn") }) })
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 cn8 } from "pelatform-ui";
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 cn7 } from "pelatform-ui";
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: cn7("flex grow", 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
- children: isVersionV1 ? /* @__PURE__ */ jsx15(ContentWrapper, { ...props, children }) : /* @__PURE__ */ jsx15(ContentWrapperV2, { ...props, children })
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("div", { className: "flex grow pt-(--header-height-mobile) lg:pt-(--header-height)", children: [
1195
- /* @__PURE__ */ jsx15(Sidebar, { children: sidebarContent }),
1196
- /* @__PURE__ */ jsx15("main", { className: "grow transition-all duration-300 lg:in-data-[sidebar-open=false]:ps-0 lg:ps-(--sidebar-width)", children })
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(Button5, { variant: "mono", size: "sm", className: "rounded-full", asChild: true, children: /* @__PURE__ */ jsxs12(Link8, { href: studioUrl || "#", target: "_blank", children: [
1221
- /* @__PURE__ */ jsx15(RocketIcon, {}),
1222
- " Studio"
1223
- ] }) });
1224
- return /* @__PURE__ */ jsxs12("div", { className: "flex h-screen w-full [&_.container-fluid]:px-5", children: [
1225
- /* @__PURE__ */ jsx15(Sidebar, { children: sidebarContent }),
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: cn8(
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 cn9 } from "pelatform-ui";
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: cn9(
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: cn9("space-y-6 p-5 sm:p-10", classNames?.content), children: [
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: cn9("flex flex-col space-y-2", className, classNames?.header), children: isPending ? /* @__PURE__ */ jsxs14(Fragment7, { children: [
1421
- /* @__PURE__ */ jsx18(Skeleton4, { className: cn9("h-7 w-1/3", classNames?.skeleton) }),
1422
- description && /* @__PURE__ */ jsx18(Skeleton4, { className: cn9("h-5 w-2/3", classNames?.skeleton) })
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: cn9("font-medium text-xl", classNames?.title), children: title }),
1425
- description && /* @__PURE__ */ jsx18("p", { className: cn9("text-muted-foreground text-sm", classNames?.description), children: description })
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: cn9(
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: cn9(
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: cn9("h-8 w-20 bg-muted-foreground/10 md:ms-auto", classNames?.skeleton)
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: cn9("text-muted-foreground text-xs md:text-sm", classNames?.instructions),
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: cn9(
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 cn10 } from "pelatform-ui";
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: cn10("bg-muted sm:max-w-md", classNames?.dialog?.content),
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: cn10(
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: cn10(className, classNames?.dialog?.footer), children: [
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: cn10(classNames?.button),
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 cn11 } from "pelatform-ui";
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: cn11("flex-row items-center gap-3 px-4 py-3", classNames?.cell), children: [
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: cn11("size-5 rounded-full", classNames?.skeleton) }),
1613
- /* @__PURE__ */ jsx20("div", { children: /* @__PURE__ */ jsx20(Skeleton5, { className: cn11("h-4 w-32", classNames?.skeleton) }) })
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: cn11("ms-auto size-8 w-16", classNames?.skeleton) })
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: cn11("h-4 w-32", classNames?.skeleton) }),
1621
- /* @__PURE__ */ jsx20(Skeleton5, { className: cn11("h-9 w-full", classNames?.skeleton) })
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 cn12 } from "pelatform-ui";
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 TooltipProvider2,
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: cn12("h-11.5 w-full max-w-md", classNames?.skeleton) }) : /* @__PURE__ */ jsxs17(
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: cn12(
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(TooltipProvider2, { delayDuration: 0, children: /* @__PURE__ */ jsxs17(Tooltip, { children: [
1677
- /* @__PURE__ */ jsx21(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx21(Button8, { variant: "dim", onClick: handleCopy, disabled: copied, children: copied ? /* @__PURE__ */ jsx21(CheckIcon, { className: cn12("stroke-green-600", classNames?.icon) }) : /* @__PURE__ */ jsx21(CopyIcon, { className: classNames?.icon }) }) }),
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 cn13 } from "pelatform-ui";
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: cn13("flex flex-col items-center justify-center gap-y-4", className), children: [
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 cn14 } from "pelatform-ui";
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: cn14(enableToggle && "pe-10", className),
1935
+ className: cn17(enableToggle && "pe-10", className),
1793
1936
  ...props,
1794
1937
  onChange: (event) => {
1795
1938
  setDisabled(!event.target.value);