Skip to content

Commit e1ae025

Browse files
committed
chore(spec): regenerate the whole artifact chain on the merged tree
Sync with origin/main through scripts/pm/os-regen-merge.sh, whose step 2 restored main's side of the four os-regen artifacts both branches moved (api-surface/ui.json, api-surface-declarations/ui.txt, authorable-surface/ui.json, export-origins/ui.json) — the driver had merged them exit 0 while silently keeping one side. Regenerated from the merged tree after a real build, so both sides' entries are present: #19219's element-level `navigation` rows and its ObjectTimelineProps block, and this branch's three `limit` rows plus DEFAULT_VIEW_ROW_LIMIT and KanbanConfigParsed. gen:docs adds the timeline row to the component reference page. Claude-Session: https://claude.ai/code/session_01JbZnqu8bt6YqfJsr9vaFb3 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 5c753f9 commit e1ae025

5 files changed

Lines changed: 312 additions & 2 deletions

File tree

‎content/docs/references/ui/component.mdx‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,7 @@ View filter rule
828828
| **groupByField** | `string` | optional | Field to group timeline rows. NO leading or trailing whitespace: the renderer reads this name off every row verbatim, so a padded spelling drops every row into one ungrouped band. |
829829
| **colorField** | `string` | optional | Field to derive each item color from (it names a field, not a color): the option color declared on that field for the record value, else the value itself when it already is a color literal (hex, rgb() or hsl()), else the timeline default marker color |
830830
| **scale** | `Enum<'hour' \| 'day' \| 'week' \| 'month' \| 'quarter' \| 'year'>` | optional (default: `"week"`) | Default timeline scale |
831+
| **limit** | `integer` | optional (default: `100`) | Row ceiling — the most rows the timeline fetches onto its rail, sent as the query `$top`; default 100 when the key is absent. When the ceiling APPLIES (the filtered set is larger than it), the renderer must show a visible truncation signal saying what is on screen is not the whole set — a bounded view that looks complete is worse than an unbounded one. |
831832

832833
### Nested Shape: `ObjectTimelineProps.filter[number]`
833834

‎packages/spec/api-surface-declarations/ui.txt‎

