@netfoundry/docusaurus-theme 0.2.0 → 0.2.3

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 (141) hide show
  1. package/dist/src/components/Alert/Alert.js +51 -6
  2. package/dist/src/components/Alert/Alert.js.map +7 -1
  3. package/dist/src/components/Alert/index.js +29 -2
  4. package/dist/src/components/Alert/index.js.map +7 -1
  5. package/dist/src/components/CodeBlock/CodeBlock.js +53 -7
  6. package/dist/src/components/CodeBlock/CodeBlock.js.map +7 -1
  7. package/dist/src/components/CodeBlock/index.js +29 -2
  8. package/dist/src/components/CodeBlock/index.js.map +7 -1
  9. package/dist/src/components/Common/Common.js +59 -16
  10. package/dist/src/components/Common/Common.js.map +7 -1
  11. package/dist/src/components/Common/Logos.d.ts +6 -0
  12. package/dist/src/components/Common/Logos.d.ts.map +1 -0
  13. package/dist/src/components/Common/Logos.js +93 -0
  14. package/dist/src/components/Common/Logos.js.map +7 -0
  15. package/dist/src/components/Common/index.d.ts +1 -0
  16. package/dist/src/components/Common/index.d.ts.map +1 -1
  17. package/dist/src/components/Common/index.js +25 -2
  18. package/dist/src/components/Common/index.js.map +7 -1
  19. package/dist/src/components/NetFoundry/Divider/Divider.js +46 -5
  20. package/dist/src/components/NetFoundry/Divider/Divider.js.map +7 -1
  21. package/dist/src/components/NetFoundry/Divider/index.js +23 -2
  22. package/dist/src/components/NetFoundry/Divider/index.js.map +7 -1
  23. package/dist/src/components/NetFoundry/index.js +23 -2
  24. package/dist/src/components/NetFoundry/index.js.map +7 -1
  25. package/dist/src/components/NetFoundryFooter/NetFoundryFooter.d.ts +2 -21
  26. package/dist/src/components/NetFoundryFooter/NetFoundryFooter.d.ts.map +1 -1
  27. package/dist/src/components/NetFoundryFooter/NetFoundryFooter.js +115 -58
  28. package/dist/src/components/NetFoundryFooter/NetFoundryFooter.js.map +7 -1
  29. package/dist/src/components/NetFoundryFooter/defaults.js +50 -23
  30. package/dist/src/components/NetFoundryFooter/defaults.js.map +7 -1
  31. package/dist/src/components/NetFoundryFooter/index.js +23 -2
  32. package/dist/src/components/NetFoundryFooter/index.js.map +7 -1
  33. package/dist/src/components/NetFoundryFooter/types.d.ts +27 -0
  34. package/dist/src/components/NetFoundryFooter/types.d.ts.map +1 -0
  35. package/dist/src/components/NetFoundryFooter/types.js +53 -0
  36. package/dist/src/components/NetFoundryFooter/types.js.map +7 -0
  37. package/dist/src/components/NetFoundryHighlight/NetFoundryHighlight.js +32 -5
  38. package/dist/src/components/NetFoundryHighlight/NetFoundryHighlight.js.map +7 -1
  39. package/dist/src/components/NetFoundryHighlight/index.js +29 -2
  40. package/dist/src/components/NetFoundryHighlight/index.js.map +7 -1
  41. package/dist/src/components/NetFoundryHorizontalSection/NetFoundryHorizontalSection.js +52 -7
  42. package/dist/src/components/NetFoundryHorizontalSection/NetFoundryHorizontalSection.js.map +7 -1
  43. package/dist/src/components/NetFoundryHorizontalSection/index.js +29 -2
  44. package/dist/src/components/NetFoundryHorizontalSection/index.js.map +7 -1
  45. package/dist/src/components/NetFoundryLayout/NetFoundryLayout.js +111 -34
  46. package/dist/src/components/NetFoundryLayout/NetFoundryLayout.js.map +7 -1
  47. package/dist/src/components/NetFoundryLayout/index.js +23 -2
  48. package/dist/src/components/NetFoundryLayout/index.js.map +7 -1
  49. package/dist/src/components/NetFoundryNavbarItems/NetFoundryNavbarItems.js +40 -13
  50. package/dist/src/components/NetFoundryNavbarItems/NetFoundryNavbarItems.js.map +7 -1
  51. package/dist/src/components/NetFoundryNavbarItems/index.js +29 -2
  52. package/dist/src/components/NetFoundryNavbarItems/index.js.map +7 -1
  53. package/dist/src/components/OsTabs/OsTabs.js +53 -17
  54. package/dist/src/components/OsTabs/OsTabs.js.map +7 -1
  55. package/dist/src/components/OsTabs/index.js +29 -2
  56. package/dist/src/components/OsTabs/index.js.map +7 -1
  57. package/dist/src/components/ProductSearch/ProductSearch.js +243 -122
  58. package/dist/src/components/ProductSearch/ProductSearch.js.map +7 -1
  59. package/dist/src/components/ProductSearch/index.js +42 -4
  60. package/dist/src/components/ProductSearch/index.js.map +7 -1
  61. package/dist/src/components/StarUs/StarUs.js +45 -6
  62. package/dist/src/components/StarUs/StarUs.js.map +7 -1
  63. package/dist/src/components/StarUs/index.js +39 -2
  64. package/dist/src/components/StarUs/index.js.map +7 -1
  65. package/dist/src/components/index.js +45 -13
  66. package/dist/src/components/index.js.map +7 -1
  67. package/dist/src/config.d.ts +9 -0
  68. package/dist/src/config.d.ts.map +1 -0
  69. package/dist/src/config.js +34 -0
  70. package/dist/src/config.js.map +7 -0
  71. package/dist/src/css-modules.d.js +2 -0
  72. package/dist/src/css-modules.d.js.map +7 -0
  73. package/dist/src/docusaurus-envhelper.js +111 -64
  74. package/dist/src/docusaurus-envhelper.js.map +7 -1
  75. package/dist/src/docusaurus-plugins/index.js +35 -8
  76. package/dist/src/docusaurus-plugins/index.js.map +7 -1
  77. package/dist/src/docusaurus-plugins/logger.js +66 -38
  78. package/dist/src/docusaurus-plugins/logger.js.map +7 -1
  79. package/dist/src/docusaurus-plugins/remarkCodeSections.js +127 -94
  80. package/dist/src/docusaurus-plugins/remarkCodeSections.js.map +7 -1
  81. package/dist/src/docusaurus-plugins/remarkReplaceMetaUrl.js +50 -22
  82. package/dist/src/docusaurus-plugins/remarkReplaceMetaUrl.js.map +7 -1
  83. package/dist/src/docusaurus-plugins/remarkScopedPath.js +78 -46
  84. package/dist/src/docusaurus-plugins/remarkScopedPath.js.map +7 -1
  85. package/dist/src/docusaurus-plugins/remarkYamlTable.js +84 -49
  86. package/dist/src/docusaurus-plugins/remarkYamlTable.js.map +7 -1
  87. package/dist/src/docusaurus-plugins/remarkYouTube.js +65 -42
  88. package/dist/src/docusaurus-plugins/remarkYouTube.js.map +7 -1
  89. package/dist/src/docusaurus-plugins/timedPlugin.js +42 -15
  90. package/dist/src/docusaurus-plugins/timedPlugin.js.map +7 -1
  91. package/dist/src/docusaurus.d.js +2 -0
  92. package/dist/src/docusaurus.d.js.map +7 -0
  93. package/dist/src/index.d.ts.map +1 -1
  94. package/dist/src/index.js +63 -31
  95. package/dist/src/index.js.map +7 -1
  96. package/dist/src/node.js +23 -7
  97. package/dist/src/node.js.map +7 -1
  98. package/dist/src/options.d.ts +7 -0
  99. package/dist/src/options.d.ts.map +1 -1
  100. package/dist/src/options.js +17 -2
  101. package/dist/src/options.js.map +7 -1
  102. package/dist/src/plugins.js +23 -7
  103. package/dist/src/plugins.js.map +7 -1
  104. package/dist/src/ui.js +25 -8
  105. package/dist/src/ui.js.map +7 -1
  106. package/dist/src/version.js +29 -2
  107. package/dist/src/version.js.map +7 -1
  108. package/dist/theme/BlogPostPage/Metadata.js +35 -2
  109. package/dist/theme/BlogPostPage/Metadata.js.map +7 -1
  110. package/dist/theme/BlogPostPage/StructuredData.js +35 -2
  111. package/dist/theme/BlogPostPage/StructuredData.js.map +7 -1
  112. package/dist/theme/BlogPostPage/index.js +98 -24
  113. package/dist/theme/BlogPostPage/index.js.map +7 -1
  114. package/dist/theme/DocSearch/index.js +95 -27
  115. package/dist/theme/DocSearch/index.js.map +7 -1
  116. package/dist/theme/Layout/index.js +81 -35
  117. package/dist/theme/Layout/index.js.map +7 -1
  118. package/dist/theme/Navbar/Content/index.js +69 -26
  119. package/dist/theme/Navbar/Content/index.js.map +7 -1
  120. package/dist/theme/Navbar/Logo/index.d.ts.map +1 -1
  121. package/dist/theme/Navbar/Logo/index.js +87 -42
  122. package/dist/theme/Navbar/Logo/index.js.map +7 -1
  123. package/dist/theme/OsTabs/index.js +50 -19
  124. package/dist/theme/OsTabs/index.js.map +7 -1
  125. package/dist/theme/SearchBar/index.js +89 -34
  126. package/dist/theme/SearchBar/index.js.map +7 -1
  127. package/package.json +11 -25
  128. package/css/layout.css +0 -14
  129. package/css/legacy.css +0 -2313
  130. package/css/tabs-v1-gradient.css +0 -92
  131. package/css/tabs-v2-glass.css +0 -116
  132. package/css/tabs-v3-minimal.css +0 -86
  133. package/css/tabs-v4-segmented.css +0 -85
  134. package/css/tabs-v5-neon.css +0 -99
  135. package/css/tabs-v6-neumorphic.css +0 -89
  136. package/css/tabs-v7-brutalist.css +0 -81
  137. package/css/tabs-v8-float.css +0 -114
  138. package/css/tabs-v9-line.css +0 -104
  139. package/css/theme.css +0 -72
  140. package/css/vars-dark.css +0 -7
  141. package/css/vars.css +0 -8
