@crewlethq/ui 0.65.1 → 0.67.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.
Files changed (46) hide show
  1. package/README.md +16 -0
  2. package/dist/AppShell/index.js +1 -1
  3. package/dist/{AppShell-LZQA3XU4.css → AppShell-2IBUS4TH.css} +6 -1
  4. package/dist/ArtifactCard/index.js +3 -3
  5. package/dist/ChatThread/ChatThread.d.ts +9 -0
  6. package/dist/ChatThread/index.js +1 -1
  7. package/dist/{ChatThread-FGXVDLI2.css → ChatThread-2KO3FZKQ.css} +12 -9
  8. package/dist/CommentThread/index.js +2 -2
  9. package/dist/DataView/index.js +2 -2
  10. package/dist/DatasetSource/index.js +2 -2
  11. package/dist/EditingStatus/index.js +2 -2
  12. package/dist/InlineEditor/index.js +3 -3
  13. package/dist/ProposalCard/ProposalCard.d.ts +58 -1
  14. package/dist/ProposalCard/index.d.ts +2 -2
  15. package/dist/ProposalCard/index.js +8 -1
  16. package/dist/{ProposalCard-VTTCDXYK.css → ProposalCard-SF332W4E.css} +22 -0
  17. package/dist/RelativeTime/index.js +1 -1
  18. package/dist/RichEditor/index.js +1 -1
  19. package/dist/StatusCard/StatusCard.d.ts +10 -3
  20. package/dist/TableCells/index.js +2 -2
  21. package/dist/ThinkingIndicator/ThinkingIndicator.d.ts +9 -6
  22. package/dist/ThinkingIndicator/index.js +1 -1
  23. package/dist/ThinkingIndicator-JVF52N7L.css +193 -0
  24. package/dist/VersionTimeline/index.js +2 -2
  25. package/dist/WidgetFrame/index.js +2 -2
  26. package/dist/{chunk-FZUDUNCK.js → chunk-2AQMXGWA.js} +63 -6
  27. package/dist/{chunk-UBIPDEFV.js → chunk-3EETQFAM.js} +2 -2
  28. package/dist/{chunk-DS5NBENV.js → chunk-BVNFNFA6.js} +1 -1
  29. package/dist/{chunk-F2IYVVA3.js → chunk-D2ZXIQ23.js} +31 -4
  30. package/dist/{chunk-L6NG7CUA.js → chunk-EJNJMHQG.js} +1 -1
  31. package/dist/{chunk-E55DKVY7.js → chunk-GJ7VIQWL.js} +1 -1
  32. package/dist/{chunk-NWTHGZBH.js → chunk-GNDKUSCG.js} +1 -1
  33. package/dist/{chunk-XGBGEI6V.js → chunk-J5BIKMQY.js} +1 -1
  34. package/dist/{chunk-E2MIUNUU.js → chunk-M73MMEZY.js} +1 -1
  35. package/dist/{chunk-VVOFJFRT.js → chunk-QBWNGNF7.js} +1 -1
  36. package/dist/{chunk-VRG2ZXNK.js → chunk-R6K62EXV.js} +1 -1
  37. package/dist/{chunk-4EDSEX7U.js → chunk-S5QJZOPL.js} +1 -1
  38. package/dist/{chunk-DKJJ434E.js → chunk-UBJ32EO2.js} +1 -1
  39. package/dist/{chunk-B76OKJMX.js → chunk-VLGGLLKH.js} +1 -1
  40. package/dist/{chunk-SRSE7FGL.js → chunk-WPMZKZUH.js} +1 -1
  41. package/dist/generated/index.js +23 -23
  42. package/dist/index.js +23 -23
  43. package/dist/styles.css +130 -29
  44. package/package.json +3 -3
  45. package/dist/ThinkingIndicator-QJMX2TXC.css +0 -122
  46. package/dist/{Editor-NZRUKWB4.js → Editor-URGZOK2S.js} +1 -1
package/dist/index.js CHANGED
@@ -2,8 +2,8 @@ import './chunk-TXQNWGUD.js';
2
2
  export { TypeSpecimen } from './chunk-JKAFEFFC.js';
3
3
  export { REFERENCE_NAME_PATTERN, ValueField, completeReference, isWholeReference, rankReferences, referenceAt, urlSchemeOf } from './chunk-BWAUL5MB.js';
4
4
  export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from './chunk-6ID4DVML.js';
5
- export { VersionTimeline } from './chunk-SRSE7FGL.js';
6
- export { WidgetFrame } from './chunk-4EDSEX7U.js';
5
+ export { VersionTimeline } from './chunk-WPMZKZUH.js';
6
+ export { WidgetFrame } from './chunk-S5QJZOPL.js';
7
7
  export { ElementToPngError, elementToPng, parseCsv, serializeElement, toCsv } from './chunk-FEJANUZK.js';
