From 90d17efe653e31e984ce28e0466c14569656befd Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 26 Oct 2026 18:53:15 +0000 Subject: [PATCH 1/5] wip(types): ComponentRendererProps index signature any -> unknown (step 0) Claude-Session: https://claude.ai/code/session_01GJjkZ6pmdwWoDYH8fE8FAn Co-authored-by: Claude --- ui/packages/types/src/base.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/packages/types/src/base.ts b/ui/packages/types/src/base.ts index 21d801568a6..647446309d9 100644 --- a/ui/packages/types/src/base.ts +++ b/ui/packages/types/src/base.ts @@ -752,7 +752,7 @@ export interface ComponentRendererProps /** * Additional properties passed to the renderer */ - [key: string]: any; + [key: string]: unknown; } /** From e8b74cebfbc4bab6cc3f7cddb0d6962dfe454808 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 26 Oct 2026 19:03:42 +0000 Subject: [PATCH 2/5] wip(components): renderer inline props index signature any -> unknown (mechanical, breaks pending) Claude-Session: https://claude.ai/code/session_01GJjkZ6pmdwWoDYH8fE8FAn Co-authored-by: Claude --- .../components/src/renderers/action/action-bar.tsx | 2 +- .../components/src/renderers/action/action-button.tsx | 2 +- .../components/src/renderers/action/action-group.tsx | 4 ++-- .../components/src/renderers/action/action-icon.tsx | 2 +- .../components/src/renderers/action/action-menu.tsx | 4 ++-- .../components/src/renderers/basic/button-group.tsx | 2 +- ui/packages/components/src/renderers/basic/div.tsx | 2 +- .../components/src/renderers/basic/html-elements.tsx | 2 +- ui/packages/components/src/renderers/basic/icon.tsx | 2 +- ui/packages/components/src/renderers/basic/image.tsx | 2 +- .../components/src/renderers/basic/navigation-menu.tsx | 2 +- ui/packages/components/src/renderers/basic/pagination.tsx | 2 +- ui/packages/components/src/renderers/basic/separator.tsx | 2 +- ui/packages/components/src/renderers/basic/span.tsx | 2 +- ui/packages/components/src/renderers/basic/text.tsx | 2 +- ui/packages/components/src/renderers/complex/carousel.tsx | 2 +- .../components/src/renderers/complex/filter-builder.tsx | 2 +- .../components/src/renderers/complex/resizable.tsx | 2 +- .../components/src/renderers/complex/scroll-area.tsx | 2 +- ui/packages/components/src/renderers/complex/table.tsx | 2 +- .../components/src/renderers/data-display/alert.tsx | 2 +- .../components/src/renderers/data-display/avatar.tsx | 2 +- .../components/src/renderers/data-display/badge.tsx | 2 +- .../components/src/renderers/data-display/breadcrumb.tsx | 2 +- ui/packages/components/src/renderers/data-display/kbd.tsx | 2 +- .../components/src/renderers/data-display/list.tsx | 2 +- .../components/src/renderers/data-display/tree-view.tsx | 2 +- .../components/src/renderers/disclosure/accordion.tsx | 2 +- .../components/src/renderers/disclosure/collapsible.tsx | 2 +- .../components/src/renderers/disclosure/toggle-group.tsx | 2 +- ui/packages/components/src/renderers/feedback/empty.tsx | 2 +- ui/packages/components/src/renderers/feedback/loading.tsx | 2 +- .../components/src/renderers/feedback/progress.tsx | 2 +- .../components/src/renderers/feedback/skeleton.tsx | 2 +- ui/packages/components/src/renderers/feedback/sonner.tsx | 2 +- ui/packages/components/src/renderers/feedback/spinner.tsx | 2 +- ui/packages/components/src/renderers/form/button.tsx | 2 +- ui/packages/components/src/renderers/form/calendar.tsx | 2 +- ui/packages/components/src/renderers/form/checkbox.tsx | 2 +- ui/packages/components/src/renderers/form/combobox.tsx | 2 +- ui/packages/components/src/renderers/form/command.tsx | 2 +- ui/packages/components/src/renderers/form/date-picker.tsx | 2 +- ui/packages/components/src/renderers/form/file-upload.tsx | 2 +- ui/packages/components/src/renderers/form/form.tsx | 8 ++++---- ui/packages/components/src/renderers/form/input-otp.tsx | 2 +- ui/packages/components/src/renderers/form/input.tsx | 2 +- ui/packages/components/src/renderers/form/label.tsx | 2 +- ui/packages/components/src/renderers/form/radio-group.tsx | 2 +- ui/packages/components/src/renderers/form/select.tsx | 2 +- ui/packages/components/src/renderers/form/slider.tsx | 2 +- ui/packages/components/src/renderers/form/switch.tsx | 2 +- ui/packages/components/src/renderers/form/textarea.tsx | 2 +- ui/packages/components/src/renderers/form/toggle.tsx | 2 +- .../components/src/renderers/layout/aspect-ratio.tsx | 2 +- ui/packages/components/src/renderers/layout/box.tsx | 2 +- ui/packages/components/src/renderers/layout/card.tsx | 2 +- ui/packages/components/src/renderers/layout/container.tsx | 2 +- ui/packages/components/src/renderers/layout/flex.tsx | 2 +- ui/packages/components/src/renderers/layout/grid.tsx | 2 +- ui/packages/components/src/renderers/layout/page.tsx | 2 +- ui/packages/components/src/renderers/layout/semantic.tsx | 2 +- ui/packages/components/src/renderers/layout/stack.tsx | 2 +- ui/packages/components/src/renderers/layout/tabs.tsx | 2 +- .../components/src/renderers/navigation/sidebar.tsx | 2 +- .../components/src/renderers/overlay/alert-dialog.tsx | 2 +- .../components/src/renderers/overlay/context-menu.tsx | 2 +- ui/packages/components/src/renderers/overlay/dialog.tsx | 2 +- ui/packages/components/src/renderers/overlay/drawer.tsx | 2 +- .../components/src/renderers/overlay/dropdown-menu.tsx | 2 +- .../components/src/renderers/overlay/hover-card.tsx | 2 +- ui/packages/components/src/renderers/overlay/menubar.tsx | 2 +- ui/packages/components/src/renderers/overlay/popover.tsx | 2 +- ui/packages/components/src/renderers/overlay/sheet.tsx | 2 +- ui/packages/components/src/renderers/overlay/tooltip.tsx | 2 +- 74 files changed, 79 insertions(+), 79 deletions(-) diff --git a/ui/packages/components/src/renderers/action/action-bar.tsx b/ui/packages/components/src/renderers/action/action-bar.tsx index ad9d089b67d..d44fa54a0f3 100644 --- a/ui/packages/components/src/renderers/action/action-bar.tsx +++ b/ui/packages/components/src/renderers/action/action-bar.tsx @@ -94,7 +94,7 @@ function useActionsLabel(): string { // exported and never appears in JSX, and `Registry.register` takes // `ComponentRenderer = T`. const ActionBarRenderer = forwardRef( - ({ schema, className, ...props }: { schema: ActionBarSchema; className?: string; [key: string]: any }, ref) => { + ({ schema, className, ...props }: { schema: ActionBarSchema; className?: string; [key: string]: unknown }, ref) => { const actionsAriaLabel = useActionsLabel(); const { 'data-obj-id': dataObjId, diff --git a/ui/packages/components/src/renderers/action/action-button.tsx b/ui/packages/components/src/renderers/action/action-button.tsx index 909fea8a54a..1775184f36d 100644 --- a/ui/packages/components/src/renderers/action/action-button.tsx +++ b/ui/packages/components/src/renderers/action/action-button.tsx @@ -110,7 +110,7 @@ export interface ActionButtonRendererProps { * therefore never reaches the DOM spread — see the destructure. */ disabled?: boolean; - [key: string]: any; + [key: string]: unknown; } // `PropsWithoutRef` would collapse `ActionButtonRendererProps` to its bare index diff --git a/ui/packages/components/src/renderers/action/action-group.tsx b/ui/packages/components/src/renderers/action/action-group.tsx index c9d3a8496ef..25f4b8d3b3e 100644 --- a/ui/packages/components/src/renderers/action/action-group.tsx +++ b/ui/packages/components/src/renderers/action/action-group.tsx @@ -66,7 +66,7 @@ export interface ActionGroupSchema { size?: string; /** Custom CSS class */ className?: string; - [key: string]: any; + [key: string]: unknown; } /** @@ -275,7 +275,7 @@ DropdownActionItem.displayName = 'DropdownActionItem'; // host-EVALUATED enablement verdict, declared rather than left to the index // signature, as `ActionButtonRendererProps` declares it (objectui#9131). const ActionGroupRenderer = forwardRef( - ({ schema, className, ...props }: { schema: ActionGroupSchema; className?: string; disabled?: boolean; [key: string]: any }, ref) => { + ({ schema, className, ...props }: { schema: ActionGroupSchema; className?: string; disabled?: boolean; [key: string]: unknown }, ref) => { const { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, diff --git a/ui/packages/components/src/renderers/action/action-icon.tsx b/ui/packages/components/src/renderers/action/action-icon.tsx index 82fcbf45afa..fccabf97a11 100644 --- a/ui/packages/components/src/renderers/action/action-icon.tsx +++ b/ui/packages/components/src/renderers/action/action-icon.tsx @@ -54,7 +54,7 @@ export interface ActionIconRendererProps { * signature, consumed by name below, never re-spread onto the DOM. */ disabled?: boolean; - [key: string]: any; + [key: string]: unknown; } // Index signature on the parameter annotation, not on the `forwardRef` type diff --git a/ui/packages/components/src/renderers/action/action-menu.tsx b/ui/packages/components/src/renderers/action/action-menu.tsx index 7c437e7891b..09d17ce2836 100644 --- a/ui/packages/components/src/renderers/action/action-menu.tsx +++ b/ui/packages/components/src/renderers/action/action-menu.tsx @@ -61,7 +61,7 @@ export interface ActionMenuSchema { visible?: boolean | string | { dialect: string; source?: string }; /** Custom CSS class */ className?: string; - [key: string]: any; + [key: string]: unknown; } /** @@ -207,7 +207,7 @@ ActionAutoTrigger.displayName = 'ActionAutoTrigger'; // host-EVALUATED enablement verdict, declared rather than left to the index // signature, as `ActionButtonRendererProps` declares it (objectui#9131). const ActionMenuRenderer = forwardRef( - ({ schema, className, ...props }: { schema: ActionMenuSchema; className?: string; disabled?: boolean; [key: string]: any }, ref) => { + ({ schema, className, ...props }: { schema: ActionMenuSchema; className?: string; disabled?: boolean; [key: string]: unknown }, ref) => { const { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, diff --git a/ui/packages/components/src/renderers/basic/button-group.tsx b/ui/packages/components/src/renderers/basic/button-group.tsx index e285ed01534..044db95f52d 100644 --- a/ui/packages/components/src/renderers/basic/button-group.tsx +++ b/ui/packages/components/src/renderers/basic/button-group.tsx @@ -12,7 +12,7 @@ import { Button } from '../../ui'; import { cn } from '../../lib/utils'; ComponentRegistry.register('button-group', - ({ schema, ...props }: { schema: ButtonGroupSchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: ButtonGroupSchema; [key: string]: unknown }) => { const { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, diff --git a/ui/packages/components/src/renderers/basic/div.tsx b/ui/packages/components/src/renderers/basic/div.tsx index a5587e5b79f..9fd9baa9b85 100644 --- a/ui/packages/components/src/renderers/basic/div.tsx +++ b/ui/packages/components/src/renderers/basic/div.tsx @@ -128,7 +128,7 @@ const DIV_DEPRECATION_NOTICE = // argument — mechanism note on `action:bar` (objectui#4422), pinned by // `__tests__/forwardref-props-annotation.guard.test.ts`. const DivRenderer = forwardRef( - ({ schema, className, ...props }: { schema: DivSchema; className?: string; [key: string]: any }, ref) => { + ({ schema, className, ...props }: { schema: DivSchema; className?: string; [key: string]: unknown }, ref) => { // Deprecation notice, once per module load (objectui#3965, see // warnDeprecatedOnce). There is no provenance exemption any more: the // declaration below names both authoring surfaces (objectui#10757), so a diff --git a/ui/packages/components/src/renderers/basic/html-elements.tsx b/ui/packages/components/src/renderers/basic/html-elements.tsx index 201a259de5e..074536ec38e 100644 --- a/ui/packages/components/src/renderers/basic/html-elements.tsx +++ b/ui/packages/components/src/renderers/basic/html-elements.tsx @@ -31,7 +31,7 @@ import { renderChildren } from '../../lib/utils'; import { createElement, forwardRef, useContext } from 'react'; import type { MouseEventHandler } from 'react'; -type AnyProps = { schema: any; className?: string; [key: string]: any }; +type AnyProps = { schema: any; className?: string; [key: string]: unknown }; // Tags that take no children. const VOID_TAGS = new Set(['img', 'hr', 'br']); diff --git a/ui/packages/components/src/renderers/basic/icon.tsx b/ui/packages/components/src/renderers/basic/icon.tsx index 73045e3906a..c44292f090c 100644 --- a/ui/packages/components/src/renderers/basic/icon.tsx +++ b/ui/packages/components/src/renderers/basic/icon.tsx @@ -108,7 +108,7 @@ import { describeIconLookup, resolveIcon } from '../action/resolve-icon'; // argument — mechanism note on `action:bar` (objectui#4422), pinned by // `__tests__/forwardref-props-annotation.guard.test.ts`. const IconRenderer = forwardRef( - ({ schema, className, ...props }: { schema: IconSchema; className?: string; [key: string]: any }, ref) => { + ({ schema, className, ...props }: { schema: IconSchema; className?: string; [key: string]: unknown }, ref) => { // Extract designer-related props const { 'data-obj-id': dataObjId, diff --git a/ui/packages/components/src/renderers/basic/image.tsx b/ui/packages/components/src/renderers/basic/image.tsx index 73342ac1474..b863a34e67f 100644 --- a/ui/packages/components/src/renderers/basic/image.tsx +++ b/ui/packages/components/src/renderers/basic/image.tsx @@ -10,7 +10,7 @@ import { ComponentRegistry } from '@object-ui/core'; import type { ImageSchema } from '@object-ui/types'; ComponentRegistry.register('image', - ({ schema, className, ...props }: { schema: ImageSchema; className?: string; [key: string]: any }) => { + ({ schema, className, ...props }: { schema: ImageSchema; className?: string; [key: string]: unknown }) => { // Extract designer-related props const { 'data-obj-id': dataObjId, diff --git a/ui/packages/components/src/renderers/basic/navigation-menu.tsx b/ui/packages/components/src/renderers/basic/navigation-menu.tsx index 132cf3b5421..443df5a666b 100644 --- a/ui/packages/components/src/renderers/basic/navigation-menu.tsx +++ b/ui/packages/components/src/renderers/basic/navigation-menu.tsx @@ -12,7 +12,7 @@ import { NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuT import { cn } from '../../lib/utils'; ComponentRegistry.register('navigation-menu', - ({ schema, ...props }: { schema: NavigationMenuSchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: NavigationMenuSchema; [key: string]: unknown }) => { const { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, diff --git a/ui/packages/components/src/renderers/basic/pagination.tsx b/ui/packages/components/src/renderers/basic/pagination.tsx index 31d8c165c9f..7033dca3dc2 100644 --- a/ui/packages/components/src/renderers/basic/pagination.tsx +++ b/ui/packages/components/src/renderers/basic/pagination.tsx @@ -29,7 +29,7 @@ const usePaginationTranslation = createSafeTranslation( ); ComponentRegistry.register('pagination', - ({ schema, ...props }: { schema: PaginationSchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: PaginationSchema; [key: string]: unknown }) => { const { t } = usePaginationTranslation(); const { 'data-obj-id': dataObjId, diff --git a/ui/packages/components/src/renderers/basic/separator.tsx b/ui/packages/components/src/renderers/basic/separator.tsx index d5f309e8b61..1a753ad592a 100644 --- a/ui/packages/components/src/renderers/basic/separator.tsx +++ b/ui/packages/components/src/renderers/basic/separator.tsx @@ -15,7 +15,7 @@ import { forwardRef } from 'react'; // argument — mechanism note on `action:bar` (objectui#4422), pinned by // `__tests__/forwardref-props-annotation.guard.test.ts`. const SeparatorRenderer = forwardRef( - ({ schema, className, ...props }: { schema: SeparatorSchema; className?: string; [key: string]: any }, ref) => { + ({ schema, className, ...props }: { schema: SeparatorSchema; className?: string; [key: string]: unknown }, ref) => { // Extract designer-related props const { 'data-obj-id': dataObjId, diff --git a/ui/packages/components/src/renderers/basic/span.tsx b/ui/packages/components/src/renderers/basic/span.tsx index 21832f7713b..1a53e3179d3 100644 --- a/ui/packages/components/src/renderers/basic/span.tsx +++ b/ui/packages/components/src/renderers/basic/span.tsx @@ -67,7 +67,7 @@ const SPAN_DEPRECATION_NOTICE = // argument — mechanism note on `action:bar` (objectui#4422), pinned by // `__tests__/forwardref-props-annotation.guard.test.ts`. const SpanRenderer = forwardRef( - ({ schema, className, ...props }: { schema: TextSpanSchema; className?: string; [key: string]: any }, ref) => { + ({ schema, className, ...props }: { schema: TextSpanSchema; className?: string; [key: string]: unknown }, ref) => { // Deprecation notice — JSON-authored nodes only (objectui#4000), once per // module load (objectui#3965, see warnDeprecatedOnce). Both rulings landed // for `div` first; objectui#4917 brings this renderer level with it. diff --git a/ui/packages/components/src/renderers/basic/text.tsx b/ui/packages/components/src/renderers/basic/text.tsx index 585c96cce25..990c09f9b38 100644 --- a/ui/packages/components/src/renderers/basic/text.tsx +++ b/ui/packages/components/src/renderers/basic/text.tsx @@ -110,7 +110,7 @@ const ALIGN_CLASS: Record = { }; ComponentRegistry.register('text', - ({ schema, ...props }: { schema: TextSchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: TextSchema; [key: string]: unknown }) => { // Text is a special case as it might be rendered as a fragment or span depending on usage. // However, to support drag and drop in designer, it MUST be wrapped in an element if props are passed. diff --git a/ui/packages/components/src/renderers/complex/carousel.tsx b/ui/packages/components/src/renderers/complex/carousel.tsx index 3b9635aea77..b3e80379aec 100644 --- a/ui/packages/components/src/renderers/complex/carousel.tsx +++ b/ui/packages/components/src/renderers/complex/carousel.tsx @@ -18,7 +18,7 @@ import { import { renderChildren } from '../../lib/utils'; ComponentRegistry.register('carousel', - ({ schema, className, ...props }: { schema: CarouselSchema; className?: string; [key: string]: any }) => ( + ({ schema, className, ...props }: { schema: CarouselSchema; className?: string; [key: string]: unknown }) => ( void; [key: string]: any }) => { + ({ schema, className, onChange, ...props }: { schema: FilterBuilderSchema; className?: string; onChange?: (event: any) => void; [key: string]: unknown }) => { // Read-time resolution against the display locale (objectui#4580 revised // Q1-A). `BaseSchema.label` accepts `string | I18nLabel`; rendering the map // straight into a text node THREW "Objects are not valid as a React child". diff --git a/ui/packages/components/src/renderers/complex/resizable.tsx b/ui/packages/components/src/renderers/complex/resizable.tsx index 4096a4f71b3..311193773c7 100644 --- a/ui/packages/components/src/renderers/complex/resizable.tsx +++ b/ui/packages/components/src/renderers/complex/resizable.tsx @@ -17,7 +17,7 @@ import { import { renderChildren } from '../../lib/utils'; ComponentRegistry.register('resizable', - ({ schema, className, ...props }: { schema: ResizableSchema; className?: string; [key: string]: any }) => { + ({ schema, className, ...props }: { schema: ResizableSchema; className?: string; [key: string]: unknown }) => { const panels = Array.isArray(schema.panels) ? schema.panels : []; return ( { + ({ schema, className, ...props }: { schema: ScrollAreaSchema; className?: string; [key: string]: unknown }) => { // Extract designer-related props const { 'data-obj-id': dataObjId, diff --git a/ui/packages/components/src/renderers/complex/table.tsx b/ui/packages/components/src/renderers/complex/table.tsx index 39a22a8041b..129aa903939 100644 --- a/ui/packages/components/src/renderers/complex/table.tsx +++ b/ui/packages/components/src/renderers/complex/table.tsx @@ -28,7 +28,7 @@ import { // A simple data-driven table ComponentRegistry.register('table', - ({ schema, className, ...props }: { schema: TableSchema; className?: string; [key: string]: any }) => ( + ({ schema, className, ...props }: { schema: TableSchema; className?: string; [key: string]: unknown }) => ( {schema.caption && {schema.caption}} diff --git a/ui/packages/components/src/renderers/data-display/alert.tsx b/ui/packages/components/src/renderers/data-display/alert.tsx index 7d29a7b6592..5407fb19c72 100644 --- a/ui/packages/components/src/renderers/data-display/alert.tsx +++ b/ui/packages/components/src/renderers/data-display/alert.tsx @@ -16,7 +16,7 @@ import { } from '../../ui'; ComponentRegistry.register('alert', - ({ schema, className, ...props }: { schema: AlertSchema; className?: string; [key: string]: any }) => ( + ({ schema, className, ...props }: { schema: AlertSchema; className?: string; [key: string]: unknown }) => ( {schema.title} {schema.description || renderChildren(schema.children)} diff --git a/ui/packages/components/src/renderers/data-display/avatar.tsx b/ui/packages/components/src/renderers/data-display/avatar.tsx index 1a3df472ef0..eb74a7c815a 100644 --- a/ui/packages/components/src/renderers/data-display/avatar.tsx +++ b/ui/packages/components/src/renderers/data-display/avatar.tsx @@ -15,7 +15,7 @@ import { } from '../../ui'; ComponentRegistry.register('avatar', - ({ schema, className, ...props }: { schema: AvatarSchema; className?: string; [key: string]: any }) => ( + ({ schema, className, ...props }: { schema: AvatarSchema; className?: string; [key: string]: unknown }) => ( {schema.fallback} diff --git a/ui/packages/components/src/renderers/data-display/badge.tsx b/ui/packages/components/src/renderers/data-display/badge.tsx index ad580842d01..4ed519ca779 100644 --- a/ui/packages/components/src/renderers/data-display/badge.tsx +++ b/ui/packages/components/src/renderers/data-display/badge.tsx @@ -12,7 +12,7 @@ import { Badge } from '../../ui'; import { renderChildren } from '../../lib/utils'; ComponentRegistry.register('badge', - ({ schema, ...props }: { schema: BadgeSchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: BadgeSchema; [key: string]: unknown }) => { // Extract designer-related props const { 'data-obj-id': dataObjId, diff --git a/ui/packages/components/src/renderers/data-display/breadcrumb.tsx b/ui/packages/components/src/renderers/data-display/breadcrumb.tsx index d035fdd2e2b..5fcb0617ef1 100644 --- a/ui/packages/components/src/renderers/data-display/breadcrumb.tsx +++ b/ui/packages/components/src/renderers/data-display/breadcrumb.tsx @@ -75,7 +75,7 @@ function collapseTrail(items: BreadcrumbItemType[], maxItems: unknown): Slot[] { } ComponentRegistry.register('breadcrumb', - ({ schema, ...props }: { schema: BreadcrumbSchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: BreadcrumbSchema; [key: string]: unknown }) => { const { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, diff --git a/ui/packages/components/src/renderers/data-display/kbd.tsx b/ui/packages/components/src/renderers/data-display/kbd.tsx index 7431e24ad52..4ccc5175103 100644 --- a/ui/packages/components/src/renderers/data-display/kbd.tsx +++ b/ui/packages/components/src/renderers/data-display/kbd.tsx @@ -11,7 +11,7 @@ import type { KbdSchema } from '@object-ui/types'; import { cn } from '../../lib/utils'; ComponentRegistry.register('kbd', - ({ schema, ...props }: { schema: KbdSchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: KbdSchema; [key: string]: unknown }) => { const { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, diff --git a/ui/packages/components/src/renderers/data-display/list.tsx b/ui/packages/components/src/renderers/data-display/list.tsx index f88567b4684..9826f0b38e3 100644 --- a/ui/packages/components/src/renderers/data-display/list.tsx +++ b/ui/packages/components/src/renderers/data-display/list.tsx @@ -12,7 +12,7 @@ import { useDataScope } from '@object-ui/react'; import { renderChildren, cn } from '../../lib/utils'; ComponentRegistry.register('list', - ({ schema, className, ...props }: { schema: ListSchema; className?: string; [key: string]: any }) => { + ({ schema, className, ...props }: { schema: ListSchema; className?: string; [key: string]: unknown }) => { // Support data binding const boundData = useDataScope(schema.bind); const items = Array.isArray(boundData) ? boundData : Array.isArray(schema.items) ? schema.items : []; diff --git a/ui/packages/components/src/renderers/data-display/tree-view.tsx b/ui/packages/components/src/renderers/data-display/tree-view.tsx index 6f8bc7a8797..1d7e783388f 100644 --- a/ui/packages/components/src/renderers/data-display/tree-view.tsx +++ b/ui/packages/components/src/renderers/data-display/tree-view.tsx @@ -118,7 +118,7 @@ const TreeNodeComponent = ({ }; ComponentRegistry.register('tree-view', - ({ schema, className, ...props }: { schema: TreeViewSchema; className?: string; [key: string]: any }) => { + ({ schema, className, ...props }: { schema: TreeViewSchema; className?: string; [key: string]: unknown }) => { const handleNodeClick = (node: TreeNode) => { if (schema.onNodeClick) { schema.onNodeClick(node); diff --git a/ui/packages/components/src/renderers/disclosure/accordion.tsx b/ui/packages/components/src/renderers/disclosure/accordion.tsx index 32d950cc50d..885ecad0ce4 100644 --- a/ui/packages/components/src/renderers/disclosure/accordion.tsx +++ b/ui/packages/components/src/renderers/disclosure/accordion.tsx @@ -17,7 +17,7 @@ import { import { renderChildren } from '../../lib/utils'; ComponentRegistry.register('accordion', - ({ schema, className, ...props }: { schema: AccordionSchema; className?: string; [key: string]: any }) => ( + ({ schema, className, ...props }: { schema: AccordionSchema; className?: string; [key: string]: unknown }) => ( {schema.items?.map((item, index: number) => ( diff --git a/ui/packages/components/src/renderers/disclosure/collapsible.tsx b/ui/packages/components/src/renderers/disclosure/collapsible.tsx index 7be440e766c..d7754a506fc 100644 --- a/ui/packages/components/src/renderers/disclosure/collapsible.tsx +++ b/ui/packages/components/src/renderers/disclosure/collapsible.tsx @@ -50,7 +50,7 @@ ComponentRegistry.register('collapsible', // so, and `zod-mirror-parity.test.ts` ledgers it), so it keeps riding this // spread onto the Radix root, where it fires for the UNCONTROLLED toggling // this exclusion restores. - ({ schema, className, disabled: hostDisabled, open: _open, ...props }: { schema: CollapsibleSchema; className?: string; disabled?: boolean; [key: string]: any }) => { + ({ schema, className, disabled: hostDisabled, open: _open, ...props }: { schema: CollapsibleSchema; className?: string; disabled?: boolean; [key: string]: unknown }) => { // `asChild` is CONDITIONAL, and the condition is Radix's own structural // precondition, not a preference (objectui#9701). // diff --git a/ui/packages/components/src/renderers/disclosure/toggle-group.tsx b/ui/packages/components/src/renderers/disclosure/toggle-group.tsx index 3674578acf5..73d151c3d8e 100644 --- a/ui/packages/components/src/renderers/disclosure/toggle-group.tsx +++ b/ui/packages/components/src/renderers/disclosure/toggle-group.tsx @@ -11,7 +11,7 @@ import type { ToggleGroupSchema } from '@object-ui/types'; import { ToggleGroup, ToggleGroupItem } from '../../ui/toggle-group'; ComponentRegistry.register('toggle-group', - ({ schema, ...props }: { schema: ToggleGroupSchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: ToggleGroupSchema; [key: string]: unknown }) => { const { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, diff --git a/ui/packages/components/src/renderers/feedback/empty.tsx b/ui/packages/components/src/renderers/feedback/empty.tsx index 012f4433972..f0ad3dcf7ee 100644 --- a/ui/packages/components/src/renderers/feedback/empty.tsx +++ b/ui/packages/components/src/renderers/feedback/empty.tsx @@ -13,7 +13,7 @@ import { SchemaRenderer, toRenderableSchema } from '@object-ui/react'; import { DataEmptyState } from '../../custom/view-states'; ComponentRegistry.register('empty', - ({ schema, ...props }: { schema: EmptySchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: EmptySchema; [key: string]: unknown }) => { const { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, diff --git a/ui/packages/components/src/renderers/feedback/loading.tsx b/ui/packages/components/src/renderers/feedback/loading.tsx index 11bf6eb5c27..26be267d035 100644 --- a/ui/packages/components/src/renderers/feedback/loading.tsx +++ b/ui/packages/components/src/renderers/feedback/loading.tsx @@ -12,7 +12,7 @@ import { Spinner } from '../../custom'; import { cn } from '../../lib/utils'; ComponentRegistry.register('loading', - ({ schema, className, ...props }: { schema: LoadingSchema; className?: string; [key: string]: any }) => { + ({ schema, className, ...props }: { schema: LoadingSchema; className?: string; [key: string]: unknown }) => { const size = schema.size || 'md'; const fullscreen = schema.fullscreen || false; diff --git a/ui/packages/components/src/renderers/feedback/progress.tsx b/ui/packages/components/src/renderers/feedback/progress.tsx index 0ed8bb80c53..cbb3668d293 100644 --- a/ui/packages/components/src/renderers/feedback/progress.tsx +++ b/ui/packages/components/src/renderers/feedback/progress.tsx @@ -11,7 +11,7 @@ import type { ProgressSchema } from '@object-ui/types'; import { Progress } from '../../ui'; ComponentRegistry.register('progress', - ({ schema, className, ...props }: { schema: ProgressSchema; className?: string; [key: string]: any }) => ( + ({ schema, className, ...props }: { schema: ProgressSchema; className?: string; [key: string]: unknown }) => ( ), { diff --git a/ui/packages/components/src/renderers/feedback/skeleton.tsx b/ui/packages/components/src/renderers/feedback/skeleton.tsx index a143644db13..594aaa133c1 100644 --- a/ui/packages/components/src/renderers/feedback/skeleton.tsx +++ b/ui/packages/components/src/renderers/feedback/skeleton.tsx @@ -11,7 +11,7 @@ import type { SkeletonSchema } from '@object-ui/types'; import { Skeleton } from '../../ui'; ComponentRegistry.register('skeleton', - ({ schema, className, ...props }: { schema: SkeletonSchema; className?: string; [key: string]: any }) => ( + ({ schema, className, ...props }: { schema: SkeletonSchema; className?: string; [key: string]: unknown }) => ( ), { diff --git a/ui/packages/components/src/renderers/feedback/sonner.tsx b/ui/packages/components/src/renderers/feedback/sonner.tsx index dea691b9028..68eb3b4c897 100644 --- a/ui/packages/components/src/renderers/feedback/sonner.tsx +++ b/ui/packages/components/src/renderers/feedback/sonner.tsx @@ -13,7 +13,7 @@ import { Button } from '../../ui'; import { toFormControlDomProps } from '../../lib/form-control-dom-props'; ComponentRegistry.register('sonner', - ({ schema, ...props }: { schema: SonnerSchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: SonnerSchema; [key: string]: unknown }) => { // `style` forwarded by name; the rest through the form-control // declaration (objectui#5632). const { style, ...buttonProps } = props; diff --git a/ui/packages/components/src/renderers/feedback/spinner.tsx b/ui/packages/components/src/renderers/feedback/spinner.tsx index a7559ff2674..4b5c810d115 100644 --- a/ui/packages/components/src/renderers/feedback/spinner.tsx +++ b/ui/packages/components/src/renderers/feedback/spinner.tsx @@ -50,7 +50,7 @@ import { cn } from '../../lib/utils'; * destroys a legitimate computed value. */ ComponentRegistry.register('spinner', - ({ schema, className, ...props }: { schema: SpinnerSchema; className?: string; [key: string]: any }) => { + ({ schema, className, ...props }: { schema: SpinnerSchema; className?: string; [key: string]: unknown }) => { const { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, diff --git a/ui/packages/components/src/renderers/form/button.tsx b/ui/packages/components/src/renderers/form/button.tsx index 409845fb821..8eb4602fc9e 100644 --- a/ui/packages/components/src/renderers/form/button.tsx +++ b/ui/packages/components/src/renderers/form/button.tsx @@ -26,7 +26,7 @@ const ButtonRenderer = forwardRef( // `schema.disabled` keeps one carrier for one question (AGENTS.md #0.1, // objectui#7238; precedent `plugin-chatbot`, objectui#6169) — and taking it // OFF `props` is the load-bearing half, see `isDisabled` below. - ({ schema, disabled: hostDisabled, ...props }: { schema: ButtonSchema; disabled?: boolean; [key: string]: any }, ref) => { + ({ schema, disabled: hostDisabled, ...props }: { schema: ButtonSchema; disabled?: boolean; [key: string]: unknown }, ref) => { // Extract designer-related props const { 'data-obj-id': dataObjId, diff --git a/ui/packages/components/src/renderers/form/calendar.tsx b/ui/packages/components/src/renderers/form/calendar.tsx index bb13ab0ae8a..0835785bf55 100644 --- a/ui/packages/components/src/renderers/form/calendar.tsx +++ b/ui/packages/components/src/renderers/form/calendar.tsx @@ -74,7 +74,7 @@ function firstSelectedDay(selection: unknown): Date | undefined { } ComponentRegistry.register('calendar', - ({ schema, className, ...props }: { schema: CalendarSchema; className?: string; [key: string]: any }) => { + ({ schema, className, ...props }: { schema: CalendarSchema; className?: string; [key: string]: unknown }) => { const mode = schema.mode || 'single'; const selected = toSelection(mode, schema.value || schema.defaultValue); return ( diff --git a/ui/packages/components/src/renderers/form/checkbox.tsx b/ui/packages/components/src/renderers/form/checkbox.tsx index ad9a9b774d1..001d723724b 100644 --- a/ui/packages/components/src/renderers/form/checkbox.tsx +++ b/ui/packages/components/src/renderers/form/checkbox.tsx @@ -13,7 +13,7 @@ import { cn } from '../../lib/utils'; import { toFormControlDomProps } from '../../lib/form-control-dom-props'; import React from 'react'; -const CheckboxRenderer = ({ schema, className, onChange, value, disabled: hostDisabled, ...props }: { schema: CheckboxSchema; className?: string; onChange?: (val: any) => void; value?: any; disabled?: boolean; [key: string]: any }) => { +const CheckboxRenderer = ({ schema, className, onChange, value, disabled: hostDisabled, ...props }: { schema: CheckboxSchema; className?: string; onChange?: (val: any) => void; value?: any; disabled?: boolean; [key: string]: unknown }) => { // `hostDisabled` is `SchemaRenderer`'s EVALUATED verdict on `disabled` / // `disabledOn`, not the raw authored key — which may be a predicate STRING, // truthy however it evaluates (objectui#7238, precedent objectui#6169). diff --git a/ui/packages/components/src/renderers/form/combobox.tsx b/ui/packages/components/src/renderers/form/combobox.tsx index eabba167683..337944112f3 100644 --- a/ui/packages/components/src/renderers/form/combobox.tsx +++ b/ui/packages/components/src/renderers/form/combobox.tsx @@ -62,7 +62,7 @@ import { toFormControlDomProps } from '../../lib/form-control-dom-props'; * `element:text_input`: an unassociated `