@@ -1,18 +1,54 @@
1
- import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState, useEffect } from 'react';
3
- import OriginalTabs from '@theme/Tabs';
4
- import { osName } from 'react-device-detect';
5
- export function OsTabs(props) {
6
- const [defaultValue, setDefaultValue] = useState(null);
7
- useEffect(() => {
8
- const tabs = ['iOS', 'Android', 'Mac OS', 'Windows', 'Linux'];
9
- if (tabs.includes(osName)) {
10
- setDefaultValue(osName);
11
- }
12
- else {
13
- setDefaultValue('Windows');
14
- }
15
- }, []);
16
- return (_jsx(_Fragment, { children: _jsx(OriginalTabs, { ...props, defaultValue: defaultValue ?? undefined, children: props.children }) }));
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var OsTabs_exports = {};
30
+ __export(OsTabs_exports, {
31
+ OsTabs: () => OsTabs
32
+ });
33
+ module.exports = __toCommonJS(OsTabs_exports);
34
+ var import_jsx_runtime = require("react/jsx-runtime");
35
+ var import_react = require("react");
36
+ var import_Tabs = __toESM(require("@theme/Tabs"));
37
+ var import_react_device_detect = require("react-device-detect");
38
+ function OsTabs(props) {
39
+ const [defaultValue, setDefaultValue] = (0, import_react.useState)(null);
40
+ (0, import_react.useEffect)(() => {
41
+ const tabs = ["iOS", "Android", "Mac OS", "Windows", "Linux"];
42
+ if (tabs.includes(import_react_device_detect.osName)) {
43
+ setDefaultValue(import_react_device_detect.osName);
44
+ } else {
45
+ setDefaultValue("Windows");
46
+ }
47
+ }, []);
48
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Tabs.default, { ...props, defaultValue: defaultValue ?? void 0, children: props.children }) });
17
49
  }
