@crewlethq/ui 0.72.0 → 0.74.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 (81) hide show
  1. package/README.md +10 -2
  2. package/dist/AgentHandoffPanel/index.js +4 -4
  3. package/dist/ArrangeFrame/index.js +2 -2
  4. package/dist/ArrangeList/index.js +4 -4
  5. package/dist/ArtifactCard/index.js +4 -4
  6. package/dist/Checkbox/index.js +3 -3
  7. package/dist/ColorField/index.js +3 -3
  8. package/dist/Combobox/index.js +3 -3
  9. package/dist/CommandPalette/index.js +3 -3
  10. package/dist/CommentThread/index.js +4 -4
  11. package/dist/Composer/index.js +3 -3
  12. package/dist/ConfirmField/index.js +3 -3
  13. package/dist/DataGrid/index.js +4 -4
  14. package/dist/DataTable/index.js +4 -4
  15. package/dist/DataView/index.js +5 -5
  16. package/dist/DocTabsEditor/index.js +3 -3
  17. package/dist/{Editor-6PBP444G.js → Editor-WZ5L4BI2.js} +3 -3
  18. package/dist/Input/index.js +2 -2
  19. package/dist/ListInput/index.js +3 -3
  20. package/dist/PrincipalPicker/index.js +4 -4
  21. package/dist/ProposalCard/index.js +4 -4
  22. package/dist/ReadingPane/ReadingPane.d.ts +13 -3
  23. package/dist/ReadingPane/index.js +1 -1
  24. package/dist/{ReadingPane-5UOLPWY5.css → ReadingPane-VLYOWMCM.css} +5 -0
  25. package/dist/RecordChip/RecordChip.d.ts +46 -0
  26. package/dist/RecordChip/RecordChipList.d.ts +17 -0
  27. package/dist/RecordChip/index.d.ts +5 -0
  28. package/dist/RecordChip/index.js +6 -0
  29. package/dist/RecordChip-53J66RA6.css +184 -0
  30. package/dist/ResultTableCard/index.js +2 -2
  31. package/dist/RichEditor/index.js +1 -1
  32. package/dist/SelectionBar/index.js +2 -2
  33. package/dist/SheetColumnEditor/index.js +4 -4
  34. package/dist/SheetGrid/index.js +1 -1
  35. package/dist/SlideFilmstrip/index.js +1 -1
  36. package/dist/Switcher/index.js +3 -3
  37. package/dist/Table/Table.d.ts +29 -2
  38. package/dist/Table/index.js +1 -1
  39. package/dist/{Table-RUYMMWXT.css → Table-MN3FIA2O.css} +28 -0
  40. package/dist/TagsInput/index.js +2 -2
  41. package/dist/TimeRangePicker/index.js +3 -3
  42. package/dist/TimeWindowPicker/index.js +3 -3
  43. package/dist/ValueField/index.js +4 -4
  44. package/dist/{chunk-4HCYBQ6B.js → chunk-3EETQFAM.js} +1 -1
  45. package/dist/{chunk-OSMR6TSC.js → chunk-3EY5SEGH.js} +1 -1
  46. package/dist/{chunk-H6S6NRZL.js → chunk-4MVLED6E.js} +1 -1
  47. package/dist/{chunk-NATDVYEY.js → chunk-5OFRDX66.js} +1 -1
  48. package/dist/{chunk-EKZFB34W.js → chunk-6C6YK75K.js} +1 -1
  49. package/dist/chunk-75NQV4R4.js +72 -0
  50. package/dist/{chunk-BW6MQO2B.js → chunk-75S74BBK.js} +1 -1
  51. package/dist/{chunk-J7INWERB.js → chunk-7LSSYHOT.js} +1 -1
  52. package/dist/{chunk-I7YQNRTQ.js → chunk-ADSOY7UM.js} +1 -1
  53. package/dist/chunk-BFM5G2Z6.js +60 -0
  54. package/dist/{chunk-YAL6VBRK.js → chunk-BWAUL5MB.js} +2 -2
  55. package/dist/{chunk-HGWHIUZ5.js → chunk-BWFJB5JD.js} +1 -1
  56. package/dist/{chunk-LEM3ZY35.js → chunk-FURJVZCT.js} +1 -1
  57. package/dist/{chunk-52D5EFHL.js → chunk-H32JW6CZ.js} +2 -2
  58. package/dist/{chunk-AMYU5W2H.js → chunk-J5WWMC35.js} +2 -2
  59. package/dist/{chunk-LQXYAB2Q.js → chunk-JVII5264.js} +1 -1
  60. package/dist/{chunk-SO5SXSTP.js → chunk-JXJNX7QQ.js} +1 -1
  61. package/dist/{chunk-AWQQ5I34.js → chunk-KAA3GFTP.js} +2 -2
  62. package/dist/{chunk-F5QBQP63.js → chunk-LQWORB5B.js} +2 -2
  63. package/dist/{chunk-IXPC5D36.js → chunk-MFQPGMJT.js} +1 -1
  64. package/dist/{chunk-SPWBT7FE.js → chunk-NXNLAZPK.js} +1 -1
  65. package/dist/{chunk-FFWMTIMH.js → chunk-PBCNINMB.js} +1 -1
  66. package/dist/{chunk-ZAJHGDAW.js → chunk-Q7N2ATMC.js} +26 -7
  67. package/dist/{chunk-YZSG3JIY.js → chunk-TWJERLT3.js} +1 -1
  68. package/dist/{chunk-O4NQVNO5.js → chunk-W5AXJWOW.js} +1 -1
  69. package/dist/{chunk-FX7FDPCM.js → chunk-YGWIWDXE.js} +1 -1
  70. package/dist/{chunk-OFARYSWS.js → chunk-ZUBFVK6B.js} +1 -1
  71. package/dist/generated/index.d.ts +1 -0
  72. package/dist/generated/index.js +51 -50
  73. package/dist/index.js +51 -50
  74. package/dist/styles.css +222 -2
  75. package/package.json +3 -3
  76. package/dist/chunk-5DJMFRSZ.js +0 -58
  77. package/dist/{chunk-ABZC3NLM.js → chunk-ABGLGAFJ.js} +0 -0
  78. package/dist/{chunk-ZMML6NRS.js → chunk-ETSF7SU6.js} +1 -1
  79. package/dist/{chunk-5VMAJAVF.js → chunk-HEIOLITO.js} +1 -1
  80. package/dist/{chunk-V2EV56MY.js → chunk-L4HHWG4V.js} +1 -1
  81. package/dist/{chunk-I4IO56EY.js → chunk-PLNJEDGI.js} +1 -1