Lines changed: 288 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
# excluded: documentation drift is `check:docs`'s axis, not this one.
1313
#
1414
# entry: ./ui
15-
# exported names: 473
16-
# declarations: 487
15+
# exported names: 476
16+
# declarations: 490
1717
#
1818
# GENERATED — ⛔ never hand-edited. Regenerate after a real build:
1919
# pnpm --filter @objectstack/spec build && pnpm --filter @objectstack/spec gen:api-surface-declarations
@@ -4679,6 +4679,29 @@ declare const ComponentPropsMap: {
46794679
quickAdd: z.ZodOptional<z.ZodNever>;
46804680
coverImageField: z.ZodOptional<z.ZodString>;
46814681
conditionalFormatting: z.ZodOptional<z.ZodUnknown>;
4682+
navigation: z.ZodOptional<z.ZodObject<{
4683+
mode: z.ZodDefault<z.ZodEnum<{
4684+
split: "split";
4685+
none: "none";
4686+
modal: "modal";
4687+
drawer: "drawer";
4688+
page: "page";
4689+
popover: "popover";
4690+
new_window: "new_window";
4691+
}>>;
4692+
view: z.ZodOptional<z.ZodNever>;
4693+
preventNavigation: z.ZodDefault<z.ZodBoolean>;
4694+
openNewTab: z.ZodDefault<z.ZodBoolean>;
4695+
size: z.ZodDefault<z.ZodEnum<{
4696+
full: "full";
4697+
md: "md";
4698+
auto: "auto";
4699+
sm: "sm";
4700+
lg: "lg";
4701+
xl: "xl";
4702+
}>>;
4703+
width: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
4704+
}, z.core.$strict>>;
46824705
}, z.core.$strict>;
46834706
readonly 'object-calendar': z.ZodObject<{
46844707
objectName: z.ZodOptional<z.ZodString>;
@@ -4725,6 +4748,29 @@ declare const ComponentPropsMap: {
47254748
staticData: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
47264749
locale: z.ZodOptional<z.ZodString>;
47274750
loading: z.ZodOptional<z.ZodBoolean>;
4751+
navigation: z.ZodOptional<z.ZodObject<{
4752+
mode: z.ZodDefault<z.ZodEnum<{
4753+
split: "split";
4754+
none: "none";
4755+
modal: "modal";
4756+
drawer: "drawer";
4757+
page: "page";
4758+
popover: "popover";
4759+
new_window: "new_window";
4760+
}>>;
4761+
view: z.ZodOptional<z.ZodNever>;
4762+
preventNavigation: z.ZodDefault<z.ZodBoolean>;
4763+
openNewTab: z.ZodDefault<z.ZodBoolean>;
4764+
size: z.ZodDefault<z.ZodEnum<{
4765+
full: "full";
4766+
md: "md";
4767+
auto: "auto";
4768+
sm: "sm";
4769+
lg: "lg";
4770+
xl: "xl";
4771+
}>>;
4772+
width: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
4773+
}, z.core.$strict>>;
47284774
}, z.core.$strict>;
47294775
readonly 'object-form': z.ZodObject<{
47304776
objectName: z.ZodOptional<z.ZodString>;
@@ -5273,6 +5319,99 @@ declare const ComponentPropsMap: {
52735319
}, z.core.$strict>>;
52745320
navigation: z.ZodOptional<z.ZodUnknown>;
52755321
}, z.core.$strict>;
5322+
readonly 'object-timeline': z.ZodObject<{
5323+
objectName: z.ZodOptional<z.ZodString>;
5324+
timeline: z.ZodOptional<z.ZodObject<{
5325+
startDateField: z.ZodString;
5326+
endDateField: z.ZodOptional<z.ZodString>;
5327+
titleField: z.ZodString;
5328+
groupByField: z.ZodOptional<z.ZodString>;
5329+
colorField: z.ZodOptional<z.ZodString>;
5330+
scale: z.ZodDefault<z.ZodEnum<{
5331+
year: "year";
5332+
month: "month";
5333+
day: "day";
5334+
hour: "hour";
5335+
week: "week";
5336+
quarter: "quarter";
5337+
}>>;
5338+
limit: z.ZodDefault<z.ZodNumber>;
5339+
}, z.core.$strict>>;
5340+
filter: z.ZodOptional<z.ZodArray<z.ZodObject<{
5341+
field: z.ZodString;
5342+
operator: z.ZodPreprocess<z.ZodEnum<{
5343+
in: "in";
5344+
starts_with: "starts_with";
5345+
ends_with: "ends_with";
5346+
not_in: "not_in";
5347+
between: "between";
5348+
greater_than: "greater_than";
5349+
after: "after";
5350+
greater_than_or_equal: "greater_than_or_equal";
5351+
less_than: "less_than";
5352+
before: "before";
5353+
less_than_or_equal: "less_than_or_equal";
5354+
equals: "equals";
5355+
not_equals: "not_equals";
5356+
contains: "contains";
5357+
not_contains: "not_contains";
5358+
icontains: "icontains";
5359+
is_null: "is_null";
5360+
is_not_null: "is_not_null";
5361+
is_empty: "is_empty";
5362+
is_not_empty: "is_not_empty";
5363+
}>>;
5364+
value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>>;
5365+
}, z.core.$strict>>>;
5366+
sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
5367+
field: z.ZodString;
5368+
order: z.ZodEnum<{
5369+
desc: "desc";
5370+
asc: "asc";
5371+
}>;
5372+
}, z.core.$strip>>>;
5373+
limit: z.ZodOptional<z.ZodNumber>;
5374+
data: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
5375+
items: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
5376+
variant: z.ZodOptional<z.ZodEnum<{
5377+
gantt: "gantt";
5378+
vertical: "vertical";
5379+
horizontal: "horizontal";
5380+
}>>;
5381+
dateFormat: z.ZodOptional<z.ZodEnum<{
5382+
long: "long";
5383+
short: "short";
5384+
iso: "iso";
5385+
}>>;
5386+
rowLabel: z.ZodOptional<z.ZodString>;
5387+
minDate: z.ZodOptional<z.ZodString>;
5388+
maxDate: z.ZodOptional<z.ZodString>;
5389+
descriptionField: z.ZodOptional<z.ZodString>;
5390+
mapping: z.ZodOptional<z.ZodUnknown>;
5391+
navigation: z.ZodOptional<z.ZodObject<{
5392+
mode: z.ZodDefault<z.ZodEnum<{
5393+
split: "split";
5394+
none: "none";
5395+
modal: "modal";
5396+
drawer: "drawer";
5397+
page: "page";
5398+
popover: "popover";
5399+
new_window: "new_window";
5400+
}>>;
5401+
view: z.ZodOptional<z.ZodNever>;
5402+
preventNavigation: z.ZodDefault<z.ZodBoolean>;
5403+
openNewTab: z.ZodDefault<z.ZodBoolean>;
5404+
size: z.ZodDefault<z.ZodEnum<{
5405+
full: "full";
5406+
md: "md";
5407+
auto: "auto";
5408+
sm: "sm";
5409+
lg: "lg";
5410+
xl: "xl";
5411+
}>>;
5412+
width: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
5413+
}, z.core.$strict>>;
5414+
}, z.core.$strict>;
52765415
};
52775416

