@reykjavik/hanna-react 0.10.94 → 0.10.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/AccordionList.d.ts +2 -3
  2. package/AccordionList.js +3 -3
  3. package/Alert.d.ts +2 -3
  4. package/Alert.js +2 -2
  5. package/ArticleCarousel/_ArticleCarouselCard.js +2 -2
  6. package/ArticleCarousel.d.ts +2 -3
  7. package/ArticleMeta.js +2 -2
  8. package/Attention.js +2 -2
  9. package/BasicTable.js +2 -2
  10. package/BgBox.js +2 -2
  11. package/Bling.js +2 -2
  12. package/ButtonBar.js +2 -2
  13. package/CHANGELOG.md +12 -0
  14. package/ContactBubble.d.ts +2 -3
  15. package/ContactBubble.js +2 -2
  16. package/Datepicker.js +2 -2
  17. package/ExtraLinks.js +3 -3
  18. package/FieldGroup.js +2 -2
  19. package/FileInput.js +3 -3
  20. package/FooterInfo.d.ts +2 -2
  21. package/FooterInfo.js +3 -3
  22. package/Form.js +2 -2
  23. package/FormField.d.ts +2 -3
  24. package/FormField.js +2 -2
  25. package/Gallery.d.ts +2 -3
  26. package/GridBlocks.js +2 -2
  27. package/Heading.js +2 -2
  28. package/IframeBlock.js +2 -2
  29. package/ImageCards.js +2 -2
  30. package/InfoHero.js +2 -2
  31. package/LabeledTextBlock.js +2 -2
  32. package/Layout.d.ts +3 -6
  33. package/Layout.js +7 -13
  34. package/MainMenu/_PrimaryPanel.js +2 -2
  35. package/MainMenu.d.ts +2 -3
  36. package/MainMenu.js +3 -3
  37. package/Multiselect.js +5 -5
  38. package/NameCard.js +2 -2
  39. package/NewsHero.js +2 -2
  40. package/PageFilter.js +2 -2
  41. package/PageHeading.js +2 -2
  42. package/Picture.js +2 -2
  43. package/ProcessOverview.js +2 -2
  44. package/ReadSpeakerPlayer.js +2 -2
  45. package/RowBlock.d.ts +2 -2
  46. package/RowBlock.js +2 -2
  47. package/RowBlockColumn.js +2 -2
  48. package/SearchInput.js +2 -2
  49. package/SearchResults.js +2 -2
  50. package/Selectbox.js +2 -2
  51. package/ShareButtons.d.ts +2 -3
  52. package/Sharpie.js +2 -2
  53. package/SiteSearchAutocomplete.d.ts +1 -1
  54. package/SiteSearchCurtain.js +2 -2
  55. package/SiteSearchInput.d.ts +2 -3
  56. package/Skeleton.js +2 -2
  57. package/SubHeading.js +2 -2
  58. package/Tabs.d.ts +2 -3
  59. package/Tabs.js +2 -2
  60. package/TagPill.js +3 -3
  61. package/TextBlock.js +2 -2
  62. package/TextInput.js +2 -2
  63. package/Tooltip.js +2 -2
  64. package/VSpacer.js +2 -2
  65. package/WizardLayout.d.ts +2 -3
  66. package/WizardLayout.js +2 -2
  67. package/WizardStepper.js +3 -3
  68. package/_abstract/_AbstractCarousel.d.ts +3 -4
  69. package/_abstract/_AbstractCarousel.js +2 -2
  70. package/_abstract/_Block.d.ts +2 -2
  71. package/_abstract/_Block.js +2 -2
  72. package/_abstract/_Button.d.ts +3 -3
  73. package/_abstract/_Button.js +2 -2
  74. package/_abstract/_Image.js +3 -3
  75. package/_abstract/_TogglerGroup.js +2 -2
  76. package/_abstract/_TogglerGroupField.d.ts +2 -2
  77. package/_abstract/_TogglerGroupField.js +2 -2
  78. package/_abstract/_TogglerInput.d.ts +2 -2
  79. package/_abstract/_TogglerInput.js +2 -2
  80. package/esm/AccordionList.d.ts +2 -3
  81. package/esm/AccordionList.js +3 -3
  82. package/esm/Alert.d.ts +2 -3
  83. package/esm/Alert.js +2 -2
  84. package/esm/ArticleCarousel/_ArticleCarouselCard.js +2 -2
  85. package/esm/ArticleCarousel.d.ts +2 -3
  86. package/esm/ArticleMeta.js +2 -2
  87. package/esm/Attention.js +2 -2
  88. package/esm/BasicTable.js +2 -2
  89. package/esm/BgBox.js +2 -2
  90. package/esm/Bling.js +2 -2
  91. package/esm/ButtonBar.js +2 -2
  92. package/esm/ContactBubble.d.ts +2 -3
  93. package/esm/ContactBubble.js +2 -2
  94. package/esm/Datepicker.js +2 -2
  95. package/esm/ExtraLinks.js +3 -3
  96. package/esm/FieldGroup.js +2 -2
  97. package/esm/FileInput.js +3 -3
  98. package/esm/FooterInfo.d.ts +2 -2
  99. package/esm/FooterInfo.js +3 -3
  100. package/esm/Form.js +2 -2
  101. package/esm/FormField.d.ts +2 -3
  102. package/esm/FormField.js +2 -2
  103. package/esm/Gallery.d.ts +2 -3
  104. package/esm/GridBlocks.js +2 -2
  105. package/esm/Heading.js +2 -2
  106. package/esm/IframeBlock.js +2 -2
  107. package/esm/ImageCards.js +2 -2
  108. package/esm/InfoHero.js +2 -2
  109. package/esm/LabeledTextBlock.js +2 -2
  110. package/esm/Layout.d.ts +3 -6
  111. package/esm/Layout.js +7 -13
  112. package/esm/MainMenu/_PrimaryPanel.js +2 -2
  113. package/esm/MainMenu.d.ts +2 -3
  114. package/esm/MainMenu.js +3 -3
  115. package/esm/Multiselect.js +5 -5
  116. package/esm/NameCard.js +2 -2
  117. package/esm/NewsHero.js +2 -2
  118. package/esm/PageFilter.js +2 -2
  119. package/esm/PageHeading.js +2 -2
  120. package/esm/Picture.js +2 -2
  121. package/esm/ProcessOverview.js +2 -2
  122. package/esm/ReadSpeakerPlayer.js +2 -2
  123. package/esm/RowBlock.d.ts +2 -2
  124. package/esm/RowBlock.js +2 -2
  125. package/esm/RowBlockColumn.js +2 -2
  126. package/esm/SearchInput.js +2 -2
  127. package/esm/SearchResults.js +2 -2
  128. package/esm/Selectbox.js +2 -2
  129. package/esm/ShareButtons.d.ts +2 -3
  130. package/esm/Sharpie.js +2 -2
  131. package/esm/SiteSearchAutocomplete.d.ts +1 -1
  132. package/esm/SiteSearchCurtain.js +2 -2
  133. package/esm/SiteSearchInput.d.ts +2 -3
  134. package/esm/Skeleton.js +2 -2
  135. package/esm/SubHeading.js +2 -2
  136. package/esm/Tabs.d.ts +2 -3
  137. package/esm/Tabs.js +2 -2
  138. package/esm/TagPill.js +3 -3
  139. package/esm/TextBlock.js +2 -2
  140. package/esm/TextInput.js +2 -2
  141. package/esm/Tooltip.js +2 -2
  142. package/esm/VSpacer.js +2 -2
  143. package/esm/WizardLayout.d.ts +2 -3
  144. package/esm/WizardLayout.js +2 -2
  145. package/esm/WizardStepper.js +3 -3
  146. package/esm/_abstract/_AbstractCarousel.d.ts +3 -4
  147. package/esm/_abstract/_AbstractCarousel.js +2 -2
  148. package/esm/_abstract/_Block.d.ts +2 -2
  149. package/esm/_abstract/_Block.js +2 -2
  150. package/esm/_abstract/_Button.d.ts +3 -3
  151. package/esm/_abstract/_Button.js +2 -2
  152. package/esm/_abstract/_Image.js +3 -3
  153. package/esm/_abstract/_TogglerGroup.js +2 -2
  154. package/esm/_abstract/_TogglerGroupField.d.ts +2 -2
  155. package/esm/_abstract/_TogglerGroupField.js +2 -2
  156. package/esm/_abstract/_TogglerInput.d.ts +2 -2
  157. package/esm/_abstract/_TogglerInput.js +2 -2
  158. package/esm/utils/HannaUIState.d.ts +3 -4
  159. package/esm/utils/config.d.ts +11 -1
  160. package/esm/utils/config.js +1 -0
  161. package/esm/utils/types.d.ts +12 -0
  162. package/esm/utils/types.js +1 -0
  163. package/esm/utils/useGetSVGtext.d.ts +1 -1
  164. package/esm/utils/useGetSVGtext.js +2 -2
  165. package/esm/utils/useMenuToggling.d.ts +2 -0
  166. package/esm/utils/useMenuToggling.js +31 -21
  167. package/esm/utils.d.ts +2 -1
  168. package/esm/utils.js +2 -1
  169. package/package.json +5 -4
  170. package/utils/HannaUIState.d.ts +3 -4
  171. package/utils/config.d.ts +11 -1
  172. package/utils/config.js +1 -0
  173. package/utils/types.d.ts +12 -0
  174. package/utils/types.js +2 -0
  175. package/utils/useGetSVGtext.d.ts +1 -1
  176. package/utils/useGetSVGtext.js +2 -2
  177. package/utils/useMenuToggling.d.ts +2 -0
  178. package/utils/useMenuToggling.js +31 -21
  179. package/utils.d.ts +2 -1
  180. package/utils.js +5 -1
