@papernote/ui 1.8.2 → 1.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import React__default, { forwardRef, useState, useEffect, useCallback, useRef, useId, useImperativeHandle, useMemo, Children, isValidElement, cloneElement, Component, createContext as createContext$1, useLayoutEffect, createElement, useContext, useReducer } from 'react';
4
- import { Loader2, X, EyeOff, Eye, AlertTriangle, CheckCircle, AlertCircle, ChevronDown, Search, Check, Minus, Star, Calendar as Calendar$1, ChevronLeft, ChevronRight, Clock, ChevronUp, Plus, TrendingUp, TrendingDown, Info, Trash2, ChevronsLeft, ChevronsRight, Circle, MoreVertical, GripVertical, Upload, Bold, Italic, Underline, List, ListOrdered, Code, Link, MoreHorizontal, Home, FileText, Image, File as File$1, Menu as Menu$1, ArrowDown, User, Settings, LogOut, Moon, Sun, Bell, Edit, Trash, Pin, PinOff, Download, Save, ArrowUpDown, Filter, XCircle, BarChart3, MessageSquare } from 'lucide-react';
4
+ import { Loader2, X, EyeOff, Eye, AlertTriangle, CheckCircle, AlertCircle, ChevronDown, Search, Check, Minus, Star, Calendar as Calendar$1, ChevronLeft, ChevronRight, Clock, ChevronUp, Plus, TrendingUp, TrendingDown, Info, Trash2, ChevronsLeft, ChevronsRight, Circle, MoreVertical, GripVertical, Upload, Bold, Italic, Underline, List, ListOrdered, Code, Link, MoreHorizontal, Home, FileText, Image, File as File$1, Menu as Menu$1, ArrowDown, User, Settings, LogOut, Moon, Sun, Bell, ExternalLink, Edit, Trash, Pin, PinOff, Download, Save, ArrowUpDown, Filter, XCircle, BarChart3, MessageSquare } from 'lucide-react';
5
5
  import { createPortal } from 'react-dom';
6
6
  import { useInRouterContext, useNavigate, useLocation, Link as Link$1 } from 'react-router-dom';
7
7
 