8
8
  export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from './chunk-WXLQJUGO.js';
9
9
  export { ToastProvider, Toaster, toasterInsetStyle, useToast } from './chunk-SZFKGH2W.js';
@@ -13,11 +13,11 @@ export { ThemeSwatch } from './chunk-3XQUEF5C.js';
13
13
  export { DensitySwitcher, ThemeSwitcher } from './chunk-7EOUVWGQ.js';
14
14
  export { ThemeToggle } from './chunk-IPMJGK2Q.js';
15
15
  export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from './chunk-Z24ZUSTX.js';
16
- export { ThinkingIndicator } from './chunk-E2MIUNUU.js';
16
+ export { ThinkingIndicator } from './chunk-M73MMEZY.js';
17
17
  export { TileGrid } from './chunk-Q6CQMS6R.js';
18
18
  export { TIME_RANGE_CUSTOM, TIME_RANGE_PICKER_LABELS, TimeRangePicker, timeRangeFieldKey, timeRangeProblem } from './chunk-PQWNK3N7.js';
19
19
  export { Switcher } from './chunk-GDDVI4US.js';
20
- export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from './chunk-NWTHGZBH.js';
20
+ export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from './chunk-GNDKUSCG.js';
21
21
  export { TagsInput } from './chunk-HEIOLITO.js';
22
22
  export { StatCard } from './chunk-G5IZGAWS.js';
23
23
  export { StatGroup } from './chunk-OUD75UB2.js';
@@ -35,9 +35,9 @@ export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSel
35
35
  export { TagGroup } from './chunk-UEOEBOBR.js';
36
36
  export { matchesShortcut, useShortcut } from './chunk-AYHIF6DH.js';
37
37
  import './chunk-73GUXYYE.js';
38
+ export { SearchTrigger } from './chunk-ERNT3UTB.js';
38
39
  export { SectionFrame, SectionFrameBody, SectionFrameNav } from './chunk-G4CGDUCP.js';
39
40
  export { NavGroup, NavItem, SidebarNav } from './chunk-WCDPFTJZ.js';
40
- export { SearchTrigger } from './chunk-ERNT3UTB.js';
41
41
  export { SegmentedMeter, segmentedMeterLabel } from './chunk-4AK52VHB.js';
42
42
  export { Select } from './chunk-VK45YJLH.js';
43
43
  export { SelectionBar } from './chunk-WU5JDEEY.js';
@@ -45,16 +45,16 @@ export { SEND_BUTTON_LABELS, SendButton } from './chunk-T2GC7UAP.js';
45
45
  export { RESULT_TABLE_CARD_LABELS, RESULT_TABLE_COLLAPSED_ROWS, RESULT_TABLE_MAX_ROWS, ResultTableCard } from './chunk-7QTJO3PV.js';
46
46
  export { Table } from './chunk-5DJMFRSZ.js';
47
47
  export { ReviewList } from './chunk-DO4J4TBZ.js';
48
+ export { RichEditor, preloadRichEditor } from './chunk-BVNFNFA6.js';
49
+ export { RICH_EDITOR_LABELS, richEditorLabels } from './chunk-CSQTDGTS.js';
48
50
  export { canonicalMarkdown, roundTripMarkdown } from './chunk-SWD4QBL6.js';
49
51
  import './chunk-QH6VYJ3X.js';
50
52
  export { RUN_STATES, RunChip } from './chunk-PIAGTZY3.js';
51
53
  export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from './chunk-OJGI4XJH.js';
52
- export { RichEditor, preloadRichEditor } from './chunk-DS5NBENV.js';
53
- export { RICH_EDITOR_LABELS, richEditorLabels } from './chunk-CSQTDGTS.js';
54
54
  export { PropertyList } from './chunk-HIWPPWNY.js';
55
- export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from './chunk-FZUDUNCK.js';
56
- export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from './chunk-Y56FM3K4.js';
55
+ export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, PROPOSAL_TONES, ProposalCard } from './chunk-2AQMXGWA.js';
57
56
  export { Prose } from './chunk-DVVP27OD.js';
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';
59
59
  export { REFUSAL_CARD_LABELS, RefusalCard } from './chunk-RQHN4J5P.js';
60
60
  export { RelatedRow } from './chunk-CNEHFH2A.js';
@@ -94,7 +94,7 @@ export { ListDetail } from './chunk-YBC2CYPD.js';
94
94
  export { ListInput, withDraft } from './chunk-MNTUIAQT.js';
95
95
  export { LIVE_CURSOR_HIDE_MS, LIVE_CURSOR_REST_MS, LiveCursor } from './chunk-DPNVKWJX.js';
96
96
  export { IndicatorAnchor } from './chunk-27MJPU7G.js';