@@ -0,0 +1,184 @@
1
+ /*
2
+ * A record inside a sentence. The text's own size on the text's own
3
+ * baseline, so a line holding one is no taller than a line without: a quiet
4
+ * hairline, the inset ground, and the key in mono.
5
+ */
6
+ .crewlet-record-chip {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ gap: var(--spacing-1);
10
+ max-width: 100%;
11
+ margin: 0 1px;
12
+ padding: 0 var(--spacing-1);
13
+ border: 1px solid var(--color-border-default);
14
+ border-radius: var(--radius-xs);
15
+ background: var(--color-surface-inset);
16
+ color: var(--color-text-primary);
17
+ font: inherit;
18
+ font-weight: var(--font-weight-medium);
19
+ /*
20
+ * EXACTLY ONE OF THE LINE'S OWN LINES, hairline included: `1lh` is the
21
+ * line-height the chip inherits, and the two pixels are its top and bottom
22
+ * border. At the snug step a label chip stood 20.2px in a 19.5px line and
23
+ * moved every line it sat on by a pixel.
24
+ */
25
+ line-height: calc(1lh - 2px);
26
+ /*
27
+ * TOP, NOT BASELINE: a key chip's text is mono at the micro step under the
28
+ * parent's absolute leading, and on the baseline it sat about a pixel off
29
+ * its neighbours' and pushed its line to 20.5px. At the line's top it is
30
+ * the line's own height (19.5px in a 19.5px line) with the key within half
31
+ * a pixel of the surrounding baseline.
32
+ */
33
+ vertical-align: top;
34
+ cursor: pointer;
35
+ transition:
36
+ background var(--motion-duration-fast) var(--motion-easing-default),
37
+ border-color var(--motion-duration-fast) var(--motion-easing-default);
38
+ }
39
+
40
+ .crewlet-record-chip:hover,
41
+ .crewlet-record-chip[data-open] {
42
+ border-color: var(--color-border-hover);
43
+ background: var(--color-surface-hover);
44
+ }
45
+
46
+ /* The chip draws its own hairline, so the ring lands on it rather than standing off it. */
47
+ .crewlet-record-chip:focus-visible {
48
+ outline: 2px solid var(--color-focus);
49
+ outline-offset: var(--size-focus-ring-inset-offset);
50
+ }
51
+
52
+ .crewlet-record-chip--code .crewlet-record-chip__text {
53
+ font-family: var(--font-family-mono);
54
+ font-size: var(--font-size-xs);
55
+ }
56
+
57
+ .crewlet-record-chip__text {
58
+ min-width: 0;
59
+ overflow: hidden;
60
+ text-overflow: ellipsis;
61
+ white-space: nowrap;
62
+ }
63
+
64
+ .crewlet-record-chip__glyph {
65
+ display: inline-flex;
66
+ flex: none;
67
+ color: var(--color-text-tertiary);
68
+ }
69
+
70
+ /* THE PEEK: a name, a few facts and the way to it, at the panel's own inset. */
71
+ .crewlet-popover.crewlet-record-chip__peek {
72
+ display: flex;
73
+ flex-direction: column;
74
+ gap: var(--spacing-2);
75
+ max-height: min(420px, 70vh);
76
+ padding: var(--spacing-3);
77
+ font-size: var(--font-size-compact);
78
+ color: var(--color-text-primary);
79
+ }
80
+
81
+ .crewlet-record-chip__head {
82
+ display: flex;
83
+ align-items: flex-start;
84
+ gap: var(--spacing-2);
85
+ }
86
+
87
+ .crewlet-record-chip__head-glyph {
88
+ display: inline-flex;
89
+ flex: none;
90
+ align-items: center;
91
+ height: 1lh;
92
+ color: var(--color-text-tertiary);
93
+ }
94
+
95
+ .crewlet-record-chip__head-words {
96
+ display: flex;
97
+ flex-direction: column;
98
+ gap: 2px;
99
+ min-width: 0;
100
+ }
101
+
102
+ .crewlet-record-chip__name {
103
+ margin: 0;
104
+ font-weight: var(--font-weight-medium);
105
+ line-height: var(--font-line-height-normal);
106
+ }
107
+
108
+ .crewlet-record-chip__name-code {
109
+ font-family: var(--font-family-mono);
110
+ font-size: var(--font-size-xs);
111
+ font-weight: var(--font-weight-regular);
112
+ color: var(--color-text-secondary);
113
+ }
114
+
115
+ .crewlet-record-chip__meta {
116
+ margin: 0;
117
+ font-size: var(--font-size-xs);
118
+ color: var(--color-text-tertiary);
119
+ }
120
+
121
+ .crewlet-record-chip__body {
122
+ display: flex;
123
+ flex-direction: column;
124
+ gap: var(--spacing-2);
125
+ min-width: 0;
126
+ }
127
+
128
+ /* Utilities start on the text edge, a ghost button's padding pulled into the gutter. */
129
+ .crewlet-record-chip__actions {
130
+ display: flex;
131
+ flex-wrap: wrap;
132
+ align-items: center;
133
+ gap: var(--spacing-1);
134
+ margin-inline-start: calc(-1 * (var(--spacing-2) + 1px));
135
+ }
136
+
137
+ @media (prefers-reduced-motion: reduce) {
138
+ .crewlet-record-chip {
139
+ transition: none;
140
+ }
141
+ }
142
+
143
+ /* THE ALSO READ LINE: a caption-register lead and the chips after it, wrapping. */
144
+ .crewlet-record-chip-list {
145
+ display: flex;
146
+ flex-wrap: wrap;
147
+ align-items: baseline;
148
+ gap: var(--spacing-1) var(--spacing-2);
149
+ min-width: 0;
150
+ font-size: var(--font-size-xs);
151
+ line-height: var(--font-line-height-normal);
152
+ color: var(--color-text-secondary);
153
+ }
154
+
155
+ .crewlet-record-chip-list__label {
156
+ flex: none;
157
+ }
158
+
159
+ /*
160
+ * THE LIST IS THE WRAPPING ROW. Not `display: contents`, which older WebKit
161
+ * and Chromium drop from the accessibility tree along with the list's name,
162
+ * so "Also read, list, 3 items" was never said.
163
+ */
164
+ .crewlet-record-chip-list__items {
165
+ display: flex;
166
+ flex: 1 1 auto;
167
+ flex-wrap: wrap;
168
+ align-items: baseline;
169
+ gap: var(--spacing-1) var(--spacing-2);
170
+ min-width: 0;
171
+ margin: 0;
172
+ padding: 0;
173
+ list-style: none;
174
+ }
175
+
176
+ .crewlet-record-chip-list__item {
177
+ display: inline-flex;
178
+ min-width: 0;
179
+ max-width: 100%;
180
+ }
181
+
182
+ .crewlet-record-chip-list .crewlet-record-chip {
183
+ margin: 0;
184
+ }
@@ -1,5 +1,5 @@
1
- export { RESULT_TABLE_CARD_LABELS, RESULT_TABLE_COLLAPSED_ROWS, RESULT_TABLE_MAX_ROWS, ResultTableCard } from '../chunk-SO5SXSTP.js';
2
- import '../chunk-5DJMFRSZ.js';
1
+ export { RESULT_TABLE_CARD_LABELS, RESULT_TABLE_COLLAPSED_ROWS, RESULT_TABLE_MAX_ROWS, ResultTableCard } from '../chunk-JXJNX7QQ.js';
2
+ import '../chunk-75NQV4R4.js';
3
3
  import '../chunk-EHFQMY3B.js';