18
- //# sourceMappingURL=OsTabs.js.map
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ OsTabs
53
+ });
54
+ //# sourceMappingURL=OsTabs.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"OsTabs.js","sourceRoot":"","sources":["../../../../src/components/OsTabs/OsTabs.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAC,QAAQ,EAAE,SAAS,EAAiB,MAAM,OAAO,CAAC;AACjE,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAM7C,MAAM,UAAU,MAAM,CAAC,KAAkB;IACrC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEtE,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,eAAe,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,eAAe,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACH,4BACI,KAAC,YAAY,OAAK,KAAK,EAAE,YAAY,EAAE,YAAY,IAAI,SAAS,YAC3D,KAAK,CAAC,QAAQ,GACJ,GAGhB,CACN,CAAC;AACN,CAAC"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/OsTabs/OsTabs.tsx"],
4
+ "sourcesContent": ["import React, {useState, useEffect, ReactNode, JSX} from 'react';\r\nimport OriginalTabs from '@theme/Tabs';\r\nimport { osName } from 'react-device-detect';\r\nimport type { ComponentProps } from 'react';\r\n\r\n\r\nexport type OsTabsProps = ComponentProps<typeof OriginalTabs>;\r\n\r\nexport function OsTabs(props: OsTabsProps): JSX.Element {\r\n const [defaultValue, setDefaultValue] = useState<string | null>(null);\r\n\r\n useEffect(() => {\r\n const tabs = ['iOS', 'Android', 'Mac OS', 'Windows', 'Linux'];\r\n if (tabs.includes(osName)) {\r\n setDefaultValue(osName);\r\n } else {\r\n setDefaultValue('Windows');\r\n }\r\n }, []);\r\n\r\n return (\r\n <>\r\n <OriginalTabs {...props} defaultValue={defaultValue ?? undefined}>\r\n {props.children}\r\n </OriginalTabs>\r\n {/* Uncomment the following line to debug the detected and selected values */}\r\n {/* <h2>detected={osName}, selected={defaultValue}</h2> */}\r\n </>\r\n );\r\n}"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBQ;AArBR,mBAAyD;AACzD,kBAAyB;AACzB,iCAAuB;AAMhB,SAAS,OAAO,OAAiC;AACpD,QAAM,CAAC,cAAc,eAAe,QAAI,uBAAwB,IAAI;AAEpE,8BAAU,MAAM;AACZ,UAAM,OAAO,CAAC,OAAO,WAAW,UAAU,WAAW,OAAO;AAC5D,QAAI,KAAK,SAAS,iCAAM,GAAG;AACvB,sBAAgB,iCAAM;AAAA,IAC1B,OAAO;AACH,sBAAgB,SAAS;AAAA,IAC7B;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,SACI,2EACI,sDAAC,YAAAA,SAAA,EAAc,GAAG,OAAO,cAAc,gBAAgB,QAClD,gBAAM,UACX,GAGJ;AAER;",
6
+ "names": ["OriginalTabs"]
7
+ }
@@ -1,2 +1,29 @@
1
- export { OsTabs } from './OsTabs';
2
- //# sourceMappingURL=index.js.map
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var OsTabs_exports = {};
20
+ __export(OsTabs_exports, {
21
+ OsTabs: () => import_OsTabs.OsTabs
22
+ });
23
+ module.exports = __toCommonJS(OsTabs_exports);
24
+ var import_OsTabs = require("./OsTabs");
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ OsTabs
28
+ });
29
+ //# sourceMappingURL=index.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/OsTabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/OsTabs/index.ts"],
4
+ "sourcesContent": ["export { OsTabs } from './OsTabs';\nexport type { OsTabsProps } from './OsTabs';"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;",
6
+ "names": []
7
+ }
@@ -1,140 +1,261 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- // src/components/ProductSearch.tsx
3
- import { useEffect, useMemo, useState } from "react";
4
- import { InstantSearch, SearchBox, Pagination, Snippet, Configure, Stats, PoweredBy, useHits, useConfigure, useSearchBox, } from "react-instantsearch";
5
- import { history } from "instantsearch.js/es/lib/routers";
6
- import { singleIndex } from "instantsearch.js/es/lib/stateMappings";
7
- import { liteClient as algoliasearch } from "algoliasearch/lite";
8
- import styles from "./ProductSearch.module.css";
9
- import clsx from "clsx";
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var ProductSearch_exports = {};
30
+ __export(ProductSearch_exports, {
31
+ default: () => ProductSearch
32
+ });
33
+ module.exports = __toCommonJS(ProductSearch_exports);
34
+ var import_jsx_runtime = require("react/jsx-runtime");
35
+ var import_react = require("react");
36
+ var import_react_instantsearch = require("react-instantsearch");
37
+ var import_routers = require("instantsearch.js/es/lib/routers");
38
+ var import_stateMappings = require("instantsearch.js/es/lib/stateMappings");
39
+ var import_lite = require("algoliasearch/lite");
40
+ var import_ProductSearch = __toESM(require("./ProductSearch.module.css"));
41
+ var import_clsx = __toESM(require("clsx"));
10
42
  function getUrl(h) {
11
- return toRelative(((typeof h.url === "string" && h.url) ||
12
- (Array.isArray(h.url) && h.url[0]) ||
13
- h.url_without_anchor ||
14
- h.url_without_variables ||
15
- "#") + (h.anchor ? `#${h.anchor}` : ""));
43
+ return toRelative(
44
+ (typeof h.url === "string" && h.url || Array.isArray(h.url) && h.url[0] || h.url_without_anchor || h.url_without_variables || "#") + (h.anchor ? `#${h.anchor}` : "")
45
+ );
16
46
  }
