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.
@@ -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 allowRows logic if rowSelection is configured
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 allowRows logic when row is disabled
525
+ // Only apply allowed-cells logic when row is disabled
520
526
  if (isRowDisabled) {
521
- // Check if allowRows is provided
522
- const hasAllowRows = resolvedRowSelection.allowRows && resolvedRowSelection.allowRows.length > 0;
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
- // If allowRows IS provided, only allow clicks on columns in allowRows
528
- const isInAllowRows = resolvedRowSelection.allowRows.includes(column.dataField);
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 allowRows logic if rowSelection is configured and row is disabled
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
- const hasAllowRows = resolvedRowSelection.allowRows && resolvedRowSelection.allowRows.length > 0;
546
- if (hasAllowRows) {
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 allowRows, don't allow editing (already returned above)
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 allowRows logic if rowSelection is configured
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 allowRows logic when row is disabled
577
+ // Only apply allowed-cells logic when row is disabled
577
578
  if (isRowDisabled) {
578
- // Check if allowRows is provided
579
- const hasAllowRows = resolvedRowSelection.allowRows && resolvedRowSelection.allowRows.length > 0;
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
- // If allowRows IS provided, only allow clicks on columns in allowRows
585
- const isInAllowRows = resolvedRowSelection.allowRows.includes(column.dataField);
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 allowRows logic if rowSelection is configured and row is disabled
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
- const hasAllowRows = resolvedRowSelection.allowRows && resolvedRowSelection.allowRows.length > 0;
605
- if (hasAllowRows) {
606
- const isInAllowRows = resolvedRowSelection.allowRows.includes(column.dataField);
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 allowRows, don't allow editing (already returned above)
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
- const disabledStyle = checkboxProps?.disabled
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": !!checkboxProps?.disabled, "$hasCustomSelectedStyle": !!hasCustomBgColor, "data-custom-selected": hasCustomBgColor ? 'true' : undefined, className: `${classNames.row || ''} ${rowClass || ''} ${rowSelected
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
- if (checkboxProps?.disabled) {
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": !!checkboxProps?.disabled, 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": !!checkboxProps?.disabled, children: isExpandable && (_jsx(ExpandButton, { "$expanded": rowExpanded, onClick: (e) => handleExpandClick(row, e), children: expandable.expandIcon ? (expandable.expandIcon({
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": !!checkboxProps?.disabled, style: {
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 allowRows is NOT provided: NOT editable (even if marked as editable)
1439
- // - If rowSelection is configured AND row is disabled AND allowRows IS provided: editable only if in allowRows
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 allowRows logic if rowSelection is configured and row is disabled
1440
+ // Only apply allow list logic if rowSelection is configured and row is disabled
1444
1441
  if (resolvedRowSelection && isRowDisabled) {
1445
- const hasAllowRows = resolvedRowSelection.allowRows && resolvedRowSelection.allowRows.length > 0;
1446
- if (!hasAllowRows) {
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
- // allowRows provided: only columns in allowRows are editable
1452
- const isInAllowRows = resolvedRowSelection.allowRows.includes(column.dataField);
1453
- isEffectivelyEditable = isInAllowRows;
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 allowRows (for styling purposes)
1457
- const isInAllowRows = !!(resolvedRowSelection &&
1452
+ // Check if column is in allowed list (for styling purposes)
1453
+ const isInAllowedCells = !!(resolvedRowSelection &&
1458
1454
  isRowDisabled &&
1459
- resolvedRowSelection.allowRows &&
1460
- resolvedRowSelection.allowRows.length > 0 &&
1461
- resolvedRowSelection.allowRows.includes(column.dataField));
1462
- return (_jsx(TableCell, { "$align": column.align || 'left', "$compact": compact, "$padding": cellPadding, "$pinned": column.pinned, "$hasCustomClass": !!cellClass, "$disabled": !!checkboxProps?.disabled, "$isEditable": isEffectivelyEditable, "$isInAllowRows": isInAllowRows, className: cellClass || classNames.cell, style: {
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
- $isInAllowRows?: boolean | undefined;
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
- /* Make direct children inline-block by default (for Icon components, etc.) */
453
- /* But preserve flex/grid/block layouts when explicitly set */
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*="flex"],
461
- > [style*="display: flex"],
462
- > [style*="display:flex"],
463
- > div[class*="flex"],
464
- > div[style*="display: flex"],
465
- > div[style*="display:flex"] {
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*="grid"],
471
- > [style*="display: grid"],
472
- > [style*="display:grid"] {
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*="block"],
478
- > [style*="display: block"],
479
- > [style*="display:block"] {
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, show default cursor */
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 in allowRows when row is disabled */
500
- ${({ $disabled, $isInAllowRows }) => $disabled &&
501
- $isInAllowRows &&
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
- allowRows?: string[];
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){}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-restyle-components",
3
- "version": "0.4.44",
3
+ "version": "0.4.46",
4
4
  "private": false,
5
5
  "description": "Easy use restyle components",
6
6
  "author": {