@@ -9681,7 +9681,7 @@ function UserProfileButton({ userName, userEmail, userTitle, initials, isOnline
9681
9681
  */
9682
9682
  const Layout = ({ sidebar, children, statusBar, className = '', sections }) => {
9683
9683
  console.log('🏗️ Layout render with sections:', sections);
9684
- return (jsxs("div", { className: `h-screen flex flex-col bg-paper-100 ${className}`, children: [jsxs("div", { className: "flex flex-1 overflow-hidden relative", children: [sidebar, jsx("div", { className: "w-8 h-full bg-paper-100 flex-shrink-0 relative flex items-center justify-center", children: jsx(PageNavigation, { sections: sections }) }), jsx("div", { className: "flex-1 overflow-auto", children: children })] }), statusBar] }));
9684
+ return (jsxs("div", { className: `h-screen flex flex-col bg-paper-100 ${className}`, children: [jsxs("div", { className: "flex flex-1 overflow-hidden relative", children: [sidebar, jsx("div", { className: "w-8 h-full bg-paper-100 flex-shrink-0 relative z-10 flex items-start justify-center pt-32", children: jsx(PageNavigation, { sections: sections }) }), jsx("div", { className: "flex-1 overflow-auto", children: children })] }), statusBar] }));
9685
9685
  };
9686
9686
 
9687
9687
  /**
@@ -10056,6 +10056,203 @@ function NotificationIndicator({ count = 0, onClick, className = '', maxCount =
10056
10056
  return (jsxs("button", { onClick: onClick, className: `relative bg-white p-2.5 rounded-lg text-ink-400 hover:text-ink-600 hover:bg-paper-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-accent-400 transition-all shadow-xs dark:bg-slate-800 dark:text-slate-400 dark:hover:text-slate-100 dark:hover:bg-slate-700 ${className}`, "aria-label": "View notifications", children: [jsx(Bell, { className: "h-5 w-5" }), showBadge && (jsx("span", { className: `absolute -top-1 -right-1 ${variantClasses[variant]} text-white text-xs font-semibold rounded-full h-5 min-w-5 px-1 flex items-center justify-center`, children: displayCount }))] }));
10057
10057
  }
10058
10058
 
10059
+ /**
10060
+ * Format a date to a relative time string
10061
+ */
10062
+ function formatTimeAgo(date) {
10063
+ const now = new Date();
10064
+ const then = new Date(date);
10065
+ const diffMs = now.getTime() - then.getTime();
10066
+ const diffSeconds = Math.floor(diffMs / 1000);
10067
+ const diffMinutes = Math.floor(diffSeconds / 60);
10068
+ const diffHours = Math.floor(diffMinutes / 60);
10069
+ const diffDays = Math.floor(diffHours / 24);
10070
+ if (diffSeconds < 60) {
10071
+ return 'Just now';
10072
+ }
10073
+ else if (diffMinutes < 60) {
10074
+ return `${diffMinutes}m ago`;
10075
+ }
10076
+ else if (diffHours < 24) {
10077
+ return `${diffHours}h ago`;
10078
+ }
10079
+ else if (diffDays < 7) {
10080
+ return `${diffDays}d ago`;
10081
+ }
10082
+ else {
10083
+ return then.toLocaleDateString();
10084
+ }
10085
+ }
10086
+ /**
10087
+ * Map notification type to Badge variant
10088
+ */
10089
+ const typeToBadgeVariant = {
10090
+ info: 'info',
10091
+ success: 'success',
10092
+ warning: 'warning',
10093
+ error: 'error',
10094
+ };
10095
+ /**
10096
+ * Default labels for notification types
10097
+ */
10098
+ const defaultTypeLabels = {
10099
+ info: 'Info',
10100
+ success: 'Success',
10101
+ warning: 'Warning',
10102
+ error: 'Alert',
10103
+ };
10104
+ /**
10105
+ * Map dropdown position to Popover placement
10106
+ */
10107
+ function getPopoverPlacement(position) {
10108
+ switch (position) {
10109
+ case 'bottom-right':
10110
+ case 'right':
10111
+ return 'bottom-start';
10112
+ case 'bottom-left':
10113
+ case 'left':
10114
+ return 'bottom-end';
10115
+ case 'top-right':
10116
+ return 'top-start';
10117
+ case 'top-left':
10118
+ return 'top-end';
10119
+ default:
10120
+ return 'bottom-start';
10121
+ }
10122
+ }
10123
+ /**
10124
+ * NotificationBell - A bell icon with badge and dropdown for displaying notifications
10125
+ *
10126
+ * Displays a bell icon with an optional unread count badge. When clicked, shows a
10127
+ * dropdown panel with recent notifications, mark as read actions, and a link to
10128
+ * view all notifications.
10129
+ *
10130
+ * @example Basic usage (compact variant)
10131
+ * ```tsx
10132
+ * <NotificationBell
10133
+ * notifications={notifications}
10134
+ * onMarkAsRead={(id) => markRead(id)}
10135
+ * onMarkAllRead={() => markAllRead()}
10136
+ * onNotificationClick={(n) => navigate(n.actionUrl)}
10137
+ * onViewAll={() => navigate('/notifications')}
10138
+ * />
10139
+ * ```
10140
+ *
10141
+ * @example Detailed variant with labeled badges
10142
+ * ```tsx
10143
+ * <NotificationBell
10144
+ * notifications={notifications}
10145
+ * variant="detailed"
10146
+ * showUnreadInHeader
10147
+ * dropdownPosition="bottom-left"
10148
+ * />
10149
+ * ```
10150
+ */
10151
+ function NotificationBell({ notifications, unreadCount: providedUnreadCount, onMarkAsRead, onMarkAllRead, onNotificationClick, onViewAll, loading = false, dropdownPosition = 'bottom-right', maxHeight = '400px', size = 'md', emptyMessage = 'No notifications', viewAllText = 'View all notifications', disabled = false, className = '', variant = 'compact', showUnreadInHeader = false, bellStyle = 'ghost', }) {
10152
+ const [isOpen, setIsOpen] = useState(false);
10153
+ // Calculate unread count if not provided
10154
+ const unreadCount = useMemo(() => {
10155
+ if (providedUnreadCount !== undefined) {
10156
+ return providedUnreadCount;
10157
+ }
10158
+ return notifications.filter((n) => !n.isRead).length;
10159
+ }, [providedUnreadCount, notifications]);
10160
+ // Handle notification click
10161
+ const handleNotificationClick = useCallback((notification) => {
10162
+ onNotificationClick?.(notification);
10163
+ }, [onNotificationClick]);
10164
+ // Handle mark as read
10165
+ const handleMarkAsRead = useCallback((e, id) => {
10166
+ e.stopPropagation();
10167
+ onMarkAsRead?.(id);
10168
+ }, [onMarkAsRead]);
10169
+ // Handle mark all as read
10170
+ const handleMarkAllRead = useCallback(() => {
10171
+ onMarkAllRead?.();
10172
+ }, [onMarkAllRead]);
10173
+ // Handle view all
10174
+ const handleViewAll = useCallback(() => {
10175
+ onViewAll?.();
10176
+ setIsOpen(false);
10177
+ }, [onViewAll]);
10178
+ // Icon sizes based on button size
10179
+ const iconSizes = {
10180
+ sm: 'h-4 w-4',
10181
+ md: 'h-5 w-5',
10182
+ lg: 'h-6 w-6',
10183
+ };
10184
+ // Dropdown width based on size
10185
+ const dropdownWidths = {
10186
+ sm: 'w-72',
10187
+ md: 'w-80',
10188
+ lg: 'w-96',
10189
+ };
10190
+ // Outlined bell style classes
10191
+ const outlinedSizeClasses = {
10192
+ sm: 'p-2',
10193
+ md: 'p-3',
10194
+ lg: 'p-4',
10195
+ };
10196
+ // Trigger button
10197
+ const triggerButton = bellStyle === 'outlined' ? (jsxs("div", { className: "relative inline-block", children: [jsx("button", { className: `
10198
+ ${outlinedSizeClasses[size]}
10199
+ bg-white border-2 border-paper-300 rounded-xl
10200
+ hover:bg-paper-50 hover:border-paper-400
10201
+ focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-accent-400
10202
+ transition-all duration-200
10203
+ disabled:opacity-40 disabled:cursor-not-allowed
10204
+ ${className}
10205
+ `, disabled: disabled, "aria-label": unreadCount > 0
10206
+ ? `Notifications - ${unreadCount} unread`
10207
+ : 'Notifications', children: jsx(Bell, { className: `${iconSizes[size]} text-ink-600` }) }), unreadCount > 0 && (jsx("span", { className: `
10208
+ absolute -top-1 -right-1
10209
+ flex items-center justify-center
10210
+ min-w-[18px] h-[18px] px-1.5
10211
+ rounded-full text-white font-semibold text-[11px]
10212
+ bg-error-500 shadow-sm
10213
+ pointer-events-none
10214
+ `, "aria-label": `${unreadCount > 99 ? '99+' : unreadCount} notifications`, children: unreadCount > 99 ? '99+' : unreadCount }))] })) : (jsx(Button, { variant: "ghost", iconOnly: true, size: size, disabled: disabled, badge: unreadCount > 0 ? unreadCount : undefined, badgeVariant: "error", "aria-label": unreadCount > 0
10215
+ ? `Notifications - ${unreadCount} unread`
10216
+ : 'Notifications', className: className, children: jsx(Bell, { className: iconSizes[size] }) }));
10217
+ // Header title with optional unread count
10218
+ const headerTitle = showUnreadInHeader && unreadCount > 0
10219
+ ? `Notifications (${unreadCount} unread)`
10220
+ : 'Notifications';
10221
+ // Render compact notification item
10222
+ const renderCompactItem = (notification) => (jsxs("div", { className: "flex gap-3", children: [jsx("div", { className: "flex-shrink-0 pt-1", children: jsx(Badge, { dot: true, variant: typeToBadgeVariant[notification.type], size: "sm" }) }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx(Text, { size: "sm", weight: notification.priority === 'high' ||
10223
+ notification.priority === 'urgent' ||
10224
+ !notification.isRead
10225
+ ? 'medium'
10226
+ : 'normal', truncate: true, children: notification.title }), jsx(Text, { size: "xs", color: "muted", lineClamp: 2, className: "mt-0.5", children: notification.message }), jsx(Text, { size: "xs", color: "muted", className: "mt-1", children: formatTimeAgo(notification.createdAt) })] }), !notification.isRead && onMarkAsRead && (jsx("button", { className: "flex-shrink-0 p-1 text-ink-400 hover:text-ink-600 hover:bg-paper-100 rounded transition-colors", onClick: (e) => handleMarkAsRead(e, notification.id), "aria-label": "Mark as read", title: "Mark as read", children: jsx(Check, { className: "h-4 w-4" }) }))] }));
10227
+ // Render detailed notification item
10228
+ const renderDetailedItem = (notification) => (jsxs("div", { className: "flex gap-3", children: [jsxs("div", { className: "flex-1 min-w-0", children: [jsxs("div", { className: "flex items-start justify-between gap-2", children: [jsx(Text, { size: "sm", weight: notification.priority === 'high' ||
10229
+ notification.priority === 'urgent' ||
10230
+ !notification.isRead
10231
+ ? 'semibold'
10232
+ : 'medium', className: "flex-1", children: notification.title }), jsx(Text, { size: "xs", color: "muted", className: "flex-shrink-0 whitespace-nowrap", children: formatTimeAgo(notification.createdAt) })] }), jsx(Text, { size: "xs", color: "muted", lineClamp: 2, className: "mt-1", children: notification.message }), jsx("div", { className: "mt-2", children: jsx(Badge, { variant: typeToBadgeVariant[notification.type], size: "sm", children: notification.typeLabel || defaultTypeLabels[notification.type] }) })] }), !notification.isRead && onMarkAsRead && (jsx("button", { className: "flex-shrink-0 p-1 text-ink-400 hover:text-ink-600 hover:bg-paper-100 rounded transition-colors self-center", onClick: (e) => handleMarkAsRead(e, notification.id), "aria-label": "Mark as read", title: "Mark as read", children: jsx(Check, { className: "h-4 w-4" }) }))] }));
10233
+ // Dropdown content
10234
+ const dropdownContent = (jsxs("div", { className: `${dropdownWidths[size]} bg-white`, children: [jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-b border-paper-200", children: [jsx(Text, { weight: "semibold", size: "sm", children: headerTitle }), unreadCount > 0 && onMarkAllRead && (jsxs("button", { className: "flex items-center gap-1.5 text-xs text-ink-600 hover:text-ink-800 transition-colors", onClick: handleMarkAllRead, children: [jsx(Check, { className: "h-3.5 w-3.5" }), "Mark all read"] }))] }), jsx("div", { className: "overflow-y-auto", style: { maxHeight }, role: "list", "aria-label": "Notifications", children: loading ? (
10235
+ // Loading state
10236
+ jsx("div", { className: "p-4", children: jsx(Stack, { spacing: "sm", children: [1, 2, 3].map((i) => (jsxs("div", { className: "flex gap-3", children: [variant === 'compact' && (jsx(Skeleton, { className: "h-4 w-4 rounded-full flex-shrink-0" })), jsxs("div", { className: "flex-1", children: [jsxs("div", { className: "flex justify-between", children: [jsx(Skeleton, { className: "h-4 w-3/4 mb-2" }), variant === 'detailed' && (jsx(Skeleton, { className: "h-3 w-12" }))] }), jsx(Skeleton, { className: "h-3 w-full mb-1" }), variant === 'compact' ? (jsx(Skeleton, { className: "h-3 w-1/4" })) : (jsx(Skeleton, { className: "h-5 w-16 mt-2" }))] })] }, i))) }) })) : notifications.length === 0 ? (
10237
+ // Empty state
10238
+ jsxs("div", { className: "py-8 px-4 text-center", children: [jsx(Bell, { className: "h-10 w-10 text-ink-300 mx-auto mb-3" }), jsx(Text, { color: "muted", size: "sm", children: emptyMessage })] })) : (
10239
+ // Notification items
10240
+ notifications.map((notification) => (jsx("div", { role: "listitem", className: `
10241
+ px-4 py-3 border-b border-paper-100 last:border-b-0
10242
+ hover:bg-paper-50 transition-colors cursor-pointer
10243
+ ${!notification.isRead ? 'bg-primary-50/30' : ''}
10244
+ ${notification.priority === 'urgent' ? 'border-l-2 border-l-error-500' : ''}
10245
+ `, onClick: () => handleNotificationClick(notification), onKeyDown: (e) => {
10246
+ if (e.key === 'Enter' || e.key === ' ') {
10247
+ e.preventDefault();
10248
+ handleNotificationClick(notification);
10249
+ }
10250
+ }, tabIndex: 0, children: variant === 'compact'
10251
+ ? renderCompactItem(notification)
10252
+ : renderDetailedItem(notification) }, notification.id)))) }), onViewAll && notifications.length > 0 && (jsx("div", { className: "px-4 py-3 border-t border-paper-200", children: jsx(Button, { variant: "ghost", size: "sm", fullWidth: true, onClick: handleViewAll, icon: jsx(ExternalLink, { className: "h-3.5 w-3.5" }), iconPosition: "right", children: viewAllText }) }))] }));
10253
+ return (jsx(Popover, { trigger: triggerButton, placement: getPopoverPlacement(dropdownPosition), triggerMode: "click", showArrow: false, offset: 4, open: isOpen, onOpenChange: setIsOpen, closeOnClickOutside: true, closeOnEscape: true, disabled: disabled, className: "p-0 overflow-hidden", children: dropdownContent }));
10254
+ }
10255
+
10059
10256
  /**
10060
10257
  * Get value from item by key path (supports nested keys like 'user.name')
10061
10258
  */
