@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.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 bg-opacity-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: {
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 bg-opacity-50 backdrop-blur-sm animate-fade-in", onClick: handleOverlayClick, "aria-hidden": "true" })), jsxRuntime.jsxs("div", { className: `
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 bg-opacity-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) => {
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 bg-opacity-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) => {
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
- let Collection$3 = class Collection {
15819
+ var collection;
15820
+ var hasRequiredCollection;
15821
+
15822
+ function requireCollection () {
15823
+ if (hasRequiredCollection) return collection;
15824
+ hasRequiredCollection = 1;
15825
+ class Collection {
15820
15826
 
15821
- constructor(data, refs) {
15822
- if (data == null && refs == null) {
15823
- this._data = [];
15824
- this._refs = [];
15825
- } else {
15826
- if (data.length !== refs.length)
15827
- throw Error('Collection: data length should match references length.');
15828
- this._data = data;
15829
- this._refs = refs;
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
- get data() {
15834
- return this._data;
15835
- }
15839
+ get data() {
15840
+ return this._data;
15841
+ }
15836
15842
 
15837
- get refs() {
15838
- return this._refs;
15839
- }
15843
+ get refs() {
15844
+ return this._refs;
15845
+ }
15840
15846
 
15841
- get length() {
15842
- return this._data.length;
15843
- }
15847
+ get length() {
15848
+ return this._data.length;
15849
+ }
15844
15850
 
15845
- /**
15846
- * Add data and references to this collection.
15847
- * @param {{}} obj - data
15848
- * @param {{}} ref - reference
15849
- */
15850
- add(obj, ref) {
15851
- this._data.push(obj);
15852
- this._refs.push(ref);
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
- var collection = Collection$3;
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 = 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 = collection;
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 = collection;
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 = 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 bg-opacity-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
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 bg-opacity-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 hover:bg-opacity-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));
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