@hanzo/ui 0.5.24 → 0.6.15

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 (568) hide show
  1. package/.eslintrc.js +4 -0
  2. package/.prettierrc +22 -0
  3. package/.rush/temp/chunked-rush-logs/ui._phase_build.chunks.jsonl +2 -0
  4. package/.rush/temp/chunked-rush-logs/ui._phase_validate.chunks.jsonl +11 -0
  5. package/.rush/temp/hcengineering+ui-_phase_build-16380278e5d28b32a6666092bd103ddbd2c66a56.tar.log +12 -0
  6. package/.rush/temp/hcengineering+ui-_phase_build-16380278e5d28b32a6666092bd103ddbd2c66a56.untar.log +10 -0
  7. package/.rush/temp/hcengineering+ui-_phase_validate-8f047ca66e6a4a177eee65782e723a7dc128d73e.tar.log +65 -0
  8. package/.rush/temp/hcengineering+ui-_phase_validate-8f047ca66e6a4a177eee65782e723a7dc128d73e.untar.log +10 -0
  9. package/.rush/temp/operation/_phase_build/all.log +2 -0
  10. package/.rush/temp/operation/_phase_build/log-chunks.jsonl +2 -0
  11. package/.rush/temp/operation/_phase_build/state.json +3 -0
  12. package/.rush/temp/operation/_phase_validate/all.log +11 -0
  13. package/.rush/temp/operation/_phase_validate/log-chunks.jsonl +11 -0
  14. package/.rush/temp/operation/_phase_validate/state.json +3 -0
  15. package/.rush/temp/shrinkwrap-deps.json +585 -0
  16. package/.validate/tsBuildInfoFile.info +1 -0
  17. package/.validate/validate-err.log +0 -0
  18. package/.validate/validate.log +0 -0
  19. package/CHANGELOG.json +17 -0
  20. package/CHANGELOG.md +9 -0
  21. package/config/rig.json +5 -0
  22. package/jest.config.js +5 -0
  23. package/lang/cs.json +119 -0
  24. package/lang/de.json +119 -0
  25. package/lang/en.json +120 -0
  26. package/lang/es.json +120 -0
  27. package/lang/fr.json +120 -0
  28. package/lang/it.json +120 -0
  29. package/lang/pt.json +120 -0
  30. package/lang/ru.json +120 -0
  31. package/lang/zh.json +120 -0
  32. package/package.json +52 -100
  33. package/postcss.config.js +5 -0
  34. package/rush-logs/ui._phase_build.cache.log +4 -0
  35. package/rush-logs/ui._phase_build.log +2 -0
  36. package/rush-logs/ui._phase_validate.cache.log +4 -0
  37. package/rush-logs/ui._phase_validate.log +11 -0
  38. package/src/__test__/location.test.ts +12 -0
  39. package/src/colors.ts +552 -0
  40. package/src/components/AccordionItem.svelte +132 -0
  41. package/src/components/ActionIcon.svelte +88 -0
  42. package/src/components/BarDashboard.svelte +47 -0
  43. package/src/components/BooleanIcon.svelte +31 -0
  44. package/src/components/Breadcrumb.svelte +102 -0
  45. package/src/components/Breadcrumbs.svelte +73 -0
  46. package/src/components/Button.svelte +196 -0
  47. package/src/components/ButtonBase.svelte +117 -0
  48. package/src/components/ButtonGroup.svelte +48 -0
  49. package/src/components/ButtonIcon.svelte +63 -0
  50. package/src/components/ButtonMenu.svelte +103 -0
  51. package/src/components/ButtonWithDropdown.svelte +120 -0
  52. package/src/components/CheckBox.svelte +239 -0
  53. package/src/components/CheckBoxList.svelte.txt +88 -0
  54. package/src/components/CheckBoxWithLabel.svelte.txt +147 -0
  55. package/src/components/Chevron.svelte +85 -0
  56. package/src/components/Chip.svelte +109 -0
  57. package/src/components/CircleButton.svelte +165 -0
  58. package/src/components/CodeForm.svelte +164 -0
  59. package/src/components/CodeInput.svelte +86 -0
  60. package/src/components/ColorPopup.svelte +119 -0
  61. package/src/components/Component.svelte +152 -0
  62. package/src/components/Dialog.svelte +105 -0
  63. package/src/components/Dock.svelte +53 -0
  64. package/src/components/Dropdown.svelte +91 -0
  65. package/src/components/DropdownLabels.svelte +156 -0
  66. package/src/components/DropdownLabelsIntl.svelte +108 -0
  67. package/src/components/DropdownLabelsPopup.svelte +148 -0
  68. package/src/components/DropdownLabelsPopupIntl.svelte +72 -0
  69. package/src/components/DropdownPopup.svelte +146 -0
  70. package/src/components/DropdownRecord.svelte +50 -0
  71. package/src/components/DropdownRecordPopup.svelte +82 -0
  72. package/src/components/EditBox.svelte +211 -0
  73. package/src/components/EditWithIcon.svelte +130 -0
  74. package/src/components/EmbeddedPDF.svelte +88 -0
  75. package/src/components/ErrorPopup.svelte +27 -0
  76. package/src/components/ErrorPresenter.svelte +32 -0
  77. package/src/components/ExpandCollapse.svelte +42 -0
  78. package/src/components/Expandable.svelte +90 -0
  79. package/src/components/FocusHandler.svelte +21 -0
  80. package/src/components/Fold.svelte +52 -0
  81. package/src/components/Grid.svelte +39 -0
  82. package/src/components/Header.svelte +260 -0
  83. package/src/components/HlsVideo.svelte +170 -0
  84. package/src/components/Hotkey.svelte +50 -0
  85. package/src/components/HotkeyGroup.svelte +25 -0
  86. package/src/components/Html.svelte +24 -0
  87. package/src/components/Icon.svelte +45 -0
  88. package/src/components/IconWithEmoji.svelte +74 -0
  89. package/src/components/Image.svelte +71 -0
  90. package/src/components/Label.svelte +38 -0
  91. package/src/components/Lazy.svelte +29 -0
  92. package/src/components/Like.svelte +73 -0
  93. package/src/components/Link.svelte +75 -0
  94. package/src/components/LinkWrapper.svelte +35 -0
  95. package/src/components/ListView.svelte +153 -0
  96. package/src/components/ListViewItem.svelte +84 -0
  97. package/src/components/Loading.svelte +88 -0
  98. package/src/components/Menu.svelte +205 -0
  99. package/src/components/MiniToggle.svelte +125 -0
  100. package/src/components/Modal.svelte +117 -0
  101. package/src/components/ModeSelector.svelte +37 -0
  102. package/src/components/ModernButton.svelte +61 -0
  103. package/src/components/ModernCheckbox.svelte +123 -0
  104. package/src/components/ModernDialog.svelte +258 -0
  105. package/src/components/ModernEditbox.svelte +256 -0
  106. package/src/components/ModernPopup.svelte +105 -0
  107. package/src/components/ModernRadioButton.svelte +111 -0
  108. package/src/components/ModernTab.svelte +184 -0
  109. package/src/components/ModernToggle.svelte +153 -0
  110. package/src/components/MouseSpeedTracker.svelte +74 -0
  111. package/src/components/MultiProgress.svelte +97 -0
  112. package/src/components/NavGroup.svelte +160 -0
  113. package/src/components/NavItem.svelte +346 -0
  114. package/src/components/NestedDropdown.svelte +62 -0
  115. package/src/components/NestedMenu.svelte +119 -0
  116. package/src/components/NotificationToast.svelte +112 -0
  117. package/src/components/NumberInput.svelte +200 -0
  118. package/src/components/Panel.svelte +324 -0
  119. package/src/components/PanelInstance.svelte +254 -0
  120. package/src/components/PlainTextEditor.svelte +100 -0
  121. package/src/components/Popup.svelte +50 -0
  122. package/src/components/PopupInstance.svelte +390 -0
  123. package/src/components/PopupMenu.svelte +120 -0
  124. package/src/components/Progress.svelte +124 -0
  125. package/src/components/ProgressCircle.svelte +71 -0
  126. package/src/components/RadioButton.svelte +69 -0
  127. package/src/components/RadioGroup.svelte +42 -0
  128. package/src/components/RootStatusComponent.svelte +65 -0
  129. package/src/components/Row.svelte +25 -0
  130. package/src/components/ScrollBox.svelte +98 -0
  131. package/src/components/Scroller.svelte +1063 -0
  132. package/src/components/ScrollerBar.svelte +181 -0
  133. package/src/components/SearchEdit.svelte +46 -0
  134. package/src/components/SearchInput.svelte +213 -0
  135. package/src/components/SearchPicker.svelte +114 -0
  136. package/src/components/Section.svelte +49 -0
  137. package/src/components/SectionEmpty.svelte +38 -0
  138. package/src/components/SelectBox.svelte +76 -0
  139. package/src/components/SelectPopup.svelte +217 -0
  140. package/src/components/Separator.svelte +736 -0
  141. package/src/components/ShowMore.svelte +99 -0
  142. package/src/components/Spinner.svelte +72 -0
  143. package/src/components/SplitButton.svelte +100 -0
  144. package/src/components/StateTag.svelte +79 -0
  145. package/src/components/Status.svelte +33 -0
  146. package/src/components/StepsDialog.svelte +290 -0
  147. package/src/components/StylishEdit.svelte +127 -0
  148. package/src/components/Submenu.svelte +68 -0
  149. package/src/components/Switcher.svelte +55 -0
  150. package/src/components/SwitcherBase.svelte +116 -0
  151. package/src/components/TabList.svelte +290 -0
  152. package/src/components/Tabs.svelte +45 -0
  153. package/src/components/TabsControl.svelte +113 -0
  154. package/src/components/TextArea.svelte +110 -0
  155. package/src/components/TextAreaEditor.svelte +78 -0
  156. package/src/components/TimeLeft.svelte +66 -0
  157. package/src/components/TimeShiftPicker.svelte +84 -0
  158. package/src/components/TimeShiftPopup.svelte +64 -0
  159. package/src/components/TimeShiftPresenter.svelte +59 -0
  160. package/src/components/TimeSince.svelte +86 -0
  161. package/src/components/TimeZonesPopup.svelte +185 -0
  162. package/src/components/Timeline.svelte +754 -0
  163. package/src/components/Toggle.svelte +116 -0
  164. package/src/components/ToggleButton.svelte +176 -0
  165. package/src/components/ToggleWithLabel.svelte +58 -0
  166. package/src/components/TooltipInstance.svelte +613 -0
  167. package/src/components/Video.svelte +40 -0
  168. package/src/components/calendar/DateInputBox.svelte +430 -0
  169. package/src/components/calendar/DatePicker.svelte +46 -0
  170. package/src/components/calendar/DatePopup.svelte +274 -0
  171. package/src/components/calendar/DatePresenter.svelte +392 -0
  172. package/src/components/calendar/DateRangePicker.svelte +50 -0
  173. package/src/components/calendar/DateRangePopup.svelte +76 -0
  174. package/src/components/calendar/DateRangePresenter.svelte +779 -0
  175. package/src/components/calendar/DateTimePresenter.svelte +23 -0
  176. package/src/components/calendar/DateTimeRangePresenter.svelte +28 -0
  177. package/src/components/calendar/DueDatePopup.svelte +93 -0
  178. package/src/components/calendar/DueDatePresenter.svelte +83 -0
  179. package/src/components/calendar/Month.svelte +243 -0
  180. package/src/components/calendar/MonthCalendar.svelte +138 -0
  181. package/src/components/calendar/MonthSquare.svelte +315 -0
  182. package/src/components/calendar/RangeDatePopup.svelte +231 -0
  183. package/src/components/calendar/Shifts.svelte +114 -0
  184. package/src/components/calendar/SimpleDatePopup.svelte +42 -0
  185. package/src/components/calendar/SimpleTimePopup.svelte +41 -0
  186. package/src/components/calendar/TimeInputBox.svelte +282 -0
  187. package/src/components/calendar/TimePopup.svelte +62 -0
  188. package/src/components/calendar/WeekCalendar.svelte +116 -0
  189. package/src/components/calendar/YearCalendar.svelte +67 -0
  190. package/src/components/calendar/icons/DPCalendar.svelte +12 -0
  191. package/src/components/calendar/icons/DPCalendarOver.svelte +15 -0
  192. package/src/components/calendar/icons/DPClock.svelte +13 -0
  193. package/src/components/calendar/icons/DPClockBold.svelte +10 -0
  194. package/src/components/calendar/icons/DPEnd.svelte +13 -0
  195. package/src/components/calendar/icons/DPSetCalendar.svelte +10 -0
  196. package/src/components/calendar/icons/DPStart.svelte +13 -0
  197. package/src/components/calendar/internal/DateUtils.ts +186 -0
  198. package/src/components/emoji/ActionsPopup.svelte +116 -0
  199. package/src/components/emoji/EmojiButton.svelte +146 -0
  200. package/src/components/emoji/EmojiGroup.svelte +105 -0
  201. package/src/components/emoji/EmojiGroupPalette.svelte +58 -0
  202. package/src/components/emoji/EmojiPopup.svelte +430 -0
  203. package/src/components/emoji/SkinTonePopup.svelte +40 -0
  204. package/src/components/emoji/SkinToneTooltip.svelte +36 -0
  205. package/src/components/emoji/icons/Activities.svelte +20 -0
  206. package/src/components/emoji/icons/AnimalsAndNature.svelte +16 -0
  207. package/src/components/emoji/icons/Flags.svelte +14 -0
  208. package/src/components/emoji/icons/FoodAndDrink.svelte +20 -0
  209. package/src/components/emoji/icons/FrequentlyUsed.svelte +17 -0
  210. package/src/components/emoji/icons/GettingWorkDone.svelte +14 -0
  211. package/src/components/emoji/icons/Objects.svelte +15 -0
  212. package/src/components/emoji/icons/Search.svelte +14 -0
  213. package/src/components/emoji/icons/SmileysAndPeople.svelte +23 -0
  214. package/src/components/emoji/icons/Symbols.svelte +23 -0
  215. package/src/components/emoji/icons/TravelAndPlaces.svelte +17 -0
  216. package/src/components/emoji/index.ts +97 -0
  217. package/src/components/emoji/store.ts +44 -0
  218. package/src/components/emoji/types.ts +34 -0
  219. package/src/components/emoji/utils.ts +182 -0
  220. package/src/components/icons/Activity.svelte +16 -0
  221. package/src/components/icons/ActivityEdit.svelte +25 -0
  222. package/src/components/icons/Add.svelte +10 -0
  223. package/src/components/icons/ArrowLeft.svelte +25 -0
  224. package/src/components/icons/ArrowRight.svelte +25 -0
  225. package/src/components/icons/Attachment.svelte +29 -0
  226. package/src/components/icons/Back.svelte +32 -0
  227. package/src/components/icons/BlueCheck.svelte +11 -0
  228. package/src/components/icons/Calendar.svelte +10 -0
  229. package/src/components/icons/Check.svelte +12 -0
  230. package/src/components/icons/CheckAll.svelte +27 -0
  231. package/src/components/icons/CheckCircle.svelte +12 -0
  232. package/src/components/icons/Checkmark.svelte +26 -0
  233. package/src/components/icons/ChevronDown.svelte +27 -0
  234. package/src/components/icons/ChevronLeft.svelte +22 -0
  235. package/src/components/icons/ChevronRight.svelte +22 -0
  236. package/src/components/icons/CircleAdd.svelte +13 -0
  237. package/src/components/icons/Circles.svelte +43 -0
  238. package/src/components/icons/Close.svelte +10 -0
  239. package/src/components/icons/ColStar.svelte +31 -0
  240. package/src/components/icons/CollapseArrow.svelte +8 -0
  241. package/src/components/icons/Copy.svelte +10 -0
  242. package/src/components/icons/Delete.svelte +18 -0
  243. package/src/components/icons/Description.svelte +31 -0
  244. package/src/components/icons/Details.svelte +36 -0
  245. package/src/components/icons/DetailsFilled.svelte +27 -0
  246. package/src/components/icons/Down.svelte +8 -0
  247. package/src/components/icons/DownOutline.svelte +8 -0
  248. package/src/components/icons/Dropdown.svelte +8 -0
  249. package/src/components/icons/DropdownDown.svelte +24 -0
  250. package/src/components/icons/DropdownRight.svelte +24 -0
  251. package/src/components/icons/Edit.svelte +26 -0
  252. package/src/components/icons/Emoji.svelte +10 -0
  253. package/src/components/icons/Error.svelte +27 -0
  254. package/src/components/icons/Expand.svelte +10 -0
  255. package/src/components/icons/File.svelte +25 -0
  256. package/src/components/icons/Filter.svelte +26 -0
  257. package/src/components/icons/Folder.svelte +13 -0
  258. package/src/components/icons/FolderCollapsed.svelte +34 -0
  259. package/src/components/icons/FolderExpanded.svelte +34 -0
  260. package/src/components/icons/Forward.svelte +8 -0
  261. package/src/components/icons/HalfUpDown.svelte +7 -0
  262. package/src/components/icons/History.svelte +10 -0
  263. package/src/components/icons/Info.svelte +26 -0
  264. package/src/components/icons/KeyCommand.svelte +12 -0
  265. package/src/components/icons/KeyOption.svelte +8 -0
  266. package/src/components/icons/KeyShift.svelte +8 -0
  267. package/src/components/icons/Left.svelte +10 -0
  268. package/src/components/icons/Like.svelte +25 -0
  269. package/src/components/icons/Link.svelte +10 -0
  270. package/src/components/icons/MaxWidth.svelte +27 -0
  271. package/src/components/icons/Maximize.svelte +25 -0
  272. package/src/components/icons/MenuClose.svelte +28 -0
  273. package/src/components/icons/MenuOpen.svelte +26 -0
  274. package/src/components/icons/MinWidth.svelte +27 -0
  275. package/src/components/icons/Minimize.svelte +28 -0
  276. package/src/components/icons/Mixin.svelte +38 -0
  277. package/src/components/icons/MoreH.svelte +16 -0
  278. package/src/components/icons/MoreV.svelte +16 -0
  279. package/src/components/icons/MoreV2.svelte +29 -0
  280. package/src/components/icons/NavNext.svelte +10 -0
  281. package/src/components/icons/NavPrev.svelte +10 -0
  282. package/src/components/icons/Open.svelte +11 -0
  283. package/src/components/icons/OpenedArrow.svelte +26 -0
  284. package/src/components/icons/Options.svelte +12 -0
  285. package/src/components/icons/Redo.svelte +10 -0
  286. package/src/components/icons/Right.svelte +26 -0
  287. package/src/components/icons/Scale.svelte +13 -0
  288. package/src/components/icons/ScaleFull.svelte +13 -0
  289. package/src/components/icons/Scribble.svelte +10 -0
  290. package/src/components/icons/Search.svelte +12 -0
  291. package/src/components/icons/Send.svelte +10 -0
  292. package/src/components/icons/Settings.svelte +13 -0
  293. package/src/components/icons/Share.svelte +13 -0
  294. package/src/components/icons/SquareExpand.svelte +13 -0
  295. package/src/components/icons/Start.svelte +10 -0
  296. package/src/components/icons/Stop.svelte +8 -0
  297. package/src/components/icons/TableOfContents.svelte +35 -0
  298. package/src/components/icons/Thread.svelte +29 -0
  299. package/src/components/icons/ToDetails.svelte +28 -0
  300. package/src/components/icons/Undo.svelte +10 -0
  301. package/src/components/icons/Up.svelte +8 -0
  302. package/src/components/icons/UpOutline.svelte +8 -0
  303. package/src/components/internal/Clock.svelte +42 -0
  304. package/src/components/internal/ClockFace.svelte +148 -0
  305. package/src/components/internal/ClockPopup.svelte +91 -0
  306. package/src/components/internal/ErrorBoundary.ts +33 -0
  307. package/src/components/internal/ErrorComponent.svelte +37 -0
  308. package/src/components/internal/Root.svelte +323 -0
  309. package/src/components/internal/RootBarExtension.svelte +32 -0
  310. package/src/components/internal/Settings.svelte +39 -0
  311. package/src/components/internal/SettingsPopup.svelte +196 -0
  312. package/src/components/internal/ThemeButton.svelte +151 -0
  313. package/src/components/internal/icons/CheckCircled.svelte +11 -0
  314. package/src/components/internal/icons/Computer.svelte +15 -0
  315. package/src/components/internal/icons/FontSize.svelte +13 -0
  316. package/src/components/internal/icons/Language.svelte +17 -0
  317. package/src/components/internal/icons/Phone.svelte +18 -0
  318. package/src/components/internal/icons/Search.svelte +12 -0
  319. package/src/components/internal/icons/Settings.svelte +13 -0
  320. package/src/components/internal/icons/Theme.svelte +9 -0
  321. package/src/components/internal/icons/WiFi.svelte +21 -0
  322. package/src/components/notifications/Notification.svelte +34 -0
  323. package/src/components/notifications/Notification.ts +16 -0
  324. package/src/components/notifications/NotificationPosition.ts +6 -0
  325. package/src/components/notifications/NotificationSeverity.ts +6 -0
  326. package/src/components/notifications/Notifications.svelte +53 -0
  327. package/src/components/notifications/actions.ts +42 -0
  328. package/src/components/notifications/store.ts +16 -0
  329. package/src/components/wizard/ModernWizardBar.svelte +105 -0
  330. package/src/components/wizard/ModernWizardDialog.svelte +144 -0
  331. package/src/components/wizard/Wizard.svelte +59 -0
  332. package/src/components/wizard/WizardStep.svelte +144 -0
  333. package/src/focus.ts +139 -0
  334. package/src/index.ts +338 -0
  335. package/src/lazy.ts +93 -0
  336. package/src/location.ts +259 -0
  337. package/src/modals.ts +5 -0
  338. package/src/panelup.ts +70 -0
  339. package/src/plugin.ts +156 -0
  340. package/src/popups.ts +486 -0
  341. package/src/resize.ts +179 -0
  342. package/src/svg.d.ts +4 -0
  343. package/src/tooltips.ts +152 -0
  344. package/src/types.ts +545 -0
  345. package/src/utils.ts +420 -0
  346. package/svelte.config.js +5 -0
  347. package/tsconfig.json +9 -0
  348. package/types/__test__/location.test.d.ts +2 -0
  349. package/types/__test__/location.test.d.ts.map +1 -0
  350. package/types/colors.d.ts +163 -0
  351. package/types/colors.d.ts.map +1 -0
  352. package/types/components/calendar/internal/DateUtils.d.ts +34 -0
  353. package/types/components/calendar/internal/DateUtils.d.ts.map +1 -0
  354. package/types/components/emoji/index.d.ts +11 -0
  355. package/types/components/emoji/index.d.ts.map +1 -0
  356. package/types/components/emoji/store.d.ts +12 -0
  357. package/types/components/emoji/store.d.ts.map +1 -0
  358. package/types/components/emoji/types.d.ts +20 -0
  359. package/types/components/emoji/types.d.ts.map +1 -0
  360. package/types/components/emoji/utils.d.ts +17 -0
  361. package/types/components/emoji/utils.d.ts.map +1 -0
  362. package/types/components/internal/ErrorBoundary.d.ts +5 -0
  363. package/types/components/internal/ErrorBoundary.d.ts.map +1 -0
  364. package/types/components/notifications/Notification.d.ts +16 -0
  365. package/types/components/notifications/Notification.d.ts.map +1 -0
  366. package/types/components/notifications/NotificationPosition.d.ts +7 -0
  367. package/types/components/notifications/NotificationPosition.d.ts.map +1 -0
  368. package/types/components/notifications/NotificationSeverity.d.ts +7 -0
  369. package/types/components/notifications/NotificationSeverity.d.ts.map +1 -0
  370. package/types/components/notifications/actions.d.ts +6 -0
  371. package/types/components/notifications/actions.d.ts.map +1 -0
  372. package/types/components/notifications/store.d.ts +9 -0
  373. package/types/components/notifications/store.d.ts.map +1 -0
  374. package/types/focus.d.ts +32 -0
  375. package/types/focus.d.ts.map +1 -0
  376. package/types/index.d.ts +254 -0
  377. package/types/index.d.ts.map +1 -0
  378. package/types/lazy.d.ts +6 -0
  379. package/types/lazy.d.ts.map +1 -0
  380. package/types/location.d.ts +38 -0
  381. package/types/location.d.ts.map +1 -0
  382. package/types/modals.d.ts +5 -0
  383. package/types/modals.d.ts.map +1 -0
  384. package/types/panelup.d.ts +17 -0
  385. package/types/panelup.d.ts.map +1 -0
  386. package/types/plugin.d.ts +135 -0
  387. package/types/plugin.d.ts.map +1 -0
  388. package/types/popups.d.ts +65 -0
  389. package/types/popups.d.ts.map +1 -0
  390. package/types/resize.d.ts +32 -0
  391. package/types/resize.d.ts.map +1 -0
  392. package/types/tooltips.d.ts +8 -0
  393. package/types/tooltips.d.ts.map +1 -0
  394. package/types/types.d.ts +373 -0
  395. package/types/types.d.ts.map +1 -0
  396. package/types/utils.d.ts +125 -0
  397. package/types/utils.d.ts.map +1 -0
  398. package/assets/lux-site-icons/android-chrome-192x192.png +0 -0
  399. package/assets/lux-site-icons/android-chrome-512x512.png +0 -0
  400. package/assets/lux-site-icons/apple-touch-icon.png +0 -0
  401. package/assets/lux-site-icons/favicon-16x16.png +0 -0
  402. package/assets/lux-site-icons/favicon-32x32.png +0 -0
  403. package/assets/lux-site-icons/favicon.ico +0 -0
  404. package/assets/standard-docs/LUX-NFT-Terms-and-Conditions.pdf +0 -0
  405. package/assets/standard-docs/LUX-Privacy-Policy.pdf +0 -0
  406. package/blocks/components/accordian-block.tsx +0 -48
  407. package/blocks/components/block-component-props.ts +0 -11
  408. package/blocks/components/bullet-cards-block.tsx +0 -45
  409. package/blocks/components/card-block.tsx +0 -213
  410. package/blocks/components/carte-blanche-block/index.tsx +0 -127
  411. package/blocks/components/carte-blanche-block/variant-content-left.tsx +0 -49
  412. package/blocks/components/content.tsx +0 -70
  413. package/blocks/components/cta-block.tsx +0 -98
  414. package/blocks/components/enh-heading-block.tsx +0 -205
  415. package/blocks/components/grid-block/grid-block-mutator.ts +0 -12
  416. package/blocks/components/grid-block/index.tsx +0 -83
  417. package/blocks/components/grid-block/mutator-registry.ts +0 -10
  418. package/blocks/components/grid-block/table-borders.mutator.ts +0 -47
  419. package/blocks/components/group-block.tsx +0 -83
  420. package/blocks/components/heading-block.tsx +0 -88
  421. package/blocks/components/image-block.tsx +0 -108
  422. package/blocks/components/index.ts +0 -30
  423. package/blocks/components/screenful-block/content.tsx +0 -120
  424. package/blocks/components/screenful-block/index.tsx +0 -79
  425. package/blocks/components/screenful-block/poster-background.tsx +0 -34
  426. package/blocks/components/screenful-block/video-background.tsx +0 -45
  427. package/blocks/components/space-block.tsx +0 -66
  428. package/blocks/components/video-block.tsx +0 -137
  429. package/blocks/def/accordian-block.ts +0 -14
  430. package/blocks/def/block.ts +0 -7
  431. package/blocks/def/bullet-cards-block.ts +0 -21
  432. package/blocks/def/card-block.ts +0 -24
  433. package/blocks/def/carte-blanche-block.ts +0 -21
  434. package/blocks/def/cta-block.ts +0 -19
  435. package/blocks/def/element-block.ts +0 -11
  436. package/blocks/def/enh-heading-block.ts +0 -45
  437. package/blocks/def/grid-block.ts +0 -16
  438. package/blocks/def/group-block.ts +0 -11
  439. package/blocks/def/heading-block.ts +0 -15
  440. package/blocks/def/image-block.ts +0 -31
  441. package/blocks/def/index.ts +0 -35
  442. package/blocks/def/screenful-block.ts +0 -54
  443. package/blocks/def/space-block.ts +0 -64
  444. package/blocks/def/video-block.ts +0 -28
  445. package/blocks/index.ts +0 -2
  446. package/common/chat-widget.tsx +0 -75
  447. package/common/contact-dialog/contact-form.tsx +0 -111
  448. package/common/contact-dialog/disclaimer.tsx +0 -13
  449. package/common/contact-dialog/index.tsx +0 -48
  450. package/common/copyright.tsx +0 -21
  451. package/common/drawer-menu.tsx +0 -51
  452. package/common/footer.tsx +0 -77
  453. package/common/head-metadata/from-next/metadata-types.ts +0 -158
  454. package/common/head-metadata/from-next/opengraph-types.ts +0 -267
  455. package/common/head-metadata/from-next/twitter-types.ts +0 -92
  456. package/common/head-metadata/index.tsx +0 -208
  457. package/common/header/index.tsx +0 -57
  458. package/common/header/mobile-nav.tsx +0 -72
  459. package/common/header/theme-toggle.tsx +0 -26
  460. package/common/icons/github.tsx +0 -14
  461. package/common/icons/index.tsx +0 -34
  462. package/common/icons/lux-logo.tsx +0 -10
  463. package/common/icons/secure-delivery.tsx +0 -13
  464. package/common/icons/social-icon.tsx +0 -35
  465. package/common/icons/youtube-logo.tsx +0 -59
  466. package/common/index.ts +0 -14
  467. package/common/logo.tsx +0 -71
  468. package/common/mini-chart/index.tsx +0 -8
  469. package/common/mini-chart/mini-chart-props.ts +0 -44
  470. package/common/mini-chart/mini-chart.tsx +0 -76
  471. package/common/mini-chart/wrapper.tsx +0 -23
  472. package/context-providers/index.ts +0 -1
  473. package/context-providers/theme-provider.tsx +0 -20
  474. package/next/README.md +0 -11
  475. package/next/analytics/fpixel.ts +0 -16
  476. package/next/analytics/pixel-analytics.tsx +0 -55
  477. package/next/determine-device-middleware.ts +0 -16
  478. package/next/fonts/DrukTextWide-Bold-Trial.otf +0 -0
  479. package/next/fonts/DrukTextWide-Heavy-Trial.otf +0 -0
  480. package/next/fonts/DrukTextWide-Medium-Trial.otf +0 -0
  481. package/next/fonts/DrukWide-Bold-Trial.otf +0 -0
  482. package/next/fonts/DrukWide-Heavy-Trial.otf +0 -0
  483. package/next/fonts/DrukWide-Medium-Trial.otf +0 -0
  484. package/next/get-app-router-font-classes.ts +0 -12
  485. package/next/load-and-return-lux-next-fonts-on-import.ts +0 -94
  486. package/next/next-font-desc.ts +0 -28
  487. package/next/not-found-content.mdx +0 -4
  488. package/next/not-found.tsx +0 -23
  489. package/next/pages-router-font-vars.tsx +0 -18
  490. package/next/root-layout.tsx +0 -60
  491. package/primitives/accordion.tsx +0 -61
  492. package/primitives/action-button.tsx +0 -46
  493. package/primitives/apply-typography.tsx +0 -55
  494. package/primitives/avatar.tsx +0 -49
  495. package/primitives/badge.tsx +0 -36
  496. package/primitives/button.tsx +0 -73
  497. package/primitives/calendar.tsx +0 -72
  498. package/primitives/card.tsx +0 -83
  499. package/primitives/checkbox.tsx +0 -32
  500. package/primitives/command.tsx +0 -155
  501. package/primitives/dialog-video-controller.tsx +0 -38
  502. package/primitives/dialog.tsx +0 -152
  503. package/primitives/form.tsx +0 -179
  504. package/primitives/index.ts +0 -144
  505. package/primitives/inline-icon.tsx +0 -37
  506. package/primitives/input.tsx +0 -30
  507. package/primitives/label.tsx +0 -28
  508. package/primitives/link-element.tsx +0 -104
  509. package/primitives/main.tsx +0 -17
  510. package/primitives/mdx-link.tsx +0 -22
  511. package/primitives/nav-items.tsx +0 -48
  512. package/primitives/popover.tsx +0 -35
  513. package/primitives/progress.tsx +0 -27
  514. package/primitives/scroll-area.tsx +0 -47
  515. package/primitives/select.tsx +0 -169
  516. package/primitives/separator.tsx +0 -29
  517. package/primitives/sheet.tsx +0 -175
  518. package/primitives/skeleton.tsx +0 -15
  519. package/primitives/switch.tsx +0 -33
  520. package/primitives/table.tsx +0 -117
  521. package/primitives/tabs.tsx +0 -60
  522. package/primitives/tailwind-indicator.tsx +0 -19
  523. package/primitives/text-area.tsx +0 -26
  524. package/primitives/toast.tsx +0 -129
  525. package/primitives/toaster.tsx +0 -37
  526. package/primitives/use-toast.ts +0 -192
  527. package/primitives/video-player.tsx +0 -26
  528. package/primitives/youtube-embed.tsx +0 -83
  529. package/siteDef/footer/community.tsx +0 -67
  530. package/siteDef/footer/company.ts +0 -37
  531. package/siteDef/footer/ecosystem.ts +0 -37
  532. package/siteDef/footer/index.tsx +0 -26
  533. package/siteDef/footer/legal.ts +0 -28
  534. package/siteDef/footer/network.ts +0 -33
  535. package/siteDef/footer/svg/warpcast-logo.svg +0 -12
  536. package/siteDef/main-nav.ts +0 -35
  537. package/style/globals.css +0 -13
  538. package/style/hanzo-common.css +0 -32
  539. package/style/hanzo-default-colors.css +0 -79
  540. package/style/social-svg.css +0 -3
  541. package/tailwind/colors.tailwind.js +0 -46
  542. package/tailwind/fonts.tailwind.ts +0 -31
  543. package/tailwind/index.ts +0 -18
  544. package/tailwind/lux-tw-fonts.ts +0 -37
  545. package/tailwind/safelist.tailwind.js +0 -26
  546. package/tailwind/screens.tailwind.js +0 -8
  547. package/tailwind/spacing.tailwind.js +0 -65
  548. package/tailwind/tailwind.config.base.js +0 -906
  549. package/tailwind/tw-font-desc.ts +0 -15
  550. package/tailwind/typo-plugin/get-plugin-styles.js +0 -676
  551. package/tailwind/typo-plugin/index.d.ts +0 -9
  552. package/tailwind/typo-plugin/index.js +0 -141
  553. package/tailwind/typo-plugin/utils.js +0 -60
  554. package/tailwind/typography-test.mdx +0 -36
  555. package/types/breakpoints.ts +0 -11
  556. package/types/bullet-item.ts +0 -10
  557. package/types/button-def.ts +0 -39
  558. package/types/contact-info.ts +0 -11
  559. package/types/dimensions.ts +0 -20
  560. package/types/grid-def.ts +0 -56
  561. package/types/icon.ts +0 -10
  562. package/types/image-def.ts +0 -28
  563. package/types/index.ts +0 -29
  564. package/types/link-def.ts +0 -59
  565. package/types/site-def.ts +0 -34
  566. package/types/t-shirt-size.ts +0 -5
  567. package/util/index.ts +0 -81
  568. package/util/specifier.ts +0 -43
