@dappworks/kit 0.4.88 → 0.4.90

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.
@@ -0,0 +1,19 @@
1
+ import { Abi, Chain, GetContractReturnType, PublicClient, HttpTransport } from 'viem';
2
+
3
+ declare class Cache {
4
+ kv: Record<string, any>;
5
+ wrap<T>(key: string, fn: () => T | Promise<T>): T | Promise<T>;
6
+ }
7
+ declare class AIem<Contracts extends Record<string, Abi> = {}, Chains extends Record<number, Chain> = {}> {
8
+ private cache;
9
+ contractMap: {
10
+ [K in keyof Contracts]: Contracts[K];
11
+ };
12
+ chainMap: {
13
+ [K in keyof Chains]: Chains[K];
14
+ };
15
+ constructor(args: Pick<AIem<Contracts, Chains>, "contractMap" | "chainMap">);
16
+ Get<K extends keyof Contracts, C extends keyof Chains>(contractName: K, chainId: C, address: `0x${string}`): GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>>;
17
+ }
18
+
19
+ export { AIem, Cache };
package/dist/aiem.mjs ADDED
@@ -0,0 +1,53 @@
1
+ import './chunk-6F7H4PAA.mjs';
2
+ import { createPublicClient, http, getContract } from 'viem';
3
+
4
+ var Cache = class {
5
+ constructor() {
6
+ this.kv = {};
7
+ }
8
+ wrap(key, fn) {
9
+ if (this.kv[key]) {
10
+ return this.kv[key];
11
+ }
12
+ const result = fn();
13
+ if (result instanceof Promise) {
14
+ return result.then((res) => {
15
+ this.kv[key] = res;
16
+ return res;
17
+ });
18
+ } else {
19
+ this.kv[key] = result;
20
+ return result;
21
+ }
22
+ }
23
+ };
24
+ var AIem = class {
25
+ constructor(args) {
26
+ this.cache = new Cache();
27
+ this.contractMap = args.contractMap;
28
+ this.chainMap = args.chainMap;
29
+ }
30
+ // @ts-ignore
31
+ Get(contractName, chainId, address) {
32
+ return this.cache.wrap(`contract: ${contractName}-${chainId}-${address}`, () => {
33
+ const contract = this.contractMap[contractName];
34
+ const client = this.cache.wrap(`publicClient-${String(chainId)}`, () => {
35
+ return createPublicClient({
36
+ //@ts-ignore
37
+ chain: this.chainMap[chainId],
38
+ transport: http()
39
+ });
40
+ });
41
+ return getContract({
42
+ //@ts-ignore
43
+ client,
44
+ address,
45
+ abi: contract
46
+ });
47
+ });
48
+ }
49
+ };
50
+
51
+ export { AIem, Cache };
52
+ //# sourceMappingURL=out.js.map
53
+ //# sourceMappingURL=aiem.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../aiem.ts"],"names":[],"mappings":";;;AAAA,SAA4C,oBAAoB,aAAa,YAAmD;AAEzH,IAAM,QAAN,MAAY;AAAA,EAAZ;AACL,cAA0B,CAAC;AAAA;AAAA,EAE3B,KAAQ,KAAa,IAA0C;AAC7D,QAAI,KAAK,GAAG,GAAG,GAAG;AAChB,aAAO,KAAK,GAAG,GAAG;AAAA,IACpB;AAEA,UAAM,SAAS,GAAG;AAClB,QAAI,kBAAkB,SAAS;AAC7B,aAAO,OAAO,KAAK,CAAC,QAAQ;AAC1B,aAAK,GAAG,GAAG,IAAI;AACf,eAAO;AAAA,MACT,CAAC;AAAA,IACH,OAAO;AACL,WAAK,GAAG,GAAG,IAAI;AACf,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,OAAN,MAAkG;AAAA,EAKvG,YAAY,MAAiE;AAJ7E,SAAQ,QAAe,IAAI,MAAM;AAM/B,SAAK,cAAc,KAAK;AACxB,SAAK,WAAW,KAAK;AAAA,EACvB;AAAA;AAAA,EAGA,IAAuD,cAAiB,SAAY,SAA2G;AAE7L,WAAO,KAAK,MAAM,KAAwF,aAAa,YAAY,IAAI,OAAO,IAAI,OAAO,IAAI,MAAM;AAEjK,YAAM,WAAW,KAAK,YAAY,YAAY;AAC9C,YAAM,SAAS,KAAK,MAAM,KAAK,gBAAgB,OAAO,OAAO,CAAC,IAAI,MAAM;AAEtE,eAAO,mBAAmB;AAAA;AAAA,UAExB,OAAO,KAAK,SAAS,OAAO;AAAA,UAC5B,WAAW,KAAK;AAAA,QAClB,CAAC;AAAA,MACH,CAAC;AAED,aAAO,YAAY;AAAA;AAAA,QAEjB;AAAA,QACA;AAAA,QACA,KAAK;AAAA,MACP,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF","sourcesContent":["import { Chain, type GetContractReturnType, createPublicClient, getContract, http, type Abi, PublicClient, HttpTransport } from \"viem\";\n\nexport class Cache {\n kv: Record<string, any> = {};\n\n wrap<T>(key: string, fn: () => T | Promise<T>): T | Promise<T> {\n if (this.kv[key]) {\n return this.kv[key];\n }\n\n const result = fn();\n if (result instanceof Promise) {\n return result.then((res) => {\n this.kv[key] = res;\n return res;\n });\n } else {\n this.kv[key] = result;\n return result;\n }\n }\n}\n\nexport class AIem<Contracts extends Record<string, Abi> = {}, Chains extends Record<number, Chain> = {}> {\n private cache: Cache = new Cache();\n contractMap: { [K in keyof Contracts]: Contracts[K] };\n chainMap: { [K in keyof Chains]: Chains[K] };\n\n constructor(args: Pick<AIem<Contracts, Chains>, \"contractMap\" | \"chainMap\">) {\n // this.chains = args.chains;\n this.contractMap = args.contractMap;\n this.chainMap = args.chainMap;\n }\n\n // @ts-ignore\n Get<K extends keyof Contracts, C extends keyof Chains>(contractName: K, chainId: C, address: `0x${string}`): GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>> {\n //@ts-ignore\n return this.cache.wrap<GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>>>(`contract: ${contractName}-${chainId}-${address}`, () => {\n // @ts-ignore\n const contract = this.contractMap[contractName];\n const client = this.cache.wrap(`publicClient-${String(chainId)}`, () => {\n // @ts-ignore\n return createPublicClient({\n //@ts-ignore\n chain: this.chainMap[chainId],\n transport: http(),\n }) as PublicClient<HttpTransport, Chain, any, any>;\n });\n\n return getContract({\n //@ts-ignore\n client,\n address,\n abi: contract,\n });\n });\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-WYGQ3Y4R.mjs';
1
+ import { cn } from './chunk-TMFAGW4V.mjs';
2
2
  import { Skeleton } from '@nextui-org/react';