4
4
  import '../chunk-YNRKVY7X.js';
5
5
  import '../chunk-DTIW4CHZ.js';
@@ -1,4 +1,4 @@
1
- export { RichEditor, preloadRichEditor } from '../chunk-BW6MQO2B.js';
1
+ export { RichEditor, preloadRichEditor } from '../chunk-75S74BBK.js';
2
2
  export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-CSQTDGTS.js';
3
3
  import '../chunk-BAKPMH3S.js';
4
4
  import '../chunk-BPCY7ZID.js';
@@ -1,10 +1,10 @@
1
- export { SelectionBar } from '../chunk-V2EV56MY.js';
1
+ export { SelectionBar } from '../chunk-L4HHWG4V.js';
2
2
  import '../chunk-NR4CPM4T.js';
3
+ import '../chunk-2G355KDJ.js';
3
4
  import '../chunk-DGXZ635L.js';
4
5
  import '../chunk-OMV5W53A.js';
5
6
  import '../chunk-XSPCITPN.js';
6
7
  import '../chunk-H5XTJ7GJ.js';
7
8
  import '../chunk-NUZHC6MM.js';
8
- import '../chunk-2G355KDJ.js';
9
9
  import '../chunk-UT6CW3C7.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-AWQQ5I34.js';
1
+ export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-KAA3GFTP.js';
2
2
  import '../chunk-VK45YJLH.js';
