{"version":3,"file":"index.mjs","sources":["../../../../src/lib/ui/data/index.tsx"],"sourcesContent":["/**\n * @file Data Components Index\n * @description Export all data display components with code splitting support\n */\n\nimport { lazy, Suspense, type ComponentType, type ReactNode } from 'react';\n\n// ============================================================================\n// Direct Exports (for SSR and immediate use)\n// ============================================================================\n\nexport {\n  DataTable,\n  type DataTableProps,\n  type Column,\n  type SortConfig,\n  type PaginationConfig,\n} from './DataTable';\n\nexport {\n  VirtualizedDataTable,\n  type VirtualizedDataTableProps,\n  type VirtualizedColumn,\n} from './VirtualizedDataTable';\n\n// ============================================================================\n// Lazy Exports (for code splitting - use with Suspense)\n// ============================================================================\n\n/**\n * Lazy-loaded DataTable component for code splitting\n * Use when the table is not immediately visible (e.g., below the fold, in tabs)\n *\n * @example\n * ```tsx\n * import { LazyDataTable, DataTableFallback } from '@/lib/ui/data';\n *\n * <Suspense fallback={<DataTableFallback />}>\n *   <LazyDataTable data={data} columns={columns} rowKey=\"id\" />\n * </Suspense>\n * ```\n */\nexport const LazyDataTable = lazy(async () =>\n  import('./DataTable').then((module) => ({ default: module.DataTable as ComponentType<unknown> }))\n);\n\n// ============================================================================\n// Fallback Components\n// ============================================================================\n\n/**\n * Default fallback component for lazy-loaded DataTable\n */\nexport function DataTableFallback({\n  rows = 5,\n  columns = 4,\n}: {\n  rows?: number;\n  columns?: number;\n}): ReactNode {\n  return (\n    <div\n      className=\"data-table-skeleton\"\n      role=\"status\"\n      aria-label=\"Loading table...\"\n      style={{\n        width: '100%',\n        borderRadius: '0.25rem',\n        border: '1px solid #e5e7eb',\n        overflow: 'hidden',\n      }}\n    >\n      {/* Header skeleton */}\n      <div\n        style={{\n          display: 'flex',\n          backgroundColor: '#f9fafb',\n          borderBottom: '1px solid #e5e7eb',\n          padding: '0.75rem 1rem',\n          gap: '1rem',\n        }}\n      >\n        {Array.from({ length: columns }).map((_, i) => (\n          <div\n            key={`header-${i}`}\n            style={{\n              flex: 1,\n              height: '1rem',\n              backgroundColor: '#e5e7eb',\n              borderRadius: '0.25rem',\n              animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n            }}\n          />\n        ))}\n      </div>\n\n      {/* Row skeletons */}\n      {Array.from({ length: rows }).map((_, rowIndex) => (\n        <div\n          key={`row-${rowIndex}`}\n          style={{\n            display: 'flex',\n            padding: '0.75rem 1rem',\n            gap: '1rem',\n            borderBottom: rowIndex < rows - 1 ? '1px solid #e5e7eb' : 'none',\n          }}\n        >\n          {Array.from({ length: columns }).map((_, colIndex) => (\n            <div\n              key={`cell-${rowIndex}-${colIndex}`}\n              style={{\n                flex: 1,\n                height: '1rem',\n                backgroundColor: '#f3f4f6',\n                borderRadius: '0.25rem',\n                animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n                animationDelay: `${(rowIndex * columns + colIndex) * 50}ms`,\n              }}\n            />\n          ))}\n        </div>\n      ))}\n\n      {/* CSS for pulse animation */}\n      <style>{`\n        @keyframes pulse {\n          0%, 100% { opacity: 1; }\n          50% { opacity: 0.5; }\n        }\n      `}</style>\n    </div>\n  );\n}\n\n// ============================================================================\n// Wrapped Components with Suspense\n// ============================================================================\n\n/**\n * Pre-wrapped LazyDataTable with built-in Suspense boundary\n * Convenience component for simpler usage without explicit Suspense\n *\n * @example\n * ```tsx\n * import { SuspenseDataTable } from '@/lib/ui/data';\n *\n * <SuspenseDataTable\n *   data={data}\n *   columns={columns}\n *   rowKey=\"id\"\n *   fallback={<CustomSkeleton />}\n * />\n * ```\n */\nexport function SuspenseDataTable({\n  fallback,\n  ...props\n}: {\n  fallback?: ReactNode;\n} & Parameters<typeof LazyDataTable>[0]): ReactNode {\n  return (\n    <Suspense fallback={fallback ?? <DataTableFallback />}>\n      <LazyDataTable {...props} />\n    </Suspense>\n  );\n}\n"],"names":["LazyDataTable","lazy","module","DataTableFallback","rows","columns","jsxs","jsx","_","i","rowIndex","colIndex","SuspenseDataTable","fallback","props","Suspense"],"mappings":";;AA0CO,MAAMA,IAAgBC;AAAA,EAAK,YAChC,OAAO,iBAAa,EAAE,KAAK,CAACC,OAAY,EAAE,SAASA,EAAO,YAAsC;AAClG;AASO,SAASC,EAAkB;AAAA,EAChC,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AACZ,GAGc;AACZ,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAO;AAAA,QACL,OAAO;AAAA,QACP,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAIZ,UAAA;AAAA,QAAA,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,SAAS;AAAA,cACT,iBAAiB;AAAA,cACjB,cAAc;AAAA,cACd,SAAS;AAAA,cACT,KAAK;AAAA,YAAA;AAAA,YAGN,UAAA,MAAM,KAAK,EAAE,QAAQF,GAAS,EAAE,IAAI,CAACG,GAAGC,MACvC,gBAAAF;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,OAAO;AAAA,kBACL,MAAM;AAAA,kBACN,QAAQ;AAAA,kBACR,iBAAiB;AAAA,kBACjB,cAAc;AAAA,kBACd,WAAW;AAAA,gBAAA;AAAA,cACb;AAAA,cAPK,UAAUE,CAAC;AAAA,YAAA,CASnB;AAAA,UAAA;AAAA,QAAA;AAAA,QAIF,MAAM,KAAK,EAAE,QAAQL,EAAA,CAAM,EAAE,IAAI,CAACI,GAAGE,MACpC,gBAAAH;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,OAAO;AAAA,cACL,SAAS;AAAA,cACT,SAAS;AAAA,cACT,KAAK;AAAA,cACL,cAAcG,IAAWN,IAAO,IAAI,sBAAsB;AAAA,YAAA;AAAA,YAG3D,UAAA,MAAM,KAAK,EAAE,QAAQC,GAAS,EAAE,IAAI,CAACG,GAAGG,MACvC,gBAAAJ;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,OAAO;AAAA,kBACL,MAAM;AAAA,kBACN,QAAQ;AAAA,kBACR,iBAAiB;AAAA,kBACjB,cAAc;AAAA,kBACd,WAAW;AAAA,kBACX,gBAAgB,IAAIG,IAAWL,IAAUM,KAAY,EAAE;AAAA,gBAAA;AAAA,cACzD;AAAA,cARK,QAAQD,CAAQ,IAAIC,CAAQ;AAAA,YAAA,CAUpC;AAAA,UAAA;AAAA,UApBI,OAAOD,CAAQ;AAAA,QAAA,CAsBvB;AAAA,0BAGA,SAAA,EAAO,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAKN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGR;AAsBO,SAASE,EAAkB;AAAA,EAChC,UAAAC;AAAA,EACA,GAAGC;AACL,GAEoD;AAClD,SACE,gBAAAP,EAACQ,GAAA,EAAS,UAAUF,KAAY,gBAAAN,EAACJ,GAAA,CAAA,CAAkB,GACjD,UAAA,gBAAAI,EAACP,GAAA,EAAe,GAAGc,EAAA,CAAO,GAC5B;AAEJ;"}