97
- export { INLINE_EDITOR_LABELS, InlineEditor } from './chunk-VVOFJFRT.js';
97
+ export { INLINE_EDITOR_LABELS, InlineEditor } from './chunk-QBWNGNF7.js';
98
98
  export { LAYERS_LIST_LABELS, LayersList } from './chunk-VUYNNILP.js';
99
99
  export { IDLE_AFTER_MS, useFullscreen, useIdle } from './chunk-W5XCNEZC.js';
100
100
  export { Highlight, highlightRanges, highlightTerms } from './chunk-H6VKCIWV.js';
@@ -104,8 +104,8 @@ export { IconTile } from './chunk-3LI4TRUR.js';
104
104
  export { ImageUpload } from './chunk-56IFLQGF.js';
105
105
  export { InboxGroup, InboxList, InboxMore, InboxRow, InboxToggle } from './chunk-62DBFNOK.js';
106
106
  export { FactList } from './chunk-CSXJIIO4.js';
107
- export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from './chunk-2JHGPXYG.js';
108
107
  export { FileList } from './chunk-5WRWBDML.js';
108
+ export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from './chunk-2JHGPXYG.js';
109
109
  export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from './chunk-IWZG7NPV.js';
110
110
  export { FindingList } from './chunk-LSRQ2A6B.js';
111
111
  export { FolderTile, describeFolderContents, folderContentsParts } from './chunk-WTXCK46H.js';
@@ -114,7 +114,7 @@ export { DEFAULT_FRAME_THEME, EXTERNAL_URL_MAX, FRAME_BRIDGE, FRAME_MESSAGE, FRA
114
114
  export { DENSITY_PREFERENCES, PALETTE_ID, THEME_PREFERENCES, applyDensity, applyPalette, applyTheme, isDensityPreference, isPaletteId, isThemePreference } from './chunk-ZXXDZJQN.js';
115
115
  export { DownloadButton } from './chunk-NSCYGUDG.js';
116
116
  export { downloadBlob, downloadText, safeFilename, useDownload } from './chunk-YNRKVY7X.js';
117
- export { EditingStatus } from './chunk-B76OKJMX.js';
117
+ export { EditingStatus } from './chunk-VLGGLLKH.js';
118
118
  export { EntityChip } from './chunk-OSKJZNBT.js';
119
119
  export { EntityList } from './chunk-7IW3P6FH.js';
120
120
  export { ErrorBoundary } from './chunk-ZEPUKRO7.js';
@@ -127,17 +127,17 @@ export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from './chunk-CX6QT4CH.js';
127
127
  export { CursorFlag } from './chunk-MMCYH5LB.js';
128
128
  export { PresenceRing, presenceHueClass } from './chunk-EFX2YC5T.js';
129
129
  export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, countDataGridRows, fitGridColumns, parseGridSort, useAnyDataGridDriving, useDataGridDriving } from './chunk-ELLRZ5XR.js';
130
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from './chunk-XGBGEI6V.js';
130
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from './chunk-J5BIKMQY.js';
131
131
  export { PageHeader } from './chunk-FPDIHEM4.js';
132
132
  export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from './chunk-CFY257ND.js';
133
- export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from './chunk-VRG2ZXNK.js';
133
+ export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from './chunk-R6K62EXV.js';
134
134
  export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from './chunk-PX54PALQ.js';
135
135
  export { DEEP_WORK_CARD_LABELS, DEEP_WORK_STATES, DEEP_WORK_STATE_LABELS, DeepWorkCard } from './chunk-UWOYDHVW.js';
136
136
  export { STEP_STATES, STEP_STATE_LABELS, StepList, StepStateMark, Stepper, stepDetailPieces } from './chunk-HJBHP66O.js';
137
137
  export { DEFAULT_METER_THRESHOLDS, METER_STATES, Meter, meterState, meterStateTone, meterTone, progressTone } from './chunk-RQFRRPV6.js';
138
138
  export { REFUSAL_STRIP_LABELS, ReceiptStrip, RefusalStrip } from './chunk-M25IV5MH.js';
139
139
  export { StatusCard } from './chunk-NTQPJJAN.js';
140
- export { COMMENT_THREAD_LABELS, CommentThread } from './chunk-DKJJ434E.js';
140
+ export { COMMENT_THREAD_LABELS, CommentThread } from './chunk-UBJ32EO2.js';
141
141
  export { ConfirmField, confirmMatches } from './chunk-JVII5264.js';
142
142
  export { InlineCode } from './chunk-PLL7ZJHY.js';
143
143
  export { CONFLICT_NOTE_LABELS, ConflictNote } from './chunk-SUJO3AHN.js';