3
3
  import '../chunk-FFMCMSJB.js';
4
4
  import '../chunk-7KHM2FZH.js';
@@ -10,12 +10,13 @@ import '../chunk-TYIHFDMP.js';
10
10
  import '../chunk-IPUEVTRJ.js';
11
11
  import '../chunk-EGMQURBR.js';
12
12
  import '../chunk-WIATRXEJ.js';
13
- import '../chunk-FFWMTIMH.js';
13
+ import '../chunk-PBCNINMB.js';
14
14
  import '../chunk-ANTAQAR4.js';
15
- import '../chunk-ZMML6NRS.js';
15
+ import '../chunk-ETSF7SU6.js';
16
16
  import '../chunk-PGCLHYVP.js';
17
17
  import '../chunk-MLDTLZAO.js';
18
18
  import '../chunk-PQADV6P6.js';
19
+ import '../chunk-2G355KDJ.js';
19
20
  import '../chunk-OQG4P5KU.js';
20
21
  import '../chunk-DGXZ635L.js';
21
22
  import '../chunk-OMV5W53A.js';
@@ -24,6 +25,5 @@ import '../chunk-XSPCITPN.js';
24
25
  import '../chunk-H5XTJ7GJ.js';
25
26
  import '../chunk-UAUP6XGK.js';
26
27
  import '../chunk-NUZHC6MM.js';
27
- import '../chunk-2G355KDJ.js';
28
28
  import '../chunk-UT6CW3C7.js';
29
29
  import '../chunk-ODEQTPFM.js';
@@ -13,6 +13,7 @@ import '../chunk-I33UIUZD.js';
13
13
  import '../chunk-WIATRXEJ.js';
14
14
  import '../chunk-BKP6XCAJ.js';
15
15
  import '../chunk-PZKHBB7D.js';
16
+ import '../chunk-2G355KDJ.js';
16
17
  import '../chunk-OQG4P5KU.js';
17
18
  import '../chunk-DGXZ635L.js';
18
19
  import '../chunk-OMV5W53A.js';
@@ -20,6 +21,5 @@ import '../chunk-XSPCITPN.js';
20
21
  import '../chunk-H5XTJ7GJ.js';
21
22
  import '../chunk-UAUP6XGK.js';
22
23
  import '../chunk-NUZHC6MM.js';
23
- import '../chunk-2G355KDJ.js';
24
24
  import '../chunk-UT6CW3C7.js';
25
25
  import '../chunk-ODEQTPFM.js';
@@ -2,6 +2,7 @@ export { SlideFilmstrip } from '../chunk-TPCBPGSB.js';
2
2
  import '../chunk-RMEBFYL7.js';
3
3
  import '../chunk-MPVMB2DV.js';
4
4
  import '../chunk-ANTAQAR4.js';
5
+ import '../chunk-2G355KDJ.js';
5
6
  import '../chunk-OQG4P5KU.js';
6
7
  import '../chunk-DGXZ635L.js';
7
8
  import '../chunk-OMV5W53A.js';
@@ -9,6 +10,5 @@ import '../chunk-XSPCITPN.js';
9
10
  import '../chunk-H5XTJ7GJ.js';
10
11
  import '../chunk-UAUP6XGK.js';
11
12
  import '../chunk-NUZHC6MM.js';
12
- import '../chunk-2G355KDJ.js';
13
13
  import '../chunk-UT6CW3C7.js';
