react-restyle-components 0.4.64 → 0.4.65

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,4 +1,4 @@
1
1
  import React from 'react';
2
2
  export type { ModalSize, ModalPosition, ModalClassNames, ModalStyles, ModalProps } from './types';
3
3
  import type { ModalProps } from './types';
4
- export declare const Modal: ({ visible, title, className, contentClassName, headerClassName, style, contentStyle, onClose, isAutoClose, autoCloseDelay, isAutoCloseOutside, size, position, showCloseButton, closeButton, overlayOpacity, overlayColor, zIndex, closeOnOverlayClick, closeOnEscape, showHeader, headerBgColor, headerTextColor, borderRadius, maxWidth, contentPadding, headerPadding, animationDuration, classNames, styles, children, }: ModalProps) => React.JSX.Element | null;
4
+ export declare const Modal: ({ visible, title, className, contentClassName, headerClassName, style, contentStyle, onClose, isAutoClose, autoCloseDelay, isAutoCloseOutside, size, position, showCloseButton, closeButton, isExpand, expandButton, onExpand, overlayOpacity, overlayColor, zIndex, closeOnOverlayClick, closeOnEscape, showHeader, headerBgColor, headerTextColor, borderRadius, maxWidth, contentPadding, headerPadding, animationDuration, classNames, styles, children, }: ModalProps) => React.JSX.Element | null;
@@ -2,11 +2,12 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useEffect, useState } from 'react';
3
3
  import s from '../../../tc.module.css';
4
4
  import { cn } from '../../../utils';
