@customafk/lunas-ui 0.2.77 → 0.2.78

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 (31) hide show
  1. package/dist/cms-layout-Ba_5wSnr.mjs +2 -0
  2. package/dist/cms-layout-Ba_5wSnr.mjs.map +1 -0
  3. package/dist/cms-layout-DCJhB-GY.cjs +2 -0
  4. package/dist/cms-layout-DCJhB-GY.cjs.map +1 -0
  5. package/dist/features/tables/index.d.cts +1 -1
  6. package/dist/features/tables/index.d.mts +1 -1
  7. package/dist/{flex-BTPF2-F6.d.cts → flex-CIzZIICK.d.cts} +4 -4
  8. package/dist/{flex-BTPF2-F6.d.mts → flex-CIzZIICK.d.mts} +4 -4
  9. package/dist/{index-DnHoBjv7.d.mts → index-DiloQ0Ev.d.mts} +4 -4
  10. package/dist/{index-C9JAujMq.d.cts → index-DmrQBf4E.d.cts} +4 -4
  11. package/dist/index.cjs +1 -1
  12. package/dist/index.d.cts +4 -4
  13. package/dist/index.d.mts +4 -4
  14. package/dist/index.mjs +1 -1
  15. package/dist/{input-D73TrUof.d.cts → input-DxNK7Wo6.d.cts} +2 -2
  16. package/dist/{input-D73TrUof.d.mts → input-DxNK7Wo6.d.mts} +2 -2
  17. package/dist/layouts/cms-layout/index.cjs +1 -1
  18. package/dist/layouts/cms-layout/index.mjs +1 -1
  19. package/dist/layouts/flex.d.cts +1 -1
  20. package/dist/layouts/flex.d.mts +1 -1
  21. package/dist/{search-input-DEvYI6Rm.d.mts → search-input-C8feOKe2.d.cts} +2 -2
  22. package/dist/{search-input-h_3MoMqK.d.cts → search-input-CoqwakbI.d.mts} +2 -2
  23. package/dist/ui/input.d.cts +1 -1
  24. package/dist/ui/input.d.mts +1 -1
  25. package/dist/ui/inputs/search-input.d.cts +1 -1
  26. package/dist/ui/inputs/search-input.d.mts +1 -1
  27. package/package.json +1 -1
  28. package/dist/cms-layout-BXd2ncAV.cjs +0 -2
  29. package/dist/cms-layout-BXd2ncAV.cjs.map +0 -1
  30. package/dist/cms-layout-COIo9HiP.mjs +0 -2
  31. package/dist/cms-layout-COIo9HiP.mjs.map +0 -1