14
14
  import '../chunk-ODEQTPFM.js';
@@ -1,12 +1,13 @@
1
- export { Switcher } from '../chunk-F5QBQP63.js';
1
+ export { Switcher } from '../chunk-LQWORB5B.js';
2
2
  import '../chunk-C667GCU7.js';
3
3
  import '../chunk-7KHM2FZH.js';
4
4
  import '../chunk-KHJIEPZV.js';
5
5
  import '../chunk-HBDA76EZ.js';
6
6
  import '../chunk-BRLZXYPA.js';
7
- import '../chunk-ZMML6NRS.js';
7
+ import '../chunk-ETSF7SU6.js';
8
8
  import '../chunk-PGCLHYVP.js';
9
9
  import '../chunk-PQADV6P6.js';
10
+ import '../chunk-2G355KDJ.js';
10
11
  import '../chunk-RTPQDNW3.js';
11
12
  import '../chunk-DGXZ635L.js';
12
13
  import '../chunk-OMV5W53A.js';
@@ -14,6 +15,5 @@ import '../chunk-XSPCITPN.js';
14
15
  import '../chunk-H5XTJ7GJ.js';
15
16
  import '../chunk-UAUP6XGK.js';
16
17
  import '../chunk-NUZHC6MM.js';
17
- import '../chunk-2G355KDJ.js';
18
18
  import '../chunk-UT6CW3C7.js';
19
19
  import '../chunk-ODEQTPFM.js';
@@ -24,7 +24,7 @@ export interface TableActionButton {
24
24
  }
25
25
  /** Which edge a column's cells stand against: `start` for words, `end` for figures. */
26
26
  export type TableColumnAlign = 'start' | 'end';
27
- export interface TableProps {
27
+ interface TableBaseProps {
28
28
  headers: ReactNode[];
29
29
  /** One array per row, in the header's own order. Cells may be any node. */
30
30
  data: ReactNode[][];
@@ -69,4 +69,31 @@ export interface TableProps {
69
69
  maxHeight?: string;
70
70
  className?: string;
71
71
  }
72
- export declare const Table: ({ headers, data, caption, captionHidden, emptyMessage, actionButton, maxHeight, align, footer, framed, className, }: TableProps) => import("react").JSX.Element;
72
+ /**
73
+ * How the columns share the width. NOWRAP NEEDS COLUMNS SIZED BY THEIR WORDS:
74
+ * under the grid's equal columns a cell held to one line runs into the next
75
+ * one, so the type offers `nowrap` only with `columns="content"`, where the
76
+ * column grows to hold it.
77
+ */
78
+ type TableColumnsProps = {
79
+ /** `even` (the default): the grid's equal columns. */
80
+ columns?: 'even' | undefined;
81
+ nowrap?: undefined;
82
+ } | {
83
+ /**
84
+ * `content`: each column takes the room its words ask for, as a result
85
+ * read beside an answer wants. A sentence wraps between words, a token
86
+ * longer than the table wraps anywhere rather than push the table
87
+ * sideways, and the figures (`end` columns) never wrap.
88
+ */
89
+ columns: 'content';
90
+ /**
91
+ * Columns whose cells never wrap, by index: a short token such as a
92
+ * task's key ("GOP-11"), which a line would otherwise break at its
93
+ * hyphen.
94
+ */
95
+ nowrap?: readonly boolean[] | undefined;
96
+ };
97
+ export type TableProps = TableBaseProps & TableColumnsProps;
98
+ export declare const Table: ({ headers, data, caption, captionHidden, emptyMessage, actionButton, maxHeight, align, footer, framed, columns, nowrap, className, }: TableProps) => import("react").JSX.Element;
99
+ export {};
@@ -1,3 +1,3 @@
1
- export { Table } from '../chunk-5DJMFRSZ.js';
1
+ export { Table } from '../chunk-75NQV4R4.js';
2
2
  import '../chunk-UT6CW3C7.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -216,3 +216,31 @@
216
216
  transition: none;
217
217
  }
218
218
  }