@@ -165,7 +165,7 @@ export { LONGTEXT_MAX_DEFAULT, RATING_MAX_CEILING, RATING_MAX_DEFAULT, SHEET_COL
165
165
  export { PRESENCE_ACTIVITIES, PRESENCE_HUES, PRESENCE_LABELS, assignPresenceHues, collapseSessions, joinNames, presenceLabels, presenceOrder } from './chunk-Z7JYG5TF.js';
166
166
  import './chunk-3L5NHASN.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-YWVT7B6N.js';
168
- export { CHAT_THREAD_FOLLOW_WITHIN, CHAT_THREAD_LABELS, ChatThread } from './chunk-F2IYVVA3.js';
168
+ export { CHAT_THREAD_FOLLOW_WITHIN, CHAT_THREAD_LABELS, ChatThread } from './chunk-D2ZXIQ23.js';
169
169
  export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth, today } from './chunk-EE3DJMSQ.js';
170
170
  export { Callout } from './chunk-BPCY7ZID.js';
171
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-JEA5OX54.js';
@@ -184,18 +184,18 @@ export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from './chunk-SNQRGH4A.js';
184
184
  export { BrandChip } from './chunk-UH44L7OJ.js';
185
185
  export { BrandLockup } from './chunk-7KBNFFM3.js';
186
186
  export { BrandSample } from './chunk-AVMQMY66.js';
187
- export { Breadcrumb } from './chunk-M52HLPOG.js';
188
- export { KeyChip } from './chunk-HBDA76EZ.js';
189
187
  export { BrandScope, brandScopeInputs } from './chunk-X7WEE3EK.js';
190
188
  import './chunk-5SGHW42B.js';
191
189
  import './chunk-7W3LYIOC.js';
190
+ export { Breadcrumb } from './chunk-M52HLPOG.js';
191
+ export { KeyChip } from './chunk-HBDA76EZ.js';
192
192
  export { ArtifactMakeRow } from './chunk-37U3Z65B.js';
193
193
  export { ArtifactNameCell } from './chunk-4MRFLHJC.js';
194
194
  export { AsideLayout } from './chunk-QOXLP5PE.js';
195
195
  export { ATTACHMENT_CHIP_LABELS, AttachmentChip } from './chunk-3N36CYTU.js';
196
196
  export { Tag } from './chunk-I5OIKDX2.js';
197
- export { ArrangeFrame, useGridResize } from './chunk-PLNJEDGI.js';
198
197
  export { ArrangeGrid } from './chunk-QBA5B2Z5.js';
198
+ export { ArrangeFrame, useGridResize } from './chunk-PLNJEDGI.js';
199
199
  export { ArrangeGroup } from './chunk-CYYBE2MM.js';
200
200
  export { ArrangeList, DEFAULT_ARRANGE_LABELS } from './chunk-TWJERLT3.js';
201
201
  export { Switch } from './chunk-3XDT5ZWL.js';
@@ -208,18 +208,18 @@ export { TabPanel, Tabs, tabId } from './chunk-PVZOP3QK.js';
208
208
  import './chunk-EGMQURBR.js';
209
209
  export { ARTIFACT_ICON_WORDS, ArtifactIcon, artifactIconGlyph } from './chunk-AVL52EME.js';
210
210
  export { StatusDot } from './chunk-WIATRXEJ.js';
211
- export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from './chunk-UBIPDEFV.js';
211
+ export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from './chunk-3EETQFAM.js';
212
212
  export { Skeleton } from './chunk-BRLZXYPA.js';
213
213
  export { PRINCIPAL_KINDS, PrincipalAvatar } from './chunk-CI3VPIJN.js';
214
- export { RelativeTime, currentNow, formatElapsed, formatExact, formatRelative, formatUntil, toISO, toInstant, useNow } from './chunk-L6NG7CUA.js';
214
+ export { RelativeTime, currentNow, formatElapsed, formatExact, formatRelative, formatUntil, toISO, toInstant, useNow } from './chunk-EJNJMHQG.js';
215
215
  export { EMPTY_VALUE, EmptyValue } from './chunk-RE3FBGQQ.js';
216
216
  export { Card } from './chunk-4AUTALJA.js';
217
217
  export { useCardHeaderSlot } from './chunk-AV2DXAEL.js';
218
218
  export { AvatarStack, avatarStackLabel } from './chunk-BKP6XCAJ.js';
219
219
  export { AVATAR_CHARACTER_FULL_DETAIL, AVATAR_CORNER_RATIO, AVATAR_SIZES, AVATAR_STATUSES, AVATAR_STATUS_LABELS, Avatar, avatarCorner, avatarInitialsName, avatarPixels, avatarTint, getInitials } from './chunk-PZKHBB7D.js';
220
220
  export { ArtifactKindGround, ArtifactKindIllustration, ArtifactKindTile } from './chunk-NHLNHH4J.js';