package/dist/index.d.mts CHANGED
@@ -26,7 +26,7 @@ import { $ as EmailFieldProps, A as TanStackActionSubmit, B as TextField, C as S
26
26
  import { i as TextEditorProps, n as TextEditorToolbarProps, r as TextEditor, t as TextEditorToolbar } from "./index-DRAyYm8g.mjs";
27
27
  import { n as CMSLayoutProps, r as CMSLayoutUser, t as CMSLayout } from "./index-KgI9KqIf.mjs";
28
28
  import { n as PaymentLayoutUser, t as PaymentLayout } from "./index-BBMKb5q2.mjs";
29
- import { t as Flex } from "./flex-BTPF2-F6.mjs";
29
+ import { t as Flex } from "./flex-CIzZIICK.mjs";
30
30
  import { t as Grid } from "./grid-i7Oz2Izf.mjs";
31
31
  import { t as FeatureDeveloping } from "./FeatureDeveloping-DRmYHj91.mjs";
32
32
  import { t as FeatureFixing } from "./FeatureFixing-BHHCDtAQ.mjs";
@@ -43,8 +43,8 @@ import { t as EditBtn } from "./edit-C8JDClC3.mjs";
43
43
  import { t as RefreshBtn } from "./refresh-CWvkHT0L.mjs";
44
44
  import { t as TrashBtn } from "./trash-DBDuSVzW.mjs";
45
45
  import { t as UploadImageBtn } from "./upload-image-DM-tkZuR.mjs";
46
- import { n as InputVariantProps, t as Input } from "./input-D73TrUof.mjs";
47
- import { t as SearchInput } from "./search-input-DEvYI6Rm.mjs";
46
+ import { n as InputVariantProps, t as Input } from "./input-DxNK7Wo6.mjs";
47
+ import { t as SearchInput } from "./search-input-CoqwakbI.mjs";
48
48
  import { a as AlertTitle, i as AlertProps, n as AlertDescription, o as AlertTitleProps, r as AlertDescriptionProps, t as Alert } from "./alert-C8wdckO8.mjs";
49
49
  import { a as AlertDialogDescription, c as AlertDialogOverlay, d as AlertDialogTrigger, i as AlertDialogContent, l as AlertDialogPortal, n as AlertDialogAction, o as AlertDialogFooter, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog, u as AlertDialogTitle } from "./alert-dialog-8aDimwPK.mjs";
50
50
  import { t as AspectRatio } from "./aspect-ratio-DqXWkGJQ.mjs";
@@ -92,5 +92,5 @@ import { i as TabsTrigger, n as TabsContent, r as TabsList, t as Tabs } from "./
92
92
  import { t as Textarea } from "./textarea-D1diQohb.mjs";
93
93
  import { n as toggleVariants, t as Toggle } from "./toggle-CqTmiPDi.mjs";
94
94
  import { n as ToggleGroupItem, t as ToggleGroup } from "./toggle-group-l_Mi7NRg.mjs";
95
- import { $ as FilterType, A as UITableLoadMore, At as TUITableWrapper, B as UITableEmptyDisplay, C as UITableTooltipActions, Ct as TUITableHeadCellOption, D as UITableContainer, Dt as TUITableInnerWrapper, E as UITableProvider, Et as TUITableInnerTable, F as UITableHeadCellOption, G as ActiveFilter, H as UITableCellActions, I as UITableHeadCell, J as ColumnAggregationType, K as BooleanFilterValue, L as UITableHead, M as UITableInnerTable, Mt as TagFilterValue, N as UITableHeadRow, Nt as TextFilterValue, O as UITableWrapper, Ot as TUITableLoadMore, P as UITableHeadCellSelect, Pt as UITableEmpty, Q as FilterOption, R as UITableFooterRow, S as UITableTooltip, St as TUITableHeadCell, T as UITableUserDataDisplay, Tt as TUITableHeadRow, U as UITableCell, V as UITableCellSelect, W as UITableBody, X as DateRangeFilterValue, Y as CsvCell, Z as FilterDefinition, _ as UITableRemoveButton, _t as TUITableCellSelect, a as UITableCurrencyDisplay, at as TTableAnalysisContext, b as UITableSummaryBar, bt as TUITableFooter, c as UITableEditButton, ct as TTableFilterContext, d as UITableListDisplay, dt as TTableInnerWrapperContext, et as FilterValue, f as UITableMoreButton, ft as TTableRowContext, g as UITableProgressDisplay, gt as TUITableCellActions, h as UITablePhoneNumberDisplay, ht as TUITableCell, i as UITableBooleanDisplay, it as SummaryItem, j as UITableInnerWrapper, jt as TableProviderProps, k as UITableRow, kt as TUITableRow, l as UITableEmailDisplay, lt as TTableHeadRowContext, m as UITablePermalink, mt as TUITableBody, n as UITableAvatarNameDisplay, nt as RowData, o as UITableDateDisplay, ot as TTableBodyContext, p as UITableNameDisplay, pt as TTableSummaryContext, q as ColumnAggregation, r as UITableBadgeDisplay, rt as SingleTagFilterValue, s as UITableDescriptionDisplay, st as TTableContext, t as UITableAnalysisPanel, tt as NumberFilterValue, u as UITableFilter, ut as TTableInnerTableContext, v as UITableStatisticDisplay, vt as TUITableColumn, w as UITableTooltipFilter, wt as TUITableHeadCellSelect, x as UITableToggleButton, xt as TUITableHead, y as UITableStatusDisplay, yt as TUITableEmptyDisplay, z as UITableFooter } from "./index-DnHoBjv7.mjs";
95
+ import { $ as FilterType, A as UITableLoadMore, At as TUITableWrapper, B as UITableEmptyDisplay, C as UITableTooltipActions, Ct as TUITableHeadCellOption, D as UITableContainer, Dt as TUITableInnerWrapper, E as UITableProvider, Et as TUITableInnerTable, F as UITableHeadCellOption, G as ActiveFilter, H as UITableCellActions, I as UITableHeadCell, J as ColumnAggregationType, K as BooleanFilterValue, L as UITableHead, M as UITableInnerTable, Mt as TagFilterValue, N as UITableHeadRow, Nt as TextFilterValue, O as UITableWrapper, Ot as TUITableLoadMore, P as UITableHeadCellSelect, Pt as UITableEmpty, Q as FilterOption, R as UITableFooterRow, S as UITableTooltip, St as TUITableHeadCell, T as UITableUserDataDisplay, Tt as TUITableHeadRow, U as UITableCell, V as UITableCellSelect, W as UITableBody, X as DateRangeFilterValue, Y as CsvCell, Z as FilterDefinition, _ as UITableRemoveButton, _t as TUITableCellSelect, a as UITableCurrencyDisplay, at as TTableAnalysisContext, b as UITableSummaryBar, bt as TUITableFooter, c as UITableEditButton, ct as TTableFilterContext, d as UITableListDisplay, dt as TTableInnerWrapperContext, et as FilterValue, f as UITableMoreButton, ft as TTableRowContext, g as UITableProgressDisplay, gt as TUITableCellActions, h as UITablePhoneNumberDisplay, ht as TUITableCell, i as UITableBooleanDisplay, it as SummaryItem, j as UITableInnerWrapper, jt as TableProviderProps, k as UITableRow, kt as TUITableRow, l as UITableEmailDisplay, lt as TTableHeadRowContext, m as UITablePermalink, mt as TUITableBody, n as UITableAvatarNameDisplay, nt as RowData, o as UITableDateDisplay, ot as TTableBodyContext, p as UITableNameDisplay, pt as TTableSummaryContext, q as ColumnAggregation, r as UITableBadgeDisplay, rt as SingleTagFilterValue, s as UITableDescriptionDisplay, st as TTableContext, t as UITableAnalysisPanel, tt as NumberFilterValue, u as UITableFilter, ut as TTableInnerTableContext, v as UITableStatisticDisplay, vt as TUITableColumn, w as UITableTooltipFilter, wt as TUITableHeadCellSelect, x as UITableToggleButton, xt as TUITableHead, y as UITableStatusDisplay, yt as TUITableEmptyDisplay, z as UITableFooter } from "./index-DiloQ0Ev.mjs";
96
96
  export { ActiveFilter, ActivityHeatmapChart, type ActivityHeatmapChartProps, ActivityPoint, AddNewBtn, Alert, AlertDescription, AlertDescriptionProps, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertProps, AlertTitle, AlertTitleProps, AnyFieldProps, ArrayCol, ArrayHeaderRow, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, BaseChartProps, BooleanFieldValue, BooleanFilterValue, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, type ButtonProps, CMSLayout, CMSLayoutProps, type CMSLayoutUser, Calendar, CalendarDayButton, CandlestickChart, type CandlestickChartProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartConfig, ChartContainer, ChartContainerProps, ChartLegend, ChartLegendContent, ChartLegendContentProps, ChartSeries, ChartStyle, ChartTooltip, ChartTooltipContent, ChartTooltipContentProps, ChartTrend, Checkbox, CheckboxField, CheckboxFieldProps, Collapsible, CollapsibleContent, CollapsibleTrigger, ColumnAggregation, ColumnAggregationType, Combobox, ComboboxField, ComboboxFieldProps, ComboboxOption, ComboboxProps, ComboboxRef, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ConversionFunnelChart, type ConversionFunnelChartProps, CorrelationScatterChart, type CorrelationScatterChartProps, CountryDisplay, CsvCell, DataList, DataListItem, DateDisplay, DateField, DateFieldProps, DateFieldValue, DateRangeFilterValue, DateTooltip, Description, DescriptionBadge, DescriptionBoolean, DescriptionCopy, DescriptionDate, DescriptionEmpty, DescriptionHeader, DescriptionImages, DescriptionItem, DescriptionLink, DescriptionLongText, DescriptionName, DescriptionNumberPhone, DescriptionSection, DescriptionStatistic, DescriptionStatisticProps, DescriptionStatus, DescriptionTagList, DescriptionUser, DetailDialog, type DetailDialogProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DonutChart, type DonutChartProps, type DonutChartSegment, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EditBtn, EmailField, EmailFieldProps, Empty, EmptyContent, EmptyDescription, EmptyDisplay, EmptyHeader, EmptyMedia, EmptyTitle, ErrorDialog, type ErrorDialogProps, FeatureDeveloping, FeatureFixing, Field, FieldContent, FieldContentMain, FieldError, FieldGroup, FieldLabel, FieldOrientation, FieldRounding, FieldSeparator, FieldType, FileUploader, FilterDefinition, FilterOption, FilterType, FilterValue, Flex, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, type FunnelStage, GainLossBarChart, type GainLossBarChartProps, Google, Grid, GridProductCard, HoverCard, HoverCardContent, HoverCardTrigger, Image, IndexedPerformanceLineChart, type IndexedPerformanceLineChartProps, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputVariantProps, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Label, LoadingDialog, type LoadingDialogProps, LoginPage, type LoginPageProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricRadarChart, type MetricRadarChartProps, MirroredBarChart, type MirroredBarChartProps, type MirroredBarRow, MultiSelectFieldValue, MultipleSelector, MultipleSelectorRef, NameDisplay, NamedValue, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NotAuthorized, NotFound, type NotFoundProps, NumberField, NumberFieldProps, NumberFieldValue, NumberFilterValue, OHLCPoint, Option, OrdersBarChart, type OrdersBarChartProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Paragraph, type ParagraphProps, PasswordField, PasswordFieldProps, PaymentLayout, PaymentLayoutUser, PhoneNumberDisplay, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, PortfolioAllocationTreemap, type PortfolioAllocationTreemapProps, PortfolioHolding, PriceRangeAreaChart, type PriceRangeAreaChartProps, ProductCard, Progress, RadioGroup, RadioGroupField, RadioGroupFieldProps, RadioGroupItem, RadioOption, RefreshBtn, RegisterPage, type RegisterPageProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, RevenueAreaChart, type RevenueAreaChartProps, RevenueOrdersComposedChart, type RevenueOrdersComposedChartProps, type RevenueOrdersPoint, RoleBadge, RowData, SalesTargetRadialChart, type SalesTargetRadialChartProps, SankeyFlowChart, type SankeyFlowChartProps, type SankeyFlowLink, type SankeyFlowNode, ScatterPoint, ScrollArea, ScrollBar, SearchInput, SearchModal, Select, SelectContent, SelectField, SelectFieldProps, SelectGroup, SelectItem, SelectLabel, SelectOption, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, SimpleArrayField, SimpleBooleanField, SimpleCard, SimpleComboboxField, SimpleDateField, SimpleEmailField, SimpleNumberField, SimplePasswordField, SimpleRadioGroupField, SimpleSelectField, SimpleTextField, SimpleTextFieldProps, SimpleTextareaField, SingleTagFilterValue, Skeleton, Slider, SparklineChart, type SparklineChartProps, Spinner, StackedAreaChart, type StackedAreaChartProps, Statistic, type StatisticProps, SummaryItem, Switch, SwitchField, SwitchFieldProps, TTableAnalysisContext, TTableBodyContext, TTableContext, TTableFilterContext, TTableHeadRowContext, TTableInnerTableContext, TTableInnerWrapperContext, TTableRowContext, TTableSummaryContext, TUITableBody, TUITableCell, TUITableCellActions, TUITableCellSelect, TUITableColumn, TUITableEmptyDisplay, TUITableFooter, TUITableHead, TUITableHeadCell, TUITableHeadCellOption, TUITableHeadCellSelect, TUITableHeadRow, TUITableInnerTable, TUITableInnerWrapper, TUITableLoadMore, TUITableRow, TUITableWrapper, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableProviderProps, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagFilterValue, TanStackActionSubmit, TanStackActionsForm, TanStackCardForm, TanStackContainerForm, TanStackDialogForm, TanStackFieldGroup, TanStackPopoverForm, TanStackSectionForm, TanStackTitleField, TextEditor, TextEditorField, TextEditorFieldProps, type TextEditorProps, TextEditorToolbar, type TextEditorToolbarProps, TextField, TextFieldProps, TextFieldValue, TextFilterValue, Textarea, TextareaField, TextareaFieldProps, TimeSeriesPoint, Title, type TitleProps, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopProductsBarChart, type TopProductsBarChartProps, TrashBtn, UITableAnalysisPanel, UITableAvatarNameDisplay, UITableBadgeDisplay, UITableBody, UITableBooleanDisplay, UITableCell, UITableCellActions, UITableCellSelect, UITableContainer, UITableCurrencyDisplay, UITableDateDisplay, UITableDescriptionDisplay, UITableEditButton, UITableEmailDisplay, UITableEmpty, UITableEmptyDisplay, UITableFilter, UITableFooter, UITableFooterRow, UITableHead, UITableHeadCell, UITableHeadCellOption, UITableHeadCellSelect, UITableHeadRow, UITableInnerTable, UITableInnerWrapper, UITableListDisplay, UITableLoadMore, UITableMoreButton, UITableNameDisplay, UITablePermalink, UITablePhoneNumberDisplay, UITableProgressDisplay, UITableProvider, UITableRemoveButton, UITableRow, UITableStatisticDisplay, UITableStatusDisplay, UITableSummaryBar, UITableToggleButton, UITableTooltip, UITableTooltipActions, UITableTooltipFilter, UITableUserDataDisplay, UITableWrapper, UploadImageBtn, UserDataDisplay, VerifyEmailPage, type VerifyEmailPageProps, VolumeBarChart, type VolumeBarChartProps, WaterfallChart, type WaterfallChartProps, WaterfallPoint, badgeVariants, buttonGroupVariants, computeIndexedSeries, formatCompactNumber, formatCurrency, formatPercent, formatSignedPercent, getChartColor, getDirectionColor, navigationMenuTriggerStyle, paragraphVariants, toDateLabel, toast, toggleVariants, useChart, useDebounce, useFormField, useTanStackFieldContext, useTanStackForm, useTanStackFormContext, withTanStackFieldGroup, withTanStackForm };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{Button as e}from"./ui/button.mjs";import{Paragraph as t,paragraphVariants as n}from"./typography/paragraph.mjs";import{Card as r,CardAction as i,CardContent as a,CardDescription as o,CardFooter as s,CardHeader as c,CardTitle as l}from"./ui/card.mjs";import{Skeleton as u}from"./ui/skeleton.mjs";import{Image as d}from"./ui/image.mjs";import{GridProductCard as f}from"./cards/grid-product-card.mjs";import{ProductCard as p}from"./cards/product-card.mjs";import{SimpleCard as m}from"./cards/simple-card.mjs";import{Flex as h}from"./layouts/flex.mjs";import{CountryDisplay as g}from"./data-display/country.mjs";import{DataList as _,DataListItem as v}from"./data-display/data-list.mjs";import{t as y}from"./date-Nsz0Pewe.mjs";import{Badge as b,badgeVariants as x}from"./ui/badge.mjs";import{Tooltip as S,TooltipContent as C,TooltipProvider as w,TooltipTrigger as T}from"./ui/tooltip.mjs";import{DateTooltip as E}from"./data-display/date-tooltip.mjs";import{EmptyDisplay as D}from"./data-display/empty.mjs";import{NameDisplay as O}from"./data-display/name.mjs";import{PhoneNumberDisplay as k}from"./data-display/phone-number.mjs";import{RoleBadge as A}from"./data-display/role-badge.mjs";import{Statistic as j}from"./data-display/statistic.mjs";import{Avatar as M,AvatarFallback as N,AvatarImage as P}from"./ui/avatar.mjs";import{UserDataDisplay as F}from"./data-display/user.mjs";import{AlertDialog as I,AlertDialogAction as L,AlertDialogCancel as R,AlertDialogContent as z,AlertDialogDescription as B,AlertDialogFooter as V,AlertDialogHeader as H,AlertDialogOverlay as U,AlertDialogPortal as W,AlertDialogTitle as G,AlertDialogTrigger as K}from"./ui/alert-dialog.mjs";import{ConfirmDialog as q}from"./dialogs/confirm-dialog.mjs";import{t as J}from"./detail-dialog-Ct0vAjFe.mjs";import{Title as Y}from"./typography/title.mjs";import{ErrorDialog as X}from"./dialogs/error-dialog.mjs";import{Dialog as Z,DialogClose as Q,DialogContent as $,DialogDescription as ee,DialogFooter as te,DialogHeader as ne,DialogOverlay as re,DialogPortal as ie,DialogTitle as ae,DialogTrigger as oe}from"./ui/dialog.mjs";import{LoadingDialog as se}from"./dialogs/loading-dialog.mjs";import{ActivityHeatmapChart as ce,CandlestickChart as le,ConversionFunnelChart as ue,CorrelationScatterChart as de,DonutChart as fe,GainLossBarChart as pe,IndexedPerformanceLineChart as me,MetricRadarChart as he,MirroredBarChart as ge,OrdersBarChart as _e,PortfolioAllocationTreemap as ve,PriceRangeAreaChart as ye,RevenueAreaChart as be,RevenueOrdersComposedChart as xe,SalesTargetRadialChart as Se,SankeyFlowChart as Ce,SparklineChart as we,StackedAreaChart as Te,TopProductsBarChart as Ee,VolumeBarChart as De,WaterfallChart as Oe,computeIndexedSeries as ke,formatCompactNumber as Ae,formatCurrency as je,formatPercent as Me,formatSignedPercent as Ne,getChartColor as Pe,getDirectionColor as Fe,toDateLabel as Ie}from"./features/charts/index.mjs";import{Description as Le,DescriptionBadge as Re,DescriptionBoolean as ze,DescriptionCopy as Be,DescriptionDate as Ve,DescriptionEmpty as He,DescriptionHeader as Ue,DescriptionImages as We,DescriptionItem as Ge,DescriptionLink as Ke,DescriptionLongText as qe,DescriptionName as Je,DescriptionNumberPhone as Ye,DescriptionSection as Xe,DescriptionStatistic as Ze,DescriptionStatus as Qe,DescriptionTagList as $e,DescriptionUser as et}from"./features/descriptions/index.mjs";import{Command as tt,CommandDialog as nt,CommandEmpty as rt,CommandGroup as it,CommandInput as at,CommandItem as ot,CommandList as st,CommandSeparator as ct,CommandShortcut as lt}from"./ui/command.mjs";import{t as ut}from"./search-modal-Cdmi2iyV.mjs";import{A as dt,C as ft,D as pt,E as mt,F as ht,G as gt,H as _t,I as vt,K as yt,L as bt,M as xt,N as St,O as Ct,P as wt,Q as Tt,R as Et,S as Dt,T as Ot,U as kt,V as At,W as jt,_ as Mt,a as Nt,b as Pt,c as Ft,d as It,f as Lt,g as Rt,h as zt,i as Bt,j as Vt,k as Ht,l as Ut,m as Wt,n as Gt,o as Kt,p as qt,r as Jt,s as Yt,t as Xt,u as Zt,v as Qt,w as $t,x as en,y as tn}from"./tables-BGzwkdFO.mjs";import{Checkbox as nn}from"./ui/checkbox.mjs";import{DropdownMenu as rn,DropdownMenuCheckboxItem as an,DropdownMenuContent as on,DropdownMenuGroup as sn,DropdownMenuItem as cn,DropdownMenuLabel as ln,DropdownMenuPortal as un,DropdownMenuRadioGroup as dn,DropdownMenuRadioItem as fn,DropdownMenuSeparator as pn,DropdownMenuShortcut as mn,DropdownMenuSub as hn,DropdownMenuSubContent as gn,DropdownMenuSubTrigger as _n,DropdownMenuTrigger as vn}from"./ui/dropdown-menu.mjs";import{Spinner as yn}from"./ui/spinner.mjs";import{ResizableHandle as bn,ResizablePanel as xn,ResizablePanelGroup as Sn}from"./ui/resizable.mjs";import{A as Cn,B as wn,C as Tn,D as En,E as Dn,F as On,G as kn,H as An,I as jn,K as Mn,L as Nn,M as Pn,N as Fn,O as In,P as Ln,R as Rn,S as zn,T as Bn,U as Vn,V as Hn,W as Un,_ as Wn,a as Gn,b as Kn,c as qn,d as Jn,f as Yn,g as Xn,h as Zn,i as Qn,j as $n,k as er,l as tr,m as nr,n as rr,o as ir,p as ar,r as or,s as sr,t as cr,u as lr,v as ur,w as dr,x as fr,y as pr,z as mr}from"./tanstack-form-q9hDCc0Y.mjs";import{Popover as hr,PopoverAnchor as gr,PopoverClose as _r,PopoverContent as vr,PopoverTrigger as yr}from"./ui/popover.mjs";import{n as br,t as xr}from"./text-editor-CtR27_PR.mjs";import{Input as Sr}from"./ui/input.mjs";import{Separator as Cr}from"./ui/separator.mjs";import{Sheet as wr,SheetClose as Tr,SheetContent as Er,SheetDescription as Dr,SheetFooter as Or,SheetHeader as kr,SheetTitle as Ar,SheetTrigger as jr}from"./ui/sheet.mjs";import{t as Mr}from"./cms-layout-COIo9HiP.mjs";import{t as Nr}from"./payment-layout-BSl9DYQA.mjs";import{Grid as Pr}from"./layouts/grid.mjs";import{FeatureDeveloping as Fr}from"./pages/FeatureDeveloping.mjs";import{FeatureFixing as Ir}from"./pages/FeatureFixing.mjs";import{NotAuthorized as Lr}from"./pages/NotAuthorized.mjs";import{NotFound as Rr}from"./pages/NotFound.mjs";import{n as zr,r as Br,t as Vr}from"./alert-OD1KJTEV.mjs";import{Label as Hr}from"./ui/label.mjs";import{LoginPage as Ur}from"./pages/LoginPage.mjs";import{RegisterPage as Wr}from"./pages/RegisterPage.mjs";import{InputOTP as Gr,InputOTPGroup as Kr,InputOTPSeparator as qr,InputOTPSlot as Jr}from"./ui/input-otp.mjs";import{VerifyEmailPage as Yr}from"./pages/VerifyEmailPage.mjs";import{Google as Xr}from"./systems/google.mjs";import{AddNewBtn as Zr}from"./ui/buttons/add-new.mjs";import{EditBtn as Qr}from"./ui/buttons/edit.mjs";import{RefreshBtn as $r}from"./ui/buttons/refresh.mjs";import{TrashBtn as ei}from"./ui/buttons/trash.mjs";import{UploadImageBtn as ti}from"./ui/buttons/upload-image.mjs";import{SearchInput as ni}from"./ui/inputs/search-input.mjs";import{AspectRatio as ri}from"./ui/aspect-ratio.mjs";import{Breadcrumb as ii,BreadcrumbEllipsis as ai,BreadcrumbItem as oi,BreadcrumbLink as si,BreadcrumbList as ci,BreadcrumbPage as li,BreadcrumbSeparator as ui}from"./ui/breadcrumb.mjs";import{ButtonGroup as di,ButtonGroupSeparator as fi,ButtonGroupText as pi,buttonGroupVariants as mi}from"./ui/button-group.mjs";import{Calendar as hi,CalendarDayButton as gi}from"./ui/calendar.mjs";import{Carousel as _i,CarouselContent as vi,CarouselItem as yi,CarouselNext as bi,CarouselPrevious as xi}from"./ui/carousel.mjs";import{ChartContainer as Si,ChartLegend as Ci,ChartLegendContent as wi,ChartStyle as Ti,ChartTooltip as Ei,ChartTooltipContent as Di,useChart as Oi}from"./ui/chart.mjs";import{Collapsible as ki,CollapsibleContent as Ai,CollapsibleTrigger as ji}from"./ui/collapsible.mjs";import{t as Mi}from"./combobox-C64Rvd7n.mjs";import{ContextMenu as Ni,ContextMenuCheckboxItem as Pi,ContextMenuContent as Fi,ContextMenuGroup as Ii,ContextMenuItem as Li,ContextMenuLabel as Ri,ContextMenuPortal as zi,ContextMenuRadioGroup as Bi,ContextMenuRadioItem as Vi,ContextMenuSeparator as Hi,ContextMenuShortcut as Ui,ContextMenuSub as Wi,ContextMenuSubContent as Gi,ContextMenuSubTrigger as Ki,ContextMenuTrigger as qi}from"./ui/context-menu.mjs";import{Drawer as Ji,DrawerClose as Yi,DrawerContent as Xi,DrawerDescription as Zi,DrawerFooter as Qi,DrawerHeader as $i,DrawerOverlay as ea,DrawerPortal as ta,DrawerTitle as na,DrawerTrigger as ra}from"./ui/drawer.mjs";import{Empty as ia,EmptyContent as aa,EmptyDescription as oa,EmptyHeader as sa,EmptyMedia as ca,EmptyTitle as la}from"./ui/empty.mjs";import{Progress as ua}from"./ui/progress.mjs";import{FileUploader as da}from"./ui/file-uploader.mjs";import{Form as fa,FormControl as pa,FormDescription as ma,FormField as ha,FormItem as ga,FormLabel as _a,FormMessage as va,useFormField as ya}from"./ui/form.mjs";import{HoverCard as ba,HoverCardContent as xa,HoverCardTrigger as Sa}from"./ui/hover-card.mjs";import{Item as Ca,ItemActions as wa,ItemContent as Ta,ItemDescription as Ea,ItemFooter as Da,ItemGroup as Oa,ItemHeader as ka,ItemMedia as Aa,ItemSeparator as ja,ItemTitle as Ma}from"./ui/item.mjs";import{Menubar as Na,MenubarCheckboxItem as Pa,MenubarContent as Fa,MenubarGroup as Ia,MenubarItem as La,MenubarLabel as Ra,MenubarMenu as za,MenubarPortal as Ba,MenubarRadioGroup as Va,MenubarRadioItem as Ha,MenubarSeparator as Ua,MenubarShortcut as Wa,MenubarSub as Ga,MenubarSubContent as Ka,MenubarSubTrigger as qa,MenubarTrigger as Ja}from"./ui/menubar.mjs";import{MultipleSelector as Ya,useDebounce as Xa}from"./ui/multi-select.mjs";import{NavigationMenu as Za,NavigationMenuContent as Qa,NavigationMenuIndicator as $a,NavigationMenuItem as eo,NavigationMenuLink as to,NavigationMenuList as no,NavigationMenuTrigger as ro,NavigationMenuViewport as io,navigationMenuTriggerStyle as ao}from"./ui/navigation-menu.mjs";import{Pagination as oo,PaginationContent as so,PaginationEllipsis as co,PaginationItem as lo,PaginationLink as uo,PaginationNext as fo,PaginationPrevious as po}from"./ui/pagination.mjs";import{RadioGroup as mo,RadioGroupItem as ho}from"./ui/radio-group.mjs";import{ScrollArea as go,ScrollBar as _o}from"./ui/scroll-area.mjs";import{Select as vo,SelectContent as yo,SelectGroup as bo,SelectItem as xo,SelectLabel as So,SelectSeparator as Co,SelectTrigger as wo,SelectValue as To}from"./ui/select.mjs";import{Slider as Eo}from"./ui/slider.mjs";import{Toaster as Do,toast as Oo}from"./ui/sonner.mjs";import{Switch as ko}from"./ui/switch.mjs";import{Table as Ao,TableBody as jo,TableCaption as Mo,TableCell as No,TableFooter as Po,TableHead as Fo,TableHeader as Io,TableRow as Lo}from"./ui/table.mjs";import{Tabs as Ro,TabsContent as zo,TabsList as Bo,TabsTrigger as Vo}from"./ui/tabs.mjs";import{Textarea as Ho}from"./ui/textarea.mjs";import{Toggle as Uo,toggleVariants as Wo}from"./ui/toggle.mjs";import{ToggleGroup as Go,ToggleGroupItem as Ko}from"./ui/toggle-group.mjs";export{ce as ActivityHeatmapChart,Zr as AddNewBtn,Vr as Alert,zr as AlertDescription,I as AlertDialog,L as AlertDialogAction,R as AlertDialogCancel,z as AlertDialogContent,B as AlertDialogDescription,V as AlertDialogFooter,H as AlertDialogHeader,U as AlertDialogOverlay,W as AlertDialogPortal,G as AlertDialogTitle,K as AlertDialogTrigger,Br as AlertTitle,cr as ArrayCol,rr as ArrayHeaderRow,ri as AspectRatio,M as Avatar,N as AvatarFallback,P as AvatarImage,b as Badge,ii as Breadcrumb,ai as BreadcrumbEllipsis,oi as BreadcrumbItem,si as BreadcrumbLink,ci as BreadcrumbList,li as BreadcrumbPage,ui as BreadcrumbSeparator,e as Button,di as ButtonGroup,fi as ButtonGroupSeparator,pi as ButtonGroupText,Mr as CMSLayout,hi as Calendar,gi as CalendarDayButton,le as CandlestickChart,r as Card,i as CardAction,a as CardContent,o as CardDescription,s as CardFooter,c as CardHeader,l as CardTitle,_i as Carousel,vi as CarouselContent,yi as CarouselItem,bi as CarouselNext,xi as CarouselPrevious,Si as ChartContainer,Ci as ChartLegend,wi as ChartLegendContent,Ti as ChartStyle,Ei as ChartTooltip,Di as ChartTooltipContent,nn as Checkbox,or as CheckboxField,ki as Collapsible,Ai as CollapsibleContent,ji as CollapsibleTrigger,Mi as Combobox,Qn as ComboboxField,tt as Command,nt as CommandDialog,rt as CommandEmpty,it as CommandGroup,at as CommandInput,ot as CommandItem,st as CommandList,ct as CommandSeparator,lt as CommandShortcut,q as ConfirmDialog,Ni as ContextMenu,Pi as ContextMenuCheckboxItem,Fi as ContextMenuContent,Ii as ContextMenuGroup,Li as ContextMenuItem,Ri as ContextMenuLabel,zi as ContextMenuPortal,Bi as ContextMenuRadioGroup,Vi as ContextMenuRadioItem,Hi as ContextMenuSeparator,Ui as ContextMenuShortcut,Wi as ContextMenuSub,Gi as ContextMenuSubContent,Ki as ContextMenuSubTrigger,qi as ContextMenuTrigger,ue as ConversionFunnelChart,de as CorrelationScatterChart,g as CountryDisplay,_ as DataList,v as DataListItem,y as DateDisplay,Gn as DateField,E as DateTooltip,Le as Description,Re as DescriptionBadge,ze as DescriptionBoolean,Be as DescriptionCopy,Ve as DescriptionDate,He as DescriptionEmpty,Ue as DescriptionHeader,We as DescriptionImages,Ge as DescriptionItem,Ke as DescriptionLink,qe as DescriptionLongText,Je as DescriptionName,Ye as DescriptionNumberPhone,Xe as DescriptionSection,Ze as DescriptionStatistic,Qe as DescriptionStatus,$e as DescriptionTagList,et as DescriptionUser,J as DetailDialog,Z as Dialog,Q as DialogClose,$ as DialogContent,ee as DialogDescription,te as DialogFooter,ne as DialogHeader,re as DialogOverlay,ie as DialogPortal,ae as DialogTitle,oe as DialogTrigger,fe as DonutChart,Ji as Drawer,Yi as DrawerClose,Xi as DrawerContent,Zi as DrawerDescription,Qi as DrawerFooter,$i as DrawerHeader,ea as DrawerOverlay,ta as DrawerPortal,na as DrawerTitle,ra as DrawerTrigger,rn as DropdownMenu,an as DropdownMenuCheckboxItem,on as DropdownMenuContent,sn as DropdownMenuGroup,cn as DropdownMenuItem,ln as DropdownMenuLabel,un as DropdownMenuPortal,dn as DropdownMenuRadioGroup,fn as DropdownMenuRadioItem,pn as DropdownMenuSeparator,mn as DropdownMenuShortcut,hn as DropdownMenuSub,gn as DropdownMenuSubContent,_n as DropdownMenuSubTrigger,vn as DropdownMenuTrigger,Qr as EditBtn,ir as EmailField,ia as Empty,aa as EmptyContent,oa as EmptyDescription,D as EmptyDisplay,sa as EmptyHeader,ca as EmptyMedia,la as EmptyTitle,X as ErrorDialog,Fr as FeatureDeveloping,Ir as FeatureFixing,sr as Field,qn as FieldContent,tr as FieldContentMain,lr as FieldError,Jn as FieldGroup,Yn as FieldLabel,ar as FieldSeparator,da as FileUploader,h as Flex,fa as Form,pa as FormControl,ma as FormDescription,ha as FormField,ga as FormItem,_a as FormLabel,va as FormMessage,pe as GainLossBarChart,Xr as Google,Pr as Grid,f as GridProductCard,ba as HoverCard,xa as HoverCardContent,Sa as HoverCardTrigger,d as Image,me as IndexedPerformanceLineChart,Sr as Input,Gr as InputOTP,Kr as InputOTPGroup,qr as InputOTPSeparator,Jr as InputOTPSlot,Ca as Item,wa as ItemActions,Ta as ItemContent,Ea as ItemDescription,Da as ItemFooter,Oa as ItemGroup,ka as ItemHeader,Aa as ItemMedia,ja as ItemSeparator,Ma as ItemTitle,Hr as Label,se as LoadingDialog,Ur as LoginPage,Na as Menubar,Pa as MenubarCheckboxItem,Fa as MenubarContent,Ia as MenubarGroup,La as MenubarItem,Ra as MenubarLabel,za as MenubarMenu,Ba as MenubarPortal,Va as MenubarRadioGroup,Ha as MenubarRadioItem,Ua as MenubarSeparator,Wa as MenubarShortcut,Ga as MenubarSub,Ka as MenubarSubContent,qa as MenubarSubTrigger,Ja as MenubarTrigger,he as MetricRadarChart,ge as MirroredBarChart,Ya as MultipleSelector,O as NameDisplay,Za as NavigationMenu,Qa as NavigationMenuContent,$a as NavigationMenuIndicator,eo as NavigationMenuItem,to as NavigationMenuLink,no as NavigationMenuList,ro as NavigationMenuTrigger,io as NavigationMenuViewport,Lr as NotAuthorized,Rr as NotFound,nr as NumberField,_e as OrdersBarChart,oo as Pagination,so as PaginationContent,co as PaginationEllipsis,lo as PaginationItem,uo as PaginationLink,fo as PaginationNext,po as PaginationPrevious,t as Paragraph,Zn as PasswordField,Nr as PaymentLayout,k as PhoneNumberDisplay,hr as Popover,gr as PopoverAnchor,_r as PopoverClose,vr as PopoverContent,yr as PopoverTrigger,ve as PortfolioAllocationTreemap,ye as PriceRangeAreaChart,p as ProductCard,ua as Progress,mo as RadioGroup,Xn as RadioGroupField,ho as RadioGroupItem,$r as RefreshBtn,Wr as RegisterPage,bn as ResizableHandle,xn as ResizablePanel,Sn as ResizablePanelGroup,be as RevenueAreaChart,xe as RevenueOrdersComposedChart,A as RoleBadge,Se as SalesTargetRadialChart,Ce as SankeyFlowChart,go as ScrollArea,_o as ScrollBar,ni as SearchInput,ut as SearchModal,vo as Select,yo as SelectContent,Wn as SelectField,bo as SelectGroup,xo as SelectItem,So as SelectLabel,Co as SelectSeparator,wo as SelectTrigger,To as SelectValue,Cr as Separator,wr as Sheet,Tr as SheetClose,Er as SheetContent,Dr as SheetDescription,Or as SheetFooter,kr as SheetHeader,Ar as SheetTitle,jr as SheetTrigger,ur as SimpleArrayField,pr as SimpleBooleanField,m as SimpleCard,Kn as SimpleComboboxField,fr as SimpleDateField,zn as SimpleEmailField,Tn as SimpleNumberField,dr as SimplePasswordField,Bn as SimpleRadioGroupField,Dn as SimpleSelectField,En as SimpleTextField,In as SimpleTextareaField,u as Skeleton,Eo as Slider,we as SparklineChart,yn as Spinner,Te as StackedAreaChart,j as Statistic,ko as Switch,er as SwitchField,Ao as Table,jo as TableBody,Mo as TableCaption,No as TableCell,Po as TableFooter,Fo as TableHead,Io as TableHeader,Lo as TableRow,Ro as Tabs,zo as TabsContent,Bo as TabsList,Vo as TabsTrigger,Cn as TanStackActionSubmit,$n as TanStackActionsForm,Pn as TanStackCardForm,Fn as TanStackContainerForm,Ln as TanStackDialogForm,On as TanStackFieldGroup,jn as TanStackPopoverForm,Nn as TanStackSectionForm,Rn as TanStackTitleField,xr as TextEditor,mr as TextEditorField,br as TextEditorToolbar,wn as TextField,Ho as Textarea,Hn as TextareaField,Y as Title,Do as Toaster,Uo as Toggle,Go as ToggleGroup,Ko as ToggleGroupItem,S as Tooltip,C as TooltipContent,w as TooltipProvider,T as TooltipTrigger,Ee as TopProductsBarChart,ei as TrashBtn,Xt as UITableAnalysisPanel,Gt as UITableAvatarNameDisplay,Jt as UITableBadgeDisplay,yt as UITableBody,Bt as UITableBooleanDisplay,gt as UITableCell,jt as UITableCellActions,kt as UITableCellSelect,pt as UITableContainer,Nt as UITableCurrencyDisplay,Kt as UITableDateDisplay,Yt as UITableDescriptionDisplay,Ft as UITableEditButton,Ut as UITableEmailDisplay,Tt as UITableEmpty,_t as UITableEmptyDisplay,Zt as UITableFilter,At as UITableFooter,Et as UITableFooterRow,bt as UITableHead,ht as UITableHeadCell,vt as UITableHeadCellOption,wt as UITableHeadCellSelect,St as UITableHeadRow,xt as UITableInnerTable,Vt as UITableInnerWrapper,It as UITableListDisplay,dt as UITableLoadMore,Lt as UITableMoreButton,qt as UITableNameDisplay,Wt as UITablePermalink,zt as UITablePhoneNumberDisplay,Rt as UITableProgressDisplay,mt as UITableProvider,Mt as UITableRemoveButton,Ht as UITableRow,Qt as UITableStatisticDisplay,tn as UITableStatusDisplay,Pt as UITableSummaryBar,en as UITableToggleButton,Dt as UITableTooltip,ft as UITableTooltipActions,$t as UITableTooltipFilter,Ot as UITableUserDataDisplay,Ct as UITableWrapper,ti as UploadImageBtn,F as UserDataDisplay,Yr as VerifyEmailPage,De as VolumeBarChart,Oe as WaterfallChart,x as badgeVariants,mi as buttonGroupVariants,ke as computeIndexedSeries,Ae as formatCompactNumber,je as formatCurrency,Me as formatPercent,Ne as formatSignedPercent,Pe as getChartColor,Fe as getDirectionColor,ao as navigationMenuTriggerStyle,n as paragraphVariants,Ie as toDateLabel,Oo as toast,Wo as toggleVariants,Oi as useChart,Xa as useDebounce,ya as useFormField,kn as useTanStackFieldContext,An as useTanStackForm,Mn as useTanStackFormContext,Vn as withTanStackFieldGroup,Un as withTanStackForm};
1
+ import{Button as e}from"./ui/button.mjs";import{Paragraph as t,paragraphVariants as n}from"./typography/paragraph.mjs";import{Card as r,CardAction as i,CardContent as a,CardDescription as o,CardFooter as s,CardHeader as c,CardTitle as l}from"./ui/card.mjs";import{Skeleton as u}from"./ui/skeleton.mjs";import{Image as d}from"./ui/image.mjs";import{GridProductCard as f}from"./cards/grid-product-card.mjs";import{ProductCard as p}from"./cards/product-card.mjs";import{SimpleCard as m}from"./cards/simple-card.mjs";import{Flex as h}from"./layouts/flex.mjs";import{CountryDisplay as g}from"./data-display/country.mjs";import{DataList as _,DataListItem as v}from"./data-display/data-list.mjs";import{t as y}from"./date-Nsz0Pewe.mjs";import{Badge as b,badgeVariants as x}from"./ui/badge.mjs";import{Tooltip as S,TooltipContent as C,TooltipProvider as w,TooltipTrigger as T}from"./ui/tooltip.mjs";import{DateTooltip as E}from"./data-display/date-tooltip.mjs";import{EmptyDisplay as D}from"./data-display/empty.mjs";import{NameDisplay as O}from"./data-display/name.mjs";import{PhoneNumberDisplay as k}from"./data-display/phone-number.mjs";import{RoleBadge as A}from"./data-display/role-badge.mjs";import{Statistic as j}from"./data-display/statistic.mjs";import{Avatar as M,AvatarFallback as N,AvatarImage as P}from"./ui/avatar.mjs";import{UserDataDisplay as F}from"./data-display/user.mjs";import{AlertDialog as I,AlertDialogAction as L,AlertDialogCancel as R,AlertDialogContent as z,AlertDialogDescription as B,AlertDialogFooter as V,AlertDialogHeader as H,AlertDialogOverlay as U,AlertDialogPortal as W,AlertDialogTitle as G,AlertDialogTrigger as K}from"./ui/alert-dialog.mjs";import{ConfirmDialog as q}from"./dialogs/confirm-dialog.mjs";import{t as J}from"./detail-dialog-Ct0vAjFe.mjs";import{Title as Y}from"./typography/title.mjs";import{ErrorDialog as X}from"./dialogs/error-dialog.mjs";import{Dialog as Z,DialogClose as Q,DialogContent as $,DialogDescription as ee,DialogFooter as te,DialogHeader as ne,DialogOverlay as re,DialogPortal as ie,DialogTitle as ae,DialogTrigger as oe}from"./ui/dialog.mjs";import{LoadingDialog as se}from"./dialogs/loading-dialog.mjs";import{ActivityHeatmapChart as ce,CandlestickChart as le,ConversionFunnelChart as ue,CorrelationScatterChart as de,DonutChart as fe,GainLossBarChart as pe,IndexedPerformanceLineChart as me,MetricRadarChart as he,MirroredBarChart as ge,OrdersBarChart as _e,PortfolioAllocationTreemap as ve,PriceRangeAreaChart as ye,RevenueAreaChart as be,RevenueOrdersComposedChart as xe,SalesTargetRadialChart as Se,SankeyFlowChart as Ce,SparklineChart as we,StackedAreaChart as Te,TopProductsBarChart as Ee,VolumeBarChart as De,WaterfallChart as Oe,computeIndexedSeries as ke,formatCompactNumber as Ae,formatCurrency as je,formatPercent as Me,formatSignedPercent as Ne,getChartColor as Pe,getDirectionColor as Fe,toDateLabel as Ie}from"./features/charts/index.mjs";import{Description as Le,DescriptionBadge as Re,DescriptionBoolean as ze,DescriptionCopy as Be,DescriptionDate as Ve,DescriptionEmpty as He,DescriptionHeader as Ue,DescriptionImages as We,DescriptionItem as Ge,DescriptionLink as Ke,DescriptionLongText as qe,DescriptionName as Je,DescriptionNumberPhone as Ye,DescriptionSection as Xe,DescriptionStatistic as Ze,DescriptionStatus as Qe,DescriptionTagList as $e,DescriptionUser as et}from"./features/descriptions/index.mjs";import{Command as tt,CommandDialog as nt,CommandEmpty as rt,CommandGroup as it,CommandInput as at,CommandItem as ot,CommandList as st,CommandSeparator as ct,CommandShortcut as lt}from"./ui/command.mjs";import{t as ut}from"./search-modal-Cdmi2iyV.mjs";import{A as dt,C as ft,D as pt,E as mt,F as ht,G as gt,H as _t,I as vt,K as yt,L as bt,M as xt,N as St,O as Ct,P as wt,Q as Tt,R as Et,S as Dt,T as Ot,U as kt,V as At,W as jt,_ as Mt,a as Nt,b as Pt,c as Ft,d as It,f as Lt,g as Rt,h as zt,i as Bt,j as Vt,k as Ht,l as Ut,m as Wt,n as Gt,o as Kt,p as qt,r as Jt,s as Yt,t as Xt,u as Zt,v as Qt,w as $t,x as en,y as tn}from"./tables-BGzwkdFO.mjs";import{Checkbox as nn}from"./ui/checkbox.mjs";import{DropdownMenu as rn,DropdownMenuCheckboxItem as an,DropdownMenuContent as on,DropdownMenuGroup as sn,DropdownMenuItem as cn,DropdownMenuLabel as ln,DropdownMenuPortal as un,DropdownMenuRadioGroup as dn,DropdownMenuRadioItem as fn,DropdownMenuSeparator as pn,DropdownMenuShortcut as mn,DropdownMenuSub as hn,DropdownMenuSubContent as gn,DropdownMenuSubTrigger as _n,DropdownMenuTrigger as vn}from"./ui/dropdown-menu.mjs";import{Spinner as yn}from"./ui/spinner.mjs";import{ResizableHandle as bn,ResizablePanel as xn,ResizablePanelGroup as Sn}from"./ui/resizable.mjs";import{A as Cn,B as wn,C as Tn,D as En,E as Dn,F as On,G as kn,H as An,I as jn,K as Mn,L as Nn,M as Pn,N as Fn,O as In,P as Ln,R as Rn,S as zn,T as Bn,U as Vn,V as Hn,W as Un,_ as Wn,a as Gn,b as Kn,c as qn,d as Jn,f as Yn,g as Xn,h as Zn,i as Qn,j as $n,k as er,l as tr,m as nr,n as rr,o as ir,p as ar,r as or,s as sr,t as cr,u as lr,v as ur,w as dr,x as fr,y as pr,z as mr}from"./tanstack-form-q9hDCc0Y.mjs";import{Popover as hr,PopoverAnchor as gr,PopoverClose as _r,PopoverContent as vr,PopoverTrigger as yr}from"./ui/popover.mjs";import{n as br,t as xr}from"./text-editor-CtR27_PR.mjs";import{Input as Sr}from"./ui/input.mjs";import{Separator as Cr}from"./ui/separator.mjs";import{t as wr}from"./cms-layout-Ba_5wSnr.mjs";import{Sheet as Tr,SheetClose as Er,SheetContent as Dr,SheetDescription as Or,SheetFooter as kr,SheetHeader as Ar,SheetTitle as jr,SheetTrigger as Mr}from"./ui/sheet.mjs";import{t as Nr}from"./payment-layout-BSl9DYQA.mjs";import{Grid as Pr}from"./layouts/grid.mjs";import{FeatureDeveloping as Fr}from"./pages/FeatureDeveloping.mjs";import{FeatureFixing as Ir}from"./pages/FeatureFixing.mjs";import{NotAuthorized as Lr}from"./pages/NotAuthorized.mjs";import{NotFound as Rr}from"./pages/NotFound.mjs";import{n as zr,r as Br,t as Vr}from"./alert-OD1KJTEV.mjs";import{Label as Hr}from"./ui/label.mjs";import{LoginPage as Ur}from"./pages/LoginPage.mjs";import{RegisterPage as Wr}from"./pages/RegisterPage.mjs";import{InputOTP as Gr,InputOTPGroup as Kr,InputOTPSeparator as qr,InputOTPSlot as Jr}from"./ui/input-otp.mjs";import{VerifyEmailPage as Yr}from"./pages/VerifyEmailPage.mjs";import{Google as Xr}from"./systems/google.mjs";import{AddNewBtn as Zr}from"./ui/buttons/add-new.mjs";import{EditBtn as Qr}from"./ui/buttons/edit.mjs";import{RefreshBtn as $r}from"./ui/buttons/refresh.mjs";import{TrashBtn as ei}from"./ui/buttons/trash.mjs";import{UploadImageBtn as ti}from"./ui/buttons/upload-image.mjs";import{SearchInput as ni}from"./ui/inputs/search-input.mjs";import{AspectRatio as ri}from"./ui/aspect-ratio.mjs";import{Breadcrumb as ii,BreadcrumbEllipsis as ai,BreadcrumbItem as oi,BreadcrumbLink as si,BreadcrumbList as ci,BreadcrumbPage as li,BreadcrumbSeparator as ui}from"./ui/breadcrumb.mjs";import{ButtonGroup as di,ButtonGroupSeparator as fi,ButtonGroupText as pi,buttonGroupVariants as mi}from"./ui/button-group.mjs";import{Calendar as hi,CalendarDayButton as gi}from"./ui/calendar.mjs";import{Carousel as _i,CarouselContent as vi,CarouselItem as yi,CarouselNext as bi,CarouselPrevious as xi}from"./ui/carousel.mjs";import{ChartContainer as Si,ChartLegend as Ci,ChartLegendContent as wi,ChartStyle as Ti,ChartTooltip as Ei,ChartTooltipContent as Di,useChart as Oi}from"./ui/chart.mjs";import{Collapsible as ki,CollapsibleContent as Ai,CollapsibleTrigger as ji}from"./ui/collapsible.mjs";import{t as Mi}from"./combobox-C64Rvd7n.mjs";import{ContextMenu as Ni,ContextMenuCheckboxItem as Pi,ContextMenuContent as Fi,ContextMenuGroup as Ii,ContextMenuItem as Li,ContextMenuLabel as Ri,ContextMenuPortal as zi,ContextMenuRadioGroup as Bi,ContextMenuRadioItem as Vi,ContextMenuSeparator as Hi,ContextMenuShortcut as Ui,ContextMenuSub as Wi,ContextMenuSubContent as Gi,ContextMenuSubTrigger as Ki,ContextMenuTrigger as qi}from"./ui/context-menu.mjs";import{Drawer as Ji,DrawerClose as Yi,DrawerContent as Xi,DrawerDescription as Zi,DrawerFooter as Qi,DrawerHeader as $i,DrawerOverlay as ea,DrawerPortal as ta,DrawerTitle as na,DrawerTrigger as ra}from"./ui/drawer.mjs";import{Empty as ia,EmptyContent as aa,EmptyDescription as oa,EmptyHeader as sa,EmptyMedia as ca,EmptyTitle as la}from"./ui/empty.mjs";import{Progress as ua}from"./ui/progress.mjs";import{FileUploader as da}from"./ui/file-uploader.mjs";import{Form as fa,FormControl as pa,FormDescription as ma,FormField as ha,FormItem as ga,FormLabel as _a,FormMessage as va,useFormField as ya}from"./ui/form.mjs";import{HoverCard as ba,HoverCardContent as xa,HoverCardTrigger as Sa}from"./ui/hover-card.mjs";import{Item as Ca,ItemActions as wa,ItemContent as Ta,ItemDescription as Ea,ItemFooter as Da,ItemGroup as Oa,ItemHeader as ka,ItemMedia as Aa,ItemSeparator as ja,ItemTitle as Ma}from"./ui/item.mjs";import{Menubar as Na,MenubarCheckboxItem as Pa,MenubarContent as Fa,MenubarGroup as Ia,MenubarItem as La,MenubarLabel as Ra,MenubarMenu as za,MenubarPortal as Ba,MenubarRadioGroup as Va,MenubarRadioItem as Ha,MenubarSeparator as Ua,MenubarShortcut as Wa,MenubarSub as Ga,MenubarSubContent as Ka,MenubarSubTrigger as qa,MenubarTrigger as Ja}from"./ui/menubar.mjs";import{MultipleSelector as Ya,useDebounce as Xa}from"./ui/multi-select.mjs";import{NavigationMenu as Za,NavigationMenuContent as Qa,NavigationMenuIndicator as $a,NavigationMenuItem as eo,NavigationMenuLink as to,NavigationMenuList as no,NavigationMenuTrigger as ro,NavigationMenuViewport as io,navigationMenuTriggerStyle as ao}from"./ui/navigation-menu.mjs";import{Pagination as oo,PaginationContent as so,PaginationEllipsis as co,PaginationItem as lo,PaginationLink as uo,PaginationNext as fo,PaginationPrevious as po}from"./ui/pagination.mjs";import{RadioGroup as mo,RadioGroupItem as ho}from"./ui/radio-group.mjs";import{ScrollArea as go,ScrollBar as _o}from"./ui/scroll-area.mjs";import{Select as vo,SelectContent as yo,SelectGroup as bo,SelectItem as xo,SelectLabel as So,SelectSeparator as Co,SelectTrigger as wo,SelectValue as To}from"./ui/select.mjs";import{Slider as Eo}from"./ui/slider.mjs";import{Toaster as Do,toast as Oo}from"./ui/sonner.mjs";import{Switch as ko}from"./ui/switch.mjs";import{Table as Ao,TableBody as jo,TableCaption as Mo,TableCell as No,TableFooter as Po,TableHead as Fo,TableHeader as Io,TableRow as Lo}from"./ui/table.mjs";import{Tabs as Ro,TabsContent as zo,TabsList as Bo,TabsTrigger as Vo}from"./ui/tabs.mjs";import{Textarea as Ho}from"./ui/textarea.mjs";import{Toggle as Uo,toggleVariants as Wo}from"./ui/toggle.mjs";import{ToggleGroup as Go,ToggleGroupItem as Ko}from"./ui/toggle-group.mjs";export{ce as ActivityHeatmapChart,Zr as AddNewBtn,Vr as Alert,zr as AlertDescription,I as AlertDialog,L as AlertDialogAction,R as AlertDialogCancel,z as AlertDialogContent,B as AlertDialogDescription,V as AlertDialogFooter,H as AlertDialogHeader,U as AlertDialogOverlay,W as AlertDialogPortal,G as AlertDialogTitle,K as AlertDialogTrigger,Br as AlertTitle,cr as ArrayCol,rr as ArrayHeaderRow,ri as AspectRatio,M as Avatar,N as AvatarFallback,P as AvatarImage,b as Badge,ii as Breadcrumb,ai as BreadcrumbEllipsis,oi as BreadcrumbItem,si as BreadcrumbLink,ci as BreadcrumbList,li as BreadcrumbPage,ui as BreadcrumbSeparator,e as Button,di as ButtonGroup,fi as ButtonGroupSeparator,pi as ButtonGroupText,wr as CMSLayout,hi as Calendar,gi as CalendarDayButton,le as CandlestickChart,r as Card,i as CardAction,a as CardContent,o as CardDescription,s as CardFooter,c as CardHeader,l as CardTitle,_i as Carousel,vi as CarouselContent,yi as CarouselItem,bi as CarouselNext,xi as CarouselPrevious,Si as ChartContainer,Ci as ChartLegend,wi as ChartLegendContent,Ti as ChartStyle,Ei as ChartTooltip,Di as ChartTooltipContent,nn as Checkbox,or as CheckboxField,ki as Collapsible,Ai as CollapsibleContent,ji as CollapsibleTrigger,Mi as Combobox,Qn as ComboboxField,tt as Command,nt as CommandDialog,rt as CommandEmpty,it as CommandGroup,at as CommandInput,ot as CommandItem,st as CommandList,ct as CommandSeparator,lt as CommandShortcut,q as ConfirmDialog,Ni as ContextMenu,Pi as ContextMenuCheckboxItem,Fi as ContextMenuContent,Ii as ContextMenuGroup,Li as ContextMenuItem,Ri as ContextMenuLabel,zi as ContextMenuPortal,Bi as ContextMenuRadioGroup,Vi as ContextMenuRadioItem,Hi as ContextMenuSeparator,Ui as ContextMenuShortcut,Wi as ContextMenuSub,Gi as ContextMenuSubContent,Ki as ContextMenuSubTrigger,qi as ContextMenuTrigger,ue as ConversionFunnelChart,de as CorrelationScatterChart,g as CountryDisplay,_ as DataList,v as DataListItem,y as DateDisplay,Gn as DateField,E as DateTooltip,Le as Description,Re as DescriptionBadge,ze as DescriptionBoolean,Be as DescriptionCopy,Ve as DescriptionDate,He as DescriptionEmpty,Ue as DescriptionHeader,We as DescriptionImages,Ge as DescriptionItem,Ke as DescriptionLink,qe as DescriptionLongText,Je as DescriptionName,Ye as DescriptionNumberPhone,Xe as DescriptionSection,Ze as DescriptionStatistic,Qe as DescriptionStatus,$e as DescriptionTagList,et as DescriptionUser,J as DetailDialog,Z as Dialog,Q as DialogClose,$ as DialogContent,ee as DialogDescription,te as DialogFooter,ne as DialogHeader,re as DialogOverlay,ie as DialogPortal,ae as DialogTitle,oe as DialogTrigger,fe as DonutChart,Ji as Drawer,Yi as DrawerClose,Xi as DrawerContent,Zi as DrawerDescription,Qi as DrawerFooter,$i as DrawerHeader,ea as DrawerOverlay,ta as DrawerPortal,na as DrawerTitle,ra as DrawerTrigger,rn as DropdownMenu,an as DropdownMenuCheckboxItem,on as DropdownMenuContent,sn as DropdownMenuGroup,cn as DropdownMenuItem,ln as DropdownMenuLabel,un as DropdownMenuPortal,dn as DropdownMenuRadioGroup,fn as DropdownMenuRadioItem,pn as DropdownMenuSeparator,mn as DropdownMenuShortcut,hn as DropdownMenuSub,gn as DropdownMenuSubContent,_n as DropdownMenuSubTrigger,vn as DropdownMenuTrigger,Qr as EditBtn,ir as EmailField,ia as Empty,aa as EmptyContent,oa as EmptyDescription,D as EmptyDisplay,sa as EmptyHeader,ca as EmptyMedia,la as EmptyTitle,X as ErrorDialog,Fr as FeatureDeveloping,Ir as FeatureFixing,sr as Field,qn as FieldContent,tr as FieldContentMain,lr as FieldError,Jn as FieldGroup,Yn as FieldLabel,ar as FieldSeparator,da as FileUploader,h as Flex,fa as Form,pa as FormControl,ma as FormDescription,ha as FormField,ga as FormItem,_a as FormLabel,va as FormMessage,pe as GainLossBarChart,Xr as Google,Pr as Grid,f as GridProductCard,ba as HoverCard,xa as HoverCardContent,Sa as HoverCardTrigger,d as Image,me as IndexedPerformanceLineChart,Sr as Input,Gr as InputOTP,Kr as InputOTPGroup,qr as InputOTPSeparator,Jr as InputOTPSlot,Ca as Item,wa as ItemActions,Ta as ItemContent,Ea as ItemDescription,Da as ItemFooter,Oa as ItemGroup,ka as ItemHeader,Aa as ItemMedia,ja as ItemSeparator,Ma as ItemTitle,Hr as Label,se as LoadingDialog,Ur as LoginPage,Na as Menubar,Pa as MenubarCheckboxItem,Fa as MenubarContent,Ia as MenubarGroup,La as MenubarItem,Ra as MenubarLabel,za as MenubarMenu,Ba as MenubarPortal,Va as MenubarRadioGroup,Ha as MenubarRadioItem,Ua as MenubarSeparator,Wa as MenubarShortcut,Ga as MenubarSub,Ka as MenubarSubContent,qa as MenubarSubTrigger,Ja as MenubarTrigger,he as MetricRadarChart,ge as MirroredBarChart,Ya as MultipleSelector,O as NameDisplay,Za as NavigationMenu,Qa as NavigationMenuContent,$a as NavigationMenuIndicator,eo as NavigationMenuItem,to as NavigationMenuLink,no as NavigationMenuList,ro as NavigationMenuTrigger,io as NavigationMenuViewport,Lr as NotAuthorized,Rr as NotFound,nr as NumberField,_e as OrdersBarChart,oo as Pagination,so as PaginationContent,co as PaginationEllipsis,lo as PaginationItem,uo as PaginationLink,fo as PaginationNext,po as PaginationPrevious,t as Paragraph,Zn as PasswordField,Nr as PaymentLayout,k as PhoneNumberDisplay,hr as Popover,gr as PopoverAnchor,_r as PopoverClose,vr as PopoverContent,yr as PopoverTrigger,ve as PortfolioAllocationTreemap,ye as PriceRangeAreaChart,p as ProductCard,ua as Progress,mo as RadioGroup,Xn as RadioGroupField,ho as RadioGroupItem,$r as RefreshBtn,Wr as RegisterPage,bn as ResizableHandle,xn as ResizablePanel,Sn as ResizablePanelGroup,be as RevenueAreaChart,xe as RevenueOrdersComposedChart,A as RoleBadge,Se as SalesTargetRadialChart,Ce as SankeyFlowChart,go as ScrollArea,_o as ScrollBar,ni as SearchInput,ut as SearchModal,vo as Select,yo as SelectContent,Wn as SelectField,bo as SelectGroup,xo as SelectItem,So as SelectLabel,Co as SelectSeparator,wo as SelectTrigger,To as SelectValue,Cr as Separator,Tr as Sheet,Er as SheetClose,Dr as SheetContent,Or as SheetDescription,kr as SheetFooter,Ar as SheetHeader,jr as SheetTitle,Mr as SheetTrigger,ur as SimpleArrayField,pr as SimpleBooleanField,m as SimpleCard,Kn as SimpleComboboxField,fr as SimpleDateField,zn as SimpleEmailField,Tn as SimpleNumberField,dr as SimplePasswordField,Bn as SimpleRadioGroupField,Dn as SimpleSelectField,En as SimpleTextField,In as SimpleTextareaField,u as Skeleton,Eo as Slider,we as SparklineChart,yn as Spinner,Te as StackedAreaChart,j as Statistic,ko as Switch,er as SwitchField,Ao as Table,jo as TableBody,Mo as TableCaption,No as TableCell,Po as TableFooter,Fo as TableHead,Io as TableHeader,Lo as TableRow,Ro as Tabs,zo as TabsContent,Bo as TabsList,Vo as TabsTrigger,Cn as TanStackActionSubmit,$n as TanStackActionsForm,Pn as TanStackCardForm,Fn as TanStackContainerForm,Ln as TanStackDialogForm,On as TanStackFieldGroup,jn as TanStackPopoverForm,Nn as TanStackSectionForm,Rn as TanStackTitleField,xr as TextEditor,mr as TextEditorField,br as TextEditorToolbar,wn as TextField,Ho as Textarea,Hn as TextareaField,Y as Title,Do as Toaster,Uo as Toggle,Go as ToggleGroup,Ko as ToggleGroupItem,S as Tooltip,C as TooltipContent,w as TooltipProvider,T as TooltipTrigger,Ee as TopProductsBarChart,ei as TrashBtn,Xt as UITableAnalysisPanel,Gt as UITableAvatarNameDisplay,Jt as UITableBadgeDisplay,yt as UITableBody,Bt as UITableBooleanDisplay,gt as UITableCell,jt as UITableCellActions,kt as UITableCellSelect,pt as UITableContainer,Nt as UITableCurrencyDisplay,Kt as UITableDateDisplay,Yt as UITableDescriptionDisplay,Ft as UITableEditButton,Ut as UITableEmailDisplay,Tt as UITableEmpty,_t as UITableEmptyDisplay,Zt as UITableFilter,At as UITableFooter,Et as UITableFooterRow,bt as UITableHead,ht as UITableHeadCell,vt as UITableHeadCellOption,wt as UITableHeadCellSelect,St as UITableHeadRow,xt as UITableInnerTable,Vt as UITableInnerWrapper,It as UITableListDisplay,dt as UITableLoadMore,Lt as UITableMoreButton,qt as UITableNameDisplay,Wt as UITablePermalink,zt as UITablePhoneNumberDisplay,Rt as UITableProgressDisplay,mt as UITableProvider,Mt as UITableRemoveButton,Ht as UITableRow,Qt as UITableStatisticDisplay,tn as UITableStatusDisplay,Pt as UITableSummaryBar,en as UITableToggleButton,Dt as UITableTooltip,ft as UITableTooltipActions,$t as UITableTooltipFilter,Ot as UITableUserDataDisplay,Ct as UITableWrapper,ti as UploadImageBtn,F as UserDataDisplay,Yr as VerifyEmailPage,De as VolumeBarChart,Oe as WaterfallChart,x as badgeVariants,mi as buttonGroupVariants,ke as computeIndexedSeries,Ae as formatCompactNumber,je as formatCurrency,Me as formatPercent,Ne as formatSignedPercent,Pe as getChartColor,Fe as getDirectionColor,ao as navigationMenuTriggerStyle,n as paragraphVariants,Ie as toDateLabel,Oo as toast,Wo as toggleVariants,Oi as useChart,Xa as useDebounce,ya as useFormField,kn as useTanStackFieldContext,An as useTanStackForm,Mn as useTanStackFormContext,Vn as withTanStackFieldGroup,Un as withTanStackForm};
@@ -2,7 +2,7 @@ import { VariantProps } from "class-variance-authority";
2
2
  //#region packages/components/ui/input.d.ts
3
3
  /** CVA variant definitions for the `Input` component — controls sizing and visual style. */
4
4
  declare const inputVariants: (props?: ({
5
- variant?: "none" | "soft" | "outline" | "ghost" | "subtle" | null | undefined;
5
+ variant?: "soft" | "outline" | "ghost" | "none" | "subtle" | null | undefined;
6
6
  size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  type InputVariantProps = VariantProps<typeof inputVariants>;
@@ -31,4 +31,4 @@ declare function Input({ className, variant, size, onChange, onValueChange, ...p
31
31
  }): import("react").JSX.Element;
32
32
  //#endregion
33
33
  export { InputVariantProps as n, inputVariants as r, Input as t };
34
- //# sourceMappingURL=input-D73TrUof.d.cts.map
34
+ //# sourceMappingURL=input-DxNK7Wo6.d.cts.map
@@ -2,7 +2,7 @@ import { VariantProps } from "class-variance-authority";
2
2
  //#region packages/components/ui/input.d.ts
3
3
  /** CVA variant definitions for the `Input` component — controls sizing and visual style. */
4
4
  declare const inputVariants: (props?: ({
5
- variant?: "none" | "soft" | "outline" | "ghost" | "subtle" | null | undefined;
5
+ variant?: "soft" | "outline" | "ghost" | "none" | "subtle" | null | undefined;
6
6
  size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  type InputVariantProps = VariantProps<typeof inputVariants>;
@@ -31,4 +31,4 @@ declare function Input({ className, variant, size, onChange, onValueChange, ...p
31
31
  }): import("react").JSX.Element;
32
32
  //#endregion
33
33
  export { InputVariantProps as n, inputVariants as r, Input as t };
34
- //# sourceMappingURL=input-D73TrUof.d.mts.map
34
+ //# sourceMappingURL=input-DxNK7Wo6.d.mts.map
@@ -1 +1 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../cms-layout-BXd2ncAV.cjs");exports.CMSLayout=e.t;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../cms-layout-DCJhB-GY.cjs");exports.CMSLayout=e.t;
@@ -1 +1 @@
1
- "use client";import{t as e}from"../../cms-layout-COIo9HiP.mjs";export{e as CMSLayout};
1
+ "use client";import{t as e}from"../../cms-layout-Ba_5wSnr.mjs";export{e as CMSLayout};
@@ -1,2 +1,2 @@
1
- import { t as Flex } from "../flex-BTPF2-F6.cjs";
1
+ import { t as Flex } from "../flex-CIzZIICK.cjs";
2
2
  export { Flex };
@@ -1,2 +1,2 @@
1
- import { t as Flex } from "../flex-BTPF2-F6.mjs";
1
+ import { t as Flex } from "../flex-CIzZIICK.mjs";
2
2
  export { Flex };
@@ -1,4 +1,4 @@
1
- import { t as Input } from "./input-D73TrUof.mjs";
1
+ import { t as Input } from "./input-DxNK7Wo6.cjs";
2
2
  //#region packages/components/ui/inputs/search-input.d.ts
3
3
  /**
4
4
  * Props for {@link SearchInput}. Accepts all native props of the underlying
@@ -20,4 +20,4 @@ type Props = React.ComponentPropsWithoutRef<typeof Input>;
20
20
  declare const SearchInput: ({ className, ...rest }: Props) => import("react").JSX.Element;
21
21
  //#endregion
22
22
  export { SearchInput as t };
23
- //# sourceMappingURL=search-input-DEvYI6Rm.d.mts.map
23
+ //# sourceMappingURL=search-input-C8feOKe2.d.cts.map
@@ -1,4 +1,4 @@
1
- import { t as Input } from "./input-D73TrUof.cjs";
1
+ import { t as Input } from "./input-DxNK7Wo6.mjs";
2
2
  //#region packages/components/ui/inputs/search-input.d.ts
3
3
  /**
4
4
  * Props for {@link SearchInput}. Accepts all native props of the underlying
@@ -20,4 +20,4 @@ type Props = React.ComponentPropsWithoutRef<typeof Input>;
20
20
  declare const SearchInput: ({ className, ...rest }: Props) => import("react").JSX.Element;
21
21
  //#endregion
22
22
  export { SearchInput as t };
23
- //# sourceMappingURL=search-input-h_3MoMqK.d.cts.map
23
+ //# sourceMappingURL=search-input-CoqwakbI.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as InputVariantProps, r as inputVariants, t as Input } from "../input-D73TrUof.cjs";
1
+ import { n as InputVariantProps, r as inputVariants, t as Input } from "../input-DxNK7Wo6.cjs";
2
2
  export { Input, InputVariantProps, inputVariants };
@@ -1,2 +1,2 @@
1
- import { n as InputVariantProps, r as inputVariants, t as Input } from "../input-D73TrUof.mjs";
1
+ import { n as InputVariantProps, r as inputVariants, t as Input } from "../input-DxNK7Wo6.mjs";
2
2
  export { Input, InputVariantProps, inputVariants };
@@ -1,2 +1,2 @@
1
- import { t as SearchInput } from "../../search-input-h_3MoMqK.cjs";
1
+ import { t as SearchInput } from "../../search-input-C8feOKe2.cjs";
2
2
  export { SearchInput };
@@ -1,2 +1,2 @@
1
- import { t as SearchInput } from "../../search-input-DEvYI6Rm.mjs";
1
+ import { t as SearchInput } from "../../search-input-CoqwakbI.mjs";
2
2
  export { SearchInput };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customafk/lunas-ui",
3
- "version": "0.2.77",
3
+ "version": "0.2.78",
4
4
  "description": "UI library for Lunas Enterprise",
5
5
  "type": "module",
6
6
  "author": {
@@ -1,2 +0,0 @@
1
- const e=require("./dist-DzA--RwW.cjs"),t=require("./ui/button.cjs");require("./ui/skeleton.cjs");const n=require("./ui/tooltip.cjs"),r=require("./ui/avatar.cjs"),i=require("./features/logo/index.cjs"),a=require("./ui/dropdown-menu.cjs"),o=require("./ui/input.cjs"),s=require("./ui/separator.cjs"),c=require("./ui/sheet.cjs");let l=require("lucide-react"),u=require("react"),d=require("@customafk/react-toolkit/utils"),f=require("class-variance-authority"),p=require("react/jsx-runtime"),m=require("@customafk/react-toolkit/color-hash"),h=require("@customafk/react-toolkit/hooks/useMobile");const g=(0,u.createContext)(null);function _(){let e=(0,u.useContext)(g);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function v({defaultOpen:e=!0,open:t,onOpenChange:r,className:i,style:a,children:o,...s}){let c=(0,h.useIsMobile)(),[l,f]=(0,u.useState)(!1),[m,_]=(0,u.useState)(e),v=t??m,y=(0,u.useCallback)(e=>{let t=typeof e==`function`?e(v):e;r?r(t):_(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[r,v]),b=(0,u.useCallback)(()=>c?f(e=>!e):y(e=>!e),[c,y]);(0,u.useEffect)(()=>{let e=e=>{e.key===`b`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),b())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[b]);let x=v?`expanded`:`collapsed`,S=(0,u.useMemo)(()=>({state:x,open:v,setOpen:y,isMobile:c,openMobile:l,setOpenMobile:f,toggleSidebar:b}),[x,v,y,c,l,b]);return(0,p.jsx)(g.Provider,{value:S,children:(0,p.jsx)(n.TooltipProvider,{delayDuration:0,children:(0,p.jsx)(`section`,{"data-slot":`layout-wrapper`,style:{"--sidebar-width":`16rem`,"--sidebar-width-icon":`3rem`,...a},className:(0,d.cn)(`relative group/sidebar-wrapper flex h-dvh bg-sidebar`,i),...s,children:o})})})}const y=(0,u.memo)(({side:e=`left`,variant:n=`sidebar`,collapsible:r=`offcanvas`,className:a,children:o,...s})=>{let{isMobile:f,state:m,openMobile:h,setOpenMobile:g,toggleSidebar:v}=_(),y=(0,u.useCallback)(e=>{v(),e.preventDefault(),e.stopPropagation()},[v]);return r===`none`?(0,p.jsx)(`aside`,{"data-slot":`sidebar`,className:(0,d.cn)(`flex w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,a),...s,children:o}):f?(0,p.jsx)(c.Sheet,{open:h,onOpenChange:g,...s,children:(0,p.jsxs)(c.SheetContent,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,style:{"--sidebar-width":`18rem`},side:e,className:`w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground sm:max-w-3xs [&>button]:hidden`,children:[(0,p.jsxs)(c.SheetHeader,{className:`sr-only`,children:[(0,p.jsx)(c.SheetTitle,{children:`Sidebar`}),(0,p.jsx)(c.SheetDescription,{children:`Displays the mobile sidebar.`})]}),(0,p.jsxs)(`div`,{className:`flex size-full flex-col`,children:[(0,p.jsxs)(`div`,{className:`flex flex-0 items-center gap-x-2 border-b border-border-weak p-2 pr-4`,children:[(0,p.jsxs)(t.Button,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:(0,d.cn)(`size-10 rounded-full`,a),onClick:y,children:[(0,p.jsx)(l.MenuIcon,{className:`size-6!`}),(0,p.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),(0,p.jsx)(i.LunasLogo,{variant:`horizontal`,size:`xs`,className:`ml-2`})]}),(0,p.jsx)(`div`,{className:`flex flex-1 flex-col p-2`,children:o})]})]})}):(0,p.jsxs)(`aside`,{className:`group peer hidden bg-card text-sidebar-foreground md:block`,"data-state":m,"data-collapsible":m===`collapsed`?r:``,"data-variant":n,"data-side":e,"data-slot":`sidebar`,children:[(0,p.jsx)(`div`,{"data-slot":`sidebar-gap`,className:(0,d.cn)(`bg-transparent`,`transition-[width] duration-200 ease-linear`,`h-(--header-height) sm:h-(--header-height)`,`w-(--sidebar-width)`,`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`)}),(0,p.jsx)(`div`,{"data-slot":`sidebar-container`,className:(0,d.cn)(`hidden md:flex shadow-nav`,`fixed left-0 inset-y-0 p-2`,`top-(--header-height) z-10`,`w-(--sidebar-width)`,`transition-all duration-200 ease-linear`,`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`,a),...s,children:(0,p.jsx)(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:`relative flex size-full flex-col`,children:o})})]})});y.displayName=`CMSLayoutSidebar`;const b=(0,u.memo)(({className:e,children:t,...n})=>(0,p.jsxs)(`main`,{"data-slot":`sidebar-inset`,className:(0,d.cn)(`relative flex w-full flex-1 flex-col`,e),...n,children:[(0,p.jsx)(`div`,{className:`h-(--header-height) sm:h-(--header-height)`}),(0,p.jsx)(`div`,{className:`relative flex-1 size-full overflow-auto`,children:t})]}));b.displayName=`CMSLayoutMain`;const x=(0,u.memo)(({className:e,...t})=>(0,p.jsx)(o.Input,{"data-slot":`sidebar-input`,"data-sidebar":`input`,className:(0,d.cn)(`h-8 w-full bg-background shadow-none`,e),...t}));x.displayName=`SidebarInput`;const S=(0,u.memo)(({className:e,...t})=>(0,p.jsx)(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:(0,d.cn)(`flex flex-col gap-2 p-2`,e),...t}));S.displayName=`SidebarHeader`;const C=(0,u.memo)(({className:e,...t})=>(0,p.jsx)(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:(0,d.cn)(`flex flex-col gap-2`,e),...t}));C.displayName=`SidebarFooter`;const w=(0,u.memo)(({className:e,...t})=>(0,p.jsx)(s.Separator,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:(0,d.cn)(`mx-2 w-auto bg-sidebar-border`,e),...t}));w.displayName=`SidebarSeparator`;const T=(0,u.memo)(({className:e,...t})=>(0,p.jsx)(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:(0,d.cn)(`flex flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t}));T.displayName=`SidebarContent`;const E=(0,u.memo)(({className:e,...t})=>(0,p.jsx)(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:(0,d.cn)(`relative flex w-full flex-col`,e),...t}));E.displayName=`SidebarGroup`;const D=(0,u.memo)(({className:t,asChild:n=!1,...r})=>(0,p.jsx)(n?e.t:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:(0,d.cn)(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,t),...r}));D.displayName=`SidebarGroupLabel`;const O=(0,u.memo)(({className:e,...t})=>(0,p.jsx)(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:(0,d.cn)(`w-full text-sm`,e),...t}));O.displayName=`SidebarGroupContent`;const k=(0,u.memo)(({className:e,...t})=>(0,p.jsx)(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:(0,d.cn)(`flex w-full min-w-0 flex-col gap-1`,e),...t}));k.displayName=`SidebarMenu`;const A=(0,u.memo)(({className:e,...t})=>(0,p.jsx)(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:(0,d.cn)(`group/menu-item relative`,e),...t}));A.displayName=`SidebarMenuItem`;const j=(0,f.cva)([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,background-color,width,height,padding]`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`disabled:pointer-events-none disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-12! group-data-[collapsible=icon]:p-3! group-data-[collapsible=icon]:gap-3!`,`[&>svg]:size-6 [&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-10 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}}),M=(0,u.memo)(({asChild:t=!1,isActive:r=!1,variant:i=`default`,size:a=`default`,tooltip:o,className:s,...c})=>{let l=t?e.t:`button`,{isMobile:u,state:f}=_(),m=(0,p.jsx)(l,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":a,"data-active":r,className:(0,d.cn)(j({variant:i,size:a}),s),...c});return o?(typeof o==`string`&&(o={children:o}),(0,p.jsxs)(n.Tooltip,{children:[(0,p.jsx)(n.TooltipTrigger,{asChild:!0,children:m}),(0,p.jsx)(n.TooltipContent,{side:`right`,align:`center`,hidden:f!==`collapsed`||u,...o})]})):m});M.displayName=`SidebarMenuButton`;const N=({i18nText:e,onChangeToEnLocale:n,onChangeToViLocale:o,user:s,onLogout:c,logoutLabel:f=`Log out`,logo:h})=>{let{toggleSidebar:g}=_(),v=(0,u.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),g()},[g]),y=(0,u.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),n?.()},[n]),b=(0,u.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),o?.()},[o]),x=s?m.colorHashLight.hex(s.name):void 0;return(0,p.jsxs)(`header`,{"data-slot":`cms-layout-header`,className:(0,d.cn)(`bg-card`,`h-(--header-height)`,`sm:h-(--header-height) sm:px-4 sm:pr-6`,`absolute inset-x-0 top-0 z-20 gap-2 px-2 pr-4.5`,`flex items-center shadow-nav`,`transition-[height] ease-linear`),children:[(0,p.jsxs)(t.Button,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:`size-10 rounded-full transition-all hover:text-text-positive`,onClick:v,children:[(0,p.jsx)(l.MenuIcon,{className:`size-6!`}),(0,p.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),(0,p.jsx)(`div`,{className:`flex flex-1 items-center sm:ml-2.5`,children:h??(0,p.jsx)(i.LunasLogo,{variant:`horizontal`,size:`xs`})}),(0,p.jsxs)(`div`,{className:`flex items-center gap-1`,children:[s&&(0,p.jsxs)(a.DropdownMenu,{children:[(0,p.jsx)(a.DropdownMenuTrigger,{asChild:!0,children:(0,p.jsxs)(t.Button,{variant:`ghost`,color:`muted`,className:`h-9 gap-2.5 rounded-full px-2 transition-all`,children:[(0,p.jsxs)(r.Avatar,{className:`size-7 shrink-0`,children:[(0,p.jsx)(r.AvatarImage,{src:s.avatarUrl,alt:s.name}),(0,p.jsx)(r.AvatarFallback,{style:{backgroundColor:x},children:(0,p.jsx)(l.UserRoundIcon,{size:14,className:`text-white`})})]}),(0,p.jsxs)(`div`,{className:`hidden flex-col items-start sm:flex`,children:[(0,p.jsx)(`span`,{className:`max-w-36 truncate text-xs font-semibold leading-tight text-text-positive`,children:s.name}),s.email&&(0,p.jsx)(`span`,{className:`max-w-36 truncate text-xs leading-tight text-text-positive-weak`,children:s.email})]})]})}),(0,p.jsxs)(a.DropdownMenuContent,{align:`end`,className:`w-60`,children:[(0,p.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-4 py-4 text-center`,children:[(0,p.jsxs)(r.Avatar,{className:`size-12`,children:[(0,p.jsx)(r.AvatarImage,{src:s.avatarUrl,alt:s.name}),(0,p.jsx)(r.AvatarFallback,{style:{backgroundColor:x},children:(0,p.jsx)(l.UserRoundIcon,{size:22,className:`text-white`})})]}),(0,p.jsxs)(`div`,{className:`flex min-w-0 w-full flex-col items-center gap-0.5`,children:[(0,p.jsx)(`p`,{className:`truncate text-sm font-semibold text-text-positive`,children:s.name}),s.email&&(0,p.jsx)(`p`,{className:`truncate text-xs text-text-positive-weak`,children:s.email}),s.role&&(0,p.jsx)(`span`,{className:`mt-1 w-fit rounded-sm border border-border bg-secondary-muted px-2 py-0.5 text-xs font-medium text-text-positive-weak`,children:s.role})]})]}),c&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(a.DropdownMenuSeparator,{}),(0,p.jsx)(a.DropdownMenuGroup,{children:(0,p.jsxs)(a.DropdownMenuItem,{className:`text-danger focus:text-danger`,onClick:c,children:[(0,p.jsx)(l.LogOutIcon,{className:`size-4`}),f]})})]})]})]}),s&&(n||o)&&(0,p.jsx)(`div`,{className:`mx-1 h-5 w-px bg-border`}),(n||o)&&(0,p.jsxs)(a.DropdownMenu,{children:[(0,p.jsx)(a.DropdownMenuTrigger,{asChild:!0,children:(0,p.jsxs)(t.Button,{"data-slot":`locale-trigger`,variant:`ghost`,color:`muted`,className:`gap-x-1 rounded-full transition-all hover:text-text-positive`,children:[(0,p.jsx)(l.EarthIcon,{className:`size-6!`}),e]})}),(0,p.jsx)(a.DropdownMenuContent,{align:`end`,children:(0,p.jsxs)(a.DropdownMenuGroup,{children:[(0,p.jsx)(a.DropdownMenuItem,{onClick:y,children:`EN - English`}),(0,p.jsx)(a.DropdownMenuItem,{onClick:b,children:`VI - Vietnamese`})]})})]})]})]})},P=(0,u.memo)(({id:e,label:t,icon:n,activeNavItemId:r,onClick:i,renderAs:a})=>(0,p.jsx)(A,{children:a?(0,p.jsx)(M,{asChild:!0,isActive:e===r,children:a({icon:n,label:t})}):(0,p.jsxs)(M,{isActive:e===r,onClick:i,children:[n,t]})}));P.displayName=`SidebarContentGroupItem`;const F=(0,u.memo)(({id:e,label:t,children:n})=>(0,p.jsxs)(E,{children:[(0,p.jsx)(D,{children:t}),(0,p.jsx)(O,{children:(0,p.jsx)(k,{children:n})})]}));F.displayName=`SidebarContentGroup`;const I=({i18nText:e,activeNavItemId:t,sidebar:n,children:r,onChangeToEnLocale:i,onChangeToViLocale:a,onLogout:o,logoutLabel:s=`Log out`,copyright:c=`Copyright © ${new Date().getFullYear()}, Lunas.`,user:u})=>{let d=n?.groupcontent??[];return(0,p.jsxs)(v,{children:[(0,p.jsx)(N,{i18nText:e,onChangeToEnLocale:i,onChangeToViLocale:a,user:u,onLogout:o,logoutLabel:s}),(0,p.jsxs)(y,{variant:`inset`,collapsible:`icon`,children:[(0,p.jsx)(T,{children:d.map(e=>(0,p.jsx)(F,{id:e.id,label:e.label,children:e.items.map(e=>(0,p.jsx)(P,{id:e.id,activeNavItemId:t,label:e.label,icon:e.icon,renderAs:e.renderAs,onClick:e.onClick},e.id))},e.id))}),(0,p.jsx)(C,{children:(0,p.jsxs)(k,{children:[(0,p.jsx)(A,{children:(0,p.jsxs)(M,{className:`border border-border`,onClick:o,children:[(0,p.jsx)(l.LogOutIcon,{className:`text-text-positive-weak`}),s]})}),(0,p.jsx)(A,{className:`mt-2 border-t border-t-border`,children:(0,p.jsx)(`p`,{className:`pt-2 text-center text-xs text-text-positive-subtle`,children:c})})]})})]}),(0,p.jsx)(b,{children:r})]})};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return I}});
2
- //# sourceMappingURL=cms-layout-BXd2ncAV.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cms-layout-BXd2ncAV.cjs","names":["TooltipProvider","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","Button","MenuIcon","LunasLogo","Input","Separator","Slot","Tooltip","TooltipTrigger","TooltipContent","colorHashLight","Button","MenuIcon","LunasLogo","DropdownMenu","DropdownMenuTrigger","Avatar","AvatarImage","AvatarFallback","UserRoundIcon","DropdownMenuContent","DropdownMenuSeparator","DropdownMenuGroup","DropdownMenuItem","LogOutIcon","EarthIcon","LogOutIcon"],"sources":["../packages/components/layouts/cms-layout/components/sidebar.tsx","../packages/components/layouts/cms-layout/components/header.tsx","../packages/components/layouts/cms-layout/index.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, memo, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { MenuIcon, PanelLeftIcon } from 'lucide-react';\n\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { LunasLogo } from '@/components/features/logo';\nimport { Input } from '@/components/ui/input';\nimport { Separator } from '@/components/ui/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\nfunction CMSLayoutProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n // biome-ignore lint/suspicious/noDocumentCookie: persists sidebar state across page loads\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({ state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar }),\n [state, open, setOpen, isMobile, openMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <section\n data-slot=\"layout-wrapper\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON, ...style } as React.CSSProperties}\n className={cn('relative group/sidebar-wrapper flex h-dvh bg-sidebar', className)}\n {...props}\n >\n {children}\n </section>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nconst CMSLayoutSidebar = memo(\n ({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n }: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n }) => {\n const { isMobile, state, openMobile, setOpenMobile, toggleSidebar } = useSidebar();\n\n const handleToggleSidebar = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n event => {\n toggleSidebar();\n event.preventDefault();\n event.stopPropagation();\n },\n [toggleSidebar]\n );\n\n if (collapsible === 'none') {\n return (\n <aside data-slot=\"sidebar\" className={cn('flex w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', className)} {...props}>\n {children}\n </aside>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH_MOBILE } as React.CSSProperties}\n side={side}\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground sm:max-w-3xs [&>button]:hidden\"\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex size-full flex-col\">\n <div className=\"flex flex-0 items-center gap-x-2 border-b border-border-weak p-2 pr-4\">\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"muted\"\n size=\"icon\"\n className={cn('size-10 rounded-full', className)}\n onClick={handleToggleSidebar}\n >\n <MenuIcon className=\"size-6!\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n <LunasLogo variant=\"horizontal\" size=\"xs\" className=\"ml-2\" />\n </div>\n <div className=\"flex flex-1 flex-col p-2\">{children}</div>\n </div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <aside\n className=\"group peer hidden bg-card text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'bg-transparent',\n 'transition-[width] duration-200 ease-linear',\n 'h-(--header-height) sm:h-(--header-height)',\n 'w-(--sidebar-width)',\n 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'hidden md:flex shadow-nav',\n 'fixed left-0 inset-y-0 p-2',\n 'top-(--header-height) z-10',\n 'w-(--sidebar-width)',\n 'transition-all duration-200 ease-linear',\n 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]',\n className\n )}\n {...props}\n >\n <div data-sidebar=\"sidebar\" data-slot=\"sidebar-inner\" className=\"relative flex size-full flex-col\">\n {children}\n </div>\n </div>\n </aside>\n );\n }\n);\nCMSLayoutSidebar.displayName = 'CMSLayoutSidebar';\n\nfunction SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-7', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-0.5 hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:translate-x-0 hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n );\n}\n\nconst CMSLayoutMain = memo(({ className, children, ...props }: React.ComponentProps<'main'>) => {\n return (\n <main data-slot=\"sidebar-inset\" className={cn('relative flex w-full flex-1 flex-col', className)} {...props}>\n <div className=\"h-(--header-height) sm:h-(--header-height)\" />\n <div className=\"relative flex-1 size-full overflow-auto\">{children}</div>\n </main>\n );\n});\nCMSLayoutMain.displayName = 'CMSLayoutMain';\n\nconst SidebarInput = memo(({ className, ...props }: React.ComponentProps<typeof Input>) => {\n return <Input data-slot=\"sidebar-input\" data-sidebar=\"input\" className={cn('h-8 w-full bg-background shadow-none', className)} {...props} />;\n});\nSidebarInput.displayName = 'SidebarInput';\n\nconst SidebarHeader = memo(({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n});\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = memo(({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2', className)} {...props} />;\n});\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarSeparator = memo(({ className, ...props }: React.ComponentProps<typeof Separator>) => {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('mx-2 w-auto bg-sidebar-border', className)} {...props} />;\n});\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nconst SidebarContent = memo(({ className, ...props }: React.ComponentProps<'div'>) => {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n});\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = memo(({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full flex-col', className)} {...props} />;\n});\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = memo(({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) => {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n});\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nfunction SidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nconst SidebarGroupContent = memo(({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n});\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = memo(({ className, ...props }: React.ComponentProps<'ul'>) => {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />;\n});\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = memo(({ className, ...props }: React.ComponentProps<'li'>) => {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n});\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'truncate text-left font-normal',\n 'transition-[color,background-color,width,height,padding]',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-12! group-data-[collapsible=icon]:p-3! group-data-[collapsible=icon]:gap-3!',\n '[&>svg]:size-6 [&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-10 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nconst SidebarMenuButton = memo(\n ({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n }: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n } & VariantProps<typeof sidebarMenuButtonVariants>) => {\n const Comp = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n\n if (typeof tooltip === 'string') {\n tooltip = { children: tooltip };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </Tooltip>\n );\n }\n);\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,opacity] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n}) {\n const width = useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);\n\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={{ '--skeleton-width': width } as React.CSSProperties}\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n CMSLayoutSidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n CMSLayoutMain,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n CMSLayoutProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n // biome-ignore lint/style/useComponentExportOnlyModules: true\n useSidebar,\n};\n","'use client';\n\nimport { useCallback } from 'react';\n\nimport { EarthIcon, LogOutIcon, MenuIcon, UserRoundIcon } from 'lucide-react';\n\nimport { colorHashLight } from '@customafk/react-toolkit/color-hash';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';\nimport { LunasLogo } from '@/components/features/logo';\nimport { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\n\nimport { useSidebar } from './sidebar';\n\nexport type CMSLayoutUser = {\n /** Display name shown in the header and user dropdown. */\n name: string;\n /** Email address shown below the name in the dropdown. */\n email?: string;\n /** Role or position shown as a muted label in the dropdown. */\n role?: string;\n /** Optional avatar image URL; falls back to a color-hashed icon. */\n avatarUrl?: string;\n};\n\nexport const CMSLayoutHeader: React.FC<{\n i18nText?: string;\n onChangeToEnLocale?: () => void;\n onChangeToViLocale?: () => void;\n user?: CMSLayoutUser;\n onLogout?: () => void;\n logoutLabel?: string;\n logo?: React.ReactNode;\n}> = ({ i18nText, onChangeToEnLocale, onChangeToViLocale, user, onLogout, logoutLabel = 'Log out', logo }) => {\n const { toggleSidebar } = useSidebar();\n\n const handleToggleSidebar = useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n toggleSidebar();\n },\n [toggleSidebar]\n );\n\n const handleEnLocale = useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n onChangeToEnLocale?.();\n },\n [onChangeToEnLocale]\n );\n\n const handleViLocale = useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n onChangeToViLocale?.();\n },\n [onChangeToViLocale]\n );\n\n const avatarBg = user ? colorHashLight.hex(user.name) : undefined;\n\n return (\n <header\n data-slot=\"cms-layout-header\"\n className={cn(\n 'bg-card',\n 'h-(--header-height)',\n 'sm:h-(--header-height) sm:px-4 sm:pr-6',\n 'absolute inset-x-0 top-0 z-20 gap-2 px-2 pr-4.5',\n 'flex items-center shadow-nav',\n 'transition-[height] ease-linear'\n )}\n >\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"muted\"\n size=\"icon\"\n className=\"size-10 rounded-full transition-all hover:text-text-positive\"\n onClick={handleToggleSidebar}\n >\n <MenuIcon className=\"size-6!\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n\n <div className=\"flex flex-1 items-center sm:ml-2.5\">{logo ?? <LunasLogo variant=\"horizontal\" size=\"xs\" />}</div>\n\n <div className=\"flex items-center gap-1\">\n {user && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" color=\"muted\" className=\"h-9 gap-2.5 rounded-full px-2 transition-all\">\n <Avatar className=\"size-7 shrink-0\">\n <AvatarImage src={user.avatarUrl} alt={user.name} />\n <AvatarFallback style={{ backgroundColor: avatarBg }}>\n <UserRoundIcon size={14} className=\"text-white\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"hidden flex-col items-start sm:flex\">\n <span className=\"max-w-36 truncate text-xs font-semibold leading-tight text-text-positive\">{user.name}</span>\n {user.email && <span className=\"max-w-36 truncate text-xs leading-tight text-text-positive-weak\">{user.email}</span>}\n </div>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-60\">\n <div className=\"flex flex-col items-center gap-2 px-4 py-4 text-center\">\n <Avatar className=\"size-12\">\n <AvatarImage src={user.avatarUrl} alt={user.name} />\n <AvatarFallback style={{ backgroundColor: avatarBg }}>\n <UserRoundIcon size={22} className=\"text-white\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"flex min-w-0 w-full flex-col items-center gap-0.5\">\n <p className=\"truncate text-sm font-semibold text-text-positive\">{user.name}</p>\n {user.email && <p className=\"truncate text-xs text-text-positive-weak\">{user.email}</p>}\n {user.role && (\n <span className=\"mt-1 w-fit rounded-sm border border-border bg-secondary-muted px-2 py-0.5 text-xs font-medium text-text-positive-weak\">\n {user.role}\n </span>\n )}\n </div>\n </div>\n {onLogout && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem className=\"text-danger focus:text-danger\" onClick={onLogout}>\n <LogOutIcon className=\"size-4\" />\n {logoutLabel}\n </DropdownMenuItem>\n </DropdownMenuGroup>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {user && (onChangeToEnLocale || onChangeToViLocale) && <div className=\"mx-1 h-5 w-px bg-border\" />}\n\n {(onChangeToEnLocale || onChangeToViLocale) && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button data-slot=\"locale-trigger\" variant=\"ghost\" color=\"muted\" className=\"gap-x-1 rounded-full transition-all hover:text-text-positive\">\n <EarthIcon className=\"size-6!\" />\n {i18nText}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuGroup>\n <DropdownMenuItem onClick={handleEnLocale}>EN - English</DropdownMenuItem>\n <DropdownMenuItem onClick={handleViLocale}>VI - Vietnamese</DropdownMenuItem>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </header>\n );\n};\n","'use client';\n\nimport { memo } from 'react';\n\nimport { LogOutIcon } from 'lucide-react';\n\nimport { CMSLayoutHeader, type CMSLayoutUser } from './components/header';\nimport {\n CMSLayoutSidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n CMSLayoutMain,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n CMSLayoutProvider,\n} from './components/sidebar';\n\ntype NavItem = {\n /** Unique identifier for the nav item, used as React key and for active-state comparison. */\n id: string;\n /** Human-readable label rendered inside the sidebar button. */\n label: string;\n /** Optional icon element rendered to the left of the label. */\n icon?: React.ReactNode;\n /** Callback fired when the sidebar button is clicked. Use for simple programmatic navigation. */\n onClick?: () => void;\n /**\n * Renders the button as a custom element using the Radix Slot (asChild) pattern.\n * Return a single element (e.g. a TanStack Router `<Link>`) wrapping the icon + label content.\n *\n * @example\n * ```tsx\n * renderAs: ({ icon, label }) => <Link to=\"/dashboard\">{icon}{label}</Link>\n * ```\n */\n renderAs?: (content: { icon?: React.ReactNode; label: string }) => React.ReactElement;\n};\n\ntype NavGroup = {\n /** Unique identifier for the group, used as React key. */\n id: string;\n /** Optional section heading rendered above the group's items. */\n label?: string;\n /** Navigation items that belong to this group. */\n items: NavItem[];\n};\n\nexport type { CMSLayoutUser };\n\nexport type CMSLayoutProps = {\n /** Text label used by the header for language-toggle or i18n display. */\n i18nText?: string;\n /** ID of the currently active navigation item; matched against `NavItem.id` to highlight the active button. */\n activeNavItemId?: string;\n /** Sidebar navigation definition; omitting this prop renders an empty sidebar. */\n sidebar?: { groupcontent: NavGroup[] };\n /** Callback fired when the logout button is clicked. */\n onLogout?: () => void;\n /** Callback fired when the user switches the UI locale to English. */\n onChangeToEnLocale?: () => void;\n /** Callback fired when the user switches the UI locale to Vietnamese. */\n onChangeToViLocale?: () => void;\n /**\n * Label displayed on the logout button.\n * @default 'Log out'\n */\n logoutLabel?: string;\n /**\n * Copyright string shown at the bottom of the sidebar.\n * @default `Copyright © <current year>, Lunas.`\n */\n copyright?: string;\n /** Authenticated user shown in the header avatar dropdown. Omit to hide the user menu. */\n user?: CMSLayoutUser;\n};\n\nconst SidebarContentGroupItem = memo<NavItem & { activeNavItemId?: string }>(({ id, label, icon, activeNavItemId, onClick, renderAs }) => (\n <SidebarMenuItem>\n {renderAs ? (\n <SidebarMenuButton asChild isActive={id === activeNavItemId}>\n {renderAs({ icon, label })}\n </SidebarMenuButton>\n ) : (\n <SidebarMenuButton isActive={id === activeNavItemId} onClick={onClick}>\n {icon}\n {label}\n </SidebarMenuButton>\n )}\n </SidebarMenuItem>\n));\nSidebarContentGroupItem.displayName = 'SidebarContentGroupItem';\n\nconst SidebarContentGroup = memo<React.PropsWithChildren<Omit<NavGroup, 'items'>>>(({ id, label, children }) => (\n <SidebarGroup>\n <SidebarGroupLabel>{label}</SidebarGroupLabel>\n <SidebarGroupContent>\n <SidebarMenu>{children}</SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n));\nSidebarContentGroup.displayName = 'SidebarContentGroup';\n\n/**\n * Full-page CMS application shell with a collapsible inset sidebar, header, and main content area.\n *\n * @example\n * ```tsx\n * import { CMSLayout } from '@customafk/lunas-ui/layouts/cms-layout';\n * import { LayoutDashboardIcon } from 'lucide-react';\n *\n * <CMSLayout\n * activeNavItemId=\"dashboard\"\n * sidebar={{\n * groupcontent: [\n * {\n * id: 'main',\n * label: 'Main',\n * items: [\n * {\n * id: 'dashboard',\n * label: 'Dashboard',\n * icon: <LayoutDashboardIcon />,\n * // Option A — TanStack Router Link (asChild/Slot pattern):\n * renderAs: ({ icon, label }) => <Link to=\"/\">{icon}{label}</Link>,\n * // Option B — simple click handler:\n * // onClick: () => router.navigate({ to: '/' }),\n * },\n * ],\n * },\n * ],\n * }}\n * onLogout={() => signOut()}\n * >\n * <DashboardPage />\n * </CMSLayout>\n * ```\n */\nexport const CMSLayout: React.FC<React.PropsWithChildren<CMSLayoutProps>> = ({\n i18nText,\n activeNavItemId,\n sidebar,\n children,\n onChangeToEnLocale,\n onChangeToViLocale,\n onLogout,\n logoutLabel = 'Log out',\n copyright = `Copyright © ${new Date().getFullYear()}, Lunas.`,\n user,\n}) => {\n const groups = sidebar?.groupcontent ?? [];\n\n return (\n <CMSLayoutProvider>\n <CMSLayoutHeader\n i18nText={i18nText}\n onChangeToEnLocale={onChangeToEnLocale}\n onChangeToViLocale={onChangeToViLocale}\n user={user}\n onLogout={onLogout}\n logoutLabel={logoutLabel}\n />\n <CMSLayoutSidebar variant=\"inset\" collapsible=\"icon\">\n <SidebarContent>\n {groups.map(group => (\n <SidebarContentGroup key={group.id} id={group.id} label={group.label}>\n {group.items.map(item => (\n <SidebarContentGroupItem\n key={item.id}\n id={item.id}\n activeNavItemId={activeNavItemId}\n label={item.label}\n icon={item.icon}\n renderAs={item.renderAs}\n onClick={item.onClick}\n />\n ))}\n </SidebarContentGroup>\n ))}\n </SidebarContent>\n <SidebarFooter>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton className=\"border border-border\" onClick={onLogout}>\n <LogOutIcon className=\"text-text-positive-weak\" />\n {logoutLabel}\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem className=\"mt-2 border-t border-t-border\">\n <p className=\"pt-2 text-center text-xs text-text-positive-subtle\">{copyright}</p>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarFooter>\n </CMSLayoutSidebar>\n <CMSLayoutMain>{children}</CMSLayoutMain>\n </CMSLayoutProvider>\n );\n};\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{t as e}from"./dist-CtTonIm8.mjs";import{Button as t}from"./ui/button.mjs";import"./ui/skeleton.mjs";import{Tooltip as n,TooltipContent as r,TooltipProvider as i,TooltipTrigger as a}from"./ui/tooltip.mjs";import{Avatar as o,AvatarFallback as s,AvatarImage as c}from"./ui/avatar.mjs";import{LunasLogo as l}from"./features/logo/index.mjs";import{DropdownMenu as u,DropdownMenuContent as d,DropdownMenuGroup as f,DropdownMenuItem as p,DropdownMenuSeparator as m,DropdownMenuTrigger as h}from"./ui/dropdown-menu.mjs";import{Input as g}from"./ui/input.mjs";import{Separator as _}from"./ui/separator.mjs";import{Sheet as v,SheetContent as y,SheetDescription as b,SheetHeader as x,SheetTitle as S}from"./ui/sheet.mjs";import{EarthIcon as ee,LogOutIcon as C,MenuIcon as w,UserRoundIcon as T}from"lucide-react";import{createContext as te,memo as E,useCallback as D,useContext as O,useEffect as k,useMemo as A,useState as j}from"react";import{cn as M}from"@customafk/react-toolkit/utils";import{cva as ne}from"class-variance-authority";import{Fragment as N,jsx as P,jsxs as F}from"react/jsx-runtime";import{colorHashLight as I}from"@customafk/react-toolkit/color-hash";import{useIsMobile as L}from"@customafk/react-toolkit/hooks/useMobile";const R=te(null);function z(){let e=O(R);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function re({defaultOpen:e=!0,open:t,onOpenChange:n,className:r,style:a,children:o,...s}){let c=L(),[l,u]=j(!1),[d,f]=j(e),p=t??d,m=D(e=>{let t=typeof e==`function`?e(p):e;n?n(t):f(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,p]),h=D(()=>c?u(e=>!e):m(e=>!e),[c,m]);k(()=>{let e=e=>{e.key===`b`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),h())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[h]);let g=p?`expanded`:`collapsed`,_=A(()=>({state:g,open:p,setOpen:m,isMobile:c,openMobile:l,setOpenMobile:u,toggleSidebar:h}),[g,p,m,c,l,h]);return P(R.Provider,{value:_,children:P(i,{delayDuration:0,children:P(`section`,{"data-slot":`layout-wrapper`,style:{"--sidebar-width":`16rem`,"--sidebar-width-icon":`3rem`,...a},className:M(`relative group/sidebar-wrapper flex h-dvh bg-sidebar`,r),...s,children:o})})})}const B=E(({side:e=`left`,variant:n=`sidebar`,collapsible:r=`offcanvas`,className:i,children:a,...o})=>{let{isMobile:s,state:c,openMobile:u,setOpenMobile:d,toggleSidebar:f}=z(),p=D(e=>{f(),e.preventDefault(),e.stopPropagation()},[f]);return r===`none`?P(`aside`,{"data-slot":`sidebar`,className:M(`flex w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,i),...o,children:a}):s?P(v,{open:u,onOpenChange:d,...o,children:F(y,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,style:{"--sidebar-width":`18rem`},side:e,className:`w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground sm:max-w-3xs [&>button]:hidden`,children:[F(x,{className:`sr-only`,children:[P(S,{children:`Sidebar`}),P(b,{children:`Displays the mobile sidebar.`})]}),F(`div`,{className:`flex size-full flex-col`,children:[F(`div`,{className:`flex flex-0 items-center gap-x-2 border-b border-border-weak p-2 pr-4`,children:[F(t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:M(`size-10 rounded-full`,i),onClick:p,children:[P(w,{className:`size-6!`}),P(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),P(l,{variant:`horizontal`,size:`xs`,className:`ml-2`})]}),P(`div`,{className:`flex flex-1 flex-col p-2`,children:a})]})]})}):F(`aside`,{className:`group peer hidden bg-card text-sidebar-foreground md:block`,"data-state":c,"data-collapsible":c===`collapsed`?r:``,"data-variant":n,"data-side":e,"data-slot":`sidebar`,children:[P(`div`,{"data-slot":`sidebar-gap`,className:M(`bg-transparent`,`transition-[width] duration-200 ease-linear`,`h-(--header-height) sm:h-(--header-height)`,`w-(--sidebar-width)`,`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`)}),P(`div`,{"data-slot":`sidebar-container`,className:M(`hidden md:flex shadow-nav`,`fixed left-0 inset-y-0 p-2`,`top-(--header-height) z-10`,`w-(--sidebar-width)`,`transition-all duration-200 ease-linear`,`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`,i),...o,children:P(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:`relative flex size-full flex-col`,children:a})})]})});B.displayName=`CMSLayoutSidebar`;const V=E(({className:e,children:t,...n})=>F(`main`,{"data-slot":`sidebar-inset`,className:M(`relative flex w-full flex-1 flex-col`,e),...n,children:[P(`div`,{className:`h-(--header-height) sm:h-(--header-height)`}),P(`div`,{className:`relative flex-1 size-full overflow-auto`,children:t})]}));V.displayName=`CMSLayoutMain`;const ie=E(({className:e,...t})=>P(g,{"data-slot":`sidebar-input`,"data-sidebar":`input`,className:M(`h-8 w-full bg-background shadow-none`,e),...t}));ie.displayName=`SidebarInput`;const H=E(({className:e,...t})=>P(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:M(`flex flex-col gap-2 p-2`,e),...t}));H.displayName=`SidebarHeader`;const U=E(({className:e,...t})=>P(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:M(`flex flex-col gap-2`,e),...t}));U.displayName=`SidebarFooter`;const W=E(({className:e,...t})=>P(_,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:M(`mx-2 w-auto bg-sidebar-border`,e),...t}));W.displayName=`SidebarSeparator`;const G=E(({className:e,...t})=>P(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:M(`flex flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t}));G.displayName=`SidebarContent`;const K=E(({className:e,...t})=>P(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:M(`relative flex w-full flex-col`,e),...t}));K.displayName=`SidebarGroup`;const q=E(({className:t,asChild:n=!1,...r})=>P(n?e:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:M(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,t),...r}));q.displayName=`SidebarGroupLabel`;const J=E(({className:e,...t})=>P(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:M(`w-full text-sm`,e),...t}));J.displayName=`SidebarGroupContent`;const Y=E(({className:e,...t})=>P(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:M(`flex w-full min-w-0 flex-col gap-1`,e),...t}));Y.displayName=`SidebarMenu`;const X=E(({className:e,...t})=>P(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:M(`group/menu-item relative`,e),...t}));X.displayName=`SidebarMenuItem`;const ae=ne([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,background-color,width,height,padding]`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`disabled:pointer-events-none disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-12! group-data-[collapsible=icon]:p-3! group-data-[collapsible=icon]:gap-3!`,`[&>svg]:size-6 [&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-10 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}}),Z=E(({asChild:t=!1,isActive:i=!1,variant:o=`default`,size:s=`default`,tooltip:c,className:l,...u})=>{let d=t?e:`button`,{isMobile:f,state:p}=z(),m=P(d,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":s,"data-active":i,className:M(ae({variant:o,size:s}),l),...u});return c?(typeof c==`string`&&(c={children:c}),F(n,{children:[P(a,{asChild:!0,children:m}),P(r,{side:`right`,align:`center`,hidden:p!==`collapsed`||f,...c})]})):m});Z.displayName=`SidebarMenuButton`;const oe=({i18nText:e,onChangeToEnLocale:n,onChangeToViLocale:r,user:i,onLogout:a,logoutLabel:g=`Log out`,logo:_})=>{let{toggleSidebar:v}=z(),y=D(e=>{e.preventDefault(),e.stopPropagation(),v()},[v]),b=D(e=>{e.preventDefault(),e.stopPropagation(),n?.()},[n]),x=D(e=>{e.preventDefault(),e.stopPropagation(),r?.()},[r]),S=i?I.hex(i.name):void 0;return F(`header`,{"data-slot":`cms-layout-header`,className:M(`bg-card`,`h-(--header-height)`,`sm:h-(--header-height) sm:px-4 sm:pr-6`,`absolute inset-x-0 top-0 z-20 gap-2 px-2 pr-4.5`,`flex items-center shadow-nav`,`transition-[height] ease-linear`),children:[F(t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:`size-10 rounded-full transition-all hover:text-text-positive`,onClick:y,children:[P(w,{className:`size-6!`}),P(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),P(`div`,{className:`flex flex-1 items-center sm:ml-2.5`,children:_??P(l,{variant:`horizontal`,size:`xs`})}),F(`div`,{className:`flex items-center gap-1`,children:[i&&F(u,{children:[P(h,{asChild:!0,children:F(t,{variant:`ghost`,color:`muted`,className:`h-9 gap-2.5 rounded-full px-2 transition-all`,children:[F(o,{className:`size-7 shrink-0`,children:[P(c,{src:i.avatarUrl,alt:i.name}),P(s,{style:{backgroundColor:S},children:P(T,{size:14,className:`text-white`})})]}),F(`div`,{className:`hidden flex-col items-start sm:flex`,children:[P(`span`,{className:`max-w-36 truncate text-xs font-semibold leading-tight text-text-positive`,children:i.name}),i.email&&P(`span`,{className:`max-w-36 truncate text-xs leading-tight text-text-positive-weak`,children:i.email})]})]})}),F(d,{align:`end`,className:`w-60`,children:[F(`div`,{className:`flex flex-col items-center gap-2 px-4 py-4 text-center`,children:[F(o,{className:`size-12`,children:[P(c,{src:i.avatarUrl,alt:i.name}),P(s,{style:{backgroundColor:S},children:P(T,{size:22,className:`text-white`})})]}),F(`div`,{className:`flex min-w-0 w-full flex-col items-center gap-0.5`,children:[P(`p`,{className:`truncate text-sm font-semibold text-text-positive`,children:i.name}),i.email&&P(`p`,{className:`truncate text-xs text-text-positive-weak`,children:i.email}),i.role&&P(`span`,{className:`mt-1 w-fit rounded-sm border border-border bg-secondary-muted px-2 py-0.5 text-xs font-medium text-text-positive-weak`,children:i.role})]})]}),a&&F(N,{children:[P(m,{}),P(f,{children:F(p,{className:`text-danger focus:text-danger`,onClick:a,children:[P(C,{className:`size-4`}),g]})})]})]})]}),i&&(n||r)&&P(`div`,{className:`mx-1 h-5 w-px bg-border`}),(n||r)&&F(u,{children:[P(h,{asChild:!0,children:F(t,{"data-slot":`locale-trigger`,variant:`ghost`,color:`muted`,className:`gap-x-1 rounded-full transition-all hover:text-text-positive`,children:[P(ee,{className:`size-6!`}),e]})}),P(d,{align:`end`,children:F(f,{children:[P(p,{onClick:b,children:`EN - English`}),P(p,{onClick:x,children:`VI - Vietnamese`})]})})]})]})]})},Q=E(({id:e,label:t,icon:n,activeNavItemId:r,onClick:i,renderAs:a})=>P(X,{children:a?P(Z,{asChild:!0,isActive:e===r,children:a({icon:n,label:t})}):F(Z,{isActive:e===r,onClick:i,children:[n,t]})}));Q.displayName=`SidebarContentGroupItem`;const $=E(({id:e,label:t,children:n})=>F(K,{children:[P(q,{children:t}),P(J,{children:P(Y,{children:n})})]}));$.displayName=`SidebarContentGroup`;const se=({i18nText:e,activeNavItemId:t,sidebar:n,children:r,onChangeToEnLocale:i,onChangeToViLocale:a,onLogout:o,logoutLabel:s=`Log out`,copyright:c=`Copyright © ${new Date().getFullYear()}, Lunas.`,user:l})=>{let u=n?.groupcontent??[];return F(re,{children:[P(oe,{i18nText:e,onChangeToEnLocale:i,onChangeToViLocale:a,user:l,onLogout:o,logoutLabel:s}),F(B,{variant:`inset`,collapsible:`icon`,children:[P(G,{children:u.map(e=>P($,{id:e.id,label:e.label,children:e.items.map(e=>P(Q,{id:e.id,activeNavItemId:t,label:e.label,icon:e.icon,renderAs:e.renderAs,onClick:e.onClick},e.id))},e.id))}),P(U,{children:F(Y,{children:[P(X,{children:F(Z,{className:`border border-border`,onClick:o,children:[P(C,{className:`text-text-positive-weak`}),s]})}),P(X,{className:`mt-2 border-t border-t-border`,children:P(`p`,{className:`pt-2 text-center text-xs text-text-positive-subtle`,children:c})})]})})]}),P(V,{children:r})]})};export{se as t};
2
- //# sourceMappingURL=cms-layout-COIo9HiP.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cms-layout-COIo9HiP.mjs","names":[],"sources":["../packages/components/layouts/cms-layout/components/sidebar.tsx","../packages/components/layouts/cms-layout/components/header.tsx","../packages/components/layouts/cms-layout/index.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, memo, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { MenuIcon, PanelLeftIcon } from 'lucide-react';\n\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { LunasLogo } from '@/components/features/logo';\nimport { Input } from '@/components/ui/input';\nimport { Separator } from '@/components/ui/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\nfunction CMSLayoutProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n // biome-ignore lint/suspicious/noDocumentCookie: persists sidebar state across page loads\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({ state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar }),\n [state, open, setOpen, isMobile, openMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <section\n data-slot=\"layout-wrapper\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON, ...style } as React.CSSProperties}\n className={cn('relative group/sidebar-wrapper flex h-dvh bg-sidebar', className)}\n {...props}\n >\n {children}\n </section>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nconst CMSLayoutSidebar = memo(\n ({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n }: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n }) => {\n const { isMobile, state, openMobile, setOpenMobile, toggleSidebar } = useSidebar();\n\n const handleToggleSidebar = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n event => {\n toggleSidebar();\n event.preventDefault();\n event.stopPropagation();\n },\n [toggleSidebar]\n );\n\n if (collapsible === 'none') {\n return (\n <aside data-slot=\"sidebar\" className={cn('flex w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', className)} {...props}>\n {children}\n </aside>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH_MOBILE } as React.CSSProperties}\n side={side}\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground sm:max-w-3xs [&>button]:hidden\"\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex size-full flex-col\">\n <div className=\"flex flex-0 items-center gap-x-2 border-b border-border-weak p-2 pr-4\">\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"muted\"\n size=\"icon\"\n className={cn('size-10 rounded-full', className)}\n onClick={handleToggleSidebar}\n >\n <MenuIcon className=\"size-6!\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n <LunasLogo variant=\"horizontal\" size=\"xs\" className=\"ml-2\" />\n </div>\n <div className=\"flex flex-1 flex-col p-2\">{children}</div>\n </div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <aside\n className=\"group peer hidden bg-card text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'bg-transparent',\n 'transition-[width] duration-200 ease-linear',\n 'h-(--header-height) sm:h-(--header-height)',\n 'w-(--sidebar-width)',\n 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'hidden md:flex shadow-nav',\n 'fixed left-0 inset-y-0 p-2',\n 'top-(--header-height) z-10',\n 'w-(--sidebar-width)',\n 'transition-all duration-200 ease-linear',\n 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]',\n className\n )}\n {...props}\n >\n <div data-sidebar=\"sidebar\" data-slot=\"sidebar-inner\" className=\"relative flex size-full flex-col\">\n {children}\n </div>\n </div>\n </aside>\n );\n }\n);\nCMSLayoutSidebar.displayName = 'CMSLayoutSidebar';\n\nfunction SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-7', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-0.5 hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:translate-x-0 hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n );\n}\n\nconst CMSLayoutMain = memo(({ className, children, ...props }: React.ComponentProps<'main'>) => {\n return (\n <main data-slot=\"sidebar-inset\" className={cn('relative flex w-full flex-1 flex-col', className)} {...props}>\n <div className=\"h-(--header-height) sm:h-(--header-height)\" />\n <div className=\"relative flex-1 size-full overflow-auto\">{children}</div>\n </main>\n );\n});\nCMSLayoutMain.displayName = 'CMSLayoutMain';\n\nconst SidebarInput = memo(({ className, ...props }: React.ComponentProps<typeof Input>) => {\n return <Input data-slot=\"sidebar-input\" data-sidebar=\"input\" className={cn('h-8 w-full bg-background shadow-none', className)} {...props} />;\n});\nSidebarInput.displayName = 'SidebarInput';\n\nconst SidebarHeader = memo(({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n});\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = memo(({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2', className)} {...props} />;\n});\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarSeparator = memo(({ className, ...props }: React.ComponentProps<typeof Separator>) => {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('mx-2 w-auto bg-sidebar-border', className)} {...props} />;\n});\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nconst SidebarContent = memo(({ className, ...props }: React.ComponentProps<'div'>) => {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n});\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = memo(({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full flex-col', className)} {...props} />;\n});\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = memo(({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) => {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n});\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nfunction SidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nconst SidebarGroupContent = memo(({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n});\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = memo(({ className, ...props }: React.ComponentProps<'ul'>) => {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />;\n});\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = memo(({ className, ...props }: React.ComponentProps<'li'>) => {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n});\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'truncate text-left font-normal',\n 'transition-[color,background-color,width,height,padding]',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-12! group-data-[collapsible=icon]:p-3! group-data-[collapsible=icon]:gap-3!',\n '[&>svg]:size-6 [&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-10 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nconst SidebarMenuButton = memo(\n ({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n }: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n } & VariantProps<typeof sidebarMenuButtonVariants>) => {\n const Comp = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n\n if (typeof tooltip === 'string') {\n tooltip = { children: tooltip };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </Tooltip>\n );\n }\n);\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,opacity] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n}) {\n const width = useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);\n\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={{ '--skeleton-width': width } as React.CSSProperties}\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n CMSLayoutSidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n CMSLayoutMain,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n CMSLayoutProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n // biome-ignore lint/style/useComponentExportOnlyModules: true\n useSidebar,\n};\n","'use client';\n\nimport { useCallback } from 'react';\n\nimport { EarthIcon, LogOutIcon, MenuIcon, UserRoundIcon } from 'lucide-react';\n\nimport { colorHashLight } from '@customafk/react-toolkit/color-hash';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';\nimport { LunasLogo } from '@/components/features/logo';\nimport { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\n\nimport { useSidebar } from './sidebar';\n\nexport type CMSLayoutUser = {\n /** Display name shown in the header and user dropdown. */\n name: string;\n /** Email address shown below the name in the dropdown. */\n email?: string;\n /** Role or position shown as a muted label in the dropdown. */\n role?: string;\n /** Optional avatar image URL; falls back to a color-hashed icon. */\n avatarUrl?: string;\n};\n\nexport const CMSLayoutHeader: React.FC<{\n i18nText?: string;\n onChangeToEnLocale?: () => void;\n onChangeToViLocale?: () => void;\n user?: CMSLayoutUser;\n onLogout?: () => void;\n logoutLabel?: string;\n logo?: React.ReactNode;\n}> = ({ i18nText, onChangeToEnLocale, onChangeToViLocale, user, onLogout, logoutLabel = 'Log out', logo }) => {\n const { toggleSidebar } = useSidebar();\n\n const handleToggleSidebar = useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n toggleSidebar();\n },\n [toggleSidebar]\n );\n\n const handleEnLocale = useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n onChangeToEnLocale?.();\n },\n [onChangeToEnLocale]\n );\n\n const handleViLocale = useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n onChangeToViLocale?.();\n },\n [onChangeToViLocale]\n );\n\n const avatarBg = user ? colorHashLight.hex(user.name) : undefined;\n\n return (\n <header\n data-slot=\"cms-layout-header\"\n className={cn(\n 'bg-card',\n 'h-(--header-height)',\n 'sm:h-(--header-height) sm:px-4 sm:pr-6',\n 'absolute inset-x-0 top-0 z-20 gap-2 px-2 pr-4.5',\n 'flex items-center shadow-nav',\n 'transition-[height] ease-linear'\n )}\n >\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"muted\"\n size=\"icon\"\n className=\"size-10 rounded-full transition-all hover:text-text-positive\"\n onClick={handleToggleSidebar}\n >\n <MenuIcon className=\"size-6!\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n\n <div className=\"flex flex-1 items-center sm:ml-2.5\">{logo ?? <LunasLogo variant=\"horizontal\" size=\"xs\" />}</div>\n\n <div className=\"flex items-center gap-1\">\n {user && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" color=\"muted\" className=\"h-9 gap-2.5 rounded-full px-2 transition-all\">\n <Avatar className=\"size-7 shrink-0\">\n <AvatarImage src={user.avatarUrl} alt={user.name} />\n <AvatarFallback style={{ backgroundColor: avatarBg }}>\n <UserRoundIcon size={14} className=\"text-white\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"hidden flex-col items-start sm:flex\">\n <span className=\"max-w-36 truncate text-xs font-semibold leading-tight text-text-positive\">{user.name}</span>\n {user.email && <span className=\"max-w-36 truncate text-xs leading-tight text-text-positive-weak\">{user.email}</span>}\n </div>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-60\">\n <div className=\"flex flex-col items-center gap-2 px-4 py-4 text-center\">\n <Avatar className=\"size-12\">\n <AvatarImage src={user.avatarUrl} alt={user.name} />\n <AvatarFallback style={{ backgroundColor: avatarBg }}>\n <UserRoundIcon size={22} className=\"text-white\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"flex min-w-0 w-full flex-col items-center gap-0.5\">\n <p className=\"truncate text-sm font-semibold text-text-positive\">{user.name}</p>\n {user.email && <p className=\"truncate text-xs text-text-positive-weak\">{user.email}</p>}\n {user.role && (\n <span className=\"mt-1 w-fit rounded-sm border border-border bg-secondary-muted px-2 py-0.5 text-xs font-medium text-text-positive-weak\">\n {user.role}\n </span>\n )}\n </div>\n </div>\n {onLogout && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem className=\"text-danger focus:text-danger\" onClick={onLogout}>\n <LogOutIcon className=\"size-4\" />\n {logoutLabel}\n </DropdownMenuItem>\n </DropdownMenuGroup>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {user && (onChangeToEnLocale || onChangeToViLocale) && <div className=\"mx-1 h-5 w-px bg-border\" />}\n\n {(onChangeToEnLocale || onChangeToViLocale) && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button data-slot=\"locale-trigger\" variant=\"ghost\" color=\"muted\" className=\"gap-x-1 rounded-full transition-all hover:text-text-positive\">\n <EarthIcon className=\"size-6!\" />\n {i18nText}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuGroup>\n <DropdownMenuItem onClick={handleEnLocale}>EN - English</DropdownMenuItem>\n <DropdownMenuItem onClick={handleViLocale}>VI - Vietnamese</DropdownMenuItem>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </header>\n );\n};\n","'use client';\n\nimport { memo } from 'react';\n\nimport { LogOutIcon } from 'lucide-react';\n\nimport { CMSLayoutHeader, type CMSLayoutUser } from './components/header';\nimport {\n CMSLayoutSidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n CMSLayoutMain,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n CMSLayoutProvider,\n} from './components/sidebar';\n\ntype NavItem = {\n /** Unique identifier for the nav item, used as React key and for active-state comparison. */\n id: string;\n /** Human-readable label rendered inside the sidebar button. */\n label: string;\n /** Optional icon element rendered to the left of the label. */\n icon?: React.ReactNode;\n /** Callback fired when the sidebar button is clicked. Use for simple programmatic navigation. */\n onClick?: () => void;\n /**\n * Renders the button as a custom element using the Radix Slot (asChild) pattern.\n * Return a single element (e.g. a TanStack Router `<Link>`) wrapping the icon + label content.\n *\n * @example\n * ```tsx\n * renderAs: ({ icon, label }) => <Link to=\"/dashboard\">{icon}{label}</Link>\n * ```\n */\n renderAs?: (content: { icon?: React.ReactNode; label: string }) => React.ReactElement;\n};\n\ntype NavGroup = {\n /** Unique identifier for the group, used as React key. */\n id: string;\n /** Optional section heading rendered above the group's items. */\n label?: string;\n /** Navigation items that belong to this group. */\n items: NavItem[];\n};\n\nexport type { CMSLayoutUser };\n\nexport type CMSLayoutProps = {\n /** Text label used by the header for language-toggle or i18n display. */\n i18nText?: string;\n /** ID of the currently active navigation item; matched against `NavItem.id` to highlight the active button. */\n activeNavItemId?: string;\n /** Sidebar navigation definition; omitting this prop renders an empty sidebar. */\n sidebar?: { groupcontent: NavGroup[] };\n /** Callback fired when the logout button is clicked. */\n onLogout?: () => void;\n /** Callback fired when the user switches the UI locale to English. */\n onChangeToEnLocale?: () => void;\n /** Callback fired when the user switches the UI locale to Vietnamese. */\n onChangeToViLocale?: () => void;\n /**\n * Label displayed on the logout button.\n * @default 'Log out'\n */\n logoutLabel?: string;\n /**\n * Copyright string shown at the bottom of the sidebar.\n * @default `Copyright © <current year>, Lunas.`\n */\n copyright?: string;\n /** Authenticated user shown in the header avatar dropdown. Omit to hide the user menu. */\n user?: CMSLayoutUser;\n};\n\nconst SidebarContentGroupItem = memo<NavItem & { activeNavItemId?: string }>(({ id, label, icon, activeNavItemId, onClick, renderAs }) => (\n <SidebarMenuItem>\n {renderAs ? (\n <SidebarMenuButton asChild isActive={id === activeNavItemId}>\n {renderAs({ icon, label })}\n </SidebarMenuButton>\n ) : (\n <SidebarMenuButton isActive={id === activeNavItemId} onClick={onClick}>\n {icon}\n {label}\n </SidebarMenuButton>\n )}\n </SidebarMenuItem>\n));\nSidebarContentGroupItem.displayName = 'SidebarContentGroupItem';\n\nconst SidebarContentGroup = memo<React.PropsWithChildren<Omit<NavGroup, 'items'>>>(({ id, label, children }) => (\n <SidebarGroup>\n <SidebarGroupLabel>{label}</SidebarGroupLabel>\n <SidebarGroupContent>\n <SidebarMenu>{children}</SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n));\nSidebarContentGroup.displayName = 'SidebarContentGroup';\n\n/**\n * Full-page CMS application shell with a collapsible inset sidebar, header, and main content area.\n *\n * @example\n * ```tsx\n * import { CMSLayout } from '@customafk/lunas-ui/layouts/cms-layout';\n * import { LayoutDashboardIcon } from 'lucide-react';\n *\n * <CMSLayout\n * activeNavItemId=\"dashboard\"\n * sidebar={{\n * groupcontent: [\n * {\n * id: 'main',\n * label: 'Main',\n * items: [\n * {\n * id: 'dashboard',\n * label: 'Dashboard',\n * icon: <LayoutDashboardIcon />,\n * // Option A — TanStack Router Link (asChild/Slot pattern):\n * renderAs: ({ icon, label }) => <Link to=\"/\">{icon}{label}</Link>,\n * // Option B — simple click handler:\n * // onClick: () => router.navigate({ to: '/' }),\n * },\n * ],\n * },\n * ],\n * }}\n * onLogout={() => signOut()}\n * >\n * <DashboardPage />\n * </CMSLayout>\n * ```\n */\nexport const CMSLayout: React.FC<React.PropsWithChildren<CMSLayoutProps>> = ({\n i18nText,\n activeNavItemId,\n sidebar,\n children,\n onChangeToEnLocale,\n onChangeToViLocale,\n onLogout,\n logoutLabel = 'Log out',\n copyright = `Copyright © ${new Date().getFullYear()}, Lunas.`,\n user,\n}) => {\n const groups = sidebar?.groupcontent ?? [];\n\n return (\n <CMSLayoutProvider>\n <CMSLayoutHeader\n i18nText={i18nText}\n onChangeToEnLocale={onChangeToEnLocale}\n onChangeToViLocale={onChangeToViLocale}\n user={user}\n onLogout={onLogout}\n logoutLabel={logoutLabel}\n />\n <CMSLayoutSidebar variant=\"inset\" collapsible=\"icon\">\n <SidebarContent>\n {groups.map(group => (\n <SidebarContentGroup key={group.id} id={group.id} label={group.label}>\n {group.items.map(item => (\n <SidebarContentGroupItem\n key={item.id}\n id={item.id}\n activeNavItemId={activeNavItemId}\n label={item.label}\n icon={item.icon}\n renderAs={item.renderAs}\n onClick={item.onClick}\n />\n ))}\n </SidebarContentGroup>\n ))}\n </SidebarContent>\n <SidebarFooter>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton className=\"border border-border\" onClick={onLogout}>\n <LogOutIcon className=\"text-text-positive-weak\" />\n {logoutLabel}\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem className=\"mt-2 border-t border-t-border\">\n <p className=\"pt-2 text-center text-xs text-text-positive-subtle\">{copyright}</p>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarFooter>\n </CMSLayoutSidebar>\n <CMSLayoutMain>{children}</CMSLayoutMain>\n </CMSLayoutProvider>\n );\n};\n"],"mappings":"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"}