219
+
220
+ /*
221
+ * COLUMNS SIZED BY THEIR WORDS (`columns="content"`), for a result read
222
+ * beside an answer. Each column takes the room its words ask for, so a short
223
+ * key keeps its line and the longest text takes the most and wraps between
224
+ * words. A token longer than the table (a digest, a URL) wraps ANYWHERE: with
225
+ * `break-word` it did not, because under an auto layout a word's whole width
226
+ * is the column's minimum, and a sha256 in a 350px table pushed it to 606px.
227
+ * `anywhere` lets the minimum shrink to a character. The figures (`end`
228
+ * columns) and the nowrap columns never wrap, and the figures stay tabular.
229
+ */
230
+ .crewlet-table--content .crewlet-table__table {
231
+ table-layout: auto;
232
+ font-variant-numeric: tabular-nums;
233
+ }
234
+
235
+ .crewlet-table--content td:not(.crewlet-table__cell--nowrap, .crewlet-table__cell--end) {
236
+ overflow-wrap: anywhere;
237
+ }
238
+
239
+ .crewlet-table--content .crewlet-table__cell--end {
240
+ white-space: nowrap;
241
+ }
242
+
243
+ /* A column of short tokens (a task's key) keeps each on one line; only content columns offer it. */
244
+ .crewlet-table--content .crewlet-table__cell--nowrap {
245
+ white-space: nowrap;
246
+ }
@@ -1,11 +1,11 @@
1
- export { TagsInput } from '../chunk-5VMAJAVF.js';
1
+ export { TagsInput } from '../chunk-HEIOLITO.js';
2
2
  import '../chunk-7KHM2FZH.js';
3
3
  import '../chunk-I5OIKDX2.js';
4
4
  import '../chunk-WIATRXEJ.js';
5
+ import '../chunk-2G355KDJ.js';
5
6
  import '../chunk-OMV5W53A.js';
6
7
  import '../chunk-H5XTJ7GJ.js';
7
8
  import '../chunk-UAUP6XGK.js';
8
9
  import '../chunk-NUZHC6MM.js';
9
- import '../chunk-2G355KDJ.js';
10
10
  import '../chunk-UT6CW3C7.js';
11
11
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { TIME_RANGE_CUSTOM, TIME_RANGE_PICKER_LABELS, TimeRangePicker, timeRangeFieldKey, timeRangeProblem } from '../chunk-H6S6NRZL.js';
1
+ export { TIME_RANGE_CUSTOM, TIME_RANGE_PICKER_LABELS, TimeRangePicker, timeRangeFieldKey, timeRangeProblem } from '../chunk-4MVLED6E.js';
2
2
  import '../chunk-C667GCU7.js';
3
3
  import '../chunk-BPCY7ZID.js';
4
4
  import '../chunk-25AZQ3GZ.js';
@@ -6,10 +6,11 @@ import '../chunk-TYIHFDMP.js';
6
6
  import '../chunk-IPUEVTRJ.js';
7
7
  import '../chunk-EGMQURBR.js';
8
8
  import '../chunk-WIATRXEJ.js';
9
- import '../chunk-ZMML6NRS.js';
9
+ import '../chunk-ETSF7SU6.js';
10
10
  import '../chunk-PGCLHYVP.js';
11
11
  import '../chunk-MLDTLZAO.js';
12
12
  import '../chunk-PQADV6P6.js';
13
+ import '../chunk-2G355KDJ.js';
13
14
  import '../chunk-OQG4P5KU.js';
14
15
  import '../chunk-DGXZ635L.js';
15
16
  import '../chunk-OMV5W53A.js';
@@ -18,6 +19,5 @@ import '../chunk-XSPCITPN.js';
18
19
  import '../chunk-H5XTJ7GJ.js';
19
20
  import '../chunk-UAUP6XGK.js';
20
21
  import '../chunk-NUZHC6MM.js';
21
- import '../chunk-2G355KDJ.js';
22
22
  import '../chunk-UT6CW3C7.js';
23
23
  import '../chunk-ODEQTPFM.js';
@@ -1,11 +1,12 @@
1
- export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-I7YQNRTQ.js';
1
+ export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-ADSOY7UM.js';
2
2
  import '../chunk-VK45YJLH.js';
3
3
  import '../chunk-7KHM2FZH.js';
4
4
  import '../chunk-EE3DJMSQ.js';
5
5
  import '../chunk-KHJIEPZV.js';
6
- import '../chunk-ZMML6NRS.js';
6
+ import '../chunk-ETSF7SU6.js';
7
7
  import '../chunk-PGCLHYVP.js';
8
8
  import '../chunk-PQADV6P6.js';
9
+ import '../chunk-2G355KDJ.js';
9
10
  import '../chunk-DGXZ635L.js';
10
11
  import '../chunk-OMV5W53A.js';
11
12
  import '../chunk-2YTOOH3A.js';
@@ -13,6 +14,5 @@ import '../chunk-XSPCITPN.js';
13
14
  import '../chunk-H5XTJ7GJ.js';
14
15
  import '../chunk-UAUP6XGK.js';
15
16
  import '../chunk-NUZHC6MM.js';
16
- import '../chunk-2G355KDJ.js';
17
17
  import '../chunk-UT6CW3C7.js';
18
18
  import '../chunk-ODEQTPFM.js';
