@memobit/libs 3.0.0 → 3.1.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.
Files changed (300) hide show
  1. package/dist/components/Accordion/Accordion.css +1 -0
  2. package/dist/components/Accordion/Accordion2.js +79 -0
  3. package/dist/components/AlertDialog/AlertDialog.css +1 -0
  4. package/dist/components/AlertDialog/AlertDialog2.js +26 -0
  5. package/dist/components/AnalogClock/AnalogClock.css +1 -0
  6. package/dist/components/AnalogClock/AnalogClock2.js +293 -0
  7. package/dist/components/AngleSlider/AngleSlider.css +1 -0
  8. package/dist/components/AngleSlider/AngleSlider2.js +135 -0
  9. package/dist/components/AppHeader/AppHeader.css +1 -0
  10. package/dist/components/AppHeader/AppHeader2.js +44 -0
  11. package/dist/components/Auth/ChangePasswordModal/ChangePasswordModal.css +1 -0
  12. package/dist/components/Auth/ChangePasswordModal/ChangePasswordModal2.js +138 -0
  13. package/dist/components/Auth/Login/Login.css +1 -0
  14. package/dist/components/Auth/Login/Login2.js +155 -0
  15. package/dist/components/Auth/MfaSetupModal/MfaSetupModal.css +1 -0
  16. package/dist/components/Auth/MfaSetupModal/MfaSetupModal2.js +327 -0
  17. package/dist/components/AvatarInitials/AvatarInitials.css +1 -0
  18. package/dist/components/AvatarInitials/AvatarInitials2.js +73 -0
  19. package/dist/components/BMI/BMI.css +1 -0
  20. package/dist/components/BMI/BMI2.js +53 -0
  21. package/dist/components/BMI/bmiUtils.js +265 -0
  22. package/dist/components/Badge/Badge.css +1 -0
  23. package/dist/components/Badge/Badge2.js +30 -0
  24. package/dist/components/Banner/Banner.css +1 -0
  25. package/dist/components/Banner/Banner2.js +57 -0
  26. package/dist/components/Blockquote/Blockquote.css +1 -0
  27. package/dist/components/Blockquote/Blockquote2.js +55 -0
  28. package/dist/components/Breadcrumb/Breadcrumb.css +1 -0
  29. package/dist/components/Breadcrumb/Breadcrumb2.js +36 -0
  30. package/dist/components/BulkActionBar/BulkActionBar.css +1 -0
  31. package/dist/components/BulkActionBar/BulkActionBar2.js +39 -0
  32. package/dist/components/Button/Button.css +1 -0
  33. package/dist/components/Button/Button2.js +32 -0
  34. package/dist/components/Calendar/Calendar.css +1 -0
  35. package/dist/components/Calendar/Calendar2.js +279 -0
  36. package/dist/components/CalendarHeatmap/CalendarHeatmap.css +1 -0
  37. package/dist/components/CalendarHeatmap/CalendarHeatmap2.js +91 -0
  38. package/dist/components/Card/Card.css +1 -0
  39. package/dist/components/Card/Card2.js +47 -0
  40. package/dist/components/Checkbox/Checkbox.css +1 -0
  41. package/dist/components/Checkbox/Checkbox2.js +35 -0
  42. package/dist/components/Chip/Chip.css +1 -0
  43. package/dist/components/Chip/Chip2.js +31 -0
  44. package/dist/components/CollapsibleSection/CollapsibleSection.css +1 -0
  45. package/dist/components/CollapsibleSection/CollapsibleSection2.js +68 -0
  46. package/dist/components/ColorPicker/ColorPicker.css +1 -0
  47. package/dist/components/ColorPicker/ColorPicker2.js +257 -0
  48. package/dist/components/CommandPalette/CommandPalette.css +1 -0
  49. package/dist/components/CommandPalette/CommandPalette2.js +97 -0
  50. package/dist/components/Confetti/Confetti.css +1 -0
  51. package/dist/components/Confetti/Confetti2.js +175 -0
  52. package/dist/components/ConfirmDialog/ConfirmDialog.css +1 -0
  53. package/dist/components/ConfirmDialog/ConfirmDialog2.js +37 -0
  54. package/dist/components/ConfirmPopover/ConfirmPopover.css +1 -0
  55. package/dist/components/ConfirmPopover/ConfirmPopover2.js +55 -0
  56. package/dist/components/ContextMenu/ContextMenu.css +1 -0
  57. package/dist/components/ContextMenu/ContextMenu2.js +53 -0
  58. package/dist/components/ContextToast/ContextToast.css +1 -0
  59. package/dist/components/ContextToast/ContextToast2.js +96 -0
  60. package/dist/components/ControlPanel/ControlPanel.css +1 -0
  61. package/dist/components/ControlPanel/ControlPanel.types.js +21 -0
  62. package/dist/components/ControlPanel/ControlPanel2.js +137 -0
  63. package/dist/components/ControlPanel/ControlPanelContext.js +31 -0
  64. package/dist/components/ControlPanel/ControlPanelFilter.js +386 -0
  65. package/dist/components/ControlPanel/ControlPanelNav.js +74 -0
  66. package/dist/components/ControlPanel/ControlPanelOptions.js +197 -0
  67. package/dist/components/CopyButton/CopyButton.css +1 -0
  68. package/dist/components/CopyButton/CopyButton2.js +48 -0
  69. package/dist/components/CountryWithFlag/CountryWithFlag.css +1 -0
  70. package/dist/components/CountryWithFlag/CountryWithFlag2.js +21 -0
  71. package/dist/components/DataView/DataView.CardView.js +189 -0
  72. package/dist/components/DataView/DataView.ColumnSelector.js +51 -0
  73. package/dist/components/DataView/DataView.MiniSort.js +25 -0
  74. package/dist/components/DataView/DataView.css +1 -0
  75. package/dist/components/DataView/DataView2.js +433 -0
  76. package/dist/components/DatePicker/DatePicker.css +1 -0
  77. package/dist/components/DatePicker/DatePicker2.js +151 -0
  78. package/dist/components/DateRangePicker/DateRangePicker.css +1 -0
  79. package/dist/components/DateRangePicker/DateRangePicker2.js +223 -0
  80. package/dist/components/DayAgenda/DayAgenda.css +1 -0
  81. package/dist/components/DayAgenda/DayAgenda2.js +120 -0
  82. package/dist/components/DiffViewer/DiffViewer.css +1 -0
  83. package/dist/components/DiffViewer/DiffViewer2.js +270 -0
  84. package/dist/components/Drawer/Drawer.css +1 -0
  85. package/dist/components/Drawer/Drawer2.js +119 -0
  86. package/dist/components/Dropdown/Dropdown.css +1 -0
  87. package/dist/components/Dropdown/Dropdown2.js +413 -0
  88. package/dist/components/EmojiPicker/EmojiPicker.css +1 -0
  89. package/dist/components/EmojiPicker/EmojiPicker2.js +789 -0
  90. package/dist/components/EmojiPicker/emojiKeywords/activities.js +508 -0
  91. package/dist/components/EmojiPicker/emojiKeywords/animals.js +501 -0
  92. package/dist/components/EmojiPicker/emojiKeywords/food.js +540 -0
  93. package/dist/components/EmojiPicker/emojiKeywords/index.js +21 -0
  94. package/dist/components/EmojiPicker/emojiKeywords/objects.js +652 -0
  95. package/dist/components/EmojiPicker/emojiKeywords/people.js +488 -0
  96. package/dist/components/EmojiPicker/emojiKeywords/smileys.js +538 -0
  97. package/dist/components/EmojiPicker/emojiKeywords/symbols.js +597 -0
  98. package/dist/components/EmojiPicker/emojiKeywords/travel.js +507 -0
  99. package/dist/components/EmptyState/EmptyState.css +1 -0
  100. package/dist/components/EmptyState/EmptyState2.js +47 -0
  101. package/dist/components/ErrorBoundary/ErrorBoundary.css +1 -0
  102. package/dist/components/ErrorBoundary/ErrorBoundary2.js +37 -0
  103. package/dist/components/EventCalendar/EventCalendar.Chip.js +45 -0
  104. package/dist/components/EventCalendar/EventCalendar.Month.js +118 -0
  105. package/dist/components/EventCalendar/EventCalendar.Week.js +131 -0
  106. package/dist/components/EventCalendar/EventCalendar.css +1 -0
  107. package/dist/components/EventCalendar/EventCalendar.helpers.js +72 -0
  108. package/dist/components/EventCalendar/EventCalendar2.js +157 -0
  109. package/dist/components/FileDropzone/FileDropzone.css +1 -0
  110. package/dist/components/FileDropzone/FileDropzone2.js +71 -0
  111. package/dist/components/Flag/Flag.css +1 -0
  112. package/dist/components/Flag/Flag2.js +36 -0
  113. package/dist/components/FloatButton/FloatButton.css +1 -0
  114. package/dist/components/FloatButton/FloatButton2.js +68 -0
  115. package/dist/components/FloatingWindow/FloatingWindow.css +1 -0
  116. package/dist/components/FloatingWindow/FloatingWindow2.js +203 -0
  117. package/dist/components/FolderBrowserModal/FolderBrowserModal.css +1 -0
  118. package/dist/components/FolderBrowserModal/FolderBrowserModal2.js +144 -0
  119. package/dist/components/Grid/Col.js +17 -0
  120. package/dist/components/Grid/Grid.css +1 -0
  121. package/dist/components/Grid/Grid2.js +28 -0
  122. package/dist/components/Icon/Icon.css +1 -0
  123. package/dist/components/Icon/Icon2.js +23 -0
  124. package/dist/components/IconPicker/IconPicker.css +1 -0
  125. package/dist/components/IconPicker/IconPicker2.js +51 -0
  126. package/dist/components/InfiniteScroll/InfiniteScroll.css +1 -0
  127. package/dist/components/InfiniteScroll/InfiniteScroll2.js +66 -0
  128. package/dist/components/InputDate/InputDate.css +1 -0
  129. package/dist/components/InputDate/InputDate2.js +87 -0
  130. package/dist/components/InputEmail/InputEmail.css +1 -0
  131. package/dist/components/InputEmail/InputEmail2.js +73 -0
  132. package/dist/components/InputFile/InputFile.css +1 -0
  133. package/dist/components/InputFile/InputFile2.js +41 -0
  134. package/dist/components/InputMask/InputMask.css +1 -0
  135. package/dist/components/InputMask/InputMask2.js +163 -0
  136. package/dist/components/InputNumber/InputNumber.css +1 -0
  137. package/dist/components/InputNumber/InputNumber2.js +60 -0
  138. package/dist/components/InputPIN/InputPIN.css +1 -0
  139. package/dist/components/InputPIN/InputPIN2.js +121 -0
  140. package/dist/components/InputPassword/InputPassword.css +1 -0
  141. package/dist/components/InputPassword/InputPassword2.js +47 -0
  142. package/dist/components/InputPhone/InputPhone.css +1 -0
  143. package/dist/components/InputPhone/InputPhone2.js +82 -0
  144. package/dist/components/InputSearch/InputSearch.css +1 -0
  145. package/dist/components/InputSearch/InputSearch2.js +53 -0
  146. package/dist/components/InputText/InputText.css +1 -0
  147. package/dist/components/InputText/InputText2.js +47 -0
  148. package/dist/components/InputTextarea/InputTextarea.css +1 -0
  149. package/dist/components/InputTextarea/InputTextarea2.js +46 -0
  150. package/dist/components/InputTime/InputTime.css +1 -0
  151. package/dist/components/InputTime/InputTime2.js +85 -0
  152. package/dist/components/InputUrl/InputUrl.css +1 -0
  153. package/dist/components/InputUrl/InputUrl2.js +65 -0
  154. package/dist/components/JourneyWizard/JourneyWizard.css +1 -0
  155. package/dist/components/JourneyWizard/JourneyWizard2.js +147 -0
  156. package/dist/components/List/List.css +1 -0
  157. package/dist/components/List/List2.js +28 -0
  158. package/dist/components/Loading/Loading.css +1 -0
  159. package/dist/components/Loading/Loading2.js +11 -0
  160. package/dist/components/MenuHamburger/MenuHamburger.css +1 -0
  161. package/dist/components/MenuHamburger/MenuHamburger2.js +65 -0
  162. package/dist/components/MiniSort/MiniSort.css +1 -0
  163. package/dist/components/MiniSort/MiniSort2.js +52 -0
  164. package/dist/components/MiniStatsCard/MiniStatsCard.css +1 -0
  165. package/dist/components/MiniStatsCard/MiniStatsCard2.js +67 -0
  166. package/dist/components/Minimap/Minimap.css +1 -0
  167. package/dist/components/Minimap/Minimap2.js +62 -0
  168. package/dist/components/Modal/Modal.css +1 -0
  169. package/dist/components/Modal/Modal2.js +87 -0
  170. package/dist/components/NavBar/NavBar.css +1 -0
  171. package/dist/components/NavBar/NavBar2.js +64 -0
  172. package/dist/components/NotificationPanel/NotificationPanel.css +1 -0
  173. package/dist/components/NotificationPanel/NotificationPanel2.js +66 -0
  174. package/dist/components/Pagination/Pagination.css +1 -0
  175. package/dist/components/Pagination/Pagination2.js +92 -0
  176. package/dist/components/PieChart/PieChart.css +1 -0
  177. package/dist/components/PieChart/PieChart2.js +142 -0
  178. package/dist/components/Popover/Popover.css +1 -0
  179. package/dist/components/Popover/Popover2.js +109 -0
  180. package/dist/components/Popover/hooks/Popover.hook.js +33 -0
  181. package/dist/components/ProgressBar/ProgressBar.css +1 -0
  182. package/dist/components/ProgressBar/ProgressBar2.js +48 -0
  183. package/dist/components/ProgressRing/ProgressRing.css +1 -0
  184. package/dist/components/ProgressRing/ProgressRing2.js +54 -0
  185. package/dist/components/QuantitySelector/QuantitySelector.css +1 -0
  186. package/dist/components/QuantitySelector/QuantitySelector2.js +94 -0
  187. package/dist/components/QuickAdd/QuickAdd.css +1 -0
  188. package/dist/components/QuickAdd/QuickAdd2.js +56 -0
  189. package/dist/components/QuickNumberUpdate/QuickNumberUpdate.css +1 -0
  190. package/dist/components/QuickNumberUpdate/QuickNumberUpdate2.js +52 -0
  191. package/dist/components/QuickOptionUpdate/QuickOptionUpdate.css +1 -0
  192. package/dist/components/QuickOptionUpdate/QuickOptionUpdate2.js +67 -0
  193. package/dist/components/Radio/Radio.css +1 -0
  194. package/dist/components/Radio/Radio2.js +36 -0
  195. package/dist/components/RangeSlider/RangeSlider.css +1 -0
  196. package/dist/components/RangeSlider/RangeSlider2.js +157 -0
  197. package/dist/components/Rating/Rating.css +1 -0
  198. package/dist/components/Rating/Rating2.js +148 -0
  199. package/dist/components/Rating/RatingIcon.js +102 -0
  200. package/dist/components/RichTextEditor/RichTextEditor.css +1 -0
  201. package/dist/components/RichTextEditor/RichTextEditor2.js +212 -0
  202. package/dist/components/RichTextEditor/RteLinkPrompt.js +42 -0
  203. package/dist/components/RichTextEditor/RteTableToolbar.js +95 -0
  204. package/dist/components/RichTextEditor/RteToolbar.js +106 -0
  205. package/dist/components/RichTextEditor/helpers.js +73 -0
  206. package/dist/components/RichTextEditor/hooks/useEditorHistory.js +39 -0
  207. package/dist/components/RichTextEditor/hooks/useLinkPrompt.js +61 -0
  208. package/dist/components/RichTextEditor/hooks/useTableOps.js +134 -0
  209. package/dist/components/RollingNumber/RollingNumber.css +1 -0
  210. package/dist/components/RollingNumber/RollingNumber2.js +71 -0
  211. package/dist/components/ScrollToTop/ScrollToTop.css +1 -0
  212. package/dist/components/ScrollToTop/ScrollToTop2.js +40 -0
  213. package/dist/components/Separator/Separator.css +1 -0
  214. package/dist/components/Separator/Separator2.js +39 -0
  215. package/dist/components/Sidebar/Sidebar.css +1 -0
  216. package/dist/components/Sidebar/Sidebar2.js +115 -0
  217. package/dist/components/Sidebar/SidebarContext.js +31 -0
  218. package/dist/components/SignalStrength/SignalStrength.css +1 -0
  219. package/dist/components/SignalStrength/SignalStrength2.js +56 -0
  220. package/dist/components/Skeleton/Skeleton.css +1 -0
  221. package/dist/components/Skeleton/Skeleton2.js +50 -0
  222. package/dist/components/Slider/Slider.css +1 -0
  223. package/dist/components/Slider/Slider2.js +39 -0
  224. package/dist/components/SplitPanel/SplitPanel.css +1 -0
  225. package/dist/components/SplitPanel/SplitPanel2.js +69 -0
  226. package/dist/components/Splitter/Splitter.css +1 -0
  227. package/dist/components/Splitter/Splitter2.js +89 -0
  228. package/dist/components/StackedBar/StackedBar.css +1 -0
  229. package/dist/components/StackedBar/StackedBar2.js +50 -0
  230. package/dist/components/Stats/Stats.css +1 -0
  231. package/dist/components/Stats/Stats2.js +26 -0
  232. package/dist/components/StickyBar/StickyBar.css +1 -0
  233. package/dist/components/StickyBar/StickyBar2.js +29 -0
  234. package/dist/components/SuggestionsList/SuggestionsList.css +1 -0
  235. package/dist/components/SuggestionsList/SuggestionsList2.js +121 -0
  236. package/dist/components/ThemeSettings/ThemeContext.js +138 -0
  237. package/dist/components/ThemeSettings/ThemeContextValue.js +5 -0
  238. package/dist/components/ThemeSettings/ThemeSettings.css +1 -0
  239. package/dist/components/ThemeSettings/ThemeSettings2.js +245 -0
  240. package/dist/components/ThemeSettings/themeConfig.js +7 -0
  241. package/dist/components/ThemeSettings/useTheme.js +10 -0
  242. package/dist/components/TimePicker/TimePicker.css +1 -0
  243. package/dist/components/TimePicker/TimePicker2.js +118 -0
  244. package/dist/components/TimePicker/TimeSpinner.js +59 -0
  245. package/dist/components/Timeline/Timeline.css +1 -0
  246. package/dist/components/Timeline/Timeline2.js +57 -0
  247. package/dist/components/TimelineMarkers/TimelineMarkers.css +1 -0
  248. package/dist/components/TimelineMarkers/TimelineMarkers2.js +73 -0
  249. package/dist/components/TipsOfTheDay/TipsOfTheDay.css +1 -0
  250. package/dist/components/TipsOfTheDay/TipsOfTheDay2.js +24 -0
  251. package/dist/components/Toast/Toast.css +1 -0
  252. package/dist/components/Toast/Toast2.js +39 -0
  253. package/dist/components/ToggleButtons/ToggleButtons.css +1 -0
  254. package/dist/components/ToggleButtons/ToggleButtons2.js +47 -0
  255. package/dist/components/ToggleSwitch/ToggleSwitch.css +1 -0
  256. package/dist/components/ToggleSwitch/ToggleSwitch2.js +27 -0
  257. package/dist/components/Toolbar/Toolbar.css +1 -0
  258. package/dist/components/Toolbar/Toolbar2.js +129 -0
  259. package/dist/components/Tooltip/Tooltip.css +1 -0
  260. package/dist/components/Tooltip/Tooltip2.js +93 -0
  261. package/dist/components/TourHud/TourHud.css +1 -0
  262. package/dist/components/TourHud/TourHud2.js +70 -0
  263. package/dist/components/Transition/Transition.css +1 -0
  264. package/dist/components/Transition/Transition2.js +68 -0
  265. package/dist/components/Tree/Tree.css +1 -0
  266. package/dist/components/Tree/Tree2.js +95 -0
  267. package/dist/components/VirtualList/VirtualList.css +1 -0
  268. package/dist/components/VirtualList/VirtualList2.js +64 -0
  269. package/dist/components/WHtR/WHtR.css +1 -0
  270. package/dist/components/WHtR/WHtR2.js +115 -0
  271. package/dist/contexts/AuthContext/AuthContext.js +113 -0
  272. package/dist/helpers/AppPersistenceStorage.js +50 -0
  273. package/dist/helpers/Datetime.js +114 -0
  274. package/dist/helpers/Format.js +21 -0
  275. package/dist/helpers/Highlight.js +36 -0
  276. package/dist/helpers/HtmlContent.js +118 -0
  277. package/dist/helpers/LogicalOperators.js +15 -0
  278. package/dist/helpers/Numbers.js +15 -0
  279. package/dist/helpers/Pagination.js +7 -0
  280. package/dist/helpers/Search.js +15 -0
  281. package/dist/helpers/Strings.js +10 -0
  282. package/dist/helpers/Urls.js +68 -0
  283. package/dist/helpers/VersionInfo.js +36 -0
  284. package/dist/hooks/useAppPersistence.js +51 -0
  285. package/dist/hooks/useAuth/useAuth.js +10 -0
  286. package/dist/hooks/useBodyScrollLock.js +31 -0
  287. package/dist/hooks/useBreakpoint.js +65 -0
  288. package/dist/hooks/useComponentEffect.js +8 -0
  289. package/dist/hooks/useSwipe.js +45 -0
  290. package/dist/index.css +1 -2
  291. package/dist/index.esm.js +1 -17211
  292. package/dist/index.js +348 -0
  293. package/dist/mfa.js +4 -0
  294. package/dist/node_modules/qrcode.react/lib/esm/index.js +979 -0
  295. package/dist/validators/Vin.js +69 -0
  296. package/dist/version.js +8 -0
  297. package/dist/version.json +4 -4
  298. package/package.json +8 -7
  299. package/dist/mfa.esm.js +0 -1293
  300. package/dist/useAuth-BBqdDG2z.js +0 -467