52785417
// ── DATE_RANGE_DEFAULT_RANGES (const) ──
@@ -10703,6 +10842,29 @@ declare const ObjectCalendarPropsSchema: z.ZodObject<{
1070310842
staticData: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
1070410843
locale: z.ZodOptional<z.ZodString>;
1070510844
loading: z.ZodOptional<z.ZodBoolean>;
10845+
navigation: z.ZodOptional<z.ZodObject<{
10846+
mode: z.ZodDefault<z.ZodEnum<{
10847+
split: "split";
10848+
none: "none";
10849+
modal: "modal";
10850+
drawer: "drawer";
10851+
page: "page";
10852+
popover: "popover";
10853+
new_window: "new_window";
10854+
}>>;
10855+
view: z.ZodOptional<z.ZodNever>;
10856+
preventNavigation: z.ZodDefault<z.ZodBoolean>;
10857+
openNewTab: z.ZodDefault<z.ZodBoolean>;
10858+
size: z.ZodDefault<z.ZodEnum<{
10859+
full: "full";
10860+
md: "md";
10861+
auto: "auto";
10862+
sm: "sm";
10863+
lg: "lg";
10864+
xl: "xl";
10865+
}>>;
10866+
width: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10867+
}, z.core.$strict>>;
1070610868
}, z.core.$strict>;
1070710869

1070810870
// ── ObjectFormProps (type) ──
@@ -11232,6 +11394,29 @@ declare const ObjectKanbanPropsSchema: z.ZodObject<{
1123211394
quickAdd: z.ZodOptional<z.ZodNever>;
1123311395
coverImageField: z.ZodOptional<z.ZodString>;
1123411396
conditionalFormatting: z.ZodOptional<z.ZodUnknown>;
11397+
navigation: z.ZodOptional<z.ZodObject<{
11398+
mode: z.ZodDefault<z.ZodEnum<{
11399+
split: "split";
11400+
none: "none";
11401+
modal: "modal";
11402+
drawer: "drawer";
11403+
page: "page";
11404+
popover: "popover";
11405+
new_window: "new_window";
11406+
}>>;
11407+
view: z.ZodOptional<z.ZodNever>;
11408+
preventNavigation: z.ZodDefault<z.ZodBoolean>;
11409+
openNewTab: z.ZodDefault<z.ZodBoolean>;
11410+
size: z.ZodDefault<z.ZodEnum<{
11411+
full: "full";
11412+
md: "md";
11413+
auto: "auto";
11414+
sm: "sm";
11415+
lg: "lg";
11416+
xl: "xl";
11417+
}>>;
11418+
width: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
11419+
}, z.core.$strict>>;
1123511420
}, z.core.$strict>;
1123611421

