@papernote/ui 1.14.1 → 2.0.1
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/dist/index.esm.js +57 -49
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +57 -49
- package/dist/index.js.map +1 -1
- package/dist/styles.css +6228 -6717
- package/package.json +6 -4
- package/src/components/AdminModal.tsx +1 -1
- package/src/components/Autocomplete.tsx +1 -1
- package/src/components/CommandPalette.tsx +2 -2
- package/src/components/DataTable.tsx +1 -1
- package/src/components/Drawer.tsx +1 -1
- package/src/components/MarkdownEditor.tsx +1 -1
- package/src/components/MaskedInput.tsx +1 -1
- package/src/components/Modal.tsx +1 -1
- package/src/components/NotificationBar.tsx +2 -2
- package/src/components/PasswordInput.tsx +1 -1
- package/src/components/SearchBar.tsx +1 -1
- package/src/components/Textarea.tsx +1 -1
- package/src/styles/index.css +50 -160
- package/src/styles/theme.css +302 -0
package/dist/index.js
CHANGED
|
@@ -1313,7 +1313,7 @@ const Textarea = React.forwardRef(({ label, helperText, validationState, validat
|
|
|
1313
1313
|
}
|
|
1314
1314
|
};
|
|
1315
1315
|
return (jsxRuntime.jsxs("div", { className: "w-full", children: [label && (jsxRuntime.jsxs("label", { htmlFor: textareaId, className: "label", children: [label, props.required && jsxRuntime.jsx("span", { className: "text-error-500 ml-1", children: "*" })] })), jsxRuntime.jsxs("div", { className: "relative", children: [jsxRuntime.jsx("textarea", { ref: textareaRef, id: textareaId, value: value, maxLength: maxLength, rows: autoExpand ? minRows : rows, enterKeyHint: enterKeyHint, className: `
|
|
1316
|
-
block w-full border rounded-lg text-ink-800 placeholder-ink-400
|
|
1316
|
+
block w-full border rounded-lg text-ink-800 placeholder:text-ink-400
|
|
1317
1317
|
bg-white bg-subtle-grain transition-all duration-200
|
|
1318
1318
|
focus:outline-none focus:ring-2 ${getResizeClass()}
|
|
1319
1319
|
disabled:bg-paper-100 disabled:text-ink-400 disabled:cursor-not-allowed disabled:opacity-60
|
|
@@ -5109,7 +5109,7 @@ function Modal({ isOpen, onClose, title, children, size = 'md', showCloseButton
|
|
|
5109
5109
|
return reactDom.createPortal(jsxRuntime.jsx(BottomSheet, { isOpen: isOpen, onClose: onClose, title: title, height: mobileHeight, showHandle: mobileShowHandle, showCloseButton: showCloseButton, children: children }), document.body);
|
|
5110
5110
|
}
|
|
5111
5111
|
// Render as standard modal on desktop
|
|
5112
|
-
const modalContent = (jsxRuntime.jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-ink-900
|
|
5112
|
+
const modalContent = (jsxRuntime.jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-ink-900/50 backdrop-blur-sm animate-fade-in", onMouseDown: handleBackdropMouseDown, onClick: handleBackdropClick, children: jsxRuntime.jsxs("div", { ref: modalRef, className: `${sizeClasses$a[size]} w-full bg-white bg-subtle-grain rounded-xl shadow-2xl border border-paper-200 ${getAnimationClass()}`, role: "dialog", "aria-modal": "true", "aria-labelledby": titleId, tabIndex: -1, children: [jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-6 py-4 border-b border-paper-200", children: [jsxRuntime.jsx("h3", { id: titleId, className: "text-lg font-medium text-ink-900", children: title }), showCloseButton && (jsxRuntime.jsx("button", { onClick: onClose, className: "text-ink-400 hover:text-ink-600 transition-colors", "aria-label": "Close modal", children: jsxRuntime.jsx(lucideReact.X, { className: "h-5 w-5" }) }))] }), jsxRuntime.jsx("div", { className: `px-6 py-4 ${scrollable || maxHeight ? 'overflow-y-auto' : ''}`, style: {
|
|
5113
5113
|
maxHeight: maxHeight || (scrollable ? 'calc(100vh - 200px)' : undefined),
|
|
5114
5114
|
}, children: children })] }) }));
|
|
5115
5115
|
return reactDom.createPortal(modalContent, document.body);
|
|
@@ -6257,7 +6257,7 @@ function Drawer({ isOpen, onClose, title, children, placement = 'right', size =
|
|
|
6257
6257
|
if (!isOpen)
|
|
6258
6258
|
return null;
|
|
6259
6259
|
const isHorizontal = placement === 'left' || placement === 'right';
|
|
6260
|
-
return (jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 flex", children: [showOverlay && (jsxRuntime.jsx("div", { className: "fixed inset-0 bg-ink-900
|
|
6260
|
+
return (jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 flex", children: [showOverlay && (jsxRuntime.jsx("div", { className: "fixed inset-0 bg-ink-900/50 backdrop-blur-sm animate-fade-in", onClick: handleOverlayClick, "aria-hidden": "true" })), jsxRuntime.jsxs("div", { className: `
|
|
6261
6261
|
fixed ${placementClasses[placement]}
|
|
6262
6262
|
${sizeClasses$9[placement][size]}
|
|
6263
6263
|
bg-white border-paper-200 shadow-2xl
|
|
@@ -6810,10 +6810,10 @@ function CommandPalette({ commands, open, onOpenChange, placeholder = 'Type a co
|
|
|
6810
6810
|
};
|
|
6811
6811
|
if (!open)
|
|
6812
6812
|
return null;
|
|
6813
|
-
return reactDom.createPortal(jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 flex items-start justify-center pt-[20vh] animate-fade-in", children: [jsxRuntime.jsx("div", { className: "absolute inset-0 bg-ink-900
|
|
6813
|
+
return reactDom.createPortal(jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 flex items-start justify-center pt-[20vh] animate-fade-in", children: [jsxRuntime.jsx("div", { className: "absolute inset-0 bg-ink-900/50 backdrop-blur-sm", onClick: () => onOpenChange(false) }), jsxRuntime.jsxs("div", { className: "relative w-full max-w-2xl mx-4 bg-white rounded-xl shadow-2xl border border-paper-200 overflow-hidden animate-scale-in", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-3 px-4 py-3 border-b border-paper-200", children: [jsxRuntime.jsx(lucideReact.Search, { className: "h-5 w-5 text-ink-400" }), jsxRuntime.jsx("input", { ref: inputRef, type: "text", value: searchQuery, onChange: (e) => {
|
|
6814
6814
|
setSearchQuery(e.target.value);
|
|
6815
6815
|
setSelectedIndex(0);
|
|
6816
|
-
}, placeholder: placeholder, className: "flex-1 text-base text-ink-900 placeholder-ink-400 bg-transparent border-none outline-none" }), trigger && (jsxRuntime.jsx("kbd", { className: "hidden sm:inline-block px-2 py-1 text-xs font-mono text-ink-500 bg-paper-100 border border-paper-300 rounded", children: trigger }))] }), jsxRuntime.jsx("div", { ref: listRef, className: "max-h-[400px] overflow-y-auto py-2", children: flatCommands.length === 0 ? (jsxRuntime.jsx("div", { className: "px-4 py-8 text-center text-sm text-ink-500", children: "No commands found" })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [Object.entries(grouped).map(([groupName, groupCommands]) => (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: "px-4 py-1.5 text-xs font-semibold text-ink-500 uppercase tracking-wider", children: groupName }), groupCommands.map((command) => {
|
|
6816
|
+
}, placeholder: placeholder, className: "flex-1 text-base text-ink-900 placeholder:text-ink-400 bg-transparent border-none outline-none" }), trigger && (jsxRuntime.jsx("kbd", { className: "hidden sm:inline-block px-2 py-1 text-xs font-mono text-ink-500 bg-paper-100 border border-paper-300 rounded", children: trigger }))] }), jsxRuntime.jsx("div", { ref: listRef, className: "max-h-[400px] overflow-y-auto py-2", children: flatCommands.length === 0 ? (jsxRuntime.jsx("div", { className: "px-4 py-8 text-center text-sm text-ink-500", children: "No commands found" })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [Object.entries(grouped).map(([groupName, groupCommands]) => (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: "px-4 py-1.5 text-xs font-semibold text-ink-500 uppercase tracking-wider", children: groupName }), groupCommands.map((command) => {
|
|
6817
6817
|
const globalIndex = flatCommands.indexOf(command);
|
|
6818
6818
|
const isSelected = globalIndex === selectedIndex;
|
|
6819
6819
|
return (jsxRuntime.jsxs("button", { "data-index": globalIndex, onClick: () => executeCommand(command), onMouseEnter: () => setSelectedIndex(globalIndex), className: `
|
|
@@ -7755,7 +7755,7 @@ const PasswordInput = React.forwardRef(({ value, onChange, label, placeholder =
|
|
|
7755
7755
|
}, [value, requirements]);
|
|
7756
7756
|
return (jsxRuntime.jsxs("div", { className: className, children: [label && (jsxRuntime.jsxs("label", { className: "block text-sm font-medium text-ink-900 mb-1.5", children: [label, required && jsxRuntime.jsx("span", { className: "text-error-500 ml-1", children: "*" })] })), jsxRuntime.jsxs("div", { className: "relative", children: [jsxRuntime.jsx("input", { ref: inputRef, type: showPassword ? 'text' : 'password', value: value, onChange: (e) => onChange(e.target.value), placeholder: placeholder, disabled: disabled, className: `
|
|
7757
7757
|
w-full px-3 py-2 pr-10
|
|
7758
|
-
text-sm text-ink-900 placeholder-ink-400
|
|
7758
|
+
text-sm text-ink-900 placeholder:text-ink-400
|
|
7759
7759
|
bg-white border rounded-lg
|
|
7760
7760
|
focus:outline-none focus:ring-2 focus:ring-accent-400 focus:border-accent-400
|
|
7761
7761
|
disabled:bg-paper-100 disabled:cursor-not-allowed
|
|
@@ -7864,7 +7864,7 @@ const MaskedInput = React.forwardRef(({ value, onChange, maskType = 'phone', cus
|
|
|
7864
7864
|
};
|
|
7865
7865
|
return (jsxRuntime.jsxs("div", { className: className, children: [label && (jsxRuntime.jsxs("label", { className: "block text-sm font-medium text-ink-900 mb-1.5", children: [label, required && jsxRuntime.jsx("span", { className: "text-error-500 ml-1", children: "*" })] })), jsxRuntime.jsx("input", { ref: inputRef, type: "text", value: displayValue, onChange: handleChange, onPaste: handlePaste, placeholder: getPlaceholder(), disabled: disabled, className: `
|
|
7866
7866
|
w-full px-3 py-2
|
|
7867
|
-
text-sm text-ink-900 placeholder-ink-400
|
|
7867
|
+
text-sm text-ink-900 placeholder:text-ink-400
|
|
7868
7868
|
bg-white border rounded-lg
|
|
7869
7869
|
focus:outline-none focus:ring-2 focus:ring-accent-400 focus:border-accent-400
|
|
7870
7870
|
disabled:bg-paper-100 disabled:cursor-not-allowed
|
|
@@ -8079,7 +8079,7 @@ const Autocomplete = React.forwardRef(({ value, onChange, options = [], onSearch
|
|
|
8079
8079
|
}
|
|
8080
8080
|
}, placeholder: placeholder, disabled: disabled, className: `
|
|
8081
8081
|
w-full pl-9 pr-9 py-2
|
|
8082
|
-
text-sm text-ink-900 placeholder-ink-400
|
|
8082
|
+
text-sm text-ink-900 placeholder:text-ink-400
|
|
8083
8083
|
bg-white border rounded-lg
|
|
8084
8084
|
focus:outline-none focus:ring-2 focus:ring-accent-400 focus:border-accent-400
|
|
8085
8085
|
disabled:bg-paper-100 disabled:cursor-not-allowed
|
|
@@ -8639,7 +8639,7 @@ function MarkdownEditor({ value, onChange, label, placeholder = '# Start writing
|
|
|
8639
8639
|
: 'text-ink-600 hover:bg-white/50'}
|
|
8640
8640
|
`, children: "Split" })] }))] }), showHelp && (jsxRuntime.jsxs("button", { type: "button", onClick: () => setShowHelpPanel(!showHelpPanel), className: "flex items-center gap-1 px-2 py-1 text-xs text-ink-600 hover:text-ink-900 transition-colors", children: [jsxRuntime.jsx(lucideReact.Info, { className: "h-3.5 w-3.5" }), "Markdown Help"] }))] }), showHelpPanel && (jsxRuntime.jsx("div", { className: "p-3 border border-b-0 border-paper-300 bg-accent-50 text-xs", children: jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: helpContent.map((item, index) => (jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntime.jsx("code", { className: "px-2 py-0.5 bg-white rounded text-ink-900 font-mono", children: item.syntax }), jsxRuntime.jsx("span", { className: "text-ink-600", children: item.description })] }, index))) }) })), jsxRuntime.jsxs("div", { className: `flex border border-paper-300 rounded-b-lg overflow-hidden ${mode === 'split' ? '' : ''}`, children: [(mode === 'edit' || mode === 'split') && (jsxRuntime.jsx("div", { className: `${mode === 'split' ? 'w-1/2 border-r border-paper-300' : 'w-full'}`, children: jsxRuntime.jsx("textarea", { value: value, onChange: (e) => onChange(e.target.value), placeholder: placeholder, disabled: disabled, className: `
|
|
8641
8641
|
w-full p-3 outline-none resize-none
|
|
8642
|
-
text-sm text-ink-900 font-mono placeholder-ink-400
|
|
8642
|
+
text-sm text-ink-900 font-mono placeholder:text-ink-400
|
|
8643
8643
|
${disabled ? 'bg-paper-100 cursor-not-allowed' : 'bg-white'}
|
|
8644
8644
|
`, style: { minHeight, maxHeight } }) })), (mode === 'preview' || mode === 'split') && (jsxRuntime.jsx("div", { className: `${mode === 'split' ? 'w-1/2' : 'w-full'} overflow-y-auto bg-white`, children: jsxRuntime.jsx("div", { className: "p-3 prose prose-sm max-w-none", style: { minHeight, maxHeight }, dangerouslySetInnerHTML: { __html: markdownToHtml(value) } }) }))] }), jsxRuntime.jsx("style", { children: `
|
|
8645
8645
|
.prose h1 { font-size: 1.875rem; font-weight: 700; margin-bottom: 1rem; }
|
|
@@ -14349,7 +14349,7 @@ function SearchBar({ value, onChange, placeholder = 'Search...', className = '',
|
|
|
14349
14349
|
onSearch(value);
|
|
14350
14350
|
}
|
|
14351
14351
|
};
|
|
14352
|
-
return (jsxRuntime.jsxs("div", { className: `flex-1 max-w-2xl relative ${className}`, children: [jsxRuntime.jsx("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none", children: jsxRuntime.jsx(lucideReact.Search, { className: "h-5 w-5 text-ink-400" }) }), jsxRuntime.jsx("input", { type: "text", value: value, onChange: (e) => onChange(e.target.value), onKeyDown: handleKeyDown, disabled: disabled, className: "block w-full pl-11 pr-4 py-3 border border-paper-300 rounded-lg leading-5 bg-white placeholder-ink-400 text-ink-800 focus:outline-none focus:placeholder-ink-300 focus:ring-2 focus:ring-accent-400 focus:border-accent-400 hover:border-paper-400 transition-all sm:text-sm disabled:bg-paper-100 disabled:cursor-not-allowed", placeholder: placeholder })] }));
|
|
14352
|
+
return (jsxRuntime.jsxs("div", { className: `flex-1 max-w-2xl relative ${className}`, children: [jsxRuntime.jsx("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none", children: jsxRuntime.jsx(lucideReact.Search, { className: "h-5 w-5 text-ink-400" }) }), jsxRuntime.jsx("input", { type: "text", value: value, onChange: (e) => onChange(e.target.value), onKeyDown: handleKeyDown, disabled: disabled, className: "block w-full pl-11 pr-4 py-3 border border-paper-300 rounded-lg leading-5 bg-white placeholder:text-ink-400 text-ink-800 focus:outline-none focus:placeholder:text-ink-300 focus:ring-2 focus:ring-accent-400 focus:border-accent-400 hover:border-paper-400 transition-all sm:text-sm disabled:bg-paper-100 disabled:cursor-not-allowed", placeholder: placeholder })] }));
|
|
14353
14353
|
}
|
|
14354
14354
|
|
|
14355
14355
|
function NotificationIndicator({ count = 0, onClick, className = '', maxCount = 99, variant = 'default', }) {
|
|
@@ -15721,7 +15721,7 @@ mobileView = 'auto', cardConfig, cardGap = 'md', cardClassName, }) {
|
|
|
15721
15721
|
})()] }, rowKey));
|
|
15722
15722
|
});
|
|
15723
15723
|
};
|
|
15724
|
-
const tableContent = (jsxRuntime.jsxs("div", { className: `bg-white rounded-lg shadow border-2 ${borderColor} ${virtualized ? 'overflow-hidden' : 'overflow-x-auto overflow-y-visible'} ${className}`, style: { position: 'relative' }, children: [loading && data.length > 0 && (jsxRuntime.jsx("div", { className: "absolute inset-0 bg-white
|
|
15724
|
+
const tableContent = (jsxRuntime.jsxs("div", { className: `bg-white rounded-lg shadow border-2 ${borderColor} ${virtualized ? 'overflow-hidden' : 'overflow-x-auto overflow-y-visible'} ${className}`, style: { position: 'relative' }, children: [loading && data.length > 0 && (jsxRuntime.jsx("div", { className: "absolute inset-0 bg-white/75 flex items-center justify-center z-20", style: { backdropFilter: 'blur(2px)' }, children: jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-3", children: [jsxRuntime.jsx("div", { className: "loading-spinner", style: { width: '32px', height: '32px', borderWidth: '3px' } }), jsxRuntime.jsx("span", { className: "text-sm font-medium text-ink-600", children: "Loading..." })] }) })), jsxRuntime.jsxs("table", { className: `table-stable w-full ${bordered ? 'border-collapse' : ''}`, role: "grid", "aria-label": "Data table", "aria-rowcount": data.length, "aria-colcount": visibleColumns.length, children: [jsxRuntime.jsxs("colgroup", { children: [selectable && jsxRuntime.jsx("col", { className: "w-12" }), ((expandable || expandedRowConfig) && showExpandChevron) && jsxRuntime.jsx("col", { className: "w-10" }), allActions.length > 0 && jsxRuntime.jsx("col", { style: { width: '28px' } }), visibleColumns.map((column, index) => {
|
|
15725
15725
|
const columnKey = String(column.key);
|
|
15726
15726
|
const dynamicWidth = columnWidths[columnKey];
|
|
15727
15727
|
return (jsxRuntime.jsx("col", { style: getColumnStyle(column, dynamicWidth) }, index));
|
|
@@ -15816,44 +15816,52 @@ function getAugmentedNamespace(n) {
|
|
|
15816
15816
|
* (A1, A1:C5, ...)
|
|
15817
15817
|
*/
|
|
15818
15818
|
|
|
15819
|
-
|
|
15819
|
+
var collection;
|
|
15820
|
+
var hasRequiredCollection;
|
|
15821
|
+
|
|
15822
|
+
function requireCollection () {
|
|
15823
|
+
if (hasRequiredCollection) return collection;
|
|
15824
|
+
hasRequiredCollection = 1;
|
|
15825
|
+
class Collection {
|
|
15820
15826
|
|
|
15821
|
-
|
|
15822
|
-
|
|
15823
|
-
|
|
15824
|
-
|
|
15825
|
-
|
|
15826
|
-
|
|
15827
|
-
|
|
15828
|
-
|
|
15829
|
-
|
|
15830
|
-
|
|
15831
|
-
|
|
15827
|
+
constructor(data, refs) {
|
|
15828
|
+
if (data == null && refs == null) {
|
|
15829
|
+
this._data = [];
|
|
15830
|
+
this._refs = [];
|
|
15831
|
+
} else {
|
|
15832
|
+
if (data.length !== refs.length)
|
|
15833
|
+
throw Error('Collection: data length should match references length.');
|
|
15834
|
+
this._data = data;
|
|
15835
|
+
this._refs = refs;
|
|
15836
|
+
}
|
|
15837
|
+
}
|
|
15832
15838
|
|
|
15833
|
-
|
|
15834
|
-
|
|
15835
|
-
|
|
15839
|
+
get data() {
|
|
15840
|
+
return this._data;
|
|
15841
|
+
}
|
|
15836
15842
|
|
|
15837
|
-
|
|
15838
|
-
|
|
15839
|
-
|
|
15843
|
+
get refs() {
|
|
15844
|
+
return this._refs;
|
|
15845
|
+
}
|
|
15840
15846
|
|
|
15841
|
-
|
|
15842
|
-
|
|
15843
|
-
|
|
15847
|
+
get length() {
|
|
15848
|
+
return this._data.length;
|
|
15849
|
+
}
|
|
15844
15850
|
|
|
15845
|
-
|
|
15846
|
-
|
|
15847
|
-
|
|
15848
|
-
|
|
15849
|
-
|
|
15850
|
-
|
|
15851
|
-
|
|
15852
|
-
|
|
15853
|
-
|
|
15854
|
-
}
|
|
15851
|
+
/**
|
|
15852
|
+
* Add data and references to this collection.
|
|
15853
|
+
* @param {{}} obj - data
|
|
15854
|
+
* @param {{}} ref - reference
|
|
15855
|
+
*/
|
|
15856
|
+
add(obj, ref) {
|
|
15857
|
+
this._data.push(obj);
|
|
15858
|
+
this._refs.push(ref);
|
|
15859
|
+
}
|
|
15860
|
+
}
|
|
15855
15861
|
|
|
15856
|
-
|
|
15862
|
+
collection = Collection;
|
|
15863
|
+
return collection;
|
|
15864
|
+
}
|
|
15857
15865
|
|
|
15858
15866
|
var helpers;
|
|
15859
15867
|
var hasRequiredHelpers;
|
|
@@ -15862,7 +15870,7 @@ function requireHelpers () {
|
|
|
15862
15870
|
if (hasRequiredHelpers) return helpers;
|
|
15863
15871
|
hasRequiredHelpers = 1;
|
|
15864
15872
|
const FormulaError = requireError();
|
|
15865
|
-
const Collection =
|
|
15873
|
+
const Collection = requireCollection();
|
|
15866
15874
|
|
|
15867
15875
|
const Types = {
|
|
15868
15876
|
NUMBER: 0,
|
|
@@ -25516,7 +25524,7 @@ var engineering = EngineeringFunctions;
|
|
|
25516
25524
|
|
|
25517
25525
|
const FormulaError$b = requireError();
|
|
25518
25526
|
const {FormulaHelpers: FormulaHelpers$8, Types: Types$6, WildCard, Address: Address$3} = requireHelpers();
|
|
25519
|
-
const Collection$2 =
|
|
25527
|
+
const Collection$2 = requireCollection();
|
|
25520
25528
|
const H$5 = FormulaHelpers$8;
|
|
25521
25529
|
|
|
25522
25530
|
const ReferenceFunctions$1 = {
|
|
@@ -37144,7 +37152,7 @@ var parsing = {
|
|
|
37144
37152
|
const FormulaError$4 = requireError();
|
|
37145
37153
|
const {Address: Address$1} = requireHelpers();
|
|
37146
37154
|
const {Prefix: Prefix$1, Postfix: Postfix$1, Infix: Infix$1, Operators: Operators$1} = operators;
|
|
37147
|
-
const Collection$1 =
|
|
37155
|
+
const Collection$1 = requireCollection();
|
|
37148
37156
|
const MAX_ROW$1 = 1048576, MAX_COLUMN$1 = 16384;
|
|
37149
37157
|
const {NotAllInputParsedException} = require$$4;
|
|
37150
37158
|
|
|
@@ -37906,7 +37914,7 @@ var hooks$1 = {
|
|
|
37906
37914
|
const FormulaError$2 = requireError();
|
|
37907
37915
|
const {FormulaHelpers: FormulaHelpers$1, Types, Address} = requireHelpers();
|
|
37908
37916
|
const {Prefix, Postfix, Infix, Operators} = operators;
|
|
37909
|
-
const Collection =
|
|
37917
|
+
const Collection = requireCollection();
|
|
37910
37918
|
const MAX_ROW = 1048576, MAX_COLUMN = 16384;
|
|
37911
37919
|
|
|
37912
37920
|
let Utils$1 = class Utils {
|
|
@@ -61951,7 +61959,7 @@ function AdminModal({ isOpen, onClose, title, subtitle, onSubmit, isSaving = fal
|
|
|
61951
61959
|
onSubmit(formData);
|
|
61952
61960
|
}
|
|
61953
61961
|
};
|
|
61954
|
-
return (jsxRuntime.jsx("div", { className: "fixed inset-0 bg-black
|
|
61962
|
+
return (jsxRuntime.jsx("div", { className: "fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4 admin-modal-overlay", children: jsxRuntime.jsxs("div", { className: `bg-white rounded-lg w-full ${sizeClasses[size]} flex flex-col overflow-hidden shadow-2xl admin-modal-content`, style: { height: height }, children: [jsxRuntime.jsx("div", { className: "fixed inset-0 pointer-events-none admin-modal-sidebar-placeholder" }), jsxRuntime.jsxs("div", { className: "px-6 py-4 border-b", children: [jsxRuntime.jsx("h3", { className: "text-lg font-semibold", children: title }), subtitle && jsxRuntime.jsx("p", { className: "text-sm text-gray-500 mt-1", children: subtitle })] }), tabs.length > 1 && (jsxRuntime.jsx("div", { className: "border-b border-gray-200 bg-white", children: jsxRuntime.jsx("nav", { className: "-mb-px flex items-center px-6 admin-modal-tabs", "aria-label": "Tabs", children: tabs.map((tab, index) => (jsxRuntime.jsxs(React.Fragment, { children: [jsxRuntime.jsx("button", { type: "button", onClick: () => onTabChange(tab.id), className: `whitespace-nowrap border-b-2 py-3 px-4 text-sm font-medium transition-colors ${activeTabId === tab.id
|
|
61955
61963
|
? 'border-blue-500 text-blue-600'
|
|
61956
61964
|
: 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700'}`, "aria-current": activeTabId === tab.id ? 'page' : undefined, children: tab.label }), index < tabs.length - 1 && (jsxRuntime.jsx("div", { className: "admin-modal-tab-separator" }))] }, tab.id))) }) })), onSubmit ? (jsxRuntime.jsx("form", { className: "flex-1 overflow-y-auto min-h-0 h-0 px-6 py-6 admin-modal-form", onSubmit: handleFormSubmit, id: formId, noValidate: true, children: activeTab?.content || children })) : (jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto min-h-0 h-0 px-6 py-6 admin-modal-content-area", children: activeTab?.content || children })), jsxRuntime.jsxs("div", { className: "px-6 py-4 border-t bg-gray-50 flex justify-between gap-3", children: [jsxRuntime.jsx("button", { type: "button", onClick: onClose, className: "px-4 py-2 text-sm text-gray-600 hover:text-gray-800", disabled: isSaving, children: "Cancel" }), jsxRuntime.jsxs("div", { className: "flex gap-3", children: [customFooterActions, onSubmit && (jsxRuntime.jsx("button", { type: "submit", form: formId, disabled: isSaving, className: "px-4 py-2 text-sm bg-primary-600 text-white rounded hover:bg-primary-700 disabled:opacity-50 disabled:cursor-not-allowed", children: isSaving ? 'Saving...' : 'Save Changes' }))] })] })] }) }));
|
|
61957
61965
|
}
|
|
@@ -62172,7 +62180,7 @@ function NotificationBar({ notifications, onDismiss }) {
|
|
|
62172
62180
|
}
|
|
62173
62181
|
return (jsxRuntime.jsx("div", { className: "fixed top-4 right-4 z-50 space-y-3 max-w-md", children: notifications.map((notification) => {
|
|
62174
62182
|
const IconComponent = getNotificationIcon(notification.type);
|
|
62175
|
-
return (jsxRuntime.jsx("div", { className: `border-2 rounded-xl p-4 backdrop-blur-sm transform transition-all duration-300 ease-in-out animate-slide-in ${notificationStyles[notification.type]}`, children: jsxRuntime.jsxs("div", { className: "flex items-start space-x-3", children: [jsxRuntime.jsx("div", { className: `flex-shrink-0 p-1 rounded-full bg-white
|
|
62183
|
+
return (jsxRuntime.jsx("div", { className: `border-2 rounded-xl p-4 backdrop-blur-sm transform transition-all duration-300 ease-in-out animate-slide-in ${notificationStyles[notification.type]}`, children: jsxRuntime.jsxs("div", { className: "flex items-start space-x-3", children: [jsxRuntime.jsx("div", { className: `flex-shrink-0 p-1 rounded-full bg-white/50 ${iconStyles[notification.type]}`, children: jsxRuntime.jsx(IconComponent, { className: "h-5 w-5" }) }), jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [jsxRuntime.jsx("p", { className: "text-sm font-semibold mb-1 leading-tight", children: notification.title }), jsxRuntime.jsx("p", { className: "text-sm leading-relaxed opacity-90", children: notification.message })] }), notification.dismissible && onDismiss && (jsxRuntime.jsx("button", { onClick: () => onDismiss(notification.id), className: `flex-shrink-0 p-1.5 hover:bg-white/60 rounded-full transition-all duration-200 ${iconStyles[notification.type]} hover:scale-110`, title: "Dismiss notification", children: jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }) }))] }) }, notification.id));
|
|
62176
62184
|
}) }));
|
|
62177
62185
|
}
|
|
62178
62186
|
|