diff --git a/build/generateAdapterPropDocs.ts b/build/generateAdapterPropDocs.ts index 96bdab3be..ad3492c5b 100644 --- a/build/generateAdapterPropDocs.ts +++ b/build/generateAdapterPropDocs.ts @@ -6,6 +6,7 @@ import { Node, PropertySignature, Symbol as TSMorphSymbol, + SourceFile, } from 'ts-morph' import { writeFile } from 'fs/promises' import { join, dirname } from 'path' @@ -14,7 +15,10 @@ import { fileURLToPath } from 'url' const __filename = fileURLToPath(import.meta.url) const __dirname = dirname(__filename) -const UI_COMPONENTS_DIR = join(__dirname, '../src/components/Common/UI') +const COMPONENT_ADAPTER_TYPES_FILE = join( + __dirname, + '../src/contexts/ComponentAdapter/componentAdapterTypes.ts', +) const DOCS_OUTPUT_DIR = join(__dirname, '../docs/component-adapter') const DOCS_OUTPUT_FILE = join(DOCS_OUTPUT_DIR, 'component-inventory.md') @@ -64,7 +68,11 @@ function isBooleanUnion(types: Type[]): boolean { function formatType(type: Type | undefined): string { if (!type) return '-' - const typeText = type.getText() + let typeText = type.getText() + + // Clean up absolute import paths to just show type names + // e.g., import("/absolute/path/to/file").TypeName → TypeName + typeText = typeText.replace(/import\("[^"]+"\)\./g, '') // Handle React types - check text representation first before expanding unions if (typeText === 'React.ReactNode' || typeText === 'ReactNode') { @@ -201,6 +209,28 @@ function findReferencedTypes(type: Type, knownTypes: Set): string[] { return type.getIntersectionTypes().flatMap(t => findReferencedTypes(t, knownTypes)) } + // Handle function types - check parameter types and return type + const callSignatures = type.getCallSignatures() + if (callSignatures.length > 0) { + const referencedTypes: string[] = [] + for (const sig of callSignatures) { + // Check parameter types + for (const param of sig.getParameters()) { + const paramType = param.getTypeAtLocation(param.getDeclarations()[0]) + referencedTypes.push(...findReferencedTypes(paramType, knownTypes)) + } + // Check return type + referencedTypes.push(...findReferencedTypes(sig.getReturnType(), knownTypes)) + } + return referencedTypes + } + + // Check alias symbol first (for type aliases like PaginationItemsPerPage) + const aliasSymbol = type.getAliasSymbol() + if (aliasSymbol && knownTypes.has(aliasSymbol.getName())) { + return [aliasSymbol.getName()] + } + const symbol = type.getSymbol() if (symbol && knownTypes.has(symbol.getName())) { return [symbol.getName()] @@ -324,6 +354,7 @@ function generateComponentSection( type: ComponentType, componentTypeMap: Map, parentToChildren: Map, + knownTypeNames: Set, level = 2, documented = new Set(), ): string { @@ -341,6 +372,22 @@ function generateComponentSection( documented.add(typeName) const heading = `${'#'.repeat(level)} ${typeName}` + + // Handle literal union types (e.g., 5 | 10 | 50) + const resolvedType = type.getType() + if (resolvedType.isUnion()) { + const unionTypes = resolvedType.getUnionTypes() + const allLiterals = unionTypes.every( + t => t.isLiteral() || t.isStringLiteral() || t.isNumberLiteral() || t.isBooleanLiteral(), + ) + if (allLiterals) { + const values = unionTypes.map(t => t.getText()).join(' | ') + // Use ### level for type definitions (consistent with child types) + // Use TypeScript code block for clear type presentation + return `### ${typeName}\n\n\`\`\`typescript\ntype ${typeName} = ${values}\n\`\`\`` + } + } + const props = getComponentProps(type, componentTypeMap) // Handle type aliases @@ -350,7 +397,7 @@ function generateComponentSection( } // Generate prop table - const table = generatePropTable(type, props) + const table = generatePropTable(type, props, knownTypeNames) let section = `${heading}\n\n${table}` // Add child components @@ -358,7 +405,14 @@ function generateComponentSection( .map(childName => componentTypeMap.get(childName)) .filter((child): child is ComponentType => child !== undefined) .map(child => - generateComponentSection(child, componentTypeMap, parentToChildren, level + 1, documented), + generateComponentSection( + child, + componentTypeMap, + parentToChildren, + knownTypeNames, + level + 1, + documented, + ), ) .filter(Boolean) .join('\n\n') @@ -403,9 +457,14 @@ function handleTypeAlias( * * @param type - The component type containing the props * @param props - Array of property symbols to document + * @param knownTypeNames - Set of known type names for linkification * @returns Markdown table string with prop documentation */ -function generatePropTable(type: ComponentType, props: TSMorphSymbol[]): string { +function generatePropTable( + type: ComponentType, + props: TSMorphSymbol[], + knownTypeNames: Set, +): string { const TABLE_HEADER = '| Prop | Type | Required | Description |\n|------|------|----------|-------------|' @@ -418,7 +477,7 @@ function generatePropTable(type: ComponentType, props: TSMorphSymbol[]): string return true }) - const rows = uniqueProps.map(prop => generatePropRow(type, prop)) + const rows = uniqueProps.map(prop => generatePropRow(type, prop, knownTypeNames)) return `${TABLE_HEADER}\n${rows.join('\n')}` } @@ -435,7 +494,11 @@ function generatePropTable(type: ComponentType, props: TSMorphSymbol[]): string * @param prop - The property symbol to document * @returns Markdown table row string */ -function generatePropRow(type: ComponentType, prop: TSMorphSymbol): string { +function generatePropRow( + type: ComponentType, + prop: TSMorphSymbol, + knownTypeNames: Set, +): string { // Get basic prop info const name = prop.getName() const nodeArg = type.getType().getSymbol()?.getDeclarations()?.[0] @@ -447,7 +510,14 @@ function generatePropRow(type: ComponentType, prop: TSMorphSymbol): string { propType = propDecl ? prop.getTypeAtLocation(propDecl) : undefined } - const typeText = formatType(propType).replace(/[\n\r]/g, ' ') + let typeText = formatType(propType).replace(/[\n\r]/g, ' ') + + // Linkify known type names that appear in function signatures or other contexts + for (const typeName of knownTypeNames) { + // Match type name as a whole word (not part of another word) + const regex = new RegExp(`\\b${typeName}\\b(?![^\\[]*\\])`, 'g') + typeText = typeText.replace(regex, `[${typeName}](#${typeName.toLowerCase()})`) + } // Get prop declaration and metadata const decl = prop.getDeclarations()[0] @@ -561,20 +631,77 @@ function buildComponentHierarchy( return { parentToChildren, getTopLevelComponents } } +function getTypeSourceFilesFromAdapterTypes( + project: Project, + adapterTypesFile: SourceFile, +): SourceFile[] { + const exportDeclarations = adapterTypesFile.getExportDeclarations() + const sourceFilePaths = new Set() + + for (const exportDecl of exportDeclarations) { + const moduleSpecifier = exportDecl.getModuleSpecifierValue() + if (moduleSpecifier) { + const resolvedPath = moduleSpecifier.replace('@/', join(__dirname, '../src/')) + const fullPath = resolvedPath.endsWith('.ts') ? resolvedPath : `${resolvedPath}.ts` + sourceFilePaths.add(fullPath) + } + } + + const sourceFiles: SourceFile[] = [] + for (const filePath of sourceFilePaths) { + project.addSourceFilesAtPaths(filePath) + const sourceFile = project.getSourceFile(filePath) + if (sourceFile) { + sourceFiles.push(sourceFile) + } + } + + return sourceFiles +} + async function generateAdapterPropDocs() { const project = new Project({ tsConfigFilePath: join(__dirname, '../tsconfig.json'), skipAddingFilesFromTsConfig: false, }) - // Add source files - project.addSourceFilesAtPaths(join(UI_COMPONENTS_DIR, '**/*Types.ts')) + project.addSourceFilesAtPaths(COMPONENT_ADAPTER_TYPES_FILE) + const adapterTypesFile = project.getSourceFile(COMPONENT_ADAPTER_TYPES_FILE) + + if (!adapterTypesFile) { + throw new Error(`Could not find componentAdapterTypes.ts at ${COMPONENT_ADAPTER_TYPES_FILE}`) + } - // Get all interfaces and type aliases - const sourceFiles = project.getSourceFiles(join(UI_COMPONENTS_DIR, '**/*Types.ts')) + const sourceFiles = getTypeSourceFilesFromAdapterTypes(project, adapterTypesFile) const interfaces = sourceFiles.flatMap(sourceFile => sourceFile.getInterfaces()) const typeAliases = sourceFiles.flatMap(sourceFile => sourceFile.getTypeAliases()) + const isLiteralUnionType = (alias: TypeAliasDeclaration): boolean => { + const type = alias.getType() + if (type.isUnion()) { + const unionTypes = type.getUnionTypes() + return unionTypes.every( + t => t.isLiteral() || t.isStringLiteral() || t.isNumberLiteral() || t.isBooleanLiteral(), + ) + } + return false + } + + const isDocumentableTypeAlias = (alias: TypeAliasDeclaration): boolean => { + const type = alias.getType() + if (type.isObject() && type.getProperties().length > 0) { + return true + } + if (type.isUnion()) { + const unionTypes = type.getUnionTypes() + const hasObjectType = unionTypes.some(t => t.isObject() && t.getProperties().length > 0) + if (hasObjectType) return true + // Include literal unions - they'll be documented differently + if (isLiteralUnionType(alias)) return true + } + return true + } + // Create component type entries const componentEntries = [ ...interfaces.map(intf => { @@ -588,7 +715,7 @@ async function generateAdapterPropDocs() { ] return entry }), - ...typeAliases.map(alias => { + ...typeAliases.filter(isDocumentableTypeAlias).map(alias => { const entry: [string, ComponentType] = [ alias.getName(), { @@ -622,7 +749,16 @@ async function generateAdapterPropDocs() { // Create a shared set to track documented components across all sections const documented = new Set() const sections = topLevelComponents - .map(type => generateComponentSection(type, componentTypeMap, parentToChildren, 2, documented)) + .map(type => + generateComponentSection( + type, + componentTypeMap, + parentToChildren, + knownTypeNames, + 2, + documented, + ), + ) .filter(Boolean) .join('\n\n') diff --git a/docs/component-adapter/component-inventory.md b/docs/component-adapter/component-inventory.md index 6736aa037..fea2ad078 100644 --- a/docs/component-adapter/component-inventory.md +++ b/docs/component-adapter/component-inventory.md @@ -20,7 +20,6 @@ - [DescriptionListItem](#descriptionlistitem) - [DialogProps](#dialogprops) - [HeadingProps](#headingprops) -- [InputProps](#inputprops) - [LinkProps](#linkprops) - [LoadingSpinnerProps](#loadingspinnerprops) - [MenuProps](#menuprops) @@ -28,6 +27,8 @@ - [ModalProps](#modalprops) - [NumberInputProps](#numberinputprops) - [OrderedListProps](#orderedlistprops) +- [PaginationControlProps](#paginationcontrolprops) +- [PaginationItemsPerPage](#paginationitemsperpage) - [ProgressBarProps](#progressbarprops) - [RadioGroupProps](#radiogroupprops) - [RadioGroupOption](#radiogroupoption) @@ -119,16 +120,16 @@ | **onFocus** | `(e: React.FocusEvent) => void` | No | Handler for focus events | | **className** | `string` | No | - | | **id** | `string` | No | - | -| **aria-label** | `string` | No | Defines a string value that labels the current element. | -| **name** | `string` | No | - | -| **type** | `"submit" \| "reset" \| "button"` | No | - | -| **onClick** | `React.MouseEventHandler` | No | - | | **onKeyDown** | `React.KeyboardEventHandler` | No | - | | **onKeyUp** | `React.KeyboardEventHandler` | No | - | +| **aria-label** | `string` | No | Defines a string value that labels the current element. | | **aria-labelledby** | `string` | No | Identifies the element (or elements) that labels the current element. | | **aria-describedby** | `string` | No | Identifies the element (or elements) that describes the object. | -| **form** | `string` | No | - | | **title** | `string` | No | - | +| **name** | `string` | No | - | +| **type** | `"submit" \| "reset" \| "button"` | No | - | +| **onClick** | `React.MouseEventHandler` | No | - | +| **form** | `string` | No | - | | **tabIndex** | `number` | No | - | ## ButtonProps @@ -144,16 +145,16 @@ | **onFocus** | `(e: React.FocusEvent) => void` | No | Handler for focus events | | **className** | `string` | No | - | | **id** | `string` | No | - | -| **aria-label** | `string` | No | Defines a string value that labels the current element. | -| **name** | `string` | No | - | -| **type** | `"submit" \| "reset" \| "button"` | No | - | -| **onClick** | `React.MouseEventHandler` | No | - | | **onKeyDown** | `React.KeyboardEventHandler` | No | - | | **onKeyUp** | `React.KeyboardEventHandler` | No | - | +| **aria-label** | `string` | No | Defines a string value that labels the current element. | | **aria-labelledby** | `string` | No | Identifies the element (or elements) that labels the current element. | | **aria-describedby** | `string` | No | Identifies the element (or elements) that describes the object. | -| **form** | `string` | No | - | | **title** | `string` | No | - | +| **name** | `string` | No | - | +| **type** | `"submit" \| "reset" \| "button"` | No | - | +| **onClick** | `React.MouseEventHandler` | No | - | +| **form** | `string` | No | - | | **tabIndex** | `number` | No | - | ## CalendarPreviewProps @@ -305,43 +306,22 @@ | **children** | `React.ReactNode` | No | Content to be displayed inside the heading | | **className** | `string` | No | - | -## InputProps - -| Prop | Type | Required | Description | -| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------- | -| **inputRef** | `Ref` | No | Ref for the input element | -| **adornmentStart** | `React.ReactNode` | No | Content to display at the start of the input | -| **adornmentEnd** | `React.ReactNode` | No | Content to display at the end of the input | -| **isDisabled** | `boolean` | No | Whether the input is disabled | -| **className** | `string` | No | - | -| **id** | `string` | No | - | -| **name** | `string` | No | - | -| **type** | `"number" \| "submit" \| "reset" \| "button" \| "checkbox" \| "color" \| "date" \| "datetime-local" \| "email" \| "file" \| "hidden" \| "image" \| "month" \| "password" \| "radio" \| "range" \| "search" \| "tel" \| "text" \| "time" \| "url" \| "week" \| string` | No | - | -| **aria-describedby** | `string` | No | Identifies the element (or elements) that describes the object. | -| **placeholder** | `string` | No | - | -| **value** | `string \| number \| string[]` | No | - | -| **onChange** | `React.ChangeEventHandler` | No | - | -| **onBlur** | `React.FocusEventHandler` | No | - | -| **aria-invalid** | `false \| true \| "false" \| "true" \| "grammar" \| "spelling"` | No | Indicates the entered value does not conform to the format expected by the application. | -| **min** | `string \| number` | No | - | -| **max** | `string \| number` | No | - | - ## LinkProps | Prop | Type | Required | Description | | -------------------- | ------------------------------------------------------ | -------- | --------------------------------------------------------------------- | +| **href** | `string` | No | - | +| **target** | `"_self" \| "_blank" \| "_parent" \| "_top" \| string` | No | - | +| **rel** | `string` | No | - | +| **download** | `any` | No | - | | **className** | `string` | No | - | | **id** | `string` | No | - | -| **aria-label** | `string` | No | Defines a string value that labels the current element. | | **onKeyDown** | `React.KeyboardEventHandler` | No | - | | **onKeyUp** | `React.KeyboardEventHandler` | No | - | +| **aria-label** | `string` | No | Defines a string value that labels the current element. | | **aria-labelledby** | `string` | No | Identifies the element (or elements) that labels the current element. | | **aria-describedby** | `string` | No | Identifies the element (or elements) that describes the object. | | **title** | `string` | No | - | -| **href** | `string` | No | - | -| **target** | `"_self" \| "_blank" \| "_parent" \| "_top" \| string` | No | - | -| **rel** | `string` | No | - | -| **download** | `any` | No | - | | **children** | `React.ReactNode` | No | Content to be displayed inside the link | ## LoadingSpinnerProps @@ -416,6 +396,26 @@ The props for this component are defined in [BaseListProps](#baselistprops). +## PaginationControlProps + +| Prop | Type | Required | Description | +| ---------------------------- | ---------------------------------------------------------------- | -------- | ----------- | +| **handleFirstPage** | `() => void` | Yes | - | +| **handlePreviousPage** | `() => void` | Yes | - | +| **handleNextPage** | `() => void` | Yes | - | +| **handleLastPage** | `() => void` | Yes | - | +| **handleItemsPerPageChange** | `(n: [PaginationItemsPerPage](#paginationitemsperpage)) => void` | Yes | - | +| **currentPage** | `number` | Yes | - | +| **totalPages** | `number` | Yes | - | +| **itemsPerPage** | `5 \| 10 \| 50` | No | - | +| **isFetching** | `boolean` | No | - | + +### PaginationItemsPerPage + +```typescript +type PaginationItemsPerPage = 5 | 10 | 50 +``` + ## ProgressBarProps | Prop | Type | Required | Description | @@ -535,7 +535,7 @@ The props for this component are defined in [BaseListProps](#baselistprops). | **aria-label** | `string` | No | Defines a string value that labels the current element. | | **aria-labelledby** | `string` | No | Identifies the element (or elements) that labels the current element. | | **aria-describedby** | `string` | No | Identifies the element (or elements) that describes the object. | -| **role** | `"form" \| "button" \| "checkbox" \| "radio" \| "search" \| "alert" \| "alertdialog" \| "application" \| "article" \| "banner" \| "cell" \| "columnheader" \| "combobox" \| "complementary" \| "contentinfo" \| "definition" \| "dialog" \| "directory" \| "document" \| "feed" \| "figure" \| "grid" \| "gridcell" \| "group" \| "heading" \| "img" \| "link" \| "list" \| "listbox" \| "listitem" \| "log" \| "main" \| "marquee" \| "math" \| "menu" \| "menubar" \| "menuitem" \| "menuitemcheckbox" \| "menuitemradio" \| "navigation" \| "none" \| "note" \| "option" \| "presentation" \| "progressbar" \| "radiogroup" \| "region" \| "row" \| "rowgroup" \| "rowheader" \| "scrollbar" \| "searchbox" \| "separator" \| "slider" \| "spinbutton" \| "status" \| "switch" \| "tab" \| "table" \| "tablist" \| "tabpanel" \| "term" \| "textbox" \| "timer" \| "toolbar" \| "tooltip" \| "tree" \| "treegrid" \| "treeitem" \| string` | No | - | +| **role** | `"form" \| "button" \| "alert" \| "alertdialog" \| "application" \| "article" \| "banner" \| "cell" \| "checkbox" \| "columnheader" \| "combobox" \| "complementary" \| "contentinfo" \| "definition" \| "dialog" \| "directory" \| "document" \| "feed" \| "figure" \| "grid" \| "gridcell" \| "group" \| "heading" \| "img" \| "link" \| "list" \| "listbox" \| "listitem" \| "log" \| "main" \| "marquee" \| "math" \| "menu" \| "menubar" \| "menuitem" \| "menuitemcheckbox" \| "menuitemradio" \| "navigation" \| "none" \| "note" \| "option" \| "presentation" \| "progressbar" \| "radio" \| "radiogroup" \| "region" \| "row" \| "rowgroup" \| "rowheader" \| "scrollbar" \| "search" \| "searchbox" \| "separator" \| "slider" \| "spinbutton" \| "status" \| "switch" \| "tab" \| "table" \| "tablist" \| "tabpanel" \| "term" \| "textbox" \| "timer" \| "toolbar" \| "tooltip" \| "tree" \| "treegrid" \| "treeitem" \| string` | No | - | ### TableData @@ -614,7 +614,7 @@ The props for this component are defined in [BaseListProps](#baselistprops). | **className** | `string` | No | - | | **id** | `string` | No | - | | **name** | `string` | No | - | -| **type** | `"number" \| "submit" \| "reset" \| "button" \| "checkbox" \| "color" \| "date" \| "datetime-local" \| "email" \| "file" \| "hidden" \| "image" \| "month" \| "password" \| "radio" \| "range" \| "search" \| "tel" \| "text" \| "time" \| "url" \| "week" \| string` | No | - | +| **type** | `"number" \| "submit" \| "reset" \| "button" \| "checkbox" \| "radio" \| "search" \| "color" \| "date" \| "datetime-local" \| "email" \| "file" \| "hidden" \| "image" \| "month" \| "password" \| "range" \| "tel" \| "text" \| "time" \| "url" \| "week" \| string` | No | - | | **placeholder** | `string` | No | - | | **aria-describedby** | `string` | No | Identifies the element (or elements) that describes the object. | diff --git a/package-lock.json b/package-lock.json index 78efc36d5..d88b1c33f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -154,7 +154,6 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -458,6 +457,7 @@ "integrity": "sha512-7e8SScMocHxcAb8YhtkbMhGG+EKLRIficb1F5sjvhSYsWTZGxvg4KIDp8kgxnV2PUJ3ddPe6J9QESjKvBWRDkg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@cacheable/utils": "^2.3.2", "@keyv/bigmap": "^1.3.0", @@ -471,6 +471,7 @@ "integrity": "sha512-KT01GjzV6AQD5+IYrcpoYLkCu1Jod3nau1Z7EsEuViO3TZGRacSbO9MfHmbJ1WaOXFtWLxPVj169cn2WNKPkIg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hashery": "^1.2.0", "hookified": "^1.13.0" @@ -499,6 +500,7 @@ "integrity": "sha512-8kGE2P+HjfY8FglaOiW+y8qxcaQAfAhVML+i66XJR3YX5FtyDqn6Txctr3K2FrbxLKixRRYYBWMbuGciOhYNDg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hashery": "^1.2.0", "keyv": "^5.5.4" @@ -510,6 +512,7 @@ "integrity": "sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -859,7 +862,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -883,6 +885,7 @@ } ], "license": "MIT-0", + "peer": true, "engines": { "node": ">=18" } @@ -903,7 +906,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -924,6 +926,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -948,6 +951,7 @@ } ], "license": "MIT-0", + "peer": true, "engines": { "node": ">=18" }, @@ -961,6 +965,7 @@ "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==", "dev": true, "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/JounQin" @@ -2247,7 +2252,8 @@ "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@ladle/react": { "version": "5.1.1", @@ -5820,6 +5826,7 @@ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.12.tgz", "integrity": "sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==", "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" @@ -5972,7 +5979,8 @@ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/babel__core": { "version": "7.20.5", @@ -6229,7 +6237,6 @@ "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -6247,7 +6254,6 @@ "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -6342,7 +6348,6 @@ "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -6908,7 +6913,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -7157,6 +7161,7 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -7323,6 +7328,7 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -7503,7 +7509,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -7571,6 +7576,7 @@ "integrity": "sha512-yr+FSHWn1ZUou5LkULX/S+jhfgfnLbuKQjE40tyEd4fxGZVMbBL5ifno0J0OauykS8UiCSgHi+DV/YD+rjFxFg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@cacheable/memory": "^2.0.6", "@cacheable/utils": "^2.3.2", @@ -7585,6 +7591,7 @@ "integrity": "sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -8069,7 +8076,8 @@ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/colorette": { "version": "2.0.20", @@ -8260,7 +8268,6 @@ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -8321,6 +8328,7 @@ "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12 || >=16" } @@ -8355,6 +8363,7 @@ "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" @@ -8376,6 +8385,7 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "cssesc": "bin/cssesc" }, @@ -8751,6 +8761,7 @@ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "path-type": "^4.0.0" }, @@ -8764,6 +8775,7 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -8812,7 +8824,8 @@ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/dompurify": { "version": "3.3.1", @@ -9255,7 +9268,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -10024,6 +10036,7 @@ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4.9.1" } @@ -10487,6 +10500,7 @@ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "global-prefix": "^3.0.0" }, @@ -10500,6 +10514,7 @@ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -10514,7 +10529,8 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", @@ -10522,6 +10538,7 @@ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -10608,7 +10625,8 @@ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/globrex": { "version": "0.1.2", @@ -10734,6 +10752,7 @@ "integrity": "sha512-fWltioiy5zsSAs9ouEnvhsVJeAXRybGCNNv0lvzpzNOSDbULXRy7ivFWwCCv4I5Am6kSo75hmbsCduOoc2/K4w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hookified": "^1.13.0" }, @@ -11044,7 +11063,8 @@ "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.14.0.tgz", "integrity": "sha512-pi1ynXIMFx/uIIwpWJ/5CEtOHLGtnUB0WhGeeYT+fKcQ+WCQbm3/rrkAXnpfph++PgepNqPdTC2WTj8A6k6zoQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/hosted-git-info": { "version": "2.8.9", @@ -11088,6 +11108,7 @@ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" }, @@ -11210,7 +11231,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.4" }, @@ -11761,6 +11781,7 @@ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -12690,7 +12711,6 @@ "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cssstyle": "^4.2.1", "data-urls": "^5.0.0", @@ -12886,6 +12906,7 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -12895,7 +12916,8 @@ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/koa": { "version": "2.16.3", @@ -13179,7 +13201,8 @@ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.uniq": { "version": "4.5.0", @@ -13272,6 +13295,7 @@ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "lz-string": "bin/bin.js" } @@ -13354,6 +13378,7 @@ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true, "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -13680,7 +13705,8 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", "dev": true, - "license": "CC0-1.0" + "license": "CC0-1.0", + "peer": true }, "node_modules/media-typer": { "version": "0.3.0", @@ -14854,6 +14880,7 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -15602,7 +15629,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -15617,7 +15643,8 @@ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/postcss-safe-parser": { "version": "7.0.1", @@ -15639,6 +15666,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18.0" }, @@ -15666,7 +15694,8 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -15700,6 +15729,7 @@ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -15715,6 +15745,7 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -15782,6 +15813,7 @@ "integrity": "sha512-kXuQdQTB6oN3KhI6V4acnBSZx8D2I4xzZvn9+wFLLFCoBNQY/sFnCW6c43OL7pOQ2HvGV4lnWIXNmgfp7cTWhQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hookified": "^1.13.0" }, @@ -16021,7 +16053,6 @@ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.68.0.tgz", "integrity": "sha512-oNN3fjrZ/Xo40SWlHf1yCjlMK417JxoSJVUXQjGdvdRCU07NTFei1i1f8ApUAts+IVh14e4EdakeLEA+BEAs/Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -16076,7 +16107,8 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/react-refresh": { "version": "0.17.0", @@ -16565,8 +16597,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/robot3/-/robot3-1.2.0.tgz", "integrity": "sha512-Xin8KHqCKrD9Rqk1ZzZQYjsb6S9DRggcfwBqnVPeM3DLtNCJLxWWTrPJDYm3E+ZiTO7H3VMdgyPSkIbuYnYP2Q==", - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/rollup": { "version": "4.53.5", @@ -16574,7 +16605,6 @@ "integrity": "sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -17152,7 +17182,8 @@ "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/semver": { "version": "7.7.3", @@ -17991,14 +18022,16 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/stylelint/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/stylelint/node_modules/file-entry-cache": { "version": "11.1.1", @@ -18006,6 +18039,7 @@ "integrity": "sha512-TPVFSDE7q91Dlk1xpFLvFllf8r0HyOMOlnWy7Z2HBku5H3KhIeOGInexrIeg2D64DosVB/JXkrrk6N/7Wriq4A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "flat-cache": "^6.1.19" } @@ -18016,6 +18050,7 @@ "integrity": "sha512-l/K33newPTZMTGAnnzaiqSl6NnH7Namh8jBNjrgjprWxGmZUuxx/sJNIRaijOh3n7q7ESbhNZC+pvVZMFdeU4A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "cacheable": "^2.2.0", "flatted": "^3.3.3", @@ -18028,6 +18063,7 @@ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -18049,6 +18085,7 @@ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4" } @@ -18059,6 +18096,7 @@ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4" } @@ -18069,6 +18107,7 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -18079,6 +18118,7 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -18089,6 +18129,7 @@ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -18104,6 +18145,7 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -18130,6 +18172,7 @@ "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -18165,7 +18208,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/symbol-tree": { "version": "3.2.4", @@ -18203,6 +18247,7 @@ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, "license": "BSD-3-Clause", + "peer": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -18220,6 +18265,7 @@ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -18236,6 +18282,7 @@ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -18248,14 +18295,16 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/table/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/table/node_modules/is-fullwidth-code-point": { "version": "3.0.0", @@ -18263,6 +18312,7 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -18273,6 +18323,7 @@ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -18291,6 +18342,7 @@ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -18306,6 +18358,7 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -18642,7 +18695,6 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -19041,7 +19093,8 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/validate-npm-package-license": { "version": "3.0.4", @@ -19122,7 +19175,6 @@ "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -19941,7 +19993,6 @@ "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", @@ -20388,6 +20439,7 @@ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" @@ -20599,7 +20651,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/src/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.tsx b/src/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.tsx index 595470eb4..f09085b10 100644 --- a/src/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.tsx +++ b/src/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.tsx @@ -64,7 +64,6 @@ function Root({ companyId, wireInId, onEvent }: ConfirmWireDetailsProps) { const [current, send] = useMachine(confirmWireDetailsMachineInstance) function handleEvent(type: EventType, data?: unknown) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-call send({ type, payload: data }) if (type === payrollWireEvents.PAYROLL_WIRE_START_TRANSFER) { diff --git a/src/contexts/ComponentAdapter/componentAdapterTypes.ts b/src/contexts/ComponentAdapter/componentAdapterTypes.ts index 966d5f495..8fa522942 100644 --- a/src/contexts/ComponentAdapter/componentAdapterTypes.ts +++ b/src/contexts/ComponentAdapter/componentAdapterTypes.ts @@ -26,9 +26,15 @@ export type { BadgeProps } from '@/components/Common/UI/Badge/BadgeTypes' export type { BannerProps } from '@/components/Common/UI/Banner/BannerTypes' export type { OrderedListProps, UnorderedListProps } from '@/components/Common/UI/List/ListTypes' export type { HeadingProps } from '@/components/Common/UI/Heading/HeadingTypes' -export type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes' +export type { + PaginationControlProps, + PaginationItemsPerPage, +} from '@/components/Common/PaginationControl/PaginationControlTypes' export type { TextProps } from '@/components/Common/UI/Text/TextTypes' export type { CalendarPreviewProps } from '@/components/Common/UI/CalendarPreview/CalendarPreviewTypes' export type { DialogProps } from '@/components/Common/UI/Dialog/DialogTypes' export type { ModalProps } from '@/components/Common/UI/Modal/ModalTypes' export type { DescriptionListProps } from '@/components/Common/UI/DescriptionList/DescriptionListTypes' +export type { TextAreaProps } from '@/components/Common/UI/TextArea/TextAreaTypes' +export type { TabsProps } from '@/components/Common/UI/Tabs/TabsTypes' +export type { LoadingSpinnerProps } from '@/components/Common/UI/LoadingSpinner/LoadingSpinnerTypes' diff --git a/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx b/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx index 8bc622442..36795b169 100644 --- a/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx +++ b/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx @@ -5,7 +5,6 @@ import type { QueryClient } from '@tanstack/react-query' import { useEffect } from 'react' import { ComponentsProvider } from '../ComponentAdapter/ComponentsProvider' import type { ComponentsContextType } from '../ComponentAdapter/useComponentContext' -import { createComponents } from '../ComponentAdapter/createComponentsWithDefaults' import { ApiProvider } from '../ApiProvider/ApiProvider' import { LoadingIndicatorProvider } from '../LoadingIndicatorProvider/LoadingIndicatorProvider' import type { LoadingIndicatorContextProps } from '../LoadingIndicatorProvider/useLoadingIndicator' @@ -80,7 +79,7 @@ const GustoProviderCustomUIAdapter: React.FC }, [lng]) return ( - +