@@ -0,0 +1,1063 @@
1
+ <!--
2
+ // Copyright © 2020 Hanzo <dev@hanzo.ai>.
3
+ //
4
+ // Licensed under the Eclipse Public License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License. You may
6
+ // obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ //
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ -->
15
+ <script lang="ts">
16
+ import { themeStore as themeOptions } from '@hcengineering/theme'
17
+ import { afterUpdate, beforeUpdate, createEventDispatcher, onDestroy, onMount } from 'svelte'
18
+ import { resizeObserver } from '../resize'
19
+ import { closeTooltip, tooltipstore } from '../tooltips'
20
+ import type { FadeOptions, ScrollParams } from '../types'
21
+ import { defaultSP } from '../types'
22
+ import { DelayedCaller } from '../utils'
23
+ import IconDownOutline from './icons/DownOutline.svelte'
24
+ import HalfUpDown from './icons/HalfUpDown.svelte'
25
+ import IconUpOutline from './icons/UpOutline.svelte'
26
+
27
+ export let padding: string | undefined = undefined
28
+ export let bottomPadding: string | undefined = undefined
29
+ export let autoscroll: boolean = false
30
+ export let bottomStart: boolean = false
31
+ export let fade: FadeOptions = defaultSP
32
+ export let noFade: boolean = true
33
+ export let invertScroll: boolean = false
34
+ export let scrollDirection: 'vertical' | 'vertical-reverse' = 'vertical'
35
+ export let contentDirection: 'vertical' | 'vertical-reverse' | 'horizontal' = 'vertical'
36
+ export let horizontal: boolean = contentDirection === 'horizontal'
37
+ export let align: 'start' | 'center' | 'end' | 'stretch' = 'stretch'
38
+ export let gap: string | undefined = undefined
39
+ export let noStretch: boolean = autoscroll
40
+ export let buttons: 'normal' | 'union' | false = false
41
+ export let shrink: boolean = false
42
+ export let divScroll: HTMLElement | undefined | null = undefined
43
+ export let divBox: HTMLElement | undefined | null = undefined
44
+ export let scrollSnap: boolean = false
45
+ export let checkForHeaders: boolean = false
46
+ export let stickedScrollBars: boolean = false
47
+ export let thinScrollBars: boolean = false
48
+ export let disableOverscroll = false
49
+ export let disablePointerEventsOnScroll = false
50
+ export let onScroll: ((params: ScrollParams) => void) | undefined = undefined
51
+ export let onResize: (() => void) | undefined = undefined
52
+ export let containerName: string | undefined = undefined
53
+ export let containerType: 'size' | 'inline-size' | undefined = containerName !== undefined ? 'inline-size' : undefined
54
+ export let maxHeight: number | undefined = undefined
55
+
56
+ export function scroll (top: number, left?: number, behavior: 'auto' | 'smooth' = 'auto') {
57
+ if (divScroll) {
58
+ if (top !== 0) divScroll.scroll({ top, left: 0, behavior })
59
+ if (left !== 0 && left !== undefined) divScroll.scroll({ top: 0, left, behavior })
60
+ }
61
+ }
62
+ export function scrollBy (top: number, left?: number, behavior: 'auto' | 'smooth' = 'auto') {
63
+ if (divScroll) {
64
+ if (top !== 0) divScroll.scrollBy({ top, left: 0, behavior })
65
+ if (left !== 0 || left !== undefined) divScroll.scrollBy({ top: 0, left, behavior })
66
+ }
67
+ }
68
+
69
+ const dispatch = createEventDispatcher()
70
+ const stepScroll = 52
71
+
72
+ let mask: 'top' | 'bottom' | 'both' | 'none' = 'none'
73
+ let topCrop: 'top' | 'bottom' | 'full' | 'none' = 'none'
74
+ let topCropValue: number = 0
75
+ let maskH: 'left' | 'right' | 'both' | 'none' = 'none'
76
+
77
+ let divHScroll: HTMLElement
78
+ let divBar: HTMLElement
79
+ let divBarH: HTMLElement
80
+ let isScrollingByBar: 'vertical' | 'horizontal' | false = false
81
+ let isScrolling: boolean = false
82
+ let scrollTimer: any = 0
83
+ let dXY: number
84
+ let belowContent: number | undefined = undefined
85
+ let beforeContent: number | undefined = undefined
86
+ let leftContent: number | undefined = undefined
87
+ let rightContent: number | undefined = undefined
88
+ $: scrolling = autoscroll
89
+ let firstScroll = autoscroll
90
+ let orientir: 'vertical' | 'horizontal' = 'vertical'
91
+
92
+ let timer: any | undefined = undefined
93
+ let timerH: any | undefined = undefined
94
+
95
+ const inter = new Set<Element>()
96
+ let hasLastCategories: boolean = false
97
+
98
+ $: fz = $themeOptions.fontSize
99
+ $: shiftTop = fade.multipler?.top ? fade.multipler?.top * fz : 0
100
+ $: shiftBottom = fade.multipler?.bottom ? fade.multipler?.bottom * fz : 0
101
+ $: shiftLeft = fade.multipler?.left ? fade.multipler?.left * fz : 0
102
+ $: shiftRight = fade.multipler?.right ? fade.multipler?.right * fz : 0
103
+ $: orientir = contentDirection === 'horizontal' ? 'horizontal' : 'vertical'
104
+
105
+ const checkBar = (): void => {
106
+ if (divBar && divScroll) {
107
+ dispatch('divScrollTop', divScroll.scrollTop)
108
+
109
+ const visibleTrack = divScroll.clientHeight - shiftTop - shiftBottom - 4
110
+ const scrollH = divScroll.scrollHeight
111
+ const proc = scrollH / visibleTrack
112
+
113
+ const _newHeight = visibleTrack / proc
114
+ const newHeight = _newHeight < 2 * fz ? 2 * fz : _newHeight
115
+ const newHeightPx = `${newHeight}px`
116
+ const procSpace = (scrollH - divScroll.clientHeight) / (visibleTrack - newHeight)
117
+
118
+ let newTop = '0px'
119
+
120
+ if (scrollDirection === 'vertical-reverse') {
121
+ newTop = divScroll.clientHeight + divScroll.scrollTop / procSpace - newHeight - shiftTop - 2 + 'px'
122
+ } else {
123
+ newTop = divScroll.scrollTop / procSpace + shiftTop + 2 + 'px'
124
+ }
125
+ if (divBar.style.top !== newTop) {
126
+ divBar.style.top = newTop
127
+ }
128
+ if (divBar.style.height !== newHeightPx) {
129
+ divBar.style.height = newHeightPx
130
+ }
131
+ if (mask === 'none') {
132
+ if (divBar.style.visibility !== 'hidden') {
133
+ divBar.style.visibility = 'hidden'
134
+ }
135
+ } else {
136
+ if (divBar.style.visibility !== 'visible') {
137
+ divBar.style.visibility = 'visible'
138
+ }
139
+ if (divBar) {
140
+ if (timer) {
141
+ clearTimeout(timer)
142
+ timer = undefined
143
+ if (divBar.style.opacity !== '1') {
144
+ divBar.style.opacity = '1'
145
+ }
146
+ }
147
+ timer = setTimeout(() => {
148
+ if (divBar) {
149
+ divBar.style.opacity = '0'
150
+ }
151
+ }, 1500)
152
+ }
153
+ }
154
+ if (divScroll.clientHeight >= divScroll.scrollHeight) {
155
+ if (divBar.style.visibility !== 'hidden') {
156
+ divBar.style.visibility = 'hidden'
157
+ }
158
+ }
159
+ }
160
+ }
161
+ const checkBarH = (): void => {
162
+ if (divBarH && divScroll) {
163
+ const trackW = divScroll.clientWidth - (mask !== 'none' ? 14 : 4) - shiftLeft - shiftRight
164
+ const scrollW = divScroll.scrollWidth
165
+ const proc = scrollW / trackW
166
+ divBarH.style.width = divScroll.clientWidth / proc + 'px'
167
+ divBarH.style.left = divScroll.scrollLeft / proc + 2 + shiftLeft + 'px'
168
+ if (maskH === 'none') divBarH.style.visibility = 'hidden'
169
+ else {
170
+ divBarH.style.visibility = 'visible'
171
+ if (divBarH) {
172
+ if (timerH) {
173
+ clearTimeout(timerH)
174
+ timerH = undefined
175
+ divBarH.style.opacity = '1'
176
+ }
177
+ timerH = setTimeout(() => {
178
+ if (divBarH) divBarH.style.opacity = '0'
179
+ }, 1500)
180
+ }
181
+ }
182
+ if (divScroll.clientWidth >= divScroll.scrollWidth) divBarH.style.visibility = 'hidden'
183
+ }
184
+ }
185
+
186
+ const handleScroll = (event: PointerEvent): void => {
187
+ scrolling = false
188
+ if (
189
+ (divBar == null && isScrollingByBar === 'vertical') ||
190
+ (divBarH == null && isScrollingByBar === 'horizontal') ||
191
+ divScroll == null
192
+ ) {
193
+ return
194
+ }
195
+
196
+ const rectScroll = divScroll.getBoundingClientRect()
197
+ if (isScrollingByBar === 'vertical') {
198
+ let Y = Math.round(event.clientY) - dXY
199
+ if (Y < rectScroll.top + shiftTop + 2) Y = rectScroll.top + shiftTop + 2
200
+ if (Y > rectScroll.bottom - divBar.clientHeight - shiftBottom - 2) {
201
+ Y = rectScroll.bottom - divBar.clientHeight - shiftBottom - 2
202
+ }
203
+ divBar.style.top = Y - rectScroll.y + 'px'
204
+ const topBar = Y - rectScroll.y - shiftTop - 2
205
+ const heightScroll = rectScroll.height - 4 - divBar.clientHeight - shiftTop - shiftBottom
206
+ const procBar = topBar / heightScroll
207
+
208
+ if (scrollDirection === 'vertical-reverse') {
209
+ divScroll.scrollTop = (divScroll.scrollHeight - divScroll.clientHeight) * (procBar - 1)
210
+ } else {
211
+ divScroll.scrollTop = (divScroll.scrollHeight - divScroll.clientHeight) * procBar
212
+ }
213
+ } else if (isScrollingByBar === 'horizontal') {
214
+ let X = Math.round(event.clientX) - dXY
215
+ if (X < rectScroll.left + 2 + shiftLeft) X = rectScroll.left + 2 + shiftLeft
216
+ if (X > rectScroll.right - divBarH.clientWidth - (mask !== 'none' ? 12 : 2) - shiftRight) {
217
+ X = rectScroll.right - divBarH.clientWidth - (mask !== 'none' ? 12 : 2) - shiftRight
218
+ }
219
+ divBarH.style.left = X - rectScroll.x + 'px'
220
+ const leftBar = X - rectScroll.x - shiftLeft - 2
221
+ const widthScroll =
222
+ rectScroll.width - 2 - (mask !== 'none' ? 12 : 2) - divBarH.clientWidth - shiftLeft - shiftRight
223
+ const procBar = leftBar / widthScroll
224
+ divScroll.scrollLeft = (divScroll.scrollWidth - divScroll.clientWidth) * procBar
225
+ }
226
+ }
227
+ const onScrollEnd = (): void => {
228
+ document.removeEventListener('pointermove', handleScroll)
229
+ document.body.style.userSelect = 'auto'
230
+ document.body.style.webkitUserSelect = 'auto'
231
+ document.removeEventListener('pointerup', onScrollEnd)
232
+ isScrollingByBar = false
233
+ }
234
+ const onScrollStart = (event: PointerEvent, direction: 'vertical' | 'horizontal'): void => {
235
+ if (divScroll == null) return
236
+ scrolling = false
237
+ dXY = Math.round(direction === 'vertical' ? event.offsetY : event.offsetX)
238
+ document.addEventListener('pointerup', onScrollEnd)
239
+ document.addEventListener('pointermove', handleScroll)
240
+ document.body.style.userSelect = 'none'
241
+ document.body.style.webkitUserSelect = 'none'
242
+ isScrollingByBar = direction
243
+ }
244
+
245
+ const renderFade = () => {
246
+ if (divScroll && !noFade) {
247
+ const th = shiftTop + (topCrop === 'top' ? 2 * fz - topCropValue : 0)
248
+ const tf =
249
+ topCrop === 'full'
250
+ ? 0
251
+ : mask === 'both' || mask === 'top'
252
+ ? 2 * fz - (topCrop === 'bottom' ? topCropValue : topCrop === 'top' ? 2 * fz - topCropValue : 0)
253
+ : 0
254
+ const gradient = `linear-gradient(
255
+ 0deg,
256
+ rgba(0, 0, 0, 1) ${shiftBottom}px,
257
+ rgba(0, 0, 0, 0) ${shiftBottom}px,
258
+ rgba(0, 0, 0, 1) ${shiftBottom + (mask === 'both' || mask === 'bottom' ? 2 * fz : 0)}px,
259
+ rgba(0, 0, 0, 1) calc(100% - ${th + tf}px),
260
+ rgba(0, 0, 0, 0) calc(100% - ${th}px),
261
+ rgba(0, 0, 0, 1) calc(100% - ${th}px)
262
+ )`
263
+ divScroll.style.webkitMaskImage = gradient
264
+ }
265
+ if (divHScroll && horizontal && !noFade) {
266
+ const gradientH = `linear-gradient(
267
+ 90deg,
268
+ rgba(0, 0, 0, 1) ${shiftLeft}px,
269
+ rgba(0, 0, 0, 0) ${shiftLeft}px,
270
+ rgba(0, 0, 0, 1) ${shiftLeft + (maskH === 'both' || maskH === 'right' ? 2 * fz : 0)}px,
271
+ rgba(0, 0, 0, 1) calc(100% - ${shiftRight + (maskH === 'both' || maskH === 'left' ? 2 * fz : 0)}px),
272
+ rgba(0, 0, 0, 0) calc(100% - ${shiftRight}px),
273
+ rgba(0, 0, 0, 1) calc(100% - ${shiftRight}px)
274
+ )`
275
+ divHScroll.style.webkitMaskImage = gradientH
276
+ }
277
+ }
278
+
279
+ const delayedCaller = new DelayedCaller(25)
280
+
281
+ const delayCall = (op: () => void) => {
282
+ delayedCaller.call(op)
283
+ }
284
+
285
+ const checkFade = (): void => {
286
+ delayCall(_checkFade)
287
+ }
288
+ const _checkFade = (): void => {
289
+ if (divScroll) {
290
+ beforeContent = divScroll.scrollTop
291
+ belowContent = divScroll.scrollHeight - divScroll.clientHeight - beforeContent
292
+ if (beforeContent > 2 && belowContent > 2) mask = 'both'
293
+ else if (beforeContent > 2) mask = 'top'
294
+ else if (belowContent > 2) mask = 'bottom'
295
+ else mask = 'none'
296
+
297
+ if (horizontal) {
298
+ leftContent = divScroll.scrollLeft
299
+ rightContent = divScroll.scrollWidth - divScroll.clientWidth - leftContent
300
+ if (leftContent > 2 && rightContent > 2) maskH = 'both'
301
+ else if (leftContent > 2) maskH = 'right'
302
+ else if (rightContent > 2) maskH = 'left'
303
+ else maskH = 'none'
304
+ }
305
+ if (inter.size) {
306
+ checkIntersectionFade()
307
+ }
308
+ renderFade()
309
+ }
310
+
311
+ if (!isScrollingByBar) {
312
+ checkBar()
313
+ }
314
+ if (!isScrollingByBar && horizontal) {
315
+ checkBarH()
316
+ }
317
+ }
318
+
319
+ function checkAutoScroll () {
320
+ if (firstScroll && divHeight && divScroll) {
321
+ scrollDown()
322
+ firstScroll = false
323
+ }
324
+ }
325
+
326
+ const scrollDown = (): void => {
327
+ if (divScroll) {
328
+ divScroll.scrollTop = divScroll.scrollHeight - divHeight + 2
329
+ }
330
+ }
331
+
332
+ $: if (scrolling && belowContent && belowContent > 0) {
333
+ firstScroll = false
334
+ scrollDown()
335
+ }
336
+
337
+ const checkIntersection = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => {
338
+ const interArr: Element[] = []
339
+ const catEntries: IntersectionObserverEntry[] = []
340
+ const lastCatEntries: IntersectionObserverEntry[] = []
341
+
342
+ entries.forEach((el) => {
343
+ if (el.isIntersecting && el.target.classList.contains('categoryHeader')) {
344
+ inter.add(el.target)
345
+ interArr.push(el.target)
346
+ } else inter.delete(el.target)
347
+ if (hasLastCategories) {
348
+ if (el.isIntersecting && el.target.classList.contains('categoryHeader')) catEntries.push(el)
349
+ if (el.isIntersecting && el.target.classList.contains('lastCat')) lastCatEntries.push(el)
350
+ }
351
+ })
352
+
353
+ if (interArr.length > 0) {
354
+ dispatch('lastScrolledCategory', interArr[interArr.length - 1]?.getAttribute('id'))
355
+ dispatch('firstScrolledCategory', interArr[0]?.getAttribute('id'))
356
+ const interCats: string[] = interArr.map((it) => it.getAttribute('id') as string)
357
+ dispatch('scrolledCategories', interCats)
358
+ }
359
+ if (hasLastCategories) {
360
+ const targets = new Set<Element>()
361
+ const closed = new Set<Element>()
362
+ lastCatEntries.forEach((last) => {
363
+ catEntries.forEach((cat) => {
364
+ if (last.target !== cat.target) {
365
+ if (
366
+ last.boundingClientRect.top < cat.boundingClientRect.top + 8 &&
367
+ last.boundingClientRect.top >= cat.boundingClientRect.top
368
+ ) {
369
+ targets.add(cat.target)
370
+ }
371
+ if (cat.target.classList.contains('closed') && !closed.has(cat.target)) closed.add(cat.target)
372
+ }
373
+ })
374
+ })
375
+ closed.forEach((el) => {
376
+ if (!targets.has(el)) el.classList.remove('closed')
377
+ })
378
+ targets.forEach((el) => {
379
+ el.classList.add('closed')
380
+ })
381
+ }
382
+ }
383
+
384
+ const checkIntersectionFade = () => {
385
+ topCrop = 'none'
386
+ topCropValue = 0
387
+ if (!fade.multipler?.top || !divScroll) return
388
+ const offset = divScroll.getBoundingClientRect().top
389
+ inter.forEach((el) => {
390
+ const rect = el.getBoundingClientRect()
391
+ if (shiftTop > 0) {
392
+ if (offset + shiftTop < rect.top && offset + shiftTop + 2 * fz >= rect.top) {
393
+ if (topCrop === 'top' || topCrop === 'full') topCrop = 'full'
394
+ else topCrop = 'bottom'
395
+ topCropValue = offset + shiftTop + 2 * fz - rect.top
396
+ } else if (offset + shiftTop < rect.bottom && offset + shiftTop + 2 * fz > rect.bottom) {
397
+ topCrop = 'top'
398
+ topCropValue = offset + shiftTop + 2 * fz - rect.bottom
399
+ } else if (offset + shiftTop >= rect.top && offset + shiftTop + 2 * fz <= rect.bottom) {
400
+ topCrop = 'full'
401
+ topCropValue = offset + shiftTop + 2 * fz
402
+ }
403
+ }
404
+ })
405
+ }
406
+
407
+ const wheelEvent = (e: WheelEvent) => {
408
+ e = e || window.event
409
+ const deltaY = e.deltaY
410
+ if (deltaY < 0 && autoscroll && scrolling && beforeContent && beforeContent > 0) {
411
+ scrolling = false
412
+ } else if (deltaY > 0 && autoscroll && !scrolling && belowContent && belowContent <= 10) {
413
+ scrolling = true
414
+ }
415
+ }
416
+
417
+ let observer: IntersectionObserver
418
+ onMount(() => {
419
+ if (divScroll && divBox) {
420
+ divScroll.addEventListener('wheel', wheelEvent)
421
+ divScroll.addEventListener('scroll', checkFade)
422
+ delayCall(() => {
423
+ checkBar()
424
+ if (horizontal) {
425
+ checkBarH()
426
+ }
427
+ })
428
+ }
429
+ })
430
+ onDestroy(() => {
431
+ if (observer) observer.disconnect()
432
+ if (divScroll) {
433
+ divScroll.removeEventListener('wheel', wheelEvent)
434
+ divScroll.removeEventListener('scroll', checkFade)
435
+ }
436
+ })
437
+
438
+ let oldTop: number
439
+
440
+ if (checkForHeaders) {
441
+ beforeUpdate(() => {
442
+ if (divBox && divScroll) {
443
+ oldTop = divScroll.scrollTop
444
+ }
445
+ })
446
+
447
+ afterUpdate(() => {
448
+ if (divBox && divScroll) {
449
+ if (oldTop !== divScroll.scrollTop) {
450
+ divScroll.scrollTop = oldTop
451
+ }
452
+
453
+ delayCall(() => {
454
+ if (divBox == null) {
455
+ return
456
+ }
457
+ const tempEls = divBox.querySelectorAll('.categoryHeader')
458
+ observer = new IntersectionObserver(checkIntersection, { root: null, rootMargin: '0px', threshold: 0.1 })
459
+ tempEls.forEach((el) => {
460
+ observer.observe(el)
461
+ })
462
+ const tempCats = divBox.querySelectorAll('.lastCat')
463
+ if (tempCats.length > 0) {
464
+ hasLastCategories = true
465
+ tempCats.forEach((el) => {
466
+ observer.observe(el)
467
+ })
468
+ } else {
469
+ hasLastCategories = false
470
+ }
471
+ })
472
+ }
473
+ })
474
+ }
475
+
476
+ let divHeight: number
477
+ const _resize = (): void => {
478
+ checkFade()
479
+ }
480
+
481
+ const tapScroll = (n: number, dir: 'up' | 'down') => {
482
+ if (divScroll) {
483
+ if (orientir === 'horizontal') {
484
+ divScroll.scrollBy({ top: 0, left: dir === 'up' ? -n : n, behavior: 'smooth' })
485
+ } else {
486
+ divScroll.scrollBy({ top: dir === 'up' ? -n : n, left: 0, behavior: 'smooth' })
487
+ }
488
+ }
489
+ }
490
+
491
+ const clickOnTrack = (
492
+ ev: MouseEvent & { currentTarget: EventTarget & HTMLDivElement },
493
+ horizontal: boolean = false
494
+ ) => {
495
+ if (
496
+ (divBar == null && !horizontal) ||
497
+ (divBarH == null && horizontal) ||
498
+ divScroll == null ||
499
+ isScrollingByBar !== false
500
+ ) {
501
+ return
502
+ }
503
+ const rectScroll = divScroll.getBoundingClientRect()
504
+ if (horizontal) {
505
+ const x = ev.offsetX
506
+ const trackWidth = ev.currentTarget.clientWidth
507
+ const barWidth = divBarH.clientWidth
508
+ const leftBar =
509
+ x - barWidth / 2 <= 0
510
+ ? rectScroll.left + shiftLeft + 2
511
+ : x + barWidth / 2 >= trackWidth
512
+ ? rectScroll.right - barWidth - shiftRight - (mask !== 'none' ? 12 : 2)
513
+ : ev.clientX - barWidth / 2
514
+ divBarH.style.left = `${leftBar}px`
515
+ const widthScroll = rectScroll.width - 2 - (mask !== 'none' ? 12 : 2) - barWidth - shiftLeft - shiftRight
516
+ const procBar = (leftBar - rectScroll.left - shiftLeft - 2) / widthScroll
517
+ divScroll.scrollLeft = (divScroll.scrollWidth - divScroll.clientWidth) * procBar
518
+ } else {
519
+ const y = ev.offsetY
520
+ const trackHeight = ev.currentTarget.clientHeight
521
+ const barHeight = divBar.clientHeight
522
+ const topBar =
523
+ y - barHeight / 2 <= 0
524
+ ? rectScroll.top + shiftTop + 2
525
+ : y + barHeight / 2 >= trackHeight
526
+ ? rectScroll.bottom - barHeight - shiftBottom - 2
527
+ : ev.clientY - barHeight / 2
528
+ divBar.style.top = `${topBar}px`
529
+ const heightScroll = rectScroll.height - 4 - barHeight - shiftTop - shiftBottom
530
+ const procBar = (topBar - rectScroll.top - shiftTop - 2) / heightScroll
531
+ if (scrollDirection === 'vertical-reverse') {
532
+ divScroll.scrollTop = (divScroll.scrollHeight - divScroll.clientHeight) * (procBar - 1)
533
+ } else {
534
+ divScroll.scrollTop = (divScroll.scrollHeight - divScroll.clientHeight) * procBar
535
+ }
536
+ }
537
+ }
538
+
539
+ $: topButton =
540
+ (orientir === 'vertical' && (mask === 'top' || mask === 'both')) ||
541
+ (orientir === 'horizontal' && (maskH === 'right' || maskH === 'both'))
542
+ ? 'visible'
543
+ : 'hidden'
544
+ $: bottomButton =
545
+ (orientir === 'vertical' && (mask === 'bottom' || mask === 'both')) ||
546
+ (orientir === 'horizontal' && (maskH === 'left' || maskH === 'both'))
547
+ ? 'visible'
548
+ : 'hidden'
549
+ </script>
550
+
551
+ <svelte:window on:resize={_resize} />
552
+
553
+ <div
554
+ class="scroller-container {orientir} {invertScroll ? 'invert' : 'normal'}"
555
+ class:buttons={buttons === 'normal'}
556
+ class:union={buttons === 'union'}
557
+ class:sticked={stickedScrollBars}
558
+ class:thin={thinScrollBars}
559
+ class:shrink
560
+ style:user-select={isScrolling ? 'none' : 'inherit'}
561
+ style:--scroller-header-height={`${(fade.multipler?.top ?? 0) * fz + 2}px`}
562
+ style:--scroller-footer-height={`${(fade.multipler?.bottom ?? 0) * fz + (stickedScrollBars ? 0 : 2)}px`}
563
+ style:--scroller-left-offset={`${(fade.multipler?.left ?? 0) * fz + 2}px`}
564
+ style:--scroller-right-offset={`${(fade.multipler?.right ?? 0) * fz + (mask !== 'none' ? 12 : 2)}px`}
565
+ style:max-height={maxHeight !== undefined ? `${maxHeight}rem` : undefined}
566
+ >
567
+ <div bind:this={divHScroll} class="horizontalBox flex-col flex-shrink">
568
+ <div
569
+ bind:this={divScroll}
570
+ use:resizeObserver={(element) => {
571
+ divHeight = element.clientHeight
572
+ onResize?.()
573
+ }}
574
+ class="scroll relative flex-shrink flex-col"
575
+ style:flex-direction={scrollDirection === 'vertical-reverse' ? 'column-reverse' : 'column'}
576
+ class:disableOverscroll
577
+ class:scrollSnapX={scrollSnap && contentDirection === 'horizontal'}
578
+ class:scrollSnapY={scrollSnap && contentDirection === 'vertical'}
579
+ style:overflow-x={horizontal ? 'auto' : 'hidden'}
580
+ on:scroll={() => {
581
+ if (onScroll) {
582
+ onScroll({ autoScrolling: autoscroll && scrolling })
583
+ }
584
+ if (
585
+ $tooltipstore.label !== undefined ||
586
+ ($tooltipstore.component !== undefined && $tooltipstore.kind !== 'submenu')
587
+ ) {
588
+ closeTooltip()
589
+ }
590
+ clearTimeout(scrollTimer)
591
+ isScrolling = true
592
+ scrollTimer = setTimeout(() => {
593
+ isScrolling = false
594
+ }, 300)
595
+ }}
596
+ >
597
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
598
+ <div
599
+ bind:this={divBox}
600
+ class="box{gap ? ` ${gap}` : ''}"
601
+ class:items-center={contentDirection === 'horizontal'}
602
+ style:padding
603
+ style:flex-direction={contentDirection === 'vertical'
604
+ ? 'column'
605
+ : contentDirection === 'vertical-reverse'
606
+ ? 'column-reverse'
607
+ : 'row'}
608
+ style:height={contentDirection === 'vertical-reverse' ? 'max-content' : noStretch ? 'auto' : '100%'}
609
+ style:align-items={align}
610
+ style:container-name={containerName}
611
+ style:container-type={containerType}
612
+ class:disableEvents={isScrolling && disablePointerEventsOnScroll}
613
+ use:resizeObserver={() => {
614
+ checkAutoScroll()
615
+ checkFade()
616
+ }}
617
+ on:dragover
618
+ on:drop
619
+ on:scroll
620
+ >
621
+ {#if bottomStart}<div class="flex-grow flex-shrink" />{/if}
622
+ <slot />
623
+ {#if bottomPadding}
624
+ <div style:width={'100%'} style:min-height={bottomPadding} />
625
+ {/if}
626
+ </div>
627
+ </div>
628
+ </div>
629
+ {#if buttons === 'normal'}
630
+ <button
631
+ class="scrollButton top {orientir}"
632
+ style:visibility={topButton}
633
+ on:click|preventDefault|stopPropagation={() => {
634
+ tapScroll(stepScroll, 'up')
635
+ }}
636
+ >
637
+ <div style:transform={orientir === 'horizontal' ? 'rotate(-90deg)' : ''}>
638
+ <IconUpOutline size={'medium'} />
639
+ </div>
640
+ </button>
641
+ <button
642
+ class="scrollButton bottom {orientir}"
643
+ style:visibility={bottomButton}
644
+ on:click|preventDefault|stopPropagation={() => {
645
+ tapScroll(stepScroll, 'down')
646
+ }}
647
+ >
648
+ <div style:transform={orientir === 'horizontal' ? 'rotate(-90deg)' : ''}>
649
+ <IconDownOutline size={'medium'} />
650
+ </div>
651
+ </button>
652
+ {:else if buttons === 'union'}
653
+ <div class="updown-container {orientir}">
654
+ <button
655
+ class="updown-up"
656
+ style:visibility={topButton}
657
+ on:click|preventDefault|stopPropagation={() => {
658
+ tapScroll(stepScroll, 'up')
659
+ }}
660
+ >
661
+ <HalfUpDown />
662
+ </button>
663
+ <button
664
+ class="updown-down"
665
+ style:visibility={bottomButton}
666
+ on:click|preventDefault|stopPropagation={() => {
667
+ tapScroll(stepScroll, 'down')
668
+ }}
669
+ >
670
+ <HalfUpDown />
671
+ </button>
672
+ </div>
673
+ {/if}
674
+ {#if mask !== 'none'}
675
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
676
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
677
+ <div
678
+ class="track"
679
+ class:hovered={isScrollingByBar === 'vertical'}
680
+ on:click|stopPropagation={(ev) => {
681
+ clickOnTrack(ev)
682
+ }}
683
+ />
684
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
685
+ <div
686
+ class="bar"
687
+ class:hovered={isScrollingByBar === 'vertical'}
688
+ class:reverse={scrollDirection === 'vertical-reverse'}
689
+ bind:this={divBar}
690
+ on:pointerdown|stopPropagation={(ev) => {
691
+ onScrollStart(ev, 'vertical')
692
+ }}
693
+ on:pointerleave={checkFade}
694
+ />
695
+ {/if}
696
+ {#if horizontal && maskH !== 'none'}
697
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
698
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
699
+ <div
700
+ class="track-horizontal"
701
+ class:hovered={isScrollingByBar === 'horizontal'}
702
+ on:click|stopPropagation={(ev) => {
703
+ clickOnTrack(ev, true)
704
+ }}
705
+ />
706
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
707
+ <div
708
+ class="bar-horizontal"
709
+ class:hovered={isScrollingByBar === 'horizontal'}
710
+ bind:this={divBarH}
711
+ on:pointerdown|stopPropagation={(ev) => {
712
+ onScrollStart(ev, 'horizontal')
713
+ }}
714
+ on:pointerleave={checkFade}
715
+ />
716
+ {/if}
717
+ </div>
718
+
719
+ <style lang="scss">
720
+ .updown-container {
721
+ position: absolute;
722
+ display: flex;
723
+ flex-direction: column;
724
+ align-items: center;
725
+ width: 1rem;
726
+ height: 1rem;
727
+ transform-origin: center;
728
+ transform: rotate(0deg);
729
+ transition: transform 0.15s var(--timing-main);
730
+
731
+ button {
732
+ width: 1rem;
733
+ height: 0.5rem;
734
+ color: var(--theme-trans-color);
735
+ border-radius: 0.25rem;
736
+ border: none;
737
+ outline: none;
738
+
739
+ &:hover,
740
+ &:focus {
741
+ color: var(--theme-caption-color);
742
+ background-color: var(--theme-button-hovered);
743
+ }
744
+ }
745
+ .updown-down {
746
+ transform-origin: center;
747
+ transform: rotate(180deg);
748
+ }
749
+ &.vertical {
750
+ left: 50%;
751
+ bottom: -2.25rem;
752
+ transform: translate(-50%, 0) rotate(0deg);
753
+ }
754
+ &.horizontal {
755
+ top: 50%;
756
+ right: -1.5rem;
757
+ transform: translate(0, -50%) rotate(90deg);
758
+ }
759
+ }
760
+ .scrollButton {
761
+ position: absolute;
762
+ color: var(--theme-caption-color);
763
+ background-color: transparent;
764
+ border: 1px solid transparent;
765
+ border-radius: 0.25rem;
766
+ visibility: hidden;
767
+
768
+ transform-origin: center;
769
+ transition-property: opacity, transform;
770
+ transition-timing-function: var(--timing-main);
771
+ transition-duration: 0.1s;
772
+ transform: scale(0.8);
773
+ opacity: 0.1;
774
+
775
+ &:hover,
776
+ &:focus {
777
+ transform: scale(1);
778
+ opacity: 0.8;
779
+ }
780
+ &:hover {
781
+ background-color: var(--theme-button-hovered);
782
+ }
783
+ &:focus {
784
+ box-shadow: 0 0 0 2px var(--primary-button-outline);
785
+ }
786
+ &.vertical {
787
+ width: 2rem;
788
+ height: 1.25rem;
789
+ }
790
+ &.horizontal {
791
+ width: 1.25rem;
792
+ height: 2rem;
793
+ }
794
+ &.top.vertical {
795
+ top: calc(var(--scroller-header-height) - 2rem);
796
+ left: 50%;
797
+ transform: translateX(-50%);
798
+ }
799
+ &.top.horizontal {
800
+ top: 50%;
801
+ left: -2rem;
802
+ transform: translateY(-50%);
803
+ }
804
+ &.bottom.vertical {
805
+ right: 50%;
806
+ bottom: calc(var(--scroller-footer-height) - 2rem);
807
+ transform: translateX(50%);
808
+ }
809
+ &.bottom.horizontal {
810
+ right: -2rem;
811
+ bottom: 50%;
812
+ transform: translateY(50%);
813
+ }
814
+ }
815
+ .scroller-container {
816
+ position: relative;
817
+ display: flex;
818
+ flex-direction: column;
819
+ align-items: center;
820
+ flex-shrink: 1;
821
+ min-width: 0;
822
+ min-height: 0;
823
+
824
+ &:not(.shrink) {
825
+ flex-grow: 1;
826
+ height: 100%;
827
+ }
828
+
829
+ &.vertical {
830
+ min-width: 1.5rem;
831
+ }
832
+ // &.horizontal {
833
+ // margin-right: 2rem;
834
+ // }
835
+ &.buttons.vertical {
836
+ margin: 1.5rem 0;
837
+ }
838
+ &.buttons.horizontal {
839
+ margin-right: 2rem;
840
+ }
841
+ &.union.vertical {
842
+ margin-bottom: 2.75rem;
843
+ }
844
+ &.union.horizontal {
845
+ margin-right: 1.5rem;
846
+ }
847
+ &.normal {
848
+ .track,
849
+ .bar {
850
+ right: 2px;
851
+ }
852
+ .track-horizontal,
853
+ .bar-horizontal {
854
+ bottom: var(--scroller-footer-height);
855
+ }
856
+ }
857
+ &.invert {
858
+ .track,
859
+ .bar {
860
+ left: 2px;
861
+ }
862
+ .track-horizontal,
863
+ .bar-horizontal {
864
+ top: 2px;
865
+ }
866
+ }
867
+ }
868
+ .horizontalBox {
869
+ flex-grow: 1;
870
+ min-width: 0;
871
+ min-height: 0;
872
+ width: 100%;
873
+ height: 100%;
874
+ }
875
+ .scroll {
876
+ will-change: opacity;
877
+ flex-grow: 1;
878
+ min-width: 0;
879
+ min-height: 0;
880
+ width: 100%;
881
+ height: 100%;
882
+ overflow-y: auto;
883
+
884
+ &.disableOverscroll {
885
+ overscroll-behavior: none;
886
+ }
887
+ &.scrollSnapY {
888
+ scroll-snap-type: y mandatory;
889
+ }
890
+ &.scrollSnapX {
891
+ scroll-snap-type: x mandatory;
892
+ }
893
+ &.scrollSnapX,
894
+ &.scrollSnapY {
895
+ scroll-padding-inline: var(--spacing-1);
896
+ }
897
+ &::-webkit-scrollbar:vertical {
898
+ display: none;
899
+ width: 0;
900
+ }
901
+ &::-webkit-scrollbar:horizontal {
902
+ display: none;
903
+ height: 0;
904
+ }
905
+
906
+ @media print {
907
+ overflow: visible !important;
908
+ }
909
+ }
910
+ .box {
911
+ display: flex;
912
+ flex-direction: column;
913
+ justify-content: flex-start;
914
+ }
915
+
916
+ .bar,
917
+ .bar-horizontal {
918
+ visibility: hidden;
919
+ position: absolute;
920
+ background-color: var(--scrollbar-bar-color);
921
+ transform-origin: center;
922
+ transition: all 0.15s;
923
+ border-radius: 0.125rem;
924
+ box-shadow: 0 0 1px 1px var(--theme-overlay-color);
925
+ opacity: 0;
926
+ cursor: pointer;
927
+
928
+ &.hovered {
929
+ transition: none;
930
+ }
931
+ }
932
+ .bar {
933
+ top: 2px;
934
+ right: 2px;
935
+ width: 8px;
936
+ min-height: 2rem;
937
+ max-height: calc(100% - 12px);
938
+ transform: scaleX(0.5);
939
+
940
+ &.reverse {
941
+ top: auto;
942
+ bottom: 2px;
943
+ }
944
+
945
+ &:hover,
946
+ &.hovered {
947
+ transform: scaleX(1);
948
+ }
949
+ }
950
+ .bar-horizontal {
951
+ left: 2px;
952
+ bottom: var(--scroller-footer-height, 2px);
953
+ height: 8px;
954
+ min-width: 2rem;
955
+ max-width: calc(100% - 12px);
956
+ transform: scaleY(0.5);
957
+
958
+ &:hover,
959
+ &.hovered {
960
+ transform: scaleY(1);
961
+ }
962
+ }
963
+ .track,
964
+ .track-horizontal {
965
+ position: absolute;
966
+ transform-origin: center;
967
+ transition: all 0.1s ease-in-out;
968
+ background-color: var(--scrollbar-track-color);
969
+ border-radius: 0.5rem;
970
+ opacity: 0;
971
+
972
+ &::after {
973
+ position: absolute;
974
+ content: '';
975
+ inset: 0;
976
+ transform-origin: center;
977
+ transition: all 0.1s ease-in-out;
978
+ }
979
+ }
980
+ .track {
981
+ top: var(--scroller-header-height, 2px);
982
+ bottom: var(--scroller-footer-height, 2px);
983
+ width: 8px;
984
+ transform: scaleX(0.1);
985
+ &::after {
986
+ transform: scaleX(10);
987
+ }
988
+ &:hover {
989
+ transform: scaleX(1);
990
+ opacity: 1;
991
+ &::after,
992
+ & + .bar {
993
+ transform: scaleX(1);
994
+ }
995
+ }
996
+ }
997
+ .track-horizontal {
998
+ bottom: var(--scroller-footer-height, 2px);
999
+ left: var(--scroller-left-offset, 2px);
1000
+ right: var(--scroller-right-offset, 2px);
1001
+ height: 8px;
1002
+ transform: scaleY(0.1);
1003
+ &::after {
1004
+ transform: scaleY(10);
1005
+ }
1006
+ &:hover {
1007
+ transform: scaleY(1);
1008
+ opacity: 1;
1009
+ &::after,
1010
+ & + .bar-horizontal {
1011
+ transform: scaleY(1);
1012
+ }
1013
+ }
1014
+ }
1015
+ .track:hover + .bar,
1016
+ .track-horizontal:hover + .bar-horizontal,
1017
+ .bar:hover,
1018
+ .bar-horizontal:hover,
1019
+ .bar.hovered,
1020
+ .bar-horizontal.hovered {
1021
+ background-color: var(--scrollbar-bar-hover);
1022
+ border-radius: 0.25rem;
1023
+ opacity: 1 !important;
1024
+ box-shadow: 0 0 1px black;
1025
+ }
1026
+
1027
+ .scroller-container.sticked,
1028
+ .scroller-container.thin {
1029
+ .bar,
1030
+ .track {
1031
+ transform-origin: center right;
1032
+ }
1033
+ .bar-horizontal,
1034
+ .track-horizontal {
1035
+ transform-origin: bottom center;
1036
+ }
1037
+ }
1038
+
1039
+ .scroller-container.sticked {
1040
+ .bar,
1041
+ .track {
1042
+ right: 0;
1043
+ }
1044
+ .bar-horizontal,
1045
+ .track-horizontal {
1046
+ bottom: var(--scroller-footer-height, 0);
1047
+ }
1048
+ }
1049
+ .scroller-container.thin {
1050
+ .bar,
1051
+ .track {
1052
+ width: 6px;
1053
+ }
1054
+ .bar-horizontal,
1055
+ .track-horizontal {
1056
+ height: 6px;
1057
+ }
1058
+ }
1059
+
1060
+ .disableEvents {
1061
+ pointer-events: none !important;
1062
+ }
1063
+ </style>