@papernote/ui 1.8.3 → 1.9.2

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
 
@@ -10056,6 +10056,207 @@ 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
+ * - bottom-right: Below bell, dropdown's right edge aligns with bell
10107
+ * - bottom-left: Below bell, dropdown's left edge aligns with bell
10108
+ * - top-right: Above bell, dropdown's right edge aligns with bell
10109
+ * - top-left: Above bell, dropdown's left edge aligns with bell
10110
+ */
10111
+ function getPopoverPlacement(position) {
10112
+ switch (position) {
10113
+ case 'bottom-right':
10114
+ case 'right':
10115
+ return 'bottom-start'; // Below, extends to the right
10116
+ case 'bottom-left':
10117
+ case 'left':
10118
+ return 'bottom-end'; // Below, extends to the left
10119
+ case 'top-right':
10120
+ return 'top-start'; // Above, extends to the right
10121
+ case 'top-left':
10122
+ return 'top-end'; // Above, extends to the left
10123
+ default:
10124
+ return 'bottom-start';
10125
+ }
10126
+ }
10127
+ /**
10128
+ * NotificationBell - A bell icon with badge and dropdown for displaying notifications
10129
+ *
10130
+ * Displays a bell icon with an optional unread count badge. When clicked, shows a
10131
+ * dropdown panel with recent notifications, mark as read actions, and a link to
10132
+ * view all notifications.
10133
+ *
10134
+ * @example Basic usage (compact variant)
10135
+ * ```tsx
10136
+ * <NotificationBell
10137
+ * notifications={notifications}
10138
+ * onMarkAsRead={(id) => markRead(id)}
10139
+ * onMarkAllRead={() => markAllRead()}
10140
+ * onNotificationClick={(n) => navigate(n.actionUrl)}
10141
+ * onViewAll={() => navigate('/notifications')}
10142
+ * />
10143
+ * ```
10144
+ *
10145
+ * @example Detailed variant with labeled badges
10146
+ * ```tsx
10147
+ * <NotificationBell
10148
+ * notifications={notifications}
10149
+ * variant="detailed"
10150
+ * showUnreadInHeader
10151
+ * dropdownPosition="bottom-left"
10152
+ * />
10153
+ * ```
10154
+ */
10155
+ 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', }) {
10156
+ const [isOpen, setIsOpen] = useState(false);
10157
+ // Calculate unread count if not provided
10158
+ const unreadCount = useMemo(() => {
10159
+ if (providedUnreadCount !== undefined) {
10160
+ return providedUnreadCount;
10161
+ }
10162
+ return notifications.filter((n) => !n.isRead).length;
10163
+ }, [providedUnreadCount, notifications]);
10164
+ // Handle notification click
10165
+ const handleNotificationClick = useCallback((notification) => {
10166
+ onNotificationClick?.(notification);
10167
+ }, [onNotificationClick]);
10168
+ // Handle mark as read
10169
+ const handleMarkAsRead = useCallback((e, id) => {
10170
+ e.stopPropagation();
10171
+ onMarkAsRead?.(id);
10172
+ }, [onMarkAsRead]);
10173
+ // Handle mark all as read
10174
+ const handleMarkAllRead = useCallback(() => {
10175
+ onMarkAllRead?.();
10176
+ }, [onMarkAllRead]);
10177
+ // Handle view all
10178
+ const handleViewAll = useCallback(() => {
10179
+ onViewAll?.();
10180
+ setIsOpen(false);
10181
+ }, [onViewAll]);
10182
+ // Icon sizes based on button size
10183
+ const iconSizes = {
10184
+ sm: 'h-4 w-4',
10185
+ md: 'h-5 w-5',
10186
+ lg: 'h-6 w-6',
10187
+ };
10188
+ // Dropdown width based on size
10189
+ const dropdownWidths = {
10190
+ sm: 'w-72',
10191
+ md: 'w-80',
10192
+ lg: 'w-96',
10193
+ };
10194
+ // Outlined bell style classes
10195
+ const outlinedSizeClasses = {
10196
+ sm: 'p-2',
10197
+ md: 'p-3',
10198
+ lg: 'p-4',
10199
+ };
10200
+ // Trigger button
10201
+ const triggerButton = bellStyle === 'outlined' ? (jsxs("div", { className: "relative inline-block", children: [jsx("button", { className: `
10202
+ ${outlinedSizeClasses[size]}
10203
+ bg-white border-2 border-paper-300 rounded-xl
10204
+ hover:bg-paper-50 hover:border-paper-400
10205
+ focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-accent-400
10206
+ transition-all duration-200
10207
+ disabled:opacity-40 disabled:cursor-not-allowed
10208
+ ${className}
10209
+ `, disabled: disabled, "aria-label": unreadCount > 0
10210
+ ? `Notifications - ${unreadCount} unread`
10211
+ : 'Notifications', children: jsx(Bell, { className: `${iconSizes[size]} text-ink-600` }) }), unreadCount > 0 && (jsx("span", { className: `
10212
+ absolute -top-1 -right-1
10213
+ flex items-center justify-center
10214
+ min-w-[18px] h-[18px] px-1.5
10215
+ rounded-full text-white font-semibold text-[11px]
10216
+ bg-error-500 shadow-sm
10217
+ pointer-events-none
10218
+ `, "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
10219
+ ? `Notifications - ${unreadCount} unread`
10220
+ : 'Notifications', className: className, children: jsx(Bell, { className: iconSizes[size] }) }));
10221
+ // Header title with optional unread count
10222
+ const headerTitle = showUnreadInHeader && unreadCount > 0
10223
+ ? `Notifications (${unreadCount} unread)`
10224
+ : 'Notifications';
10225
+ // Render compact notification item
10226
+ 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' ||
10227
+ notification.priority === 'urgent' ||
10228
+ !notification.isRead
10229
+ ? 'medium'
10230
+ : '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" }) }))] }));
10231
+ // Render detailed notification item
10232
+ 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' ||
10233
+ notification.priority === 'urgent' ||
10234
+ !notification.isRead
10235
+ ? 'semibold'
10236
+ : '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" }) }))] }));
10237
+ // Dropdown content
10238
+ 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 ? (
10239
+ // Loading state
10240
+ 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 ? (
10241
+ // Empty state
10242
+ 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 })] })) : (
10243
+ // Notification items
10244
+ notifications.map((notification) => (jsx("div", { role: "listitem", className: `
10245
+ px-4 py-3 border-b border-paper-100 last:border-b-0
10246
+ hover:bg-paper-50 transition-colors cursor-pointer
10247
+ ${!notification.isRead ? 'bg-primary-50/30' : ''}
10248
+ ${notification.priority === 'urgent' ? 'border-l-2 border-l-error-500' : ''}
10249
+ `, onClick: () => handleNotificationClick(notification), onKeyDown: (e) => {
10250
+ if (e.key === 'Enter' || e.key === ' ') {
10251
+ e.preventDefault();
10252
+ handleNotificationClick(notification);
10253
+ }
10254
+ }, tabIndex: 0, children: variant === 'compact'
10255
+ ? renderCompactItem(notification)
10256
+ : 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 }) }))] }));
10257
+ 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 }));
10258
+ }
10259
+
10059
10260
  /**
10060
10261
  * Get value from item by key path (supports nested keys like 'user.name')
10061
10262
  */