1123711422
// ── ObjectListViewSchema (const) ──
@@ -12299,6 +12484,107 @@ declare const ObjectNavItemSchema: z.ZodObject<{
1229912484
requiresService: z.ZodOptional<z.ZodString>;
1230012485
}, z.core.$strict>;
1230112486

12487+
// ── ObjectTimelineProps (type) ──
12488+
type ObjectTimelineProps = z.input<typeof ObjectTimelinePropsSchema>;
12489+
12490+
// ── ObjectTimelinePropsParsed (type) ──
12491+
type ObjectTimelinePropsParsed = z.infer<typeof ObjectTimelinePropsSchema>;
12492+
12493+
// ── ObjectTimelinePropsSchema (const) ──
12494+
declare const ObjectTimelinePropsSchema: z.ZodObject<{
12495+
objectName: z.ZodOptional<z.ZodString>;
12496+
timeline: z.ZodOptional<z.ZodObject<{
12497+
startDateField: z.ZodString;
12498+
endDateField: z.ZodOptional<z.ZodString>;
12499+
titleField: z.ZodString;
12500+
groupByField: z.ZodOptional<z.ZodString>;
12501+
colorField: z.ZodOptional<z.ZodString>;
12502+
scale: z.ZodDefault<z.ZodEnum<{
12503+
year: "year";
12504+
month: "month";
12505+
day: "day";
12506+
hour: "hour";
12507+
week: "week";
12508+
quarter: "quarter";
12509+
}>>;
12510+
limit: z.ZodDefault<z.ZodNumber>;
12511+
}, z.core.$strict>>;
12512+
filter: z.ZodOptional<z.ZodArray<z.ZodObject<{
12513+
field: z.ZodString;
12514+
operator: z.ZodPreprocess<z.ZodEnum<{
12515+
in: "in";
12516+
starts_with: "starts_with";
12517+
ends_with: "ends_with";
12518+
not_in: "not_in";
12519+
between: "between";
12520+
greater_than: "greater_than";
12521+
after: "after";
12522+
greater_than_or_equal: "greater_than_or_equal";
12523+
less_than: "less_than";
12524+
before: "before";
12525+
less_than_or_equal: "less_than_or_equal";
12526+
equals: "equals";
12527+
not_equals: "not_equals";
12528+
contains: "contains";
12529+
not_contains: "not_contains";
12530+
icontains: "icontains";
12531+
is_null: "is_null";
12532+
is_not_null: "is_not_null";
12533+
is_empty: "is_empty";
12534+
is_not_empty: "is_not_empty";
12535+
}>>;
12536+
value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>>;
12537+
}, z.core.$strict>>>;
12538+
sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
12539+
field: z.ZodString;
12540+
order: z.ZodEnum<{
12541+
desc: "desc";
12542+
asc: "asc";
12543+
}>;
12544+
}, z.core.$strip>>>;
12545+
limit: z.ZodOptional<z.ZodNumber>;
12546+
data: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
12547+
items: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
12548+
variant: z.ZodOptional<z.ZodEnum<{
12549+
gantt: "gantt";
12550+
vertical: "vertical";
12551+
horizontal: "horizontal";
12552+
}>>;
12553+
dateFormat: z.ZodOptional<z.ZodEnum<{
12554+
long: "long";
12555+
short: "short";
12556+
iso: "iso";
12557+
}>>;
12558+
rowLabel: z.ZodOptional<z.ZodString>;
12559+
minDate: z.ZodOptional<z.ZodString>;
12560+
maxDate: z.ZodOptional<z.ZodString>;
12561+
descriptionField: z.ZodOptional<z.ZodString>;
12562+
mapping: z.ZodOptional<z.ZodUnknown>;
12563+
navigation: z.ZodOptional<z.ZodObject<{
12564+
mode: z.ZodDefault<z.ZodEnum<{
12565+
split: "split";
12566+
none: "none";
12567+
modal: "modal";
12568+
drawer: "drawer";
12569+
page: "page";
12570+
popover: "popover";
12571+
new_window: "new_window";
12572+
}>>;
12573+
view: z.ZodOptional<z.ZodNever>;
12574+
preventNavigation: z.ZodDefault<z.ZodBoolean>;
12575+
openNewTab: z.ZodDefault<z.ZodBoolean>;
12576+
size: z.ZodDefault<z.ZodEnum<{
12577+
full: "full";
12578+
md: "md";
12579+
auto: "auto";
12580+
sm: "sm";
12581+
lg: "lg";
12582+
xl: "xl";
12583+
}>>;
12584+
width: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
12585+
}, z.core.$strict>>;
12586+
}, z.core.$strict>;
12587+
1230212588
// ── ObjectTreeProps (type) ──
1230312589
type ObjectTreeProps = z.input<typeof ObjectTreePropsSchema>;
1230412590

