@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.
- package/.eslintrc.js +4 -0
- package/.prettierrc +22 -0
- package/.rush/temp/chunked-rush-logs/ui._phase_build.chunks.jsonl +2 -0
- package/.rush/temp/chunked-rush-logs/ui._phase_validate.chunks.jsonl +11 -0
- package/.rush/temp/hcengineering+ui-_phase_build-16380278e5d28b32a6666092bd103ddbd2c66a56.tar.log +12 -0
- package/.rush/temp/hcengineering+ui-_phase_build-16380278e5d28b32a6666092bd103ddbd2c66a56.untar.log +10 -0
- package/.rush/temp/hcengineering+ui-_phase_validate-8f047ca66e6a4a177eee65782e723a7dc128d73e.tar.log +65 -0
- package/.rush/temp/hcengineering+ui-_phase_validate-8f047ca66e6a4a177eee65782e723a7dc128d73e.untar.log +10 -0
- package/.rush/temp/operation/_phase_build/all.log +2 -0
- package/.rush/temp/operation/_phase_build/log-chunks.jsonl +2 -0
- package/.rush/temp/operation/_phase_build/state.json +3 -0
- package/.rush/temp/operation/_phase_validate/all.log +11 -0
- package/.rush/temp/operation/_phase_validate/log-chunks.jsonl +11 -0
- package/.rush/temp/operation/_phase_validate/state.json +3 -0
- package/.rush/temp/shrinkwrap-deps.json +585 -0
- package/.validate/tsBuildInfoFile.info +1 -0
- package/.validate/validate-err.log +0 -0
- package/.validate/validate.log +0 -0
- package/CHANGELOG.json +17 -0
- package/CHANGELOG.md +9 -0
- package/config/rig.json +5 -0
- package/jest.config.js +5 -0
- package/lang/cs.json +119 -0
- package/lang/de.json +119 -0
- package/lang/en.json +120 -0
- package/lang/es.json +120 -0
- package/lang/fr.json +120 -0
- package/lang/it.json +120 -0
- package/lang/pt.json +120 -0
- package/lang/ru.json +120 -0
- package/lang/zh.json +120 -0
- package/package.json +52 -100
- package/postcss.config.js +5 -0
- package/rush-logs/ui._phase_build.cache.log +4 -0
- package/rush-logs/ui._phase_build.log +2 -0
- package/rush-logs/ui._phase_validate.cache.log +4 -0
- package/rush-logs/ui._phase_validate.log +11 -0
- package/src/__test__/location.test.ts +12 -0
- package/src/colors.ts +552 -0
- package/src/components/AccordionItem.svelte +132 -0
- package/src/components/ActionIcon.svelte +88 -0
- package/src/components/BarDashboard.svelte +47 -0
- package/src/components/BooleanIcon.svelte +31 -0
- package/src/components/Breadcrumb.svelte +102 -0
- package/src/components/Breadcrumbs.svelte +73 -0
- package/src/components/Button.svelte +196 -0
- package/src/components/ButtonBase.svelte +117 -0
- package/src/components/ButtonGroup.svelte +48 -0
- package/src/components/ButtonIcon.svelte +63 -0
- package/src/components/ButtonMenu.svelte +103 -0
- package/src/components/ButtonWithDropdown.svelte +120 -0
- package/src/components/CheckBox.svelte +239 -0
- package/src/components/CheckBoxList.svelte.txt +88 -0
- package/src/components/CheckBoxWithLabel.svelte.txt +147 -0
- package/src/components/Chevron.svelte +85 -0
- package/src/components/Chip.svelte +109 -0
- package/src/components/CircleButton.svelte +165 -0
- package/src/components/CodeForm.svelte +164 -0
- package/src/components/CodeInput.svelte +86 -0
- package/src/components/ColorPopup.svelte +119 -0
- package/src/components/Component.svelte +152 -0
- package/src/components/Dialog.svelte +105 -0
- package/src/components/Dock.svelte +53 -0
- package/src/components/Dropdown.svelte +91 -0
- package/src/components/DropdownLabels.svelte +156 -0
- package/src/components/DropdownLabelsIntl.svelte +108 -0
- package/src/components/DropdownLabelsPopup.svelte +148 -0
- package/src/components/DropdownLabelsPopupIntl.svelte +72 -0
- package/src/components/DropdownPopup.svelte +146 -0
- package/src/components/DropdownRecord.svelte +50 -0
- package/src/components/DropdownRecordPopup.svelte +82 -0
- package/src/components/EditBox.svelte +211 -0
- package/src/components/EditWithIcon.svelte +130 -0
- package/src/components/EmbeddedPDF.svelte +88 -0
- package/src/components/ErrorPopup.svelte +27 -0
- package/src/components/ErrorPresenter.svelte +32 -0
- package/src/components/ExpandCollapse.svelte +42 -0
- package/src/components/Expandable.svelte +90 -0
- package/src/components/FocusHandler.svelte +21 -0
- package/src/components/Fold.svelte +52 -0
- package/src/components/Grid.svelte +39 -0
- package/src/components/Header.svelte +260 -0
- package/src/components/HlsVideo.svelte +170 -0
- package/src/components/Hotkey.svelte +50 -0
- package/src/components/HotkeyGroup.svelte +25 -0
- package/src/components/Html.svelte +24 -0
- package/src/components/Icon.svelte +45 -0
- package/src/components/IconWithEmoji.svelte +74 -0
- package/src/components/Image.svelte +71 -0
- package/src/components/Label.svelte +38 -0
- package/src/components/Lazy.svelte +29 -0
- package/src/components/Like.svelte +73 -0
- package/src/components/Link.svelte +75 -0
- package/src/components/LinkWrapper.svelte +35 -0
- package/src/components/ListView.svelte +153 -0
- package/src/components/ListViewItem.svelte +84 -0
- package/src/components/Loading.svelte +88 -0
- package/src/components/Menu.svelte +205 -0
- package/src/components/MiniToggle.svelte +125 -0
- package/src/components/Modal.svelte +117 -0
- package/src/components/ModeSelector.svelte +37 -0
- package/src/components/ModernButton.svelte +61 -0
- package/src/components/ModernCheckbox.svelte +123 -0
- package/src/components/ModernDialog.svelte +258 -0
- package/src/components/ModernEditbox.svelte +256 -0
- package/src/components/ModernPopup.svelte +105 -0
- package/src/components/ModernRadioButton.svelte +111 -0
- package/src/components/ModernTab.svelte +184 -0
- package/src/components/ModernToggle.svelte +153 -0
- package/src/components/MouseSpeedTracker.svelte +74 -0
- package/src/components/MultiProgress.svelte +97 -0
- package/src/components/NavGroup.svelte +160 -0
- package/src/components/NavItem.svelte +346 -0
- package/src/components/NestedDropdown.svelte +62 -0
- package/src/components/NestedMenu.svelte +119 -0
- package/src/components/NotificationToast.svelte +112 -0
- package/src/components/NumberInput.svelte +200 -0
- package/src/components/Panel.svelte +324 -0
- package/src/components/PanelInstance.svelte +254 -0
- package/src/components/PlainTextEditor.svelte +100 -0
- package/src/components/Popup.svelte +50 -0
- package/src/components/PopupInstance.svelte +390 -0
- package/src/components/PopupMenu.svelte +120 -0
- package/src/components/Progress.svelte +124 -0
- package/src/components/ProgressCircle.svelte +71 -0
- package/src/components/RadioButton.svelte +69 -0
- package/src/components/RadioGroup.svelte +42 -0
- package/src/components/RootStatusComponent.svelte +65 -0
- package/src/components/Row.svelte +25 -0
- package/src/components/ScrollBox.svelte +98 -0
- package/src/components/Scroller.svelte +1063 -0
- package/src/components/ScrollerBar.svelte +181 -0
- package/src/components/SearchEdit.svelte +46 -0
- package/src/components/SearchInput.svelte +213 -0
- package/src/components/SearchPicker.svelte +114 -0
- package/src/components/Section.svelte +49 -0
- package/src/components/SectionEmpty.svelte +38 -0
- package/src/components/SelectBox.svelte +76 -0
- package/src/components/SelectPopup.svelte +217 -0
- package/src/components/Separator.svelte +736 -0
- package/src/components/ShowMore.svelte +99 -0
- package/src/components/Spinner.svelte +72 -0
- package/src/components/SplitButton.svelte +100 -0
- package/src/components/StateTag.svelte +79 -0
- package/src/components/Status.svelte +33 -0
- package/src/components/StepsDialog.svelte +290 -0
- package/src/components/StylishEdit.svelte +127 -0
- package/src/components/Submenu.svelte +68 -0
- package/src/components/Switcher.svelte +55 -0
- package/src/components/SwitcherBase.svelte +116 -0
- package/src/components/TabList.svelte +290 -0
- package/src/components/Tabs.svelte +45 -0
- package/src/components/TabsControl.svelte +113 -0
- package/src/components/TextArea.svelte +110 -0
- package/src/components/TextAreaEditor.svelte +78 -0
- package/src/components/TimeLeft.svelte +66 -0
- package/src/components/TimeShiftPicker.svelte +84 -0
- package/src/components/TimeShiftPopup.svelte +64 -0
- package/src/components/TimeShiftPresenter.svelte +59 -0
- package/src/components/TimeSince.svelte +86 -0
- package/src/components/TimeZonesPopup.svelte +185 -0
- package/src/components/Timeline.svelte +754 -0
- package/src/components/Toggle.svelte +116 -0
- package/src/components/ToggleButton.svelte +176 -0
- package/src/components/ToggleWithLabel.svelte +58 -0
- package/src/components/TooltipInstance.svelte +613 -0
- package/src/components/Video.svelte +40 -0
- package/src/components/calendar/DateInputBox.svelte +430 -0
- package/src/components/calendar/DatePicker.svelte +46 -0
- package/src/components/calendar/DatePopup.svelte +274 -0
- package/src/components/calendar/DatePresenter.svelte +392 -0
- package/src/components/calendar/DateRangePicker.svelte +50 -0
- package/src/components/calendar/DateRangePopup.svelte +76 -0
- package/src/components/calendar/DateRangePresenter.svelte +779 -0
- package/src/components/calendar/DateTimePresenter.svelte +23 -0
- package/src/components/calendar/DateTimeRangePresenter.svelte +28 -0
- package/src/components/calendar/DueDatePopup.svelte +93 -0
- package/src/components/calendar/DueDatePresenter.svelte +83 -0
- package/src/components/calendar/Month.svelte +243 -0
- package/src/components/calendar/MonthCalendar.svelte +138 -0
- package/src/components/calendar/MonthSquare.svelte +315 -0
- package/src/components/calendar/RangeDatePopup.svelte +231 -0
- package/src/components/calendar/Shifts.svelte +114 -0
- package/src/components/calendar/SimpleDatePopup.svelte +42 -0
- package/src/components/calendar/SimpleTimePopup.svelte +41 -0
- package/src/components/calendar/TimeInputBox.svelte +282 -0
- package/src/components/calendar/TimePopup.svelte +62 -0
- package/src/components/calendar/WeekCalendar.svelte +116 -0
- package/src/components/calendar/YearCalendar.svelte +67 -0
- package/src/components/calendar/icons/DPCalendar.svelte +12 -0
- package/src/components/calendar/icons/DPCalendarOver.svelte +15 -0
- package/src/components/calendar/icons/DPClock.svelte +13 -0
- package/src/components/calendar/icons/DPClockBold.svelte +10 -0
- package/src/components/calendar/icons/DPEnd.svelte +13 -0
- package/src/components/calendar/icons/DPSetCalendar.svelte +10 -0
- package/src/components/calendar/icons/DPStart.svelte +13 -0
- package/src/components/calendar/internal/DateUtils.ts +186 -0
- package/src/components/emoji/ActionsPopup.svelte +116 -0
- package/src/components/emoji/EmojiButton.svelte +146 -0
- package/src/components/emoji/EmojiGroup.svelte +105 -0
- package/src/components/emoji/EmojiGroupPalette.svelte +58 -0
- package/src/components/emoji/EmojiPopup.svelte +430 -0
- package/src/components/emoji/SkinTonePopup.svelte +40 -0
- package/src/components/emoji/SkinToneTooltip.svelte +36 -0
- package/src/components/emoji/icons/Activities.svelte +20 -0
- package/src/components/emoji/icons/AnimalsAndNature.svelte +16 -0
- package/src/components/emoji/icons/Flags.svelte +14 -0
- package/src/components/emoji/icons/FoodAndDrink.svelte +20 -0
- package/src/components/emoji/icons/FrequentlyUsed.svelte +17 -0
- package/src/components/emoji/icons/GettingWorkDone.svelte +14 -0
- package/src/components/emoji/icons/Objects.svelte +15 -0
- package/src/components/emoji/icons/Search.svelte +14 -0
- package/src/components/emoji/icons/SmileysAndPeople.svelte +23 -0
- package/src/components/emoji/icons/Symbols.svelte +23 -0
- package/src/components/emoji/icons/TravelAndPlaces.svelte +17 -0
- package/src/components/emoji/index.ts +97 -0
- package/src/components/emoji/store.ts +44 -0
- package/src/components/emoji/types.ts +34 -0
- package/src/components/emoji/utils.ts +182 -0
- package/src/components/icons/Activity.svelte +16 -0
- package/src/components/icons/ActivityEdit.svelte +25 -0
- package/src/components/icons/Add.svelte +10 -0
- package/src/components/icons/ArrowLeft.svelte +25 -0
- package/src/components/icons/ArrowRight.svelte +25 -0
- package/src/components/icons/Attachment.svelte +29 -0
- package/src/components/icons/Back.svelte +32 -0
- package/src/components/icons/BlueCheck.svelte +11 -0
- package/src/components/icons/Calendar.svelte +10 -0
- package/src/components/icons/Check.svelte +12 -0
- package/src/components/icons/CheckAll.svelte +27 -0
- package/src/components/icons/CheckCircle.svelte +12 -0
- package/src/components/icons/Checkmark.svelte +26 -0
- package/src/components/icons/ChevronDown.svelte +27 -0
- package/src/components/icons/ChevronLeft.svelte +22 -0
- package/src/components/icons/ChevronRight.svelte +22 -0
- package/src/components/icons/CircleAdd.svelte +13 -0
- package/src/components/icons/Circles.svelte +43 -0
- package/src/components/icons/Close.svelte +10 -0
- package/src/components/icons/ColStar.svelte +31 -0
- package/src/components/icons/CollapseArrow.svelte +8 -0
- package/src/components/icons/Copy.svelte +10 -0
- package/src/components/icons/Delete.svelte +18 -0
- package/src/components/icons/Description.svelte +31 -0
- package/src/components/icons/Details.svelte +36 -0
- package/src/components/icons/DetailsFilled.svelte +27 -0
- package/src/components/icons/Down.svelte +8 -0
- package/src/components/icons/DownOutline.svelte +8 -0
- package/src/components/icons/Dropdown.svelte +8 -0
- package/src/components/icons/DropdownDown.svelte +24 -0
- package/src/components/icons/DropdownRight.svelte +24 -0
- package/src/components/icons/Edit.svelte +26 -0
- package/src/components/icons/Emoji.svelte +10 -0
- package/src/components/icons/Error.svelte +27 -0
- package/src/components/icons/Expand.svelte +10 -0
- package/src/components/icons/File.svelte +25 -0
- package/src/components/icons/Filter.svelte +26 -0
- package/src/components/icons/Folder.svelte +13 -0
- package/src/components/icons/FolderCollapsed.svelte +34 -0
- package/src/components/icons/FolderExpanded.svelte +34 -0
- package/src/components/icons/Forward.svelte +8 -0
- package/src/components/icons/HalfUpDown.svelte +7 -0
- package/src/components/icons/History.svelte +10 -0
- package/src/components/icons/Info.svelte +26 -0
- package/src/components/icons/KeyCommand.svelte +12 -0
- package/src/components/icons/KeyOption.svelte +8 -0
- package/src/components/icons/KeyShift.svelte +8 -0
- package/src/components/icons/Left.svelte +10 -0
- package/src/components/icons/Like.svelte +25 -0
- package/src/components/icons/Link.svelte +10 -0
- package/src/components/icons/MaxWidth.svelte +27 -0
- package/src/components/icons/Maximize.svelte +25 -0
- package/src/components/icons/MenuClose.svelte +28 -0
- package/src/components/icons/MenuOpen.svelte +26 -0
- package/src/components/icons/MinWidth.svelte +27 -0
- package/src/components/icons/Minimize.svelte +28 -0
- package/src/components/icons/Mixin.svelte +38 -0
- package/src/components/icons/MoreH.svelte +16 -0
- package/src/components/icons/MoreV.svelte +16 -0
- package/src/components/icons/MoreV2.svelte +29 -0
- package/src/components/icons/NavNext.svelte +10 -0
- package/src/components/icons/NavPrev.svelte +10 -0
- package/src/components/icons/Open.svelte +11 -0
- package/src/components/icons/OpenedArrow.svelte +26 -0
- package/src/components/icons/Options.svelte +12 -0
- package/src/components/icons/Redo.svelte +10 -0
- package/src/components/icons/Right.svelte +26 -0
- package/src/components/icons/Scale.svelte +13 -0
- package/src/components/icons/ScaleFull.svelte +13 -0
- package/src/components/icons/Scribble.svelte +10 -0
- package/src/components/icons/Search.svelte +12 -0
- package/src/components/icons/Send.svelte +10 -0
- package/src/components/icons/Settings.svelte +13 -0
- package/src/components/icons/Share.svelte +13 -0
- package/src/components/icons/SquareExpand.svelte +13 -0
- package/src/components/icons/Start.svelte +10 -0
- package/src/components/icons/Stop.svelte +8 -0
- package/src/components/icons/TableOfContents.svelte +35 -0
- package/src/components/icons/Thread.svelte +29 -0
- package/src/components/icons/ToDetails.svelte +28 -0
- package/src/components/icons/Undo.svelte +10 -0
- package/src/components/icons/Up.svelte +8 -0
- package/src/components/icons/UpOutline.svelte +8 -0
- package/src/components/internal/Clock.svelte +42 -0
- package/src/components/internal/ClockFace.svelte +148 -0
- package/src/components/internal/ClockPopup.svelte +91 -0
- package/src/components/internal/ErrorBoundary.ts +33 -0
- package/src/components/internal/ErrorComponent.svelte +37 -0
- package/src/components/internal/Root.svelte +323 -0
- package/src/components/internal/RootBarExtension.svelte +32 -0
- package/src/components/internal/Settings.svelte +39 -0
- package/src/components/internal/SettingsPopup.svelte +196 -0
- package/src/components/internal/ThemeButton.svelte +151 -0
- package/src/components/internal/icons/CheckCircled.svelte +11 -0
- package/src/components/internal/icons/Computer.svelte +15 -0
- package/src/components/internal/icons/FontSize.svelte +13 -0
- package/src/components/internal/icons/Language.svelte +17 -0
- package/src/components/internal/icons/Phone.svelte +18 -0
- package/src/components/internal/icons/Search.svelte +12 -0
- package/src/components/internal/icons/Settings.svelte +13 -0
- package/src/components/internal/icons/Theme.svelte +9 -0
- package/src/components/internal/icons/WiFi.svelte +21 -0
- package/src/components/notifications/Notification.svelte +34 -0
- package/src/components/notifications/Notification.ts +16 -0
- package/src/components/notifications/NotificationPosition.ts +6 -0
- package/src/components/notifications/NotificationSeverity.ts +6 -0
- package/src/components/notifications/Notifications.svelte +53 -0
- package/src/components/notifications/actions.ts +42 -0
- package/src/components/notifications/store.ts +16 -0
- package/src/components/wizard/ModernWizardBar.svelte +105 -0
- package/src/components/wizard/ModernWizardDialog.svelte +144 -0
- package/src/components/wizard/Wizard.svelte +59 -0
- package/src/components/wizard/WizardStep.svelte +144 -0
- package/src/focus.ts +139 -0
- package/src/index.ts +338 -0
- package/src/lazy.ts +93 -0
- package/src/location.ts +259 -0
- package/src/modals.ts +5 -0
- package/src/panelup.ts +70 -0
- package/src/plugin.ts +156 -0
- package/src/popups.ts +486 -0
- package/src/resize.ts +179 -0
- package/src/svg.d.ts +4 -0
- package/src/tooltips.ts +152 -0
- package/src/types.ts +545 -0
- package/src/utils.ts +420 -0
- package/svelte.config.js +5 -0
- package/tsconfig.json +9 -0
- package/types/__test__/location.test.d.ts +2 -0
- package/types/__test__/location.test.d.ts.map +1 -0
- package/types/colors.d.ts +163 -0
- package/types/colors.d.ts.map +1 -0
- package/types/components/calendar/internal/DateUtils.d.ts +34 -0
- package/types/components/calendar/internal/DateUtils.d.ts.map +1 -0
- package/types/components/emoji/index.d.ts +11 -0
- package/types/components/emoji/index.d.ts.map +1 -0
- package/types/components/emoji/store.d.ts +12 -0
- package/types/components/emoji/store.d.ts.map +1 -0
- package/types/components/emoji/types.d.ts +20 -0
- package/types/components/emoji/types.d.ts.map +1 -0
- package/types/components/emoji/utils.d.ts +17 -0
- package/types/components/emoji/utils.d.ts.map +1 -0
- package/types/components/internal/ErrorBoundary.d.ts +5 -0
- package/types/components/internal/ErrorBoundary.d.ts.map +1 -0
- package/types/components/notifications/Notification.d.ts +16 -0
- package/types/components/notifications/Notification.d.ts.map +1 -0
- package/types/components/notifications/NotificationPosition.d.ts +7 -0
- package/types/components/notifications/NotificationPosition.d.ts.map +1 -0
- package/types/components/notifications/NotificationSeverity.d.ts +7 -0
- package/types/components/notifications/NotificationSeverity.d.ts.map +1 -0
- package/types/components/notifications/actions.d.ts +6 -0
- package/types/components/notifications/actions.d.ts.map +1 -0
- package/types/components/notifications/store.d.ts +9 -0
- package/types/components/notifications/store.d.ts.map +1 -0
- package/types/focus.d.ts +32 -0
- package/types/focus.d.ts.map +1 -0
- package/types/index.d.ts +254 -0
- package/types/index.d.ts.map +1 -0
- package/types/lazy.d.ts +6 -0
- package/types/lazy.d.ts.map +1 -0
- package/types/location.d.ts +38 -0
- package/types/location.d.ts.map +1 -0
- package/types/modals.d.ts +5 -0
- package/types/modals.d.ts.map +1 -0
- package/types/panelup.d.ts +17 -0
- package/types/panelup.d.ts.map +1 -0
- package/types/plugin.d.ts +135 -0
- package/types/plugin.d.ts.map +1 -0
- package/types/popups.d.ts +65 -0
- package/types/popups.d.ts.map +1 -0
- package/types/resize.d.ts +32 -0
- package/types/resize.d.ts.map +1 -0
- package/types/tooltips.d.ts +8 -0
- package/types/tooltips.d.ts.map +1 -0
- package/types/types.d.ts +373 -0
- package/types/types.d.ts.map +1 -0
- package/types/utils.d.ts +125 -0
- package/types/utils.d.ts.map +1 -0
- package/assets/lux-site-icons/android-chrome-192x192.png +0 -0
- package/assets/lux-site-icons/android-chrome-512x512.png +0 -0
- package/assets/lux-site-icons/apple-touch-icon.png +0 -0
- package/assets/lux-site-icons/favicon-16x16.png +0 -0
- package/assets/lux-site-icons/favicon-32x32.png +0 -0
- package/assets/lux-site-icons/favicon.ico +0 -0
- package/assets/standard-docs/LUX-NFT-Terms-and-Conditions.pdf +0 -0
- package/assets/standard-docs/LUX-Privacy-Policy.pdf +0 -0
- package/blocks/components/accordian-block.tsx +0 -48
- package/blocks/components/block-component-props.ts +0 -11
- package/blocks/components/bullet-cards-block.tsx +0 -45
- package/blocks/components/card-block.tsx +0 -213
- package/blocks/components/carte-blanche-block/index.tsx +0 -127
- package/blocks/components/carte-blanche-block/variant-content-left.tsx +0 -49
- package/blocks/components/content.tsx +0 -70
- package/blocks/components/cta-block.tsx +0 -98
- package/blocks/components/enh-heading-block.tsx +0 -205
- package/blocks/components/grid-block/grid-block-mutator.ts +0 -12
- package/blocks/components/grid-block/index.tsx +0 -83
- package/blocks/components/grid-block/mutator-registry.ts +0 -10
- package/blocks/components/grid-block/table-borders.mutator.ts +0 -47
- package/blocks/components/group-block.tsx +0 -83
- package/blocks/components/heading-block.tsx +0 -88
- package/blocks/components/image-block.tsx +0 -108
- package/blocks/components/index.ts +0 -30
- package/blocks/components/screenful-block/content.tsx +0 -120
- package/blocks/components/screenful-block/index.tsx +0 -79
- package/blocks/components/screenful-block/poster-background.tsx +0 -34
- package/blocks/components/screenful-block/video-background.tsx +0 -45
- package/blocks/components/space-block.tsx +0 -66
- package/blocks/components/video-block.tsx +0 -137
- package/blocks/def/accordian-block.ts +0 -14
- package/blocks/def/block.ts +0 -7
- package/blocks/def/bullet-cards-block.ts +0 -21
- package/blocks/def/card-block.ts +0 -24
- package/blocks/def/carte-blanche-block.ts +0 -21
- package/blocks/def/cta-block.ts +0 -19
- package/blocks/def/element-block.ts +0 -11
- package/blocks/def/enh-heading-block.ts +0 -45
- package/blocks/def/grid-block.ts +0 -16
- package/blocks/def/group-block.ts +0 -11
- package/blocks/def/heading-block.ts +0 -15
- package/blocks/def/image-block.ts +0 -31
- package/blocks/def/index.ts +0 -35
- package/blocks/def/screenful-block.ts +0 -54
- package/blocks/def/space-block.ts +0 -64
- package/blocks/def/video-block.ts +0 -28
- package/blocks/index.ts +0 -2
- package/common/chat-widget.tsx +0 -75
- package/common/contact-dialog/contact-form.tsx +0 -111
- package/common/contact-dialog/disclaimer.tsx +0 -13
- package/common/contact-dialog/index.tsx +0 -48
- package/common/copyright.tsx +0 -21
- package/common/drawer-menu.tsx +0 -51
- package/common/footer.tsx +0 -77
- package/common/head-metadata/from-next/metadata-types.ts +0 -158
- package/common/head-metadata/from-next/opengraph-types.ts +0 -267
- package/common/head-metadata/from-next/twitter-types.ts +0 -92
- package/common/head-metadata/index.tsx +0 -208
- package/common/header/index.tsx +0 -57
- package/common/header/mobile-nav.tsx +0 -72
- package/common/header/theme-toggle.tsx +0 -26
- package/common/icons/github.tsx +0 -14
- package/common/icons/index.tsx +0 -34
- package/common/icons/lux-logo.tsx +0 -10
- package/common/icons/secure-delivery.tsx +0 -13
- package/common/icons/social-icon.tsx +0 -35
- package/common/icons/youtube-logo.tsx +0 -59
- package/common/index.ts +0 -14
- package/common/logo.tsx +0 -71
- package/common/mini-chart/index.tsx +0 -8
- package/common/mini-chart/mini-chart-props.ts +0 -44
- package/common/mini-chart/mini-chart.tsx +0 -76
- package/common/mini-chart/wrapper.tsx +0 -23
- package/context-providers/index.ts +0 -1
- package/context-providers/theme-provider.tsx +0 -20
- package/next/README.md +0 -11
- package/next/analytics/fpixel.ts +0 -16
- package/next/analytics/pixel-analytics.tsx +0 -55
- package/next/determine-device-middleware.ts +0 -16
- package/next/fonts/DrukTextWide-Bold-Trial.otf +0 -0
- package/next/fonts/DrukTextWide-Heavy-Trial.otf +0 -0
- package/next/fonts/DrukTextWide-Medium-Trial.otf +0 -0
- package/next/fonts/DrukWide-Bold-Trial.otf +0 -0
- package/next/fonts/DrukWide-Heavy-Trial.otf +0 -0
- package/next/fonts/DrukWide-Medium-Trial.otf +0 -0
- package/next/get-app-router-font-classes.ts +0 -12
- package/next/load-and-return-lux-next-fonts-on-import.ts +0 -94
- package/next/next-font-desc.ts +0 -28
- package/next/not-found-content.mdx +0 -4
- package/next/not-found.tsx +0 -23
- package/next/pages-router-font-vars.tsx +0 -18
- package/next/root-layout.tsx +0 -60
- package/primitives/accordion.tsx +0 -61
- package/primitives/action-button.tsx +0 -46
- package/primitives/apply-typography.tsx +0 -55
- package/primitives/avatar.tsx +0 -49
- package/primitives/badge.tsx +0 -36
- package/primitives/button.tsx +0 -73
- package/primitives/calendar.tsx +0 -72
- package/primitives/card.tsx +0 -83
- package/primitives/checkbox.tsx +0 -32
- package/primitives/command.tsx +0 -155
- package/primitives/dialog-video-controller.tsx +0 -38
- package/primitives/dialog.tsx +0 -152
- package/primitives/form.tsx +0 -179
- package/primitives/index.ts +0 -144
- package/primitives/inline-icon.tsx +0 -37
- package/primitives/input.tsx +0 -30
- package/primitives/label.tsx +0 -28
- package/primitives/link-element.tsx +0 -104
- package/primitives/main.tsx +0 -17
- package/primitives/mdx-link.tsx +0 -22
- package/primitives/nav-items.tsx +0 -48
- package/primitives/popover.tsx +0 -35
- package/primitives/progress.tsx +0 -27
- package/primitives/scroll-area.tsx +0 -47
- package/primitives/select.tsx +0 -169
- package/primitives/separator.tsx +0 -29
- package/primitives/sheet.tsx +0 -175
- package/primitives/skeleton.tsx +0 -15
- package/primitives/switch.tsx +0 -33
- package/primitives/table.tsx +0 -117
- package/primitives/tabs.tsx +0 -60
- package/primitives/tailwind-indicator.tsx +0 -19
- package/primitives/text-area.tsx +0 -26
- package/primitives/toast.tsx +0 -129
- package/primitives/toaster.tsx +0 -37
- package/primitives/use-toast.ts +0 -192
- package/primitives/video-player.tsx +0 -26
- package/primitives/youtube-embed.tsx +0 -83
- package/siteDef/footer/community.tsx +0 -67
- package/siteDef/footer/company.ts +0 -37
- package/siteDef/footer/ecosystem.ts +0 -37
- package/siteDef/footer/index.tsx +0 -26
- package/siteDef/footer/legal.ts +0 -28
- package/siteDef/footer/network.ts +0 -33
- package/siteDef/footer/svg/warpcast-logo.svg +0 -12
- package/siteDef/main-nav.ts +0 -35
- package/style/globals.css +0 -13
- package/style/hanzo-common.css +0 -32
- package/style/hanzo-default-colors.css +0 -79
- package/style/social-svg.css +0 -3
- package/tailwind/colors.tailwind.js +0 -46
- package/tailwind/fonts.tailwind.ts +0 -31
- package/tailwind/index.ts +0 -18
- package/tailwind/lux-tw-fonts.ts +0 -37
- package/tailwind/safelist.tailwind.js +0 -26
- package/tailwind/screens.tailwind.js +0 -8
- package/tailwind/spacing.tailwind.js +0 -65
- package/tailwind/tailwind.config.base.js +0 -906
- package/tailwind/tw-font-desc.ts +0 -15
- package/tailwind/typo-plugin/get-plugin-styles.js +0 -676
- package/tailwind/typo-plugin/index.d.ts +0 -9
- package/tailwind/typo-plugin/index.js +0 -141
- package/tailwind/typo-plugin/utils.js +0 -60
- package/tailwind/typography-test.mdx +0 -36
- package/types/breakpoints.ts +0 -11
- package/types/bullet-item.ts +0 -10
- package/types/button-def.ts +0 -39
- package/types/contact-info.ts +0 -11
- package/types/dimensions.ts +0 -20
- package/types/grid-def.ts +0 -56
- package/types/icon.ts +0 -10
- package/types/image-def.ts +0 -28
- package/types/index.ts +0 -29
- package/types/link-def.ts +0 -59
- package/types/site-def.ts +0 -34
- package/types/t-shirt-size.ts +0 -5
- package/util/index.ts +0 -81
- 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>
|