@memobit/libs 3.6.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,19 +1,25 @@
1
- var s = "/data-files/images", g = () => `${s}/default.jpg`, i = (t) => `${s}/category/${t}.jpg`, c = (t, a) => typeof t != "string" ? URL.createObjectURL(t) : t ? t.includes("/data-files/images") || t.startsWith("blob:") || t.startsWith("http") ? t : `${s}/specific/${t}` : a ? i(a) : g(), l = (t, a) => {
2
- const r = g(), e = a ? i(a) : r;
3
- return t ? t.endsWith(r) ? null : t.includes("/data-files/images/category/") ? r : e : e;
4
- }, u = (t, a) => {
5
- const r = t.currentTarget, e = l(r.src, a);
6
- if (e && !r.src.endsWith(e)) {
7
- r.src = e;
8
- return;
9
- }
10
- r.onerror = null;
1
+ var u = "/data-files", p = (l) => {
2
+ const e = `${u}/${l.replace(/^\/+|\/+$/g, "")}`, c = () => `${e}/default.jpg`, g = (t) => `${e}/category/${t}.jpg`, o = (t, a) => typeof t != "string" ? URL.createObjectURL(t) : t ? t.includes(e) || t.startsWith("blob:") || t.startsWith("http") ? t : `${e}/specific/${t}` : a ? g(a) : c(), n = (t, a) => {
3
+ const r = c(), s = a ? g(a) : r;
4
+ return t ? t.endsWith(r) ? null : t.includes(`${e}/category/`) ? r : s : s;
5
+ };
6
+ return {
7
+ basePath: e,
8
+ getDefaultImageUrl: c,
9
+ getCategoryImageUrl: g,
10
+ getImageUrl: o,
11
+ getNextImageFallback: n,
12
+ applyImageFallback: (t, a) => {
13
+ const r = t.currentTarget, s = n(r.src, a);
14
+ if (s && !r.src.endsWith(s)) {
15
+ r.src = s;
16
+ return;
17
+ }
18
+ r.onerror = null;
19
+ }
20
+ };
11
21
  };
12
22
  export {
13
- s as IMAGES_BASE_PATH,
14
- u as applyImageFallback,
15
- i as getCategoryImageUrl,
16
- g as getDefaultImageUrl,
17
- c as getImageUrl,
18
- l as getNextImageFallback
23
+ u as DATA_FILES_PATH,
24
+ p as createImagePaths
19
25
  };
@@ -23,7 +23,7 @@ var r = (i) => {
23
23
  const o = {
24
24
  ...i,
25
25
  lib: d,
26
- libBuildNumber: 484,
26
+ libBuildNumber: 486,
27
27
  libCommit: n,
28
28
  libBuildDate: t
29
29
  };
package/dist/index.d.ts CHANGED
@@ -152,8 +152,6 @@ export declare interface AppHeaderProps {
152
152
  showSeparator?: boolean;
153
153
  }
154
154
 
155
- export declare const applyImageFallback: (event: SyntheticEvent<HTMLImageElement>, categoryKey?: string) => void;
156
-
157
155
  export declare interface AppPersistenceDefaults<TPages, TTheme> {
158
156
  pages?: TPages;
159
157
  theme: TTheme;
@@ -1031,8 +1029,19 @@ declare interface CountryWithFlagProps {
1031
1029
  */
1032
1030
  export declare const createApiClient: ({ baseUrl, loginPath }: ApiClientConfig) => ApiClient;
1033
1031
 
1032
+ /**
1033
+ * Image paths for one entity folder under /data-files, laid out as:
1034
+ * default.jpg — fallback for the whole folder
1035
+ * category/<key>.jpg — per-category fallback
1036
+ * specific/<filename> — uploaded images
1037
+ * The folder is named after what it holds (e.g. 'books'), never after the app.
1038
+ */
1039
+ export declare const createImagePaths: (folder: string) => ImagePaths;
1040
+
1034
1041
  export declare const CSRF_HEADER = "X-CSRF-Token";
1035
1042
 
1043
+ export declare const DATA_FILES_PATH = "/data-files";
1044
+
1036
1045
  declare function DataView_2<T>({ columns, data, rowKey, pinnedIds, selectable, onSelectionChange, selectedIds: controlledSelectedIds, pageSizeOptions, initialPageSize, showPageSize, card, actions, actionsWidth, timeline, onRowClick, rowHref, rowClassName, rowDetail, empty, initialSortKey, initialSortDirection, sortKey: controlledSortKey, sortDirection: controlledSortDirection, onSortChange, miniSort, showCardSortControls, desktopView, cardMaxWidth, className, onPageChange, onPageSizeChange, currentPage: controlledCurrentPage, totalItems: controlledTotalItems, group, showResultsCount, totalCount, itemNoun, columnSelector, }: DataViewProps<T>): default_2.JSX.Element;
1037
1046
  export { DataView_2 as DataView }
1038
1047
 
@@ -1702,8 +1711,6 @@ export declare const formatSecondsToMediaTime: (seconds: number | undefined) =>
1702
1711
 
1703
1712
  export declare const fuzzyMatch: (text: string, query: string) => boolean;
1704
1713
 
1705
- export declare const getCategoryImageUrl: (categoryKey: string) => string;
1706
-
1707
1714
  export declare const getCsrfToken: () => string | null;
1708
1715
 
1709
1716
  /**
@@ -1711,17 +1718,6 @@ export declare const getCsrfToken: () => string | null;
1711
1718
  */
1712
1719
  export declare const getDaysInMonth: (year: number, month: number) => number;
1713
1720
 
1714
- export declare const getDefaultImageUrl: () => string;
1715
-
1716
- /**
1717
- * Resolves what an <img> should show for a stored image value:
1718
- * - a File (new, unsaved upload) → a blob URL
1719
- * - a full URL, blob URL or already-prefixed path → unchanged
1720
- * - empty → the category fallback, else the app default
1721
- * - a bare filename → its path under specific/
1722
- */
1723
- export declare const getImageUrl: (filename: string | File, categoryKey?: string) => string;
1724
-
1725
1721
  export declare const getIndicatorColor: (bmi: number, ranges: BMIRange[]) => string;
1726
1722
 
1727
1723
  export declare const getIndicatorPosition: (bmi: number, ranges: BMIRange[]) => number;
@@ -1739,8 +1735,6 @@ export declare const getIsoWeek: (date: Date) => number;
1739
1735
  */
1740
1736
  export declare const getMonthMatrix: (year: number, month: number, firstDayOfWeek?: 0 | 1) => Date[][];
1741
1737
 
1742
- export declare const getNextImageFallback: (currentSrc: string, categoryKey?: string) => string | null;
1743
-
1744
1738
  export declare const getPediatricRanges: (p5: number, p85: number, p95: number) => BMIRange[];
1745
1739
 
1746
1740
  export declare const getPercent: (value: number, total: number) => number;
@@ -1906,7 +1900,14 @@ export declare type IconSize = 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl';
1906
1900
 
1907
1901
  export declare type IconVariant = 'default' | 'muted' | 'accent' | 'info' | 'success' | 'warning' | 'danger';
1908
1902
 
1909
- export declare const IMAGES_BASE_PATH = "/data-files/images";
1903
+ export declare interface ImagePaths {
1904
+ basePath: string;
1905
+ getDefaultImageUrl: () => string;
1906
+ getCategoryImageUrl: (categoryKey: string) => string;
1907
+ getImageUrl: (filename: string | File, categoryKey?: string) => string;
1908
+ getNextImageFallback: (currentSrc: string, categoryKey?: string) => string | null;
1909
+ applyImageFallback: (event: SyntheticEvent<HTMLImageElement>, categoryKey?: string) => void;
1910
+ }
1910
1911
 
1911
1912
  export declare const InfiniteScroll: ({ children, onLoadMore, hasMore, isLoading, threshold, rootMargin, height, onScrollChange, endMessage, className, }: InfiniteScrollProps) => JSX.Element;
1912
1913
 
package/dist/index.js CHANGED
@@ -1,37 +1,37 @@
1
1
  import { Icon as o } from "./components/Icon/Icon2.js";
2
2
  import { Accordion as m } from "./components/Accordion/Accordion2.js";
3
3
  import { useBodyScrollLock as e } from "./hooks/useBodyScrollLock.js";
4
- import { ThemeContext as a } from "./components/ThemeSettings/ThemeContextValue.js";
4
+ import { ThemeContext as f } from "./components/ThemeSettings/ThemeContextValue.js";
5
5
  import { useTheme as n } from "./components/ThemeSettings/useTheme.js";
6
6
  import { useComponentEffect as s } from "./hooks/useComponentEffect.js";
7
- import { Button as g } from "./components/Button/Button2.js";
8
- import { Tooltip as c } from "./components/Tooltip/Tooltip2.js";
7
+ import { Button as d } from "./components/Button/Button2.js";
8
+ import { Tooltip as g } from "./components/Tooltip/Tooltip2.js";
9
9
  import { Modal as S } from "./components/Modal/Modal2.js";
10
10
  import { AlertDialog as P } from "./components/AlertDialog/AlertDialog2.js";
11
11
  import { AnalogClock as D } from "./components/AnalogClock/AnalogClock2.js";
12
- import { AngleSlider as M } from "./components/AngleSlider/AngleSlider2.js";
12
+ import { AngleSlider as A } from "./components/AngleSlider/AngleSlider2.js";
13
13
  import { Separator as B } from "./components/Separator/Separator2.js";
14
14
  import { AppHeader as E } from "./components/AppHeader/AppHeader2.js";
15
- import { AvatarInitials as R } from "./components/AvatarInitials/AvatarInitials2.js";
16
- import { Badge as b } from "./components/Badge/Badge2.js";
15
+ import { AvatarInitials as y } from "./components/AvatarInitials/AvatarInitials2.js";
16
+ import { Badge as _ } from "./components/Badge/Badge2.js";
17
17
  import { Banner as v } from "./components/Banner/Banner2.js";
18
18
  import { Blockquote as H } from "./components/Blockquote/Blockquote2.js";
19
- import { ADULT_RANGES as N, PEDIATRIC_THRESHOLDS as U, calculateBMI as w, getIndicatorColor as O, getIndicatorPosition as V, getPediatricRanges as W, getRangeLabel as Q } from "./components/BMI/bmiUtils.js";
19
+ import { ADULT_RANGES as N, PEDIATRIC_THRESHOLDS as w, calculateBMI as O, getIndicatorColor as U, getIndicatorPosition as V, getPediatricRanges as W, getRangeLabel as Q } from "./components/BMI/bmiUtils.js";
20
20
  import { BMI as G } from "./components/BMI/BMI2.js";
21
21
  import { Breadcrumb as j } from "./components/Breadcrumb/Breadcrumb2.js";
22
22
  import { BulkActionBar as K } from "./components/BulkActionBar/BulkActionBar2.js";
23
- import { APP_DATE_FORMAT as Y, APP_DATE_TIME_FORMAT as Z, addDays as $, addMonths as rr, formatAppDate as or, formatAppDateTime as tr, formatDate as mr, formatDateLocale as ir, formatDuration as er, formatRelativeDuration as pr, formatRelativeTime as ar, formatSecondsToMediaTime as fr, getDaysInMonth as nr, getIsoWeek as lr, getMonthMatrix as sr, getTodayDateString as ur, isAfter as gr, isBefore as dr, isDateInRange as cr, isSameDay as Tr, isToday as Sr, isWeekend as Ir } from "./helpers/Datetime.js";
23
+ import { APP_DATE_FORMAT as Y, APP_DATE_TIME_FORMAT as Z, addDays as $, addMonths as rr, formatAppDate as or, formatAppDateTime as tr, formatDate as mr, formatDateLocale as ir, formatDuration as er, formatRelativeDuration as pr, formatRelativeTime as fr, formatSecondsToMediaTime as ar, getDaysInMonth as nr, getIsoWeek as lr, getMonthMatrix as sr, getTodayDateString as ur, isAfter as dr, isBefore as cr, isDateInRange as gr, isSameDay as Tr, isToday as Sr, isWeekend as Ir } from "./helpers/Datetime.js";
24
24
  import { Calendar as Cr } from "./components/Calendar/Calendar2.js";
25
- import { CalendarHeatmap as Ar } from "./components/CalendarHeatmap/CalendarHeatmap2.js";
26
- import { Card as hr } from "./components/Card/Card2.js";
25
+ import { CalendarHeatmap as hr } from "./components/CalendarHeatmap/CalendarHeatmap2.js";
26
+ import { Card as Mr } from "./components/Card/Card2.js";
27
27
  import { Checkbox as kr } from "./components/Checkbox/Checkbox2.js";
28
- import { Chip as yr } from "./components/Chip/Chip2.js";
28
+ import { Chip as Rr } from "./components/Chip/Chip2.js";
29
29
  import { CollapsibleSection as Lr } from "./components/CollapsibleSection/CollapsibleSection2.js";
30
- import { InputNumber as _r } from "./components/InputNumber/InputNumber2.js";
30
+ import { InputNumber as br } from "./components/InputNumber/InputNumber2.js";
31
31
  import { InputText as xr } from "./components/InputText/InputText2.js";
32
32
  import { ColorPicker as Fr } from "./components/ColorPicker/ColorPicker2.js";
33
- import { CommandPalette as Ur } from "./components/CommandPalette/CommandPalette2.js";
34
- import { Confetti as Or } from "./components/Confetti/Confetti2.js";
33
+ import { CommandPalette as wr } from "./components/CommandPalette/CommandPalette2.js";
34
+ import { Confetti as Ur } from "./components/Confetti/Confetti2.js";
35
35
  import Wr from "./components/ConfirmDialog/ConfirmDialog2.js";
36
36
  import { usePopover as zr } from "./components/Popover/hooks/Popover.hook.js";
37
37
  import { Popover as qr } from "./components/Popover/Popover2.js";
@@ -39,22 +39,22 @@ import { ConfirmPopover as Jr } from "./components/ConfirmPopover/ConfirmPopover
39
39
  import { ContextMenu as Xr } from "./components/ContextMenu/ContextMenu2.js";
40
40
  import { ToastContainer as Zr, ToastProvider as $r, useToast as ro } from "./components/ContextToast/ContextToast2.js";
41
41
  import { breakpoints as to, useBreakpoint as mo } from "./hooks/useBreakpoint.js";
42
- import { ControlPanelProvider as eo, useControlPanel as po, useControlPanelContext as ao } from "./components/ControlPanel/ControlPanelContext.js";
42
+ import { ControlPanelProvider as eo, useControlPanel as po, useControlPanelContext as fo } from "./components/ControlPanel/ControlPanelContext.js";
43
43
  import { TimePicker as no } from "./components/TimePicker/TimePicker2.js";
44
44
  import { DatePicker as so } from "./components/DatePicker/DatePicker2.js";
45
- import { foldDiacritics as go, fuzzyMatch as co } from "./helpers/Search.js";
45
+ import { foldDiacritics as co, fuzzyMatch as go } from "./helpers/Search.js";
46
46
  import { Dropdown as So } from "./components/Dropdown/Dropdown2.js";
47
47
  import { InputDate as Po } from "./components/InputDate/InputDate2.js";
48
48
  import { InputSearch as Do } from "./components/InputSearch/InputSearch2.js";
49
- import { Rating as Mo } from "./components/Rating/Rating2.js";
49
+ import { Rating as Ao } from "./components/Rating/Rating2.js";
50
50
  import { Slider as Bo } from "./components/Slider/Slider2.js";
51
51
  import { ControlPanel as Eo } from "./components/ControlPanel/ControlPanel2.js";
52
- import { CopyButton as Ro } from "./components/CopyButton/CopyButton2.js";
53
- import { Flag as bo } from "./components/Flag/Flag2.js";
52
+ import { CopyButton as yo } from "./components/CopyButton/CopyButton2.js";
53
+ import { Flag as _o } from "./components/Flag/Flag2.js";
54
54
  import { CountryWithFlag as vo } from "./components/CountryWithFlag/CountryWithFlag2.js";
55
55
  import { getResultsCount as Ho } from "./helpers/Pagination.js";
56
56
  import { EmptyState as No } from "./components/EmptyState/EmptyState2.js";
57
- import { Pagination as wo } from "./components/Pagination/Pagination2.js";
57
+ import { Pagination as Oo } from "./components/Pagination/Pagination2.js";
58
58
  import { TimelineMarkerDot as Vo, TimelineMarkers as Wo, TimelineMobileSeparator as Qo, calculateTimelineMarkers as zo } from "./components/TimelineMarkers/TimelineMarkers2.js";
59
59
  import { MiniSort as qo } from "./components/MiniSort/MiniSort2.js";
60
60
  import { DataView as Jo } from "./components/DataView/DataView2.js";
@@ -64,22 +64,22 @@ import { Drawer as rt } from "./components/Drawer/Drawer2.js";
64
64
  import { DayAgenda as tt } from "./components/DayAgenda/DayAgenda2.js";
65
65
  import { DiffViewer as it } from "./components/DiffViewer/DiffViewer2.js";
66
66
  import { EmojiPicker as pt } from "./components/EmojiPicker/EmojiPicker2.js";
67
- import { ErrorBoundary as ft } from "./components/ErrorBoundary/ErrorBoundary2.js";
67
+ import { ErrorBoundary as at } from "./components/ErrorBoundary/ErrorBoundary2.js";
68
68
  import { ToggleButtons as lt } from "./components/ToggleButtons/ToggleButtons2.js";
69
69
  import { EventCalendar as ut } from "./components/EventCalendar/EventCalendar2.js";
70
- import { FileDropzone as dt } from "./components/FileDropzone/FileDropzone2.js";
70
+ import { FileDropzone as ct } from "./components/FileDropzone/FileDropzone2.js";
71
71
  import { FloatButton as Tt } from "./components/FloatButton/FloatButton2.js";
72
72
  import { FloatingWindow as It } from "./components/FloatingWindow/FloatingWindow2.js";
73
73
  import { Loading as Ct } from "./components/Loading/Loading2.js";
74
- import { FolderBrowserModal as At } from "./components/FolderBrowserModal/FolderBrowserModal2.js";
75
- import { Col as ht } from "./components/Grid/Col.js";
74
+ import { FolderBrowserModal as ht } from "./components/FolderBrowserModal/FolderBrowserModal2.js";
75
+ import { Col as Mt } from "./components/Grid/Col.js";
76
76
  import { Grid as kt } from "./components/Grid/Grid2.js";
77
- import { IconPicker as yt } from "./components/IconPicker/IconPicker2.js";
77
+ import { IconPicker as Rt } from "./components/IconPicker/IconPicker2.js";
78
78
  import { InfiniteScroll as Lt } from "./components/InfiniteScroll/InfiniteScroll2.js";
79
- import { InputEmail as _t, validateEmail as vt } from "./components/InputEmail/InputEmail2.js";
79
+ import { InputEmail as bt, validateEmail as vt } from "./components/InputEmail/InputEmail2.js";
80
80
  import { InputFile as Ht } from "./components/InputFile/InputFile2.js";
81
- import { InputMask as Nt, InputMaskPresets as Ut } from "./components/InputMask/InputMask2.js";
82
- import { InputPassword as Ot } from "./components/InputPassword/InputPassword2.js";
81
+ import { InputMask as Nt, InputMaskPresets as wt } from "./components/InputMask/InputMask2.js";
82
+ import { InputPassword as Ut } from "./components/InputPassword/InputPassword2.js";
83
83
  import { InputPhone as Wt } from "./components/InputPhone/InputPhone2.js";
84
84
  import { InputPIN as zt } from "./components/InputPIN/InputPIN2.js";
85
85
  import { InputTextarea as qt } from "./components/InputTextarea/InputTextarea2.js";
@@ -90,20 +90,20 @@ import { List as rm } from "./components/List/List2.js";
90
90
  import { MenuHamburger as tm } from "./components/MenuHamburger/MenuHamburger2.js";
91
91
  import { Minimap as im } from "./components/Minimap/Minimap2.js";
92
92
  import { MiniStatsCard as pm } from "./components/MiniStatsCard/MiniStatsCard2.js";
93
- import { NavBar as fm } from "./components/NavBar/NavBar2.js";
93
+ import { NavBar as am } from "./components/NavBar/NavBar2.js";
94
94
  import { NotificationPanel as lm } from "./components/NotificationPanel/NotificationPanel2.js";
95
95
  import { PieChart as um } from "./components/PieChart/PieChart2.js";
96
- import { clamp as dm, format2Digits as cm, getPercent as Tm, getPercentsOf2Numbers as Sm } from "./helpers/Numbers.js";
96
+ import { clamp as cm, format2Digits as gm, getPercent as Tm, getPercentsOf2Numbers as Sm } from "./helpers/Numbers.js";
97
97
  import { ProgressBar as Pm } from "./components/ProgressBar/ProgressBar2.js";
98
98
  import { ProgressRing as Dm } from "./components/ProgressRing/ProgressRing2.js";
99
- import { QuantitySelector as Mm } from "./components/QuantitySelector/QuantitySelector2.js";
99
+ import { QuantitySelector as Am } from "./components/QuantitySelector/QuantitySelector2.js";
100
100
  import { QuickAdd as Bm } from "./components/QuickAdd/QuickAdd2.js";
101
101
  import { QuickNumberUpdate as Em } from "./components/QuickNumberUpdate/QuickNumberUpdate2.js";
102
- import { Radio as Rm } from "./components/Radio/Radio2.js";
103
- import { QuickOptionUpdate as bm } from "./components/QuickOptionUpdate/QuickOptionUpdate2.js";
102
+ import { Radio as ym } from "./components/Radio/Radio2.js";
103
+ import { QuickOptionUpdate as _m } from "./components/QuickOptionUpdate/QuickOptionUpdate2.js";
104
104
  import { RangeSlider as vm } from "./components/RangeSlider/RangeSlider2.js";
105
- import { ensureHtml as Hm, htmlToMarkdown as Fm, htmlToPlainText as Nm, splitHtmlIntoSteps as Um } from "./helpers/HtmlContent.js";
106
- import { RichTextEditor as Om } from "./components/RichTextEditor/RichTextEditor2.js";
105
+ import { ensureHtml as Hm, htmlToMarkdown as Fm, htmlToPlainText as Nm, splitHtmlIntoSteps as wm } from "./helpers/HtmlContent.js";
106
+ import { RichTextEditor as Um } from "./components/RichTextEditor/RichTextEditor2.js";
107
107
  import { RollingNumber as Wm } from "./components/RollingNumber/RollingNumber2.js";
108
108
  import { ScrollToTop as zm } from "./components/ScrollToTop/ScrollToTop2.js";
109
109
  import { SidebarProvider as qm, useSidebar as jm } from "./components/Sidebar/SidebarContext.js";
@@ -113,40 +113,40 @@ import { Skeleton as $m } from "./components/Skeleton/Skeleton2.js";
113
113
  import { SplitPanel as oi } from "./components/SplitPanel/SplitPanel2.js";
114
114
  import { Splitter as mi } from "./components/Splitter/Splitter2.js";
115
115
  import { StackedBar as ei } from "./components/StackedBar/StackedBar2.js";
116
- import { Stats as ai } from "./components/Stats/Stats2.js";
116
+ import { Stats as fi } from "./components/Stats/Stats2.js";
117
117
  import { StickyBar as ni } from "./components/StickyBar/StickyBar2.js";
118
118
  import { SuggestionsList as si } from "./components/SuggestionsList/SuggestionsList2.js";
119
- import { THEME_CONFIGS as gi, getThemeConfig as di } from "./components/ThemeSettings/themeConfig.js";
119
+ import { THEME_CONFIGS as di, getThemeConfig as ci } from "./components/ThemeSettings/themeConfig.js";
120
120
  import { ThemeProvider as Ti } from "./components/ThemeSettings/ThemeContext.js";
121
121
  import { ToggleSwitch as Ii } from "./components/ToggleSwitch/ToggleSwitch2.js";
122
122
  import { ThemeSettings as Ci } from "./components/ThemeSettings/ThemeSettings2.js";
123
- import { Timeline as Ai } from "./components/Timeline/Timeline2.js";
124
- import { TipsOfTheDay as hi } from "./components/TipsOfTheDay/TipsOfTheDay2.js";
123
+ import { Timeline as hi } from "./components/Timeline/Timeline2.js";
124
+ import { TipsOfTheDay as Mi } from "./components/TipsOfTheDay/TipsOfTheDay2.js";
125
125
  import { Toast as ki } from "./components/Toast/Toast2.js";
126
- import { Toolbar as yi } from "./components/Toolbar/Toolbar2.js";
126
+ import { Toolbar as Ri } from "./components/Toolbar/Toolbar2.js";
127
127
  import { TourHud as Li } from "./components/TourHud/TourHud2.js";
128
- import { Transition as _i } from "./components/Transition/Transition2.js";
128
+ import { Transition as bi } from "./components/Transition/Transition2.js";
129
129
  import { Tree as xi } from "./components/Tree/Tree2.js";
130
130
  import { VirtualList as Fi } from "./components/VirtualList/VirtualList2.js";
131
- import { WHtR as Ui } from "./components/WHtR/WHtR2.js";
132
- import { ApiError as Oi, CSRF_HEADER as Vi, HttpMethod as Wi, HttpStatus as Qi, buildRequestHeaders as zi, createApiClient as Gi, getCsrfToken as qi, isClientErrorStatus as ji, isServerErrorStatus as Ji, isSuccessStatus as Ki, readErrorMessage as Xi } from "./helpers/Http.js";
131
+ import { WHtR as wi } from "./components/WHtR/WHtR2.js";
132
+ import { ApiError as Ui, CSRF_HEADER as Vi, HttpMethod as Wi, HttpStatus as Qi, buildRequestHeaders as zi, createApiClient as Gi, getCsrfToken as qi, isClientErrorStatus as ji, isServerErrorStatus as Ji, isSuccessStatus as Ki, readErrorMessage as Xi } from "./helpers/Http.js";
133
133
  import { AuthContext as Zi, AuthProvider as $i } from "./contexts/AuthContext/AuthContext.js";
134
134
  import { useAuth as oe } from "./hooks/useAuth/useAuth.js";
135
135
  import { ChangePasswordModal as me } from "./components/Auth/ChangePasswordModal/ChangePasswordModal2.js";
136
136
  import { Login as ee } from "./components/Auth/Login/Login2.js";
137
- import { useAccountMenu as ae } from "./hooks/useAccountMenu.js";
137
+ import { useAccountMenu as fe } from "./hooks/useAccountMenu.js";
138
138
  import { AppPersistenceStorage as ne } from "./helpers/AppPersistenceStorage.js";
139
139
  import { useAppPersistence as se } from "./hooks/useAppPersistence.js";
140
- import { chartColors as ge, chartTooltipStyle as de } from "./helpers/Charts.js";
140
+ import { chartColors as de, chartTooltipStyle as ce } from "./helpers/Charts.js";
141
141
  import { formatBigNumber as Te, formatBytes as Se, formatMoney as Ie } from "./helpers/Format.js";
142
142
  import { highlightText as Ce } from "./helpers/Highlight.js";
143
- import { IMAGES_BASE_PATH as Ae, applyImageFallback as Me, getCategoryImageUrl as he, getDefaultImageUrl as Be, getImageUrl as ke, getNextImageFallback as Ee } from "./helpers/Images.js";
144
- import { matchStringsByLogicalOperator as Re } from "./helpers/LogicalOperators.js";
145
- import { shortenText as be, slugify as _e, truncateText as ve } from "./helpers/Strings.js";
146
- import { extractDomainFromUrl as He, stripQueryString as Fe, stripTrackingParams as Ne } from "./helpers/Urls.js";
147
- import { LIB_BUILD_DATE as we, LIB_BUILD_ID as Oe, LIB_BUILD_NUMBER as Ve, LIB_COMMIT as We, LIB_VERSION as Qe } from "./version.js";
148
- import { initVersionInfo as Ge } from "./helpers/VersionInfo.js";
149
- import { validateVin as je } from "./validators/Vin.js";
143
+ import { DATA_FILES_PATH as he, createImagePaths as Ae } from "./helpers/Images.js";
144
+ import { matchStringsByLogicalOperator as Be } from "./helpers/LogicalOperators.js";
145
+ import { shortenText as Ee, slugify as Re, truncateText as ye } from "./helpers/Strings.js";
146
+ import { extractDomainFromUrl as _e, stripQueryString as be, stripTrackingParams as ve } from "./helpers/Urls.js";
147
+ import { LIB_BUILD_DATE as He, LIB_BUILD_ID as Fe, LIB_BUILD_NUMBER as Ne, LIB_COMMIT as we, LIB_VERSION as Oe } from "./version.js";
148
+ import { initVersionInfo as Ve } from "./helpers/VersionInfo.js";
149
+ import { validateVin as Qe } from "./validators/Vin.js";
150
150
  export {
151
151
  N as ADULT_RANGES,
152
152
  Y as APP_DATE_FORMAT,
@@ -154,40 +154,41 @@ export {
154
154
  m as Accordion,
155
155
  P as AlertDialog,
156
156
  D as AnalogClock,
157
- M as AngleSlider,
158
- Oi as ApiError,
157
+ A as AngleSlider,
158
+ Ui as ApiError,
159
159
  E as AppHeader,
160
160
  ne as AppPersistenceStorage,
161
161
  Zi as AuthContext,
162
162
  ee as AuthLogin,
163
163
  $i as AuthProvider,
164
- R as AvatarInitials,
164
+ y as AvatarInitials,
165
165
  G as BMI,
166
- b as Badge,
166
+ _ as Badge,
167
167
  v as Banner,
168
168
  H as Blockquote,
169
169
  j as Breadcrumb,
170
170
  K as BulkActionBar,
171
- g as Button,
171
+ d as Button,
172
172
  Vi as CSRF_HEADER,
173
173
  Cr as Calendar,
174
- Ar as CalendarHeatmap,
175
- hr as Card,
174
+ hr as CalendarHeatmap,
175
+ Mr as Card,
176
176
  me as ChangePasswordModal,
177
177
  kr as Checkbox,
178
- yr as Chip,
179
- ht as Col,
178
+ Rr as Chip,
179
+ Mt as Col,
180
180
  Lr as CollapsibleSection,
181
181
  Fr as ColorPicker,
182
- Ur as CommandPalette,
183
- Or as Confetti,
182
+ wr as CommandPalette,
183
+ Ur as Confetti,
184
184
  Wr as ConfirmDialog,
185
185
  Jr as ConfirmPopover,
186
186
  Xr as ContextMenu,
187
187
  Eo as ControlPanel,
188
188
  eo as ControlPanelProvider,
189
- Ro as CopyButton,
189
+ yo as CopyButton,
190
190
  vo as CountryWithFlag,
191
+ he as DATA_FILES_PATH,
191
192
  Jo as DataView,
192
193
  so as DatePicker,
193
194
  Xo as DateRangePicker,
@@ -197,28 +198,27 @@ export {
197
198
  So as Dropdown,
198
199
  pt as EmojiPicker,
199
200
  No as EmptyState,
200
- ft as ErrorBoundary,
201
+ at as ErrorBoundary,
201
202
  ut as EventCalendar,
202
- dt as FileDropzone,
203
- bo as Flag,
203
+ ct as FileDropzone,
204
+ _o as Flag,
204
205
  Tt as FloatButton,
205
206
  It as FloatingWindow,
206
- At as FolderBrowserModal,
207
+ ht as FolderBrowserModal,
207
208
  kt as Grid,
208
209
  Wi as HttpMethod,
209
210
  Qi as HttpStatus,
210
- Ae as IMAGES_BASE_PATH,
211
211
  o as Icon,
212
- yt as IconPicker,
212
+ Rt as IconPicker,
213
213
  Lt as InfiniteScroll,
214
214
  Po as InputDate,
215
- _t as InputEmail,
215
+ bt as InputEmail,
216
216
  Ht as InputFile,
217
217
  Nt as InputMask,
218
- Ut as InputMaskPresets,
219
- _r as InputNumber,
218
+ wt as InputMaskPresets,
219
+ br as InputNumber,
220
220
  zt as InputPIN,
221
- Ot as InputPassword,
221
+ Ut as InputPassword,
222
222
  Wt as InputPhone,
223
223
  Do as InputSearch,
224
224
  xr as InputText,
@@ -226,11 +226,11 @@ export {
226
226
  Jt as InputTime,
227
227
  Xt as InputUrl,
228
228
  Zt as JourneyWizard,
229
- we as LIB_BUILD_DATE,
230
- Oe as LIB_BUILD_ID,
231
- Ve as LIB_BUILD_NUMBER,
232
- We as LIB_COMMIT,
233
- Qe as LIB_VERSION,
229
+ He as LIB_BUILD_DATE,
230
+ Fe as LIB_BUILD_ID,
231
+ Ne as LIB_BUILD_NUMBER,
232
+ we as LIB_COMMIT,
233
+ Oe as LIB_VERSION,
234
234
  rm as List,
235
235
  Ct as Loading,
236
236
  tm as MenuHamburger,
@@ -238,22 +238,22 @@ export {
238
238
  pm as MiniStatsCard,
239
239
  im as Minimap,
240
240
  S as Modal,
241
- fm as NavBar,
241
+ am as NavBar,
242
242
  lm as NotificationPanel,
243
- U as PEDIATRIC_THRESHOLDS,
244
- wo as Pagination,
243
+ w as PEDIATRIC_THRESHOLDS,
244
+ Oo as Pagination,
245
245
  um as PieChart,
246
246
  qr as Popover,
247
247
  Pm as ProgressBar,
248
248
  Dm as ProgressRing,
249
- Mm as QuantitySelector,
249
+ Am as QuantitySelector,
250
250
  Bm as QuickAdd,
251
251
  Em as QuickNumberUpdate,
252
- bm as QuickOptionUpdate,
253
- Rm as Radio,
252
+ _m as QuickOptionUpdate,
253
+ ym as Radio,
254
254
  vm as RangeSlider,
255
- Mo as Rating,
256
- Om as RichTextEditor,
255
+ Ao as Rating,
256
+ Um as RichTextEditor,
257
257
  Wm as RollingNumber,
258
258
  zm as ScrollToTop,
259
259
  B as Separator,
@@ -265,46 +265,46 @@ export {
265
265
  oi as SplitPanel,
266
266
  mi as Splitter,
267
267
  ei as StackedBar,
268
- ai as Stats,
268
+ fi as Stats,
269
269
  ni as StickyBar,
270
270
  si as SuggestionsList,
271
- gi as THEME_CONFIGS,
272
- a as ThemeContext,
271
+ di as THEME_CONFIGS,
272
+ f as ThemeContext,
273
273
  Ti as ThemeProvider,
274
274
  Ci as ThemeSettings,
275
275
  no as TimePicker,
276
- Ai as Timeline,
276
+ hi as Timeline,
277
277
  Vo as TimelineMarkerDot,
278
278
  Wo as TimelineMarkers,
279
279
  Qo as TimelineMobileSeparator,
280
- hi as TipsOfTheDay,
280
+ Mi as TipsOfTheDay,
281
281
  ki as Toast,
282
282
  Zr as ToastContainer,
283
283
  $r as ToastProvider,
284
284
  lt as ToggleButtons,
285
285
  Ii as ToggleSwitch,
286
- yi as Toolbar,
287
- c as Tooltip,
286
+ Ri as Toolbar,
287
+ g as Tooltip,
288
288
  Li as TourHud,
289
- _i as Transition,
289
+ bi as Transition,
290
290
  xi as Tree,
291
291
  Fi as VirtualList,
292
- Ui as WHtR,
292
+ wi as WHtR,
293
293
  $ as addDays,
294
294
  rr as addMonths,
295
- Me as applyImageFallback,
296
295
  to as breakpoints,
297
296
  zi as buildRequestHeaders,
298
- w as calculateBMI,
297
+ O as calculateBMI,
299
298
  zo as calculateTimelineMarkers,
300
- ge as chartColors,
301
- de as chartTooltipStyle,
302
- dm as clamp,
299
+ de as chartColors,
300
+ ce as chartTooltipStyle,
301
+ cm as clamp,
303
302
  Gi as createApiClient,
303
+ Ae as createImagePaths,
304
304
  Hm as ensureHtml,
305
- He as extractDomainFromUrl,
306
- go as foldDiacritics,
307
- cm as format2Digits,
305
+ _e as extractDomainFromUrl,
306
+ co as foldDiacritics,
307
+ gm as format2Digits,
308
308
  or as formatAppDate,
309
309
  tr as formatAppDateTime,
310
310
  Te as formatBigNumber,
@@ -314,60 +314,56 @@ export {
314
314
  er as formatDuration,
315
315
  Ie as formatMoney,
316
316
  pr as formatRelativeDuration,
317
- ar as formatRelativeTime,
318
- fr as formatSecondsToMediaTime,
319
- co as fuzzyMatch,
320
- he as getCategoryImageUrl,
317
+ fr as formatRelativeTime,
318
+ ar as formatSecondsToMediaTime,
319
+ go as fuzzyMatch,
321
320
  qi as getCsrfToken,
322
321
  nr as getDaysInMonth,
323
- Be as getDefaultImageUrl,
324
- ke as getImageUrl,
325
- O as getIndicatorColor,
322
+ U as getIndicatorColor,
326
323
  V as getIndicatorPosition,
327
324
  lr as getIsoWeek,
328
325
  sr as getMonthMatrix,
329
- Ee as getNextImageFallback,
330
326
  W as getPediatricRanges,
331
327
  Tm as getPercent,
332
328
  Sm as getPercentsOf2Numbers,
333
329
  Q as getRangeLabel,
334
330
  Ho as getResultsCount,
335
- di as getThemeConfig,
331
+ ci as getThemeConfig,
336
332
  ur as getTodayDateString,
337
333
  Ce as highlightText,
338
334
  Fm as htmlToMarkdown,
339
335
  Nm as htmlToPlainText,
340
- Ge as initVersionInfo,
341
- gr as isAfter,
342
- dr as isBefore,
336
+ Ve as initVersionInfo,
337
+ dr as isAfter,
338
+ cr as isBefore,
343
339
  ji as isClientErrorStatus,
344
- cr as isDateInRange,
340
+ gr as isDateInRange,
345
341
  Tr as isSameDay,
346
342
  Ji as isServerErrorStatus,
347
343
  Ki as isSuccessStatus,
348
344
  Sr as isToday,
349
345
  Ir as isWeekend,
350
- Re as matchStringsByLogicalOperator,
346
+ Be as matchStringsByLogicalOperator,
351
347
  Xi as readErrorMessage,
352
- be as shortenText,
353
- _e as slugify,
354
- Um as splitHtmlIntoSteps,
355
- Fe as stripQueryString,
356
- Ne as stripTrackingParams,
357
- ve as truncateText,
358
- ae as useAccountMenu,
348
+ Ee as shortenText,
349
+ Re as slugify,
350
+ wm as splitHtmlIntoSteps,
351
+ be as stripQueryString,
352
+ ve as stripTrackingParams,
353
+ ye as truncateText,
354
+ fe as useAccountMenu,
359
355
  se as useAppPersistence,
360
356
  oe as useAuth,
361
357
  e as useBodyScrollLock,
362
358
  mo as useBreakpoint,
363
359
  s as useComponentEffect,
364
360
  po as useControlPanel,
365
- ao as useControlPanelContext,
361
+ fo as useControlPanelContext,
366
362
  zr as usePopover,
367
363
  jm as useSidebar,
368
364
  Zo as useSwipe,
369
365
  n as useTheme,
370
366
  ro as useToast,
371
367
  vt as validateEmail,
372
- je as validateVin
368
+ Qe as validateVin
373
369
  };
package/dist/version.js CHANGED
@@ -1,7 +1,7 @@
1
- var I = "3.6.0", B = 484, L = "40a4ef2", _ = "2026-10-10T06:47:22.564Z", a = "484";
1
+ var I = "3.7.0", B = 486, L = "8f360c0", _ = "2026-10-11T18:20:47.879Z", r = "486";
2
2
  export {
3
3
  _ as LIB_BUILD_DATE,
4
- a as LIB_BUILD_ID,
4
+ r as LIB_BUILD_ID,
5
5
  B as LIB_BUILD_NUMBER,
6
6
  L as LIB_COMMIT,
7
7
  I as LIB_VERSION
package/dist/version.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "3.6.0",
3
- "buildNumber": 484,
4
- "commit": "40a4ef2",
5
- "buildDate": "2026-10-10T06:47:22.564Z"
2
+ "version": "3.7.0",
3
+ "buildNumber": 486,
4
+ "commit": "8f360c0",
5
+ "buildDate": "2026-10-11T18:20:47.879Z"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memobit/libs",
3
- "version": "3.6.0",
3
+ "version": "3.7.0",
4
4
  "description": "React component library powering the Memobit apps — 100+ components, helpers and hooks. Icons ship as @memobit/icons and themes as @memobit/themes. TypeScript-first, ESM-only, React 19.",
5
5
  "keywords": [
6
6
  "react",