@crewlethq/ui 0.63.0 → 0.64.0

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.
@@ -11,19 +11,28 @@ interface RowBase {
11
11
  /** A consequence under the value, in the smallest tertiary type: "No open task matches this title". Never the current value, which the pair shows. */
12
12
  note?: ReactNode;
13
13
  }
14
+ /**
15
+ * A value that is more than a line: a list (`ChangeListItems`), a page of
16
+ * text, a preview. It takes the row's whole width under its label, and its
17
+ * tint is a block rather than a highlight, because a list or paragraphs drawn
18
+ * inside a highlighted run of words read as one run-on line.
19
+ */
20
+ interface BlockValue {
21
+ block?: boolean | undefined;
22
+ }
14
23
  /** A fact that does not change, such as the page being edited. */
15
- export interface ChangeListFactRow extends RowBase {
24
+ export interface ChangeListFactRow extends RowBase, BlockValue {
16
25
  kind: 'fact';
17
26
  value: ReactNode;
18
27
  }
19
28
  /** A value that changes from one thing to another. */
20
- export interface ChangeListChangedRow extends RowBase {
29
+ export interface ChangeListChangedRow extends RowBase, BlockValue {
21
30
  kind: 'changed';
22
31
  from: ReactNode;
23
32
  to: ReactNode;
24
33
  }
25
34
  /** A value set where there was none. */
26
- export interface ChangeListAddedRow extends RowBase {
35
+ export interface ChangeListAddedRow extends RowBase, BlockValue {
27
36
  kind: 'added';
28
37
  to: ReactNode;
29
38
  /**
@@ -34,7 +43,7 @@ export interface ChangeListAddedRow extends RowBase {
34
43
  isNew?: boolean | undefined;
35
44
  }
36
45
  /** A value taken away. */
37
- export interface ChangeListRemovedRow extends RowBase {
46
+ export interface ChangeListRemovedRow extends RowBase, BlockValue {
38
47
  kind: 'removed';
39
48
  from: ReactNode;
40
49
  }
@@ -93,6 +102,19 @@ export declare const CHANGE_LIST_COLLAPSE_OVER = 80;
93
102
  * reader needs from unchanged text is the words that touch the change.
94
103
  */
95
104
  export declare function shortenUnchanged(text: string, place: 'first' | 'middle' | 'last', max?: number): string;
105
+ /**
106
+ * A list value, one item a line: what a block row holds for a field that is a
107
+ * list (a seat's responsibilities, a voice's rules), rather than its items
108
+ * joined into one line.
109
+ */
110
+ export declare function ChangeListItems({ items }: {
111
+ items: readonly ReactNode[];
112
+ }): import("react").JSX.Element;
113
+ /** A block value: the same words and tints as a line's, stacked across the row. */
114
+ declare function BlockValue({ row, labels }: {
115
+ row: Exclude<ChangeListRow, ChangeListTextRow>;
116
+ labels: ChangeListLabels;
117
+ }): import("react").JSX.Element;
96
118
  /**
97
119
  * What a change will do, field by field, as a before and after.
98
120
  *
@@ -1,3 +1,3 @@
1
1
  import './ChangeList.css';
2
- export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, shortenUnchanged } from './ChangeList.js';
2
+ export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, ChangeListItems, shortenUnchanged } from './ChangeList.js';
3
3
  export type { ChangeListAddedRow, ChangeListChangedRow, ChangeListFactRow, ChangeListLabels, ChangeListProps, ChangeListRemovedRow, ChangeListRow, ChangeListTextRow, WordDiffPart, } from './ChangeList.js';
@@ -1,4 +1,4 @@
1
- export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, shortenUnchanged } from '../chunk-ZH5F2PXC.js';
1
+ export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, ChangeListItems, shortenUnchanged } from '../chunk-NOSHT6FL.js';
2
2
  import '../chunk-RO2MZZ66.js';
3
3
  import '../chunk-KYIAFNU7.js';
4
4
  import '../chunk-WIATRXEJ.js';
@@ -57,6 +57,47 @@
57
57
  gap: var(--spacing-1);
58
58
  }
59
59
 
60
+ /* A block value takes the row's whole width under its label, as long text does. */
61
+ .crewlet-change-list__row--block > .crewlet-change-list__value {
62
+ grid-column: 1 / -1;
63
+ display: flex;
64
+ flex-direction: column;
65
+ align-items: flex-start;
66
+ gap: var(--spacing-1);
67
+ }
68
+
69
+ /*
70
+ * The tint of a block value is the block itself: a list or paragraphs keep
71
+ * their own layout inside it, and line breaks in plain text are kept.
72
+ */
73
+ .crewlet-change-list__block {
74
+ display: block;
75
+ align-self: stretch;
76
+ min-width: 0;
77
+ padding: var(--spacing-1) var(--spacing-2);
78
+ border-radius: var(--radius-sm);
79
+ white-space: pre-line;
80
+ }
81
+
82
+ /* A fact needs no tint, only the block's layout. */
83
+ .crewlet-change-list__block--plain {
84
+ padding: 0;
85
+ }
86
+
87
+ /* Elements inside a block value lay out as themselves, not as kept line breaks. */
88
+ .crewlet-change-list__block > * {
89
+ white-space: normal;
90
+ }
91
+
92
+ .crewlet-change-list__items {
93
+ display: flex;
94
+ flex-direction: column;
95
+ gap: var(--spacing-1);
96
+ margin: 0;
97
+ padding-inline-start: var(--spacing-4);
98
+ list-style: disc;
99
+ }
100
+
60
101
  .crewlet-change-list__fact {
61
102
  font-weight: var(--font-weight-medium);
62
103
  }
@@ -1,7 +1,7 @@
1
- export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from '../chunk-PFXUEEHT.js';
1
+ export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from '../chunk-LAXXWJ2Z.js';
2
2
  import '../chunk-NLI7OVO2.js';
3
3
  import '../chunk-WW4E5EUS.js';
4
- import '../chunk-ZH5F2PXC.js';
4
+ import '../chunk-NOSHT6FL.js';
5
5
  import '../chunk-RO2MZZ66.js';
6
6
  import '../chunk-KYIAFNU7.js';
7
7
  import '../chunk-WIATRXEJ.js';
@@ -1,6 +1,6 @@
1
1
  import { RefusalStrip, ReceiptStrip } from './chunk-NLI7OVO2.js';
2
2
  import { StatusCard } from './chunk-WW4E5EUS.js';
3
- import { ChangeList } from './chunk-ZH5F2PXC.js';
3
+ import { ChangeList } from './chunk-NOSHT6FL.js';
4
4
  import { Button } from './chunk-7QTPJDRF.js';
5
5
  import { Spinner } from './chunk-XSPCITPN.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -3,10 +3,10 @@ import { Tag } from './chunk-KYIAFNU7.js';
3
3
  import { Disclosure } from './chunk-P4YORMRZ.js';
4
4
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
- import './ChangeList-CB2DLR5S.css';
6
+ import './ChangeList-KQVD46IC.css';
7
7
  import { useId } from 'react';
8
8
  import { ArrowRightGlyph } from '@crewlethq/icons/glyphs';
9
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
9
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
10
 
11
11
  var CHANGE_LIST_LABELS = {
12
12
  changedFrom: "Changed from",
@@ -67,7 +67,41 @@ function WordDiff({ row, labels }) {
67
67
  return /* @__PURE__ */ jsx("span", { children: shortenUnchanged(part.text, place, max) }, index);
68
68
  }) });
69
69
  }
70
+ function ChangeListItems({ items }) {
71
+ return /* @__PURE__ */ jsx("ul", { className: "crewlet-change-list__items", children: items.map((item, index) => /* @__PURE__ */ jsx("li", { children: item }, index)) });
72
+ }
73
+ function BlockValue({ row, labels }) {
74
+ switch (row.kind) {
75
+ case "fact":
76
+ return /* @__PURE__ */ jsx("div", { className: "crewlet-change-list__fact crewlet-change-list__block crewlet-change-list__block--plain", children: row.value });
77
+ case "changed":
78
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
79
+ /* @__PURE__ */ jsxs("del", { className: "crewlet-change-list__from crewlet-change-list__block", children: [
80
+ /* @__PURE__ */ jsx(VisuallyHidden, { children: `${labels.changedFrom} ` }),
81
+ row.from
82
+ ] }),
83
+ /* @__PURE__ */ jsxs("ins", { className: "crewlet-change-list__to crewlet-change-list__block", children: [
84
+ /* @__PURE__ */ jsx(VisuallyHidden, { children: `${labels.to} ` }),
85
+ row.to
86
+ ] })
87
+ ] });
88
+ case "added":
89
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
90
+ row.isNew ? /* @__PURE__ */ jsx(Tag, { size: "xs", variant: "success", children: labels.isNew }) : null,
91
+ /* @__PURE__ */ jsxs("ins", { className: "crewlet-change-list__to crewlet-change-list__block", children: [
92
+ /* @__PURE__ */ jsx(VisuallyHidden, { children: `${labels.added} ` }),
93
+ row.to
94
+ ] })
95
+ ] });
96
+ case "removed":
97
+ return /* @__PURE__ */ jsxs("del", { className: "crewlet-change-list__removed crewlet-change-list__block", children: [
98
+ /* @__PURE__ */ jsx(VisuallyHidden, { children: `${labels.removed} ` }),
99
+ row.from
100
+ ] });
101
+ }
102
+ }
70
103
  function Value({ row, labels }) {
104
+ if (row.block) return /* @__PURE__ */ jsx(BlockValue, { row, labels });
71
105
  switch (row.kind) {
72
106
  case "fact":
73
107
  return /* @__PURE__ */ jsx("span", { className: "crewlet-change-list__fact", children: row.value });
@@ -104,7 +138,11 @@ function ChangeList({ rows, heading, settled = false, labels: overrides, diffLab
104
138
  /* @__PURE__ */ jsx("dl", { className: "crewlet-change-list__rows", "aria-labelledby": heading === void 0 || heading === null ? void 0 : headingId, children: rows.map((row, index) => /* @__PURE__ */ jsxs(
105
139
  "div",
106
140
  {
107
- className: cx("crewlet-change-list__row", `crewlet-change-list__row--${row.kind}`),
141
+ className: cx(
142
+ "crewlet-change-list__row",
143
+ `crewlet-change-list__row--${row.kind}`,
144
+ row.kind !== "text" && row.block && "crewlet-change-list__row--block"
145
+ ),
108
146
  children: [
109
147
  /* @__PURE__ */ jsx("dt", { className: "crewlet-change-list__label", children: row.label }),
110
148
  /* @__PURE__ */ jsxs("dd", { className: "crewlet-change-list__value", children: [
@@ -121,4 +159,4 @@ function ChangeList({ rows, heading, settled = false, labels: overrides, diffLab
121
159
  ] });
122
160
  }
123
161
 
124
- export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, shortenUnchanged };
162
+ export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, ChangeListItems, shortenUnchanged };
@@ -52,7 +52,7 @@ import '../chunk-QH6VYJ3X.js';
52
52
  export { RUN_STATES, RunChip } from '../chunk-75QASA62.js';
53
53
  export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from '../chunk-WR7UDG7U.js';
54
54
  export { PropertyList } from '../chunk-VBYRA3W6.js';
55
- export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from '../chunk-PFXUEEHT.js';
55
+ export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from '../chunk-LAXXWJ2Z.js';
56
56
  export { Prose } from '../chunk-DVVP27OD.js';
57
57
  export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from '../chunk-Y56FM3K4.js';
58
58
  export { ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle } from '../chunk-ZAJHGDAW.js';
@@ -77,8 +77,8 @@ import '../chunk-CENOOTAV.js';
77
77
  export { PinTile } from '../chunk-GWPWLVN3.js';
78
78
  export { MessageBubble } from '../chunk-C3FX7ZSU.js';
79
79
  export { NewItemsNotice } from '../chunk-463DNZXI.js';
80
- export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-CT6I36FH.js';
81
80
  export { FactLine, ObjectHeader, SetByLine } from '../chunk-4MC2EEGO.js';
81
+ export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-CT6I36FH.js';
82
82
  export { OrgLabel } from '../chunk-ONQKKHON.js';
83
83
  export { LIVE_PREVIEW_DWELL_MS, LIVE_PREVIEW_MARGIN, LIVE_PREVIEW_MAX, LIVE_PREVIEW_MAX_FRAMES, LIVE_PREVIEW_RENDER_MS, LIVE_PREVIEW_STILLS_KEPT, LivePreview, LivePreviewBudgetProvider, PREVIEW_FILL_MAX_CUT, PreviewScale, createLivePreviewBudget, createLivePreviewStills, immediately, perFrame, useLivePreview } from '../chunk-CQFQGAZI.js';
84
84
  export { LockedLabel } from '../chunk-TEV5REGB.js';
@@ -157,14 +157,15 @@ export { Combobox } from '../chunk-PK2P2QH6.js';
157
157
  export { CommandPalette } from '../chunk-I74C4TM6.js';
158
158
  export { ConfirmModal, Modal } from '../chunk-KVWZDCTQ.js';
159
159
  export { HIGHLIGHT_REST_MS, TYPE_AHEAD_WINDOW, useHighlightRest, useListbox, useOptionKeys } from '../chunk-7KHM2FZH.js';
160
- export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, shortenUnchanged } from '../chunk-ZH5F2PXC.js';
160
+ export { CatalogTile } from '../chunk-TGSIVB6H.js';
161
+ export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, ChangeListItems, shortenUnchanged } from '../chunk-NOSHT6FL.js';
161
162
  export { DIFF_LIST_LABELS, DiffList } from '../chunk-RO2MZZ66.js';
162
163
  export { ChangeMark } from '../chunk-66X5WDKE.js';
163
164
  export { LONGTEXT_MAX_DEFAULT, RATING_MAX_CEILING, RATING_MAX_DEFAULT, SHEET_COLUMN_BOUNDS, SHEET_COLUMN_TYPES, SHEET_COLUMN_WIDTHS, SHEET_FIT_SAMPLES, SHEET_LABELS, SHEET_ROW_HEIGHT, SHEET_ROW_NUMBER_WIDTH, SheetPendingEdits, TEXT_MAX_DEFAULT, URL_MAX, cellDescription, cellKey, cellSpeech, changeText, changeTime, checkValue, columnOffsets, columnWidth, compareValues, displayText, drawnColumns, editText, editorSide, findOption, findPerson, fitSamples, fittedWidth, flagText, hasPrevious, inRange, isEmptyValue, isMod, isMultiCell, isSheetColumnType, isTypingKey, liveOptions, moveFrom, nextSort, normalizeValue, optionHue, parseOptionList, parseTSV, parseText, planClear, planPaste, presenceByCell, presenceByColumn, presenceByRow, rangeOf, ratingMax, refusalText, retypeColumn, rowName, sameValue, scrollToRow, sheetLabels, sortRows, spokenText, statusTone, textMax, toTSV, visibleRows } from '../chunk-LFSIKGRQ.js';
164
165
  export { PRESENCE_ACTIVITIES, PRESENCE_HUES, PRESENCE_LABELS, assignPresenceHues, collapseSessions, joinNames, presenceLabels, presenceOrder } from '../chunk-Z7JYG5TF.js';
165
166
  import '../chunk-3L5NHASN.js';
166
- export { CHAT_THREAD_FOLLOW_WITHIN, CHAT_THREAD_LABELS, ChatThread } from '../chunk-F2IYVVA3.js';
167
167
  export { ActivityStrip, BarList, ChartEmpty, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Histogram, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, histogramTicks, niceScale, useChartHover } from '../chunk-D2BYJNEH.js';
168
+ export { CHAT_THREAD_FOLLOW_WITHIN, CHAT_THREAD_LABELS, ChatThread } from '../chunk-F2IYVVA3.js';
168
169
  export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth, today } from '../chunk-GXQ3B46I.js';
169
170
  export { Callout } from '../chunk-BPCY7ZID.js';
170
171
  export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from '../chunk-UTBCDOGP.js';
@@ -174,7 +175,6 @@ export { CanvasToolbar, toolForKey } from '../chunk-KWTRRS7E.js';
174
175
  export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-NR4CPM4T.js';
175
176
  export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, ShortcutTip, anchorView, beyondSlop, clampPan, clampZoom, fitView, gridOf, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from '../chunk-3Q6N6FJL.js';
176
177
  import '../chunk-LM3ISVJA.js';
177
- export { CatalogTile } from '../chunk-TGSIVB6H.js';
178
178
  export { AuthLayout } from '../chunk-VTUAQYOC.js';
179
179
  export { AvatarPicker } from '../chunk-DHIO6Q75.js';
180
180
  export { HuePicker, HueSwatch } from '../chunk-QCVAVAF6.js';
@@ -196,10 +196,10 @@ export { ATTACHMENT_CHIP_LABELS, AttachmentChip } from '../chunk-KYTOEWJD.js';
196
196
  export { Tag } from '../chunk-KYIAFNU7.js';
197
197
  export { ArrangeFrame, useGridResize } from '../chunk-KBTJMJPX.js';
198
198
  export { ArrangeGrid } from '../chunk-QBA5B2Z5.js';
199
- export { ArrangeGroup } from '../chunk-J4HPMS7F.js';
200
199
  export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-2NNGOCWM.js';
201
200
  export { Switch } from '../chunk-A722MUNR.js';
202
201
  export { DEFAULT_REORDER_LABELS, moveKey, useReorder, useReorderLists } from '../chunk-MPVMB2DV.js';
202
+ export { ArrangeGroup } from '../chunk-J4HPMS7F.js';
203
203
  export { ARTIFACT_BAR_LABELS, ArtifactBar, ArtifactVersionChip } from '../chunk-JAOJLEYB.js';
204
204
  import '../chunk-OOC7Q67K.js';
205
205
  export { Tooltip } from '../chunk-I33UIUZD.js';
package/dist/index.js CHANGED
@@ -52,7 +52,7 @@ import './chunk-QH6VYJ3X.js';
52
52
  export { RUN_STATES, RunChip } from './chunk-75QASA62.js';
53
53
  export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from './chunk-WR7UDG7U.js';
54
54
  export { PropertyList } from './chunk-VBYRA3W6.js';
55
- export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from './chunk-PFXUEEHT.js';
55
+ export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from './chunk-LAXXWJ2Z.js';
56
56
  export { Prose } from './chunk-DVVP27OD.js';
57
57
  export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from './chunk-Y56FM3K4.js';
58
58
  export { ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle } from './chunk-ZAJHGDAW.js';
@@ -77,8 +77,8 @@ import './chunk-CENOOTAV.js';
77
77
  export { PinTile } from './chunk-GWPWLVN3.js';
78
78
  export { MessageBubble } from './chunk-C3FX7ZSU.js';
79
79
  export { NewItemsNotice } from './chunk-463DNZXI.js';
80
- export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from './chunk-CT6I36FH.js';
81
80
  export { FactLine, ObjectHeader, SetByLine } from './chunk-4MC2EEGO.js';
81
+ export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from './chunk-CT6I36FH.js';
82
82
  export { OrgLabel } from './chunk-ONQKKHON.js';
83
83
  export { LIVE_PREVIEW_DWELL_MS, LIVE_PREVIEW_MARGIN, LIVE_PREVIEW_MAX, LIVE_PREVIEW_MAX_FRAMES, LIVE_PREVIEW_RENDER_MS, LIVE_PREVIEW_STILLS_KEPT, LivePreview, LivePreviewBudgetProvider, PREVIEW_FILL_MAX_CUT, PreviewScale, createLivePreviewBudget, createLivePreviewStills, immediately, perFrame, useLivePreview } from './chunk-CQFQGAZI.js';
84
84
  export { LockedLabel } from './chunk-TEV5REGB.js';
@@ -157,14 +157,15 @@ export { Combobox } from './chunk-PK2P2QH6.js';
157
157
  export { CommandPalette } from './chunk-I74C4TM6.js';
158
158
  export { ConfirmModal, Modal } from './chunk-KVWZDCTQ.js';
159
159
  export { HIGHLIGHT_REST_MS, TYPE_AHEAD_WINDOW, useHighlightRest, useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
160
- export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, shortenUnchanged } from './chunk-ZH5F2PXC.js';
160
+ export { CatalogTile } from './chunk-TGSIVB6H.js';
161
+ export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, ChangeListItems, shortenUnchanged } from './chunk-NOSHT6FL.js';
161
162
  export { DIFF_LIST_LABELS, DiffList } from './chunk-RO2MZZ66.js';
162
163
  export { ChangeMark } from './chunk-66X5WDKE.js';
163
164
  export { LONGTEXT_MAX_DEFAULT, RATING_MAX_CEILING, RATING_MAX_DEFAULT, SHEET_COLUMN_BOUNDS, SHEET_COLUMN_TYPES, SHEET_COLUMN_WIDTHS, SHEET_FIT_SAMPLES, SHEET_LABELS, SHEET_ROW_HEIGHT, SHEET_ROW_NUMBER_WIDTH, SheetPendingEdits, TEXT_MAX_DEFAULT, URL_MAX, cellDescription, cellKey, cellSpeech, changeText, changeTime, checkValue, columnOffsets, columnWidth, compareValues, displayText, drawnColumns, editText, editorSide, findOption, findPerson, fitSamples, fittedWidth, flagText, hasPrevious, inRange, isEmptyValue, isMod, isMultiCell, isSheetColumnType, isTypingKey, liveOptions, moveFrom, nextSort, normalizeValue, optionHue, parseOptionList, parseTSV, parseText, planClear, planPaste, presenceByCell, presenceByColumn, presenceByRow, rangeOf, ratingMax, refusalText, retypeColumn, rowName, sameValue, scrollToRow, sheetLabels, sortRows, spokenText, statusTone, textMax, toTSV, visibleRows } from './chunk-LFSIKGRQ.js';
164
165
  export { PRESENCE_ACTIVITIES, PRESENCE_HUES, PRESENCE_LABELS, assignPresenceHues, collapseSessions, joinNames, presenceLabels, presenceOrder } from './chunk-Z7JYG5TF.js';
165
166
  import './chunk-3L5NHASN.js';
166
- export { CHAT_THREAD_FOLLOW_WITHIN, CHAT_THREAD_LABELS, ChatThread } from './chunk-F2IYVVA3.js';
167
167
  export { ActivityStrip, BarList, ChartEmpty, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Histogram, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, histogramTicks, niceScale, useChartHover } from './chunk-D2BYJNEH.js';
168
+ export { CHAT_THREAD_FOLLOW_WITHIN, CHAT_THREAD_LABELS, ChatThread } from './chunk-F2IYVVA3.js';
168
169
  export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth, today } from './chunk-GXQ3B46I.js';
169
170
  export { Callout } from './chunk-BPCY7ZID.js';
170
171
  export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from './chunk-UTBCDOGP.js';
@@ -174,7 +175,6 @@ export { CanvasToolbar, toolForKey } from './chunk-KWTRRS7E.js';
174
175
  export { Toolbar, ToolbarOverflow, ToolbarWide } from './chunk-NR4CPM4T.js';
175
176
  export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, ShortcutTip, anchorView, beyondSlop, clampPan, clampZoom, fitView, gridOf, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from './chunk-3Q6N6FJL.js';
176
177
  import './chunk-LM3ISVJA.js';
177
- export { CatalogTile } from './chunk-TGSIVB6H.js';
178
178
  export { AuthLayout } from './chunk-VTUAQYOC.js';
179
179
  export { AvatarPicker } from './chunk-DHIO6Q75.js';
180
180
  export { HuePicker, HueSwatch } from './chunk-QCVAVAF6.js';
@@ -196,10 +196,10 @@ export { ATTACHMENT_CHIP_LABELS, AttachmentChip } from './chunk-KYTOEWJD.js';
196
196
  export { Tag } from './chunk-KYIAFNU7.js';
197
197
  export { ArrangeFrame, useGridResize } from './chunk-KBTJMJPX.js';
198
198
  export { ArrangeGrid } from './chunk-QBA5B2Z5.js';
199
- export { ArrangeGroup } from './chunk-J4HPMS7F.js';
200
199
  export { ArrangeList, DEFAULT_ARRANGE_LABELS } from './chunk-2NNGOCWM.js';
201
200
  export { Switch } from './chunk-A722MUNR.js';
202
201
  export { DEFAULT_REORDER_LABELS, moveKey, useReorder, useReorderLists } from './chunk-MPVMB2DV.js';
202
+ export { ArrangeGroup } from './chunk-J4HPMS7F.js';
203
203
  export { ARTIFACT_BAR_LABELS, ArtifactBar, ArtifactVersionChip } from './chunk-JAOJLEYB.js';
204
204
  import './chunk-OOC7Q67K.js';
205
205
  export { Tooltip } from './chunk-I33UIUZD.js';
package/dist/styles.css CHANGED
@@ -7740,7 +7740,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
7740
7740
  }
7741
7741
 
7742
7742
 
7743
- /* ChangeList-CB2DLR5S.css */
7743
+ /* ChangeList-KQVD46IC.css */
7744
7744
  /*
7745
7745
  * What a change will do, as a before and after on PropertyList's grid: one
7746
7746
  * label column (as wide as the longest label, never under 92px) and one value
@@ -7800,6 +7800,47 @@ a.crewlet-breadcrumb__crumb:focus-visible {
7800
7800
  gap: var(--spacing-1);
7801
7801
  }
7802
7802
 
7803
+ /* A block value takes the row's whole width under its label, as long text does. */
7804
+ .crewlet-change-list__row--block > .crewlet-change-list__value {
7805
+ grid-column: 1 / -1;
7806
+ display: flex;
7807
+ flex-direction: column;
7808
+ align-items: flex-start;
7809
+ gap: var(--spacing-1);
7810
+ }
7811
+
7812
+ /*
7813
+ * The tint of a block value is the block itself: a list or paragraphs keep
7814
+ * their own layout inside it, and line breaks in plain text are kept.
7815
+ */
7816
+ .crewlet-change-list__block {
7817
+ display: block;
7818
+ align-self: stretch;
7819
+ min-width: 0;
7820
+ padding: var(--spacing-1) var(--spacing-2);
7821
+ border-radius: var(--radius-sm);
7822
+ white-space: pre-line;
7823
+ }
7824
+
7825
+ /* A fact needs no tint, only the block's layout. */
7826
+ .crewlet-change-list__block--plain {
7827
+ padding: 0;
7828
+ }
7829
+
7830
+ /* Elements inside a block value lay out as themselves, not as kept line breaks. */
7831
+ .crewlet-change-list__block > * {
7832
+ white-space: normal;
7833
+ }
7834
+
7835
+ .crewlet-change-list__items {
7836
+ display: flex;
7837
+ flex-direction: column;
7838
+ gap: var(--spacing-1);
7839
+ margin: 0;
7840
+ padding-inline-start: var(--spacing-4);
7841
+ list-style: disc;
7842
+ }
7843
+
7803
7844
  .crewlet-change-list__fact {
7804
7845
  font-weight: var(--font-weight-medium);
7805
7846
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.63.0",
3
+ "version": "0.64.0",
4
4
  "description": "Crewlet shared React components built on @crewlethq/tokens and @crewlethq/icons.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -42,8 +42,8 @@
42
42
  "clean": "rm -rf dist src/generated"
43
43
  },
44
44
  "dependencies": {
45
- "@crewlethq/icons": "0.63.0",
46
- "@crewlethq/tokens": "0.63.0",
45
+ "@crewlethq/icons": "0.64.0",
46
+ "@crewlethq/tokens": "0.64.0",
47
47
  "prosemirror-commands": "1.7.2",
48
48
  "prosemirror-gapcursor": "1.4.1",
49
49
  "prosemirror-history": "1.5.1",