‎packages/spec/api-surface/ui.json‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,9 @@
279279
"ObjectNavItem (type)",
280280
"ObjectNavItemParsed (type)",
281281
"ObjectNavItemSchema (const)",
282+
"ObjectTimelineProps (type)",
283+
"ObjectTimelinePropsParsed (type)",
284+
"ObjectTimelinePropsSchema (const)",
282285
"ObjectTreeProps (type)",
283286
"ObjectTreePropsParsed (type)",
284287
"ObjectTreePropsSchema (const)",

‎packages/spec/authorable-surface/ui.json‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,7 @@
696696
"ui/ObjectCalendarProps:filter",
697697
"ui/ObjectCalendarProps:loading",
698698
"ui/ObjectCalendarProps:locale",
699+
"ui/ObjectCalendarProps:navigation",
699700
"ui/ObjectCalendarProps:objectName",
700701
"ui/ObjectCalendarProps:sort",
701702
"ui/ObjectCalendarProps:staticData",
@@ -802,6 +803,7 @@
802803
"ui/ObjectKanbanProps:groupBy",
803804
"ui/ObjectKanbanProps:grouping",
804805
"ui/ObjectKanbanProps:limit",
806+
"ui/ObjectKanbanProps:navigation",
805807
"ui/ObjectKanbanProps:objectName",
806808
"ui/ObjectKanbanProps:quickAdd [RETIRED]",
807809
"ui/ObjectKanbanProps:swimlaneField",
@@ -914,6 +916,21 @@
914916
"ui/ObjectNavItem:type",
915917
"ui/ObjectNavItem:viewName",
916918
"ui/ObjectNavItem:visible",
919+
"ui/ObjectTimelineProps:data",
920+
"ui/ObjectTimelineProps:dateFormat",
921+
"ui/ObjectTimelineProps:descriptionField",
922+
"ui/ObjectTimelineProps:filter",
923+
"ui/ObjectTimelineProps:items",
924+
"ui/ObjectTimelineProps:limit",
925+
"ui/ObjectTimelineProps:mapping",
926+
"ui/ObjectTimelineProps:maxDate",
927+
"ui/ObjectTimelineProps:minDate",
928+
"ui/ObjectTimelineProps:navigation",
929+
"ui/ObjectTimelineProps:objectName",
930+
"ui/ObjectTimelineProps:rowLabel",
931+
"ui/ObjectTimelineProps:sort",
932+
"ui/ObjectTimelineProps:timeline",
933+
"ui/ObjectTimelineProps:variant",
917934
"ui/ObjectTreeProps:data",
918935
"ui/ObjectTreeProps:filter",
919936
"ui/ObjectTreeProps:navigation",

0 commit comments

Comments
 (0)