5
- export const Modal = ({ visible, title = '', className = '', contentClassName = '', headerClassName = '', style = {}, contentStyle = {}, onClose, isAutoClose = false, autoCloseDelay = 1000, isAutoCloseOutside, size = 'md', position = 'center', showCloseButton = true, closeButton, overlayOpacity = 0.5, overlayColor, zIndex = 11000, closeOnOverlayClick, closeOnEscape = true, showHeader = true, headerBgColor, headerTextColor, borderRadius = '0.5rem', maxWidth, contentPadding = '1rem', headerPadding = '1rem', animationDuration = 300, classNames = {}, styles = {}, children, }) => {
5
+ export const Modal = ({ visible, title = '', className = '', contentClassName = '', headerClassName = '', style = {}, contentStyle = {}, onClose, isAutoClose = false, autoCloseDelay = 1000, isAutoCloseOutside, size = 'md', position = 'center', showCloseButton = true, closeButton, isExpand = false, expandButton, onExpand, overlayOpacity = 0.5, overlayColor, zIndex = 11000, closeOnOverlayClick, closeOnEscape = true, showHeader = true, headerBgColor, headerTextColor, borderRadius = '0.5rem', maxWidth, contentPadding = '1rem', headerPadding = '1rem', animationDuration = 300, classNames = {}, styles = {}, children, }) => {
6
6
  // isAutoCloseOutside takes priority, then closeOnOverlayClick, default true
7
7
  const shouldCloseOnOutsideClick = isAutoCloseOutside ?? closeOnOverlayClick ?? true;
8
8
  const [showModal, setShowModal] = useState(visible);
9
9
  const [isAnimating, setIsAnimating] = useState(false);
10
+ const [isExpanded, setIsExpanded] = useState(false);
10
11
  useEffect(() => {
11
12
  if (visible) {
12
13
  setShowModal(true);
@@ -75,28 +76,46 @@ export const Modal = ({ visible, title = '', className = '', contentClassName =
75
76
  ...style,
76
77
  transition: `opacity ${animationDuration}ms ease-in-out`,
77
78
  opacity: isAnimating ? 1 : 0,
78
- zIndex: containerZIndex,
79
+ zIndex: isExpanded ? 2147483647 : containerZIndex,
80
+ overflow: isExpanded ? 'hidden' : undefined,
79
81
  ...styles.container,
80
- }, onClick: handleOverlayClick, children: _jsx("div", { className: cn(s['relative'], s['w-full'], s['my-5'], s['mx-auto'], classNames.wrapper), style: {
81
- maxWidth: modalMaxWidth,
82
- marginLeft: size === 'full' ? '1rem' : undefined,
83
- marginRight: size === 'full' ? '1rem' : undefined,
84
- transform: isAnimating
85
- ? position === 'center'
86
- ? 'scale(1)'
87
- : position === 'top'
88
- ? 'translateY(0)'
82
+ }, onClick: handleOverlayClick, children: _jsx("div", { className: cn(s['relative'], s['w-full'], !isExpanded && s['my-5'], !isExpanded && s['mx-auto'], classNames.wrapper), style: isExpanded
83
+ ? {
84
+ maxWidth: '100vw',
85
+ width: '100vw',
86
+ height: '100vh',
87
+ margin: 0,
88
+ position: 'fixed',
89
+ top: 0,
90
+ left: 0,
91
+ right: 0,
92
+ bottom: 0,
93
+ zIndex: 2147483647,
94
+ transform: 'none',
95
+ opacity: isAnimating ? 1 : 0,
96
+ transition: `opacity ${animationDuration}ms ease-out`,
97
+ ...styles.wrapper,
98
+ }
99
+ : {
100
+ maxWidth: modalMaxWidth,
101
+ marginLeft: size === 'full' ? '1rem' : undefined,
102
+ marginRight: size === 'full' ? '1rem' : undefined,
103
+ transform: isAnimating
104
+ ? position === 'center'
105
+ ? 'scale(1)'
89
106
  : 'translateY(0)'
90
- : position === 'center'
91
- ? 'scale(0.95)'
92
- : position === 'top'
93
- ? 'translateY(-20px)'
94
- : 'translateY(20px)',
95
- transition: `transform ${animationDuration}ms ease-out, opacity ${animationDuration}ms ease-out`,
96
- opacity: isAnimating ? 1 : 0,
97
- ...styles.wrapper,
98
- }, onClick: (e) => e.stopPropagation(), children: _jsxs("div", { className: cn(s['border-0'], s['shadow-xl'], s['relative'], s['flex'], s['flex-col'], s['bg-white'], s['outline-none'], s['focus:outline-none'], contentClassName, classNames.content), style: {
99
- borderRadius,
107
+ : position === 'center'
108
+ ? 'scale(0.95)'
109
+ : position === 'top'
110
+ ? 'translateY(-20px)'
111
+ : 'translateY(20px)',
112
+ transition: `transform ${animationDuration}ms ease-out, opacity ${animationDuration}ms ease-out`,
113
+ opacity: isAnimating ? 1 : 0,
114
+ ...styles.wrapper,
115
+ }, onClick: (e) => e.stopPropagation(), children: _jsxs("div", { className: cn(s['border-0'], s['shadow-xl'], s['relative'], s['flex'], s['flex-col'], s['bg-white'], s['outline-none'], s['focus:outline-none'], contentClassName, classNames.content), style: {
116
+ borderRadius: isExpanded ? 0 : borderRadius,
117
+ height: isExpanded ? '100%' : undefined,
118
+ overflow: isExpanded ? 'hidden' : undefined,
100
119
  ...contentStyle,
101
120
  ...styles.content,
102
121
  }, children: [showHeader && (_jsxs("div", { className: cn(s['flex'], s['items-center'], s['justify-between'], s['border-b'], s['border-solid'], s['border-gray-200'], headerClassName, classNames.header), style: {
@@ -106,7 +125,25 @@ export const Modal = ({ visible, title = '', className = '', contentClassName =
106
125
  borderTopRightRadius: borderRadius,
107
126
  borderBottom: title || showCloseButton ? undefined : 'none',
108
127
  ...styles.header,
109
- }, children: [title && (_jsx("h3", { className: cn(s['text-xl'], s['font-semibold'], s['m-0'], s['flex-1'], classNames.title), style: { color: headerTextColor, ...styles.title }, children: title })), showCloseButton && (_jsx("button", { type: "button", className: cn(s['p-1'], s['ml-4'], s['border-0'], s['bg-transparent'], s['cursor-pointer'], s['outline-none'], s['focus:outline-none'], s['transition-colors'], s['hover:bg-gray-100'], s['rounded'], classNames.closeButton), onClick: handleClose, "aria-label": "Close modal", style: {
128
+ }, children: [title && (_jsx("h3", { className: cn(s['text-xl'], s['font-semibold'], s['m-0'], s['flex-1'], classNames.title), style: { color: headerTextColor, ...styles.title }, children: title })), isExpand && (_jsx("button", { type: "button", className: cn(s['p-1'], s['ml-4'], s['border-0'], s['bg-transparent'], s['cursor-pointer'], s['outline-none'], s['focus:outline-none'], s['transition-colors'], s['hover:bg-gray-100'], s['rounded'], classNames.expandButton), onClick: () => {
129
+ const next = !isExpanded;
130
+ setIsExpanded(next);
131
+ onExpand && onExpand(next);
132
+ }, "aria-label": isExpanded ? 'Collapse modal' : 'Expand modal', style: {
133
+ marginLeft: title ? '1rem' : 0,
134
+ ...styles.expandButton,
135
+ }, children: expandButton || (_jsx("span", { style: {
136
+ color: headerTextColor || '#1f2937',
137
+ height: '1.5rem',
138
+ width: '1.5rem',
139
+ display: 'flex',
140
+ alignItems: 'center',
141
+ justifyContent: 'center',
142
+ }, children: isExpanded ? (
143
+ // Collapse icon
144
+ _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("polyline", { points: "4 14 10 14 10 20" }), _jsx("polyline", { points: "20 10 14 10 14 4" }), _jsx("line", { x1: "10", y1: "14", x2: "3", y2: "21" }), _jsx("line", { x1: "21", y1: "3", x2: "14", y2: "10" })] })) : (
145
+ // Expand icon
146
+ _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("polyline", { points: "15 3 21 3 21 9" }), _jsx("polyline", { points: "9 21 3 21 3 15" }), _jsx("line", { x1: "21", y1: "3", x2: "14", y2: "10" }), _jsx("line", { x1: "3", y1: "21", x2: "10", y2: "14" })] })) })) })), showCloseButton && (_jsx("button", { type: "button", className: cn(s['p-1'], s['ml-4'], s['border-0'], s['bg-transparent'], s['cursor-pointer'], s['outline-none'], s['focus:outline-none'], s['transition-colors'], s['hover:bg-gray-100'], s['rounded'], classNames.closeButton), onClick: handleClose, "aria-label": "Close modal", style: {
110
147
  marginLeft: title ? '1rem' : 0,
111
148
  marginRight: title ? 0 : 'auto',
112
149
  ...styles.closeButton,
@@ -118,8 +155,10 @@ export const Modal = ({ visible, title = '', className = '', contentClassName =
118
155
  alignItems: 'center',
119
156
  justifyContent: 'center',
120
157
  lineHeight: 1,
121
- }, children: "\u00D7" })) }))] })), _jsx("div", { className: cn(s['flex'], s['flex-col'], s['w-full'], s['h-auto'], s['overflow-y-auto'], classNames.body), style: {
158
+ }, children: "\u00D7" })) }))] })), _jsx("div", { className: cn(s['flex'], s['flex-col'], s['w-full'], !isExpanded && s['h-auto'], s['overflow-y-auto'], classNames.body), style: {
122
159
  padding: contentPadding,
160
+ flex: isExpanded ? '1 1 0' : undefined,
161
+ minHeight: isExpanded ? 0 : undefined,
123
162
  ...styles.body,
124
163
  }, children: children })] }) }) })] }));
