@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,186 @@
1
+ // Copyright © 2022 Hardcore Engineering Inc.
2
+ //
3
+ // Licensed under the Eclipse Public License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License. You may
5
+ // obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
6
+ //
7
+ // Unless required by applicable law or agreed to in writing, software
8
+ // distributed under the License is distributed on an "AS IS" BASIS,
9
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ //
11
+ // See the License for the specific language governing permissions and
12
+ // limitations under the License.
13
+
14
+ import { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz'
15
+ import { type TimeZone, capitalizeFirstLetter } from '../../..'
16
+
17
+ export const DAYS_IN_WEEK = 7
18
+
19
+ export const MILLISECONDS_IN_MINUTE = 60000
20
+ export const MILLISECONDS_IN_DAY = 86400000
21
+ export const MILLISECONDS_IN_WEEK = DAYS_IN_WEEK * MILLISECONDS_IN_DAY
22
+
23
+ export function firstDay (date: Date, firstDay: number = 1): Date {
24
+ const firstDayOfMonth = new Date(new Date(date).setHours(0, 0, 0, 0))
25
+ firstDayOfMonth.setDate(1) // First day of month
26
+ const result = new Date(firstDayOfMonth)
27
+ result.setDate(result.getDate() - result.getDay() + firstDay)
28
+ // Check if we need add one more week
29
+ if (result.getTime() > firstDayOfMonth.getTime()) {
30
+ result.setDate(result.getDate() - DAYS_IN_WEEK)
31
+ }
32
+ return result
33
+ }
34
+
35
+ export function getWeek (date: Date): number {
36
+ const onejan = new Date(date.getFullYear(), 0, 1)
37
+ return Math.ceil(((date.getTime() - onejan.getTime()) / MILLISECONDS_IN_DAY + onejan.getDay() + 1) / DAYS_IN_WEEK)
38
+ }
39
+
40
+ export function daysInMonth (date: Date): number {
41
+ return 33 - new Date(date.getFullYear(), date.getMonth(), 33).getDate()
42
+ }
43
+
44
+ export function getWeekDayName (weekDay: Date, weekFormat: 'narrow' | 'short' | 'long' | undefined = 'short'): string {
45
+ const locale = new Intl.NumberFormat().resolvedOptions().locale
46
+ return new Intl.DateTimeFormat(locale, {
47
+ weekday: weekFormat
48
+ }).format(weekDay)
49
+ }
50
+
51
+ export function getWeekDayNames (): Map<number, string> {
52
+ const today: Date = new Date()
53
+ const offset: number = 0 - today.getDay()
54
+ const startDate: number = today.setTime(today.getTime() + MILLISECONDS_IN_DAY * offset)
55
+ const result: Map<number, string> = new Map<number, string>()
56
+ for (let i = 0; i < 7; i++) {
57
+ result.set(i, capitalizeFirstLetter(getWeekDayName(new Date(startDate + i * MILLISECONDS_IN_DAY), 'long')))
58
+ }
59
+ return result
60
+ }
61
+
62
+ export function day (firstDay: Date, offset: number): Date {
63
+ return new Date(new Date(firstDay).setDate(firstDay.getDate() + offset))
64
+ }
65
+
66
+ export function weekday (firstDay: Date, w: number, d: number): Date {
67
+ return day(firstDay, w * DAYS_IN_WEEK + d)
68
+ }
69
+
70
+ export function areDatesEqual (firstDate: Date | undefined, secondDate: Date | undefined): boolean {
71
+ if (firstDate === undefined || secondDate === undefined) {
72
+ return false
73
+ }
74
+ return (
75
+ firstDate.getFullYear() === secondDate.getFullYear() &&
76
+ firstDate.getMonth() === secondDate.getMonth() &&
77
+ firstDate.getDate() === secondDate.getDate()
78
+ )
79
+ }
80
+
81
+ export function fromCurrentToTz (date: Date | number, tz: string): Date {
82
+ return utcToZonedTime(zonedTimeToUtc(date, getUserTimezone()), tz)
83
+ }
84
+
85
+ export function fromTzToCurrent (date: Date | number, tz: string): Date {
86
+ return utcToZonedTime(zonedTimeToUtc(date, tz), getUserTimezone())
87
+ }
88
+
89
+ export function isWeekend (date: Date): boolean {
90
+ return date.getDay() === 0 || date.getDay() === 6
91
+ }
92
+
93
+ export function getMonthName (date: Date, option: 'narrow' | 'short' | 'long' | 'numeric' | '2-digit' = 'long'): string {
94
+ try {
95
+ const locale = new Intl.NumberFormat().resolvedOptions().locale
96
+ return new Intl.DateTimeFormat(locale, { month: option }).format(date)
97
+ } catch (err) {
98
+ console.error(err)
99
+ return ''
100
+ }
101
+ }
102
+
103
+ export type TCellStyle = 'not-selected' | 'selected'
104
+ export interface ICell {
105
+ dayOfWeek: number
106
+ classes: TCellStyle
107
+ }
108
+
109
+ export function getLocalWeekStart (): number {
110
+ const locale = new Intl.Locale(navigator.language)
111
+ return typeof (locale as any)?.getWeekInfo === 'function'
112
+ ? (locale as any)?.getWeekInfo()?.firstDay
113
+ : (locale as any).weekInfo?.firstDay ?? 1
114
+ }
115
+
116
+ export function hasLocalWeekStart (): boolean {
117
+ const locale = new Intl.Locale(navigator.language)
118
+ return typeof (locale as any)?.getWeekInfo === 'function' || (locale as any).weekInfo?.firstDay !== undefined
119
+ }
120
+
121
+ export function getWeekStart (date: Date = new Date(), firstDay: number = 1): Date {
122
+ date = new Date(new Date(date).setHours(0, 0, 0, 0))
123
+ return new Date(date.setDate(date.getDate() - ((date.getDay() - firstDay + 7) % 7)))
124
+ }
125
+
126
+ export function addZero (value: number): string {
127
+ if (value < 10) {
128
+ return `0${value}`
129
+ }
130
+ return `${value}`
131
+ }
132
+
133
+ export const getDaysDifference = (from: Date, to: Date): number => {
134
+ const firstDateMs = from.setHours(0, 0, 0, 0)
135
+ const secondDateMs = to.setHours(0, 0, 0, 0)
136
+
137
+ return Math.round(Math.abs(secondDateMs - firstDateMs) / MILLISECONDS_IN_DAY)
138
+ }
139
+
140
+ export const getMillisecondsInMonth = (date: Date): number => {
141
+ return daysInMonth(date) * MILLISECONDS_IN_DAY
142
+ }
143
+
144
+ const WARNING_DAYS = 7
145
+
146
+ export const getDueDateIconModifier = (
147
+ isOverdue: boolean,
148
+ daysDifference: number | null,
149
+ shouldIgnoreOverdue: boolean
150
+ ): 'overdue' | 'critical' | 'warning' | 'normal' => {
151
+ if (shouldIgnoreOverdue) return 'normal'
152
+ if (isOverdue) return 'overdue'
153
+ if (daysDifference === 0) return 'critical'
154
+ if (daysDifference !== null && daysDifference <= WARNING_DAYS) return 'warning'
155
+ return 'normal'
156
+ }
157
+
158
+ export function getFormattedDate (value: number | null, options?: Intl.DateTimeFormatOptions): string {
159
+ return value === null ? '' : new Date(value).toLocaleString('default', options ?? { month: 'short', day: 'numeric' })
160
+ }
161
+
162
+ export const getTimeZoneName = (
163
+ val: string = Intl.DateTimeFormat().resolvedOptions().timeZoneName ?? Intl.DateTimeFormat().resolvedOptions().timeZone
164
+ ): string => {
165
+ return val.replace('_', ' ').split('/')[1] ?? ''
166
+ }
167
+
168
+ export const convertTimeZone = (tz: string): TimeZone => {
169
+ const tzSpace = tz.replace(/_/gi, ' ')
170
+ const parts = tzSpace.split('/')
171
+ if (tz === '' || parts.length === 1) return { id: tz, continent: tzSpace, city: tzSpace, short: tzSpace }
172
+ return {
173
+ id: tz,
174
+ continent: parts[0],
175
+ city: parts.length > 2 ? `${parts[1]} - ${parts[2]}` : parts[1],
176
+ short: parts.length > 2 ? parts[2] : parts[1]
177
+ }
178
+ }
179
+
180
+ export function getUserTimezone (): string {
181
+ if (window.Intl !== undefined) {
182
+ return Intl.DateTimeFormat().resolvedOptions().timeZone
183
+ } else {
184
+ return 'Etc/GMT'
185
+ }
186
+ }
@@ -0,0 +1,116 @@
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 type { EmojiWithGroup } from '.'
9
+ import { EmojiButton, getEmoji, getSkinTone, emojiStore } from '.'
10
+ import { Label, IconDelete, closeTooltip, ButtonBase } from '../..'
11
+ import plugin from '../../plugin'
12
+ import SkinToneTooltip from './SkinToneTooltip.svelte'
13
+
14
+ export let emoji: EmojiWithGroup
15
+ export let remove: boolean = false
16
+ export let skinTone: number = getSkinTone()
17
+
18
+ const dispatch = createEventDispatcher()
19
+ closeTooltip()
20
+
21
+ const haveSkins = Array.isArray(emoji.skins)
22
+ const combinedEmoji = haveSkins && (emoji?.skins?.length ?? 0) > 5
23
+
24
+ const clickRemove = (): void => {
25
+ dispatch('close', 'remove')
26
+ }
27
+ const getEmojiParts = (e: EmojiWithGroup): EmojiWithGroup[] => {
28
+ const def = $emojiStore[168]
29
+ const temp = e.skins?.find((skin) => Array.isArray(skin.tone) && skin.tone.length > 1)?.hexcode.split('-200D-')
30
+ if (temp === undefined || temp.length < 2) return [def, def]
31
+ const firstEmoji = getEmoji(temp[0].slice(0, -6))?.emoji ?? def
32
+ const secondEmoji = getEmoji(temp[temp.length - 1].slice(0, -6))?.emoji ?? def
33
+ return [firstEmoji, secondEmoji]
34
+ }
35
+ const emojiParts = getEmojiParts(emoji)
36
+ const combinedTones: number[] = [skinTone, skinTone]
37
+
38
+ const updateSkinTone = (result: CustomEvent<{ detail: number }>, index: number): void => {
39
+ const res = result.detail
40
+ if (typeof res === 'number') {
41
+ combinedTones[index] = res
42
+ const nextIndex = index === 1 ? 0 : 1
43
+ if (res === 0 && combinedTones[nextIndex] !== 0) combinedTones[nextIndex] = 0
44
+ else if (res !== 0 && combinedTones[nextIndex] === 0) combinedTones[nextIndex] = res
45
+ }
46
+ }
47
+
48
+ const getEmojiByTone = (e: EmojiWithGroup, [a, b]: number[]): Emoji | undefined => {
49
+ const equal = a === b
50
+ const noTone = a === 0
51
+ return equal && noTone
52
+ ? e
53
+ : e.skins?.find((skin) =>
54
+ equal ? skin.tone === a : Array.isArray(skin.tone) && skin.tone[0] === a && skin.tone[1] === b
55
+ )
56
+ }
57
+ const getEmojiStringByTone = (e: EmojiWithGroup, [a, b]: number[]): string | undefined => {
58
+ return getEmojiByTone(e, [a, b])?.emoji
59
+ }
60
+ </script>
61
+
62
+ <div class="hulyPopup-container noPadding autoWidth">
63
+ {#if haveSkins}
64
+ {#if combinedEmoji && emojiParts?.length === 2}
65
+ <div class="hulyPopup-row disabled skins-row">
66
+ {#each new Array(2) as _, index}
67
+ <EmojiButton
68
+ emoji={emojiParts[index]}
69
+ skinTone={combinedTones[index]}
70
+ preview
71
+ showTooltip={{
72
+ component: SkinToneTooltip,
73
+ props: { emoji: emojiParts[index], selected: combinedTones[index] },
74
+ onUpdate: (result) => {
75
+ updateSkinTone(result, index)
76
+ }
77
+ }}
78
+ />
79
+ {#if index === 0}
80
+ <ButtonBase
81
+ type={'type-button-icon'}
82
+ kind={'tertiary'}
83
+ size={'large'}
84
+ on:click={() => {
85
+ dispatch('close', getEmojiByTone(emoji, combinedTones))
86
+ }}
87
+ >
88
+ <span style:font-size={'2.5rem'}>{getEmojiStringByTone(emoji, combinedTones)}</span>
89
+ </ButtonBase>
90
+ {/if}
91
+ {/each}
92
+ </div>
93
+ {:else}
94
+ <div class="hulyPopup-row disabled skins-row">
95
+ {#each new Array((emoji.skins?.length ?? 5) + 1) as _, skin}
96
+ <EmojiButton {emoji} skinTone={skin} preview on:select={(result) => dispatch('close', result.detail)} />
97
+ {/each}
98
+ </div>
99
+ {/if}
100
+ {/if}
101
+ {#if remove}
102
+ {#if haveSkins}<div class="hulyPopup-divider" />{/if}
103
+ <div class="hulyPopup-group">
104
+ <button class="hulyPopup-row" on:click={clickRemove}>
105
+ <div class="hulyPopup-row__icon red-color"><IconDelete size={'small'} /></div>
106
+ <span class="hulyPopup-row__label red-color"><Label label={plugin.string.Remove} /></span>
107
+ </button>
108
+ </div>
109
+ {/if}
110
+ </div>
111
+
112
+ <style lang="scss">
113
+ .skins-row {
114
+ align-items: center;
115
+ }
116
+ </style>
@@ -0,0 +1,146 @@
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 { getEmbeddedLabel } from '@hanzo/platform'
8
+ import { tooltip, capitalizeFirstLetter, type EmojiWithGroup, type LabelAndProps } from '../../'
9
+ import { getEmoji } from '.'
10
+ import { type Emoji } from 'emojibase'
11
+
12
+ export let emoji: EmojiWithGroup
13
+ export let selected: boolean = false
14
+ export let disabled: boolean = false
15
+ export let preview: boolean = false
16
+ export let skinTone: number = 0
17
+ export let showTooltip: LabelAndProps | undefined = undefined
18
+
19
+ const dispatch = createEventDispatcher()
20
+
21
+ const getSkinsCount = (e: Emoji | EmojiWithGroup): number | undefined => {
22
+ return Array.isArray(e.skins) ? e.skins.length : undefined
23
+ }
24
+
25
+ let displayedEmoji: Emoji | EmojiWithGroup
26
+ $: _emoji = (getSkinsCount(emoji) ?? 0) > 0 ? emoji : getEmoji(emoji.hexcode)?.parent ?? emoji
27
+ $: skinIndex = _emoji?.skins?.findIndex((skin) => skin.tone === skinTone) ?? -1
28
+ $: displayedEmoji = skinTone > 0 && Array.isArray(_emoji.skins) && skinIndex > -1 ? _emoji.skins[skinIndex] : _emoji
29
+ </script>
30
+
31
+ {#if emoji}
32
+ <button
33
+ use:tooltip={showTooltip ?? { label: getEmbeddedLabel(capitalizeFirstLetter(displayedEmoji?.label ?? '')) }}
34
+ class="hulyPopupEmoji-button"
35
+ class:preview
36
+ class:selected
37
+ class:skins={_emoji?.skins !== undefined && _emoji.skins.length === 5}
38
+ class:constructor={_emoji?.skins !== undefined && _emoji.skins.length > 5}
39
+ data-skins={getSkinsCount(_emoji)}
40
+ {disabled}
41
+ on:touchstart
42
+ on:contextmenu
43
+ on:click={() => {
44
+ if (disabled) return
45
+ dispatch('select', displayedEmoji)
46
+ }}
47
+ >
48
+ <span>{displayedEmoji.emoji}</span>
49
+ </button>
50
+ {/if}
51
+
52
+ <style lang="scss">
53
+ .hulyPopupEmoji-button {
54
+ display: flex;
55
+ justify-content: center;
56
+ align-items: center;
57
+ flex-shrink: 0;
58
+ line-height: 150%;
59
+ border: 1px solid transparent;
60
+
61
+ &:not(.preview) {
62
+ margin: 0.125rem;
63
+ padding: 0.25rem;
64
+ width: 2.75rem;
65
+ height: 2.75rem;
66
+ font-size: 2rem;
67
+ border-radius: 0.75rem;
68
+ }
69
+ &.preview {
70
+ margin: 0;
71
+ padding: 0;
72
+ width: 2.25rem;
73
+ height: 2.25rem;
74
+ font-size: 1.75rem;
75
+ border-radius: 0.375rem;
76
+ }
77
+ span {
78
+ transform: translateY(1%);
79
+ pointer-events: none;
80
+ }
81
+ &:enabled:hover {
82
+ background-color: var(--theme-popup-hover);
83
+ }
84
+
85
+ &.selected {
86
+ border-color: var(--button-primary-BorderColor);
87
+ background-color: var(--button-primary-BackgroundColor);
88
+
89
+ &:not(.disabled, :disabled):hover {
90
+ background-color: var(--button-primary-hover-BackgroundColor);
91
+ }
92
+ }
93
+
94
+ :global(.mobile-theme) & {
95
+ width: 2rem;
96
+ height: 2rem;
97
+ font-size: 1.5rem;
98
+ border-radius: 0.25rem;
99
+ }
100
+
101
+ &.skins:not(.preview) {
102
+ position: relative;
103
+ border: 1px dashed var(--theme-button-border);
104
+
105
+ &:hover {
106
+ &::after {
107
+ content: '';
108
+ position: absolute;
109
+ top: -0.375rem;
110
+ right: -0.375rem;
111
+ width: 1rem;
112
+ height: 1rem;
113
+ border-radius: 50%;
114
+ background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 28.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 8 8' style='enable-background:new 0 0 8 8;' xml:space='preserve'%3E%3Cg%3E%3Ccircle fill='%23FFC92C' cx='5.3' cy='1.3' r='1.3' /%3E%3Ccircle fill='%23BF8F68' cx='2.7' cy='6' r='1.3' /%3E%3Ccircle fill='%23E0BB95' cx='5.3' cy='6' r='1.3' /%3E%3Ccircle fill='%239B643D' cx='1.3' cy='3.6' r='1.3' /%3E%3Ccircle fill='%23594539' cx='2.7' cy='1.3' r='1.3' /%3E%3Ccircle fill='%23FADCBC' cx='6.7' cy='3.6' r='1.3' /%3E%3C/g%3E%3C/svg%3E%0A");
115
+ }
116
+ }
117
+ }
118
+ &.constructor:not(.preview) {
119
+ position: relative;
120
+ border: 1px dashed var(--theme-button-border);
121
+
122
+ &:hover {
123
+ &::before {
124
+ content: '';
125
+ position: absolute;
126
+ top: -0.25rem;
127
+ right: -0.25rem;
128
+ width: 1rem;
129
+ height: 1rem;
130
+ border-radius: 50%;
131
+ background-color: var(--global-focus-BorderColor);
132
+ }
133
+ &::after {
134
+ content: attr(data-skins);
135
+ position: absolute;
136
+ top: 0.25rem;
137
+ right: 0.25rem;
138
+ font-size: 0.625rem;
139
+ font-weight: 700;
140
+ color: #fff;
141
+ transform: translate(50%, -50%);
142
+ }
143
+ }
144
+ }
145
+ }
146
+ </style>
@@ -0,0 +1,105 @@
1
+ <!--
2
+ // Copyright © 2025 Hardcore Engineering Inc.
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
+
16
+ <script lang="ts">
17
+ import { Label, Lazy } from '../../index'
18
+ import EmojiGroupPalette from './EmojiGroupPalette.svelte'
19
+ import { resultEmojis, EmojiWithGroup, EmojiCategory } from '.'
20
+
21
+ import plugin from '../../plugin'
22
+
23
+ export let group: EmojiCategory
24
+ export let lazy: boolean = true
25
+ export let searching: boolean = false
26
+ export let disabled: boolean = false
27
+ export let selected: string | undefined = undefined
28
+ export let skinTone: number = 0
29
+ export let kind: 'default' | 'fade' = 'fade'
30
+
31
+ let emojis: EmojiWithGroup[] = []
32
+ $: emojis = searching
33
+ ? $resultEmojis
34
+ : Array.isArray(group.emojis)
35
+ ? group.emojis
36
+ : $resultEmojis.filter((re) => re.key === group.id)
37
+ </script>
38
+
39
+ <div class="hulyPopupEmoji-group kind-{kind}" class:lazy>
40
+ <div id={group.id} class="hulyPopupEmoji-group__header categoryHeader">
41
+ <Label label={searching && $resultEmojis.length === 0 ? plugin.string.NoResults : group.label} />
42
+ </div>
43
+ {#if lazy}
44
+ <Lazy>
45
+ <EmojiGroupPalette {emojis} {disabled} {selected} {skinTone} on:select on:touchstart on:contextmenu />
46
+ </Lazy>
47
+ {:else}
48
+ <EmojiGroupPalette {emojis} {disabled} {selected} {skinTone} on:select on:touchstart on:contextmenu />
49
+ {/if}
50
+ </div>
51
+
52
+ <style lang="scss">
53
+ .hulyPopupEmoji-group {
54
+ display: flex;
55
+ flex-direction: column;
56
+ flex-wrap: nowrap;
57
+ min-width: 0;
58
+ min-height: 0;
59
+
60
+ &.lazy {
61
+ min-height: 10rem;
62
+ }
63
+
64
+ &__header {
65
+ position: sticky;
66
+ flex-shrink: 0;
67
+ margin: 0.75rem 0.75rem 0.25rem;
68
+ padding: 0.25rem 0.375rem;
69
+ top: 0;
70
+ height: 1.5rem;
71
+ font-size: 0.75rem;
72
+ font-weight: 600;
73
+ text-transform: uppercase;
74
+ text-shadow: 0 0 0.25rem var(--theme-popup-color);
75
+ color: var(--theme-caption-color);
76
+ border-radius: 0.25rem;
77
+ z-index: 1;
78
+ pointer-events: none;
79
+
80
+ &:first-child {
81
+ margin-top: 0;
82
+ }
83
+ &::before {
84
+ content: '';
85
+ position: absolute;
86
+ top: -1px;
87
+ left: 0;
88
+ width: 100%;
89
+ height: 150%;
90
+ background: var(--theme-popup-trans-gradient);
91
+ z-index: -1;
92
+ }
93
+ }
94
+
95
+ &.kind-default {
96
+ .hulyPopupEmoji-group__header {
97
+ background: var(--theme-popup-header);
98
+
99
+ &::before {
100
+ content: none;
101
+ }
102
+ }
103
+ }
104
+ }
105
+ </style>
@@ -0,0 +1,58 @@
1
+ <!--
2
+ // Copyright © 2025 Hardcore Engineering Inc.
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
+
16
+ <script lang="ts">
17
+ import { createEventDispatcher } from 'svelte'
18
+ import type { EmojiWithGroup } from '.'
19
+
20
+ import EmojiButton from './EmojiButton.svelte'
21
+
22
+ export let emojis: EmojiWithGroup[]
23
+ export let selected: string | undefined
24
+ export let disabled: boolean = false
25
+ export let skinTone: number = 0
26
+
27
+ const dispatch = createEventDispatcher()
28
+ </script>
29
+
30
+ <div class="hulyPopupEmoji-group__palette">
31
+ {#each emojis as emoji}
32
+ <EmojiButton
33
+ {emoji}
34
+ selected={emoji.emoji === selected}
35
+ {disabled}
36
+ {skinTone}
37
+ on:select
38
+ on:touchstart={(event) => {
39
+ dispatch('touchstart', { event, emoji })
40
+ }}
41
+ on:contextmenu={(event) => {
42
+ dispatch('contextmenu', { event, emoji })
43
+ }}
44
+ />
45
+ {/each}
46
+ <div class="clear-mins flex-grow" />
47
+ </div>
48
+
49
+ <style lang="scss">
50
+ .hulyPopupEmoji-group__palette {
51
+ display: flex;
52
+ justify-content: space-between;
53
+ flex-wrap: wrap;
54
+ flex-shrink: 0;
55
+ margin-inline: 0.75rem;
56
+ font-size: 1.25rem;
57
+ }
58
+ </style>