package/Layout.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { ReactNode } from 'react';
2
- import { BemPropsModifier } from '@hugsmidjan/react/types';
3
2
  import type { HannaColorTheme } from '@reykjavik/hanna-css';
4
3
  import { EitherObj } from '@reykjavik/hanna-utils';
5
4
  import { DefaultTexts } from '@reykjavik/hanna-utils/i18n';
6
- import { SSRSupport } from './utils.js';
5
+ import { BemModifierProps } from './utils/types.js';
6
+ import { SSRSupportProps } from './utils.js';
7
7
  export type LayoutI18n = {
8
8
  lang?: string;
9
9
  skipLinkLabel: string;
@@ -13,17 +13,14 @@ export type LayoutI18n = {
13
13
  export declare const defaultLayoutTexts: DefaultTexts<LayoutI18n>;
14
14
  type LayoutProps = {
15
15
  globalAlerts?: ReactNode;
16
- mainChildren?: ReactNode;
17
16
  navChildren?: ReactNode;
18
17
  footerChildren?: ReactNode;
19
18
  colorTheme?: HannaColorTheme;
20
19
  logoLink?: string;
21
20
  siteName?: string;
22
- modifier?: BemPropsModifier['modifier'];
23
- ssr?: SSRSupport;
24
21
  texts?: LayoutI18n;
25
22
  lang?: string;
26
- } & EitherObj<{
23
+ } & SSRSupportProps & BemModifierProps & EitherObj<{
27
24
  mainChildren: ReactNode;
28
25
  }, {
29
26
  children: ReactNode;
package/Layout.js CHANGED
@@ -3,14 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Layout = exports.defaultLayoutTexts = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const assets_1 = require("@reykjavik/hanna-utils/assets");
8
8
  const i18n_1 = require("@reykjavik/hanna-utils/i18n");
9
9
  const _Image_js_1 = require("./_abstract/_Image.js");
10
10
  const _Link_js_1 = require("./_abstract/_Link.js");
11
- const HannaUIState_js_1 = require("./utils/HannaUIState.js");
12
- const useMenuToggling_js_1 = require("./utils/useMenuToggling.js");
13
- const useScrollbarWidthCSSVar_js_1 = require("./utils/useScrollbarWidthCSSVar.js");
14
11
  const utils_js_1 = require("./utils.js");
15
12
  exports.defaultLayoutTexts = {
16
13
  is: {
@@ -27,18 +24,18 @@ exports.defaultLayoutTexts = {
27
24
  },
28
25
  };
29
26
  const Layout = (props) => {
30
- (0, useScrollbarWidthCSSVar_js_1.useScrollbarWidthCSSVar)();
31
- const { ssr, globalAlerts, mainChildren, navChildren, footerChildren, colorTheme, children, siteName = 'Reykjavík', logoLink = '/', } = props;
32
- const { isMenuActive, isMenuOpen, closeMenu, toggleMenu } = (0, useMenuToggling_js_1.useMenuToggling)(ssr !== 'ssr-only');
27
+ (0, utils_js_1.useScrollbarWidthCSSVar)();
28
+ const { ssr, globalAlerts, mainChildren, navChildren, footerChildren, colorTheme, children, siteName = '', logoLink = '/', } = props;
29
+ const { isMenuActive, uiState, closeMenu, toggleMenu } = (0, utils_js_1.useMenuToggling)(ssr !== 'ssr-only');
33
30
  const isBrowser = (0, utils_js_1.useIsBrowserSide)( /* ssr */);
34
31
  const txt = (0, i18n_1.getTexts)(props, exports.defaultLayoutTexts);
35
- return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('Layout', props.modifier), "data-sprinkled": isBrowser, "data-color-theme": colorTheme },
32
+ return (react_1.default.createElement("div", { className: (0, classUtils_1.modifiedClass)('Layout', props.modifier), "data-sprinkled": isBrowser, "data-color-theme": colorTheme },
36
33
  globalAlerts && (react_1.default.createElement("div", { className: "Layout__alerts", role: "alert" }, globalAlerts)),
37
34
  react_1.default.createElement("div", { className: "Layout__content" },
38
35
  react_1.default.createElement("div", { className: "Layout__header", role: "banner" },
39
36
  react_1.default.createElement(_Link_js_1.Link, { className: "Layout__header__logo", href: logoLink },
40
37
  ' ',
41
- react_1.default.createElement(_Image_js_1.Image, { className: undefined, inline: true, src: (0, assets_1.getAssetUrl)('reykjavik-logo.svg') }),
38
+ react_1.default.createElement(_Image_js_1.Image, { className: undefined, inline: true, src: (0, assets_1.getAssetUrl)('reykjavik-logo.svg'), altText: "Reykjav\u00EDk" }),
42
39
  ' ',
43
40
  siteName,
44
41
  ' '),
@@ -50,10 +47,7 @@ const Layout = (props) => {
50
47
  }), "aria-label": txt.skipLinkLabel }, txt.skipLinkLabel))),
51
48
  react_1.default.createElement("div", { className: "Layout__main", role: "main" }, mainChildren || children),
52
49
  navChildren && (react_1.default.createElement("div", { className: "Layout__nav", id: "pagenav", role: "navigation" },
53
- react_1.default.createElement(HannaUIState_js_1.HannaUIState, { value: {
54
- closeHamburgerMenu: closeMenu,
55
- isHamburgerMenuOpen: isMenuOpen,
56
- } }, navChildren),
50
+ react_1.default.createElement(utils_js_1.HannaUIState, { value: uiState }, navChildren),
57
51
  isMenuActive && (react_1.default.createElement("button", { className: "Layout__nav__closebutton", onClick: closeMenu, "aria-label": txt.closeMenuLabelLong, type: "button" }, txt.closeMenuLabel)))),
58
52
  react_1.default.createElement("div", { className: "Layout__footer", role: "complementary" }, footerChildren))));
