@hanzo/ui 0.5.24 → 0.6.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. package/.eslintrc.js +4 -0
  2. package/.prettierrc +22 -0
  3. package/.rush/temp/chunked-rush-logs/ui._phase_build.chunks.jsonl +2 -0
  4. package/.rush/temp/chunked-rush-logs/ui._phase_validate.chunks.jsonl +11 -0
  5. package/.rush/temp/hcengineering+ui-_phase_build-16380278e5d28b32a6666092bd103ddbd2c66a56.tar.log +12 -0
  6. package/.rush/temp/hcengineering+ui-_phase_build-16380278e5d28b32a6666092bd103ddbd2c66a56.untar.log +10 -0
  7. package/.rush/temp/hcengineering+ui-_phase_validate-8f047ca66e6a4a177eee65782e723a7dc128d73e.tar.log +65 -0
  8. package/.rush/temp/hcengineering+ui-_phase_validate-8f047ca66e6a4a177eee65782e723a7dc128d73e.untar.log +10 -0
  9. package/.rush/temp/operation/_phase_build/all.log +2 -0
  10. package/.rush/temp/operation/_phase_build/log-chunks.jsonl +2 -0
  11. package/.rush/temp/operation/_phase_build/state.json +3 -0
  12. package/.rush/temp/operation/_phase_validate/all.log +11 -0
  13. package/.rush/temp/operation/_phase_validate/log-chunks.jsonl +11 -0
  14. package/.rush/temp/operation/_phase_validate/state.json +3 -0
  15. package/.rush/temp/shrinkwrap-deps.json +585 -0
  16. package/.validate/tsBuildInfoFile.info +1 -0
  17. package/.validate/validate-err.log +0 -0
  18. package/.validate/validate.log +0 -0
  19. package/CHANGELOG.json +17 -0
  20. package/CHANGELOG.md +9 -0
  21. package/config/rig.json +5 -0
  22. package/jest.config.js +5 -0
  23. package/lang/cs.json +119 -0
  24. package/lang/de.json +119 -0
  25. package/lang/en.json +120 -0
  26. package/lang/es.json +120 -0
  27. package/lang/fr.json +120 -0
  28. package/lang/it.json +120 -0
  29. package/lang/pt.json +120 -0
  30. package/lang/ru.json +120 -0
  31. package/lang/zh.json +120 -0
  32. package/package.json +52 -100
  33. package/postcss.config.js +5 -0
  34. package/rush-logs/ui._phase_build.cache.log +4 -0
  35. package/rush-logs/ui._phase_build.log +2 -0
  36. package/rush-logs/ui._phase_validate.cache.log +4 -0
  37. package/rush-logs/ui._phase_validate.log +11 -0
  38. package/src/__test__/location.test.ts +12 -0
  39. package/src/colors.ts +552 -0
  40. package/src/components/AccordionItem.svelte +132 -0
  41. package/src/components/ActionIcon.svelte +88 -0
  42. package/src/components/BarDashboard.svelte +47 -0
  43. package/src/components/BooleanIcon.svelte +31 -0
  44. package/src/components/Breadcrumb.svelte +102 -0
  45. package/src/components/Breadcrumbs.svelte +73 -0
  46. package/src/components/Button.svelte +196 -0
  47. package/src/components/ButtonBase.svelte +117 -0
  48. package/src/components/ButtonGroup.svelte +48 -0
  49. package/src/components/ButtonIcon.svelte +63 -0
  50. package/src/components/ButtonMenu.svelte +103 -0
  51. package/src/components/ButtonWithDropdown.svelte +120 -0
  52. package/src/components/CheckBox.svelte +239 -0
  53. package/src/components/CheckBoxList.svelte.txt +88 -0
  54. package/src/components/CheckBoxWithLabel.svelte.txt +147 -0
  55. package/src/components/Chevron.svelte +85 -0
  56. package/src/components/Chip.svelte +109 -0
  57. package/src/components/CircleButton.svelte +165 -0
  58. package/src/components/CodeForm.svelte +164 -0
  59. package/src/components/CodeInput.svelte +86 -0
  60. package/src/components/ColorPopup.svelte +119 -0
  61. package/src/components/Component.svelte +152 -0
  62. package/src/components/Dialog.svelte +105 -0
  63. package/src/components/Dock.svelte +53 -0
  64. package/src/components/Dropdown.svelte +91 -0
  65. package/src/components/DropdownLabels.svelte +156 -0
  66. package/src/components/DropdownLabelsIntl.svelte +108 -0
  67. package/src/components/DropdownLabelsPopup.svelte +148 -0
  68. package/src/components/DropdownLabelsPopupIntl.svelte +72 -0
  69. package/src/components/DropdownPopup.svelte +146 -0
  70. package/src/components/DropdownRecord.svelte +50 -0
  71. package/src/components/DropdownRecordPopup.svelte +82 -0
  72. package/src/components/EditBox.svelte +211 -0
  73. package/src/components/EditWithIcon.svelte +130 -0
  74. package/src/components/EmbeddedPDF.svelte +88 -0
  75. package/src/components/ErrorPopup.svelte +27 -0
  76. package/src/components/ErrorPresenter.svelte +32 -0
  77. package/src/components/ExpandCollapse.svelte +42 -0
  78. package/src/components/Expandable.svelte +90 -0
  79. package/src/components/FocusHandler.svelte +21 -0
  80. package/src/components/Fold.svelte +52 -0
  81. package/src/components/Grid.svelte +39 -0
  82. package/src/components/Header.svelte +260 -0
  83. package/src/components/HlsVideo.svelte +170 -0
  84. package/src/components/Hotkey.svelte +50 -0
  85. package/src/components/HotkeyGroup.svelte +25 -0
  86. package/src/components/Html.svelte +24 -0
  87. package/src/components/Icon.svelte +45 -0
  88. package/src/components/IconWithEmoji.svelte +74 -0
  89. package/src/components/Image.svelte +71 -0
  90. package/src/components/Label.svelte +38 -0
  91. package/src/components/Lazy.svelte +29 -0
  92. package/src/components/Like.svelte +73 -0
  93. package/src/components/Link.svelte +75 -0
  94. package/src/components/LinkWrapper.svelte +35 -0
  95. package/src/components/ListView.svelte +153 -0
  96. package/src/components/ListViewItem.svelte +84 -0
  97. package/src/components/Loading.svelte +88 -0
  98. package/src/components/Menu.svelte +205 -0
  99. package/src/components/MiniToggle.svelte +125 -0
  100. package/src/components/Modal.svelte +117 -0
  101. package/src/components/ModeSelector.svelte +37 -0
  102. package/src/components/ModernButton.svelte +61 -0
  103. package/src/components/ModernCheckbox.svelte +123 -0
  104. package/src/components/ModernDialog.svelte +258 -0
  105. package/src/components/ModernEditbox.svelte +256 -0
  106. package/src/components/ModernPopup.svelte +105 -0
  107. package/src/components/ModernRadioButton.svelte +111 -0
  108. package/src/components/ModernTab.svelte +184 -0
  109. package/src/components/ModernToggle.svelte +153 -0
  110. package/src/components/MouseSpeedTracker.svelte +74 -0
  111. package/src/components/MultiProgress.svelte +97 -0
  112. package/src/components/NavGroup.svelte +160 -0
  113. package/src/components/NavItem.svelte +346 -0
  114. package/src/components/NestedDropdown.svelte +62 -0
  115. package/src/components/NestedMenu.svelte +119 -0
  116. package/src/components/NotificationToast.svelte +112 -0
  117. package/src/components/NumberInput.svelte +200 -0
  118. package/src/components/Panel.svelte +324 -0
  119. package/src/components/PanelInstance.svelte +254 -0
  120. package/src/components/PlainTextEditor.svelte +100 -0
  121. package/src/components/Popup.svelte +50 -0
  122. package/src/components/PopupInstance.svelte +390 -0
  123. package/src/components/PopupMenu.svelte +120 -0
  124. package/src/components/Progress.svelte +124 -0
  125. package/src/components/ProgressCircle.svelte +71 -0
  126. package/src/components/RadioButton.svelte +69 -0
  127. package/src/components/RadioGroup.svelte +42 -0
  128. package/src/components/RootStatusComponent.svelte +65 -0
  129. package/src/components/Row.svelte +25 -0
  130. package/src/components/ScrollBox.svelte +98 -0
  131. package/src/components/Scroller.svelte +1063 -0
  132. package/src/components/ScrollerBar.svelte +181 -0
  133. package/src/components/SearchEdit.svelte +46 -0
  134. package/src/components/SearchInput.svelte +213 -0
  135. package/src/components/SearchPicker.svelte +114 -0
  136. package/src/components/Section.svelte +49 -0
  137. package/src/components/SectionEmpty.svelte +38 -0
  138. package/src/components/SelectBox.svelte +76 -0
  139. package/src/components/SelectPopup.svelte +217 -0
  140. package/src/components/Separator.svelte +736 -0
  141. package/src/components/ShowMore.svelte +99 -0
  142. package/src/components/Spinner.svelte +72 -0
  143. package/src/components/SplitButton.svelte +100 -0
  144. package/src/components/StateTag.svelte +79 -0
  145. package/src/components/Status.svelte +33 -0
  146. package/src/components/StepsDialog.svelte +290 -0
  147. package/src/components/StylishEdit.svelte +127 -0
  148. package/src/components/Submenu.svelte +68 -0
  149. package/src/components/Switcher.svelte +55 -0
  150. package/src/components/SwitcherBase.svelte +116 -0
  151. package/src/components/TabList.svelte +290 -0
  152. package/src/components/Tabs.svelte +45 -0
  153. package/src/components/TabsControl.svelte +113 -0
  154. package/src/components/TextArea.svelte +110 -0
  155. package/src/components/TextAreaEditor.svelte +78 -0
  156. package/src/components/TimeLeft.svelte +66 -0
  157. package/src/components/TimeShiftPicker.svelte +84 -0
  158. package/src/components/TimeShiftPopup.svelte +64 -0
  159. package/src/components/TimeShiftPresenter.svelte +59 -0
  160. package/src/components/TimeSince.svelte +86 -0
  161. package/src/components/TimeZonesPopup.svelte +185 -0
  162. package/src/components/Timeline.svelte +754 -0
  163. package/src/components/Toggle.svelte +116 -0
  164. package/src/components/ToggleButton.svelte +176 -0
  165. package/src/components/ToggleWithLabel.svelte +58 -0
  166. package/src/components/TooltipInstance.svelte +613 -0
  167. package/src/components/Video.svelte +40 -0
  168. package/src/components/calendar/DateInputBox.svelte +430 -0
  169. package/src/components/calendar/DatePicker.svelte +46 -0
  170. package/src/components/calendar/DatePopup.svelte +274 -0
  171. package/src/components/calendar/DatePresenter.svelte +392 -0
  172. package/src/components/calendar/DateRangePicker.svelte +50 -0
  173. package/src/components/calendar/DateRangePopup.svelte +76 -0
  174. package/src/components/calendar/DateRangePresenter.svelte +779 -0
  175. package/src/components/calendar/DateTimePresenter.svelte +23 -0
  176. package/src/components/calendar/DateTimeRangePresenter.svelte +28 -0
  177. package/src/components/calendar/DueDatePopup.svelte +93 -0
  178. package/src/components/calendar/DueDatePresenter.svelte +83 -0
  179. package/src/components/calendar/Month.svelte +243 -0
  180. package/src/components/calendar/MonthCalendar.svelte +138 -0
  181. package/src/components/calendar/MonthSquare.svelte +315 -0
  182. package/src/components/calendar/RangeDatePopup.svelte +231 -0
  183. package/src/components/calendar/Shifts.svelte +114 -0
  184. package/src/components/calendar/SimpleDatePopup.svelte +42 -0
  185. package/src/components/calendar/SimpleTimePopup.svelte +41 -0
  186. package/src/components/calendar/TimeInputBox.svelte +282 -0
  187. package/src/components/calendar/TimePopup.svelte +62 -0
  188. package/src/components/calendar/WeekCalendar.svelte +116 -0
  189. package/src/components/calendar/YearCalendar.svelte +67 -0
  190. package/src/components/calendar/icons/DPCalendar.svelte +12 -0
  191. package/src/components/calendar/icons/DPCalendarOver.svelte +15 -0
  192. package/src/components/calendar/icons/DPClock.svelte +13 -0
  193. package/src/components/calendar/icons/DPClockBold.svelte +10 -0
  194. package/src/components/calendar/icons/DPEnd.svelte +13 -0
  195. package/src/components/calendar/icons/DPSetCalendar.svelte +10 -0
  196. package/src/components/calendar/icons/DPStart.svelte +13 -0
  197. package/src/components/calendar/internal/DateUtils.ts +186 -0
  198. package/src/components/emoji/ActionsPopup.svelte +116 -0
  199. package/src/components/emoji/EmojiButton.svelte +146 -0
  200. package/src/components/emoji/EmojiGroup.svelte +105 -0
  201. package/src/components/emoji/EmojiGroupPalette.svelte +58 -0
  202. package/src/components/emoji/EmojiPopup.svelte +430 -0
  203. package/src/components/emoji/SkinTonePopup.svelte +40 -0
  204. package/src/components/emoji/SkinToneTooltip.svelte +36 -0
  205. package/src/components/emoji/icons/Activities.svelte +20 -0
  206. package/src/components/emoji/icons/AnimalsAndNature.svelte +16 -0
  207. package/src/components/emoji/icons/Flags.svelte +14 -0
  208. package/src/components/emoji/icons/FoodAndDrink.svelte +20 -0
  209. package/src/components/emoji/icons/FrequentlyUsed.svelte +17 -0
  210. package/src/components/emoji/icons/GettingWorkDone.svelte +14 -0
  211. package/src/components/emoji/icons/Objects.svelte +15 -0
  212. package/src/components/emoji/icons/Search.svelte +14 -0
  213. package/src/components/emoji/icons/SmileysAndPeople.svelte +23 -0
  214. package/src/components/emoji/icons/Symbols.svelte +23 -0
  215. package/src/components/emoji/icons/TravelAndPlaces.svelte +17 -0
  216. package/src/components/emoji/index.ts +97 -0
  217. package/src/components/emoji/store.ts +44 -0
  218. package/src/components/emoji/types.ts +34 -0
  219. package/src/components/emoji/utils.ts +182 -0
  220. package/src/components/icons/Activity.svelte +16 -0
  221. package/src/components/icons/ActivityEdit.svelte +25 -0
  222. package/src/components/icons/Add.svelte +10 -0
  223. package/src/components/icons/ArrowLeft.svelte +25 -0
  224. package/src/components/icons/ArrowRight.svelte +25 -0
  225. package/src/components/icons/Attachment.svelte +29 -0
  226. package/src/components/icons/Back.svelte +32 -0
  227. package/src/components/icons/BlueCheck.svelte +11 -0
  228. package/src/components/icons/Calendar.svelte +10 -0
  229. package/src/components/icons/Check.svelte +12 -0
  230. package/src/components/icons/CheckAll.svelte +27 -0
  231. package/src/components/icons/CheckCircle.svelte +12 -0
  232. package/src/components/icons/Checkmark.svelte +26 -0
  233. package/src/components/icons/ChevronDown.svelte +27 -0
  234. package/src/components/icons/ChevronLeft.svelte +22 -0
  235. package/src/components/icons/ChevronRight.svelte +22 -0
  236. package/src/components/icons/CircleAdd.svelte +13 -0
  237. package/src/components/icons/Circles.svelte +43 -0
  238. package/src/components/icons/Close.svelte +10 -0
  239. package/src/components/icons/ColStar.svelte +31 -0
  240. package/src/components/icons/CollapseArrow.svelte +8 -0
  241. package/src/components/icons/Copy.svelte +10 -0
  242. package/src/components/icons/Delete.svelte +18 -0
  243. package/src/components/icons/Description.svelte +31 -0
  244. package/src/components/icons/Details.svelte +36 -0
  245. package/src/components/icons/DetailsFilled.svelte +27 -0
  246. package/src/components/icons/Down.svelte +8 -0
  247. package/src/components/icons/DownOutline.svelte +8 -0
  248. package/src/components/icons/Dropdown.svelte +8 -0
  249. package/src/components/icons/DropdownDown.svelte +24 -0
  250. package/src/components/icons/DropdownRight.svelte +24 -0
  251. package/src/components/icons/Edit.svelte +26 -0
  252. package/src/components/icons/Emoji.svelte +10 -0
  253. package/src/components/icons/Error.svelte +27 -0
  254. package/src/components/icons/Expand.svelte +10 -0
  255. package/src/components/icons/File.svelte +25 -0
  256. package/src/components/icons/Filter.svelte +26 -0
  257. package/src/components/icons/Folder.svelte +13 -0
  258. package/src/components/icons/FolderCollapsed.svelte +34 -0
  259. package/src/components/icons/FolderExpanded.svelte +34 -0
  260. package/src/components/icons/Forward.svelte +8 -0
  261. package/src/components/icons/HalfUpDown.svelte +7 -0
  262. package/src/components/icons/History.svelte +10 -0
  263. package/src/components/icons/Info.svelte +26 -0
  264. package/src/components/icons/KeyCommand.svelte +12 -0
  265. package/src/components/icons/KeyOption.svelte +8 -0
  266. package/src/components/icons/KeyShift.svelte +8 -0
  267. package/src/components/icons/Left.svelte +10 -0
  268. package/src/components/icons/Like.svelte +25 -0
  269. package/src/components/icons/Link.svelte +10 -0
  270. package/src/components/icons/MaxWidth.svelte +27 -0
  271. package/src/components/icons/Maximize.svelte +25 -0
  272. package/src/components/icons/MenuClose.svelte +28 -0
  273. package/src/components/icons/MenuOpen.svelte +26 -0
  274. package/src/components/icons/MinWidth.svelte +27 -0
  275. package/src/components/icons/Minimize.svelte +28 -0
  276. package/src/components/icons/Mixin.svelte +38 -0
  277. package/src/components/icons/MoreH.svelte +16 -0
  278. package/src/components/icons/MoreV.svelte +16 -0
  279. package/src/components/icons/MoreV2.svelte +29 -0
  280. package/src/components/icons/NavNext.svelte +10 -0
  281. package/src/components/icons/NavPrev.svelte +10 -0
  282. package/src/components/icons/Open.svelte +11 -0
  283. package/src/components/icons/OpenedArrow.svelte +26 -0
  284. package/src/components/icons/Options.svelte +12 -0
  285. package/src/components/icons/Redo.svelte +10 -0
  286. package/src/components/icons/Right.svelte +26 -0
  287. package/src/components/icons/Scale.svelte +13 -0
  288. package/src/components/icons/ScaleFull.svelte +13 -0
  289. package/src/components/icons/Scribble.svelte +10 -0
  290. package/src/components/icons/Search.svelte +12 -0
  291. package/src/components/icons/Send.svelte +10 -0
  292. package/src/components/icons/Settings.svelte +13 -0
  293. package/src/components/icons/Share.svelte +13 -0
  294. package/src/components/icons/SquareExpand.svelte +13 -0
  295. package/src/components/icons/Start.svelte +10 -0
  296. package/src/components/icons/Stop.svelte +8 -0
  297. package/src/components/icons/TableOfContents.svelte +35 -0
  298. package/src/components/icons/Thread.svelte +29 -0
  299. package/src/components/icons/ToDetails.svelte +28 -0
  300. package/src/components/icons/Undo.svelte +10 -0
  301. package/src/components/icons/Up.svelte +8 -0
  302. package/src/components/icons/UpOutline.svelte +8 -0
  303. package/src/components/internal/Clock.svelte +42 -0
  304. package/src/components/internal/ClockFace.svelte +148 -0
  305. package/src/components/internal/ClockPopup.svelte +91 -0
  306. package/src/components/internal/ErrorBoundary.ts +33 -0
  307. package/src/components/internal/ErrorComponent.svelte +37 -0
  308. package/src/components/internal/Root.svelte +323 -0
  309. package/src/components/internal/RootBarExtension.svelte +32 -0
  310. package/src/components/internal/Settings.svelte +39 -0
  311. package/src/components/internal/SettingsPopup.svelte +196 -0
  312. package/src/components/internal/ThemeButton.svelte +151 -0
  313. package/src/components/internal/icons/CheckCircled.svelte +11 -0
  314. package/src/components/internal/icons/Computer.svelte +15 -0
  315. package/src/components/internal/icons/FontSize.svelte +13 -0
  316. package/src/components/internal/icons/Language.svelte +17 -0
  317. package/src/components/internal/icons/Phone.svelte +18 -0
  318. package/src/components/internal/icons/Search.svelte +12 -0
  319. package/src/components/internal/icons/Settings.svelte +13 -0
  320. package/src/components/internal/icons/Theme.svelte +9 -0
  321. package/src/components/internal/icons/WiFi.svelte +21 -0
  322. package/src/components/notifications/Notification.svelte +34 -0
  323. package/src/components/notifications/Notification.ts +16 -0
  324. package/src/components/notifications/NotificationPosition.ts +6 -0
  325. package/src/components/notifications/NotificationSeverity.ts +6 -0
  326. package/src/components/notifications/Notifications.svelte +53 -0
  327. package/src/components/notifications/actions.ts +42 -0
  328. package/src/components/notifications/store.ts +16 -0
  329. package/src/components/wizard/ModernWizardBar.svelte +105 -0
  330. package/src/components/wizard/ModernWizardDialog.svelte +144 -0
  331. package/src/components/wizard/Wizard.svelte +59 -0
  332. package/src/components/wizard/WizardStep.svelte +144 -0
  333. package/src/focus.ts +139 -0
  334. package/src/index.ts +338 -0
  335. package/src/lazy.ts +93 -0
  336. package/src/location.ts +259 -0
  337. package/src/modals.ts +5 -0
  338. package/src/panelup.ts +70 -0
  339. package/src/plugin.ts +156 -0
  340. package/src/popups.ts +486 -0
  341. package/src/resize.ts +179 -0
  342. package/src/svg.d.ts +4 -0
  343. package/src/tooltips.ts +152 -0
  344. package/src/types.ts +545 -0
  345. package/src/utils.ts +420 -0
  346. package/svelte.config.js +5 -0
  347. package/tsconfig.json +9 -0
  348. package/types/__test__/location.test.d.ts +2 -0
  349. package/types/__test__/location.test.d.ts.map +1 -0
  350. package/types/colors.d.ts +163 -0
  351. package/types/colors.d.ts.map +1 -0
  352. package/types/components/calendar/internal/DateUtils.d.ts +34 -0
  353. package/types/components/calendar/internal/DateUtils.d.ts.map +1 -0
  354. package/types/components/emoji/index.d.ts +11 -0
  355. package/types/components/emoji/index.d.ts.map +1 -0
  356. package/types/components/emoji/store.d.ts +12 -0
  357. package/types/components/emoji/store.d.ts.map +1 -0
  358. package/types/components/emoji/types.d.ts +20 -0
  359. package/types/components/emoji/types.d.ts.map +1 -0
  360. package/types/components/emoji/utils.d.ts +17 -0
  361. package/types/components/emoji/utils.d.ts.map +1 -0
  362. package/types/components/internal/ErrorBoundary.d.ts +5 -0
  363. package/types/components/internal/ErrorBoundary.d.ts.map +1 -0
  364. package/types/components/notifications/Notification.d.ts +16 -0
  365. package/types/components/notifications/Notification.d.ts.map +1 -0
  366. package/types/components/notifications/NotificationPosition.d.ts +7 -0
  367. package/types/components/notifications/NotificationPosition.d.ts.map +1 -0
  368. package/types/components/notifications/NotificationSeverity.d.ts +7 -0
  369. package/types/components/notifications/NotificationSeverity.d.ts.map +1 -0
  370. package/types/components/notifications/actions.d.ts +6 -0
  371. package/types/components/notifications/actions.d.ts.map +1 -0
  372. package/types/components/notifications/store.d.ts +9 -0
  373. package/types/components/notifications/store.d.ts.map +1 -0
  374. package/types/focus.d.ts +32 -0
  375. package/types/focus.d.ts.map +1 -0
  376. package/types/index.d.ts +254 -0
  377. package/types/index.d.ts.map +1 -0
  378. package/types/lazy.d.ts +6 -0
  379. package/types/lazy.d.ts.map +1 -0
  380. package/types/location.d.ts +38 -0
  381. package/types/location.d.ts.map +1 -0
  382. package/types/modals.d.ts +5 -0
  383. package/types/modals.d.ts.map +1 -0
  384. package/types/panelup.d.ts +17 -0
  385. package/types/panelup.d.ts.map +1 -0
  386. package/types/plugin.d.ts +135 -0
  387. package/types/plugin.d.ts.map +1 -0
  388. package/types/popups.d.ts +65 -0
  389. package/types/popups.d.ts.map +1 -0
  390. package/types/resize.d.ts +32 -0
  391. package/types/resize.d.ts.map +1 -0
  392. package/types/tooltips.d.ts +8 -0
  393. package/types/tooltips.d.ts.map +1 -0
  394. package/types/types.d.ts +373 -0
  395. package/types/types.d.ts.map +1 -0
  396. package/types/utils.d.ts +125 -0
  397. package/types/utils.d.ts.map +1 -0
  398. package/assets/lux-site-icons/android-chrome-192x192.png +0 -0
  399. package/assets/lux-site-icons/android-chrome-512x512.png +0 -0
  400. package/assets/lux-site-icons/apple-touch-icon.png +0 -0
  401. package/assets/lux-site-icons/favicon-16x16.png +0 -0
  402. package/assets/lux-site-icons/favicon-32x32.png +0 -0
  403. package/assets/lux-site-icons/favicon.ico +0 -0
  404. package/assets/standard-docs/LUX-NFT-Terms-and-Conditions.pdf +0 -0
  405. package/assets/standard-docs/LUX-Privacy-Policy.pdf +0 -0
  406. package/blocks/components/accordian-block.tsx +0 -48
  407. package/blocks/components/block-component-props.ts +0 -11
  408. package/blocks/components/bullet-cards-block.tsx +0 -45
  409. package/blocks/components/card-block.tsx +0 -213
  410. package/blocks/components/carte-blanche-block/index.tsx +0 -127
  411. package/blocks/components/carte-blanche-block/variant-content-left.tsx +0 -49
  412. package/blocks/components/content.tsx +0 -70
  413. package/blocks/components/cta-block.tsx +0 -98
  414. package/blocks/components/enh-heading-block.tsx +0 -205
  415. package/blocks/components/grid-block/grid-block-mutator.ts +0 -12
  416. package/blocks/components/grid-block/index.tsx +0 -83
  417. package/blocks/components/grid-block/mutator-registry.ts +0 -10
  418. package/blocks/components/grid-block/table-borders.mutator.ts +0 -47
  419. package/blocks/components/group-block.tsx +0 -83
  420. package/blocks/components/heading-block.tsx +0 -88
  421. package/blocks/components/image-block.tsx +0 -108
  422. package/blocks/components/index.ts +0 -30
  423. package/blocks/components/screenful-block/content.tsx +0 -120
  424. package/blocks/components/screenful-block/index.tsx +0 -79
  425. package/blocks/components/screenful-block/poster-background.tsx +0 -34
  426. package/blocks/components/screenful-block/video-background.tsx +0 -45
  427. package/blocks/components/space-block.tsx +0 -66
  428. package/blocks/components/video-block.tsx +0 -137
  429. package/blocks/def/accordian-block.ts +0 -14
  430. package/blocks/def/block.ts +0 -7
  431. package/blocks/def/bullet-cards-block.ts +0 -21
  432. package/blocks/def/card-block.ts +0 -24
  433. package/blocks/def/carte-blanche-block.ts +0 -21
  434. package/blocks/def/cta-block.ts +0 -19
  435. package/blocks/def/element-block.ts +0 -11
  436. package/blocks/def/enh-heading-block.ts +0 -45
  437. package/blocks/def/grid-block.ts +0 -16
  438. package/blocks/def/group-block.ts +0 -11
  439. package/blocks/def/heading-block.ts +0 -15
  440. package/blocks/def/image-block.ts +0 -31
  441. package/blocks/def/index.ts +0 -35
  442. package/blocks/def/screenful-block.ts +0 -54
  443. package/blocks/def/space-block.ts +0 -64
  444. package/blocks/def/video-block.ts +0 -28
  445. package/blocks/index.ts +0 -2
  446. package/common/chat-widget.tsx +0 -75
  447. package/common/contact-dialog/contact-form.tsx +0 -111
  448. package/common/contact-dialog/disclaimer.tsx +0 -13
  449. package/common/contact-dialog/index.tsx +0 -48
  450. package/common/copyright.tsx +0 -21
  451. package/common/drawer-menu.tsx +0 -51
  452. package/common/footer.tsx +0 -77
  453. package/common/head-metadata/from-next/metadata-types.ts +0 -158
  454. package/common/head-metadata/from-next/opengraph-types.ts +0 -267
  455. package/common/head-metadata/from-next/twitter-types.ts +0 -92
  456. package/common/head-metadata/index.tsx +0 -208
  457. package/common/header/index.tsx +0 -57
  458. package/common/header/mobile-nav.tsx +0 -72
  459. package/common/header/theme-toggle.tsx +0 -26
  460. package/common/icons/github.tsx +0 -14
  461. package/common/icons/index.tsx +0 -34
  462. package/common/icons/lux-logo.tsx +0 -10
  463. package/common/icons/secure-delivery.tsx +0 -13
  464. package/common/icons/social-icon.tsx +0 -35
  465. package/common/icons/youtube-logo.tsx +0 -59
  466. package/common/index.ts +0 -14
  467. package/common/logo.tsx +0 -71
  468. package/common/mini-chart/index.tsx +0 -8
  469. package/common/mini-chart/mini-chart-props.ts +0 -44
  470. package/common/mini-chart/mini-chart.tsx +0 -76
  471. package/common/mini-chart/wrapper.tsx +0 -23
  472. package/context-providers/index.ts +0 -1
  473. package/context-providers/theme-provider.tsx +0 -20
  474. package/next/README.md +0 -11
  475. package/next/analytics/fpixel.ts +0 -16
  476. package/next/analytics/pixel-analytics.tsx +0 -55
  477. package/next/determine-device-middleware.ts +0 -16
  478. package/next/fonts/DrukTextWide-Bold-Trial.otf +0 -0
  479. package/next/fonts/DrukTextWide-Heavy-Trial.otf +0 -0
  480. package/next/fonts/DrukTextWide-Medium-Trial.otf +0 -0
  481. package/next/fonts/DrukWide-Bold-Trial.otf +0 -0
  482. package/next/fonts/DrukWide-Heavy-Trial.otf +0 -0
  483. package/next/fonts/DrukWide-Medium-Trial.otf +0 -0
  484. package/next/get-app-router-font-classes.ts +0 -12
  485. package/next/load-and-return-lux-next-fonts-on-import.ts +0 -94
  486. package/next/next-font-desc.ts +0 -28
  487. package/next/not-found-content.mdx +0 -4
  488. package/next/not-found.tsx +0 -23
  489. package/next/pages-router-font-vars.tsx +0 -18
  490. package/next/root-layout.tsx +0 -60
  491. package/primitives/accordion.tsx +0 -61
  492. package/primitives/action-button.tsx +0 -46
  493. package/primitives/apply-typography.tsx +0 -55
  494. package/primitives/avatar.tsx +0 -49
  495. package/primitives/badge.tsx +0 -36
  496. package/primitives/button.tsx +0 -73
  497. package/primitives/calendar.tsx +0 -72
  498. package/primitives/card.tsx +0 -83
  499. package/primitives/checkbox.tsx +0 -32
  500. package/primitives/command.tsx +0 -155
  501. package/primitives/dialog-video-controller.tsx +0 -38
  502. package/primitives/dialog.tsx +0 -152
  503. package/primitives/form.tsx +0 -179
  504. package/primitives/index.ts +0 -144
  505. package/primitives/inline-icon.tsx +0 -37
  506. package/primitives/input.tsx +0 -30
  507. package/primitives/label.tsx +0 -28
  508. package/primitives/link-element.tsx +0 -104
  509. package/primitives/main.tsx +0 -17
  510. package/primitives/mdx-link.tsx +0 -22
  511. package/primitives/nav-items.tsx +0 -48
  512. package/primitives/popover.tsx +0 -35
  513. package/primitives/progress.tsx +0 -27
  514. package/primitives/scroll-area.tsx +0 -47
  515. package/primitives/select.tsx +0 -169
  516. package/primitives/separator.tsx +0 -29
  517. package/primitives/sheet.tsx +0 -175
  518. package/primitives/skeleton.tsx +0 -15
  519. package/primitives/switch.tsx +0 -33
  520. package/primitives/table.tsx +0 -117
  521. package/primitives/tabs.tsx +0 -60
  522. package/primitives/tailwind-indicator.tsx +0 -19
  523. package/primitives/text-area.tsx +0 -26
  524. package/primitives/toast.tsx +0 -129
  525. package/primitives/toaster.tsx +0 -37
  526. package/primitives/use-toast.ts +0 -192
  527. package/primitives/video-player.tsx +0 -26
  528. package/primitives/youtube-embed.tsx +0 -83
  529. package/siteDef/footer/community.tsx +0 -67
  530. package/siteDef/footer/company.ts +0 -37
  531. package/siteDef/footer/ecosystem.ts +0 -37
  532. package/siteDef/footer/index.tsx +0 -26
  533. package/siteDef/footer/legal.ts +0 -28
  534. package/siteDef/footer/network.ts +0 -33
  535. package/siteDef/footer/svg/warpcast-logo.svg +0 -12
  536. package/siteDef/main-nav.ts +0 -35
  537. package/style/globals.css +0 -13
  538. package/style/hanzo-common.css +0 -32
  539. package/style/hanzo-default-colors.css +0 -79
  540. package/style/social-svg.css +0 -3
  541. package/tailwind/colors.tailwind.js +0 -46
  542. package/tailwind/fonts.tailwind.ts +0 -31
  543. package/tailwind/index.ts +0 -18
  544. package/tailwind/lux-tw-fonts.ts +0 -37
  545. package/tailwind/safelist.tailwind.js +0 -26
  546. package/tailwind/screens.tailwind.js +0 -8
  547. package/tailwind/spacing.tailwind.js +0 -65
  548. package/tailwind/tailwind.config.base.js +0 -906
  549. package/tailwind/tw-font-desc.ts +0 -15
  550. package/tailwind/typo-plugin/get-plugin-styles.js +0 -676
  551. package/tailwind/typo-plugin/index.d.ts +0 -9
  552. package/tailwind/typo-plugin/index.js +0 -141
  553. package/tailwind/typo-plugin/utils.js +0 -60
  554. package/tailwind/typography-test.mdx +0 -36
  555. package/types/breakpoints.ts +0 -11
  556. package/types/bullet-item.ts +0 -10
  557. package/types/button-def.ts +0 -39
  558. package/types/contact-info.ts +0 -11
  559. package/types/dimensions.ts +0 -20
  560. package/types/grid-def.ts +0 -56
  561. package/types/icon.ts +0 -10
  562. package/types/image-def.ts +0 -28
  563. package/types/index.ts +0 -29
  564. package/types/link-def.ts +0 -59
  565. package/types/site-def.ts +0 -34
  566. package/types/t-shirt-size.ts +0 -5
  567. package/util/index.ts +0 -81
  568. package/util/specifier.ts +0 -43