@@ -1,15 +1,15 @@
1
- export { REFERENCE_NAME_PATTERN, ValueField, completeReference, isWholeReference, rankReferences, referenceAt, urlSchemeOf } from '../chunk-YAL6VBRK.js';
1
+ export { REFERENCE_NAME_PATTERN, ValueField, completeReference, isWholeReference, rankReferences, referenceAt, urlSchemeOf } from '../chunk-BWAUL5MB.js';
2
2
  import '../chunk-VK45YJLH.js';
3
- import '../chunk-OFARYSWS.js';
3
+ import '../chunk-ZUBFVK6B.js';
4
4
  import '../chunk-7KHM2FZH.js';
5
- import '../chunk-ZMML6NRS.js';
5
+ import '../chunk-ETSF7SU6.js';
6
6
  import '../chunk-PGCLHYVP.js';
7
7
  import '../chunk-PQADV6P6.js';
8
+ import '../chunk-2G355KDJ.js';
8
9
  import '../chunk-OMV5W53A.js';
9
10
  import '../chunk-2YTOOH3A.js';
10
11
  import '../chunk-H5XTJ7GJ.js';
11
12
  import '../chunk-UAUP6XGK.js';
12
13
  import '../chunk-NUZHC6MM.js';
13
- import '../chunk-2G355KDJ.js';
14
14
  import '../chunk-UT6CW3C7.js';
15
15
  import '../chunk-ODEQTPFM.js';
@@ -4,7 +4,7 @@ import { RelativeTime } from './chunk-EJNJMHQG.js';
4
4
  import { Card } from './chunk-4AUTALJA.js';
5
5
  import { AvatarStack } from './chunk-BKP6XCAJ.js';
6
6
  import { ArtifactKindGround } from './chunk-NHLNHH4J.js';
7
- import { Checkbox } from './chunk-FFWMTIMH.js';
7
+ import { Checkbox } from './chunk-PBCNINMB.js';
8
8
  import { ArtifactAccessGlyph } from './chunk-DOY3KC6I.js';
9
9
  import { ArtifactKindGlyph } from './chunk-RSKW25Y5.js';
10
10
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
@@ -1,7 +1,7 @@
1
1
  import { RefusalStrip, ReceiptStrip } from './chunk-ZWCK4N4L.js';
2
2
  import { ChangeList } from './chunk-WQRSZMN4.js';
3
3
  import { StatusCard } from './chunk-NTQPJJAN.js';
4
- import { Checkbox } from './chunk-FFWMTIMH.js';
4
+ import { Checkbox } from './chunk-PBCNINMB.js';
5
5
  import { Disclosure } from './chunk-222VILSP.js';
6
6
  import { Button } from './chunk-DGXZ635L.js';
7
7
  import { Spinner } from './chunk-XSPCITPN.js';
@@ -1,7 +1,7 @@
1
1
  import { Modal } from './chunk-C667GCU7.js';
2
2
  import { Callout } from './chunk-BPCY7ZID.js';
3
3
  import { SegmentedControl } from './chunk-TYIHFDMP.js';
4
- import { FormField, Input } from './chunk-ZMML6NRS.js';
4
+ import { FormField, Input } from './chunk-ETSF7SU6.js';
5
5
  import { Button } from './chunk-DGXZ635L.js';
6
6
  import { useState } from 'react';
7
7
  import { ClockGlyph } from '@crewlethq/icons/glyphs';
@@ -1,5 +1,5 @@
1
1
  import { Kbd } from './chunk-ANTAQAR4.js';
2
- import { Textarea } from './chunk-ZMML6NRS.js';
2
+ import { Textarea } from './chunk-ETSF7SU6.js';
3
3
  import { isComposing } from './chunk-H5XTJ7GJ.js';
4
4
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,6 +1,6 @@
1
1
  import { Timeline } from './chunk-4MJN2KN6.js';
2
2
  import { Section } from './chunk-WFCWPXJN.js';
3
- import { Composer } from './chunk-NATDVYEY.js';
3
+ import { Composer } from './chunk-5OFRDX66.js';
4
4
  import { Disclosure } from './chunk-222VILSP.js';
5
5
  import { ArtifactPanel } from './chunk-FFGEJUAP.js';
6
6
  import { Button } from './chunk-DGXZ635L.js';
