@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,67 @@
1
+ import './QuickOptionUpdate.css';
2
+ import { Modal as x } from "../Modal/Modal2.js";
3
+ import { Radio as C } from "../Radio/Radio2.js";
4
+ /* empty css */
5
+ import { useEffect as S, useState as o } from "react";
6
+ import { jsx as r, jsxs as b } from "react/jsx-runtime";
7
+ var O = ({ isOpen: p = !1, list: c, title: f, onClose: t, onSave: u, icon: h, value: s }) => {
8
+ const [a, l] = o(s), [i, d] = o(!1), [m, n] = o("");
9
+ S(() => {
10
+ l(s);
11
+ }, [s]);
12
+ const v = async () => {
13
+ if (!a) {
14
+ n("Please select a value");
15
+ return;
16
+ }
17
+ d(!0), n("");
18
+ try {
19
+ await u(a);
20
+ } catch (e) {
21
+ n(e instanceof Error ? e.message : "Failed to save");
22
+ } finally {
23
+ d(!1);
24
+ }
25
+ }, g = (e) => {
26
+ typeof e == "string" || typeof e == "number" ? l(e) : console.error("Unsupported type used.");
27
+ };
28
+ return /* @__PURE__ */ r("div", {
29
+ className: "quick-set",
30
+ children: /* @__PURE__ */ b(x, {
31
+ isOpen: p,
32
+ titleIcon: h,
33
+ title: f,
34
+ size: "small",
35
+ onClose: t,
36
+ onOverlayClick: t,
37
+ secondary: {
38
+ text: "Cancel",
39
+ variant: "default",
40
+ disabled: i,
41
+ onClick: t
42
+ },
43
+ primary: {
44
+ text: i ? "Saving..." : "Save",
45
+ variant: "success",
46
+ disabled: i || !a,
47
+ onClick: v
48
+ },
49
+ children: [/* @__PURE__ */ r("div", {
50
+ className: "quick-set-list",
51
+ children: c && c.map(({ key: e, label: k }) => /* @__PURE__ */ r(C, {
52
+ name: "ownership",
53
+ label: k,
54
+ checked: a === e,
55
+ value: e,
56
+ onChange: (y) => g(y)
57
+ }, `quick-update-ownership-${e}`))
58
+ }), m && /* @__PURE__ */ r("div", {
59
+ className: "error-message",
60
+ children: m
61
+ })]
62
+ })
63
+ });
64
+ };
65
+ export {
66
+ O as QuickOptionUpdate
67
+ };
@@ -0,0 +1 @@
1
+ .radio-wrapper{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;display:inline-flex}.radio-wrapper--disabled{cursor:not-allowed;opacity:.6}.radio-input{opacity:0;pointer-events:none;z-index:-1;border:none;width:0;height:0;margin:0;padding:0;position:absolute}.radio-input:focus+.radio-label .radio-circle{border-color:var(--form-control-selection-border-color);box-shadow:0 0 0 var(--spacing-2) var(--form-control-focus-ring);outline:none}.radio-input:checked+.radio-label .radio-circle{border-color:var(--form-control-selection-border-color)}.radio-input:checked+.radio-label .radio-circle:after{opacity:1;transform:scale(1)}.radio-input:disabled+.radio-label{cursor:not-allowed}.radio-label{align-items:flex-start;gap:var(--spacing-8);cursor:pointer;min-height:var(--radio-size);display:flex}.radio-circle{width:var(--radio-size);height:var(--radio-size);min-width:var(--radio-size);border:var(--spacing-1) solid var(--form-control-selection-border-color);background-color:#0000;border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:flex;position:relative}.radio-circle:hover{border-color:var(--form-control-selection-border-color)}.radio-circle:after{content:"";width:var(--spacing-8);height:var(--spacing-8);background-color:var(--form-control-selection-background-color);opacity:0;border-radius:50%;transition:all .2s;transform:scale(0)}.radio-text{color:var(--form-control-selection-label-color);font-size:var(--font-size-sm);margin-top:var(--spacing-2);line-height:1.4}
@@ -0,0 +1,36 @@
1
+ import './Radio.css';
2
+ /* empty css */
3
+ import { useId as f } from "react";
4
+ import { jsx as e, jsxs as s } from "react/jsx-runtime";
5
+ var j = ({ checked: t = !1, onChange: n, label: r, disabled: i = !1, name: c, value: a, id: l, className: p = "" }) => {
6
+ const m = f(), o = l || m, h = (d) => {
7
+ n?.(d.target.checked && a !== void 0 ? a : d.target.checked);
8
+ };
9
+ return /* @__PURE__ */ s("div", {
10
+ className: [
11
+ "radio-wrapper",
12
+ i ? "radio-wrapper--disabled" : "",
13
+ p
14
+ ].filter(Boolean).join(" "),
15
+ children: [/* @__PURE__ */ e("input", {
16
+ type: "radio",
17
+ id: o,
18
+ name: c,
19
+ value: a,
20
+ className: "radio-input",
21
+ checked: t,
22
+ onChange: h,
23
+ disabled: i
24
+ }), /* @__PURE__ */ s("label", {
25
+ htmlFor: o,
26
+ className: "radio-label",
27
+ children: [/* @__PURE__ */ e("span", { className: "radio-circle" }), r && /* @__PURE__ */ e("span", {
28
+ className: "radio-text",
29
+ children: r
30
+ })]
31
+ })]
32
+ });
33
+ };
34
+ export {
35
+ j as Radio
36
+ };
@@ -0,0 +1 @@
1
+ .range-slider{gap:var(--spacing-8);--_range-accent:var(--body-accent-color);--_range-track-thickness:var(--spacing-8);--_range-thumb-size:var(--spacing-20);flex-direction:column;width:100%;display:flex}.range-slider--info{--_range-accent:var(--rating-color-info)}.range-slider--success{--_range-accent:var(--rating-color-success)}.range-slider--warning{--_range-accent:var(--rating-color-warning)}.range-slider--danger{--_range-accent:var(--rating-color-danger)}.range-slider--thin{--_range-track-thickness:var(--spacing-4);--_range-thumb-size:var(--spacing-16)}.range-slider__header{justify-content:space-between;align-items:center;gap:var(--spacing-12);display:flex}.range-slider__label{font-size:var(--font-size-sm);color:var(--form-control-label-color);font-weight:var(--font-weight-medium)}.range-slider__readout{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums;color:var(--_range-accent)}.range-slider__track{height:var(--_range-track-thickness);border-radius:var(--radius-full);background:var(--slider-track-background-color);border:var(--spacing-1) solid var(--slider-track-border-color);cursor:pointer;margin:calc(var(--_range-thumb-size) / 2) 0;touch-action:none;position:relative}.range-slider__selection{background:var(--_range-accent);border-radius:var(--radius-full);pointer-events:none;position:absolute;top:0;bottom:0}.range-slider__thumb{width:var(--_range-thumb-size);height:var(--_range-thumb-size);border-radius:var(--radius-full);border:var(--spacing-2) solid var(--_range-accent);background:var(--slider-thumb-background-color);cursor:grab;transition:transform var(--transition-fast), background var(--transition-fast);touch-action:none;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%)}.range-slider__thumb:hover:not(:disabled){background:var(--slider-thumb-hover-background-color);transform:translate(-50%,-50%)scale(1.15)}.range-slider__thumb:active:not(:disabled){cursor:grabbing}.range-slider__thumb:focus-visible{outline:var(--spacing-2) solid var(--form-control-focus-ring);outline-offset:var(--spacing-2)}.range-slider__thumb:disabled{cursor:not-allowed}.range-slider__thumb--upper{z-index:1}.range-slider__ticks{height:var(--spacing-24);position:relative}.range-slider__tick{align-items:center;gap:var(--spacing-2);pointer-events:none;flex-direction:column;display:flex;position:absolute;top:0;transform:translate(-50%)}.range-slider__tick-mark{width:var(--spacing-1);height:var(--spacing-4);background:var(--slider-track-border-color)}.range-slider__tick-label{font-size:var(--font-size-xxs);color:var(--body-color-muted);white-space:nowrap}.range-slider--disabled{opacity:.5}.range-slider--disabled .range-slider__track{cursor:not-allowed}
@@ -0,0 +1,157 @@
1
+ import './RangeSlider.css';
2
+ /* empty css */
3
+ import { useCallback as a, useMemo as J, useRef as L } from "react";
4
+ import { jsx as p, jsxs as g } from "react/jsx-runtime";
5
+ var O = (n) => !Number.isFinite(n) || n >= 1 ? 0 : String(n).split(".")[1]?.length ?? 0, Y = ({ disabled: n = !1, formatValue: M, label: N, max: i = 100, min: o = 0, minDistance: q, onChange: h, onChangeEnd: d, showValues: R = !0, step: c = 1, thin: v = !1, tickStep: w = 0, value: D, variant: z = "accent" }) => {
6
+ const U = L(null), P = L(null), b = Math.max(1, i - o), T = q ?? c, f = O(c), [l, s] = D, _ = a((r) => M ? M(r) : f > 0 ? r.toFixed(f) : String(r), [f, M]), y = a((r) => {
7
+ const e = c > 0 ? o + Math.round((r - o) / c) * c : r, t = Math.min(i, Math.max(o, e));
8
+ return f > 0 ? Number(t.toFixed(f)) : t;
9
+ }, [
10
+ f,
11
+ i,
12
+ o,
13
+ c
14
+ ]), m = a((r, e) => {
15
+ const t = y(e);
16
+ return r === "lower" ? [Math.min(t, s - T), s] : [l, Math.max(t, l + T)];
17
+ }, [
18
+ T,
19
+ l,
20
+ y,
21
+ s
22
+ ]), k = a((r) => {
23
+ const e = U.current;
24
+ if (!e) return null;
25
+ const t = e.getBoundingClientRect();
26
+ return t.width === 0 ? null : o + Math.min(1, Math.max(0, (r - t.left) / t.width)) * b;
27
+ }, [o, b]), A = a((r, e) => {
28
+ n || (r.preventDefault(), r.stopPropagation(), r.currentTarget.setPointerCapture(r.pointerId), P.current = e);
29
+ }, [n]), F = a((r) => {
30
+ const e = P.current;
31
+ if (!e || n) return;
32
+ const t = k(r.clientX);
33
+ t !== null && h(m(e, t));
34
+ }, [
35
+ m,
36
+ n,
37
+ h,
38
+ k
39
+ ]), j = a((r) => {
40
+ P.current && (r.currentTarget.releasePointerCapture(r.pointerId), P.current = null, d?.(D));
41
+ }, [d, D]), G = a((r) => {
42
+ if (n) return;
43
+ const e = k(r.clientX);
44
+ if (e === null) return;
45
+ const t = Math.abs(e - l) <= Math.abs(e - s) ? "lower" : "upper", u = m(t, e);
46
+ h(u), d?.(u);
47
+ }, [
48
+ m,
49
+ n,
50
+ l,
51
+ h,
52
+ d,
53
+ s,
54
+ k
55
+ ]), K = a((r, e) => {
56
+ if (n) return;
57
+ const t = e === "lower" ? l : s, u = c > 0 ? c : 1, X = r.key === "ArrowLeft" || r.key === "ArrowDown" ? t - u : r.key === "ArrowRight" || r.key === "ArrowUp" ? t + u : r.key === "PageDown" ? t - u * 10 : r.key === "PageUp" ? t + u * 10 : r.key === "Home" ? o : r.key === "End" ? i : null;
58
+ if (X === null) return;
59
+ r.preventDefault();
60
+ const H = m(e, X);
61
+ h(H), d?.(H);
62
+ }, [
63
+ m,
64
+ n,
65
+ l,
66
+ i,
67
+ o,
68
+ h,
69
+ d,
70
+ c,
71
+ s
72
+ ]), B = J(() => {
73
+ if (!w || w <= 0) return [];
74
+ const r = [];
75
+ for (let e = o; e <= i; e += w) r.push(y(e));
76
+ return r;
77
+ }, [
78
+ i,
79
+ o,
80
+ y,
81
+ w
82
+ ]), $ = (r) => (Math.min(i, Math.max(o, r)) - o) / b * 100, x = $(l), I = $(s);
83
+ return /* @__PURE__ */ g("div", {
84
+ className: [
85
+ "range-slider",
86
+ `range-slider--${z}`,
87
+ v ? "range-slider--thin" : "",
88
+ n ? "range-slider--disabled" : ""
89
+ ].filter(Boolean).join(" "),
90
+ children: [
91
+ (N || R) && /* @__PURE__ */ g("div", {
92
+ className: "range-slider__header",
93
+ children: [N && /* @__PURE__ */ p("span", {
94
+ className: "range-slider__label",
95
+ children: N
96
+ }), R && /* @__PURE__ */ g("span", {
97
+ className: "range-slider__readout",
98
+ children: [
99
+ _(l),
100
+ " – ",
101
+ _(s)
102
+ ]
103
+ })]
104
+ }),
105
+ /* @__PURE__ */ g("div", {
106
+ className: "range-slider__track",
107
+ onPointerDown: G,
108
+ ref: U,
109
+ children: [
110
+ /* @__PURE__ */ p("div", {
111
+ className: "range-slider__selection",
112
+ style: {
113
+ left: `${x}%`,
114
+ width: `${I - x}%`
115
+ }
116
+ }),
117
+ /* @__PURE__ */ p("button", {
118
+ className: "range-slider__thumb range-slider__thumb--lower",
119
+ disabled: n,
120
+ onKeyDown: (r) => K(r, "lower"),
121
+ onPointerDown: (r) => A(r, "lower"),
122
+ onPointerMove: F,
123
+ onPointerUp: j,
124
+ style: { left: `${x}%` },
125
+ title: _(l),
126
+ type: "button"
127
+ }),
128
+ /* @__PURE__ */ p("button", {
129
+ className: "range-slider__thumb range-slider__thumb--upper",
130
+ disabled: n,
131
+ onKeyDown: (r) => K(r, "upper"),
132
+ onPointerDown: (r) => A(r, "upper"),
133
+ onPointerMove: F,
134
+ onPointerUp: j,
135
+ style: { left: `${I}%` },
136
+ title: _(s),
137
+ type: "button"
138
+ })
139
+ ]
140
+ }),
141
+ B.length > 0 && /* @__PURE__ */ p("div", {
142
+ className: "range-slider__ticks",
143
+ children: B.map((r) => /* @__PURE__ */ g("span", {
144
+ className: "range-slider__tick",
145
+ style: { left: `${$(r)}%` },
146
+ children: [/* @__PURE__ */ p("span", { className: "range-slider__tick-mark" }), /* @__PURE__ */ p("span", {
147
+ className: "range-slider__tick-label",
148
+ children: _(r)
149
+ })]
150
+ }, r))
151
+ })
152
+ ]
153
+ });
154
+ };
155
+ export {
156
+ Y as RangeSlider
157
+ };
@@ -0,0 +1 @@
1
+ .rating{gap:var(--spacing-8);align-items:center;width:100%;display:flex}.rating.align-left{justify-content:flex-start}.rating.align-right{justify-content:flex-end}.rating.align-space-between{justify-content:space-between}.rating .rating-rates{gap:var(--spacing-2);align-items:center;display:flex}.rating .rate{align-items:center;line-height:1;display:inline-flex}.rating .rate:hover{opacity:.8;cursor:default}.rating.is-selectable .rate:hover{cursor:pointer}.rating .rating-values{font-size:var(--font-size-sm);color:var(--rating-empty-label-color)}.rating--emoji .rating-rates{gap:var(--spacing-8)}.rating--emoji .rate--emoji{transition:transform var(--transition-fast), opacity var(--transition-fast);opacity:.55}.rating--emoji .rate--emoji.is-selected{opacity:1;transform:scale(1.15)}.rating--emoji .rate--emoji:hover{opacity:1}.rating--emoji.is-selectable .rate--emoji:hover{transform:scale(1.15)}.rating--half-selectable .rating-rates{gap:var(--spacing-4)}.rating--half-selectable .rate--half-select{align-items:center;line-height:1;display:inline-flex;position:relative}.rating--half-selectable .rate--half-select .rate-click-left,.rating--half-selectable .rate--half-select .rate-click-right{cursor:pointer;z-index:1;width:50%;position:absolute;top:0;bottom:0}.rating--half-selectable .rate--half-select .rate-click-left{left:0}.rating--half-selectable .rate--half-select .rate-click-right{right:0}.rating--half-selectable .rate--half-select:hover{opacity:.75}
@@ -0,0 +1,148 @@
1
+ import './Rating.css';
2
+ import { RatingIcon as h } from "./RatingIcon.js";
3
+ /* empty css */
4
+ import { useCallback as C } from "react";
5
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
6
+ var A = (n) => n < 0.3 ? "danger" : n < 0.6 ? "warning" : "success", I = ({ align: n = "left", emojiColorByMood: $ = !0, emojiSize: k = 28, icon: m = "star", maxRate: f = 10, onHover: g, onHoverEnd: d, onSelect: u, rating: l, selectable: p = !1, showValue: y = !0, useHalf: N = !1, variant: o = "warning" }) => {
7
+ const j = C((i) => {
8
+ p && !N && u?.(i + 1);
9
+ }, [
10
+ p,
11
+ N,
12
+ u
13
+ ]);
14
+ if (m === "emoji") return /* @__PURE__ */ t("div", {
15
+ className: `rating rating--emoji align-${n} ${p ? "is-selectable" : ""}`,
16
+ onMouseLeave: d,
17
+ children: [/* @__PURE__ */ e("span", {
18
+ className: "rating-rates",
19
+ children: Array.from({ length: f }, (i, a) => {
20
+ const s = a + 1, r = f === 1 ? 1 : a / (f - 1), c = l === s;
21
+ return /* @__PURE__ */ e("span", {
22
+ className: `rate rate--emoji${c ? " is-selected" : ""}`,
23
+ onClick: () => p && u?.(s),
24
+ onMouseEnter: () => g?.(s),
25
+ children: /* @__PURE__ */ e(h, {
26
+ filled: c ? "full" : "empty",
27
+ mood: r,
28
+ size: k,
29
+ type: "emoji",
30
+ variant: $ ? A(r) : o
31
+ })
32
+ }, a);
33
+ })
34
+ }), y && /* @__PURE__ */ t("span", {
35
+ className: "rating-values",
36
+ children: [
37
+ "(",
38
+ l,
39
+ "/",
40
+ f,
41
+ ")"
42
+ ]
43
+ })]
44
+ });
45
+ if (N && p) return /* @__PURE__ */ e("div", {
46
+ className: `rating rating--half rating--half-selectable align-${n} is-selectable`,
47
+ onMouseLeave: d,
48
+ children: /* @__PURE__ */ e("span", {
49
+ className: "rating-rates",
50
+ children: Array.from({ length: 5 }, (i, a) => {
51
+ const s = a * 2 + 1, r = a * 2 + 2, c = l >= r;
52
+ return /* @__PURE__ */ t("span", {
53
+ className: "rate rate--half-select",
54
+ children: [
55
+ /* @__PURE__ */ e(h, {
56
+ type: m,
57
+ filled: c ? "full" : !c && l >= s ? "half" : "empty",
58
+ variant: o,
59
+ size: 24
60
+ }),
61
+ /* @__PURE__ */ e("span", {
62
+ className: "rate-click-left",
63
+ onClick: () => u?.(s),
64
+ onMouseEnter: () => g?.(s)
65
+ }),
66
+ /* @__PURE__ */ e("span", {
67
+ className: "rate-click-right",
68
+ onClick: () => u?.(r),
69
+ onMouseEnter: () => g?.(r)
70
+ })
71
+ ]
72
+ }, a);
73
+ })
74
+ })
75
+ });
76
+ if (N) {
77
+ const i = l / 2, a = Math.floor(i), s = i % 1 >= 0.5, r = 5 - a - (s ? 1 : 0);
78
+ return /* @__PURE__ */ t("div", {
79
+ className: `rating rating--half align-${n}`,
80
+ onMouseLeave: d,
81
+ children: [/* @__PURE__ */ t("span", {
82
+ className: "rating-rates",
83
+ children: [
84
+ Array.from({ length: a }, (c, M) => /* @__PURE__ */ e("span", {
85
+ className: "rate",
86
+ children: /* @__PURE__ */ e(h, {
87
+ type: m,
88
+ filled: "full",
89
+ variant: o
90
+ })
91
+ }, `full-${M}`)),
92
+ s && /* @__PURE__ */ e("span", {
93
+ className: "rate",
94
+ children: /* @__PURE__ */ e(h, {
95
+ type: m,
96
+ filled: "half",
97
+ variant: o
98
+ })
99
+ }),
100
+ Array.from({ length: r }, (c, M) => /* @__PURE__ */ e("span", {
101
+ className: "rate",
102
+ children: /* @__PURE__ */ e(h, {
103
+ type: m,
104
+ filled: "empty",
105
+ variant: o
106
+ })
107
+ }, `empty-${M}`))
108
+ ]
109
+ }), y && /* @__PURE__ */ t("span", {
110
+ className: "rating-values",
111
+ children: [
112
+ "(",
113
+ String(l / 2),
114
+ "/5)"
115
+ ]
116
+ })]
117
+ });
118
+ }
119
+ return /* @__PURE__ */ t("div", {
120
+ className: `rating rating--full align-${n} ${p ? "is-selectable" : ""}`,
121
+ onMouseLeave: d,
122
+ children: [/* @__PURE__ */ e("span", {
123
+ className: "rating-rates",
124
+ children: Array.from({ length: f }, (i, a) => /* @__PURE__ */ e("span", {
125
+ className: "rate",
126
+ onClick: () => j(a),
127
+ onMouseEnter: () => g?.(a + 1),
128
+ children: /* @__PURE__ */ e(h, {
129
+ type: m,
130
+ filled: a < l ? "full" : "empty",
131
+ variant: o
132
+ })
133
+ }, a))
134
+ }), y && /* @__PURE__ */ t("span", {
135
+ className: "rating-values",
136
+ children: [
137
+ "(",
138
+ l,
139
+ "/",
140
+ f,
141
+ ")"
142
+ ]
143
+ })]
144
+ });
145
+ };
146
+ export {
147
+ I as Rating
148
+ };
@@ -0,0 +1,102 @@
1
+ import { useId as u } from "react";
2
+ import { jsx as r, jsxs as c } from "react/jsx-runtime";
3
+ var p = {
4
+ success: "var(--rating-color-success)",
5
+ info: "var(--rating-color-info)",
6
+ warning: "var(--rating-color-warning)",
7
+ danger: "var(--rating-color-danger)"
8
+ }, m = 7.5, M = 16.5, e = 15.5, w = -4, O = 4.5, $ = ({ type: i, filled: l, variant: v, size: t = 16, mood: f = 1 }) => {
9
+ const h = `rating-grad-${u()}`, g = p[v], d = "var(--rating-empty-color)", a = l === "full" ? g : l === "half" ? `url(#${h})` : d, s = () => l === "half" ? /* @__PURE__ */ r("defs", { children: /* @__PURE__ */ c("linearGradient", {
10
+ id: h,
11
+ x1: "0",
12
+ x2: "1",
13
+ y1: "0",
14
+ y2: "0",
15
+ children: [/* @__PURE__ */ r("stop", {
16
+ offset: "50%",
17
+ stopColor: g
18
+ }), /* @__PURE__ */ r("stop", {
19
+ offset: "50%",
20
+ stopColor: d
21
+ })]
22
+ }) }) : null;
23
+ if (i === "star") return /* @__PURE__ */ c("svg", {
24
+ width: t,
25
+ height: t,
26
+ viewBox: "0 0 24 24",
27
+ xmlns: "http://www.w3.org/2000/svg",
28
+ children: [/* @__PURE__ */ r(s, {}), /* @__PURE__ */ r("polygon", {
29
+ points: "12,2 15.09,8.26 22,9.27 17,14.14 18.18,21.02 12,17.77 5.82,21.02 7,14.14 2,9.27 8.91,8.26",
30
+ fill: a
31
+ })]
32
+ });
33
+ if (i === "bullet") return /* @__PURE__ */ c("svg", {
34
+ width: t,
35
+ height: t,
36
+ viewBox: "0 0 24 24",
37
+ xmlns: "http://www.w3.org/2000/svg",
38
+ children: [/* @__PURE__ */ r(s, {}), /* @__PURE__ */ r("circle", {
39
+ cx: "12",
40
+ cy: "12",
41
+ r: "10",
42
+ fill: a
43
+ })]
44
+ });
45
+ if (i === "emoji") {
46
+ const n = e + (w + (O - w) * Math.min(1, Math.max(0, f))), o = "var(--card-background-color)";
47
+ return /* @__PURE__ */ c("svg", {
48
+ width: t,
49
+ height: t,
50
+ viewBox: "0 0 24 24",
51
+ xmlns: "http://www.w3.org/2000/svg",
52
+ children: [
53
+ /* @__PURE__ */ r("circle", {
54
+ cx: "12",
55
+ cy: "12",
56
+ r: "10",
57
+ fill: a
58
+ }),
59
+ /* @__PURE__ */ r("circle", {
60
+ cx: "8.5",
61
+ cy: "9.5",
62
+ r: "1.2",
63
+ fill: o
64
+ }),
65
+ /* @__PURE__ */ r("circle", {
66
+ cx: "15.5",
67
+ cy: "9.5",
68
+ r: "1.2",
69
+ fill: o
70
+ }),
71
+ /* @__PURE__ */ r("path", {
72
+ d: `M ${m} ${e} Q 12 ${n} ${M} ${e}`,
73
+ fill: "none",
74
+ stroke: o,
75
+ strokeWidth: "1.6",
76
+ strokeLinecap: "round"
77
+ })
78
+ ]
79
+ });
80
+ }
81
+ if (i === "bar") {
82
+ const n = Math.round(t * 1.75), o = Math.round(t * 0.5625), x = o / 2;
83
+ return /* @__PURE__ */ c("svg", {
84
+ width: n,
85
+ height: o,
86
+ viewBox: `0 0 ${n} ${o}`,
87
+ xmlns: "http://www.w3.org/2000/svg",
88
+ children: [/* @__PURE__ */ r(s, {}), /* @__PURE__ */ r("rect", {
89
+ x: "0",
90
+ y: "0",
91
+ width: n,
92
+ height: o,
93
+ rx: x,
94
+ fill: a
95
+ })]
96
+ });
97
+ }
98
+ return null;
99
+ };
100
+ export {
101
+ $ as RatingIcon
102
+ };
@@ -0,0 +1 @@
1
+ .rte-wrapper{gap:var(--spacing-4);flex-direction:column;width:100%;display:flex}.rte-wrapper .rte-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)}.rte-wrapper .rte-label .rte-required{color:var(--body-danger-color,#dc2626);margin-left:var(--spacing-2)}.rte-wrapper .rte-container{border:var(--spacing-1) solid var(--form-control-border-color);border-radius:var(--radius-sm);background-color:var(--form-control-background-color);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);flex-direction:column;display:flex}.rte-wrapper .rte-container:focus-within{border-color:var(--form-control-focus-border-color);box-shadow:0 0 0 var(--spacing-2) var(--box-shadow)}.rte-wrapper .rte-container.rte-container--error{border-color:var(--body-danger-color)}.rte-wrapper .rte-container.rte-container--error:focus-within{border-color:var(--body-danger-color);box-shadow:0 0 0 var(--spacing-2) var(--box-shadow)}.rte-wrapper .rte-toolbar{align-items:center;gap:var(--spacing-4);padding:var(--spacing-8) var(--spacing-8);border-bottom:var(--spacing-1) solid var(--form-control-border-color);background-color:var(--form-control-background-color);border-radius:var(--radius-sm) var(--radius-sm) 0 0;flex-wrap:wrap;display:flex}.rte-wrapper .rte-toolbar-group{align-items:center;gap:var(--spacing-2);display:flex}.rte-wrapper .rte-toolbar-divider{width:var(--spacing-1);height:var(--spacing-20);background-color:var(--form-control-border-color);border-radius:var(--radius-full);margin:0 var(--spacing-2)}.rte-wrapper .rte-toolbar-btn{padding:var(--spacing-4) var(--spacing-8);min-width:var(--spacing-24);height:var(--spacing-24);border:var(--spacing-1) solid transparent;border-radius:var(--radius-sm);color:var(--form-control-color);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);line-height:var(--line-height-none);cursor:pointer;white-space:nowrap;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);-webkit-user-select:none;user-select:none;background:0 0;justify-content:center;align-items:center;display:inline-flex}.rte-wrapper .rte-toolbar-btn:hover{background-color:var(--button-default-hover-background-color);border-color:var(--button-default-hover-border-color);color:var(--button-default-hover-color)}.rte-wrapper .rte-toolbar-btn--active{background-color:var(--form-control-selection-background-color);border-color:var(--form-control-selection-border-color);color:var(--form-control-selection-color)}.rte-wrapper .rte-toolbar-btn--active:hover{background-color:var(--form-control-focus-border-color);border-color:var(--form-control-focus-border-color);color:var(--form-control-selection-color)}.rte-wrapper .rte-toolbar-btn--heading{font-size:var(--font-size-xxs);font-weight:var(--font-weight-bold);min-width:var(--spacing-20);padding:var(--spacing-4)}.rte-wrapper .rte-link-prompt{align-items:center;gap:var(--spacing-8);padding:var(--spacing-8) var(--spacing-12);background-color:var(--form-control-focus-background-color);border-bottom:var(--spacing-1) solid var(--form-control-border-color);animation:rte-slide-down var(--duration-fade) ease;flex-wrap:wrap;display:flex}.rte-wrapper .rte-link-input{min-width:var(--spacing-200);padding:var(--spacing-4) var(--spacing-8);border:var(--spacing-1) solid var(--form-control-border-color);border-radius:var(--radius-sm);background-color:var(--form-control-background-color);color:var(--form-control-color);font-size:var(--font-size-sm);flex:1}.rte-wrapper .rte-link-input:focus{border-color:var(--form-control-focus-border-color);outline:none}.rte-wrapper .rte-link-input::placeholder{color:var(--form-control-placeholder-color)}.rte-wrapper .rte-link-actions{gap:var(--spacing-4);display:flex}.rte-wrapper .rte-link-btn{padding:var(--spacing-4) var(--spacing-12);border-radius:var(--radius-sm);border:var(--spacing-1) solid transparent;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:background-color var(--transition-fast)}.rte-wrapper .rte-link-btn--confirm{background-color:var(--button-info-background-color);border-color:var(--button-info-border-color);color:var(--button-info-color)}.rte-wrapper .rte-link-btn--confirm:hover{background-color:var(--button-info-hover-background-color);border-color:var(--button-info-hover-border-color)}.rte-wrapper .rte-link-btn--cancel{background-color:var(--button-default-background-color);border-color:var(--button-default-border-color);color:var(--button-default-color)}.rte-wrapper .rte-link-btn--cancel:hover{background-color:var(--button-default-hover-background-color);border-color:var(--button-default-hover-border-color)}.rte-wrapper .rte-editor{min-height:var(--spacing-200);padding:var(--spacing-12);color:var(--form-control-color);font-size:var(--font-size-sm);line-height:var(--line-height-normal);border-radius:0 0 var(--radius-sm) var(--radius-sm);outline:none;overflow-y:auto}.rte-wrapper .rte-editor:empty:before{content:attr(data-placeholder);color:var(--form-control-placeholder-color);pointer-events:none}.rte-wrapper .rte-editor h1{font-size:var(--font-size-xxl);font-weight:var(--font-weight-bold);margin:var(--spacing-8) 0}.rte-wrapper .rte-editor h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin:var(--spacing-8) 0}.rte-wrapper .rte-editor h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin:var(--spacing-8) 0}.rte-wrapper .rte-editor h4{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);margin:var(--spacing-8) 0}.rte-wrapper .rte-editor h5{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);margin:var(--spacing-8) 0}.rte-wrapper .rte-editor h6{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);margin:var(--spacing-8) 0}.rte-wrapper .rte-editor p{margin:0 0 var(--spacing-8) 0}.rte-wrapper .rte-editor a{color:var(--links-color);text-decoration:underline}.rte-wrapper .rte-editor a:hover{color:var(--links-hover-color)}.rte-wrapper .rte-editor ul,.rte-wrapper .rte-editor ol{padding-left:var(--spacing-24);margin:0 0 var(--spacing-8) 0}.rte-wrapper .rte-editor ul.rte-task-list{padding-left:var(--spacing-8);list-style:none}.rte-wrapper .rte-editor ul.rte-task-list li{align-items:center;gap:var(--spacing-4);display:flex}.rte-wrapper .rte-editor code{background-color:var(--form-control-focus-background-color);border:var(--spacing-1) solid var(--form-control-border-color);border-radius:var(--radius-sm);padding:0 var(--spacing-4);font-size:var(--font-size-xs);font-family:var(--font-family-mono)}.rte-wrapper .rte-editor pre{background-color:var(--form-control-focus-background-color);border:var(--spacing-1) solid var(--form-control-border-color);border-radius:var(--radius-sm);padding:var(--spacing-12);font-size:var(--font-size-xs);font-family:var(--font-family-mono);margin:0 0 var(--spacing-8) 0;overflow-x:auto}.rte-wrapper .rte-editor table.rte-table{border-collapse:collapse;width:100%;margin:0 0 var(--spacing-8) 0;font-size:var(--font-size-sm)}.rte-wrapper .rte-editor table.rte-table th,.rte-wrapper .rte-editor table.rte-table td{border:var(--spacing-1) solid var(--form-control-border-color);padding:var(--spacing-8) var(--spacing-12);text-align:left;min-width:var(--spacing-80)}.rte-wrapper .rte-editor table.rte-table th{background-color:var(--form-control-focus-background-color);font-weight:var(--font-weight-semibold)}.rte-wrapper .rte-error-message{font-size:var(--font-size-xs);color:var(--body-danger-color)}@keyframes rte-slide-down{0%{opacity:0;transform:translateY(-var(--spacing-4))}to{opacity:1;transform:translateY(0)}}.rte-table-toolbar{z-index:10;align-items:center;gap:var(--spacing-4);padding:var(--spacing-4) var(--spacing-8);background-color:var(--form-control-background-color);border:var(--spacing-1) solid var(--form-control-border-color);border-radius:var(--radius-sm);box-shadow:0 2px 8px var(--box-shadow);animation:rte-slide-down var(--duration-hover) ease;pointer-events:all;display:flex;position:absolute}.rte-table-toolbar-group{align-items:center;gap:var(--spacing-2);display:flex}.rte-table-toolbar-divider{width:var(--spacing-1);height:var(--spacing-16);background-color:var(--form-control-border-color);border-radius:var(--radius-full);margin:0 var(--spacing-2)}.rte-table-toolbar-btn{padding:var(--spacing-4) var(--spacing-8);height:var(--spacing-24);border:var(--spacing-1) solid transparent;border-radius:var(--radius-sm);color:var(--form-control-color);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);line-height:var(--line-height-none);cursor:pointer;white-space:nowrap;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);background:0 0;justify-content:center;align-items:center;display:inline-flex}.rte-table-toolbar-btn:hover{background-color:var(--button-default-hover-background-color);border-color:var(--button-default-hover-border-color);color:var(--button-default-hover-color)}.rte-table-toolbar-btn--danger{color:var(--body-danger-color)}.rte-table-toolbar-btn--danger:hover{background-color:var(--button-danger-background-color);border-color:var(--button-danger-border-color);color:var(--button-danger-color)}