3
3
  import React from 'react';
4
4
 
@@ -21,4 +21,4 @@ var SkeletonBox = ({ line, skClassName, className }) => {
21
21
 
22
22
  export { SkeletonBox };
23
23
  //# sourceMappingURL=out.js.map
24
- //# sourceMappingURL=chunk-WT2ARRCR.mjs.map
24
+ //# sourceMappingURL=chunk-ESZELIL2.mjs.map
@@ -1,7 +1,7 @@
1
1
  import { PaginationState } from './chunk-ONVPCAMQ.mjs';
2
- import { SkeletonBox } from './chunk-WT2ARRCR.mjs';
2
+ import { SkeletonBox } from './chunk-ESZELIL2.mjs';
3
3
  import { _ } from './chunk-MGU3KYGC.mjs';
4
- import { cn } from './chunk-WYGQ3Y4R.mjs';
4
+ import { cn } from './chunk-TMFAGW4V.mjs';
5
5
  import { __objRest, __spreadValues } from './chunk-6F7H4PAA.mjs';
6
6
  import * as React2 from 'react';
7
7
  import React2__default, { useRef, useMemo, useState, useEffect } from 'react';
@@ -269,64 +269,26 @@ var JSONTable = observer((props) => {
269
269
  classNames,
270
270
  ref: tableBoxRef
271
271
  },
272
- /* @__PURE__ */ React2__default.createElement(TableHeader, { columns }, columns.map((item) => {
273
- var _a, _b, _c;
274
- return /* @__PURE__ */ React2__default.createElement(TableColumn, { key: item.key }, /* @__PURE__ */ React2__default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React2__default.createElement("span", null, item.label), !!sortableColumnsMap[item.key] && /* @__PURE__ */ React2__default.createElement(DropdownMenu, null, /* @__PURE__ */ React2__default.createElement(DropdownMenuTrigger, null, /* @__PURE__ */ React2__default.createElement("button", { className: cn("outline-none p-1", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownTriggerBtnClassName) }, sortableColumnsMap[item.key] === "desc" && /* @__PURE__ */ React2__default.createElement(ChevronDown, { size: 14 }), sortableColumnsMap[item.key] === "asc" && /* @__PURE__ */ React2__default.createElement(ChevronUp, { size: 14 }), sortableColumnsMap[item.key] === "none" && /* @__PURE__ */ React2__default.createElement(ChevronsUpDown, { size: 14 }))), /* @__PURE__ */ React2__default.createElement(DropdownMenuContent, { className: cn("p-2 space-y-1 min-w-[4rem]", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownContentClassName), collisionPadding: 10, sideOffset: 5 }, /* @__PURE__ */ React2__default.createElement(
275
- DropdownMenuItem,
276
- {
277
- className: cn("text-xs font-bold cursor-pointer", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownItemClassName),
278
- onClick: () => {
279
- var _a2;
280
- const { sortableColumns, sortedData: sortedData2 } = sortData({
281
- type: "asc",
282
- key: item.key,
283
- sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey,
284
- sortableColumnsMap,
285
- dataSource
286
- });
287
- setSortableColumnsMap(sortableColumns);
288
- setSortedData(sortedData2);
289
- }
290
- },
291
- ((_a = sortingUIOptions == null ? void 0 : sortingUIOptions.titles) == null ? void 0 : _a.asc) || "ASC"
292
- ), /* @__PURE__ */ React2__default.createElement(
293
- DropdownMenuItem,
294
- {
295
- className: cn("text-xs font-bold cursor-pointer", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownItemClassName),
296
- onClick: () => {
297
- var _a2;
298
- const { sortableColumns, sortedData: sortedData2 } = sortData({
299
- type: "desc",
300
- key: item.key,
301
- sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey,
302
- sortableColumnsMap,
303
- dataSource
304
- });
305
- setSortableColumnsMap(sortableColumns);
306
- setSortedData(sortedData2);
307
- }
308
- },
309
- ((_b = sortingUIOptions == null ? void 0 : sortingUIOptions.titles) == null ? void 0 : _b.desc) || "DESC"
310
- ), /* @__PURE__ */ React2__default.createElement(
311
- DropdownMenuItem,
312
- {
313
- className: cn("text-xs font-bold cursor-pointer", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownItemClassName),
314
- onClick: () => {
315
- var _a2;
316
- const { sortableColumns, sortedData: sortedData2 } = sortData({
317
- type: "none",
318
- key: item.key,
319
- sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey,
320
- sortableColumnsMap,
321
- dataSource
322
- });
323
- setSortableColumnsMap(sortableColumns);
324
- setSortedData(sortedData2);
325
- }
326
- },
327
- ((_c = sortingUIOptions == null ? void 0 : sortingUIOptions.titles) == null ? void 0 : _c.none) || "NONE"
328
- )))));
329
- })),
272
+ /* @__PURE__ */ React2__default.createElement(TableHeader, { columns }, columns.map((item) => /* @__PURE__ */ React2__default.createElement(TableColumn, { key: item.key }, /* @__PURE__ */ React2__default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React2__default.createElement("span", null, item.label), !!sortableColumnsMap[item.key] && /* @__PURE__ */ React2__default.createElement(
273
+ SortingComponent,
274
+ {
275
+ sortingUIOptions,
276
+ columnOptions,
277
+ sortableColumnsMap,
278
+ item,
279
+ onSort: ({ type, key, sortKey }) => {
280
+ const { sortableColumns, sortedData: sortedData2 } = sortData({
281
+ type,
282
+ key,
283
+ sortKey,
284
+ sortableColumnsMap,
285
+ dataSource
286
+ });
287
+ setSortableColumnsMap(sortableColumns);
288
+ setSortedData(sortedData2);
289
+ }
290
+ }
291
+ ))))),
330
292
  isLoading ? /* @__PURE__ */ React2__default.createElement(TableBody, { emptyContent: loadingContent || DefaultLoading({ loadingOptions }) }, []) : data.length > 0 ? /* @__PURE__ */ React2__default.createElement(TableBody, null, data.map((item, index) => {
331
293
  return /* @__PURE__ */ React2__default.createElement(
332
294
  TableRow,
@@ -413,6 +375,100 @@ function sortData({
413
375
  sortedData
414
376
  };
415
377
  }
378
+ function SortingComponent({
379
+ sortingUIOptions,
380
+ columnOptions,
381
+ sortableColumnsMap,
382
+ item,
383
+ onSort
384
+ }) {
385
+ var _a, _b, _c;
386
+ if (sortingUIOptions == null ? void 0 : sortingUIOptions.showDropdown) {
387
+ return /* @__PURE__ */ React2__default.createElement(DropdownMenu, null, /* @__PURE__ */ React2__default.createElement(DropdownMenuTrigger, null, /* @__PURE__ */ React2__default.createElement("button", { className: cn("outline-none p-1", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownTriggerBtnClassName) }, sortableColumnsMap[item.key] === "desc" && /* @__PURE__ */ React2__default.createElement(ChevronDown, { size: 14 }), sortableColumnsMap[item.key] === "asc" && /* @__PURE__ */ React2__default.createElement(ChevronUp, { size: 14 }), sortableColumnsMap[item.key] === "none" && /* @__PURE__ */ React2__default.createElement(ChevronsUpDown, { size: 14 }))), /* @__PURE__ */ React2__default.createElement(DropdownMenuContent, { className: cn("p-2 space-y-1 min-w-[4rem]", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownContentClassName), collisionPadding: 10, sideOffset: 5 }, /* @__PURE__ */ React2__default.createElement(
388
+ DropdownMenuItem,
389
+ {
390
+ className: cn("text-xs font-bold cursor-pointer", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownItemClassName),
391
+ onClick: () => {
392
+ var _a2;
393
+ onSort({
394
+ type: "asc",
395
+ key: item.key,
396
+ sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey
397
+ });
398
+ }
399
+ },
400
+ ((_a = sortingUIOptions == null ? void 0 : sortingUIOptions.titles) == null ? void 0 : _a.asc) || "ASC"
401
+ ), /* @__PURE__ */ React2__default.createElement(
402
+ DropdownMenuItem,
403
+ {
404
+ className: cn("text-xs font-bold cursor-pointer", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownItemClassName),
405
+ onClick: () => {
406
+ var _a2;
407
+ onSort({
408
+ type: "desc",
409
+ key: item.key,
410
+ sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey
411
+ });
412
+ }
413
+ },
414
+ ((_b = sortingUIOptions == null ? void 0 : sortingUIOptions.titles) == null ? void 0 : _b.desc) || "DESC"
415
+ ), /* @__PURE__ */ React2__default.createElement(
416
+ DropdownMenuItem,
417
+ {
418
+ className: cn("text-xs font-bold cursor-pointer", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownItemClassName),
419
+ onClick: () => {
420
+ var _a2;
421
+ onSort({
422
+ type: "none",
423
+ key: item.key,
424
+ sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey
425
+ });
426
+ }
427
+ },
428
+ ((_c = sortingUIOptions == null ? void 0 : sortingUIOptions.titles) == null ? void 0 : _c.none) || "NONE"
429
+ )));
430
+ }
431
+ return /* @__PURE__ */ React2__default.createElement("button", { className: cn("outline-none p-1", sortingUIOptions == null ? void 0 : sortingUIOptions.dropdownTriggerBtnClassName) }, sortableColumnsMap[item.key] === "none" && /* @__PURE__ */ React2__default.createElement(
432
+ ChevronsUpDown,
433
+ {
434
+ size: 14,
435
+ onClick: () => {
436
+ var _a2;
437
+ onSort({
438
+ type: "desc",
439
+ key: item.key,
440
+ sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey
441
+ });
442
+ }
443
+ }
444
+ ), sortableColumnsMap[item.key] === "desc" && /* @__PURE__ */ React2__default.createElement(
445
+ ChevronDown,
446
+ {
447
+ size: 14,
448
+ onClick: () => {
449
+ var _a2;
450
+ onSort({
451
+ type: "asc",
452
+ key: item.key,
453
+ sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey
454
+ });
455
+ }
456
+ }
457
+ ), sortableColumnsMap[item.key] === "asc" && /* @__PURE__ */ React2__default.createElement(
458
+ ChevronUp,
459
+ {
460
+ size: 14,
461
+ onClick: () => {
462
+ var _a2;
463
+ onSort({
464
+ type: "none",
465
+ key: item.key,
466
+ sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey
467
+ });
468
+ }
469
+ }
470
+ ));
471
+ }
416
472
  function CardUI({
417
473
  className,
418
474
  data,
@@ -491,4 +547,4 @@ function scrollIntoTop(target) {
491
547
 
492
548
  export { JSONTable };
493
549
  //# sourceMappingURL=out.js.map
494
- //# sourceMappingURL=chunk-B6Y2ZH2X.mjs.map
550
+ //# sourceMappingURL=chunk-S5H5TLLE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../components/JSONTable/index.tsx","../components/ui/dropdown-menu.tsx"],"names":["React","sortableColumnsDefaultValue","columns","keys","sortedData","_a"],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Card,\n Divider,\n Pagination as NextuiPagination,\n PaginationProps,\n SlotsToClasses,\n Spinner,\n SpinnerProps,\n Table,\n TableBody,\n TableCell,\n TableColumn,\n TableHeader,\n TableRow,\n TableSlots,\n} from '@nextui-org/react';\nimport { ChevronDown, ChevronUp, ChevronsUpDown } from \"lucide-react\";\nimport { observer } from \"mobx-react-lite\";\nimport { PaginationState } from \"../../store/standard/PaginationState\";\nimport { SkeletonBox } from \"../Common/SkeletonBox\";\nimport { _ } from \"../../lib/lodash\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '../ui/dropdown-menu';\n\nexport type HeaderKeys<T extends Record<string, any>> = Array<keyof T | '$actions'>;\n\nexport type ColumnOptions<T> = {\n [key in keyof T]?: {\n label?: React.ReactNode;\n hidden?: boolean;\n sortable?: boolean;\n sortKey?: string;\n order?: number;\n render?: (item: T) => any;\n labelClassName?: string;\n valueClassName?: string;\n };\n} & {\n $actions?: {\n label?: React.ReactNode;\n hidden?: boolean;\n sortable?: boolean;\n sortKey?: string;\n order?: number;\n render?: (item: T) => any;\n labelClassName?: string;\n valueClassName?: string;\n };\n};\n\nexport type Column<T> = {\n key: string;\n label: React.ReactNode;\n render?: (item: T) => any;\n};\n\nexport type ExtendedTable<U> = {\n key: string;\n columns: Column<U>[];\n};\n\nexport type CardOptions = {\n boxClassName?: string;\n cardClassName?: string;\n itemClassName?: string;\n showDivider?: boolean;\n dividerClassName?: string;\n};\n\ntype LoadingOptions = {\n type?: 'skeleton' | 'spinner';\n skeleton?: {\n boxClassName?: string;\n skeletonClassName?: string;\n line?: number;\n };\n spinner?: {\n boxClassName?: string;\n spinnerProps?: SpinnerProps;\n text?: string;\n textClassName?: string;\n };\n};\n\ntype SortingUIOptions = {\n showDropdown?: boolean;\n dropdownTriggerBtnClassName?: string;\n dropdownContentClassName?: string;\n dropdownItemClassName?: string;\n titles?: {\n asc?: string;\n desc?: string;\n none?: string;\n };\n};\n\nexport interface JSONTableProps<T extends Record<string, any>> {\n className?: string;\n classNames?: SlotsToClasses<TableSlots>;\n rowKey?: keyof T;\n dataSource: T[];\n headerKeys?: HeaderKeys<T>;\n columnOptions?: ColumnOptions<T>;\n isServerPaging?: boolean;\n pagination?: PaginationState;\n nextuiPaginationProps?: PaginationProps | {};\n onRowClick?: (item: T) => void;\n rowCss?: string | ((item: T) => string | undefined);\n asCard?: boolean;\n cardOptions?: CardOptions;\n autoScrollToTop?: boolean;\n emptyContent?: React.ReactNode;\n isLoading?: boolean;\n loadingOptions?: LoadingOptions;\n loadingContent?: React.ReactNode;\n isHeaderSticky?: boolean;\n sortingUIOptions?: SortingUIOptions;\n extendedTableOptions?: {\n key: keyof T;\n columnOptions: ColumnOptions<any>;\n }[];\n}\n\nexport const JSONTable = observer(<T extends Record<string, any>>(props: JSONTableProps<T>) => {\n const {\n className,\n classNames = {},\n dataSource,\n columnOptions,\n headerKeys,\n isServerPaging,\n pagination = new PaginationState({\n page: 1,\n limit: 8,\n }),\n nextuiPaginationProps = {},\n rowKey = 'id',\n onRowClick,\n rowCss,\n asCard = false,\n cardOptions = {\n boxClassName: '',\n cardClassName: '',\n itemClassName: '',\n showDivider: true,\n dividerClassName: '',\n },\n autoScrollToTop = false,\n emptyContent = 'No Data',\n isLoading = false,\n loadingOptions,\n loadingContent,\n isHeaderSticky = false,\n sortingUIOptions,\n extendedTableOptions = [],\n } = props;\n\n const tableBoxRef = useRef<HTMLElement>(null);\n\n const { columns, sortableColumnsDefaultValue } = useMemo(() => {\n const firstData = dataSource[0];\n\n const allKeys = firstData ? Object.keys(firstData) : [];\n const keys = headerKeys ? headerKeys : columnOptions ? allKeys.filter((key) => !columnOptions[key]?.hidden) : allKeys;\n if (!keys.includes('$actions') && columnOptions && columnOptions['$actions']) {\n keys.push('$actions');\n }\n\n const sortableColumnsDefaultValue: { [k: string]: 'asc' | 'desc' | 'none' } = {};\n\n // @ts-ignore\n const columns: Column<T>[] = keys.map((key: string) => {\n const sortable = columnOptions?.[key]?.sortable;\n if (sortable) {\n sortableColumnsDefaultValue[key] = 'none';\n }\n return {\n key,\n label: columnOptions?.[key]?.label || (key === '$actions' ? '' : key),\n render: columnOptions?.[key]?.render,\n };\n });\n\n if (!headerKeys && columnOptions) {\n columns.sort((a, b) => {\n const aOrder = columnOptions[a.key]?.order || 0;\n const bOrder = columnOptions[b.key]?.order || 0;\n return bOrder - aOrder;\n });\n }\n\n const extendedTables = firstData\n ? extendedTableOptions\n .filter((item) => {\n return Array.isArray(firstData[item.key]);\n })\n .map((item) => {\n const index = columns.findIndex((c) => c.key === item.key);\n if (index > -1) {\n columns.splice(index, 1);\n }\n const keys = Object.keys(item.columnOptions);\n return {\n key: item.key as string,\n columns: keys.map((k) => {\n const option = item.columnOptions[k];\n return {\n key: k,\n label: option?.label || k,\n render: option?.render,\n };\n }),\n };\n })\n : [];\n\n return {\n columns,\n extendedTables,\n sortableColumnsDefaultValue,\n };\n }, [dataSource, columnOptions]);\n\n const [sortableColumnsMap, setSortableColumnsMap] = useState<{ [k: string]: 'asc' | 'desc' | 'none' }>({});\n const [sortedData, setSortedData] = useState<T[]>(dataSource);\n\n useEffect(() => {\n setSortableColumnsMap(sortableColumnsDefaultValue);\n }, [sortableColumnsDefaultValue]);\n\n useEffect(() => {\n setSortedData(dataSource);\n if (!isServerPaging) {\n pagination.setData({\n total: dataSource.length,\n });\n }\n }, [dataSource]);\n\n const data = isServerPaging ? sortedData : sortedData.slice(pagination.offset, pagination.offset + pagination.limit);\n\n if (asCard) {\n return (\n <CardUI\n className={className}\n rowKey={rowKey}\n data={data}\n columns={columns}\n columnOptions={columnOptions}\n cardOptions={cardOptions}\n pagination={pagination}\n nextuiPaginationProps={nextuiPaginationProps}\n onRowClick={onRowClick}\n autoScrollToTop={autoScrollToTop}\n emptyContent={emptyContent}\n isLoading={isLoading}\n loadingOptions={loadingOptions}\n loadingContent={loadingContent}\n />\n );\n }\n\n return (\n <>\n <Table\n removeWrapper\n isHeaderSticky={isHeaderSticky}\n className={cn('relative w-full overflow-auto h-[400px]', className)}\n classNames={classNames}\n ref={tableBoxRef}\n >\n <TableHeader columns={columns}>\n {columns.map((item) => (\n <TableColumn key={item.key}>\n <div className=\"flex items-center\">\n <span>{item.label}</span>\n {!!sortableColumnsMap[item.key] && (\n <SortingComponent\n sortingUIOptions={sortingUIOptions}\n columnOptions={columnOptions}\n sortableColumnsMap={sortableColumnsMap}\n item={item}\n onSort={({ type, key, sortKey }) => {\n const { sortableColumns, sortedData } = sortData({\n type,\n key,\n sortKey,\n sortableColumnsMap,\n dataSource,\n });\n setSortableColumnsMap(sortableColumns);\n setSortedData(sortedData);\n }}\n />\n )}\n </div>\n </TableColumn>\n ))}\n </TableHeader>\n {isLoading ? (\n <TableBody emptyContent={loadingContent || DefaultLoading({ loadingOptions })}>{[]}</TableBody>\n ) : data.length > 0 ? (\n <TableBody>\n {data.map((item, index) => {\n return (\n <TableRow\n key={item[rowKey] || index}\n className={cn('', typeof rowCss === 'function' ? rowCss(item) : rowCss)}\n onClick={() => {\n onRowClick?.(item);\n }}\n >\n {columns.map((column) => {\n return <TableCell key={column.key}>{column.render ? column.render(item) : renderFieldValue(item[column.key])}</TableCell>;\n })}\n </TableRow>\n );\n })}\n </TableBody>\n ) : (\n <TableBody emptyContent={emptyContent}>{[]}</TableBody>\n )}\n </Table>\n {pagination.total > pagination.limit && (\n <div className=\"flex justify-center\">\n <NextuiPagination\n className=\"mt-2\"\n showControls\n showShadow\n size=\"sm\"\n radius=\"sm\"\n color=\"primary\"\n initialPage={1}\n total={Math.ceil(pagination.total / pagination.limit)}\n page={pagination.page}\n onChange={(currentPage) => {\n pagination.setData({\n page: currentPage,\n });\n if (autoScrollToTop && tableBoxRef.current) {\n scrollIntoTop(tableBoxRef.current);\n }\n }}\n {...nextuiPaginationProps}\n />\n </div>\n )}\n </>\n );\n});\n\nfunction renderFieldValue(v: any) {\n if (typeof v == 'string' || typeof v == 'number') {\n return v;\n }\n if (v == null) {\n return null;\n }\n return JSON.stringify(v);\n}\n\nfunction sortData<T>({\n sortKey,\n key,\n type,\n sortableColumnsMap,\n dataSource,\n}: {\n sortKey: string | undefined;\n key: string;\n type: 'asc' | 'desc' | 'none';\n sortableColumnsMap: {\n [k: string]: 'asc' | 'desc' | 'none';\n };\n dataSource: T[];\n}) {\n const sortableColumns: { [k: string]: 'asc' | 'desc' | 'none' } = {};\n Object.keys(sortableColumnsMap).map((k) => {\n sortableColumns[k] = k === key ? type : 'none';\n });\n let sortedData = dataSource;\n if (type !== 'none') {\n const result = _.orderBy(\n dataSource,\n (o) => {\n const v = _.get(o, sortKey || key);\n if (v == null) {\n return type === 'desc' ? '' : v;\n }\n if (typeof v === 'string') {\n const _v = Number(v);\n if (isNaN(_v)) {\n return v.toLowerCase();\n } else {\n return _v;\n }\n }\n return v;\n },\n type,\n );\n sortedData = result;\n }\n return {\n sortableColumns,\n sortedData,\n };\n}\n\nfunction SortingComponent<T>({\n sortingUIOptions,\n columnOptions,\n sortableColumnsMap,\n item,\n onSort,\n}: {\n sortingUIOptions: SortingUIOptions;\n columnOptions?: ColumnOptions<T>;\n sortableColumnsMap: { [k: string]: 'asc' | 'desc' | 'none' };\n item: Column<T>;\n onSort: (e: { type: 'asc' | 'desc' | 'none'; key: string; sortKey: string }) => void;\n}) {\n if (sortingUIOptions?.showDropdown) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger>\n <button className={cn('outline-none p-1', sortingUIOptions?.dropdownTriggerBtnClassName)}>\n {sortableColumnsMap[item.key] === 'desc' && <ChevronDown size={14} />}\n {sortableColumnsMap[item.key] === 'asc' && <ChevronUp size={14} />}\n {sortableColumnsMap[item.key] === 'none' && <ChevronsUpDown size={14} />}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className={cn('p-2 space-y-1 min-w-[4rem]', sortingUIOptions?.dropdownContentClassName)} collisionPadding={10} sideOffset={5}>\n <DropdownMenuItem\n className={cn('text-xs font-bold cursor-pointer', sortingUIOptions?.dropdownItemClassName)}\n onClick={() => {\n onSort({\n type: 'asc',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n {sortingUIOptions?.titles?.asc || 'ASC'}\n </DropdownMenuItem>\n <DropdownMenuItem\n className={cn('text-xs font-bold cursor-pointer', sortingUIOptions?.dropdownItemClassName)}\n onClick={() => {\n onSort({\n type: 'desc',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n {sortingUIOptions?.titles?.desc || 'DESC'}\n </DropdownMenuItem>\n <DropdownMenuItem\n className={cn('text-xs font-bold cursor-pointer', sortingUIOptions?.dropdownItemClassName)}\n onClick={() => {\n onSort({\n type: 'none',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n {sortingUIOptions?.titles?.none || 'NONE'}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n return (\n <button className={cn('outline-none p-1', sortingUIOptions?.dropdownTriggerBtnClassName)}>\n {sortableColumnsMap[item.key] === 'none' && (\n <ChevronsUpDown\n size={14}\n onClick={() => {\n onSort({\n type: 'desc',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n />\n )}\n {sortableColumnsMap[item.key] === 'desc' && (\n <ChevronDown\n size={14}\n onClick={() => {\n onSort({\n type: 'asc',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n />\n )}\n {sortableColumnsMap[item.key] === 'asc' && (\n <ChevronUp\n size={14}\n onClick={() => {\n onSort({\n type: 'none',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n />\n )}\n </button>\n );\n}\n\nfunction CardUI<T>({\n className,\n data,\n columns,\n columnOptions,\n rowKey,\n cardOptions,\n pagination,\n nextuiPaginationProps,\n onRowClick,\n autoScrollToTop,\n emptyContent,\n isLoading,\n loadingOptions,\n loadingContent,\n}: {\n className?: string;\n data: T[];\n columns: Column<T>[];\n columnOptions?: ColumnOptions<T>;\n rowKey: string | number | symbol;\n cardOptions?: CardOptions;\n pagination: PaginationState;\n nextuiPaginationProps: PaginationProps | {};\n onRowClick?: (item: T) => void;\n autoScrollToTop?: boolean;\n emptyContent?: React.ReactNode;\n isLoading?: boolean;\n loadingOptions?: LoadingOptions;\n loadingContent?: React.ReactNode;\n}) {\n const cardBoxRef = useRef<HTMLDivElement>(null);\n return (\n <div className={className} ref={cardBoxRef}>\n <div className={cn('space-y-2', cardOptions?.boxClassName)}>\n {isLoading ? (\n loadingContent ? (\n <Card className={cn('w-full h-40 flex flex-col justify-center items-center p-4 shadow-sm text-foreground-400', cardOptions?.cardClassName)}>{loadingContent}</Card>\n ) : (\n <DefaultLoading loadingOptions={loadingOptions} />\n )\n ) : data.length > 0 ? (\n data.map((item, index) => {\n return (\n <Card\n key={item[rowKey] || index}\n className={cn('w-full shadow-sm p-4', cardOptions?.cardClassName)}\n isPressable={!!onRowClick}\n onPress={() => {\n onRowClick?.(item);\n }}\n >\n {columns.map((column, i) => {\n const option = columnOptions?.[column.key];\n return (\n <div className=\"w-full\" key={column.key}>\n <div className={cn('w-full', cardOptions?.itemClassName)}>\n <div className={cn('font-meidum text-xs text-foreground-400', option?.labelClassName)}>{column.label}</div>\n <div className={cn('text-xs', option?.valueClassName)}>{column.render ? column.render(item) : renderFieldValue(item[column.key])}</div>\n </div>\n {cardOptions?.showDivider && i !== columns.length - 1 && <Divider className={cn('my-2', cardOptions?.dividerClassName)} />}\n </div>\n );\n })}\n </Card>\n );\n })\n ) : (\n <Card className={cn('w-full h-40 flex flex-col justify-center items-center p-4 shadow-sm text-foreground-400', cardOptions?.cardClassName)}>{emptyContent}</Card>\n )}\n </div>\n {pagination.total > pagination.limit && (\n <div className=\"flex justify-center\">\n <NextuiPagination\n className='mt-2'\n showControls\n showShadow\n size=\"sm\"\n radius=\"sm\"\n color=\"primary\"\n initialPage={1}\n total={Math.ceil(pagination.total / pagination.limit)}\n page={pagination.page}\n onChange={(currentPage) => {\n pagination.setData({\n page: currentPage,\n });\n if (autoScrollToTop && cardBoxRef.current) {\n scrollIntoTop(cardBoxRef.current);\n }\n }}\n {...nextuiPaginationProps}\n />\n </div>\n )}\n </div>\n );\n}\n\nfunction DefaultLoading({ loadingOptions }: { loadingOptions?: LoadingOptions }) {\n const type = loadingOptions?.type || 'skeleton';\n const skeletonOptions = loadingOptions?.skeleton;\n const spinnerOptions = loadingOptions?.spinner;\n const spinnerProps = spinnerOptions?.spinnerProps || {};\n\n if (type === 'skeleton') {\n return <SkeletonBox className={cn('mt-2 flex-col', skeletonOptions?.boxClassName)} skClassName={cn('h-[30px] rounded', skeletonOptions?.skeletonClassName)} line={skeletonOptions?.line || 5} />;\n }\n\n return (\n <div className={cn('w-full h-[100px] flex justify-center items-center', spinnerOptions?.boxClassName)}>\n <Spinner size=\"sm\" color=\"primary\" {...spinnerProps} />\n <div className={cn('ml-2 text-[#64748B] text-sm', spinnerOptions?.textClassName)}>{spinnerOptions?.text || 'Loading...'}</div>\n </div>\n );\n}\n\nfunction scrollIntoTop(target: HTMLElement) {\n if (target) {\n const { top } = target.getBoundingClientRect();\n window.scrollTo({\n top: top + window.scrollY - 100,\n behavior: 'smooth',\n });\n }\n}\n\nfunction CollapseBody<T>({\n data,\n rowKey,\n columns,\n extendedTables,\n rowCss,\n}: {\n data: T[];\n rowKey: string | number | symbol;\n columns: Column<T>[];\n extendedTables: ExtendedTable<any>[];\n rowCss?: string | ((item: T) => string | undefined);\n}) {\n return (\n <TableBody>\n {data.map((item, index) => {\n return <CollapseBodyRow key={item[rowKey] || index} item={item} columns={columns} extendedTables={extendedTables} rowCss={rowCss} />;\n })}\n </TableBody>\n );\n}\n\nfunction CollapseBodyRow<T>({ item, columns, extendedTables, rowCss }: { item: T; columns: Column<T>[]; extendedTables: ExtendedTable<any>[]; rowCss?: string | ((item: T) => string | undefined) }) {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <TableRow\n className={cn('text-xs cursor-pointer hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]', typeof rowCss === 'function' ? rowCss(item) : rowCss)}\n onClick={(e: any) => {\n const { nodeName } = e.target;\n if (nodeName === 'TD' || nodeName === 'svg') {\n setIsOpen((v) => !v);\n }\n }}\n >\n {columns.map((column) => {\n return (\n <TableCell key={column.key} className=\"max-w-[200px] overflow-auto\">\n {column.render ? column.render(item) : renderFieldValue(item[column.key])}\n </TableCell>\n );\n })}\n </TableRow>\n <TableRow className={cn(isOpen ? 'table-row' : 'hidden')}>\n <TableCell colSpan={columns.length}>\n {extendedTables.map((ex) => {\n const exColumns = ex.columns;\n const exRow = item[ex.key];\n return (\n <Table className=\"mt-[10px]\" key={ex.key}>\n <TableHeader>\n {exColumns.map((exC) => {\n return (\n <TableColumn key={exC.key} className=\"text-xs text-[#64748B] dark:text-gray-300\">\n {exC.label}\n </TableColumn>\n );\n })}\n </TableHeader>\n <TableBody>\n {exRow.map((exItem) => (\n <TableRow className=\"text-xs hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]\" key={exItem.key}>\n {exColumns.map((exC) => {\n return (\n <TableCell key={exC.key} className=\"max-w-[200px] overflow-auto\">\n {exC.render\n ? exC.render({\n ...exItem,\n $parent: item,\n })\n : renderFieldValue(exItem[exC.key])}\n </TableCell>\n );\n })}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n })}\n </TableCell>\n </TableRow>\n </>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuArrow = DropdownMenuPrimitive.Arrow\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md bg-white dark:bg-[#18181B] border dark:border-none p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg bg-white dark:bg-[#18181B] border dark:border-[#3e3e3e] p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n DropdownMenuArrow,\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { __spreadValues } from './chunk-6F7H4PAA.mjs';
2
2
 
3
- // node_modules/clsx/dist/clsx.m.js
3
+ // ../../node_modules/clsx/dist/clsx.mjs
4
4
  function r(e) {
5
5
  var t, f, n = "";
6
6
  if ("string" == typeof e || "number" == typeof e)
@@ -2511,4 +2511,4 @@ function cn(...inputs) {
2511
2511
 
2512
2512
  export { cn };
2513
2513
  //# sourceMappingURL=out.js.map
2514
- //# sourceMappingURL=chunk-WYGQ3Y4R.mjs.map
2514
+ //# sourceMappingURL=chunk-TMFAGW4V.mjs.map