Update from Vibe Studio

This commit is contained in:
Vibe Studio
2026-01-09 14:52:46 +00:00
parent 42a0efe70b
commit 47fa6d98b2
28661 changed files with 2421771 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
export declare const MediaQueryEnum: {
xs: {
maxWidth: number;
matchMedia: string;
};
sm: {
minWidth: number;
maxWidth: number;
matchMedia: string;
};
md: {
minWidth: number;
maxWidth: number;
matchMedia: string;
};
lg: {
minWidth: number;
maxWidth: number;
matchMedia: string;
};
xl: {
minWidth: number;
maxWidth: number;
matchMedia: string;
};
xxl: {
minWidth: number;
matchMedia: string;
};
};
export type MediaQueryKey = keyof typeof MediaQueryEnum;
/**
* loop query screen className
* Array.find will throw a error
* `Rendered more hooks than during the previous render.`
* So should use Array.forEach
*/
export declare const getScreenClassName: () => "xxl" | "xl" | "lg" | "md" | "sm" | "xs" | undefined;
declare const useBreakpoint: () => "xxl" | "xl" | "lg" | "md" | "sm" | "xs" | undefined;
export { useBreakpoint };

View File

@@ -0,0 +1,100 @@
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import { useEffect, useState } from 'react';
import useMediaQuery from "./query";
export var MediaQueryEnum = {
xs: {
maxWidth: 575,
matchMedia: '(max-width: 575px)'
},
sm: {
minWidth: 576,
maxWidth: 767,
matchMedia: '(min-width: 576px) and (max-width: 767px)'
},
md: {
minWidth: 768,
maxWidth: 991,
matchMedia: '(min-width: 768px) and (max-width: 991px)'
},
lg: {
minWidth: 992,
maxWidth: 1199,
matchMedia: '(min-width: 992px) and (max-width: 1199px)'
},
xl: {
minWidth: 1200,
maxWidth: 1599,
matchMedia: '(min-width: 1200px) and (max-width: 1599px)'
},
xxl: {
minWidth: 1600,
matchMedia: '(min-width: 1600px)'
}
};
/**
* loop query screen className
* Array.find will throw a error
* `Rendered more hooks than during the previous render.`
* So should use Array.forEach
*/
export var getScreenClassName = function getScreenClassName() {
var queryKey = undefined;
// support ssr
if (typeof window === 'undefined') {
return queryKey;
}
var mediaQueryKey = Object.keys(MediaQueryEnum).find(function (key) {
var matchMedia = MediaQueryEnum[key].matchMedia;
if (window.matchMedia(matchMedia).matches) {
return true;
}
return false;
});
queryKey = mediaQueryKey;
return queryKey;
};
var useBreakpoint = function useBreakpoint() {
var isMd = useMediaQuery(MediaQueryEnum.md.matchMedia);
var isLg = useMediaQuery(MediaQueryEnum.lg.matchMedia);
var isXxl = useMediaQuery(MediaQueryEnum.xxl.matchMedia);
var isXl = useMediaQuery(MediaQueryEnum.xl.matchMedia);
var isSm = useMediaQuery(MediaQueryEnum.sm.matchMedia);
var isXs = useMediaQuery(MediaQueryEnum.xs.matchMedia);
var _useState = useState(getScreenClassName()),
_useState2 = _slicedToArray(_useState, 2),
colSpan = _useState2[0],
setColSpan = _useState2[1];
useEffect(function () {
if (process.env.NODE_ENV === 'TEST') {
setColSpan(process.env.USE_MEDIA || 'md');
return;
}
if (isXxl) {
setColSpan('xxl');
return;
}
if (isXl) {
setColSpan('xl');
return;
}
if (isLg) {
setColSpan('lg');
return;
}
if (isMd) {
setColSpan('md');
return;
}
if (isSm) {
setColSpan('sm');
return;
}
if (isXs) {
setColSpan('xs');
return;
}
setColSpan('md');
}, [isMd, isLg, isXxl, isXl, isSm, isXs]);
return colSpan;
};
export { useBreakpoint };

View File

@@ -0,0 +1 @@
export default function useMediaQuery(mediaQuery: string): boolean;

View File

@@ -0,0 +1,25 @@
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import { useLayoutEffect, useState } from 'react';
export default function useMediaQuery(mediaQuery) {
var isSsr = typeof window === 'undefined';
var _useState = useState(function () {
return isSsr ? false : window.matchMedia(mediaQuery).matches;
}),
_useState2 = _slicedToArray(_useState, 2),
matches = _useState2[0],
setMatches = _useState2[1];
useLayoutEffect(function () {
if (isSsr) {
return;
}
var mediaQueryList = window.matchMedia(mediaQuery);
var listener = function listener(e) {
return setMatches(e.matches);
};
mediaQueryList.addListener(listener);
return function () {
return mediaQueryList.removeListener(listener);
};
}, [mediaQuery]);
return matches;
}