221
- export { ARTIFACT_ACCESSES, ARTIFACT_ACCESS_LABELS, ArtifactAccessGlyph, ArtifactAccessLabel } from './chunk-DOY3KC6I.js';
222
221
  export { Checkbox, CheckboxGroup } from './chunk-PBCNINMB.js';
222
+ export { ARTIFACT_ACCESSES, ARTIFACT_ACCESS_LABELS, ArtifactAccessGlyph, ArtifactAccessLabel } from './chunk-DOY3KC6I.js';
223
223
  export { DashboardCover, DocCover, SHEET_COVER_COLUMNS, SHEET_COVER_ROWS, SheetCover } from './chunk-R45VM5EX.js';
224
224
  export { Document, DocumentTitle, DocumentTitleField } from './chunk-BXCL6P5Z.js';
225
225
  export { ARTIFACT_KINDS, ArtifactKindGlyph } from './chunk-RSKW25Y5.js';
@@ -241,7 +241,7 @@ export { DisclosureAnatomy } from './chunk-IVTQWOXV.js';
241
241
  export { Count } from './chunk-MLDTLZAO.js';
242
242
  export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from './chunk-PQADV6P6.js';
243
243
  export { Announcer, announce, useAnnouncer } from './chunk-2G355KDJ.js';
244
- export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useScreenBelow, useScreenWidth, useStoredWidth } from './chunk-E55DKVY7.js';
244
+ export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useScreenBelow, useScreenWidth, useStoredWidth } from './chunk-GJ7VIQWL.js';
245
245
  export { useMediaMatch } from './chunk-RTPQDNW3.js';
246
246
  export { Menu } from './chunk-T73DMDU4.js';
247
247
  export { RESIZE_HANDLE_LARGE_STEP, RESIZE_HANDLE_STEP, ResizeHandle, clampSize, useAppShellAside, useAppShellPeek } from './chunk-PIYJNCN7.js';
package/dist/styles.css CHANGED
@@ -754,7 +754,7 @@
754
754
  }
755
755
 
756
756
 
757
- /* AppShell-LZQA3XU4.css */
757
+ /* AppShell-2IBUS4TH.css */
758
758
  /*
759
759
  * The application frame: a rail on the FRAME, and the screen on a SHEET that
760
760
  * floats beside it.
@@ -816,7 +816,12 @@
816
816
  past it. A page that can also scroll as a whole carries the rail off the
817
817
  top of the window. */
818
818
  height: 100dvh;
819
- overflow: hidden;
819
+ /* CLIPPED, NOT SCROLLABLE. `overflow: hidden` is still a scroll container:
820
+ a focus or a scrollIntoView on anything that reaches past the viewport
821
+ scrolled the whole shell up, the frame showing as a band under it, and
822
+ nothing a reader could do scrolled it back. `clip` cuts the same edge
823
+ and offers nothing to scroll (SidePanel's flush body, the same rule). */
824
+ overflow: clip;
820
825
  /* The FRAME, the lowest rung: what the rail stands on and what shows round
821
826
  the sheet's inset. */
822
827
  background: var(--color-surface-frame);
@@ -9635,11 +9640,11 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
9635
9640
  }
9636
9641
 
9637
9642
 
9638
- /* ChatThread-FGXVDLI2.css */
9643
+ /* ChatThread-2KO3FZKQ.css */
9639
9644
  /*
9640
9645
  * A conversation as it grows: the scroller, the items a spacing step and a
9641
- * half apart on the panel's 16px inset, and the Jump to latest pill floating
9642
- * over its foot.
9646
+ * half apart on the panel's 16px inset, and the Jump to latest pill in a row
9647
+ * of its own under it.
9643
9648
  */
9644
9649
  .crewlet-chat-thread {
9645
9650
  position: relative;
@@ -9691,14 +9696,17 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
9691
9696
  flex: none;
9692
9697
  }
9693
9698
 
9694
- /* The pill, centred a step above the thread's foot. */
9699
+ /*
9700
+ * The pill, centred in a row of its own under the log. IN FLOW, NOT FLOATING:
9701
+ * laid over the scroller it covered the last lines of whatever was being read,
9702
+ * a table's rows or an answer's text. Here the log gives up the row while the
9703
+ * pill shows, and nothing it holds is hidden under it.
9704
+ */
9695
9705
  .crewlet-chat-thread__jump {
9696
- position: absolute;
9697
- bottom: var(--spacing-3);
9698
- left: 50%;
9699
- transform: translateX(-50%);
9700
- box-shadow: var(--shadow-md);
9701
- border-radius: var(--radius-pill);
9706
+ display: flex;
9707
+ flex: none;
9708
+ justify-content: center;
9709
+ padding: var(--spacing-2) var(--spacing-4);
9702
9710
  }
9703
9711
 