@@ -0,0 +1,68 @@
1
+ import './FloatButton.css';
2
+ import { Icon as a } from "../Icon/Icon2.js";
3
+ import { Tooltip as s } from "../Tooltip/Tooltip2.js";
4
+ /* empty css */
5
+ import { useState as u } from "react";
6
+ import { Fragment as f, jsx as t, jsxs as i } from "react/jsx-runtime";
7
+ var _ = ({ actions: n }) => {
8
+ const [e, o] = u(!1);
9
+ if (n.length === 1) return /* @__PURE__ */ t("div", {
10
+ className: "float-button-container",
11
+ children: /* @__PURE__ */ t(s, {
12
+ title: n[0].label,
13
+ position: "left",
14
+ children: /* @__PURE__ */ t("button", {
15
+ className: "float-button",
16
+ onClick: n[0].onClick,
17
+ children: /* @__PURE__ */ t("span", {
18
+ className: "float-button__icon",
19
+ children: /* @__PURE__ */ t(a, {
20
+ name: n[0].icon,
21
+ size: "xxl"
22
+ })
23
+ })
24
+ })
25
+ })
26
+ });
27
+ const c = () => {
28
+ o(!e);
29
+ }, r = (l) => {
30
+ l.onClick(), o(!1);
31
+ };
32
+ return /* @__PURE__ */ i("div", {
33
+ className: "float-button-container",
34
+ children: [e && /* @__PURE__ */ i(f, { children: [/* @__PURE__ */ t("div", {
35
+ className: "float-button-overlay",
36
+ onClick: () => o(!1)
37
+ }), /* @__PURE__ */ t("div", {
38
+ className: "float-button-menu",
39
+ children: n.map((l, m) => /* @__PURE__ */ i("button", {
40
+ className: "float-button-menu__item",
41
+ onClick: () => r(l),
42
+ children: [/* @__PURE__ */ t("span", {
43
+ className: "float-button-menu__icon",
44
+ children: /* @__PURE__ */ t(a, { name: l.icon })
45
+ }), /* @__PURE__ */ t("span", {
46
+ className: "float-button-menu__label",
47
+ children: l.label
48
+ })]
49
+ }, `float-button-${m}`))
50
+ })] }), /* @__PURE__ */ t(s, {
51
+ title: "Actions menu",
52
+ children: /* @__PURE__ */ t("button", {
53
+ className: `float-button ${e ? "float-button--active" : ""}`,
54
+ onClick: c,
55
+ children: /* @__PURE__ */ t("span", {
56
+ className: "float-button__icon",
57
+ children: /* @__PURE__ */ t(a, {
58
+ name: e ? "clear" : "plus",
59
+ size: "xxl"
60
+ })
61
+ })
62
+ })
63
+ })]
64
+ });
65
+ };
66
+ export {
67
+ _ as FloatButton
68
+ };
@@ -0,0 +1 @@
1
+ .floating-window{z-index:var(--_window-z);background:var(--modal-background-color);color:var(--modal-color);border:var(--spacing-1) solid var(--modal-border-color);border-radius:var(--radius);box-shadow:var(--modal-box-shadow);flex-direction:column;min-width:0;min-height:0;display:flex;position:fixed;overflow:hidden}.floating-window--maximized{transition:none}.floating-window__header{justify-content:space-between;align-items:center;gap:var(--spacing-12);padding:var(--spacing-8) var(--spacing-12);background:var(--modal-header-background-color);border-bottom:var(--spacing-1) solid var(--modal-border-color);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0;display:flex}.floating-window__header:active{cursor:grabbing}.floating-window__title{text-overflow:ellipsis;white-space:nowrap;color:var(--modal-title-color,var(--modal-header-color));font-family:var(--modal-title-font-family,var(--font-family,sans-serif));font-size:var(--modal-title-font-size,var(--font-size-md));font-style:var(--modal-title-font-style,normal);font-weight:var(--modal-title-font-weight,var(--font-weight-semibold));letter-spacing:var(--modal-title-letter-spacing,normal);text-transform:var(--modal-title-text-transform,none);align-items:center;gap:var(--spacing-8);min-width:0;display:flex;overflow:hidden}.floating-window__actions{align-items:center;gap:var(--spacing-2);flex-shrink:0;display:flex}.floating-window__action{width:var(--spacing-24);height:var(--spacing-24);border-radius:var(--radius-sm);color:var(--body-sub-title-color);font-size:var(--font-size-xs);line-height:var(--line-height-none);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.floating-window__action:hover{background:var(--border-color);color:var(--body-color-accent)}.floating-window__action--close:hover{background:var(--button-danger-background-color);color:var(--button-danger-color)}.floating-window__body{min-height:0;padding:var(--spacing-16);flex:1;overflow:auto}.floating-window__footer{justify-content:flex-end;align-items:center;gap:var(--spacing-8);padding:var(--spacing-12) var(--spacing-16);background:var(--modal-footer-background-color);border-top:var(--spacing-1) solid var(--modal-border-color);flex-shrink:0;display:flex}.floating-window--minimized .floating-window__header{border-bottom:none}.floating-window__handle{touch-action:none;--_handle-thickness:var(--spacing-6);--_handle-corner:var(--spacing-12);position:absolute}.floating-window__handle--n,.floating-window__handle--s{height:var(--_handle-thickness);cursor:ns-resize;left:0;right:0}.floating-window__handle--n{top:0}.floating-window__handle--s{bottom:0}.floating-window__handle--e,.floating-window__handle--w{width:var(--_handle-thickness);cursor:ew-resize;top:0;bottom:0}.floating-window__handle--e{right:0}.floating-window__handle--w{left:0}.floating-window__handle--ne,.floating-window__handle--nw,.floating-window__handle--se,.floating-window__handle--sw{width:var(--_handle-corner);height:var(--_handle-corner);z-index:1}.floating-window__handle--ne{cursor:nesw-resize;top:0;right:0}.floating-window__handle--nw{cursor:nwse-resize;top:0;left:0}.floating-window__handle--se{cursor:nwse-resize;bottom:0;right:0}.floating-window__handle--sw{cursor:nesw-resize;bottom:0;left:0}@media (width<=768px){.floating-window{border-radius:var(--radius) var(--radius) 0 0;max-height:85vh;bottom:0;width:100%!important;top:auto!important;left:0!important}.floating-window__handle{display:none}}
@@ -0,0 +1,203 @@
1
+ import './FloatingWindow.css';
2
+ import { Icon as tt } from "../Icon/Icon2.js";
3
+ import { Tooltip as N } from "../Tooltip/Tooltip2.js";
4
+ /* empty css */
5
+ import { useCallback as d, useEffect as Z, useRef as G, useState as g } from "react";
6
+ import { Fragment as nt, jsx as o, jsxs as w } from "react/jsx-runtime";
7
+ import { createPortal as it } from "react-dom";
8
+ var et = [
9
+ "n",
10
+ "s",
11
+ "e",
12
+ "w",
13
+ "ne",
14
+ "nw",
15
+ "se",
16
+ "sw"
17
+ ], z = 48, x = 16, ct = ({ children: V, className: W = "", closeOnEscape: D = !1, defaultPosition: q, defaultSize: _ = {
18
+ height: 360,
19
+ width: 480
20
+ }, footer: R, isOpen: l, minimizable: H = !0, minHeight: y = 140, minWidth: P = 260, onClose: M, onGeometryChange: b, resizable: I = !0, title: J, titleIcon: k, usePortal: K = !0, zIndex: C = 900 }) => {
21
+ const [e, L] = g(_), [r, h] = g(() => q ?? {
22
+ x: Math.max(0, (window.innerWidth - _.width) / 2),
23
+ y: Math.max(0, (window.innerHeight - _.height) / 3)
24
+ }), [s, S] = g(!1), [a, Q] = g(!1), T = G(null), m = G(null), u = d((t, n) => ({
25
+ x: Math.min(Math.max(t.x, z - n.width), window.innerWidth - z),
26
+ y: Math.min(Math.max(t.y, 0), window.innerHeight - z)
27
+ }), []), $ = d(() => {
28
+ b?.({
29
+ ...r,
30
+ ...e
31
+ });
32
+ }, [
33
+ b,
34
+ r,
35
+ e
36
+ ]), j = d((t, n) => {
37
+ a || (t.preventDefault(), t.stopPropagation(), t.currentTarget.setPointerCapture(t.pointerId), m.current = {
38
+ direction: n,
39
+ pointerId: t.pointerId,
40
+ startPointer: {
41
+ x: t.clientX,
42
+ y: t.clientY
43
+ },
44
+ startRect: {
45
+ ...r,
46
+ ...e
47
+ }
48
+ });
49
+ }, [
50
+ a,
51
+ r,
52
+ e
53
+ ]), F = d((t) => {
54
+ const n = m.current;
55
+ if (!n || n.pointerId !== t.pointerId) return;
56
+ const v = t.clientX - n.startPointer.x, E = t.clientY - n.startPointer.y, { startRect: i, direction: c } = n;
57
+ if (!c) {
58
+ h(u({
59
+ x: i.x + v,
60
+ y: i.y + E
61
+ }, i));
62
+ return;
63
+ }
64
+ let { height: f, width: p, x: B, y: Y } = i;
65
+ c.includes("e") && (p = Math.max(P, i.width + v)), c.includes("w") && (p = Math.max(P, i.width - v), B = i.x + (i.width - p)), c.includes("s") && (f = Math.max(y, i.height + E)), c.includes("n") && (f = Math.max(y, i.height - E), Y = i.y + (i.height - f)), L({
66
+ height: f,
67
+ width: p
68
+ }), h({
69
+ x: B,
70
+ y: Y
71
+ });
72
+ }, [
73
+ u,
74
+ y,
75
+ P
76
+ ]), U = d((t) => {
77
+ m.current && (t.currentTarget.releasePointerCapture(t.pointerId), m.current = null, $());
78
+ }, [$]), X = d(() => {
79
+ Q((t) => {
80
+ if (t) {
81
+ const n = T.current;
82
+ return n && (h({
83
+ x: n.x,
84
+ y: n.y
85
+ }), L({
86
+ height: n.height,
87
+ width: n.width
88
+ })), !1;
89
+ }
90
+ return T.current = {
91
+ ...r,
92
+ ...e
93
+ }, S(!1), !0;
94
+ });
95
+ }, [r, e]);
96
+ if (Z(() => {
97
+ if (!l || !D) return;
98
+ const t = (n) => {
99
+ n.key === "Escape" && M();
100
+ };
101
+ return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
102
+ }, [
103
+ D,
104
+ l,
105
+ M
106
+ ]), Z(() => {
107
+ if (!l) return;
108
+ const t = () => h((n) => u(n, e));
109
+ return window.addEventListener("resize", t), () => window.removeEventListener("resize", t);
110
+ }, [
111
+ u,
112
+ l,
113
+ e
114
+ ]), !l) return null;
115
+ const O = a ? {
116
+ "--_window-z": C,
117
+ height: `calc(100vh - ${x * 2}px)`,
118
+ left: x,
119
+ top: x,
120
+ width: `calc(100vw - ${x * 2}px)`
121
+ } : {
122
+ "--_window-z": C,
123
+ height: s ? void 0 : e.height,
124
+ left: r.x,
125
+ top: r.y,
126
+ width: e.width
127
+ }, A = /* @__PURE__ */ w("div", {
128
+ className: [
129
+ "floating-window",
130
+ a ? "floating-window--maximized" : "",
131
+ s ? "floating-window--minimized" : "",
132
+ W
133
+ ].filter(Boolean).join(" "),
134
+ style: O,
135
+ children: [
136
+ /* @__PURE__ */ w("div", {
137
+ className: "floating-window__header",
138
+ onDoubleClick: I ? X : void 0,
139
+ onPointerDown: j,
140
+ onPointerMove: F,
141
+ onPointerUp: U,
142
+ children: [/* @__PURE__ */ w("span", {
143
+ className: "floating-window__title",
144
+ children: [k && /* @__PURE__ */ o(tt, {
145
+ name: k,
146
+ size: "sm"
147
+ }), J]
148
+ }), /* @__PURE__ */ w("span", {
149
+ className: "floating-window__actions",
150
+ children: [
151
+ H && /* @__PURE__ */ o(N, {
152
+ title: s ? "Expand" : "Collapse",
153
+ children: /* @__PURE__ */ o("button", {
154
+ className: "floating-window__action",
155
+ onClick: () => S((t) => !t),
156
+ onPointerDown: (t) => t.stopPropagation(),
157
+ type: "button",
158
+ children: s ? "▢" : "—"
159
+ })
160
+ }),
161
+ I && /* @__PURE__ */ o(N, {
162
+ title: a ? "Restore" : "Maximize",
163
+ children: /* @__PURE__ */ o("button", {
164
+ className: "floating-window__action",
165
+ onClick: X,
166
+ onPointerDown: (t) => t.stopPropagation(),
167
+ type: "button",
168
+ children: a ? "❐" : "□"
169
+ })
170
+ }),
171
+ /* @__PURE__ */ o(N, {
172
+ title: "Close",
173
+ children: /* @__PURE__ */ o("button", {
174
+ className: "floating-window__action floating-window__action--close",
175
+ onClick: M,
176
+ onPointerDown: (t) => t.stopPropagation(),
177
+ type: "button",
178
+ children: "✕"
179
+ })
180
+ })
181
+ ]
182
+ })]
183
+ }),
184
+ !s && /* @__PURE__ */ w(nt, { children: [/* @__PURE__ */ o("div", {
185
+ className: "floating-window__body",
186
+ children: V
187
+ }), R && /* @__PURE__ */ o("div", {
188
+ className: "floating-window__footer",
189
+ children: R
190
+ })] }),
191
+ I && !a && !s && et.map((t) => /* @__PURE__ */ o("span", {
192
+ className: `floating-window__handle floating-window__handle--${t}`,
193
+ onPointerDown: (n) => j(n, t),
194
+ onPointerMove: F,
195
+ onPointerUp: U
196
+ }, t))
197
+ ]
198
+ });
199
+ return K ? it(A, document.body) : A;
200
+ };
201
+ export {
202
+ ct as FloatingWindow
203
+ };
@@ -0,0 +1 @@
1
+ .folder-browser__body{gap:var(--spacing-12);padding:var(--spacing-16);flex-direction:column;display:flex}.folder-browser__path-row{align-items:stretch;gap:var(--spacing-8);display:flex}.folder-browser__path{flex:1;min-width:0}.folder-browser__path .input-text-wrapper,.folder-browser__path .input-text{height:100%}.folder-browser__path .input-text{font-family:Cascadia Mono,Courier New,monospace;font-size:var(--font-size-sm)}.folder-browser__path--error .input-text{border-color:var(--rating-color-danger)}.folder-browser__error{color:var(--rating-color-danger);font-size:var(--font-size-sm);margin:0}.folder-browser__list{gap:var(--spacing-2);border:var(--spacing-1) solid var(--card-border-color);border-radius:var(--radius);max-height:48vh;padding:var(--spacing-4);flex-direction:column;display:flex;overflow-y:auto}.folder-browser__loading{padding:var(--spacing-24);justify-content:center;display:flex}.folder-browser__entry{all:unset;box-sizing:border-box;align-items:center;gap:var(--spacing-8);padding:var(--spacing-8) var(--spacing-12);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition-fast);display:flex}.folder-browser__entry:hover{background:color-mix(in srgb, var(--body-accent-color) 10%, transparent)}.folder-browser__entry:focus-visible{outline:var(--spacing-2) solid var(--button-info-background-color);outline-offset:calc(var(--spacing-2) * -1)}.folder-browser__entry-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--body-title-color);font-size:var(--font-size-sm);flex:1;overflow:hidden}.folder-browser__entry-chevron{color:var(--body-color-muted)}
@@ -0,0 +1,144 @@
1
+ import './FolderBrowserModal.css';
2
+ import { Icon as v } from "../Icon/Icon2.js";
3
+ import { Button as w } from "../Button/Button2.js";
4
+ import { Modal as x } from "../Modal/Modal2.js";
5
+ import { InputText as z } from "../InputText/InputText2.js";
6
+ import { EmptyState as I } from "../EmptyState/EmptyState2.js";
7
+ import { Loading as S } from "../Loading/Loading2.js";
8
+ /* empty css */
9
+ import { useCallback as E, useEffect as g, useState as n } from "react";
10
+ import { jsx as o, jsxs as i } from "react/jsx-runtime";
11
+ var G = ({ isOpen: s, title: y = "Select a folder", initialPath: c, loadDirectory: d, onSelect: N, onClose: m, selectLabel: k = "Select this folder" }) => {
12
+ const [e, f] = n(null), [a, u] = n(!1), [p, h] = n(""), t = E(async (r) => {
13
+ u(!0);
14
+ try {
15
+ f(await d(r));
16
+ } catch {
17
+ f({
18
+ current: r ?? null,
19
+ parent: null,
20
+ drives: [],
21
+ directories: [],
22
+ error: "Unable to read directory."
23
+ });
24
+ } finally {
25
+ u(!1);
26
+ }
27
+ }, [d]);
28
+ g(() => {
29
+ s && t(c);
30
+ }, [
31
+ s,
32
+ c,
33
+ t
34
+ ]), g(() => {
35
+ h(e?.current ?? "");
36
+ }, [e]);
37
+ const C = () => {
38
+ e && t(e.parent ?? "");
39
+ }, b = () => {
40
+ const r = p.trim();
41
+ a || r === (e?.current ?? "") || t(r === "" ? void 0 : r);
42
+ }, l = e?.current === null, _ = l ? e?.drives.map((r) => ({
43
+ name: r,
44
+ path: r
45
+ })) ?? [] : e?.directories ?? [];
46
+ return /* @__PURE__ */ o(x, {
47
+ isOpen: s,
48
+ title: y,
49
+ onClose: m,
50
+ size: "medium",
51
+ className: "folder-browser",
52
+ primary: {
53
+ variant: "success",
54
+ icon: "checkmark",
55
+ text: k,
56
+ disabled: l || !e?.current,
57
+ onClick: () => e?.current && N(e.current)
58
+ },
59
+ secondary: {
60
+ variant: "default",
61
+ icon: "return",
62
+ text: "Cancel",
63
+ onClick: m
64
+ },
65
+ children: /* @__PURE__ */ i("div", {
66
+ className: "folder-browser__body",
67
+ children: [
68
+ /* @__PURE__ */ i("div", {
69
+ className: "folder-browser__path-row",
70
+ children: [
71
+ /* @__PURE__ */ o(w, {
72
+ variant: "default",
73
+ size: "small",
74
+ icon: "arrow-up",
75
+ disabled: a || l,
76
+ onClick: C,
77
+ children: "Up"
78
+ }),
79
+ /* @__PURE__ */ o("div", {
80
+ className: `folder-browser__path${e?.error ? " folder-browser__path--error" : ""}`,
81
+ children: /* @__PURE__ */ o(z, {
82
+ value: p,
83
+ placeholder: "Paste or type a folder path, then press Enter",
84
+ disabled: a,
85
+ onChange: h,
86
+ onKeyDown: (r) => r.key === "Enter" && b()
87
+ })
88
+ }),
89
+ /* @__PURE__ */ o(w, {
90
+ variant: "default",
91
+ size: "small",
92
+ icon: "arrow-right",
93
+ disabled: a,
94
+ onClick: b,
95
+ children: "Go"
96
+ })
97
+ ]
98
+ }),
99
+ e?.error && /* @__PURE__ */ o("p", {
100
+ className: "folder-browser__error",
101
+ children: e.error
102
+ }),
103
+ /* @__PURE__ */ o("div", {
104
+ className: "folder-browser__list",
105
+ children: a ? /* @__PURE__ */ o("div", {
106
+ className: "folder-browser__loading",
107
+ children: /* @__PURE__ */ o(S, {})
108
+ }) : _.length === 0 ? /* @__PURE__ */ o(I, {
109
+ icon: "folder",
110
+ title: "No subfolders",
111
+ description: "This folder has no subfolders. You can still select it."
112
+ }) : _.map((r) => /* @__PURE__ */ i("button", {
113
+ type: "button",
114
+ className: "folder-browser__entry",
115
+ onDoubleClick: () => {
116
+ t(r.path);
117
+ },
118
+ onClick: () => {
119
+ t(r.path);
120
+ },
121
+ children: [
122
+ /* @__PURE__ */ o(v, {
123
+ name: "folder",
124
+ size: "sm"
125
+ }),
126
+ /* @__PURE__ */ o("span", {
127
+ className: "folder-browser__entry-name",
128
+ children: r.name
129
+ }),
130
+ /* @__PURE__ */ o(v, {
131
+ className: "folder-browser__entry-chevron",
132
+ name: "arrow-right",
133
+ size: "sm"
134
+ })
135
+ ]
136
+ }, r.path))
137
+ })
138
+ ]
139
+ })
140
+ });
141
+ };
142
+ export {
143
+ G as FolderBrowserModal
144
+ };
@@ -0,0 +1,17 @@
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ var n = ({ children: l, className: e = "", span: o = 1, spanMobile: t, spanTablet: r, style: c }) => {
3
+ const a = {
4
+ "--_col-span": o,
5
+ "--_col-span-mobile": t ?? o,
6
+ "--_col-span-tablet": r ?? o,
7
+ ...c
8
+ };
9
+ return /* @__PURE__ */ i("div", {
10
+ className: ["grid__col", e].filter(Boolean).join(" "),
11
+ style: a,
12
+ children: l
13
+ });
14
+ };
15
+ export {
16
+ n as Col
17
+ };
@@ -0,0 +1 @@
1
+ .grid{gap:var(--_grid-row-gap) var(--_grid-gap);--_cols-now:var(--_grid-cols);--_track:calc((100% - (var(--_cols-now) - 1) * var(--_grid-gap)) / var(--_cols-now));flex-wrap:wrap;display:flex}.grid--align-start{align-items:flex-start}.grid--align-center{align-items:center}.grid--align-end{align-items:flex-end}.grid--align-stretch{align-items:stretch}.grid--align-baseline{align-items:baseline}.grid--justify-start{justify-content:flex-start}.grid--justify-center{justify-content:center}.grid--justify-end{justify-content:flex-end}.grid--justify-space-between{justify-content:space-between}.grid--justify-space-around{justify-content:space-around}.grid>*{flex:0 0 var(--_track);box-sizing:border-box;min-width:0}.grid>.grid__col{--_span-now:var(--_col-span);--_span-clamped:min(var(--_span-now), var(--_cols-now));flex:0 0 calc(var(--_span-clamped) * var(--_track) + (var(--_span-clamped) - 1) * var(--_grid-gap));box-sizing:border-box;min-width:0}.grid--fluid>*,.grid--fluid>.grid__col{flex:1 1 var(--_grid-min-col)}@media (width>=769px) and (width<=1024px){.grid{--_cols-now:var(--_grid-cols-tablet)}.grid>.grid__col{--_span-now:var(--_col-span-tablet)}}@media (width<=768px){.grid{--_cols-now:var(--_grid-cols-mobile)}.grid>.grid__col{--_span-now:var(--_col-span-mobile)}}
@@ -0,0 +1,28 @@
1
+ import './Grid.css';
2
+ /* empty css */
3
+ import { jsx as _ } from "react/jsx-runtime";
4
+ var x = (r) => r > 2 ? 2 : r, m = ({ align: r = "stretch", children: a, className: e = "", cols: o = 2, colsMobile: s = 1, colsTablet: l, gap: t = "16", justify: n = "start", minColWidth: i, rowGap: g, style: c }) => {
5
+ const d = t === "0" ? "0px" : `var(--spacing-${t})`, p = g === void 0 ? d : g === "0" ? "0px" : `var(--spacing-${g})`, v = {
6
+ "--_grid-cols": o,
7
+ "--_grid-cols-mobile": s,
8
+ "--_grid-cols-tablet": l ?? x(o),
9
+ "--_grid-gap": d,
10
+ "--_grid-row-gap": p,
11
+ ...i === void 0 ? {} : { "--_grid-min-col": `${i}px` },
12
+ ...c
13
+ };
14
+ return /* @__PURE__ */ _("div", {
15
+ className: [
16
+ "grid",
17
+ i === void 0 ? "" : "grid--fluid",
18
+ `grid--align-${r}`,
19
+ `grid--justify-${n}`,
20
+ e
21
+ ].filter(Boolean).join(" "),
22
+ style: v,
23
+ children: a
24
+ });
25
+ };
26
+ export {
27
+ m as Grid
28
+ };
@@ -0,0 +1 @@
1
+ .icon{justify-content:center;align-items:center;display:inline-flex}.icon svg{display:block}.icon--sm{font-size:var(--font-size-sm)}.icon--md{font-size:var(--font-size-md)}.icon--lg{font-size:var(--font-size-lg)}.icon--xl{font-size:var(--font-size-xl)}.icon--xxl{font-size:var(--font-size-xxl)}.icon--xxxl{font-size:var(--font-size-xxxl)}.icon--muted{color:var(--body-color-muted)}.icon--accent{color:var(--body-accent-color)}.icon--info{color:var(--button-info-background-color)}.icon--success{color:var(--button-success-background-color)}.icon--warning{color:var(--button-warning-background-color)}.icon--danger{color:var(--body-danger-color)}.icon--spin svg{animation:1s linear infinite icon-spin}.icon--fade{animation:2s ease-in-out infinite icon-fade}.icon--pulse{animation:1.6s ease-in-out infinite icon-pulse}.icon--spin-hover:hover svg{animation:1s linear infinite icon-spin}.icon--fade-hover:hover{animation:2s ease-in-out infinite icon-fade}.icon--pulse-hover:hover{animation:1.6s ease-in-out infinite icon-pulse}@keyframes icon-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes icon-fade{0%,to{opacity:1}50%{opacity:.4}}@keyframes icon-pulse{0%,to{transform:scale(1)}45%{transform:scale(1.16)}}
@@ -0,0 +1,23 @@
1
+ import './Icon.css';
2
+ /* empty css */
3
+ import "react";
4
+ import { iconMap as s } from "@memobit/icons/map";
5
+ import { jsx as t } from "react/jsx-runtime";
6
+ var v = ({ className: n = "", fade: c, fadeOnHover: e, name: r, pulse: p, pulseOnHover: m, size: i, spin: f, spinOnHover: l, variant: o }) => /* @__PURE__ */ t("span", {
7
+ className: [
8
+ "icon",
9
+ i ? `icon--${i}` : "",
10
+ o && o !== "default" ? `icon--${o}` : "",
11
+ f ? "icon--spin" : "",
12
+ c ? "icon--fade" : "",
13
+ p ? "icon--pulse" : "",
14
+ l ? "icon--spin-hover" : "",
15
+ e ? "icon--fade-hover" : "",
16
+ m ? "icon--pulse-hover" : "",
17
+ n
18
+ ].filter(Boolean).join(" "),
19
+ children: s[r]
20
+ });
21
+ export {
22
+ v as Icon
23
+ };
@@ -0,0 +1 @@
1
+ .icon-picker{gap:var(--spacing-8);width:320px;padding:var(--spacing-12);background-color:var(--card-background-color);border:1px solid var(--card-border-color);border-radius:var(--radius);flex-direction:column;display:flex}.icon-picker__search{width:100%}.icon-picker__grid{gap:var(--spacing-2);max-height:var(--spacing-300);scrollbar-width:thin;flex-wrap:wrap;display:flex;overflow-y:auto}.icon-picker__icon{width:var(--spacing-40);height:var(--spacing-40);font-size:var(--font-size-lg);border-radius:var(--radius-sm);color:var(--body-color);cursor:pointer;transition:background-color var(--transition-fast);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;line-height:1;display:flex}.icon-picker__icon:hover{background-color:var(--button-default-hover-background-color)}.icon-picker__icon.is-selected{background-color:var(--button-default-hover-background-color);border-color:var(--body-accent-color)}.icon-picker__empty{width:100%;padding:var(--spacing-12) 0;text-align:center;font-size:var(--font-size-sm);color:var(--body-color-muted)}.icon-picker__count{text-align:right;font-size:var(--font-size-xxs);color:var(--body-color-muted);margin:0}
@@ -0,0 +1,51 @@
1
+ import './IconPicker.css';
2
+ import { Icon as f } from "../Icon/Icon2.js";
3
+ import { InputSearch as g } from "../InputSearch/InputSearch2.js";
4
+ /* empty css */
5
+ import { useMemo as a, useState as k } from "react";
6
+ import { iconMap as v } from "@memobit/icons/map";
7
+ import { jsx as c, jsxs as N } from "react/jsx-runtime";
8
+ import { iconAliases as S } from "@memobit/icons";
9
+ var b = Object.keys(v), w = ({ color: s, emptyLabel: p = "No icons match", icons: n, onChange: m, placeholder: h = "Search icons...", value: d }) => {
10
+ const [o, u] = k(""), t = a(() => n ?? b, [n]), i = a(() => {
11
+ const e = o.trim().toLowerCase();
12
+ if (!e) return t;
13
+ const _ = e.replace(/[\s-]+/g, ""), l = (r) => r.includes(e) || r.replace(/-/g, "").includes(_);
14
+ return t.filter((r) => l(r) || (S[r] ?? []).some(l));
15
+ }, [t, o]);
16
+ return /* @__PURE__ */ N("div", {
17
+ className: "icon-picker",
18
+ children: [
19
+ /* @__PURE__ */ c("div", {
20
+ className: "icon-picker__search",
21
+ children: /* @__PURE__ */ c(g, {
22
+ autoFocus: !0,
23
+ onChange: u,
24
+ placeholder: h,
25
+ value: o
26
+ })
27
+ }),
28
+ /* @__PURE__ */ c("div", {
29
+ className: "icon-picker__grid",
30
+ children: i.length === 0 ? /* @__PURE__ */ c("p", {
31
+ className: "icon-picker__empty",
32
+ children: p
33
+ }) : i.map((e) => /* @__PURE__ */ c("button", {
34
+ className: `icon-picker__icon${d === e ? " is-selected" : ""}`,
35
+ onClick: () => m?.(e),
36
+ style: s ? { color: s } : void 0,
37
+ title: e,
38
+ type: "button",
39
+ children: /* @__PURE__ */ c(f, { name: e })
40
+ }, e))
41
+ }),
42
+ /* @__PURE__ */ c("p", {
43
+ className: "icon-picker__count",
44
+ children: i.length === t.length ? `${t.length} icons` : `${i.length} of ${t.length}`
45
+ })
46
+ ]
47
+ });
48
+ };
49
+ export {
50
+ w as IconPicker
51
+ };
@@ -0,0 +1 @@
1
+ .infinite-scroll{box-sizing:border-box;width:100%;position:relative;overflow:hidden auto}.infinite-scroll__sentinel{visibility:hidden;pointer-events:none;width:100%;height:1px}.infinite-scroll__loader{justify-content:center;align-items:center;gap:var(--spacing-8);padding:var(--spacing-16) var(--spacing-12);width:100%;display:flex}.infinite-scroll__spinner{width:var(--spacing-20);height:var(--spacing-20);border-radius:var(--radius-full);border:2px solid var(--loader-border-color,#0891b233);border-top-color:var(--loader-border-top-color,#0891b2);flex-shrink:0;animation:.7s linear infinite infinite-scroll-spin}.infinite-scroll__loader-text{font-size:var(--font-size-sm);color:var(--body-color-muted)}.infinite-scroll__end{padding:var(--spacing-16) var(--spacing-12);font-size:var(--font-size-sm);color:var(--body-color-muted);justify-content:center;align-items:center;width:100%;display:flex}@keyframes infinite-scroll-spin{to{transform:rotate(360deg)}}
@@ -0,0 +1,66 @@
1
+ import './InfiniteScroll.css';
2
+ import { Loading as j } from "../Loading/Loading2.js";
3
+ /* empty css */
4
+ import { useCallback as A, useEffect as b, useRef as u } from "react";
5
+ import { jsx as t, jsxs as R } from "react/jsx-runtime";
6
+ var k = ({ children: E, onLoadMore: a, hasMore: f, isLoading: i = !1, threshold: d = 0, rootMargin: v = "0px", height: m, onScrollChange: p, endMessage: _, className: x }) => {
7
+ const c = u(null), N = u(null), l = u(null), s = A(() => {
8
+ const e = c.current;
9
+ if (!e) return;
10
+ const { scrollTop: n, scrollHeight: r, clientHeight: o } = e, I = {
11
+ scrollTop: n,
12
+ scrollHeight: r,
13
+ clientHeight: o,
14
+ scrollPercent: r <= o ? 100 : Math.round(n / (r - o) * 100),
15
+ isAtTop: n === 0,
16
+ isAtBottom: n + o >= r - 1
17
+ };
18
+ p?.(I);
19
+ }, [p]);
20
+ return b(() => {
21
+ const e = N.current, n = c.current;
22
+ if (!(!e || !n))
23
+ return l.current?.disconnect(), l.current = new IntersectionObserver(([r]) => {
24
+ r.isIntersecting && f && !i && a();
25
+ }, {
26
+ root: n,
27
+ rootMargin: v,
28
+ threshold: d
29
+ }), l.current.observe(e), () => l.current?.disconnect();
30
+ }, [
31
+ f,
32
+ i,
33
+ a,
34
+ v,
35
+ d
36
+ ]), b(() => {
37
+ const e = c.current;
38
+ if (e)
39
+ return e.addEventListener("scroll", s, { passive: !0 }), s(), () => e.removeEventListener("scroll", s);
40
+ }, [s]), /* @__PURE__ */ R("div", {
41
+ ref: c,
42
+ className: `infinite-scroll${x ? ` ${x}` : ""}`,
43
+ style: m !== void 0 ? { height: m } : void 0,
44
+ children: [
45
+ E,
46
+ /* @__PURE__ */ t("div", {
47
+ ref: N,
48
+ className: "infinite-scroll__sentinel"
49
+ }),
50
+ i && /* @__PURE__ */ R("div", {
51
+ className: "infinite-scroll__loader",
52
+ children: [/* @__PURE__ */ t("div", { className: "infinite-scroll__spinner" }), /* @__PURE__ */ t("span", {
53
+ className: "infinite-scroll__loader-text",
54
+ children: /* @__PURE__ */ t(j, {})
55
+ })]
56
+ }),
57
+ !f && !i && _ && /* @__PURE__ */ t("div", {
58
+ className: "infinite-scroll__end",
59
+ children: _
60
+ })
61
+ ]
62
+ });
63
+ };
64
+ export {
65
+ k as InfiniteScroll
66
+ };
@@ -0,0 +1 @@
1
+ .input-date-wrapper{gap:var(--spacing-8);flex-direction:column;display:flex}.input-date-wrapper .input-date-label{color:var(--form-control-label-color,var(--form-control-color));font-size:var(--form-control-label-font-size,var(--font-size-sm));font-weight:var(--form-control-label-font-weight,var(--font-weight-medium));letter-spacing:var(--form-control-label-letter-spacing,normal);text-transform:var(--form-control-label-text-transform,none)}.input-date-wrapper .input-date-label .input-date-required{color:var(--body-danger-color,#dc2626);margin-left:var(--spacing-2)}.input-date-wrapper .input-date{background-color:var(--form-control-background-color);color:var(--form-control-color);border:var(--spacing-1) solid var(--form-control-border-color);border-radius:var(--radius-sm);padding:var(--spacing-12);font-family:var(--form-control-font-family);font-size:var(--font-size-sm);line-height:var(--line-height-normal);box-sizing:border-box;width:100%}.input-date-wrapper .input-date:focus{background-color:var(--form-control-focus-background-color);border-color:var(--form-control-focus-border-color);color:var(--form-control-focus-color);box-shadow:0 0 0 var(--spacing-2) var(--box-shadow);outline:none}.input-date-wrapper .input-date::placeholder{color:var(--form-control-placeholder-color)}.input-date-wrapper .input-date::-webkit-calendar-picker-indicator{display:none}.input-date-wrapper .input-date{padding-right:var(--spacing-40)}.input-date-wrapper .input-date--clearable{padding-right:calc(var(--spacing-40) + var(--spacing-24))}.input-date-wrapper .input-date.input-date-error{background-color:var(--form-control-error-background-color);border-color:var(--form-control-error-border-color);color:var(--form-control-error-color)}.input-date-wrapper .input-date.input-date-error:focus{background-color:var(--form-control-error-background-color);border-color:var(--form-control-error-border-color);box-shadow:0 0 0 var(--spacing-2) var(--box-shadow)}.input-date-wrapper .input-date.input-date-success{background-color:var(--form-control-success-background-color);border-color:var(--form-control-success-border-color);color:var(--form-control-success-color)}.input-date-wrapper .input-date.input-date-success:focus{background-color:var(--form-control-success-background-color);border-color:var(--form-control-success-border-color);box-shadow:0 0 0 var(--spacing-2) var(--box-shadow)}.input-date-wrapper.input-date-highlighted .input-date{border-color:var(--form-control-focus-border-color)}.input-date-wrapper .input-date-error-message{font-size:var(--font-size-xs);color:var(--form-control-error-color)}.input-date-wrapper .input-date-success-message{font-size:var(--font-size-xs);color:var(--form-control-success-color)}.input-date-field{width:100%;position:relative}.input-date-actions{right:var(--spacing-8);align-items:center;gap:var(--spacing-2);z-index:2;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.input-date-clear,.input-date-picker{padding:var(--spacing-4);cursor:pointer;border-radius:var(--radius-sm);color:var(--form-control-placeholder-color);transition:color var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.input-date-clear:hover:not(:disabled),.input-date-picker:hover:not(:disabled){color:var(--form-control-color)}.input-date-clear:focus,.input-date-picker:focus{color:var(--form-control-focus-border-color);outline:none}.input-date-clear:disabled,.input-date-picker:disabled{cursor:not-allowed;opacity:.5}