bsmnt 0.2.10 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/configs/skills.d.ts +27 -0
  2. package/dist/configs/skills.d.ts.map +1 -0
  3. package/dist/configs/skills.js +18 -0
  4. package/dist/configs/skills.js.map +1 -0
  5. package/dist/configs/skills.json +26 -0
  6. package/dist/helpers/add/hooks-config.d.ts.map +1 -1
  7. package/dist/helpers/add/hooks-config.js +0 -6
  8. package/dist/helpers/add/hooks-config.js.map +1 -1
  9. package/dist/helpers/create/copy-template.d.ts +1 -1
  10. package/dist/helpers/create/copy-template.d.ts.map +1 -1
  11. package/dist/helpers/create/index.d.ts.map +1 -1
  12. package/dist/helpers/create/index.js +2 -1
  13. package/dist/helpers/create/index.js.map +1 -1
  14. package/dist/helpers/create/setup-agent.d.ts.map +1 -1
  15. package/dist/helpers/create/setup-agent.js +15 -5
  16. package/dist/helpers/create/setup-agent.js.map +1 -1
  17. package/dist/helpers/integrate/merge-config.d.ts.map +1 -1
  18. package/dist/helpers/integrate/merge-config.js +1 -2
  19. package/dist/helpers/integrate/merge-config.js.map +1 -1
  20. package/dist/helpers/integrate/sanity/config.d.ts.map +1 -1
  21. package/dist/helpers/integrate/sanity/config.js +5 -10
  22. package/dist/helpers/integrate/sanity/config.js.map +1 -1
  23. package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts.map +1 -1
  24. package/dist/helpers/integrate/sanity/mergers/layout-merger.js +13 -12
  25. package/dist/helpers/integrate/sanity/mergers/layout-merger.js.map +1 -1
  26. package/dist/helpers/skills/index.d.ts +10 -0
  27. package/dist/helpers/skills/index.d.ts.map +1 -0
  28. package/dist/helpers/skills/index.js +136 -0
  29. package/dist/helpers/skills/index.js.map +1 -0
  30. package/dist/index.js +102 -35
  31. package/dist/index.js.map +1 -1
  32. package/package.json +3 -2
  33. package/src/helpers/integrate/sanity/files/app/api/blog/[slug]/route.ts +2 -1
  34. package/src/helpers/integrate/sanity/files/lib/integrations/sanity/confirm-publish-action.ts +31 -0
  35. package/src/helpers/integrate/sanity/files/lib/integrations/sanity/sanity.config.ts +17 -0
  36. package/src/helpers/integrate/sanity/files/lib/utils/json-ld.tsx +249 -0
  37. package/src/template-hooks/config.js +0 -6
  38. package/src/templates/next-default/app/layout.tsx +18 -0
  39. package/src/templates/next-default/lib/hooks/use-device-detection.ts +1 -1
  40. package/src/templates/next-default/lib/hooks/use-media-breakpoint.ts +1 -1
  41. package/src/templates/next-default/lib/hooks/use-media.ts +29 -0
  42. package/src/templates/next-default/lib/utils/json-ld.tsx +199 -0
  43. package/src/templates/next-default/package.json +1 -1
  44. package/src/templates/next-default/tsconfig.json +1 -0
  45. package/src/templates/next-experiments/app/layout.tsx +18 -0
  46. package/src/templates/next-experiments/lib/hooks/use-device-detection.ts +1 -1
  47. package/src/templates/next-experiments/lib/hooks/use-media-breakpoint.ts +1 -1
  48. package/src/templates/next-experiments/lib/hooks/use-media.ts +29 -0
  49. package/src/templates/next-experiments/lib/utils/json-ld.tsx +199 -0
  50. package/src/templates/next-experiments/package.json +1 -1
  51. package/src/templates/next-experiments/tsconfig.json +1 -0
  52. package/src/templates/next-pagebuilder/.env.example +11 -0
  53. package/src/templates/next-pagebuilder/README.md +23 -0
  54. package/src/templates/next-pagebuilder/_gitignore +67 -0
  55. package/src/templates/next-pagebuilder/app/(content)/[[...slug]]/page.tsx +68 -0
  56. package/src/templates/next-pagebuilder/app/(content)/layout.tsx +13 -0
  57. package/src/templates/next-pagebuilder/app/api/[[...slug]]/route.ts +100 -0
  58. package/src/templates/next-pagebuilder/app/api/draft-mode/disable/route.ts +7 -0
  59. package/src/templates/next-pagebuilder/app/api/draft-mode/enable/route.ts +20 -0
  60. package/src/templates/next-pagebuilder/app/api/revalidate/route.ts +121 -0
  61. package/src/templates/next-pagebuilder/app/favicon.ico +0 -0
  62. package/src/templates/next-pagebuilder/app/layout.tsx +80 -0
  63. package/src/templates/next-pagebuilder/app/robots.ts +15 -0
  64. package/src/templates/next-pagebuilder/app/sitemap.md/route.ts +124 -0
  65. package/src/templates/next-pagebuilder/app/sitemap.xml/route.ts +80 -0
  66. package/src/templates/next-pagebuilder/app/studio/[[...tool]]/page.tsx +8 -0
  67. package/src/templates/next-pagebuilder/biome.json +239 -0
  68. package/src/templates/next-pagebuilder/components/layout/footer/index.tsx +95 -0
  69. package/src/templates/next-pagebuilder/components/layout/header/components/cta-button.tsx +28 -0
  70. package/src/templates/next-pagebuilder/components/layout/header/components/mega-menu-panel.tsx +90 -0
  71. package/src/templates/next-pagebuilder/components/layout/header/components/nav-item-renderer.tsx +98 -0
  72. package/src/templates/next-pagebuilder/components/layout/header/components/nav-leaf-item.tsx +33 -0
  73. package/src/templates/next-pagebuilder/components/layout/header/components/types.ts +7 -0
  74. package/src/templates/next-pagebuilder/components/layout/header/header-client.tsx +110 -0
  75. package/src/templates/next-pagebuilder/components/layout/header/index.tsx +8 -0
  76. package/src/templates/next-pagebuilder/components/layout/json-ld/index.tsx +45 -0
  77. package/src/templates/next-pagebuilder/components/layout/wrapper/index.tsx +30 -0
  78. package/src/templates/next-pagebuilder/components/page-builder/components/article-content/index.tsx +83 -0
  79. package/src/templates/next-pagebuilder/components/page-builder/components/article-content/related-post-item.tsx +27 -0
  80. package/src/templates/next-pagebuilder/components/page-builder/components/description.tsx +17 -0
  81. package/src/templates/next-pagebuilder/components/page-builder/components/hero.tsx +17 -0
  82. package/src/templates/next-pagebuilder/components/page-builder/components/post-collection/content-card.tsx +66 -0
  83. package/src/templates/next-pagebuilder/components/page-builder/components/post-collection/content-grid.tsx +42 -0
  84. package/src/templates/next-pagebuilder/components/page-builder/components/post-collection/index.tsx +28 -0
  85. package/src/templates/next-pagebuilder/components/page-builder/components/post-collection/types.ts +16 -0
  86. package/src/templates/next-pagebuilder/components/page-builder/renderer.tsx +36 -0
  87. package/src/templates/next-pagebuilder/components/page-builder/types.ts +23 -0
  88. package/src/templates/next-pagebuilder/components/page-document/index.tsx +91 -0
  89. package/src/templates/next-pagebuilder/components/sanity/draft-mode-toggle.tsx +27 -0
  90. package/src/templates/next-pagebuilder/components/sanity/rich-text.tsx +87 -0
  91. package/src/templates/next-pagebuilder/components/sanity/visual-editing.tsx +27 -0
  92. package/src/templates/next-pagebuilder/components/ui/image/index.tsx +216 -0
  93. package/src/templates/next-pagebuilder/components/ui/link/index.tsx +152 -0
  94. package/src/templates/next-pagebuilder/components/ui/sanity-image/index.tsx +41 -0
  95. package/src/templates/next-pagebuilder/lib/integrations/check-integration.ts +5 -0
  96. package/src/templates/next-pagebuilder/lib/integrations/sanity/client.ts +27 -0
  97. package/src/templates/next-pagebuilder/lib/integrations/sanity/components/disable-draft-mode.tsx +23 -0
  98. package/src/templates/next-pagebuilder/lib/integrations/sanity/components/page-builder-input.tsx +36 -0
  99. package/src/templates/next-pagebuilder/lib/integrations/sanity/components/page-category-input.tsx +50 -0
  100. package/src/templates/next-pagebuilder/lib/integrations/sanity/components/rich-text.tsx +84 -0
  101. package/src/templates/next-pagebuilder/lib/integrations/sanity/confirm-publish-action.ts +40 -0
  102. package/src/templates/next-pagebuilder/lib/integrations/sanity/env.ts +34 -0
  103. package/src/templates/next-pagebuilder/lib/integrations/sanity/fetchers/layout.ts +35 -0
  104. package/src/templates/next-pagebuilder/lib/integrations/sanity/icons.ts +58 -0
  105. package/src/templates/next-pagebuilder/lib/integrations/sanity/live/index.tsx +61 -0
  106. package/src/templates/next-pagebuilder/lib/integrations/sanity/markdown-proxy.config.ts +50 -0
  107. package/src/templates/next-pagebuilder/lib/integrations/sanity/page-builder-config.ts +132 -0
  108. package/src/templates/next-pagebuilder/lib/integrations/sanity/page-category.ts +28 -0
  109. package/src/templates/next-pagebuilder/lib/integrations/sanity/queries.ts +281 -0
  110. package/src/templates/next-pagebuilder/lib/integrations/sanity/sanity.cli.ts +29 -0
  111. package/src/templates/next-pagebuilder/lib/integrations/sanity/sanity.config.ts +211 -0
  112. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/components/index.ts +4 -0
  113. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/components/reusable/blog-content.ts +89 -0
  114. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/components/reusable/description.ts +29 -0
  115. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/components/reusable/hero.ts +28 -0
  116. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/components/singleton/content-collection.ts +45 -0
  117. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/content/author.ts +70 -0
  118. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/content/blog-category.ts +55 -0
  119. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/index.ts +96 -0
  120. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/layout/company-data.ts +62 -0
  121. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/layout/footer.ts +79 -0
  122. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/layout/navbar.ts +74 -0
  123. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/shared/link.ts +125 -0
  124. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/shared/logo-field.ts +9 -0
  125. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/shared/metadata.ts +68 -0
  126. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/shared/nav-objects.ts +192 -0
  127. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/shared/page-builder.ts +39 -0
  128. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/shared/page-folder.ts +124 -0
  129. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/shared/page.ts +232 -0
  130. package/src/templates/next-pagebuilder/lib/integrations/sanity/schemas/shared/richText.ts +63 -0
  131. package/src/templates/next-pagebuilder/lib/integrations/sanity/singletons.ts +44 -0
  132. package/src/templates/next-pagebuilder/lib/integrations/sanity/structure.ts +453 -0
  133. package/src/templates/next-pagebuilder/lib/integrations/sanity/utils/image.ts +8 -0
  134. package/src/templates/next-pagebuilder/lib/integrations/sanity/utils/link.ts +137 -0
  135. package/src/templates/next-pagebuilder/lib/integrations/sanity/utils/page-builder-markdown.ts +81 -0
  136. package/src/templates/next-pagebuilder/lib/scripts/sanity-typegen.ts +45 -0
  137. package/src/templates/next-pagebuilder/lib/styles/cn.ts +5 -0
  138. package/src/templates/next-pagebuilder/lib/styles/global.css +70 -0
  139. package/src/templates/next-pagebuilder/lib/utils/base-url.ts +17 -0
  140. package/src/templates/next-pagebuilder/lib/utils/format-date.ts +8 -0
  141. package/src/templates/next-pagebuilder/lib/utils/json-ld.tsx +213 -0
  142. package/src/templates/next-pagebuilder/lib/utils/metadata.ts +167 -0
  143. package/src/templates/next-pagebuilder/lib/utils/sitemap.ts +37 -0
  144. package/src/templates/next-pagebuilder/lib/utils/slug-tag.ts +6 -0
  145. package/src/templates/next-pagebuilder/next.config.ts +134 -0
  146. package/src/templates/next-pagebuilder/package.json +71 -0
  147. package/src/templates/next-pagebuilder/postcss.config.mjs +39 -0
  148. package/src/templates/next-pagebuilder/proxy.ts +81 -0
  149. package/src/templates/next-pagebuilder/svg.d.ts +5 -0
  150. package/src/templates/next-pagebuilder/tsconfig.json +38 -0
  151. package/src/templates/next-webgl/app/layout.tsx +18 -0
  152. package/src/templates/next-webgl/lib/hooks/use-device-detection.ts +1 -1
  153. package/src/templates/next-webgl/lib/hooks/use-media-breakpoint.ts +1 -1
  154. package/src/templates/next-webgl/lib/hooks/use-media.ts +29 -0
  155. package/src/templates/next-webgl/lib/utils/json-ld.tsx +199 -0
  156. package/src/templates/next-webgl/package.json +1 -1
  157. package/src/templates/next-webgl/tsconfig.json +1 -0
  158. package/plugins/no-anchor-element.grit +0 -11
  159. package/plugins/no-relative-parent-imports.grit +0 -6
  160. package/plugins/no-unnecessary-forwardref.grit +0 -5
  161. package/src/helpers/integrate/sanity/files/lib/scripts/copy-sanity-mcp.ts +0 -23
  162. package/src/helpers/integrate/sanity/files/lib/scripts/generate-page.ts +0 -297
  163. package/src/template-hooks/use-media.ts +0 -33
