@hanzo/ui 0.5.24 → 0.6.16

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,430 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ import { createEventDispatcher, onMount, onDestroy } from 'svelte'
7
+ import type { Emoji } from 'emojibase'
8
+ import {
9
+ Scroller,
10
+ SearchInput,
11
+ tooltip,
12
+ deviceOptionsStore as deviceInfo,
13
+ showPopup,
14
+ eventToHTMLElement,
15
+ ButtonBase,
16
+ closeTooltip
17
+ } from '../../'
18
+ import plugin from '../../plugin'
19
+ import {
20
+ searchEmoji,
21
+ emojiStore,
22
+ generateSkinToneEmojis,
23
+ emojiCategories,
24
+ getFrequentlyEmojis,
25
+ addFrequentlyEmojis,
26
+ removeFrequentlyEmojis,
27
+ getEmoji,
28
+ getSkinTone,
29
+ setSkinTone
30
+ } from '.'
31
+ import type { EmojiWithGroup, EmojiCategory } from '.'
32
+ import ActionsPopup from './ActionsPopup.svelte'
33
+ import SkinTonePopup from './SkinTonePopup.svelte'
34
+ import IconSearch from './icons/Search.svelte'
35
+ import EmojiGroup from './EmojiGroup.svelte'
36
+
37
+ export let embedded = false
38
+ export let selected: string | undefined
39
+ export let disabled: boolean = false
40
+ export let kind: 'default' | 'fade' = 'fade'
41
+
42
+ const dispatch = createEventDispatcher()
43
+
44
+ let scrollElement: HTMLDivElement
45
+ const touchEvents = ['touchend', 'touchcancel', 'touchmove']
46
+ let skinTone: number = getSkinTone()
47
+ let shownSTM: boolean = false
48
+ let shownContext: boolean = false
49
+ $: emojiRowHeightPx = ($deviceInfo.fontSize ?? 16) * 2
50
+ $searchEmoji = ''
51
+ $: searching = $searchEmoji !== ''
52
+ const searchCategory: EmojiCategory[] = [
53
+ {
54
+ id: 'search-category',
55
+ label: plugin.string.SearchResults,
56
+ icon: IconSearch
57
+ }
58
+ ]
59
+ let timer: any = null
60
+ const isMobile = $deviceInfo.isMobile
61
+
62
+ let emojisCat = emojiCategories
63
+ let currentCategory = emojisCat[0]
64
+ $: emojiTabs = emojisCat
65
+ .map((ec) => {
66
+ if (ec.categories !== undefined || ec.emojisString !== undefined || ec.emojis !== undefined) {
67
+ return { id: ec.id, label: ec.label, icon: ec.icon }
68
+ } else return undefined
69
+ })
70
+ .filter((f) => f !== undefined) as EmojiCategory[]
71
+ $: categoryTabs = searching ? ([...searchCategory, ...emojiTabs] as EmojiCategory[]) : emojiTabs
72
+
73
+ function handleScrollToCategory (categoryId: string): void {
74
+ if (searching && categoryId !== searchCategory[0].id) $searchEmoji = ''
75
+ if (isMobile) {
76
+ const tempCat = emojiTabs.find((ct) => ct?.id === categoryId)
77
+ if (tempCat === undefined) return
78
+ currentCategory = tempCat
79
+ outputGroups = updateGroups(searching, emojisCat)
80
+ } else {
81
+ setTimeout(() => {
82
+ const labelElement = document.getElementById(categoryId)
83
+ if (labelElement) {
84
+ const emojisElement = labelElement.nextElementSibling as HTMLElement
85
+ scrollElement.scroll(0, emojisElement.offsetTop - $deviceInfo.fontSize * 1.75)
86
+ }
87
+ })
88
+ }
89
+ }
90
+
91
+ function handleCategoryScrolled (): void {
92
+ if (isMobile) return
93
+ const selectedCategory = emojisCat.find((category) => {
94
+ const labelElement = document.getElementById(category.id)
95
+ if (labelElement == null) return false
96
+ const emojisElement = labelElement.nextElementSibling as HTMLElement
97
+
98
+ return emojisElement.offsetTop + emojisElement.offsetHeight - emojiRowHeightPx > scrollElement.scrollTop
99
+ })
100
+ if (selectedCategory !== undefined) currentCategory = selectedCategory
101
+ }
102
+
103
+ const sendEmoji = (emoji: Emoji | EmojiWithGroup): void => {
104
+ selected = emoji.emoji
105
+ addFrequentlyEmojis(emoji.hexcode)
106
+ dispatch('close', {
107
+ emoji: emoji.emoji,
108
+ codes: emoji.hexcode.split('-').map((hc) => parseInt(hc, 16))
109
+ })
110
+ }
111
+
112
+ const selectedEmoji = (event: CustomEvent<{ detail: EmojiWithGroup }>): void => {
113
+ if (event.detail === undefined || typeof event.detail !== 'object') return
114
+ const detail = event.detail as unknown as EmojiWithGroup
115
+ sendEmoji(detail)
116
+ }
117
+
118
+ function openContextMenu (event: TouchEvent | MouseEvent, _emoji: EmojiWithGroup, remove: boolean): void {
119
+ event.preventDefault()
120
+ const temp = getEmoji(_emoji.hexcode)
121
+ const emoji = temp?.parent ?? temp?.emoji
122
+ if (emoji === undefined) return
123
+
124
+ clearTimer()
125
+ shownContext = true
126
+ showPopup(
127
+ ActionsPopup,
128
+ { emoji, remove },
129
+ eventToHTMLElement(event),
130
+ (result: 'remove' | Emoji | EmojiWithGroup) => {
131
+ if (result === 'remove') {
132
+ removeFrequentlyEmojis(emoji.hexcode)
133
+ const index = emojisCat.findIndex((ec) => ec.id === 'frequently-used')
134
+ if (index > -1) emojisCat[index].emojis = getFrequentlyEmojis()
135
+ emojisCat = emojisCat.filter(
136
+ (em) => em.categories !== undefined || (Array.isArray(em.emojis) && em.emojis.length > 0)
137
+ )
138
+ if (currentCategory.emojis?.length === 0) {
139
+ currentCategory = emojisCat.find((ec) => ec.emojis !== undefined && ec.emojis.length > 0) ?? emojisCat[0]
140
+ }
141
+ } else if (result !== undefined) {
142
+ sendEmoji(result)
143
+ }
144
+ shownContext = false
145
+ }
146
+ )
147
+ }
148
+ function handleContextMenu (event: MouseEvent, emoji: EmojiWithGroup, remove: boolean): void {
149
+ event.preventDefault()
150
+ if (Array.isArray(emoji.skins) || remove) openContextMenu(event, emoji, remove)
151
+ }
152
+ const clearTimer = (): void => {
153
+ clearTimeout(timer)
154
+ touchObserver(true)
155
+ }
156
+ const touchObserver = (remove: boolean = false): void => {
157
+ touchEvents.forEach((event) => {
158
+ if (remove) window.removeEventListener(event, clearTimer)
159
+ else window.addEventListener(event, clearTimer)
160
+ })
161
+ }
162
+ function clampedContextMenu (event: TouchEvent, emoji: EmojiWithGroup, remove: boolean): void {
163
+ if (timer == null && (Array.isArray(emoji?.skins) || remove)) {
164
+ touchObserver()
165
+ timer = setTimeout(function () {
166
+ if (!shownContext) openContextMenu(event, emoji, remove)
167
+ clearTimer()
168
+ }, 1000)
169
+ }
170
+ }
171
+
172
+ const showSkinMenu = (event: MouseEvent): void => {
173
+ shownSTM = true
174
+ showPopup(SkinTonePopup, { emoji: 0x1f590, selected: skinTone }, eventToHTMLElement(event), (result) => {
175
+ if (typeof result === 'number') {
176
+ skinTone = result
177
+ setSkinTone(skinTone)
178
+ }
179
+ shownSTM = false
180
+ })
181
+ }
182
+
183
+ let hidden: boolean = true
184
+ const checkScroll = (event: Event): void => {
185
+ if (timer != null) clearTimer()
186
+ const target = event.target as HTMLElement
187
+ if (target == null) return
188
+ hidden = target.scrollHeight - target.scrollTop - target.clientHeight < 5
189
+ }
190
+
191
+ const initEmoji = (): void => {
192
+ emojiCategories.forEach((em, index) => {
193
+ if (em.id === 'frequently-used') {
194
+ emojiCategories[index].emojis = getFrequentlyEmojis()
195
+ }
196
+ if (em.emojisString !== undefined && Array.isArray(em.emojisString) && em.emojis === undefined) {
197
+ const tempEmojis: string[] = em.emojisString
198
+ const emojis: EmojiWithGroup[] = []
199
+ tempEmojis.forEach((te) => {
200
+ const e = $emojiStore.find((es) => es.hexcode === te)
201
+ if (e !== undefined) emojis.push(e)
202
+ })
203
+ emojiCategories[index].emojis = emojis
204
+ }
205
+ })
206
+ emojisCat = emojiCategories.filter(
207
+ (em) => em.categories !== undefined || (Array.isArray(em.emojis) && em.emojis.length > 0)
208
+ )
209
+ currentCategory = emojisCat.find((ec) => ec.emojis !== undefined) ?? emojisCat[0]
210
+ }
211
+
212
+ onMount(() => {
213
+ if (scrollElement !== undefined) scrollElement.addEventListener('scroll', checkScroll)
214
+ closeTooltip()
215
+ setTimeout(initEmoji)
216
+ })
217
+ onDestroy(() => {
218
+ if (scrollElement !== undefined) scrollElement.removeEventListener('scroll', checkScroll)
219
+ })
220
+
221
+ const updateGroups = (s: boolean, ec: EmojiCategory[]): EmojiCategory[] => {
222
+ return s ? searchCategory : isMobile ? ec.filter((e) => e.id === currentCategory.id) : ec
223
+ }
224
+ $: outputGroups = updateGroups(searching, emojisCat)
225
+ </script>
226
+
227
+ <div class="hulyPopupEmoji-container kind-{kind}" class:embedded>
228
+ <div class="hulyPopupEmoji-header__tabs-wrapper">
229
+ <div class="hulyPopupEmoji-header__tabs">
230
+ {#each categoryTabs as category (category.id)}
231
+ <button
232
+ class="hulyPopupEmoji-header__tab"
233
+ class:selected={(searching && searchCategory[0].id === category.id) ||
234
+ (!searching && currentCategory.id === category.id)}
235
+ data-id={category.id}
236
+ use:tooltip={{ label: category.label }}
237
+ on:click={() => {
238
+ handleScrollToCategory(category.id)
239
+ }}
240
+ >
241
+ <svelte:component this={category.icon} size={isMobile ? 'large' : 'x-large'} />
242
+ </button>
243
+ {/each}
244
+ <div
245
+ style:left={`${
246
+ (searching ? 0 : emojisCat.findIndex((ec) => ec.id === currentCategory.id)) * (isMobile ? 1.875 : 2.125)
247
+ }rem`}
248
+ class="hulyPopupEmoji-header__tab-cursor"
249
+ />
250
+ </div>
251
+ </div>
252
+ <div class="hulyPopupEmoji-header__tools">
253
+ <SearchInput
254
+ value={$searchEmoji}
255
+ placeholder={plugin.string.SearchDots}
256
+ width={'100%'}
257
+ autoFocus
258
+ delay={50}
259
+ on:change={(result) => {
260
+ if (result.detail !== undefined) $searchEmoji = result.detail
261
+ else if (result.detail !== '') currentCategory = searchCategory[0]
262
+ }}
263
+ />
264
+ <ButtonBase
265
+ type={'type-button-icon'}
266
+ hasMenu
267
+ pressed={shownSTM}
268
+ kind={'tertiary'}
269
+ size={'small'}
270
+ tooltip={{ label: plugin.string.DefaultSkinTone }}
271
+ on:click={showSkinMenu}
272
+ >
273
+ <span style:font-size={'1.5rem'}>{generateSkinToneEmojis(0x1f590)[skinTone]}</span>
274
+ </ButtonBase>
275
+ </div>
276
+ <Scroller
277
+ bind:divScroll={scrollElement}
278
+ gap="0.5rem"
279
+ checkForHeaders
280
+ noStretch
281
+ on:scrolledCategories={handleCategoryScrolled}
282
+ >
283
+ {#each outputGroups as group (group.id)}
284
+ {@const canRemove = group.id === 'frequently-used'}
285
+ <EmojiGroup
286
+ {group}
287
+ {searching}
288
+ {disabled}
289
+ {selected}
290
+ {skinTone}
291
+ {kind}
292
+ lazy={group.id !== 'frequently-used'}
293
+ on:select={selectedEmoji}
294
+ on:touchstart={(ev) => {
295
+ const { event, emoji } = ev.detail
296
+ clampedContextMenu(event, emoji, canRemove)
297
+ }}
298
+ on:contextmenu={(ev) => {
299
+ const { event, emoji } = ev.detail
300
+ handleContextMenu(event, emoji, canRemove)
301
+ }}
302
+ />
303
+ {/each}
304
+ </Scroller>
305
+ {#if !hidden && kind === 'fade'}<div class="hulyPopupEmoji-footer" />{/if}
306
+ </div>
307
+
308
+ <style lang="scss">
309
+ .hulyPopupEmoji-container {
310
+ position: relative;
311
+ display: flex;
312
+ flex-direction: column;
313
+ gap: 0.75rem;
314
+ padding-bottom: 0.75rem;
315
+ width: 100%;
316
+ height: 100%;
317
+ min-width: 0;
318
+ min-height: 28.5rem;
319
+ max-height: 28.5rem;
320
+ user-select: none;
321
+
322
+ :global(.mobile-theme) & {
323
+ min-width: 0;
324
+ max-width: calc(100vw - 2rem);
325
+ min-height: 0;
326
+ max-height: calc(100% - 4rem);
327
+ }
328
+
329
+ &:not(.embedded) {
330
+ min-width: 25.5rem;
331
+ max-width: 25.5rem;
332
+ background: var(--theme-popup-color); // var(--global-popover-BackgroundColor);
333
+ border: 1px solid var(--theme-popup-divider); // var(--global-popover-BorderColor);
334
+ border-radius: var(--small-BorderRadius);
335
+ box-shadow: var(--global-popover-ShadowX) var(--global-popover-ShadowY) var(--global-popover-ShadowBlur)
336
+ var(--global-popover-ShadowSpread) var(--global-popover-ShadowColor);
337
+
338
+ :global(.mobile-theme) & {
339
+ max-width: 100%;
340
+ max-height: 100%;
341
+ }
342
+ }
343
+
344
+ .hulyPopupEmoji-header__tools,
345
+ .hulyPopupEmoji-header__tabs-wrapper,
346
+ .hulyPopupEmoji-header__tabs,
347
+ .hulyPopupEmoji-header__tab {
348
+ display: flex;
349
+ align-items: center;
350
+ flex-shrink: 0;
351
+ min-width: 0;
352
+ min-height: 0;
353
+ }
354
+
355
+ .hulyPopupEmoji-header__tabs-wrapper {
356
+ overflow-x: auto;
357
+ padding: 0.25rem 0.75rem;
358
+ width: 100%;
359
+ border-bottom: 1px solid var(--theme-popup-divider);
360
+ }
361
+ .hulyPopupEmoji-header__tabs {
362
+ position: relative;
363
+ gap: 0.125rem;
364
+ width: 100%;
365
+ }
366
+ .hulyPopupEmoji-header__tab {
367
+ justify-content: center;
368
+ width: 2rem;
369
+ height: 2rem;
370
+ color: var(--theme-halfcontent-color);
371
+ transition: color 0.15s ease-in;
372
+ transition: left 0.15s ease-in;
373
+
374
+ &:disabled,
375
+ &.disabled {
376
+ color: var(--theme-darker-color);
377
+ }
378
+ :global(.mobile-theme) & {
379
+ width: 1.75rem;
380
+ height: 1.75rem;
381
+ }
382
+ :global(svg) {
383
+ transform: scale(0.8);
384
+ transition: transform 0.15s ease-in-out;
385
+ }
386
+
387
+ &:not(:disabled, .disabled) {
388
+ &.selected {
389
+ color: var(--theme-caption-color);
390
+
391
+ :global(svg) {
392
+ transform: scale(1);
393
+ }
394
+ }
395
+ &:hover {
396
+ color: var(--theme-content-color);
397
+ }
398
+ }
399
+ }
400
+ .hulyPopupEmoji-header__tab-cursor {
401
+ position: absolute;
402
+ bottom: -0.25rem;
403
+ width: 2rem;
404
+ height: 0.125rem;
405
+ background-color: var(--theme-tablist-plain-color);
406
+ transition: left 0.15s ease-in;
407
+
408
+ :global(.mobile-theme) & {
409
+ width: 1.75rem;
410
+ }
411
+ }
412
+ .hulyPopupEmoji-header__tools {
413
+ gap: 0.5rem;
414
+ padding: 0 0.75rem;
415
+ }
416
+
417
+ .hulyPopupEmoji-footer {
418
+ position: absolute;
419
+ left: 50%;
420
+ bottom: 0.75rem;
421
+ width: calc(100% - 1.5rem);
422
+ height: 1rem;
423
+ background: var(--theme-popup-trans-gradient);
424
+ transform-origin: center;
425
+ transform: translateX(-50%) rotate(180deg);
426
+ z-index: 1;
427
+ pointer-events: none;
428
+ }
429
+ }
430
+ </style>
@@ -0,0 +1,40 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ import { createEventDispatcher } from 'svelte'
7
+ import type { Emoji } from 'emojibase'
8
+ import { Label, closeTooltip, ModernCheckbox } from '../../'
9
+ import { generateSkinToneEmojis, skinTones, getEmojiCode } from '.'
10
+ import type { EmojiWithGroup } from '.'
11
+
12
+ export let emoji: number | number[] | string | Emoji | EmojiWithGroup
13
+ export let selected: number
14
+
15
+ const dispatch = createEventDispatcher()
16
+ closeTooltip()
17
+
18
+ const skins: string[] = generateSkinToneEmojis(getEmojiCode(emoji))
19
+ </script>
20
+
21
+ <div class="hulyPopup-container noPadding">
22
+ <div class="hulyPopup-group">
23
+ {#each skins as skin, index}
24
+ {@const disabled = selected === index}
25
+ {@const label = skinTones.get(index)}
26
+ <button
27
+ class="hulyPopup-row withKeys"
28
+ class:noHover={disabled}
29
+ on:click={() => {
30
+ if (disabled) return undefined
31
+ dispatch('close', index)
32
+ }}
33
+ >
34
+ <span style:font-size={'1.5rem'}>{skin}</span>
35
+ {#if label}<span class="hulyPopup-row__label"><Label {label} /></span>{/if}
36
+ {#if disabled}<span class="hulyPopup-row__keys"><ModernCheckbox checked disabled /></span>{/if}
37
+ </button>
38
+ {/each}
39
+ </div>
40
+ </div>
@@ -0,0 +1,36 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ import { createEventDispatcher } from 'svelte'
7
+ import type { Emoji } from 'emojibase'
8
+ import { generateSkinToneEmojis, getEmojiCode, type EmojiWithGroup } from '.'
9
+ import { ButtonBase, closeTooltip } from '../..'
10
+
11
+ export let emoji: number | number[] | string | Emoji | EmojiWithGroup
12
+ export let selected: number
13
+
14
+ const dispatch = createEventDispatcher()
15
+
16
+ const skins: string[] = generateSkinToneEmojis(getEmojiCode(emoji))
17
+ </script>
18
+
19
+ <div class="flex-row-center flex-gap-1">
20
+ {#each skins as skin, index}
21
+ {@const disabled = selected === index}
22
+ <ButtonBase
23
+ type={'type-button-icon'}
24
+ {disabled}
25
+ kind={disabled ? 'secondary' : 'tertiary'}
26
+ size={'small'}
27
+ on:click={() => {
28
+ if (disabled) return undefined
29
+ dispatch('update', index)
30
+ closeTooltip()
31
+ }}
32
+ >
33
+ <span style:font-size={'1.5rem'}>{skin}</span>
34
+ </ButtonBase>
35
+ {/each}
36
+ </div>
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ export let size: 'small' | 'medium' | 'large' | 'x-large'
7
+ const fill: string = 'currentColor'
8
+ </script>
9
+
10
+ <svg class="svg-{size}" viewBox="0 0 24 24" {fill} xmlns="http://www.w3.org/2000/svg">
11
+ <path
12
+ d="M12,7.8c0.4,0,0.8-0.3,0.8-0.8S12.4,6.2,12,6.2c-3.2,0-5.8,2.6-5.8,5.8c0,3.2,2.6,5.8,5.8,5.8c3.2,0,5.8-2.6,5.8-5.8c0-0.4-0.3-0.8-0.8-0.8s-0.8,0.3-0.8,0.8c0,2.3-1.9,4.2-4.2,4.2c-2.3,0-4.2-1.9-4.2-4.2C7.8,9.7,9.7,7.8,12,7.8z"
13
+ />
14
+ <path
15
+ d="M21.7,10.9c0-0.4-0.4-0.7-0.8-0.7c-0.4,0-0.7,0.4-0.7,0.8c0.1,0.6,0.1,1.2,0,1.8c-0.2,2.2-1.3,4.2-3.1,5.5c-1.7,1.4-3.9,2-6.1,1.8c-2.2-0.2-4.2-1.3-5.5-3.1c-1.4-1.7-2-3.9-1.8-6.1C4,8.9,5.1,6.9,6.8,5.6s3.9-2,6.1-1.8c0.4,0.1,0.8-0.2,0.8-0.7c0-0.4-0.2-0.8-0.7-0.8C10.5,2,7.9,2.8,5.9,4.4c-2,1.6-3.3,3.9-3.6,6.5C2,13.5,2.8,16,4.4,18.1c1.6,2,3.9,3.3,6.5,3.6c0.4,0,0.7,0.1,1.1,0.1c2.2,0,4.3-0.7,6.1-2.1c2-1.6,3.3-3.9,3.6-6.5C21.8,12.4,21.8,11.6,21.7,10.9z"
16
+ />
17
+ <path
18
+ d="M12.6,10.4c-0.2-0.1-0.4-0.1-0.6-0.1c-1,0-1.8,0.8-1.8,1.8s0.8,1.8,1.8,1.8s1.8-0.8,1.8-1.8c0-0.2,0-0.4-0.1-0.6l1.7-1.7H18c0.2,0,0.4-0.1,0.5-0.2l3-3c0.2-0.2,0.3-0.5,0.2-0.8c-0.1-0.3-0.4-0.5-0.7-0.5h-2.2V3c0-0.3-0.2-0.6-0.5-0.7c-0.3-0.1-0.6-0.1-0.8,0.2l-3,3c-0.1,0.1-0.2,0.3-0.2,0.5v2.7L12.6,10.4z M15.8,6.3l1.5-1.5V6c0,0.4,0.3,0.8,0.8,0.8h1.2l-1.5,1.5h-1.9V6.3z"
19
+ />
20
+ </svg>
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ export let size: 'small' | 'medium' | 'large' | 'x-large'
7
+ const fill: string = 'currentColor'
8
+ </script>
9
+
10
+ <svg class="svg-{size}" viewBox="0 0 24 24" {fill} xmlns="http://www.w3.org/2000/svg">
11
+ <path d="M10,9.8c-0.7,0-1.2,0.6-1.2,1.3s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2v0C11.2,10.3,10.7,9.8,10,9.8z" />
12
+ <path d="M14,9.8c-0.7,0-1.2,0.6-1.2,1.3s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2v0C15.2,10.3,14.7,9.8,14,9.8z" />
13
+ <path
14
+ d="M21.7,10.6l-2-6.8c-0.1-0.4-0.5-0.6-0.8-0.5l-6,1c0,0,0,0,0,0h-1.7c0,0,0,0,0,0l-6-1C4.7,3.2,4.4,3.4,4.3,3.8l-2,6.9c-0.1,0.6,0.1,1.3,0.6,1.7c0.3,0.3,0.7,0.4,1.1,0.4c0.1,0,0.2,0,0.3,0c0.8,5.3,2.7,8,5.7,8h4c3,0,4.9-2.7,5.7-8c0.1,0,0.2,0,0.3,0c0.4,0,0.8-0.1,1.1-0.4C21.6,11.9,21.9,11.3,21.7,10.6z M3.8,11.2c-0.1,0-0.1-0.1-0.1-0.2l1.8-6.2l4,0.6l-5.3,5.7C4.1,11.3,3.9,11.3,3.8,11.2z M14,19.2h-1.2V18c0-0.1,0-0.2-0.1-0.4c0.7-0.2,1.1-0.8,1.1-1.6c0-0.4-0.3-0.8-0.8-0.8h-2c-0.4,0-0.8,0.3-0.8,0.8c0,0.8,0.4,1.4,1.1,1.6c-0.1,0.1-0.1,0.2-0.1,0.4v1.2H10c-2.2,0-3.6-2.5-4.3-7.3c0-0.1,0-0.1,0-0.1l5.6-6h1.4l5.6,6c0,0,0,0.1,0,0.1C17.6,16.8,16.2,19.2,14,19.2z M20.2,11.2c-0.1,0.1-0.3,0.1-0.4,0l-5.3-5.7l4-0.6l1.8,6.1C20.3,11.1,20.2,11.1,20.2,11.2z"
15
+ />
16
+ </svg>
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ export let size: 'small' | 'medium' | 'large' | 'x-large'
7
+ const fill: string = 'currentColor'
8
+ </script>
9
+
10
+ <svg class="svg-{size}" viewBox="0 0 24 24" {fill} xmlns="http://www.w3.org/2000/svg">
11
+ <path
12
+ d="M19.3,4.3c-0.3-0.1-0.6-0.1-0.8,0.2c-1.6,1.6-4.3,1.6-5.9,0c-2.2-2.2-5.8-2.2-8,0C4.3,4.6,4.2,4.8,4.2,5v9v7c0,0.4,0.3,0.8,0.8,0.8s0.8-0.3,0.8-0.8v-6.6c1.7-1.4,4.2-1.4,5.7,0.2c1.1,1.1,2.6,1.6,4,1.6s2.9-0.5,4-1.6c0.1-0.1,0.2-0.3,0.2-0.5V5C19.8,4.7,19.6,4.4,19.3,4.3z M18.2,13.7c-1.7,1.4-4.2,1.3-5.7-0.2c-1.1-1.1-2.6-1.6-4-1.6c-0.9,0-1.9,0.2-2.8,0.7V5.3C7.4,3.9,9.9,4,11.5,5.5c1.8,1.8,4.6,2.1,6.8,0.9V13.7z"
13
+ />
14
+ </svg>
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ export let size: 'small' | 'medium' | 'large' | 'x-large'
7
+ const fill: string = 'currentColor'
8
+ </script>
9
+
10
+ <svg class="svg-{size}" viewBox="0 0 24 24" {fill} xmlns="http://www.w3.org/2000/svg">
11
+ <path
12
+ d="M7.6,7.6C7.7,7.7,7.8,7.8,8,7.8c0.2,0,0.5-0.1,0.6-0.3c0.2-0.3,0.2-0.8-0.2-1C8,6.1,7.7,5.6,7.8,5c0-0.5,0.2-1.1,0.7-1.4c0.3-0.2,0.4-0.7,0.2-1c-0.2-0.3-0.7-0.4-1-0.2C6.7,3,6.2,4,6.2,5C6.2,6,6.7,7,7.6,7.6z"
13
+ />
14
+ <path
15
+ d="M11.6,7.6c0.1,0.1,0.3,0.1,0.4,0.1c0.2,0,0.5-0.1,0.6-0.3c0.2-0.3,0.2-0.8-0.2-1C12,6.1,11.7,5.6,11.8,5c0-0.5,0.2-1.1,0.7-1.4c0.3-0.2,0.4-0.7,0.2-1c-0.2-0.3-0.7-0.4-1-0.2C10.7,3,10.2,4,10.2,5C10.2,6,10.7,7,11.6,7.6z"
16
+ />
17
+ <path
18
+ d="M19.6,10.6c-0.6-0.3-1.2-0.4-1.8-0.3V10c0-0.4-0.3-0.8-0.8-0.8H3c-0.4,0-0.8,0.3-0.8,0.8v5c0,3.7,3,6.8,6.8,6.8h2c2.8,0,5.2-1.7,6.2-4.1c0.3,0.1,0.5,0.1,0.8,0.1c0.4,0,0.9-0.1,1.3-0.2c0.9-0.3,1.7-1,2.1-2C22.3,13.7,21.4,11.5,19.6,10.6zM16.2,10.8v0.4c0,0,0,0,0,0v1.6c-0.8-0.3-1.7-0.5-2.7-0.5c-1.5,0-3,0.4-4,1.2c-0.7,0.5-1.8,0.8-3.1,0.8c-1.1,0-2-0.2-2.7-0.7v-2.8H16.2z M11,20.2H9c-2.8,0-5.1-2.2-5.2-5c0.8,0.3,1.7,0.5,2.6,0.5c0.1,0,0.1,0,0.2,0c1.5,0,2.9-0.4,3.9-1.2c0.7-0.5,1.8-0.8,3-0.8c0.1,0,0.1,0,0.2,0c1,0,2,0.2,2.7,0.7V15C16.2,17.9,13.9,20.2,11,20.2z M20,14.9c-0.2,0.5-0.7,1-1.3,1.2c-0.4,0.1-0.8,0.2-1.1,0.1c0.1-0.4,0.1-0.8,0.1-1.2v-3.2c0.4,0,0.8,0,1.2,0.2C20.1,12.5,20.6,13.8,20,14.9z"
19
+ />
20
+ </svg>
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ export let size: 'small' | 'medium' | 'large' | 'x-large'
7
+ const fill: string = 'currentColor'
8
+ </script>
9
+
10
+ <svg class="svg-{size}" viewBox="0 0 24 24" {fill} xmlns="http://www.w3.org/2000/svg">
11
+ <path
12
+ d="M12,7.2c-0.4,0-0.8,0.3-0.8,0.8v4c0,0.2,0.1,0.4,0.2,0.5l2,2c0.1,0.1,0.3,0.2,0.5,0.2s0.4-0.1,0.5-0.2c0.3-0.3,0.3-0.8,0-1.1l-1.8-1.8V8C12.8,7.6,12.4,7.2,12,7.2z"
13
+ />
14
+ <path
15
+ d="M19.6,5.8c-1.6-2-4-3.3-6.6-3.5C7.6,1.7,2.8,5.6,2.3,10.9c0,0.4,0.3,0.8,0.7,0.8c0.4,0,0.8-0.3,0.8-0.7c0.5-4.5,4.5-7.8,9-7.4C15,3.9,17,5,18.4,6.7c1.4,1.7,2,3.9,1.8,6c-0.2,2.2-1.3,4.2-3,5.6c-1.7,1.4-3.9,2-6,1.8c-2.8-0.3-5.2-2-6.5-4.4H8c0.4,0,0.8-0.3,0.8-0.8S8.5,14.2,8,14.2H3.6c0,0,0,0,0,0H3c-0.4,0-0.8,0.3-0.8,0.8v5c0,0.4,0.3,0.8,0.8,0.8s0.8-0.3,0.8-0.8v-2.8c1.6,2.5,4.2,4.1,7.2,4.4c0.3,0,0.7,0.1,1,0.1c2.2,0,4.4-0.8,6.1-2.2c2-1.6,3.3-4,3.5-6.6C22,10.3,21.2,7.8,19.6,5.8z"
16
+ />
17
+ </svg>
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ export let size: 'small' | 'medium' | 'large' | 'x-large'
7
+ const fill: string = 'currentColor'
8
+ </script>
9
+
10
+ <svg class="svg-{size}" viewBox="0 0 24 24" {fill} xmlns="http://www.w3.org/2000/svg">
11
+ <path
12
+ d="M11,21.8c-0.1,0-0.2,0-0.2,0c-0.3-0.1-0.5-0.4-0.5-0.7v-6.2H5c-0.3,0-0.5-0.2-0.7-0.4c-0.1-0.3-0.1-0.6,0.1-0.8l8-11c0.2-0.3,0.5-0.4,0.8-0.3c0.3,0.1,0.5,0.4,0.5,0.7v6.2H19c0.3,0,0.5,0.2,0.7,0.4s0.1,0.6-0.1,0.8l-8,11C11.5,21.6,11.2,21.8,11,21.8z M6.5,13.2H11c0.4,0,0.8,0.3,0.8,0.8v4.7l5.8-7.9H13c-0.4,0-0.8-0.3-0.8-0.8V5.3L6.5,13.2z"
13
+ />
14
+ </svg>
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ export let size: 'small' | 'medium' | 'large' | 'x-large'
7
+ const fill: string = 'currentColor'
8
+ </script>
9
+
10
+ <svg class="svg-{size}" viewBox="0 0 24 24" {fill} xmlns="http://www.w3.org/2000/svg">
11
+ <path
12
+ d="M20.7,6.9l-3.6-3.6c-1.4-1.4-3.7-1.4-5.1,0L9.3,6C8.6,6.6,8.2,7.6,8.2,8.5c0,0.9,0.3,1.7,0.8,2.3l-1.6,1.6c-0.1,0.1-0.2,0.3-0.2,0.5v1.2H6c-0.4,0-0.8,0.3-0.8,0.8v1.2H4c-0.2,0-0.4,0.1-0.5,0.2l-0.6,0.6c-0.4,0.5-0.6,1.1-0.6,1.8l0,1.2l0,0.2c0.1,0.9,0.9,1.5,1.7,1.5l1.2,0l0.2,0c0.6-0.1,1.2-0.3,1.7-0.8l6-6c1.4,1.2,3.6,1.1,4.9-0.2l2.6-2.6C22.1,10.6,22.1,8.3,20.7,6.9z M19.6,11L17,13.6c-0.8,0.8-2.2,0.8-3,0l-0.3-0.3c-0.3-0.3-0.8-0.3-1.1,0l-6.6,6.6c-0.2,0.2-0.5,0.3-0.7,0.4l-1.3,0c-0.1,0-0.2-0.1-0.2-0.2l0-1.2c0-0.3,0.1-0.6,0.3-0.8l0.3-0.3H6c0.4,0,0.8-0.3,0.8-0.8v-1.2H8c0.4,0,0.8-0.3,0.8-0.8v-1.7l1.9-1.9c0.1-0.1,0.2-0.3,0.2-0.5c0-0.2-0.1-0.4-0.2-0.5L10.4,10c-0.8-0.8-0.8-2.2,0-3L13,4.4c0.8-0.8,2.2-0.8,3,0L19.6,8C20.5,8.8,20.5,10.2,19.6,11z"
13
+ />
14
+ <path d="M15,7.8L15,7.8c-0.7,0-1.3,0.6-1.3,1.2s0.6,1.2,1.3,1.2s1.2-0.6,1.2-1.2S15.7,7.8,15,7.8z" />
15
+ </svg>
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ export let size: 'small' | 'medium' | 'large' | 'x-large'
7
+ const fill: string = 'currentColor'
8
+ </script>
9
+
10
+ <svg class="svg-{size}" viewBox="0 0 24 24" {fill} xmlns="http://www.w3.org/2000/svg">
11
+ <path
12
+ d="M21.5,20.5L16,14.9c1.1-1.3,1.8-3.1,1.8-4.9c0-4.3-3.5-7.8-7.8-7.8S2.2,5.7,2.2,10s3.5,7.8,7.8,7.8c1.9,0,3.6-0.7,4.9-1.8l5.5,5.5c0.1,0.1,0.3,0.2,0.5,0.2s0.4-0.1,0.5-0.2C21.8,21.2,21.8,20.8,21.5,20.5z M3.8,10c0-3.4,2.8-6.2,6.2-6.2s6.2,2.8,6.2,6.2s-2.8,6.2-6.2,6.2S3.8,13.4,3.8,10z"
13
+ />
14
+ </svg>
@@ -0,0 +1,23 @@
1
+ <script lang="ts">
2
+ //
3
+ // © 2025 Hardcore Engineering, Inc. All Rights Reserved.
4
+ // Licensed under the Eclipse Public License v2.0 (SPDX: EPL-2.0).
5
+ //
6
+ export let size: 'small' | 'medium' | 'large' | 'x-large'
7
+ const fill: string = 'currentColor'
8
+ </script>
9
+
10
+ <svg class="svg-{size}" viewBox="0 0 24 24" {fill} xmlns="http://www.w3.org/2000/svg">
11
+ <path
12
+ d="M12,2.2c-5.4,0-9.8,4.4-9.8,9.8s4.4,9.8,9.8,9.8s9.8-4.4,9.8-9.8S17.4,2.2,12,2.2z M12,20.2c-4.5,0-8.2-3.7-8.2-8.2S7.5,3.8,12,3.8s8.2,3.7,8.2,8.2S16.5,20.2,12,20.2z"
13
+ />
14
+ <path
15
+ d="M7.8,9.5c0,0.1,0.1,0.1,0.1,0.2c0,0.1,0.1,0.1,0.2,0.2c0.2,0.2,0.6,0.4,0.9,0.4c0.1,0,0.2,0,0.2,0c0.1,0,0.1,0,0.2-0.1c0.1,0,0.1-0.1,0.2-0.1c0.1,0,0.1-0.1,0.2-0.2C9.9,9.8,10,9.8,10,9.7c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0-0.1,0-0.2,0-0.2c0-0.3-0.1-0.7-0.4-0.9C9.8,8.1,9.8,8,9.7,8c-0.1,0-0.1-0.1-0.2-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.4-0.1-0.8,0-1.1,0.3C7.9,8.3,7.8,8.7,7.8,9c0,0.1,0,0.2,0,0.2C7.8,9.3,7.8,9.4,7.8,9.5z"
16
+ />
17
+ <path
18
+ d="M14.3,10c0.1,0,0.1,0.1,0.2,0.1c0.1,0,0.2,0.1,0.2,0.1c0.1,0,0.2,0,0.2,0s0.2,0,0.2,0c0.1,0,0.2,0,0.2-0.1c0.1,0,0.2-0.1,0.2-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0.2-0.2,0.4-0.6,0.4-0.9c0-0.3-0.1-0.7-0.4-0.9c0-0.1-0.1-0.1-0.2-0.2c-0.1,0-0.1-0.1-0.2-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.2,0-0.3,0-0.5,0c-0.1,0-0.2,0-0.2,0.1c-0.1,0-0.1,0.1-0.2,0.1c-0.1,0-0.1,0.1-0.2,0.2c-0.2,0.2-0.4,0.6-0.4,0.9c0,0.3,0.1,0.6,0.4,0.9C14.2,9.9,14.2,10,14.3,10z"
19
+ />
20
+ <path
21
+ d="M16,12.2H8c-0.4,0-0.8,0.3-0.8,0.8c0,2.6,2.1,4.8,4.8,4.8s4.8-2.1,4.8-4.8C16.8,12.6,16.4,12.2,16,12.2z M12,16.2c-1.5,0-2.8-1.1-3.2-2.5h6.3C14.8,15.2,13.5,16.2,12,16.2z"
22
+ />
23
+ </svg>