@@ -0,0 +1,72 @@
1
+ import { VisuallyHidden } from './chunk-UT6CW3C7.js';
2
+ import { cx } from './chunk-ODEQTPFM.js';
3
+ import './Table-MN3FIA2O.css';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var Table = ({
7
+ headers,
8
+ data,
9
+ caption,
10
+ captionHidden = false,
11
+ emptyMessage = "No data available",
12
+ actionButton,
13
+ maxHeight,
14
+ align,
15
+ footer,
16
+ framed = true,
17
+ columns = "even",
18
+ nowrap,
19
+ className = ""
20
+ }) => {
21
+ const columnCount = Math.max(1, headers.length);
22
+ const held = columns === "content" ? nowrap : void 0;
23
+ const edge = (index) => cx(align?.[index] === "end" && "crewlet-table__cell--end", held?.[index] === true && "crewlet-table__cell--nowrap") || void 0;
24
+ return /* @__PURE__ */ jsxs(
25
+ "div",
26
+ {
27
+ className: cx(
28
+ "crewlet-table",
29
+ !framed && "crewlet-table--flush",
30
+ columns === "content" && "crewlet-table--content",
31
+ className
32
+ ),
33
+ children: [
34
+ /* @__PURE__ */ jsx(
35
+ "div",
36
+ {
37
+ className: "crewlet-table__container",
38
+ style: (
39
+ // Only the height: the stylesheet scrolls both axes unconditionally,
40
+ // because with `overflow-x: auto` declared beside it a `visible`
41
+ // vertical axis was never reachable. See Table.css.
42
+ maxHeight ? { "--crewlet-table-max-height": maxHeight } : void 0
43
+ ),
44
+ children: /* @__PURE__ */ jsxs("table", { className: "crewlet-table__table", children: [
45
+ caption != null && (captionHidden ? /* @__PURE__ */ jsx("caption", { children: /* @__PURE__ */ jsx(VisuallyHidden, { children: caption }) }) : /* @__PURE__ */ jsx("caption", { className: "crewlet-table__caption", children: caption })),
46
+ /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsx("tr", { className: "crewlet-table__header", children: headers.map((header, index) => (
47
+ // The index is the key because a header is a position: the
48
+ // columns of one table do not reorder between renders.
49
+ /* @__PURE__ */ jsx("th", { scope: "col", className: edge(index), children: header }, index)
50
+ )) }) }),
51
+ /* @__PURE__ */ jsx("tbody", { children: data && data.length > 0 ? data.map((row, rowIndex) => /* @__PURE__ */ jsx("tr", { className: "crewlet-table__row", children: row.map((cell, cellIndex) => /* @__PURE__ */ jsx("td", { className: edge(cellIndex), children: cell }, cellIndex)) }, rowIndex)) : /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { className: "crewlet-table__empty", colSpan: columnCount, children: emptyMessage }) }) }),
52
+ footer && footer.length > 0 ? /* @__PURE__ */ jsx("tfoot", { children: /* @__PURE__ */ jsx("tr", { className: "crewlet-table__footer", children: footer.map(
53
+ (cell, index) => index === 0 ? /* @__PURE__ */ jsx("th", { scope: "row", className: edge(index), children: cell }, index) : /* @__PURE__ */ jsx("td", { className: edge(index), children: cell }, index)
54
+ ) }) }) : null
55
+ ] })
56
+ }
57
+ ),
58
+ actionButton && /* @__PURE__ */ jsx(
59
+ "button",
60
+ {
61
+ type: "button",
62
+ className: "crewlet-table__action-btn",
63
+ onClick: actionButton.onClick,
64
+ children: /* @__PURE__ */ jsx("span", { className: "crewlet-table__action-text", children: actionButton.label })
65
+ }
66
+ )
67
+ ]
68
+ }
69
+ );
70
+ };
71
+
72
+ export { Table };
@@ -9,7 +9,7 @@ import { jsx } from 'react/jsx-runtime';
9
9
  var engine = null;
10
10
  var loading = null;
11
11
  function loadEngine() {
12
- loading ??= import('./Editor-6PBP444G.js').then(
12
+ loading ??= import('./Editor-WZ5L4BI2.js').then(
13
13
  (module) => {
14
14
  engine = module.Editor;
15
15
  return engine;
@@ -1,5 +1,5 @@
1
1
  import { normalizeHex, parseColourInput } from './chunk-7W3LYIOC.js';
2
- import { FormField, Input, InputAffix } from './chunk-ZMML6NRS.js';
2
+ import { FormField, Input, InputAffix } from './chunk-ETSF7SU6.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './ColorField-2OIOWT3Z.css';
5
5
  import { useId, useState } from 'react';
@@ -1,7 +1,7 @@
1
1
  import { Select } from './chunk-VK45YJLH.js';
2
2
  import { today, shiftMonth, CalendarGrid, compareDays } from './chunk-EE3DJMSQ.js';
3
3
  import { Popover } from './chunk-KHJIEPZV.js';
4
- import { Input } from './chunk-ZMML6NRS.js';
4
+ import { Input } from './chunk-ETSF7SU6.js';
5
5
  import { Button } from './chunk-DGXZ635L.js';
6
6
  import { isComposing } from './chunk-H5XTJ7GJ.js';
7
7
  import { IconButton } from './chunk-UAUP6XGK.js';