@hanzo/ui 0.5.23 → 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,147 @@
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 { createEventDispatcher } from 'svelte'
17
+ import { onMount } from 'svelte'
18
+ import type { IntlString } from '@hanzo/platform'
19
+ import CheckBox from './CheckBox.svelte'
20
+
21
+ export let label: IntlString
22
+ export let checked: boolean = false
23
+ export let editable: boolean = false
24
+
25
+ let text: HTMLElement
26
+ let input: HTMLInputElement
27
+ let onEdit: boolean = false
28
+
29
+ $: {
30
+ if (text && input) {
31
+ if (onEdit) {
32
+ text.style.visibility = 'hidden'
33
+ input.style.visibility = 'visible'
34
+ input.focus()
35
+ } else {
36
+ input.style.visibility = 'hidden'
37
+ text.style.visibility = 'visible'
38
+ }
39
+ }
40
+ }
41
+
42
+ const findNode = (el: Node, name: string): any => {
43
+ while (el.parentNode !== null) {
44
+ if (el.classList.contains(name)) return el
45
+ el = el.parentNode
46
+ }
47
+ return false
48
+ }
49
+ const waitClick = (event: any): void => {
50
+ if (onEdit) {
51
+ if (!findNode(event.target, 'edit-item')) onEdit = false
52
+ }
53
+ }
54
+
55
+ function computeSize (t: EventTarget | null) {
56
+ const target = t as HTMLInputElement
57
+ const value = target.value.charCodeAt(target.value.length - 1) === 10 ? 1.125 : 0
58
+ text.innerHTML = label.replaceAll(' ', '&nbsp;')
59
+ target.style.height = `calc(${text.clientHeight}px + ${value + .5}rem)`
60
+ }
61
+
62
+ onMount(() => {
63
+ computeSize(input)
64
+ })
65
+
66
+ const dispatch = createEventDispatcher()
67
+ function changeItem () {
68
+ dispatch('change', { checked, label })
69
+ }
70
+ </script>
71
+
72
+ <svelte:window on:mousedown={waitClick} />
73
+ <div class="flex-stretch">
74
+ <div style="margin-top: 1px;">
75
+ <CheckBox bind:checked on:change={changeItem} />
76
+ </div>
77
+ <div
78
+ class="label"
79
+ on:click={() => {
80
+ if (editable) {
81
+ onEdit = true
82
+ }
83
+ }}
84
+ >
85
+ <textarea
86
+ bind:this={input}
87
+ type="text"
88
+ bind:value={label}
89
+ class="edit-item"
90
+ on:input={(ev) => ev.target && computeSize(ev.target)}
91
+ on:change={changeItem}
92
+ />
93
+ <div class="hidden-text text" class:checked bind:this={text}>{label}</div>
94
+ </div>
95
+ </div>
96
+
97
+ <style lang="scss">
98
+ .label {
99
+ position: relative;
100
+ margin-left: 1rem;
101
+ width: 100%;
102
+ color: var(--caption-color);
103
+
104
+ .edit-item {
105
+ width: 100%;
106
+ min-height: 1.25rem;
107
+ height: minmax(1.25rem, auto);
108
+ margin: -.25rem;
109
+ padding: .125rem;
110
+ font-family: inherit;
111
+ font-size: inherit;
112
+ color: var(--caption-color);
113
+ background-color: transparent;
114
+ border: .125rem solid transparent;
115
+ border-radius: .125rem;
116
+ outline: none;
117
+ overflow-y: scroll;
118
+ resize: none;
119
+ overflow-wrap: break-word;
120
+
121
+ &:focus {
122
+ border-color: var(--primary-button-default);
123
+ }
124
+
125
+ &::-webkit-contacts-auto-fill-button,
126
+ &::-webkit-credentials-auto-fill-button {
127
+ visibility: hidden;
128
+ display: none !important;
129
+ pointer-events: none;
130
+ height: 0;
131
+ width: 0;
132
+ margin: 0;
133
+ }
134
+ }
135
+ .text {
136
+ top: 0;
137
+ width: 100%;
138
+ text-overflow: ellipsis;
139
+ overflow-wrap: break-word;
140
+
141
+ &.checked {
142
+ text-decoration: line-through;
143
+ color: var(--dark-color);
144
+ }
145
+ }
146
+ }
147
+ </style>
@@ -0,0 +1,85 @@
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 IconDownOutline from './icons/DownOutline.svelte'
17
+
18
+ export let size: 'small' | 'medium' = 'medium'
19
+ export let fill = 'var(--dark-color)'
20
+ export let expanded: boolean = false
21
+ export let direction: 'left' | 'right' = 'right'
22
+ export let outline: boolean = false
23
+ export let marginRight: string | undefined = undefined
24
+ export let marginLeft: string | undefined = undefined
25
+ export let margin: string | undefined = undefined
26
+ </script>
27
+
28
+ <div
29
+ class="chevron {size} {direction}"
30
+ class:outline
31
+ class:expanded
32
+ style:margin-right={marginRight}
33
+ style:margin-left={marginLeft}
34
+ style:margin
35
+ >
36
+ {#if outline}
37
+ <IconDownOutline {size} {fill} />
38
+ {:else}
39
+ <svg {fill} viewBox="0 0 6 6" xmlns="http://www.w3.org/2000/svg">
40
+ <path d="M0,0L6,3L0,6Z" />
41
+ </svg>
42
+ {/if}
43
+ </div>
44
+
45
+ <style lang="scss">
46
+ .chevron {
47
+ flex-shrink: 0;
48
+ transition: transform 0.15s var(--timing-main);
49
+
50
+ &.outline {
51
+ transform-origin: center;
52
+ &.right {
53
+ transform: rotate(-90deg);
54
+ }
55
+ &.left {
56
+ transform: rotate(90deg);
57
+ }
58
+ &.expanded {
59
+ transform: rotate(0deg);
60
+ }
61
+ }
62
+ &:not(.outline) {
63
+ transform-origin: 35% center;
64
+ transform: rotate(0deg);
65
+
66
+ &.small {
67
+ width: 0.325rem;
68
+ height: 0.325rem;
69
+ }
70
+ &.medium {
71
+ width: 0.375rem;
72
+ height: 0.375rem;
73
+ }
74
+ &.right {
75
+ transform: rotate(0deg);
76
+ }
77
+ &.left {
78
+ transform: rotate(180deg);
79
+ }
80
+ &.expanded {
81
+ transform: rotate(90deg);
82
+ }
83
+ }
84
+ }
85
+ </style>
@@ -0,0 +1,109 @@
1
+ <!--
2
+ // Copyright © 2024 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 { IconClose, ButtonIcon, LabelAndProps, tooltip as tp } from '..'
18
+
19
+ export let label: string
20
+ export let size: 'small' | 'min' = 'small'
21
+ export let isRemovable: boolean = false
22
+ export let backgroundColor: string | undefined = undefined
23
+ export let tooltip: LabelAndProps | undefined = undefined
24
+
25
+ const dispatch = createEventDispatcher()
26
+
27
+ let buttonRef: ButtonIcon | undefined
28
+
29
+ function handleBackspace (event: KeyboardEvent) {
30
+ if (event.key === 'Backspace') {
31
+ dispatch('remove')
32
+ }
33
+ }
34
+
35
+ export function focus () {
36
+ buttonRef?.focus()
37
+ }
38
+ </script>
39
+
40
+ <div
41
+ class="flex items-center font-medium-14 max-w-60 chip {size}"
42
+ class:removable={isRemovable}
43
+ style:background-color={backgroundColor}
44
+ use:tp={tooltip}
45
+ >
46
+ <span class="px-2 overflow-label chip-label">{label}</span>
47
+ {#if isRemovable}
48
+ <ButtonIcon
49
+ bind:this={buttonRef}
50
+ kind="tertiary"
51
+ size="min"
52
+ icon={IconClose}
53
+ inheritColor={true}
54
+ on:click={() => dispatch('remove')}
55
+ on:keydown={handleBackspace}
56
+ />
57
+ {/if}
58
+ </div>
59
+
60
+ <style lang="scss">
61
+ .chip {
62
+ position: relative;
63
+ height: var(--global-small-Size);
64
+ padding: var(--spacing-0_5);
65
+ border: none;
66
+ color: var(--tag-on-accent-PorpoiseText);
67
+ background-color: var(--global-accent-BackgroundColor);
68
+ border-radius: var(--small-BorderRadius);
69
+
70
+ &.removable {
71
+ &:after {
72
+ content: '';
73
+ position: absolute;
74
+ inset: 0;
75
+ border-radius: var(--small-BorderRadius);
76
+ overflow: hidden;
77
+ background-color: transparent;
78
+ pointer-events: none;
79
+ }
80
+
81
+ &:hover:after {
82
+ background-color: var(--global-ui-hover-OverlayColor);
83
+ }
84
+
85
+ &:active:after {
86
+ background-color: var(--global-ui-active-OverlayColor);
87
+ }
88
+ }
89
+
90
+ &.min {
91
+ height: 1.25rem;
92
+ padding: var(--spacing-0_25);
93
+ border-radius: var(--extra-small-BorderRadius);
94
+ font-size: 0.6875rem;
95
+
96
+ .chip-label {
97
+ padding: 0 var(--spacing-0_5);
98
+ }
99
+ }
100
+
101
+ .chip-label {
102
+ padding: 0 var(--spacing-1);
103
+ }
104
+
105
+ & :global(button.type-button-icon) {
106
+ margin-right: var(--spacing-0_25);
107
+ }
108
+ }
109
+ </style>
@@ -0,0 +1,165 @@
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 { createEventDispatcher } from 'svelte'
17
+ import type { Asset } from '@hanzo/platform'
18
+ import type { AnySvelteComponent, ButtonSize } from '../types'
19
+ import Icon from './Icon.svelte'
20
+
21
+ export let icon: Asset | AnySvelteComponent | undefined = undefined
22
+ export let size: ButtonSize = 'large'
23
+ export let ghost: boolean = false
24
+ export let selected: boolean = false
25
+ export let primary: boolean = false
26
+ export let disabled: boolean = false
27
+ export let id: string | undefined = undefined
28
+
29
+ const dispatch = createEventDispatcher()
30
+
31
+ function onKeydown (key: KeyboardEvent): void {
32
+ if (key.code === 'Space') {
33
+ key.preventDefault()
34
+ key.stopPropagation()
35
+ dispatch('selected')
36
+ }
37
+ }
38
+ </script>
39
+
40
+ <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
41
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
42
+ <div
43
+ {id}
44
+ class="flex-center icon-button icon-{size}"
45
+ class:selected
46
+ class:ghost
47
+ class:primary
48
+ class:disabled
49
+ tabindex="0"
50
+ on:keydown={onKeydown}
51
+ on:click|stopPropagation
52
+ on:mousemove
53
+ >
54
+ {#if $$slots.content}
55
+ <slot name="content" />
56
+ {:else if icon}
57
+ <div class="flex-center content">
58
+ <Icon {icon} size={'full'} />
59
+ </div>
60
+ {/if}
61
+ </div>
62
+
63
+ <style lang="scss">
64
+ .icon-button {
65
+ position: relative;
66
+ flex-shrink: 0;
67
+ color: var(--theme-content-color);
68
+ background-color: var(--theme-button-default);
69
+ border: 1px solid var(--theme-divider-color);
70
+ border-radius: 50%;
71
+ outline: none;
72
+ cursor: pointer;
73
+
74
+ &::before {
75
+ position: absolute;
76
+ top: -0.25rem;
77
+ bottom: -0.25rem;
78
+ left: -0.25rem;
79
+ right: -0.25rem;
80
+ border: 1px solid var(--primary-button-default);
81
+ border-radius: 50%;
82
+ }
83
+ &:hover {
84
+ background-color: var(--theme-button-hovered);
85
+ }
86
+ &:active {
87
+ background-color: var(--theme-button-pressed);
88
+ }
89
+ &:focus {
90
+ background-color: var(--theme-button-focused);
91
+
92
+ &::before {
93
+ content: '';
94
+ }
95
+ }
96
+ &.disabled {
97
+ background-color: transparent;
98
+ }
99
+ .content {
100
+ pointer-events: none;
101
+ }
102
+ &.selected {
103
+ background-color: var(--menu-bg-select);
104
+ }
105
+ &.ghost {
106
+ background-color: var(--menu-bg-select-trans);
107
+
108
+ &:hover {
109
+ background-color: var(--menu-bg-select);
110
+ }
111
+ }
112
+ &.primary {
113
+ color: var(--secondary-button-color);
114
+ background-color: var(--secondary-button-default);
115
+ &:hover {
116
+ background-color: var(--secondary-button-hovered);
117
+ }
118
+ &:active {
119
+ background-color: var(--secondary-button-pressed);
120
+ }
121
+ &:focus {
122
+ background-color: var(--secondary-button-focused);
123
+ }
124
+ &.disabled {
125
+ background-color: var(--primary-button-disabled);
126
+ }
127
+ }
128
+ }
129
+ .icon-inline {
130
+ width: 1em;
131
+ height: 1em;
132
+ }
133
+ .icon-small {
134
+ width: 1.5rem;
135
+ height: 1.5rem;
136
+ .content {
137
+ width: 0.75rem;
138
+ height: 0.75rem;
139
+ }
140
+ }
141
+ .icon-medium {
142
+ width: 1.75rem;
143
+ height: 1.75rem;
144
+ .content {
145
+ width: 0.875rem;
146
+ height: 0.875rem;
147
+ }
148
+ }
149
+ .icon-large {
150
+ width: 2rem;
151
+ height: 2rem;
152
+ .content {
153
+ width: 1rem;
154
+ height: 1rem;
155
+ }
156
+ }
157
+ .icon-x-large {
158
+ width: 2.25rem;
159
+ height: 2.25rem;
160
+ .content {
161
+ width: 1.25rem;
162
+ height: 1.25rem;
163
+ }
164
+ }
165
+ </style>
@@ -0,0 +1,164 @@
1
+ <!--
2
+ // Copyright © 2024 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, onDestroy } from 'svelte'
18
+
19
+ import CodeInput from './CodeInput.svelte'
20
+
21
+ export let fields: { id: string, name: string, optional: boolean }[] = []
22
+ export let size: 'small' | 'medium' = 'small'
23
+ export let kind: 'primary' | 'secondary' = 'primary'
24
+ export let padding: string | null = null
25
+ export let minHeight: string | null = null
26
+
27
+ const dispatch = createEventDispatcher()
28
+ const formData: Record<string, string> = Object.fromEntries(fields.map(({ name }) => [name, '']))
29
+
30
+ let formElement: HTMLFormElement | undefined
31
+
32
+ function trim (field: string): void {
33
+ formData[field] = formData[field].trim()
34
+ }
35
+
36
+ async function validateCode (): Promise<void> {
37
+ const code = Object.values(formData).join('')
38
+
39
+ dispatch('submit', code)
40
+ }
41
+
42
+ function onInput (e: Event): void {
43
+ if (e.target == null) return
44
+ const target = e.target as HTMLInputElement
45
+ const { value } = target
46
+ if (value == null || value === '') return
47
+ const index = fields.findIndex(({ id }) => id === target.id)
48
+ if (index === -1) return
49
+ if (Object.values(formData).every((v) => v !== '')) {
50
+ void validateCode()
51
+ return
52
+ }
53
+ const nextField = fields[index + 1]
54
+ if (nextField === undefined) return
55
+ const nextInput = formElement?.querySelector(`input[name="${nextField.name}"]`) as HTMLInputElement
56
+ if (nextInput != null) {
57
+ nextInput.focus()
58
+ }
59
+ }
60
+
61
+ function onKeydown (e: KeyboardEvent): void {
62
+ if (e.key === undefined) {
63
+ return
64
+ }
65
+ const key = e.key.toLowerCase()
66
+ const target = e.target as HTMLInputElement
67
+ if (key !== 'backspace' && key !== 'delete') return
68
+ const index = fields.findIndex(({ id }) => id === target.id)
69
+ if (index === -1) return
70
+ const { value } = target
71
+ target.value = ''
72
+ formData[fields[index].name] = ''
73
+ if (value === '') {
74
+ const prevField = fields[index - 1]
75
+ if (prevField === undefined) return
76
+ const prevInput = formElement?.querySelector(`input[name="${prevField.name}"]`) as HTMLInputElement
77
+ if (prevInput != null) {
78
+ prevInput.focus()
79
+ }
80
+ }
81
+ }
82
+
83
+ function onPaste (e: ClipboardEvent): void {
84
+ e.preventDefault()
85
+ if (e.clipboardData == null) return
86
+ const text = e.clipboardData.getData('text')
87
+ const digits = text.split('').filter((it) => it !== ' ')
88
+ if (digits.length !== fields.length) return
89
+ let focusName: string | undefined = undefined
90
+ for (const field of fields) {
91
+ const digit = digits.shift()
92
+ if (digit === undefined) break
93
+ formData[field.name] = digit
94
+ focusName = field.name
95
+ }
96
+ if (focusName !== undefined && focusName !== '' && formElement) {
97
+ const input = formElement.querySelector(`input[name="${focusName}"]`) as HTMLInputElement | undefined
98
+ input?.focus()
99
+ }
100
+ if (Object.values(formData).every((v) => v !== '')) {
101
+ void validateCode()
102
+ }
103
+ }
104
+
105
+ $: if (formElement != null) {
106
+ formElement.addEventListener('input', onInput)
107
+ formElement.addEventListener('keydown', onKeydown)
108
+ formElement.addEventListener('paste', onPaste)
109
+ const firstInput = formElement.querySelector(`input[name="${fields[0].name}"]`) as HTMLInputElement | undefined
110
+ firstInput?.focus()
111
+ }
112
+
113
+ onDestroy(() => {
114
+ if (formElement !== undefined) {
115
+ formElement.removeEventListener('input', onInput)
116
+ formElement.removeEventListener('keydown', onKeydown)
117
+ formElement.removeEventListener('paste', onPaste)
118
+ }
119
+ })
120
+ </script>
121
+
122
+ <form bind:this={formElement} class="container" style:padding style:min-height={minHeight}>
123
+ <div class="form">
124
+ {#each fields as field, index (field.name)}
125
+ {#if index === fields.length / 2}
126
+ <div class="separator" />
127
+ {/if}
128
+ <div class={'form-row'}>
129
+ <CodeInput
130
+ id={field.id}
131
+ name={field.name}
132
+ {size}
133
+ {kind}
134
+ bind:value={formData[field.name]}
135
+ on:blur={() => {
136
+ trim(field.name)
137
+ }}
138
+ />
139
+ </div>
140
+ {/each}
141
+ </div>
142
+ </form>
143
+
144
+ <style lang="scss">
145
+ .separator {
146
+ display: block;
147
+ width: 0.75rem;
148
+ height: 1px;
149
+ background-color: var(--theme-button-border);
150
+ flex-shrink: 0;
151
+ }
152
+
153
+ .container {
154
+ overflow: hidden;
155
+ display: flex;
156
+ flex-direction: column;
157
+ .form {
158
+ display: flex;
159
+ gap: 1rem;
160
+ margin-top: 1.5rem;
161
+ align-items: center;
162
+ }
163
+ }
164
+ </style>