@@ -11072,44 +11273,52 @@ function getAugmentedNamespace(n) {
11072
11273
  * (A1, A1:C5, ...)
11073
11274
  */
11074
11275
 
11075
- let Collection$3 = class Collection {
11276
+ var collection;
11277
+ var hasRequiredCollection;
11278
+
11279
+ function requireCollection () {
11280
+ if (hasRequiredCollection) return collection;
11281
+ hasRequiredCollection = 1;
11282
+ class Collection {
11076
11283
 
11077
- constructor(data, refs) {
11078
- if (data == null && refs == null) {
11079
- this._data = [];
11080
- this._refs = [];
11081
- } else {
11082
- if (data.length !== refs.length)
11083
- throw Error('Collection: data length should match references length.');
11084
- this._data = data;
11085
- this._refs = refs;
11086
- }
11087
- }
11284
+ constructor(data, refs) {
11285
+ if (data == null && refs == null) {
11286
+ this._data = [];
11287
+ this._refs = [];
11288
+ } else {
11289
+ if (data.length !== refs.length)
11290
+ throw Error('Collection: data length should match references length.');
11291
+ this._data = data;
11292
+ this._refs = refs;
11293
+ }
11294
+ }
11088
11295
 
11089
- get data() {
11090
- return this._data;
11091
- }
11296
+ get data() {
11297
+ return this._data;
11298
+ }
11092
11299
 
11093
- get refs() {
11094
- return this._refs;
11095
- }
11300
+ get refs() {
11301
+ return this._refs;
11302
+ }
11096
11303
 
11097
- get length() {
11098
- return this._data.length;
11099
- }
11304
+ get length() {
11305
+ return this._data.length;
11306
+ }
11100
11307
 
11101
- /**
11102
- * Add data and references to this collection.
11103
- * @param {{}} obj - data
11104
- * @param {{}} ref - reference
11105
- */
11106
- add(obj, ref) {
11107
- this._data.push(obj);
11108
- this._refs.push(ref);
11109
- }
11110
- };
11308
+ /**
11309
+ * Add data and references to this collection.
11310
+ * @param {{}} obj - data
11311
+ * @param {{}} ref - reference
11312
+ */
11313
+ add(obj, ref) {
11314
+ this._data.push(obj);
11315
+ this._refs.push(ref);
11316
+ }
11317
+ }
11111
11318
 
11112
- var collection = Collection$3;
11319
+ collection = Collection;
11320
+ return collection;
11321
+ }
11113
11322
 
11114
11323
  var helpers;
11115
11324
  var hasRequiredHelpers;
@@ -11118,7 +11327,7 @@ function requireHelpers () {
11118
11327
  if (hasRequiredHelpers) return helpers;
11119
11328
  hasRequiredHelpers = 1;
11120
11329
  const FormulaError = requireError();
11121
- const Collection = collection;
11330
+ const Collection = requireCollection();
11122
11331
 
11123
11332
  const Types = {
11124
11333
  NUMBER: 0,
@@ -20772,7 +20981,7 @@ var engineering = EngineeringFunctions;
20772
20981
 
20773
20982
  const FormulaError$b = requireError();
20774
20983
  const {FormulaHelpers: FormulaHelpers$8, Types: Types$6, WildCard, Address: Address$3} = requireHelpers();
20775
- const Collection$2 = collection;
20984
+ const Collection$2 = requireCollection();
20776
20985
  const H$5 = FormulaHelpers$8;
20777
20986
 
20778
20987
  const ReferenceFunctions$1 = {
@@ -32400,7 +32609,7 @@ var parsing = {
32400
32609
  const FormulaError$4 = requireError();
32401
32610
  const {Address: Address$1} = requireHelpers();
32402
32611
  const {Prefix: Prefix$1, Postfix: Postfix$1, Infix: Infix$1, Operators: Operators$1} = operators;
32403
- const Collection$1 = collection;
32612
+ const Collection$1 = requireCollection();
32404
32613
  const MAX_ROW$1 = 1048576, MAX_COLUMN$1 = 16384;
32405
32614
  const {NotAllInputParsedException} = require$$4;
32406
32615
 
@@ -33162,7 +33371,7 @@ var hooks$1 = {
33162
33371
  const FormulaError$2 = requireError();
33163
33372
  const {FormulaHelpers: FormulaHelpers$1, Types, Address} = requireHelpers();
33164
33373
  const {Prefix, Postfix, Infix, Operators} = operators;
33165
- const Collection = collection;
33374
+ const Collection = requireCollection();
33166
33375
  const MAX_ROW = 1048576, MAX_COLUMN = 16384;
33167
33376
 
33168
33377
  let Utils$1 = class Utils {
@@ -57667,5 +57876,5 @@ function Responsive({ mobile, tablet, desktop, }) {
57667
57876
  return jsx(Fragment, { children: mobile || tablet || desktop });
57668
57877
  }
57669
57878
 
57670
- 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 };
57879
+ 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 };
57671
57880
  //# sourceMappingURL=index.esm.js.map