9704
9712
  .crewlet-chat-thread__fresh {
@@ -27077,7 +27085,7 @@ button.crewlet-presence-stack__member:focus-visible {
27077
27085
  }
27078
27086
 
27079
27087
 
27080
- /* ProposalCard-VTTCDXYK.css */
27088
+ /* ProposalCard-SF332W4E.css */
27081
27089
  /*
27082
27090
  * A proposed change. The card, its head, its strip and its foot are
27083
27091
  * StatusCard's; only the note's register is said here: the consequence is a
@@ -27098,6 +27106,28 @@ button.crewlet-presence-stack__member:focus-visible {
27098
27106
  text-align: end;
27099
27107
  }
27100
27108
 
27109
+ /* THE DELIBERATE CONFIRMATION, on a row of its own above the decision. It
27110
+ starts at the foot's start edge, unlike the one-line reasons around it: a
27111
+ checkbox's sentence wraps under its own first line, and set at the end its
27112
+ lines would start in a different place each. */
27113
+ .crewlet-proposal-card__confirmation {
27114
+ flex: 1 1 100%;
27115
+ }
27116
+
27117
+ /* A PRIMARY THAT HAS JUST APPEARED takes no pointer for a moment (ARMING_MS
27118
+ in ProposalCard.tsx): no hover, and no press from a pointer that was
27119
+ already resting where it landed. Focus and the keyboard still reach it. */
27120
+ .crewlet-proposal-card__approve[data-arming] {
27121
+ pointer-events: none;
27122
+ }
27123
+
27124
+ /* THE DANGER TONE, while the decision is open: Card's rail (passed through
27125
+ StatusCard) and the title in the danger ink, the step the tokens measure as
27126
+ text, so it holds AA in every palette. The Tag keeps the state. */
27127
+ .crewlet-proposal-card--danger .crewlet-card__title {
27128
+ color: var(--color-feedback-danger-ink);
27129
+ }
27130
+
27101
27131
  /* WHY THE LAST DECISION WAS REFUSED, on a line of its own above the
27102
27132
  decision and at its end, as the held primary's reason is: the refusal
27103
27133
  strip's own inline drawing, which wraps rather than widening the row. */
@@ -38139,9 +38169,9 @@ b.crewlet-switcher__match {
38139
38169
  }
38140
38170
 
38141
38171
 
38142
- /* ThinkingIndicator-QJMX2TXC.css */
38172
+ /* ThinkingIndicator-JVF52N7L.css */
38143
38173
  /*
38144
- * The assistant at work: the Assistant's mark, its blades turning, and a line
38174
+ * The assistant at work: the Assistant's mark, its spark turning, and a line
38145
38175
  * of status under a shimmer. See ThinkingIndicator.tsx for why it replaces a
38146
38176
  * caret and how it is announced.
38147
38177
  */
@@ -38163,27 +38193,83 @@ b.crewlet-switcher__match {
38163
38193
  }
38164
38194
 
38165
38195
  /*
38166
- * THE BLADES TURN A QUARTER, THEN REST. The figure is four blades around a
38167
- * core, the same after a quarter turn, so each round ends where the next
38168
- * begins and the loop never shows a seam. One round is the breath period
38169
- * (2.2s): the turn takes its first half on the in-out ease and the second
38170
- * half is still, which reads as steady thought rather than as a spinner. The
38171
- * core holds still, as the mark's own description promises.
38172
- */
38196
+ * THE SPARK TURNS A QUARTER, THEN RESTS. The Assistant's main spark
38197
+ * (data-motion="turn") makes a quarter turn about its own centre while its
38198
+ * companion (data-motion="twinkle") dims and shrinks, both on one timeline of
38199
+ * --motion-duration-spark (1.6s). The gesture runs from 20% to 70% of the
38200
+ * period and every part is at rest in the idle pose for the other half, so
38201
+ * the loop never jumps: the spark is four-fold symmetric, so its 90 degree
38202
+ * pose is its 0 degree pose. Both parts pivot on their own fill box, which is
38203
+ * the spark's centre, so the same rules move the 16 pixel grid drawing and
38204
+ * the 48 unit master.
38205
+ *
38206
+ * THE TURN TUCKS. A full-size spark sweeps its tip through the companion
38207
+ * between 26.6 and 63.4 degrees. The spark therefore pulls in to 0.8 over the
38208
+ * first 15.37 degrees, holds 0.8 through the fast middle of the turn and opens
38209
+ * back to 1 over the last 15.37 degrees, which keeps clear violet between the
38210
+ * two at every frame. Rotate and scale are one transform, so the two can never
38211
+ * drift apart. The three timing functions are the design's one eased quarter
38212
+ * turn, cubic-bezier(0.65, 0, 0.35, 1) over the gesture, split at the 37.5%
38213
+ * and 52.5% stops, so the angle follows that curve exactly.
38214
+ *
38215
+ * THE COMPANION TWINKLES. Its trough sits at 45%, the instant the main spark
38216
+ * passes 45 degrees, and it shares the turn's gesture window.
38217
+ */
38218
+ .crewlet-thinking__mark [data-motion='turn'],
38219
+ .crewlet-thinking__mark [data-motion='twinkle'] {
38220
+ transform-box: fill-box;
38221
+ transform-origin: center;
38222
+ }
38223
+
38173
38224
  .crewlet-thinking__mark [data-motion='turn'] {
38174
- transform-box: view-box;
38175
- transform-origin: 50% 50%;
38176
- animation: crewlet-thinking-turn var(--motion-duration-breath) var(--motion-easing-in-out) infinite;
38225
+ animation: crewlet-thinking-turn var(--motion-duration-spark) linear infinite;
38226
+ }
38227
+
38228
+ .crewlet-thinking__mark [data-motion='twinkle'] {
38229
+ animation: crewlet-thinking-twinkle var(--motion-duration-spark) linear infinite;
38177
38230
  }
38178
38231
 
38179
38232
  @keyframes crewlet-thinking-turn {
38180
- 0% {
38181
- transform: rotate(0deg);
38233
+ 0%,
38234
+ 20% {
38235
+ transform: rotate(0deg) scale(1);
38236
+ animation-timing-function: cubic-bezier(0.4878, 0, 0.7883, 0.4041);
38182
38237
  }
38183
38238
 
38184
- 50%,
38239
+ 37.5% {
38240
+ transform: rotate(15.37deg) scale(0.8);
38241
+ animation-timing-function: cubic-bezier(0.4462, 0.2792, 0.5538, 0.7208);
38242
+ }
38243
+
38244
+ 52.5% {
38245
+ transform: rotate(74.63deg) scale(0.8);
38246
+ animation-timing-function: cubic-bezier(0.2117, 0.5959, 0.5122, 1);
38247
+ }
38248
+
38249
+ 70%,
38185
38250
  100% {
38186
- transform: rotate(90deg);
38251
+ transform: rotate(90deg) scale(1);
38252
+ }
38253
+ }
38254
+
38255
+ @keyframes crewlet-thinking-twinkle {
38256
+ 0%,
38257
+ 20% {
38258
+ transform: scale(1);
38259
+ opacity: 1;
38260
+ animation-timing-function: cubic-bezier(0.45, 0, 0.55, 1);
38261
+ }
38262
+
38263
+ 45% {
38264
+ transform: scale(0.7);
38265
+ opacity: 0.5;
38266
+ animation-timing-function: cubic-bezier(0.45, 0, 0.55, 1);
38267
+ }
38268
+
38269
+ 70%,
38270
+ 100% {
38271
+ transform: scale(1);
38272
+ opacity: 1;
38187
38273
  }
38188
38274
  }
38189
38275
 
@@ -38243,9 +38329,24 @@ b.crewlet-switcher__match {
38243
38329
  }
38244
38330
  }
38245
38331
 
38332
+ /*
38333
+ * UNDER REDUCED MOTION THE MARK HOLDS A WORKING POSE. Both animations stop,
38334
+ * and the mark shows the gesture's tuck and the twinkle's trough held still
38335
+ * on the tile's axes: the main spark at 0.8 and the companion at 0.7 and half
38336
+ * strength. It differs from the idle mark without moving, and the 16 pixel
38337
+ * grid drawing keeps its pixel centred tips, so it stays crisp at 16 and
38338
+ * 20 px. The pose is swapped in at once, never with a transition.
38339
+ */
38246
38340
  @media (prefers-reduced-motion: reduce) {
38247
38341
  .crewlet-thinking__mark [data-motion='turn'] {
38248
38342
  animation: none;
38343
+ transform: scale(0.8);
38344
+ }
38345
+
38346
+ .crewlet-thinking__mark [data-motion='twinkle'] {
38347
+ animation: none;
38348
+ transform: scale(0.7);
38349
+ opacity: 0.5;
38249
38350
  }
38250
38351
 
38251
38352
  .crewlet-thinking__status {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.65.1",
3
+ "version": "0.67.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.65.1",
46
- "@crewlethq/tokens": "0.65.1",
45
+ "@crewlethq/icons": "0.67.0",
46
+ "@crewlethq/tokens": "0.67.0",
47
47
  "prosemirror-commands": "1.7.2",
48
48
  "prosemirror-gapcursor": "1.4.1",
49
49
  "prosemirror-history": "1.5.1",
@@ -1,122 +0,0 @@
1
- /*
2
- * The assistant at work: the Assistant's mark, its blades turning, and a line
3
- * of status under a shimmer. See ThinkingIndicator.tsx for why it replaces a
4
- * caret and how it is announced.
5
- */
6
-
7
- /*
8
- * ONE LINE OF PROSE TALL, at every state: the mark alone, the mark with a
9
- * status line, and the line changing from one step to the next all keep the
10
- * same height, so the thread never moves while the assistant works.
11
- */
12
- .crewlet-thinking {
13
- display: flex;
14
- align-items: center;
15
- gap: var(--spacing-2);
16
- min-width: 0;
17
- min-height: calc(var(--font-size-compact) * var(--font-line-height-relaxed));
18
- font-family: var(--font-family-sans);
19
- font-size: var(--font-size-compact);
20
- line-height: var(--font-line-height-relaxed);
21
- }
22
-
23
- /*
24
- * THE BLADES TURN A QUARTER, THEN REST. The figure is four blades around a
25
- * core, the same after a quarter turn, so each round ends where the next
26
- * begins and the loop never shows a seam. One round is the breath period
27
- * (2.2s): the turn takes its first half on the in-out ease and the second
28
- * half is still, which reads as steady thought rather than as a spinner. The
29
- * core holds still, as the mark's own description promises.
30
- */
31
- .crewlet-thinking__mark [data-motion='turn'] {
32
- transform-box: view-box;
33
- transform-origin: 50% 50%;
34
- animation: crewlet-thinking-turn var(--motion-duration-breath) var(--motion-easing-in-out) infinite;
35
- }
36
-
37
- @keyframes crewlet-thinking-turn {
38
- 0% {
39
- transform: rotate(0deg);
40
- }
41
-
42
- 50%,
43
- 100% {
44
- transform: rotate(90deg);
45
- }
46
- }
47
-
48
- /*
49
- * THE SHIMMER IS A LIGHTER BAND CROSSING THE WORDS, the band Skeleton sweeps
50
- * across a placeholder, set in ink rather than in surface: the words are the
51
- * secondary ink at rest, so they read at every point of the sweep, and the
52
- * band is the primary ink. The gradient is clipped to the glyphs and is three
53
- * times the line's width, so the band crosses it rather than standing in it.
54
- */
55
- .crewlet-thinking__status {
56
- min-width: 0;
57
- overflow: hidden;
58
- color: var(--color-text-secondary);
59
- text-overflow: ellipsis;
60
- white-space: nowrap;
61
- animation: crewlet-thinking-enter var(--motion-duration-moderate) var(--motion-easing-out);
62
- }
63
-
64
- @supports (background-clip: text) or (-webkit-background-clip: text) {
65
- .crewlet-thinking__status {
66
- background-image: linear-gradient(
67
- 90deg,
68
- var(--color-text-secondary) 0%,
69
- var(--color-text-secondary) 40%,
70
- var(--color-text-primary) 50%,
71
- var(--color-text-secondary) 60%,
72
- var(--color-text-secondary) 100%
73
- );
74
- background-size: 300% 100%;
75
- -webkit-background-clip: text;
76
- background-clip: text;
77
- color: transparent;
78
- animation:
79
- crewlet-thinking-enter var(--motion-duration-moderate) var(--motion-easing-out),
80
- crewlet-thinking-shimmer var(--motion-duration-breath) linear infinite;
81
- }
82
- }
83
-
84
- @keyframes crewlet-thinking-shimmer {
85
- from {
86
- background-position: 100% 50%;
87
- }
88
-
89
- to {
90
- background-position: 0 50%;
91
- }
92
- }
93
-
94
- @keyframes crewlet-thinking-enter {
95
- from {
96
- opacity: 0;
97
- }
98
-
99
- to {
100
- opacity: 1;
101
- }
102
- }
103
-
104
- @media (prefers-reduced-motion: reduce) {
105
- .crewlet-thinking__mark [data-motion='turn'] {
106
- animation: none;
107
- }
108
-
109
- .crewlet-thinking__status {
110
- background-image: none;
111
- color: var(--color-text-secondary);
112
- animation: none;
113
- }
114
- }
115
-
116
- /* The system's own ink: a gradient clipped to text is dropped there. */
117
- @media (forced-colors: active) {
118
- .crewlet-thinking__status {
119
- background-image: none;
120
- color: CanvasText;
121
- }
122
- }
@@ -1,5 +1,5 @@
1
- import { schema, readMarkdown, writeMarkdown } from './chunk-QH6VYJ3X.js';
2
1
  import { richEditorLabels } from './chunk-CSQTDGTS.js';
2
+ import { schema, readMarkdown, writeMarkdown } from './chunk-QH6VYJ3X.js';
3
3
  import { safeHref, MARKDOWN_CALLOUT_TONES } from './chunk-BAKPMH3S.js';
4
4
  import { Toolbar } from './chunk-NR4CPM4T.js';
5
5
  import { FormField, Input } from './chunk-ETSF7SU6.js';