Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions .changeset/6172-kanban-trio-rename.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
'@object-ui/types': minor
---

One authority for `KanbanSchema` / `KanbanColumn` / `KanbanCard`: the bare names
now belong to `@object-ui/plugin-kanban` (objectui#6172, closing the
cross-package half of objectui#6155).

**Breaking, deliberately — six published names are removed from
`@object-ui/types`.** Per this repo's own rule a breaking change ships `minor`,
with the break spelled out here.

| removed from | old name | new name |
| --- | --- | --- |
| `@object-ui/types` | `KanbanSchema` | `DeclarativeKanbanSchema` |
| `@object-ui/types` | `KanbanColumn` | `DeclarativeKanbanColumn` |
| `@object-ui/types` | `KanbanCard` | `DeclarativeKanbanCard` |
| `@object-ui/types/zod` | `KanbanSchema` | `DeclarativeKanbanSchema` |
| `@object-ui/types/zod` | `KanbanColumnSchema` | `DeclarativeKanbanColumnSchema` |
| `@object-ui/types/zod` | `KanbanCardSchema` | `DeclarativeKanbanCardSchema` |

Nothing else moved: every member, every optionality and the Zod mirror's whole
accept/reject behaviour are byte-for-byte the shape they were. `SchemaRegistry`
still maps `'kanban'`, `ComplexSchema` still carries the arm, and
`safeValidateSchema` accepts and refuses exactly what it did before.

**Migration.** `import type { KanbanSchema } from '@object-ui/types'` becomes
either of two things, and which one you want is the whole point of the rename:

- authoring a board that a **registered renderer** will draw — import the bare
name from `@object-ui/plugin-kanban`, which is unchanged;
- annotating or validating the **declarative** shape `@object-ui/types` mirrors
in Zod — import `DeclarativeKanbanSchema` (or the Zod
`DeclarativeKanbanSchema` from `@object-ui/types/zod`).

**Why this direction.** The two declarations were structurally unrelated
dialects sharing three names, and `@object-ui/types` is the declared
zero-workspace-dependency bottom layer, so it cannot re-point at a plugin —
convergence had to remove a name from one side or the other. All four
registered kanban renderers (`kanban`, `kanban-ui`, `kanban-enhanced`,
`object-kanban`) consume the plugin's dialect and none consumes this one, and
objectui#6086 measured what happens when the bare name is the copy no renderer
reads: an IDE or agent auto-import silently authors a board that renders
nothing — a confident empty board rather than an abstention. So the surviving
bare name is the one a renderer honours.
2 changes: 1 addition & 1 deletion content/docs/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ Complete reference for every ObjectUI schema type with annotated JSON examples c
- **Data Display** — `TableSchema`, `ChartSchema`, `TreeViewSchema`
- **CRUD** — `ActionSchema`, `DetailSchema`, `CRUDDialogSchema`
- **ObjectQL** — `ObjectGridSchema`, `ObjectFormSchema`, `ObjectViewSchema`
- **Complex** — `KanbanSchema`, `DashboardSchema`, `CalendarViewSchema`
- **Complex** — `DeclarativeKanbanSchema`, `DashboardSchema`, `CalendarViewSchema`
- **Views** — `DetailViewSchema`, `ViewSwitcherSchema`
8 changes: 4 additions & 4 deletions content/docs/api/schema-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -882,7 +882,7 @@ A complete object management interface combining grid, form, search, filters, an

## Complex Schemas

### KanbanSchema
### DeclarativeKanbanSchema

A drag-and-drop Kanban board with columns and cards.

Expand Down Expand Up @@ -920,7 +920,7 @@ A drag-and-drop Kanban board with columns and cards.

| Property | Type | Description |
|----------|------|-------------|
| `columns` | `KanbanColumn[]` | **Required.** Board columns, each with `id`, `title`, `color`, and `cards`. |
| `columns` | `DeclarativeKanbanColumn[]` | **Required.** Board columns, each with `id`, `title`, `color`, and `cards`. |
| `draggable` | `boolean` | Enable drag-and-drop between columns. |
| `onCardMove` | `function` | Callback when a card is moved: `(cardId, fromColumn, toColumn, position)`. |
| `onCardClick` | `function` | Callback when a card is clicked. |
Expand Down Expand Up @@ -1190,7 +1190,7 @@ A toggle control that switches between different view types (list, grid, kanban,
| `storageKey` | `string` | Storage key for persisting the preference. |
| `onViewChange` | `string` | Expression or callback invoked on view change. |

**Related:** [ObjectViewSchema](#objectviewschema), [KanbanSchema](#kanbanschema), [CalendarViewSchema](#calendarviewschema)
**Related:** [ObjectViewSchema](#objectviewschema), [DeclarativeKanbanSchema](#declarativekanbanschema), [CalendarViewSchema](#calendarviewschema)

---

Expand Down Expand Up @@ -1265,7 +1265,7 @@ import type { ActionSchema, DetailSchema } from '@object-ui/types';
import type { ObjectGridSchema, ObjectFormSchema, ObjectViewSchema } from '@object-ui/types';

// Complex
import type { KanbanSchema, DashboardComponentSchema, CalendarViewSchema } from '@object-ui/types';
import type { DeclarativeKanbanSchema, DashboardComponentSchema, CalendarViewSchema } from '@object-ui/types';

// Views
import type { DetailViewSchema, ViewSwitcherSchema } from '@object-ui/types';
Expand Down
2 changes: 1 addition & 1 deletion packages/types/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ Menus and navigation:

Advanced composite components:

- `KanbanSchema` - Kanban board
- `DeclarativeKanbanSchema` - Kanban board
- `CalendarViewSchema` - Calendar with events
- `FilterBuilderSchema` - Advanced filter builder
- `CarouselSchema` - Image/content carousel
Expand Down
4 changes: 2 additions & 2 deletions packages/types/examples/zod-validation-example.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
FormSchema,
CardSchema,
DataTableSchema,
KanbanSchema,
DeclarativeKanbanSchema,
} from '../src/zod/index.zod';

// The failure accessor below is `error.issues`. Zod 4 removed the `.errors`
Expand Down Expand Up @@ -161,7 +161,7 @@ const kanbanExample = {
draggable: true,
};

const kanbanResult = KanbanSchema.safeParse(kanbanExample);
const kanbanResult = DeclarativeKanbanSchema.safeParse(kanbanExample);
console.log('Kanban validation:', kanbanResult.success ? 'PASSED ✓' : 'FAILED ✗');
if (!kanbanResult.success) {
console.error('Kanban errors:', kanbanResult.error.issues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -253,8 +253,8 @@ const describeRow = (r: DocRow): string => `${r.page}:${r.line} ${r.owner}.${r.k

/** Runtime-slot rows measured present on this tree — the blanket-sweep control. */
const CONTROL = [
{ page: 'api/schema-reference.md', owner: 'KanbanSchema', key: 'onCardMove' },
{ page: 'api/schema-reference.md', owner: 'KanbanSchema', key: 'onCardClick' },
{ page: 'api/schema-reference.md', owner: 'DeclarativeKanbanSchema', key: 'onCardMove' },
{ page: 'api/schema-reference.md', owner: 'DeclarativeKanbanSchema', key: 'onCardClick' },
{ page: 'components/basic/pagination.mdx', owner: 'PaginationSchema', key: 'onPageChange' },
{ page: 'components/data-display/tree-view.mdx', owner: 'TreeViewSchema', key: 'onNodeClick' },
{ page: 'components/form/button.mdx', owner: 'ButtonSchema', key: 'onClick' },
Expand Down
20 changes: 10 additions & 10 deletions packages/types/src/__tests__/handler-keys-json-refusal-6124.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ import {
CarouselSchema as CarouselZod,
ChatbotSchema as ChatbotZod,
FilterBuilderSchema as FilterBuilderZod,
KanbanSchema as KanbanZod,
DeclarativeKanbanSchema as KanbanZod,
} from '../zod/complex.zod';
import {
AlertSchema as AlertZod,
Expand Down Expand Up @@ -139,7 +139,7 @@ import type {
CarouselSchema,
ChatbotSchema,
FilterBuilderSchema,
KanbanSchema,
DeclarativeKanbanSchema,
} from '../complex';
import type { AlertSchema, DataTableSchema, ListItem, TreeViewSchema } from '../data-display';
import type { AccordionSchema, CollapsibleSchema, ToggleGroupSchema } from '../disclosure';
Expand Down Expand Up @@ -214,8 +214,8 @@ const objectOf = (mirror: z.ZodType, key: string): z.ZodObject<z.ZodRawShape> =>
* `toFormControlDomProps` whitelist, card's `<Card {...cardProps}>`).
*/
const RUNTIME_SLOT: readonly Site[] = [
['complex.zod.ts', 'KanbanSchema', 'onCardMove', KanbanZod],
['complex.zod.ts', 'KanbanSchema', 'onCardClick', KanbanZod],
['complex.zod.ts', 'DeclarativeKanbanSchema', 'onCardMove', KanbanZod],
['complex.zod.ts', 'DeclarativeKanbanSchema', 'onCardClick', KanbanZod],
['complex.zod.ts', 'CalendarViewSchema', 'onViewChange', CalendarViewZod],
['complex.zod.ts', 'FilterBuilderSchema', 'onChange', FilterBuilderZod],
['complex.zod.ts', 'ChatbotSchema', 'onError', ChatbotZod],
Expand Down Expand Up @@ -265,8 +265,8 @@ const RUNTIME_SLOT: readonly Site[] = [
* from the declared `(value: string) => void`, not a consumer of it.
*/
const RETIRED: readonly Site[] = [
['complex.zod.ts', 'KanbanSchema', 'onColumnAdd', KanbanZod],
['complex.zod.ts', 'KanbanSchema', 'onCardAdd', KanbanZod],
['complex.zod.ts', 'DeclarativeKanbanSchema', 'onColumnAdd', KanbanZod],
['complex.zod.ts', 'DeclarativeKanbanSchema', 'onCardAdd', KanbanZod],
['complex.zod.ts', 'CarouselSchema', 'onSlideChange', CarouselZod],
['complex.zod.ts', 'ChatbotSchema', 'onSendMessage', ChatbotZod],
['data-display.zod.ts', 'AlertSchema', 'onDismiss', AlertZod],
Expand Down Expand Up @@ -480,8 +480,8 @@ type KeepsFunction<T> = [Extract<NonNullable<T>, (...args: never[]) => unknown>]
: true;

export type assertionRetiredKeysAreTombstoned = [
Expect<RetiredIsNever<KanbanSchema['onColumnAdd']>>,
Expect<RetiredIsNever<KanbanSchema['onCardAdd']>>,
Expect<RetiredIsNever<DeclarativeKanbanSchema['onColumnAdd']>>,
Expect<RetiredIsNever<DeclarativeKanbanSchema['onCardAdd']>>,
Expect<RetiredIsNever<CarouselSchema['onSlideChange']>>,
Expect<RetiredIsNever<ChatbotSchema['onSendMessage']>>,
Expect<RetiredIsNever<AlertSchema['onDismiss']>>,
Expand All @@ -505,8 +505,8 @@ export type assertionRetiredKeysAreTombstoned = [
];

export type assertionRuntimeSlotsKeepTheirFunctionType = [
Expect<KeepsFunction<KanbanSchema['onCardMove']>>,
Expect<KeepsFunction<KanbanSchema['onCardClick']>>,
Expect<KeepsFunction<DeclarativeKanbanSchema['onCardMove']>>,
Expect<KeepsFunction<DeclarativeKanbanSchema['onCardClick']>>,
Expect<KeepsFunction<CalendarViewSchema['onViewChange']>>,
Expect<KeepsFunction<FilterBuilderSchema['onChange']>>,
Expect<KeepsFunction<ChatbotSchema['onError']>>,
Expand Down
18 changes: 9 additions & 9 deletions packages/types/src/__tests__/zod-mirror-parity.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ import type { z } from 'zod';

import { AppActionSchema, AppComponentSchema, NavigationAreaSchema } from '../zod/app.zod.js';
import { BaseSchema, ComponentConfigSchema, ComponentInputSchema, ComponentMetaSchema, KeyedI18nLabelSchema } from '../zod/base.zod.js';
import { CalendarEventSchema, CalendarViewSchema, CarouselItemSchema, CarouselSchema, ChatbotSchema, ChatMessageSchema, ChatMessageSourceSchema, ChatToolInvocationSchema, DashboardComponentSchema, DashboardConfigSchema, DashboardWidgetConfigSchema, DashboardWidgetLayoutSchema, DashboardWidgetSchema, FilterBuilderSchema, FilterFieldSchema, KanbanCardSchema, KanbanColumnSchema, KanbanSchema } from '../zod/complex.zod.js';
import { CalendarEventSchema, CalendarViewSchema, CarouselItemSchema, CarouselSchema, ChatbotSchema, ChatMessageSchema, ChatMessageSourceSchema, ChatToolInvocationSchema, DashboardComponentSchema, DashboardConfigSchema, DashboardWidgetConfigSchema, DashboardWidgetLayoutSchema, DashboardWidgetSchema, FilterBuilderSchema, FilterFieldSchema, DeclarativeKanbanCardSchema, DeclarativeKanbanColumnSchema, DeclarativeKanbanSchema } from '../zod/complex.zod.js';
import { ActionCallbackSchema, CRUDDialogSchema, DetailSchema } from '../zod/crud.zod.js';
import { AlertSchema, AvatarSchema, BadgeSchema, BarChartSchema, ChartDataSeriesSchema, ChartSchema, DataTableSchema, HtmlSchema, KbdSchema, ListItemSchema, ListSchema, MarkdownSchema, StaticTableColumnSchema, StatisticSchema, TableColumnSchema, TableSchema, TimelineEventSchema, TimelineSchema, TreeViewSchema } from '../zod/data-display.zod.js';
import { AccordionItemSchema, AccordionSchema, CollapsibleSchema, ToggleGroupItemSchema, ToggleGroupSchema } from '../zod/disclosure.zod.js';
Expand All @@ -166,7 +166,7 @@ import { DetailViewFieldSchema, DetailViewSchema, DetailViewSectionSchema, Detai

import type { AppAction as Ts_AppAction, AppComponentSchema as Ts_AppComponentSchema, NavigationArea as Ts_NavigationArea } from '../app';
import type { BaseSchema as Ts_BaseSchema, ComponentConfig as Ts_ComponentConfig, ComponentInput as Ts_ComponentInput, ComponentMeta as Ts_ComponentMeta, KeyedI18nLabel as Ts_KeyedI18nLabel } from '../base';
import type { CalendarEvent as Ts_CalendarEvent, CalendarViewSchema as Ts_CalendarViewSchema, CarouselItem as Ts_CarouselItem, CarouselSchema as Ts_CarouselSchema, ChatbotSchema as Ts_ChatbotSchema, ChatMessage as Ts_ChatMessage, ChatMessageSource as Ts_ChatMessageSource, ChatToolInvocation as Ts_ChatToolInvocation, DashboardComponentSchema as Ts_DashboardComponentSchema, DashboardWidgetLayout as Ts_DashboardWidgetLayout, DashboardWidgetSchema as Ts_DashboardWidgetSchema, FilterBuilderSchema as Ts_FilterBuilderSchema, FilterField as Ts_FilterField, KanbanCard as Ts_KanbanCard, KanbanColumn as Ts_KanbanColumn, KanbanSchema as Ts_KanbanSchema } from '../complex';
import type { CalendarEvent as Ts_CalendarEvent, CalendarViewSchema as Ts_CalendarViewSchema, CarouselItem as Ts_CarouselItem, CarouselSchema as Ts_CarouselSchema, ChatbotSchema as Ts_ChatbotSchema, ChatMessage as Ts_ChatMessage, ChatMessageSource as Ts_ChatMessageSource, ChatToolInvocation as Ts_ChatToolInvocation, DashboardComponentSchema as Ts_DashboardComponentSchema, DashboardWidgetLayout as Ts_DashboardWidgetLayout, DashboardWidgetSchema as Ts_DashboardWidgetSchema, FilterBuilderSchema as Ts_FilterBuilderSchema, FilterField as Ts_FilterField, DeclarativeKanbanCard as Ts_KanbanCard, DeclarativeKanbanColumn as Ts_KanbanColumn, DeclarativeKanbanSchema as Ts_KanbanSchema } from '../complex';
import type { DashboardConfig as Ts_DashboardConfig, DashboardWidgetConfig as Ts_DashboardWidgetConfig } from '../designer';
import type { ActionCallback as Ts_ActionCallback, CRUDDialogSchema as Ts_CRUDDialogSchema, DetailSchema as Ts_DetailSchema } from '../crud';
import type { AlertSchema as Ts_AlertSchema, AvatarSchema as Ts_AvatarSchema, BadgeSchema as Ts_BadgeSchema, BarChartSchema as Ts_BarChartSchema, ChartDataSeries as Ts_ChartDataSeries, ChartSchema as Ts_ChartSchema, DataTableSchema as Ts_DataTableSchema, HtmlSchema as Ts_HtmlSchema, KbdSchema as Ts_KbdSchema, ListItem as Ts_ListItem, ListSchema as Ts_ListSchema, MarkdownSchema as Ts_MarkdownSchema, StaticTableColumn as Ts_StaticTableColumn, StatisticSchema as Ts_StatisticSchema, TableColumn as Ts_TableColumn, TableSchema as Ts_TableSchema, TimelineEvent as Ts_TimelineEvent, TimelineSchema as Ts_TimelineSchema, TreeViewSchema as Ts_TreeViewSchema, BreadcrumbItem as Ts_BreadcrumbItem, BreadcrumbSchema as Ts_BreadcrumbSchema } from '../data-display';
Expand Down Expand Up @@ -387,9 +387,9 @@ const MIRRORS = {
'complex.zod.ts#DashboardWidgetSchema': DashboardWidgetSchema,
'complex.zod.ts#FilterBuilderSchema': FilterBuilderSchema,
'complex.zod.ts#FilterFieldSchema': FilterFieldSchema,
'complex.zod.ts#KanbanCardSchema': KanbanCardSchema,
'complex.zod.ts#KanbanColumnSchema': KanbanColumnSchema,
'complex.zod.ts#KanbanSchema': KanbanSchema,
'complex.zod.ts#DeclarativeKanbanCardSchema': DeclarativeKanbanCardSchema,
'complex.zod.ts#DeclarativeKanbanColumnSchema': DeclarativeKanbanColumnSchema,
'complex.zod.ts#DeclarativeKanbanSchema': DeclarativeKanbanSchema,
'crud.zod.ts#ActionCallbackSchema': ActionCallbackSchema,
'crud.zod.ts#CRUDDialogSchema': CRUDDialogSchema,
'crud.zod.ts#DetailSchema': DetailSchema,
Expand Down Expand Up @@ -545,9 +545,9 @@ interface Declared {
'complex.zod.ts#DashboardWidgetSchema': Ts_DashboardWidgetSchema;
'complex.zod.ts#FilterBuilderSchema': Ts_FilterBuilderSchema;
'complex.zod.ts#FilterFieldSchema': Ts_FilterField;
'complex.zod.ts#KanbanCardSchema': Ts_KanbanCard;
'complex.zod.ts#KanbanColumnSchema': Ts_KanbanColumn;
'complex.zod.ts#KanbanSchema': Ts_KanbanSchema;
'complex.zod.ts#DeclarativeKanbanCardSchema': Ts_KanbanCard;
'complex.zod.ts#DeclarativeKanbanColumnSchema': Ts_KanbanColumn;
'complex.zod.ts#DeclarativeKanbanSchema': Ts_KanbanSchema;
'crud.zod.ts#ActionCallbackSchema': Ts_ActionCallback;
'crud.zod.ts#CRUDDialogSchema': Ts_CRUDDialogSchema;
'crud.zod.ts#DetailSchema': Ts_DetailSchema;
Expand Down Expand Up @@ -763,7 +763,7 @@ interface KnownDrift {
/** DISJOINT vocabularies: TS declares `is_empty`/`is_not_empty`, the mirror declares `is_null`/`is_not_null`. One of the two is dead; which one is a ruling. */
'complex.zod.ts#FilterFieldSchema': 'operators';
/** RUNTIME SLOT (objectui#6124) ×2: `plugin-kanban` forwards `onCardMove` / `onCardClick` off `schema.*` into the board. (`onColumnAdd` / `onCardAdd` are NOT here: nothing reads them, so both faces retire them — `?: never` meets the refusal arm and the pair does not drift on those keys.) */
'complex.zod.ts#KanbanSchema': 'onCardMove' | 'onCardClick';
'complex.zod.ts#DeclarativeKanbanSchema': 'onCardMove' | 'onCardClick';
/**
* RUNTIME SLOT (objectui#7344): `register('detail', DetailView)` — `DetailView`'s
* `handleBack` calls `onBack()` when set. The mirror was `z.any()` (wider than
Expand Down
37 changes: 29 additions & 8 deletions packages/types/src/complex.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,30 @@ import type {
import type { BaseSchema, SchemaNode } from './base.js';

/**
* Kanban column
* Kanban column — the DECLARATIVE (authoring / validation) face.
*
* ## Why the name carries a `Declarative` prefix (objectui#6172)
*
* This trio and `@object-ui/plugin-kanban`'s `KanbanCard` / `KanbanColumn` /
* `KanbanSchema` were two declarations of one set of names, in two dialects.
* The 2026-08-31 maintainer ruling (决裁批 #14, option A) settled the authority:
* **the plugin KEEPS the bare names**, because those are what all four
* registered kanban renderers (`kanban`, `kanban-ui`, `kanban-enhanced`,
* `object-kanban`) consume, and objectui#6086 measured the failure mode of
* getting that backwards — an IDE or agent auto-importing the bare name picks
* whichever copy sorts first, and the wrong one produces a **confident empty
* board** instead of an abstention. So the surviving bare name has to be the
* one a renderer honours.
*
* What survives here is the face this package really serves: the authoring
* shape and its Zod mirror (`zod/complex.zod.ts`), which is the `'kanban'` arm
* of `ComplexSchema` → `AnyComponentSchema` → `safeValidateSchema` and so
* validates every authored `{ "type": "kanban" }` document the CLI's
* `validate` / `check` commands see. Renaming rather than retiring was the
* ruled outcome; ⛔ do not re-point these at the plugin — `@object-ui/types` is
* the zero-workspace-dependency bottom layer and cannot depend on a plugin.
*/
export interface KanbanColumn {
export interface DeclarativeKanbanColumn {
/**
* Unique column identifier
*/
Expand All @@ -45,7 +66,7 @@ export interface KanbanColumn {
* spelling with zero read sites, which made every authored board fail
* `safeValidateSchema` while rendering correctly (objectui#6318's bucket).
*/
cards: KanbanCard[];
cards: DeclarativeKanbanCard[];
/**
* Column color/variant
*/
Expand All @@ -63,7 +84,7 @@ export interface KanbanColumn {
/**
* Kanban card
*/
export interface KanbanCard {
export interface DeclarativeKanbanCard {
/**
* Unique card identifier
*/
Expand Down Expand Up @@ -105,12 +126,12 @@ export interface KanbanCard {
/**
* Kanban board component
*/
export interface KanbanSchema extends BaseSchema {
export interface DeclarativeKanbanSchema extends BaseSchema {
type: 'kanban';
/**
* Kanban columns
*/
columns: KanbanColumn[];
columns: DeclarativeKanbanColumn[];
/**
* Enable drag and drop
* @default true
Expand All @@ -133,7 +154,7 @@ export interface KanbanSchema extends BaseSchema {
* name and points at the node-type spelling. Kept callable here because it is
* forwarded by `plugin-kanban` (`onCardClick={schema.onCardClick}`).
*/
onCardClick?: (card: KanbanCard) => void;
onCardClick?: (card: DeclarativeKanbanCard) => void;
/**
* RETIRED (objectui#6124, ADR-0049) — JSON has no function value, and the
* `kanban` renderer takes `({ schema })` and never reads it. The zod twin
Expand Down Expand Up @@ -1188,7 +1209,7 @@ export interface DashboardComponentSchema extends BaseSchema {
* Union type of all complex schemas
*/
export type ComplexSchema =
| KanbanSchema
| DeclarativeKanbanSchema
| CalendarViewSchema
| FilterBuilderSchema
| CarouselSchema
Expand Down
Loading
Loading