59
53
  };
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PrimaryPanel = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const _Link_js_1 = require("../_abstract/_Link.js");
8
8
  const PrimaryPanel = (props) => {
9
9
  const { setActivePanel, panel, isParent, isActive, isBrowser, texts } = props;
10
10
  const { items } = panel;
11
- return (react_1.default.createElement("li", { ref: isActive ? props.activeRef : undefined, className: (0, getBemClass_1.default)('PrimaryPanel', [
11
+ return (react_1.default.createElement("li", { ref: isActive ? props.activeRef : undefined, className: (0, classUtils_1.modifiedClass)('PrimaryPanel', [
12
12
  isParent && 'parent',
13
13
  isActive && 'active',
14
14
  items.length > 5 && 'twocol', // TODO: allow setting twocol manually?
package/MainMenu.d.ts CHANGED
@@ -3,7 +3,7 @@ import { Cleanup } from '@reykjavik/hanna-utils';
3
3
  import { DefaultTexts } from '@reykjavik/hanna-utils/i18n';
4
4
  import { AuxilaryPanelIllustration, AuxiliaryPanelProps } from './MainMenu/_Auxiliary.js';
5
5
  import { MegaMenuItem, MegaMenuPanel, PrimaryPanelI18n } from './MainMenu/_PrimaryPanel.js';
6
- import { SSRSupport } from './utils.js';
6
+ import { SSRSupportProps } from './utils.js';
7
7
  export type MainMenuI18n = Cleanup<{
8
8
  lang?: string;
9
9
  homeLabel?: string;
@@ -58,7 +58,6 @@ export type MainMenuProps = {
58
58
  activePanelId?: string;
59
59
  texts?: MainMenuI18n;
60
60
  lang?: string;
61
- ssr?: SSRSupport;
62
- };
61
+ } & SSRSupportProps;
63
62
  export declare const MainMenu: (props: MainMenuProps) => JSX.Element | null;
64
63
  export default MainMenu;
package/MainMenu.js CHANGED
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MainMenu = exports.defaultMainMenuTexts = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
6
7
  const focusElm_1 = require("@hugsmidjan/qj/focusElm");
7
8
  const useShortState_1 = tslib_1.__importDefault(require("@hugsmidjan/react/hooks/useShortState"));
8
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
9
9
  const i18n_1 = require("@reykjavik/hanna-utils/i18n");
10
10
  const _Link_js_1 = require("./_abstract/_Link.js");
11
11
  const _Auxiliary_js_1 = require("./MainMenu/_Auxiliary.js");
@@ -188,7 +188,7 @@ const MainMenu = (props) => {
188
188
  }
189
189
  const { label, labelLong, lang, controlsId, onClick } = item;
190
190
  const pressed = (activePanel && controlsId === activePanel.id) || undefined;
191
- return (react_1.default.createElement("li", { key: i, className: (0, getBemClass_1.default)('MainMenu__item', item.modifier), "aria-current": item.current || undefined }, onClick || (!!item.megaPanel && (isBrowser || !item.href)) ? (
191
+ return (react_1.default.createElement("li", { key: i, className: (0, classUtils_1.modifiedClass)('MainMenu__item', item.modifier), "aria-current": item.current || undefined }, onClick || (!!item.megaPanel && (isBrowser || !item.href)) ? (
192
192
  // only print script-driven buttons in the browser
193
193
  react_1.default.createElement("button", { className: "MainMenu__link", onClick: () => {
194
194
  const keepOpen1 = onClick && onClick(i, item) === false;
@@ -209,7 +209,7 @@ const MainMenu = (props) => {
209
209
  ));
210
210
  })),
211
211
  '\n\n',
212
- megaPanels.length > 0 && (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('MainMenu__panelsWrap', [activePanel && 'active']) },
212
+ megaPanels.length > 0 && (react_1.default.createElement("div", { className: (0, classUtils_1.modifiedClass)('MainMenu__panelsWrap', [activePanel && 'active']) },
213
213
  react_1.default.createElement("ul", { className: "MainMenu__panels", onClick: handleMegaPanelClicks },
214
214
  megaPanels.map((panel, i) => {
215
215
  if (!panel.items.length) {
package/Multiselect.js CHANGED
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Multiselect = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
6
7
  const domid_1 = tslib_1.__importDefault(require("@hugsmidjan/qj/domid"));
7
8
  const hooks_1 = require("@hugsmidjan/react/hooks");
8
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
9
9
  const hanna_utils_1 = require("@reykjavik/hanna-utils");
10
10
  const i18n_1 = require("@reykjavik/hanna-utils/i18n");
11
11
  const _FocusTrap_js_1 = require("./_abstract/_FocusTrap.js");
@@ -28,7 +28,7 @@ const metaData = {
28
28
  *
29
29
  * (This summary just gets in the way with ultra short option lists.)
30
30
  */
31
- summaryLimit: 10,
31
+ summaryLimit: 20,
32
32
  };
33
33
  const { searchableLimit, summaryLimit } = metaData;
34
34
  const defaultTexts = {
@@ -191,9 +191,9 @@ const Multiselect = (props) => {
191
191
  block: 'nearest',
192
192
  });
193
193
  }, [activeItemIndex]);
194
- return (react_1.default.createElement(FormField_js_1.default, { className: (0, getBemClass_1.default)('Multiselect', props.nowrap && 'nowrap', props.className), ssr: props.ssr, group: "inputlike", label: props.label, LabelTag: props.LabelTag, hideLabel: props.hideLabel, small: props.small, filled: filled, empty: empty, disabled: disabled, invalid: props.invalid, errorMessage: props.errorMessage, assistText: props.assistText, readOnly: readOnly, required: props.required, reqText: props.reqText, id: props.id, renderInput: (className, inputProps, addFocusProps, isBrowser) => {
194
+ return (react_1.default.createElement(FormField_js_1.default, { className: (0, classUtils_1.modifiedClass)('Multiselect', props.nowrap && 'nowrap', props.className), ssr: props.ssr, group: "inputlike", label: props.label, LabelTag: props.LabelTag, hideLabel: props.hideLabel, small: props.small, filled: filled, empty: empty, disabled: disabled, invalid: props.invalid, errorMessage: props.errorMessage, assistText: props.assistText, readOnly: readOnly, required: props.required, reqText: props.reqText, id: props.id, renderInput: (className, inputProps, addFocusProps, isBrowser) => {
195
195
  const { id } = inputProps;
196
- return (react_1.default.createElement("div", Object.assign({ className: (0, getBemClass_1.default)('Multiselect__input', [isOpen && 'open'], className.input) }, addFocusProps(), { "data-sprinkled": isBrowser, ref: wrapperRef }),
196
+ return (react_1.default.createElement("div", Object.assign({ className: (0, classUtils_1.modifiedClass)('Multiselect__input', [isOpen && 'open'], className.input) }, addFocusProps(), { "data-sprinkled": isBrowser, ref: wrapperRef }),
197
197
  !isBrowser ? null : isSearchable ? (react_1.default.createElement("input", { className: "Multiselect__search", id: `toggler:${id}`, "aria-label": texts.search, "aria-controls": (0, domid_1.default)(), "data-expanded": isOpen || undefined, onChange: handleInputChange, onKeyDown: handleInputKeyDown, onClick: () => toggleOpen(), value: searchQuery,
198
198
  // onFocus={handleInputFocus}
199
199
  placeholder: placeholderText, disabled: disabled, ref: inputRef })) : (react_1.default.createElement("button", { className: "Multiselect__toggler", id: `toggler:${id}`, type: "button", "aria-label": texts.buttonShow, "aria-controls": (0, domid_1.default)(), "aria-expanded": isOpen, onClick: () => toggleOpen(), disabled: disabled,
@@ -224,7 +224,7 @@ const Multiselect = (props) => {
224
224
  ? item.disabled
225
225
  : disableds && disableds.includes(idx);
226
226
  const isChecked = values.includes(item.value);
227
- return (react_1.default.createElement(Checkbox_js_1.default, Object.assign({ key: idx, className: (0, getBemClass_1.default)('Multiselect__option', activeItemIndex === idx && 'focused'), disabled: isDisabled, readOnly: readOnly, required: props.required, Wrapper: "li", name: name }, item, { checked: isChecked, "aria-invalid": props.invalid, label: item.label || item.value, onChange: () => handleCheckboxSelection(item), onFocus: () => setActiveItemIndex(idx), wrapperProps: {
227
+ return (react_1.default.createElement(Checkbox_js_1.default, Object.assign({ key: idx, className: (0, classUtils_1.modifiedClass)('Multiselect__option', activeItemIndex === idx && 'focused'), disabled: isDisabled, readOnly: readOnly, required: props.required, Wrapper: "li", name: name }, item, { checked: isChecked, "aria-invalid": props.invalid, label: item.label || item.value, onChange: () => handleCheckboxSelection(item), onFocus: () => setActiveItemIndex(idx), wrapperProps: {
228
228
  onMouseEnter: () => setActiveItemIndex(idx),
229
229
  } })));
230
230
  })) : searchQuery ? (react_1.default.createElement("li", { className: "Multiselect__noresults" }, texts.noneFoundMsg)) : undefined,
package/NameCard.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NameCard = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const i18n_1 = require("@reykjavik/hanna-utils/i18n");
8
8
  const _Button_js_1 = require("./_abstract/_Button.js");
9
9
  const breakOnNL_js_1 = require("./_abstract/breakOnNL.js");
@@ -48,7 +48,7 @@ const NameCard = (props) => {
48
48
  const texts = (0, i18n_1.getTexts)(props, defaultTexts);
49
49
  const { updatedLabel, availableLabel, unavailableLabel } = texts;
50
50
  return (react_1.default.createElement("div", { className: "NameCard__meta" },
51
- available != null && (react_1.default.createElement("span", { className: (0, getBemClass_1.default)('NameCard__availability', available && 'available') },
51
+ available != null && (react_1.default.createElement("span", { className: (0, classUtils_1.modifiedClass)('NameCard__availability', available && 'available') },
52
52
  available
53
53
  ? availableLabel || texts.vacancyLabel
54
54
  : unavailableLabel || texts.noVacancyLabel,
package/NewsHero.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NewsHero = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const hanna_utils_1 = require("@reykjavik/hanna-utils");
8
8
  const _Blings_js_1 = require("./_abstract/_Blings.js");
9
9
  const _Image_js_1 = require("./_abstract/_Image.js");
@@ -79,7 +79,7 @@ const NewsHero = (props) => {
79
79
  const { title, sharing = true, meta, summary, image, blingType, startSeen } = props;
80
80
  const [ref] = (0, seenEffect_js_1.useSeenEffect)(startSeen);
81
81
  const blings = (blingType && blingOptions[blingType]) || (0, hanna_utils_1.getStableRandomItem)(blingOptions, title);
82
- return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('NewsHero', [!image && 'align--right']), ref: ref },
82
+ return (react_1.default.createElement("div", { className: (0, classUtils_1.modifiedClass)('NewsHero', [!image && 'align--right']), ref: ref },
83
83
  react_1.default.createElement("div", { className: "NewsHero__content" },
84
84
  react_1.default.createElement("h1", { className: "NewsHero__title" }, title),
85
85
  meta && react_1.default.createElement("span", { className: "NewsHero__meta" }, meta),
package/PageFilter.js CHANGED
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PageFilter = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const seenEffect_js_1 = require("./utils/seenEffect.js");
8
8
  const Footnote_js_1 = tslib_1.__importDefault(require("./Footnote.js"));
9
9
  const PageFilter = (props) => {
10
10
  const { title, summary, footnote, filters, children, buttonRow, underlap, startSeen } = props;
11
11
  const [ref] = (0, seenEffect_js_1.useSeenEffect)(startSeen);
12
- return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('PageFilter', underlap && 'underlap'), ref: ref },
12
+ return (react_1.default.createElement("div", { className: (0, classUtils_1.modifiedClass)('PageFilter', underlap && 'underlap'), ref: ref },
13
13
  react_1.default.createElement("h2", { className: "PageFilter__title" }, title),
14
14
  summary && react_1.default.createElement("div", { className: "PageFilter__summary" }, summary),
15
15
  react_1.default.createElement("div", { className: "PageFilter__filters" }, filters || children),
package/PageHeading.js CHANGED
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PageHeading = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const seenEffect_js_1 = require("./utils/seenEffect.js");
8
8
  const PageHeading = (props) => {
9
9
  const { Tag = 'h1', align, small, children, startSeen } = props;
10
10
  const [ref] = (0, seenEffect_js_1.useSeenEffect)(startSeen);
11
- return (react_1.default.createElement(Tag, { className: (0, getBemClass_1.default)('PageHeading', [
11
+ return (react_1.default.createElement(Tag, { className: (0, classUtils_1.modifiedClass)('PageHeading', [
12
12
  small && 'small',
13
13
  align === 'right' && 'align--' + align,
14
14
  ]), ref: ref }, children));
package/Picture.js CHANGED
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Picture = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const _Image_js_1 = require("./_abstract/_Image.js");
8
8
  const Picture = (props) => {
9
9
  const { contain, className } = props;
10
- return (react_1.default.createElement(_Image_js_1.Image, Object.assign({}, props, { className: (0, getBemClass_1.default)('Picture', contain && 'contain', className) })));
10
+ return (react_1.default.createElement(_Image_js_1.Image, Object.assign({}, props, { className: (0, classUtils_1.modifiedClass)('Picture', contain && 'contain', className) })));
11
11
  };
12
12
  exports.Picture = Picture;
13
13
  exports.default = exports.Picture;
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ProcessOverview = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const ProcessOverview = (props) => {
8
8
  const { title, items, attention, transparent, narrow } = props;
9
- return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('ProcessOverview', [
9
+ return (react_1.default.createElement("div", { className: (0, classUtils_1.modifiedClass)('ProcessOverview', [
10
10
  transparent && 'transparent',
11
11
  narrow && 'narrow',
12
12
  ]) },
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.stopReading = exports.ReadSpeakerPlayer = exports.defaultReadSpeakerPlayerTexts = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const i18n_1 = require("@reykjavik/hanna-utils/i18n");
8
8
  const scriptTagId = 'rs_req_Init';
9
9
  const scriptTagSelector = `script#${scriptTagId}`;
@@ -54,7 +54,7 @@ const ReadSpeakerPlayer = (props) => {
54
54
  // or multiple different `customerId`s on the same page.
55
55
  // If you try that, things will be weird and wonky.
56
56
  ]);
57
- return (react_1.default.createElement("div", Object.assign({}, wrapperProps, { className: (0, getBemClass_1.default)('ReadSpeakerPlayer', [align === 'right' && `align-${align}`, float && 'float'], wrapperProps.className) }),
57
+ return (react_1.default.createElement("div", Object.assign({}, wrapperProps, { className: (0, classUtils_1.modifiedClass)('ReadSpeakerPlayer', [align === 'right' && `align-${align}`, float && 'float'], wrapperProps.className) }),
58
58
  react_1.default.createElement("div", { id: "readspeaker_button1", className: "rs_skip rsbtn rs_preserve" },
59
59
  react_1.default.createElement("a", { rel: "nofollow", className: "rsbtn_play", accessKey: "L", title: linkLabel || linkText, href: `https://app-eu.readspeaker.com/cgi-bin/rsent?${new URLSearchParams({
60
60
  customerid: customerId,
package/RowBlock.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import { ReactNode } from 'react';
2
- import { BemPropsModifier } from '@hugsmidjan/react/types';
3
2
  import { SeenProp } from './utils/seenEffect.js';
3
+ import { BemModifierProps } from './utils/types.js';
4
4
  export type RowBlockProps = {
5
5
  /** Float the first RowBlockColumn to the right on larger screens. */
6
6
  right?: boolean;
7
7
  /** Custom **additional** class-name */
8
8
  className?: string;
9
9
  children: ReactNode;
10
- } & BemPropsModifier & SeenProp;
10
+ } & BemModifierProps & SeenProp;
11
11
  export declare const RowBlock: (props: RowBlockProps) => JSX.Element;
12
12
  export default RowBlock;
package/RowBlock.js CHANGED
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RowBlock = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const seenEffect_js_1 = require("./utils/seenEffect.js");
8
8
  const RowBlock = (props) => {
9
9
  const { right, modifier, className, children, startSeen } = props;
10
10
  const [ref] = (0, seenEffect_js_1.useSeenEffect)(startSeen);
11
- return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('RowBlock', [modifier, right && 'align--right'], className), ref: ref }, children));
11
+ return (react_1.default.createElement("div", { className: (0, classUtils_1.modifiedClass)('RowBlock', [modifier, right && 'align--right'], className), ref: ref }, children));
12
12
  };
13
13
  exports.RowBlock = RowBlock;
14
14
  exports.default = exports.RowBlock;
package/RowBlockColumn.js CHANGED
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RowBlockColumn = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const RowBlockColumn = (props) => {
8
8
  const { background, narrow, children } = props;
9
- return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('RowBlockColumn', [
9
+ return (react_1.default.createElement("div", { className: (0, classUtils_1.modifiedClass)('RowBlockColumn', [
10
10
  narrow && 'narrow',
11
11
  background && 'background',
12
12
  background === 'primary' && 'background--primary',
package/SearchInput.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SearchInput = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const FormField_js_1 = tslib_1.__importDefault(require("./FormField.js"));
8
8
  const SearchInput = (props) => {
9
9
  var _a;
@@ -18,7 +18,7 @@ const SearchInput = (props) => {
18
18
  setHasValue(!!e.target.value);
19
19
  onChange && onChange(e);
20
20
  };
21
- return (react_1.default.createElement(FormField_js_1.default, { className: (0, getBemClass_1.default)('SearchInput', [], className), ssr: ssr, small: small, label: label, empty: empty, filled: filled, assistText: assistText, hideLabel: hideLabel, disabled: disabled, readOnly: readOnly, invalid: invalid, errorMessage: errorMessage, required: required, reqText: reqText, id: id, renderInput: (className, inputProps, addFocusProps) => (react_1.default.createElement("div", Object.assign({ className: className.input }, addFocusProps()),
21
+ return (react_1.default.createElement(FormField_js_1.default, { className: (0, classUtils_1.modifiedClass)('SearchInput', [], className), ssr: ssr, small: small, label: label, empty: empty, filled: filled, assistText: assistText, hideLabel: hideLabel, disabled: disabled, readOnly: readOnly, invalid: invalid, errorMessage: errorMessage, required: required, reqText: reqText, id: id, renderInput: (className, inputProps, addFocusProps) => (react_1.default.createElement("div", Object.assign({ className: className.input }, addFocusProps()),
22
22
  react_1.default.createElement("input", Object.assign({ className: "SearchInput__input", onChange: _onChange }, inputProps, inputElementProps, { ref: props.inputRef })),
23
23
  ' ',
24
24
  onButtonClick && (react_1.default.createElement("button", { className: "SearchInput__button", type: "button", onClick: onButtonClick, title: buttonText, ref: props.buttonRef, disabled: disabled || readOnly }, buttonText)))) }));
package/SearchResults.js CHANGED
@@ -4,10 +4,10 @@ exports.SearchResults = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
6
  const react_intersection_observer_1 = require("react-intersection-observer");
7
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
8
  const prettyNum_1 = require("@hugsmidjan/qj/prettyNum");
8
9
  const range_1 = tslib_1.__importDefault(require("@hugsmidjan/qj/range"));
9
10
  const hooks_1 = require("@hugsmidjan/react/hooks");
10
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
11
11
  const i18n_1 = require("@reykjavik/hanna-utils/i18n");
12
12
  const _SearchResultsItem_js_1 = require("./SearchResults/_SearchResultsItem.js");
13
13
  const Alert_js_1 = tslib_1.__importDefault(require("./Alert.js"));
@@ -101,7 +101,7 @@ const SearchResults = (props) => {
101
101
  const { filters, activeFilterIdx, setFilter, status, errorText } = props;
102
102
  const texts = (0, i18n_1.getTexts)(props, defaultTexts);
103
103
  const domid = (0, hooks_1.useDomid)();
104
- return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('SearchResults', status !== 'results' && status) },
104
+ return (react_1.default.createElement("div", { className: (0, classUtils_1.modifiedClass)('SearchResults', status !== 'results' && status) },
105
105
  renderTitle(props, texts),
106
106
  react_1.default.createElement(SearchResults_Tabs, { domid: domid, filters: filters, activeIdx: activeFilterIdx, setFilter: setFilter, lang: texts.lang }),
107
107
  react_1.default.createElement("div", { className: "SearchResults__results", id: domid },
package/Selectbox.js CHANGED
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Selectbox = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
6
7
  const Selectbox_1 = tslib_1.__importDefault(require("@hugsmidjan/react/Selectbox"));
7
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
8
8
  const FormField_js_1 = tslib_1.__importDefault(require("./FormField.js"));
9
9
  const getValue = (opt) => {
10
10
  const val = typeof opt === 'object' ? opt.value : opt;
@@ -35,7 +35,7 @@ const Selectbox = (props) => {
35
35
  setIsEmpty(!((_a = selectElm.selectedOptions[0]) === null || _a === void 0 ? void 0 : _a.text));
36
36
  onChange && onChange(e);
37
37
  };
38
- return (react_1.default.createElement(FormField_js_1.default, { className: (0, getBemClass_1.default)('Selectbox', null, className), ssr: ssr, small: small, label: label, empty: isEmpty, filled: isFilled, assistText: assistText, hideLabel: hideLabel, disabled: disabled, readOnly: readOnly, invalid: invalid, errorMessage: errorMessage, required: required, reqText: reqText, id: id, renderInput: (className, inputProps, addFocusProps) => (react_1.default.createElement(Selectbox_1.default, Object.assign({ bem: className.input, ssr: ssr, onChange: _onChange }, inputProps, addFocusProps(selectProps), { selectRef: selectRef }))) }));
38
+ return (react_1.default.createElement(FormField_js_1.default, { className: (0, classUtils_1.modifiedClass)('Selectbox', null, className), ssr: ssr, small: small, label: label, empty: isEmpty, filled: isFilled, assistText: assistText, hideLabel: hideLabel, disabled: disabled, readOnly: readOnly, invalid: invalid, errorMessage: errorMessage, required: required, reqText: reqText, id: id, renderInput: (className, inputProps, addFocusProps) => (react_1.default.createElement(Selectbox_1.default, Object.assign({ bem: className.input, ssr: ssr, onChange: _onChange }, inputProps, addFocusProps(selectProps), { selectRef: selectRef }))) }));
39
39
  };
40
40
  exports.Selectbox = Selectbox;
41
41
  // /** @deprecated Use named export instead (The default export will be removed in v0.11+) */
package/ShareButtons.d.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  import { ShareButtonI18n, ShareButtonPlatforms } from '@reykjavik/hanna-utils/shareButtonsUtils';
2
- import { SSRSupport } from './utils.js';
2
+ import { SSRSupportProps } from './utils.js';
3
3
  export type ShareButtonsProps = {
4
- ssr?: SSRSupport;
5
4
  texts?: Readonly<ShareButtonI18n>;
6
5
  lang?: string;
7
- } & Partial<Record<ShareButtonPlatforms, boolean>>;
6
+ } & SSRSupportProps & Partial<Record<ShareButtonPlatforms, boolean>>;
8
7
  export declare const ShareButtons: (props: ShareButtonsProps) => JSX.Element | null;
9
8
  export default ShareButtons;
package/Sharpie.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Sharpie = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const colors = {
8
8
  green: 1,
9
9
  red: 1,
@@ -21,7 +21,7 @@ const Sharpie = (props) => {
21
21
  const { color, tag, children } = props;
22
22
  const colorModifier = colors[color] ? color : 'green';
23
23
  const Tag = tag && tags[tag] ? tag : 'span';
24
- return react_1.default.createElement(Tag, { className: (0, getBemClass_1.default)('Sharpie', colorModifier) }, children);
24
+ return react_1.default.createElement(Tag, { className: (0, classUtils_1.modifiedClass)('Sharpie', colorModifier) }, children);
25
25
  };
26
26
  exports.Sharpie = Sharpie;
27
27
  exports.default = exports.Sharpie;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import Autosuggest, { RenderSuggestion } from 'react-autosuggest';
3
- import { BemProps } from '@hugsmidjan/react/types';
4
3
  import { DefaultTexts } from '@reykjavik/hanna-utils/i18n';
4
+ import { BemProps } from './utils/types.js';
5
5
  export type SiteSearchACI18n = {
6
6
  lang?: string;
7
7
  /** Label for the autocomplete's combobox container div */
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SiteSearchCurtain = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
6
7
  const hooks_1 = require("@hugsmidjan/react/hooks");
7
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
8
8
  const env_js_1 = require("./utils/env.js");
9
9
  const SiteSearchCurtain = (props) => {
10
10
  const [focused, setFocused] = (0, hooks_1.useLaggedState)(false);
@@ -27,7 +27,7 @@ const SiteSearchCurtain = (props) => {
27
27
  setFocused(false, 100);
28
28
  }
29
29
  };
30
- return (react_1.default.createElement("div", Object.assign({ className: (0, getBemClass_1.default)('SiteSearchCurtain', [focused && 'focused']), onFocus: focusHandler, onBlur: blurHandler }, (env_js_1.isPreact && { onfocusin: focusHandler, onfocusout: blurHandler })), props.children));
30
+ return (react_1.default.createElement("div", Object.assign({ className: (0, classUtils_1.modifiedClass)('SiteSearchCurtain', [focused && 'focused']), onFocus: focusHandler, onBlur: blurHandler }, (env_js_1.isPreact && { onfocusin: focusHandler, onfocusout: blurHandler })), props.children));
31
31
  };
32
32
  exports.SiteSearchCurtain = SiteSearchCurtain;
33
33
  exports.default = exports.SiteSearchCurtain;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FormFieldWrappingProps } from './FormField.js';
3
- import { SSRSupport } from './utils.js';
3
+ import { SSRSupportProps } from './utils.js';
4
4
  type InputElmProps = Omit<JSX.IntrinsicElements['input'], 'className' | 'type' | 'disabled' | 'readOnly' | 'required' | 'onSubmit'>;
5
5
  type WrappingProps = Pick<FormFieldWrappingProps, 'id' | 'label'>;
6
6
  export type SiteSearchInputProps = {
@@ -18,7 +18,6 @@ export type SiteSearchInputProps = {
18
18
  onButtonClick?: () => boolean | void;
19
19
  buttonText?: string;
20
20
  children?: never;
21
- ssr?: SSRSupport;
22
- } & WrappingProps & InputElmProps;
21
+ } & SSRSupportProps & WrappingProps & InputElmProps;
23
22
  export declare const SiteSearchInput: React.ForwardRefExoticComponent<Pick<SiteSearchInputProps, "form" | "label" | "slot" | "style" | "title" | "key" | "list" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "nonce" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "step" | "value" | "pattern" | "name" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "size" | "src" | "multiple" | "alt" | "ssr" | "accept" | "autoComplete" | "capture" | "checked" | "crossOrigin" | "enterKeyHint" | "height" | "max" | "maxLength" | "min" | "minLength" | "width" | "onButtonClick" | "buttonText"> & React.RefAttributes<HTMLInputElement>>;
24
23
  export default SiteSearchInput;
package/Skeleton.js CHANGED
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Skeleton = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
6
7
  const range_1 = tslib_1.__importDefault(require("@hugsmidjan/qj/range"));
7
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
8
- const makeRenderSkeleton = (props) => (key) => (react_1.default.createElement("span", { key: key, className: (0, getBemClass_1.default)('Skeleton', [
8
+ const makeRenderSkeleton = (props) => (key) => (react_1.default.createElement("span", { key: key, className: (0, classUtils_1.modifiedClass)('Skeleton', [
9
9
  props.text && 'text',
10
10
  props.height && 'height--' + props.height,
11
11
  props.gap && 'gap--' + props.gap,
package/SubHeading.js CHANGED
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SubHeading = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
6
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
7
7
  const seenEffect_js_1 = require("./utils/seenEffect.js");
8
8
  const SubHeading = (props) => {
9
9
  const { small, Tag = 'h2', children, align, wide, startSeen } = props;
10
10
  const [ref] = (0, seenEffect_js_1.useSeenEffect)(startSeen);
11
- return (react_1.default.createElement(Tag, { className: (0, getBemClass_1.default)('SubHeading', [
11
+ return (react_1.default.createElement(Tag, { className: (0, classUtils_1.modifiedClass)('SubHeading', [
12
12
  small && 'small',
13
13
  align === 'right' && 'align--' + align,
14
14
  !align && wide && 'wide',
package/Tabs.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SeenProp } from './utils/seenEffect.js';
2
- import { SSRSupport } from './utils.js';
2
+ import { SSRSupportProps } from './utils.js';
3
3
  export type TabItemProps = {
4
4
  label: string;
5
5
  badge?: string | number;
@@ -22,8 +22,7 @@ type BaseTabsProps<T extends TabItemProps = TabItemProps> = {
22
22
  role?: 'tablist' | 'toc';
23
23
  'aria-controls'?: string;
24
24
  activateOnFocus?: boolean;
25
- ssr?: SSRSupport;
26
- };
25
+ } & SSRSupportProps;
27
26
  export type TabsProps<T extends TabItemProps = TabItemProps> = BaseTabsProps<T> & {
28
27
  vertical?: boolean;
29
28
  /** Optional <Tabs/> block connected to the currently active tab */
package/Tabs.js CHANGED
@@ -4,7 +4,7 @@ exports.Tabs = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
6
  const frag_1 = require("@hugsmidjan/qj/frag");
7
- const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
7
+ const classUtils_1 = require("@hugsmidjan/qj/classUtils");
8
8
  const seenEffect_js_1 = require("./utils/seenEffect.js");
9
9
  const utils_js_1 = require("./utils.js");
10
10
  const navKeyEffects = {
@@ -89,7 +89,7 @@ const Tabs = (props) => {
89
89
  listAriaControls,
90
90
  isBrowser,
91
91
  };
92
- return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('Tabs', vertical && 'vertical'), role: tabRole && role, id: id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, onKeyDown: handleKeydown, "data-sprinkled": isBrowser, ref: ref },
92
+ return (react_1.default.createElement("div", { className: (0, classUtils_1.modifiedClass)('Tabs', vertical && 'vertical'), role: tabRole && role, id: id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, onKeyDown: handleKeydown, "data-sprinkled": isBrowser, ref: ref },
93
93
  tabs.map((tabProps, index) => renderTab(tabProps, index, listProps)),
94
94
  subTabs && (react_1.default.createElement(exports.Tabs, Object.assign({}, subTabs, { role: 'role' in subTabs ? subTabs.role : role, activateOnFocus: (_a = subTabs.activateOnFocus) !== null && _a !== void 0 ? _a : activateOnFocus, ssr: (_b = subTabs.ssr) !== null && _b !== void 0 ? _b : ssr, startSeen: true,
95
95
  // just to be sure