@@ -0,0 +1,156 @@
1
+ <!--
2
+ // Copyright © 2020, 2021 Hanzo <dev@hanzo.ai>.
3
+ //
4
+ // Licensed under the Eclipse Public License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License. You may
6
+ // obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ //
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ -->
15
+ <script lang="ts">
16
+ import { IntlString, Asset } from '@hanzo/platform'
17
+ import type { AnySvelteComponent, DropdownTextItem, TooltipAlignment, ButtonKind, ButtonSize } from '../types'
18
+ import { createEventDispatcher } from 'svelte'
19
+ import ui from '../plugin'
20
+ import { showPopup } from '../popups'
21
+ import { getFocusManager } from '../focus'
22
+ import Button from './Button.svelte'
23
+ import DropdownLabelsPopup from './DropdownLabelsPopup.svelte'
24
+ import Label from './Label.svelte'
25
+ import DropdownIcon from './icons/Dropdown.svelte'
26
+
27
+ export let icon: Asset | AnySvelteComponent | undefined = undefined
28
+ export let label: IntlString | undefined = undefined
29
+ export let placeholder: IntlString | undefined = ui.string.SearchDots
30
+ export let items: DropdownTextItem[]
31
+ export let multiselect = false
32
+ export let selected: DropdownTextItem['id'] | Array<DropdownTextItem['id']> | undefined = multiselect ? [] : undefined
33
+ export let allowDeselect: boolean = false
34
+ export let showDropdownIcon: boolean = false
35
+
36
+ export let dataId: string | undefined = undefined
37
+ export let kind: ButtonKind = 'no-border'
38
+ export let size: ButtonSize = 'small'
39
+ export let justify: 'left' | 'center' = 'center'
40
+ export let width: string | undefined = undefined
41
+ export let labelDirection: TooltipAlignment | undefined = undefined
42
+ export let focusIndex = -1
43
+ export let autoSelect: boolean = true
44
+ export let useFlexGrow = false
45
+ export let minW0 = true
46
+ export let disabled: boolean = false
47
+
48
+ export let enableSearch: boolean = true
49
+
50
+ let container: HTMLElement
51
+ let opened: boolean = false
52
+
53
+ $: selectedItem = multiselect
54
+ ? (items ?? []).filter((p) => selected?.includes(p.id))
55
+ : (items ?? []).find((x) => x.id === selected)
56
+ $: if (autoSelect && selected === undefined && items?.[0] !== undefined) {
57
+ selected = multiselect ? [items?.[0]?.id] : items?.[0]?.id
58
+ }
59
+
60
+ const dispatch = createEventDispatcher()
61
+ const mgr = getFocusManager()
62
+ </script>
63
+
64
+ <div bind:this={container} class:min-w-0={minW0} class:flex-grow={useFlexGrow}>
65
+ <Button
66
+ {focusIndex}
67
+ {icon}
68
+ width={width ?? 'min-content'}
69
+ {size}
70
+ {kind}
71
+ {justify}
72
+ {disabled}
73
+ pressed={opened}
74
+ {dataId}
75
+ showTooltip={{ label, direction: labelDirection }}
76
+ on:click={() => {
77
+ if (!opened) {
78
+ opened = true
79
+ showPopup(
80
+ DropdownLabelsPopup,
81
+ { placeholder, items, multiselect, selected, enableSearch },
82
+ container,
83
+ (result) => {
84
+ if (result != null) {
85
+ if (allowDeselect && selected === result) {
86
+ selected = undefined
87
+ dispatch('selected', undefined)
88
+ } else {
89
+ selected = result
90
+ dispatch('selected', result)
91
+ }
92
+ }
93
+ opened = false
94
+ mgr?.setFocusPos(focusIndex)
95
+ },
96
+ (result) => {
97
+ if (result != null) {
98
+ selected = result
99
+ dispatch('selected', result)
100
+ }
101
+ }
102
+ )
103
+ }
104
+ }}
105
+ >
106
+ <span
107
+ slot="content"
108
+ class="overflow-label disabled"
109
+ class:mr-2={showDropdownIcon}
110
+ class:content-color={selectedItem === undefined}
111
+ >
112
+ {#if $$slots.content}
113
+ <slot name="content" />
114
+ {:else if Array.isArray(selectedItem)}
115
+ {#if selectedItem.length > 0}
116
+ {#each selectedItem as seleceted}
117
+ <span class="step-row">{seleceted.label}</span>
118
+ {/each}
119
+ {:else}
120
+ <Label label={label ?? ui.string.NotSelected} />
121
+ {/if}
122
+ {:else if selectedItem}
123
+ {selectedItem.label}
124
+ {:else}
125
+ <Label label={label ?? ui.string.NotSelected} />
126
+ {/if}
127
+ </span>
128
+ <svelte:fragment slot="iconRight">
129
+ {#if showDropdownIcon}
130
+ <DropdownIcon
131
+ size={'small'}
132
+ fill={kind === 'primary' && !disabled ? 'var(--primary-button-content-color)' : 'var(--theme-dark-color)'}
133
+ />
134
+ {/if}
135
+ </svelte:fragment>
136
+ </Button>
137
+ </div>
138
+
139
+ <style lang="scss">
140
+ .step-row + .step-row {
141
+ position: relative;
142
+ margin-left: 0.75rem;
143
+
144
+ &::before {
145
+ position: absolute;
146
+ content: '';
147
+ top: 50%;
148
+ left: -0.5rem;
149
+ width: 0.25rem;
150
+ height: 0.25rem;
151
+ background-color: var(--dark-color);
152
+ border-radius: 50%;
153
+ transform: translateY(-50%);
154
+ }
155
+ }
156
+ </style>
@@ -0,0 +1,108 @@
1
+ <!--
2
+ // Copyright © 2022 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
+ <script lang="ts">
16
+ import { IntlString, Asset } from '@hanzo/platform'
17
+ import { createEventDispatcher } from 'svelte'
18
+ import { deepEqual } from 'fast-equals'
19
+
20
+ import type { AnySvelteComponent, TooltipAlignment, ButtonKind, ButtonSize, DropdownIntlItem } from '../types'
21
+ import { showPopup, closePopup } from '../popups'
22
+ import Button from './Button.svelte'
23
+ import DropdownLabelsPopupIntl from './DropdownLabelsPopupIntl.svelte'
24
+ import Label from './Label.svelte'
25
+ import ui from '../plugin'
26
+ import DropdownIcon from './icons/Dropdown.svelte'
27
+
28
+ export let icon: Asset | AnySvelteComponent | undefined = undefined
29
+ export let iconProps: Record<string, any> = {}
30
+ export let label: IntlString = ui.string.DropdownDefaultLabel
31
+ export let params: Record<string, any> = {}
32
+ export let items: DropdownIntlItem[]
33
+ export let selected: DropdownIntlItem['id'] | undefined = undefined
34
+ export let disabled: boolean = false
35
+ export let kind: ButtonKind = 'regular'
36
+ export let size: ButtonSize = 'small'
37
+ export let justify: 'left' | 'center' = 'center'
38
+ export let width: string | undefined = undefined
39
+ export let labelDirection: TooltipAlignment | undefined = undefined
40
+ export let shouldUpdateUndefined: boolean = true
41
+ export let minW0 = true
42
+ export let focusIndex: number = -1
43
+ export let dataId: string | undefined = undefined
44
+
45
+ let container: HTMLElement
46
+ let opened: boolean = false
47
+
48
+ $: selectedItem = items.find((x) => x.id === selected)
49
+ $: if (shouldUpdateUndefined && selected === undefined && items[0] !== undefined) {
50
+ selected = items[0].id
51
+ dispatch('selected', selected)
52
+ }
53
+
54
+ const dispatch = createEventDispatcher()
55
+
56
+ function openPopup () {
57
+ if (!opened) {
58
+ opened = true
59
+ showPopup(DropdownLabelsPopupIntl, { items, selected, params }, container, (result) => {
60
+ if (result) {
61
+ selected = result
62
+ dispatch('selected', result)
63
+ }
64
+ opened = false
65
+ })
66
+ }
67
+ }
68
+
69
+ let prevItems: DropdownIntlItem[]
70
+ $: if (!deepEqual(items, prevItems)) {
71
+ prevItems = items
72
+
73
+ if (opened) {
74
+ closePopup()
75
+ opened = false
76
+ openPopup()
77
+ }
78
+ }
79
+ </script>
80
+
81
+ <div bind:this={container} class:min-w-0={minW0}>
82
+ <Button
83
+ {focusIndex}
84
+ {dataId}
85
+ {icon}
86
+ {iconProps}
87
+ width={width ?? 'min-content'}
88
+ {size}
89
+ {kind}
90
+ {disabled}
91
+ {justify}
92
+ showTooltip={{ label, direction: labelDirection }}
93
+ on:click={openPopup}
94
+ >
95
+ <span slot="content" class="overflow-label disabled flex-grow text-left mr-2">
96
+ <Label
97
+ label={selectedItem ? selectedItem.label : label}
98
+ params={selectedItem ? selectedItem.params ?? params : params}
99
+ />
100
+ </span>
101
+ <svelte:fragment slot="iconRight">
102
+ <DropdownIcon
103
+ size={'small'}
104
+ fill={kind === 'primary' && !disabled ? 'var(--primary-button-content-color)' : 'var(--theme-dark-color)'}
105
+ />
106
+ </svelte:fragment>
107
+ </Button>
108
+ </div>
@@ -0,0 +1,148 @@
1
+ <!--
2
+ // Copyright © 2020 Hanzo <dev@hanzo.ai>.
3
+ //
4
+ // Licensed under the Eclipse Public License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License. You may
6
+ // obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ //
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ -->
15
+ <script lang="ts">
16
+ import type { IntlString } from '@hanzo/platform'
17
+ import { createEventDispatcher } from 'svelte'
18
+ import { deviceOptionsStore, resizeObserver } from '..'
19
+ import plugin from '../plugin'
20
+ import type { DropdownTextItem } from '../types'
21
+ import IconCheck from './icons/Check.svelte'
22
+ import IconSearch from './icons/Search.svelte'
23
+ import ListView from './ListView.svelte'
24
+ import Icon from './Icon.svelte'
25
+ import EditWithIcon from './EditWithIcon.svelte'
26
+
27
+ export let placeholder: IntlString = plugin.string.SearchDots
28
+ export let placeholderParam: any | undefined = undefined
29
+ export let items: DropdownTextItem[]
30
+ export let selected: DropdownTextItem['id'] | Array<DropdownTextItem['id']> | undefined = undefined
31
+ export let multiselect: boolean = false
32
+ export let enableSearch = true
33
+
34
+ let search: string = ''
35
+ const dispatch = createEventDispatcher()
36
+
37
+ let selection = 0
38
+ let list: ListView
39
+
40
+ $: objects = items.filter((x) => x.label.toLowerCase().includes(search.toLowerCase()))
41
+
42
+ async function handleSelection (evt: Event | undefined, selection: number): Promise<void> {
43
+ const item = objects[selection]
44
+ if (item == null) {
45
+ return
46
+ }
47
+ if (multiselect && Array.isArray(selected)) {
48
+ const set = new Set(selected)
49
+ if (set.has(item.id)) {
50
+ set.delete(item.id)
51
+ } else {
52
+ set.add(item.id)
53
+ }
54
+ selected = Array.from(set)
55
+ dispatch('update', selected)
56
+ } else {
57
+ dispatch('close', item.id)
58
+ }
59
+ }
60
+
61
+ function onKeydown (key: KeyboardEvent): void {
62
+ if (key.code === 'ArrowUp') {
63
+ key.stopPropagation()
64
+ key.preventDefault()
65
+ list.select(selection - 1)
66
+ }
67
+ if (key.code === 'ArrowDown') {
68
+ key.stopPropagation()
69
+ key.preventDefault()
70
+ list.select(selection + 1)
71
+ }
72
+ if (key.code === 'Enter') {
73
+ key.preventDefault()
74
+ key.stopPropagation()
75
+ handleSelection(key, selection)
76
+ }
77
+ }
78
+
79
+ function isSelected (
80
+ selected: DropdownTextItem['id'] | Array<DropdownTextItem['id']> | undefined,
81
+ item: DropdownTextItem
82
+ ): boolean {
83
+ if (Array.isArray(selected)) {
84
+ return selected.includes(item.id)
85
+ } else {
86
+ return item.id === selected
87
+ }
88
+ }
89
+ </script>
90
+
91
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
92
+ <div
93
+ class="selectPopup"
94
+ on:keydown={onKeydown}
95
+ use:resizeObserver={() => {
96
+ dispatch('changeContent')
97
+ }}
98
+ >
99
+ {#if enableSearch}
100
+ <div class="header">
101
+ <EditWithIcon
102
+ icon={IconSearch}
103
+ size={'large'}
104
+ width={'100%'}
105
+ autoFocus={!$deviceOptionsStore.isMobile}
106
+ bind:value={search}
107
+ {placeholder}
108
+ {placeholderParam}
109
+ on:change
110
+ />
111
+ </div>
112
+ {/if}
113
+ <div class="scroll" class:mt-2={!enableSearch}>
114
+ <div class="box">
115
+ <ListView bind:this={list} count={objects.length} bind:selection>
116
+ <svelte:fragment slot="item" let:item={idx}>
117
+ {@const item = objects[idx]}
118
+
119
+ <button
120
+ class="menu-item withList w-full"
121
+ on:click={() => {
122
+ if (multiselect && Array.isArray(selected)) {
123
+ const index = selected.indexOf(item.id)
124
+ if (index !== -1) {
125
+ selected.splice(index, 1)
126
+ selected = selected
127
+ } else {
128
+ selected = selected === undefined ? [item.id] : [...selected, item.id]
129
+ }
130
+ dispatch('update', selected)
131
+ } else {
132
+ dispatch('close', item.id)
133
+ }
134
+ }}
135
+ >
136
+ <div class="label overflow-label flex-grow">{item.label}</div>
137
+ <div class="check">
138
+ {#if isSelected(selected, item)}
139
+ <Icon icon={IconCheck} size={'small'} />
140
+ {/if}
141
+ </div>
142
+ </button>
143
+ </svelte:fragment>
144
+ </ListView>
145
+ </div>
146
+ </div>
147
+ <div class="menu-space" />
148
+ </div>
@@ -0,0 +1,72 @@
1
+ <!--
2
+ // Copyright © 2022 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
+ <script lang="ts">
16
+ import { createEventDispatcher } from 'svelte'
17
+ import type { DropdownIntlItem } from '../types'
18
+ import IconCheck from './icons/Check.svelte'
19
+ import Label from './Label.svelte'
20
+ import { Icon, resizeObserver } from '..'
21
+
22
+ export let items: DropdownIntlItem[]
23
+ export let selected: DropdownIntlItem['id'] | undefined = undefined
24
+ export let params: Record<string, any> = {}
25
+
26
+ const dispatch = createEventDispatcher()
27
+ const btns: HTMLButtonElement[] = []
28
+
29
+ const keyDown = (ev: KeyboardEvent, n: number): void => {
30
+ if (ev.key === 'ArrowDown') {
31
+ if (n === btns.length - 1) btns[0].focus()
32
+ else btns[n + 1].focus()
33
+ } else if (ev.key === 'ArrowUp') {
34
+ if (n === 0) btns[btns.length - 1].focus()
35
+ else btns[n - 1].focus()
36
+ }
37
+ }
38
+ </script>
39
+
40
+ <div class="selectPopup" use:resizeObserver={() => dispatch('changeContent')}>
41
+ <div class="menu-space" />
42
+ <div class="scroll">
43
+ <div class="box">
44
+ {#each items as item, i}
45
+ <!-- svelte-ignore a11y-mouse-events-have-key-events -->
46
+ <button
47
+ class="menu-item flex-between"
48
+ on:mouseover={(ev) => {
49
+ ev.currentTarget.focus()
50
+ }}
51
+ on:keydown={(ev) => {
52
+ keyDown(ev, i)
53
+ }}
54
+ on:click={() => {
55
+ dispatch('close', item.id)
56
+ }}
57
+ >
58
+ <div class="flex-grow caption-color nowrap flex-presenter flex-gap-2">
59
+ {#if item.icon}
60
+ <Icon size="small" icon={item.icon} iconProps={item.iconProps} />
61
+ {/if}
62
+ <Label label={item.label} params={item.params ?? params} />
63
+ </div>
64
+ <div class="check">
65
+ {#if item.id === selected}<IconCheck size={'small'} />{/if}
66
+ </div>
67
+ </button>
68
+ {/each}
69
+ </div>
70
+ </div>
71
+ <div class="menu-space" />
72
+ </div>
@@ -0,0 +1,146 @@
1
+ <!--
2
+ // Copyright © 2020 Hanzo <dev@hanzo.ai>.
3
+ //
4
+ // Licensed under the Eclipse Public License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License. You may
6
+ // obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ //
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ -->
15
+ <script lang="ts">
16
+ import type { Asset, IntlString } from '@hanzo/platform'
17
+ import { translateCB } from '@hanzo/platform'
18
+ import { themeStore } from '@hcengineering/theme'
19
+ import { createEventDispatcher, onMount } from 'svelte'
20
+ import { deviceOptionsStore, resizeObserver } from '..'
21
+ import plugin from '../plugin'
22
+ import type { AnySvelteComponent, ListItem } from '../types'
23
+ import Icon from './Icon.svelte'
24
+ import ListView from './ListView.svelte'
25
+
26
+ export let icon: Asset | AnySvelteComponent
27
+ export let placeholder: IntlString = plugin.string.SearchDots
28
+ export let items: ListItem[]
29
+ export let withSearch: boolean = true
30
+
31
+ let search: string = ''
32
+ let phTranslate: string = ''
33
+ $: if (placeholder) {
34
+ translateCB(placeholder, {}, $themeStore.language, (res) => {
35
+ phTranslate = res
36
+ })
37
+ }
38
+ const dispatch = createEventDispatcher()
39
+ let searchInput: HTMLInputElement
40
+
41
+ onMount(() => {
42
+ if (searchInput && !$deviceOptionsStore.isMobile) searchInput.focus()
43
+ })
44
+
45
+ let selection = 0
46
+ let list: ListView
47
+
48
+ $: objects = items.filter((x) => x.label.toLowerCase().includes(search.toLowerCase()))
49
+
50
+ async function handleSelection (evt: Event | undefined, selection: number): Promise<void> {
51
+ const item = objects[selection]
52
+
53
+ if (item.isSelectable ?? true) {
54
+ dispatch('close', item)
55
+ }
56
+ }
57
+
58
+ function onKeydown (key: KeyboardEvent): void {
59
+ if (key.code === 'ArrowUp') {
60
+ key.stopPropagation()
61
+ key.preventDefault()
62
+ list.select(selection - 1)
63
+ }
64
+ if (key.code === 'ArrowDown') {
65
+ key.stopPropagation()
66
+ key.preventDefault()
67
+ list.select(selection + 1)
68
+ }
69
+ if (key.code === 'Enter') {
70
+ key.preventDefault()
71
+ key.stopPropagation()
72
+ handleSelection(key, selection)
73
+ }
74
+ }
75
+ </script>
76
+
77
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
78
+ <div class="selectPopup popup" use:resizeObserver={() => dispatch('changeContent')} on:keydown={onKeydown}>
79
+ {#if withSearch}
80
+ <div class="header">
81
+ <input
82
+ bind:this={searchInput}
83
+ type="text"
84
+ bind:value={search}
85
+ placeholder={phTranslate}
86
+ on:input={(ev) => {}}
87
+ on:change
88
+ />
89
+ </div>
90
+ {/if}
91
+ <div class="scroll">
92
+ <div class="box">
93
+ <ListView bind:this={list} count={objects.length} bind:selection>
94
+ <svelte:fragment slot="item" let:item={idx}>
95
+ {@const item = objects[idx]}
96
+
97
+ <button
98
+ class="flex-between menu-item withList w-full"
99
+ disabled={item.isSelectable === false}
100
+ on:click={(evt) => {
101
+ handleSelection(evt, idx)
102
+ }}
103
+ >
104
+ {#if item.image || item.icon || icon}
105
+ <div class="flex-center img" class:image={item.image}>
106
+ {#if item.image}
107
+ <img src={item.image} alt={item.label} />
108
+ {:else if item.icon}
109
+ <Icon icon={item.icon} size={'medium'} iconProps={item.iconProps} />
110
+ {:else if typeof icon === 'string'}
111
+ <Icon {icon} size={'small'} />
112
+ {:else}
113
+ <svelte:component this={icon} size={'small'} />
114
+ {/if}
115
+ </div>
116
+ {/if}
117
+ <div class="flex-grow caption-color font-{item.fontWeight} pl-{item.paddingLeft}">{item.label}</div>
118
+ </button>
119
+ </svelte:fragment>
120
+ </ListView>
121
+ </div>
122
+ </div>
123
+ </div>
124
+
125
+ <style lang="scss">
126
+ .img {
127
+ margin-right: 0.75rem;
128
+ width: 1.5rem;
129
+ height: 1.5rem;
130
+ flex-shrink: 0;
131
+ }
132
+ .image {
133
+ border-color: transparent;
134
+ color: var(--caption-color);
135
+ background-color: var(--popup-bg-hover);
136
+ border-radius: 50%;
137
+ outline: none;
138
+ overflow: hidden;
139
+ img {
140
+ max-width: fit-content;
141
+ }
142
+ }
143
+ .popup {
144
+ padding: 0.5rem 0;
145
+ }
146
+ </style>
@@ -0,0 +1,50 @@
1
+ <script lang="ts">
2
+ import { IntlString } from '@hanzo/platform'
3
+ import { createEventDispatcher } from 'svelte'
4
+ import ui from '../plugin'
5
+ import { showPopup } from '../popups'
6
+ import type { ButtonKind, ButtonSize } from '../types'
7
+ import IconDownOutline from './icons/DownOutline.svelte'
8
+ import Button from './Button.svelte'
9
+ import DropdownRecordPopup from './DropdownRecordPopup.svelte'
10
+ import Label from './Label.svelte'
11
+
12
+ export let items: Record<any, IntlString>
13
+ export let selected: any | undefined = undefined
14
+
15
+ export let kind: ButtonKind = 'no-border'
16
+ export let size: ButtonSize = 'small'
17
+ export let width: string | undefined = '10rem'
18
+
19
+ const dispatch = createEventDispatcher()
20
+
21
+ let tool: HTMLElement
22
+ let opened: boolean = false
23
+ $: selectedLabel = selected ? items[selected] : ui.string.NotSelected
24
+ </script>
25
+
26
+ <div class="clear-mins" bind:this={tool}>
27
+ <Button
28
+ {kind}
29
+ {size}
30
+ {width}
31
+ on:click={() => {
32
+ if (!opened) {
33
+ opened = true
34
+ showPopup(DropdownRecordPopup, { items, selected }, tool, (result) => {
35
+ if (result != null) {
36
+ dispatch('select', result)
37
+ }
38
+ opened = false
39
+ })
40
+ }
41
+ }}
42
+ >
43
+ <svelte:fragment slot="content">
44
+ <div class="flex-between clear-mins pointer-events-none" style:width style:max-width={'12rem'}>
45
+ <span class="overflow-label"><Label label={selectedLabel} /></span>
46
+ <div class="ml-2"><IconDownOutline size={'small'} /></div>
47
+ </div>
48
+ </svelte:fragment>
49
+ </Button>
50
+ </div>