{"_id":"@abaktiar/datagrid","_rev":"3-40588504782efd783ca071c216c321ef","name":"@abaktiar/datagrid","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@abaktiar/datagrid","version":"1.0.0","keywords":["react","datagrid","table","typescript","tanstack-table","data-table","excel-export","context-menu","pagination","filtering","sorting","virtualization","responsive"],"author":{"name":"abaktiar"},"license":"MIT","_id":"@abaktiar/datagrid@1.0.0","maintainers":[{"name":"abaktiar","email":"dev.baktiar@gmail.com"}],"homepage":"https://github.com/abaktiar/datagrid#readme","bugs":{"url":"https://github.com/abaktiar/datagrid/issues"},"dist":{"shasum":"547dc67aba94c0ac9d180a29ae9712919e32ce92","tarball":"https://registry.npmjs.org/@abaktiar/datagrid/-/datagrid-1.0.0.tgz","fileCount":10,"integrity":"sha512-uaVkJnmYJYJyCbTqOJWzl/ZQQbH7CVxKfTfnFdw8UrLWwED/YSEmYHjBkyHIjC1JcX1BVgijKILIrXnPn5WRLg==","signatures":[{"sig":"MEUCIAzovWgVJSeWyqDPq1J9oG9YVhEH6DHVCmTiKCeq/H+KAiEA048htjgqEpUtvVAPtTzoZLkMST2HbQAiKRR0DNAq4w0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353198},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./styles":"./dist/datagrid.css"},"gitHead":"df04d30c32c4c67d382efaefc11f40ff07436210","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build","preview":"vite preview","build:lib":"vite build --config vite.lib.config.ts","publish:npm":"npm publish --access public","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"abaktiar","email":"dev.baktiar@gmail.com"},"repository":{"url":"git+https://github.com/abaktiar/datagrid.git","type":"git"},"_npmVersion":"10.8.2","description":"A powerful, feature-rich React DataGrid component with TypeScript support, built on TanStack Table","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.0","dependencies":{"xlsx":"^0.18.5","@tanstack/react-table":"^8.21.3","@tanstack/react-virtual":"^3.13.9"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","eslint":"^9.25.0","terser":"^5.40.0","globals":"^16.0.0","react-dom":"^19.1.0","@eslint/js":"^9.25.0","typescript":"~5.8.3","@types/react":"^19.1.2","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.1.2","typescript-eslint":"^8.30.1","@vitejs/plugin-react":"^4.4.1","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-react-refresh":"^0.4.19"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/datagrid_1.0.0_1748454649854_0.40701244843153805","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@abaktiar/datagrid","version":"1.0.1","keywords":["react","datagrid","table","typescript","tanstack-table","data-table","excel-export","context-menu","pagination","filtering","sorting","virtualization","responsive"],"author":{"name":"abaktiar"},"license":"MIT","_id":"@abaktiar/datagrid@1.0.1","maintainers":[{"name":"abaktiar","email":"dev.baktiar@gmail.com"}],"homepage":"https://github.com/abaktiar/datagrid#readme","bugs":{"url":"https://github.com/abaktiar/datagrid/issues"},"dist":{"shasum":"954378c639884e1a0c877d620ca760885775553c","tarball":"https://registry.npmjs.org/@abaktiar/datagrid/-/datagrid-1.0.1.tgz","fileCount":10,"integrity":"sha512-c672KmD2TNMRQTA/sLNn1iIvt4KjhsJIV282K0nLBDr3Ne4W5iDQI2Me9lWr4ZmIPnu2ny8ErlelmGQUp+YDgA==","signatures":[{"sig":"MEYCIQCb+h5QtG4ywYmAu23pn7d6YNAG8lHMPn8iZ52UQqRr9wIhAKoK0XeXaSILETy8SLUEsk4WyIKYsWGMNz0Qh1Zppug+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353198},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./styles":"./dist/datagrid.css"},"gitHead":"df04d30c32c4c67d382efaefc11f40ff07436210","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build","preview":"vite preview","build:lib":"vite build --config vite.lib.config.ts","publish:npm":"npm publish --access public","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"abaktiar","email":"dev.baktiar@gmail.com"},"repository":{"url":"git+https://github.com/abaktiar/datagrid.git","type":"git"},"_npmVersion":"10.8.2","description":"A powerful, feature-rich React DataGrid component with TypeScript support, built on TanStack Table","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.0","dependencies":{"xlsx":"^0.18.5","@tanstack/react-table":"^8.21.3","@tanstack/react-virtual":"^3.13.9"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","eslint":"^9.25.0","terser":"^5.40.0","globals":"^16.0.0","react-dom":"^19.1.0","@eslint/js":"^9.25.0","typescript":"~5.8.3","@types/react":"^19.1.2","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.1.2","typescript-eslint":"^8.30.1","@vitejs/plugin-react":"^4.4.1","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-react-refresh":"^0.4.19"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/datagrid_1.0.1_1748454707116_0.7213591230625664","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@abaktiar/datagrid","version":"1.2.0","description":"A powerful, feature-rich React DataGrid component with TypeScript support, built on TanStack Table. Features customizable floating action dock, Excel/CSV export, and advanced row selection.","author":{"name":"abaktiar"},"license":"MIT","homepage":"https://github.com/abaktiar/datagrid#readme","repository":{"type":"git","url":"git+https://github.com/abaktiar/datagrid.git"},"bugs":{"url":"https://github.com/abaktiar/datagrid/issues"},"keywords":["react","datagrid","table","typescript","tanstack-table","data-table","excel-export","csv-export","floating-action-dock","floating-buttons","row-selection","bulk-actions","context-menu","pagination","filtering","sorting","virtualization","responsive","customizable-buttons","material-design","glassmorphism"],"main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","sideEffects":["**/*.css"],"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./styles":"./dist/datagrid.css"},"type":"module","scripts":{"dev":"vite","build":"tsc -b && vite build","build:lib":"vite build --config vite.lib.config.ts","lint":"eslint .","preview":"vite preview","prepublishOnly":"npm run build:lib","publish:npm":"npm publish --access public"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"dependencies":{"@tanstack/react-table":"^8.21.3","@tanstack/react-virtual":"^3.13.9","xlsx":"^0.18.5"},"devDependencies":{"@eslint/js":"^9.25.0","@types/react":"^19.1.2","@types/react-dom":"^19.1.2","@vitejs/plugin-react":"^4.4.1","eslint":"^9.25.0","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-react-refresh":"^0.4.19","globals":"^16.0.0","react":"^19.1.0","react-dom":"^19.1.0","terser":"^5.40.0","typescript":"~5.8.3","typescript-eslint":"^8.30.1","vite":"^6.3.5","vite-plugin-dts":"^4.5.4"},"_id":"@abaktiar/datagrid@1.2.0","gitHead":"9d35c051594e7f3b284316da5f0e600527eb91bc","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-AW8x5ocqirfEtWNfkKzK9lPlrr8T/rl36C8kKo+/ghcxYL/mgfqbVJW62CwOb6kpMm1f6cZtfoPWa+BZHyRF2w==","shasum":"9a62b31f4fb4df389add05ba6459e036bb57e968","tarball":"https://registry.npmjs.org/@abaktiar/datagrid/-/datagrid-1.2.0.tgz","fileCount":10,"unpackedSize":665390,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFH+iGVg4heNZAOQ8e7J0Ny4sPHtM3E9qZ89CpTgXRpCAiBlTrMO44vJxFumU3ThhAkRDkkfM/+yFzQ2m8dFPa5VMA=="}]},"_npmUser":{"name":"abaktiar","email":"dev.baktiar@gmail.com"},"directories":{},"maintainers":[{"name":"abaktiar","email":"dev.baktiar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/datagrid_1.2.0_1748615277312_0.6816901196859897"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-28T17:50:49.732Z","modified":"2025-05-30T14:27:57.637Z","1.0.0":"2025-05-28T17:50:50.127Z","1.0.1":"2025-05-28T17:51:47.303Z","1.2.0":"2025-05-30T14:27:57.486Z"},"bugs":{"url":"https://github.com/abaktiar/datagrid/issues"},"author":{"name":"abaktiar"},"license":"MIT","homepage":"https://github.com/abaktiar/datagrid#readme","keywords":["react","datagrid","table","typescript","tanstack-table","data-table","excel-export","csv-export","floating-action-dock","floating-buttons","row-selection","bulk-actions","context-menu","pagination","filtering","sorting","virtualization","responsive","customizable-buttons","material-design","glassmorphism"],"repository":{"type":"git","url":"git+https://github.com/abaktiar/datagrid.git"},"description":"A powerful, feature-rich React DataGrid component with TypeScript support, built on TanStack Table. Features customizable floating action dock, Excel/CSV export, and advanced row selection.","maintainers":[{"name":"abaktiar","email":"dev.baktiar@gmail.com"}],"readme":"# @abaktiar/datagrid\n\nA powerful, feature-rich React DataGrid component with TypeScript support, built on TanStack Table.\n\n[![npm version](https://badge.fury.io/js/%40abaktiar%2Fdatagrid.svg)](https://badge.fury.io/js/%40abaktiar%2Fdatagrid)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## 🚀 Features\n\n- **🎯 TypeScript Support** - Fully typed with comprehensive TypeScript definitions\n- **⚡ High Performance** - Built on TanStack Table with virtualization support\n- **🎨 Customizable Styling** - Multiple themes (light/dark) and density options\n- **📊 Rich Data Operations** - Sorting, filtering, pagination, and global search\n- **🖱️ Context Menus** - Powerful right-click context menus for cells and tables\n- **📤 Export Capabilities** - Export to CSV, JSON, and Excel formats\n- **🚀 Floating Action Dock** - Customizable floating buttons for bulk operations\n- **🎨 Button Customization** - Custom icons, variants, and complete button components\n- **� Flexible Configuration** - Extensive customization options\n- **📱 Responsive Design** - Mobile-friendly with overflow handling\n- **🎛️ Advanced Features** - Row selection, column resizing, and more\n\n## 📦 Installation\n\n```bash\nnpm install @abaktiar/datagrid\n```\n\nor\n\n```bash\nyarn add @abaktiar/datagrid\n```\n\nor\n\n```bash\npnpm add @abaktiar/datagrid\n```\n\n## 🏗️ Peer Dependencies\n\nMake sure you have the required peer dependencies installed:\n\n```bash\nnpm install react react-dom\n```\n\n## 📚 Basic Usage\n\n```tsx\nimport React from 'react';\nimport { DataGrid, DataGridColumn } from '@abaktiar/datagrid';\nimport '@abaktiar/datagrid/styles';\n\ninterface User {\n  id: number;\n  name: string;\n  email: string;\n  age: number;\n}\n\nconst data: User[] = [\n  { id: 1, name: 'John Doe', email: 'john@example.com', age: 30 },\n  { id: 2, name: 'Jane Smith', email: 'jane@example.com', age: 25 },\n  // ... more data\n];\n\nconst columns: DataGridColumn<User>[] = [\n  {\n    accessorKey: 'id',\n    header: 'ID',\n    size: 80,\n  },\n  {\n    accessorKey: 'name',\n    header: 'Name',\n    size: 200,\n  },\n  {\n    accessorKey: 'email',\n    header: 'Email',\n    size: 250,\n  },\n  {\n    accessorKey: 'age',\n    header: 'Age',\n    size: 100,\n  },\n];\n\nfunction App() {\n  return (\n    <DataGrid\n      data={data}\n      columns={columns}\n      enableSorting\n      enableFiltering\n      enablePagination\n      enableRowSelection\n      pageSize={10}\n    />\n  );\n}\n\nexport default App;\n```\n\n## 🎨 Styling\n\nImport the CSS file in your application:\n\n```tsx\nimport '@abaktiar/datagrid/styles';\n```\n\n## 🔧 Advanced Usage\n\n### Context Menus\n\n```tsx\nimport { \n  DataGrid, \n  createCopyValueAction, \n  createEmailAction,\n  createCommonCellActions \n} from '@abaktiar/datagrid';\n\nconst columns: DataGridColumn<User>[] = [\n  {\n    accessorKey: 'email',\n    header: 'Email',\n    cellConfig: {\n      contextMenu: {\n        items: [\n          createCopyValueAction(),\n          createEmailAction(),\n          ...createCommonCellActions(),\n        ],\n      },\n    },\n  },\n];\n```\n\n### Excel Export\n\n```tsx\nimport { \n  DataGrid, \n  createExportExcelAction,\n  createExcelExportBundle \n} from '@abaktiar/datagrid';\n\nconst tableContextMenu = {\n  items: [\n    createExportExcelAction('users.xlsx'),\n    ...createExcelExportBundle(),\n  ],\n};\n\n<DataGrid\n  data={data}\n  columns={columns}\n  tableContextMenu={tableContextMenu}\n/>\n```\n\n### Floating Action Dock\n\nThe Floating Action Dock provides customizable floating buttons for bulk operations on selected rows:\n\n```tsx\nimport {\n  DataGrid,\n  createCommonFloatingActions,\n  createExportSelectedToExcelAction,\n  createFloatingActionSeparator\n} from '@abaktiar/datagrid';\n\n// Basic floating dock with built-in actions\n<DataGrid\n  data={data}\n  columns={columns}\n  enableRowSelection={true}\n  floatingActionDock={{\n    enabled: true,\n    position: 'bottom-center',\n    showCount: true,\n    items: createCommonFloatingActions({\n      enableExportExcel: true,\n      enableExportCSV: true,\n    }),\n  }}\n/>\n\n// Advanced customization with custom buttons\nconst CustomExcelButton = ({ onClick, disabled, children }) => (\n  <button\n    onClick={onClick}\n    disabled={disabled}\n    style={{\n      background: 'linear-gradient(135deg, #2E8B57, #228B22)',\n      color: 'white',\n      border: 'none',\n      borderRadius: '8px',\n      padding: '10px 16px',\n      fontSize: '13px',\n      fontWeight: '600',\n      display: 'flex',\n      alignItems: 'center',\n      gap: '8px',\n    }}\n  >\n    {children}\n  </button>\n);\n\n<DataGrid\n  data={data}\n  columns={columns}\n  enableRowSelection={true}\n  floatingActionDock={{\n    enabled: true,\n    position: 'bottom-center',\n    items: [\n      // Customized built-in actions\n      ...createCommonFloatingActions({\n        excelOptions: {\n          label: 'Premium Excel Export',\n          icon: '🚀',\n          customButton: CustomExcelButton,\n        },\n        csvOptions: {\n          label: 'Export CSV',\n          icon: '📊',\n          variant: 'primary',\n        },\n      }),\n      \n      // Add separator\n      createFloatingActionSeparator(),\n      \n      // Custom business actions\n      {\n        label: 'Archive Selected',\n        icon: '📦',\n        variant: 'default',\n        onClick: (selectedData) => {\n          console.log('Archiving:', selectedData);\n        },\n      },\n    ],\n  }}\n/>\n```\n\n#### Floating Dock Configuration\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `enabled` | `boolean` | `false` | Enable the floating dock |\n| `position` | `'bottom-left' \\| 'bottom-center' \\| 'bottom-right' \\| 'top-left' \\| 'top-center' \\| 'top-right'` | `'bottom-center'` | Dock position |\n| `showCount` | `boolean` | `true` | Show selected items count |\n| `items` | `FloatingActionItem[]` | `[]` | Array of action items |\n\n#### Creating Custom Floating Actions\n\n```tsx\n// Built-in export actions with customization\ncreateExportSelectedToExcelAction({\n  // File options\n  filename: 'my-export.xlsx',\n  columnMapping: { id: 'ID', name: 'Full Name' },\n  \n  // Visual customization\n  label: 'Download Excel',\n  icon: '💾',\n  variant: 'success',\n  className: 'my-custom-class',\n  customButton: MyCustomButton,\n})\n\n// Completely custom action\n{\n  label: 'Custom Action',\n  icon: '⭐',\n  variant: 'primary',\n  onClick: (selectedData, selectedIndices) => {\n    // Your custom logic here\n    console.log('Selected:', selectedData);\n  },\n  customButton: MyCustomButtonComponent, // Optional\n}\n```\n\n### Custom Cell Formatting\n\n```tsx\nconst columns: DataGridColumn<User>[] = [\n  {\n    accessorKey: 'age',\n    header: 'Age',\n    cellConfig: {\n      format: (value) => `${value} years old`,\n      style: (value) => ({\n        color: value < 30 ? 'green' : 'blue',\n        fontWeight: 'bold',\n      }),\n    },\n  },\n];\n```\n\n### Controlled State\n\n```tsx\nimport React, { useState } from 'react';\nimport { DataGrid, SortingState, PaginationState } from '@abaktiar/datagrid';\n\nfunction ControlledDataGrid() {\n  const [sorting, setSorting] = useState<SortingState>([]);\n  const [pagination, setPagination] = useState<PaginationState>({\n    pageIndex: 0,\n    pageSize: 10,\n  });\n\n  return (\n    <DataGrid\n      data={data}\n      columns={columns}\n      sorting={sorting}\n      onSortingChange={setSorting}\n      pagination={pagination}\n      onPaginationChange={setPagination}\n      manualPagination\n      rowCount={totalRows}\n    />\n  );\n}\n```\n\n## 📖 API Reference\n\n### DataGrid Props\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `data` | `T[]` | **required** | Array of data objects |\n| `columns` | `DataGridColumn<T>[]` | **required** | Column definitions |\n| `enableSorting` | `boolean` | `true` | Enable column sorting |\n| `enableFiltering` | `boolean` | `true` | Enable column filtering |\n| `enablePagination` | `boolean` | `true` | Enable pagination |\n| `enableRowSelection` | `boolean` | `false` | Enable row selection |\n| `enableColumnResizing` | `boolean` | `true` | Enable column resizing |\n| `enableGlobalSearch` | `boolean` | `true` | Enable global search |\n| `pageSize` | `number` | `10` | Default page size |\n| `density` | `'compact' \\| 'comfortable' \\| 'spacious'` | `'comfortable'` | Table density |\n| `theme` | `'light' \\| 'dark' \\| 'auto'` | `'light'` | Theme |\n| `loading` | `boolean` | `false` | Show loading indicator |\n| `floatingActionDock` | `FloatingActionDockConfig` | `undefined` | Floating action dock configuration |\n\n### Column Configuration\n\n```tsx\ninterface DataGridColumn<T> {\n  accessorKey: string;\n  header: string;\n  size?: number;\n  minSize?: number;\n  maxSize?: number;\n  enableSorting?: boolean;\n  enableFiltering?: boolean;\n  enableResizing?: boolean;\n  \n  // Cell configuration\n  cellConfig?: {\n    format?: (value: any, row: T) => React.ReactNode;\n    style?: React.CSSProperties | ((value: any, row: T) => React.CSSProperties);\n    className?: string | ((value: any, row: T) => string);\n    align?: 'left' | 'center' | 'right';\n    tooltip?: boolean | ((value: any, row: T) => string);\n    contextMenu?: {\n      items: ContextMenuItem<T>[];\n    };\n  };\n  \n  // Header configuration\n  headerConfig?: {\n    align?: 'left' | 'center' | 'right';\n    className?: string;\n    tooltip?: string;\n  };\n}\n```\n\n## 🛠️ Utility Functions\n\n### Context Menu Actions\n\n- `createCopyValueAction()` - Copy cell value to clipboard\n- `createCopyRowAction()` - Copy entire row data\n- `createEmailAction()` - Open email client\n- `createPhoneAction()` - Handle phone number actions\n- `createOpenUrlAction()` - Open URLs in new tab\n- `createGoogleSearchAction()` - Search value on Google\n\n### Table Actions\n\n- `createExportCsvAction()` - Export table to CSV\n- `createExportJsonAction()` - Export table to JSON\n- `createExportExcelAction()` - Export table to Excel\n- `createPrintAction()` - Print table\n- `createRefreshAction()` - Refresh table data\n\n### Floating Action Utilities\n\n- `createExportSelectedToExcelAction()` - Excel export for selected rows\n- `createExportSelectedToCSVAction()` - CSV export for selected rows\n- `createFloatingActionSeparator()` - Visual separator for floating actions\n- `createCommonFloatingActions()` - Bundle of common floating actions\n\n### Excel Export Utilities\n\n- `createExcelExportBundle()` - Complete Excel export menu\n- `createQuickExcelExport()` - Quick export function\n- `excelExportPresets` - Predefined export configurations\n\n## 🎨 Theming & Customization\n\nThe DataGrid supports multiple themes and customization options:\n\n```tsx\n<DataGrid\n  data={data}\n  columns={columns}\n  theme=\"dark\"\n  density=\"compact\"\n  className=\"my-custom-grid\"\n  tableClassName=\"my-table\"\n  headerClassName=\"my-header\"\n  bodyClassName=\"my-body\"\n/>\n```\n\n### CSS Custom Properties\n\nYou can customize the appearance using CSS custom properties:\n\n```css\n:root {\n  --datagrid-primary-color: #3b82f6;\n  --datagrid-border-color: #e5e7eb;\n  --datagrid-header-bg: #f9fafb;\n  --datagrid-row-hover-bg: #f3f4f6;\n}\n```\n\n## 🔍 Search Configuration\n\n```tsx\n<DataGrid\n  data={data}\n  columns={columns}\n  searchConfig={{\n    enabled: true,\n    placeholder: 'Search users...',\n    position: 'top',\n    showIcon: true,\n    debounceMs: 300,\n  }}\n/>\n```\n\n## 📱 Responsive Design\n\nThe DataGrid automatically handles overflow and provides smooth scrolling on mobile devices:\n\n```tsx\n<DataGrid\n  data={data}\n  columns={columns}\n  density=\"compact\" // Better for mobile\n  searchConfig={{ position: 'top' }}\n/>\n```\n\n## 🚀 Performance Tips\n\n1. **Use `memo`** for custom cell renderers\n2. **Virtualization** is automatically handled for large datasets\n3. **Debounced search** reduces unnecessary re-renders\n4. **Column sizing** - Set appropriate default sizes\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🔗 Links\n\n- [GitHub Repository](https://github.com/abaktiar/datagrid)\n- [npm Package](https://www.npmjs.com/package/@abaktiar/datagrid)\n- [Issues](https://github.com/abaktiar/datagrid/issues)\n\n## 📝 Changelog\n\n### 1.1.0\n- 🚀 **NEW: Floating Action Dock** - Customizable floating buttons for bulk operations\n- 🎨 **NEW: Button Customization** - Custom icons, variants, and complete button components\n- 📊 **Enhanced Export** - Floating Excel and CSV export for selected rows\n- ⚡ **Smooth Animations** - Polished enter/exit animations for floating dock\n- 🔧 **Flexible Configuration** - Extensive customization options for floating actions\n- 📚 **Comprehensive Examples** - Multiple styling themes (Material, Glass, Neon)\n\n### 1.0.1\n- Bug fixes and performance improvements\n- Enhanced TypeScript definitions\n\n### 1.0.0\n- Initial release\n- Full TypeScript support\n- TanStack Table integration\n- Context menu functionality\n- Excel export capabilities\n- Responsive design\n- Multiple themes and densities\n\n---\n\nMade with ❤️ by [abaktiar](https://github.com/abaktiar)\n","readmeFilename":"README.md"}