@crewlethq/ui 0.56.0 → 0.57.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 +10 -0
- package/dist/AppShell/AppShell.d.ts +13 -3
- package/dist/AppShell/index.js +1 -1
- package/dist/AppShell/regions.d.ts +2 -0
- package/dist/OpenInAppCard/index.js +2 -2
- package/dist/ProposalCard/ProposalCard.d.ts +53 -4
- package/dist/ProposalCard/index.d.ts +2 -2
- package/dist/ProposalCard/index.js +2 -2
- package/dist/{ProposalCard-HLB3FNLA.css → ProposalCard-23575F4C.css} +10 -0
- package/dist/ReceiptStrip/ReceiptStrip.d.ts +14 -2
- package/dist/ReceiptStrip/index.js +1 -1
- package/dist/RichEditor/index.js +1 -1
- package/dist/{chunk-E4DZOE55.js → chunk-CIYHSTIF.js} +29 -9
- package/dist/{chunk-YY445YFQ.js → chunk-CZNG3V6L.js} +1 -1
- package/dist/{chunk-XQI2OUV4.js → chunk-LZXY6IMO.js} +13 -4
- package/dist/{chunk-NI7WUPH3.js → chunk-WBTCOFMZ.js} +1 -1
- package/dist/{chunk-UVYGMCJ4.js → chunk-YGC7BFX2.js} +42 -5
- package/dist/generated/index.js +13 -13
- package/dist/index.js +13 -13
- package/dist/styles.css +11 -1
- package/package.json +3 -3
- package/dist/{Editor-X2J47LPD.js → Editor-S4HARQ7V.js} +1 -1
package/README.md
CHANGED
|
@@ -205,6 +205,16 @@ places:
|
|
|
205
205
|
- A surface that pans or zooms dispatches `LAYER_REPOSITION_EVENT` on its host
|
|
206
206
|
when the content beneath it moves, and every panel anchored inside follows.
|
|
207
207
|
|
|
208
|
+
## Changes in 0.57.0
|
|
209
|
+
|
|
210
|
+
**`AppShell` takes `asideModal`**, so an `overlay` aside can leave the page live beside it. `true`, the default, keeps the 0.56.0 overlay: a modal dialog behind a veil with Tab held inside. `false` draws the overlay with no veil, no trap and nothing made inert: it is a complementary region named by `asideLabel`, focus moves into it when it opens, Escape from inside it calls `onAsideClose` (unless a control inside answered the key, or a menu or dialog on the layer stack owns it), and focus goes back to what opened it if it was still inside when it closed. A column is never modal and a `sheet` always is, whatever the prop says. The aside carries `data-modal`.
|
|
211
|
+
|
|
212
|
+
**`ProposalCard` takes `failureOutcome`** (`unchanged` or `unknown`; `ProposalFailureOutcome`, `PROPOSAL_FAILURE_OUTCOMES`), so a failed card says "Nothing changed." only when it is true. `unchanged`, the default, keeps the 0.56.0 drawing: the Tag "Not applied" and the engine's sentence followed by "Nothing changed.". `unknown` is a change sent without an answer, which may have landed: the Tag reads "Not confirmed" (`labels.notConfirmed`) and the strip is the `failure` sentence alone, or `labels.unknownNotice` ("Could not confirm whether this was applied. It may have landed.") without one. A failed card carries `data-outcome`. A consumer that drew an unknown outcome as `failed` passes `failureOutcome="unknown"`; nothing else changes.
|
|
213
|
+
|
|
214
|
+
**`ProposalCard` takes `decisionRefusal`** (`{ sentence, hint? }`; `ProposalDecisionRefusal`): why the person's last decision was refused while the card still waits on one, such as an approval that needs a fresh sign-in or that met a moved record, so the card stays `pending` or `stepup`. It is drawn above the decision as the inline `RefusalStrip`, and announced politely from a live region the foot keeps from the moment it holds a decision, through `applying`, so words that arrive later are heard. The consumer clears it. It is ignored once the card has settled. In `pending` and `stepup` the foot therefore holds one more `status` region, empty and visually hidden until a refusal arrives; a test that read the step-up notice with `getByRole('status')` should read it from the strip.
|
|
215
|
+
|
|
216
|
+
**`ReceiptStrip` and `RefusalStrip` take `announce`** (true by default). False drops the strip's own `alert` or `status` role, for a host that keeps the live region around it.
|
|
217
|
+
|
|
208
218
|
## Changes in 0.56.0
|
|
209
219
|
|
|
210
220
|
### The frame and its panels
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
* gutter are all the sheet's, and the sheet keeps them. Where the window
|
|
46
46
|
* cannot hold the page and the panel side by side the panel is an overlay
|
|
47
47
|
* over the page's end, and on a phone it is the whole window; both are
|
|
48
|
-
* modal surfaces on the shared layer stack
|
|
48
|
+
* modal surfaces on the shared layer stack, unless the host asks for an
|
|
49
|
+
* overlay that leaves the page live beside it (`asideModal={false}`). WHICH SHAPE is the host's
|
|
49
50
|
* decision (`asideShape`), never a media query's: the width that leaves the
|
|
50
51
|
* page its floor depends on what else the frame holds and on the density,
|
|
51
52
|
* which only the application knows.
|
|
@@ -153,7 +154,16 @@ export interface AppShellProps extends Omit<HTMLAttributes<HTMLDivElement>, 'tit
|
|
|
153
154
|
asideLabel?: string | undefined;
|
|
154
155
|
/** Which shape the aside takes; the host decides it. */
|
|
155
156
|
asideShape?: AppShellAsideShape | undefined;
|
|
156
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* Whether the aside is modal as an `overlay`: true (the default) draws it
|
|
159
|
+
* as a dialog behind a veil, with Tab held inside; false leaves the page
|
|
160
|
+
* live beside it, a complementary region with no veil and no trap that
|
|
161
|
+
* Escape from inside still closes, handing focus back to what opened it.
|
|
162
|
+
* A column is never modal and a sheet, which covers the whole window,
|
|
163
|
+
* always is.
|
|
164
|
+
*/
|
|
165
|
+
asideModal?: boolean | undefined;
|
|
166
|
+
/** Closes the aside: Escape and, behind a veil, a press on the veil, as an overlay or a sheet. */
|
|
157
167
|
onAsideClose?: (() => void) | undefined;
|
|
158
168
|
/** Gives the aside a grip in the seam beside it while it is a column. */
|
|
159
169
|
asideResize?: AppShellAsideResize | undefined;
|
|
@@ -171,7 +181,7 @@ export interface AppShellProps extends Omit<HTMLAttributes<HTMLDivElement>, 'tit
|
|
|
171
181
|
peekShape?: AppShellPeekShape | undefined;
|
|
172
182
|
children?: ReactNode;
|
|
173
183
|
}
|
|
174
|
-
export declare function AppShell({ sidebar, topbar, banner, footer, mainId, mainRef, fill, navigationKey, toggleLabel, skipLabel, aside, asideWidth, asideReserve, asideLabel, asideShape, onAsideClose, asideResize, peek, peekShape, className, style, children, ...rest }: AppShellProps): import("react").JSX.Element;
|
|
184
|
+
export declare function AppShell({ sidebar, topbar, banner, footer, mainId, mainRef, fill, navigationKey, toggleLabel, skipLabel, aside, asideWidth, asideReserve, asideLabel, asideShape, asideModal, onAsideClose, asideResize, peek, peekShape, className, style, children, ...rest }: AppShellProps): import("react").JSX.Element;
|
|
175
185
|
export declare namespace AppShell {
|
|
176
186
|
var Rail: typeof AppShellRail;
|
|
177
187
|
var RailRow: import("react").ForwardRefExoticComponent<AppShellRailRowProps & import("react").RefAttributes<HTMLElement>>;
|
package/dist/AppShell/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useStoredWidth } from '../chunk-
|
|
1
|
+
export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useStoredWidth } from '../chunk-YGC7BFX2.js';
|
|
2
2
|
import '../chunk-RTPQDNW3.js';
|
|
3
3
|
import '../chunk-TKS7FTTO.js';
|
|
4
4
|
export { RESIZE_HANDLE_LARGE_STEP, RESIZE_HANDLE_STEP, ResizeHandle, clampSize, useAppShellAside, useAppShellPeek } from '../chunk-PIYJNCN7.js';
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
* region; the page reflows narrower and stays reachable with Tab.
|
|
12
12
|
* - `overlay`: over the page's end edge, behind a veil, a modal dialog: Tab
|
|
13
13
|
* stays in it, Escape and a press on the veil close it, focus returns.
|
|
14
|
+
* With `asideModal={false}` it has no veil and no trap: a complementary
|
|
15
|
+
* region the page stays live beside, which Escape from inside closes.
|
|
14
16
|
* - `sheet`: the whole window, for a phone; modal in the same way.
|
|
15
17
|
*/
|
|
16
18
|
export type AppShellAsideShape = 'column' | 'overlay' | 'sheet';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-CZNG3V6L.js';
|
|
2
|
+
import '../chunk-LZXY6IMO.js';
|
|
3
3
|
import '../chunk-BAKPMH3S.js';
|
|
4
4
|
import '../chunk-3LI4TRUR.js';
|
|
5
5
|
import '../chunk-WDIVALLP.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
import { type ChangeListLabels, type ChangeListRow } from '../ChangeList/index.js';
|
|
3
3
|
import type { DiffListLabels } from '../DiffList/index.js';
|
|
4
|
+
import '../VisuallyHidden/index.js';
|
|
4
5
|
/**
|
|
5
6
|
* Where a proposed change stands: `pending` (waiting on the person),
|
|
6
7
|
* `stepup` (the approval needs a fresh sign-in), `applying` (approved and
|
|
@@ -19,6 +20,24 @@ export declare const PROPOSAL_STATES: readonly ["pending", "stepup", "applying",
|
|
|
19
20
|
export type ProposalScope = 'page' | 'server';
|
|
20
21
|
/** What the change does to a record: change fields of one, or create one. */
|
|
21
22
|
export type ProposalKind = 'change' | 'create';
|
|
23
|
+
/**
|
|
24
|
+
* What a `failed` card came to: refused or not carried out, so nothing
|
|
25
|
+
* changed (`unchanged`), or carried out without an answer, so nobody can say
|
|
26
|
+
* whether it landed (`unknown`). Only `unchanged` says "Nothing changed.".
|
|
27
|
+
*/
|
|
28
|
+
export type ProposalFailureOutcome = 'unchanged' | 'unknown';
|
|
29
|
+
export declare const PROPOSAL_FAILURE_OUTCOMES: readonly ["unchanged", "unknown"];
|
|
30
|
+
/**
|
|
31
|
+
* Why the person's own decision was refused while the card stays open to
|
|
32
|
+
* another one: the approval was turned down (a fresh sign-in, a change that
|
|
33
|
+
* moved) but the proposal itself still stands.
|
|
34
|
+
*/
|
|
35
|
+
export interface ProposalDecisionRefusal {
|
|
36
|
+
/** The refusal, in the engine's own sentence. */
|
|
37
|
+
sentence: ReactNode;
|
|
38
|
+
/** What the person can do next, on its own quieter line. */
|
|
39
|
+
hint?: ReactNode;
|
|
40
|
+
}
|
|
22
41
|
export interface ProposalCardLabels {
|
|
23
42
|
needsApproval: string;
|
|
24
43
|
needsSignIn: string;
|
|
@@ -30,6 +49,8 @@ export interface ProposalCardLabels {
|
|
|
30
49
|
expired: string;
|
|
31
50
|
stale: string;
|
|
32
51
|
notApplied: string;
|
|
52
|
+
/** The Tag of a failed card whose outcome is `unknown`. */
|
|
53
|
+
notConfirmed: string;
|
|
33
54
|
decline: string;
|
|
34
55
|
confirmIdentity: string;
|
|
35
56
|
prepareAgain: string;
|
|
@@ -44,6 +65,8 @@ export interface ProposalCardLabels {
|
|
|
44
65
|
expiredNotice: string;
|
|
45
66
|
staleNotice: string;
|
|
46
67
|
nothingChanged: string;
|
|
68
|
+
/** The sentence of a failed card whose outcome is `unknown` and that has no `failure` of its own. */
|
|
69
|
+
unknownNotice: string;
|
|
47
70
|
/** Why Decline is held while the approved change is carried out. */
|
|
48
71
|
busy: string;
|
|
49
72
|
}
|
|
@@ -81,12 +104,24 @@ export interface ProposalCardProps extends Omit<HTMLAttributes<HTMLElement>, 'ti
|
|
|
81
104
|
onRetry?: (() => void) | undefined;
|
|
82
105
|
/** What was done, for an applied card: "Created ENG-156 · assigned to Agent SWE". */
|
|
83
106
|
receipt?: ReactNode;
|
|
84
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* Why it was not applied, for a failed card, in the engine's own sentence.
|
|
109
|
+
* "Nothing changed." follows it when `failureOutcome` is `unchanged`.
|
|
110
|
+
*/
|
|
85
111
|
failure?: ReactNode;
|
|
112
|
+
/**
|
|
113
|
+
* What a failed card came to; see `ProposalFailureOutcome`. `unchanged`
|
|
114
|
+
* (the default) follows the sentence with "Nothing changed." under the Tag
|
|
115
|
+
* "Not applied". `unknown` never claims that: the Tag reads "Not
|
|
116
|
+
* confirmed" and the strip is the `failure` sentence alone, or
|
|
117
|
+
* `labels.unknownNotice` without one. Ignored in every other state.
|
|
118
|
+
*/
|
|
119
|
+
failureOutcome?: ProposalFailureOutcome | undefined;
|
|
86
120
|
/**
|
|
87
121
|
* What the person can do next about a failure, on its own quieter line
|
|
88
|
-
* after the failure sentence and "Nothing changed."
|
|
89
|
-
* such as "Ask an admin to give you access." Drawn
|
|
122
|
+
* after the failure sentence (and "Nothing changed.", where it is said):
|
|
123
|
+
* the route's next step, such as "Ask an admin to give you access." Drawn
|
|
124
|
+
* only with `failure`.
|
|
90
125
|
*/
|
|
91
126
|
failureHint?: ReactNode;
|
|
92
127
|
/**
|
|
@@ -99,6 +134,16 @@ export interface ProposalCardProps extends Omit<HTMLAttributes<HTMLElement>, 'ti
|
|
|
99
134
|
* other state. Decline stays available.
|
|
100
135
|
*/
|
|
101
136
|
approveBlocked?: string | undefined;
|
|
137
|
+
/**
|
|
138
|
+
* Why the person's last decision was refused while the card still waits on
|
|
139
|
+
* one (`pending` or `stepup`): the approval came back refused, but the
|
|
140
|
+
* proposal stands and can be decided again. Drawn above the decision in the
|
|
141
|
+
* danger ink, with its hint, and announced politely: the foot keeps a live
|
|
142
|
+
* region for it from the moment the card can be decided, so words that
|
|
143
|
+
* arrive later are heard. The consumer clears it (on the next press, say).
|
|
144
|
+
* Ignored in every other state, where the strip says what happened.
|
|
145
|
+
*/
|
|
146
|
+
decisionRefusal?: ProposalDecisionRefusal | undefined;
|
|
102
147
|
/** Replaces the default sentence of a step-up, declined, expired or stale card. */
|
|
103
148
|
notice?: ReactNode;
|
|
104
149
|
labels?: Partial<ProposalCardLabels> | undefined;
|
|
@@ -130,5 +175,9 @@ export interface ProposalCardProps extends Omit<HTMLAttributes<HTMLElement>, 'ti
|
|
|
130
175
|
*
|
|
131
176
|
* Every sentence a refusal shows is the caller's (the engine's), never the
|
|
132
177
|
* card's own words about why.
|
|
178
|
+
*
|
|
179
|
+
* "NOTHING CHANGED." ONLY WHEN IT IS TRUE. A failure whose outcome nobody
|
|
180
|
+
* could confirm (`failureOutcome="unknown"`) may have landed, so the card
|
|
181
|
+
* says "Not confirmed" and never adds the reassurance.
|
|
133
182
|
*/
|
|
134
|
-
export declare function ProposalCard({ title, subtitle, state, scope, kind, summary, changes, changesHeading, note, approveLabel, onApprove, onDecline, onPrepareAgain, onRetry, receipt, failure, failureHint, approveBlocked, notice, labels: overrides, changeLabels, diffLabels, className, ...rest }: ProposalCardProps): import("react").JSX.Element;
|
|
183
|
+
export declare function ProposalCard({ title, subtitle, state, scope, kind, summary, changes, changesHeading, note, approveLabel, onApprove, onDecline, onPrepareAgain, onRetry, receipt, failure, failureOutcome, failureHint, approveBlocked, decisionRefusal, notice, labels: overrides, changeLabels, diffLabels, className, ...rest }: ProposalCardProps): import("react").JSX.Element;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import './ProposalCard.css';
|
|
2
|
-
export { PROPOSAL_CARD_LABELS, PROPOSAL_STATES, ProposalCard } from './ProposalCard.js';
|
|
3
|
-
export type { ProposalCardLabels, ProposalCardProps, ProposalKind, ProposalScope, ProposalState } from './ProposalCard.js';
|
|
2
|
+
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from './ProposalCard.js';
|
|
3
|
+
export type { ProposalCardLabels, ProposalCardProps, ProposalDecisionRefusal, ProposalFailureOutcome, ProposalKind, ProposalScope, ProposalState, } from './ProposalCard.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { PROPOSAL_CARD_LABELS, PROPOSAL_STATES, ProposalCard } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from '../chunk-CIYHSTIF.js';
|
|
2
|
+
import '../chunk-LZXY6IMO.js';
|
|
3
3
|
import '../chunk-WDIVALLP.js';
|
|
4
4
|
import '../chunk-NEHSV55H.js';
|
|
5
5
|
import '../chunk-Z3GDMNMU.js';
|
|
@@ -17,3 +17,13 @@
|
|
|
17
17
|
font-size: var(--font-size-compact);
|
|
18
18
|
text-align: end;
|
|
19
19
|
}
|
|
20
|
+
|
|
21
|
+
/* WHY THE LAST DECISION WAS REFUSED, on a line of its own above the
|
|
22
|
+
decision and at its end, as the held primary's reason is: the refusal
|
|
23
|
+
strip's own inline drawing, which wraps rather than widening the row. */
|
|
24
|
+
.crewlet-proposal-card__refusal {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex: 1 1 100%;
|
|
27
|
+
justify-content: flex-end;
|
|
28
|
+
text-align: end;
|
|
29
|
+
}
|
|
@@ -14,6 +14,13 @@ export interface ReceiptStripProps extends Omit<HTMLAttributes<HTMLDivElement>,
|
|
|
14
14
|
children: ReactNode;
|
|
15
15
|
/** Controls at the strip's end, such as Try again. */
|
|
16
16
|
actions?: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the strip is its own live region (true, the default: an alert
|
|
19
|
+
* for `danger`, a status otherwise). False leaves the announcement to a
|
|
20
|
+
* live region the host already keeps around it, which is the reliable way
|
|
21
|
+
* to announce words that arrive after the page did.
|
|
22
|
+
*/
|
|
23
|
+
announce?: boolean | undefined;
|
|
17
24
|
}
|
|
18
25
|
/**
|
|
19
26
|
* What happened, at the foot of a card: "Created ENG-156 · assigned to Agent
|
|
@@ -27,7 +34,7 @@ export interface ReceiptStripProps extends Omit<HTMLAttributes<HTMLDivElement>,
|
|
|
27
34
|
* one tone a reader must not miss; every other tone is a polite status.
|
|
28
35
|
* Colour is never alone: the mark and the words say the outcome.
|
|
29
36
|
*/
|
|
30
|
-
export declare function ReceiptStrip({ tone, icon, children, actions, className, ...rest }: ReceiptStripProps): import("react").JSX.Element;
|
|
37
|
+
export declare function ReceiptStrip({ tone, icon, children, actions, announce, className, ...rest }: ReceiptStripProps): import("react").JSX.Element;
|
|
31
38
|
export interface RefusalStripLabels {
|
|
32
39
|
retry: string;
|
|
33
40
|
dismiss: string;
|
|
@@ -48,6 +55,11 @@ export interface RefusalStripProps extends Omit<HTMLAttributes<HTMLElement>, 'ro
|
|
|
48
55
|
onDismiss?: (() => void) | undefined;
|
|
49
56
|
/** `inline` (the default) under a control; `foot` as a card's foot strip. */
|
|
50
57
|
placement?: RefusalStripPlacement | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Whether the strip is its own alert (true, the default). False leaves the
|
|
60
|
+
* announcement to a live region the host keeps around it.
|
|
61
|
+
*/
|
|
62
|
+
announce?: boolean | undefined;
|
|
51
63
|
labels?: Partial<RefusalStripLabels> | undefined;
|
|
52
64
|
}
|
|
53
65
|
/**
|
|
@@ -63,4 +75,4 @@ export interface RefusalStripProps extends Omit<HTMLAttributes<HTMLElement>, 'ro
|
|
|
63
75
|
* AN ALERT, because a write that did not happen is the one outcome a reader
|
|
64
76
|
* must hear without looking for it.
|
|
65
77
|
*/
|
|
66
|
-
export declare function RefusalStrip({ children, hint, onRetry, retrying, onDismiss, placement, labels: overrides, className, ...rest }: RefusalStripProps): import("react").JSX.Element;
|
|
78
|
+
export declare function RefusalStrip({ children, hint, onRetry, retrying, onDismiss, placement, announce, labels: overrides, className, ...rest }: RefusalStripProps): import("react").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { REFUSAL_STRIP_LABELS, ReceiptStrip, RefusalStrip } from '../chunk-
|
|
1
|
+
export { REFUSAL_STRIP_LABELS, ReceiptStrip, RefusalStrip } from '../chunk-LZXY6IMO.js';
|
|
2
2
|
import '../chunk-HD4QJ2SI.js';
|
|
3
3
|
import '../chunk-EA23JG6R.js';
|
|
4
4
|
import '../chunk-BZFWDIV6.js';
|
package/dist/RichEditor/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { RichEditor, preloadRichEditor } from '../chunk-
|
|
1
|
+
export { RichEditor, preloadRichEditor } from '../chunk-WBTCOFMZ.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
|
-
import {
|
|
1
|
+
import { RefusalStrip, ReceiptStrip } from './chunk-LZXY6IMO.js';
|
|
2
2
|
import { StatusCard } from './chunk-WDIVALLP.js';
|
|
3
3
|
import { ChangeList } from './chunk-NEHSV55H.js';
|
|
4
4
|
import { Button } from './chunk-HD4QJ2SI.js';
|
|
5
5
|
import { Spinner } from './chunk-EA23JG6R.js';
|
|
6
6
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
7
|
-
import './ProposalCard-
|
|
7
|
+
import './ProposalCard-23575F4C.css';
|
|
8
8
|
import { RefreshCwGlyph, LockGlyph, BanGlyph, ClockGlyph, CircleAlertGlyph, CircleCheckGlyph } from '@crewlethq/icons/glyphs';
|
|
9
9
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
10
10
|
|
|
@@ -18,6 +18,7 @@ var PROPOSAL_STATES = [
|
|
|
18
18
|
"stale",
|
|
19
19
|
"failed"
|
|
20
20
|
];
|
|
21
|
+
var PROPOSAL_FAILURE_OUTCOMES = ["unchanged", "unknown"];
|
|
21
22
|
var PROPOSAL_CARD_LABELS = {
|
|
22
23
|
needsApproval: "Needs your approval",
|
|
23
24
|
needsSignIn: "Needs sign-in",
|
|
@@ -29,6 +30,7 @@ var PROPOSAL_CARD_LABELS = {
|
|
|
29
30
|
expired: "Expired",
|
|
30
31
|
stale: "Needs a fresh look",
|
|
31
32
|
notApplied: "Not applied",
|
|
33
|
+
notConfirmed: "Not confirmed",
|
|
32
34
|
decline: "Decline",
|
|
33
35
|
confirmIdentity: "Confirm it\u2019s you",
|
|
34
36
|
prepareAgain: "Prepare it again",
|
|
@@ -43,10 +45,11 @@ var PROPOSAL_CARD_LABELS = {
|
|
|
43
45
|
expiredNotice: "This proposal expired. Nothing changed.",
|
|
44
46
|
staleNotice: "What this would change moved after it was prepared, so it was not applied. Nothing changed.",
|
|
45
47
|
nothingChanged: "Nothing changed.",
|
|
48
|
+
unknownNotice: "Could not confirm whether this was applied. It may have landed.",
|
|
46
49
|
busy: "The approved change is being carried out"
|
|
47
50
|
};
|
|
48
51
|
var SETTLED = /* @__PURE__ */ new Set(["applied", "declined", "expired", "stale", "failed"]);
|
|
49
|
-
function statusOf(state, scope, labels) {
|
|
52
|
+
function statusOf(state, scope, outcome, labels) {
|
|
50
53
|
switch (state) {
|
|
51
54
|
case "pending":
|
|
52
55
|
return { label: labels.needsApproval, tone: "warning", icon: /* @__PURE__ */ jsx(ClockGlyph, { size: "xs" }) };
|
|
@@ -63,7 +66,11 @@ function statusOf(state, scope, labels) {
|
|
|
63
66
|
case "stale":
|
|
64
67
|
return { label: labels.stale, tone: "neutral", icon: /* @__PURE__ */ jsx(ClockGlyph, { size: "xs" }) };
|
|
65
68
|
case "failed":
|
|
66
|
-
return {
|
|
69
|
+
return {
|
|
70
|
+
label: outcome === "unknown" ? labels.notConfirmed : labels.notApplied,
|
|
71
|
+
tone: "danger",
|
|
72
|
+
icon: /* @__PURE__ */ jsx(CircleAlertGlyph, { size: "xs" })
|
|
73
|
+
};
|
|
67
74
|
}
|
|
68
75
|
}
|
|
69
76
|
function headingOf(state, kind, labels) {
|
|
@@ -88,8 +95,10 @@ function ProposalCard({
|
|
|
88
95
|
onRetry,
|
|
89
96
|
receipt,
|
|
90
97
|
failure,
|
|
98
|
+
failureOutcome = "unchanged",
|
|
91
99
|
failureHint,
|
|
92
100
|
approveBlocked,
|
|
101
|
+
decisionRefusal,
|
|
93
102
|
notice,
|
|
94
103
|
labels: overrides,
|
|
95
104
|
changeLabels,
|
|
@@ -99,8 +108,18 @@ function ProposalCard({
|
|
|
99
108
|
}) {
|
|
100
109
|
const labels = overrides ? { ...PROPOSAL_CARD_LABELS, ...overrides } : PROPOSAL_CARD_LABELS;
|
|
101
110
|
const settled = SETTLED.has(state);
|
|
102
|
-
const
|
|
103
|
-
const
|
|
111
|
+
const deciding = state === "pending" || state === "stepup";
|
|
112
|
+
const blocked = deciding && approveBlocked ? approveBlocked : void 0;
|
|
113
|
+
const refusal = deciding ? decisionRefusal : void 0;
|
|
114
|
+
const decision = deciding || state === "applying" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
115
|
+
/* @__PURE__ */ jsx(
|
|
116
|
+
"div",
|
|
117
|
+
{
|
|
118
|
+
role: "status",
|
|
119
|
+
className: cx("crewlet-proposal-card__refusal", refusal === void 0 && "crewlet-visually-hidden"),
|
|
120
|
+
children: refusal === void 0 ? null : /* @__PURE__ */ jsx(RefusalStrip, { announce: false, hint: refusal.hint, children: refusal.sentence })
|
|
121
|
+
}
|
|
122
|
+
),
|
|
104
123
|
blocked === void 0 ? null : /* @__PURE__ */ jsx("p", { className: "crewlet-proposal-card__blocked", "aria-hidden": "true", children: blocked }),
|
|
105
124
|
/* @__PURE__ */ jsx(
|
|
106
125
|
Button,
|
|
@@ -121,7 +140,7 @@ function ProposalCard({
|
|
|
121
140
|
hint: failure === void 0 ? void 0 : failureHint,
|
|
122
141
|
onRetry,
|
|
123
142
|
labels: { retry: labels.tryAgain },
|
|
124
|
-
children: failure === void 0 ? labels.nothingChanged : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
143
|
+
children: failureOutcome === "unknown" ? failure ?? labels.unknownNotice : failure === void 0 ? labels.nothingChanged : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
125
144
|
failure,
|
|
126
145
|
" ",
|
|
127
146
|
labels.nothingChanged
|
|
@@ -134,13 +153,14 @@ function ProposalCard({
|
|
|
134
153
|
...rest,
|
|
135
154
|
title,
|
|
136
155
|
subtitle,
|
|
137
|
-
status: statusOf(state, scope, labels),
|
|
156
|
+
status: statusOf(state, scope, failureOutcome, labels),
|
|
138
157
|
settled,
|
|
139
158
|
strip,
|
|
140
159
|
actions: decision ?? again,
|
|
141
160
|
actionsAlign: decision ? "end" : "start",
|
|
142
161
|
className: cx("crewlet-proposal-card", `crewlet-proposal-card--${state}`, className),
|
|
143
162
|
"data-state": state,
|
|
163
|
+
"data-outcome": state === "failed" ? failureOutcome : void 0,
|
|
144
164
|
children: [
|
|
145
165
|
summary === void 0 || summary === null ? null : /* @__PURE__ */ jsx("p", { className: "crewlet-proposal-card__summary", children: summary }),
|
|
146
166
|
/* @__PURE__ */ jsx(
|
|
@@ -159,4 +179,4 @@ function ProposalCard({
|
|
|
159
179
|
);
|
|
160
180
|
}
|
|
161
181
|
|
|
162
|
-
export { PROPOSAL_CARD_LABELS, PROPOSAL_STATES, ProposalCard };
|
|
182
|
+
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard };
|
|
@@ -11,12 +11,20 @@ var ICONS = {
|
|
|
11
11
|
warning: /* @__PURE__ */ jsx(TriangleAlertGlyph, { size: "md" }),
|
|
12
12
|
danger: /* @__PURE__ */ jsx(CircleAlertGlyph, { size: "md" })
|
|
13
13
|
};
|
|
14
|
-
function ReceiptStrip({
|
|
14
|
+
function ReceiptStrip({
|
|
15
|
+
tone = "success",
|
|
16
|
+
icon,
|
|
17
|
+
children,
|
|
18
|
+
actions,
|
|
19
|
+
announce = true,
|
|
20
|
+
className,
|
|
21
|
+
...rest
|
|
22
|
+
}) {
|
|
15
23
|
return /* @__PURE__ */ jsxs(
|
|
16
24
|
"div",
|
|
17
25
|
{
|
|
18
26
|
...rest,
|
|
19
|
-
role: tone === "danger" ? "alert" : "status",
|
|
27
|
+
role: announce ? tone === "danger" ? "alert" : "status" : void 0,
|
|
20
28
|
className: cx("crewlet-receipt-strip", `crewlet-receipt-strip--${tone}`, className),
|
|
21
29
|
children: [
|
|
22
30
|
/* @__PURE__ */ jsx("span", { className: "crewlet-receipt-strip__icon", "aria-hidden": "true", children: icon ?? ICONS[tone] }),
|
|
@@ -34,6 +42,7 @@ function RefusalStrip({
|
|
|
34
42
|
retrying = false,
|
|
35
43
|
onDismiss,
|
|
36
44
|
placement = "inline",
|
|
45
|
+
announce = true,
|
|
37
46
|
labels: overrides,
|
|
38
47
|
className,
|
|
39
48
|
...rest
|
|
@@ -48,9 +57,9 @@ function RefusalStrip({
|
|
|
48
57
|
hint === void 0 || hint === null ? null : /* @__PURE__ */ jsx("span", { className: "crewlet-refusal-strip__hint", children: hint })
|
|
49
58
|
] });
|
|
50
59
|
if (placement === "foot") {
|
|
51
|
-
return /* @__PURE__ */ jsx(ReceiptStrip, { ...rest, tone: "danger", actions, className: cx("crewlet-refusal-strip--foot", className), children: words });
|
|
60
|
+
return /* @__PURE__ */ jsx(ReceiptStrip, { ...rest, tone: "danger", announce, actions, className: cx("crewlet-refusal-strip--foot", className), children: words });
|
|
52
61
|
}
|
|
53
|
-
return /* @__PURE__ */ jsxs("span", { ...rest, role: "alert", className: cx("crewlet-refusal-strip", className), children: [
|
|
62
|
+
return /* @__PURE__ */ jsxs("span", { ...rest, role: announce ? "alert" : void 0, className: cx("crewlet-refusal-strip", className), children: [
|
|
54
63
|
words,
|
|
55
64
|
actions
|
|
56
65
|
] });
|
|
@@ -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-
|
|
12
|
+
loading ??= import('./Editor-S4HARQ7V.js').then(
|
|
13
13
|
(module) => {
|
|
14
14
|
engine = module.Editor;
|
|
15
15
|
return engine;
|
|
@@ -2,8 +2,9 @@ import { useMediaMatch } from './chunk-RTPQDNW3.js';
|
|
|
2
2
|
import { Menu } from './chunk-TKS7FTTO.js';
|
|
3
3
|
import { PeekContext, AsideContext, ResizeHandle, clampSize } from './chunk-PIYJNCN7.js';
|
|
4
4
|
import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
|
|
5
|
-
import { useModalLayer,
|
|
5
|
+
import { focusables, useModalLayer, isComposing, layerCount } from './chunk-H5XTJ7GJ.js';
|
|
6
6
|
import { IconButton } from './chunk-2BQYODY3.js';
|
|
7
|
+
import { returnFocus } from './chunk-NUZHC6MM.js';
|
|
7
8
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
8
9
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
9
10
|
import './HitArea-QUOS6ZDJ.css';
|
|
@@ -102,6 +103,7 @@ function AppShell({
|
|
|
102
103
|
asideReserve,
|
|
103
104
|
asideLabel,
|
|
104
105
|
asideShape = "column",
|
|
106
|
+
asideModal = true,
|
|
105
107
|
onAsideClose,
|
|
106
108
|
asideResize,
|
|
107
109
|
peek,
|
|
@@ -245,6 +247,7 @@ function AppShell({
|
|
|
245
247
|
ShellAside,
|
|
246
248
|
{
|
|
247
249
|
shape: asideShape,
|
|
250
|
+
modal: asideShape === "sheet" || asideShape === "overlay" && asideModal,
|
|
248
251
|
label: asideLabel,
|
|
249
252
|
width: asideWidth,
|
|
250
253
|
resize: asideResize,
|
|
@@ -256,10 +259,10 @@ function AppShell({
|
|
|
256
259
|
}
|
|
257
260
|
) });
|
|
258
261
|
}
|
|
259
|
-
function ShellAside({ shape, label, width, resize, onClose, children }) {
|
|
262
|
+
function ShellAside({ shape, modal, label, width, resize, onClose, children }) {
|
|
260
263
|
const region = useRef(null);
|
|
261
264
|
const surfaceId = useId();
|
|
262
|
-
|
|
265
|
+
useLooseOverlay(region, shape === "overlay" && !modal, onClose);
|
|
263
266
|
const [z, setZ] = useState(null);
|
|
264
267
|
return /* @__PURE__ */ jsxs(AsideContext.Provider, { value: { shape }, children: [
|
|
265
268
|
/* @__PURE__ */ jsxs(
|
|
@@ -271,10 +274,11 @@ function ShellAside({ shape, label, width, resize, onClose, children }) {
|
|
|
271
274
|
role: modal ? "dialog" : "complementary",
|
|
272
275
|
"aria-modal": modal || void 0,
|
|
273
276
|
"aria-label": label,
|
|
274
|
-
tabIndex: modal ? -1 : void 0,
|
|
277
|
+
tabIndex: modal || shape === "overlay" ? -1 : void 0,
|
|
278
|
+
"data-modal": modal ? "true" : "false",
|
|
275
279
|
style: modal && z !== null ? { zIndex: z + 1 } : void 0,
|
|
276
280
|
children: [
|
|
277
|
-
|
|
281
|
+
shape === "column" && resize ? /* @__PURE__ */ jsx(
|
|
278
282
|
ResizeHandle,
|
|
279
283
|
{
|
|
280
284
|
label: resize.label,
|
|
@@ -295,6 +299,39 @@ function ShellAside({ shape, label, width, resize, onClose, children }) {
|
|
|
295
299
|
modal ? /* @__PURE__ */ jsx(AsideVeil, { region, onClose, onZIndex: setZ }) : null
|
|
296
300
|
] });
|
|
297
301
|
}
|
|
302
|
+
function useLooseOverlay(region, active, onClose) {
|
|
303
|
+
const [opener] = useState(() => typeof document === "undefined" ? null : document.activeElement);
|
|
304
|
+
const loose = useRef(active);
|
|
305
|
+
loose.current = active;
|
|
306
|
+
const close = useRef(onClose);
|
|
307
|
+
close.current = onClose;
|
|
308
|
+
useEffect(() => {
|
|
309
|
+
const panel = region.current;
|
|
310
|
+
if (!loose.current || !panel || panel.contains(document.activeElement)) return;
|
|
311
|
+
(focusables(panel)[0] ?? panel).focus();
|
|
312
|
+
}, [region]);
|
|
313
|
+
useLayoutEffect(() => {
|
|
314
|
+
const panel = region.current;
|
|
315
|
+
return () => {
|
|
316
|
+
if (!loose.current || !panel?.contains(document.activeElement)) return;
|
|
317
|
+
if (opener instanceof HTMLElement && opener.isConnected && opener !== document.body) returnFocus(opener);
|
|
318
|
+
};
|
|
319
|
+
}, [region, opener]);
|
|
320
|
+
useEffect(() => {
|
|
321
|
+
const panel = region.current;
|
|
322
|
+
if (!active || !panel) return void 0;
|
|
323
|
+
const doc = panel.ownerDocument;
|
|
324
|
+
const onKeyDown = (event) => {
|
|
325
|
+
if (event.key !== "Escape" || event.defaultPrevented || isComposing(event)) return;
|
|
326
|
+
if (!(event.target instanceof Node) || !panel.contains(event.target)) return;
|
|
327
|
+
if (layerCount() > 0 || !close.current) return;
|
|
328
|
+
event.preventDefault();
|
|
329
|
+
close.current();
|
|
330
|
+
};
|
|
331
|
+
doc.addEventListener("keydown", onKeyDown);
|
|
332
|
+
return () => doc.removeEventListener("keydown", onKeyDown);
|
|
333
|
+
}, [active, region]);
|
|
334
|
+
}
|
|
298
335
|
function AsideVeil({
|
|
299
336
|
region,
|
|
300
337
|
onClose,
|
package/dist/generated/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import '../chunk-EWTPXRRM.js';
|
|
2
2
|
export { ElementToPngError, elementToPng, parseCsv, serializeElement, toCsv } from '../chunk-FEJANUZK.js';
|
|
3
3
|
export { TreeCanvas } from '../chunk-YCZ2FBKA.js';
|
|
4
|
-
export { TypeSpecimen } from '../chunk-JKAFEFFC.js';
|
|
5
4
|
export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-OHG7762N.js';
|
|
5
|
+
export { TypeSpecimen } from '../chunk-JKAFEFFC.js';
|
|
6
6
|
export { VersionTimeline } from '../chunk-67MW366X.js';
|
|
7
7
|
export { WidgetFrame } from '../chunk-PDTEPN4D.js';
|
|
8
8
|
export { ThemeToggle } from '../chunk-N3ISZVLK.js';
|
|
@@ -15,13 +15,13 @@ export { ThemeGallery } from '../chunk-ESUZ27TS.js';
|
|
|
15
15
|
export { ThemeSwatch } from '../chunk-MNFU2RNT.js';
|
|
16
16
|
export { DensitySwitcher, ThemeSwitcher } from '../chunk-S5C64PTT.js';
|
|
17
17
|
export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from '../chunk-Z24ZUSTX.js';
|
|
18
|
-
export { StatGroup } from '../chunk-OUD75UB2.js';
|
|
19
18
|
export { SuggestionList, SuggestionRow } from '../chunk-SDSBVVLL.js';
|
|
20
19
|
export { Switcher } from '../chunk-67F2AM4R.js';
|
|
21
20
|
export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-3EYSYEXP.js';
|
|
22
21
|
export { SlideGrid } from '../chunk-3V5T5K5H.js';
|
|
23
22
|
export { SOURCE_EDITOR_KEYS, SourceEditor, lineStart } from '../chunk-D3EJSLCL.js';
|
|
24
23
|
export { StatCard } from '../chunk-YPTTSJPM.js';
|
|
24
|
+
export { StatGroup } from '../chunk-OUD75UB2.js';
|
|
25
25
|
export { Statement } from '../chunk-MZJKPTA5.js';
|
|
26
26
|
export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-TD3UHDFY.js';
|
|
27
27
|
export { TagGroup } from '../chunk-O2EGEONV.js';
|
|
@@ -32,15 +32,15 @@ export { SlideFilmstrip } from '../chunk-WOW5SCEK.js';
|
|
|
32
32
|
export { SegmentedMeter, segmentedMeterLabel } from '../chunk-4AK52VHB.js';
|
|
33
33
|
export { SelectionBar } from '../chunk-NK3D66PB.js';
|
|
34
34
|
export { SEND_BUTTON_LABELS, SendButton } from '../chunk-JILNCBBS.js';
|
|
35
|
-
export { SettingsTable, SettingsTableRow } from '../chunk-4RKTZSEW.js';
|
|
36
35
|
export { SetupWizard } from '../chunk-D5OSP3KI.js';
|
|
36
|
+
export { SettingsTable, SettingsTableRow } from '../chunk-4RKTZSEW.js';
|
|
37
37
|
export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-OOZ5AGPS.js';
|
|
38
38
|
export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-EBG3V4MK.js';
|
|
39
39
|
export { Select } from '../chunk-XQZ6EWOE.js';
|
|
40
|
-
export { RichEditor, preloadRichEditor } from '../chunk-NI7WUPH3.js';
|
|
41
|
-
export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-CSQTDGTS.js';
|
|
42
40
|
export { canonicalMarkdown, roundTripMarkdown } from '../chunk-SWD4QBL6.js';
|
|
43
41
|
import '../chunk-QH6VYJ3X.js';
|
|
42
|
+
export { RichEditor, preloadRichEditor } from '../chunk-WBTCOFMZ.js';
|
|
43
|
+
export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-CSQTDGTS.js';
|
|
44
44
|
export { RUN_STATES, RunChip } from '../chunk-EVWTLFKI.js';
|
|
45
45
|
export { STEP_STATES, STEP_STATE_LABELS, StepList, StepStateMark, Stepper, stepDetailPieces } from '../chunk-CGT4R7LW.js';
|
|
46
46
|
export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from '../chunk-OZIBNFLO.js';
|
|
@@ -58,10 +58,10 @@ export { PresenterView, formatStopwatch } from '../chunk-EGL24VY5.js';
|
|
|
58
58
|
export { SLIDE_NAV_LABELS, SlideNav } from '../chunk-OHBXOEP3.js';
|
|
59
59
|
export { SLIDE_HEIGHT, SLIDE_WIDTH, SlideStage, useSlideKeys } from '../chunk-RMEBFYL7.js';
|
|
60
60
|
export { PricingCard } from '../chunk-U3ILLCR2.js';
|
|
61
|
+
export { PrincipalPicker } from '../chunk-TA72CURM.js';
|
|
61
62
|
export { PropertyList } from '../chunk-XZ42MKHK.js';
|
|
62
|
-
export { PROPOSAL_CARD_LABELS, PROPOSAL_STATES, ProposalCard } from '../chunk-
|
|
63
|
+
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from '../chunk-CIYHSTIF.js';
|
|
63
64
|
export { Prose } from '../chunk-JCSA3XVH.js';
|
|
64
|
-
export { PrincipalPicker } from '../chunk-TA72CURM.js';
|
|
65
65
|
export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from '../chunk-Y56FM3K4.js';
|
|
66
66
|
export { PageNote } from '../chunk-CV4NES3P.js';
|
|
67
67
|
export { PEEK_RAIL_LABELS, PEEK_RAIL_MAX_WIDTH, PEEK_RAIL_MIN_WIDTH, PEEK_RAIL_WIDTH, PeekHost, PeekNeighbours, PeekRail, isPlainPress, peekClickHandler, peekRowActivation, usePeekNeighbours, usePeekOrder, usePeekStep } from '../chunk-LXYSWQNE.js';
|
|
@@ -70,8 +70,8 @@ export { PinTile } from '../chunk-JMMS2PQU.js';
|
|
|
70
70
|
export { PresenceStack } from '../chunk-3LYWD3BO.js';
|
|
71
71
|
import '../chunk-CENOOTAV.js';
|
|
72
72
|
export { FactLine, ObjectHeader, SetByLine } from '../chunk-ICWUDNAZ.js';
|
|
73
|
-
export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-
|
|
74
|
-
export { REFUSAL_STRIP_LABELS, ReceiptStrip, RefusalStrip } from '../chunk-
|
|
73
|
+
export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-CZNG3V6L.js';
|
|
74
|
+
export { REFUSAL_STRIP_LABELS, ReceiptStrip, RefusalStrip } from '../chunk-LZXY6IMO.js';
|
|
75
75
|
export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-YA3AWELW.js';
|
|
76
76
|
export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-GPW4M4OI.js';
|
|
77
77
|
export { TreeGrid } from '../chunk-VRNUKH2W.js';
|
|
@@ -138,8 +138,8 @@ export { CONFLICT_NOTE_LABELS, ConflictNote } from '../chunk-HVEDVKXL.js';
|
|
|
138
138
|
export { Container } from '../chunk-HJO4WCH6.js';
|
|
139
139
|
export { ContrastHelp } from '../chunk-YCGZK2E4.js';
|
|
140
140
|
export { ContrastBadge, ContrastLevelTag, contrastLevel, contrastRatio, formatContrastRatio } from '../chunk-WW7TU6HE.js';
|
|
141
|
-
export { ChoiceList } from '../chunk-EAQLI2SO.js';
|
|
142
141
|
export { CodeBlock } from '../chunk-6T6V5565.js';
|
|
142
|
+
export { ChoiceList } from '../chunk-EAQLI2SO.js';
|
|
143
143
|
export { ColorChip } from '../chunk-6GTTRJWJ.js';
|
|
144
144
|
export { ColorField } from '../chunk-3NQS6KYG.js';
|
|
145
145
|
export { ColorSwatch } from '../chunk-NQGZRMUG.js';
|
|
@@ -165,18 +165,18 @@ export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth,
|
|
|
165
165
|
export { Callout } from '../chunk-BPCY7ZID.js';
|
|
166
166
|
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-Q6R6EUQ4.js';
|
|
167
167
|
export { Note } from '../chunk-5SZGKSGL.js';
|
|
168
|
+
export { CanvasSchematic } from '../chunk-NBWNLYWZ.js';
|
|
168
169
|
export { CanvasToolbar, toolForKey } from '../chunk-LQ6AGUDL.js';
|
|
169
170
|
export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-NR4CPM4T.js';
|
|
170
171
|
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-YEURM24I.js';
|
|
171
172
|
import '../chunk-LM3ISVJA.js';
|
|
172
|
-
export { CanvasSchematic } from '../chunk-NBWNLYWZ.js';
|
|
173
173
|
export { CatalogTile } from '../chunk-TGSIVB6H.js';
|
|
174
|
-
export { BrandChip } from '../chunk-ZH77BXMA.js';
|
|
175
174
|
export { AvatarPicker } from '../chunk-4OINEWR4.js';
|
|
176
175
|
export { HuePicker, HueSwatch } from '../chunk-OYAXKHVW.js';
|
|
177
176
|
export { Popover } from '../chunk-KHJIEPZV.js';
|
|
178
177
|
export { NODE_HUES, NODE_HUE_NAMES, isNodeHue } from '../chunk-AYKXMIOR.js';
|
|
179
178
|
export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-SNQRGH4A.js';
|
|
179
|
+
export { BrandChip } from '../chunk-ZH77BXMA.js';
|
|
180
180
|
export { BrandSample } from '../chunk-AVMQMY66.js';
|
|
181
181
|
export { BrandScope, brandScopeInputs } from '../chunk-X7WEE3EK.js';
|
|
182
182
|
import '../chunk-5SGHW42B.js';
|
|
@@ -235,7 +235,7 @@ export { DisclosureAnatomy } from '../chunk-TFGCNBWP.js';
|
|
|
235
235
|
export { Count } from '../chunk-BHHIIK3M.js';
|
|
236
236
|
export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from '../chunk-PQADV6P6.js';
|
|
237
237
|
export { Announcer, announce, useAnnouncer } from '../chunk-RSAQOKH3.js';
|
|
238
|
-
export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useStoredWidth } from '../chunk-
|
|
238
|
+
export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useStoredWidth } from '../chunk-YGC7BFX2.js';
|
|
239
239
|
export { useMediaMatch } from '../chunk-RTPQDNW3.js';
|
|
240
240
|
export { Menu } from '../chunk-TKS7FTTO.js';
|
|
241
241
|
export { RESIZE_HANDLE_LARGE_STEP, RESIZE_HANDLE_STEP, ResizeHandle, clampSize, useAppShellAside, useAppShellPeek } from '../chunk-PIYJNCN7.js';
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import './chunk-EWTPXRRM.js';
|
|
2
2
|
export { ElementToPngError, elementToPng, parseCsv, serializeElement, toCsv } from './chunk-FEJANUZK.js';
|
|
3
3
|
export { TreeCanvas } from './chunk-YCZ2FBKA.js';
|
|
4
|
-
export { TypeSpecimen } from './chunk-JKAFEFFC.js';
|
|
5
4
|
export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from './chunk-OHG7762N.js';
|
|
5
|
+
export { TypeSpecimen } from './chunk-JKAFEFFC.js';
|
|
6
6
|
export { VersionTimeline } from './chunk-67MW366X.js';
|
|
7
7
|
export { WidgetFrame } from './chunk-PDTEPN4D.js';
|
|
8
8
|
export { ThemeToggle } from './chunk-N3ISZVLK.js';
|
|
@@ -15,13 +15,13 @@ export { ThemeGallery } from './chunk-ESUZ27TS.js';
|
|
|
15
15
|
export { ThemeSwatch } from './chunk-MNFU2RNT.js';
|
|
16
16
|
export { DensitySwitcher, ThemeSwitcher } from './chunk-S5C64PTT.js';
|
|
17
17
|
export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from './chunk-Z24ZUSTX.js';
|
|
18
|
-
export { StatGroup } from './chunk-OUD75UB2.js';
|
|
19
18
|
export { SuggestionList, SuggestionRow } from './chunk-SDSBVVLL.js';
|
|
20
19
|
export { Switcher } from './chunk-67F2AM4R.js';
|
|
21
20
|
export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from './chunk-3EYSYEXP.js';
|
|
22
21
|
export { SlideGrid } from './chunk-3V5T5K5H.js';
|
|
23
22
|
export { SOURCE_EDITOR_KEYS, SourceEditor, lineStart } from './chunk-D3EJSLCL.js';
|
|
24
23
|
export { StatCard } from './chunk-YPTTSJPM.js';
|
|
24
|
+
export { StatGroup } from './chunk-OUD75UB2.js';
|
|
25
25
|
export { Statement } from './chunk-MZJKPTA5.js';
|
|
26
26
|
export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from './chunk-TD3UHDFY.js';
|
|
27
27
|
export { TagGroup } from './chunk-O2EGEONV.js';
|
|
@@ -32,15 +32,15 @@ export { SlideFilmstrip } from './chunk-WOW5SCEK.js';
|
|
|
32
32
|
export { SegmentedMeter, segmentedMeterLabel } from './chunk-4AK52VHB.js';
|
|
33
33
|
export { SelectionBar } from './chunk-NK3D66PB.js';
|
|
34
34
|
export { SEND_BUTTON_LABELS, SendButton } from './chunk-JILNCBBS.js';
|
|
35
|
-
export { SettingsTable, SettingsTableRow } from './chunk-4RKTZSEW.js';
|
|
36
35
|
export { SetupWizard } from './chunk-D5OSP3KI.js';
|
|
36
|
+
export { SettingsTable, SettingsTableRow } from './chunk-4RKTZSEW.js';
|
|
37
37
|
export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from './chunk-OOZ5AGPS.js';
|
|
38
38
|
export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from './chunk-EBG3V4MK.js';
|
|
39
39
|
export { Select } from './chunk-XQZ6EWOE.js';
|
|
40
|
-
export { RichEditor, preloadRichEditor } from './chunk-NI7WUPH3.js';
|
|
41
|
-
export { RICH_EDITOR_LABELS, richEditorLabels } from './chunk-CSQTDGTS.js';
|
|
42
40
|
export { canonicalMarkdown, roundTripMarkdown } from './chunk-SWD4QBL6.js';
|
|
43
41
|
import './chunk-QH6VYJ3X.js';
|
|
42
|
+
export { RichEditor, preloadRichEditor } from './chunk-WBTCOFMZ.js';
|
|
43
|
+
export { RICH_EDITOR_LABELS, richEditorLabels } from './chunk-CSQTDGTS.js';
|
|
44
44
|
export { RUN_STATES, RunChip } from './chunk-EVWTLFKI.js';
|
|
45
45
|
export { STEP_STATES, STEP_STATE_LABELS, StepList, StepStateMark, Stepper, stepDetailPieces } from './chunk-CGT4R7LW.js';
|
|
46
46
|
export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from './chunk-OZIBNFLO.js';
|
|
@@ -58,10 +58,10 @@ export { PresenterView, formatStopwatch } from './chunk-EGL24VY5.js';
|
|
|
58
58
|
export { SLIDE_NAV_LABELS, SlideNav } from './chunk-OHBXOEP3.js';
|
|
59
59
|
export { SLIDE_HEIGHT, SLIDE_WIDTH, SlideStage, useSlideKeys } from './chunk-RMEBFYL7.js';
|
|
60
60
|
export { PricingCard } from './chunk-U3ILLCR2.js';
|
|
61
|
+
export { PrincipalPicker } from './chunk-TA72CURM.js';
|
|
61
62
|
export { PropertyList } from './chunk-XZ42MKHK.js';
|
|
62
|
-
export { PROPOSAL_CARD_LABELS, PROPOSAL_STATES, ProposalCard } from './chunk-
|
|
63
|
+
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from './chunk-CIYHSTIF.js';
|
|
63
64
|
export { Prose } from './chunk-JCSA3XVH.js';
|
|
64
|
-
export { PrincipalPicker } from './chunk-TA72CURM.js';
|
|
65
65
|
export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from './chunk-Y56FM3K4.js';
|
|
66
66
|
export { PageNote } from './chunk-CV4NES3P.js';
|
|
67
67
|
export { PEEK_RAIL_LABELS, PEEK_RAIL_MAX_WIDTH, PEEK_RAIL_MIN_WIDTH, PEEK_RAIL_WIDTH, PeekHost, PeekNeighbours, PeekRail, isPlainPress, peekClickHandler, peekRowActivation, usePeekNeighbours, usePeekOrder, usePeekStep } from './chunk-LXYSWQNE.js';
|
|
@@ -70,8 +70,8 @@ export { PinTile } from './chunk-JMMS2PQU.js';
|
|
|
70
70
|
export { PresenceStack } from './chunk-3LYWD3BO.js';
|
|
71
71
|
import './chunk-CENOOTAV.js';
|
|
72
72
|
export { FactLine, ObjectHeader, SetByLine } from './chunk-ICWUDNAZ.js';
|
|
73
|
-
export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from './chunk-
|
|
74
|
-
export { REFUSAL_STRIP_LABELS, ReceiptStrip, RefusalStrip } from './chunk-
|
|
73
|
+
export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from './chunk-CZNG3V6L.js';
|
|
74
|
+
export { REFUSAL_STRIP_LABELS, ReceiptStrip, RefusalStrip } from './chunk-LZXY6IMO.js';
|
|
75
75
|
export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from './chunk-YA3AWELW.js';
|
|
76
76
|
export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from './chunk-GPW4M4OI.js';
|
|
77
77
|
export { TreeGrid } from './chunk-VRNUKH2W.js';
|
|
@@ -138,8 +138,8 @@ export { CONFLICT_NOTE_LABELS, ConflictNote } from './chunk-HVEDVKXL.js';
|
|
|
138
138
|
export { Container } from './chunk-HJO4WCH6.js';
|
|
139
139
|
export { ContrastHelp } from './chunk-YCGZK2E4.js';
|
|
140
140
|
export { ContrastBadge, ContrastLevelTag, contrastLevel, contrastRatio, formatContrastRatio } from './chunk-WW7TU6HE.js';
|
|
141
|
-
export { ChoiceList } from './chunk-EAQLI2SO.js';
|
|
142
141
|
export { CodeBlock } from './chunk-6T6V5565.js';
|
|
142
|
+
export { ChoiceList } from './chunk-EAQLI2SO.js';
|
|
143
143
|
export { ColorChip } from './chunk-6GTTRJWJ.js';
|
|
144
144
|
export { ColorField } from './chunk-3NQS6KYG.js';
|
|
145
145
|
export { ColorSwatch } from './chunk-NQGZRMUG.js';
|
|
@@ -165,18 +165,18 @@ export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth,
|
|
|
165
165
|
export { Callout } from './chunk-BPCY7ZID.js';
|
|
166
166
|
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-Q6R6EUQ4.js';
|
|
167
167
|
export { Note } from './chunk-5SZGKSGL.js';
|
|
168
|
+
export { CanvasSchematic } from './chunk-NBWNLYWZ.js';
|
|
168
169
|
export { CanvasToolbar, toolForKey } from './chunk-LQ6AGUDL.js';
|
|
169
170
|
export { Toolbar, ToolbarOverflow, ToolbarWide } from './chunk-NR4CPM4T.js';
|
|
170
171
|
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-YEURM24I.js';
|
|
171
172
|
import './chunk-LM3ISVJA.js';
|
|
172
|
-
export { CanvasSchematic } from './chunk-NBWNLYWZ.js';
|
|
173
173
|
export { CatalogTile } from './chunk-TGSIVB6H.js';
|
|
174
|
-
export { BrandChip } from './chunk-ZH77BXMA.js';
|
|
175
174
|
export { AvatarPicker } from './chunk-4OINEWR4.js';
|
|
176
175
|
export { HuePicker, HueSwatch } from './chunk-OYAXKHVW.js';
|
|
177
176
|
export { Popover } from './chunk-KHJIEPZV.js';
|
|
178
177
|
export { NODE_HUES, NODE_HUE_NAMES, isNodeHue } from './chunk-AYKXMIOR.js';
|
|
179
178
|
export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from './chunk-SNQRGH4A.js';
|
|
179
|
+
export { BrandChip } from './chunk-ZH77BXMA.js';
|
|
180
180
|
export { BrandSample } from './chunk-AVMQMY66.js';
|
|
181
181
|
export { BrandScope, brandScopeInputs } from './chunk-X7WEE3EK.js';
|
|
182
182
|
import './chunk-5SGHW42B.js';
|
|
@@ -235,7 +235,7 @@ export { DisclosureAnatomy } from './chunk-TFGCNBWP.js';
|
|
|
235
235
|
export { Count } from './chunk-BHHIIK3M.js';
|
|
236
236
|
export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from './chunk-PQADV6P6.js';
|
|
237
237
|
export { Announcer, announce, useAnnouncer } from './chunk-RSAQOKH3.js';
|
|
238
|
-
export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useStoredWidth } from './chunk-
|
|
238
|
+
export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useStoredWidth } from './chunk-YGC7BFX2.js';
|
|
239
239
|
export { useMediaMatch } from './chunk-RTPQDNW3.js';
|
|
240
240
|
export { Menu } from './chunk-TKS7FTTO.js';
|
|
241
241
|
export { RESIZE_HANDLE_LARGE_STEP, RESIZE_HANDLE_STEP, ResizeHandle, clampSize, useAppShellAside, useAppShellPeek } from './chunk-PIYJNCN7.js';
|
package/dist/styles.css
CHANGED
|
@@ -25260,7 +25260,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
25260
25260
|
}
|
|
25261
25261
|
|
|
25262
25262
|
|
|
25263
|
-
/* ProposalCard-
|
|
25263
|
+
/* ProposalCard-23575F4C.css */
|
|
25264
25264
|
/*
|
|
25265
25265
|
* A proposed change. The card, its head, its strip and its foot are
|
|
25266
25266
|
* StatusCard's; only the note's register is said here: the consequence is a
|
|
@@ -25281,6 +25281,16 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
25281
25281
|
text-align: end;
|
|
25282
25282
|
}
|
|
25283
25283
|
|
|
25284
|
+
/* WHY THE LAST DECISION WAS REFUSED, on a line of its own above the
|
|
25285
|
+
decision and at its end, as the held primary's reason is: the refusal
|
|
25286
|
+
strip's own inline drawing, which wraps rather than widening the row. */
|
|
25287
|
+
.crewlet-proposal-card__refusal {
|
|
25288
|
+
display: flex;
|
|
25289
|
+
flex: 1 1 100%;
|
|
25290
|
+
justify-content: flex-end;
|
|
25291
|
+
text-align: end;
|
|
25292
|
+
}
|
|
25293
|
+
|
|
25284
25294
|
|
|
25285
25295
|
/* Prose-BTXNFT2Q.css */
|
|
25286
25296
|
/*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crewlethq/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.57.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.57.0",
|
|
46
|
+
"@crewlethq/tokens": "0.57.0",
|
|
47
47
|
"prosemirror-commands": "1.7.2",
|
|
48
48
|
"prosemirror-gapcursor": "1.4.1",
|
|
49
49
|
"prosemirror-history": "1.5.1",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { richEditorLabels } from './chunk-CSQTDGTS.js';
|
|
2
1
|
import { schema, readMarkdown, writeMarkdown } from './chunk-QH6VYJ3X.js';
|
|
2
|
+
import { richEditorLabels } from './chunk-CSQTDGTS.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-FXQLNETQ.js';
|