@@ -1,297 +0,0 @@
1
- #!/usr/bin/env bun
2
- /**
3
- * Generate Page Module
4
- *
5
- * Generates new pages with pre-configured templates through interactive prompts.
6
- * Used by the unified generator: `bun run generate`
7
- *
8
- * Cross-platform compatible (Windows, macOS, Linux)
9
- */
10
-
11
- import * as p from "@clack/prompts";
12
- import { createDir } from "./utils";
13
-
14
- interface PageOptions {
15
- webgl?: boolean;
16
- sanity?: boolean;
17
- theme?: string;
18
- css?: boolean;
19
- }
20
-
21
- export interface PageConfig {
22
- name: string;
23
- options: PageOptions;
24
- }
25
-
26
- /**
27
- * Interactive prompts for page configuration
28
- */
29
- export const promptPageConfig = async (): Promise<PageConfig> => {
30
- const name = await p.text({
31
- message: "What should the page be called?",
32
- placeholder: "about, contact, products",
33
- validate: (value) => {
34
- if (!value) return "Page name is required";
35
- if (!/^[a-zA-Z][a-zA-Z0-9-_]*$/.test(value)) {
36
- return "Page name must start with a letter and contain only letters, numbers, hyphens, and underscores";
37
- }
38
- return undefined;
39
- },
40
- });
41
-
42
- if (p.isCancel(name)) {
43
- p.cancel("Page generation cancelled");
44
- process.exit(0);
45
- }
46
-
47
- const theme = await p.select({
48
- message: "Choose a theme for the page",
49
- options: [
50
- { value: "dark", label: "Dark (default)", hint: "Standard dark theme" },
51
- { value: "light", label: "Light", hint: "Light theme" },
52
- { value: "red", label: "Red", hint: "Red accent theme" },
53
- ],
54
- initialValue: "dark",
55
- });
56
-
57
- if (p.isCancel(theme)) {
58
- p.cancel("Page generation cancelled");
59
- process.exit(0);
60
- }
61
-
62
- const integrations = await p.multiselect({
63
- message: "Which integrations should this page use?",
64
- options: [
65
- { value: "webgl", label: "WebGL Canvas", hint: "Enable 3D graphics" },
66
- { value: "sanity", label: "Sanity CMS", hint: "Content management" },
67
- ],
68
- required: false,
69
- });
70
-
71
- if (p.isCancel(integrations)) {
72
- p.cancel("Page generation cancelled");
73
- process.exit(0);
74
- }
75
-
76
- const includeCss = await p.confirm({
77
- message: "Include a CSS module file?",
78
- initialValue: false,
79
- });
80
-
81
- if (p.isCancel(includeCss)) {
82
- p.cancel("Page generation cancelled");
83
- process.exit(0);
84
- }
85
-
86
- return {
87
- name,
88
- options: {
89
- theme,
90
- webgl: integrations.includes("webgl"),
91
- sanity: integrations.includes("sanity"),
92
- css: includeCss,
93
- },
94
- };
95
- };
96
-
97
- /**
98
- * Generate page.tsx content
99
- */
100
- const generatePageContent = (
101
- pageName: string,
102
- options: PageOptions,
103
- ): string => {
104
- const { webgl, sanity, theme = "dark" } = options;
105
-
106
- // Capitalize first letter for title
107
- const title = pageName.charAt(0).toUpperCase() + pageName.slice(1);
108
-
109
- // Build imports
110
- const imports: string[] = [];
111
- imports.push(`import type { Metadata } from 'next'`);
112
- imports.push(`import { Wrapper } from '@/components/layout/wrapper'`);
113
-
114
- // Integration-specific imports
115
- if (sanity) {
116
- imports.push(
117
- `import { NotConfigured } from '@/components/ui/not-configured'`,
118
- );
119
- }
120
-
121
- if (sanity) {
122
- imports.push(
123
- `import { isSanityConfigured } from '@/lib/integrations/check-integration'`,
124
- );
125
- // sanityFetch and generateSanityMetadata are available for use:
126
- // import { sanityFetch } from 'next-sanity/live'
127
- // import { generateSanityMetadata } from '@/lib/utils/metadata'
128
- }
129
-
130
- // Build wrapper props
131
- const wrapperProps: string[] = [`theme="${theme}"`];
132
- if (webgl) {
133
- wrapperProps.push("webgl");
134
- }
135
-
136
- // Build component body based on integrations
137
- let componentBody: string;
138
-
139
- if (sanity) {
140
- // Sanity only
141
- componentBody = ` // Show setup instructions if Sanity is not configured
142
- if (!isSanityConfigured()) {
143
- return (
144
- <Wrapper theme="${theme}">
145
- <NotConfigured integration="Sanity" />
146
- </Wrapper>
147
- )
148
- }
149
-
150
- // TODO: Create a GROQ query for this page's content type
151
- // const { data } = await sanityFetch({
152
- // query: yourQuery,
153
- // params: { slug: '${pageName}' },
154
- // })
155
-
156
- return (
157
- <Wrapper ${wrapperProps.join(" ")}>
158
- <section className="dr-py-100">
159
- <div className="container">
160
- <h1>${title}</h1>
161
- {/* Your content here */}
162
- {/* Fetch data from Sanity using a custom query */}
163
- </div>
164
- </section>
165
- </Wrapper>
166
- )`;
167
- } else {
168
- // No integrations
169
- componentBody = ` return (
170
- <Wrapper ${wrapperProps.join(" ")}>
171
- <section className="dr-py-100">
172
- <div className="container">
173
- <h1>${title}</h1>
174
- {/* Your content here */}
175
- </div>
176
- </section>
177
- </Wrapper>
178
- )`;
179
- }
180
-
181
- // Build metadata export
182
- let metadataExport: string;
183
- if (sanity) {
184
- metadataExport = `
185
- export async function generateMetadata(): Promise<Metadata> {
186
- if (!isSanityConfigured()) {
187
- return {
188
- title: '${title}',
189
- description: '${title} page description',
190
- }
191
- }
192
-
193
- // TODO: Fetch metadata from Sanity using a custom query
194
- // const { data } = await sanityFetch({
195
- // query: yourQuery,
196
- // params: { slug: '${pageName}' },
197
- // })
198
-
199
- return {
200
- title: '${title}',
201
- description: '${title} page description',
202
- }
203
- }`;
204
- } else {
205
- metadataExport = `
206
- export const metadata: Metadata = {
207
- title: '${title}',
208
- description: '${title} page description',
209
- }`;
210
- }
211
-
212
- // Determine if component should be async
213
- const isAsync = sanity;
214
-
215
- return `${imports.join("\n")}
216
- ${metadataExport}
217
-
218
- export default ${isAsync ? "async " : ""}function ${title}Page() {
219
- ${componentBody}
220
- }
221
- `;
222
- };
223
-
224
- /**
225
- * Create page files and directories
226
- */
227
- export const createPage = async (
228
- pageName: string,
229
- options: PageOptions,
230
- ): Promise<void> => {
231
- const s = p.spinner();
232
-
233
- try {
234
- // Create directory structure
235
- const pageDir = `app/${pageName}`;
236
- const componentsDir = `${pageDir}/_components`;
237
-
238
- s.start(`Creating page structure for "${pageName}"`);
239
-
240
- // Create main page directory (cross-platform)
241
- await createDir(pageDir);
242
-
243
- // Create _components subdirectory (cross-platform)
244
- await createDir(componentsDir);
245
-
246
- // Create .gitkeep in _components
247
- await Bun.write(`${componentsDir}/.gitkeep`, "");
248
-
249
- // Generate and write page.tsx
250
- const pageContent = generatePageContent(pageName, options);
251
- await Bun.write(`${pageDir}/page.tsx`, pageContent);
252
-
253
- // Create CSS module if requested
254
- if (options.css) {
255
- const cssContent = `/* ${pageName}.module.css */
256
-
257
- .container {
258
- /* Add your styles here */
259
- }
260
- `;
261
- await Bun.write(`${pageDir}/${pageName}.module.css`, cssContent);
262
- }
263
-
264
- s.stop(`Page "${pageName}" generated successfully!`);
265
-
266
- // Show what was created
267
- p.log.success(`Generated files:`);
268
- p.log.message(` 📄 ${pageDir}/page.tsx`);
269
- p.log.message(` 📁 ${componentsDir}/`);
270
- if (options.css) {
271
- p.log.message(` 🎨 ${pageDir}/${pageName}.module.css`);
272
- }
273
-
274
- // Build next steps message
275
- const nextSteps = [`1. Customize ${pageDir}/page.tsx`];
276
-
277
- if (options.sanity) {
278
- nextSteps.push(
279
- `2. Create a "${pageName}" page in Sanity Studio at /studio`,
280
- );
281
- }
282
-
283
- nextSteps.push(
284
- `${nextSteps.length + 1}. Add components to ${componentsDir}/`,
285
- );
286
- nextSteps.push(
287
- `${nextSteps.length + 1}. Visit /${pageName} to see your page`,
288
- );
289
-
290
- p.note(`Next steps:\n ${nextSteps.join("\n ")}`);
291
- } catch (error) {
292
- s.stop(`Failed to generate page "${pageName}"`);
293
- throw error;
294
- }
295
- };
296
-
297
- // Export functions for use by unified generate script
@@ -1,33 +0,0 @@
1
- import * as React from "react";
2
-
3
- import { isApiSupported } from "@/utils";
4
-
5
- export const useMedia = (mediaQuery: string, initialValue?: boolean) => {
6
- const [isVerified, setIsVerified] = React.useState<boolean | undefined>(
7
- initialValue,
8
- );
9
-
10
- React.useEffect(() => {
11
- if (!isApiSupported("matchMedia")) {
12
- console.warn("matchMedia is not supported by your current browser");
13
- return;
14
- }
15
- const mediaQueryList = window.matchMedia(mediaQuery);
16
- const changeHandler = () => setIsVerified(!!mediaQueryList.matches);
17
-
18
- changeHandler();
19
- if (typeof mediaQueryList.addEventListener === "function") {
20
- mediaQueryList.addEventListener("change", changeHandler);
21
- return () => {
22
- mediaQueryList.removeEventListener("change", changeHandler);
23
- };
24
- } else if (typeof mediaQueryList.addListener === "function") {
25
- mediaQueryList.addListener(changeHandler);
26
- return () => {
27
- mediaQueryList.removeListener(changeHandler);
28
- };
29
- }
30
- }, [mediaQuery]);
31
-
32
- return isVerified;
33
- };