@tinisoftin/tsdatagrid 1.0.0
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/README.md +1272 -0
- package/dist/components/TSDataGrid.vue.d.ts +1285 -0
- package/dist/components/TSDataGrid.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridActiveFilters.vue.d.ts +24 -0
- package/dist/components/TSDataGridActiveFilters.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridBody.vue.d.ts +259 -0
- package/dist/components/TSDataGridBody.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridCell.vue.d.ts +83 -0
- package/dist/components/TSDataGridCell.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridColumnChooser.vue.d.ts +56 -0
- package/dist/components/TSDataGridColumnChooser.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridContextMenu.vue.d.ts +46 -0
- package/dist/components/TSDataGridContextMenu.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridFilter.vue.d.ts +92 -0
- package/dist/components/TSDataGridFilter.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridFooter.vue.d.ts +95 -0
- package/dist/components/TSDataGridFooter.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridGroupPanel.vue.d.ts +47 -0
- package/dist/components/TSDataGridGroupPanel.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridHeader.vue.d.ts +221 -0
- package/dist/components/TSDataGridHeader.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridRow.vue.d.ts +83 -0
- package/dist/components/TSDataGridRow.vue.d.ts.map +1 -0
- package/dist/components/TSDataGridToolbar.vue.d.ts +139 -0
- package/dist/components/TSDataGridToolbar.vue.d.ts.map +1 -0
- package/dist/composables/index.d.ts +28 -0
- package/dist/composables/index.d.ts.map +1 -0
- package/dist/composables/useClipboard.d.ts +863 -0
- package/dist/composables/useClipboard.d.ts.map +1 -0
- package/dist/composables/useColumnChooser.d.ts +36 -0
- package/dist/composables/useColumnChooser.d.ts.map +1 -0
- package/dist/composables/useColumnReorder.d.ts +40 -0
- package/dist/composables/useColumnReorder.d.ts.map +1 -0
- package/dist/composables/useColumnResize.d.ts +36 -0
- package/dist/composables/useColumnResize.d.ts.map +1 -0
- package/dist/composables/useContextMenu.d.ts +55 -0
- package/dist/composables/useContextMenu.d.ts.map +1 -0
- package/dist/composables/useDataSource.d.ts +1770 -0
- package/dist/composables/useDataSource.d.ts.map +1 -0
- package/dist/composables/useEditing.d.ts +54 -0
- package/dist/composables/useEditing.d.ts.map +1 -0
- package/dist/composables/useExport.d.ts +72 -0
- package/dist/composables/useExport.d.ts.map +1 -0
- package/dist/composables/useFiltering.d.ts +42 -0
- package/dist/composables/useFiltering.d.ts.map +1 -0
- package/dist/composables/useGridApi.d.ts +85 -0
- package/dist/composables/useGridApi.d.ts.map +1 -0
- package/dist/composables/useGrouping.d.ts +879 -0
- package/dist/composables/useGrouping.d.ts.map +1 -0
- package/dist/composables/useInfiniteScroll.d.ts +49 -0
- package/dist/composables/useInfiniteScroll.d.ts.map +1 -0
- package/dist/composables/useKeyboardNavigation.d.ts +47 -0
- package/dist/composables/useKeyboardNavigation.d.ts.map +1 -0
- package/dist/composables/useLoadingState.d.ts +36 -0
- package/dist/composables/useLoadingState.d.ts.map +1 -0
- package/dist/composables/usePagination.d.ts +45 -0
- package/dist/composables/usePagination.d.ts.map +1 -0
- package/dist/composables/useRowExpansion.d.ts +47 -0
- package/dist/composables/useRowExpansion.d.ts.map +1 -0
- package/dist/composables/useSearch.d.ts +97 -0
- package/dist/composables/useSearch.d.ts.map +1 -0
- package/dist/composables/useSelection.d.ts +32 -0
- package/dist/composables/useSelection.d.ts.map +1 -0
- package/dist/composables/useSorting.d.ts +859 -0
- package/dist/composables/useSorting.d.ts.map +1 -0
- package/dist/composables/useStatePersistence.d.ts +26 -0
- package/dist/composables/useStatePersistence.d.ts.map +1 -0
- package/dist/composables/useSummary.d.ts +49 -0
- package/dist/composables/useSummary.d.ts.map +1 -0
- package/dist/composables/useUndo.d.ts +27 -0
- package/dist/composables/useUndo.d.ts.map +1 -0
- package/dist/composables/useVirtualization.d.ts +40 -0
- package/dist/composables/useVirtualization.d.ts.map +1 -0
- package/dist/html2canvas.esm-1a1724a1.js +4886 -0
- package/dist/index-541cb5f8.js +38398 -0
- package/dist/index.d.ts +108 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.es-713282db.js +5771 -0
- package/dist/plugin.d.ts +22 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/purify.es-35a15df8.js +480 -0
- package/dist/style.css +1 -0
- package/dist/tsdatagrid.es.js +358 -0
- package/dist/tsdatagrid.umd.js +450 -0
- package/dist/types/core/base.d.ts +143 -0
- package/dist/types/core/base.d.ts.map +1 -0
- package/dist/types/core/column.d.ts +354 -0
- package/dist/types/core/column.d.ts.map +1 -0
- package/dist/types/core/datasource.d.ts +247 -0
- package/dist/types/core/datasource.d.ts.map +1 -0
- package/dist/types/core/events.d.ts +297 -0
- package/dist/types/core/events.d.ts.map +1 -0
- package/dist/types/core/models.d.ts +74 -0
- package/dist/types/core/models.d.ts.map +1 -0
- package/dist/types/features/accessibility.d.ts +75 -0
- package/dist/types/features/accessibility.d.ts.map +1 -0
- package/dist/types/features/editing.d.ts +185 -0
- package/dist/types/features/editing.d.ts.map +1 -0
- package/dist/types/features/export.d.ts +145 -0
- package/dist/types/features/export.d.ts.map +1 -0
- package/dist/types/features/filtering.d.ts +193 -0
- package/dist/types/features/filtering.d.ts.map +1 -0
- package/dist/types/features/grouping.d.ts +148 -0
- package/dist/types/features/grouping.d.ts.map +1 -0
- package/dist/types/features/keyboard.d.ts +126 -0
- package/dist/types/features/keyboard.d.ts.map +1 -0
- package/dist/types/features/pagination.d.ts +85 -0
- package/dist/types/features/pagination.d.ts.map +1 -0
- package/dist/types/features/searching.d.ts +90 -0
- package/dist/types/features/searching.d.ts.map +1 -0
- package/dist/types/features/selection.d.ts +99 -0
- package/dist/types/features/selection.d.ts.map +1 -0
- package/dist/types/features/sorting.d.ts +81 -0
- package/dist/types/features/sorting.d.ts.map +1 -0
- package/dist/types/features/summary.d.ts +99 -0
- package/dist/types/features/summary.d.ts.map +1 -0
- package/dist/types/features/virtualization.d.ts +88 -0
- package/dist/types/features/virtualization.d.ts.map +1 -0
- package/dist/types/index.d.ts +60 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/state/grid-state.d.ts +70 -0
- package/dist/types/state/grid-state.d.ts.map +1 -0
- package/dist/types/state/persistence.d.ts +65 -0
- package/dist/types/state/persistence.d.ts.map +1 -0
- package/dist/types/ui/styling.d.ts +72 -0
- package/dist/types/ui/styling.d.ts.map +1 -0
- package/dist/types/ui/templates.d.ts +80 -0
- package/dist/types/ui/templates.d.ts.map +1 -0
- package/dist/types/ui/toolbar.d.ts +63 -0
- package/dist/types/ui/toolbar.d.ts.map +1 -0
- package/dist/types/validation/validators.d.ts +134 -0
- package/dist/types/validation/validators.d.ts.map +1 -0
- package/dist/utils/accessibility.d.ts +35 -0
- package/dist/utils/accessibility.d.ts.map +1 -0
- package/dist/utils/array.d.ts +88 -0
- package/dist/utils/array.d.ts.map +1 -0
- package/dist/utils/cache.d.ts +92 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/clipboard.d.ts +25 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/column-searcher.d.ts +44 -0
- package/dist/utils/column-searcher.d.ts.map +1 -0
- package/dist/utils/constants.d.ts +76 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/date.d.ts +101 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/dom.d.ts +128 -0
- package/dist/utils/dom.d.ts.map +1 -0
- package/dist/utils/error-handling.d.ts +190 -0
- package/dist/utils/error-handling.d.ts.map +1 -0
- package/dist/utils/export.d.ts +37 -0
- package/dist/utils/export.d.ts.map +1 -0
- package/dist/utils/formatters.d.ts +60 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/index.d.ts +25 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/keyboard.d.ts +58 -0
- package/dist/utils/keyboard.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +45 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/number.d.ts +77 -0
- package/dist/utils/number.d.ts.map +1 -0
- package/dist/utils/object.d.ts +101 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/odata.d.ts +87 -0
- package/dist/utils/odata.d.ts.map +1 -0
- package/dist/utils/performance.d.ts +75 -0
- package/dist/utils/performance.d.ts.map +1 -0
- package/dist/utils/storage.d.ts +83 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/string.d.ts +105 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/validators.d.ts +60 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/package.json +90 -0
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";.ts-datagrid-body[data-v-e676cb1d]{position:relative;width:100%}.ts-datagrid-body__loading[data-v-e676cb1d],.ts-datagrid-body__empty[data-v-e676cb1d]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:#6b7280}.ts-datagrid-body__spinner[data-v-e676cb1d]{width:40px;height:40px;border:3px solid #e5e7eb;border-top-color:#3b82f6;border-radius:50%;animation:spin-e676cb1d .8s linear infinite;margin-bottom:16px}@keyframes spin-e676cb1d{to{transform:rotate(360deg)}}.ts-datagrid-body__virtual-spacer[data-v-e676cb1d]{width:100%;flex-shrink:0;pointer-events:none}.ts-datagrid-body__row[data-v-e676cb1d]{display:flex;align-items:center;border-bottom:1px solid #e5e7eb;background:white;transition:background-color .15s ease}.ts-datagrid-body__row[data-v-e676cb1d]:hover{background:#f9fafb}.ts-datagrid-body__row--selected[data-v-e676cb1d]{background:#eff6ff!important}.ts-datagrid-body__row--focused[data-v-e676cb1d]{outline:2px solid #3b82f6;outline-offset:-2px}.ts-datagrid-body__scroll-sentinel[data-v-e676cb1d]{height:1px;width:100%;position:relative;pointer-events:none}.ts-datagrid-body__loading-more[data-v-e676cb1d]{display:flex;align-items:center;justify-content:center;gap:12px;padding:20px;font-size:14px;color:#6b7280}.ts-datagrid-body__spinner--small[data-v-e676cb1d]{width:20px;height:20px;border:2px solid #e5e7eb;border-top-color:#3b82f6;border-radius:50%;animation:spin-e676cb1d .8s linear infinite}.ts-datagrid-body__no-more[data-v-e676cb1d]{text-align:center;padding:16px;color:#6b7280;font-size:13px}.context-menu-enter-active{animation:context-menu-in .15s ease-out}.context-menu-leave-active{animation:context-menu-out .1s ease-in}@keyframes context-menu-in{0%{opacity:0;transform:scale(.95) translateY(-5px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes context-menu-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}.ts-datagrid-context-menu{background:white;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 12px #00000026;min-width:200px;padding:4px 0;transform-origin:top left}.ts-datagrid-context-menu__item{width:100%;padding:10px 14px;border:none;background:none;text-align:left;cursor:pointer;display:flex;align-items:center;gap:10px;font-size:14px;color:#333;transition:background .15s}.ts-datagrid-context-menu__item:hover:not(.ts-datagrid-context-menu__item--disabled){background:#f5f5f5}.ts-datagrid-context-menu__item:active:not(.ts-datagrid-context-menu__item--disabled){background:#e8e8e8}.ts-datagrid-context-menu__item--disabled{opacity:.5;cursor:not-allowed}.ts-datagrid-context-menu__item--has-submenu{padding-right:24px}.ts-datagrid-context-menu__icon{width:18px;height:18px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:16px}.ts-datagrid-context-menu__text{flex:1;font-weight:500}.ts-datagrid-context-menu__arrow{font-size:10px;opacity:.6;margin-left:auto}.ts-datagrid-context-menu__separator{height:1px;background:#e0e0e0;margin:4px 8px}:root{--tsdg-primary: #007bff;--tsdg-secondary: #6c757d;--tsdg-success: #28a745;--tsdg-danger: #dc3545;--tsdg-warning: #ffc107;--tsdg-info: #17a2b8;--tsdg-light: #f8f9fa;--tsdg-dark: #343a40;--tsdg-bg-primary: #ffffff;--tsdg-bg-secondary: #f8f9fa;--tsdg-bg-tertiary: #e9ecef;--tsdg-bg-hover: #f1f3f5;--tsdg-bg-selected: #e7f3ff;--tsdg-bg-active: #d0e8ff;--tsdg-text-primary: #212529;--tsdg-text-secondary: #6c757d;--tsdg-text-muted: #adb5bd;--tsdg-text-disabled: #ced4da;--tsdg-border-color: #dee2e6;--tsdg-border-color-light: #e9ecef;--tsdg-border-color-dark: #adb5bd;--tsdg-spacing-xs: 4px;--tsdg-spacing-sm: 8px;--tsdg-spacing-md: 12px;--tsdg-spacing-lg: 16px;--tsdg-spacing-xl: 24px;--tsdg-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--tsdg-font-size-xs: 11px;--tsdg-font-size-sm: 12px;--tsdg-font-size-base: 14px;--tsdg-font-size-lg: 16px;--tsdg-font-size-xl: 18px;--tsdg-font-weight-normal: 400;--tsdg-font-weight-medium: 500;--tsdg-font-weight-semibold: 600;--tsdg-font-weight-bold: 700;--tsdg-line-height: 1.5;--tsdg-shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--tsdg-shadow: 0 2px 4px rgba(0, 0, 0, .1);--tsdg-shadow-md: 0 4px 8px rgba(0, 0, 0, .12);--tsdg-shadow-lg: 0 8px 16px rgba(0, 0, 0, .15);--tsdg-shadow-xl: 0 12px 24px rgba(0, 0, 0, .18);--tsdg-border-radius-sm: 2px;--tsdg-border-radius: 4px;--tsdg-border-radius-md: 6px;--tsdg-border-radius-lg: 8px;--tsdg-transition-fast: .15s ease;--tsdg-transition: .25s ease;--tsdg-transition-slow: .35s ease;--tsdg-z-dropdown: 1000;--tsdg-z-sticky: 1020;--tsdg-z-fixed: 1030;--tsdg-z-modal-backdrop: 1040;--tsdg-z-modal: 1050;--tsdg-z-popover: 1060;--tsdg-z-tooltip: 1070;--tsdg-row-height: 40px;--tsdg-header-height: 48px;--tsdg-footer-height: 56px;--tsdg-toolbar-height: 48px;--tsdg-group-panel-height: 52px;--tsdg-cell-padding: 8px 12px}.tsdg-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.tsdg-text-left{text-align:left}.tsdg-text-center{text-align:center}.tsdg-text-right{text-align:right}.tsdg-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tsdg-no-select{-webkit-user-select:none;user-select:none}.ts-datagrid{display:flex;flex-direction:column;width:100%;height:100%;font-family:var(--tsdg-font-family);font-size:var(--tsdg-font-size-base);color:var(--tsdg-text-primary);background:var(--tsdg-bg-primary);border:1px solid var(--tsdg-border-color);border-radius:var(--tsdg-border-radius);overflow:hidden;position:relative}.ts-datagrid:focus{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid--loading{pointer-events:none}.ts-datagrid--grouped .ts-datagrid-body__row{padding-left:0}.ts-datagrid--batch-editing .ts-datagrid-body__row{background:#fffbf0}.ts-datagrid--virtualized .ts-datagrid-header{position:sticky;top:0;z-index:var(--tsdg-z-sticky);background:var(--tsdg-bg-primary)}.ts-datagrid--virtualized .ts-datagrid__summary{position:sticky;bottom:0;z-index:var(--tsdg-z-sticky);background:var(--tsdg-bg-secondary)}.ts-datagrid--virtualized .ts-datagrid__scrollable{overflow-y:auto!important;overflow-x:auto!important}.ts-datagrid--virtualized .ts-datagrid__scroll-content{will-change:transform}.ts-datagrid--virtualized .ts-datagrid-body__rows-container{contain:layout style paint}.ts-datagrid--paginated:not(.ts-datagrid--virtualized) .ts-datagrid__scrollable{overflow-y:visible}.ts-datagrid--paginated:not(.ts-datagrid--virtualized) .ts-datagrid__container{flex:1;overflow:visible}.ts-datagrid__container{flex:1;display:flex;flex-direction:column;position:relative;overflow:hidden;min-height:200px}.ts-datagrid__scrollable{flex:1;overflow:auto;position:relative}.ts-datagrid__scrollable::-webkit-scrollbar{width:8px;height:8px}.ts-datagrid__scrollable::-webkit-scrollbar-track{background:var(--tsdg-bg-secondary)}.ts-datagrid__scrollable::-webkit-scrollbar-thumb{background:var(--tsdg-border-color-dark);border-radius:var(--tsdg-border-radius)}.ts-datagrid__scrollable::-webkit-scrollbar-thumb:hover{background:var(--tsdg-text-secondary)}.ts-datagrid__scrollable{-webkit-overflow-scrolling:touch}.ts-datagrid__scrollable.ts-datagrid--virtualized{will-change:scroll-position}.ts-datagrid__scrollable::-webkit-scrollbar{width:12px;height:12px}.ts-datagrid__scrollable::-webkit-scrollbar-track{background:var(--tsdg-scrollbar-track, #f1f1f1)}.ts-datagrid__scrollable::-webkit-scrollbar-thumb{background:var(--tsdg-scrollbar-thumb, #888);border-radius:6px}.ts-datagrid__scrollable::-webkit-scrollbar-thumb:hover{background:var(--tsdg-scrollbar-thumb-hover, #555)}.ts-datagrid__scrollable{scrollbar-width:thin;scrollbar-color:var(--tsdg-scrollbar-thumb, #888) var(--tsdg-scrollbar-track, #f1f1f1)}.ts-datagrid__scroll-content{position:relative;min-width:100%;width:fit-content;display:flex;flex-direction:column}.ts-datagrid__virtual-spacer{width:100%;pointer-events:none;flex-shrink:0;will-change:height;contain:strict;display:block;margin:0;padding:0;border:none;background:transparent}.ts-datagrid__loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,.9);display:flex;align-items:center;justify-content:center;z-index:var(--tsdg-z-modal);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.ts-datagrid__loading-content{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--tsdg-spacing-md)}.ts-datagrid__loading-text{font-size:var(--tsdg-font-size-lg);color:var(--tsdg-text-secondary)}.ts-datagrid__loading-progress{width:300px;display:flex;align-items:center;justify-content:center;gap:var(--tsdg-spacing-sm)}.ts-datagrid__progress-bar{flex:1;height:8px;background:var(--tsdg-border-color);border-radius:4px;overflow:hidden}.ts-datagrid__progress-fill{height:100%;background:var(--tsdg-primary);transition:width .3s ease}.ts-datagrid__progress-text{font-size:var(--tsdg-font-size-sm);color:var(--tsdg-text-muted);min-width:40px;text-align:right}.ts-datagrid__loading-spinner{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--tsdg-spacing-md)}.ts-datagrid__spinner{width:48px;height:48px;border:4px solid var(--tsdg-border-color);border-top-color:var(--tsdg-primary);border-radius:50%;animation:tsdg-spin .8s linear infinite}.ts-datagrid__spinner--small{width:24px;height:24px;border-width:3px}.ts-datagrid__summary{border-top:2px solid var(--tsdg-border-color-dark);background:var(--tsdg-bg-secondary)}.ts-datagrid__summary--multi-row .ts-datagrid__summary-row--page{border-bottom:1px solid var(--tsdg-border-color)}.ts-datagrid__summary-row{display:flex;min-height:var(--tsdg-row-height);font-weight:var(--tsdg-font-weight-semibold)}.ts-datagrid__summary-row--page{background:var(--tsdg-bg-tertiary)}.ts-datagrid__summary-row--total{background:var(--tsdg-bg-secondary)}.ts-datagrid__summary-cell{padding:var(--tsdg-cell-padding);display:flex;align-items:center;border-right:1px solid var(--tsdg-border-color)}.ts-datagrid__summary-cell--selection{width:40px;min-width:40px;max-width:40px;flex:none;justify-content:center}.ts-datagrid__summary-cell--label{font-weight:var(--tsdg-font-weight-bold)}.ts-datagrid__summary-cell--number{justify-content:flex-end}.ts-datagrid__summary-label{font-size:var(--tsdg-font-size-sm);text-transform:uppercase;letter-spacing:.5px;color:var(--tsdg-text-secondary)}.ts-datagrid__empty-state{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--tsdg-spacing-lg);padding:var(--tsdg-spacing-xl);color:var(--tsdg-text-muted);min-height:300px}.ts-datagrid__empty-state svg{opacity:.3}.ts-datagrid__empty-state p{margin:0;font-size:var(--tsdg-font-size-lg)}.ts-datagrid__scroll-sentinel{position:absolute;bottom:0;left:0;right:0;height:1px;pointer-events:none;visibility:hidden}.ts-datagrid__loading-more{display:flex;align-items:center;justify-content:center;gap:var(--tsdg-spacing-sm);padding:var(--tsdg-spacing-md);color:var(--tsdg-text-secondary);font-size:var(--tsdg-font-size-sm)}.ts-datagrid--virtualized .ts-datagrid-body__row{transform:translateZ(0);backface-visibility:hidden}.ts-datagrid--virtualized .ts-datagrid__scrollable{transform:translateZ(0)}.ts-datagrid:focus{outline:none}.ts-datagrid--keyboard-nav .ts-datagrid-body__cell{position:relative}.ts-datagrid--keyboard-nav .ts-datagrid-body__cell--focused{outline:2px solid #3498db;outline-offset:-2px;z-index:2;box-shadow:0 0 0 3px #3498db1a}.ts-datagrid--keyboard-nav .ts-datagrid-body__row--focused{background-color:#3498db0d}.ts-datagrid-body__cell:focus-visible{outline:2px solid #3498db;outline-offset:-2px;z-index:2}.ts-datagrid-body__cell:focus{outline:none}.ts-datagrid-header{position:sticky;top:0;z-index:var(--tsdg-z-sticky);background:var(--tsdg-bg-secondary);border-bottom:2px solid var(--tsdg-border-color-dark);-webkit-user-select:none;user-select:none}.ts-datagrid-header__row{display:flex;min-height:var(--tsdg-header-height);width:100%;position:relative}.ts-datagrid-header__cell{padding:var(--tsdg-cell-padding);display:flex;align-items:center;border-right:1px solid var(--tsdg-border-color);font-weight:var(--tsdg-font-weight-semibold);position:relative;-webkit-user-select:none;user-select:none;background:var(--tsdg-bg-secondary);transition:background-color .15s ease}.ts-datagrid-header__cell:last-child{border-right:none}.ts-datagrid-header__cell--selection,.ts-datagrid-header__cell--expansion{width:48px;min-width:48px;max-width:48px;justify-content:center;flex-shrink:0;padding:.5rem}.ts-datagrid-header__cell--chooser{width:48px;justify-content:center;flex-shrink:0;border-left:1px solid var(--tsdg-border-color)}.ts-datagrid-header__cell--left{justify-content:flex-start;text-align:left}.ts-datagrid-header__cell--center{justify-content:center;text-align:center}.ts-datagrid-header__cell--right{justify-content:flex-end;text-align:right}.ts-datagrid-header__cell--sortable{cursor:pointer}.ts-datagrid-header__cell--sortable:hover{background:var(--tsdg-bg-hover)}.ts-datagrid-header__cell--sortable:active{background:var(--tsdg-bg-active)}.ts-datagrid-header__cell--sorted{background:var(--tsdg-bg-active);color:var(--tsdg-primary)}.ts-datagrid-header__cell--filtered{background:rgba(251,191,36,.1)}.ts-datagrid-header__cell--filtered .ts-datagrid-header__filter-button{color:var(--tsdg-primary);background:rgba(0,123,255,.1)}.ts-datagrid-header__cell--filtered .ts-datagrid-header__filter-button:hover{background:rgba(0,123,255,.2)}.ts-datagrid-header__cell--resizable .ts-datagrid-header__resize-handle{display:block;opacity:0;transition:opacity .2s ease}.ts-datagrid-header__cell--resizable:hover .ts-datagrid-header__resize-handle{opacity:1}.ts-datagrid-header__cell--resizing{background:rgba(59,130,246,.1);cursor:col-resize;-webkit-user-select:none;user-select:none}.ts-datagrid-header__cell--resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}.ts-datagrid-header__cell--resizing .ts-datagrid-header__resize-handle{opacity:1}.ts-datagrid-header__cell--resizing .ts-datagrid-header__resize-handle:after{background:var(--tsdg-primary);width:3px}.ts-datagrid-header__cell--groupable .ts-datagrid-header__drag-handle{cursor:grab;opacity:.6}.ts-datagrid-header__cell--groupable .ts-datagrid-header__drag-handle:hover{opacity:1;color:var(--tsdg-primary)}.ts-datagrid-header__cell--groupable .ts-datagrid-header__drag-handle:active{cursor:grabbing}.ts-datagrid-header__cell--groupable:hover .ts-datagrid-header__drag-handle{opacity:1}.ts-datagrid-header__cell--dragging{opacity:.5;background:rgba(59,130,246,.2);cursor:grabbing;z-index:100}.ts-datagrid-header__cell--dragging *{cursor:grabbing!important}.ts-datagrid-header__cell--drag-over{background:rgba(59,130,246,.1);position:relative}.ts-datagrid-header__cell--drag-over:before{content:"";position:absolute;left:-2px;top:0;bottom:0;width:4px;background:var(--tsdg-primary);z-index:10;animation:pulse-indicator 1.5s ease-in-out infinite}.ts-datagrid-header__cell-content{display:flex;align-items:center;gap:var(--tsdg-spacing-sm);width:100%;position:relative;min-width:0}.ts-datagrid-header__drag-handle{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:var(--tsdg-text-muted);flex-shrink:0;cursor:grab;opacity:.6;transition:all .2s ease;position:relative}.ts-datagrid-header__drag-handle:hover{color:var(--tsdg-primary);opacity:1}.ts-datagrid-header__drag-handle:active{cursor:grabbing}.ts-datagrid-header__drag-handle svg{pointer-events:none;width:12px;height:12px}.ts-datagrid-header__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;display:flex;align-items:center;gap:var(--tsdg-spacing-xs);min-width:0}.ts-datagrid-header__sort-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--tsdg-primary);gap:.25rem}.ts-datagrid-header__sort-icon svg{width:12px;height:12px;flex-shrink:0}.ts-datagrid-header__sort-index{font-size:var(--tsdg-font-size-xs);font-weight:var(--tsdg-font-weight-semibold);color:var(--tsdg-primary);background:rgba(59,130,246,.15);padding:.125rem .375rem;border-radius:var(--tsdg-border-radius-sm);line-height:1}.ts-datagrid-header__filter-button{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-header__filter-button:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-header__filter-button{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--tsdg-border-radius-sm);color:var(--tsdg-text-secondary);flex-shrink:0;transition:all .15s ease}.ts-datagrid-header__filter-button:hover{background:var(--tsdg-bg-hover);color:var(--tsdg-text-primary)}.ts-datagrid-header__filter-button--active{color:#f59e0b;background:rgba(251,191,36,.15)}.ts-datagrid-header__filter-button--active:hover{background:rgba(251,191,36,.25)}.ts-datagrid-header__filter-button svg{width:14px;height:14px;pointer-events:none}.ts-datagrid-header__resize-handle{display:none;position:absolute;top:0;right:-4px;bottom:0;width:8px;cursor:col-resize;z-index:10;opacity:0;transition:opacity .2s ease}.ts-datagrid-header__resize-handle:before{content:"";position:absolute;top:0;bottom:0;left:3px;width:2px;background:transparent;transition:all .2s ease}.ts-datagrid-header__resize-handle:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:50%;background:var(--tsdg-border-color-dark);transition:all .2s ease}.ts-datagrid-header__resize-handle:hover{opacity:1!important}.ts-datagrid-header__resize-handle:hover:after{background:var(--tsdg-primary);height:60%;width:3px}.ts-datagrid-header__resize-handle:active{opacity:1!important}.ts-datagrid-header__resize-handle:active:after{background:var(--tsdg-primary);height:80%;width:3px}.ts-datagrid-header__checkbox{cursor:pointer;width:16px;height:16px;margin:0;accent-color:var(--tsdg-primary)}.ts-datagrid-header__checkbox:indeterminate{opacity:.7}.ts-datagrid-header__chooser-button{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-header__chooser-button:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-header__chooser-button{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--tsdg-text-secondary);transition:all .15s ease}.ts-datagrid-header__chooser-button:hover{color:var(--tsdg-text-primary);background:var(--tsdg-bg-hover)}.ts-datagrid-header__chooser-button svg{width:16px;height:16px}.ts-datagrid-header__cell--groupable:hover .ts-datagrid-header__drag-handle{color:var(--tsdg-primary)}.ts-datagrid__resize-line{position:fixed;top:0;bottom:0;width:2px;background:var(--tsdg-primary);pointer-events:none;z-index:9999;opacity:.8;box-shadow:0 0 4px #3b82f680}.ts-datagrid__resize-line:before{content:"";position:absolute;top:0;left:-2px;right:-2px;height:4px;background:var(--tsdg-primary);border-radius:2px}.ts-datagrid__resize-line:after{content:"";position:absolute;bottom:0;left:-2px;right:-2px;height:4px;background:var(--tsdg-primary);border-radius:2px}.ts-datagrid__drop-indicator{position:absolute;top:0;bottom:0;width:4px;background:var(--tsdg-primary);pointer-events:none;z-index:100;animation:pulse-indicator 1.5s ease-in-out infinite;box-shadow:0 0 8px #3b82f699}.ts-datagrid__drop-indicator:before{content:"";position:absolute;top:-6px;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid var(--tsdg-primary)}.ts-datagrid__drop-indicator:after{content:"";position:absolute;bottom:-6px;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid var(--tsdg-primary)}@keyframes pulse-indicator{0%,to{opacity:1;transform:scaleX(1)}50%{opacity:.7;transform:scaleX(.8)}}@media (max-width: 768px){.ts-datagrid-header__cell{padding:.5rem .75rem;font-size:var(--tsdg-font-size-sm)}.ts-datagrid-header__cell--selection,.ts-datagrid-header__cell--expansion{width:40px;min-width:40px;max-width:40px}.ts-datagrid-header__drag-handle{display:none}.ts-datagrid-header__resize-handle{width:12px;right:-6px}.ts-datagrid-header__resize-handle:after{width:3px}.ts-datagrid-header__filter-button{width:20px;height:20px}.ts-datagrid-header__filter-button svg{width:12px;height:12px}.ts-datagrid-header__sort-index{font-size:.625rem;padding:.0625rem .25rem}}@media print{.ts-datagrid-header{position:relative}.ts-datagrid-header__resize-handle,.ts-datagrid-header__drag-handle,.ts-datagrid-header__filter-button,.ts-datagrid-header__chooser-button{display:none!important}.ts-datagrid-header__cell--sortable{cursor:default}.ts-datagrid-header__cell--sortable:hover{background:var(--tsdg-bg-secondary)}.ts-datagrid-header__cell--dragging,.ts-datagrid-header__cell--drag-over,.ts-datagrid-header__cell--resizing{opacity:1;background:var(--tsdg-bg-secondary)}.ts-datagrid-header__cell--dragging:before,.ts-datagrid-header__cell--drag-over:before,.ts-datagrid-header__cell--resizing:before{display:none}.ts-datagrid__resize-line,.ts-datagrid__drop-indicator{display:none!important}}@media (prefers-reduced-motion: reduce){.ts-datagrid-header__cell,.ts-datagrid-header__resize-handle,.ts-datagrid-header__filter-button,.ts-datagrid-header__drag-handle{transition:none!important}.ts-datagrid__drop-indicator{animation:none!important}@keyframes pulse-indicator{0%,to{opacity:1;transform:none}}}@media (prefers-contrast: high){.ts-datagrid-header{border-bottom-width:3px}.ts-datagrid-header__cell{border-right-width:2px}.ts-datagrid-header__cell--sorted,.ts-datagrid-header__cell--filtered,.ts-datagrid-header__cell--dragging,.ts-datagrid-header__cell--drag-over{outline:2px solid var(--tsdg-primary);outline-offset:-2px}.ts-datagrid-header__resize-handle:after{background:currentColor;width:3px}.ts-datagrid__resize-line,.ts-datagrid__drop-indicator{width:4px;box-shadow:none}}.ts-datagrid-header__cell:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:-2px;z-index:1}.ts-datagrid-header__checkbox:focus-visible,.ts-datagrid-header__filter-button:focus-visible,.ts-datagrid-header__chooser-button:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px;border-radius:var(--tsdg-border-radius-sm)}.ts-datagrid-body{flex:1;min-height:0;position:relative;width:100%;overflow:hidden}.ts-datagrid-body__rows-container{position:relative;width:100%;display:flex;flex-direction:column}.ts-datagrid--virtualized .ts-datagrid-body__rows-container{contain:layout style paint;will-change:contents;transform:translateZ(0);backface-visibility:hidden}.ts-datagrid-body__virtual-spacer{width:100%;pointer-events:none;flex-shrink:0;will-change:height;contain:strict;display:block;margin:0;padding:0;border:none;background:transparent;min-height:0;transform:translateZ(0)}.ts-datagrid-body__virtual-spacer--top{order:-1}.ts-datagrid-body__virtual-spacer--bottom{order:9999}.ts-datagrid-body__scroll-sentinel{position:relative;height:1px;width:100%;pointer-events:none;visibility:hidden}.ts-datagrid-body__loading-more{display:flex;align-items:center;justify-content:center;padding:var(--tsdg-spacing-lg);gap:var(--tsdg-spacing-sm);color:var(--tsdg-text-secondary);font-size:var(--tsdg-font-size-sm);background:linear-gradient(to bottom,transparent,rgba(0,0,0,.02),transparent);border-top:1px solid var(--tsdg-border-color-light);border-bottom:1px solid var(--tsdg-border-color-light);animation:tsdg-pulse 1.5s ease-in-out infinite}.ts-datagrid-body__loading-more span{font-weight:var(--tsdg-font-weight-medium)}.ts-datagrid-body__no-more{display:flex;align-items:center;justify-content:center;padding:var(--tsdg-spacing-lg);color:var(--tsdg-text-muted);font-size:var(--tsdg-font-size-sm);border-top:2px solid var(--tsdg-border-color);background:var(--tsdg-bg-tertiary)}.ts-datagrid-body__no-more span{display:flex;align-items:center;gap:var(--tsdg-spacing-xs);font-weight:var(--tsdg-font-weight-medium)}.ts-datagrid-body__no-more span:before{content:"";display:inline-block;width:16px;height:16px;background:var(--tsdg-success);border-radius:50%;opacity:.6}.ts-datagrid-body__loading,.ts-datagrid-body__empty{display:flex;align-items:center;justify-content:center;min-height:300px;color:var(--tsdg-text-secondary);flex-direction:column;gap:var(--tsdg-spacing-lg);padding:var(--tsdg-spacing-xl)}.ts-datagrid-body__spinner{width:40px;height:40px;border:3px solid var(--tsdg-border-color);border-top-color:var(--tsdg-primary);border-radius:50%;animation:tsdg-spin .8s linear infinite}.ts-datagrid-body__spinner--small{width:24px;height:24px;border-width:2px}.ts-datagrid-body__empty-message{text-align:center}.ts-datagrid-body__empty-message svg{opacity:.3;margin-bottom:var(--tsdg-spacing-md)}.ts-datagrid-body__empty-message p{margin:0;font-size:var(--tsdg-font-size-lg);color:var(--tsdg-text-muted)}.ts-datagrid-body__row{display:flex;min-height:var(--tsdg-row-height);border-bottom:1px solid var(--tsdg-border-color-light);transition:background-color var(--tsdg-transition-fast);cursor:pointer}.ts-datagrid-body__row:focus{outline:none!important}.ts-datagrid-body__row:focus-visible{outline:none!important}.ts-datagrid-body__row:hover{background-color:var(--tsdg-bg-hover)}.ts-datagrid-body__row .ts-datagrid--keyboard-nav.ts-datagrid--has-keyboard-focus .ts-datagrid-body__row--focused{outline:2px solid var(--tsdg-primary)!important;outline-offset:-2px;z-index:1;background-color:#3498db0d}.ts-datagrid--virtualized .ts-datagrid-body__row{transform:translateZ(0);backface-visibility:hidden;contain:layout style paint}.ts-datagrid--infinite-scroll .ts-datagrid-body__row{animation:tsdg-slide-in .2s ease-out}.ts-datagrid-body__row--selected{background-color:var(--tsdg-bg-selected)}.ts-datagrid-body__row--selected:hover{background-color:var(--tsdg-bg-active)}.ts-datagrid-body__row--even{background:var(--tsdg-bg-primary)}.ts-datagrid-body__row--odd{background:var(--tsdg-bg-secondary)}.ts-datagrid-body__row--editing{background:#fff8e1;border-color:var(--tsdg-warning);box-shadow:inset 0 0 0 1px var(--tsdg-warning)}.ts-datagrid-body__row--batch-editing{background:#fffbf0}.ts-datagrid-body__row--focused{outline:2px solid var(--tsdg-primary);outline-offset:-2px;z-index:1}.ts-datagrid-body__group-row{display:flex;align-items:center;min-height:var(--tsdg-row-height);background:var(--tsdg-bg-tertiary);border-bottom:1px solid var(--tsdg-border-color);font-weight:var(--tsdg-font-weight-semibold);cursor:pointer;transition:background-color var(--tsdg-transition-fast)}.ts-datagrid-body__group-row:hover{background-color:var(--tsdg-bg-hover)}.ts-datagrid-body__group-row{position:sticky;top:var(--tsdg-header-height);z-index:calc(var(--tsdg-z-sticky) - 1)}.ts-datagrid-body__group-cell{padding:var(--tsdg-cell-padding);display:flex;align-items:center;gap:var(--tsdg-spacing-sm);width:100%}.ts-datagrid-body__group-toggle{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-body__group-toggle:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-body__group-toggle{display:flex;align-items:center;justify-content:center;width:20px;height:20px;transition:transform var(--tsdg-transition-fast);flex-shrink:0}.ts-datagrid-body__group-toggle--expanded{transform:rotate(90deg)}.ts-datagrid-body__group-toggle svg{display:block;fill:currentColor}.ts-datagrid-body__group-title{font-size:var(--tsdg-font-size-base);color:var(--tsdg-text-primary)}.ts-datagrid-body__group-count{color:var(--tsdg-text-secondary);font-size:var(--tsdg-font-size-sm);font-weight:var(--tsdg-font-weight-normal);margin-left:var(--tsdg-spacing-xs)}.ts-datagrid-body__group-footer{display:flex;min-height:calc(var(--tsdg-row-height) * .9);background:linear-gradient(to bottom,#f8f9fa 0%,#f0f2f5 100%);border-bottom:2px solid var(--tsdg-border-color);border-top:1px solid var(--tsdg-border-color-light);position:relative}.ts-datagrid-body__group-footer:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(to bottom,#1976d2,#1565c0)}.ts-datagrid-body__group-summary{display:flex;width:100%;align-items:center}.ts-datagrid-body__group-summary-cell{padding:var(--tsdg-cell-padding);display:flex;align-items:center;font-weight:var(--tsdg-font-weight-medium);font-size:var(--tsdg-font-size-sm);color:var(--tsdg-text-primary);border-right:1px solid var(--tsdg-border-color-light);min-height:inherit}.ts-datagrid-body__group-summary-cell:last-child{border-right:none}.ts-datagrid-body__group-summary-cell--number{font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,monospace;color:#1976d2;font-weight:var(--tsdg-font-weight-semibold)}.ts-datagrid-body__group-summary-cell--left{justify-content:flex-start;text-align:left}.ts-datagrid-body__group-summary-cell--center{justify-content:center;text-align:center}.ts-datagrid-body__group-summary-cell--right{justify-content:flex-end;text-align:right}.ts-datagrid-body__group-summary-cell:empty:after{content:"—";color:var(--tsdg-text-muted);opacity:.5}.ts-datagrid-body__cell{padding:var(--tsdg-cell-padding);display:flex;align-items:center;border-right:1px solid var(--tsdg-border-color-light);position:relative;overflow:hidden}.ts-datagrid-body__cell:focus{outline:none!important}.ts-datagrid-body__cell:focus-visible{outline:none!important}.ts-datagrid-body__cell:last-child{border-right:none}.ts-datagrid-body__cell--selection{width:48px;justify-content:center;flex-shrink:0;padding:0}.ts-datagrid-body__cell--expansion{justify-content:center;flex-shrink:0;padding:0;cursor:pointer}.ts-datagrid-body__cell--expansion:hover{background:rgba(0,0,0,.04)}.ts-datagrid-body__expand-toggle{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-body__expand-toggle:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-body__expand-toggle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;transition:transform var(--tsdg-transition-fast);border-radius:4px}.ts-datagrid-body__expand-toggle:hover{background:rgba(0,0,0,.08)}.ts-datagrid-body__expand-toggle--expanded{transform:rotate(90deg)}.ts-datagrid-body__expand-toggle svg{display:block;fill:currentColor}.ts-datagrid-body__detail-row{border-bottom:1px solid var(--tsdg-border-color);background:#fafafa;animation:tsdg-expand .2s ease-out}.ts-datagrid-body__detail-content{padding:var(--tsdg-spacing-md)}.ts-datagrid-body__checkbox{width:16px;height:16px;cursor:pointer}.ts-datagrid-row{display:contents}@keyframes tsdg-spin{to{transform:rotate(360deg)}}@keyframes tsdg-expand{0%{opacity:0;max-height:0}to{opacity:1;max-height:500px}}@keyframes tsdg-pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes tsdg-slide-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ts-datagrid--virtualized .ts-datagrid-body__row{transform:translateZ(0);backface-visibility:hidden;contain:layout style paint;will-change:transform}.ts-datagrid--virtualized .ts-datagrid-body__virtual-spacer{content-visibility:auto;contain-intrinsic-size:auto 0px}.ts-datagrid--infinite-scroll .ts-datagrid-body__rows-container{will-change:transform}.ts-datagrid--infinite-scroll .ts-datagrid-body__row{contain:layout style}.ts-datagrid-body__row:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:-2px;z-index:1}@media (max-width: 768px){.ts-datagrid-body__loading-more,.ts-datagrid-body__no-more{padding:var(--tsdg-spacing-md);font-size:var(--tsdg-font-size-xs)}}.ts-datagrid-cell{padding:var(--tsdg-cell-padding);display:flex;align-items:center;border-right:1px solid var(--tsdg-border-color-light);position:relative;overflow:hidden;min-height:var(--tsdg-row-height);flex-shrink:0}.ts-datagrid-cell:focus{outline:none!important}.ts-datagrid-cell:focus-visible{outline:none!important}.ts-datagrid-cell:last-child{border-right:none}.ts-datagrid-cell--left{justify-content:flex-start;text-align:left}.ts-datagrid-cell--center{justify-content:center;text-align:center}.ts-datagrid-cell--right{justify-content:flex-end;text-align:right}.ts-datagrid-cell--number{font-variant-numeric:tabular-nums;justify-content:flex-end}.ts-datagrid-cell--boolean{justify-content:center}.ts-datagrid-cell--date,.ts-datagrid-cell--datetime{font-variant-numeric:tabular-nums}.ts-datagrid-cell--editing{padding:0;background:var(--tsdg-bg-primary);box-shadow:inset 0 0 0 2px var(--tsdg-primary);z-index:20;overflow:visible;outline:none!important}.ts-datagrid-cell--editable{cursor:text}.ts-datagrid-cell--editable:hover:not(.ts-datagrid-cell--editing) .ts-datagrid-cell__edit-icon{opacity:1}.ts-datagrid-cell--batch-editing{background:#fffbf0}.ts-datagrid-cell--batch-editing:hover{background:#fff8e1}.ts-datagrid-cell--modified{background:#e8f5e9;position:relative}.ts-datagrid-cell--modified:after{content:"";position:absolute;top:0;left:0;width:0;height:0;border-style:solid;border-width:8px 8px 0 0;border-color:var(--tsdg-success) transparent transparent transparent}.ts-datagrid-cell__display{display:flex;align-items:center;width:100%;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:24px}.ts-datagrid-cell__edit-icon{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-cell__edit-icon:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-cell__edit-icon{display:flex;align-items:center;justify-content:center;position:absolute;right:4px;top:50%;transform:translateY(-50%);width:20px;height:20px;border-radius:var(--tsdg-border-radius-sm);color:var(--tsdg-text-muted);opacity:0;transition:opacity var(--tsdg-transition-fast)}.ts-datagrid-cell__edit-icon:hover{background:var(--tsdg-bg-hover);color:var(--tsdg-text-primary);opacity:1}.ts-datagrid-cell__modified-indicator{position:absolute;top:4px;right:4px;color:var(--tsdg-success);font-weight:var(--tsdg-font-weight-bold);font-size:var(--tsdg-font-size-lg);line-height:1}.ts-datagrid-cell__edit{display:flex;align-items:center;width:100%;height:100%;gap:var(--tsdg-spacing-xs)}.ts-datagrid-cell__input,.ts-datagrid-cell__select,.ts-datagrid-cell__checkbox{background:var(--tsdg-bg-primary);border:1px solid var(--tsdg-border-color);border-radius:var(--tsdg-border-radius);padding:var(--tsdg-spacing-sm) var(--tsdg-spacing-md);font-family:var(--tsdg-font-family);font-size:var(--tsdg-font-size-base);line-height:var(--tsdg-line-height);color:var(--tsdg-text-primary);transition:border-color var(--tsdg-transition-fast)}.ts-datagrid-cell__input:focus,.ts-datagrid-cell__select:focus,.ts-datagrid-cell__checkbox:focus{outline:none;border-color:var(--tsdg-primary);box-shadow:0 0 0 3px #007bff1a}.ts-datagrid-cell__input:disabled,.ts-datagrid-cell__select:disabled,.ts-datagrid-cell__checkbox:disabled{background:var(--tsdg-bg-secondary);color:var(--tsdg-text-disabled);cursor:not-allowed}.ts-datagrid-cell__input:focus,.ts-datagrid-cell__select:focus,.ts-datagrid-cell__checkbox:focus{box-shadow:none;border-color:transparent;outline:none}.ts-datagrid-cell__input,.ts-datagrid-cell__select{flex:1;min-width:0;width:100%;height:100%;border:none;border-radius:0;padding:var(--tsdg-spacing-sm)}.ts-datagrid-cell__actions{display:flex;gap:4px;padding-right:var(--tsdg-spacing-sm);flex-shrink:0}.ts-datagrid-cell__action{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-cell__action:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-cell__action{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--tsdg-border-radius-sm);transition:background-color var(--tsdg-transition-fast)}.ts-datagrid-cell__action--save{color:var(--tsdg-success)}.ts-datagrid-cell__action--save:hover{background:#e8f5e9}.ts-datagrid-cell__action--cancel{color:var(--tsdg-text-secondary)}.ts-datagrid-cell__action--cancel:hover{background:var(--tsdg-bg-hover)}.ts-datagrid-cell__error{display:flex;align-items:center;justify-content:center;position:absolute;top:4px;right:4px;width:18px;height:18px;background:var(--tsdg-danger);color:#fff;border-radius:50%;font-size:var(--tsdg-font-size-xs);font-weight:var(--tsdg-font-weight-bold);cursor:help;z-index:1}.ts-datagrid--keyboard-nav .ts-datagrid-cell--focused{outline:2px solid var(--tsdg-primary, #3498db)!important;outline-offset:-2px;z-index:2;box-shadow:0 0 0 3px #3498db1a}.ts-datagrid-footer{display:flex;align-items:center;justify-content:space-between;min-height:var(--tsdg-footer-height);padding:var(--tsdg-spacing-md) var(--tsdg-spacing-lg);background:var(--tsdg-bg-secondary);border-top:1px solid var(--tsdg-border-color);gap:var(--tsdg-spacing-lg);flex-wrap:wrap}.ts-datagrid-footer__info{display:flex;align-items:center;color:var(--tsdg-text-secondary);font-size:var(--tsdg-font-size-sm)}.ts-datagrid-footer__text{white-space:nowrap}.ts-datagrid-footer__pagination{display:flex;align-items:center;gap:var(--tsdg-spacing-xs)}.ts-datagrid-footer__button{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-footer__button:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-footer__button{display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 var(--tsdg-spacing-sm);border-radius:var(--tsdg-border-radius);color:var(--tsdg-text-primary);transition:all var(--tsdg-transition-fast)}.ts-datagrid-footer__button:hover:not(:disabled){background:var(--tsdg-bg-hover)}.ts-datagrid-footer__button:disabled{color:var(--tsdg-text-disabled);cursor:not-allowed;opacity:.5}.ts-datagrid-footer__button svg{display:block}.ts-datagrid-footer__pages{display:flex;align-items:center;gap:2px}.ts-datagrid-footer__page{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-footer__page:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-footer__page{display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 var(--tsdg-spacing-sm);border-radius:var(--tsdg-border-radius);font-size:var(--tsdg-font-size-sm);color:var(--tsdg-text-primary);transition:all var(--tsdg-transition-fast)}.ts-datagrid-footer__page:hover{background:var(--tsdg-bg-hover)}.ts-datagrid-footer__page--active{background:var(--tsdg-primary);color:#fff;font-weight:var(--tsdg-font-weight-semibold)}.ts-datagrid-footer__page--active:hover{background:var(--tsdg-primary)}.ts-datagrid-footer__page-size{display:flex;align-items:center;gap:var(--tsdg-spacing-sm);margin-left:auto}.ts-datagrid-footer__label{font-size:var(--tsdg-font-size-sm);color:var(--tsdg-text-secondary);white-space:nowrap}.ts-datagrid-footer__select{background:var(--tsdg-bg-primary);border:1px solid var(--tsdg-border-color);border-radius:var(--tsdg-border-radius);padding:var(--tsdg-spacing-sm) var(--tsdg-spacing-md);font-family:var(--tsdg-font-family);font-size:var(--tsdg-font-size-base);line-height:var(--tsdg-line-height);color:var(--tsdg-text-primary);transition:border-color var(--tsdg-transition-fast)}.ts-datagrid-footer__select:focus{outline:none;border-color:var(--tsdg-primary);box-shadow:0 0 0 3px #007bff1a}.ts-datagrid-footer__select:disabled{background:var(--tsdg-bg-secondary);color:var(--tsdg-text-disabled);cursor:not-allowed}.ts-datagrid-footer__select{min-width:80px;height:32px;padding:0 var(--tsdg-spacing-md);font-size:var(--tsdg-font-size-sm);cursor:pointer}.ts-datagrid-footer__summary{width:100%;padding-top:var(--tsdg-spacing-md);border-top:1px solid var(--tsdg-border-color)}.ts-datagrid-footer__summary-content{display:flex;gap:var(--tsdg-spacing-xl);flex-wrap:wrap}.ts-datagrid-footer__summary-item{font-size:var(--tsdg-font-size-sm);color:var(--tsdg-text-secondary)}.ts-datagrid-footer__summary-item strong{color:var(--tsdg-text-primary);font-weight:var(--tsdg-font-weight-semibold);margin-right:var(--tsdg-spacing-xs)}.ts-datagrid-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:var(--tsdg-toolbar-height);padding:var(--tsdg-spacing-sm) var(--tsdg-spacing-lg);background:var(--tsdg-bg-secondary);border-bottom:1px solid var(--tsdg-border-color);gap:var(--tsdg-spacing-md)}.ts-datagrid-toolbar__left,.ts-datagrid-toolbar__center,.ts-datagrid-toolbar__right{display:flex;align-items:center;gap:var(--tsdg-spacing-sm)}.ts-datagrid-toolbar__left{flex:1}.ts-datagrid-toolbar__center{flex:1;justify-content:center}.ts-datagrid-toolbar__right{flex:1;justify-content:flex-end}.ts-datagrid-toolbar__button{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-toolbar__button:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-toolbar__button{display:inline-flex;align-items:center;gap:var(--tsdg-spacing-xs);height:32px;padding:0 var(--tsdg-spacing-md);border-radius:var(--tsdg-border-radius);font-size:var(--tsdg-font-size-sm);font-weight:var(--tsdg-font-weight-medium);color:var(--tsdg-text-primary);background:var(--tsdg-bg-primary);border:1px solid var(--tsdg-border-color);transition:all var(--tsdg-transition-fast);white-space:nowrap}.ts-datagrid-toolbar__button:hover:not(:disabled){background:var(--tsdg-bg-hover);border-color:var(--tsdg-border-color-dark)}.ts-datagrid-toolbar__button:active:not(:disabled){transform:translateY(1px)}.ts-datagrid-toolbar__button:disabled{opacity:.5;cursor:not-allowed}.ts-datagrid-toolbar__button svg{flex-shrink:0}.ts-datagrid-toolbar__button--primary{background:var(--tsdg-primary);color:#fff;border-color:var(--tsdg-primary)}.ts-datagrid-toolbar__button--primary:hover:not(:disabled){background:#0069d9;border-color:#0062cc}.ts-datagrid-toolbar__button--success{background:var(--tsdg-success);color:#fff;border-color:var(--tsdg-success)}.ts-datagrid-toolbar__button--success:hover:not(:disabled){background:#218838;border-color:#1e7e34}.ts-datagrid-toolbar__button--danger{background:var(--tsdg-danger);color:#fff;border-color:var(--tsdg-danger)}.ts-datagrid-toolbar__button--danger:hover:not(:disabled){background:#c82333;border-color:#bd2130}.ts-datagrid-toolbar__badge{display:inline-flex;align-items:center;height:24px;padding:0 var(--tsdg-spacing-sm);background:var(--tsdg-warning);color:var(--tsdg-text-primary);border-radius:var(--tsdg-border-radius-lg);font-size:var(--tsdg-font-size-xs);font-weight:var(--tsdg-font-weight-semibold)}.ts-datagrid-toolbar__search{position:relative;width:240px}.ts-datagrid-toolbar__search-input{background:var(--tsdg-bg-primary);border:1px solid var(--tsdg-border-color);border-radius:var(--tsdg-border-radius);padding:var(--tsdg-spacing-sm) var(--tsdg-spacing-md);font-family:var(--tsdg-font-family);font-size:var(--tsdg-font-size-base);line-height:var(--tsdg-line-height);color:var(--tsdg-text-primary);transition:border-color var(--tsdg-transition-fast)}.ts-datagrid-toolbar__search-input:focus{outline:none;border-color:var(--tsdg-primary);box-shadow:0 0 0 3px #007bff1a}.ts-datagrid-toolbar__search-input:disabled{background:var(--tsdg-bg-secondary);color:var(--tsdg-text-disabled);cursor:not-allowed}.ts-datagrid-toolbar__search-input{width:100%;height:32px;padding-left:32px;padding-right:32px;font-size:var(--tsdg-font-size-sm)}.ts-datagrid-toolbar__search-icon{position:absolute;left:8px;top:50%;transform:translateY(-50%);color:var(--tsdg-text-muted);pointer-events:none}.ts-datagrid-toolbar__search-clear{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-toolbar__search-clear:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-toolbar__search-clear{display:flex;align-items:center;justify-content:center;position:absolute;right:4px;top:50%;transform:translateY(-50%);width:24px;height:24px;border-radius:var(--tsdg-border-radius-sm);color:var(--tsdg-text-muted)}.ts-datagrid-toolbar__search-clear:hover{background:var(--tsdg-bg-hover);color:var(--tsdg-text-primary)}.ts-datagrid-toolbar__dropdown{position:relative}.ts-datagrid-toolbar__dropdown-menu{position:absolute;top:100%;right:0;margin-top:4px;min-width:180px;background:var(--tsdg-bg-primary);border:1px solid var(--tsdg-border-color);border-radius:var(--tsdg-border-radius);box-shadow:var(--tsdg-shadow-lg);z-index:var(--tsdg-z-dropdown);overflow:hidden}.ts-datagrid-toolbar__dropdown-item{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-toolbar__dropdown-item:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-toolbar__dropdown-item{display:block;width:100%;padding:var(--tsdg-spacing-sm) var(--tsdg-spacing-md);text-align:left;font-size:var(--tsdg-font-size-sm);color:var(--tsdg-text-primary);background:var(--tsdg-bg-primary);transition:background-color var(--tsdg-transition-fast)}.ts-datagrid-toolbar__dropdown-item:hover{background:var(--tsdg-bg-hover)}.ts-datagrid-toolbar__dropdown-item:not(:last-child){border-bottom:1px solid var(--tsdg-border-color-light)}.ts-datagrid-toolbar__caret{margin-left:4px}.ts-datagrid-toolbar__divider{width:1px;height:24px;background:var(--tsdg-border-color);margin:0 var(--tsdg-spacing-sm)}.ts-datagrid-group-panel{min-height:var(--tsdg-group-panel-height);padding:var(--tsdg-spacing-md);background:var(--tsdg-bg-secondary);border-bottom:1px solid var(--tsdg-border-color)}.ts-datagrid-group-panel__content{display:flex;align-items:center;gap:var(--tsdg-spacing-sm);min-height:32px}.ts-datagrid-group-panel__drop-zone{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--tsdg-spacing-sm);padding:var(--tsdg-spacing-md);border:2px dashed var(--tsdg-border-color);border-radius:var(--tsdg-border-radius);background:var(--tsdg-bg-primary);color:var(--tsdg-text-muted)}.ts-datagrid-group-panel__icon{flex-shrink:0}.ts-datagrid-group-panel__hint{font-size:var(--tsdg-font-size-sm)}.ts-datagrid-group-panel__groups{display:flex;align-items:center;flex-wrap:wrap;gap:var(--tsdg-spacing-sm);width:100%}.ts-datagrid-group-panel__group{display:inline-flex;align-items:center;gap:var(--tsdg-spacing-xs);height:32px;padding:0 var(--tsdg-spacing-sm);background:var(--tsdg-bg-primary);border:1px solid var(--tsdg-border-color);border-radius:var(--tsdg-border-radius-lg);font-size:var(--tsdg-font-size-sm);cursor:move;-webkit-user-select:none;user-select:none;transition:all var(--tsdg-transition-fast)}.ts-datagrid-group-panel__group:hover{border-color:var(--tsdg-primary);box-shadow:var(--tsdg-shadow-sm)}.ts-datagrid-group-panel__drag-handle{display:flex;align-items:center;justify-content:center;color:var(--tsdg-text-muted);flex-shrink:0}.ts-datagrid-group-panel__name{font-weight:var(--tsdg-font-weight-medium);color:var(--tsdg-text-primary)}.ts-datagrid-group-panel__sort{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-group-panel__sort:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-group-panel__sort{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--tsdg-border-radius-sm);color:var(--tsdg-text-secondary)}.ts-datagrid-group-panel__sort:hover{background:var(--tsdg-bg-hover);color:var(--tsdg-text-primary)}.ts-datagrid-group-panel__remove{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-group-panel__remove:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-group-panel__remove{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--tsdg-border-radius-sm);color:var(--tsdg-text-secondary)}.ts-datagrid-group-panel__remove:hover{background:#ffebee;color:var(--tsdg-danger)}.ts-datagrid-group-panel__clear{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-group-panel__clear:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-group-panel__clear{display:inline-flex;align-items:center;gap:var(--tsdg-spacing-xs);height:28px;padding:0 var(--tsdg-spacing-md);margin-left:auto;border-radius:var(--tsdg-border-radius);font-size:var(--tsdg-font-size-sm);color:var(--tsdg-text-secondary);transition:all var(--tsdg-transition-fast)}.ts-datagrid-group-panel__clear:hover{background:var(--tsdg-bg-hover);color:var(--tsdg-text-primary)}.ts-datagrid-column-chooser{position:fixed;top:0;left:0;right:0;bottom:0;z-index:var(--tsdg-z-modal);display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.ts-datagrid-column-chooser__panel{position:relative;width:90%;max-width:400px;max-height:80vh;background:var(--tsdg-bg-primary);border-radius:var(--tsdg-border-radius-lg);box-shadow:var(--tsdg-shadow-xl);display:flex;flex-direction:column;overflow:hidden}.ts-datagrid-column-chooser__header{display:flex;align-items:center;justify-content:space-between;padding:var(--tsdg-spacing-lg);border-bottom:1px solid var(--tsdg-border-color)}.ts-datagrid-column-chooser__title{font-size:var(--tsdg-font-size-lg);font-weight:var(--tsdg-font-weight-semibold);color:var(--tsdg-text-primary);margin:0}.ts-datagrid-column-chooser__close{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-column-chooser__close:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-column-chooser__close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--tsdg-border-radius);color:var(--tsdg-text-secondary)}.ts-datagrid-column-chooser__close:hover{background:var(--tsdg-bg-hover);color:var(--tsdg-text-primary)}.ts-datagrid-column-chooser__search{position:relative;padding:var(--tsdg-spacing-md) var(--tsdg-spacing-lg);border-bottom:1px solid var(--tsdg-border-color-light)}.ts-datagrid-column-chooser__search-input{background:var(--tsdg-bg-primary);border:1px solid var(--tsdg-border-color);border-radius:var(--tsdg-border-radius);padding:var(--tsdg-spacing-sm) var(--tsdg-spacing-md);font-family:var(--tsdg-font-family);font-size:var(--tsdg-font-size-base);line-height:var(--tsdg-line-height);color:var(--tsdg-text-primary);transition:border-color var(--tsdg-transition-fast)}.ts-datagrid-column-chooser__search-input:focus{outline:none;border-color:var(--tsdg-primary);box-shadow:0 0 0 3px #007bff1a}.ts-datagrid-column-chooser__search-input:disabled{background:var(--tsdg-bg-secondary);color:var(--tsdg-text-disabled);cursor:not-allowed}.ts-datagrid-column-chooser__search-input{width:100%;height:36px;padding-left:36px}.ts-datagrid-column-chooser__search-icon{position:absolute;left:calc(var(--tsdg-spacing-lg) + 8px);top:50%;transform:translateY(-50%);color:var(--tsdg-text-muted);pointer-events:none}.ts-datagrid-column-chooser__actions{display:flex;gap:var(--tsdg-spacing-sm);padding:var(--tsdg-spacing-md) var(--tsdg-spacing-lg);border-bottom:1px solid var(--tsdg-border-color-light)}.ts-datagrid-column-chooser__action{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-column-chooser__action:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-column-chooser__action{padding:var(--tsdg-spacing-xs) var(--tsdg-spacing-md);border-radius:var(--tsdg-border-radius);font-size:var(--tsdg-font-size-sm);color:var(--tsdg-primary);transition:all var(--tsdg-transition-fast)}.ts-datagrid-column-chooser__action:hover{background:rgba(0,123,255,.1)}.ts-datagrid-column-chooser__list{flex:1;overflow-y:auto;padding:var(--tsdg-spacing-sm)}.ts-datagrid-column-chooser__list::-webkit-scrollbar{width:8px;height:8px}.ts-datagrid-column-chooser__list::-webkit-scrollbar-track{background:var(--tsdg-bg-secondary)}.ts-datagrid-column-chooser__list::-webkit-scrollbar-thumb{background:var(--tsdg-border-color-dark);border-radius:var(--tsdg-border-radius)}.ts-datagrid-column-chooser__list::-webkit-scrollbar-thumb:hover{background:var(--tsdg-text-secondary)}.ts-datagrid-column-chooser__item{display:flex;align-items:center;gap:var(--tsdg-spacing-sm);padding:var(--tsdg-spacing-sm);margin-bottom:2px;border-radius:var(--tsdg-border-radius);cursor:move;-webkit-user-select:none;user-select:none;transition:background-color var(--tsdg-transition-fast);border:2px solid transparent}.ts-datagrid-column-chooser__item:hover{background:var(--tsdg-bg-hover)}.ts-datagrid-column-chooser__item--dragging{opacity:.5;background:var(--tsdg-bg-hover)}.ts-datagrid-column-chooser__item--drag-over{border-top:2px solid var(--tsdg-primary);margin-top:4px}.ts-datagrid-column-chooser__drag-handle{display:flex;align-items:center;justify-content:center;color:var(--tsdg-text-muted);flex-shrink:0;cursor:move;width:20px;height:20px}.ts-datagrid-column-chooser__drag-handle--disabled{opacity:.3;cursor:not-allowed}.ts-datagrid-column-chooser__drag-handle:hover:not(.ts-datagrid-column-chooser__drag-handle--disabled){color:var(--tsdg-text-primary)}.ts-datagrid-column-chooser__label{flex:1;display:flex;align-items:center;gap:var(--tsdg-spacing-sm);cursor:pointer;min-width:0}.ts-datagrid-column-chooser__checkbox{width:16px;height:16px;cursor:pointer;flex-shrink:0}.ts-datagrid-column-chooser__checkbox:disabled{cursor:not-allowed;opacity:.5}.ts-datagrid-column-chooser__name{font-size:var(--tsdg-font-size-sm);color:var(--tsdg-text-primary);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ts-datagrid-column-chooser__locked{display:flex;align-items:center;justify-content:center;margin-left:auto;color:var(--tsdg-text-muted);flex-shrink:0}.ts-datagrid-column-chooser__empty{display:flex;align-items:center;justify-content:center;padding:var(--tsdg-spacing-xl);color:var(--tsdg-text-muted);font-size:var(--tsdg-font-size-sm)}.ts-datagrid-column-chooser__empty p{margin:0}.ts-datagrid-column-chooser__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--tsdg-spacing-md);padding:var(--tsdg-spacing-lg);border-top:1px solid var(--tsdg-border-color)}.ts-datagrid-column-chooser__info{font-size:var(--tsdg-font-size-sm);color:var(--tsdg-text-secondary)}.ts-datagrid-column-chooser__buttons{display:flex;gap:var(--tsdg-spacing-sm)}.ts-datagrid-column-chooser__button{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.ts-datagrid-column-chooser__button:focus-visible{outline:2px solid var(--tsdg-primary);outline-offset:2px}.ts-datagrid-column-chooser__button{height:36px;padding:0 var(--tsdg-spacing-lg);border-radius:var(--tsdg-border-radius);font-size:var(--tsdg-font-size-sm);font-weight:var(--tsdg-font-weight-medium);transition:all var(--tsdg-transition-fast)}.ts-datagrid-column-chooser__button--cancel{color:var(--tsdg-text-primary);border:1px solid var(--tsdg-border-color)}.ts-datagrid-column-chooser__button--cancel:hover{background:var(--tsdg-bg-hover)}.ts-datagrid-column-chooser__button--apply{background:var(--tsdg-primary);color:#fff}.ts-datagrid-column-chooser__button--apply:hover{background:#0069d9}.ts-datagrid-column-chooser__button--apply:active{background:#005cbf}.ts-datagrid-filter-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1050;background:rgba(0,0,0,.1);animation:fadeIn .15s ease-out}.ts-datagrid-filter{background:white;border-radius:8px;box-shadow:0 4px 20px #00000026,0 0 3px #0000001a;width:280px;display:flex;flex-direction:column;z-index:1051;animation:slideDown .2s ease-out;overflow:hidden}.ts-datagrid-filter__header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:linear-gradient(to bottom,#fafafa,#f5f5f5);border-bottom:1px solid #e0e0e0;min-height:44px}.ts-datagrid-filter__title{margin:0;font-size:14px;font-weight:600;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.ts-datagrid-filter__close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;color:#666;cursor:pointer;border-radius:4px;transition:all .15s}.ts-datagrid-filter__close:hover{background:rgba(0,0,0,.08);color:#333}.ts-datagrid-filter__close:active{background:rgba(0,0,0,.12)}.ts-datagrid-filter__search{position:relative;padding:12px 16px;background:white;border-bottom:1px solid #e8e8e8}.ts-datagrid-filter__search-icon{position:absolute;left:24px;top:50%;transform:translateY(-50%);color:#999;pointer-events:none}.ts-datagrid-filter__search-input{width:100%;padding:6px 32px;border:1px solid #d4d4d4;border-radius:4px;font-size:13px;background:white;transition:all .15s}.ts-datagrid-filter__search-input:hover{border-color:#b8b8b8}.ts-datagrid-filter__search-input:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.ts-datagrid-filter__search-input::placeholder{color:#999}.ts-datagrid-filter__search-clear{position:absolute;right:20px;top:50%;transform:translateY(-50%);width:20px;height:20px;padding:0;border:none;background:transparent;color:#999;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .15s}.ts-datagrid-filter__search-clear:hover{background:rgba(0,0,0,.08);color:#333}.ts-datagrid-filter__values-container{flex:1;display:flex;flex-direction:column;min-height:0;background:white}.ts-datagrid-filter__select-all{display:flex;align-items:center;padding:8px 16px;background:#f8f8f8;border-bottom:1px solid #e8e8e8;cursor:pointer;font-size:13px;font-weight:500;color:#333;transition:background .15s}.ts-datagrid-filter__select-all:hover{background:#f0f0f0}.ts-datagrid-filter__select-all input[type=checkbox]{margin-right:8px;cursor:pointer}.ts-datagrid-filter__select-all span{flex:1}.ts-datagrid-filter__values-list{flex:1;overflow-y:auto;overflow-x:hidden;max-height:250px}.ts-datagrid-filter__values-list::-webkit-scrollbar{width:6px}.ts-datagrid-filter__values-list::-webkit-scrollbar-track{background:transparent}.ts-datagrid-filter__values-list::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px}.ts-datagrid-filter__values-list::-webkit-scrollbar-thumb:hover{background:#999}.ts-datagrid-filter__value-item{display:flex;align-items:center;padding:6px 16px;cursor:pointer;font-size:13px;transition:background .1s}.ts-datagrid-filter__value-item:hover{background:#f5f5f5}.ts-datagrid-filter__value-item input[type=checkbox]{margin-right:8px;cursor:pointer;flex-shrink:0}.ts-datagrid-filter__value-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.ts-datagrid-filter__value-text--blanks{font-style:italic;color:#666}.ts-datagrid-filter__count{margin-left:auto;padding-left:8px;color:#999;font-size:11px;flex-shrink:0}.ts-datagrid-filter__loading{display:flex;align-items:center;justify-content:center;gap:8px;padding:30px;color:#666;font-size:13px}.ts-datagrid-filter__spinner{width:16px;height:16px;border:2px solid #e0e0e0;border-top-color:#1976d2;border-radius:50%;animation:spin .6s linear infinite}.ts-datagrid-filter__empty{text-align:center;padding:30px;color:#999;font-size:13px}.ts-datagrid-filter__footer{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:linear-gradient(to top,#fafafa,#f5f5f5);border-top:1px solid #e0e0e0}.ts-datagrid-filter__footer-actions{display:flex;gap:8px}.ts-datagrid-filter__btn{padding:6px 14px;border:none;border-radius:4px;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s}.ts-datagrid-filter__btn--text{background:transparent;color:#666}.ts-datagrid-filter__btn--text:hover:not(:disabled){color:#1976d2;background:rgba(25,118,210,.08)}.ts-datagrid-filter__btn--text:disabled{opacity:.5;cursor:not-allowed}.ts-datagrid-filter__btn--secondary{background:white;color:#333;border:1px solid #d4d4d4}.ts-datagrid-filter__btn--secondary:hover{background:#f5f5f5;border-color:#b8b8b8}.ts-datagrid-filter__btn--secondary:active{background:#ebebeb}.ts-datagrid-filter__btn--primary{background:#1976d2;color:#fff;border:1px solid #1976d2}.ts-datagrid-filter__btn--primary:hover{background:#1565c0;border-color:#1565c0}.ts-datagrid-filter__btn--primary:active{background:#0d47a1}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.ts-datagrid-active-filters{background:var(--ts-grid-active-filters-bg, #f5f5f5);border:1px solid var(--ts-grid-border-color, #e0e0e0);border-radius:4px;padding:8px 12px}.ts-datagrid-active-filters__container{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.ts-datagrid-active-filters__label{display:flex;align-items:center;gap:6px;font-weight:500;color:var(--ts-grid-text-secondary, #666)}.ts-datagrid-active-filters__label svg{color:var(--ts-grid-primary-color, #1976d2)}.ts-datagrid-active-filters__list{display:flex;flex-wrap:wrap;gap:8px;flex:1}.ts-datagrid-active-filters__item{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;background:white;border:1px solid var(--ts-grid-border-color, #e0e0e0);border-radius:16px;font-size:13px}.ts-datagrid-active-filters__field{font-weight:500;color:var(--ts-grid-text-primary, #333)}.ts-datagrid-active-filters__operator{color:var(--ts-grid-text-secondary, #666)}.ts-datagrid-active-filters__remove{display:flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;background:transparent;color:var(--ts-grid-text-secondary, #666);cursor:pointer;transition:all .2s;border-radius:50%}.ts-datagrid-active-filters__remove:hover{background:var(--ts-grid-error-color, #f44336);color:#fff}.ts-datagrid-active-filters__clear-all{padding:4px 12px;border:1px solid var(--ts-grid-error-color, #f44336);background:white;color:var(--ts-grid-error-color, #f44336);border-radius:4px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s}.ts-datagrid-active-filters__clear-all:hover{background:var(--ts-grid-error-color, #f44336);color:#fff}.ts-datagrid-filter__section{margin-bottom:8px}.ts-datagrid-filter__section--selected{background:#e3f2fd;border:1px solid #2196f3;border-radius:4px;padding:4px;margin-bottom:12px}.ts-datagrid-filter__section-header{font-size:11px;font-weight:600;color:#666;text-transform:uppercase;padding:4px 8px;margin-bottom:4px;border-bottom:1px solid #ddd}.ts-datagrid-filter__section--selected .ts-datagrid-filter__section-header{color:#1565c0;border-bottom-color:#90caf9}.ts-datagrid-filter__value-item--selected{background:white;margin:2px 0;border-radius:3px}.ts-datagrid-filter__info{padding:8px;margin:8px 0;background:#e3f2fd;border:1px solid #2196f3;border-radius:4px;font-size:11px;color:#1565c0;text-align:center}.ts-datagrid-fixed-column{display:flex;flex-direction:column;background:var(--tsdg-bg-primary);position:relative}.ts-datagrid-fixed-column--left{border-right:2px solid var(--tsdg-border-color-dark);box-shadow:2px 0 4px #0000000d}.ts-datagrid-fixed-column--right{border-left:2px solid var(--tsdg-border-color-dark);box-shadow:-2px 0 4px #0000000d}.ts-datagrid-fixed-column__header{position:sticky;top:0;z-index:var(--tsdg-z-sticky);background:var(--tsdg-bg-secondary);border-bottom:2px solid var(--tsdg-border-color-dark)}.ts-datagrid-fixed-column__body{flex:1;position:relative;overflow:hidden}.ts-datagrid-fixed-column__row{display:flex;min-height:var(--tsdg-row-height);border-bottom:1px solid var(--tsdg-border-color-light);transition:background-color var(--tsdg-transition-fast)}.ts-datagrid-fixed-column__row:hover{background-color:var(--tsdg-bg-hover)}.ts-datagrid-fixed-column__row{cursor:pointer}.ts-datagrid-fixed-column__row--selected{background-color:var(--tsdg-bg-selected)}.ts-datagrid-fixed-column__row--selected:hover{background-color:var(--tsdg-bg-active)}.ts-datagrid-fixed-column__row--even{background:var(--tsdg-bg-primary)}.ts-datagrid-fixed-column__row--odd{background:var(--tsdg-bg-secondary)}.ts-datagrid-fixed-column__cell{padding:var(--tsdg-cell-padding);display:flex;align-items:center;border-right:1px solid var(--tsdg-border-color-light);position:relative;overflow:hidden}.ts-datagrid-fixed-column__cell:last-child{border-right:none}.ts-datagrid-fixed-column__cell--selection{width:48px;justify-content:center;flex-shrink:0}.ts-datagrid__summary{border-top:2px solid var(--tsdg-border-color-dark);background:var(--tsdg-bg-tertiary);position:sticky;bottom:0;z-index:calc(var(--tsdg-z-sticky) - 1)}.ts-datagrid__summary-row{display:flex;min-height:var(--tsdg-row-height);font-weight:var(--tsdg-font-weight-semibold);border-bottom:1px solid var(--tsdg-border-color)}.ts-datagrid__summary-row:last-child{border-bottom:none}.ts-datagrid__summary-row--group{background:#f8f9fa;font-weight:var(--tsdg-font-weight-medium);font-size:var(--tsdg-font-size-sm)}.ts-datagrid__summary-row--page{background:#fff3cd;border-top:1px dashed var(--tsdg-warning)}.ts-datagrid__summary-row--total{background:var(--tsdg-bg-tertiary);border-top:2px solid var(--tsdg-border-color-dark)}.ts-datagrid__summary-cell{padding:var(--tsdg-cell-padding);display:flex;align-items:center;border-right:1px solid var(--tsdg-border-color-light);position:relative}.ts-datagrid__summary-cell:last-child{border-right:none}.ts-datagrid__summary-cell--selection{width:48px;justify-content:center;flex-shrink:0;background:var(--tsdg-bg-secondary)}.ts-datagrid__summary-cell--label{font-weight:var(--tsdg-font-weight-bold);color:var(--tsdg-text-secondary);padding-left:var(--tsdg-spacing-md)}.ts-datagrid__summary-cell--number{justify-content:flex-end;font-variant-numeric:tabular-nums}.ts-datagrid__summary-cell--highlighted{background:rgba(var(--tsdg-success-rgb),.1);color:var(--tsdg-success);font-weight:var(--tsdg-font-weight-bold)}.ts-datagrid__summary-cell--warning{background:rgba(var(--tsdg-warning-rgb),.1);color:var(--tsdg-warning)}.ts-datagrid__summary-cell--danger{background:rgba(var(--tsdg-danger-rgb),.1);color:var(--tsdg-danger)}.ts-datagrid__summary-label{display:flex;align-items:center;gap:var(--tsdg-spacing-xs);font-size:var(--tsdg-font-size-sm);color:var(--tsdg-text-secondary);text-transform:uppercase;letter-spacing:.5px}.ts-datagrid__summary-value{display:flex;align-items:center;gap:var(--tsdg-spacing-xs)}.ts-datagrid__summary-value--large{font-size:var(--tsdg-font-size-lg)}.ts-datagrid__summary-value--small{font-size:var(--tsdg-font-size-sm)}.ts-datagrid__summary-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:12px;font-size:var(--tsdg-font-size-xs);font-weight:var(--tsdg-font-weight-semibold);background:var(--tsdg-bg-hover);color:var(--tsdg-text-primary);margin-left:var(--tsdg-spacing-xs)}.ts-datagrid__summary-icon{display:flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:var(--tsdg-spacing-xs);color:var(--tsdg-text-muted)}.ts-datagrid__summary--multi-row .ts-datagrid__summary-row:first-child{border-top:2px solid var(--tsdg-border-color-dark)}.ts-datagrid__summary--group{background:linear-gradient(to bottom,#f8f9fa,#e9ecef);border-top:1px solid var(--tsdg-border-color);border-bottom:1px solid var(--tsdg-border-color);margin-top:-1px}@keyframes summary-highlight{0%,to{background-color:transparent}50%{background-color:rgba(var(--tsdg-primary-rgb),.1)}}.ts-datagrid__summary-cell--animated{animation:summary-highlight .6s ease-in-out}.tsdatagrid-theme-default{--tsdg-primary: #007bff;--tsdg-primary-light: #4da3ff;--tsdg-primary-dark: #0056b3;--tsdg-bg-primary: #ffffff;--tsdg-bg-secondary: #f8f9fa;--tsdg-bg-tertiary: #e9ecef;--tsdg-bg-hover: #f1f3f5;--tsdg-bg-selected: #e7f3ff;--tsdg-bg-active: #d0e8ff;--tsdg-text-primary: #212529;--tsdg-text-secondary: #6c757d;--tsdg-text-muted: #adb5bd;--tsdg-border-color: #dee2e6;--tsdg-border-color-light: #e9ecef;--tsdg-border-color-dark: #adb5bd}.tsdatagrid-theme-material{--tsdg-primary: #1976d2;--tsdg-primary-light: #42a5f5;--tsdg-primary-dark: #1565c0;--tsdg-primary-contrast: #ffffff;--tsdg-secondary: #424242;--tsdg-secondary-light: #6d6d6d;--tsdg-secondary-dark: #1b1b1b;--tsdg-success: #4caf50;--tsdg-success-light: #81c784;--tsdg-success-dark: #388e3c;--tsdg-danger: #f44336;--tsdg-danger-light: #e57373;--tsdg-danger-dark: #d32f2f;--tsdg-warning: #ff9800;--tsdg-warning-light: #ffb74d;--tsdg-warning-dark: #f57c00;--tsdg-info: #2196f3;--tsdg-info-light: #64b5f6;--tsdg-info-dark: #1976d2;--tsdg-bg-primary: #ffffff;--tsdg-bg-secondary: #fafafa;--tsdg-bg-tertiary: #f5f5f5;--tsdg-bg-hover: #eeeeee;--tsdg-bg-selected: #e3f2fd;--tsdg-bg-active: #bbdefb;--tsdg-bg-disabled: #f5f5f5;--tsdg-text-primary: rgba(0, 0, 0, .87);--tsdg-text-secondary: rgba(0, 0, 0, .6);--tsdg-text-muted: rgba(0, 0, 0, .38);--tsdg-text-disabled: rgba(0, 0, 0, .26);--tsdg-border-color: rgba(0, 0, 0, .12);--tsdg-border-color-light: rgba(0, 0, 0, .06);--tsdg-border-color-dark: rgba(0, 0, 0, .24);--tsdg-shadow-xs: 0 1px 1px rgba(0, 0, 0, .12);--tsdg-shadow-sm: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24);--tsdg-shadow: 0 3px 6px rgba(0, 0, 0, .15), 0 2px 4px rgba(0, 0, 0, .12);--tsdg-shadow-md: 0 10px 20px rgba(0, 0, 0, .15), 0 3px 6px rgba(0, 0, 0, .1);--tsdg-shadow-lg: 0 15px 25px rgba(0, 0, 0, .15), 0 5px 10px rgba(0, 0, 0, .05);--tsdg-shadow-xl: 0 20px 40px rgba(0, 0, 0, .2);--tsdg-shadow-focus: 0 0 0 3px rgba(25, 118, 210, .3);--tsdg-border-radius-sm: 2px;--tsdg-border-radius: 4px;--tsdg-border-radius-md: 4px;--tsdg-border-radius-lg: 4px;--tsdg-font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--tsdg-font-weight-medium: 500;--tsdg-font-weight-semibold: 500;--tsdg-transition-fast: 195ms cubic-bezier(.4, 0, .6, 1);--tsdg-transition: 225ms cubic-bezier(.4, 0, .2, 1);--tsdg-transition-slow: .3s cubic-bezier(.4, 0, .2, 1)}.tsdatagrid-theme-material .ts-datagrid__header{box-shadow:var(--tsdg-shadow-sm)}.tsdatagrid-theme-material .ts-datagrid-footer{box-shadow:0 -1px 3px #0000000f}.tsdatagrid-theme-material button,.tsdatagrid-theme-material .ts-datagrid-footer__button,.tsdatagrid-theme-material .ts-datagrid-footer__page{text-transform:uppercase;letter-spacing:.5px;font-weight:var(--tsdg-font-weight-medium)}.tsdatagrid-theme-material button:active:not(:disabled),.tsdatagrid-theme-material .ts-datagrid-footer__button:active:not(:disabled),.tsdatagrid-theme-material .ts-datagrid-footer__page:active:not(:disabled){box-shadow:var(--tsdg-shadow)}.tsdatagrid-theme-dark{--tsdg-primary: #90caf9;--tsdg-primary-light: #bbdefb;--tsdg-primary-dark: #42a5f5;--tsdg-primary-contrast: rgba(0, 0, 0, .87);--tsdg-secondary: #bdbdbd;--tsdg-secondary-light: #e0e0e0;--tsdg-secondary-dark: #9e9e9e;--tsdg-success: #66bb6a;--tsdg-success-light: #81c784;--tsdg-success-dark: #4caf50;--tsdg-danger: #ef5350;--tsdg-danger-light: #e57373;--tsdg-danger-dark: #f44336;--tsdg-warning: #ffa726;--tsdg-warning-light: #ffb74d;--tsdg-warning-dark: #ff9800;--tsdg-info: #29b6f6;--tsdg-info-light: #4fc3f7;--tsdg-info-dark: #03a9f4;--tsdg-bg-primary: #1e1e1e;--tsdg-bg-secondary: #252526;--tsdg-bg-tertiary: #2d2d30;--tsdg-bg-hover: #333333;--tsdg-bg-selected: #264f78;--tsdg-bg-active: #094771;--tsdg-bg-disabled: #2d2d30;--tsdg-bg-overlay: rgba(0, 0, 0, .7);--tsdg-header-bg: #252526;--tsdg-body-bg: #1e1e1e;--tsdg-footer-bg: #252526;--tsdg-toolbar-bg: #2d2d30;--tsdg-group-panel-bg: #2d2d30;--tsdg-row-even-bg: #1e1e1e;--tsdg-row-odd-bg: #252526;--tsdg-row-hover-bg: #2d2d30;--tsdg-row-selected-bg: #264f78;--tsdg-cell-editing-bg: #3e2723;--tsdg-text-primary: #e0e0e0;--tsdg-text-secondary: #9e9e9e;--tsdg-text-muted: #757575;--tsdg-text-disabled: #616161;--tsdg-text-placeholder: #757575;--tsdg-border-color: #3e3e42;--tsdg-border-color-light: #2d2d30;--tsdg-border-color-dark: #555555;--tsdg-border-color-hover: #505050;--tsdg-shadow-xs: 0 1px 2px rgba(0, 0, 0, .3);--tsdg-shadow-sm: 0 1px 3px rgba(0, 0, 0, .4);--tsdg-shadow: 0 2px 4px rgba(0, 0, 0, .5);--tsdg-shadow-md: 0 4px 8px rgba(0, 0, 0, .6);--tsdg-shadow-lg: 0 8px 16px rgba(0, 0, 0, .7);--tsdg-shadow-xl: 0 12px 24px rgba(0, 0, 0, .8);--tsdg-shadow-focus: 0 0 0 3px rgba(144, 202, 249, .3);--tsdg-shadow-error: 0 0 0 3px rgba(239, 83, 80, .3);--tsdg-scrollbar-track: #2d2d30;--tsdg-scrollbar-thumb: #505050;--tsdg-scrollbar-thumb-hover: #616161}.tsdatagrid-theme-dark img,.tsdatagrid-theme-dark svg{filter:brightness(.9)}.tsdatagrid-theme-dark button:focus-visible,.tsdatagrid-theme-dark input:focus-visible,.tsdatagrid-theme-dark select:focus-visible,.tsdatagrid-theme-dark .ts-datagrid-footer__button:focus-visible,.tsdatagrid-theme-dark .ts-datagrid-footer__page:focus-visible{outline-color:var(--tsdg-primary)}.tsdatagrid-theme-dark ::selection{background:var(--tsdg-primary);color:var(--tsdg-primary-contrast)}.tsdatagrid-theme-compact{--tsdg-row-height: var(--tsdg-row-height-compact);--tsdg-header-height: var(--tsdg-header-height-compact);--tsdg-footer-height: var(--tsdg-footer-height-compact);--tsdg-cell-padding-x: var(--tsdg-spacing-sm);--tsdg-cell-padding-y: var(--tsdg-spacing-xs);--tsdg-font-size-base: var(--tsdg-font-size-sm)}.tsdatagrid-theme-comfortable{--tsdg-row-height: var(--tsdg-row-height-comfortable);--tsdg-header-height: var(--tsdg-header-height-comfortable);--tsdg-footer-height: var(--tsdg-footer-height-comfortable);--tsdg-cell-padding-x: var(--tsdg-spacing-lg);--tsdg-cell-padding-y: var(--tsdg-spacing-md);--tsdg-font-size-base: var(--tsdg-font-size-lg)}
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import { P as t, A as r, a8 as o, bI as i, c0 as d, x as n, o as c, c4 as l, C as u, t as m, s as b, D as g, w as p, E as S, c2 as f, bO as y, Y as C, bC as D, Z as T, I as h, b$ as E, z as O, B as F, F as M, dQ as G, bP as v, bN as A, bQ as R, G as x, n as V, H as P, a4 as N, a5 as k, dN as L, dR as w, bp as B, bo as I, O as z, $ as K, a0 as H, X as j, bH as W, b_ as q, a7 as Y, W as J, R as Q, U, S as X, L as _, ey as Z, a9 as $, a3 as aa, a2 as ea, a1 as sa, a as ta, k as ra, T as oa, l as ia, h as da, i as na, j as ca, d as la, f as ua, b as ma, p as ba, m as ga, e as pa, aa as Sa, ac as fa, ab as ya, V as Ca, a6 as Da, cf as Ta, cy as ha, cz as Ea, eI as Oa, cA as Fa, aR as Ma, aP as Ga, eH as va, d6 as Aa, bU as Ra, et as xa, e0 as Va, aZ as Pa, bq as Na, bs as ka, br as La, dd as wa, bL as Ba, db as Ia, dP as za, dw as Ka, cX as Ha, dU as ja, bi as Wa, aV as qa, e9 as Ya, dt as Ja, dE as Qa, dB as Ua, dq as Xa, dO as _a, c5 as Za, aY as $a, bX as ae, bV as ee, co as se, cu as te, dM as re, dT as oe, bZ as ie, bY as de, eB as ne, bW as ce, aA as le, aU as ue, aO as me, bk as be, bE as ge, ea as pe, ec as Se, ex as fe, eb as ye, p as Ce, c3 as De, ew as Te, c_ as he, cJ as Ee, cK as Oe, cL as Fe, d9 as Me, da as Ge, aC as ve, cC as Ae, cG as Re, cE as xe, cI as Ve, ep as Pe, dm as Ne, bB as ke, bv as Le, bw as we, bA as Be, by as Ie, bx as ze, bz as Ke, dx as He, el as je, cZ as We, cW as qe, ei as Ye, eJ as Je, bb as Qe, b5 as Ue, b6 as Xe, dy as _e, b9 as Ze, a$ as $e, dW as as, b2 as es, cw as ss, b3 as ts, bc as rs, e8 as os, ba as is, b1 as ds, dz as ns, be as cs, b0 as ls, b7 as us, cT as ms, bd as bs, bg as gs, b8 as ps, b4 as Ss, bf as fs, eq as ys, eK as Cs, ck as Ds, eF as Ts, eG as hs, a_ as Es, c9 as Os, bm as Fs, bj as Ms, eD as Gs, ed as vs, cr as As, c7 as Rs, ce as xs, c8 as Vs, cs as Ps, eE as Ns, cc as ks, dK as Ls, cq as ws, cn as Bs, c1 as Is, bD as zs, cU as Ks, ci as Hs, bn as js, ev as Ws, bK as qs, e6 as Ys, c$ as Js, em as Qs, y as Us, dD as Xs, r as _s, q as Zs, v as $s, dI as at, ds as et, J as st, K as tt, Q as rt, ca as ot, dZ as it, dG as dt, dH as nt, dY as ct, u as lt, er as ut, eh as mt, es as bt, M as gt, cP as pt, cO as St, cQ as ft, cM as yt, cS as Ct, cR as Dt, cN as Tt, dg as ht, en as Et, e4 as Ot, ez as Ft, dS as Mt, e5 as Gt, ek as vt, dJ as At, aM as Rt, aF as xt, aJ as Vt, e1 as Pt, bG as Nt, aL as kt, aE as Lt, aI as wt, d1 as Bt, aQ as It, eg as zt, cv as Kt, dj as Ht, di as jt, cx as Wt, dF as qt, dX as Yt, bt as Jt, d4 as Qt, de as Ut, aG as Xt, d$ as _t, bM as Zt, aS as $t, ef as ar, dL as er, bJ as sr, d_ as tr, aH as rr, dC as or, bl as ir, cl as dr, cg as nr, cp as cr, dl as lr, du as ur, aB as mr, dr as br, dV as gr, bh as pr, d3 as Sr, cb as fr, eA as yr, cj as Cr, ee as Dr, cd as Tr, cm as hr, eu as Er, d2 as Or, dp as Fr, df as Mr, cY as Gr, e2 as vr, cB as Ar, cF as Rr, cD as xr, cH as Vr, d5 as Pr, eC as Nr, e3 as kr, d7 as Lr, d8 as wr, dA as Br, bF as Ir, dc as zr, e7 as Kr, ch as Hr, N as jr, dk as Wr, dh as qr, bR as Yr, bS as Jr, dn as Qr, ej as Ur, d0 as Xr, aN as _r, cV as Zr, aD as $r, ar as ao, am as eo, av as so, au as to, c6 as ro, at as oo, ad as io, al as no, ak as co, af as lo, ax as uo, ah as mo, az as bo, ap as go, ay as po, ag as So, aw as fo, ao as yo, ai as Co, ae as Do, aj as To, an as ho, as as Eo, aq as Oo, aK as Fo, aX as Mo, bu as Go, bT as vo, aW as Ao, eo as Ro, ct as xo, dv as Vo, aT as Po } from "./index-541cb5f8.js";
|
|
2
|
+
import "vue";
|
|
3
|
+
export {
|
|
4
|
+
t as AggregateFunction,
|
|
5
|
+
r as Alignment,
|
|
6
|
+
o as AriaRole,
|
|
7
|
+
i as BatchProcessor,
|
|
8
|
+
d as CacheStrategy,
|
|
9
|
+
n as ChangeType,
|
|
10
|
+
c as ColumnFormat,
|
|
11
|
+
l as ColumnSearcher,
|
|
12
|
+
u as ColumnType,
|
|
13
|
+
m as DataSourceMode,
|
|
14
|
+
b as DataSourceType,
|
|
15
|
+
g as DataType,
|
|
16
|
+
p as EditingMode,
|
|
17
|
+
S as EditorType,
|
|
18
|
+
f as ErrorBoundary,
|
|
19
|
+
y as ErrorSeverity,
|
|
20
|
+
C as ExportFormat,
|
|
21
|
+
D as ExportManager,
|
|
22
|
+
T as ExportScope,
|
|
23
|
+
h as FILTER_OPERATORS,
|
|
24
|
+
E as FallbackStrategy,
|
|
25
|
+
O as FilterLogic,
|
|
26
|
+
F as FilterMode,
|
|
27
|
+
M as FilterOperator,
|
|
28
|
+
G as GRID_CONSTANTS,
|
|
29
|
+
v as GridError,
|
|
30
|
+
A as GridErrorCode,
|
|
31
|
+
R as GridErrorHandler,
|
|
32
|
+
x as GridMode,
|
|
33
|
+
V as GridTheme,
|
|
34
|
+
P as HttpMethod,
|
|
35
|
+
N as Key,
|
|
36
|
+
k as KeyboardAction,
|
|
37
|
+
L as LRUCache,
|
|
38
|
+
w as Logger,
|
|
39
|
+
B as ODataDataSource,
|
|
40
|
+
I as ODataQueryBuilder,
|
|
41
|
+
z as ODataVersion,
|
|
42
|
+
K as PDFOrientation,
|
|
43
|
+
H as PDFPageSize,
|
|
44
|
+
j as PaginationMode,
|
|
45
|
+
W as PerformanceMonitor,
|
|
46
|
+
q as RetryStrategy,
|
|
47
|
+
Y as ScrollMode,
|
|
48
|
+
J as SearchMode,
|
|
49
|
+
Q as SelectionModeType,
|
|
50
|
+
U as SelectionPersistence,
|
|
51
|
+
X as SortDirection,
|
|
52
|
+
_ as SortMode,
|
|
53
|
+
Z as StorageManager,
|
|
54
|
+
$ as StorageType,
|
|
55
|
+
aa as SummaryPosition,
|
|
56
|
+
ea as SummaryScope,
|
|
57
|
+
sa as SummaryType,
|
|
58
|
+
ta as TSDataGrid,
|
|
59
|
+
ra as TSDataGridActiveFilters,
|
|
60
|
+
oa as TSDataGridBody,
|
|
61
|
+
ia as TSDataGridCell,
|
|
62
|
+
da as TSDataGridColumnChooser,
|
|
63
|
+
na as TSDataGridContextMenu,
|
|
64
|
+
ca as TSDataGridFilter,
|
|
65
|
+
la as TSDataGridFooter,
|
|
66
|
+
ua as TSDataGridGroupPanel,
|
|
67
|
+
ma as TSDataGridHeader,
|
|
68
|
+
ba as TSDataGridPlugin,
|
|
69
|
+
ga as TSDataGridRow,
|
|
70
|
+
pa as TSDataGridToolbar,
|
|
71
|
+
Sa as ToolbarLocation,
|
|
72
|
+
fa as VERSION,
|
|
73
|
+
ya as ValidationRuleType,
|
|
74
|
+
Ca as ValidationSeverity,
|
|
75
|
+
Da as VirtualizationMode,
|
|
76
|
+
Ta as addClass,
|
|
77
|
+
ha as addDays,
|
|
78
|
+
Ea as addMonths,
|
|
79
|
+
Oa as addSROnlyClass,
|
|
80
|
+
Fa as addYears,
|
|
81
|
+
Ma as alpha,
|
|
82
|
+
Ga as alphanumeric,
|
|
83
|
+
va as announceToScreenReader,
|
|
84
|
+
Aa as arrayRange,
|
|
85
|
+
Ra as assertNotNull,
|
|
86
|
+
xa as assign,
|
|
87
|
+
Va as average,
|
|
88
|
+
Pa as batchValidateRows,
|
|
89
|
+
Na as buildODataFilter,
|
|
90
|
+
ka as buildODataGroupBy,
|
|
91
|
+
La as buildODataOrderBy,
|
|
92
|
+
wa as camelCase,
|
|
93
|
+
Ba as cancelIdleCallback,
|
|
94
|
+
Ia as capitalize,
|
|
95
|
+
za as catchMemoize,
|
|
96
|
+
Ka as charCount,
|
|
97
|
+
Ha as chunk,
|
|
98
|
+
ja as clamp,
|
|
99
|
+
Wa as clearFormatterCache,
|
|
100
|
+
qa as combineValidators,
|
|
101
|
+
Ya as compoundInterest,
|
|
102
|
+
Ja as contains,
|
|
103
|
+
Qa as copyTableToClipboard,
|
|
104
|
+
Ua as copyToClipboard,
|
|
105
|
+
Xa as countOccurrences,
|
|
106
|
+
_a as createCache,
|
|
107
|
+
Za as createColumnSearcher,
|
|
108
|
+
$a as createColumnValidator,
|
|
109
|
+
ae as createConfigError,
|
|
110
|
+
ee as createDataLoadError,
|
|
111
|
+
se as createElement,
|
|
112
|
+
te as createFragment,
|
|
113
|
+
re as createKeyHandler,
|
|
114
|
+
oe as createLogger,
|
|
115
|
+
ie as createNetworkError,
|
|
116
|
+
de as createOperationError,
|
|
117
|
+
ne as createStorage,
|
|
118
|
+
ce as createValidationError,
|
|
119
|
+
le as createValidator,
|
|
120
|
+
ue as creditCard,
|
|
121
|
+
me as custom,
|
|
122
|
+
be as customFormatters,
|
|
123
|
+
ge as debounce,
|
|
124
|
+
pe as deepClone,
|
|
125
|
+
Se as deepEqual,
|
|
126
|
+
fe as deepFreeze,
|
|
127
|
+
ye as deepMerge,
|
|
128
|
+
Ce as default,
|
|
129
|
+
De as defaultErrorBoundary,
|
|
130
|
+
Te as diff,
|
|
131
|
+
he as difference,
|
|
132
|
+
Ee as differenceInDays,
|
|
133
|
+
Oe as differenceInHours,
|
|
134
|
+
Fe as differenceInMinutes,
|
|
135
|
+
Me as drop,
|
|
136
|
+
Ge as dropLast,
|
|
137
|
+
ve as email,
|
|
138
|
+
Ae as endOfDay,
|
|
139
|
+
Re as endOfMonth,
|
|
140
|
+
xe as endOfWeek,
|
|
141
|
+
Ve as endOfYear,
|
|
142
|
+
Pe as entries,
|
|
143
|
+
Ne as escapeHtml,
|
|
144
|
+
ke as exportGridData,
|
|
145
|
+
Le as exportToCSV,
|
|
146
|
+
we as exportToExcel,
|
|
147
|
+
Be as exportToHTML,
|
|
148
|
+
Ie as exportToJSON,
|
|
149
|
+
ze as exportToPDF,
|
|
150
|
+
Ke as exportToXML,
|
|
151
|
+
He as extractNumbers,
|
|
152
|
+
je as filterObject,
|
|
153
|
+
We as findDuplicates,
|
|
154
|
+
qe as flatten,
|
|
155
|
+
Ye as flattenObject,
|
|
156
|
+
Je as focusWithAnnouncement,
|
|
157
|
+
Qe as formatArray,
|
|
158
|
+
Ue as formatBoolean,
|
|
159
|
+
Xe as formatBytes,
|
|
160
|
+
_e as formatBytesString,
|
|
161
|
+
Ze as formatCreditCard,
|
|
162
|
+
$e as formatCurrency,
|
|
163
|
+
as as formatCurrencyString,
|
|
164
|
+
es as formatDate,
|
|
165
|
+
ss as formatDateString,
|
|
166
|
+
ts as formatDateTime,
|
|
167
|
+
rs as formatDuration,
|
|
168
|
+
os as formatFileSize,
|
|
169
|
+
is as formatLookup,
|
|
170
|
+
ds as formatNumber,
|
|
171
|
+
ns as formatNumberString,
|
|
172
|
+
cs as formatOrdinal,
|
|
173
|
+
ls as formatPercent,
|
|
174
|
+
us as formatPhone,
|
|
175
|
+
ms as formatRelative,
|
|
176
|
+
bs as formatRelativeTime,
|
|
177
|
+
gs as formatRowValues,
|
|
178
|
+
ps as formatSSN,
|
|
179
|
+
Ss as formatTime,
|
|
180
|
+
fs as formatValue,
|
|
181
|
+
ys as fromEntries,
|
|
182
|
+
Cs as getActionLabel,
|
|
183
|
+
Ds as getAttr,
|
|
184
|
+
Ts as getCellAriaAttributes,
|
|
185
|
+
hs as getColumnHeaderAriaAttributes,
|
|
186
|
+
Es as getDefaultErrorMessage,
|
|
187
|
+
Os as getDimensions,
|
|
188
|
+
Fs as getFormatter,
|
|
189
|
+
Ms as getFormatterCacheSize,
|
|
190
|
+
Gs as getGridAriaAttributes,
|
|
191
|
+
vs as getNestedValue,
|
|
192
|
+
As as getNextSibling,
|
|
193
|
+
Rs as getOffset,
|
|
194
|
+
xs as getParent,
|
|
195
|
+
Vs as getPosition,
|
|
196
|
+
Ps as getPreviousSibling,
|
|
197
|
+
Ns as getRowAriaAttributes,
|
|
198
|
+
ks as getScrollPosition,
|
|
199
|
+
Ls as getShortcutString,
|
|
200
|
+
ws as getSiblings,
|
|
201
|
+
Bs as getStyle,
|
|
202
|
+
Is as globalErrorHandler,
|
|
203
|
+
zs as globalExportManager,
|
|
204
|
+
Ks as groupBy,
|
|
205
|
+
Hs as hasClass,
|
|
206
|
+
js as hasFormatter,
|
|
207
|
+
Ws as hasSameKeys,
|
|
208
|
+
qs as idleCallback,
|
|
209
|
+
Ys as inRange,
|
|
210
|
+
Js as intersection,
|
|
211
|
+
Qs as invert,
|
|
212
|
+
Us as isChange,
|
|
213
|
+
Xs as isClipboardSupported,
|
|
214
|
+
_s as isColumnBand,
|
|
215
|
+
Zs as isColumnDefinition,
|
|
216
|
+
$s as isCustomStoreConfig,
|
|
217
|
+
at as isEditingKey,
|
|
218
|
+
et as isEmpty,
|
|
219
|
+
st as isFilterCondition,
|
|
220
|
+
tt as isFilterGroup,
|
|
221
|
+
rt as isGroupedRow,
|
|
222
|
+
ot as isInViewport,
|
|
223
|
+
it as isInteger,
|
|
224
|
+
dt as isModifierKey,
|
|
225
|
+
nt as isNavigationKey,
|
|
226
|
+
ct as isNumber,
|
|
227
|
+
lt as isODataConfig,
|
|
228
|
+
ut as isObject,
|
|
229
|
+
mt as isObjectEmpty,
|
|
230
|
+
bt as isPlainObject,
|
|
231
|
+
gt as isSortDescriptor,
|
|
232
|
+
pt as isThisMonth,
|
|
233
|
+
St as isThisWeek,
|
|
234
|
+
ft as isThisYear,
|
|
235
|
+
yt as isToday,
|
|
236
|
+
Ct as isValidDate,
|
|
237
|
+
Dt as isWeekend,
|
|
238
|
+
Tt as isYesterday,
|
|
239
|
+
ht as kebabCase,
|
|
240
|
+
Et as keys,
|
|
241
|
+
Ot as lerp,
|
|
242
|
+
Ft as localStorageManager,
|
|
243
|
+
Mt as logger,
|
|
244
|
+
Gt as mapRange,
|
|
245
|
+
vt as mapValues,
|
|
246
|
+
At as matchesKeyCombo,
|
|
247
|
+
Rt as maxDate,
|
|
248
|
+
xt as maxLength,
|
|
249
|
+
Vt as maxValue,
|
|
250
|
+
Pt as median,
|
|
251
|
+
Nt as memoize,
|
|
252
|
+
kt as minDate,
|
|
253
|
+
Lt as minLength,
|
|
254
|
+
wt as minValue,
|
|
255
|
+
Bt as move,
|
|
256
|
+
It as numeric,
|
|
257
|
+
zt as omit,
|
|
258
|
+
Kt as onClickOutside,
|
|
259
|
+
Ht as padEnd,
|
|
260
|
+
jt as padStart,
|
|
261
|
+
Wt as parseDate,
|
|
262
|
+
qt as parseKeyboardEvent,
|
|
263
|
+
Yt as parseNumber,
|
|
264
|
+
Jt as parseODataError,
|
|
265
|
+
Qt as partition,
|
|
266
|
+
Ut as pascalCase,
|
|
267
|
+
Xt as pattern,
|
|
268
|
+
_t as percentage,
|
|
269
|
+
Zt as perfMonitor,
|
|
270
|
+
$t as phone,
|
|
271
|
+
ar as pick,
|
|
272
|
+
er as preventDefaultKeys,
|
|
273
|
+
sr as rafThrottle,
|
|
274
|
+
tr as random,
|
|
275
|
+
rr as range,
|
|
276
|
+
or as readFromClipboard,
|
|
277
|
+
ir as registerFormatter,
|
|
278
|
+
dr as removeAttr,
|
|
279
|
+
nr as removeClass,
|
|
280
|
+
cr as removeElement,
|
|
281
|
+
lr as removeWhitespace,
|
|
282
|
+
ur as replaceAll,
|
|
283
|
+
mr as required,
|
|
284
|
+
br as reverse,
|
|
285
|
+
gr as round,
|
|
286
|
+
pr as safeFormatValue,
|
|
287
|
+
Sr as sample,
|
|
288
|
+
fr as scrollIntoViewIfNeeded,
|
|
289
|
+
yr as sessionStorageManager,
|
|
290
|
+
Cr as setAttr,
|
|
291
|
+
Dr as setNestedValue,
|
|
292
|
+
Tr as setScrollPosition,
|
|
293
|
+
hr as setStyle,
|
|
294
|
+
Er as shallowClone,
|
|
295
|
+
Or as shuffle,
|
|
296
|
+
Fr as slugify,
|
|
297
|
+
Mr as snakeCase,
|
|
298
|
+
Gr as sortBy,
|
|
299
|
+
vr as standardDeviation,
|
|
300
|
+
Ar as startOfDay,
|
|
301
|
+
Rr as startOfMonth,
|
|
302
|
+
xr as startOfWeek,
|
|
303
|
+
Vr as startOfYear,
|
|
304
|
+
Pr as stats,
|
|
305
|
+
Nr as storage,
|
|
306
|
+
kr as sum,
|
|
307
|
+
Lr as take,
|
|
308
|
+
wr as takeLast,
|
|
309
|
+
Br as template,
|
|
310
|
+
Ir as throttle,
|
|
311
|
+
zr as titleCase,
|
|
312
|
+
Kr as toOrdinal,
|
|
313
|
+
Hr as toggleClass,
|
|
314
|
+
jr as toggleSortDirection,
|
|
315
|
+
Wr as trim,
|
|
316
|
+
qr as truncate,
|
|
317
|
+
Yr as tryAsync,
|
|
318
|
+
Jr as trySync,
|
|
319
|
+
Qr as unescapeHtml,
|
|
320
|
+
Ur as unflatten,
|
|
321
|
+
Xr as union,
|
|
322
|
+
_r as unique,
|
|
323
|
+
Zr as uniqueArray,
|
|
324
|
+
$r as url,
|
|
325
|
+
ao as useClipboard,
|
|
326
|
+
eo as useColumnChooser,
|
|
327
|
+
so as useColumnReorder,
|
|
328
|
+
to as useColumnResize,
|
|
329
|
+
ro as useColumnSearch,
|
|
330
|
+
oo as useContextMenu,
|
|
331
|
+
io as useDataSource,
|
|
332
|
+
no as useEditing,
|
|
333
|
+
co as useExport,
|
|
334
|
+
lo as useFiltering,
|
|
335
|
+
uo as useGridApi,
|
|
336
|
+
mo as useGrouping,
|
|
337
|
+
bo as useInfiniteScroll,
|
|
338
|
+
go as useKeyboardNavigation,
|
|
339
|
+
po as useLoadingState,
|
|
340
|
+
So as usePagination,
|
|
341
|
+
fo as useRowExpansion,
|
|
342
|
+
yo as useSearch,
|
|
343
|
+
Co as useSelection,
|
|
344
|
+
Do as useSorting,
|
|
345
|
+
To as useStatePersistence,
|
|
346
|
+
ho as useSummary,
|
|
347
|
+
Eo as useUndo,
|
|
348
|
+
Oo as useVirtualization,
|
|
349
|
+
Fo as validDate,
|
|
350
|
+
Mo as validateField,
|
|
351
|
+
Go as validateODataQuery,
|
|
352
|
+
vo as validateOrThrow,
|
|
353
|
+
Ao as validateRow,
|
|
354
|
+
Ro as values,
|
|
355
|
+
xo as waitForElement,
|
|
356
|
+
Vo as wordCount,
|
|
357
|
+
Po as zipCode
|
|
358
|
+
};
|