@object-ui/components 5.0.1 → 5.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +139 -0
- package/dist/index.css +50 -4
- package/dist/index.js +1293 -1226
- package/dist/index.umd.cjs +2 -2
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,144 @@
|
|
|
1
1
|
# @object-ui/components
|
|
2
2
|
|
|
3
|
+
## 5.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 8955b9c: fix(empty): render `action` schema via `SchemaRenderer` instead of leaking the raw object
|
|
8
|
+
|
|
9
|
+
The `empty` renderer was spreading the schema's `action` prop straight onto
|
|
10
|
+
`DataEmptyState`, which renders `{action}` as a child. That worked for React
|
|
11
|
+
nodes but blew up on production builds when the docs site fed it a schema
|
|
12
|
+
shape like `action: { type: 'button', label: 'Create', variant: 'default' }`
|
|
13
|
+
(error: "Objects are not valid as a React child").
|
|
14
|
+
|
|
15
|
+
The renderer now passes `schema.action` through `SchemaRenderer` to turn it
|
|
16
|
+
into a real React element, and explicitly strips `action`/`icon` from the
|
|
17
|
+
spread so schema-shaped objects don't reach DOM attributes.
|
|
18
|
+
- @object-ui/types@5.1.1
|
|
19
|
+
- @object-ui/core@5.1.1
|
|
20
|
+
- @object-ui/i18n@5.1.1
|
|
21
|
+
- @object-ui/react@5.1.1
|
|
22
|
+
|
|
23
|
+
## 5.1.0
|
|
24
|
+
|
|
25
|
+
### Minor Changes
|
|
26
|
+
|
|
27
|
+
- cf30cc2: Polish Lightning record detail page layout.
|
|
28
|
+
- `record:details` sections now render with Card chrome by default when a `title` is present, restoring visual grouping that was missing on pages like the opportunity detail page.
|
|
29
|
+
- Section labels can be translated via the `{ns}.objects.{objectName}._sections.{name}.label` convention. Author each section with a stable `name` (e.g. `info`, `forecast`) and the renderer picks up the locale-specific label automatically. Falls back to the literal `label` when no translation exists.
|
|
30
|
+
- The `page:header` action toolbar now collapses into a `⋯` overflow menu when more than two actions are present. The first business action stays inline; secondary system actions (Edit / Share / Delete) move into the menu, with destructive styling applied to Delete.
|
|
31
|
+
- Header action labels resolve via the `{ns}.objects.{objectName}._actions.{name}.label` convention.
|
|
32
|
+
- Removed the meaningless field-count Badge from collapsible section headers (the `2` chip next to "Description"). Field-count metadata wasn't useful in the header and added visual noise.
|
|
33
|
+
- Synth-path `sys_delete` now carries `variant: 'destructive'` so the overflow menu can color it appropriately.
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- bd8447d: Three platform-wide detail polish items.
|
|
38
|
+
|
|
39
|
+
**Tighter page rhythm**
|
|
40
|
+
- Outer `PageRenderer` padding `p-4 md:p-6 lg:p-8` → `p-3 md:p-4 lg:p-6`
|
|
41
|
+
and outer body wrap `space-y-8` → `space-y-6` so list / detail / home
|
|
42
|
+
pages share the same edge rhythm. Cuts ~16px of edge slack on lg.
|
|
43
|
+
|
|
44
|
+
**Highlights KPI treatment**
|
|
45
|
+
- `HeaderHighlight` now renders numeric / currency / percent / decimal
|
|
46
|
+
values as KPI numbers (`text-xl md:text-2xl font-semibold tabular-nums`)
|
|
47
|
+
instead of the uniform `text-sm font-semibold`, so amount / probability
|
|
48
|
+
/ count fields read as headline stats — Salesforce-style key facts.
|
|
49
|
+
|
|
50
|
+
**Discussion footer upgrade**
|
|
51
|
+
- `RecordActivityTimeline` now uses `RichTextCommentInput` (bold / italic /
|
|
52
|
+
list / code, `@`-mention autocomplete, preview toggle, Send) instead of
|
|
53
|
+
a bare `<textarea>`.
|
|
54
|
+
- `DiscussionContext` gains an optional `mentionSuggestions` array that
|
|
55
|
+
hosts can wire (e.g. team member directory). Falls back to free-text
|
|
56
|
+
`@mention` when omitted.
|
|
57
|
+
- `RecordChatterPanel` threads `mentionSuggestions` through both inline
|
|
58
|
+
and sidebar positions.
|
|
59
|
+
|
|
60
|
+
- fbd5052: Tighten record-detail visual rhythm. Section card titles were rendering at
|
|
61
|
+
Shadcn's default `text-2xl` which dominated the page; the related-list
|
|
62
|
+
accordion in flush mode dropped all per-item borders so the collapsed
|
|
63
|
+
"Quotes / Products / Open Tasks" triggers stacked with zero visual
|
|
64
|
+
separation.
|
|
65
|
+
- `@object-ui/plugin-detail` `DetailSection`: override the `CardTitle`
|
|
66
|
+
className to `text-base font-semibold tracking-tight`, slim down
|
|
67
|
+
`CardHeader` padding (`py-3 px-4 sm:py-4 sm:px-6`) and `CardContent`
|
|
68
|
+
vertical padding so titles + content read as a single tight block
|
|
69
|
+
rather than a billboard. Demoted the section description from `text-sm
|
|
70
|
+
mt-1.5` to `text-xs mt-1` for the same reason.
|
|
71
|
+
- `@object-ui/components` `PageAccordionRenderer`: in the default
|
|
72
|
+
`flush` variant restore a subtle `border-b last:border-b-0` divider
|
|
73
|
+
between accordion items so collapsed siblings get a separator, and
|
|
74
|
+
style the trigger as `text-sm font-semibold tracking-tight
|
|
75
|
+
hover:no-underline` (Shadcn's hover-underline default looks busy on
|
|
76
|
+
CRM-style related-list lists).
|
|
77
|
+
|
|
78
|
+
- d51a577: feat(platform): Discussion attachments + @mention directory + Reference Rail aside
|
|
79
|
+
- **Discussion attachments** — `RichTextCommentInput` now accepts an `extraSlot`
|
|
80
|
+
and a `canSubmitEmpty` flag so hosts can mount the existing
|
|
81
|
+
`CommentAttachment` composer beneath the editor without forking the toolbar.
|
|
82
|
+
`RecordActivityTimeline` plumbs the attachments through
|
|
83
|
+
`DiscussionContext.onUploadAttachments` and submits attachment-only comments.
|
|
84
|
+
- **@mention directory** — `DiscussionContext` gains a `mentionSuggestions`
|
|
85
|
+
field; `RecordDetailView` populates it from the host `sys_user` collection so
|
|
86
|
+
`@` autocomplete in the composer now resolves against real users.
|
|
87
|
+
- **Reference Rail** — New `record:reference_rail` renderer + a dedicated
|
|
88
|
+
`aside` region emitted by `buildDefaultPageSchema` whenever a record has
|
|
89
|
+
≥ 2 related lists. The rail surfaces a Salesforce/HubSpot-style snapshot
|
|
90
|
+
of related collections (count badge + top 3 records) on `xl+` viewports.
|
|
91
|
+
- **Layout** — `PageRenderer`'s structured-layout `<aside>` wrappers now honor
|
|
92
|
+
`aside.className`, letting schemas attach responsive utilities like
|
|
93
|
+
`hidden xl:flex` to the rail region.
|
|
94
|
+
|
|
95
|
+
- d1ec6a2: Fold inline-edit into the page-header overflow menu (HubSpot/Lightning
|
|
96
|
+
pattern) and remove the orphan "Edit fields" toolbar row that previously
|
|
97
|
+
floated between the tab strip and the first detail section.
|
|
98
|
+
- `@object-ui/app-shell` `RecordDetailView`: injects a new `sys_inline_edit`
|
|
99
|
+
system action that appears in the ⋯ overflow menu and dispatches a
|
|
100
|
+
`objectui:record:inline-edit-toggle` window CustomEvent (filtered by
|
|
101
|
+
recordId + objectName).
|
|
102
|
+
- `@object-ui/plugin-detail` `DetailView`: listens for that event to
|
|
103
|
+
toggle inline-edit mode; the in-page toolbar now renders only during
|
|
104
|
+
active editing / save error / locked states, so the idle layout flows
|
|
105
|
+
tabs → first section card with no orphan row.
|
|
106
|
+
- `@object-ui/components` layout containers: extended `KNOWN_LABEL_DICT`
|
|
107
|
+
with zh-CN + zh-TW translations for common CRM related-list labels
|
|
108
|
+
(Quotes / Products / Contacts / Accounts / Leads / Opportunities /
|
|
109
|
+
Cases / Campaigns / Approvals / Documents / Emails / Calls / Meetings
|
|
110
|
+
/ Open Tasks / Closed Tasks), so authored English labels auto-translate
|
|
111
|
+
in `page:accordion` / `page:tabs` items.
|
|
112
|
+
|
|
113
|
+
- d548d6b: Unify empty-state visuals across timeline + registered `empty` renderer.
|
|
114
|
+
- `RecordActivityTimeline` and `ActivityTimeline` now use `DataEmptyState`
|
|
115
|
+
instead of a bare `<p>` so empty timelines match list/related-list visuals
|
|
116
|
+
(muted icon badge + centered copy).
|
|
117
|
+
- The `ui:empty` schema renderer now delegates to `DataEmptyState`, giving
|
|
118
|
+
schema-driven empty regions the same chrome as ad-hoc consumers.
|
|
119
|
+
|
|
120
|
+
- Updated dependencies [bd8447d]
|
|
121
|
+
- Updated dependencies [d51a577]
|
|
122
|
+
- Updated dependencies [1976691]
|
|
123
|
+
- Updated dependencies [cf30cc2]
|
|
124
|
+
- Updated dependencies [5b80cfd]
|
|
125
|
+
- Updated dependencies [49b1760]
|
|
126
|
+
- Updated dependencies [c0b236f]
|
|
127
|
+
- @object-ui/react@5.1.0
|
|
128
|
+
- @object-ui/i18n@5.1.0
|
|
129
|
+
- @object-ui/types@5.1.0
|
|
130
|
+
- @object-ui/core@5.1.0
|
|
131
|
+
|
|
132
|
+
## 5.0.2
|
|
133
|
+
|
|
134
|
+
### Patch Changes
|
|
135
|
+
|
|
136
|
+
- Updated dependencies [cab6a93]
|
|
137
|
+
- @object-ui/i18n@5.0.2
|
|
138
|
+
- @object-ui/react@5.0.2
|
|
139
|
+
- @object-ui/types@5.0.2
|
|
140
|
+
- @object-ui/core@5.0.2
|
|
141
|
+
|
|
3
142
|
## 5.0.1
|
|
4
143
|
|
|
5
144
|
### Patch Changes
|
package/dist/index.css
CHANGED
|
@@ -982,6 +982,9 @@
|
|
|
982
982
|
.w-40 {
|
|
983
983
|
width: calc(var(--spacing) * 40);
|
|
984
984
|
}
|
|
985
|
+
.w-44 {
|
|
986
|
+
width: calc(var(--spacing) * 44);
|
|
987
|
+
}
|
|
985
988
|
.w-64 {
|
|
986
989
|
width: calc(var(--spacing) * 64);
|
|
987
990
|
}
|
|
@@ -1654,10 +1657,6 @@
|
|
|
1654
1657
|
--tw-border-style: dashed;
|
|
1655
1658
|
border-style: dashed;
|
|
1656
1659
|
}
|
|
1657
|
-
.border-none {
|
|
1658
|
-
--tw-border-style: none;
|
|
1659
|
-
border-style: none;
|
|
1660
|
-
}
|
|
1661
1660
|
.border-\(--color-border\) {
|
|
1662
1661
|
border-color: var(--color-border);
|
|
1663
1662
|
}
|
|
@@ -3170,6 +3169,12 @@
|
|
|
3170
3169
|
border-bottom-right-radius: var(--radius-md);
|
|
3171
3170
|
}
|
|
3172
3171
|
}
|
|
3172
|
+
.last\:border-b-0 {
|
|
3173
|
+
&:last-child {
|
|
3174
|
+
border-bottom-style: var(--tw-border-style);
|
|
3175
|
+
border-bottom-width: 0px;
|
|
3176
|
+
}
|
|
3177
|
+
}
|
|
3173
3178
|
.focus-within\:ring-2 {
|
|
3174
3179
|
&:focus-within {
|
|
3175
3180
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
@@ -3425,6 +3430,13 @@
|
|
|
3425
3430
|
}
|
|
3426
3431
|
}
|
|
3427
3432
|
}
|
|
3433
|
+
.hover\:no-underline {
|
|
3434
|
+
&:hover {
|
|
3435
|
+
@media (hover: hover) {
|
|
3436
|
+
text-decoration-line: none;
|
|
3437
|
+
}
|
|
3438
|
+
}
|
|
3439
|
+
}
|
|
3428
3440
|
.hover\:underline {
|
|
3429
3441
|
&:hover {
|
|
3430
3442
|
@media (hover: hover) {
|
|
@@ -3536,6 +3548,14 @@
|
|
|
3536
3548
|
background-color: var(--color-accent);
|
|
3537
3549
|
}
|
|
3538
3550
|
}
|
|
3551
|
+
.focus\:bg-destructive\/10 {
|
|
3552
|
+
&:focus {
|
|
3553
|
+
background-color: color-mix(in srgb, hsl(var(--destructive)) 10%, transparent);
|
|
3554
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
3555
|
+
background-color: color-mix(in oklab, var(--color-destructive) 10%, transparent);
|
|
3556
|
+
}
|
|
3557
|
+
}
|
|
3558
|
+
}
|
|
3539
3559
|
.focus\:text-accent-foreground {
|
|
3540
3560
|
&:focus {
|
|
3541
3561
|
color: var(--color-accent-foreground);
|
|
@@ -4826,11 +4846,21 @@
|
|
|
4826
4846
|
padding-inline: calc(var(--spacing) * 4);
|
|
4827
4847
|
}
|
|
4828
4848
|
}
|
|
4849
|
+
.sm\:px-6 {
|
|
4850
|
+
@media (width >= 40rem) {
|
|
4851
|
+
padding-inline: calc(var(--spacing) * 6);
|
|
4852
|
+
}
|
|
4853
|
+
}
|
|
4829
4854
|
.sm\:py-1 {
|
|
4830
4855
|
@media (width >= 40rem) {
|
|
4831
4856
|
padding-block: calc(var(--spacing) * 1);
|
|
4832
4857
|
}
|
|
4833
4858
|
}
|
|
4859
|
+
.sm\:py-4 {
|
|
4860
|
+
@media (width >= 40rem) {
|
|
4861
|
+
padding-block: calc(var(--spacing) * 4);
|
|
4862
|
+
}
|
|
4863
|
+
}
|
|
4834
4864
|
.sm\:text-left {
|
|
4835
4865
|
@media (width >= 40rem) {
|
|
4836
4866
|
text-align: left;
|
|
@@ -5086,6 +5116,12 @@
|
|
|
5086
5116
|
padding-block: calc(var(--spacing) * 0);
|
|
5087
5117
|
}
|
|
5088
5118
|
}
|
|
5119
|
+
.md\:text-2xl {
|
|
5120
|
+
@media (width >= 48rem) {
|
|
5121
|
+
font-size: var(--text-2xl);
|
|
5122
|
+
line-height: var(--tw-leading, var(--text-2xl--line-height));
|
|
5123
|
+
}
|
|
5124
|
+
}
|
|
5089
5125
|
.md\:text-sm {
|
|
5090
5126
|
@media (width >= 48rem) {
|
|
5091
5127
|
font-size: var(--text-sm);
|
|
@@ -5235,6 +5271,11 @@
|
|
|
5235
5271
|
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
5236
5272
|
}
|
|
5237
5273
|
}
|
|
5274
|
+
.lg\:p-6 {
|
|
5275
|
+
@media (width >= 64rem) {
|
|
5276
|
+
padding: calc(var(--spacing) * 6);
|
|
5277
|
+
}
|
|
5278
|
+
}
|
|
5238
5279
|
.lg\:p-8 {
|
|
5239
5280
|
@media (width >= 64rem) {
|
|
5240
5281
|
padding: calc(var(--spacing) * 8);
|
|
@@ -5261,6 +5302,11 @@
|
|
|
5261
5302
|
grid-column: span 4 / span 4;
|
|
5262
5303
|
}
|
|
5263
5304
|
}
|
|
5305
|
+
.xl\:flex {
|
|
5306
|
+
@media (width >= 80rem) {
|
|
5307
|
+
display: flex;
|
|
5308
|
+
}
|
|
5309
|
+
}
|
|
5264
5310
|
.xl\:grid-cols-1 {
|
|
5265
5311
|
@media (width >= 80rem) {
|
|
5266
5312
|
grid-template-columns: repeat(1, minmax(0, 1fr));
|