import classNames from 'classnames';
import * as Icons from 'react-feather';
import { nanoid } from 'nanoid';
import { useState, useEffect, useCallback } from 'react';
import Link from 'next/link';
// Normalize how we work with the subtext as an array[]
export function normalizeSubtext(subtext) {
if (!Array.isArray(subtext)) {
subtext = [subtext];
}
return subtext;
}
// Simple method to normalize string as slug
export function normalizeSlug(key) {
return String(key.toLowerCase()).split(' ').join('-');
}
// Normalize how we listen for media queries
// Intentionally `null` default value -- will throw Error
export function useMatchMedia(mediaQuery = null) {
if (!mediaQuery) {
throw new Error(`Jambonz UI "useMatchMedia" requires valid Media Query: ${mediaQuery} was passed.`);
}
const [mobile, setMobile] = useState(false);
const handleMedia = useCallback((e) => {
setMobile(e.matches);
}, [setMobile]);
useEffect(() => {
const mql = window.matchMedia(mediaQuery);
mql.addEventListener('change', handleMedia);
setMobile(mql.matches);
return function cleanup() {
mql.removeEventListener('change', handleMedia);
};
}, [handleMedia, setMobile, mediaQuery]);
return mobile;
}
// Normalize for our mobile media query
export function useMobileMedia() {
return useMatchMedia('(max-width: 896px)');
}
export function H1({ children }) {
return