17
47
  function toRelative(href) {
18
- try {
19
- const u = new URL(href, typeof window !== "undefined" ? window.location.origin : "http://localhost");
20
- return u.pathname + u.search + u.hash;
21
- }
22
- catch {
23
- return href.startsWith("/") ? href : `/${href}`;
24
- }
48
+ try {
49
+ const u = new URL(href, typeof window !== "undefined" ? window.location.origin : "http://localhost");
50
+ return u.pathname + u.search + u.hash;
51
+ } catch {
52
+ return href.startsWith("/") ? href : `/${href}`;
53
+ }
25
54
  }
26
55
  function shortUrl(h) {
27
- return toRelative(getUrl(h));
56
+ return toRelative(getUrl(h));
28
57
  }
29
58
  function titleFrom(h) {
30
- return (h.title ||
31
- h.hierarchy?.lvl2 ||
32
- h.hierarchy?.lvl1 ||
33
- h.hierarchy?.lvl0 ||
34
- shortUrl(h));
59
+ return h.title || h.hierarchy?.lvl2 || h.hierarchy?.lvl1 || h.hierarchy?.lvl0 || shortUrl(h);
35
60
  }
36
61
  function ProductBadge({ p }) {
37
- return p ? (_jsx("span", { className: `${styles.badge} ${styles[`p_${p}`]}`, children: p })) : null;
62
+ return p ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: `${import_ProductSearch.default.badge} ${import_ProductSearch.default[`p_${p}`]}`, children: p }) : null;
38
63
  }
39
- /** Configure-based filter (no remount, reliable) */
40
64
  function ProductFilter({ product }) {
41
- useConfigure({
42
- facetFilters: product ? [[`docusaurus_tag:docs-${product}-current`]] : [],
43
- });
44
- return null;
65
+ (0, import_react_instantsearch.useConfigure)({
66
+ facetFilters: product ? [[`docusaurus_tag:docs-${product}-current`]] : []
67
+ });
68
+ return null;
45
69
  }
46
- /** Group by section (lvl0), then by page (no duplicate “Learn”) */
47
70
  function GroupedHits() {
48
- const { hits } = useHits();
49
- const sections = new Map();
50
- for (const h of hits) {
51
- const lvl0 = h.hierarchy?.lvl0 || "Other";
52
- const page = h.url_without_anchor ||
53
- (typeof h.url === "string" ? h.url.split("#")[0] : "") ||
54
- "";
55
- const byPage = sections.get(lvl0) || new Map();
56
- const g = byPage.get(page) ||
57
- { header: titleFrom(h), url: page || getUrl(h), lvl0, items: [] };
58
- g.items.push(h);
59
- byPage.set(page, g);
60
- sections.set(lvl0, byPage);
61
- }
62
- return (_jsx("div", { className: styles.groupList, children: [...sections.entries()].map(([lvl0, byPage]) => (_jsxs("div", { className: styles.section, children: [_jsx("div", { className: styles.sectionHeader, children: lvl0 }), [...byPage.values()].map((g) => (_jsxs("div", { className: styles.group, children: [_jsxs("div", { className: styles.groupHeaderRow, children: [_jsx("a", { href: toRelative(g.url), className: styles.groupHeader, children: g.header }), _jsx(ProductBadge, { p: g.items[0].product })] }), _jsx("div", { className: styles.groupSnips, children: g.items.slice(0, 3).map((h, i) => (_jsx("div", { className: styles.snippet, children: _jsx(Snippet, { attribute: "content", hit: h }) }, i))) }), _jsx("div", { className: styles.groupUrl, children: _jsx("a", { href: getUrl(g.items[0]), children: shortUrl(g.items[0]) }) })] }, g.url)))] }, lvl0))) }));
71
+ const { hits } = (0, import_react_instantsearch.useHits)();
72
+ const sections = /* @__PURE__ */ new Map();
73
+ for (const h of hits) {
74
+ const lvl0 = h.hierarchy?.lvl0 || "Other";
75
+ const page = h.url_without_anchor || (typeof h.url === "string" ? h.url.split("#")[0] : "") || "";
76
+ const byPage = sections.get(lvl0) || /* @__PURE__ */ new Map();
77
+ const g = byPage.get(page) || { header: titleFrom(h), url: page || getUrl(h), lvl0, items: [] };
78
+ g.items.push(h);
79
+ byPage.set(page, g);
80
+ sections.set(lvl0, byPage);
81
+ }
82
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_ProductSearch.default.groupList, children: [...sections.entries()].map(([lvl0, byPage]) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_ProductSearch.default.section, children: [
83
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_ProductSearch.default.sectionHeader, children: lvl0 }),
84
+ [...byPage.values()].map((g) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_ProductSearch.default.group, children: [
85
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_ProductSearch.default.groupHeaderRow, children: [
86
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: toRelative(g.url), className: import_ProductSearch.default.groupHeader, children: g.header }),
87
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProductBadge, { p: g.items[0].product })
88
+ ] }),
89
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_ProductSearch.default.groupSnips, children: g.items.slice(0, 3).map((h, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_ProductSearch.default.snippet, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_instantsearch.Snippet, { attribute: "content", hit: h }) }, i)) }),
90
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_ProductSearch.default.groupUrl, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: getUrl(g.items[0]), children: shortUrl(g.items[0]) }) })
91
+ ] }, g.url))
92
+ ] }, lvl0)) });
63
93
  }
