@customafk/lunas-ui 0.1.86 → 0.1.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{button-D2qx5QHI.d.cts → button-DjqNWeLI.d.cts} +4 -4
- package/dist/{button-eheC-7Id.d.mts → button-VdupFKuy.d.mts} +4 -4
- package/dist/data-display/empty.d.cts +2 -2
- package/dist/data-display/empty.d.mts +2 -2
- package/dist/data-display/statistic.d.cts +2 -2
- package/dist/data-display/statistic.d.mts +2 -2
- package/dist/{dialog-T7CVHrm2.d.mts → dialog-NSWxAcg2.d.cts} +12 -12
- package/dist/{dialog-5imw84-8.d.cts → dialog-VmYg9Eq_.d.mts} +12 -12
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +26 -26
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +26 -26
- package/dist/features/descriptions/index.cjs.map +1 -1
- package/dist/features/descriptions/index.d.cts +4 -4
- package/dist/features/descriptions/index.mjs.map +1 -1
- package/dist/features/search-modal/index.d.cts +2 -2
- package/dist/features/search-modal/index.d.mts +2 -2
- package/dist/features/tables/index.cjs +1 -1
- package/dist/features/tables/index.cjs.map +1 -1
- package/dist/features/tables/index.d.cts +10 -8
- package/dist/features/tables/index.d.mts +4 -2
- package/dist/features/tables/index.mjs +1 -1
- package/dist/features/tables/index.mjs.map +1 -1
- package/dist/features/tanstack-form/index.cjs +1 -1
- package/dist/features/tanstack-form/index.cjs.map +1 -1
- package/dist/features/tanstack-form/index.d.cts +54 -48
- package/dist/features/tanstack-form/index.d.mts +54 -48
- package/dist/features/tanstack-form/index.mjs +1 -1
- package/dist/features/tanstack-form/index.mjs.map +1 -1
- package/dist/{input-DhoSwu7d.mjs → input-CqN74taK.mjs} +2 -2
- package/dist/{input-DhoSwu7d.mjs.map → input-CqN74taK.mjs.map} +1 -1
- package/dist/{input-CbpWzuai.d.cts → input-DZh516vt.d.mts} +5 -5
- package/dist/{input-qnlHzDDm.cjs → input-dAoEznUI.cjs} +2 -2
- package/dist/{input-qnlHzDDm.cjs.map → input-dAoEznUI.cjs.map} +1 -1
- package/dist/{input-BYz8teIQ.d.mts → input-x9tCltJ_.d.cts} +5 -5
- package/dist/layouts/cms-layout/index.cjs +1 -1
- package/dist/layouts/cms-layout/index.mjs +1 -1
- package/dist/layouts/flex.d.cts +8 -8
- package/dist/layouts/flex.d.mts +6 -6
- package/dist/layouts/payment-layout/index.cjs +1 -1
- package/dist/layouts/payment-layout/index.mjs +1 -1
- package/dist/pages/FeatureDeveloping.d.cts +2 -2
- package/dist/pages/FeatureDeveloping.d.mts +2 -2
- package/dist/pages/FeatureFixing.d.cts +2 -2
- package/dist/pages/FeatureFixing.d.mts +2 -2
- package/dist/pages/NotAuthorized.d.cts +2 -2
- package/dist/pages/NotAuthorized.d.mts +2 -2
- package/dist/pages/NotFound.d.cts +2 -2
- package/dist/pages/NotFound.d.mts +2 -2
- package/dist/typography/paragraph.d.cts +2 -2
- package/dist/typography/paragraph.d.mts +2 -2
- package/dist/typography/title.d.cts +2 -2
- package/dist/typography/title.d.mts +2 -2
- package/dist/ui/alert-dialog.d.cts +12 -12
- package/dist/ui/alert-dialog.d.mts +12 -12
- package/dist/ui/alert.d.cts +6 -6
- package/dist/ui/alert.d.mts +6 -6
- package/dist/ui/aspect-ratio.d.cts +2 -2
- package/dist/ui/aspect-ratio.d.mts +2 -2
- package/dist/ui/avatar.d.cts +4 -4
- package/dist/ui/avatar.d.mts +4 -4
- package/dist/ui/badge.d.cts +4 -4
- package/dist/ui/badge.d.mts +4 -4
- package/dist/ui/breadcrumb.d.cts +8 -8
- package/dist/ui/breadcrumb.d.mts +8 -8
- package/dist/ui/button-group.d.cts +6 -6
- package/dist/ui/button-group.d.mts +6 -6
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.mts +1 -1
- package/dist/ui/calendar.d.cts +4 -4
- package/dist/ui/calendar.d.mts +4 -4
- package/dist/ui/card.d.cts +8 -8
- package/dist/ui/card.d.mts +8 -8
- package/dist/ui/carousel.d.cts +7 -7
- package/dist/ui/carousel.d.mts +7 -7
- package/dist/ui/checkbox.d.cts +2 -2
- package/dist/ui/checkbox.d.mts +2 -2
- package/dist/ui/collapsible.d.cts +4 -4
- package/dist/ui/collapsible.d.mts +4 -4
- package/dist/ui/command.d.cts +11 -11
- package/dist/ui/command.d.mts +11 -11
- package/dist/ui/context-menu.d.cts +16 -16
- package/dist/ui/context-menu.d.mts +16 -16
- package/dist/ui/dialog.d.cts +1 -1
- package/dist/ui/dialog.d.mts +1 -1
- package/dist/ui/drawer.d.cts +11 -11
- package/dist/ui/drawer.d.mts +11 -11
- package/dist/ui/dropdown-menu.d.cts +16 -16
- package/dist/ui/dropdown-menu.d.mts +16 -16
- package/dist/ui/empty.d.cts +9 -9
- package/dist/ui/empty.d.mts +9 -9
- package/dist/ui/field.d.cts +24 -24
- package/dist/ui/field.d.mts +24 -24
- package/dist/ui/file-uploader.d.cts +2 -2
- package/dist/ui/file-uploader.d.mts +2 -2
- package/dist/ui/form.d.cts +11 -11
- package/dist/ui/form.d.mts +11 -11
- package/dist/ui/hover-card.d.cts +4 -4
- package/dist/ui/hover-card.d.mts +4 -4
- package/dist/ui/input-otp.d.cts +5 -5
- package/dist/ui/input-otp.d.mts +5 -5
- package/dist/ui/input.cjs +1 -1
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.mts +1 -1
- package/dist/ui/input.mjs +1 -1
- package/dist/ui/inputs/search-input.cjs +1 -1
- package/dist/ui/inputs/search-input.d.cts +3 -3
- package/dist/ui/inputs/search-input.d.mts +3 -3
- package/dist/ui/inputs/search-input.mjs +1 -1
- package/dist/ui/item.d.cts +16 -16
- package/dist/ui/item.d.mts +16 -16
- package/dist/ui/label.d.cts +2 -2
- package/dist/ui/label.d.mts +2 -2
- package/dist/ui/menubar.d.cts +17 -17
- package/dist/ui/menubar.d.mts +17 -17
- package/dist/ui/multi-select.d.cts +2 -2
- package/dist/ui/multi-select.d.mts +3 -3
- package/dist/ui/navigation-menu.d.cts +11 -11
- package/dist/ui/navigation-menu.d.mts +11 -11
- package/dist/ui/pagination.d.cts +9 -9
- package/dist/ui/pagination.d.mts +9 -9
- package/dist/ui/popover.d.cts +5 -5
- package/dist/ui/popover.d.mts +5 -5
- package/dist/ui/progress.d.cts +2 -2
- package/dist/ui/progress.d.mts +2 -2
- package/dist/ui/radio-group.d.cts +3 -3
- package/dist/ui/radio-group.d.mts +3 -3
- package/dist/ui/resizable.d.cts +4 -4
- package/dist/ui/resizable.d.mts +4 -4
- package/dist/ui/scroll-area.d.cts +6 -6
- package/dist/ui/scroll-area.d.mts +6 -6
- package/dist/ui/select.d.cts +11 -11
- package/dist/ui/select.d.mts +11 -11
- package/dist/ui/separator.d.cts +2 -2
- package/dist/ui/separator.d.mts +2 -2
- package/dist/ui/sheet.d.cts +9 -9
- package/dist/ui/sheet.d.mts +9 -9
- package/dist/ui/sidebar.cjs +1 -1
- package/dist/ui/sidebar.d.cts +28 -28
- package/dist/ui/sidebar.d.mts +26 -26
- package/dist/ui/sidebar.mjs +1 -1
- package/dist/ui/skeleton.d.cts +2 -2
- package/dist/ui/skeleton.d.mts +2 -2
- package/dist/ui/slider.d.cts +2 -2
- package/dist/ui/slider.d.mts +2 -2
- package/dist/ui/sonner.d.cts +2 -2
- package/dist/ui/sonner.d.mts +2 -2
- package/dist/ui/spinner.d.cts +2 -2
- package/dist/ui/spinner.d.mts +2 -2
- package/dist/ui/switch.d.cts +2 -2
- package/dist/ui/switch.d.mts +2 -2
- package/dist/ui/table.d.cts +18 -18
- package/dist/ui/table.d.mts +18 -18
- package/dist/ui/tabs.d.cts +5 -5
- package/dist/ui/tabs.d.mts +5 -5
- package/dist/ui/textarea.d.cts +2 -2
- package/dist/ui/textarea.d.mts +2 -2
- package/dist/ui/toggle-group.d.cts +3 -3
- package/dist/ui/toggle-group.d.mts +3 -3
- package/dist/ui/toggle.d.cts +4 -4
- package/dist/ui/toggle.d.mts +4 -4
- package/dist/ui/tooltip.d.cts +5 -5
- package/dist/ui/tooltip.d.mts +5 -5
- package/package.json +6 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime294 from "react/jsx-runtime";
|
|
2
|
+
import * as react186 from "react";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/features/descriptions/components/badge.d.ts
|
|
5
5
|
declare const DescriptionBadge: React.FC<{
|
|
@@ -51,7 +51,7 @@ type Props = {
|
|
|
51
51
|
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
52
52
|
value: number | string | null | undefined;
|
|
53
53
|
};
|
|
54
|
-
declare const DescriptionStatistic:
|
|
54
|
+
declare const DescriptionStatistic: react186.MemoExoticComponent<({
|
|
55
55
|
decimalSeparator,
|
|
56
56
|
groupSeparator,
|
|
57
57
|
prefix: Prefix,
|
|
@@ -61,7 +61,7 @@ declare const DescriptionStatistic: react187.MemoExoticComponent<({
|
|
|
61
61
|
showTrailingZeros,
|
|
62
62
|
size,
|
|
63
63
|
value
|
|
64
|
-
}: Props) =>
|
|
64
|
+
}: Props) => react_jsx_runtime294.JSX.Element>;
|
|
65
65
|
//#endregion
|
|
66
66
|
//#region packages/components/features/descriptions/index.d.ts
|
|
67
67
|
declare const DescriptionItem: React.FC<React.PropsWithChildren<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["DescriptionEmpty: React.FC","DescriptionBadge: React.FC<{\n label: string | number | null | undefined;\n}>","DescriptionDate: React.FC<Props>","DescriptionImages: React.FC<{\n images?:\n | Array<{\n id: string;\n src: string;\n alt: string;\n }>\n | null\n | undefined;\n}>","DescriptionLongText: React.FC<{ content: string | null | undefined | number }>","DescriptionName: React.FC<{\n name?: string | null | undefined;\n}>","DescriptionNumberPhone: React.FC<React.PropsWithChildren<{ value: string }>>","options: Intl.NumberFormatOptions","DescriptionItem: React.FC<\n React.PropsWithChildren<{\n label: string;\n labelColSpan?: number;\n }>\n>","Description: React.FC<\n React.PropsWithChildren<{\n className?: string;\n }>\n>"],"sources":["../../../packages/components/features/descriptions/components/empty.tsx","../../../packages/components/features/descriptions/components/badge.tsx","../../../packages/components/features/descriptions/components/date.tsx","../../../packages/components/features/descriptions/components/images.tsx","../../../packages/components/features/descriptions/components/longtext.tsx","../../../packages/components/features/descriptions/components/name.tsx","../../../packages/components/features/descriptions/components/number-phone.tsx","../../../packages/components/features/descriptions/components/statistic.tsx","../../../packages/components/features/descriptions/index.tsx"],"sourcesContent":["export const DescriptionEmpty: React.FC = () => {\n return (\n <div className=\"flex items-center gap-0 font-medium text-sm text-text-positive-muted italic\">\n <p>Empty Value</p>\n </div>\n );\n};\n","import { DescriptionEmpty } from './empty';\n\nexport const DescriptionBadge: React.FC<{\n label: string | number | null | undefined;\n}> = ({ label }) => {\n if (!label) return <DescriptionEmpty />;\n return (\n <div className=\"w-fit rounded-full border border-border-weak px-3 py-1 font-medium text-text-positive-weak text-xs tabular-nums shadow-xs\">{label}</div>\n );\n};\n","import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { DateDisplay } from '@/components/data-display/date';\nimport { DescriptionEmpty } from './empty';\n\ntype Props = {\n date: Date | string | number | null | undefined;\n};\nexport const DescriptionDate: React.FC<Props> = ({ date }) => {\n if (typeof date === 'undefined' || date === null) return <DescriptionEmpty />;\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger>\n <DateDisplay date={date} format=\"medium\" />\n </TooltipTrigger>\n <TooltipContent>\n <DateDisplay date={date} format=\"full\" showTime className=\"font-medium text-xs\" />\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n};\n","import { Image } from '@/components/ui/image';\n\nimport { DescriptionEmpty } from './empty';\n\nexport const DescriptionImages: React.FC<{\n images?:\n | Array<{\n id: string;\n src: string;\n alt: string;\n }>\n | null\n | undefined;\n}> = ({ images }) => {\n if (!images || !images.length) return <DescriptionEmpty />;\n if (images.length === 1)\n return (\n <div className=\"flex flex-wrap gap-4\">\n <div key={images[0].id} className=\"group relative size-42 rounded-sm border border-border shadow-xs\">\n <Image src={images[0].src} alt={images[0].alt} width=\"100%\" height=\"100%\" />\n </div>\n </div>\n );\n return (\n <div className=\"flex flex-wrap gap-4\">\n {images.map(image => (\n <div key={image.id} className=\"group relative size-16 rounded-lg border border-border shadow-xs\">\n <Image src={image.src} alt={image.alt} width=\"100%\" height=\"100%\" />\n </div>\n ))}\n </div>\n );\n};\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\nimport { DescriptionEmpty } from './empty';\n\nexport const DescriptionLongText: React.FC<{ content: string | null | undefined | number }> = ({ content }) => {\n if (content === undefined || content === null) {\n return <DescriptionEmpty />;\n }\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"whitespace-pre-line break-all text-start text-sm\">\n {content}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{content}</p>\n <p className=\"w-full text-end\">{content.toString().length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\nimport { DescriptionEmpty } from './empty';\n\nexport const DescriptionName: React.FC<{\n name?: string | null | undefined;\n}> = ({ name }) => {\n if (!name) return <DescriptionEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"line-clamp-2 w-full truncate\">\n {name}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{name}</p>\n <p className=\"w-full text-end\">{name.length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\n\nexport const DescriptionNumberPhone: React.FC<React.PropsWithChildren<{ value: string }>> = ({ value }) => {\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\">{value.replace(/(\\d{3})(\\d{3})(\\d{4})/, '($1) $2-$3')}</Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\">\n <p className=\"tabular-nums\">{value.slice(1).replace(/(\\d{2})(\\d{3})(\\d{4})/, '(00) (+84) ($1) $2-$3')}</p>\n </TooltipContent>\n </Tooltip>\n );\n};\n","import { memo, useCallback, useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Flex } from '@/components/layouts/flex';\nimport { DescriptionEmpty } from './empty';\n\nconst applyRounding = (num: number, precisionValue: number, roundingMode?: 'round' | 'floor' | 'ceil') => {\n const multiplier = 10 ** precisionValue;\n\n switch (roundingMode) {\n case 'floor':\n return Math.floor(num * multiplier) / multiplier;\n case 'ceil':\n return Math.ceil(num * multiplier) / multiplier;\n default:\n return Math.round(num * multiplier) / multiplier;\n }\n};\n\ntype Props = {\n decimalSeparator?: string;\n groupSeparator?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n precision?: number; // Số chữ số thập phân\n roundingMode?: 'round' | 'floor' | 'ceil'; // Kiểu làm tròn\n showTrailingZeros?: boolean; // Hiển thị số 0 cuối\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'; // Kích thước của component\n value: number | string | null | undefined;\n};\n\nexport const DescriptionStatistic = memo(\n ({\n decimalSeparator = '.',\n groupSeparator = ',',\n prefix: Prefix,\n suffix: Suffix,\n precision,\n roundingMode = 'round',\n showTrailingZeros = false,\n size = 'sm',\n value = 0,\n }: Props) => {\n // Memoize number formatting options\n const formatOptions = useMemo((): Intl.NumberFormatOptions => {\n const options: Intl.NumberFormatOptions = {};\n\n if (typeof precision === 'number' && precision >= 0 && showTrailingZeros) {\n options.minimumFractionDigits = precision;\n options.maximumFractionDigits = precision;\n } else {\n options.maximumFractionDigits = precision;\n }\n\n return options;\n }, [precision, showTrailingZeros]);\n\n const formatNumber = useCallback(\n (num: number): string => {\n let processedNum = num;\n\n // Áp dụng làm tròn nếu có precision\n if (typeof precision === 'number' && precision >= 0) {\n processedNum = applyRounding(num, precision, roundingMode);\n }\n\n return processedNum.toLocaleString('en-US', formatOptions);\n },\n [roundingMode, formatOptions, precision]\n );\n\n // Memoize value processing\n const processedValue = useMemo((): string => {\n // Xử lý giá trị number\n if (typeof value === 'number') {\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n return 'N/A';\n }\n return formatNumber(value);\n }\n\n // Xử lý giá trị string\n if (typeof value === 'string') {\n const trimmedValue = value.trim();\n\n // Nếu là chuỗi rỗng\n if (!trimmedValue) {\n return 'N/A';\n }\n\n // Thử convert sang number\n const numValue = Number(trimmedValue);\n\n if (Number.isNaN(numValue) || !Number.isFinite(numValue)) {\n // Nếu không phải số, trả về string gốc\n return 'N/A';\n }\n\n return formatNumber(numValue);\n }\n\n return 'N/A';\n }, [value, formatNumber]);\n\n // Memoize separator replacement\n const finalFormattedValue = useMemo((): string => {\n // Chỉ thay thế separators nếu khác mặc định\n if (decimalSeparator === '.' && groupSeparator === ',') {\n return processedValue;\n }\n return processedValue.replace(/,/g, groupSeparator).replace(/\\./g, decimalSeparator);\n }, [processedValue, decimalSeparator, groupSeparator]);\n\n if (finalFormattedValue === '0' || finalFormattedValue === 'N/A' || !finalFormattedValue) {\n return <DescriptionEmpty />;\n }\n\n return (\n <Flex\n padding=\"none\"\n className={cn(\n 'font-number text-lg text-text-positive tabular-nums',\n size === 'xs' && 'text-xs',\n size === 'sm' && 'text-sm',\n size === 'md' && 'text-base',\n size === 'lg' && 'text-lg',\n size === 'xl' && 'text-xl'\n )}\n >\n {Prefix}\n <p>{finalFormattedValue}</p>\n {Suffix}\n </Flex>\n );\n }\n);\nDescriptionStatistic.displayName = 'DescriptionStatistic';\n","import { cn } from '@customafk/react-toolkit/utils';\n\nexport * from './components';\n\nexport const DescriptionItem: React.FC<\n React.PropsWithChildren<{\n label: string;\n labelColSpan?: number;\n }>\n> = ({ label, labelColSpan = 3, children }) => {\n return (\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(12, minmax(0, 1fr))',\n }}\n className=\"grid border-b border-b-border\"\n >\n <div\n style={{\n gridColumn: `span ${labelColSpan} / span ${labelColSpan}`,\n }}\n className=\"flex min-w-full items-center justify-start overflow-x-hidden text-wrap break-all border-r border-r-border bg-secondary-muted py-3 pr-2 pl-4 text-sm text-text-positive-weak tabular-nums\"\n >\n {label}\n </div>\n <div\n style={{\n gridColumn: `span ${12 - labelColSpan} / span ${12 - labelColSpan}`,\n }}\n className=\"flex flex-wrap gap-2 py-3 pr-2 pl-4 text-sm text-text-positive\"\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport const Description: React.FC<\n React.PropsWithChildren<{\n className?: string;\n }>\n> = ({ children, className }) => {\n return (\n <div\n data-slot=\"description-wrapper\"\n className={cn('relative flex size-full flex-col gap-y-0 space-y-0 overflow-hidden rounded-lg border border-border bg-card shadow-xs ring-3 ring-border-muted', className)}\n >\n {children}\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["DescriptionEmpty: React.FC","DescriptionBadge: React.FC<{\n label: string | number | null | undefined;\n}>","DescriptionDate: React.FC<Props>","DescriptionImages: React.FC<{\n images?:\n | Array<{\n id: string;\n src: string;\n alt: string;\n }>\n | null\n | undefined;\n}>","DescriptionLongText: React.FC<{ content: string | null | undefined | number }>","DescriptionName: React.FC<{\n name?: string | null | undefined;\n}>","DescriptionNumberPhone: React.FC<React.PropsWithChildren<{ value: string }>>","options: Intl.NumberFormatOptions","DescriptionItem: React.FC<\n React.PropsWithChildren<{\n label: string;\n labelColSpan?: number;\n }>\n>","Description: React.FC<\n React.PropsWithChildren<{\n className?: string;\n }>\n>"],"sources":["../../../packages/components/features/descriptions/components/empty.tsx","../../../packages/components/features/descriptions/components/badge.tsx","../../../packages/components/features/descriptions/components/date.tsx","../../../packages/components/features/descriptions/components/images.tsx","../../../packages/components/features/descriptions/components/longtext.tsx","../../../packages/components/features/descriptions/components/name.tsx","../../../packages/components/features/descriptions/components/number-phone.tsx","../../../packages/components/features/descriptions/components/statistic.tsx","../../../packages/components/features/descriptions/index.tsx"],"sourcesContent":["export const DescriptionEmpty: React.FC = () => {\n return (\n <div className=\"flex items-center gap-0 font-medium text-sm text-text-positive-muted italic\">\n <p>Empty Value</p>\n </div>\n );\n};\n","import { DescriptionEmpty } from './empty';\n\nexport const DescriptionBadge: React.FC<{\n label: string | number | null | undefined;\n}> = ({ label }) => {\n if (!label) return <DescriptionEmpty />;\n return (\n <div className=\"w-fit rounded-full border border-border-weak px-3 py-1 font-medium text-text-positive-weak text-xs tabular-nums shadow-xs\">{label}</div>\n );\n};\n","import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { DateDisplay } from '@/components/data-display/date';\nimport { DescriptionEmpty } from './empty';\n\ntype Props = {\n date: Date | string | number | null | undefined;\n};\nexport const DescriptionDate: React.FC<Props> = ({ date }) => {\n if (typeof date === 'undefined' || date === null) return <DescriptionEmpty />;\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger>\n <DateDisplay date={date} format=\"medium\" />\n </TooltipTrigger>\n <TooltipContent>\n <DateDisplay date={date} format=\"full\" showTime className=\"font-medium text-xs\" />\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n};\n","import { Image } from '@/components/ui/image';\n\nimport { DescriptionEmpty } from './empty';\n\nexport const DescriptionImages: React.FC<{\n images?:\n | Array<{\n id: string;\n src: string;\n alt: string;\n }>\n | null\n | undefined;\n}> = ({ images }) => {\n if (!images || !images.length) return <DescriptionEmpty />;\n if (images.length === 1)\n return (\n <div className=\"flex flex-wrap gap-4\">\n <div key={images[0].id} className=\"group relative size-42 rounded-sm border border-border shadow-xs\">\n <Image src={images[0].src} alt={images[0].alt} width=\"100%\" height=\"100%\" />\n </div>\n </div>\n );\n return (\n <div className=\"flex flex-wrap gap-4\">\n {images.map(image => (\n <div key={image.id} className=\"group relative size-16 rounded-lg border border-border shadow-xs\">\n <Image src={image.src} alt={image.alt} width=\"100%\" height=\"100%\" />\n </div>\n ))}\n </div>\n );\n};\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\nimport { DescriptionEmpty } from './empty';\n\nexport const DescriptionLongText: React.FC<{ content: string | null | undefined | number }> = ({ content }) => {\n if (content === undefined || content === null) {\n return <DescriptionEmpty />;\n }\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"whitespace-pre-line break-all text-start text-sm\">\n {content}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{content}</p>\n <p className=\"w-full text-end\">{content.toString().length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\nimport { DescriptionEmpty } from './empty';\n\nexport const DescriptionName: React.FC<{\n name?: string | null | undefined;\n}> = ({ name }) => {\n if (!name) return <DescriptionEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"line-clamp-2 w-full truncate\">\n {name}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{name}</p>\n <p className=\"w-full text-end\">{name.length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\n\nexport const DescriptionNumberPhone: React.FC<React.PropsWithChildren<{ value: string }>> = ({ value }) => {\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\">{value.replace(/(\\d{3})(\\d{3})(\\d{4})/, '($1) $2-$3')}</Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\">\n <p className=\"tabular-nums\">{value.slice(1).replace(/(\\d{2})(\\d{3})(\\d{4})/, '(00) (+84) ($1) $2-$3')}</p>\n </TooltipContent>\n </Tooltip>\n );\n};\n","import { memo, useCallback, useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Flex } from '@/components/layouts/flex';\nimport { DescriptionEmpty } from './empty';\n\nconst applyRounding = (num: number, precisionValue: number, roundingMode?: 'round' | 'floor' | 'ceil') => {\n const multiplier = 10 ** precisionValue;\n\n switch (roundingMode) {\n case 'floor':\n return Math.floor(num * multiplier) / multiplier;\n case 'ceil':\n return Math.ceil(num * multiplier) / multiplier;\n default:\n return Math.round(num * multiplier) / multiplier;\n }\n};\n\ntype Props = {\n decimalSeparator?: string;\n groupSeparator?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n precision?: number; // Số chữ số thập phân\n roundingMode?: 'round' | 'floor' | 'ceil'; // Kiểu làm tròn\n showTrailingZeros?: boolean; // Hiển thị số 0 cuối\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'; // Kích thước của component\n value: number | string | null | undefined;\n};\n\nexport const DescriptionStatistic = memo(\n ({\n decimalSeparator = '.',\n groupSeparator = ',',\n prefix: Prefix,\n suffix: Suffix,\n precision,\n roundingMode = 'round',\n showTrailingZeros = false,\n size = 'sm',\n value = 0,\n }: Props) => {\n // Memoize number formatting options\n const formatOptions = useMemo((): Intl.NumberFormatOptions => {\n const options: Intl.NumberFormatOptions = {};\n\n if (typeof precision === 'number' && precision >= 0 && showTrailingZeros) {\n options.minimumFractionDigits = precision;\n options.maximumFractionDigits = precision;\n } else {\n options.maximumFractionDigits = precision;\n }\n\n return options;\n }, [precision, showTrailingZeros]);\n\n const formatNumber = useCallback(\n (num: number): string => {\n let processedNum = num;\n\n // Áp dụng làm tròn nếu có precision\n if (typeof precision === 'number' && precision >= 0) {\n processedNum = applyRounding(num, precision, roundingMode);\n }\n\n return processedNum.toLocaleString('en-US', formatOptions);\n },\n [roundingMode, formatOptions, precision]\n );\n\n // Memoize value processing\n const processedValue = useMemo((): string => {\n // Xử lý giá trị number\n if (typeof value === 'number') {\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n return 'N/A';\n }\n return formatNumber(value);\n }\n\n // Xử lý giá trị string\n if (typeof value === 'string') {\n const trimmedValue = value.trim();\n\n // Nếu là chuỗi rỗng\n if (!trimmedValue) {\n return 'N/A';\n }\n\n // Thử convert sang number\n const numValue = Number(trimmedValue);\n\n if (Number.isNaN(numValue) || !Number.isFinite(numValue)) {\n // Nếu không phải số, trả về string gốc\n return 'N/A';\n }\n\n return formatNumber(numValue);\n }\n\n return 'N/A';\n }, [value, formatNumber]);\n\n // Memoize separator replacement\n const finalFormattedValue = useMemo((): string => {\n // Chỉ thay thế separators nếu khác mặc định\n if (decimalSeparator === '.' && groupSeparator === ',') {\n return processedValue;\n }\n return processedValue.replace(/,/g, groupSeparator).replace(/\\./g, decimalSeparator);\n }, [processedValue, decimalSeparator, groupSeparator]);\n\n if (finalFormattedValue === '0' || finalFormattedValue === 'N/A' || !finalFormattedValue) {\n return <DescriptionEmpty />;\n }\n\n return (\n <Flex\n padding=\"none\"\n className={cn(\n 'font-number text-lg text-text-positive tabular-nums',\n size === 'xs' && 'text-xs',\n size === 'sm' && 'text-sm',\n size === 'md' && 'text-base',\n size === 'lg' && 'text-lg',\n size === 'xl' && 'text-xl'\n )}\n >\n {Prefix}\n <p>{finalFormattedValue}</p>\n {Suffix}\n </Flex>\n );\n }\n);\nDescriptionStatistic.displayName = 'DescriptionStatistic';\n","import { cn } from '@customafk/react-toolkit/utils';\n\nexport * from './components';\n\nexport const DescriptionItem: React.FC<\n React.PropsWithChildren<{\n label: string;\n labelColSpan?: number;\n }>\n> = ({ label, labelColSpan = 3, children }) => {\n return (\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(12, minmax(0, 1fr))',\n }}\n className=\"grid border-b border-b-border\"\n >\n <div\n style={{\n gridColumn: `span ${labelColSpan} / span ${labelColSpan}`,\n }}\n className=\"flex min-w-full items-center justify-start overflow-x-hidden text-wrap break-all border-r border-r-border bg-secondary-muted py-3 pr-2 pl-4 text-sm text-text-positive-weak tabular-nums\"\n >\n {label}\n </div>\n <div\n style={{\n gridColumn: `span ${12 - labelColSpan} / span ${12 - labelColSpan}`,\n }}\n className=\"flex flex-wrap gap-2 py-3 pr-2 pl-4 text-sm text-text-positive\"\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport const Description: React.FC<\n React.PropsWithChildren<{\n className?: string;\n }>\n> = ({ children, className }) => {\n return (\n <div\n data-slot=\"description-wrapper\"\n className={cn(\n 'relative flex size-full flex-col gap-y-0 space-y-0 overflow-hidden rounded-lg border border-border bg-card shadow-xs ring-3 ring-border-muted',\n className\n )}\n >\n {children}\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime130 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/features/search-modal/index.d.ts
|
|
4
|
-
declare const SearchModal: () =>
|
|
4
|
+
declare const SearchModal: () => react_jsx_runtime130.JSX.Element;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { SearchModal };
|
|
7
7
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime130 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/features/search-modal/index.d.ts
|
|
4
|
-
declare const SearchModal: () =>
|
|
4
|
+
declare const SearchModal: () => react_jsx_runtime130.JSX.Element;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { SearchModal };
|
|
7
7
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../../chunk-Bmb41Sf3.cjs`);require(`../../button.variants-Bo2vzQp5.cjs`);const t=require(`../../button-BLYTfCyl.cjs`),n=require(`../../flex-DGPQRbN6.cjs`),r=require(`../../paragraph-B9_-MKH8.cjs`),i=require(`../../date-CuRT4hmU.cjs`),a=require(`../../badge-CsDmp3ys.cjs`),o=require(`../../tooltip-DMFoP_sB.cjs`),s=require(`../../avatar-dAu1c0bC.cjs`),c=require(`../../separator-DSZyCT2g.cjs`),l=require(`../../dropdown-menu-5Zyw5t_J.cjs`),u=require(`../../checkbox-DDuYFG0R.cjs`),d=require(`../../resizable-BS63Xwia.cjs`),f=require(`../../input-qnlHzDDm.cjs`);let p=require(`@customafk/react-toolkit/utils`),m=require(`react/jsx-runtime`),h=require(`lucide-react`),g=require(`react`),_=require(`@customafk/react-toolkit/color-hash`),v=require(`@tanstack/react-table`),y=require(`@tanstack/react-virtual`);const b=()=>(0,m.jsxs)(`div`,{className:`flex gap-0 text-text-positive-weak`,children:[(0,m.jsx)(h.MinusIcon,{size:16}),(0,m.jsx)(h.MinusIcon,{size:16})]}),x=({label:e,onClick:t,onRemove:n})=>e?n?(0,m.jsxs)(`div`,{className:`flex w-fit gap-x-0.5 rounded-full border border-border py-1 pr-2 pl-3 text-text-positive text-xs shadow-xs`,onClick:e=>{t?.(),e.stopPropagation(),e.preventDefault()},children:[e,(0,m.jsx)(`button`,{className:`cursor-pointer text-text-positive-weak hover:text-text-positive-strong`,onClick:e=>{n?.(),e.stopPropagation(),e.preventDefault()},children:(0,m.jsx)(h.XIcon,{size:12})})]}):(0,m.jsx)(`button`,{className:`w-fit rounded-full border border-border px-3 py-1 text-text-positive text-xs shadow-xs`,onClick:e=>{t?.(),e.stopPropagation(),e.preventDefault()},children:e}):(0,m.jsx)(b,{}),S=({value:e})=>e==null?(0,m.jsx)(b,{}):e===!1?(0,m.jsx)(`div`,{className:`text-danger-strong`,children:(0,m.jsx)(h.XIcon,{})}):(0,m.jsx)(`div`,{className:`text-success-strong`,children:(0,m.jsx)(h.CheckIcon,{})}),C=({date:e})=>e==null?(0,m.jsx)(b,{}):(0,m.jsx)(o.r,{children:(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{asChild:!0,children:(0,m.jsx)(a.t,{className:`h-fit`,children:(0,m.jsx)(i.t,{date:e,format:`medium`,className:`font-normal text-white`})})}),(0,m.jsx)(o.n,{className:`rounded`,children:(0,m.jsx)(i.t,{date:e,format:`full`,showTime:!0,className:`font-medium text-text-negative text-xs`})})]})}),w=({content:e})=>e==null?(0,m.jsx)(b,{}):(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{asChild:!0,children:(0,m.jsx)(`div`,{className:`line-clamp-2 whitespace-pre-line break-all text-start text-[13px] text-text-positive-weak`,children:e})}),(0,m.jsx)(o.n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,m.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,m.jsx)(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:e}),(0,m.jsxs)(`p`,{className:`w-full text-end`,children:[e.toString().length,` chars`]})]})})]}),T=({items:e=[]})=>(0,m.jsxs)(l.t,{children:[(0,m.jsx)(l.h,{asChild:!0,children:(0,m.jsx)(t.t,{size:`sm`,variant:`ghost`,color:`secondary`,className:`size-9 rounded-full`,children:(0,m.jsx)(h.MoreVerticalIcon,{})})}),(0,m.jsx)(l.r,{children:(0,m.jsx)(l.i,{children:e.map(e=>(0,m.jsx)(l.a,{className:`px-3`,onSelect:()=>e.onClick(e.id),children:e.label},e.id))})})]}),E=({name:e})=>e?(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{children:(0,m.jsx)(r.t,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start text-sm`,children:e})}),(0,m.jsx)(o.n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,m.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,m.jsx)(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:e}),(0,m.jsxs)(`p`,{className:`w-full text-end`,children:[e.length,` chars`]})]})})]}):(0,m.jsx)(b,{}),D=({href:e,label:t})=>(0,m.jsxs)(`a`,{href:e,target:`_blank`,className:`inline-flex items-center gap-1 truncate text-primary text-sm underline`,rel:`noopener noreferrer`,children:[(0,m.jsx)(`span`,{children:t||e}),(0,m.jsx)(h.ExternalLinkIcon,{size:14})]}),O=({value:e})=>(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{asChild:!0,children:(0,m.jsx)(`p`,{className:`font-number text-secondary-foreground text-sm tabular-nums`,children:e.replace(/(\d{3})(\d{3})(\d{4})/,`($1) $2-$3`)})}),(0,m.jsx)(o.n,{align:`start`,children:(0,m.jsx)(`p`,{className:`tabular-nums`,children:e.slice(1).replace(/(\d{2})(\d{3})(\d{4})/,`(00) (+84) ($1) $2-$3`)})})]}),k=({title:e,onClick:n})=>(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{children:(0,m.jsx)(t.t,{type:`button`,variant:`ghost`,color:`danger`,size:`icon`,onClick:(0,g.useCallback)(async e=>{e.preventDefault(),e.stopPropagation(),await n?.()},[n]),children:(0,m.jsx)(h.Trash2Icon,{})})}),(0,m.jsx)(o.n,{children:(0,m.jsx)(`p`,{children:e||`Remove item from list table`})})]}),A=(e,t,n)=>{let r=10**t;switch(n){case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:return Math.round(e*r)/r}},j=(0,g.memo)(({decimalSeparator:e=`.`,groupSeparator:t=`,`,prefix:r,suffix:i,precision:a,roundingMode:o=`round`,showTrailingZeros:s=!1,size:c=`lg`,value:l=0})=>{let u=(0,g.useMemo)(()=>{let e={};return typeof a==`number`&&a>=0&&s&&(e.minimumFractionDigits=a),e.maximumFractionDigits=a,e},[a,s]),d=(0,g.useCallback)(e=>{let t=e;return typeof a==`number`&&a>=0&&(t=A(e,a,o)),t.toLocaleString(`en-US`,u)},[o,u,a]),f=(0,g.useMemo)(()=>{if(typeof l==`number`)return Number.isNaN(l)||!Number.isFinite(l)?`N/A`:d(l);if(typeof l==`string`){let e=l.trim();if(!e)return`N/A`;let t=Number(e);return Number.isNaN(t)||!Number.isFinite(t)?`N/A`:d(t)}return`N/A`},[l,d]),h=(0,g.useMemo)(()=>e===`.`&&t===`,`?f:f.replace(/,/g,t).replace(/\./g,e),[f,e,t]);return h===`0`||h===`N/A`||!h?(0,m.jsx)(b,{}):(0,m.jsxs)(n.t,{padding:`none`,className:(0,p.cn)(`font-number text-lg text-secondary-foreground tabular-nums`,c===`xs`&&`text-xs`,c===`sm`&&`text-sm`,c===`md`&&`text-base`,c===`lg`&&`text-lg`,c===`xl`&&`text-xl`),children:[r,(0,m.jsx)(`p`,{children:h}),i]})});j.displayName=`UITableStatisticDisplay`;const ee=({uuid:e,username:t,email:i})=>(0,m.jsxs)(n.t,{wrap:!1,gap:`sm`,padding:`none`,children:[!e&&(0,m.jsx)(s.t,{className:`size-10 shadow-card`,children:(0,m.jsx)(s.n,{className:`bg-muted-weak`,children:(0,m.jsx)(h.UserRoundIcon,{size:28,className:`text-text-negative`})})}),e&&(0,m.jsx)(s.t,{className:`size-10 shadow-card`,children:(0,m.jsx)(s.n,{style:{backgroundColor:_.colorHashLight.hex(e)},children:(0,m.jsx)(h.UserRoundIcon,{size:28,className:`text-white`})})}),(0,m.jsxs)(n.t,{vertical:!0,padding:`none`,gap:`none`,align:`start`,children:[(0,m.jsx)(r.t,{className:`font-medium text-sm text-text-positive-weak`,children:t??`Unknown User`}),(0,m.jsx)(r.t,{variant:`sm`,className:`mt-0! text-text-positive-weak text-xs`,children:i})]})]}),M=(0,g.createContext)(null),N=()=>{let e=(0,g.use)(M);if(!e)throw Error(`useUITableClickRowContext must be used within a TableClickRowProvider`);return e},P=(0,g.createContext)(null),F=()=>{let e=(0,g.use)(P);if(!e)throw Error(`useTableContext must be used within a TableProvider`);return e},te=60,ne=20,re=20,I=e=>{let t=e.getIsPinned();return{zIndex:t?20:void 0,left:t===`left`?`${e.getStart(`left`)}px`:void 0,right:t===`right`?`${e.getAfter(`right`)}px`:void 0}},L=({className:e,children:t,...n})=>(0,m.jsx)(`div`,{"data-slot":`table-wrapper`,className:`relative m-0 flex size-full flex-col flex-nowrap items-start justify-start gap-2 py-2.5 text-sm`,...n,children:t}),R=(0,g.memo)(({children:e})=>(0,m.jsx)(`thead`,{"data-slot":`table-header`,style:{zIndex:20},className:(0,p.cn)(`sticky top-0 grid bg-muted-bg-subtle text-[13px] text-text-positive-weak`,`[&_tr:not(:last-child)_td]:border-b`,`[&_th]:flex`,`[&_th]:h-9`,`[&_th]:select-none`,`[&_th]:items-center`,`[&_th]:whitespace-nowrap`,`[&_th]:border-border`,`[&_th]:font-medium`,`[&_th]:text-left`,`[&_th]:align-middle`,`[&_th]:last:border-r-0`,`[&_th]:first:border-l-0`,`[&_th]:data-[pinned=right]:border-l`,`[&_th]:data-[pinned=right]:border-r-0`,`[&_th]:data-[pinned=left]:border-r`,`[&_tr_th:not([data-pinned=false])]:bg-muted-bg-subtle`),children:e}));R.displayName=`TableHeader`;const z=(0,g.memo)(({children:e})=>(0,m.jsx)(`tr`,{"data-slot":`table-header-row`,className:`flex w-full border-border border-b shadow`,children:e}));z.displayName=`TableHeaderRow`;const B=({header:e,isPinned:t,isResizing:n,isAllRowsSelected:r,children:i,...a})=>{let o=I(e.column),s=`calc(var(--header-${e.id}-size) * 1px)`;return e.id===`select`?(0,m.jsx)(`th`,{"data-slot":`table-header-cell`,style:{...o,width:60},className:(0,p.cn)(t?`sticky`:`relative`),...a,children:(0,m.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:(0,m.jsx)(u.t,{"aria-label":`Select All Rows`,checked:r,onCheckedChange:t=>{e.getContext().table.toggleAllRowsSelected(!!t)}})})}):(0,m.jsxs)(`th`,{"data-slot":`table-header-cell`,"data-pinned":t,style:{...o,width:s},colSpan:e.colSpan,className:(0,p.cn)(`group relative`,t?`sticky`:`relative`),...a,children:[(0,m.jsx)(`div`,{className:`absolute inset-0 gap-1 truncate`,children:(0,m.jsx)(`div`,{className:`flex h-full flex-1 cursor-pointer select-none items-center justify-between`,children:(0,m.jsx)(`div`,{className:`flex size-full flex-1 items-center truncate pl-4`,children:(0,v.flexRender)(e.column.columnDef.header,e.getContext())})})}),![`select`,`actions`].includes(e.id)&&(0,m.jsx)(V,{isPinned:t,isVisible:e.column.getIsVisible(),className:`invisible absolute right-2 z-10 group-hover:visible`,onLeftPin:e.column.pin,onRightPin:e.column.pin,onUnpin:e.column.pin,onToggleVisibilityHandler:e.column.toggleVisibility}),(0,m.jsx)(g.Activity,{mode:t?`hidden`:`visible`,children:(0,m.jsx)(`div`,{onDoubleClick:e.column.resetSize,onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),className:(0,p.cn)(`absolute inset-y-0 -right-0.5 w-1 cursor-e-resize bg-transparent hover:bg-border`,n&&`bg-border`)})})]})},V=({isPinned:e,className:t,onLeftPin:n,onRightPin:r,onUnpin:i,onToggleVisibilityHandler:a})=>{let o=(0,g.useCallback)(()=>{n(`left`)},[n]),s=(0,g.useCallback)(()=>{r(`right`)},[r]),c=(0,g.useCallback)(()=>{i(!1)},[i]);return(0,m.jsxs)(l.t,{children:[(0,m.jsx)(l.h,{asChild:!0,children:(0,m.jsx)(`button`,{className:(0,p.cn)(`cursor-pointer rounded-full p-0.5 text-text-positive-weak hover:bg-muted-muted hover:text-text-positive [&>svg]:size-4`,t),children:(0,m.jsx)(h.EllipsisVerticalIcon,{})})}),(0,m.jsxs)(l.r,{align:`end`,className:`w-64 p-4`,children:[(0,m.jsxs)(l.i,{className:`*:data-[slot=dropdown-menu-item]:rounded-xs *:data-[slot=dropdown-menu-item]:p-2`,children:[(0,m.jsx)(g.Activity,{mode:e?`visible`:`hidden`,children:(0,m.jsxs)(l.a,{onClick:c,children:[!!e&&`Unpin`,(0,m.jsx)(l.d,{children:(0,m.jsx)(h.PinOffIcon,{className:`size-4`})})]})}),(0,m.jsxs)(g.Activity,{mode:e?`hidden`:`visible`,children:[(0,m.jsxs)(l.a,{onClick:o,children:[e?`Unpin`:`Pin to Left`,(0,m.jsx)(l.d,{children:(0,m.jsx)(h.MoveLeftIcon,{className:`size-4`})})]}),(0,m.jsxs)(l.a,{onClick:s,children:[e?`Unpin`:`Pin to Right`,(0,m.jsx)(l.d,{children:(0,m.jsx)(h.MoveRightIcon,{className:`size-4`})})]})]})]}),(0,m.jsx)(l.u,{}),(0,m.jsx)(l.i,{className:`*:data-[slot=dropdown-menu-item]:rounded-xs *:data-[slot=dropdown-menu-item]:p-2`,children:(0,m.jsxs)(l.a,{onClick:()=>a(!1),children:[`Hide Field`,(0,m.jsx)(l.d,{children:(0,m.jsx)(h.EyeOffIcon,{className:`size-4`})})]})})]})]})},H=({height:e,children:t,...n})=>(0,m.jsx)(`tbody`,{"data-slot":`table-body`,style:{height:`${e}px`},className:(0,p.cn)(`relative grid w-full bg-card`,`[&_tr]:absolute [&_tr]:flex [&_tr]:w-full [&_tr]:cursor-pointer [&_tr]:border-b [&_tr]:border-b-border [&_tr]:focus:outline-none`,`[&_td]:z-10`,`[&_td]:flex`,`[&_td]:overflow-hidden`,`[&_td]:whitespace-nowrap`,`[&_td]:px-4`,`[&_td]:py-2.5`,`[&_td]:align-middle`,`[&_td]:border-border`,`[&_td]:data-[pinned=right]:border-l`,`[&_td]:data-[pinned=left]:border-r`,`[&_td:not([data-pinned=false])]:bg-card`,`[&_td:not([data-pinned=false])]:shadow-xs`),...n,children:t}),U=(0,g.memo)(({children:e,keyOfClickRow:t,row:n,virtualRow:r,rowVirtualizer:i,onClickRow:a,className:o,...s})=>{let{columnPinning:c}=F(),l=(0,g.useCallback)(e=>{let i=t?n.original?.[t]:void 0;typeof i==`string`||typeof i==`number`?a?.(r.index,i):a?.(r.index),e.preventDefault(),e.stopPropagation()},[t,a,n.original,r.index]);return(0,m.jsx)(`tr`,{"data-slot":`table-row`,"data-index":r.index,ref:e=>i.measureElement(e),style:{transform:`translateY(${r.start}px)`},className:(0,p.cn)(`group`,o),onClick:l,...s,children:n.getVisibleCells().map(e=>(0,m.jsx)(W,{cell:e,className:`group-hover:bg-muted-bg-subtle!`},e.id))})});U.displayName=`TableRow`;const W=(0,g.memo)(({cell:e,children:t,className:n,...r})=>{let{rowSelection:i}=F(),a=e.column.getIsPinned(),o=I(e.column),s=`calc(var(--col-${e.column.id}-size) * 1px)`,c=e.column.columnDef.meta?.position??`start`;return e.column.id===`select`?(0,m.jsx)(`td`,{"data-slot":`table-cell`,style:{...o,width:60},className:(0,p.cn)(`border-none! bg-transparent! shadow-none!`,a?`sticky`:`relative`,n),...r,children:(0,m.jsx)(`div`,{"data-slot":`table-cell-inner`,className:`inline-flex w-full items-center justify-center bg-transparent text-center align-middle`,children:(0,m.jsx)(u.t,{"aria-label":`Select Row`,checked:e.row.getIsSelected(),onCheckedChange:t=>{e.row.toggleSelected(!!t)}})})}):(0,m.jsx)(`td`,{"data-slot":`table-cell`,"data-pinned":a,style:{...o,width:s},className:(0,p.cn)(a&&e.column.getPinnedIndex()===0&&`shadow!`,a&&`sticky`,!a&&`relative`,n),...r,children:(0,m.jsx)(`div`,{"data-slot":`table-cell-inner`,className:(0,p.cn)(`inline-flex w-full items-center bg-transparent text-center align-middle`,c===`start`&&`justify-start`,c===`center`&&`justify-center`,c===`end`&&`justify-end`),children:(0,v.flexRender)(e.column.columnDef.cell,e.getContext())})})});W.displayName=`TableCell`;const G=(0,g.memo)(()=>(0,m.jsx)(`div`,{className:`sticky left-0 flex min-h-96 flex-1 items-center justify-center bg-transparent text-text-positive-weak opacity-100`,children:(0,m.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,m.jsx)(h.BoxIcon,{strokeWidth:1,size:48}),(0,m.jsx)(`p`,{children:`No data available`})]})}));G.displayName=`EmptyDisplay`;const K=(0,g.memo)(()=>(0,m.jsx)(`div`,{className:`absolute top-0 z-30 flex size-full items-center justify-center bg-black/10`,children:(0,m.jsx)(h.LoaderIcon,{className:`animate-spin text-text-positive`})}));K.displayName=`RefetchingDisplay`;const q=({children:e})=>(0,m.jsx)(`tfoot`,{"data-slot":`table-footer`,className:`flex w-full justify-center border-border-weak border-t py-2 font-medium [&>tr]:last:border-b-0`,children:e}),J=({children:e})=>{let{table:t,isEmpty:n,isRefetching:r,isFetching:i,data:a,totalRows:o,fetchMoreData:s}=F(),{keyOfClickRow:c,onClickRow:l}=N(),u=(0,g.useRef)(null),f=(0,g.useMemo)(()=>{let e=t.getFlatHeaders(),n={};return e.forEach(e=>{n[`--header-${e.id}-size`]=e.getSize()||0,n[`--col-${e.column.id}-size`]=e.column.getSize()||0}),n},[t.getState().columnSizingInfo,t.getState().columnSizing]),h=(0,g.useCallback)(async e=>{if(!e)return null;let{scrollHeight:t,scrollTop:n,clientHeight:r}=e;t-n-r<500&&!i&&o&&a.length<o&&s?.()},[i,a.length,o,s]);(0,g.useEffect)(()=>{h(u.current)},[h]);let{rows:_}=t.getRowModel(),v=(0,y.useVirtualizer)({count:_.length,estimateSize:()=>40,getScrollElement:()=>u.current,measureElement:typeof window<`u`&&navigator.userAgent.indexOf(`Firefox`)===-1?e=>e?.getBoundingClientRect().height:void 0,overscan:2});return(0,m.jsxs)(d.r,{direction:`horizontal`,style:{direction:t.options.columnResizeDirection},className:(0,p.cn)(`relative flex w-full max-w-full flex-1 gap-1 overflow-auto border-t border-t-border bg-slate-50 p-0 text-sm`,!e&&`border-r border-r-border`),children:[(0,m.jsxs)(d.n,{className:`relative overflow-auto`,children:[(0,m.jsxs)(`div`,{ref:u,className:`relative size-full overflow-auto border-b border-b-border border-l border-l-border`,onScroll:e=>h(e.currentTarget),children:[(0,m.jsxs)(`table`,{"data-slot":`table`,style:{...f,width:t.getTotalSize()},className:`grid w-full max-w-full caption-bottom border-collapse border-spacing-0 flex-col content-start bg-card text-sm tabular-nums [&_tfoot_td]:border-t`,children:[(0,m.jsx)(R,{children:t.getHeaderGroups().map(e=>(0,m.jsx)(z,{children:e.headers.map(e=>(0,m.jsx)(B,{header:e,isPinned:e.column.getIsPinned(),isResizing:e.column.getIsResizing(),isAllRowsSelected:t.getIsAllRowsSelected()},e.id))},e.id))}),(0,m.jsx)(H,{"data-slot":`table-body`,height:v.getTotalSize(),children:v.getVirtualItems().map(e=>{let t=_[e.index];return(0,m.jsx)(U,{"data-index":e.index,keyOfClickRow:c,row:t,virtualRow:e,rowVirtualizer:v,onClickRow:l},t.id)})})]}),n&&(0,m.jsx)(G,{})]}),r&&(0,m.jsx)(K,{})]}),!!e&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(d.t,{}),e]})]})},Y=({checked:e,title:t,onCheckedChange:n})=>(0,m.jsxs)(`div`,{className:`flex h-fit items-center gap-2`,children:[(0,m.jsx)(u.t,{checked:e,onCheckedChange:n}),(0,m.jsx)(`p`,{className:`text-sm`,children:t})]}),X=()=>{let{table:e}=F(),[n,r]=(0,g.useState)(null);return(0,m.jsx)(d.n,{defaultSize:25,className:(0,p.cn)(`bg-card`,n===null?`max-w-8!`:`min-w-64`),children:(0,m.jsxs)(`div`,{className:`relative z-20 flex size-full bg-muted-bg-subtle`,children:[(0,m.jsxs)(`div`,{className:`flex-1`,children:[(0,m.jsx)(g.Activity,{mode:n===`columns`?`visible`:`hidden`,children:(0,m.jsxs)(`div`,{className:`flex size-full flex-col gap-2 p-4`,children:[(0,m.jsx)(`p`,{className:`px-2 font-medium`,children:`Columns Visibility`}),(0,m.jsx)(c.t,{}),(0,m.jsx)(`div`,{className:`flex flex-col gap-4 pt-4`,children:e.getAllColumns().map(e=>[`select`,`actions`].includes(e.id)?null:(0,m.jsx)(Y,{checked:e.getIsVisible(),title:String(e.columnDef.header),onCheckedChange:t=>e.toggleVisibility(!!t)},e.id))})]})}),(0,m.jsx)(g.Activity,{mode:n===`filters`?`visible`:`hidden`,children:(0,m.jsx)(`div`,{className:`flex size-full flex-col p-2`,children:(0,m.jsxs)(t.t,{variant:`outline`,color:`muted`,children:[(0,m.jsx)(h.ListFilterPlus,{}),`Add Filter`]})})})]}),(0,m.jsxs)(`div`,{className:`flex h-full flex-col border-border border-l bg-muted-bg-subtle text-sm`,children:[(0,m.jsxs)(`button`,{className:(0,p.cn)(`flex h-32 cursor-pointer flex-col items-center gap-y-2 p-2 py-4`,n===`columns`&&`bg-card`),onClick:()=>r(n===`columns`?null:`columns`),children:[(0,m.jsx)(h.Columns4Icon,{size:18}),(0,m.jsx)(`span`,{className:`text-nowrap [writing-mode:vertical-lr]`,children:`Columns`})]}),(0,m.jsx)(c.t,{}),(0,m.jsxs)(`button`,{className:(0,p.cn)(`flex h-32 cursor-pointer flex-col items-center gap-y-2 p-2 py-4`,n===`filters`&&`bg-card`),onClick:()=>r(n===`filters`?null:`filters`),children:[(0,m.jsx)(h.ListFilterIcon,{size:18}),(0,m.jsx)(`span`,{className:`text-nowrap [writing-mode:vertical-lr]`,children:`Filters`})]}),(0,m.jsx)(c.t,{})]})]})})},Z=({title:e,isFetching:t=!1,isRefetching:n=!1,data:r,columns:i,totalRows:a,leftPinnedColumns:o,rightPinnedColumns:s,keyOfClickRow:c,onClickRow:l,fetchMoreData:u,children:d})=>{let[f,p]=(0,g.useState)({}),[h,_]=(0,g.useState)({right:s,left:o}),[y,b]=(0,g.useState)({}),x=(0,v.useReactTable)({data:r,columns:i,state:{rowSelection:f,columnPinning:h,columnVisibility:y},defaultColumn:{minSize:40,size:150,maxSize:800},columnResizeMode:`onChange`,columnResizeDirection:`ltr`,enableColumnPinning:!0,enableRowSelection:!0,enableColumnResizing:!0,enableMultiRowSelection:!0,getCoreRowModel:(0,v.getCoreRowModel)(),onRowSelectionChange:p,onColumnPinningChange:_,onColumnVisibilityChange:b}),S=(0,g.useMemo)(()=>{let{rows:e}=x.getRowModel();return e},[x.getRowModel().rows,x.getState().columnPinning]),C=(0,g.useMemo)(()=>!t&&S.length===0,[S,t]),w=(0,g.useMemo)(()=>({title:e,table:x,data:r,isEmpty:C,isFetching:t,isRefetching:n,totalRows:a,fetchMoreData:u,rowSelection:x.getState().rowSelection,columnPinning:x.getState().columnPinning}),[e,x,r,C,n,t,a,u,x.getState().columnVisibility,x.getState().rowSelection,x.getState().columnPinning]),T=(0,g.useMemo)(()=>({keyOfClickRow:c,onClickRow:l}),[c,l]);return(0,m.jsx)(P.Provider,{value:w,children:(0,m.jsx)(M.Provider,{value:T,children:d})})},ie=({className:e,...t})=>(0,m.jsxs)(`div`,{className:`relative`,children:[(0,m.jsx)(f.t,{...t,size:`lg`,type:`search`,placeholder:`Search records...`,className:`ps-9 pe-9`}),(0,m.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-3 text-text-positive-weak peer-disabled:opacity-50`,children:(0,m.jsx)(h.SearchIcon,{size:16})}),(0,m.jsx)(`button`,{className:`absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-md text-text-positive-weak outline-none transition-[color,box-shadow] hover:text-text-positive focus:z-10 focus-visible:border focus-visible:border-primary-strong focus-visible:ring-[3px] focus-visible:ring-primary-weak disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,"aria-label":`Submit search`,type:`submit`,children:(0,m.jsx)(h.ArrowRightIcon,{size:16,"aria-hidden":`true`})})]}),Q=({children:e,onClick:t})=>(0,m.jsx)(`button`,{type:`button`,className:`flex cursor-pointer items-center gap-x-1 rounded-sm border border-border bg-background p-2.5 text-sm text-text-positive-weak outline-none transition-all hover:shadow-card focus:border-border-emphasis focus:bg-muted-muted active:border-border-emphasis active:bg-muted-muted active:text-text-positive [&_svg]:size-3.5`,onClick:t,children:e}),ae=({onCreate:e,onDownload:t,onRefresh:n})=>(0,m.jsxs)(`div`,{className:`flex [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none`,children:[(0,m.jsx)(Q,{onClick:t=>{e?.(),t.stopPropagation(),t.preventDefault()},children:(0,m.jsx)(h.CirclePlus,{})}),(0,m.jsx)(Q,{onClick:e=>{n?.(),e.stopPropagation(),e.preventDefault()},children:(0,m.jsx)(h.RefreshCwIcon,{})}),(0,m.jsx)(Q,{onClick:e=>{t?.(),e.stopPropagation(),e.preventDefault()},children:(0,m.jsx)(h.DownloadIcon,{})})]}),$=({children:e})=>{let{title:t}=F();return(0,m.jsxs)(`div`,{"data-slot":`table-tooltip`,className:`relative m-0 flex w-full flex-0 flex-col flex-wrap items-start space-y-2 p-0 px-2 text-sm`,children:[(0,m.jsx)(`h3`,{className:`font-semibold text-base text-text-positive`,children:t}),(0,m.jsx)(`div`,{className:`flex w-full flex-1 justify-between`,children:e})]})};$.displayName=`TableTooltip`,exports.UITableBadgeDisplay=x,exports.UITableBooleanDisplay=S,exports.UITableContainer=J,exports.UITableDateDisplay=C,exports.UITableDescriptionDisplay=w,exports.UITableFilter=X,exports.UITableFooter=q,exports.UITableMoreButton=T,exports.UITableNameDisplay=E,exports.UITablePermalink=D,exports.UITablePhoneNumberDisplay=O,exports.UITableProvider=Z,exports.UITableRemoveButton=k,exports.UITableStatisticDisplay=j,exports.UITableTooltip=$,exports.UITableTooltipActions=ae,exports.UITableTooltipFilter=ie,exports.UITableUserDataDisplay=ee,exports.UITableWrapper=L;
|
|
1
|
+
const e=require(`../../chunk-Bmb41Sf3.cjs`);require(`../../button.variants-Bo2vzQp5.cjs`);const t=require(`../../button-BLYTfCyl.cjs`),n=require(`../../flex-DGPQRbN6.cjs`),r=require(`../../paragraph-B9_-MKH8.cjs`),i=require(`../../date-CuRT4hmU.cjs`),a=require(`../../badge-CsDmp3ys.cjs`),o=require(`../../tooltip-DMFoP_sB.cjs`),s=require(`../../avatar-dAu1c0bC.cjs`),c=require(`../../separator-DSZyCT2g.cjs`),l=require(`../../dropdown-menu-5Zyw5t_J.cjs`),u=require(`../../checkbox-DDuYFG0R.cjs`),d=require(`../../resizable-BS63Xwia.cjs`),f=require(`../../input-dAoEznUI.cjs`);let p=require(`@customafk/react-toolkit/utils`),m=require(`react/jsx-runtime`),h=require(`lucide-react`),g=require(`react`),_=require(`@customafk/react-toolkit/color-hash`),v=require(`@tanstack/react-table`),y=require(`@tanstack/react-virtual`),b=require(`@customafk/react-toolkit/hooks/useDebounceCallback`);const x=()=>(0,m.jsxs)(`div`,{className:`flex gap-0 text-text-positive-weak`,children:[(0,m.jsx)(h.MinusIcon,{size:16}),(0,m.jsx)(h.MinusIcon,{size:16})]}),S=({label:e,onClick:t,onRemove:n})=>e?n?(0,m.jsxs)(`div`,{className:`flex w-fit gap-x-0.5 rounded-full border border-border py-1 pr-2 pl-3 text-text-positive text-xs shadow-xs`,onClick:e=>{t?.(),e.stopPropagation(),e.preventDefault()},children:[e,(0,m.jsx)(`button`,{className:`cursor-pointer text-text-positive-weak hover:text-text-positive-strong`,onClick:e=>{n?.(),e.stopPropagation(),e.preventDefault()},children:(0,m.jsx)(h.XIcon,{size:12})})]}):(0,m.jsx)(`button`,{className:`w-fit rounded-full border border-border px-3 py-1 text-text-positive text-xs shadow-xs`,onClick:e=>{t?.(),e.stopPropagation(),e.preventDefault()},children:e}):(0,m.jsx)(x,{}),C=({value:e})=>e==null?(0,m.jsx)(x,{}):e===!1?(0,m.jsx)(`div`,{className:`text-danger-strong`,children:(0,m.jsx)(h.XIcon,{})}):(0,m.jsx)(`div`,{className:`text-success-strong`,children:(0,m.jsx)(h.CheckIcon,{})}),w=({date:e})=>e==null?(0,m.jsx)(x,{}):(0,m.jsx)(o.r,{children:(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{asChild:!0,children:(0,m.jsx)(a.t,{className:`h-fit`,children:(0,m.jsx)(i.t,{date:e,format:`medium`,className:`font-normal text-white`})})}),(0,m.jsx)(o.n,{className:`rounded`,children:(0,m.jsx)(i.t,{date:e,format:`full`,showTime:!0,className:`font-medium text-text-negative text-xs`})})]})}),T=({content:e})=>e==null?(0,m.jsx)(x,{}):(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{asChild:!0,children:(0,m.jsx)(`div`,{className:`line-clamp-2 whitespace-pre-line break-all text-start text-[13px] text-text-positive-weak`,children:e})}),(0,m.jsx)(o.n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,m.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,m.jsx)(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:e}),(0,m.jsxs)(`p`,{className:`w-full text-end`,children:[e.toString().length,` chars`]})]})})]}),E=({items:e=[]})=>(0,m.jsxs)(l.t,{children:[(0,m.jsx)(l.h,{asChild:!0,children:(0,m.jsx)(t.t,{size:`sm`,variant:`ghost`,color:`secondary`,className:`size-9 rounded-full`,children:(0,m.jsx)(h.MoreVerticalIcon,{})})}),(0,m.jsx)(l.r,{children:(0,m.jsx)(l.i,{children:e.map(e=>(0,m.jsx)(l.a,{className:`px-3`,onSelect:()=>e.onClick(e.id),children:e.label},e.id))})})]}),D=({name:e})=>e?(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{children:(0,m.jsx)(r.t,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start text-sm`,children:e})}),(0,m.jsx)(o.n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,m.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,m.jsx)(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:e}),(0,m.jsxs)(`p`,{className:`w-full text-end`,children:[e.length,` chars`]})]})})]}):(0,m.jsx)(x,{}),O=({href:e,label:t})=>(0,m.jsxs)(`a`,{href:e,target:`_blank`,className:`inline-flex items-center gap-1 truncate text-primary text-sm underline`,rel:`noopener noreferrer`,children:[(0,m.jsx)(`span`,{children:t||e}),(0,m.jsx)(h.ExternalLinkIcon,{size:14})]}),k=({value:e})=>(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{asChild:!0,children:(0,m.jsx)(`p`,{className:`font-number text-secondary-foreground text-sm tabular-nums`,children:e.replace(/(\d{3})(\d{3})(\d{4})/,`($1) $2-$3`)})}),(0,m.jsx)(o.n,{align:`start`,children:(0,m.jsx)(`p`,{className:`tabular-nums`,children:e.slice(1).replace(/(\d{2})(\d{3})(\d{4})/,`(00) (+84) ($1) $2-$3`)})})]}),A=({title:e,onClick:n})=>(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{children:(0,m.jsx)(t.t,{type:`button`,variant:`ghost`,color:`danger`,size:`icon`,onClick:(0,g.useCallback)(async e=>{e.preventDefault(),e.stopPropagation(),await n?.()},[n]),children:(0,m.jsx)(h.Trash2Icon,{})})}),(0,m.jsx)(o.n,{children:(0,m.jsx)(`p`,{children:e||`Remove item from list table`})})]}),j=(e,t,n)=>{let r=10**t;switch(n){case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:return Math.round(e*r)/r}},M=(0,g.memo)(({decimalSeparator:e=`.`,groupSeparator:t=`,`,prefix:r,suffix:i,precision:a,roundingMode:o=`round`,showTrailingZeros:s=!1,size:c=`lg`,value:l=0})=>{let u=(0,g.useMemo)(()=>{let e={};return typeof a==`number`&&a>=0&&s&&(e.minimumFractionDigits=a),e.maximumFractionDigits=a,e},[a,s]),d=(0,g.useCallback)(e=>{let t=e;return typeof a==`number`&&a>=0&&(t=j(e,a,o)),t.toLocaleString(`en-US`,u)},[o,u,a]),f=(0,g.useMemo)(()=>{if(typeof l==`number`)return Number.isNaN(l)||!Number.isFinite(l)?`N/A`:d(l);if(typeof l==`string`){let e=l.trim();if(!e)return`N/A`;let t=Number(e);return Number.isNaN(t)||!Number.isFinite(t)?`N/A`:d(t)}return`N/A`},[l,d]),h=(0,g.useMemo)(()=>e===`.`&&t===`,`?f:f.replace(/,/g,t).replace(/\./g,e),[f,e,t]);return h===`0`||h===`N/A`||!h?(0,m.jsx)(x,{}):(0,m.jsxs)(n.t,{padding:`none`,className:(0,p.cn)(`font-number text-lg text-secondary-foreground tabular-nums`,c===`xs`&&`text-xs`,c===`sm`&&`text-sm`,c===`md`&&`text-base`,c===`lg`&&`text-lg`,c===`xl`&&`text-xl`),children:[r,(0,m.jsx)(`p`,{children:h}),i]})});M.displayName=`UITableStatisticDisplay`;const N=({uuid:e,username:t,email:i})=>(0,m.jsxs)(n.t,{wrap:!1,gap:`sm`,padding:`none`,children:[!e&&(0,m.jsx)(s.t,{className:`size-10 shadow-card`,children:(0,m.jsx)(s.n,{className:`bg-muted-weak`,children:(0,m.jsx)(h.UserRoundIcon,{size:28,className:`text-text-negative`})})}),e&&(0,m.jsx)(s.t,{className:`size-10 shadow-card`,children:(0,m.jsx)(s.n,{style:{backgroundColor:_.colorHashLight.hex(e)},children:(0,m.jsx)(h.UserRoundIcon,{size:28,className:`text-white`})})}),(0,m.jsxs)(n.t,{vertical:!0,padding:`none`,gap:`none`,align:`start`,children:[(0,m.jsx)(r.t,{className:`font-medium text-sm text-text-positive-weak`,children:t??`Unknown User`}),(0,m.jsx)(r.t,{variant:`sm`,className:`mt-0! text-text-positive-weak text-xs`,children:i})]})]}),P=(0,g.createContext)(null),F=()=>{let e=(0,g.use)(P);if(!e)throw Error(`useUITableClickRowContext must be used within a TableClickRowProvider`);return e},I=(0,g.createContext)(null),L=()=>{let e=(0,g.use)(I);if(!e)throw Error(`useTableContext must be used within a TableProvider`);return e},ee=60,te=20,ne=20,R=e=>{let t=e.getIsPinned();return{zIndex:t?20:void 0,left:t===`left`?`${e.getStart(`left`)}px`:void 0,right:t===`right`?`${e.getAfter(`right`)}px`:void 0}},z=({className:e,children:t,...n})=>(0,m.jsx)(`div`,{"data-slot":`table-wrapper`,className:`relative m-0 flex size-full flex-col flex-nowrap items-start justify-start gap-2 py-2.5 text-sm`,...n,children:t}),B=(0,g.memo)(({children:e})=>(0,m.jsx)(`thead`,{"data-slot":`table-header`,style:{zIndex:20},className:(0,p.cn)(`sticky top-0 grid bg-muted-bg-subtle text-[13px] text-text-positive-weak`,`[&_tr:not(:last-child)_td]:border-b`,`[&_th]:flex`,`[&_th]:h-9`,`[&_th]:select-none`,`[&_th]:items-center`,`[&_th]:whitespace-nowrap`,`[&_th]:border-border`,`[&_th]:font-medium`,`[&_th]:text-left`,`[&_th]:align-middle`,`[&_th]:last:border-r-0`,`[&_th]:first:border-l-0`,`[&_tr_th:not([data-pinned=false])]:bg-muted-bg-subtle`),children:e}));B.displayName=`TableHeader`;const V=(0,g.memo)(({children:e})=>(0,m.jsx)(`tr`,{"data-slot":`table-header-row`,className:`flex w-full border-border border-b shadow`,children:e}));V.displayName=`TableHeaderRow`;const H=({header:e,isPinned:t,isResizing:n,isAllRowsSelected:r,children:i,...a})=>{let o=e.getContext().table.getLeftHeaderGroups()[0].headers,s=e.getContext().table.getRightHeaderGroups()[0].headers,c=o[o.length-1]?.id,l=s[0]?.id,d=R(e.column),f=`calc(var(--header-${e.id}-size) * 1px)`;return e.id===`select`?(0,m.jsx)(`th`,{"data-slot":`table-header-cell`,style:{...d,width:60},className:(0,p.cn)(t?`sticky`:`relative`),...a,children:(0,m.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:(0,m.jsx)(u.t,{"aria-label":`Select All Rows`,checked:r,onCheckedChange:t=>{e.getContext().table.toggleAllRowsSelected(!!t)}})})}):(0,m.jsxs)(`th`,{"data-slot":`table-header-cell`,"data-pinned":t,style:{...d,width:f},colSpan:e.colSpan,className:(0,p.cn)(`group relative`,t?`sticky`:`relative`,t===`left`&&e.id===c&&`border-r border-r-border`,t===`right`&&e.id===l&&`border-l border-l-border`),...a,children:[(0,m.jsx)(`div`,{className:`absolute inset-0 gap-1 truncate`,children:(0,m.jsx)(`div`,{className:`flex h-full flex-1 cursor-pointer select-none items-center justify-between`,children:(0,m.jsx)(`div`,{className:`flex size-full flex-1 items-center truncate pl-4`,children:(0,v.flexRender)(e.column.columnDef.header,e.getContext())})})}),![`select`,`actions`].includes(e.id)&&(0,m.jsx)(U,{isPinned:t,isVisible:e.column.getIsVisible(),className:`invisible absolute right-2 z-10 group-hover:visible`,onLeftPin:e.column.pin,onRightPin:e.column.pin,onUnpin:e.column.pin,onToggleVisibilityHandler:e.column.toggleVisibility}),(0,m.jsx)(g.Activity,{mode:t?`hidden`:`visible`,children:(0,m.jsx)(`div`,{onDoubleClick:e.column.resetSize,onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),className:(0,p.cn)(`absolute inset-y-0 -right-0.5 w-1 cursor-e-resize bg-transparent hover:bg-border`,n&&`bg-border`)})})]})},U=({isPinned:e,className:t,onLeftPin:n,onRightPin:r,onUnpin:i,onToggleVisibilityHandler:a})=>{let o=(0,g.useCallback)(()=>{n(`left`)},[n]),s=(0,g.useCallback)(()=>{r(`right`)},[r]),c=(0,g.useCallback)(()=>{i(!1)},[i]);return(0,m.jsxs)(l.t,{children:[(0,m.jsx)(l.h,{asChild:!0,children:(0,m.jsx)(`button`,{className:(0,p.cn)(`cursor-pointer rounded-full p-0.5 text-text-positive-weak hover:bg-muted-muted hover:text-text-positive [&>svg]:size-4`,t),children:(0,m.jsx)(h.EllipsisVerticalIcon,{})})}),(0,m.jsxs)(l.r,{align:`end`,className:`w-64 p-4`,children:[(0,m.jsxs)(l.i,{className:`*:data-[slot=dropdown-menu-item]:rounded-xs *:data-[slot=dropdown-menu-item]:p-2`,children:[(0,m.jsx)(g.Activity,{mode:e?`visible`:`hidden`,children:(0,m.jsxs)(l.a,{onClick:c,children:[!!e&&`Unpin`,(0,m.jsx)(l.d,{children:(0,m.jsx)(h.PinOffIcon,{className:`size-4`})})]})}),(0,m.jsxs)(g.Activity,{mode:e?`hidden`:`visible`,children:[(0,m.jsxs)(l.a,{onClick:o,children:[e?`Unpin`:`Pin to Left`,(0,m.jsx)(l.d,{children:(0,m.jsx)(h.MoveLeftIcon,{className:`size-4`})})]}),(0,m.jsxs)(l.a,{onClick:s,children:[e?`Unpin`:`Pin to Right`,(0,m.jsx)(l.d,{children:(0,m.jsx)(h.MoveRightIcon,{className:`size-4`})})]})]})]}),(0,m.jsx)(l.u,{}),(0,m.jsx)(l.i,{className:`*:data-[slot=dropdown-menu-item]:rounded-xs *:data-[slot=dropdown-menu-item]:p-2`,children:(0,m.jsxs)(l.a,{onClick:()=>a(!1),children:[`Hide Field`,(0,m.jsx)(l.d,{children:(0,m.jsx)(h.EyeOffIcon,{className:`size-4`})})]})})]})]})},W=({height:e,children:t,...n})=>(0,m.jsx)(`tbody`,{"data-slot":`table-body`,style:{height:`${e}px`},className:(0,p.cn)(`relative grid w-full bg-card`,`[&_tr]:absolute [&_tr]:flex [&_tr]:w-full [&_tr]:cursor-pointer [&_tr]:border-b [&_tr]:border-b-border [&_tr]:focus:outline-none`,`[&_td]:z-10`,`[&_td]:flex`,`[&_td]:overflow-hidden`,`[&_td]:whitespace-nowrap`,`[&_td]:px-4`,`[&_td]:py-2.5`,`[&_td]:align-middle`,`[&_td]:border-border`,`[&_td:not([data-pinned=false])]:bg-card`),...n,children:t}),G=(0,g.memo)(({children:e,keyOfClickRow:t,row:n,virtualRow:r,rowVirtualizer:i,onClickRow:a,className:o,...s})=>{let{columnPinning:c}=L(),l=(0,g.useCallback)(e=>{let i=t?n.original?.[t]:void 0;typeof i==`string`||typeof i==`number`?a?.(r.index,i):a?.(r.index),e.preventDefault(),e.stopPropagation()},[t,a,n.original,r.index]);return(0,m.jsx)(`tr`,{"data-slot":`table-row`,"data-index":r.index,ref:e=>i.measureElement(e),style:{transform:`translateY(${r.start}px)`},className:(0,p.cn)(`group`,o),onClick:l,...s,children:n.getVisibleCells().map(e=>(0,m.jsx)(K,{cell:e,className:`group-hover:bg-muted-bg-subtle!`},e.id))})});G.displayName=`TableRow`;const K=(0,g.memo)(({cell:e,children:t,className:n,...r})=>{let{rowSelection:i}=L(),a=e.column.getIsPinned(),o=e.getContext().table.getLeftHeaderGroups()[0].headers,s=e.getContext().table.getRightHeaderGroups()[0].headers,c=o[o.length-1]?.id,l=s[0]?.id,d=R(e.column),f=`calc(var(--col-${e.column.id}-size) * 1px)`,h=e.column.columnDef.meta?.position??`start`;return e.column.id===`select`?(0,m.jsx)(`td`,{"data-slot":`table-cell`,style:{...d,width:60},className:(0,p.cn)(`border-none! bg-transparent! shadow-none!`,a?`sticky`:`relative`,n),...r,children:(0,m.jsx)(`div`,{"data-slot":`table-cell-inner`,className:`inline-flex w-full items-center justify-center bg-transparent text-center align-middle`,children:(0,m.jsx)(u.t,{"aria-label":`Select Row`,checked:e.row.getIsSelected(),onCheckedChange:t=>{e.row.toggleSelected(!!t)}})})}):(0,m.jsx)(`td`,{"data-slot":`table-cell`,"data-pinned":a,style:{...d,width:f},className:(0,p.cn)(a&&`sticky`,!a&&`relative`,a===`left`&&e.column.id===c&&`border-r border-r-border`,a===`right`&&e.column.id===l&&`border-l border-l-border`,n),...r,children:(0,m.jsx)(`div`,{"data-slot":`table-cell-inner`,className:(0,p.cn)(`inline-flex w-full items-center bg-transparent text-center align-middle`,h===`start`&&`justify-start`,h===`center`&&`justify-center`,h===`end`&&`justify-end`),children:(0,v.flexRender)(e.column.columnDef.cell,e.getContext())})})});K.displayName=`TableCell`;const q=(0,g.memo)(()=>(0,m.jsx)(`div`,{className:`sticky left-0 flex min-h-96 flex-1 items-center justify-center bg-transparent text-text-positive-weak opacity-100`,children:(0,m.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,m.jsx)(h.BoxIcon,{strokeWidth:1,size:48}),(0,m.jsx)(`p`,{children:`No data available`})]})}));q.displayName=`EmptyDisplay`;const J=(0,g.memo)(()=>(0,m.jsx)(`div`,{className:`absolute top-0 z-30 flex size-full items-center justify-center bg-black/10`,children:(0,m.jsx)(h.LoaderIcon,{className:`animate-spin text-text-positive`})}));J.displayName=`RefetchingDisplay`;const Y=({children:e})=>(0,m.jsx)(`tfoot`,{"data-slot":`table-footer`,className:`flex w-full justify-center border-border-weak border-t py-2 font-medium [&>tr]:last:border-b-0`,children:e}),X=({children:e})=>{let{table:t,isEmpty:n,isRefetching:r,isFetching:i,data:a,totalRows:o,fetchMoreData:s}=L(),{keyOfClickRow:c,onClickRow:l}=F(),u=(0,g.useRef)(null),f=(0,g.useMemo)(()=>{let e=t.getFlatHeaders(),n={};return e.forEach(e=>{n[`--header-${e.id}-size`]=e.getSize()||0,n[`--col-${e.column.id}-size`]=e.column.getSize()||0}),n},[t.getState().columnSizingInfo,t.getState().columnSizing]),h=(0,g.useCallback)(async e=>{if(!e)return null;let{scrollHeight:t,scrollTop:n,clientHeight:r}=e;t-n-r<500&&!i&&o&&a.length<o&&s?.()},[i,a.length,o,s]);(0,g.useEffect)(()=>{h(u.current)},[h]);let{rows:_}=t.getRowModel(),v=(0,y.useVirtualizer)({count:_.length,estimateSize:()=>40,getScrollElement:()=>u.current,measureElement:typeof window<`u`&&navigator.userAgent.indexOf(`Firefox`)===-1?e=>e?.getBoundingClientRect().height:void 0,overscan:2});return(0,m.jsxs)(d.r,{direction:`horizontal`,style:{direction:t.options.columnResizeDirection},className:(0,p.cn)(`relative flex w-full max-w-full flex-1 gap-1 overflow-auto border-t border-t-border bg-slate-50 p-0 text-sm`,!e&&`border-r border-r-border`),children:[(0,m.jsxs)(d.n,{className:`relative overflow-auto`,children:[(0,m.jsxs)(`div`,{ref:u,className:`relative size-full overflow-auto border-b border-b-border border-l border-l-border`,onScroll:e=>h(e.currentTarget),children:[(0,m.jsxs)(`table`,{"data-slot":`table`,style:{...f,width:t.getTotalSize()},className:`grid w-full max-w-full caption-bottom border-collapse border-spacing-0 flex-col content-start bg-card text-sm tabular-nums [&_tfoot_td]:border-t`,children:[(0,m.jsx)(B,{children:t.getHeaderGroups().map(e=>(0,m.jsx)(V,{children:e.headers.map(e=>(0,m.jsx)(H,{header:e,isPinned:e.column.getIsPinned(),isResizing:e.column.getIsResizing(),isAllRowsSelected:t.getIsAllRowsSelected()},e.id))},e.id))}),(0,m.jsx)(W,{"data-slot":`table-body`,height:v.getTotalSize(),children:v.getVirtualItems().map(e=>{let t=_[e.index];return(0,m.jsx)(G,{"data-index":e.index,keyOfClickRow:c,row:t,virtualRow:e,rowVirtualizer:v,onClickRow:l},t.id)})})]}),n&&(0,m.jsx)(q,{})]}),r&&(0,m.jsx)(J,{})]}),!!e&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(d.t,{}),e]})]})},Z=({checked:e,title:t,onCheckedChange:n})=>(0,m.jsxs)(`div`,{className:`flex h-fit items-center gap-2`,children:[(0,m.jsx)(u.t,{checked:e,onCheckedChange:n}),(0,m.jsx)(`p`,{className:`text-sm`,children:t})]}),re=()=>{let{table:e}=L(),[n,r]=(0,g.useState)(null);return(0,m.jsx)(d.n,{defaultSize:25,className:(0,p.cn)(`bg-card`,n===null?`max-w-8!`:`min-w-64`),children:(0,m.jsxs)(`div`,{className:`relative z-20 flex size-full bg-muted-bg-subtle`,children:[(0,m.jsxs)(`div`,{className:`flex-1`,children:[(0,m.jsx)(g.Activity,{mode:n===`columns`?`visible`:`hidden`,children:(0,m.jsxs)(`div`,{className:`flex size-full flex-col gap-2 p-4`,children:[(0,m.jsx)(`p`,{className:`px-2 font-medium`,children:`Columns Visibility`}),(0,m.jsx)(c.t,{}),(0,m.jsx)(`div`,{className:`flex flex-col gap-4 pt-4`,children:e.getAllColumns().map(e=>[`select`,`actions`].includes(e.id)?null:(0,m.jsx)(Z,{checked:e.getIsVisible(),title:String(e.columnDef.header),onCheckedChange:t=>e.toggleVisibility(!!t)},e.id))})]})}),(0,m.jsx)(g.Activity,{mode:n===`filters`?`visible`:`hidden`,children:(0,m.jsx)(`div`,{className:`flex size-full flex-col p-2`,children:(0,m.jsxs)(t.t,{variant:`outline`,color:`muted`,children:[(0,m.jsx)(h.ListFilterPlus,{}),`Add Filter`]})})})]}),(0,m.jsxs)(`div`,{className:`flex h-full flex-col border-border border-l bg-muted-bg-subtle text-sm`,children:[(0,m.jsxs)(`button`,{className:(0,p.cn)(`flex h-32 cursor-pointer flex-col items-center gap-y-2 p-2 py-4`,n===`columns`&&`bg-card`),onClick:()=>r(n===`columns`?null:`columns`),children:[(0,m.jsx)(h.Columns4Icon,{size:18}),(0,m.jsx)(`span`,{className:`text-nowrap [writing-mode:vertical-lr]`,children:`Columns`})]}),(0,m.jsx)(c.t,{}),(0,m.jsxs)(`button`,{className:(0,p.cn)(`flex h-32 cursor-pointer flex-col items-center gap-y-2 p-2 py-4`,n===`filters`&&`bg-card`),onClick:()=>r(n===`filters`?null:`filters`),children:[(0,m.jsx)(h.ListFilterIcon,{size:18}),(0,m.jsx)(`span`,{className:`text-nowrap [writing-mode:vertical-lr]`,children:`Filters`})]}),(0,m.jsx)(c.t,{})]})]})})},ie=({title:e,isFetching:t=!1,isRefetching:n=!1,data:r,columns:i,totalRows:a,leftPinnedColumns:o,rightPinnedColumns:s,keyOfClickRow:c,onClickRow:l,fetchMoreData:u,children:d})=>{let[f,p]=(0,g.useState)({}),[h,_]=(0,g.useState)({right:s,left:o}),[y,b]=(0,g.useState)({}),x=(0,v.useReactTable)({data:r,columns:i,state:{rowSelection:f,columnPinning:h,columnVisibility:y},defaultColumn:{minSize:40,size:150,maxSize:800},columnResizeMode:`onChange`,columnResizeDirection:`ltr`,enableColumnPinning:!0,enableRowSelection:!0,enableColumnResizing:!0,enableMultiRowSelection:!0,getCoreRowModel:(0,v.getCoreRowModel)(),getGroupedRowModel:(0,v.getGroupedRowModel)(),getExpandedRowModel:(0,v.getExpandedRowModel)(),onRowSelectionChange:p,onColumnPinningChange:_,onColumnVisibilityChange:b}),S=(0,g.useMemo)(()=>{let{rows:e}=x.getRowModel();return e},[x.getRowModel().rows,x.getState().columnPinning]),C=(0,g.useMemo)(()=>!t&&S.length===0,[S,t]),w=(0,g.useMemo)(()=>({title:e,table:x,data:r,isEmpty:C,isFetching:t,isRefetching:n,totalRows:a,fetchMoreData:u,rowSelection:x.getState().rowSelection,columnPinning:x.getState().columnPinning}),[e,x,r,C,n,t,a,u,x.getState().columnVisibility,x.getState().rowSelection,x.getState().columnPinning]),T=(0,g.useMemo)(()=>({keyOfClickRow:c,onClickRow:l}),[c,l]);return(0,m.jsx)(I.Provider,{value:w,children:(0,m.jsx)(P.Provider,{value:T,children:d})})},ae=({onSearch:e,onChange:t,...n})=>{let r=(0,b.useDebounceCallback)(t=>{e?.(t)},500);return(0,m.jsxs)(`div`,{className:`relative w-full max-w-80 flex-1`,children:[(0,m.jsx)(f.t,{...n,size:`lg`,type:`search`,placeholder:`Search records...`,className:`flex-1 ps-9 pe-9`,onChange:e=>{t?.(e),r(e.target.value??``)}}),(0,m.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-3 text-text-positive-weak peer-disabled:opacity-50`,children:(0,m.jsx)(h.SearchIcon,{size:16})}),(0,m.jsx)(`button`,{className:`absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-md text-text-positive-weak outline-none transition-[color,box-shadow] hover:text-text-positive focus:z-10 focus-visible:border focus-visible:border-primary-strong focus-visible:ring-[3px] focus-visible:ring-primary-weak disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,"aria-label":`Submit search`,type:`submit`,children:(0,m.jsx)(h.ArrowRightIcon,{size:16,"aria-hidden":`true`})})]})},Q=({children:e,disabled:t,onClick:n})=>(0,m.jsx)(`button`,{type:`button`,disabled:t,className:`flex cursor-pointer items-center gap-x-1 rounded-sm border border-border bg-background p-2.5 text-sm text-text-positive-weak outline-none transition-all hover:shadow-card focus:border-border-emphasis focus:bg-muted-muted active:border-border-emphasis active:bg-muted-muted active:text-text-positive disabled:pointer-events-none disabled:cursor-default disabled:opacity-60 [&_svg]:size-3.5`,onClick:n,children:e}),oe=({onCreate:e,onDownload:t,onRefresh:n})=>(0,m.jsxs)(`div`,{className:`flex [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none`,children:[(0,m.jsx)(Q,{disabled:!e,onClick:t=>{e?.(),t.stopPropagation(),t.preventDefault()},children:(0,m.jsx)(h.CirclePlus,{})}),(0,m.jsx)(Q,{disabled:!n,onClick:e=>{n?.(),e.stopPropagation(),e.preventDefault()},children:(0,m.jsx)(h.RefreshCwIcon,{})}),(0,m.jsx)(Q,{disabled:!t,onClick:e=>{t?.(),e.stopPropagation(),e.preventDefault()},children:(0,m.jsx)(h.DownloadIcon,{})})]}),$=({children:e})=>{let{title:t}=L();return(0,m.jsxs)(`div`,{"data-slot":`table-tooltip`,className:`relative m-0 flex w-full flex-0 flex-col flex-wrap items-start space-y-2 p-0 px-2 text-sm`,children:[(0,m.jsx)(`h3`,{className:`font-semibold text-base text-text-positive`,children:t}),(0,m.jsx)(`div`,{className:`flex w-full flex-1 justify-between gap-x-2`,children:e})]})};$.displayName=`TableTooltip`,exports.UITableBadgeDisplay=S,exports.UITableBooleanDisplay=C,exports.UITableContainer=X,exports.UITableDateDisplay=w,exports.UITableDescriptionDisplay=T,exports.UITableFilter=re,exports.UITableFooter=Y,exports.UITableMoreButton=E,exports.UITableNameDisplay=D,exports.UITablePermalink=O,exports.UITablePhoneNumberDisplay=k,exports.UITableProvider=ie,exports.UITableRemoveButton=A,exports.UITableStatisticDisplay=M,exports.UITableTooltip=$,exports.UITableTooltipActions=oe,exports.UITableTooltipFilter=ae,exports.UITableUserDataDisplay=N,exports.UITableWrapper=z;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|