@@ -11072,52 +11269,44 @@ function getAugmentedNamespace(n) {
11072
11269
  * (A1, A1:C5, ...)
11073
11270
  */
11074
11271
 
11075
- var collection;
11076
- var hasRequiredCollection;
11077
-
11078
- function requireCollection () {
11079
- if (hasRequiredCollection) return collection;
11080
- hasRequiredCollection = 1;
11081
- class Collection {
11272
+ let Collection$3 = class Collection {
11082
11273
 
11083
- constructor(data, refs) {
11084
- if (data == null && refs == null) {
11085
- this._data = [];
11086
- this._refs = [];
11087
- } else {
11088
- if (data.length !== refs.length)
11089
- throw Error('Collection: data length should match references length.');
11090
- this._data = data;
11091
- this._refs = refs;
11092
- }
11093
- }
11274
+ constructor(data, refs) {
11275
+ if (data == null && refs == null) {
11276
+ this._data = [];
11277
+ this._refs = [];
11278
+ } else {
11279
+ if (data.length !== refs.length)
11280
+ throw Error('Collection: data length should match references length.');
11281
+ this._data = data;
11282
+ this._refs = refs;
11283
+ }
11284
+ }
11094
11285
 
11095
- get data() {
11096
- return this._data;
11097
- }
11286
+ get data() {
11287
+ return this._data;
11288
+ }
11098
11289
 
11099
- get refs() {
11100
- return this._refs;
11101
- }
11290
+ get refs() {
11291
+ return this._refs;
11292
+ }
11102
11293
 
11103
- get length() {
11104
- return this._data.length;
11105
- }
11294
+ get length() {
11295
+ return this._data.length;
11296
+ }
11106
11297
 
11107
- /**
11108
- * Add data and references to this collection.
11109
- * @param {{}} obj - data
11110
- * @param {{}} ref - reference
11111
- */
11112
- add(obj, ref) {
11113
- this._data.push(obj);
11114
- this._refs.push(ref);
11115
- }
11116
- }
11298
+ /**
11299
+ * Add data and references to this collection.
11300
+ * @param {{}} obj - data
11301
+ * @param {{}} ref - reference
11302
+ */
11303
+ add(obj, ref) {
11304
+ this._data.push(obj);
11305
+ this._refs.push(ref);
11306
+ }
11307
+ };
11117
11308
 
11118
- collection = Collection;
11119
- return collection;
11120
- }
11309
+ var collection = Collection$3;
11121
11310
 
11122
11311
  var helpers;
11123
11312
  var hasRequiredHelpers;
@@ -11126,7 +11315,7 @@ function requireHelpers () {
11126
11315
  if (hasRequiredHelpers) return helpers;
11127
11316
  hasRequiredHelpers = 1;
11128
11317
  const FormulaError = requireError();
11129
- const Collection = requireCollection();
11318
+ const Collection = collection;
11130
11319
 
11131
11320
  const Types = {
11132
11321
  NUMBER: 0,
@@ -20780,7 +20969,7 @@ var engineering = EngineeringFunctions;
20780
20969
 
20781
20970
  const FormulaError$b = requireError();
20782
20971
  const {FormulaHelpers: FormulaHelpers$8, Types: Types$6, WildCard, Address: Address$3} = requireHelpers();
20783
- const Collection$2 = requireCollection();
20972
+ const Collection$2 = collection;
20784
20973
  const H$5 = FormulaHelpers$8;
20785
20974
 
20786
20975
  const ReferenceFunctions$1 = {
@@ -32408,7 +32597,7 @@ var parsing = {
32408
32597
  const FormulaError$4 = requireError();
32409
32598
  const {Address: Address$1} = requireHelpers();
32410
32599
  const {Prefix: Prefix$1, Postfix: Postfix$1, Infix: Infix$1, Operators: Operators$1} = operators;
32411
- const Collection$1 = requireCollection();
32600
+ const Collection$1 = collection;
32412
32601
  const MAX_ROW$1 = 1048576, MAX_COLUMN$1 = 16384;
32413
32602
  const {NotAllInputParsedException} = require$$4;
32414
32603
 
@@ -33170,7 +33359,7 @@ var hooks$1 = {
33170
33359
  const FormulaError$2 = requireError();
33171
33360
  const {FormulaHelpers: FormulaHelpers$1, Types, Address} = requireHelpers();
33172
33361
  const {Prefix, Postfix, Infix, Operators} = operators;
33173
- const Collection = requireCollection();
33362
+ const Collection = collection;
33174
33363
  const MAX_ROW = 1048576, MAX_COLUMN = 16384;
33175
33364
 
33176
33365
  let Utils$1 = class Utils {
@@ -57675,5 +57864,5 @@ function Responsive({ mobile, tablet, desktop, }) {
57675
57864
  return jsx(Fragment, { children: mobile || tablet || desktop });
57676
57865
  }
57677
57866
 
57678
- export { Accordion, ActionBar, ActionBarCenter, ActionBarLeft, ActionBarRight, ActionButton, AdminModal, Alert, AlertDialog, AppLayout, Autocomplete, Avatar, BREAKPOINTS, Badge, BottomNavigation, BottomNavigationSpacer, BottomSheet, BottomSheetActions, BottomSheetContent, BottomSheetHeader, Box, Breadcrumbs, Button, ButtonGroup, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardView, Carousel, Checkbox, CheckboxList, Chip, ChipGroup, Collapsible, ColorPicker, Combobox, ComingSoon, CommandPalette, CompactStat, ConfirmDialog, ContextMenu, ControlBar, CurrencyDisplay, CurrencyInput, Dashboard, DashboardContent, DashboardHeader, DataGrid, DataTable, DataTableCardView, DateDisplay, DatePicker, DateRangePicker, DateTimePicker, DesktopOnly, Drawer, DrawerFooter, DropZone, Dropdown, DropdownTrigger, EmptyState, ErrorBoundary, ExpandablePanel, ExpandablePanelContainer, ExpandablePanelSpacer, ExpandableRowButton, ExpandableToolbar, ExpandedRowEditForm, ExportButton, FORMULA_CATEGORIES, FORMULA_DEFINITIONS, FORMULA_NAMES, FieldArray, FileUpload, FilterBar, FilterControls, FilterStatusBanner, FloatingActionButton, Form, FormContext, FormControl, FormWizard, Grid, GridItem, Hide, HorizontalScroll, HoverCard, InfiniteScroll, Input, KanbanBoard, Layout, Loading, LoadingOverlay, Logo, MarkdownEditor, MaskedInput, Menu, MenuDivider, MobileHeader, MobileHeaderSpacer, MobileLayout, MobileOnly, MobileProvider, Modal, ModalFooter, MultiSelect, NotificationBanner, NotificationBar, NotificationIndicator, NumberInput, Page, PageHeader, PageLayout, PageNavigation, Pagination, PasswordInput, Popover, Progress, PullToRefresh, QueryTransparency, RadioGroup, Rating, Responsive, RichTextEditor, SearchBar, SearchableList, Select, Separator, Show, Sidebar, SidebarGroup, Skeleton, SkeletonCard$1 as SkeletonCard, SkeletonTable, Slider, Spreadsheet, SpreadsheetReport, Stack, StatCard, StatItem, StatsCardGrid, StatsGrid, StatusBadge, StatusBar, StepIndicator, Stepper, SwipeActions, SwipeableCard, Switch, Tabs, Text, Textarea, ThemeToggle, TimePicker, Timeline, Toast, ToastContainer, Tooltip, Transfer, TreeView, TwoColumnContent, UserProfileButton, addErrorMessage, addInfoMessage, addSuccessMessage, addWarningMessage, calculateColumnWidth, createActionsSection, createFiltersSection, createMultiSheetExcel, createPageControlsSection, createQueryDetailsSection, exportDataTableToExcel, exportToExcel, formatStatisticValue, formatStatistics, getFormula, getFormulasByCategory, loadColumnOrder, loadColumnWidths, reorderArray, saveColumnOrder, saveColumnWidths, searchFormulas, statusManager, useBreadcrumbReset, useBreakpoint, useBreakpointValue, useColumnReorder, useColumnResize, useCommandPalette, useConfirmDialog, useFABScroll, useFormContext, useIsDesktop, useIsMobile, useIsTablet, useIsTouchDevice, useMediaQuery, useMobileContext, useOrientation, usePrefersMobile, useResponsiveCallback, useSafeAreaInsets, useViewportSize, withMobileContext };
57867
+ export { Accordion, ActionBar, ActionBarCenter, ActionBarLeft, ActionBarRight, ActionButton, AdminModal, Alert, AlertDialog, AppLayout, Autocomplete, Avatar, BREAKPOINTS, Badge, BottomNavigation, BottomNavigationSpacer, BottomSheet, BottomSheetActions, BottomSheetContent, BottomSheetHeader, Box, Breadcrumbs, Button, ButtonGroup, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardView, Carousel, Checkbox, CheckboxList, Chip, ChipGroup, Collapsible, ColorPicker, Combobox, ComingSoon, CommandPalette, CompactStat, ConfirmDialog, ContextMenu, ControlBar, CurrencyDisplay, CurrencyInput, Dashboard, DashboardContent, DashboardHeader, DataGrid, DataTable, DataTableCardView, DateDisplay, DatePicker, DateRangePicker, DateTimePicker, DesktopOnly, Drawer, DrawerFooter, DropZone, Dropdown, DropdownTrigger, EmptyState, ErrorBoundary, ExpandablePanel, ExpandablePanelContainer, ExpandablePanelSpacer, ExpandableRowButton, ExpandableToolbar, ExpandedRowEditForm, ExportButton, FORMULA_CATEGORIES, FORMULA_DEFINITIONS, FORMULA_NAMES, FieldArray, FileUpload, FilterBar, FilterControls, FilterStatusBanner, FloatingActionButton, Form, FormContext, FormControl, FormWizard, Grid, GridItem, Hide, HorizontalScroll, HoverCard, InfiniteScroll, Input, KanbanBoard, Layout, Loading, LoadingOverlay, Logo, MarkdownEditor, MaskedInput, Menu, MenuDivider, MobileHeader, MobileHeaderSpacer, MobileLayout, MobileOnly, MobileProvider, Modal, ModalFooter, MultiSelect, NotificationBanner, NotificationBar, NotificationBell, NotificationIndicator, NumberInput, Page, PageHeader, PageLayout, PageNavigation, Pagination, PasswordInput, Popover, Progress, PullToRefresh, QueryTransparency, RadioGroup, Rating, Responsive, RichTextEditor, SearchBar, SearchableList, Select, Separator, Show, Sidebar, SidebarGroup, Skeleton, SkeletonCard$1 as SkeletonCard, SkeletonTable, Slider, Spreadsheet, SpreadsheetReport, Stack, StatCard, StatItem, StatsCardGrid, StatsGrid, StatusBadge, StatusBar, StepIndicator, Stepper, SwipeActions, SwipeableCard, Switch, Tabs, Text, Textarea, ThemeToggle, TimePicker, Timeline, Toast, ToastContainer, Tooltip, Transfer, TreeView, TwoColumnContent, UserProfileButton, addErrorMessage, addInfoMessage, addSuccessMessage, addWarningMessage, calculateColumnWidth, createActionsSection, createFiltersSection, createMultiSheetExcel, createPageControlsSection, createQueryDetailsSection, exportDataTableToExcel, exportToExcel, formatStatisticValue, formatStatistics, getFormula, getFormulasByCategory, loadColumnOrder, loadColumnWidths, reorderArray, saveColumnOrder, saveColumnWidths, searchFormulas, statusManager, useBreadcrumbReset, useBreakpoint, useBreakpointValue, useColumnReorder, useColumnResize, useCommandPalette, useConfirmDialog, useFABScroll, useFormContext, useIsDesktop, useIsMobile, useIsTablet, useIsTouchDevice, useMediaQuery, useMobileContext, useOrientation, usePrefersMobile, useResponsiveCallback, useSafeAreaInsets, useViewportSize, withMobileContext };
57679
57868
  //# sourceMappingURL=index.esm.js.map