64
94
  function QueryWatcher({ onChange }) {
65
- const { query } = useSearchBox();
66
- useEffect(() => onChange(query.trim().length >= 2), [query, onChange]);
67
- return null;
95
+ const { query } = (0, import_react_instantsearch.useSearchBox)();
96
+ (0, import_react.useEffect)(() => onChange(query.trim().length >= 2), [query, onChange]);
97
+ return null;
68
98
  }
69
- export default function ProductSearch({ appId, apiKey, indexName, products = ["frontdoor", "openziti", "onprem", "zlan", "zrok"], extraContainerClasses = [], }) {
70
- // read initial pill from ?product= for back/forward + shareable URLs
71
- const [product, setProduct] = useState("");
72
- const [searchLongEnough, setSearchLongEnough] = useState(false);
73
- useEffect(() => {
74
- if (typeof window === "undefined")
75
- return;
76
- const p = new URLSearchParams(window.location.search).get("product") || "";
77
- setProduct(p);
78
- }, []);
79
- useEffect(() => {
80
- if (typeof window === "undefined")
81
- return;
82
- const u = new URL(window.location.href);
83
- if (product)
84
- u.searchParams.set("product", product);
85
- else
86
- u.searchParams.delete("product");
87
- window.history.replaceState({}, "", u);
88
- }, [product]);
89
- const base = useMemo(() => algoliasearch(appId, apiKey), [appId, apiKey]);
90
- // Gate only when no query AND no pill active (prevents “freeze” on pill-only)
91
- const searchClient = useMemo(() => ({
92
- ...base,
93
- search(requests) {
94
- const allShort = requests.every((r) => (r.params?.query ?? "").length < 2);
95
- if (allShort) { // block ALL searches until query >= 2
96
- return Promise.resolve({
97
- results: requests.map(() => ({
98
- hits: [],
99
- nbHits: 0,
100
- page: 0,
101
- nbPages: 0,
102
- processingTimeMS: 0,
103
- params: "",
104
- query: "",
105
- exhaustiveNbHits: false,
106
- })),
107
- });
99
+ function ProductSearch({
100
+ appId,
101
+ apiKey,
102
+ indexName,
103
+ products = ["frontdoor", "openziti", "onprem", "zlan", "zrok"],
104
+ extraContainerClasses = []
105
+ }) {
106
+ const [product, setProduct] = (0, import_react.useState)("");
107
+ const [searchLongEnough, setSearchLongEnough] = (0, import_react.useState)(false);
108
+ (0, import_react.useEffect)(() => {
109
+ if (typeof window === "undefined") return;
110
+ const p = new URLSearchParams(window.location.search).get("product") || "";
111
+ setProduct(p);
112
+ }, []);
113
+ (0, import_react.useEffect)(() => {
114
+ if (typeof window === "undefined") return;
115
+ const u = new URL(window.location.href);
116
+ if (product) u.searchParams.set("product", product);
117
+ else u.searchParams.delete("product");
118
+ window.history.replaceState({}, "", u);
119
+ }, [product]);
120
+ const base = (0, import_react.useMemo)(() => (0, import_lite.liteClient)(appId, apiKey), [appId, apiKey]);
121
+ const searchClient = (0, import_react.useMemo)(
122
+ () => ({
123
+ ...base,
124
+ search(requests) {
125
+ const allShort = requests.every(
126
+ (r) => (r.params?.query ?? "").length < 2
127
+ );
128
+ if (allShort) {
129
+ return Promise.resolve({
130
+ results: requests.map(() => ({
131
+ hits: [],
132
+ nbHits: 0,
133
+ page: 0,
134
+ nbPages: 0,
135
+ processingTimeMS: 0,
136
+ params: "",
137
+ query: "",
138
+ exhaustiveNbHits: false
139
+ }))
140
+ });
141
+ }
142
+ return base.search(requests);
143
+ }
144
+ }),
145
+ [base, product]
146
+ );
147
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_ProductSearch.default.wrap, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
148
+ import_react_instantsearch.InstantSearch,
149
+ {
150
+ searchClient,
151
+ indexName,
152
+ routing: {
153
+ router: (0, import_routers.history)({ writeDelay: 300 }),
154
+ stateMapping: (0, import_stateMappings.singleIndex)(indexName)
155
+ },
156
+ children: [
157
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(QueryWatcher, { onChange: setSearchLongEnough }),
158
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_ProductSearch.default.topbar, children: [
159
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
160
+ import_react_instantsearch.SearchBox,
161
+ {
162
+ onKeyUp: (e) => {
163
+ setSearchLongEnough(e.currentTarget.value.length > 1);
164
+ },
165
+ autoFocus: true,
166
+ classNames: { input: import_ProductSearch.default.searchInput },
167
+ placeholder: "Enter your search criteria here"
108
168
  }
109
- return base.search(requests);
110
- },
111
- }), [base, product]);
112
- return (_jsx("div", { className: styles.wrap, children: _jsxs(InstantSearch, { searchClient: searchClient, indexName: indexName, routing: {
113
- router: history({ writeDelay: 300 }),
114
- stateMapping: singleIndex(indexName),
115
- }, children: [_jsx(QueryWatcher, { onChange: setSearchLongEnough }), _jsxs("div", { className: styles.topbar, children: [_jsx(SearchBox, { onKeyUp: (e) => {
116
- setSearchLongEnough(e.currentTarget.value.length > 1);
117
- }, autoFocus: true, classNames: { input: styles.searchInput }, placeholder: "Enter your search criteria here" }), _jsxs("div", { className: styles.pills, children: [_jsx("button", { className: `${styles.pill} ${!product ? styles.active : ""}`, onClick: () => searchLongEnough && setProduct(""), disabled: !searchLongEnough, children: "All" }), products.map((p) => (_jsx("button", { className: `${styles.pill} ${product === p ? styles.active : ""}`, onClick: () => searchLongEnough && setProduct(p), disabled: !searchLongEnough, children: p }, p)))] })] }), _jsx(Configure, { hitsPerPage: 20, attributesToRetrieve: [
118
- "url",
119
- "url_without_anchor",
120
- "url_without_variables",
121
- "anchor",
122
- "hierarchy",
123
- "product",
124
- "content",
125
- "title",
126
- ], attributesToHighlight: [
127
- "title",
128
- "hierarchy.lvl1",
129
- "hierarchy.lvl2",
130
- "content",
131
- ], attributesToSnippet: ["content:15"], snippetEllipsisText: "\u2026", distinct: true }), searchLongEnough && _jsx(ProductFilter, { product: product }), _jsxs("div", { className: clsx(styles.container, extraContainerClasses), children: [_jsxs("div", { className: styles.results, children: [_jsx("div", { className: styles.meta, children: _jsx(Stats, {}) }), _jsx("div", { className: styles.grid, children: _jsx(GroupedHits, {}) }), _jsx(Pagination, { showFirst: false, showLast: false, classNames: {
132
- root: styles.pagination,
133
- list: styles.pageList,
134
- item: styles.pageItem,
135
- selectedItem: styles.pageItemSelected,
136
- disabledItem: styles.pageItemDisabled,
137
- link: styles.pageLink,
138
- } })] }), _jsxs("div", { className: styles.footer, children: [_jsxs("div", { className: styles.kbdRow, children: [_jsxs("span", { children: [_jsx("kbd", { children: "\u21B5" }), " open"] }), _jsxs("span", { children: [_jsx("kbd", { children: "\u2191" }), _jsx("kbd", { children: "\u2193" }), " navigate"] }), _jsxs("span", { children: [_jsx("kbd", { children: "esc" }), " close"] })] }), _jsx(PoweredBy, {})] })] })] }) }));
169
+ ),
170
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_ProductSearch.default.pills, children: [
171
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
172
+ "button",
173
+ {
174
+ className: `${import_ProductSearch.default.pill} ${!product ? import_ProductSearch.default.active : ""}`,
175
+ onClick: () => searchLongEnough && setProduct(""),
176
+ disabled: !searchLongEnough,
177
+ children: "All"
178
+ }
179
+ ),
180
+ products.map((p) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
181
+ "button",
182
+ {
183
+ className: `${import_ProductSearch.default.pill} ${product === p ? import_ProductSearch.default.active : ""}`,
184
+ onClick: () => searchLongEnough && setProduct(p),
185
+ disabled: !searchLongEnough,
186
+ children: p
187
+ },
188
+ p
189
+ ))
190
+ ] })
191
+ ] }),
192
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
193
+ import_react_instantsearch.Configure,
194
+ {
195
+ hitsPerPage: 20,
196
+ attributesToRetrieve: [
197
+ "url",
198
+ "url_without_anchor",
199
+ "url_without_variables",
200
+ "anchor",
201
+ "hierarchy",
202
+ "product",
203
+ "content",
204
+ "title"
205
+ ],
206
+ attributesToHighlight: [
207
+ "title",
208
+ "hierarchy.lvl1",
209
+ "hierarchy.lvl2",
210
+ "content"
211
+ ],
212
+ attributesToSnippet: ["content:15"],
213
+ snippetEllipsisText: "\u2026",
214
+ distinct: true
215
+ }
216
+ ),
217
+ searchLongEnough && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProductFilter, { product }),
218
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_clsx.default)(import_ProductSearch.default.container, extraContainerClasses), children: [
219
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_ProductSearch.default.results, children: [
220
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_ProductSearch.default.meta, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_instantsearch.Stats, {}) }),
221
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_ProductSearch.default.grid, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GroupedHits, {}) }),
222
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
223
+ import_react_instantsearch.Pagination,
224
+ {
225
+ showFirst: false,
226
+ showLast: false,
227
+ classNames: {
228
+ root: import_ProductSearch.default.pagination,
229
+ list: import_ProductSearch.default.pageList,
230
+ item: import_ProductSearch.default.pageItem,
231
+ selectedItem: import_ProductSearch.default.pageItemSelected,
232
+ disabledItem: import_ProductSearch.default.pageItemDisabled,
233
+ link: import_ProductSearch.default.pageLink
234
+ }
235
+ }
236
+ )
237
+ ] }),
238
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_ProductSearch.default.footer, children: [
239
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_ProductSearch.default.kbdRow, children: [
240
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
241
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("kbd", { children: "\u21B5" }),
242
+ " open"
243
+ ] }),
244
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
245
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("kbd", { children: "\u2191" }),
246
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("kbd", { children: "\u2193" }),
247
+ " navigate"
248
+ ] }),
249
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
250
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("kbd", { children: "esc" }),
251
+ " close"
252
+ ] })
253
+ ] }),
254
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_instantsearch.PoweredBy, {})
255
+ ] })
256
+ ] })
257
+ ]
258
+ }
259
+ ) });
139
260
  }
