diff --git a/apps/docs/.eslintrc.js b/apps/docs/.eslintrc.cjs similarity index 62% rename from apps/docs/.eslintrc.js rename to apps/docs/.eslintrc.cjs index 0f33f73a..0e5e86f8 100644 --- a/apps/docs/.eslintrc.js +++ b/apps/docs/.eslintrc.cjs @@ -1,3 +1,3 @@ -export default { +module.exports = { extends: ["custom/next"], }; diff --git a/apps/docs/package.json b/apps/docs/package.json index d9f601e4..d4cf3bd0 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -49,6 +49,7 @@ "@types/node": "22.13.10", "@types/react": "19.0.10", "@types/react-dom": "19.0.4", + "@next/eslint-plugin-next": "15.2.4", "pagefind": "1.3.0", "postcss": "8.5.3", "tailwindcss": "4.0.17", diff --git a/packages/eslint-config-custom/next.js b/packages/eslint-config-custom/next.js index 4b95e4ac..0050d21b 100644 --- a/packages/eslint-config-custom/next.js +++ b/packages/eslint-config-custom/next.js @@ -8,7 +8,6 @@ const project = resolve(process.cwd(), "tsconfig.json"); * * This config extends the Vercel Engineering Style Guide. * For more information, see https://github.com/vercel/style-guide - * */ module.exports = { @@ -18,7 +17,6 @@ module.exports = { "@vercel/style-guide/eslint/browser", "@vercel/style-guide/eslint/react", "@vercel/style-guide/eslint/next", - "eslint-config-turbo", ].map(require.resolve), parserOptions: { project, diff --git a/packages/react-hooks/changes/Fixed useResizeObserver not returns correct ref type b/packages/react-hooks/changes/Fixed useResizeObserver not returns correct ref type new file mode 100644 index 00000000..e69de29b diff --git a/packages/react-hooks/hooks/useResizeObserver.ts b/packages/react-hooks/hooks/useResizeObserver.ts index 1c88190f..b4f01969 100644 --- a/packages/react-hooks/hooks/useResizeObserver.ts +++ b/packages/react-hooks/hooks/useResizeObserver.ts @@ -7,8 +7,8 @@ import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect'; * @returns The ref. * @public */ -export function useResizeObserver(callback: (element: any, entry: ResizeObserverEntry) => void) { - const ref = useRef(null); +export function useResizeObserver(callback: (element: any, entry: ResizeObserverEntry) => void) { + const ref = useRef(null); useIsomorphicLayoutEffect(() => { const element = ref?.current; diff --git a/packages/react-hooks/temp/react-hooks.api.md b/packages/react-hooks/temp/react-hooks.api.md index 1ce9093c..a1d7997a 100644 --- a/packages/react-hooks/temp/react-hooks.api.md +++ b/packages/react-hooks/temp/react-hooks.api.md @@ -42,7 +42,7 @@ export type UsePromiseResult = { }; // @public -export function useResizeObserver(callback: (element: any, entry: ResizeObserverEntry) => void): react.MutableRefObject; +export function useResizeObserver(callback: (element: any, entry: ResizeObserverEntry) => void): react.RefObject; // (No @packageDocumentation comment for this package) diff --git a/packages/react-mui-hooks/package.json b/packages/react-mui-hooks/package.json index ef148611..8f760ddd 100644 --- a/packages/react-mui-hooks/package.json +++ b/packages/react-mui-hooks/package.json @@ -42,7 +42,7 @@ "peerDependencies": { "@enterwell/react-ui": "^0", "@mui/material": "^6", - "@mui/x-data-grid-pro": "^6", + "@mui/x-data-grid-pro": "^7", "react": "^18", "react-dom": "^18" } diff --git a/packages/react-ui/PageDrawer/PageDrawer.tsx b/packages/react-ui/PageDrawer/PageDrawer.tsx index de04780e..ba497993 100644 --- a/packages/react-ui/PageDrawer/PageDrawer.tsx +++ b/packages/react-ui/PageDrawer/PageDrawer.tsx @@ -6,8 +6,14 @@ import { type TouchEvent as ReactTouchEvent, type MouseEvent as ReactMouseEvent } from 'react'; -import { Accordion, AccordionDetails, AccordionSummary } from '@mui/material'; -import { Box } from '@mui/system'; +import { + Accordion, + AccordionDetails, + AccordionSummary, + Box, + type SxProps, + type Theme +} from '@mui/material'; import { ExpandMore } from '@mui/icons-material'; const isScrollable = (node: Element) => { @@ -37,12 +43,33 @@ const getScrollParent = (node: Element): Element => { * @public */ export type PageDrawerProps = HTMLAttributes & { + /** + * @defaultValue `primary.dark` + */ color?: string; + /** + * @defaultValue `background.default` + */ + bgColor?: string; expanded?: boolean; height?: number; + /** + * @defaultValue `50` + */ minHeight?: number; onChange?: () => void; onResize?: (height: number | undefined) => void; + slots?: { + root?: { + sx?: SxProps; + }, + summary?: { + sx?: SxProps; + }, + details?: { + sx?: SxProps; + } + } }; /** @@ -59,7 +86,9 @@ export function PageDrawer({ height, minHeight = 50, onResize, - color, + color = 'primary.dark', + bgColor = 'background.default', + slots = {}, ...rest }: PageDrawerProps) { const isResizingRef = useRef(false); @@ -167,7 +196,8 @@ export function PageDrawer({ border: 'none', '&::before': { display: 'none' - } + }, + ...(slots.root?.sx ?? {}) }} expanded={realExpanded} onChange={handleOnChange} @@ -183,7 +213,7 @@ export function PageDrawer({ minHeight: 32, height: 32, '.MuiAccordionSummary-expandIconWrapper': { - bgcolor: color ?? 'primary.dark', + bgcolor: color, color: 'primary.main', borderRadius: 1 }, @@ -199,15 +229,16 @@ export function PageDrawer({ left: 0, right: 0, bottom: 0, - bgcolor: 'background.default' - } + bgcolor: bgColor + }, + ...(slots.summary?.sx ?? {}) }} > {children} diff --git a/packages/react-ui/changes/Added [PageDrawer] `bgColor` and `slots` optional props b/packages/react-ui/changes/Added [PageDrawer] `bgColor` and `slots` optional props new file mode 100644 index 00000000..e69de29b diff --git a/packages/react-ui/temp/react-ui.api.md b/packages/react-ui/temp/react-ui.api.md index fb24c81f..e07356d9 100644 --- a/packages/react-ui/temp/react-ui.api.md +++ b/packages/react-ui/temp/react-ui.api.md @@ -17,13 +17,16 @@ import { DatePickerProps as DatePickerProps_2 } from '@mui/x-date-pickers/DatePi import { DialogProps } from '@mui/material'; import { FocusEvent as FocusEvent_2 } from 'react'; import { HTMLAttributes } from 'react'; +import { JSX } from 'react'; import * as react from 'react'; import * as react_jsx_runtime from 'react/jsx-runtime'; import { ReactElement } from 'react'; import { ReactNode } from 'react'; +import { SxProps } from '@mui/material'; import { SyntheticEvent } from 'react'; import { TextField } from '@mui/material'; import { TextFieldProps } from '@mui/material'; +import { Theme } from '@mui/material'; import { Variant } from '@mui/material/styles/createTypography'; // @public @@ -120,16 +123,28 @@ export function ItemAccordionDetails(props: AccordionDetailsProps): react_jsx_ru export function ItemAccordionSummary(props: AccordionSummaryProps): react_jsx_runtime.JSX.Element; // @public -export function PageDrawer({ expanded, onChange, children, height, minHeight, onResize, color, ...rest }: PageDrawerProps): react_jsx_runtime.JSX.Element; +export function PageDrawer({ expanded, onChange, children, height, minHeight, onResize, color, bgColor, slots, ...rest }: PageDrawerProps): react_jsx_runtime.JSX.Element; // @public export type PageDrawerProps = HTMLAttributes & { color?: string; + bgColor?: string; expanded?: boolean; height?: number; minHeight?: number; onChange?: () => void; onResize?: (height: number | undefined) => void; + slots?: { + root?: { + sx?: SxProps; + }; + summary?: { + sx?: SxProps; + }; + details?: { + sx?: SxProps; + }; + }; }; // @public diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 663daaba..118c5956 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,6 +96,9 @@ importers: specifier: 1.0.7 version: 1.0.7(tailwindcss@4.0.17) devDependencies: + '@next/eslint-plugin-next': + specifier: 15.2.4 + version: 15.2.4 '@tailwindcss/postcss': specifier: 4.0.17 version: 4.0.17 @@ -1285,6 +1288,9 @@ packages: '@next/env@15.2.4': resolution: {integrity: sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==} + '@next/eslint-plugin-next@15.2.4': + resolution: {integrity: sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==} + '@next/swc-darwin-arm64@15.2.4': resolution: {integrity: sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==} engines: {node: '>= 10'} @@ -3027,6 +3033,10 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -6653,6 +6663,10 @@ snapshots: '@next/env@15.2.4': {} + '@next/eslint-plugin-next@15.2.4': + dependencies: + fast-glob: 3.3.1 + '@next/swc-darwin-arm64@15.2.4': optional: true @@ -8736,6 +8750,14 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5