` is decoration a screen reader * moving to the control never announces. */ -const ComboboxRenderer = ({ schema, disabled: hostDisabled, ...props }: { schema: ComboboxSchema; disabled?: boolean; [key: string]: any }) => { +const ComboboxRenderer = ({ schema, disabled: hostDisabled, ...props }: { schema: ComboboxSchema; disabled?: boolean; [key: string]: unknown }) => { // `hostDisabled` is `SchemaRenderer`'s EVALUATED verdict on `disabled` / // `disabledOn`, not the raw authored key — which may be a predicate STRING, // truthy however it evaluates (objectui#7238, precedent objectui#6169). diff --git a/ui/packages/components/src/renderers/form/command.tsx b/ui/packages/components/src/renderers/form/command.tsx index 944985aff1b..69e6c05d582 100644 --- a/ui/packages/components/src/renderers/form/command.tsx +++ b/ui/packages/components/src/renderers/form/command.tsx @@ -23,7 +23,7 @@ import { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, Command import { resolveIcon } from '../action/resolve-icon'; ComponentRegistry.register('command', - ({ schema, ...props }: { schema: CommandSchema; [key: string]: any }) => { + ({ schema, ...props }: { schema: CommandSchema; [key: string]: unknown }) => { const { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, diff --git a/ui/packages/components/src/renderers/form/date-picker.tsx b/ui/packages/components/src/renderers/form/date-picker.tsx index f896cd9b9a0..471b94f1fc2 100644 --- a/ui/packages/components/src/renderers/form/date-picker.tsx +++ b/ui/packages/components/src/renderers/form/date-picker.tsx @@ -41,7 +41,7 @@ function toPickerDay(value: Date | string | undefined): Date | string | undefine } ComponentRegistry.register('date-picker', - ({ schema, className, value, onChange, ...props }: { schema: DatePickerSchema; className?: string; value?: Date | string; onChange?: (date: Date | undefined) => void; [key: string]: any }) => { + ({ schema, className, value, onChange, ...props }: { schema: DatePickerSchema; className?: string; value?: Date | string; onChange?: (date: Date | undefined) => void; [key: string]: unknown }) => { // `schema.format` is a date-fns pattern, and it is spelled in the display // locale: `PPP` and the textual tokens name months and weekdays in the // session's language (objectui#10722). diff --git a/ui/packages/components/src/renderers/form/file-upload.tsx b/ui/packages/components/src/renderers/form/file-upload.tsx index 8476e35299c..bb2c640caba 100644 --- a/ui/packages/components/src/renderers/form/file-upload.tsx +++ b/ui/packages/components/src/renderers/form/file-upload.tsx @@ -23,7 +23,7 @@ const useSafeFileUploadTranslation = createSafeTranslation( ); ComponentRegistry.register('file-upload', - ({ schema, className, value, onChange, ...props }: { schema: FileUploadSchema; className?: string; value?: File[]; onChange?: (files: File[]) => void; [key: string]: any }) => { + ({ schema, className, value, onChange, ...props }: { schema: FileUploadSchema; className?: string; value?: File[]; onChange?: (files: File[]) => void; [key: string]: unknown }) => { const { t } = useSafeFileUploadTranslation(); const [files, setFiles] = useState(value || []); const [isUploading, setIsUploading] = useState(false); diff --git a/ui/packages/components/src/renderers/form/form.tsx b/ui/packages/components/src/renderers/form/form.tsx index fa032bb62d8..e860e1b90ef 100644 --- a/ui/packages/components/src/renderers/form/form.tsx +++ b/ui/packages/components/src/renderers/form/form.tsx @@ -1299,7 +1299,7 @@ function FullscreenTextarea({ * nothing from that Slot, which is the whole of objectui#4824. */ error?: string; - [key: string]: any; + [key: string]: unknown; }) { // The inline control's own gate. `readOnly`/`disabled` are real attributes on // the `