140
- //# sourceMappingURL=ProductSearch.js.map
261
+ //# sourceMappingURL=ProductSearch.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"ProductSearch.js","sourceRoot":"","sources":["../../../../src/components/ProductSearch/ProductSearch.tsx"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/ProductSearch/ProductSearch.tsx"],
4
+ "sourcesContent": ["// src/components/ProductSearch.tsx\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\nimport {\r\n InstantSearch,\r\n SearchBox,\r\n Pagination,\r\n Snippet,\r\n Configure,\r\n Stats,\r\n PoweredBy,\r\n useHits,\r\n useConfigure,\r\n useSearchBox,\r\n} from \"react-instantsearch\";\r\nimport { history } from \"instantsearch.js/es/lib/routers\";\r\nimport { singleIndex } from \"instantsearch.js/es/lib/stateMappings\";\r\nimport { liteClient as algoliasearch } from \"algoliasearch/lite\";\r\nimport styles from \"./ProductSearch.module.css\";\r\nimport clsx from \"clsx\";\r\n\r\ntype HitRec = {\r\n url?: string | string[];\r\n url_without_anchor?: string;\r\n url_without_variables?: string;\r\n anchor?: string;\r\n hierarchy?: { lvl0?: string; lvl1?: string; lvl2?: string };\r\n product?: string;\r\n content?: string;\r\n title?: string;\r\n};\r\n\r\ntype Props = {\r\n appId: string;\r\n apiKey: string;\r\n indexName: string;\r\n products?: string[];\r\n extraContainerClasses?: string[];\r\n};\r\n\r\nfunction getUrl(h: HitRec): string {\r\n return toRelative(\r\n ((typeof h.url === \"string\" && h.url) ||\r\n (Array.isArray(h.url) && h.url[0]) ||\r\n h.url_without_anchor ||\r\n h.url_without_variables ||\r\n \"#\") + (h.anchor ? `#${h.anchor}` : \"\")\r\n );\r\n}\r\nfunction toRelative(href: string): string {\r\n try {\r\n const u = new URL(href, typeof window !== \"undefined\" ? window.location.origin : \"http://localhost\");\r\n return u.pathname + u.search + u.hash;\r\n } catch {\r\n return href.startsWith(\"/\") ? href : `/${href}`;\r\n }\r\n}\r\nfunction shortUrl(h: HitRec): string {\r\n return toRelative(getUrl(h));\r\n}\r\nfunction titleFrom(h: HitRec): string {\r\n return (\r\n h.title ||\r\n h.hierarchy?.lvl2 ||\r\n h.hierarchy?.lvl1 ||\r\n h.hierarchy?.lvl0 ||\r\n shortUrl(h)\r\n );\r\n}\r\nfunction ProductBadge({ p }: { p?: string }) {\r\n return p ? (\r\n <span className={`${styles.badge} ${styles[`p_${p}`]}`}>{p}</span>\r\n ) : null;\r\n}\r\n\r\n/** Configure-based filter (no remount, reliable) */\r\nfunction ProductFilter({ product }: { product: string }) {\r\n useConfigure({\r\n facetFilters: product ? [[`docusaurus_tag:docs-${product}-current`]] : [],\r\n });\r\n return null;\r\n}\r\n\r\n/** Group by section (lvl0), then by page (no duplicate \u201CLearn\u201D) */\r\nfunction GroupedHits() {\r\n const { hits } = useHits<HitRec>();\r\n const sections = new Map<\r\n string,\r\n Map<string, { header: string; url: string; lvl0?: string; items: HitRec[] }>\r\n >();\r\n\r\n for (const h of hits) {\r\n const lvl0 = h.hierarchy?.lvl0 || \"Other\";\r\n const page =\r\n h.url_without_anchor ||\r\n (typeof h.url === \"string\" ? h.url.split(\"#\")[0] : \"\") ||\r\n \"\";\r\n\r\n const byPage = sections.get(lvl0) || new Map();\r\n const g =\r\n byPage.get(page) ||\r\n { header: titleFrom(h), url: page || getUrl(h), lvl0, items: [] };\r\n\r\n g.items.push(h);\r\n byPage.set(page, g);\r\n sections.set(lvl0, byPage);\r\n }\r\n\r\n return (\r\n <div className={styles.groupList}>\r\n {[...sections.entries()].map(([lvl0, byPage]) => (\r\n <div key={lvl0} className={styles.section}>\r\n <div className={styles.sectionHeader}>{lvl0}</div>\r\n {[...byPage.values()].map((g) => (\r\n <div key={g.url} className={styles.group}>\r\n <div className={styles.groupHeaderRow}>\r\n <a href={toRelative(g.url)} className={styles.groupHeader}>\r\n {g.header}\r\n </a>\r\n <ProductBadge p={g.items[0].product} />\r\n </div>\r\n <div className={styles.groupSnips}>\r\n {g.items.slice(0, 3).map((h, i) => (\r\n <div key={i} className={styles.snippet}>\r\n <Snippet attribute=\"content\" hit={h as any} />\r\n </div>\r\n ))}\r\n </div>\r\n <div className={styles.groupUrl}>\r\n <a href={getUrl(g.items[0])}>{shortUrl(g.items[0])}</a>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nfunction QueryWatcher({ onChange }: { onChange: (ok: boolean) => void }) {\r\n const { query } = useSearchBox();\r\n useEffect(() => onChange(query.trim().length >= 2), [query, onChange]);\r\n return null;\r\n}\r\n\r\nexport default function ProductSearch({\r\n appId,\r\n apiKey,\r\n indexName,\r\n products = [\"frontdoor\", \"openziti\", \"onprem\", \"zlan\", \"zrok\"],\r\n extraContainerClasses = [],\r\n }: Props) {\r\n // read initial pill from ?product= for back/forward + shareable URLs\r\n const [product, setProduct] = useState<string>(\"\");\r\n const [searchLongEnough, setSearchLongEnough] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n const p = new URLSearchParams(window.location.search).get(\"product\") || \"\";\r\n setProduct(p);\r\n }, []);\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n const u = new URL(window.location.href);\r\n if (product) u.searchParams.set(\"product\", product);\r\n else u.searchParams.delete(\"product\");\r\n window.history.replaceState({}, \"\", u);\r\n }, [product]);\r\n\r\n const base = useMemo(() => algoliasearch(appId, apiKey), [appId, apiKey]);\r\n\r\n // Gate only when no query AND no pill active (prevents \u201Cfreeze\u201D on pill-only)\r\n const searchClient = useMemo(\r\n () => ({\r\n ...base,\r\n search(requests: any[]) {\r\n const allShort = requests.every(\r\n (r: any) => (r.params?.query ?? \"\").length < 2\r\n );\r\n if (allShort) { // block ALL searches until query >= 2\r\n return Promise.resolve({\r\n results: requests.map(() => ({\r\n hits: [],\r\n nbHits: 0,\r\n page: 0,\r\n nbPages: 0,\r\n processingTimeMS: 0,\r\n params: \"\",\r\n query: \"\",\r\n exhaustiveNbHits: false,\r\n })),\r\n });\r\n }\r\n return (base as any).search(requests);\r\n },\r\n }),\r\n [base, product]\r\n );\r\n\r\n return (\r\n <div className={styles.wrap}>\r\n <InstantSearch\r\n searchClient={searchClient}\r\n indexName={indexName}\r\n routing={{\r\n router: history({ writeDelay: 300 }),\r\n stateMapping: singleIndex(indexName),\r\n } as any}\r\n >\r\n <QueryWatcher onChange={setSearchLongEnough} />\r\n <div className={styles.topbar}>\r\n <SearchBox\r\n onKeyUp={(e: React.KeyboardEvent<HTMLInputElement>) => {\r\n setSearchLongEnough((e.currentTarget as HTMLInputElement).value.length > 1);\r\n }}\r\n autoFocus\r\n classNames={{ input: styles.searchInput }}\r\n placeholder=\"Enter your search criteria here\"\r\n />\r\n <div className={styles.pills}>\r\n <button\r\n className={`${styles.pill} ${!product ? styles.active : \"\"}`}\r\n onClick={() => searchLongEnough && setProduct(\"\")}\r\n disabled={!searchLongEnough}\r\n >\r\n All\r\n </button>\r\n {products.map((p) => (\r\n <button\r\n key={p}\r\n className={`${styles.pill} ${product === p ? styles.active : \"\"}`}\r\n onClick={() => searchLongEnough && setProduct(p)}\r\n disabled={!searchLongEnough}\r\n >\r\n {p}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* static config */}\r\n <Configure\r\n hitsPerPage={20}\r\n attributesToRetrieve={[\r\n \"url\",\r\n \"url_without_anchor\",\r\n \"url_without_variables\",\r\n \"anchor\",\r\n \"hierarchy\",\r\n \"product\",\r\n \"content\",\r\n \"title\",\r\n ]}\r\n attributesToHighlight={[\r\n \"title\",\r\n \"hierarchy.lvl1\",\r\n \"hierarchy.lvl2\",\r\n \"content\",\r\n ]}\r\n attributesToSnippet={[\"content:15\"]}\r\n snippetEllipsisText=\"\u2026\"\r\n distinct\r\n />\r\n\r\n {searchLongEnough && <ProductFilter product={product} />}\r\n\r\n <div className={clsx(styles.container, extraContainerClasses)}>\r\n <div className={styles.results}>\r\n <div className={styles.meta}>\r\n <Stats />\r\n </div>\r\n <div className={styles.grid}>\r\n <GroupedHits />\r\n </div>\r\n <Pagination\r\n showFirst={false}\r\n showLast={false}\r\n classNames={{\r\n root: styles.pagination,\r\n list: styles.pageList,\r\n item: styles.pageItem,\r\n selectedItem: styles.pageItemSelected,\r\n disabledItem: styles.pageItemDisabled,\r\n link: styles.pageLink,\r\n }}\r\n />\r\n </div>\r\n <div className={styles.footer}>\r\n <div className={styles.kbdRow}>\r\n <span>\r\n <kbd>\u21B5</kbd> open\r\n </span>\r\n <span>\r\n <kbd>\u2191</kbd>\r\n <kbd>\u2193</kbd> navigate\r\n </span>\r\n <span>\r\n <kbd>esc</kbd> close\r\n </span>\r\n </div>\r\n <PoweredBy />\r\n </div>\r\n </div>\r\n </InstantSearch>\r\n </div>\r\n );\r\n}\r\n"],
5
+ "mappings": "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",
6
+ "names": ["styles", "algoliasearch", "clsx"]
7
+ }