@diplodoc/components 5.4.0 → 5.5.0
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/build/cjs/components/BookmarkButton/BookmarkButton.css.map +1 -1
- package/build/cjs/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
- package/build/cjs/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
- package/build/cjs/components/Contributors/Contributors.css.map +1 -1
- package/build/cjs/components/Control/Control.css.map +1 -1
- package/build/cjs/components/Controls/Controls.css.map +1 -1
- package/build/cjs/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
- package/build/cjs/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
- package/build/cjs/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +1 -1
- package/build/cjs/components/DocLayout/DocLayout.css.map +1 -1
- package/build/cjs/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
- package/build/cjs/components/DocPage/DocPage.css.map +1 -1
- package/build/cjs/components/DocPageTitle/DocPageTitle.css.map +1 -1
- package/build/cjs/components/ErrorPage/ErrorPage.css.map +1 -1
- package/build/cjs/components/Feedback/Feedback.css.map +1 -1
- package/build/cjs/components/Mark/Mark.css.map +1 -1
- package/build/cjs/components/MiniToc/MiniToc.css.map +1 -1
- package/build/cjs/components/MobileControls/MobileControl/MobileControl.css.map +1 -1
- package/build/cjs/components/MobileControls/MobileControlSheet/MobileControlSheet.css.map +1 -1
- package/build/cjs/components/MobileControls/MobileControls.css.map +1 -1
- package/build/cjs/components/Notification/Notification.css.map +1 -1
- package/build/cjs/components/Paginator/Paginator.css.map +1 -1
- package/build/cjs/components/SearchBar/SearchBar.css.map +1 -1
- package/build/cjs/components/SearchItem/SearchItem.css.map +1 -1
- package/build/cjs/components/SearchPage/SearchPage.css.map +1 -1
- package/build/cjs/components/SearchSuggest/SearchInput.d.ts +2 -0
- package/build/cjs/components/SearchSuggest/SearchInput.js +5 -2
- package/build/cjs/components/SearchSuggest/SearchInput.js.map +2 -2
- package/build/cjs/components/SearchSuggest/Suggest.d.ts +3 -0
- package/build/cjs/components/SearchSuggest/Suggest.js +19 -14
- package/build/cjs/components/SearchSuggest/Suggest.js.map +2 -2
- package/build/cjs/components/SearchSuggest/SuggestItem.d.ts +7 -2
- package/build/cjs/components/SearchSuggest/SuggestItem.js +23 -2
- package/build/cjs/components/SearchSuggest/SuggestItem.js.map +2 -2
- package/build/cjs/components/SearchSuggest/__tests__/SearchSuggestWithAi.spec.d.ts +1 -0
- package/build/cjs/components/SearchSuggest/index.css +45 -0
- package/build/cjs/components/SearchSuggest/index.css.map +3 -3
- package/build/cjs/components/SearchSuggest/index.d.ts +8 -2
- package/build/cjs/components/SearchSuggest/index.js +27 -8
- package/build/cjs/components/SearchSuggest/index.js.map +3 -3
- package/build/cjs/components/SearchSuggest/types.d.ts +12 -2
- package/build/cjs/components/SearchSuggest/types.js +1 -0
- package/build/cjs/components/SearchSuggest/types.js.map +2 -2
- package/build/cjs/components/SearchSuggest/useProvider.d.ts +4 -1
- package/build/cjs/components/SearchSuggest/useProvider.js +69 -27
- package/build/cjs/components/SearchSuggest/useProvider.js.map +2 -2
- package/build/cjs/components/ShareButton/ShareButton.css.map +1 -1
- package/build/cjs/components/SubNavigation/SubNavigation.css.map +1 -1
- package/build/cjs/components/Subscribe/Subscribe.css.map +1 -1
- package/build/cjs/components/Toc/Toc.css.map +1 -1
- package/build/cjs/components/TocItem/TocItem.css.map +1 -1
- package/build/cjs/components/TocLable/TocLabel.css.map +1 -1
- package/build/cjs/components/TocNavPanel/TocNavPanel.css.map +1 -1
- package/build/cjs/components/ToggleArrow/ToggleArrow.css.map +1 -1
- package/build/cjs/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
- package/build/cjs/components/Widgets/Widgets.css.map +1 -1
- package/build/cjs/components/constants.d.ts +1 -0
- package/build/cjs/components/navigation/CustomNavigation/CustomNavigation.css.map +1 -1
- package/build/cjs/components/navigation/Label/Label.css +5 -0
- package/build/cjs/components/navigation/Label/Label.css.map +7 -0
- package/build/cjs/components/navigation/Label/Label.d.ts +8 -0
- package/build/cjs/components/navigation/Label/Label.js +43 -0
- package/build/cjs/components/navigation/Label/Label.js.map +7 -0
- package/build/cjs/components/navigation/Label/index.d.ts +1 -0
- package/build/cjs/components/navigation/Label/index.js +27 -0
- package/build/cjs/components/navigation/Label/index.js.map +7 -0
- package/build/cjs/components/navigation/MobileDropdown/MobileDropdown.css.map +1 -1
- package/build/cjs/components/navigation/Sidebar/Sidebar.css.map +1 -1
- package/build/cjs/components/navigation/SidebarContent/SidebarContent.css.map +1 -1
- package/build/cjs/components/navigation/SidebarNavigation/SidebarNavigation.css.map +1 -1
- package/build/cjs/components/navigation/ToMainMenu/ToMainMenu.css.map +1 -1
- package/build/cjs/components/navigation/index.d.ts +1 -0
- package/build/cjs/components/navigation/index.js +2 -0
- package/build/cjs/components/navigation/index.js.map +2 -2
- package/build/cjs/models/index.d.ts +14 -2
- package/build/cjs/models/index.js.map +1 -1
- package/build/esm/components/BookmarkButton/BookmarkButton.css.map +1 -1
- package/build/esm/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
- package/build/esm/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
- package/build/esm/components/Contributors/Contributors.css.map +1 -1
- package/build/esm/components/Control/Control.css.map +1 -1
- package/build/esm/components/Controls/Controls.css.map +1 -1
- package/build/esm/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
- package/build/esm/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
- package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +1 -1
- package/build/esm/components/DocLayout/DocLayout.css.map +1 -1
- package/build/esm/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
- package/build/esm/components/DocPage/DocPage.css.map +1 -1
- package/build/esm/components/DocPageTitle/DocPageTitle.css.map +1 -1
- package/build/esm/components/ErrorPage/ErrorPage.css.map +1 -1
- package/build/esm/components/Feedback/Feedback.css.map +1 -1
- package/build/esm/components/Mark/Mark.css.map +1 -1
- package/build/esm/components/MiniToc/MiniToc.css.map +1 -1
- package/build/esm/components/MobileControls/MobileControl/MobileControl.css.map +1 -1
- package/build/esm/components/MobileControls/MobileControlSheet/MobileControlSheet.css.map +1 -1
- package/build/esm/components/MobileControls/MobileControls.css.map +1 -1
- package/build/esm/components/Notification/Notification.css.map +1 -1
- package/build/esm/components/Paginator/Paginator.css.map +1 -1
- package/build/esm/components/SearchBar/SearchBar.css.map +1 -1
- package/build/esm/components/SearchItem/SearchItem.css.map +1 -1
- package/build/esm/components/SearchPage/SearchPage.css.map +1 -1
- package/build/esm/components/SearchSuggest/SearchInput.d.ts +2 -0
- package/build/esm/components/SearchSuggest/SearchInput.js +5 -2
- package/build/esm/components/SearchSuggest/SearchInput.js.map +2 -2
- package/build/esm/components/SearchSuggest/Suggest.d.ts +3 -0
- package/build/esm/components/SearchSuggest/Suggest.js +19 -14
- package/build/esm/components/SearchSuggest/Suggest.js.map +2 -2
- package/build/esm/components/SearchSuggest/SuggestItem.d.ts +7 -2
- package/build/esm/components/SearchSuggest/SuggestItem.js +23 -2
- package/build/esm/components/SearchSuggest/SuggestItem.js.map +2 -2
- package/build/esm/components/SearchSuggest/__tests__/SearchSuggestWithAi.spec.d.ts +1 -0
- package/build/esm/components/SearchSuggest/index.css +45 -0
- package/build/esm/components/SearchSuggest/index.css.map +3 -3
- package/build/esm/components/SearchSuggest/index.d.ts +8 -2
- package/build/esm/components/SearchSuggest/index.js +27 -8
- package/build/esm/components/SearchSuggest/index.js.map +3 -3
- package/build/esm/components/SearchSuggest/types.d.ts +12 -2
- package/build/esm/components/SearchSuggest/types.js +1 -0
- package/build/esm/components/SearchSuggest/types.js.map +2 -2
- package/build/esm/components/SearchSuggest/useProvider.d.ts +4 -1
- package/build/esm/components/SearchSuggest/useProvider.js +69 -27
- package/build/esm/components/SearchSuggest/useProvider.js.map +2 -2
- package/build/esm/components/ShareButton/ShareButton.css.map +1 -1
- package/build/esm/components/SubNavigation/SubNavigation.css.map +1 -1
- package/build/esm/components/Subscribe/Subscribe.css.map +1 -1
- package/build/esm/components/Toc/Toc.css.map +1 -1
- package/build/esm/components/TocItem/TocItem.css.map +1 -1
- package/build/esm/components/TocLable/TocLabel.css.map +1 -1
- package/build/esm/components/TocNavPanel/TocNavPanel.css.map +1 -1
- package/build/esm/components/ToggleArrow/ToggleArrow.css.map +1 -1
- package/build/esm/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
- package/build/esm/components/Widgets/Widgets.css.map +1 -1
- package/build/esm/components/constants.d.ts +1 -0
- package/build/esm/components/navigation/CustomNavigation/CustomNavigation.css.map +1 -1
- package/build/esm/components/navigation/Label/Label.css +5 -0
- package/build/esm/components/navigation/Label/Label.css.map +7 -0
- package/build/esm/components/navigation/Label/Label.d.ts +8 -0
- package/build/esm/components/navigation/Label/Label.js +12 -0
- package/build/esm/components/navigation/Label/Label.js.map +7 -0
- package/build/esm/components/navigation/Label/index.d.ts +1 -0
- package/build/esm/components/navigation/Label/index.js +6 -0
- package/build/esm/components/navigation/Label/index.js.map +7 -0
- package/build/esm/components/navigation/MobileDropdown/MobileDropdown.css.map +1 -1
- package/build/esm/components/navigation/Sidebar/Sidebar.css.map +1 -1
- package/build/esm/components/navigation/SidebarContent/SidebarContent.css.map +1 -1
- package/build/esm/components/navigation/SidebarNavigation/SidebarNavigation.css.map +1 -1
- package/build/esm/components/navigation/ToMainMenu/ToMainMenu.css.map +1 -1
- package/build/esm/components/navigation/index.d.ts +1 -0
- package/build/esm/components/navigation/index.js +2 -0
- package/build/esm/components/navigation/index.js.map +2 -2
- package/build/esm/models/index.d.ts +14 -2
- package/build/esm/models/index.js.map +1 -1
- package/build/index.css +1 -0
- package/build/index.css.map +3 -3
- package/build/themes/common/index.css.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/SearchSuggest/index.scss", "../../../../src/components/SearchSuggest/%3Cinput css
|
|
4
|
-
"sourcesContent": ["@use '../../styles/variables';\n@use '../../styles/mixins';\n\n.dc-search-suggest {\n $block: &;\n\n --g-text-input-placeholder-color: rgba(0, 0, 0, 0.5);\n --g-text-input-placeholder-color-hover: rgba(0, 0, 0, 0.65);\n --g-text-input-border-color: rgba(0, 0, 0, 0.5);\n --g-text-input-border-color-hover: rgba(0, 0, 0, 0.65);\n\n .g-root_theme_dark & {\n --g-text-input-placeholder-color: rgba(255, 255, 255, 0.3);\n --g-text-input-placeholder-color-hover: rgba(255, 255, 255, 0.5);\n --g-text-input-border-color: rgba(255, 255, 255, 0.4);\n --g-text-input-border-color-hover: rgba(255, 255, 255, 0.5);\n }\n\n &__wrapper {\n position: relative;\n width: 100%;\n }\n\n &__loader {\n display: flex;\n justify-content: center;\n padding: 10px;\n }\n\n &__list {\n box-sizing: border-box;\n display: flex;\n max-height: 60vh;\n overflow: hidden auto;\n\n &_empty {\n text-align: center;\n padding: 12px;\n word-break: break-word;\n }\n }\n\n &__close {\n flex: none;\n margin-left: 16px;\n }\n\n &__item {\n width: 100%;\n display: block;\n overflow: hidden;\n padding: 12px 20px;\n box-sizing: border-box;\n\n cursor: pointer;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n @include mixins.text-size(body-1);\n\n &-title,\n &-description,\n &-breadcrumbs > * {\n display: block;\n overflow: hidden;\n\n text-overflow: ellipsis;\n }\n\n &-description {\n margin-top: 4px;\n\n color: var(--g-color-text-secondary);\n }\n\n &_type {\n &_page {\n padding-bottom: 9px;\n\n @include mixins.link();\n\n #{$block}__item {\n &-breadcrumbs {\n padding-top: 2px;\n\n color: var(--g-color-text-secondary);\n }\n }\n }\n\n &_service,\n &_marketplace {\n display: flex;\n\n padding-top: 9px;\n padding-bottom: 11px;\n\n #{$block}__item {\n &-logo {\n margin-right: 16px;\n padding: 3px 0 1px;\n\n text-align: center;\n }\n\n &-icon {\n width: 16px;\n height: var(--g-text-body-3-line-height);\n }\n\n &-text {\n min-width: 0;\n }\n\n &-title {\n padding: 3px 0 1px;\n }\n }\n }\n\n &_group {\n padding: 16px 20px 4px;\n\n color: var(--www-text-content-color);\n }\n\n &_link {\n display: flex;\n\n padding: 22px 20px;\n\n color: var(--g-color-text-link);\n border-top: 1px solid var(--g-color-line-generic);\n }\n\n &_delimiter {\n height: 1px;\n padding: 0;\n\n background-color: var(--g-color-line-generic);\n }\n }\n\n h5 {\n margin: 0;\n font-weight: 700;\n font-size: 16px;\n line-height: 25px;\n }\n\n em {\n position: relative;\n\n font-style: inherit;\n\n &::before {\n position: absolute;\n z-index: -1;\n top: -3px;\n bottom: -1px;\n\n width: 100%;\n\n content: '';\n\n background-color: var(--g-color-base-selection);\n }\n }\n }\n}\n", ".dc-search-suggest {\n --g-text-input-placeholder-color: rgba(0, 0, 0, 0.5);\n --g-text-input-placeholder-color-hover: rgba(0, 0, 0, 0.65);\n --g-text-input-border-color: rgba(0, 0, 0, 0.5);\n --g-text-input-border-color-hover: rgba(0, 0, 0, 0.65);\n}\n.g-root_theme_dark .dc-search-suggest {\n --g-text-input-placeholder-color: rgba(255, 255, 255, 0.3);\n --g-text-input-placeholder-color-hover: rgba(255, 255, 255, 0.5);\n --g-text-input-border-color: rgba(255, 255, 255, 0.4);\n --g-text-input-border-color-hover: rgba(255, 255, 255, 0.5);\n}\n.dc-search-suggest__wrapper {\n position: relative;\n width: 100%;\n}\n.dc-search-suggest__loader {\n display: flex;\n justify-content: center;\n padding: 10px;\n}\n.dc-search-suggest__list {\n box-sizing: border-box;\n display: flex;\n max-height: 60vh;\n overflow: hidden auto;\n}\n.dc-search-suggest__list_empty {\n text-align: center;\n padding: 12px;\n word-break: break-word;\n}\n.dc-search-suggest__close {\n flex: none;\n margin-left: 16px;\n}\n.dc-search-suggest__item {\n width: 100%;\n display: block;\n overflow: hidden;\n padding: 12px 20px;\n box-sizing: border-box;\n cursor: pointer;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n.dc-search-suggest__item-title, .dc-search-suggest__item-description, .dc-search-suggest__item-breadcrumbs > * {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dc-search-suggest__item-description {\n margin-top: 4px;\n color: var(--g-color-text-secondary);\n}\n.dc-search-suggest__item_type_page {\n padding-bottom: 9px;\n color: var(--g-color-text-link);\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--g-focus-border-radius);\n outline: none;\n}\n.utilityfocus .dc-search-suggest__item_type_page:focus {\n outline: 2px solid #ffdb4d;\n}\n.dc-search-suggest__item_type_page:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-focus);\n outline: 0;\n}\n.dc-search-suggest__item_type_page:focus:not(:focus-visible) {\n box-shadow: none;\n}\n.dc-search-suggest__item_type_page:hover, .dc-search-suggest__item_type_page:active {\n color: var(--g-color-text-link-hover);\n}\n.dc-search-suggest__item_type_page .dc-search-suggest__item-breadcrumbs {\n padding-top: 2px;\n color: var(--g-color-text-secondary);\n}\n.dc-search-suggest__item_type_service, .dc-search-suggest__item_type_marketplace {\n display: flex;\n padding-top: 9px;\n padding-bottom: 11px;\n}\n.dc-search-suggest__item_type_service .dc-search-suggest__item-logo, .dc-search-suggest__item_type_marketplace .dc-search-suggest__item-logo {\n margin-right: 16px;\n padding: 3px 0 1px;\n text-align: center;\n}\n.dc-search-suggest__item_type_service .dc-search-suggest__item-icon, .dc-search-suggest__item_type_marketplace .dc-search-suggest__item-icon {\n width: 16px;\n height: var(--g-text-body-3-line-height);\n}\n.dc-search-suggest__item_type_service .dc-search-suggest__item-text, .dc-search-suggest__item_type_marketplace .dc-search-suggest__item-text {\n min-width: 0;\n}\n.dc-search-suggest__item_type_service .dc-search-suggest__item-title, .dc-search-suggest__item_type_marketplace .dc-search-suggest__item-title {\n padding: 3px 0 1px;\n}\n.dc-search-suggest__item_type_group {\n padding: 16px 20px 4px;\n color: var(--www-text-content-color);\n}\n.dc-search-suggest__item_type_link {\n display: flex;\n padding: 22px 20px;\n color: var(--g-color-text-link);\n border-top: 1px solid var(--g-color-line-generic);\n}\n.dc-search-suggest__item_type_delimiter {\n height: 1px;\n padding: 0;\n background-color: var(--g-color-line-generic);\n}\n.dc-search-suggest__item h5 {\n margin: 0;\n font-weight: 700;\n font-size: 16px;\n line-height: 25px;\n}\n.dc-search-suggest__item em {\n position: relative;\n font-style: inherit;\n}\n.dc-search-suggest__item em::before {\n position: absolute;\n z-index: -1;\n top: -3px;\n bottom: -1px;\n width: 100%;\n content: \"\";\n background-color: var(--g-color-base-selection);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1NlYXJjaFN1Z2dlc3QiLCJzb3VyY2VzIjpbImluZGV4LnNjc3MiLCIuLi8uLi9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFHSTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBOztBQUlSO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUNwREo7RUFDQTs7QUR1REk7RUFHSTtFQUNBO0VBRUE7O0FBR0o7RUFDSTtFQUVBOztBQUlBO0VBQ0k7RUN0Qlo7RUFDQTtFQUNBO0VBQ0E7RUFqQ0E7O0FBRUE7RUFDSTs7QUFnQkE7RUFDSTtFQUNBOztBQUVKO0VBQ0k7O0FBZVI7RUFFSTs7QURnQlk7RUFDSTtFQUVBOztBQUtaO0VBRUk7RUFFQTtFQUNBOztBQUdJO0VBQ0k7RUFDQTtFQUVBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7O0FBS1o7RUFDSTtFQUVBOztBQUdKO0VBQ0k7RUFFQTtFQUVBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBRUE7O0FBSVI7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBRUE7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBRUE7RUFFQSIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL3N0eWxlcy92YXJpYWJsZXMnO1xuQHVzZSAnLi4vLi4vc3R5bGVzL21peGlucyc7XG5cbi5kYy1zZWFyY2gtc3VnZ2VzdCB7XG4gICAgJGJsb2NrOiAmO1xuXG4gICAgLS1nLXRleHQtaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAtLWctdGV4dC1pbnB1dC1wbGFjZWhvbGRlci1jb2xvci1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjY1KTtcbiAgICAtLWctdGV4dC1pbnB1dC1ib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAtLWctdGV4dC1pbnB1dC1ib3JkZXItY29sb3ItaG92ZXI6IHJnYmEoMCwgMCwgMCwgMC42NSk7XG5cbiAgICAuZy1yb290X3RoZW1lX2RhcmsgJiB7XG4gICAgICAgIC0tZy10ZXh0LWlucHV0LXBsYWNlaG9sZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgICAgIC0tZy10ZXh0LWlucHV0LXBsYWNlaG9sZGVyLWNvbG9yLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgICAgIC0tZy10ZXh0LWlucHV0LWJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuICAgICAgICAtLWctdGV4dC1pbnB1dC1ib3JkZXItY29sb3ItaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICB9XG5cbiAgICAmX193cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAmX19sb2FkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICB9XG5cbiAgICAmX19saXN0IHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWF4LWhlaWdodDogNjB2aDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbiBhdXRvO1xuXG4gICAgICAgICZfZW1wdHkge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jbG9zZSB7XG4gICAgICAgIGZsZXg6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xuICAgIH1cblxuICAgICZfX2l0ZW0ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBhZGRpbmc6IDEycHggMjBweDtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG4gICAgICAgIEBpbmNsdWRlIG1peGlucy50ZXh0LXNpemUoYm9keS0xKTtcblxuICAgICAgICAmLXRpdGxlLFxuICAgICAgICAmLWRlc2NyaXB0aW9uLFxuICAgICAgICAmLWJyZWFkY3J1bWJzID4gKiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB9XG5cbiAgICAgICAgJi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG5cbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfdHlwZSB7XG4gICAgICAgICAgICAmX3BhZ2Uge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA5cHg7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtaXhpbnMubGluaygpO1xuXG4gICAgICAgICAgICAgICAgI3skYmxvY2t9X19pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgJi1icmVhZGNydW1icyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMnB4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfc2VydmljZSxcbiAgICAgICAgICAgICZfbWFya2V0cGxhY2Uge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogOXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMXB4O1xuXG4gICAgICAgICAgICAgICAgI3skYmxvY2t9X19pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgJi1sb2dvIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweCAwIDFweDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJi1pY29uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS0zLWxpbmUtaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICYtdGV4dCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmLXRpdGxlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweCAwIDFweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9ncm91cCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTZweCAyMHB4IDRweDtcblxuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13d3ctdGV4dC1jb250ZW50LWNvbG9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9saW5rIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMjJweCAyMHB4O1xuXG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rKTtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tZy1jb2xvci1saW5lLWdlbmVyaWMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX2RlbGltaXRlciB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWctY29sb3ItbGluZS1nZW5lcmljKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGg1IHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGVtIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgZm9udC1zdHlsZTogaW5oZXJpdDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgICAgICAgICAgdG9wOiAtM3B4O1xuICAgICAgICAgICAgICAgIGJvdHRvbTogLTFweDtcblxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG5cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nLWNvbG9yLWJhc2Utc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3ZhcmlhYmxlcyc7XG5cbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC0jeyRuYW1lfS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtI3skbmFtZX0tbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSgpIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG5AbWl4aW4gZml4QW5jaG9yUG9zaXRpb24oJG9mZnNldDogMHB4KSB7XG4gICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3t2YXJpYWJsZXMuJGhlYWRlckhlaWdodH0pKTtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCN7JG9mZnNldH0gLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAje3ZhcmlhYmxlcy4kaGVhZGVySGVpZ2h0fSkpO1xufVxuXG5AbWl4aW4gcmVzZXQtbGluay1zdHlsZSgpIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgI2ZmZGI0ZDtcbiAgICB9XG59XG5cbkBtaXhpbiBmb2N1c2FibGUoJG9mZnNldDogMCwgJG1vZGU6ICdvdXRsaW5lJykge1xuICAgIEBpZiAkbW9kZSA9PSAnb3V0bGluZScge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1nLWNvbG9yLWxpbmUtZm9jdXMpO1xuICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6ICRvZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgJjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJG1vZGUgPT0gJ2JveC1zaGFkb3cnIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzKTtcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgIH1cbiAgICAgICAgJjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBsaW5rKCkge1xuICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtbGluayk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1nLWZvY3VzLWJvcmRlci1yYWRpdXMpO1xuXG4gICAgQGluY2x1ZGUgaXNsYW5kcy1mb2N1cygpO1xuXG4gICAgQGluY2x1ZGUgZm9jdXNhYmxlKDAsICdib3gtc2hhZG93Jyk7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcbiAgICB9XG59XG5cbkBtaXhpbiBoZWFkaW5nMSgpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMyk7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XG4gICAgfVxufVxuXG5AbWl4aW4gaGVhZGluZzIoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTEpO1xufVxuXG5AbWl4aW4gaGVhZGluZzMoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMik7XG59XG5cbkBtaXhpbiBoZWFkaW5nNCgpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0xKTtcbn1cblxuQG1peGluIGhlYWRpbmc1KCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcbn1cblxuQG1peGluIGhlYWRpbmc2KCkge1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcbn1cblxuQG1peGluIGNvbnRyaWJ1dG9ycy10ZXh0KCkge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbn1cblxuQG1peGluIHRleHQtYm9keS0xKCkge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktMS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xufVxuXG5AbWl4aW4gZGVza3RvcC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIGRlc2t0b3AtdGFibGV0LW9ubHkoKSB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykgLSAxKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gbW9iaWxlLW9ubHkoKSB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBncmF2aXR5LXVpLXRleHQtc2l6ZXMoJGRlbHRhKSB7XG4gICAgLS1nLXRleHQtYm9keS0xLWZvbnQtc2l6ZTogI3sxM3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQ6ICN7MThweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0yLWZvbnQtc2l6ZTogI3sxNXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTItbGluZS1oZWlnaHQ6ICN7MjBweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0zLWZvbnQtc2l6ZTogI3sxN3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTMtbGluZS1oZWlnaHQ6ICN7MjRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS1zaG9ydC1mb250LXNpemU6ICN7MTNweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY2FwdGlvbi0xLWZvbnQtc2l6ZTogI3s5cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNhcHRpb24tMi1mb250LXNpemU6ICN7MTFweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtaGVhZGVyLTEtZm9udC1zaXplOiAjezIwcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWhlYWRlci0yLWZvbnQtc2l6ZTogI3syNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1zdWJoZWFkZXItMS1mb250LXNpemU6ICN7MTNweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtc3ViaGVhZGVyLTItZm9udC1zaXplOiAjezE1cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LXN1YmhlYWRlci0zLWZvbnQtc2l6ZTogI3sxN3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTEtZm9udC1zaXplOiAjezI4cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktMi1mb250LXNpemU6ICN7MzJweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS0zLWZvbnQtc2l6ZTogI3s0MHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTQtZm9udC1zaXplOiAjezQ4cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtMS1mb250LXNpemU6ICN7MTJweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS0yLWZvbnQtc2l6ZTogI3sxNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLTMtZm9udC1zaXplOiAjezE2cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtaW5saW5lLTEtZm9udC1zaXplOiAjezEycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtaW5saW5lLTItZm9udC1zaXplOiAjezE0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtaW5saW5lLTMtZm9udC1zaXplOiAjezE2cHggKyAkZGVsdGF9O1xuXG4gICAgLS15Zm0tZm9udC1zaXplOiB2YXIoLS1nLXRleHQtYm9keS0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1saW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktMi1saW5lLWhlaWdodCk7XG4gICAgLS15Zm0tZm9udC1zaXplLWgyOiB2YXIoLS1nLXRleHQtaGVhZGVyLTItZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDM6IHZhcigtLWctdGV4dC1oZWFkZXItMS1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oNDogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0zLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWg1OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTItZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDY6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMS1mb250LXNpemUpO1xufVxuIl19 */", "@use 'sass:map';\n@use 'variables';\n\n@mixin text-size($name) {\n font-size: var(--g-text-#{$name}-font-size);\n line-height: var(--g-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n padding-top: calc(var(--dc-header-height, #{variables.$headerHeight}));\n margin-top: calc(#{$offset} - var(--dc-header-height, #{variables.$headerHeight}));\n}\n\n@mixin reset-link-style() {\n color: inherit;\n text-decoration: none;\n}\n\n@mixin islands-focus() {\n outline: none;\n\n .utilityfocus &:focus {\n outline: 2px solid #ffdb4d;\n }\n}\n\n@mixin focusable($offset: 0, $mode: 'outline') {\n @if $mode == 'outline' {\n &:focus {\n outline: 2px solid var(--g-color-line-focus);\n outline-offset: $offset;\n }\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n }\n\n @if $mode == 'box-shadow' {\n &:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-focus);\n outline: 0;\n }\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n}\n\n@mixin link() {\n color: var(--g-color-text-link);\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--g-focus-border-radius);\n\n @include islands-focus();\n\n @include focusable(0, 'box-shadow');\n\n &:hover,\n &:active {\n color: var(--g-color-text-link-hover);\n }\n}\n\n@mixin heading1() {\n font-weight: 500;\n\n @include text-size(display-3);\n\n @media (max-width: map.get(variables.$screenBreakpoints, 'md') - 1) {\n @include text-size(display-2);\n }\n}\n\n@mixin heading2() {\n font-weight: 500;\n\n @include text-size(display-1);\n}\n\n@mixin heading3() {\n font-weight: 500;\n\n @include text-size(header-2);\n}\n\n@mixin heading4() {\n font-weight: 500;\n\n @include text-size(header-1);\n}\n\n@mixin heading5() {\n font-weight: 500;\n\n @include text-size(body-3);\n}\n\n@mixin heading6() {\n font-weight: 400;\n\n @include text-size(body-3);\n}\n\n@mixin contributors-text() {\n font-size: 13px;\n font-weight: 400;\n margin-right: 5px;\n align-self: center;\n}\n\n@mixin text-body-1() {\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n font-weight: var(--g-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n @media (max-width: map.get(variables.$screenBreakpoints, 'md') - 1) {\n display: none;\n }\n}\n\n@mixin desktop-tablet-only() {\n @media (max-width: map.get(variables.$screenBreakpoints, 'sm') - 1) {\n display: none;\n }\n}\n\n@mixin mobile-tablet-only() {\n @media (min-width: map.get(variables.$screenBreakpoints, 'md')) {\n display: none;\n }\n}\n\n@mixin mobile-only() {\n @media (min-width: map.get(variables.$screenBreakpoints, 'sm')) {\n display: none;\n }\n}\n\n@mixin gravity-ui-text-sizes($delta) {\n --g-text-body-1-font-size: #{13px + $delta};\n --g-text-body-1-line-height: #{18px + $delta};\n --g-text-body-2-font-size: #{15px + $delta};\n --g-text-body-2-line-height: #{20px + $delta};\n --g-text-body-3-font-size: #{17px + $delta};\n --g-text-body-3-line-height: #{24px + $delta};\n --g-text-body-short-font-size: #{13px + $delta};\n --g-text-caption-1-font-size: #{9px + $delta};\n --g-text-caption-2-font-size: #{11px + $delta};\n --g-text-header-1-font-size: #{20px + $delta};\n --g-text-header-2-font-size: #{24px + $delta};\n --g-text-subheader-1-font-size: #{13px + $delta};\n --g-text-subheader-2-font-size: #{15px + $delta};\n --g-text-subheader-3-font-size: #{17px + $delta};\n --g-text-display-1-font-size: #{28px + $delta};\n --g-text-display-2-font-size: #{32px + $delta};\n --g-text-display-3-font-size: #{40px + $delta};\n --g-text-display-4-font-size: #{48px + $delta};\n --g-text-code-1-font-size: #{12px + $delta};\n --g-text-code-2-font-size: #{14px + $delta};\n --g-text-code-3-font-size: #{16px + $delta};\n --g-text-code-inline-1-font-size: #{12px + $delta};\n --g-text-code-inline-2-font-size: #{14px + $delta};\n --g-text-code-inline-3-font-size: #{16px + $delta};\n\n --yfm-font-size: var(--g-text-body-2-font-size);\n --yfm-font-line-height: var(--g-text-body-2-line-height);\n --yfm-font-size-h2: var(--g-text-header-2-font-size);\n --yfm-font-size-h3: var(--g-text-header-1-font-size);\n --yfm-font-size-h4: var(--g-text-subheader-3-font-size);\n --yfm-font-size-h5: var(--g-text-subheader-2-font-size);\n --yfm-font-size-h6: var(--g-text-subheader-1-font-size);\n}\n"],
|
|
5
|
-
"mappings": ";AAGA,CAAA;AAGI,oCAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,0CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,+BAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,qCAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;ACJJ;ADMI,CAAA,kBAAA,CARJ;AASQ,oCAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACA,0CAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACA,+BAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACA,qCAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;ACJR;ADOI,CAAA;AACI,YAAA;AACA,SAAA;ACLR;
|
|
3
|
+
"sources": ["../../../../src/components/SearchSuggest/index.scss", "../../../../src/components/SearchSuggest/%3Cinput css 4z-Y-k%3E", "../../../../src/styles/mixins.scss"],
|
|
4
|
+
"sourcesContent": ["@use '../../styles/variables';\n@use '../../styles/mixins';\n\n.dc-search-suggest {\n $block: &;\n\n --g-text-input-placeholder-color: rgba(0, 0, 0, 0.5);\n --g-text-input-placeholder-color-hover: rgba(0, 0, 0, 0.65);\n --g-text-input-border-color: rgba(0, 0, 0, 0.5);\n --g-text-input-border-color-hover: rgba(0, 0, 0, 0.65);\n\n .g-root_theme_dark & {\n --g-text-input-placeholder-color: rgba(255, 255, 255, 0.3);\n --g-text-input-placeholder-color-hover: rgba(255, 255, 255, 0.5);\n --g-text-input-border-color: rgba(255, 255, 255, 0.4);\n --g-text-input-border-color-hover: rgba(255, 255, 255, 0.5);\n }\n\n &__wrapper {\n position: relative;\n width: 100%;\n\n &_focused {\n > .dc-search-suggest,\n > .dc-search-suggest__close {\n position: relative;\n z-index: 101;\n }\n }\n }\n\n &__overlay {\n position: fixed;\n inset: 0;\n z-index: 100;\n opacity: 0.5;\n background: #000;\n }\n\n &__popup {\n z-index: 1002;\n }\n\n &__loader {\n display: flex;\n justify-content: center;\n padding: 10px;\n }\n\n &__list {\n box-sizing: border-box;\n display: flex;\n max-height: 60vh;\n overflow: hidden auto;\n\n &_empty {\n text-align: center;\n padding: 12px;\n word-break: break-word;\n }\n }\n\n &__close {\n flex: none;\n margin-left: 16px;\n }\n\n &__item {\n width: 100%;\n display: block;\n overflow: hidden;\n padding: 12px 20px;\n box-sizing: border-box;\n\n cursor: pointer;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n @include mixins.text-size(body-1);\n\n &-content {\n display: flex;\n gap: 8px;\n }\n\n &-main {\n flex: 1;\n min-width: 0;\n }\n\n &-hint {\n flex-shrink: 0;\n align-self: center;\n opacity: 0;\n color: var(--g-color-text-secondary);\n }\n\n &-title,\n &-description,\n &-breadcrumbs > * {\n display: block;\n overflow: hidden;\n\n text-overflow: ellipsis;\n }\n\n &-description {\n margin-top: 4px;\n\n color: var(--g-color-text-secondary);\n }\n\n &_type {\n &_page {\n padding-bottom: 9px;\n\n @include mixins.link();\n\n #{$block}__item {\n &-breadcrumbs {\n padding-top: 2px;\n\n color: var(--g-color-text-secondary);\n }\n }\n }\n\n &_service,\n &_marketplace {\n display: flex;\n\n padding-top: 9px;\n padding-bottom: 11px;\n\n #{$block}__item {\n &-logo {\n margin-right: 16px;\n padding: 3px 0 1px;\n\n text-align: center;\n }\n\n &-icon {\n width: 16px;\n height: var(--g-text-body-3-line-height);\n }\n\n &-text {\n min-width: 0;\n }\n\n &-title {\n padding: 3px 0 1px;\n }\n }\n }\n\n &_group {\n padding: 16px 20px 4px;\n\n color: var(--www-text-content-color);\n }\n\n &_link {\n display: flex;\n\n padding: 22px 20px;\n\n color: var(--g-color-text-link);\n border-top: 1px solid var(--g-color-line-generic);\n }\n\n &_delimiter {\n height: 1px;\n padding: 0;\n\n background-color: var(--g-color-line-generic);\n }\n\n &_action {\n &:hover,\n &:focus-visible {\n background-color: var(--g-color-base-simple-hover);\n\n #{$block}__item-hint {\n opacity: 1;\n }\n }\n }\n }\n\n h5 {\n margin: 0;\n font-weight: 700;\n font-size: 16px;\n line-height: 25px;\n }\n\n em {\n position: relative;\n\n font-style: inherit;\n\n &::before {\n position: absolute;\n z-index: -1;\n top: -3px;\n bottom: -1px;\n\n width: 100%;\n\n content: '';\n\n background-color: var(--g-color-base-selection);\n }\n }\n }\n\n // popup renders via portal outside .dc-search-suggest,\n // so these selectors must not have it as an ancestor\n @at-root {\n .g-list__item_active #{$block}__item-hint,\n #{$block}__item:hover #{$block}__item-hint,\n #{$block}__item:focus-within #{$block}__item-hint {\n opacity: 1;\n }\n }\n}\n", ".dc-search-suggest {\n --g-text-input-placeholder-color: rgba(0, 0, 0, 0.5);\n --g-text-input-placeholder-color-hover: rgba(0, 0, 0, 0.65);\n --g-text-input-border-color: rgba(0, 0, 0, 0.5);\n --g-text-input-border-color-hover: rgba(0, 0, 0, 0.65);\n}\n.g-root_theme_dark .dc-search-suggest {\n --g-text-input-placeholder-color: rgba(255, 255, 255, 0.3);\n --g-text-input-placeholder-color-hover: rgba(255, 255, 255, 0.5);\n --g-text-input-border-color: rgba(255, 255, 255, 0.4);\n --g-text-input-border-color-hover: rgba(255, 255, 255, 0.5);\n}\n.dc-search-suggest__wrapper {\n position: relative;\n width: 100%;\n}\n.dc-search-suggest__wrapper_focused > .dc-search-suggest,\n.dc-search-suggest__wrapper_focused > .dc-search-suggest__close {\n position: relative;\n z-index: 101;\n}\n.dc-search-suggest__overlay {\n position: fixed;\n inset: 0;\n z-index: 100;\n opacity: 0.5;\n background: #000;\n}\n.dc-search-suggest__popup {\n z-index: 1002;\n}\n.dc-search-suggest__loader {\n display: flex;\n justify-content: center;\n padding: 10px;\n}\n.dc-search-suggest__list {\n box-sizing: border-box;\n display: flex;\n max-height: 60vh;\n overflow: hidden auto;\n}\n.dc-search-suggest__list_empty {\n text-align: center;\n padding: 12px;\n word-break: break-word;\n}\n.dc-search-suggest__close {\n flex: none;\n margin-left: 16px;\n}\n.dc-search-suggest__item {\n width: 100%;\n display: block;\n overflow: hidden;\n padding: 12px 20px;\n box-sizing: border-box;\n cursor: pointer;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n.dc-search-suggest__item-content {\n display: flex;\n gap: 8px;\n}\n.dc-search-suggest__item-main {\n flex: 1;\n min-width: 0;\n}\n.dc-search-suggest__item-hint {\n flex-shrink: 0;\n align-self: center;\n opacity: 0;\n color: var(--g-color-text-secondary);\n}\n.dc-search-suggest__item-title, .dc-search-suggest__item-description, .dc-search-suggest__item-breadcrumbs > * {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dc-search-suggest__item-description {\n margin-top: 4px;\n color: var(--g-color-text-secondary);\n}\n.dc-search-suggest__item_type_page {\n padding-bottom: 9px;\n color: var(--g-color-text-link);\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--g-focus-border-radius);\n outline: none;\n}\n.utilityfocus .dc-search-suggest__item_type_page:focus {\n outline: 2px solid #ffdb4d;\n}\n.dc-search-suggest__item_type_page:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-focus);\n outline: 0;\n}\n.dc-search-suggest__item_type_page:focus:not(:focus-visible) {\n box-shadow: none;\n}\n.dc-search-suggest__item_type_page:hover, .dc-search-suggest__item_type_page:active {\n color: var(--g-color-text-link-hover);\n}\n.dc-search-suggest__item_type_page .dc-search-suggest__item-breadcrumbs {\n padding-top: 2px;\n color: var(--g-color-text-secondary);\n}\n.dc-search-suggest__item_type_service, .dc-search-suggest__item_type_marketplace {\n display: flex;\n padding-top: 9px;\n padding-bottom: 11px;\n}\n.dc-search-suggest__item_type_service .dc-search-suggest__item-logo, .dc-search-suggest__item_type_marketplace .dc-search-suggest__item-logo {\n margin-right: 16px;\n padding: 3px 0 1px;\n text-align: center;\n}\n.dc-search-suggest__item_type_service .dc-search-suggest__item-icon, .dc-search-suggest__item_type_marketplace .dc-search-suggest__item-icon {\n width: 16px;\n height: var(--g-text-body-3-line-height);\n}\n.dc-search-suggest__item_type_service .dc-search-suggest__item-text, .dc-search-suggest__item_type_marketplace .dc-search-suggest__item-text {\n min-width: 0;\n}\n.dc-search-suggest__item_type_service .dc-search-suggest__item-title, .dc-search-suggest__item_type_marketplace .dc-search-suggest__item-title {\n padding: 3px 0 1px;\n}\n.dc-search-suggest__item_type_group {\n padding: 16px 20px 4px;\n color: var(--www-text-content-color);\n}\n.dc-search-suggest__item_type_link {\n display: flex;\n padding: 22px 20px;\n color: var(--g-color-text-link);\n border-top: 1px solid var(--g-color-line-generic);\n}\n.dc-search-suggest__item_type_delimiter {\n height: 1px;\n padding: 0;\n background-color: var(--g-color-line-generic);\n}\n.dc-search-suggest__item_type_action:hover, .dc-search-suggest__item_type_action:focus-visible {\n background-color: var(--g-color-base-simple-hover);\n}\n.dc-search-suggest__item_type_action:hover .dc-search-suggest__item-hint, .dc-search-suggest__item_type_action:focus-visible .dc-search-suggest__item-hint {\n opacity: 1;\n}\n.dc-search-suggest__item h5 {\n margin: 0;\n font-weight: 700;\n font-size: 16px;\n line-height: 25px;\n}\n.dc-search-suggest__item em {\n position: relative;\n font-style: inherit;\n}\n.dc-search-suggest__item em::before {\n position: absolute;\n z-index: -1;\n top: -3px;\n bottom: -1px;\n width: 100%;\n content: \"\";\n background-color: var(--g-color-base-selection);\n}\n.g-list__item_active .dc-search-suggest__item-hint,\n.dc-search-suggest__item:hover .dc-search-suggest__item-hint,\n.dc-search-suggest__item:focus-within .dc-search-suggest__item-hint {\n opacity: 1;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1NlYXJjaFN1Z2dlc3QiLCJzb3VyY2VzIjpbImluZGV4LnNjc3MiLCIuLi8uLi9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFHSTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSTtBQUFBO0VBRUk7RUFDQTs7QUFLWjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBOztBQUlSO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUN4RUo7RUFDQTs7QUQyRUk7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBR0k7RUFDQTtFQUVBOztBQUdKO0VBQ0k7RUFFQTs7QUFJQTtFQUNJO0VDM0RaO0VBQ0E7RUFDQTtFQUNBO0VBakNBOztBQUVBO0VBQ0k7O0FBZ0JBO0VBQ0k7RUFDQTs7QUFFSjtFQUNJOztBQWVSO0VBRUk7O0FEcURZO0VBQ0k7RUFFQTs7QUFLWjtFQUVJO0VBRUE7RUFDQTs7QUFHSTtFQUNJO0VBQ0E7RUFFQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOztBQUtaO0VBQ0k7RUFFQTs7QUFHSjtFQUNJO0VBRUE7RUFFQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUVBOztBQUlBO0VBRUk7O0FBRUE7RUFDSTs7QUFNaEI7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBRUE7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBRUE7RUFFQTs7QUFRUjtBQUFBO0FBQUE7RUFHSSIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL3N0eWxlcy92YXJpYWJsZXMnO1xuQHVzZSAnLi4vLi4vc3R5bGVzL21peGlucyc7XG5cbi5kYy1zZWFyY2gtc3VnZ2VzdCB7XG4gICAgJGJsb2NrOiAmO1xuXG4gICAgLS1nLXRleHQtaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAtLWctdGV4dC1pbnB1dC1wbGFjZWhvbGRlci1jb2xvci1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjY1KTtcbiAgICAtLWctdGV4dC1pbnB1dC1ib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAtLWctdGV4dC1pbnB1dC1ib3JkZXItY29sb3ItaG92ZXI6IHJnYmEoMCwgMCwgMCwgMC42NSk7XG5cbiAgICAuZy1yb290X3RoZW1lX2RhcmsgJiB7XG4gICAgICAgIC0tZy10ZXh0LWlucHV0LXBsYWNlaG9sZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgICAgIC0tZy10ZXh0LWlucHV0LXBsYWNlaG9sZGVyLWNvbG9yLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgICAgIC0tZy10ZXh0LWlucHV0LWJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuICAgICAgICAtLWctdGV4dC1pbnB1dC1ib3JkZXItY29sb3ItaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICB9XG5cbiAgICAmX193cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAmX2ZvY3VzZWQge1xuICAgICAgICAgICAgPiAuZGMtc2VhcmNoLXN1Z2dlc3QsXG4gICAgICAgICAgICA+IC5kYy1zZWFyY2gtc3VnZ2VzdF9fY2xvc2Uge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAxMDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19vdmVybGF5IHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogMTAwO1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgfVxuXG4gICAgJl9fcG9wdXAge1xuICAgICAgICB6LWluZGV4OiAxMDAyO1xuICAgIH1cblxuICAgICZfX2xvYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgIH1cblxuICAgICZfX2xpc3Qge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBtYXgtaGVpZ2h0OiA2MHZoO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuIGF1dG87XG5cbiAgICAgICAgJl9lbXB0eSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2Nsb3NlIHtcbiAgICAgICAgZmxleDogbm9uZTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gICAgfVxuXG4gICAgJl9faXRlbSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgcGFkZGluZzogMTJweCAyMHB4O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbiAgICAgICAgQGluY2x1ZGUgbWl4aW5zLnRleHQtc2l6ZShib2R5LTEpO1xuXG4gICAgICAgICYtY29udGVudCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmLW1haW4ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtaGludCB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLXRpdGxlLFxuICAgICAgICAmLWRlc2NyaXB0aW9uLFxuICAgICAgICAmLWJyZWFkY3J1bWJzID4gKiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB9XG5cbiAgICAgICAgJi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG5cbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfdHlwZSB7XG4gICAgICAgICAgICAmX3BhZ2Uge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA5cHg7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtaXhpbnMubGluaygpO1xuXG4gICAgICAgICAgICAgICAgI3skYmxvY2t9X19pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgJi1icmVhZGNydW1icyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMnB4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfc2VydmljZSxcbiAgICAgICAgICAgICZfbWFya2V0cGxhY2Uge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogOXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMXB4O1xuXG4gICAgICAgICAgICAgICAgI3skYmxvY2t9X19pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgJi1sb2dvIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweCAwIDFweDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJi1pY29uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS0zLWxpbmUtaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICYtdGV4dCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmLXRpdGxlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweCAwIDFweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9ncm91cCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTZweCAyMHB4IDRweDtcblxuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13d3ctdGV4dC1jb250ZW50LWNvbG9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9saW5rIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMjJweCAyMHB4O1xuXG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rKTtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tZy1jb2xvci1saW5lLWdlbmVyaWMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX2RlbGltaXRlciB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWctY29sb3ItbGluZS1nZW5lcmljKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9hY3Rpb24ge1xuICAgICAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZy1jb2xvci1iYXNlLXNpbXBsZS1ob3Zlcik7XG5cbiAgICAgICAgICAgICAgICAgICAgI3skYmxvY2t9X19pdGVtLWhpbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGg1IHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGVtIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgZm9udC1zdHlsZTogaW5oZXJpdDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgICAgICAgICAgdG9wOiAtM3B4O1xuICAgICAgICAgICAgICAgIGJvdHRvbTogLTFweDtcblxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG5cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nLWNvbG9yLWJhc2Utc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHBvcHVwIHJlbmRlcnMgdmlhIHBvcnRhbCBvdXRzaWRlIC5kYy1zZWFyY2gtc3VnZ2VzdCxcbiAgICAvLyBzbyB0aGVzZSBzZWxlY3RvcnMgbXVzdCBub3QgaGF2ZSBpdCBhcyBhbiBhbmNlc3RvclxuICAgIEBhdC1yb290IHtcbiAgICAgICAgLmctbGlzdF9faXRlbV9hY3RpdmUgI3skYmxvY2t9X19pdGVtLWhpbnQsXG4gICAgICAgICN7JGJsb2NrfV9faXRlbTpob3ZlciAjeyRibG9ja31fX2l0ZW0taGludCxcbiAgICAgICAgI3skYmxvY2t9X19pdGVtOmZvY3VzLXdpdGhpbiAjeyRibG9ja31fX2l0ZW0taGludCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAndmFyaWFibGVzJztcblxuQG1peGluIHRleHQtc2l6ZSgkbmFtZSkge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC0jeyRuYW1lfS1saW5lLWhlaWdodCk7XG59XG5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlKCkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbkBtaXhpbiBmaXhBbmNob3JQb3NpdGlvbigkb2Zmc2V0OiAwcHgpIHtcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAje3ZhcmlhYmxlcy4kaGVhZGVySGVpZ2h0fSkpO1xuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7dmFyaWFibGVzLiRoZWFkZXJIZWlnaHR9KSk7XG59XG5cbkBtaXhpbiByZXNldC1saW5rLXN0eWxlKCkge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuQG1peGluIGlzbGFuZHMtZm9jdXMoKSB7XG4gICAgb3V0bGluZTogbm9uZTtcblxuICAgIC51dGlsaXR5Zm9jdXMgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAjZmZkYjRkO1xuICAgIH1cbn1cblxuQG1peGluIGZvY3VzYWJsZSgkb2Zmc2V0OiAwLCAkbW9kZTogJ291dGxpbmUnKSB7XG4gICAgQGlmICRtb2RlID09ICdvdXRsaW5lJyB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWctY29sb3ItbGluZS1mb2N1cyk7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogJG9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkbW9kZSA9PSAnYm94LXNoYWRvdycge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1nLWNvbG9yLWxpbmUtZm9jdXMpO1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIGxpbmsoKSB7XG4gICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWctZm9jdXMtYm9yZGVyLXJhZGl1cyk7XG5cbiAgICBAaW5jbHVkZSBpc2xhbmRzLWZvY3VzKCk7XG5cbiAgICBAaW5jbHVkZSBmb2N1c2FibGUoMCwgJ2JveC1zaGFkb3cnKTtcblxuICAgICY6aG92ZXIsXG4gICAgJjphY3RpdmUge1xuICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LWxpbmstaG92ZXIpO1xuICAgIH1cbn1cblxuQG1peGluIGhlYWRpbmcxKCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0zKTtcblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0yKTtcbiAgICB9XG59XG5cbkBtaXhpbiBoZWFkaW5nMigpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMSk7XG59XG5cbkBtaXhpbiBoZWFkaW5nMygpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0yKTtcbn1cblxuQG1peGluIGhlYWRpbmc0KCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTEpO1xufVxuXG5AbWl4aW4gaGVhZGluZzUoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xufVxuXG5AbWl4aW4gaGVhZGluZzYoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xufVxuXG5AbWl4aW4gY29udHJpYnV0b3JzLXRleHQoKSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS1mb250LXdlaWdodCk7XG59XG5cbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gZGVza3RvcC10YWJsZXQtb25seSgpIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSAtIDEpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBtb2JpbGUtdGFibGV0LW9ubHkoKSB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIGdyYXZpdHktdWktdGV4dC1zaXplcygkZGVsdGEpIHtcbiAgICAtLWctdGV4dC1ib2R5LTEtZm9udC1zaXplOiAjezEzcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMS1saW5lLWhlaWdodDogI3sxOHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTItZm9udC1zaXplOiAjezE1cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMi1saW5lLWhlaWdodDogI3syMHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTMtZm9udC1zaXplOiAjezE3cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMy1saW5lLWhlaWdodDogI3syNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZTogI3sxM3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jYXB0aW9uLTEtZm9udC1zaXplOiAjezlweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY2FwdGlvbi0yLWZvbnQtc2l6ZTogI3sxMXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1oZWFkZXItMS1mb250LXNpemU6ICN7MjBweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtaGVhZGVyLTItZm9udC1zaXplOiAjezI0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LXN1YmhlYWRlci0xLWZvbnQtc2l6ZTogI3sxM3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1zdWJoZWFkZXItMi1mb250LXNpemU6ICN7MTVweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtc3ViaGVhZGVyLTMtZm9udC1zaXplOiAjezE3cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktMS1mb250LXNpemU6ICN7MjhweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS0yLWZvbnQtc2l6ZTogI3szMnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTMtZm9udC1zaXplOiAjezQwcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktNC1mb250LXNpemU6ICN7NDhweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS0xLWZvbnQtc2l6ZTogI3sxMnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLTItZm9udC1zaXplOiAjezE0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtMy1mb250LXNpemU6ICN7MTZweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS1pbmxpbmUtMS1mb250LXNpemU6ICN7MTJweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS1pbmxpbmUtMi1mb250LXNpemU6ICN7MTRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS1pbmxpbmUtMy1mb250LXNpemU6ICN7MTZweCArICRkZWx0YX07XG5cbiAgICAtLXlmbS1mb250LXNpemU6IHZhcigtLWctdGV4dC1ib2R5LTItZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LWxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0KTtcbiAgICAtLXlmbS1mb250LXNpemUtaDI6IHZhcigtLWctdGV4dC1oZWFkZXItMi1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oMzogdmFyKC0tZy10ZXh0LWhlYWRlci0xLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWg0OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTMtZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDU6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMi1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oNjogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0xLWZvbnQtc2l6ZSk7XG59XG4iXX0= */", "@use 'sass:map';\n@use 'variables';\n\n@mixin text-size($name) {\n font-size: var(--g-text-#{$name}-font-size);\n line-height: var(--g-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n padding-top: calc(var(--dc-header-height, #{variables.$headerHeight}));\n margin-top: calc(#{$offset} - var(--dc-header-height, #{variables.$headerHeight}));\n}\n\n@mixin reset-link-style() {\n color: inherit;\n text-decoration: none;\n}\n\n@mixin islands-focus() {\n outline: none;\n\n .utilityfocus &:focus {\n outline: 2px solid #ffdb4d;\n }\n}\n\n@mixin focusable($offset: 0, $mode: 'outline') {\n @if $mode == 'outline' {\n &:focus {\n outline: 2px solid var(--g-color-line-focus);\n outline-offset: $offset;\n }\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n }\n\n @if $mode == 'box-shadow' {\n &:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-focus);\n outline: 0;\n }\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n}\n\n@mixin link() {\n color: var(--g-color-text-link);\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--g-focus-border-radius);\n\n @include islands-focus();\n\n @include focusable(0, 'box-shadow');\n\n &:hover,\n &:active {\n color: var(--g-color-text-link-hover);\n }\n}\n\n@mixin heading1() {\n font-weight: 500;\n\n @include text-size(display-3);\n\n @media (max-width: map.get(variables.$screenBreakpoints, 'md') - 1) {\n @include text-size(display-2);\n }\n}\n\n@mixin heading2() {\n font-weight: 500;\n\n @include text-size(display-1);\n}\n\n@mixin heading3() {\n font-weight: 500;\n\n @include text-size(header-2);\n}\n\n@mixin heading4() {\n font-weight: 500;\n\n @include text-size(header-1);\n}\n\n@mixin heading5() {\n font-weight: 500;\n\n @include text-size(body-3);\n}\n\n@mixin heading6() {\n font-weight: 400;\n\n @include text-size(body-3);\n}\n\n@mixin contributors-text() {\n font-size: 13px;\n font-weight: 400;\n margin-right: 5px;\n align-self: center;\n}\n\n@mixin text-body-1() {\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n font-weight: var(--g-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n @media (max-width: map.get(variables.$screenBreakpoints, 'md') - 1) {\n display: none;\n }\n}\n\n@mixin desktop-tablet-only() {\n @media (max-width: map.get(variables.$screenBreakpoints, 'sm') - 1) {\n display: none;\n }\n}\n\n@mixin mobile-tablet-only() {\n @media (min-width: map.get(variables.$screenBreakpoints, 'md')) {\n display: none;\n }\n}\n\n@mixin mobile-only() {\n @media (min-width: map.get(variables.$screenBreakpoints, 'sm')) {\n display: none;\n }\n}\n\n@mixin gravity-ui-text-sizes($delta) {\n --g-text-body-1-font-size: #{13px + $delta};\n --g-text-body-1-line-height: #{18px + $delta};\n --g-text-body-2-font-size: #{15px + $delta};\n --g-text-body-2-line-height: #{20px + $delta};\n --g-text-body-3-font-size: #{17px + $delta};\n --g-text-body-3-line-height: #{24px + $delta};\n --g-text-body-short-font-size: #{13px + $delta};\n --g-text-caption-1-font-size: #{9px + $delta};\n --g-text-caption-2-font-size: #{11px + $delta};\n --g-text-header-1-font-size: #{20px + $delta};\n --g-text-header-2-font-size: #{24px + $delta};\n --g-text-subheader-1-font-size: #{13px + $delta};\n --g-text-subheader-2-font-size: #{15px + $delta};\n --g-text-subheader-3-font-size: #{17px + $delta};\n --g-text-display-1-font-size: #{28px + $delta};\n --g-text-display-2-font-size: #{32px + $delta};\n --g-text-display-3-font-size: #{40px + $delta};\n --g-text-display-4-font-size: #{48px + $delta};\n --g-text-code-1-font-size: #{12px + $delta};\n --g-text-code-2-font-size: #{14px + $delta};\n --g-text-code-3-font-size: #{16px + $delta};\n --g-text-code-inline-1-font-size: #{12px + $delta};\n --g-text-code-inline-2-font-size: #{14px + $delta};\n --g-text-code-inline-3-font-size: #{16px + $delta};\n\n --yfm-font-size: var(--g-text-body-2-font-size);\n --yfm-font-line-height: var(--g-text-body-2-line-height);\n --yfm-font-size-h2: var(--g-text-header-2-font-size);\n --yfm-font-size-h3: var(--g-text-header-1-font-size);\n --yfm-font-size-h4: var(--g-text-subheader-3-font-size);\n --yfm-font-size-h5: var(--g-text-subheader-2-font-size);\n --yfm-font-size-h6: var(--g-text-subheader-1-font-size);\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,CAAA;AAGI,oCAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,0CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,+BAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,qCAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;ACJJ;ADMI,CAAA,kBAAA,CARJ;AASQ,oCAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACA,0CAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACA,+BAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACA,qCAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;ACJR;ADOI,CAAA;AACI,YAAA;AACA,SAAA;ACLR;ADQY,CAAA,mCAAA,EAAA,CApBZ;CAoBY;AAEI,YAAA;AACA,WAAA;ACNhB;ADWI,CAAA;AACI,YAAA;AACA,OAAA;AAAA,SAAA;AAAA,UAAA;AAAA,QAAA;AACA,WAAA;AACA,WAAA;AACA,cAAA;ACTR;ADYI,CAAA;AACI,WAAA;ACVR;ADaI,CAAA;AACI,WAAA;AACA,mBAAA;AACA,WAAA;ACXR;ADcI,CAAA;AACI,cAAA;AACA,WAAA;AACA,cAAA;AACA,cAAA;AAAA,cAAA;AAAA,YAAA,OAAA;ACZR;ADcQ,CAAA;AACI,cAAA;AACA,WAAA;AACA,cAAA;ACZZ;ADgBI;AACI,QAAA;AACA,eAAA;ACdR;ADiBI,CAAA;AACI,SAAA;AACA,WAAA;AACA,YAAA;AACA,WAAA,KAAA;AACA,cAAA;AAEA,UAAA;AACA,eAAA;AACA,iBAAA;AExEJ,aAAA,IAAA;AACA,eAAA,IAAA;ADyDJ;ADkBQ,CAAA;AACI,WAAA;AACA,OAAA;AChBZ;ADmBQ,CAAA;AACI,QAAA;AACA,aAAA;ACjBZ;ADoBQ,CAAA;AACI,eAAA;AACA,cAAA;AACA,WAAA;AACA,SAAA,IAAA;AClBZ;ADqBQ,CAAA;AAAA,CAAA;AAAA,CAAA,oCAAA,EAAA;AAGI,WAAA;AACA,YAAA;AAEA,iBAAA;ACtBZ;ADyBQ,CATA;AAUI,cAAA;AAEA,SAAA,IAAA;ACxBZ;AD4BY,CAAA;AACI,kBAAA;AE3DZ,SAAA,IAAA;AACA,2BAAA;AAAA,mBAAA;AACA,UAAA;AACA,iBAAA,IAAA;AAjCA,WAAA;ADoEJ;AClEI,CAAA,aAAA,CFsFQ,iCEtFR;AACI,WAAA,IAAA,MAAA;ADoER;ACpDQ,CFqEI,iCErEJ;AACI,cAAA,EAAA,EAAA,EAAA,IAAA,IAAA;AACA,WAAA;ADsDZ;ACpDQ,CFiEI,iCEjEJ,MAAA,KAAA;AACI,cAAA;ADsDZ;ACvCI,CFiDQ,iCEjDR;AAAA,CFiDQ,iCEjDR;AAEI,SAAA,IAAA;ADwCR;ADaoB,CANR,kCAMQ,CAtBZ;AAuBgB,eAAA;AAEA,SAAA,IAAA;ACZxB;ADiBY,CAAA;AAAA,CAAA;AAEI,WAAA;AAEA,eAAA;AACA,kBAAA;ACjBhB;ADoBoB,CARR,qCAQQ,CAAA;AAAA,CARR,yCAQQ,CAAA;AACI,gBAAA;AACA,WAAA,IAAA,EAAA;AAEA,cAAA;ACnBxB;ADsBoB,CAfR,qCAeQ,CAAA;AAAA,CAfR,yCAeQ,CAAA;AACI,SAAA;AACA,UAAA,IAAA;ACpBxB;ADuBoB,CApBR,qCAoBQ,CAAA;AAAA,CApBR,yCAoBQ,CAAA;AACI,aAAA;ACrBxB;ADwBoB,CAxBR,qCAwBQ,CAtDZ;AAsDY,CAxBR,yCAwBQ,CAtDZ;AAuDgB,WAAA,IAAA,EAAA;ACtBxB;AD2BY,CAAA;AACI,WAAA,KAAA,KAAA;AAEA,SAAA,IAAA;AC1BhB;AD6BY,CAAA;AACI,WAAA;AAEA,WAAA,KAAA;AAEA,SAAA,IAAA;AACA,cAAA,IAAA,MAAA,IAAA;AC7BhB;ADgCY,CAAA;AACI,UAAA;AACA,WAAA;AAEA,oBAAA,IAAA;AC/BhB;ADmCgB,CAAA,mCAAA;AAAA,CAAA,mCAAA;AAEI,oBAAA,IAAA;AClCpB;ADoCoB,CAJJ,mCAII,OAAA,CA9FZ;AA8FY,CAJJ,mCAII,eAAA,CA9FZ;AA+FgB,WAAA;AClCxB;ADwCQ,CA5HJ,wBA4HI;AACI,UAAA;AACA,eAAA;AACA,aAAA;AACA,eAAA;ACtCZ;ADyCQ,CAnIJ,wBAmII;AACI,YAAA;AAEA,cAAA;ACxCZ;AD0CY,CAxIR,wBAwIQ,EAAA;AACI,YAAA;AACA,WAAA;AACA,OAAA;AACA,UAAA;AAEA,SAAA;AAEA,WAAA;AAEA,oBAAA,IAAA;AC3ChB;ADmDQ,CAAA,oBAAA,CAnIA;CAvBJ,+BAuBI;CAvBJ,sCAuBI;AAsII,WAAA;ACjDZ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { SyntheticEvent } from 'react';
|
|
2
2
|
import type { ISearchProvider } from '../../models';
|
|
3
|
-
import type { SearchSuggestItem, SearchSuggestLinkableItem, SearchSuggestPageItem } from './types';
|
|
4
3
|
import React from 'react';
|
|
5
4
|
import './index.scss';
|
|
6
|
-
export type { SearchSuggestItem, SearchSuggestLinkableItem, SearchSuggestPageItem };
|
|
5
|
+
export type { SearchSuggestActionItem, SearchSuggestItem, SearchSuggestLinkableItem, SearchSuggestPageItem, } from './types';
|
|
6
|
+
export { SuggestItemType } from './types';
|
|
7
7
|
export interface SearchSuggestProps {
|
|
8
8
|
provider: ISearchProvider;
|
|
9
9
|
placeholder?: string;
|
|
@@ -12,8 +12,14 @@ export interface SearchSuggestProps {
|
|
|
12
12
|
className?: string;
|
|
13
13
|
onFocus?: (event: SyntheticEvent) => void;
|
|
14
14
|
onBlur?: (event: SyntheticEvent) => void;
|
|
15
|
+
startContent?: React.ReactNode;
|
|
15
16
|
endContent?: React.ReactNode;
|
|
16
17
|
closeButton?: boolean;
|
|
18
|
+
withAllResults?: boolean;
|
|
19
|
+
focusFirstSearchResult?: boolean;
|
|
20
|
+
hasClear?: boolean;
|
|
21
|
+
withFocusOverlay?: boolean;
|
|
22
|
+
emptyState?: React.ReactNode;
|
|
17
23
|
}
|
|
18
24
|
export interface SearchSuggestApi {
|
|
19
25
|
open(): void;
|
|
@@ -34,11 +34,13 @@ import block from "bem-cn-lite";
|
|
|
34
34
|
import uniqueId from "lodash/uniqueId";
|
|
35
35
|
import { CommonAnalyticsEvent, useAnalytics } from "../../shared/libs/analytics";
|
|
36
36
|
import { useTranslation, useVirtualElementRef } from "../../hooks";
|
|
37
|
+
import { SuggestItemType } from "./types";
|
|
37
38
|
import { SearchInput } from "./SearchInput";
|
|
38
39
|
import { Suggest } from "./Suggest";
|
|
39
40
|
import { SuggestItem } from "./SuggestItem";
|
|
40
41
|
import { useFocus } from "./useFocus";
|
|
41
42
|
import "./index.css";
|
|
43
|
+
import { SuggestItemType as SuggestItemType2 } from "./types";
|
|
42
44
|
var b = block("dc-search-suggest");
|
|
43
45
|
var MIMIC_PC_CONTROL = "pc-control pc-control_size_l pc-control_theme_primary";
|
|
44
46
|
function CloseButton({ onClick, className }) {
|
|
@@ -62,9 +64,15 @@ var SearchSuggest = forwardRef((props, api) => {
|
|
|
62
64
|
classNameContainer,
|
|
63
65
|
classNameClose,
|
|
64
66
|
placeholder = t("search_placeholder"),
|
|
67
|
+
startContent,
|
|
65
68
|
endContent,
|
|
66
69
|
closeButton,
|
|
67
|
-
onBlur
|
|
70
|
+
onBlur,
|
|
71
|
+
withAllResults = true,
|
|
72
|
+
focusFirstSearchResult = false,
|
|
73
|
+
hasClear = false,
|
|
74
|
+
withFocusOverlay = false,
|
|
75
|
+
emptyState
|
|
68
76
|
} = props;
|
|
69
77
|
const analytics = useAnalytics();
|
|
70
78
|
const href = useRef(null);
|
|
@@ -87,13 +95,13 @@ var SearchSuggest = forwardRef((props, api) => {
|
|
|
87
95
|
const page = provider.link(query);
|
|
88
96
|
const onKeyDown = useCallback(
|
|
89
97
|
(event) => {
|
|
90
|
-
if (event.key === "Enter" && active === void 0 && page) {
|
|
98
|
+
if (event.key === "Enter" && withAllResults && !focusFirstSearchResult && active === void 0 && page) {
|
|
91
99
|
submitItem(page);
|
|
92
100
|
} else if (suggest.current) {
|
|
93
101
|
suggest.current.onKeyDown(event);
|
|
94
102
|
}
|
|
95
103
|
},
|
|
96
|
-
[suggest, active, submitItem, page]
|
|
104
|
+
[suggest, active, submitItem, page, withAllResults, focusFirstSearchResult]
|
|
97
105
|
);
|
|
98
106
|
const open = useCallback(() => {
|
|
99
107
|
setFocused(true);
|
|
@@ -109,6 +117,10 @@ var SearchSuggest = forwardRef((props, api) => {
|
|
|
109
117
|
if (!fromKeyboard) {
|
|
110
118
|
return;
|
|
111
119
|
}
|
|
120
|
+
if (item.type === SuggestItemType.Action) {
|
|
121
|
+
item.onClick();
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
112
124
|
submitItem(item.link);
|
|
113
125
|
},
|
|
114
126
|
[submitItem]
|
|
@@ -136,7 +148,8 @@ var SearchSuggest = forwardRef((props, api) => {
|
|
|
136
148
|
};
|
|
137
149
|
}, [analytics, focused, watch]);
|
|
138
150
|
useImperativeHandle(api, () => ({ open, close }), [open, close]);
|
|
139
|
-
|
|
151
|
+
const wrapperClassName = [b("wrapper", { focused }), classNameContainer].filter(Boolean).join(" ");
|
|
152
|
+
return /* @__PURE__ */ React.createElement("div", { className: wrapperClassName }, withFocusOverlay && focused && /* @__PURE__ */ React.createElement("div", { className: b("overlay"), onClick: onOutsideClick }), /* @__PURE__ */ React.createElement("a", { ref: href, href: "#", hidden: true, "aria-hidden": true }), /* @__PURE__ */ React.createElement(
|
|
140
153
|
SearchInput,
|
|
141
154
|
__spreadProps(__spreadValues({}, handlers), {
|
|
142
155
|
ref: input,
|
|
@@ -148,12 +161,14 @@ var SearchSuggest = forwardRef((props, api) => {
|
|
|
148
161
|
onKeyDown,
|
|
149
162
|
autoFocus: focused,
|
|
150
163
|
placeholder,
|
|
164
|
+
startContent,
|
|
151
165
|
endContent: !focused && endContent,
|
|
152
166
|
controlProps: {
|
|
153
167
|
"aria-controls": `dc-popup-${id}`,
|
|
154
168
|
"aria-expanded": Boolean(input.current && focused),
|
|
155
169
|
"aria-activedescendant": active === void 0 ? void 0 : `dc-${id}-list-item-${active}`
|
|
156
|
-
}
|
|
170
|
+
},
|
|
171
|
+
hasClear
|
|
157
172
|
})
|
|
158
173
|
), closeButton && focused && /* @__PURE__ */ React.createElement(CloseButton, { onClick: onClose, className: classNameClose }), input.current && /* @__PURE__ */ React.createElement(
|
|
159
174
|
Popup,
|
|
@@ -162,7 +177,7 @@ var SearchSuggest = forwardRef((props, api) => {
|
|
|
162
177
|
onOutsideClick,
|
|
163
178
|
id: `dc-popup-${id}`,
|
|
164
179
|
className: b("popup"),
|
|
165
|
-
style: { width: box.width },
|
|
180
|
+
style: { width: box.width, zIndex: 1002 },
|
|
166
181
|
anchorRef: box,
|
|
167
182
|
strategy: "fixed"
|
|
168
183
|
},
|
|
@@ -173,15 +188,19 @@ var SearchSuggest = forwardRef((props, api) => {
|
|
|
173
188
|
id: `dc-${id}-list`,
|
|
174
189
|
query,
|
|
175
190
|
provider,
|
|
191
|
+
withAllResults,
|
|
192
|
+
activeItemIndex: focusFirstSearchResult ? active != null ? active : 0 : active,
|
|
176
193
|
renderItem: SuggestItem,
|
|
177
194
|
onItemClick: onSubmit,
|
|
178
|
-
onChangeActive: setActive
|
|
195
|
+
onChangeActive: setActive,
|
|
196
|
+
emptyState
|
|
179
197
|
}
|
|
180
198
|
)
|
|
181
199
|
));
|
|
182
200
|
});
|
|
183
201
|
SearchSuggest.displayName = "SearchSuggest";
|
|
184
202
|
export {
|
|
185
|
-
SearchSuggest
|
|
203
|
+
SearchSuggest,
|
|
204
|
+
SuggestItemType2 as SuggestItemType
|
|
186
205
|
};
|
|
187
206
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/SearchSuggest/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import type {KeyboardEvent, MouseEventHandler, SyntheticEvent} from 'react';\nimport type {ISearchProvider} from '../../models';\nimport type {SearchSuggestItem, SearchSuggestLinkableItem
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAKA,OAAO;AAAA,EACH;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAQ,MAAM,aAAY;AAC1B,SAAQ,aAAY;AACpB,OAAO,WAAW;AAClB,OAAO,cAAc;AAErB,SAAQ,sBAAsB,oBAAmB;AACjD,SAAQ,gBAAgB,4BAA2B;AAEnD,SAAQ,mBAAkB;AAC1B,SAAQ,eAAc;AACtB,SAAQ,mBAAkB;AAC1B,SAAQ,gBAAe;AACvB,OAAO;
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import type {KeyboardEvent, MouseEventHandler, SyntheticEvent} from 'react';\nimport type {ISearchProvider} from '../../models';\nimport type {SearchSuggestItem, SearchSuggestLinkableItem} from './types';\nimport type {List} from '@gravity-ui/uikit';\n\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {Icon, Popup} from '@gravity-ui/uikit';\nimport {Xmark} from '@gravity-ui/icons';\nimport block from 'bem-cn-lite';\nimport uniqueId from 'lodash/uniqueId';\n\nimport {CommonAnalyticsEvent, useAnalytics} from '../../shared/libs/analytics';\nimport {useTranslation, useVirtualElementRef} from '../../hooks';\n\nimport {SuggestItemType} from './types';\nimport {SearchInput} from './SearchInput';\nimport {Suggest} from './Suggest';\nimport {SuggestItem} from './SuggestItem';\nimport {useFocus} from './useFocus';\nimport './index.scss';\n\nconst b = block('dc-search-suggest');\n\nexport type {\n SearchSuggestActionItem,\n SearchSuggestItem,\n SearchSuggestLinkableItem,\n SearchSuggestPageItem,\n} from './types';\nexport {SuggestItemType} from './types';\n\nexport interface SearchSuggestProps {\n provider: ISearchProvider;\n placeholder?: string;\n classNameContainer?: string;\n classNameClose?: string;\n className?: string;\n onFocus?: (event: SyntheticEvent) => void;\n onBlur?: (event: SyntheticEvent) => void;\n startContent?: React.ReactNode;\n endContent?: React.ReactNode;\n closeButton?: boolean;\n withAllResults?: boolean;\n focusFirstSearchResult?: boolean;\n hasClear?: boolean;\n withFocusOverlay?: boolean;\n emptyState?: React.ReactNode;\n}\n\nexport interface SearchSuggestApi {\n open(): void;\n\n close(): void;\n}\n\nconst MIMIC_PC_CONTROL = 'pc-control pc-control_size_l pc-control_theme_primary';\n\nfunction CloseButton({onClick, className}: {onClick: MouseEventHandler; className?: string}) {\n const {t} = useTranslation('search');\n\n return (\n <button\n type=\"button\"\n aria-label={t('search_close')}\n className={b('close', [MIMIC_PC_CONTROL, className].join(' '))}\n onClick={onClick}\n >\n <Icon data={Xmark} size={24} />\n </button>\n );\n}\n\nexport const SearchSuggest = forwardRef<SearchSuggestApi, SearchSuggestProps>((props, api) => {\n const {t} = useTranslation('search');\n\n const {\n provider,\n className,\n classNameContainer,\n classNameClose,\n placeholder = t('search_placeholder'),\n startContent,\n endContent,\n closeButton,\n onBlur,\n withAllResults = true,\n focusFirstSearchResult = false,\n hasClear = false,\n withFocusOverlay = false,\n emptyState,\n } = props;\n const analytics = useAnalytics();\n const href = useRef<HTMLAnchorElement>(null);\n const input = useRef<HTMLElement>(null);\n const suggest = useRef<List<SearchSuggestItem>>(null);\n const id = useMemo(uniqueId, []);\n const [query, setQuery] = useState('');\n const [active, setActive] = useState<undefined | number>(undefined);\n const [focused, setFocused, handlers] = useFocus(props);\n const [box, watch] = useVirtualElementRef(input.current);\n\n const submitItem = useCallback(\n (link: string) => {\n if (href.current) {\n href.current.href = link;\n href.current.click();\n }\n },\n [href],\n );\n\n const page = provider.link(query);\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (\n event.key === 'Enter' &&\n withAllResults &&\n !focusFirstSearchResult &&\n active === undefined &&\n page\n ) {\n submitItem(page);\n } else if (suggest.current) {\n suggest.current.onKeyDown(event);\n }\n },\n [suggest, active, submitItem, page, withAllResults, focusFirstSearchResult],\n );\n\n const open = useCallback(() => {\n setFocused(true);\n }, [setFocused]);\n\n const close = useCallback(() => {\n setFocused(false);\n }, [setFocused]);\n\n const clearQuery = useCallback(() => {\n setQuery('');\n }, [setQuery]);\n\n const onSubmit = useCallback(\n (item: SearchSuggestItem, _index?: number, fromKeyboard?: boolean) => {\n if (!fromKeyboard) {\n return;\n }\n\n if (item.type === SuggestItemType.Action) {\n item.onClick();\n return;\n }\n\n submitItem((item as SearchSuggestLinkableItem).link);\n },\n [submitItem],\n );\n\n const onClose = useCallback(\n (event: SyntheticEvent) => {\n close();\n clearQuery();\n onBlur?.(event);\n },\n [close, clearQuery, onBlur],\n );\n\n const onOutsideClick = useCallback(() => {\n if (focused) {\n close();\n }\n }, [focused, close]);\n\n useEffect(() => provider.init(), [provider]);\n useEffect(() => {\n if (focused) {\n analytics.track(CommonAnalyticsEvent.DOCS_SEARCH_CLICK);\n\n return watch();\n }\n\n return () => {};\n }, [analytics, focused, watch]);\n\n useImperativeHandle(api, () => ({open, close}), [open, close]);\n\n const wrapperClassName = [b('wrapper', {focused}), classNameContainer]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={wrapperClassName}>\n {withFocusOverlay && focused && (\n <div className={b('overlay')} onClick={onOutsideClick} />\n )}\n <a ref={href} href=\"#\" hidden aria-hidden />\n <SearchInput\n {...handlers}\n ref={input}\n id={`dc-${id}-input`}\n size=\"l\"\n className={b(null, className)}\n text={query}\n onUpdate={setQuery}\n onKeyDown={onKeyDown}\n autoFocus={focused}\n placeholder={placeholder}\n startContent={startContent}\n endContent={!focused && endContent}\n controlProps={{\n 'aria-controls': `dc-popup-${id}`,\n 'aria-expanded': Boolean(input.current && focused),\n 'aria-activedescendant':\n active === undefined ? undefined : `dc-${id}-list-item-${active}`,\n }}\n hasClear={hasClear}\n />\n {closeButton && focused && <CloseButton onClick={onClose} className={classNameClose} />}\n {input.current && (\n <Popup\n open={Boolean(query && focused)}\n onOutsideClick={onOutsideClick}\n id={`dc-popup-${id}`}\n className={b('popup')}\n style={{width: box.width, zIndex: 1002}}\n anchorRef={box}\n strategy=\"fixed\"\n >\n <Suggest\n ref={suggest}\n id={`dc-${id}-list`}\n query={query}\n provider={provider}\n withAllResults={withAllResults}\n activeItemIndex={focusFirstSearchResult ? (active ?? 0) : active}\n renderItem={SuggestItem}\n onItemClick={onSubmit}\n onChangeActive={setActive}\n emptyState={emptyState}\n />\n </Popup>\n )}\n </div>\n );\n});\n\nSearchSuggest.displayName = 'SearchSuggest';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["SuggestItemType"]
|
|
7
7
|
}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import type { BreadcrumbItem } from '../../models';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
2
3
|
export declare enum SuggestItemType {
|
|
3
4
|
Text = "text",
|
|
4
5
|
Page = "page",
|
|
5
6
|
Group = "group",
|
|
6
7
|
Delimiter = "delimiter",
|
|
7
|
-
Link = "link"
|
|
8
|
+
Link = "link",
|
|
9
|
+
Action = "action"
|
|
8
10
|
}
|
|
9
11
|
interface SearchSuggestBaseItem {
|
|
10
12
|
type: SuggestItemType;
|
|
11
13
|
disabled?: boolean;
|
|
14
|
+
icon?: ReactNode;
|
|
15
|
+
hint?: ReactNode;
|
|
12
16
|
}
|
|
13
17
|
interface SearchSuggestTextItem extends SearchSuggestBaseItem {
|
|
14
18
|
type: SuggestItemType.Text;
|
|
@@ -33,8 +37,14 @@ interface SearchSuggestLinkItem extends SearchSuggestBaseItem {
|
|
|
33
37
|
title: string;
|
|
34
38
|
link: string;
|
|
35
39
|
}
|
|
40
|
+
export interface SearchSuggestActionItem extends SearchSuggestBaseItem {
|
|
41
|
+
type: SuggestItemType.Action;
|
|
42
|
+
title: string;
|
|
43
|
+
description?: string;
|
|
44
|
+
onClick: () => void;
|
|
45
|
+
}
|
|
36
46
|
export type SearchSuggestLinkableItem = SearchSuggestPageItem | SearchSuggestLinkItem;
|
|
37
|
-
export type SearchSuggestItem = SearchSuggestLinkableItem | SearchSuggestTextItem | SearchSuggestGroupItem | SearchSuggestDelimiterItem;
|
|
47
|
+
export type SearchSuggestItem = SearchSuggestActionItem | SearchSuggestLinkableItem | SearchSuggestTextItem | SearchSuggestGroupItem | SearchSuggestDelimiterItem;
|
|
38
48
|
export type SearchGroup = {
|
|
39
49
|
type: SuggestItemType;
|
|
40
50
|
items: SearchSuggestItem[];
|
|
@@ -5,6 +5,7 @@ var SuggestItemType = /* @__PURE__ */ ((SuggestItemType2) => {
|
|
|
5
5
|
SuggestItemType2["Group"] = "group";
|
|
6
6
|
SuggestItemType2["Delimiter"] = "delimiter";
|
|
7
7
|
SuggestItemType2["Link"] = "link";
|
|
8
|
+
SuggestItemType2["Action"] = "action";
|
|
8
9
|
return SuggestItemType2;
|
|
9
10
|
})(SuggestItemType || {});
|
|
10
11
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/SearchSuggest/types.ts"],
|
|
4
|
-
"sourcesContent": ["import type {BreadcrumbItem} from '../../models';\n\nexport enum SuggestItemType {\n Text = 'text',\n Page = 'page',\n Group = 'group',\n Delimiter = 'delimiter',\n Link = 'link',\n}\n\ninterface SearchSuggestBaseItem {\n type: SuggestItemType;\n disabled?: boolean;\n}\n\ninterface SearchSuggestTextItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Text;\n title: string;\n}\n\nexport interface SearchSuggestPageItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Page;\n title: string;\n link: string;\n description?: string;\n breadcrumbs?: BreadcrumbItem[];\n}\n\ninterface SearchSuggestGroupItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Group;\n title: string;\n}\n\ninterface SearchSuggestDelimiterItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Delimiter;\n}\n\ninterface SearchSuggestLinkItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Link;\n title: string;\n link: string;\n}\n\nexport type SearchSuggestLinkableItem = SearchSuggestPageItem | SearchSuggestLinkItem;\n\nexport type SearchSuggestItem =\n | SearchSuggestLinkableItem\n | SearchSuggestTextItem\n | SearchSuggestGroupItem\n | SearchSuggestDelimiterItem;\n\nexport type SearchGroup = {\n type: SuggestItemType;\n items: SearchSuggestItem[];\n};\n"],
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["import type {BreadcrumbItem} from '../../models';\nimport type {ReactNode} from 'react';\n\nexport enum SuggestItemType {\n Text = 'text',\n Page = 'page',\n Group = 'group',\n Delimiter = 'delimiter',\n Link = 'link',\n Action = 'action',\n}\n\ninterface SearchSuggestBaseItem {\n type: SuggestItemType;\n disabled?: boolean;\n icon?: ReactNode;\n hint?: ReactNode;\n}\n\ninterface SearchSuggestTextItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Text;\n title: string;\n}\n\nexport interface SearchSuggestPageItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Page;\n title: string;\n link: string;\n description?: string;\n breadcrumbs?: BreadcrumbItem[];\n}\n\ninterface SearchSuggestGroupItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Group;\n title: string;\n}\n\ninterface SearchSuggestDelimiterItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Delimiter;\n}\n\ninterface SearchSuggestLinkItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Link;\n title: string;\n link: string;\n}\n\nexport interface SearchSuggestActionItem extends SearchSuggestBaseItem {\n type: SuggestItemType.Action;\n title: string;\n description?: string;\n onClick: () => void;\n}\n\nexport type SearchSuggestLinkableItem = SearchSuggestPageItem | SearchSuggestLinkItem;\n\nexport type SearchSuggestItem =\n | SearchSuggestActionItem\n | SearchSuggestLinkableItem\n | SearchSuggestTextItem\n | SearchSuggestGroupItem\n | SearchSuggestDelimiterItem;\n\nexport type SearchGroup = {\n type: SuggestItemType;\n items: SearchSuggestItem[];\n};\n"],
|
|
5
|
+
"mappings": ";AAGO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,YAAS;AAND,SAAAA;AAAA,GAAA;",
|
|
6
6
|
"names": ["SuggestItemType"]
|
|
7
7
|
}
|
|
@@ -3,5 +3,8 @@ import type { SearchSuggestItem } from './types';
|
|
|
3
3
|
type Zalgo<T> = Promise<T> | T;
|
|
4
4
|
type Items = Zalgo<SearchSuggestItem[] | null>;
|
|
5
5
|
type Request = (query: string) => () => void;
|
|
6
|
-
|
|
6
|
+
type UseProviderOptions = {
|
|
7
|
+
withAllResults?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function useProvider(provider: ISearchProvider, options?: UseProviderOptions): [Items, Request];
|
|
7
10
|
export {};
|
|
@@ -4,18 +4,26 @@ import debounce from "lodash/debounce";
|
|
|
4
4
|
import { useTranslation } from "../../hooks";
|
|
5
5
|
import { SuggestItemType } from "./types";
|
|
6
6
|
var cache = /* @__PURE__ */ new Map();
|
|
7
|
-
function useProvider(provider) {
|
|
7
|
+
function useProvider(provider, options = {}) {
|
|
8
|
+
const { withAllResults = true } = options;
|
|
8
9
|
const wait = useRef(null);
|
|
9
10
|
const [items, setItems] = useState(null);
|
|
10
11
|
const { t } = useTranslation("search-suggest");
|
|
11
12
|
const suggest = useMemo(
|
|
12
13
|
() => debounce((query) => {
|
|
14
|
+
const cacheKey = `${withAllResults ? "all" : "items"}:${query}`;
|
|
13
15
|
const promise = wait.current = (async () => {
|
|
14
16
|
try {
|
|
15
17
|
const data = await provider.suggest(query);
|
|
16
|
-
const items2 = format(
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
const items2 = format(
|
|
19
|
+
query,
|
|
20
|
+
data,
|
|
21
|
+
(args) => provider.link(args),
|
|
22
|
+
t,
|
|
23
|
+
withAllResults
|
|
24
|
+
);
|
|
25
|
+
cache.set(cacheKey, items2);
|
|
26
|
+
setTimeout(() => cache.delete(cacheKey), 3e4);
|
|
19
27
|
return items2;
|
|
20
28
|
} catch (e) {
|
|
21
29
|
return [
|
|
@@ -34,44 +42,77 @@ function useProvider(provider) {
|
|
|
34
42
|
}
|
|
35
43
|
});
|
|
36
44
|
}, 300),
|
|
37
|
-
[t, provider, wait, setItems]
|
|
45
|
+
[t, provider, wait, setItems, withAllResults]
|
|
38
46
|
);
|
|
39
47
|
const request = useCallback(
|
|
40
48
|
(query) => {
|
|
49
|
+
const cacheKey = `${withAllResults ? "all" : "items"}:${query}`;
|
|
41
50
|
if (!query) {
|
|
42
51
|
wait.current = null;
|
|
43
52
|
setItems(null);
|
|
44
|
-
} else if (cache.has(
|
|
53
|
+
} else if (cache.has(cacheKey)) {
|
|
45
54
|
wait.current = null;
|
|
46
|
-
setItems(cache.get(
|
|
55
|
+
setItems(cache.get(cacheKey));
|
|
47
56
|
} else {
|
|
48
57
|
suggest(query);
|
|
49
58
|
}
|
|
50
59
|
return suggest.cancel;
|
|
51
60
|
},
|
|
52
|
-
[suggest, setItems]
|
|
61
|
+
[suggest, setItems, withAllResults]
|
|
53
62
|
);
|
|
54
63
|
return [items, request];
|
|
55
64
|
}
|
|
56
|
-
function format(query, items, link, t) {
|
|
65
|
+
function format(query, items, link, t, withAllResults) {
|
|
57
66
|
const page = link(query);
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
const preparedItems = [];
|
|
68
|
+
const groupedItemsMap = {};
|
|
69
|
+
items.forEach((item) => {
|
|
70
|
+
if (item.type === SuggestItemType.Action) {
|
|
71
|
+
preparedItems.push({
|
|
72
|
+
type: SuggestItemType.Action,
|
|
73
|
+
title: item.title,
|
|
74
|
+
description: item.description || "",
|
|
75
|
+
onClick: item.onClick,
|
|
76
|
+
icon: item.icon,
|
|
77
|
+
hint: item.hint
|
|
78
|
+
});
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (item.type === SuggestItemType.Page) {
|
|
82
|
+
preparedItems.push({
|
|
83
|
+
type: SuggestItemType.Page,
|
|
84
|
+
title: item.title,
|
|
85
|
+
link: item.link,
|
|
86
|
+
description: item.description,
|
|
87
|
+
breadcrumbs: item.breadcrumbs,
|
|
88
|
+
icon: item.icon,
|
|
89
|
+
hint: item.hint
|
|
90
|
+
});
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (item.type === SuggestItemType.Link) {
|
|
94
|
+
preparedItems.push({
|
|
95
|
+
type: SuggestItemType.Link,
|
|
96
|
+
title: item.title,
|
|
97
|
+
link: item.link,
|
|
98
|
+
icon: item.icon,
|
|
99
|
+
hint: item.hint
|
|
100
|
+
});
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
groupedItemsMap[item.type] = groupedItemsMap[item.type] || { type: item.type, items: [] };
|
|
104
|
+
groupedItemsMap[item.type].items.push({
|
|
105
|
+
type: SuggestItemType.Page,
|
|
106
|
+
title: item.title,
|
|
107
|
+
link: item.link,
|
|
108
|
+
description: item.description,
|
|
109
|
+
breadcrumbs: item.breadcrumbs,
|
|
110
|
+
icon: item.icon,
|
|
111
|
+
hint: item.hint
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
const groups = Object.values(groupedItemsMap);
|
|
115
|
+
const groupedItems = groups.length === 1 ? groups[0].items : groups.reduce((result2, group) => {
|
|
75
116
|
if (result2.length) {
|
|
76
117
|
result2.push({
|
|
77
118
|
type: SuggestItemType.Delimiter,
|
|
@@ -85,7 +126,8 @@ function format(query, items, link, t) {
|
|
|
85
126
|
});
|
|
86
127
|
return result2.concat(group.items);
|
|
87
128
|
}, []);
|
|
88
|
-
|
|
129
|
+
const result = preparedItems.concat(groupedItems);
|
|
130
|
+
if (withAllResults && result.length > 0 && page) {
|
|
89
131
|
result.push({
|
|
90
132
|
type: SuggestItemType.Link,
|
|
91
133
|
title: t("search-suggest_all-results"),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/SearchSuggest/useProvider.ts"],
|
|
4
|
-
"sourcesContent": ["import type {ISearchProvider, ISearchResult, TFunction} from '../../models';\nimport type {SearchGroup, SearchSuggestItem} from './types';\n\nimport {useCallback, useMemo, useRef, useState} from 'react';\nimport debounce from 'lodash/debounce';\n\nimport {useTranslation} from '../../hooks';\n\nimport {SuggestItemType} from './types';\n\ntype Link = (query: string) => string | null;\ntype Zalgo<T> = Promise<T> | T;\ntype Items = Zalgo<SearchSuggestItem[] | null>;\ntype Request = (query: string) => () => void;\n\nconst cache = new Map<string, SearchSuggestItem[]>();\n\nexport function useProvider(provider: ISearchProvider): [Items, Request] {\n const wait = useRef<Zalgo<SearchSuggestItem[] | null>>(null);\n const [items, setItems] = useState<Zalgo<SearchSuggestItem[] | null>>(null);\n const {t} = useTranslation('search-suggest');\n\n const suggest = useMemo(\n () =>\n debounce((query: string) => {\n const promise = (wait.current = (async () => {\n try {\n const data = await provider.suggest(query);\n const items = format(query
|
|
5
|
-
"mappings": ";AAGA,SAAQ,aAAa,SAAS,QAAQ,gBAAe;AACrD,OAAO,cAAc;AAErB,SAAQ,sBAAqB;AAE7B,SAAQ,uBAAsB;
|
|
4
|
+
"sourcesContent": ["import type {ISearchProvider, ISearchResult, TFunction} from '../../models';\nimport type {SearchGroup, SearchSuggestItem} from './types';\n\nimport {useCallback, useMemo, useRef, useState} from 'react';\nimport debounce from 'lodash/debounce';\n\nimport {useTranslation} from '../../hooks';\n\nimport {SuggestItemType} from './types';\n\ntype Link = (query: string) => string | null;\ntype Zalgo<T> = Promise<T> | T;\ntype Items = Zalgo<SearchSuggestItem[] | null>;\ntype Request = (query: string) => () => void;\ntype UseProviderOptions = {\n withAllResults?: boolean;\n};\n\nconst cache = new Map<string, SearchSuggestItem[]>();\n\nexport function useProvider(\n provider: ISearchProvider,\n options: UseProviderOptions = {},\n): [Items, Request] {\n const {withAllResults = true} = options;\n const wait = useRef<Zalgo<SearchSuggestItem[] | null>>(null);\n const [items, setItems] = useState<Zalgo<SearchSuggestItem[] | null>>(null);\n const {t} = useTranslation('search-suggest');\n\n const suggest = useMemo(\n () =>\n debounce((query: string) => {\n const cacheKey = `${withAllResults ? 'all' : 'items'}:${query}`;\n const promise = (wait.current = (async () => {\n try {\n const data = await provider.suggest(query);\n const items = format(\n query,\n data,\n (args) => provider.link(args),\n t,\n withAllResults,\n );\n\n cache.set(cacheKey, items);\n setTimeout(() => cache.delete(cacheKey), 30000);\n\n return items;\n } catch {\n return [\n {\n type: SuggestItemType.Text,\n title: t('search-suggest_error-text'),\n disabled: true,\n },\n ] as SearchSuggestItem[];\n }\n })());\n\n setItems(promise);\n\n promise.then((items) => {\n if (wait.current === promise) {\n setItems(items);\n }\n });\n }, 300),\n [t, provider, wait, setItems, withAllResults],\n );\n\n const request = useCallback(\n (query: string) => {\n const cacheKey = `${withAllResults ? 'all' : 'items'}:${query}`;\n\n if (!query) {\n wait.current = null;\n setItems(null);\n } else if (cache.has(cacheKey)) {\n wait.current = null;\n setItems(cache.get(cacheKey) as SearchSuggestItem[]);\n } else {\n suggest(query);\n }\n\n return suggest.cancel;\n },\n [suggest, setItems, withAllResults],\n );\n\n return [items, request];\n}\n\nfunction format(\n query: string,\n items: ISearchResult[],\n link: Link,\n t: TFunction,\n withAllResults: boolean,\n) {\n const page = link(query);\n const preparedItems: SearchSuggestItem[] = [];\n const groupedItemsMap = {} as Record<string, SearchGroup>;\n\n items.forEach((item) => {\n if (item.type === SuggestItemType.Action) {\n preparedItems.push({\n type: SuggestItemType.Action,\n title: item.title,\n description: item.description || '',\n onClick: item.onClick,\n icon: item.icon,\n hint: item.hint,\n });\n return;\n }\n\n if (item.type === SuggestItemType.Page) {\n preparedItems.push({\n type: SuggestItemType.Page,\n title: item.title,\n link: item.link,\n description: item.description,\n breadcrumbs: item.breadcrumbs,\n icon: item.icon,\n hint: item.hint,\n });\n return;\n }\n\n if (item.type === SuggestItemType.Link) {\n preparedItems.push({\n type: SuggestItemType.Link,\n title: item.title,\n link: item.link,\n icon: item.icon,\n hint: item.hint,\n });\n return;\n }\n\n groupedItemsMap[item.type] = groupedItemsMap[item.type] || {type: item.type, items: []};\n groupedItemsMap[item.type].items.push({\n type: SuggestItemType.Page,\n title: item.title,\n link: item.link,\n description: item.description,\n breadcrumbs: item.breadcrumbs,\n icon: item.icon,\n hint: item.hint,\n });\n });\n\n const groups = Object.values(groupedItemsMap);\n\n const groupedItems =\n groups.length === 1\n ? groups[0].items\n : groups.reduce((result, group) => {\n if (result.length) {\n result.push({\n type: SuggestItemType.Delimiter,\n disabled: true,\n });\n }\n\n result.push({\n type: SuggestItemType.Group,\n title: t(`search-item_type-${group.type}`, t('search-item_type-main')),\n disabled: true,\n });\n\n return result.concat(group.items as SearchSuggestItem[]);\n }, [] as SearchSuggestItem[]);\n\n const result = preparedItems.concat(groupedItems);\n\n if (withAllResults && result.length > 0 && page) {\n result.push({\n type: SuggestItemType.Link,\n title: t('search-suggest_all-results'),\n link: page,\n });\n }\n\n return result;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["items", "result"]
|
|
7
7
|
}
|