@crewlethq/ui 0.40.0 → 0.41.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.
- package/README.md +8 -0
- package/dist/AppShell/AppShell.d.ts +72 -4
- package/dist/AppShell/index.d.ts +2 -2
- package/dist/AppShell/index.js +1 -1
- package/dist/{AppShell-NPSWZ3XW.css → AppShell-V3TAAYL3.css} +90 -4
- package/dist/DataView/index.js +2 -2
- package/dist/{chunk-KKNHMXTE.js → chunk-SCPEMLLY.js} +70 -19
- package/dist/generated/index.js +18 -18
- package/dist/index.js +18 -18
- package/dist/styles.css +91 -5
- package/package.json +3 -3
- package/dist/{chunk-QRKT4XTT.js → chunk-6QNN3WIT.js} +1 -1
package/README.md
CHANGED
|
@@ -204,6 +204,14 @@ places:
|
|
|
204
204
|
- A surface that pans or zooms dispatches `LAYER_REPOSITION_EVENT` on its host
|
|
205
205
|
when the content beneath it moves, and every panel anchored inside follows.
|
|
206
206
|
|
|
207
|
+
## Changes in 0.41.0
|
|
208
|
+
|
|
209
|
+
**The rail's head carries a status** (`AppShell.Rail` `status`, drawn with `AppShell.RailStatus`). An application's own state, such as its engine's, stands compact at the end of the head's line, beside the name: a status dot and, when something stands against it, a count in the foot row's inks (the warning ink with its mark for alarms). The state's words are the status's name and title rather than a line of the rail ("Engine serving, 1 alarm"), so the count is read once, in words. A status that opens a panel is the panel's trigger, as a foot row is (`aria-haspopup`, `aria-expanded` and `aria-controls` reach its button, and a `Popover` anchors to it), and `label` names it where a press does something the state does not say ("Engine signed out. Sign in"). A status nothing presses is a statement with no place in the tab order. It reserves the width of a dot and a two-figure count, and a `BrandLockup` beside it gives up its end inset to the head's gap, so the name truncates at one place whatever the count says, it is a 24px target each way with its focus ring inside its box, and it ends on the nav's gutter, where every row's background ends. It stands in the drawer's head the same way. The foot's doc now names it the place for what a reader reaches for rarely.
|
|
210
|
+
|
|
211
|
+
## Changes in 0.40.1
|
|
212
|
+
|
|
213
|
+
**The rail's foot stands on the compact step.** What a reader reaches for rarely (a settings link, a status row, who they are) takes less of the rail's height: the foot's rows are 26px (`--size-control-sm`, through `--crewlet-rail-foot-row`) where they were the nav's 30px, the foot's gap is 2px and its inset 4px where they were 4px and 8px, and the account row spends 2px around its name and detail where it spent 8px. A foot of Settings, an engine row and the account row is 101px tall where it was 133px. Only heights change: every row keeps its order, its columns, its glyphs and its words, the rows above the foot keep their 30px step, and every target still clears 24px, with the targets of neighbouring rows meeting across the gap.
|
|
214
|
+
|
|
207
215
|
## Changes in 0.40.0
|
|
208
216
|
|
|
209
217
|
The engine dashboard's own lists, page parts and navigation pieces, moved into the kit so every application draws them from one place.
|
|
@@ -103,6 +103,7 @@ export declare function AppShell({ sidebar, topbar, banner, footer, mainId, main
|
|
|
103
103
|
export declare namespace AppShell {
|
|
104
104
|
var Rail: typeof AppShellRail;
|
|
105
105
|
var RailRow: import("react").ForwardRefExoticComponent<AppShellRailRowProps & import("react").RefAttributes<HTMLElement>>;
|
|
106
|
+
var RailStatus: import("react").ForwardRefExoticComponent<AppShellRailStatusProps & import("react").RefAttributes<HTMLElement>>;
|
|
106
107
|
var Topbar: typeof AppShellTopbar;
|
|
107
108
|
var Toggle: typeof AppShellToggle;
|
|
108
109
|
var AccountRow: typeof import("./AccountRow.js").AccountRow;
|
|
@@ -122,16 +123,24 @@ export interface AppShellRailProps {
|
|
|
122
123
|
*/
|
|
123
124
|
search?: ReactNode;
|
|
124
125
|
/**
|
|
125
|
-
*
|
|
126
|
-
* `<AppShell.
|
|
127
|
-
*
|
|
126
|
+
* A compact status at the end of the head's line, beside the name the head
|
|
127
|
+
* carries: an `<AppShell.RailStatus>`, the application's own state in a
|
|
128
|
+
* dot and a count. It takes its own width, so the name keeps the rest and
|
|
129
|
+
* truncates there, and it stands in the drawer's head the same way.
|
|
130
|
+
*/
|
|
131
|
+
status?: ReactNode;
|
|
132
|
+
/**
|
|
133
|
+
* The foot: what a reader reaches for rarely, such as a settings link and
|
|
134
|
+
* their own account row. An `<AppShell.RailRow>` puts a line there on the
|
|
135
|
+
* rail's own insets, so its mark lands on the line every nav glyph above it
|
|
136
|
+
* sits on. A state the application reports belongs in `status`, compact.
|
|
128
137
|
*/
|
|
129
138
|
footer?: ReactNode;
|
|
130
139
|
className?: string | undefined;
|
|
131
140
|
children?: ReactNode;
|
|
132
141
|
}
|
|
133
142
|
/** The rail's three regions: a head, a scrolling middle, and a foot. */
|
|
134
|
-
export declare function AppShellRail({ header, search, footer, className, children }: AppShellRailProps): import("react").JSX.Element;
|
|
143
|
+
export declare function AppShellRail({ header, search, status, footer, className, children }: AppShellRailProps): import("react").JSX.Element;
|
|
135
144
|
/**
|
|
136
145
|
* A figure at the end of a row in the foot, and what it counts.
|
|
137
146
|
*
|
|
@@ -262,6 +271,65 @@ export type AppShellRailRowProps = StaticRailRowProps | ActionRailRowProps;
|
|
|
262
271
|
* says whether it is open.
|
|
263
272
|
*/
|
|
264
273
|
export declare const AppShellRailRow: import("react").ForwardRefExoticComponent<AppShellRailRowProps & import("react").RefAttributes<HTMLElement>>;
|
|
274
|
+
/** What the head's status says, whether or not it is a control. */
|
|
275
|
+
interface RailStatusContent {
|
|
276
|
+
/** The state's mark: a status dot. The status draws no words, so the mark and the count are what is seen. */
|
|
277
|
+
icon: ReactNode;
|
|
278
|
+
/**
|
|
279
|
+
* The state in words, "Engine serving". Not drawn: it is the status's name,
|
|
280
|
+
* read by assistive technology and shown as its title, with the count's
|
|
281
|
+
* words after it ("Engine serving, 1 alarm").
|
|
282
|
+
*/
|
|
283
|
+
children: string;
|
|
284
|
+
/** How many of something stands against the state, drawn as a row's count is. */
|
|
285
|
+
count?: RailRowCount | undefined;
|
|
286
|
+
/** A mark after the count, for a state a press resolves: the key beside "sign in". */
|
|
287
|
+
trailing?: ReactNode;
|
|
288
|
+
className?: string | undefined;
|
|
289
|
+
}
|
|
290
|
+
/** A status the head states and nothing presses. */
|
|
291
|
+
export interface StaticRailStatusProps extends RailStatusContent {
|
|
292
|
+
onClick?: undefined;
|
|
293
|
+
label?: undefined;
|
|
294
|
+
'aria-expanded'?: undefined;
|
|
295
|
+
'aria-haspopup'?: undefined;
|
|
296
|
+
'aria-controls'?: undefined;
|
|
297
|
+
}
|
|
298
|
+
/** A status that opens something: the engine's panel. */
|
|
299
|
+
export interface ActionRailStatusProps extends RailStatusContent {
|
|
300
|
+
onClick: MouseEventHandler<HTMLButtonElement>;
|
|
301
|
+
/**
|
|
302
|
+
* Names the control where the state and its count are not what pressing it
|
|
303
|
+
* does ("Engine signed out. Sign in"). It replaces that name, and the title.
|
|
304
|
+
*/
|
|
305
|
+
label?: string | undefined;
|
|
306
|
+
/** Whether the panel it opens is open, as a `Popover` or a `Menu` trigger passes it. */
|
|
307
|
+
'aria-expanded'?: boolean | undefined;
|
|
308
|
+
/** What it opens. */
|
|
309
|
+
'aria-haspopup'?: AriaAttributes['aria-haspopup'];
|
|
310
|
+
/** The panel it opens, while it is open. */
|
|
311
|
+
'aria-controls'?: string | undefined;
|
|
312
|
+
}
|
|
313
|
+
export type AppShellRailStatusProps = StaticRailStatusProps | ActionRailStatusProps;
|
|
314
|
+
/**
|
|
315
|
+
* The application's state, compact, at the end of the rail head's line.
|
|
316
|
+
*
|
|
317
|
+
* A FOOT ROW'S MEANING IN A DOT AND A COUNT. The state's words are its name
|
|
318
|
+
* and its title rather than a line of the rail ("Engine serving, 1 alarm"),
|
|
319
|
+
* so a sighted reader reads the dot and the count, and hovers for the words,
|
|
320
|
+
* and a screen reader is told what a foot row would have told it. The count
|
|
321
|
+
* is the row's own (`RailRowCount`), in the same inks.
|
|
322
|
+
*
|
|
323
|
+
* IT TAKES A FIXED FLOOR OF WIDTH, a dot and a two-figure count, so the
|
|
324
|
+
* name beside it truncates at one place whatever the count says: the name
|
|
325
|
+
* does not lose a character when an alarm is raised. A count wider than the
|
|
326
|
+
* floor still grows the status rather than being cut.
|
|
327
|
+
*
|
|
328
|
+
* A STATUS THAT OPENS A PANEL IS ITS TRIGGER, as the foot's row is: the
|
|
329
|
+
* element goes to `ref` and the popup attributes reach the button, so a
|
|
330
|
+
* `Popover` anchors to it and it says whether the panel is open.
|
|
331
|
+
*/
|
|
332
|
+
export declare const AppShellRailStatus: import("react").ForwardRefExoticComponent<AppShellRailStatusProps & import("react").RefAttributes<HTMLElement>>;
|
|
265
333
|
export interface AppShellToggleProps {
|
|
266
334
|
className?: string | undefined;
|
|
267
335
|
}
|
package/dist/AppShell/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '../HitArea/HitArea.css';
|
|
2
2
|
import './AppShell.css';
|
|
3
|
-
export { AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from './AppShell.js';
|
|
3
|
+
export { AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from './AppShell.js';
|
|
4
4
|
export { AccountRow } from './AccountRow.js';
|
|
5
5
|
export type { AccountRowMenu, AccountRowProps } from './AccountRow.js';
|
|
6
|
-
export type { ActionRailRowProps, AppShellContextValue, AppShellProps, AppShellRailProps, AppShellRailRowProps, AppShellToggleProps, AppShellTopbarProps, RailRowCount, StaticRailRowProps, } from './AppShell.js';
|
|
6
|
+
export type { ActionRailRowProps, ActionRailStatusProps, AppShellContextValue, AppShellProps, AppShellRailProps, AppShellRailRowProps, AppShellRailStatusProps, AppShellToggleProps, AppShellTopbarProps, RailRowCount, StaticRailRowProps, StaticRailStatusProps, } from './AppShell.js';
|
package/dist/AppShell/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-
|
|
1
|
+
export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-SCPEMLLY.js';
|
|
2
2
|
import '../chunk-RTPQDNW3.js';
|
|
3
3
|
import '../chunk-D6FEHY5G.js';
|
|
4
4
|
import '../chunk-OMV5W53A.js';
|
|
@@ -155,6 +155,68 @@
|
|
|
155
155
|
min-width: 0;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
+
/*
|
|
159
|
+
* THE HEAD'S STATUS, at the end of the name's line (`AppShell.RailStatus`):
|
|
160
|
+
* the application's state as a dot and a count, its words in its name and
|
|
161
|
+
* title. It ends on the nav's gutter, where every row's background ends, and
|
|
162
|
+
* it reserves the width of a dot and a two-figure count, so the name beside
|
|
163
|
+
* it truncates at one place whether the engine is healthy or has alarms.
|
|
164
|
+
*/
|
|
165
|
+
.crewlet-app-shell__rail-status {
|
|
166
|
+
display: flex;
|
|
167
|
+
flex: none;
|
|
168
|
+
align-items: center;
|
|
169
|
+
justify-content: flex-end;
|
|
170
|
+
min-width: calc(var(--size-target-min) * 2 + var(--spacing-1));
|
|
171
|
+
margin-inline-end: var(--size-nav-gutter);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* A lockup beside a status gives up its end inset: the head's gap parts the
|
|
175
|
+
two, and the inset is what kept a lockup alone on its line off the edge. */
|
|
176
|
+
.crewlet-app-shell__rail-head:has(> .crewlet-app-shell__rail-status) > .crewlet-brand {
|
|
177
|
+
padding-inline-end: 0;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* The dot and the count on one compact target: the 24px floor each way. */
|
|
181
|
+
.crewlet-app-shell__rail-status-mark {
|
|
182
|
+
display: inline-flex;
|
|
183
|
+
align-items: center;
|
|
184
|
+
justify-content: center;
|
|
185
|
+
gap: calc(var(--spacing-1) + var(--spacing-1) / 2);
|
|
186
|
+
min-width: var(--size-target-min);
|
|
187
|
+
min-height: var(--size-target-min);
|
|
188
|
+
margin: 0;
|
|
189
|
+
padding: 0 var(--spacing-1);
|
|
190
|
+
border: 0;
|
|
191
|
+
border-radius: var(--radius-md);
|
|
192
|
+
background: transparent;
|
|
193
|
+
color: var(--color-text-secondary);
|
|
194
|
+
font: inherit;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.crewlet-app-shell__rail-status-icon,
|
|
198
|
+
.crewlet-app-shell__rail-status-trailing {
|
|
199
|
+
display: inline-flex;
|
|
200
|
+
align-items: center;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.crewlet-app-shell__rail-status-mark--action {
|
|
204
|
+
cursor: pointer;
|
|
205
|
+
transition: background var(--motion-duration-fast) var(--motion-easing-default);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/* Open is pointed at, as the foot's row draws it: the lift stays while the panel is open. */
|
|
209
|
+
.crewlet-app-shell__rail-status-mark--action:hover,
|
|
210
|
+
.crewlet-app-shell__rail-status-mark--action[aria-expanded='true'] {
|
|
211
|
+
background: var(--color-surface-hover);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/* Inside its own box, so the ring is never cut by the head or the drawer's edge. */
|
|
215
|
+
.crewlet-app-shell__rail-status-mark--action:focus-visible {
|
|
216
|
+
outline: 2px solid var(--color-focus);
|
|
217
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
218
|
+
}
|
|
219
|
+
|
|
158
220
|
/*
|
|
159
221
|
* THE RAIL'S FIELD ON THE NAV'S COLUMNS. It stands on the nav's gutter, so
|
|
160
222
|
* its right edge is where every row's background ends; and its glyph stands
|
|
@@ -171,14 +233,22 @@
|
|
|
171
233
|
}
|
|
172
234
|
|
|
173
235
|
/* The same gutter the nav takes, so what the foot says lines up with the rows
|
|
174
|
-
above it rather than sitting further out.
|
|
236
|
+
above it rather than sitting further out.
|
|
237
|
+
|
|
238
|
+
THE FOOT IS THE COMPACT STEP. It holds what a reader reaches for rarely (a
|
|
239
|
+
settings link, the engine's state, who they are), so its rows stand on the
|
|
240
|
+
small control step (`--crewlet-rail-foot-row`, 26px, never under the 24px
|
|
241
|
+
target) on a half-step gap and a one-step inset, where the nav above keeps
|
|
242
|
+
its 30px rows. Only heights change: every row keeps its order, columns,
|
|
243
|
+
glyphs and words. */
|
|
175
244
|
.crewlet-app-shell__rail-foot {
|
|
176
|
-
--crewlet-rail-foot-gap: var(--spacing-1);
|
|
245
|
+
--crewlet-rail-foot-gap: calc(var(--spacing-1) / 2);
|
|
246
|
+
--crewlet-rail-foot-row: var(--size-control-sm);
|
|
177
247
|
flex: none;
|
|
178
248
|
display: flex;
|
|
179
249
|
flex-direction: column;
|
|
180
250
|
gap: var(--crewlet-rail-foot-gap);
|
|
181
|
-
padding: var(--spacing-
|
|
251
|
+
padding: var(--spacing-1) var(--size-nav-gutter);
|
|
182
252
|
border-top: 1px solid var(--color-border-default);
|
|
183
253
|
}
|
|
184
254
|
|
|
@@ -279,6 +349,14 @@
|
|
|
279
349
|
min-width: 14px;
|
|
280
350
|
}
|
|
281
351
|
|
|
352
|
+
/* The foot's own step (see `.crewlet-app-shell__rail-foot`), for its rows and
|
|
353
|
+
for a navigation dropped into it, whose rows keep the rail's columns. */
|
|
354
|
+
.crewlet-app-shell__rail-foot > .crewlet-app-shell__rail-row--action:not(.crewlet-app-shell__rail-row--block),
|
|
355
|
+
.crewlet-app-shell__rail-foot > .crewlet-btn,
|
|
356
|
+
.crewlet-app-shell__rail-foot .crewlet-nav-item__row {
|
|
357
|
+
min-height: var(--crewlet-rail-foot-row);
|
|
358
|
+
}
|
|
359
|
+
|
|
282
360
|
/*
|
|
283
361
|
* OPEN IS POINTED AT. The row a panel is open from keeps the hover's lift for
|
|
284
362
|
* as long as the panel is open, drawn from `aria-expanded` so the picture and
|
|
@@ -684,7 +762,8 @@
|
|
|
684
762
|
.crewlet-app-shell__rail,
|
|
685
763
|
.crewlet-app-shell__rail[data-open='true'],
|
|
686
764
|
.crewlet-app-shell__rail-row--action,
|
|
687
|
-
.crewlet-app-shell__rail-foot > .crewlet-btn
|
|
765
|
+
.crewlet-app-shell__rail-foot > .crewlet-btn,
|
|
766
|
+
.crewlet-app-shell__rail-status-mark--action {
|
|
688
767
|
transition: none;
|
|
689
768
|
}
|
|
690
769
|
}
|
|
@@ -731,9 +810,16 @@
|
|
|
731
810
|
* whatever size of badge a caller hands the row, it is centred where a glyph
|
|
732
811
|
* is, and the row takes the nav row's pad and its glyph-to-word gap.
|
|
733
812
|
*/
|
|
813
|
+
.crewlet-app-shell__rail-foot .crewlet-account-row {
|
|
814
|
+
--crewlet-account-row-pad: var(--spacing-0);
|
|
815
|
+
}
|
|
816
|
+
|
|
734
817
|
.crewlet-app-shell__rail-foot .crewlet-account-row__who {
|
|
735
818
|
--crewlet-hit-area-block-start: calc(var(--crewlet-rail-foot-gap) / 2 + var(--crewlet-account-row-pad));
|
|
736
819
|
gap: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
820
|
+
/* On the foot's compact step: the two lines of name and detail with half a
|
|
821
|
+
step above and below them, which still clears the avatar. */
|
|
822
|
+
padding-block: calc(var(--spacing-1) / 2);
|
|
737
823
|
padding-inline-start: var(--size-nav-row-pad);
|
|
738
824
|
}
|
|
739
825
|
|
package/dist/DataView/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-
|
|
1
|
+
export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-6QNN3WIT.js';
|
|
2
2
|
import '../chunk-HOXGBLEY.js';
|
|
3
3
|
import '../chunk-UB6MLXUL.js';
|
|
4
4
|
import '../chunk-FXBGEANQ.js';
|
|
@@ -6,9 +6,9 @@ import '../chunk-STJ7QBC3.js';
|
|
|
6
6
|
import '../chunk-DTIW4CHZ.js';
|
|
7
7
|
import '../chunk-IAGYPTEJ.js';
|
|
8
8
|
import '../chunk-7KHM2FZH.js';
|
|
9
|
+
import '../chunk-NR4CPM4T.js';
|
|
9
10
|
import '../chunk-KHJIEPZV.js';
|
|
10
11
|
import '../chunk-GXQ3B46I.js';
|
|
11
|
-
import '../chunk-NR4CPM4T.js';
|
|
12
12
|
import '../chunk-AXS6MBNH.js';
|
|
13
13
|
import '../chunk-3CZ7XAVY.js';
|
|
14
14
|
import '../chunk-EUCC37WY.js';
|
|
@@ -6,7 +6,7 @@ import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
|
6
6
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
7
7
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
8
8
|
import './HitArea-QUOS6ZDJ.css';
|
|
9
|
-
import './AppShell-
|
|
9
|
+
import './AppShell-V3TAAYL3.css';
|
|
10
10
|
import { createContext, forwardRef, useContext, useId, useState, useRef, useCallback, useEffect, useLayoutEffect } from 'react';
|
|
11
11
|
import { breakpoint } from '@crewlethq/tokens';
|
|
12
12
|
import { ChevronUpGlyph, ChevronsUpDownGlyph, ChevronRightGlyph, MenuGlyph } from '@crewlethq/icons/glyphs';
|
|
@@ -231,9 +231,12 @@ function ShellDrawer({
|
|
|
231
231
|
}
|
|
232
232
|
);
|
|
233
233
|
}
|
|
234
|
-
function AppShellRail({ header, search, footer, className, children }) {
|
|
234
|
+
function AppShellRail({ header, search, status, footer, className, children }) {
|
|
235
235
|
return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-app-shell__rail-inner", className), children: [
|
|
236
|
-
header ? /* @__PURE__ */
|
|
236
|
+
header || status ? /* @__PURE__ */ jsxs("div", { className: "crewlet-app-shell__rail-head", children: [
|
|
237
|
+
header,
|
|
238
|
+
status ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-status", children: status }) : null
|
|
239
|
+
] }) : null,
|
|
237
240
|
/* @__PURE__ */ jsxs("div", { className: "crewlet-app-shell__rail-body", children: [
|
|
238
241
|
search ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-search", children: search }) : null,
|
|
239
242
|
children
|
|
@@ -241,6 +244,25 @@ function AppShellRail({ header, search, footer, className, children }) {
|
|
|
241
244
|
footer ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-foot", children: footer }) : null
|
|
242
245
|
] });
|
|
243
246
|
}
|
|
247
|
+
function countWords(count) {
|
|
248
|
+
return `, ${String(count.value)} ${count.label}`;
|
|
249
|
+
}
|
|
250
|
+
function RailCountFigure({ count }) {
|
|
251
|
+
return /* @__PURE__ */ jsxs(
|
|
252
|
+
"span",
|
|
253
|
+
{
|
|
254
|
+
className: cx(
|
|
255
|
+
"crewlet-app-shell__rail-row-count",
|
|
256
|
+
count.tone === "warning" && "crewlet-app-shell__rail-row-count--warning"
|
|
257
|
+
),
|
|
258
|
+
"aria-hidden": true,
|
|
259
|
+
children: [
|
|
260
|
+
count.mark ? /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-row-count-mark", children: count.mark }) : null,
|
|
261
|
+
count.value
|
|
262
|
+
]
|
|
263
|
+
}
|
|
264
|
+
);
|
|
265
|
+
}
|
|
244
266
|
function opensSomething(haspopup) {
|
|
245
267
|
return haspopup !== void 0 && haspopup !== false && haspopup !== "false";
|
|
246
268
|
}
|
|
@@ -265,7 +287,7 @@ var AppShellRailRow = forwardRef(function AppShellRailRow2({
|
|
|
265
287
|
/* @__PURE__ */ jsxs("span", { className: "crewlet-app-shell__rail-row-text", children: [
|
|
266
288
|
/* @__PURE__ */ jsxs("span", { className: "crewlet-app-shell__rail-row-label", children: [
|
|
267
289
|
children,
|
|
268
|
-
count ? /* @__PURE__ */ jsx(VisuallyHidden, { children:
|
|
290
|
+
count ? /* @__PURE__ */ jsx(VisuallyHidden, { children: countWords(count) }) : null
|
|
269
291
|
] }),
|
|
270
292
|
block ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
271
293
|
" ",
|
|
@@ -274,20 +296,7 @@ var AppShellRailRow = forwardRef(function AppShellRailRow2({
|
|
|
274
296
|
] }),
|
|
275
297
|
count ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
276
298
|
" ",
|
|
277
|
-
/* @__PURE__ */
|
|
278
|
-
"span",
|
|
279
|
-
{
|
|
280
|
-
className: cx(
|
|
281
|
-
"crewlet-app-shell__rail-row-count",
|
|
282
|
-
count.tone === "warning" && "crewlet-app-shell__rail-row-count--warning"
|
|
283
|
-
),
|
|
284
|
-
"aria-hidden": true,
|
|
285
|
-
children: [
|
|
286
|
-
count.mark ? /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-row-count-mark", children: count.mark }) : null,
|
|
287
|
-
count.value
|
|
288
|
-
]
|
|
289
|
-
}
|
|
290
|
-
)
|
|
299
|
+
/* @__PURE__ */ jsx(RailCountFigure, { count })
|
|
291
300
|
] }) : null,
|
|
292
301
|
trailing ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
293
302
|
" ",
|
|
@@ -315,6 +324,47 @@ var AppShellRailRow = forwardRef(function AppShellRailRow2({
|
|
|
315
324
|
}
|
|
316
325
|
);
|
|
317
326
|
});
|
|
327
|
+
var AppShellRailStatus = forwardRef(function AppShellRailStatus2({
|
|
328
|
+
icon,
|
|
329
|
+
children,
|
|
330
|
+
count,
|
|
331
|
+
trailing,
|
|
332
|
+
onClick,
|
|
333
|
+
label,
|
|
334
|
+
className,
|
|
335
|
+
"aria-expanded": expanded,
|
|
336
|
+
"aria-haspopup": haspopup,
|
|
337
|
+
"aria-controls": controls
|
|
338
|
+
}, ref) {
|
|
339
|
+
const name = label ?? `${children}${count ? countWords(count) : ""}`;
|
|
340
|
+
const marks = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
341
|
+
/* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-status-icon", "aria-hidden": true, children: icon }),
|
|
342
|
+
count ? /* @__PURE__ */ jsx(RailCountFigure, { count }) : null,
|
|
343
|
+
trailing ? /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-status-trailing", "aria-hidden": true, children: trailing }) : null
|
|
344
|
+
] });
|
|
345
|
+
const shape = cx("crewlet-app-shell__rail-status-mark", className);
|
|
346
|
+
if (onClick === void 0) {
|
|
347
|
+
return /* @__PURE__ */ jsxs("span", { ref, className: shape, title: name, children: [
|
|
348
|
+
marks,
|
|
349
|
+
/* @__PURE__ */ jsx(VisuallyHidden, { children: name })
|
|
350
|
+
] });
|
|
351
|
+
}
|
|
352
|
+
return /* @__PURE__ */ jsx(
|
|
353
|
+
"button",
|
|
354
|
+
{
|
|
355
|
+
ref,
|
|
356
|
+
type: "button",
|
|
357
|
+
className: cx(shape, "crewlet-app-shell__rail-status-mark--action", HIT_AREA_CLASS),
|
|
358
|
+
"aria-label": name,
|
|
359
|
+
title: name,
|
|
360
|
+
"aria-expanded": expanded,
|
|
361
|
+
"aria-haspopup": haspopup,
|
|
362
|
+
"aria-controls": controls,
|
|
363
|
+
onClick,
|
|
364
|
+
children: marks
|
|
365
|
+
}
|
|
366
|
+
);
|
|
367
|
+
});
|
|
318
368
|
function AppShellToggle({ className }) {
|
|
319
369
|
const { drawerOpen, toggleDrawer, railId, toggleLabel, hasRail } = useAppShell();
|
|
320
370
|
if (!hasRail) return null;
|
|
@@ -341,8 +391,9 @@ function AppShellTopbar({ title, titleId, actions, className, children, ...rest
|
|
|
341
391
|
}
|
|
342
392
|
AppShell.Rail = AppShellRail;
|
|
343
393
|
AppShell.RailRow = AppShellRailRow;
|
|
394
|
+
AppShell.RailStatus = AppShellRailStatus;
|
|
344
395
|
AppShell.Topbar = AppShellTopbar;
|
|
345
396
|
AppShell.Toggle = AppShellToggle;
|
|
346
397
|
AppShell.AccountRow = AccountRow;
|
|
347
398
|
|
|
348
|
-
export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell };
|
|
399
|
+
export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell };
|
package/dist/generated/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import '../chunk-S3QTFUJX.js';
|
|
2
2
|
export { VersionTimeline } from '../chunk-NQCY44B3.js';
|
|
3
|
-
export { matchesShortcut, useShortcut } from '../chunk-AYHIF6DH.js';
|
|
4
3
|
export { WidgetFrame } from '../chunk-DFK5EQTU.js';
|
|
5
4
|
export { ElementToPngError, elementToPng, parseCsv, serializeElement, toCsv } from '../chunk-FEJANUZK.js';
|
|
6
5
|
export { ToastProvider, Toaster, useToast } from '../chunk-AC22RZKC.js';
|
|
7
6
|
export { TreeCanvas } from '../chunk-5BUOMF6N.js';
|
|
8
7
|
export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-JSWOXRRE.js';
|
|
8
|
+
export { TagsInput } from '../chunk-BH52LIY6.js';
|
|
9
9
|
export { ThemeGallery } from '../chunk-E4BOVKNJ.js';
|
|
10
10
|
export { ThemeSwatch } from '../chunk-MNFU2RNT.js';
|
|
11
11
|
export { DensitySwitcher, ThemeSwitcher } from '../chunk-KWWP3D7M.js';
|
|
@@ -13,21 +13,21 @@ export { ThemeToggle } from '../chunk-NP2C4Y4E.js';
|
|
|
13
13
|
export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from '../chunk-Z24ZUSTX.js';
|
|
14
14
|
export { TileGrid } from '../chunk-NNTO3TNC.js';
|
|
15
15
|
export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-YPMGP2X4.js';
|
|
16
|
+
export { Stepper } from '../chunk-5QWIJSQM.js';
|
|
16
17
|
export { Switcher } from '../chunk-JKAGN4V4.js';
|
|
17
18
|
export { Table } from '../chunk-V2N3BMOT.js';
|
|
18
19
|
export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-4BJK7FE5.js';
|
|
19
|
-
export {
|
|
20
|
+
export { SlideFilmstrip } from '../chunk-FBW3Q2OY.js';
|
|
20
21
|
export { SlideGrid } from '../chunk-3V5T5K5H.js';
|
|
21
22
|
export { SOURCE_EDITOR_KEYS, SourceEditor, lineStart } from '../chunk-D3EJSLCL.js';
|
|
22
|
-
export { StatGroup } from '../chunk-OUD75UB2.js';
|
|
23
23
|
export { StatCard } from '../chunk-YPTTSJPM.js';
|
|
24
|
-
export {
|
|
24
|
+
export { StatGroup } from '../chunk-OUD75UB2.js';
|
|
25
25
|
export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-KNHUBHFX.js';
|
|
26
26
|
export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-GFYQKMQZ.js';
|
|
27
27
|
export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-3PR65I3H.js';
|
|
28
28
|
export { TagGroup } from '../chunk-O2EGEONV.js';
|
|
29
|
+
export { matchesShortcut, useShortcut } from '../chunk-AYHIF6DH.js';
|
|
29
30
|
export { SLIDE_COMPARE_LABELS, SlideCompare } from '../chunk-7CGPPAYR.js';
|
|
30
|
-
export { SlideFilmstrip } from '../chunk-FBW3Q2OY.js';
|
|
31
31
|
export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from '../chunk-356JNSER.js';
|
|
32
32
|
export { SearchTrigger } from '../chunk-6DRDCT22.js';
|
|
33
33
|
export { SectionFrame, SectionFrameBody, SectionFrameNav } from '../chunk-INVSUFJK.js';
|
|
@@ -58,8 +58,8 @@ export { SIZE_EPSILON, TYPE_AHEAD_RESET_MS, createTreeModel, isTypeAheadKey, lay
|
|
|
58
58
|
export { Outline, scrollToHeading, useActiveHeading } from '../chunk-A5YKNRG6.js';
|
|
59
59
|
export { PageNote } from '../chunk-CV4NES3P.js';
|
|
60
60
|
export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from '../chunk-GPWJCP3U.js';
|
|
61
|
-
import '../chunk-CENOOTAV.js';
|
|
62
61
|
export { PinTile } from '../chunk-6MIXD6IW.js';
|
|
62
|
+
import '../chunk-CENOOTAV.js';
|
|
63
63
|
export { MERGE_CONFLICTS_LABELS, MergeConflicts } from '../chunk-2PEXZ7L4.js';
|
|
64
64
|
export { DEFAULT_METER_THRESHOLDS, METER_STATES, Meter, meterState, meterStateTone, meterTone, progressTone } from '../chunk-UGNUUVRI.js';
|
|
65
65
|
export { NewItemsNotice } from '../chunk-PXU6HOZB.js';
|
|
@@ -76,21 +76,20 @@ export { AutoGrid, Inline, Spacer, Stack } from '../chunk-ZAC7SKUN.js';
|
|
|
76
76
|
export { Link } from '../chunk-FBSEJO2C.js';
|
|
77
77
|
export { LinkInterstitial, openExternal } from '../chunk-N3TFYBN3.js';
|
|
78
78
|
export { List, ListItem } from '../chunk-NZWX27J7.js';
|
|
79
|
-
|
|
79
|
+
export { Highlight, highlightRanges, highlightTerms } from '../chunk-H6VKCIWV.js';
|
|
80
80
|
import '../chunk-FFMCMSJB.js';
|
|
81
81
|
export { IconTile } from '../chunk-IXJHTFXG.js';
|
|
82
82
|
export { ImageUpload } from '../chunk-FWYHRU7M.js';
|
|
83
83
|
export { InboxGroup, InboxList, InboxMore, InboxRow, InboxToggle } from '../chunk-XYCADWZN.js';
|
|
84
84
|
export { FactList } from '../chunk-RLJXVFEH.js';
|
|
85
|
-
export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from '../chunk-THDGBD6Y.js';
|
|
86
85
|
export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from '../chunk-UYZZV4DZ.js';
|
|
86
|
+
export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from '../chunk-THDGBD6Y.js';
|
|
87
87
|
export { FindingList } from '../chunk-NTB5LRRD.js';
|
|
88
88
|
export { FollowBanner } from '../chunk-OED6LUWE.js';
|
|
89
89
|
export { DEFAULT_FRAME_THEME, EXTERNAL_URL_MAX, FRAME_BRIDGE, FRAME_MESSAGE, FRAME_ORIGIN_MODES, FRAME_SANDBOX_TOKENS, applyFrameTheme, checkFrameSandbox, externalUrl, frameFragment, frameOriginMatches, frameThemeMessage, httpOrigin, isFocusExit, isFrameNonce, negotiateBridge, parseFrameFragment, portTargetOrigin, readFrameHello, readFramePortMessage, readFrameTheme, readOpenLink } from '../chunk-F6V2PTN6.js';
|
|
90
90
|
export { DENSITY_PREFERENCES, PALETTE_ID, THEME_PREFERENCES, applyDensity, applyPalette, applyTheme, isDensityPreference, isPaletteId, isThemePreference } from '../chunk-ZXXDZJQN.js';
|
|
91
91
|
export { IDLE_AFTER_MS, useFullscreen, useIdle } from '../chunk-W5XCNEZC.js';
|
|
92
|
-
|
|
93
|
-
export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-SYBYFQTY.js';
|
|
92
|
+
import '../chunk-MICRGE3J.js';
|
|
94
93
|
export { DownloadButton } from '../chunk-BEHFTRMZ.js';
|
|
95
94
|
export { downloadBlob, downloadText, safeFilename, useDownload } from '../chunk-IW55G7XG.js';
|
|
96
95
|
export { EditingStatus } from '../chunk-TC7DJTXI.js';
|
|
@@ -103,12 +102,13 @@ export { DescriptionList, DescriptionListItem } from '../chunk-MFS6F2P7.js';
|
|
|
103
102
|
export { DIFF_LIST_LABELS, DiffList } from '../chunk-LFHCXZO5.js';
|
|
104
103
|
export { DIFF_SUMMARY_LABELS, DIFF_VIEW_LABELS, DiffSummary, DiffView, MAX_DIFF_LINES, collapseDiff, diffLines, diffStat, firstChangedLines, splitLines } from '../chunk-BVWSLXTY.js';
|
|
105
104
|
export { Divider } from '../chunk-6KWNXIDE.js';
|
|
105
|
+
export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-SYBYFQTY.js';
|
|
106
106
|
export { CONFLICT_NOTE_LABELS, ConflictNote } from '../chunk-UO7JZVCO.js';
|
|
107
107
|
export { Container } from '../chunk-HJO4WCH6.js';
|
|
108
108
|
export { CursorFlag } from '../chunk-3BYIWOTV.js';
|
|
109
109
|
export { PresenceRing, presenceHueClass } from '../chunk-I6POAB4V.js';
|
|
110
110
|
export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, fitGridColumns, parseGridSort } from '../chunk-XIDD7PJO.js';
|
|
111
|
-
export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-
|
|
111
|
+
export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-6QNN3WIT.js';
|
|
112
112
|
export { PageHeader } from '../chunk-HOXGBLEY.js';
|
|
113
113
|
export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-UB6MLXUL.js';
|
|
114
114
|
export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-FXBGEANQ.js';
|
|
@@ -125,7 +125,10 @@ export { HIGHLIGHT_REST_MS, TYPE_AHEAD_WINDOW, useHighlightRest, useListbox, use
|
|
|
125
125
|
export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-MMPKN7WV.js';
|
|
126
126
|
export { ConfirmField, confirmMatches } from '../chunk-PEUGPAKH.js';
|
|
127
127
|
export { InlineCode } from '../chunk-5CLW2CXT.js';
|
|
128
|
-
export {
|
|
128
|
+
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-C7OKDYBH.js';
|
|
129
|
+
export { Note } from '../chunk-5SZGKSGL.js';
|
|
130
|
+
export { CanvasToolbar, toolForKey } from '../chunk-B5UHX5UC.js';
|
|
131
|
+
export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-NR4CPM4T.js';
|
|
129
132
|
export { CatalogTile } from '../chunk-PCT47E7O.js';
|
|
130
133
|
export { ChangeMark } from '../chunk-66X5WDKE.js';
|
|
131
134
|
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';
|
|
@@ -141,12 +144,9 @@ export { Breadcrumb } from '../chunk-VWNC2L6W.js';
|
|
|
141
144
|
export { KeyChip } from '../chunk-FYTIJM2T.js';
|
|
142
145
|
export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth, today } from '../chunk-GXQ3B46I.js';
|
|
143
146
|
export { Callout } from '../chunk-SZZRIHGT.js';
|
|
144
|
-
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-C7OKDYBH.js';
|
|
145
|
-
export { Note } from '../chunk-5SZGKSGL.js';
|
|
146
|
-
export { CanvasToolbar, toolForKey } from '../chunk-B5UHX5UC.js';
|
|
147
|
-
export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-NR4CPM4T.js';
|
|
148
147
|
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-DAERKOOG.js';
|
|
149
148
|
import '../chunk-LM3ISVJA.js';
|
|
149
|
+
export { CanvasSchematic } from '../chunk-NBWNLYWZ.js';
|
|
150
150
|
export { ArtifactMakeRow } from '../chunk-R2IBCEU6.js';
|
|
151
151
|
export { ArtifactNameCell } from '../chunk-P5VGSVWG.js';
|
|
152
152
|
export { AuthLayout } from '../chunk-S4DREXGM.js';
|
|
@@ -183,7 +183,6 @@ export { ARTIFACT_KINDS, ArtifactKindGlyph } from '../chunk-CE2THTQR.js';
|
|
|
183
183
|
export { ACCESS_DENIED_REASONS, AccessDeniedCard } from '../chunk-KV3ODJXH.js';
|
|
184
184
|
export { EmptyState } from '../chunk-RA2ULG6H.js';
|
|
185
185
|
export { Accordion, AccordionItem } from '../chunk-ZNOXQACX.js';
|
|
186
|
-
export { ADD_PILL_MS, AddPill } from '../chunk-TROLVEZY.js';
|
|
187
186
|
export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-3TXY3PJZ.js';
|
|
188
187
|
export { Timeline, TimelineItem } from '../chunk-AUQPBL4O.js';
|
|
189
188
|
export { Section } from '../chunk-3TFDQLW3.js';
|
|
@@ -195,8 +194,9 @@ export { Kbd, isApplePlatform, keyGlyph } from '../chunk-SMBKXWML.js';
|
|
|
195
194
|
export { DisclosureAnatomy } from '../chunk-FZVJDJFN.js';
|
|
196
195
|
export { Count } from '../chunk-BHHIIK3M.js';
|
|
197
196
|
export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from '../chunk-PQADV6P6.js';
|
|
197
|
+
export { ADD_PILL_MS, AddPill } from '../chunk-TROLVEZY.js';
|
|
198
198
|
export { Announcer, announce, useAnnouncer } from '../chunk-RSAQOKH3.js';
|
|
199
|
-
export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-
|
|
199
|
+
export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-SCPEMLLY.js';
|
|
200
200
|
export { useMediaMatch } from '../chunk-RTPQDNW3.js';
|
|
201
201
|
export { Menu } from '../chunk-D6FEHY5G.js';
|
|
202
202
|
export { LAYER_GAP, LAYER_REPOSITION_EVENT, LayerHost, anchorGone, outsideBounds, placePopup, useLayerContainer, viewportBounds } from '../chunk-OMV5W53A.js';
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import './chunk-S3QTFUJX.js';
|
|
2
2
|
export { VersionTimeline } from './chunk-NQCY44B3.js';
|
|
3
|
-
export { matchesShortcut, useShortcut } from './chunk-AYHIF6DH.js';
|
|
4
3
|
export { WidgetFrame } from './chunk-DFK5EQTU.js';
|
|
5
4
|
export { ElementToPngError, elementToPng, parseCsv, serializeElement, toCsv } from './chunk-FEJANUZK.js';
|
|
6
5
|
export { ToastProvider, Toaster, useToast } from './chunk-AC22RZKC.js';
|
|
7
6
|
export { TreeCanvas } from './chunk-5BUOMF6N.js';
|
|
8
7
|
export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from './chunk-JSWOXRRE.js';
|
|
8
|
+
export { TagsInput } from './chunk-BH52LIY6.js';
|
|
9
9
|
export { ThemeGallery } from './chunk-E4BOVKNJ.js';
|
|
10
10
|
export { ThemeSwatch } from './chunk-MNFU2RNT.js';
|
|
11
11
|
export { DensitySwitcher, ThemeSwitcher } from './chunk-KWWP3D7M.js';
|
|
@@ -13,21 +13,21 @@ export { ThemeToggle } from './chunk-NP2C4Y4E.js';
|
|
|
13
13
|
export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from './chunk-Z24ZUSTX.js';
|
|
14
14
|
export { TileGrid } from './chunk-NNTO3TNC.js';
|
|
15
15
|
export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from './chunk-YPMGP2X4.js';
|
|
16
|
+
export { Stepper } from './chunk-5QWIJSQM.js';
|
|
16
17
|
export { Switcher } from './chunk-JKAGN4V4.js';
|
|
17
18
|
export { Table } from './chunk-V2N3BMOT.js';
|
|
18
19
|
export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from './chunk-4BJK7FE5.js';
|
|
19
|
-
export {
|
|
20
|
+
export { SlideFilmstrip } from './chunk-FBW3Q2OY.js';
|
|
20
21
|
export { SlideGrid } from './chunk-3V5T5K5H.js';
|
|
21
22
|
export { SOURCE_EDITOR_KEYS, SourceEditor, lineStart } from './chunk-D3EJSLCL.js';
|
|
22
|
-
export { StatGroup } from './chunk-OUD75UB2.js';
|
|
23
23
|
export { StatCard } from './chunk-YPTTSJPM.js';
|
|
24
|
-
export {
|
|
24
|
+
export { StatGroup } from './chunk-OUD75UB2.js';
|
|
25
25
|
export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from './chunk-KNHUBHFX.js';
|
|
26
26
|
export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from './chunk-GFYQKMQZ.js';
|
|
27
27
|
export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from './chunk-3PR65I3H.js';
|
|
28
28
|
export { TagGroup } from './chunk-O2EGEONV.js';
|
|
29
|
+
export { matchesShortcut, useShortcut } from './chunk-AYHIF6DH.js';
|
|
29
30
|
export { SLIDE_COMPARE_LABELS, SlideCompare } from './chunk-7CGPPAYR.js';
|
|
30
|
-
export { SlideFilmstrip } from './chunk-FBW3Q2OY.js';
|
|
31
31
|
export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from './chunk-356JNSER.js';
|
|
32
32
|
export { SearchTrigger } from './chunk-6DRDCT22.js';
|
|
33
33
|
export { SectionFrame, SectionFrameBody, SectionFrameNav } from './chunk-INVSUFJK.js';
|
|
@@ -58,8 +58,8 @@ export { SIZE_EPSILON, TYPE_AHEAD_RESET_MS, createTreeModel, isTypeAheadKey, lay
|
|
|
58
58
|
export { Outline, scrollToHeading, useActiveHeading } from './chunk-A5YKNRG6.js';
|
|
59
59
|
export { PageNote } from './chunk-CV4NES3P.js';
|
|
60
60
|
export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from './chunk-GPWJCP3U.js';
|
|
61
|
-
import './chunk-CENOOTAV.js';
|
|
62
61
|
export { PinTile } from './chunk-6MIXD6IW.js';
|
|
62
|
+
import './chunk-CENOOTAV.js';
|
|
63
63
|
export { MERGE_CONFLICTS_LABELS, MergeConflicts } from './chunk-2PEXZ7L4.js';
|
|
64
64
|
export { DEFAULT_METER_THRESHOLDS, METER_STATES, Meter, meterState, meterStateTone, meterTone, progressTone } from './chunk-UGNUUVRI.js';
|
|
65
65
|
export { NewItemsNotice } from './chunk-PXU6HOZB.js';
|
|
@@ -76,21 +76,20 @@ export { AutoGrid, Inline, Spacer, Stack } from './chunk-ZAC7SKUN.js';
|
|
|
76
76
|
export { Link } from './chunk-FBSEJO2C.js';
|
|
77
77
|
export { LinkInterstitial, openExternal } from './chunk-N3TFYBN3.js';
|
|
78
78
|
export { List, ListItem } from './chunk-NZWX27J7.js';
|
|
79
|
-
|
|
79
|
+
export { Highlight, highlightRanges, highlightTerms } from './chunk-H6VKCIWV.js';
|
|
80
80
|
import './chunk-FFMCMSJB.js';
|
|
81
81
|
export { IconTile } from './chunk-IXJHTFXG.js';
|
|
82
82
|
export { ImageUpload } from './chunk-FWYHRU7M.js';
|
|
83
83
|
export { InboxGroup, InboxList, InboxMore, InboxRow, InboxToggle } from './chunk-XYCADWZN.js';
|
|
84
84
|
export { FactList } from './chunk-RLJXVFEH.js';
|
|
85
|
-
export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from './chunk-THDGBD6Y.js';
|
|
86
85
|
export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from './chunk-UYZZV4DZ.js';
|
|
86
|
+
export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from './chunk-THDGBD6Y.js';
|
|
87
87
|
export { FindingList } from './chunk-NTB5LRRD.js';
|
|
88
88
|
export { FollowBanner } from './chunk-OED6LUWE.js';
|
|
89
89
|
export { DEFAULT_FRAME_THEME, EXTERNAL_URL_MAX, FRAME_BRIDGE, FRAME_MESSAGE, FRAME_ORIGIN_MODES, FRAME_SANDBOX_TOKENS, applyFrameTheme, checkFrameSandbox, externalUrl, frameFragment, frameOriginMatches, frameThemeMessage, httpOrigin, isFocusExit, isFrameNonce, negotiateBridge, parseFrameFragment, portTargetOrigin, readFrameHello, readFramePortMessage, readFrameTheme, readOpenLink } from './chunk-F6V2PTN6.js';
|
|
90
90
|
export { DENSITY_PREFERENCES, PALETTE_ID, THEME_PREFERENCES, applyDensity, applyPalette, applyTheme, isDensityPreference, isPaletteId, isThemePreference } from './chunk-ZXXDZJQN.js';
|
|
91
91
|
export { IDLE_AFTER_MS, useFullscreen, useIdle } from './chunk-W5XCNEZC.js';
|
|
92
|
-
|
|
93
|
-
export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from './chunk-SYBYFQTY.js';
|
|
92
|
+
import './chunk-MICRGE3J.js';
|
|
94
93
|
export { DownloadButton } from './chunk-BEHFTRMZ.js';
|
|
95
94
|
export { downloadBlob, downloadText, safeFilename, useDownload } from './chunk-IW55G7XG.js';
|
|
96
95
|
export { EditingStatus } from './chunk-TC7DJTXI.js';
|
|
@@ -103,12 +102,13 @@ export { DescriptionList, DescriptionListItem } from './chunk-MFS6F2P7.js';
|
|
|
103
102
|
export { DIFF_LIST_LABELS, DiffList } from './chunk-LFHCXZO5.js';
|
|
104
103
|
export { DIFF_SUMMARY_LABELS, DIFF_VIEW_LABELS, DiffSummary, DiffView, MAX_DIFF_LINES, collapseDiff, diffLines, diffStat, firstChangedLines, splitLines } from './chunk-BVWSLXTY.js';
|
|
105
104
|
export { Divider } from './chunk-6KWNXIDE.js';
|
|
105
|
+
export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from './chunk-SYBYFQTY.js';
|
|
106
106
|
export { CONFLICT_NOTE_LABELS, ConflictNote } from './chunk-UO7JZVCO.js';
|
|
107
107
|
export { Container } from './chunk-HJO4WCH6.js';
|
|
108
108
|
export { CursorFlag } from './chunk-3BYIWOTV.js';
|
|
109
109
|
export { PresenceRing, presenceHueClass } from './chunk-I6POAB4V.js';
|
|
110
110
|
export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, fitGridColumns, parseGridSort } from './chunk-XIDD7PJO.js';
|
|
111
|
-
export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from './chunk-
|
|
111
|
+
export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from './chunk-6QNN3WIT.js';
|
|
112
112
|
export { PageHeader } from './chunk-HOXGBLEY.js';
|
|
113
113
|
export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from './chunk-UB6MLXUL.js';
|
|
114
114
|
export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from './chunk-FXBGEANQ.js';
|
|
@@ -125,7 +125,10 @@ export { HIGHLIGHT_REST_MS, TYPE_AHEAD_WINDOW, useHighlightRest, useListbox, use
|
|
|
125
125
|
export { COMMENT_THREAD_LABELS, CommentThread } from './chunk-MMPKN7WV.js';
|
|
126
126
|
export { ConfirmField, confirmMatches } from './chunk-PEUGPAKH.js';
|
|
127
127
|
export { InlineCode } from './chunk-5CLW2CXT.js';
|
|
128
|
-
export {
|
|
128
|
+
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-C7OKDYBH.js';
|
|
129
|
+
export { Note } from './chunk-5SZGKSGL.js';
|
|
130
|
+
export { CanvasToolbar, toolForKey } from './chunk-B5UHX5UC.js';
|
|
131
|
+
export { Toolbar, ToolbarOverflow, ToolbarWide } from './chunk-NR4CPM4T.js';
|
|
129
132
|
export { CatalogTile } from './chunk-PCT47E7O.js';
|
|
130
133
|
export { ChangeMark } from './chunk-66X5WDKE.js';
|
|
131
134
|
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';
|
|
@@ -141,12 +144,9 @@ export { Breadcrumb } from './chunk-VWNC2L6W.js';
|
|
|
141
144
|
export { KeyChip } from './chunk-FYTIJM2T.js';
|
|
142
145
|
export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth, today } from './chunk-GXQ3B46I.js';
|
|
143
146
|
export { Callout } from './chunk-SZZRIHGT.js';
|
|
144
|
-
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-C7OKDYBH.js';
|
|
145
|
-
export { Note } from './chunk-5SZGKSGL.js';
|
|
146
|
-
export { CanvasToolbar, toolForKey } from './chunk-B5UHX5UC.js';
|
|
147
|
-
export { Toolbar, ToolbarOverflow, ToolbarWide } from './chunk-NR4CPM4T.js';
|
|
148
147
|
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-DAERKOOG.js';
|
|
149
148
|
import './chunk-LM3ISVJA.js';
|
|
149
|
+
export { CanvasSchematic } from './chunk-NBWNLYWZ.js';
|
|
150
150
|
export { ArtifactMakeRow } from './chunk-R2IBCEU6.js';
|
|
151
151
|
export { ArtifactNameCell } from './chunk-P5VGSVWG.js';
|
|
152
152
|
export { AuthLayout } from './chunk-S4DREXGM.js';
|
|
@@ -183,7 +183,6 @@ export { ARTIFACT_KINDS, ArtifactKindGlyph } from './chunk-CE2THTQR.js';
|
|
|
183
183
|
export { ACCESS_DENIED_REASONS, AccessDeniedCard } from './chunk-KV3ODJXH.js';
|
|
184
184
|
export { EmptyState } from './chunk-RA2ULG6H.js';
|
|
185
185
|
export { Accordion, AccordionItem } from './chunk-ZNOXQACX.js';
|
|
186
|
-
export { ADD_PILL_MS, AddPill } from './chunk-TROLVEZY.js';
|
|
187
186
|
export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from './chunk-3TXY3PJZ.js';
|
|
188
187
|
export { Timeline, TimelineItem } from './chunk-AUQPBL4O.js';
|
|
189
188
|
export { Section } from './chunk-3TFDQLW3.js';
|
|
@@ -195,8 +194,9 @@ export { Kbd, isApplePlatform, keyGlyph } from './chunk-SMBKXWML.js';
|
|
|
195
194
|
export { DisclosureAnatomy } from './chunk-FZVJDJFN.js';
|
|
196
195
|
export { Count } from './chunk-BHHIIK3M.js';
|
|
197
196
|
export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from './chunk-PQADV6P6.js';
|
|
197
|
+
export { ADD_PILL_MS, AddPill } from './chunk-TROLVEZY.js';
|
|
198
198
|
export { Announcer, announce, useAnnouncer } from './chunk-RSAQOKH3.js';
|
|
199
|
-
export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from './chunk-
|
|
199
|
+
export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from './chunk-SCPEMLLY.js';
|
|
200
200
|
export { useMediaMatch } from './chunk-RTPQDNW3.js';
|
|
201
201
|
export { Menu } from './chunk-D6FEHY5G.js';
|
|
202
202
|
export { LAYER_GAP, LAYER_REPOSITION_EVENT, LayerHost, anchorGone, outsideBounds, placePopup, useLayerContainer, viewportBounds } from './chunk-OMV5W53A.js';
|
package/dist/styles.css
CHANGED
|
@@ -702,7 +702,7 @@
|
|
|
702
702
|
}
|
|
703
703
|
|
|
704
704
|
|
|
705
|
-
/* AppShell-
|
|
705
|
+
/* AppShell-V3TAAYL3.css */
|
|
706
706
|
/*
|
|
707
707
|
* The application frame: a rail on the FRAME, and the screen on a SHEET that
|
|
708
708
|
* floats beside it.
|
|
@@ -860,6 +860,68 @@
|
|
|
860
860
|
min-width: 0;
|
|
861
861
|
}
|
|
862
862
|
|
|
863
|
+
/*
|
|
864
|
+
* THE HEAD'S STATUS, at the end of the name's line (`AppShell.RailStatus`):
|
|
865
|
+
* the application's state as a dot and a count, its words in its name and
|
|
866
|
+
* title. It ends on the nav's gutter, where every row's background ends, and
|
|
867
|
+
* it reserves the width of a dot and a two-figure count, so the name beside
|
|
868
|
+
* it truncates at one place whether the engine is healthy or has alarms.
|
|
869
|
+
*/
|
|
870
|
+
.crewlet-app-shell__rail-status {
|
|
871
|
+
display: flex;
|
|
872
|
+
flex: none;
|
|
873
|
+
align-items: center;
|
|
874
|
+
justify-content: flex-end;
|
|
875
|
+
min-width: calc(var(--size-target-min) * 2 + var(--spacing-1));
|
|
876
|
+
margin-inline-end: var(--size-nav-gutter);
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
/* A lockup beside a status gives up its end inset: the head's gap parts the
|
|
880
|
+
two, and the inset is what kept a lockup alone on its line off the edge. */
|
|
881
|
+
.crewlet-app-shell__rail-head:has(> .crewlet-app-shell__rail-status) > .crewlet-brand {
|
|
882
|
+
padding-inline-end: 0;
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
/* The dot and the count on one compact target: the 24px floor each way. */
|
|
886
|
+
.crewlet-app-shell__rail-status-mark {
|
|
887
|
+
display: inline-flex;
|
|
888
|
+
align-items: center;
|
|
889
|
+
justify-content: center;
|
|
890
|
+
gap: calc(var(--spacing-1) + var(--spacing-1) / 2);
|
|
891
|
+
min-width: var(--size-target-min);
|
|
892
|
+
min-height: var(--size-target-min);
|
|
893
|
+
margin: 0;
|
|
894
|
+
padding: 0 var(--spacing-1);
|
|
895
|
+
border: 0;
|
|
896
|
+
border-radius: var(--radius-md);
|
|
897
|
+
background: transparent;
|
|
898
|
+
color: var(--color-text-secondary);
|
|
899
|
+
font: inherit;
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
.crewlet-app-shell__rail-status-icon,
|
|
903
|
+
.crewlet-app-shell__rail-status-trailing {
|
|
904
|
+
display: inline-flex;
|
|
905
|
+
align-items: center;
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
.crewlet-app-shell__rail-status-mark--action {
|
|
909
|
+
cursor: pointer;
|
|
910
|
+
transition: background var(--motion-duration-fast) var(--motion-easing-default);
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
/* Open is pointed at, as the foot's row draws it: the lift stays while the panel is open. */
|
|
914
|
+
.crewlet-app-shell__rail-status-mark--action:hover,
|
|
915
|
+
.crewlet-app-shell__rail-status-mark--action[aria-expanded='true'] {
|
|
916
|
+
background: var(--color-surface-hover);
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
/* Inside its own box, so the ring is never cut by the head or the drawer's edge. */
|
|
920
|
+
.crewlet-app-shell__rail-status-mark--action:focus-visible {
|
|
921
|
+
outline: 2px solid var(--color-focus);
|
|
922
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
923
|
+
}
|
|
924
|
+
|
|
863
925
|
/*
|
|
864
926
|
* THE RAIL'S FIELD ON THE NAV'S COLUMNS. It stands on the nav's gutter, so
|
|
865
927
|
* its right edge is where every row's background ends; and its glyph stands
|
|
@@ -876,14 +938,22 @@
|
|
|
876
938
|
}
|
|
877
939
|
|
|
878
940
|
/* The same gutter the nav takes, so what the foot says lines up with the rows
|
|
879
|
-
above it rather than sitting further out.
|
|
941
|
+
above it rather than sitting further out.
|
|
942
|
+
|
|
943
|
+
THE FOOT IS THE COMPACT STEP. It holds what a reader reaches for rarely (a
|
|
944
|
+
settings link, the engine's state, who they are), so its rows stand on the
|
|
945
|
+
small control step (`--crewlet-rail-foot-row`, 26px, never under the 24px
|
|
946
|
+
target) on a half-step gap and a one-step inset, where the nav above keeps
|
|
947
|
+
its 30px rows. Only heights change: every row keeps its order, columns,
|
|
948
|
+
glyphs and words. */
|
|
880
949
|
.crewlet-app-shell__rail-foot {
|
|
881
|
-
--crewlet-rail-foot-gap: var(--spacing-1);
|
|
950
|
+
--crewlet-rail-foot-gap: calc(var(--spacing-1) / 2);
|
|
951
|
+
--crewlet-rail-foot-row: var(--size-control-sm);
|
|
882
952
|
flex: none;
|
|
883
953
|
display: flex;
|
|
884
954
|
flex-direction: column;
|
|
885
955
|
gap: var(--crewlet-rail-foot-gap);
|
|
886
|
-
padding: var(--spacing-
|
|
956
|
+
padding: var(--spacing-1) var(--size-nav-gutter);
|
|
887
957
|
border-top: 1px solid var(--color-border-default);
|
|
888
958
|
}
|
|
889
959
|
|
|
@@ -984,6 +1054,14 @@
|
|
|
984
1054
|
min-width: 14px;
|
|
985
1055
|
}
|
|
986
1056
|
|
|
1057
|
+
/* The foot's own step (see `.crewlet-app-shell__rail-foot`), for its rows and
|
|
1058
|
+
for a navigation dropped into it, whose rows keep the rail's columns. */
|
|
1059
|
+
.crewlet-app-shell__rail-foot > .crewlet-app-shell__rail-row--action:not(.crewlet-app-shell__rail-row--block),
|
|
1060
|
+
.crewlet-app-shell__rail-foot > .crewlet-btn,
|
|
1061
|
+
.crewlet-app-shell__rail-foot .crewlet-nav-item__row {
|
|
1062
|
+
min-height: var(--crewlet-rail-foot-row);
|
|
1063
|
+
}
|
|
1064
|
+
|
|
987
1065
|
/*
|
|
988
1066
|
* OPEN IS POINTED AT. The row a panel is open from keeps the hover's lift for
|
|
989
1067
|
* as long as the panel is open, drawn from `aria-expanded` so the picture and
|
|
@@ -1389,7 +1467,8 @@
|
|
|
1389
1467
|
.crewlet-app-shell__rail,
|
|
1390
1468
|
.crewlet-app-shell__rail[data-open='true'],
|
|
1391
1469
|
.crewlet-app-shell__rail-row--action,
|
|
1392
|
-
.crewlet-app-shell__rail-foot > .crewlet-btn
|
|
1470
|
+
.crewlet-app-shell__rail-foot > .crewlet-btn,
|
|
1471
|
+
.crewlet-app-shell__rail-status-mark--action {
|
|
1393
1472
|
transition: none;
|
|
1394
1473
|
}
|
|
1395
1474
|
}
|
|
@@ -1436,9 +1515,16 @@
|
|
|
1436
1515
|
* whatever size of badge a caller hands the row, it is centred where a glyph
|
|
1437
1516
|
* is, and the row takes the nav row's pad and its glyph-to-word gap.
|
|
1438
1517
|
*/
|
|
1518
|
+
.crewlet-app-shell__rail-foot .crewlet-account-row {
|
|
1519
|
+
--crewlet-account-row-pad: var(--spacing-0);
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1439
1522
|
.crewlet-app-shell__rail-foot .crewlet-account-row__who {
|
|
1440
1523
|
--crewlet-hit-area-block-start: calc(var(--crewlet-rail-foot-gap) / 2 + var(--crewlet-account-row-pad));
|
|
1441
1524
|
gap: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
1525
|
+
/* On the foot's compact step: the two lines of name and detail with half a
|
|
1526
|
+
step above and below them, which still clears the avatar. */
|
|
1527
|
+
padding-block: calc(var(--spacing-1) / 2);
|
|
1442
1528
|
padding-inline-start: var(--size-nav-row-pad);
|
|
1443
1529
|
}
|
|
1444
1530
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crewlethq/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.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.
|
|
46
|
-
"@crewlethq/tokens": "0.
|
|
45
|
+
"@crewlethq/icons": "0.41.0",
|
|
46
|
+
"@crewlethq/tokens": "0.41.0",
|
|
47
47
|
"prosemirror-commands": "1.7.2",
|
|
48
48
|
"prosemirror-gapcursor": "1.4.1",
|
|
49
49
|
"prosemirror-history": "1.5.1",
|
|
@@ -2,8 +2,8 @@ import { PageHeader } from './chunk-HOXGBLEY.js';
|
|
|
2
2
|
import { DateTimePicker } from './chunk-UB6MLXUL.js';
|
|
3
3
|
import { DataTable } from './chunk-FXBGEANQ.js';
|
|
4
4
|
import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
|
|
5
|
-
import { Popover } from './chunk-KHJIEPZV.js';
|
|
6
5
|
import { Toolbar } from './chunk-NR4CPM4T.js';
|
|
6
|
+
import { Popover } from './chunk-KHJIEPZV.js';
|
|
7
7
|
import { RelativeTime } from './chunk-3CZ7XAVY.js';
|
|
8
8
|
import { Input } from './chunk-TYONQSOK.js';
|
|
9
9
|
import { Kbd } from './chunk-SMBKXWML.js';
|