react-restyle-components 0.4.44 → 0.4.46
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/lib/src/core-components/src/components/Table/Table.js +63 -68
- package/lib/src/core-components/src/components/Table/elements.d.ts +6 -1
- package/lib/src/core-components/src/components/Table/elements.js +64 -21
- package/lib/src/core-components/src/components/Table/types.d.ts +1 -1
- package/lib/src/core-components/src/tc.global.css +4 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React, { forwardRef, useState, useCallback, useMemo, useEffect, useRef, } from 'react';
|
|
4
|
-
import { TableRoot, Toolbar, ToolbarGroup, SearchInput, ToolbarButton, TableWrapper, StyledTable, TableHeader, HeaderRow, HeaderCell, TableBody, TableRow, TableCell, Checkbox, ExpandButton, ExpandedRow, ExpandedCell, TableFooter, FooterRow, FooterCell, PaginationWrapper, PaginationInfo, PaginationControls, PageButton, PageSizeSelect, QuickJumper, EmptyState, LoadingOverlay, LoadingSpinner, EditableCell, CellEditor, ColumnTogglePanel, ColumnToggleHeader, ColumnToggleSearch, ColumnToggleList, ColumnToggleItem, ColumnToggleDragHandle, SelectionIndicator, SelectionCount, } from './elements';
|
|
4
|
+
import { TableRoot, Toolbar, ToolbarGroup, SearchInput, ToolbarButton, TableWrapper, StyledTable, TableHeader, HeaderRow, HeaderCell, TableBody, TableRow, TableCell, TableCellContent, Checkbox, ExpandButton, ExpandedRow, ExpandedCell, TableFooter, FooterRow, FooterCell, PaginationWrapper, PaginationInfo, PaginationControls, PageButton, PageSizeSelect, QuickJumper, EmptyState, LoadingOverlay, LoadingSpinner, EditableCell, CellEditor, ColumnTogglePanel, ColumnToggleHeader, ColumnToggleSearch, ColumnToggleList, ColumnToggleItem, ColumnToggleDragHandle, SelectionIndicator, SelectionCount, } from './elements';
|
|
5
5
|
import { useSortState, useFilterState, usePaginationState, useRowSelection, useRowExpansion, useColumnVisibility, useTableDebounce, sortData, filterData, paginateData, getNestedValue, exportToCSV, exportToExcel, } from './hooks';
|
|
6
6
|
import { getFilterComponent } from './filters';
|
|
7
7
|
import { Tooltip } from '../Tooltip';
|
|
@@ -118,6 +118,12 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
118
118
|
},
|
|
119
119
|
}
|
|
120
120
|
: rowSelection;
|
|
121
|
+
// Normalize allowed editable cells for disabled rows
|
|
122
|
+
const allowedEditingFields = useMemo(() => resolvedRowSelection
|
|
123
|
+
? resolvedRowSelection.allowEditingCells || []
|
|
124
|
+
: [], [resolvedRowSelection]);
|
|
125
|
+
const hasAllowedEditingFields = allowedEditingFields.length > 0;
|
|
126
|
+
const isFieldAllowedForDisabledRow = useCallback((field) => hasAllowedEditingFields ? allowedEditingFields.includes(field) : false, [hasAllowedEditingFields, allowedEditingFields]);
|
|
121
127
|
// Default pagination config - users don't need to pass these
|
|
122
128
|
const resolvedPaginationConfig = pagination
|
|
123
129
|
? {
|
|
@@ -511,22 +517,19 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
511
517
|
}, []);
|
|
512
518
|
// Handle cell edit
|
|
513
519
|
const handleCellDoubleClick = useCallback((row, rowIndex, column, colIndex, e) => {
|
|
514
|
-
// Only apply
|
|
520
|
+
// Only apply allowed-cells logic if rowSelection is configured
|
|
515
521
|
if (resolvedRowSelection) {
|
|
516
522
|
// Check if row is disabled
|
|
517
523
|
const checkboxProps = resolvedRowSelection.getCheckboxProps?.(row);
|
|
518
524
|
const isRowDisabled = !!checkboxProps?.disabled;
|
|
519
|
-
// Only apply
|
|
525
|
+
// Only apply allowed-cells logic when row is disabled
|
|
520
526
|
if (isRowDisabled) {
|
|
521
|
-
//
|
|
522
|
-
|
|
523
|
-
// If allowRows is NOT provided, block all clicks
|
|
524
|
-
if (!hasAllowRows) {
|
|
527
|
+
// If no allowed cells provided, block all clicks
|
|
528
|
+
if (!hasAllowedEditingFields) {
|
|
525
529
|
return;
|
|
526
530
|
}
|
|
527
|
-
//
|
|
528
|
-
|
|
529
|
-
if (!isInAllowRows) {
|
|
531
|
+
// Only allow clicks on columns in allowed list
|
|
532
|
+
if (!isFieldAllowedForDisabledRow(column.dataField)) {
|
|
530
533
|
return;
|
|
531
534
|
}
|
|
532
535
|
}
|
|
@@ -537,20 +540,18 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
537
540
|
column.events?.onDoubleClick?.(e, row, rowIndex, column, colIndex);
|
|
538
541
|
// Handle cell editing
|
|
539
542
|
if (editMode !== 'none') {
|
|
540
|
-
// Only apply
|
|
543
|
+
// Only apply allowed-cells logic if rowSelection is configured and row is disabled
|
|
541
544
|
if (resolvedRowSelection) {
|
|
542
545
|
const checkboxProps = resolvedRowSelection.getCheckboxProps?.(row);
|
|
543
546
|
const isRowDisabled = !!checkboxProps?.disabled;
|
|
544
547
|
if (isRowDisabled) {
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
const isInAllowRows = resolvedRowSelection.allowRows.includes(column.dataField);
|
|
548
|
-
if (isInAllowRows && editMode === 'dblclick') {
|
|
548
|
+
if (isFieldAllowedForDisabledRow(column.dataField)) {
|
|
549
|
+
if (editMode === 'dblclick') {
|
|
549
550
|
setEditingCell({ row: rowIndex, field: column.dataField });
|
|
550
551
|
setEditValue(getNestedValue(row, column.dataField));
|
|
551
552
|
}
|
|
552
553
|
}
|
|
553
|
-
// If row is disabled and no
|
|
554
|
+
// If row is disabled and no allowed cells, don't allow editing (already returned above)
|
|
554
555
|
}
|
|
555
556
|
else if (isEditable && editMode === 'dblclick') {
|
|
556
557
|
// Row is not disabled, allow normal editing
|
|
@@ -568,22 +569,19 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
568
569
|
onRowDoubleClick?.(row, rowIndex, e);
|
|
569
570
|
}, [editMode, onRowDoubleClick, getCellEditableInfo, resolvedRowSelection]);
|
|
570
571
|
const handleCellClick = useCallback((row, rowIndex, column, colIndex, e) => {
|
|
571
|
-
// Only apply
|
|
572
|
+
// Only apply allowed-cells logic if rowSelection is configured
|
|
572
573
|
if (resolvedRowSelection) {
|
|
573
574
|
// Check if row is disabled
|
|
574
575
|
const checkboxProps = resolvedRowSelection.getCheckboxProps?.(row);
|
|
575
576
|
const isRowDisabled = !!checkboxProps?.disabled;
|
|
576
|
-
// Only apply
|
|
577
|
+
// Only apply allowed-cells logic when row is disabled
|
|
577
578
|
if (isRowDisabled) {
|
|
578
|
-
//
|
|
579
|
-
|
|
580
|
-
// If allowRows is NOT provided, block all clicks
|
|
581
|
-
if (!hasAllowRows) {
|
|
579
|
+
// If no allowed cells provided, block all clicks
|
|
580
|
+
if (!hasAllowedEditingFields) {
|
|
582
581
|
return;
|
|
583
582
|
}
|
|
584
|
-
//
|
|
585
|
-
|
|
586
|
-
if (!isInAllowRows) {
|
|
583
|
+
// Only allow clicks on columns in allowed list
|
|
584
|
+
if (!isFieldAllowedForDisabledRow(column.dataField)) {
|
|
587
585
|
return;
|
|
588
586
|
}
|
|
589
587
|
}
|
|
@@ -596,20 +594,16 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
596
594
|
}
|
|
597
595
|
// Handle cell editing on click
|
|
598
596
|
if (editMode === 'click') {
|
|
599
|
-
// Only apply
|
|
597
|
+
// Only apply allowed-cells logic if rowSelection is configured and row is disabled
|
|
600
598
|
if (resolvedRowSelection) {
|
|
601
599
|
const checkboxProps = resolvedRowSelection.getCheckboxProps?.(row);
|
|
602
600
|
const isRowDisabled = !!checkboxProps?.disabled;
|
|
603
601
|
if (isRowDisabled) {
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
if (isInAllowRows) {
|
|
608
|
-
setEditingCell({ row: rowIndex, field: column.dataField });
|
|
609
|
-
setEditValue(getNestedValue(row, column.dataField));
|
|
610
|
-
}
|
|
602
|
+
if (isFieldAllowedForDisabledRow(column.dataField)) {
|
|
603
|
+
setEditingCell({ row: rowIndex, field: column.dataField });
|
|
604
|
+
setEditValue(getNestedValue(row, column.dataField));
|
|
611
605
|
}
|
|
612
|
-
// If row is disabled and no
|
|
606
|
+
// If row is disabled and no allowed cells, don't allow editing (already returned above)
|
|
613
607
|
}
|
|
614
608
|
else if (isEditable) {
|
|
615
609
|
// Row is not disabled, allow normal editing
|
|
@@ -1384,8 +1378,10 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
1384
1378
|
const hasCustomBgColor = rowSelected &&
|
|
1385
1379
|
selectedStyle &&
|
|
1386
1380
|
(selectedStyle.backgroundColor || selectedStyle.background);
|
|
1387
|
-
// Apply non-selectable style if row is disabled
|
|
1388
|
-
|
|
1381
|
+
// Apply non-selectable style ONLY if row is disabled
|
|
1382
|
+
// When disabled: false or not disabled, no styles should be applied
|
|
1383
|
+
const isRowDisabled = !!checkboxProps?.disabled;
|
|
1384
|
+
const disabledStyle = isRowDisabled
|
|
1389
1385
|
? nonSelectableStyle || {
|
|
1390
1386
|
backgroundColor: '#f3f4f6',
|
|
1391
1387
|
opacity: 0.7,
|
|
@@ -1393,7 +1389,7 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
1393
1389
|
: undefined;
|
|
1394
1390
|
return (_jsxs(React.Fragment, { children: [_jsxs(TableRow, { "$selected": rowSelected, "$clickable": !!onRowClick ||
|
|
1395
1391
|
resolvedRowSelection?.mode === 'single' ||
|
|
1396
|
-
expandable?.expandRowByClick === true, "$disabled":
|
|
1392
|
+
expandable?.expandRowByClick === true, "$disabled": isRowDisabled, "$hasCustomSelectedStyle": !!hasCustomBgColor, "data-custom-selected": hasCustomBgColor ? 'true' : undefined, className: `${classNames.row || ''} ${rowClass || ''} ${rowSelected
|
|
1397
1393
|
? typeof resolvedRowSelection?.selectedRowClassName ===
|
|
1398
1394
|
'function'
|
|
1399
1395
|
? resolvedRowSelection.selectedRowClassName(row)
|
|
@@ -1404,18 +1400,19 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
1404
1400
|
...selectedStyle,
|
|
1405
1401
|
...disabledStyle,
|
|
1406
1402
|
}, onClick: (e) => handleRowClick(row, rowIndex, e), onDoubleClick: (e) => {
|
|
1407
|
-
// Prevent double clicks on disabled rows
|
|
1408
|
-
|
|
1403
|
+
// Prevent double clicks ONLY on disabled rows
|
|
1404
|
+
// When disabled: false, allow normal behavior
|
|
1405
|
+
if (isRowDisabled) {
|
|
1409
1406
|
return;
|
|
1410
1407
|
}
|
|
1411
1408
|
// Only trigger row-level double click if not handled by a cell
|
|
1412
1409
|
// Cells handle their own double-clicks for editing
|
|
1413
1410
|
onRowDoubleClick?.(row, rowIndex, e);
|
|
1414
|
-
}, role: "row", "aria-selected": rowSelected, children: [resolvedRowSelection?.mode === 'checkbox' && (_jsx(TableCell, { "$align": "center", "$compact": compact, "$padding": cellPadding, "$disabled":
|
|
1411
|
+
}, role: "row", "aria-selected": rowSelected, children: [resolvedRowSelection?.mode === 'checkbox' && (_jsx(TableCell, { "$align": "center", "$compact": compact, "$padding": cellPadding, "$disabled": isRowDisabled, children: _jsx(Checkbox, { checked: rowSelected, disabled: checkboxProps?.disabled, onChange: (e) => handleCheckboxChange(row, e), onClick: (e) => e.stopPropagation() }) })), expandable && (_jsx(TableCell, { "$align": "center", "$compact": compact, "$padding": cellPadding, "$disabled": isRowDisabled, children: isExpandable && (_jsx(ExpandButton, { "$expanded": rowExpanded, onClick: (e) => handleExpandClick(row, e), children: expandable.expandIcon ? (expandable.expandIcon({
|
|
1415
1412
|
expanded: rowExpanded,
|
|
1416
1413
|
row,
|
|
1417
1414
|
onExpand: () => toggleExpand(row),
|
|
1418
|
-
})) : (_jsx(ExpandIcon, {})) })) })), showRowNumber && (_jsx(TableCell, { "$align": "center", "$compact": compact, "$padding": cellPadding, "$disabled":
|
|
1415
|
+
})) : (_jsx(ExpandIcon, {})) })) })), showRowNumber && (_jsx(TableCell, { "$align": "center", "$compact": compact, "$padding": cellPadding, "$disabled": isRowDisabled, style: {
|
|
1419
1416
|
width: rowNumberWidth,
|
|
1420
1417
|
color: '#6b7280',
|
|
1421
1418
|
fontWeight: 500,
|
|
@@ -1435,49 +1432,47 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
1435
1432
|
// Check if column is editable (needed for disabled row handling)
|
|
1436
1433
|
const editInfo = getCellEditableInfo(column, row, rowIndex, colIndex);
|
|
1437
1434
|
// Determine if column is effectively editable:
|
|
1438
|
-
// - If rowSelection is configured AND row is disabled AND
|
|
1439
|
-
// - If rowSelection is configured AND row is disabled AND
|
|
1435
|
+
// - If rowSelection is configured AND row is disabled AND no allowed cells are provided: NOT editable (even if marked as editable)
|
|
1436
|
+
// - If rowSelection is configured AND row is disabled AND allowed cells are provided: editable only if in allowed list
|
|
1440
1437
|
// - Otherwise: editable if marked as editable
|
|
1441
1438
|
const isRowDisabled = !!checkboxProps?.disabled;
|
|
1442
1439
|
let isEffectivelyEditable = editInfo.isEditable;
|
|
1443
|
-
// Only apply
|
|
1440
|
+
// Only apply allow list logic if rowSelection is configured and row is disabled
|
|
1444
1441
|
if (resolvedRowSelection && isRowDisabled) {
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
// No allowRows provided: disable all columns
|
|
1442
|
+
if (!hasAllowedEditingFields) {
|
|
1443
|
+
// No allowed cells provided: disable all columns
|
|
1448
1444
|
isEffectivelyEditable = false;
|
|
1449
1445
|
}
|
|
1450
1446
|
else {
|
|
1451
|
-
//
|
|
1452
|
-
const
|
|
1453
|
-
isEffectivelyEditable =
|
|
1447
|
+
// Allowed cells provided: only those columns are editable
|
|
1448
|
+
const isAllowed = isFieldAllowedForDisabledRow(column.dataField);
|
|
1449
|
+
isEffectivelyEditable = isAllowed;
|
|
1454
1450
|
}
|
|
1455
1451
|
}
|
|
1456
|
-
// Check if column is in
|
|
1457
|
-
const
|
|
1452
|
+
// Check if column is in allowed list (for styling purposes)
|
|
1453
|
+
const isInAllowedCells = !!(resolvedRowSelection &&
|
|
1458
1454
|
isRowDisabled &&
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1455
|
+
hasAllowedEditingFields &&
|
|
1456
|
+
isFieldAllowedForDisabledRow(column.dataField));
|
|
1457
|
+
const cellContent = (() => {
|
|
1458
|
+
if (isEffectivelyEditable && editMode !== 'none') {
|
|
1459
|
+
// Check for custom editor
|
|
1460
|
+
if (editInfo.customEditor) {
|
|
1461
|
+
return editInfo.customEditor;
|
|
1462
|
+
}
|
|
1463
|
+
return (_jsx(EditableCell, { "$editing": editingCell?.row === rowIndex &&
|
|
1464
|
+
editingCell?.field === column.dataField, "$showEditIcon": showEditIcon, children: renderCellContent(row, column, rowIndex, colIndex) }));
|
|
1465
|
+
}
|
|
1466
|
+
return renderCellContent(row, column, rowIndex, colIndex);
|
|
1467
|
+
})();
|
|
1468
|
+
return (_jsx(TableCell, { "$align": column.align || 'left', "$compact": compact, "$padding": cellPadding, "$pinned": column.pinned, "$hasCustomClass": !!cellClass, "$disabled": isRowDisabled, "$isEditable": isEffectivelyEditable, "$isInAllowedCells": isInAllowedCells, className: cellClass || classNames.cell, style: {
|
|
1463
1469
|
...styles.cell,
|
|
1464
1470
|
...cellStyle,
|
|
1465
1471
|
...cellResizeStyle,
|
|
1466
1472
|
}, "data-column": column.dataField, onClick: (e) => handleCellClick(row, rowIndex, column, colIndex, e), onDoubleClick: (e) => {
|
|
1467
1473
|
e.stopPropagation(); // Prevent row-level double-click from interfering
|
|
1468
1474
|
handleCellDoubleClick(row, rowIndex, column, colIndex, e);
|
|
1469
|
-
}, role: "gridcell", children: (
|
|
1470
|
-
if (isEffectivelyEditable &&
|
|
1471
|
-
editMode !== 'none') {
|
|
1472
|
-
// Check for custom editor
|
|
1473
|
-
if (editInfo.customEditor) {
|
|
1474
|
-
return editInfo.customEditor;
|
|
1475
|
-
}
|
|
1476
|
-
return (_jsx(EditableCell, { "$editing": editingCell?.row === rowIndex &&
|
|
1477
|
-
editingCell?.field === column.dataField, "$showEditIcon": showEditIcon, children: renderCellContent(row, column, rowIndex, colIndex) }));
|
|
1478
|
-
}
|
|
1479
|
-
return renderCellContent(row, column, rowIndex, colIndex);
|
|
1480
|
-
})() }, column.dataField));
|
|
1475
|
+
}, role: "gridcell", children: _jsx(TableCellContent, { "$hasFormatter": !!column.formatter, children: cellContent }) }, column.dataField));
|
|
1481
1476
|
})] }), expandable && rowExpanded && isExpandable && (_jsx(ExpandedRow, { children: _jsx(ExpandedCell, { colSpan: visibleColumns.length +
|
|
1482
1477
|
(resolvedRowSelection?.mode === 'checkbox'
|
|
1483
1478
|
? 1
|
|
@@ -56,6 +56,11 @@ export declare const TableRow: import("styled-components/dist/types").IStyledCom
|
|
|
56
56
|
$disabled: boolean;
|
|
57
57
|
$hasCustomSelectedStyle?: boolean | undefined;
|
|
58
58
|
}>> & string;
|
|
59
|
+
export declare const TableCellContent: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("styled-components").FastOmit<import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
60
|
+
ref?: import("react").RefObject<HTMLDivElement> | ((instance: HTMLDivElement | null) => void) | null | undefined;
|
|
61
|
+
}>, never>, {
|
|
62
|
+
$hasFormatter?: boolean | undefined;
|
|
63
|
+
}>> & string;
|
|
59
64
|
export declare const TableCell: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement>, {
|
|
60
65
|
$align: string;
|
|
61
66
|
$compact: boolean;
|
|
@@ -64,7 +69,7 @@ export declare const TableCell: import("styled-components/dist/types").IStyledCo
|
|
|
64
69
|
$hasCustomClass?: boolean | undefined;
|
|
65
70
|
$disabled?: boolean | undefined;
|
|
66
71
|
$isEditable?: boolean | undefined;
|
|
67
|
-
$
|
|
72
|
+
$isInAllowedCells?: boolean | undefined;
|
|
68
73
|
}>> & string;
|
|
69
74
|
export declare const Checkbox: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & {
|
|
70
75
|
ref?: ((instance: HTMLInputElement | null) => void) | import("react").RefObject<HTMLInputElement> | null | undefined;
|
|
@@ -419,6 +419,25 @@ export const TableRow = styled.tr `
|
|
|
419
419
|
}
|
|
420
420
|
`}
|
|
421
421
|
`;
|
|
422
|
+
export const TableCellContent = styled.div.attrs({
|
|
423
|
+
className: 'tc-table-cell-content',
|
|
424
|
+
}) `
|
|
425
|
+
display: flex;
|
|
426
|
+
width: 100%;
|
|
427
|
+
min-width: 0;
|
|
428
|
+
align-items: stretch;
|
|
429
|
+
gap: 0;
|
|
430
|
+
|
|
431
|
+
${({ $hasFormatter }) => !$hasFormatter &&
|
|
432
|
+
css `
|
|
433
|
+
display: block;
|
|
434
|
+
`}
|
|
435
|
+
|
|
436
|
+
> * {
|
|
437
|
+
width: 100%;
|
|
438
|
+
min-width: 0;
|
|
439
|
+
}
|
|
440
|
+
`;
|
|
422
441
|
export const TableCell = styled.td `
|
|
423
442
|
padding: ${({ $padding, $compact }) => $padding || ($compact ? '2px' : '2px')};
|
|
424
443
|
text-align: ${({ $align }) => $align};
|
|
@@ -449,34 +468,47 @@ export const TableCell = styled.td `
|
|
|
449
468
|
`}
|
|
450
469
|
|
|
451
470
|
/* Ensure formatter content displays properly */
|
|
452
|
-
/*
|
|
453
|
-
|
|
454
|
-
|
|
471
|
+
/* Use a dedicated wrapper to allow formatter content to stretch full width */
|
|
472
|
+
> .tc-table-cell-content {
|
|
473
|
+
display: flex;
|
|
474
|
+
align-items: stretch;
|
|
475
|
+
width: 100%;
|
|
476
|
+
min-width: 0;
|
|
477
|
+
gap: 0;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
> .tc-table-cell-content > * {
|
|
481
|
+
width: 100%;
|
|
482
|
+
min-width: 0;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
/* Default inline layout for legacy direct children */
|
|
486
|
+
> :not(.tc-table-cell-content) {
|
|
455
487
|
display: inline-block;
|
|
456
488
|
vertical-align: middle;
|
|
457
489
|
}
|
|
458
490
|
|
|
459
491
|
/* Preserve flex layouts - these take precedence */
|
|
460
|
-
> [class*=
|
|
461
|
-
> [style*=
|
|
462
|
-
> [style*=
|
|
463
|
-
> div[class*=
|
|
464
|
-
> div[style*=
|
|
465
|
-
> div[style*=
|
|
492
|
+
> [class*='flex'],
|
|
493
|
+
> [style*='display: flex'],
|
|
494
|
+
> [style*='display:flex'],
|
|
495
|
+
> div[class*='flex'],
|
|
496
|
+
> div[style*='display: flex'],
|
|
497
|
+
> div[style*='display:flex'] {
|
|
466
498
|
display: flex !important;
|
|
467
499
|
}
|
|
468
500
|
|
|
469
501
|
/* Preserve grid layouts */
|
|
470
|
-
> [class*=
|
|
471
|
-
> [style*=
|
|
472
|
-
> [style*=
|
|
502
|
+
> [class*='grid'],
|
|
503
|
+
> [style*='display: grid'],
|
|
504
|
+
> [style*='display:grid'] {
|
|
473
505
|
display: grid !important;
|
|
474
506
|
}
|
|
475
507
|
|
|
476
508
|
/* Preserve block layouts */
|
|
477
|
-
> [class*=
|
|
478
|
-
> [style*=
|
|
479
|
-
> [style*=
|
|
509
|
+
> [class*='block'],
|
|
510
|
+
> [style*='display: block'],
|
|
511
|
+
> [style*='display:block'] {
|
|
480
512
|
display: block !important;
|
|
481
513
|
}
|
|
482
514
|
|
|
@@ -488,19 +520,30 @@ export const TableCell = styled.td `
|
|
|
488
520
|
cursor: not-allowed;
|
|
489
521
|
pointer-events: none;
|
|
490
522
|
`}
|
|
491
|
-
|
|
492
|
-
/* If row is disabled but column is effectively editable,
|
|
523
|
+
|
|
524
|
+
/* If row is disabled but column is effectively editable, ensure proper width and interaction */
|
|
493
525
|
${({ $disabled, $isEditable }) => $disabled &&
|
|
494
526
|
$isEditable &&
|
|
495
527
|
css `
|
|
496
528
|
cursor: default;
|
|
529
|
+
pointer-events: auto !important;
|
|
530
|
+
opacity: 1 !important;
|
|
531
|
+
width: auto !important;
|
|
532
|
+
min-width: 0 !important;
|
|
533
|
+
max-width: none !important;
|
|
534
|
+
box-sizing: border-box;
|
|
497
535
|
`}
|
|
498
536
|
|
|
499
|
-
/* Remove opacity for columns
|
|
500
|
-
${({ $disabled, $
|
|
501
|
-
$
|
|
537
|
+
/* Remove opacity for allowed columns when row is disabled and ensure proper width */
|
|
538
|
+
${({ $disabled, $isInAllowedCells }) => $disabled &&
|
|
539
|
+
$isInAllowedCells &&
|
|
502
540
|
css `
|
|
503
541
|
opacity: 1 !important;
|
|
542
|
+
pointer-events: auto !important;
|
|
543
|
+
width: auto !important;
|
|
544
|
+
min-width: 0 !important;
|
|
545
|
+
max-width: none !important;
|
|
546
|
+
box-sizing: border-box;
|
|
504
547
|
`}
|
|
505
548
|
`;
|
|
506
549
|
export const Checkbox = styled.input.attrs({ type: 'checkbox' }) `
|
|
@@ -806,7 +849,7 @@ export const ColumnToggleItem = styled.label `
|
|
|
806
849
|
css `
|
|
807
850
|
background: ${tokens.primary || '#3b82f6'}15;
|
|
808
851
|
transform: translateY(2px);
|
|
809
|
-
|
|
852
|
+
|
|
810
853
|
&::before {
|
|
811
854
|
content: '';
|
|
812
855
|
position: absolute;
|
|
@@ -230,7 +230,7 @@ export interface TableSelectionConfig<T = any> {
|
|
|
230
230
|
/** Column title */
|
|
231
231
|
columnTitle?: React.ReactNode;
|
|
232
232
|
/** Array of column dataField values that should remain editable and without opacity when row is disabled */
|
|
233
|
-
|
|
233
|
+
allowEditingCells?: string[];
|
|
234
234
|
}
|
|
235
235
|
/** Row expand config */
|
|
236
236
|
export interface TableExpandConfig<T = any> {
|
|
@@ -257,5 +257,9 @@
|
|
|
257
257
|
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
|
|
258
258
|
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
|
|
259
259
|
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
|
|
260
|
+
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
|
|
261
|
+
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
|
|
262
|
+
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
|
|
263
|
+
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
|
|
260
264
|
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,.dark\:bg-black:is(.dark *),.dark\:border-gray-600:is(.dark *),:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
|
|
261
265
|
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/.\!filter,.backdrop-blur-sm,.blur,.ring,.ring-2,.shadow,.shadow-inner,body{font-family:Arima Regular;font-size:14px}.dark\:bg-black:is(.dark *),.dark\:border-gray-600:is(.dark *),*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/fieldset,legend{padding:0}.container{width:100%}@media (min-width:0px){.container{max-width:0}}@media (min-width:20rem){.container{max-width:20rem}}@media (min-width:23.4375rem){.container{max-width:23.4375rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:90rem){.container{max-width:90rem}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.form-input,.form-input::-webkit-datetime-edit,.form-input::-webkit-datetime-edit-day-field,.form-input::-webkit-datetime-edit-hour-field,.form-input::-webkit-datetime-edit-meridiem-field,.form-input::-webkit-datetime-edit-millisecond-field,.form-input::-webkit-datetime-edit-minute-field,.form-input::-webkit-datetime-edit-month-field,.form-input::-webkit-datetime-edit-second-field,.form-input::placeholder,.form-input:focus,.form-multiselect,.form-multiselect:focus,.form-select,.form-select:focus,table{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}table:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}table tr:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}select:is(.dark *){--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.\!visible{visibility:visible!important}.top-1\/2{top:50%}.-translate-x-1\/2,.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity,1))}.divide-teal-50>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(240 253 250/var(--tw-divide-opacity,1))}.bg-purple-900\/50{background-color:#581c8780}.p-0\.5{padding:.125rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.\!filter,.blur,.ring,.ring-2,.shadow,.shadow-inner,.backdrop-blur-sm,body{font-family:Arima Regular;font-size:14px}.hover\:bg-white\/20:hover{background-color:#fff3}.dark\:border-gray-600:is(.dark *),.focus\:ring-0:focus,.dark\:bg-black:is(.dark *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.dark\:bg-boxdark:is(.dark *){--tw-bg-opacity:1;background-color:rgb(36 48 63/var(--tw-bg-opacity,1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:text-black:is(.dark *){--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:placeholder-gray-400:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.dark\:ring-offset-gray-800:is(.dark *){--tw-ring-offset-color:#1f2937}.dark\:hover\:bg-blue-900:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:focus\:ring-blue-600:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/var(--tw-ring-opacity,1))}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}@font-face{font-family:ArimaRegular;src:url(library/assets/fonts/arima/arima-regular.ttf)}.container{width:100%}@media (min-width:0px){.container{max-width:0}}@media (min-width:20rem){.container{max-width:20rem}}@media (min-width:23.4375rem){.container{max-width:23.4375rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:90rem){.container{max-width:90rem}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.form-input,.form-multiselect,.form-select,.form-input:focus,.form-multiselect:focus,.form-select:focus,.form-input::placeholder,.form-input::-webkit-datetime-edit,.form-input::-webkit-datetime-edit-day-field,.form-input::-webkit-datetime-edit-hour-field,.form-input::-webkit-datetime-edit-meridiem-field,.form-input::-webkit-datetime-edit-millisecond-field,.form-input::-webkit-datetime-edit-minute-field,.form-input::-webkit-datetime-edit-month-field,.form-input::-webkit-datetime-edit-second-field,table{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}table:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}table tr:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}select:is(.dark *){--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.\!visible{visibility:visible!important}.top-1\/2{top:50%}.flex-grow,.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}@keyframes pulse{50%{opacity:.5}}@keyframes spin{to{transform:rotate(1turn)}}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity,1))}.divide-teal-50>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(240 253 250/var(--tw-divide-opacity,1))}.bg-purple-900\/50{background-color:#581c8780}.p-0\.5{padding:.125rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.shadow,.shadow-inner,.shadow-md,.ring,.ring-2,.blur,.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.backdrop-blur-sm,body{font-family:Arima Regular;font-size:14px}.menu ul{list-style:none;margin:0;padding:0}.menu li{border-bottom:1px solid #ddd;padding:10px}.menu li:last-child{border-bottom:none}.hover\:bg-white\/20:hover{background-color:#fff3}.focus\:ring-0:focus,.focus\:ring-1:focus,.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:bg-black:is(.dark *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.dark\:bg-boxdark:is(.dark *){--tw-bg-opacity:1;background-color:rgb(36 48 63/var(--tw-bg-opacity,1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:text-black:is(.dark *){--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:placeholder-gray-400:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.dark\:ring-offset-gray-800:is(.dark *){--tw-ring-offset-color:#1f2937}.dark\:hover\:bg-blue-900:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:focus\:ring-blue-600:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/var(--tw-ring-opacity,1))}@media (min-width:0px) and (max-width:767px){}
|