125
164
  };
@@ -14,6 +14,8 @@ export interface ModalClassNames {
14
14
  header?: string;
15
15
  /** Custom className for the title */
16
16
  title?: string;
17
+ /** Custom className for the expand button */
18
+ expandButton?: string;
17
19
  /** Custom className for the close button */
18
20
  closeButton?: string;
19
21
  /** Custom className for the body/children container */
@@ -32,6 +34,8 @@ export interface ModalStyles {
32
34
  header?: CSSProperties;
33
35
  /** Custom style for the title */
34
36
  title?: CSSProperties;
37
+ /** Custom style for the expand button */
38
+ expandButton?: CSSProperties;
35
39
  /** Custom style for the close button */
36
40
  closeButton?: CSSProperties;
37
41
  /** Custom style for the body/children container */
@@ -68,6 +72,12 @@ export interface ModalProps {
68
72
  showCloseButton?: boolean;
69
73
  /** Custom close button element */
70
74
  closeButton?: React.ReactNode;
75
+ /** Enable expand/collapse fullscreen button (shown before close button) */
76
+ isExpand?: boolean;
77
+ /** Custom expand button element */
78
+ expandButton?: React.ReactNode;
79
+ /** Callback fired when expand/collapse button is clicked; receives the new expanded state */
80
+ onExpand?: (isExpanded: boolean) => void;
71
81
  /** Overlay background opacity (0-1) */
72
82
  overlayOpacity?: number;
73
83
  /** Overlay background color */
@@ -184,8 +184,35 @@ export const Table = forwardRef(function TableComponent(props, ref) {
184
184
  const [toggleDragOverColumn, setToggleDragOverColumn] = useState(null);
185
185
  // Internal state for reordered columns (used in popup and for rendering)
186
186
  const [reorderedColumns, setReorderedColumns] = useState(columns);
187
- // Sync reorderedColumns when columns prop structure changes (columns added/removed)
188
- // We only reset when the actual column dataFields change, not on every reference change
187
+ // A stable string fingerprint built from every serialisable column property.
188
+ // Using a primitive (string) as the useEffect dependency means the effect only
189
+ // re-runs when the column *content* meaningfully changes — not merely because
190
+ // the caller re-created the columns array inline on every render.
191
+ // When the fingerprint does change we re-run the effect and update reorderedColumns
192
+ // with the full column objects (picking up formatters, filters, and all functions).
193
+ const columnsFingerprint = useMemo(() => columns
194
+ .map((c) => [
195
+ c.dataField,
196
+ c.text ?? '',
197
+ c.headerText ?? '',
198
+ c.hidden ? '1' : '0',
199
+ c.sort ? '1' : '0',
200
+ String(c.width ?? ''),
201
+ String(c.minWidth ?? ''),
202
+ String(c.maxWidth ?? ''),
203
+ c.align ?? '',
204
+ c.headerAlign ?? '',
205
+ // editable can be boolean or function; stringify the boolean branch only
206
+ typeof c.editable === 'boolean' ? (c.editable ? '1' : '0') : 'fn',
207
+ c.pinned ?? '',
208
+ c.csvExport !== false ? '1' : '0',
209
+ c.editorType ?? '',
210
+ ].join('|'))
211
+ .join('~'), [columns]);
212
+ // Sync reorderedColumns when columns prop changes.
213
+ // Depends on columnsFingerprint (a string primitive) rather than the columns
214
+ // array reference so that inline column arrays that get re-created on every
215
+ // render do not trigger an infinite setState → re-render → setState loop.
189
216
  useEffect(() => {
190
217
  const currentDataFields = reorderedColumns
191
218
  .map((c) => c.dataField)
@@ -196,14 +223,12 @@ export const Table = forwardRef(function TableComponent(props, ref) {
196
223
  .sort()
197
224
  .join(',');
198
225
  if (currentDataFields !== newDataFields) {
199
- // Columns structure changed - merge new columns while preserving order where possible
226
+ // Columns structure changed merge while preserving user-defined order
200
227
  const newColumnMap = new Map(columns.map((c) => [c.dataField, c]));
201
228
  const existingDataFields = new Set(reorderedColumns.map((c) => c.dataField));
202
- // Keep existing order for columns that still exist, update their data
203
229
  const preserved = reorderedColumns
204
230
  .filter((c) => newColumnMap.has(c.dataField))
205
231
  .map((c) => newColumnMap.get(c.dataField));
206
- // Add new columns at the end
207
232
  const added = columns.filter((c) => !existingDataFields.has(c.dataField));
208
233
  setReorderedColumns([...preserved, ...added]);
209
234
  // Clean up filter component cache for removed columns
@@ -215,11 +240,16 @@ export const Table = forwardRef(function TableComponent(props, ref) {
215
240
  }
216
241
  }
217
242
  else {
218
- // Same columns but maybe different data - update column data while preserving order
243
+ // Same column structure update all column data (including formatter,
244
+ // filter, csvFormatter, etc.) so that reorderable-table rendering always
245
+ // uses the latest column definitions.
246
+ // This branch is only reached when columnsFingerprint actually changed,
247
+ // so there is no risk of an infinite loop here.
219
248
  const columnMap = new Map(columns.map((c) => [c.dataField, c]));
220
- setReorderedColumns(reorderedColumns.map((c) => columnMap.get(c.dataField) || c));
249
+ setReorderedColumns(reorderedColumns.map((c) => columnMap.get(c.dataField) ?? c));
221
250
  }
222
- }, [columns]);
251
+ // eslint-disable-next-line react-hooks/exhaustive-deps
252
+ }, [columnsFingerprint]);
223
253
  // Close column toggle panel on outside click
224
254
  useEffect(() => {
225
255
  if (!columnToggleOpen)
@@ -1064,7 +1094,7 @@ export const Table = forwardRef(function TableComponent(props, ref) {
1064
1094
  ? JSON.stringify(value)
1065
1095
  : String(value)
1066
1096
  : '';
1067
- return (_jsxs(_Fragment, { children: [formatterContent, editorRendererCacheRef.current.get(cacheKey)] }));
1097
+ return (_jsx(_Fragment, { children: editorRendererCacheRef.current.get(cacheKey) }));
1068
1098
  }
1069
1099
  // Default editor
1070
1100
  return (_jsx(CellEditor, { type: column.editorType === 'number' ? 'number' : 'text', value: editValue ?? '', onChange: (e) => setEditValue(e.target.value), onBlur: () => handleCellEditComplete(row, rowIndex, column), onKeyDown: (e) => {
@@ -175,26 +175,31 @@ export const ResizeLine = styled.div `
175
175
  // ============================================================================
176
176
  // Hook: useColumnResize
177
177
  // ============================================================================
178
- export function useColumnResize({ columns, config = {}, enabled = true, tableId, }) {
179
- const { minWidth = 50, maxWidth = 800, autoFit = true, onResize, onResizeStart, onResizeEnd, defaultWidths = {}, handleColor, handleHoverColor, handleWidth = 4, } = config;
178
+ // Module-level stable defaults so that destructuring in the hook never creates
179
+ // new object references on every render (which would re-trigger useEffect deps).
180
+ const EMPTY_RESIZE_CONFIG = {};
181
+ const EMPTY_WIDTHS = {};
182
+ export function useColumnResize({ columns, config = EMPTY_RESIZE_CONFIG, enabled = true, tableId, }) {
183
+ const { minWidth = 50, maxWidth = 800, autoFit = true, onResize, onResizeStart, onResizeEnd, defaultWidths, handleColor, handleHoverColor, handleWidth = 4, } = config;
184
+ // Stable reference — when the caller doesn't provide defaultWidths, always
185
+ // use the same empty object so that useEffect dependencies remain unchanged.
186
+ const stableDefaultWidths = defaultWidths || EMPTY_WIDTHS;
180
187
  // Initialize column widths - Column-level width takes FIRST priority
181
188
  const initialWidths = useMemo(() => {
182
189
  const widths = {};
183
190
  columns.forEach((col) => {
184
- // Priority 1: Column-level width (user-defined in column)
185
191
  if (typeof col.width === 'number') {
186
192
  widths[col.dataField] = col.width;
187
193
  }
188
194
  else if (typeof col.width === 'string' && col.width.endsWith('px')) {
189
195
  widths[col.dataField] = parseInt(col.width, 10);
190
196
  }
191
- // Priority 2: defaultWidths from resizeConfig (only if column width not set)
192
- else if (defaultWidths[col.dataField]) {
193
- widths[col.dataField] = defaultWidths[col.dataField];
197
+ else if (stableDefaultWidths[col.dataField]) {
198
+ widths[col.dataField] = stableDefaultWidths[col.dataField];
194
199
  }
195
200
  });
196
201
  return widths;
197
- }, [columns, defaultWidths]);
202
+ }, [columns, stableDefaultWidths]);
198
203
  const [columnWidths, setColumnWidths] = useState(initialWidths);
199
204
  const [isResizing, setIsResizing] = useState(false);
200
205
  const [resizingColumn, setResizingColumn] = useState(null);
@@ -203,29 +208,32 @@ export function useColumnResize({ columns, config = {}, enabled = true, tableId,
203
208
  const startWidthRef = useRef(0);
204
209
  const currentColumnRef = useRef(null);
205
210
  const headerRefMap = useRef(new Map());
206
- // Update widths when columns change - Column-level width takes FIRST priority
211
+ // Update widths when columns change - Column-level width takes FIRST priority.
212
+ // Returns `prev` (same reference) when nothing was added so React skips the
213
+ // re-render and avoids an infinite setState → render → setState loop.
207
214
  useEffect(() => {
208
215
  setColumnWidths((prev) => {
216
+ let changed = false;
209
217
  const newWidths = { ...prev };
210
218
  columns.forEach((col) => {
211
- // Only add if not already set (user hasn't resized it)
212
219
  if (!(col.dataField in newWidths)) {
213
- // Priority 1: Column-level width
214
220
  if (typeof col.width === 'number') {
215
221
  newWidths[col.dataField] = col.width;
222
+ changed = true;
216
223
  }
217
224
  else if (typeof col.width === 'string' && col.width.endsWith('px')) {
218
225
  newWidths[col.dataField] = parseInt(col.width, 10);
226
+ changed = true;
219
227
  }
220
- // Priority 2: defaultWidths from resizeConfig
221
- else if (defaultWidths[col.dataField]) {
222
- newWidths[col.dataField] = defaultWidths[col.dataField];
228
+ else if (stableDefaultWidths[col.dataField]) {
229
+ newWidths[col.dataField] = stableDefaultWidths[col.dataField];
230
+ changed = true;
223
231
  }
224
232
  }
225
233
  });
226
- return newWidths;
234
+ return changed ? newWidths : prev;
227
235
  });
228
- }, [columns, defaultWidths]);
236
+ }, [columns, stableDefaultWidths]);
229
237
  // Handle mouse move during resize
230
238
  const handleMouseMove = useCallback((e) => {
231
239
  if (!currentColumnRef.current)
@@ -69,4 +69,10 @@
69
69
  /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
70
70
  /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
71
71
  /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
72
+ /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
73
+ /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
74
+ /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
75
+ /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
76
+ /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
77
+ /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
72
78
  /*! 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 *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-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*/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 *),.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,.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.64",
3
+ "version": "0.4.65",
4
4
  "private": false,
5
5
  "description": "Easy use restyle components",
6
6
  "author": {