diff --git a/.vscode/settings.json b/.vscode/settings.json index 4b95a89c..8ba65003 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -23,5 +23,6 @@ ], "prettier.configPath": ".prettierrc", "prettier.prettierPath": "./node_modules/prettier", - "prettier.singleQuote": true + "prettier.singleQuote": true, + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/docs/app/react/file-uploader/components/file-status-preview.tsx b/docs/app/react/file-uploader/components/file-status-preview.tsx new file mode 100644 index 00000000..cc0beaa5 --- /dev/null +++ b/docs/app/react/file-uploader/components/file-status-preview.tsx @@ -0,0 +1,51 @@ +'use client' + +import { + FileStatus, + type FileStatusActions, + processStatus, +} from '@cerberus-design/react' +import { vstack } from '@cerberus/styled-system/patterns' +import { useCallback, type MouseEvent } from 'react' + +export function UploadingCardsPreview() { + const handleClick = useCallback( + (status: FileStatusActions, e: MouseEvent) => + console.log(status, e), + [], + ) + + return ( +
+ + + + +
+ ) +} diff --git a/docs/app/react/file-uploader/components/live-preview.tsx b/docs/app/react/file-uploader/components/live-preview.tsx new file mode 100644 index 00000000..c9c107ed --- /dev/null +++ b/docs/app/react/file-uploader/components/live-preview.tsx @@ -0,0 +1,52 @@ +'use client' + +import CodeBuilder from '@/app/components/code-builder/code-builder' +import { builder } from '@/app/components/code-builder/helpers' +import { useCodeBuilder } from '@/app/context/code-builder' +import { FileUploader } from '@cerberus-design/react' + +const api = { + heading: builder.Text('heading', 'Upload your files'), + name: builder.Text('name', 'add_uuid'), + accept: builder.Text('accept', '.txt'), +} + +export function LivePlayground() { + return ( + + + + ) +} + +export function LivePlaygroundWithCode() { + return ( + + ) +}`} + > + + + ) +} + +export function FileUploadPreview() { + const { selectedProps } = useCodeBuilder() + return ( + + ) +} diff --git a/docs/app/react/file-uploader/components/status-live-preview.tsx b/docs/app/react/file-uploader/components/status-live-preview.tsx new file mode 100644 index 00000000..71c4f464 --- /dev/null +++ b/docs/app/react/file-uploader/components/status-live-preview.tsx @@ -0,0 +1,127 @@ +'use client' + +import CodeBuilder from '@/app/components/code-builder/code-builder' +import { builder } from '@/app/components/code-builder/helpers' +import { useCodeBuilder } from '@/app/context/code-builder' +import { FileStatus, processStatus } from '@cerberus-design/react' + +const file = 'file.txt' + +const api = { + status: builder.Enum('status', [ + processStatus.TODO, + processStatus.PROCESSING, + processStatus.DONE, + processStatus.ERROR, + ]), +} + +export function FileStatusLivePlayground() { + return ( + + + + ) +} + +export function FileStatusLivePlaygroundWithCode() { + return ( + + ) => { + switch (status) { + case processStatus.TODO: + console.log('TODO', e, 'call props.onClick') + break + case processStatus.PROCESSING: + console.log('PROCESSING', e, 'call props.onClick') + break + case processStatus.DONE: + console.log('DONE', e, 'call props.onClick') + break + case processStatus.ERROR: + console.log('ERROR', e, 'call props.onClick') + break + default: + throw new Error('Unknown status passed into handleClick') + } + }, []) + + return ( + + ) +}`} + > + + + ) +} + +export function FileStatusPreview() { + const { selectedProps } = useCodeBuilder() + switch (selectedProps.status) { + case processStatus.TODO: + return ( + {}} + status={processStatus.TODO} + /> + ) + case processStatus.PROCESSING: + return ( + {}} + status={processStatus.PROCESSING} + /> + ) + case processStatus.DONE: + return ( + {}} + status={processStatus.DONE} + /> + ) + case processStatus.ERROR: + return ( + {}} + status={processStatus.ERROR} + /> + ) + default: + return ( + {}} + status={processStatus.TODO} + /> + ) + } +} diff --git a/docs/app/react/file-uploader/dev.mdx b/docs/app/react/file-uploader/dev.mdx index 8519f8c3..cb2736f2 100644 --- a/docs/app/react/file-uploader/dev.mdx +++ b/docs/app/react/file-uploader/dev.mdx @@ -6,37 +6,36 @@ recipe: 'label.ts' import CodePreview from '@/app/components/CodePreview' import { - BasicFileUploader -} from '@/app/react/file-uploader/components/file-uploader-preview' + LivePlaygroundWithCode +} from '@/app/react/file-uploader/components/live-preview' +import { + FileStatusLivePlaygroundWithCode +} from '@/app/react/file-uploader/components/status-live-preview' ```ts -import { FileUploader } from '@cerberus-design/react' +import { FileUploader, FileStatus, processStatus } from '@cerberus-design/react' ``` -## Usage +## Uploading Files -}> -```tsx title="file-uploader.tsx" {5,6} -import { FileUploader } from '@cerberus-design/react' +To allow users to upload files, use the `FileUploader` component. -function BasicFileUploader() { - return ( - - ) -} -``` - + + +## File Status + +If you choose to process the file, you can use the `FileStatus` component to display the status of the job. + + ## Customizing -To customize the FileUploader, we recommend extending the `fileUploader` slot recipe in your panda config. +To customize the FileUploader or FileStatus, we recommend extending the `fileUploader` or the `fileStatus` slot recipe in your panda config. ## API +### FileUploader + ```ts showLineNumbers=false export interface FileUploaderProps extends InputHTMLAttributes { @@ -47,6 +46,24 @@ export interface FileUploaderProps define function FileUploader(props: FileUploaderProps): ReactNode ``` +### FileStatus + +```ts showLineNumbers=false +export type FileStatusKey = (typeof processStatus)[keyof typeof processStatus] +export type FileStatusActions = 'cancel' | 'retry' | 'delete' + +export interface FileBaseStatusProps + extends Omit, 'onClick'> { + file: string + now: number + status: processStatus + onClick: (status: FileStatusActions, e: MouseEvent) => void +} +export type FileStatusProps = FileBaseStatusProps & FileStatusVariantProps + +define function FileStatus(props: FileStatusProps): ReactNode +``` + ### Props The `FileUploader` component accepts the following props: @@ -55,3 +72,11 @@ The `FileUploader` component accepts the following props: | -------- | ------- | ------------------------------------------------------------- | | heading | | The heading for the file uploader | | name | | The unique name of the file uploader | + +The `FileStatus` component accepts the following props: + +| Name | Default | Description | +| -------- | ------- | ------------------------------------------------------------- | +| file | | The name of the file being processed | +| now | | The current progress of the file upload | +| status | 'todo' | The status of the file upload | diff --git a/docs/app/react/file-uploader/overview.mdx b/docs/app/react/file-uploader/overview.mdx index d5383a3f..786f80d9 100644 --- a/docs/app/react/file-uploader/overview.mdx +++ b/docs/app/react/file-uploader/overview.mdx @@ -7,8 +7,11 @@ a11y: 'forms' import CodePreview from '@/app/components/CodePreview' import OverviewList from '@/app/components/OverviewList' import { - BasicFileUploader -} from '@/app/react/file-uploader/components/file-uploader-preview' + LivePlayground +} from '@/app/react/file-uploader/components/live-preview' +import { + UploadingCardsPreview +} from '@/app/react/file-uploader/components/file-status-preview' } /> + + +## Processing Uploads + +Cerberus provides some visual feedback when you would like to show the status of a file upload. + +} /> + ## Resources diff --git a/docs/package.json b/docs/package.json index cf137768..153dd88c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -27,8 +27,9 @@ "@mdx-js/loader": "^3.0.1", "@mdx-js/react": "^3.0.1", "@next/mdx": "^14.2.3", - "@pandacss/dev": "^0.45.0", - "@pandacss/preset-panda": "^0.45.0", + "@pandacss/dev": "^0.46.0", + "@pandacss/preset-panda": "^0.46.0", + "@pandacss/types": "^0.46.0", "@shikijs/rehype": "^1.5.1", "@shikijs/transformers": "^1.5.1", "@shikijs/twoslash": "^1.5.1", diff --git a/docs/panda.config.ts b/docs/panda.config.ts index 36d540c0..6a587ab4 100644 --- a/docs/panda.config.ts +++ b/docs/panda.config.ts @@ -1,8 +1,8 @@ -import { defineConfig } from '@pandacss/dev' +import { defineConfig, type Config } from '@pandacss/dev' import pandaPreset from '@pandacss/preset-panda' import { cerberusPreset, cerberusConfig } from '@cerberus-design/panda-preset' -export default defineConfig({ +const config: Config = { ...cerberusConfig, include: [ @@ -13,4 +13,6 @@ export default defineConfig({ exclude: [], presets: [pandaPreset, cerberusPreset], -}) +} + +export default defineConfig(config) diff --git a/packages/panda-preset/package.json b/packages/panda-preset/package.json index a4c527ba..1587efd2 100644 --- a/packages/panda-preset/package.json +++ b/packages/panda-preset/package.json @@ -20,8 +20,8 @@ "devDependencies": { "@cerberus-design/configs": "workspace:*", "@microsoft/api-extractor": "^7.46.2", - "@pandacss/dev": "^0.45.0", - "@pandacss/types": "^0.45.0", + "@pandacss/dev": "^0.46.0", + "@pandacss/types": "^0.46.0", "tsup": "^8.0.2" }, "publishConfig": { diff --git a/packages/panda-preset/src/recipes/iconButton.ts b/packages/panda-preset/src/recipes/iconButton.ts index 3267641e..2a5d2374 100644 --- a/packages/panda-preset/src/recipes/iconButton.ts +++ b/packages/panda-preset/src/recipes/iconButton.ts @@ -30,6 +30,7 @@ export const iconButton: RecipeConfig = defineRecipe({ base: { ...buttonBase, + flexShrink: 0, h: '2.75rem', // a11y minimum touch target size: 2.75rem pxi: '0', rounded: 'full', diff --git a/packages/panda-preset/src/recipes/index.ts b/packages/panda-preset/src/recipes/index.ts index d0ddebe8..56b3b4d4 100644 --- a/packages/panda-preset/src/recipes/index.ts +++ b/packages/panda-preset/src/recipes/index.ts @@ -10,6 +10,7 @@ import { tbody } from './tbody' import { td } from './td' import { checkbox } from './slots/checkbox' +import { fileStatus } from './slots/fileStatus' import { fileUploader } from './slots/fileUploader' import { input } from './slots/input' import { modal } from './slots/modal' @@ -41,6 +42,7 @@ export const recipes = { export const slotRecipes = { checkbox, + fileStatus, fileUploader, input, modal, diff --git a/packages/panda-preset/src/recipes/modalIcon.ts b/packages/panda-preset/src/recipes/modalIcon.ts index fc81f4e7..293dc820 100644 --- a/packages/panda-preset/src/recipes/modalIcon.ts +++ b/packages/panda-preset/src/recipes/modalIcon.ts @@ -4,6 +4,7 @@ import { type RecipeVariantRecord, } from '@pandacss/dev' import { modalIconBase } from './shared/modal.base' +import { action, danger } from './shared/palettes' /** * This module contains the modalIcon recipe. @@ -23,12 +24,13 @@ export const modalIcon: RecipeConfig = defineRecipe({ variants: { palette: { action: { + ...action, cerbGradient: 'purple', - color: 'action.navigation.initial', + color: 'colorPalette.text.inverse', }, danger: { + ...danger, bgColor: 'danger.surface.initial', - color: 'danger.text.100', }, }, }, diff --git a/packages/panda-preset/src/recipes/shared/button.base.ts b/packages/panda-preset/src/recipes/shared/button.base.ts index 41cb073b..2a04ba1d 100644 --- a/packages/panda-preset/src/recipes/shared/button.base.ts +++ b/packages/panda-preset/src/recipes/shared/button.base.ts @@ -43,13 +43,12 @@ export const nonTextStates = { export const textUsage = { bgColor: 'transparent', border: 'none', - color: textInitial, + color: 'colorPalette.text.200', transitionProperty: 'background-color, color', transitionDuration: 'fast', transitionTimingFunction: 'ease-in-out', _hover: { bgColor: 'colorPalette.ghost.hover', - color: 'colorPalette.text.200', }, _active: { bgColor: 'colorPalette.ghost.active', diff --git a/packages/panda-preset/src/recipes/shared/modal.base.ts b/packages/panda-preset/src/recipes/shared/modal.base.ts index 22723a32..38ac31a8 100644 --- a/packages/panda-preset/src/recipes/shared/modal.base.ts +++ b/packages/panda-preset/src/recipes/shared/modal.base.ts @@ -22,6 +22,7 @@ export const modalBase = { } export const modalIconBase = { + color: 'colorPalette.text.200', mxi: 'auto', p: '2', } diff --git a/packages/panda-preset/src/recipes/slots/fileStatus.ts b/packages/panda-preset/src/recipes/slots/fileStatus.ts new file mode 100644 index 00000000..7e3e68e1 --- /dev/null +++ b/packages/panda-preset/src/recipes/slots/fileStatus.ts @@ -0,0 +1,69 @@ +import { defineSlotRecipe, type SlotRecipeConfig } from '@pandacss/dev' +import { action, danger, success } from '../shared/palettes' + +/** + * This module contains the fileStatus recipe. + * @module + */ + +/** + * Styles for the FileStatus component + * @definition [FileStatus docs](https://cerberus.digitalu.design/react/file-status) + */ +export const fileStatus: Partial = defineSlotRecipe({ + className: 'file-status', + slots: ['root', 'icon'], + + base: { + root: { + // combine with hstack + bgColor: 'page.surface.100', + border: '2px solid', + borderColor: 'page.border.initial', + p: 4, + rounded: 'sm', + w: 'full', + }, + icon: { + // combine with circle + p: 2, + }, + }, + + variants: { + status: { + todo: { + icon: { + ...action, + cerbGradient: 'purple', + color: 'colorPalette.text.inverse', + }, + }, + processing: { + icon: { + ...action, + cerbGradient: 'purple', + color: 'colorPalette.text.inverse', + }, + }, + done: { + icon: { + ...success, + cerbGradient: 'green', + color: 'colorPalette.text.200', + }, + }, + error: { + icon: { + ...danger, + bgColor: 'colorPalette.surface.initial', + color: 'colorPalette.text.200', + }, + }, + }, + }, + + defaultVariants: { + status: 'todo', + }, +}) diff --git a/packages/panda-preset/src/recipes/slots/fileUploader.ts b/packages/panda-preset/src/recipes/slots/fileUploader.ts index bf487865..cbda1c53 100644 --- a/packages/panda-preset/src/recipes/slots/fileUploader.ts +++ b/packages/panda-preset/src/recipes/slots/fileUploader.ts @@ -50,6 +50,7 @@ export const fileUploader: Partial = defineSlotRecipe({ }, label: { // combine with vstack + color: 'page.text.200', gap: '1', justify: 'center', position: 'relative', @@ -59,6 +60,7 @@ export const fileUploader: Partial = defineSlotRecipe({ }, icon: modalIconBase, heading: { + color: 'page.text.initial', pt: '2', textStyle: 'h6', }, diff --git a/packages/react/src/components/FileStatus.tsx b/packages/react/src/components/FileStatus.tsx new file mode 100644 index 00000000..1fa08b7f --- /dev/null +++ b/packages/react/src/components/FileStatus.tsx @@ -0,0 +1,246 @@ +'use client' + +import { + useCallback, + useMemo, + type HTMLAttributes, + type MouseEvent, +} from 'react' +import { ProgressBar } from './ProgressBar' +import { IconButton } from './IconButton' +import { + fileStatus, + type FileStatusVariantProps, +} from '@cerberus/styled-system/recipes' +import { css, cx } from '@cerberus/styled-system/css' +import { circle, hstack, vstack } from '@cerberus/styled-system/patterns' +import { $cerberusIcons } from '../config/defineIcons' +import { FieldMessage } from './FieldMessage' +import { Field } from '../context/field' + +/** + * This module contains the FileStatus component. + * @module + */ + +export type FileStatusKey = (typeof processStatus)[keyof typeof processStatus] +export type FileStatusActions = 'cancel' | 'retry' | 'delete' +export interface FileBaseStatusProps + extends Omit, 'onClick'> { + file: string + now: number + status: processStatus + onClick: (status: FileStatusActions, e: MouseEvent) => void +} +export type FileStatusProps = FileBaseStatusProps & FileStatusVariantProps + +/** + * A helper object to represent the status of a file. + * @example + * ```tsx + * import { fileStatus } from '@cerberus/react' + * processStatus.TODO // 'todo' + * ``` + */ +export const enum processStatus { + TODO = 'todo', + PROCESSING = 'processing', + DONE = 'done', + ERROR = 'error', +} + +/** + * This component displays the status of a file. + * @param props - { + * file: string, + * now: number, + * status: keyof typeof fileStatus, + * action: (status: FileStatusActions, e: MouseEvent) => void + * }. + * @example + * ```tsx + * console.log(status, e)} /> + * ``` + */ +export function FileStatus(props: FileStatusProps) { + const { file, now, status, onClick, ...nativeProps } = props + const actionLabel = useMemo(() => getStatusActionLabel(status), [status]) + const palette = useMemo(() => getPalette(status), [status]) + const modalIconPalette = useMemo(() => getModalIconPalette(status), [status]) + const styles = useMemo(() => { + switch (status) { + case processStatus.TODO: + return fileStatus({ status: 'todo' }) + case processStatus.PROCESSING: + return fileStatus({ status: 'processing' }) + case processStatus.DONE: + return fileStatus({ status: 'done' }) + case processStatus.ERROR: + return fileStatus({ status: 'error' }) + default: + return fileStatus() + } + }, [status]) + + const handleClick = useCallback( + (e: MouseEvent) => { + const actionStatus = getStatusActionLabel( + status, + ).toLocaleLowerCase() as FileStatusActions + onClick(actionStatus, e) + }, + [onClick], + ) + + return ( +
+
+ +
+ +
+ + {file} + + + + + + + +
+ + + + +
+ ) +} + +interface FileStatusElProps { + status: FileStatusProps['status'] + now?: number +} + +function MatchFileStatusIcon(props: FileStatusElProps) { + const { + fileUploader: FileUploaderIcon, + invalidAlt: InvalidIcon, + successNotification: DoneIcon, + } = $cerberusIcons + + switch (props.status) { + case processStatus.TODO: + case processStatus.PROCESSING: + return + case processStatus.DONE: + return + case processStatus.ERROR: + return + default: + throw new Error('Unknown status') + } +} + +function MatchFileStatusText(props: FileStatusElProps) { + switch (props.status) { + case processStatus.TODO: + return 'Waiting to upload' + case processStatus.PROCESSING: + return `${props.now}% Complete` + case processStatus.DONE: + return 'File uploaded successfully' + case processStatus.ERROR: + return 'There was an error uploading the file' + default: + throw new Error('Invalid status') + } +} + +function MatchStatusAction(props: FileStatusElProps) { + const { close: CloseIcon, redo: RedoIcon, delete: TrashIcon } = $cerberusIcons + switch (props.status) { + case processStatus.TODO: + case processStatus.PROCESSING: + return + case processStatus.ERROR: + return + case processStatus.DONE: + return + default: + throw new Error('Invalid status') + } +} + +function getStatusActionLabel(status: FileStatusKey) { + switch (status) { + case processStatus.TODO: + case processStatus.PROCESSING: + return 'Cancel' + case processStatus.ERROR: + return 'Retry' + case processStatus.DONE: + return 'Delete' + default: + return '' + } +} + +function getPalette(status: FileStatusKey) { + switch (status) { + case processStatus.TODO: + case processStatus.PROCESSING: + return 'danger' + case processStatus.ERROR: + return 'action' + case processStatus.DONE: + return 'danger' + default: + return 'action' + } +} + +function getModalIconPalette(status: FileStatusKey) { + switch (status) { + case processStatus.TODO: + case processStatus.PROCESSING: + return 'action' + case processStatus.ERROR: + return 'danger' + case processStatus.DONE: + return 'success' + default: + return 'action' + } +} diff --git a/packages/react/src/components/FileUploader.tsx b/packages/react/src/components/FileUploader.tsx index e8782e7d..a2caf086 100644 --- a/packages/react/src/components/FileUploader.tsx +++ b/packages/react/src/components/FileUploader.tsx @@ -43,7 +43,7 @@ export function FileUploader(props: FileUploaderProps) {

{props.heading}

Import {props.accept?.replace(',', ', ')} files -

Or click to upload

+

Click to select files

-export type ModalIconProps = ModalIconBaseProps & ModalIconVariantProps +export type ModalIconProps = HTMLAttributes & + ModalIconVariantProps export function ModalIcon(props: PropsWithChildren) { const { palette, ...nativeProps } = props diff --git a/packages/react/src/config/cerbIcons.ts b/packages/react/src/config/cerbIcons.ts index a71bf1d7..17faa679 100644 --- a/packages/react/src/config/cerbIcons.ts +++ b/packages/react/src/config/cerbIcons.ts @@ -2,10 +2,14 @@ import { Checkmark, CheckmarkFilled, ChevronDown, + CloseFilled, CloudUpload, ErrorFilled, Information, InformationFilled, + Restart, + TrashCan, + Warning, WarningFilled, type CarbonIconType, } from '@cerberus/icons' @@ -16,7 +20,9 @@ export type IconType = CarbonIconType | ElementType export interface DefinedIcons { checkbox?: IconType + close?: IconType confirmModal?: IconType + delete?: IconType promptModal?: IconType fileUploader?: IconType indeterminate?: IconType @@ -25,13 +31,17 @@ export interface DefinedIcons { warningNotification?: IconType dangerNotification?: IconType invalid: IconType + invalidAlt?: IconType + redo?: IconType selectArrow?: IconType toggleChecked?: IconType } export const defaultIcons: DefinedIcons = { checkbox: CheckmarkIcon, + close: CloseFilled, confirmModal: Information, + delete: TrashCan, promptModal: Information, fileUploader: CloudUpload, indeterminate: IndeterminateIcon, @@ -40,6 +50,8 @@ export const defaultIcons: DefinedIcons = { warningNotification: WarningFilled, dangerNotification: ErrorFilled, invalid: WarningFilled, + invalidAlt: Warning, + redo: Restart, selectArrow: ChevronDown, toggleChecked: Checkmark, } diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index cd3008a2..a6dfe5e3 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -10,6 +10,7 @@ export * from './components/Checkbox' export * from './components/Droppable' export * from './components/FieldMessage' export * from './components/FeatureFlag' +export * from './components/FileStatus' export * from './components/FileUploader' export * from './components/IconButton' export * from './components/Input' diff --git a/packages/styled-system/package.json b/packages/styled-system/package.json index 8651ce5e..5dfea43e 100644 --- a/packages/styled-system/package.json +++ b/packages/styled-system/package.json @@ -48,9 +48,9 @@ }, "devDependencies": { "@cerberus-design/panda-preset": "workspace:*", - "@pandacss/dev": "^0.45.0", - "@pandacss/preset-panda": "^0.45.0", - "@pandacss/types": "^0.45.0", + "@pandacss/dev": "^0.46.0", + "@pandacss/preset-panda": "^0.46.0", + "@pandacss/types": "^0.46.0", "react": "^18", "react-dom": "^18" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d58e217..65a73be4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,7 +75,7 @@ importers: devDependencies: tsup: specifier: ^8.0.2 - version: 8.0.2(@microsoft/api-extractor@7.46.2(@types/node@22.5.4))(postcss@8.4.40)(typescript@5.4.5) + version: 8.0.2(@microsoft/api-extractor@7.46.2(@types/node@22.5.4))(postcss@8.4.45)(typescript@5.4.5) util: specifier: ^0.12.5 version: 0.12.5 @@ -129,11 +129,14 @@ importers: specifier: ^14.2.3 version: 14.2.3(@mdx-js/loader@3.0.1(webpack@5.91.0))(@mdx-js/react@3.0.1(@types/react@18.3.1)(react@18.3.1)) '@pandacss/dev': - specifier: ^0.45.0 - version: 0.45.0(typescript@5.4.5) + specifier: ^0.46.0 + version: 0.46.0(typescript@5.4.5) '@pandacss/preset-panda': - specifier: ^0.45.0 - version: 0.45.0 + specifier: ^0.46.0 + version: 0.46.0 + '@pandacss/types': + specifier: ^0.46.0 + version: 0.46.0 '@shikijs/rehype': specifier: ^1.5.1 version: 1.5.1 @@ -240,7 +243,7 @@ importers: version: 7.46.2(@types/node@22.5.4) tsup: specifier: ^8.0.2 - version: 8.0.2(@microsoft/api-extractor@7.46.2(@types/node@22.5.4))(postcss@8.4.40)(typescript@5.4.5) + version: 8.0.2(@microsoft/api-extractor@7.46.2(@types/node@22.5.4))(postcss@8.4.45)(typescript@5.4.5) packages/panda-preset: dependencies: @@ -249,7 +252,7 @@ importers: version: 10.4.19(postcss@8.4.40) postcss: specifier: '*' - version: 8.4.40 + version: 8.4.45 devDependencies: '@cerberus-design/configs': specifier: workspace:* @@ -258,14 +261,14 @@ importers: specifier: ^7.46.2 version: 7.46.2(@types/node@22.5.4) '@pandacss/dev': - specifier: ^0.45.0 - version: 0.45.0(typescript@5.4.5) + specifier: ^0.46.0 + version: 0.46.0(typescript@5.4.5) '@pandacss/types': - specifier: ^0.45.0 - version: 0.45.0 + specifier: ^0.46.0 + version: 0.46.0 tsup: specifier: ^8.0.2 - version: 8.0.2(@microsoft/api-extractor@7.46.2(@types/node@22.5.4))(postcss@8.4.40)(typescript@5.4.5) + version: 8.0.2(@microsoft/api-extractor@7.46.2(@types/node@22.5.4))(postcss@8.4.45)(typescript@5.4.5) packages/react: dependencies: @@ -316,14 +319,14 @@ importers: specifier: workspace:* version: link:../panda-preset '@pandacss/dev': - specifier: ^0.45.0 - version: 0.45.0(typescript@5.4.5) + specifier: ^0.46.0 + version: 0.46.0(typescript@5.4.5) '@pandacss/preset-panda': - specifier: ^0.45.0 - version: 0.45.0 + specifier: ^0.46.0 + version: 0.46.0 '@pandacss/types': - specifier: ^0.45.0 - version: 0.45.0 + specifier: ^0.46.0 + version: 0.46.0 react: specifier: ^18 version: 18.3.1 @@ -1244,8 +1247,8 @@ packages: '@pandacss/config@0.40.1': resolution: {integrity: sha512-Pzm0GpsrV8OoXgrBJ+V7aaKG39ytbLex1XsRKY6JThkAAz0rE2P8k4nbSQU8WXuG7mbOijBKYybi/cxRAIUL1w==} - '@pandacss/config@0.45.0': - resolution: {integrity: sha512-9RHBOPYYnpM42/fK4r7YYEZEA63SVglwu46eeEtZ/6slNnTkNKPi8Wp0nJTOC3OE8mZxzETGA5FOd+cI0fEmQQ==} + '@pandacss/config@0.46.0': + resolution: {integrity: sha512-XihWGVSCQ+mAOV6MoeOoRmW7C27t23KCwMfmEJebGUdQifCeJg3qFMewhs5sQgJIDRNBTlIM78dUrnK9PT000Q==} '@pandacss/core@0.39.0': resolution: {integrity: sha512-4Kosx6FIOZjH9xe++LlzrqXy6bYBKCnT8RXZfuH2Sj+CCxOLV6Nanbg6AlN0wxVXUNoj+c6BoZBpc9ACRUPgEA==} @@ -1253,8 +1256,8 @@ packages: '@pandacss/core@0.40.1': resolution: {integrity: sha512-12Eu6ReCYZYu6Y/cX5YvGUS8eJkCVJYR8njWAqJmSg+rg/vqmkAM+KL8qdYw95WiTzih1dPaSq+MqkiX3N9hUg==} - '@pandacss/core@0.45.0': - resolution: {integrity: sha512-c2J5t0PzWM7UEmAewAwZp2mJVbIJCmaA+jNyP29vyQtEnKHEjvDPPCstF3Zp4/7ZB07wpUmlJ1s4c11l8hVq+g==} + '@pandacss/core@0.46.0': + resolution: {integrity: sha512-aSPg6twZSnEfnV43pso03gUxJGZdmnnK15scBqLYhGnPuwIa0UP7E7x6dAfI0oY1Wf6/7lpW5b9RFHt9+aFmEQ==} '@pandacss/dev@0.39.0': resolution: {integrity: sha512-wNLdBHHqjbGlMSjSMvw1Pb4UQSul+qWz01cTSKKg+2G4o2HT1jlIC0IiWQOUhAaGSwususRTBQlnnMJIZKxI/w==} @@ -1264,8 +1267,8 @@ packages: resolution: {integrity: sha512-61vy1KjwfVdWTaQtwY4ghmvwPhcRRVnfwpAG5S/kogw0p1rIp7a8vDHi31CjbPxO4qccjhNNzVVGDzaqnzHf+w==} hasBin: true - '@pandacss/dev@0.45.0': - resolution: {integrity: sha512-AeWQA2R0OIwaFDj7KFarEQZ/ZJPhChLGyWS53h/MzGKWChaTpL4zRy0BRUlUtWIElEovJqpYSW7OZ/NCZ97W9g==} + '@pandacss/dev@0.46.0': + resolution: {integrity: sha512-GdigfWVALAPJ5RQpKjBn4KKc67+rKsHiqNd6xao52Q8dttRxvAn1nhk95vVpTbKuLbfIYX4EiVihXxKeFdiSow==} hasBin: true '@pandacss/extractor@0.39.0': @@ -1274,8 +1277,8 @@ packages: '@pandacss/extractor@0.40.1': resolution: {integrity: sha512-eHTAiNBLPxOYsf4pqbwhxjqejzaYx6EGFvdxznKohO++ihPgoph4/zl6WZx+/Ncb/IcHKMXpIBghQmmE68LIyA==} - '@pandacss/extractor@0.45.0': - resolution: {integrity: sha512-HJzJqlDXLYW+2IW9mUStM0h8rrAmqXww9GV+YfyCEgMMniVSRHax12fyTarT3y+ugtjFeO3WC7Q3iwph+p0+kw==} + '@pandacss/extractor@0.46.0': + resolution: {integrity: sha512-kuOmK1CfhnUXrTgwZdl5wH5g0bGeOzxxr8mCUG+P1SgCNxhTpvWkBM7Fv/0Tp35EJxVErxYXBWpVewSpq8x8rQ==} '@pandacss/generator@0.39.0': resolution: {integrity: sha512-wlu2DtHdDttxZg+oM5bK3THuO2xHbzeSZFKVJKW76J+DVyqQc6YeZGGGFTlK0gjyjTNCh3USsmjzdVpEf4Ud0Q==} @@ -1283,8 +1286,8 @@ packages: '@pandacss/generator@0.40.1': resolution: {integrity: sha512-kidMyFPVuJYue4uah9uL4iNdhCPikTPCsc8j9IwrcrKPT6uhLqdeBQEF3Kxs0Pik8v+cMaDV0BSSceCujxHzhA==} - '@pandacss/generator@0.45.0': - resolution: {integrity: sha512-c8SAMQriiS7j6eRzpefLiSxO+xGdsY2KthSFGaIaZOMzIcSWjHWumkMHAbLBsFe66PbH8kUgZfZ4tgjvuFuBvQ==} + '@pandacss/generator@0.46.0': + resolution: {integrity: sha512-Irg05W+lESSzP+qgvSAibridKBH6y9P9lEGEAyImNZmsTrGeF7zX7yfs1mnGT/4zK4Ts6uosO1aZ8tz9YFHJCg==} '@pandacss/is-valid-prop@0.39.0': resolution: {integrity: sha512-NwyvhPhs2acDUXviYFSD+EN2PxHjisGBVBfPTQlRidAsmxjumT4Qt7SP1DzFpWt4McoUF9tZ/MKmxN06YH9NGQ==} @@ -1292,8 +1295,8 @@ packages: '@pandacss/is-valid-prop@0.40.1': resolution: {integrity: sha512-YcWecr6zecEiCqRi/zoCONcokG64T2LiEOCEYZMhqX9ma/KsKNd4oZO6r001/1ZUSBSVD6ZIb95h/N4gctfayg==} - '@pandacss/is-valid-prop@0.45.0': - resolution: {integrity: sha512-OAcuD2izetg2hVcyi+1Oem7KH543g1wfZYGiMIprp/MqvYpbGwqzyEP2Z1vnpAYb6yNgec4wQYa5A1ncrlrbsQ==} + '@pandacss/is-valid-prop@0.46.0': + resolution: {integrity: sha512-XkR+8GwkDxSG9B0DJe2hOv4d9SHvLkjxQQTd/6NpAJhUDSCNTXSUlBN1ef0/Tst1BExGm8BZkizOgjAN3QEDlg==} '@pandacss/logger@0.39.0': resolution: {integrity: sha512-gcdvhvWGo5Ei/xBcWR57OuOIemEdzw913oF6QRVJRhKwpKeWjMDYZhqHxpZFSRMypAXR6BU0LJA2zSQTUA0KDg==} @@ -1301,8 +1304,8 @@ packages: '@pandacss/logger@0.40.1': resolution: {integrity: sha512-UnxDZGWj4e2Cl9XJWBp5WTJiWmfXIbyYLXt0tOlVIGTiBfZtsqVnT/uD3g71QSJgyUCyYqCx/zHJTIsKIm2/HQ==} - '@pandacss/logger@0.45.0': - resolution: {integrity: sha512-X4H+uWfyWQZO7PrJZpdMrf8XXkjwXgDbICEpu25dPev3Up7rCdX6LPGrsoqDEhniLAz8K8FK2sBwOIbAl7ZOMQ==} + '@pandacss/logger@0.46.0': + resolution: {integrity: sha512-g2qPxp/OK2sVGO7var1kG0wxTuVEElk2U3zuPlwBY1xPYURT4eFB8LnxCzVZgERaNYlmaMby/RzKh8ESW/KxFw==} '@pandacss/node@0.39.0': resolution: {integrity: sha512-iwQFre3fAQf7qUOLMF4Kt4IOWkSy2L9OhXoCwzVGA6kjsB+c+r4w2BKAt1Um2wEp2ZK58DQvR6cok/QmRS90Lw==} @@ -1310,8 +1313,8 @@ packages: '@pandacss/node@0.40.1': resolution: {integrity: sha512-r00E85hAFmU49H0JgEwRqf2R5P6CIAydLcTTGrqYEvC8NrP2Y2vsnNENYwDT6PChAzjIZxtZK5myYki3qkfWTA==} - '@pandacss/node@0.45.0': - resolution: {integrity: sha512-dqwYZGr8lwIVfM5wfAkKv23WnS9AvdJi/71KjFYIrCd7SmAaV9TiHiPsmxMoOB7DCPaSYXNqIlM4D1BAEV8rCw==} + '@pandacss/node@0.46.0': + resolution: {integrity: sha512-r+Y1V/Hbgcwd2SIlQmHjUtjef9xuzcgL7OBWBkF1jiJelWnHhEVvPCCRCQIiXTRfitOFfByA+ZGQhbYHbSx7EQ==} '@pandacss/parser@0.39.0': resolution: {integrity: sha512-OsdxNnZP63ta+L4mEPK9O1/lne0Hp1EXlr76p3H+JIzu+k07Rwk4h67hxRk5NlKGkAFDbOFdc0OanzV3GFQQmg==} @@ -1319,8 +1322,8 @@ packages: '@pandacss/parser@0.40.1': resolution: {integrity: sha512-tcBw29Qzxe7BSyf3G76d4ux8rCnqzg4kIApOZQFPrPLGzkc6/TO59HQr3gz8YQbD0HhO2QzjnUkVwCuOpCJoOQ==} - '@pandacss/parser@0.45.0': - resolution: {integrity: sha512-+NlNjX7YVZLBmA435i1+7ubikPTH7+HaVnwzmk9TWgeGgWvUr2UHYN1mgJ4Dh1PpHQsFUIC9ZdOnP3ItVZHHXQ==} + '@pandacss/parser@0.46.0': + resolution: {integrity: sha512-WFP6sZMtKLOdlqBSS10IxLcQ7Tkwi4USfuxqmvJchwFoGgvmhezZQ9v0gw9VtFOpppHGfde7uERoSoSti8MwSA==} '@pandacss/postcss@0.39.0': resolution: {integrity: sha512-jG0Ysg50fhwMUG+JM5BUWG6nLwF7f6CVgsO3pkI1quwsezUlGp8LazeUD+GakSYaw8froKHuIgibxjbsLTJOUg==} @@ -1328,8 +1331,8 @@ packages: '@pandacss/postcss@0.40.1': resolution: {integrity: sha512-PunPSjbDYRw9ljLf4iGKpndAxUkDhptaVATVhHALA1zC31qjF86/ZQRTvMpbBKkIi18x0WKW4lQVA7NFb7+iYg==} - '@pandacss/postcss@0.45.0': - resolution: {integrity: sha512-OtjWIFiCi+WZEkliaD0pHBI/oZ5rTnLM0Rmm+Dw2UIU+EeKUhhDSXr2w6O+ymmArKRblDv+8yxHY97GHAMhHtg==} + '@pandacss/postcss@0.46.0': + resolution: {integrity: sha512-rnv1uYFuM/UAjW+5H4l8pabzrnzOjSMBKqUpIMdbudJ9M2UWp+fD6aOrVF/84Yxh6QTw0pgZ/1xeA26Bqbb9xw==} '@pandacss/preset-base@0.39.0': resolution: {integrity: sha512-jnW3WCYYZFfIulJTdm9ja3EbxkNDAwHDuhRnZs9RpbWT9rduRiZy/RIZNCAzxPXR+8qA8lTuXuTUfZ6d3k8NXg==} @@ -1337,8 +1340,8 @@ packages: '@pandacss/preset-base@0.40.1': resolution: {integrity: sha512-uPevTES6MonoCSLa5BLHcIkj0hJE6Nynlnaqyen4BPESJFh+ylzVjQa8K3RpOAtD6phVgWsjf21cjmKfnxo+0Q==} - '@pandacss/preset-base@0.45.0': - resolution: {integrity: sha512-kvayxrcwXM0gDItnTx2u1Cw2/Y8pee5bnEuqaAW7E9BfQmuoZYpktZPYYBViW8jo0oOipta+CStoIJQr72Dl6Q==} + '@pandacss/preset-base@0.46.0': + resolution: {integrity: sha512-FC2Zab4KI1/cuzjE6blNY6n1FzOyV/XJS/SK7v/sq8hSSwdvmDkp/55hFUmergDBPbrpvGa5MLrmI/H1qrSxVQ==} '@pandacss/preset-panda@0.39.0': resolution: {integrity: sha512-s/k3CCVP2baE2zZsqDPBwe2at0JPhFT1r2fw9Xar2hNr+gw/SrKMq2uDs4r7nAQ8680ME0/+HDb5rh/wG8MYIw==} @@ -1346,8 +1349,8 @@ packages: '@pandacss/preset-panda@0.40.1': resolution: {integrity: sha512-rNw+mfU3rhQzOgUkKTZqQ6y0qRMua5Z8AVuWUrSPYCERsxmbdAVrdoOfkCjiZ+Kf+nWGumlDca9IWxI5vYlSMw==} - '@pandacss/preset-panda@0.45.0': - resolution: {integrity: sha512-FpPx4UkYYNaSlmAWq1ZMXRCLSN324Rw/HWbZgmaP5aa2HfDsQ0+pF5C17REgNdDJq2B8+sOuYCGjNcJ+kwUgcw==} + '@pandacss/preset-panda@0.46.0': + resolution: {integrity: sha512-v3droD6C87uiclPCXBXOJA06vjfVgw2qgQcetbmXSkLcdVwJGuWgc5KKKFPSZlWtCAw16A84OTlKFMmSVZwyqw==} '@pandacss/shared@0.39.0': resolution: {integrity: sha512-8haXlqls29HyMJL6Nq+4tQZ2EcG84j9Zu/HltVwmjXkX1ERakqfJh0mDKstIycKhgeQrLFrhbuGVN4Jfzfn2tQ==} @@ -1355,8 +1358,8 @@ packages: '@pandacss/shared@0.40.1': resolution: {integrity: sha512-FBI2AaaYQZoA7TU/qa9z4FVGU3eQDC/cXobTOzmvewpVb+kFSjPo9hralYAViq+5EFRAJOFM7NMqQH0Enitjnw==} - '@pandacss/shared@0.45.0': - resolution: {integrity: sha512-UfjuOiOdoCPMoBLQ/SYyWx2K1ZbCUuC43e0LkE59W3aJaeY5i53no+MFLPLGgoG0jId+1Fv2vN/olc++x4WbxA==} + '@pandacss/shared@0.46.0': + resolution: {integrity: sha512-8OHjzvH2vwdT9ySVzu/rzvoV8SIeSvnNRXEQs68iI+16tl2UukwlBa+pZYnc97VJFU/O6hEhr0RK2N9RKwCNgQ==} '@pandacss/token-dictionary@0.39.0': resolution: {integrity: sha512-zlf3kW+oQQwt6UkpblN3TFUnQ3hhs22u/Sp+ARDzzvE38yJzCXgr9K4pIi1VnqefEhOz+6WfeXC/UelcUoeCzA==} @@ -1364,8 +1367,8 @@ packages: '@pandacss/token-dictionary@0.40.1': resolution: {integrity: sha512-vpeGGJMd1dasGD2siEqSxtg9wAYNHVnafJSL+QCtarRSwVf9/ETw48md6CvGX7Iq6mfUpNJaa1JkBmhnQUVuNg==} - '@pandacss/token-dictionary@0.45.0': - resolution: {integrity: sha512-2K5JPNCQ8PEFV+Ww1PyFXoZajnYkRnhNRlpNZnXmLK0IX/tLOK6gcX153JTcYThbMIu3ANZRR9xruI3ro1DguQ==} + '@pandacss/token-dictionary@0.46.0': + resolution: {integrity: sha512-FRIBZnnEiaALDs0MYdqGchcXW7OXI5rNm1C1I6/9TlBWPvbIUg/2T+oraiO1DUwUNJTVkx5Rd0fVuBDOlHrH5g==} '@pandacss/types@0.39.0': resolution: {integrity: sha512-ArZ6sHZvEAsH28MAW7NwcJMwK3XzIG/VaSeuhayGsVnJ7AoZUZ4FMTvGrILWW6qR+/NSYXuIGnMDU1Ul2gfxag==} @@ -1373,8 +1376,8 @@ packages: '@pandacss/types@0.40.1': resolution: {integrity: sha512-znHd2Qc9zv/3e86CkM04Dv5b3dTymucfAvbvkUrvz4AT1KME7BQ1YEQRpaXgdE4UI5waV+Rv0Tx7Dmtt//4yWQ==} - '@pandacss/types@0.45.0': - resolution: {integrity: sha512-Pn9bMe7tOtIxIZwA2PydbbT64z/gCmP3zgHrV9ig+WCJgv2mFb2N9FVUyET2Gm9eEtoiV8/F2IA8znM+MgQvCA==} + '@pandacss/types@0.46.0': + resolution: {integrity: sha512-OFp5lGeJ50Kv5hg3zYwNsp0EcZLPItCp/CgYkbdKcfZAjvnEFNgWItRXAKwu1M+1Z0TL6yEz9pvkvWKEyMmJMg==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -1671,9 +1674,6 @@ packages: '@types/eslint@8.56.10': resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -2273,8 +2273,8 @@ packages: caniuse-lite@1.0.30001653: resolution: {integrity: sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==} - caniuse-lite@1.0.30001659: - resolution: {integrity: sha512-Qxxyfv3RdHAfJcXelgf0hU4DFUVXBGTjqrBUZLUh8AtlGnsDo+CnncYtTd95+ZKfnANUOzxyIQCuU/UeBZBYoA==} + caniuse-lite@1.0.30001660: + resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -2555,8 +2555,8 @@ packages: electron-to-chromium@1.4.746: resolution: {integrity: sha512-jeWaIta2rIG2FzHaYIhSuVWqC6KJYo7oSBX4Jv7g+aVujKztfvdpf+n6MGwZdC5hQXbax4nntykLH2juIQrfPg==} - electron-to-chromium@1.5.18: - resolution: {integrity: sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==} + electron-to-chromium@1.5.19: + resolution: {integrity: sha512-kpLJJi3zxTR1U828P+LIUDZ5ohixyo68/IcYOHLqnbTPr/wdgn4i1ECvmALN9E16JPA6cvCG5UG79gVwVdEK5w==} electron-to-chromium@1.5.5: resolution: {integrity: sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==} @@ -2641,6 +2641,10 @@ packages: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -2938,8 +2942,8 @@ packages: resolution: {integrity: sha512-Dx770ai81ohflojxhU+oG+Z2QGvKdYxgEr9OSA8UVrqhwNHjfH9A8f5NKfg83fEH8ZFA5N5llJo5T3PIoZ4CRA==} engines: {node: '>= 10.4.0'} - filesize@10.1.4: - resolution: {integrity: sha512-ryBwPIIeErmxgPnm6cbESAzXjuEFubs+yKYLBZvg3CaiNcmkJChoOGcBSrZ6IwkMwPABwPpVXE6IlNdGJJrvEg==} + filesize@10.1.6: + resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} engines: {node: '>= 10.4.0'} fill-range@7.0.1: @@ -3540,8 +3544,8 @@ packages: engines: {node: '>=6'} hasBin: true - jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -3788,6 +3792,9 @@ packages: magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + map-or-similar@1.5.0: resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} @@ -3978,6 +3985,10 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -4024,8 +4035,8 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.0: - resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -4190,6 +4201,9 @@ packages: package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-manager-detector@0.1.0: + resolution: {integrity: sha512-qRwvZgEE7geMY6xPChI3T0qrM0PL4s/AKiLnNVjhg3GdN2/fUUSrpGA5Z8mejMXauT1BS6RJIgWvSGAdqg8NnQ==} + pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -4282,8 +4296,8 @@ packages: pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - pkg-types@1.1.0: - resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} + pkg-types@1.2.0: + resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} @@ -4391,10 +4405,6 @@ packages: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} - postcss-selector-parser@6.1.0: - resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} - engines: {node: '>=4'} - postcss-selector-parser@6.1.1: resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} engines: {node: '>=4'} @@ -4418,14 +4428,14 @@ packages: resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.45: + resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==} + engines: {node: ^10 || ^12 || >=14} + preferred-pm@3.1.2: resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} engines: {node: '>=10'} - preferred-pm@3.1.4: - resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} - engines: {node: '>=10'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4726,6 +4736,10 @@ packages: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -5081,8 +5095,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -5218,10 +5232,6 @@ packages: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} - which-pm@2.2.0: - resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} - engines: {node: '>=8.15'} - which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} @@ -5440,13 +5450,13 @@ snapshots: '@clack/core@0.3.4': dependencies: - picocolors: 1.0.1 + picocolors: 1.1.0 sisteransi: 1.0.5 '@clack/prompts@0.7.0': dependencies: '@clack/core': 0.3.4 - picocolors: 1.0.1 + picocolors: 1.1.0 sisteransi: 1.0.5 '@csstools/postcss-cascade-layers@4.0.4(postcss@8.4.35)': @@ -5461,10 +5471,10 @@ snapshots: postcss: 8.4.38 postcss-selector-parser: 6.0.15 - '@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.40)': + '@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.45)': dependencies: '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.0.15) - postcss: 8.4.40 + postcss: 8.4.45 postcss-selector-parser: 6.0.15 '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.0.15)': @@ -5849,7 +5859,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} @@ -6087,13 +6097,13 @@ snapshots: microdiff: 1.3.2 typescript: 5.3.3 - '@pandacss/config@0.45.0': + '@pandacss/config@0.46.0': dependencies: - '@pandacss/logger': 0.45.0 - '@pandacss/preset-base': 0.45.0 - '@pandacss/preset-panda': 0.45.0 - '@pandacss/shared': 0.45.0 - '@pandacss/types': 0.45.0 + '@pandacss/logger': 0.46.0 + '@pandacss/preset-base': 0.46.0 + '@pandacss/preset-panda': 0.46.0 + '@pandacss/shared': 0.46.0 + '@pandacss/types': 0.46.0 bundle-n-require: 1.1.1 escalade: 3.1.2 merge-anything: 5.1.7 @@ -6146,26 +6156,26 @@ snapshots: postcss-selector-parser: 6.0.16 ts-pattern: 5.0.8 - '@pandacss/core@0.45.0': + '@pandacss/core@0.46.0': dependencies: - '@csstools/postcss-cascade-layers': 4.0.6(postcss@8.4.40) - '@pandacss/is-valid-prop': 0.45.0 - '@pandacss/logger': 0.45.0 - '@pandacss/shared': 0.45.0 - '@pandacss/token-dictionary': 0.45.0 - '@pandacss/types': 0.45.0 - browserslist: 4.23.1 + '@csstools/postcss-cascade-layers': 4.0.6(postcss@8.4.45) + '@pandacss/is-valid-prop': 0.46.0 + '@pandacss/logger': 0.46.0 + '@pandacss/shared': 0.46.0 + '@pandacss/token-dictionary': 0.46.0 + '@pandacss/types': 0.46.0 + browserslist: 4.23.3 hookable: 5.5.3 lightningcss: 1.25.1 lodash.merge: 4.6.2 outdent: 0.8.0 - postcss: 8.4.40 - postcss-discard-duplicates: 7.0.0(postcss@8.4.40) - postcss-discard-empty: 7.0.0(postcss@8.4.40) - postcss-merge-rules: 7.0.2(postcss@8.4.40) - postcss-minify-selectors: 7.0.2(postcss@8.4.40) - postcss-nested: 6.0.1(postcss@8.4.40) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.40) + postcss: 8.4.45 + postcss-discard-duplicates: 7.0.0(postcss@8.4.45) + postcss-discard-empty: 7.0.0(postcss@8.4.45) + postcss-merge-rules: 7.0.2(postcss@8.4.45) + postcss-minify-selectors: 7.0.2(postcss@8.4.45) + postcss-nested: 6.0.1(postcss@8.4.45) + postcss-normalize-whitespace: 7.0.0(postcss@8.4.45) postcss-selector-parser: 6.1.1 ts-pattern: 5.0.8 @@ -6201,17 +6211,17 @@ snapshots: - jsdom - typescript - '@pandacss/dev@0.45.0(typescript@5.4.5)': + '@pandacss/dev@0.46.0(typescript@5.4.5)': dependencies: '@clack/prompts': 0.7.0 - '@pandacss/config': 0.45.0 - '@pandacss/logger': 0.45.0 - '@pandacss/node': 0.45.0(typescript@5.4.5) - '@pandacss/postcss': 0.45.0(typescript@5.4.5) - '@pandacss/preset-panda': 0.45.0 - '@pandacss/shared': 0.45.0 - '@pandacss/token-dictionary': 0.45.0 - '@pandacss/types': 0.45.0 + '@pandacss/config': 0.46.0 + '@pandacss/logger': 0.46.0 + '@pandacss/node': 0.46.0(typescript@5.4.5) + '@pandacss/postcss': 0.46.0(typescript@5.4.5) + '@pandacss/preset-panda': 0.46.0 + '@pandacss/shared': 0.46.0 + '@pandacss/token-dictionary': 0.46.0 + '@pandacss/types': 0.46.0 cac: 6.7.14 transitivePeerDependencies: - jsdom @@ -6235,9 +6245,9 @@ snapshots: - jsdom - typescript - '@pandacss/extractor@0.45.0(typescript@5.4.5)': + '@pandacss/extractor@0.46.0(typescript@5.4.5)': dependencies: - '@pandacss/shared': 0.45.0 + '@pandacss/shared': 0.46.0 ts-evaluator: 1.2.0(typescript@5.4.5) ts-morph: 21.0.1 transitivePeerDependencies: @@ -6272,25 +6282,25 @@ snapshots: postcss: 8.4.38 ts-pattern: 5.0.8 - '@pandacss/generator@0.45.0': + '@pandacss/generator@0.46.0': dependencies: - '@pandacss/core': 0.45.0 - '@pandacss/is-valid-prop': 0.45.0 - '@pandacss/logger': 0.45.0 - '@pandacss/shared': 0.45.0 - '@pandacss/token-dictionary': 0.45.0 - '@pandacss/types': 0.45.0 + '@pandacss/core': 0.46.0 + '@pandacss/is-valid-prop': 0.46.0 + '@pandacss/logger': 0.46.0 + '@pandacss/shared': 0.46.0 + '@pandacss/token-dictionary': 0.46.0 + '@pandacss/types': 0.46.0 javascript-stringify: 2.1.0 outdent: 0.8.0 pluralize: 8.0.0 - postcss: 8.4.40 + postcss: 8.4.45 ts-pattern: 5.0.8 '@pandacss/is-valid-prop@0.39.0': {} '@pandacss/is-valid-prop@0.40.1': {} - '@pandacss/is-valid-prop@0.45.0': {} + '@pandacss/is-valid-prop@0.46.0': {} '@pandacss/logger@0.39.0': dependencies: @@ -6302,9 +6312,9 @@ snapshots: '@pandacss/types': 0.40.1 kleur: 4.1.5 - '@pandacss/logger@0.45.0': + '@pandacss/logger@0.46.0': dependencies: - '@pandacss/types': 0.45.0 + '@pandacss/types': 0.46.0 kleur: 4.1.5 '@pandacss/node@0.39.0(typescript@5.4.5)': @@ -6377,33 +6387,33 @@ snapshots: - jsdom - typescript - '@pandacss/node@0.45.0(typescript@5.4.5)': - dependencies: - '@pandacss/config': 0.45.0 - '@pandacss/core': 0.45.0 - '@pandacss/extractor': 0.45.0(typescript@5.4.5) - '@pandacss/generator': 0.45.0 - '@pandacss/logger': 0.45.0 - '@pandacss/parser': 0.45.0(typescript@5.4.5) - '@pandacss/shared': 0.45.0 - '@pandacss/token-dictionary': 0.45.0 - '@pandacss/types': 0.45.0 - browserslist: 4.23.1 + '@pandacss/node@0.46.0(typescript@5.4.5)': + dependencies: + '@pandacss/config': 0.46.0 + '@pandacss/core': 0.46.0 + '@pandacss/extractor': 0.46.0(typescript@5.4.5) + '@pandacss/generator': 0.46.0 + '@pandacss/logger': 0.46.0 + '@pandacss/parser': 0.46.0(typescript@5.4.5) + '@pandacss/shared': 0.46.0 + '@pandacss/token-dictionary': 0.46.0 + '@pandacss/types': 0.46.0 + browserslist: 4.23.3 chokidar: 3.6.0 fast-glob: 3.3.2 file-size: 1.0.0 - filesize: 10.1.4 + filesize: 10.1.6 fs-extra: 11.2.0 glob-parent: 6.0.2 is-glob: 4.0.3 lodash.merge: 4.6.2 look-it-up: 2.1.0 outdent: 0.8.0 + package-manager-detector: 0.1.0 perfect-debounce: 1.0.0 pkg-types: 1.0.3 pluralize: 8.0.0 - postcss: 8.4.40 - preferred-pm: 3.1.4 + postcss: 8.4.45 prettier: 3.2.5 ts-morph: 21.0.1 ts-pattern: 5.0.8 @@ -6444,16 +6454,16 @@ snapshots: - jsdom - typescript - '@pandacss/parser@0.45.0(typescript@5.4.5)': + '@pandacss/parser@0.46.0(typescript@5.4.5)': dependencies: - '@pandacss/config': 0.45.0 - '@pandacss/core': 0.45.0 - '@pandacss/extractor': 0.45.0(typescript@5.4.5) - '@pandacss/logger': 0.45.0 - '@pandacss/shared': 0.45.0 - '@pandacss/types': 0.45.0 + '@pandacss/config': 0.46.0 + '@pandacss/core': 0.46.0 + '@pandacss/extractor': 0.46.0(typescript@5.4.5) + '@pandacss/logger': 0.46.0 + '@pandacss/shared': 0.46.0 + '@pandacss/types': 0.46.0 '@vue/compiler-sfc': 3.4.19 - magic-string: 0.30.10 + magic-string: 0.30.11 ts-morph: 21.0.1 ts-pattern: 5.0.8 transitivePeerDependencies: @@ -6476,10 +6486,10 @@ snapshots: - jsdom - typescript - '@pandacss/postcss@0.45.0(typescript@5.4.5)': + '@pandacss/postcss@0.46.0(typescript@5.4.5)': dependencies: - '@pandacss/node': 0.45.0(typescript@5.4.5) - postcss: 8.4.40 + '@pandacss/node': 0.46.0(typescript@5.4.5) + postcss: 8.4.45 transitivePeerDependencies: - jsdom - typescript @@ -6492,9 +6502,9 @@ snapshots: dependencies: '@pandacss/types': 0.40.1 - '@pandacss/preset-base@0.45.0': + '@pandacss/preset-base@0.46.0': dependencies: - '@pandacss/types': 0.45.0 + '@pandacss/types': 0.46.0 '@pandacss/preset-panda@0.39.0': dependencies: @@ -6504,15 +6514,15 @@ snapshots: dependencies: '@pandacss/types': 0.40.1 - '@pandacss/preset-panda@0.45.0': + '@pandacss/preset-panda@0.46.0': dependencies: - '@pandacss/types': 0.45.0 + '@pandacss/types': 0.46.0 '@pandacss/shared@0.39.0': {} '@pandacss/shared@0.40.1': {} - '@pandacss/shared@0.45.0': {} + '@pandacss/shared@0.46.0': {} '@pandacss/token-dictionary@0.39.0': dependencies: @@ -6528,18 +6538,18 @@ snapshots: '@pandacss/types': 0.40.1 ts-pattern: 5.0.8 - '@pandacss/token-dictionary@0.45.0': + '@pandacss/token-dictionary@0.46.0': dependencies: - '@pandacss/logger': 0.45.0 - '@pandacss/shared': 0.45.0 - '@pandacss/types': 0.45.0 + '@pandacss/logger': 0.46.0 + '@pandacss/shared': 0.46.0 + '@pandacss/types': 0.46.0 ts-pattern: 5.0.8 '@pandacss/types@0.39.0': {} '@pandacss/types@0.40.1': {} - '@pandacss/types@0.45.0': {} + '@pandacss/types@0.46.0': {} '@pkgjs/parseargs@0.11.0': optional: true @@ -6832,7 +6842,7 @@ snapshots: '@types/eslint-scope@3.7.7': dependencies: - '@types/eslint': 9.6.1 + '@types/eslint': 8.56.10 '@types/estree': 1.0.5 '@types/eslint@8.56.10': @@ -6840,11 +6850,6 @@ snapshots: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.5 @@ -7160,7 +7165,7 @@ snapshots: '@vue/shared': 3.4.19 entities: 4.5.0 estree-walker: 2.0.2 - source-map-js: 1.2.0 + source-map-js: 1.2.1 '@vue/compiler-dom@3.4.19': dependencies: @@ -7175,9 +7180,9 @@ snapshots: '@vue/compiler-ssr': 3.4.19 '@vue/shared': 3.4.19 estree-walker: 2.0.2 - magic-string: 0.30.10 - postcss: 8.4.40 - source-map-js: 1.2.0 + magic-string: 0.30.11 + postcss: 8.4.45 + source-map-js: 1.2.1 '@vue/compiler-ssr@3.4.19': dependencies: @@ -7536,8 +7541,8 @@ snapshots: browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001659 - electron-to-chromium: 1.5.18 + caniuse-lite: 1.0.30001660 + electron-to-chromium: 1.5.19 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -7616,7 +7621,7 @@ snapshots: caniuse-lite@1.0.30001653: {} - caniuse-lite@1.0.30001659: {} + caniuse-lite@1.0.30001660: {} ccount@2.0.1: {} @@ -7752,9 +7757,9 @@ snapshots: dependencies: postcss: 8.4.38 - cssnano-utils@5.0.0(postcss@8.4.40): + cssnano-utils@5.0.0(postcss@8.4.45): dependencies: - postcss: 8.4.40 + postcss: 8.4.45 csstype@3.1.3: {} @@ -7848,7 +7853,7 @@ snapshots: electron-to-chromium@1.4.746: {} - electron-to-chromium@1.5.18: {} + electron-to-chromium@1.5.19: {} electron-to-chromium@1.5.5: {} @@ -8048,6 +8053,8 @@ snapshots: escalade@3.1.2: {} + escalade@3.2.0: {} + escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} @@ -8516,7 +8523,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} @@ -8553,7 +8560,7 @@ snapshots: filesize@10.1.2: {} - filesize@10.1.4: {} + filesize@10.1.6: {} fill-range@7.0.1: dependencies: @@ -8575,7 +8582,7 @@ snapshots: find-yarn-workspace-root2@1.2.16: dependencies: - micromatch: 4.0.5 + micromatch: 4.0.8 pkg-dir: 4.2.0 flat-cache@3.2.0: @@ -9240,7 +9247,7 @@ snapshots: json5@2.2.3: {} - jsonc-parser@3.2.1: {} + jsonc-parser@3.3.1: {} jsonfile@4.0.0: optionalDependencies: @@ -9463,6 +9470,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + map-or-similar@1.5.0: {} markdown-extensions@2.0.0: {} @@ -9933,6 +9944,11 @@ snapshots: braces: 3.0.2 picomatch: 2.3.1 + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mime-db@1.52.0: {} mime-types@2.1.35: @@ -9967,12 +9983,12 @@ snapshots: mkdirp@3.0.1: {} - mlly@1.7.0: + mlly@1.7.1: dependencies: - acorn: 8.11.3 + acorn: 8.12.1 pathe: 1.1.2 - pkg-types: 1.1.0 - ufo: 1.5.3 + pkg-types: 1.2.0 + ufo: 1.5.4 ms@2.1.2: {} @@ -10160,6 +10176,8 @@ snapshots: package-json-from-dist@1.0.0: {} + package-manager-detector@0.1.0: {} + pako@0.2.9: {} parent-module@1.0.1: @@ -10244,14 +10262,14 @@ snapshots: pkg-types@1.0.3: dependencies: - jsonc-parser: 3.2.1 - mlly: 1.7.0 + jsonc-parser: 3.3.1 + mlly: 1.7.1 pathe: 1.1.2 - pkg-types@1.1.0: + pkg-types@1.2.0: dependencies: confbox: 0.1.7 - mlly: 1.7.0 + mlly: 1.7.1 pathe: 1.1.2 pluralize@8.0.0: {} @@ -10266,9 +10284,9 @@ snapshots: dependencies: postcss: 8.4.38 - postcss-discard-duplicates@7.0.0(postcss@8.4.40): + postcss-discard-duplicates@7.0.0(postcss@8.4.45): dependencies: - postcss: 8.4.40 + postcss: 8.4.45 postcss-discard-empty@6.0.1(postcss@8.4.35): dependencies: @@ -10278,9 +10296,9 @@ snapshots: dependencies: postcss: 8.4.38 - postcss-discard-empty@7.0.0(postcss@8.4.40): + postcss-discard-empty@7.0.0(postcss@8.4.45): dependencies: - postcss: 8.4.40 + postcss: 8.4.45 postcss-load-config@4.0.2(postcss@8.4.35): dependencies: @@ -10289,12 +10307,12 @@ snapshots: optionalDependencies: postcss: 8.4.35 - postcss-load-config@4.0.2(postcss@8.4.40): + postcss-load-config@4.0.2(postcss@8.4.45): dependencies: lilconfig: 3.1.2 yaml: 2.4.5 optionalDependencies: - postcss: 8.4.40 + postcss: 8.4.45 postcss-merge-rules@6.0.3(postcss@8.4.35): dependencies: @@ -10312,13 +10330,13 @@ snapshots: postcss: 8.4.38 postcss-selector-parser: 6.0.16 - postcss-merge-rules@7.0.2(postcss@8.4.40): + postcss-merge-rules@7.0.2(postcss@8.4.45): dependencies: - browserslist: 4.23.1 + browserslist: 4.23.3 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 - postcss-selector-parser: 6.1.0 + cssnano-utils: 5.0.0(postcss@8.4.45) + postcss: 8.4.45 + postcss-selector-parser: 6.1.1 postcss-minify-selectors@6.0.2(postcss@8.4.35): dependencies: @@ -10330,11 +10348,11 @@ snapshots: postcss: 8.4.38 postcss-selector-parser: 6.0.16 - postcss-minify-selectors@7.0.2(postcss@8.4.40): + postcss-minify-selectors@7.0.2(postcss@8.4.45): dependencies: cssesc: 3.0.0 - postcss: 8.4.40 - postcss-selector-parser: 6.1.0 + postcss: 8.4.45 + postcss-selector-parser: 6.1.1 postcss-nested@6.0.1(postcss@8.4.35): dependencies: @@ -10346,9 +10364,9 @@ snapshots: postcss: 8.4.38 postcss-selector-parser: 6.0.15 - postcss-nested@6.0.1(postcss@8.4.40): + postcss-nested@6.0.1(postcss@8.4.45): dependencies: - postcss: 8.4.40 + postcss: 8.4.45 postcss-selector-parser: 6.0.15 postcss-normalize-whitespace@6.0.1(postcss@8.4.35): @@ -10361,9 +10379,9 @@ snapshots: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.40): + postcss-normalize-whitespace@7.0.0(postcss@8.4.45): dependencies: - postcss: 8.4.40 + postcss: 8.4.45 postcss-value-parser: 4.2.0 postcss-selector-parser@6.0.15: @@ -10376,11 +10394,6 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@6.1.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-selector-parser@6.1.1: dependencies: cssesc: 3.0.0 @@ -10412,19 +10425,18 @@ snapshots: picocolors: 1.0.1 source-map-js: 1.2.0 - preferred-pm@3.1.2: + postcss@8.4.45: dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 - preferred-pm@3.1.4: + preferred-pm@3.1.2: dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 - which-pm: 2.2.0 + which-pm: 2.0.0 prelude-ls@1.2.1: {} @@ -10830,6 +10842,8 @@ snapshots: source-map-js@1.2.0: {} + source-map-js@1.2.1: {} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -11066,7 +11080,7 @@ snapshots: tslib@2.7.0: {} - tsup@8.0.2(@microsoft/api-extractor@7.46.2(@types/node@22.5.4))(postcss@8.4.40)(typescript@5.4.5): + tsup@8.0.2(@microsoft/api-extractor@7.46.2(@types/node@22.5.4))(postcss@8.4.45)(typescript@5.4.5): dependencies: bundle-require: 4.0.3(esbuild@0.19.12) cac: 6.7.14 @@ -11076,7 +11090,7 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.2(postcss@8.4.40) + postcss-load-config: 4.0.2(postcss@8.4.45) resolve-from: 5.0.0 rollup: 4.16.4 source-map: 0.8.0-beta.0 @@ -11084,7 +11098,7 @@ snapshots: tree-kill: 1.2.2 optionalDependencies: '@microsoft/api-extractor': 7.46.2(@types/node@22.5.4) - postcss: 8.4.40 + postcss: 8.4.45 typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -11190,7 +11204,7 @@ snapshots: typescript@5.4.5: {} - ufo@1.5.3: {} + ufo@1.5.4: {} unbox-primitive@1.0.2: dependencies: @@ -11270,14 +11284,14 @@ snapshots: update-browserslist-db@1.1.0(browserslist@4.23.1): dependencies: browserslist: 4.23.1 - escalade: 3.1.2 - picocolors: 1.0.1 + escalade: 3.2.0 + picocolors: 1.1.0 update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: browserslist: 4.23.3 - escalade: 3.1.2 - picocolors: 1.0.1 + escalade: 3.2.0 + picocolors: 1.1.0 uri-js@4.4.1: dependencies: @@ -11400,11 +11414,6 @@ snapshots: load-yaml-file: 0.2.0 path-exists: 4.0.0 - which-pm@2.2.0: - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 diff --git a/tests/panda-preset/recipes/button.test.ts b/tests/panda-preset/recipes/button.test.ts index b66e48fb..21302cc6 100644 --- a/tests/panda-preset/recipes/button.test.ts +++ b/tests/panda-preset/recipes/button.test.ts @@ -80,7 +80,7 @@ describe('button recipe', () => { test('should have a text usage variant', () => { expect(button.variants?.usage.text).toMatchObject({ - color: initialText, + color: 'colorPalette.text.200', bgColor: 'transparent', border: 'none', transitionProperty: 'background-color, color', @@ -88,7 +88,6 @@ describe('button recipe', () => { transitionTimingFunction: 'ease-in-out', _hover: { bgColor: 'colorPalette.ghost.hover', - color: 'colorPalette.text.200', }, _active: { bgColor: 'colorPalette.ghost.active', diff --git a/tests/panda-preset/recipes/iconButton.test.ts b/tests/panda-preset/recipes/iconButton.test.ts index ab29384b..09ce1a2f 100644 --- a/tests/panda-preset/recipes/iconButton.test.ts +++ b/tests/panda-preset/recipes/iconButton.test.ts @@ -82,7 +82,7 @@ describe('iconButton recipe', () => { test('should have a text usage variant', () => { expect(iconButton.variants?.usage.text).toMatchObject({ - color: initialText, + color: 'colorPalette.text.200', bgColor: 'transparent', border: 'none', transitionProperty: 'background-color, color', @@ -90,7 +90,6 @@ describe('iconButton recipe', () => { transitionTimingFunction: 'ease-in-out', _hover: { bgColor: 'colorPalette.ghost.hover', - color: 'colorPalette.text.200', }, _active: { bgColor: 'colorPalette.ghost.active', diff --git a/tests/panda-preset/recipes/modalIcon.test.ts b/tests/panda-preset/recipes/modalIcon.test.ts index 75c42ac1..928e192a 100644 --- a/tests/panda-preset/recipes/modalIcon.test.ts +++ b/tests/panda-preset/recipes/modalIcon.test.ts @@ -3,7 +3,6 @@ import { recipes } from '@cerberus-design/panda-preset' describe('modalIcon recipe', () => { const { modalIcon } = recipes - test('should be exported', () => { expect(modalIcon).toBeDefined() }) @@ -18,12 +17,13 @@ describe('modalIcon recipe', () => { test('should have a palette variant', () => { expect(modalIcon.variants!.palette).toMatchObject({ action: { + colorPalette: 'action', cerbGradient: 'purple', - color: 'action.navigation.initial', + color: 'colorPalette.text.inverse', }, danger: { + colorPalette: 'danger', bgColor: 'danger.surface.initial', - color: 'danger.text.100', }, }) }) diff --git a/tests/panda-preset/recipes/slots/fileStatus.test.ts b/tests/panda-preset/recipes/slots/fileStatus.test.ts new file mode 100644 index 00000000..d2d9db10 --- /dev/null +++ b/tests/panda-preset/recipes/slots/fileStatus.test.ts @@ -0,0 +1,60 @@ +import { describe, test, expect } from 'bun:test' +import { slotRecipes } from '@cerberus-design/panda-preset' + +describe('fileStatus recipe', () => { + const { fileStatus } = slotRecipes + + test('should be exported', () => { + expect(fileStatus).toBeDefined() + }) + + test('should have a base style', () => { + expect(fileStatus.base?.root).toMatchObject({ + bgColor: 'page.surface.100', + border: '2px solid', + borderColor: 'page.border.initial', + p: 4, + rounded: 'sm', + w: 'full', + }) + }) + + test('should have a icon style', () => { + expect(fileStatus.base?.icon).toMatchObject({ + p: 2, + }) + }) + + test('should have a todo status variant', () => { + expect(fileStatus.variants?.status?.todo?.icon).toMatchObject({ + cerbGradient: 'purple', + color: 'colorPalette.text.inverse', + }) + }) + + test('should have a processing status variant', () => { + expect(fileStatus.variants?.status?.processing?.icon).toMatchObject({ + cerbGradient: 'purple', + color: 'colorPalette.text.inverse', + }) + }) + + test('should have a done status variant', () => { + expect(fileStatus.variants?.status?.done?.icon).toMatchObject({ + cerbGradient: 'green', + color: 'colorPalette.text.200', + }) + }) + + test('should have a error status variant', () => { + expect(fileStatus.variants?.status?.error?.icon).toMatchObject({ + bgColor: 'colorPalette.surface.initial', + color: 'colorPalette.text.200', + }) + }) + + test('should have a default status variant', () => { + const defaultVariants = fileStatus.defaultVariants as { status: string } + expect(defaultVariants.status).toBe('todo') + }) +}) diff --git a/tests/react/components/fileStatus.test.tsx b/tests/react/components/fileStatus.test.tsx new file mode 100644 index 00000000..55f7b4c5 --- /dev/null +++ b/tests/react/components/fileStatus.test.tsx @@ -0,0 +1,80 @@ +import { describe, test, expect, afterEach, jest } from 'bun:test' +import { cleanup, render, screen } from '@testing-library/react' +import { FileStatus, processStatus } from '@cerberus-design/react' +import { setupStrictMode } from '@/utils' +import userEvent from '@testing-library/user-event' + +describe('FileStatus', () => { + setupStrictMode() + afterEach(cleanup) + + test('should render a file status', () => { + render( + , + ) + expect(screen.getByText(/file.txt/i)).toBeTruthy() + expect(screen.getByText(/waiting to upload/i)).toBeTruthy() + }) + + test('should render a processing file status', () => { + render( + , + ) + expect(screen.getByText(/file.txt/i)).toBeTruthy() + expect(screen.getByText(/50% complete/i)).toBeTruthy() + }) + + test('should render a done file status', () => { + render( + , + ) + expect(screen.getByText(/file.txt/i)).toBeTruthy() + expect(screen.getByText(/file uploaded successfully/i)).toBeTruthy() + }) + + test('should render an error file status', () => { + render( + , + ) + expect(screen.getByText(/file.txt/i)).toBeTruthy() + expect( + screen.getByText(/There was an error uploading the file/i), + ).toBeTruthy() + }) + + test('should render a file status with an action', async () => { + const handleClick = jest.fn() + render( + , + ) + expect(screen.getByText(/file.txt/i)).toBeTruthy() + expect(screen.getByText(/waiting to upload/i)).toBeTruthy() + await userEvent.click(screen.getByRole('button')) + expect(handleClick).toHaveBeenCalled() + }) +}) diff --git a/tests/react/components/fileUploader.test.tsx b/tests/react/components/fileUploader.test.tsx index 6fab6ee9..653533db 100644 --- a/tests/react/components/fileUploader.test.tsx +++ b/tests/react/components/fileUploader.test.tsx @@ -18,7 +18,7 @@ describe('FileUploader', () => { expect(screen.getByText(/upload files/i)).toBeTruthy() expect(screen.getByText(/import .csv, .docx files/i)).toBeTruthy() - expect(screen.getByText(/or click to upload/i)).toBeTruthy() + expect(screen.getByText(/click to select files/i)).toBeTruthy() expect(screen.getByLabelText(/upload files/i)).toBeTruthy() }) @@ -27,6 +27,6 @@ describe('FileUploader', () => { expect(screen.queryByText(/upload files/i)).toBeNull() expect(screen.getByText(/import .csv, .doc files/i)).toBeTruthy() - expect(screen.getByText(/or click to upload/i)).toBeTruthy() + expect(screen.getByText(/click to select files/i)).toBeTruthy() }) })