@crewlethq/ui 0.65.1 → 0.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/dist/AppShell/index.js +1 -1
- package/dist/{AppShell-LZQA3XU4.css → AppShell-2IBUS4TH.css} +6 -1
- package/dist/ArtifactCard/index.js +3 -3
- package/dist/ChatThread/ChatThread.d.ts +9 -0
- package/dist/ChatThread/index.js +1 -1
- package/dist/{ChatThread-FGXVDLI2.css → ChatThread-2KO3FZKQ.css} +12 -9
- package/dist/CommentThread/index.js +2 -2
- package/dist/DataView/index.js +2 -2
- package/dist/DatasetSource/index.js +2 -2
- package/dist/EditingStatus/index.js +2 -2
- package/dist/InlineEditor/index.js +3 -3
- package/dist/ProposalCard/ProposalCard.d.ts +58 -1
- package/dist/ProposalCard/index.d.ts +2 -2
- package/dist/ProposalCard/index.js +8 -1
- package/dist/{ProposalCard-VTTCDXYK.css → ProposalCard-SF332W4E.css} +22 -0
- package/dist/RelativeTime/index.js +1 -1
- package/dist/RichEditor/index.js +1 -1
- package/dist/StatusCard/StatusCard.d.ts +10 -3
- package/dist/TableCells/index.js +2 -2
- package/dist/ThinkingIndicator/ThinkingIndicator.d.ts +9 -6
- package/dist/ThinkingIndicator/index.js +1 -1
- package/dist/ThinkingIndicator-JVF52N7L.css +193 -0
- package/dist/VersionTimeline/index.js +2 -2
- package/dist/WidgetFrame/index.js +2 -2
- package/dist/{chunk-FZUDUNCK.js → chunk-2AQMXGWA.js} +63 -6
- package/dist/{chunk-UBIPDEFV.js → chunk-3EETQFAM.js} +2 -2
- package/dist/{chunk-DS5NBENV.js → chunk-BVNFNFA6.js} +1 -1
- package/dist/{chunk-F2IYVVA3.js → chunk-D2ZXIQ23.js} +31 -4
- package/dist/{chunk-L6NG7CUA.js → chunk-EJNJMHQG.js} +1 -1
- package/dist/{chunk-E55DKVY7.js → chunk-GJ7VIQWL.js} +1 -1
- package/dist/{chunk-NWTHGZBH.js → chunk-GNDKUSCG.js} +1 -1
- package/dist/{chunk-XGBGEI6V.js → chunk-J5BIKMQY.js} +1 -1
- package/dist/{chunk-E2MIUNUU.js → chunk-M73MMEZY.js} +1 -1
- package/dist/{chunk-VVOFJFRT.js → chunk-QBWNGNF7.js} +1 -1
- package/dist/{chunk-VRG2ZXNK.js → chunk-R6K62EXV.js} +1 -1
- package/dist/{chunk-4EDSEX7U.js → chunk-S5QJZOPL.js} +1 -1
- package/dist/{chunk-DKJJ434E.js → chunk-UBJ32EO2.js} +1 -1
- package/dist/{chunk-B76OKJMX.js → chunk-VLGGLLKH.js} +1 -1
- package/dist/{chunk-SRSE7FGL.js → chunk-WPMZKZUH.js} +1 -1
- package/dist/generated/index.js +23 -23
- package/dist/index.js +23 -23
- package/dist/styles.css +130 -29
- package/package.json +3 -3
- package/dist/ThinkingIndicator-QJMX2TXC.css +0 -122
- package/dist/{Editor-NZRUKWB4.js → Editor-URGZOK2S.js} +1 -1
package/README.md
CHANGED
|
@@ -205,6 +205,22 @@ 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.67.0
|
|
209
|
+
|
|
210
|
+
**The product marks are redrawn as one family** (`@crewlethq/icons`). Each stands on the Crewlet octagon in the brand violet with a deeper lower facet (`#6a3cff`, was `#5c24ff`) and one white figure: Worklet a tick over one open task, Doclet a page with a chamfer fold, Chat a speech bubble with the crewmate's visor, and the Assistant two sparks. The `dim` and `eye` parts are gone, and every drawing carries a hidden `keyline` part that the soon state paints. Nothing to change unless a stylesheet of your own reads those parts.
|
|
211
|
+
|
|
212
|
+
**`ProductMark` mounts a 16 pixel grid drawing below 24 px** and takes `drawing` (`ProductMarkDrawing`: `auto`, `small` or `master`). `auto` reads `size`; a size it cannot measure in px (the default `1em`) keeps the master, so pass `drawing="small"` for a mark set in a line of body text. Soon is now derived from either drawing, and under forced colours a mark draws its one colour form in the system colours.
|
|
213
|
+
|
|
214
|
+
**`ThinkingIndicator` moves the new Assistant mark.** Its main spark makes a quarter turn about its own centre, tucking to 0.8 through the middle of the turn, while its companion twinkles, over `--motion-duration-spark` (1.6s, new in `@crewlethq/tokens`). Under reduced motion it holds a still working pose (the spark tucked, the companion dimmed) rather than the idle mark.
|
|
215
|
+
|
|
216
|
+
## Changes in 0.65.0
|
|
217
|
+
|
|
218
|
+
**`ProposalCard` takes `tone`, `confirmation` and `details`.** `tone="danger"` (`ProposalTone`, `PROPOSAL_TONES`) marks a change that removes or discards something: while the card waits on the person or carries the change out, Card's danger rail runs down its leading edge, the title is set in the danger ink (AA in both palettes) and the primary is the danger button. A settled card steps back with no tone, and the Tag keeps saying the state. `confirmation` (`{ label }`, `ProposalConfirmation`) draws a `Checkbox` above the decision: the primary is held soft disabled, described by `labels.confirmationNeeded` ("Check the confirmation above first"), until it is ticked. The tick clears when the card settles or is handed another proposal in place (another `title` or `approveLabel`), and `approveBlocked` still outranks it. `details` is the precise request behind the change, in a compact `Disclosure` titled `labels.details` ("Technical details"), collapsed by default and mounted only once opened, at the foot of the body above the note.
|
|
219
|
+
|
|
220
|
+
**A `ProposalCard` primary that has just appeared takes no pointer for 500ms**: when the card arrives, when it is handed another proposal and when it returns to a decision (a step-up, a refused approval). A press meant for the card it replaced, such as the second press of a double click, can no longer approve it, and it shows no hover until then. Focus and the keyboard reach it at once, and it is never drawn or announced as disabled. The button carries `data-arming` while it arms.
|
|
221
|
+
|
|
222
|
+
**`StatusCard` takes `rail`**, Card's own rail down the leading edge, for a risk the Tag does not carry.
|
|
223
|
+
|
|
208
224
|
## Changes in 0.62.0
|
|
209
225
|
|
|
210
226
|
**`ValueField`, a labelled value with the control its kind needs.** `FormField` with the control and the rules every form holding configuration values otherwise rewrites, in one component (`ValueField`, `ValueFieldKind`, `ValueFieldChoice`, `ValueFieldLabels`, `ValueFieldProps`). `kind` picks the control: `text`, `id`, `email` and `url` are a text field, `secret` a password field, `multiline` a `Textarea`, and `choice` and `handle` the `Select` listbox. A `secret` is masked unless its value is exactly one `${NAME}` reference, which reads as a name in the `reference` appearance. Typing `$` in a one-line field offers the names in `references`, ranked closest first and written in as a whole `${NAME}` (`onReferencesNeeded` is called as the list opens, so a caller can refresh it). A `url` wears an `https://` `InputAffix`, read as part of the value, which steps aside for `http://` and for a reference. `url`, `id` and `email` drop whitespace; no kind sets `type="email"`, so a reference is never refused by the browser. Required is the unmarked default: `required={false}` says "(optional)", and `markRequired` says "(required)" where it is news. A choice's `hint` is drawn under its option and joins the help line once chosen, and a stored answer the list no longer offers keeps a row of its own. `isReference` replaces the default `${NAME}` grammar, `mark` draws a logo before the label, `helperOnFocus` is passed to `FormField`, and `labels` replaces the list's name ("Secrets") and the choice placeholder ("Choose one").
|
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, useScreenBelow, useScreenWidth, useStoredWidth } from '../chunk-
|
|
1
|
+
export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useScreenBelow, useScreenWidth, useStoredWidth } from '../chunk-GJ7VIQWL.js';
|
|
2
2
|
import '../chunk-RTPQDNW3.js';
|
|
3
3
|
import '../chunk-T73DMDU4.js';
|
|
4
4
|
export { RESIZE_HANDLE_LARGE_STEP, RESIZE_HANDLE_STEP, ResizeHandle, clampSize, useAppShellAside, useAppShellPeek } from '../chunk-PIYJNCN7.js';
|
|
@@ -59,7 +59,12 @@
|
|
|
59
59
|
past it. A page that can also scroll as a whole carries the rail off the
|
|
60
60
|
top of the window. */
|
|
61
61
|
height: 100dvh;
|
|
62
|
-
overflow: hidden
|
|
62
|
+
/* CLIPPED, NOT SCROLLABLE. `overflow: hidden` is still a scroll container:
|
|
63
|
+
a focus or a scrollIntoView on anything that reaches past the viewport
|
|
64
|
+
scrolled the whole shell up, the frame showing as a band under it, and
|
|
65
|
+
nothing a reader could do scrolled it back. `clip` cuts the same edge
|
|
66
|
+
and offers nothing to scroll (SidePanel's flush body, the same rule). */
|
|
67
|
+
overflow: clip;
|
|
63
68
|
/* The FRAME, the lowest rung: what the rail stands on and what shows round
|
|
64
69
|
the sheet's inset. */
|
|
65
70
|
background: var(--color-surface-frame);
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-
|
|
1
|
+
export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-3EETQFAM.js';
|
|
2
2
|
import '../chunk-BRLZXYPA.js';
|
|
3
3
|
import '../chunk-CI3VPIJN.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-EJNJMHQG.js';
|
|
5
5
|
import '../chunk-RE3FBGQQ.js';
|
|
6
6
|
import '../chunk-4AUTALJA.js';
|
|
7
7
|
import '../chunk-AV2DXAEL.js';
|
|
8
8
|
import '../chunk-BKP6XCAJ.js';
|
|
9
9
|
import '../chunk-PZKHBB7D.js';
|
|
10
10
|
import '../chunk-NHLNHH4J.js';
|
|
11
|
-
import '../chunk-DOY3KC6I.js';
|
|
12
11
|
import '../chunk-PBCNINMB.js';
|
|
12
|
+
import '../chunk-DOY3KC6I.js';
|
|
13
13
|
export { ARTIFACT_KINDS, ArtifactKindGlyph } from '../chunk-RSKW25Y5.js';
|
|
14
14
|
import '../chunk-ETSF7SU6.js';
|
|
15
15
|
import '../chunk-PGCLHYVP.js';
|
|
@@ -49,5 +49,14 @@ export interface ChatThreadProps extends Omit<HTMLAttributes<HTMLDivElement>, 'r
|
|
|
49
49
|
* latest" pill counts what arrived since. The browser's own scroll anchoring
|
|
50
50
|
* is turned off (it fights a last child that keeps growing), and the
|
|
51
51
|
* anchoring is done here instead.
|
|
52
|
+
*
|
|
53
|
+
* A JUMP HOLDS UNTIL IT LANDS. A smooth scroll passes through positions short
|
|
54
|
+
* of the end, and each one read as the reader leaving: the pill came back and
|
|
55
|
+
* following stopped, so an answer still growing left the jump short and the
|
|
56
|
+
* first press did nothing. While the jump runs, those positions are ignored
|
|
57
|
+
* and growth is followed; the reader's own wheel, touch or key ends it.
|
|
58
|
+
*
|
|
59
|
+
* THE PILL COVERS NOTHING: it sits under the log, in the thread's own column,
|
|
60
|
+
* rather than over the last lines of whatever is being read.
|
|
52
61
|
*/
|
|
53
62
|
export declare const ChatThread: import("react").ForwardRefExoticComponent<ChatThreadProps & import("react").RefAttributes<ChatThreadHandle>>;
|
package/dist/ChatThread/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { CHAT_THREAD_FOLLOW_WITHIN, CHAT_THREAD_LABELS, ChatThread } from '../chunk-
|
|
1
|
+
export { CHAT_THREAD_FOLLOW_WITHIN, CHAT_THREAD_LABELS, ChatThread } from '../chunk-D2ZXIQ23.js';
|
|
2
2
|
import '../chunk-RTPQDNW3.js';
|
|
3
3
|
import '../chunk-7QTPJDRF.js';
|
|
4
4
|
import '../chunk-XSPCITPN.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* A conversation as it grows: the scroller, the items a spacing step and a
|
|
3
|
-
* half apart on the panel's 16px inset, and the Jump to latest pill
|
|
4
|
-
*
|
|
3
|
+
* half apart on the panel's 16px inset, and the Jump to latest pill in a row
|
|
4
|
+
* of its own under it.
|
|
5
5
|
*/
|
|
6
6
|
.crewlet-chat-thread {
|
|
7
7
|
position: relative;
|
|
@@ -53,14 +53,17 @@
|
|
|
53
53
|
flex: none;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
/*
|
|
56
|
+
/*
|
|
57
|
+
* The pill, centred in a row of its own under the log. IN FLOW, NOT FLOATING:
|
|
58
|
+
* laid over the scroller it covered the last lines of whatever was being read,
|
|
59
|
+
* a table's rows or an answer's text. Here the log gives up the row while the
|
|
60
|
+
* pill shows, and nothing it holds is hidden under it.
|
|
61
|
+
*/
|
|
57
62
|
.crewlet-chat-thread__jump {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
box-shadow: var(--shadow-md);
|
|
63
|
-
border-radius: var(--radius-pill);
|
|
63
|
+
display: flex;
|
|
64
|
+
flex: none;
|
|
65
|
+
justify-content: center;
|
|
66
|
+
padding: var(--spacing-2) var(--spacing-4);
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
.crewlet-chat-thread__fresh {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-
|
|
1
|
+
export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-UBJ32EO2.js';
|
|
2
2
|
import '../chunk-CI3VPIJN.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-EJNJMHQG.js';
|
|
4
4
|
import '../chunk-RE3FBGQQ.js';
|
|
5
5
|
import '../chunk-BKP6XCAJ.js';
|
|
6
6
|
import '../chunk-PZKHBB7D.js';
|
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-J5BIKMQY.js';
|
|
2
2
|
import '../chunk-FPDIHEM4.js';
|
|
3
3
|
import '../chunk-CFY257ND.js';
|
|
4
4
|
import '../chunk-PX54PALQ.js';
|
|
@@ -9,7 +9,7 @@ import '../chunk-7KHM2FZH.js';
|
|
|
9
9
|
import '../chunk-EE3DJMSQ.js';
|
|
10
10
|
import '../chunk-NR4CPM4T.js';
|
|
11
11
|
import '../chunk-KHJIEPZV.js';
|
|
12
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-EJNJMHQG.js';
|
|
13
13
|
import '../chunk-RE3FBGQQ.js';
|
|
14
14
|
import '../chunk-AV2DXAEL.js';
|
|
15
15
|
import '../chunk-PBCNINMB.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from '../chunk-
|
|
1
|
+
export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from '../chunk-R6K62EXV.js';
|
|
2
2
|
import '../chunk-I5OIKDX2.js';
|
|
3
3
|
import '../chunk-WIATRXEJ.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-EJNJMHQG.js';
|
|
5
5
|
import '../chunk-RE3FBGQQ.js';
|
|
6
6
|
import '../chunk-2YTOOH3A.js';
|
|
7
7
|
import '../chunk-UT6CW3C7.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { EditingStatus } from '../chunk-
|
|
1
|
+
export { EditingStatus } from '../chunk-VLGGLLKH.js';
|
|
2
2
|
import '../chunk-WIATRXEJ.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-EJNJMHQG.js';
|
|
4
4
|
import '../chunk-RE3FBGQQ.js';
|
|
5
5
|
import '../chunk-UT6CW3C7.js';
|
|
6
6
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { INLINE_EDITOR_LABELS, InlineEditor } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { INLINE_EDITOR_LABELS, InlineEditor } from '../chunk-QBWNGNF7.js';
|
|
2
|
+
import '../chunk-VLGGLLKH.js';
|
|
3
3
|
import '../chunk-WIATRXEJ.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-EJNJMHQG.js';
|
|
5
5
|
import '../chunk-RE3FBGQQ.js';
|
|
6
6
|
import '../chunk-ANTAQAR4.js';
|
|
7
7
|
import '../chunk-7QTPJDRF.js';
|
|
@@ -26,6 +26,26 @@ export type ProposalKind = 'change' | 'create';
|
|
|
26
26
|
*/
|
|
27
27
|
export type ProposalFailureOutcome = 'unchanged' | 'unknown';
|
|
28
28
|
export declare const PROPOSAL_FAILURE_OUTCOMES: readonly ["unchanged", "unknown"];
|
|
29
|
+
/**
|
|
30
|
+
* How much the decision weighs: `default`, or `danger` for a change that
|
|
31
|
+
* removes, discards or overwrites something (removing a seat, deleting a
|
|
32
|
+
* record). Danger draws the card's leading edge and its title in the danger
|
|
33
|
+
* ink and the primary as the danger button, while the card waits on the
|
|
34
|
+
* person or carries the change out.
|
|
35
|
+
*/
|
|
36
|
+
export type ProposalTone = 'default' | 'danger';
|
|
37
|
+
export declare const PROPOSAL_TONES: readonly ["default", "danger"];
|
|
38
|
+
/**
|
|
39
|
+
* A deliberate confirmation: a checkbox the person ticks before the primary
|
|
40
|
+
* can be pressed, for a change whose consequence has to be acknowledged.
|
|
41
|
+
*/
|
|
42
|
+
export interface ProposalConfirmation {
|
|
43
|
+
/**
|
|
44
|
+
* What the person confirms, as the checkbox's name: "I understand the QA
|
|
45
|
+
* Engineer seat and its history are removed."
|
|
46
|
+
*/
|
|
47
|
+
label: ReactNode;
|
|
48
|
+
}
|
|
29
49
|
/**
|
|
30
50
|
* Why the person's own decision was refused while the card stays open to
|
|
31
51
|
* another one: the approval was turned down (a fresh sign-in, a change that
|
|
@@ -68,6 +88,10 @@ export interface ProposalCardLabels {
|
|
|
68
88
|
unknownNotice: string;
|
|
69
89
|
/** Why Decline is held while the approved change is carried out. */
|
|
70
90
|
busy: string;
|
|
91
|
+
/** Why the primary is held until the `confirmation` is ticked, said as its description. */
|
|
92
|
+
confirmationNeeded: string;
|
|
93
|
+
/** The title of the collapsed `details` section. */
|
|
94
|
+
details: string;
|
|
71
95
|
}
|
|
72
96
|
export declare const PROPOSAL_CARD_LABELS: ProposalCardLabels;
|
|
73
97
|
export interface ProposalCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
@@ -88,6 +112,25 @@ export interface ProposalCardProps extends Omit<HTMLAttributes<HTMLElement>, 'ti
|
|
|
88
112
|
changesHeading?: ReactNode;
|
|
89
113
|
/** The consequence, in one sentence, under the list. */
|
|
90
114
|
note?: ReactNode;
|
|
115
|
+
/**
|
|
116
|
+
* The precise request behind the change (a method, a path, a body) for a
|
|
117
|
+
* reader who wants it: a collapsed `Disclosure` at the foot of the body,
|
|
118
|
+
* above the note, titled `labels.details`, whose content mounts only once
|
|
119
|
+
* it is opened. Never where the change itself is said: the list is.
|
|
120
|
+
*/
|
|
121
|
+
details?: ReactNode;
|
|
122
|
+
/** `default`, or `danger` for a change that removes or discards something; see `ProposalTone`. */
|
|
123
|
+
tone?: ProposalTone | undefined;
|
|
124
|
+
/**
|
|
125
|
+
* A checkbox above the decision that the person ticks before the primary
|
|
126
|
+
* can be pressed. Until then the primary is held soft disabled and
|
|
127
|
+
* described by `labels.confirmationNeeded`, as `approveBlocked` holds it.
|
|
128
|
+
* The tick belongs to the proposal it was given for: it clears when the
|
|
129
|
+
* card settles, and when the card is handed a different proposal (another
|
|
130
|
+
* `title` or `approveLabel`) in place. Drawn while the card waits on the
|
|
131
|
+
* person and while the approved change is carried out.
|
|
132
|
+
*/
|
|
133
|
+
confirmation?: ProposalConfirmation | undefined;
|
|
91
134
|
/** The primary action, named for its effect: "Apply to this list", "Create task". Never a bare "OK". */
|
|
92
135
|
approveLabel: string;
|
|
93
136
|
/**
|
|
@@ -184,5 +227,19 @@ export interface ProposalCardProps extends Omit<HTMLAttributes<HTMLElement>, 'ti
|
|
|
184
227
|
* "NOTHING CHANGED." ONLY WHEN IT IS TRUE. A failure whose outcome nobody
|
|
185
228
|
* could confirm (`failureOutcome="unknown"`) may have landed, so the card
|
|
186
229
|
* says "Not confirmed" and never adds the reassurance.
|
|
230
|
+
*
|
|
231
|
+
* A DESTRUCTIVE CHANGE LOOKS LIKE ONE (`tone="danger"`): the danger rail down
|
|
232
|
+
* the leading edge, the title in the danger ink and the danger primary. The
|
|
233
|
+
* colour only adds weight; the title, the summary and the confirmation say
|
|
234
|
+
* what is lost in words. With `confirmation`, the primary waits on a ticked
|
|
235
|
+
* checkbox, so the decision is a deliberate act rather than a single press.
|
|
236
|
+
*
|
|
237
|
+
* A PRIMARY THAT HAS JUST APPEARED IS NOT YET UNDER THE POINTER. For half a
|
|
238
|
+
* second after the card arrives (or returns to a decision) its primary takes
|
|
239
|
+
* no pointer, so a press meant for the card it replaced cannot approve this
|
|
240
|
+
* one. The keyboard is never held.
|
|
241
|
+
*
|
|
242
|
+
* THE PRECISE REQUEST IS THERE, FOLDED (`details`): a compact disclosure,
|
|
243
|
+
* collapsed by default, for a reader who wants the method, path and body.
|
|
187
244
|
*/
|
|
188
|
-
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;
|
|
245
|
+
export declare function ProposalCard({ title, subtitle, state, scope, kind, summary, changes, changesHeading, note, details, tone, confirmation, approveLabel, onApprove, onDecline, onPrepareAgain, onRetry, receipt, failure, failureOutcome, failureHint, approveBlocked, decisionRefusal, notice, labels: overrides, changeLabels, diffLabels, className, ...rest }: ProposalCardProps): import("react").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import '../VisuallyHidden/VisuallyHidden.css';
|
|
2
2
|
import './ProposalCard.css';
|
|
3
|
-
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from './ProposalCard.js';
|
|
4
|
-
export type { ProposalCardLabels, ProposalCardProps, ProposalDecisionRefusal, ProposalFailureOutcome, ProposalKind, ProposalScope, ProposalState, } from './ProposalCard.js';
|
|
3
|
+
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, PROPOSAL_TONES, ProposalCard } from './ProposalCard.js';
|
|
4
|
+
export type { ProposalCardLabels, ProposalCardProps, ProposalConfirmation, ProposalDecisionRefusal, ProposalFailureOutcome, ProposalKind, ProposalScope, ProposalState, ProposalTone, } from './ProposalCard.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from '../chunk-
|
|
1
|
+
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, PROPOSAL_TONES, ProposalCard } from '../chunk-2AQMXGWA.js';
|
|
2
2
|
import '../chunk-M25IV5MH.js';
|
|
3
3
|
import '../chunk-NTQPJJAN.js';
|
|
4
4
|
import '../chunk-WQRSZMN4.js';
|
|
@@ -7,11 +7,18 @@ import '../chunk-I5OIKDX2.js';
|
|
|
7
7
|
import '../chunk-WIATRXEJ.js';
|
|
8
8
|
import '../chunk-4AUTALJA.js';
|
|
9
9
|
import '../chunk-AV2DXAEL.js';
|
|
10
|
+
import '../chunk-PBCNINMB.js';
|
|
10
11
|
import '../chunk-222VILSP.js';
|
|
12
|
+
import '../chunk-ETSF7SU6.js';
|
|
13
|
+
import '../chunk-PGCLHYVP.js';
|
|
11
14
|
import '../chunk-IVTQWOXV.js';
|
|
12
15
|
import '../chunk-MLDTLZAO.js';
|
|
13
16
|
import '../chunk-PQADV6P6.js';
|
|
17
|
+
import '../chunk-2G355KDJ.js';
|
|
14
18
|
import '../chunk-7QTPJDRF.js';
|
|
15
19
|
import '../chunk-XSPCITPN.js';
|
|
20
|
+
import '../chunk-H5XTJ7GJ.js';
|
|
21
|
+
import '../chunk-UAUP6XGK.js';
|
|
22
|
+
import '../chunk-NUZHC6MM.js';
|
|
16
23
|
import '../chunk-UT6CW3C7.js';
|
|
17
24
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -18,6 +18,28 @@
|
|
|
18
18
|
text-align: end;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
/* THE DELIBERATE CONFIRMATION, on a row of its own above the decision. It
|
|
22
|
+
starts at the foot's start edge, unlike the one-line reasons around it: a
|
|
23
|
+
checkbox's sentence wraps under its own first line, and set at the end its
|
|
24
|
+
lines would start in a different place each. */
|
|
25
|
+
.crewlet-proposal-card__confirmation {
|
|
26
|
+
flex: 1 1 100%;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* A PRIMARY THAT HAS JUST APPEARED takes no pointer for a moment (ARMING_MS
|
|
30
|
+
in ProposalCard.tsx): no hover, and no press from a pointer that was
|
|
31
|
+
already resting where it landed. Focus and the keyboard still reach it. */
|
|
32
|
+
.crewlet-proposal-card__approve[data-arming] {
|
|
33
|
+
pointer-events: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* THE DANGER TONE, while the decision is open: Card's rail (passed through
|
|
37
|
+
StatusCard) and the title in the danger ink, the step the tokens measure as
|
|
38
|
+
text, so it holds AA in every palette. The Tag keeps the state. */
|
|
39
|
+
.crewlet-proposal-card--danger .crewlet-card__title {
|
|
40
|
+
color: var(--color-feedback-danger-ink);
|
|
41
|
+
}
|
|
42
|
+
|
|
21
43
|
/* WHY THE LAST DECISION WAS REFUSED, on a line of its own above the
|
|
22
44
|
decision and at its end, as the held primary's reason is: the refusal
|
|
23
45
|
strip's own inline drawing, which wraps rather than widening the row. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { RelativeTime, currentNow, formatElapsed, formatExact, formatRelative, formatUntil, toISO, toInstant, useNow } from '../chunk-
|
|
1
|
+
export { RelativeTime, currentNow, formatElapsed, formatExact, formatRelative, formatUntil, toISO, toInstant, useNow } from '../chunk-EJNJMHQG.js';
|
|
2
2
|
import '../chunk-RE3FBGQQ.js';
|
|
3
3
|
import '../chunk-UT6CW3C7.js';
|
|
4
4
|
import '../chunk-ODEQTPFM.js';
|
package/dist/RichEditor/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { RichEditor, preloadRichEditor } from '../chunk-
|
|
1
|
+
export { RichEditor, preloadRichEditor } from '../chunk-BVNFNFA6.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,5 +1,5 @@
|
|
|
1
1
|
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
-
import { type CardSectionPadding } from '../Card/index.js';
|
|
2
|
+
import { type CardRail, type CardSectionPadding } from '../Card/index.js';
|
|
3
3
|
import { type TagVariant } from '../Tag/index.js';
|
|
4
4
|
/** A card's state, drawn as a `Tag` at the end of its head. */
|
|
5
5
|
export interface StatusCardStatus {
|
|
@@ -58,6 +58,12 @@ export interface StatusCardProps extends Omit<HTMLAttributes<HTMLElement>, 'titl
|
|
|
58
58
|
* stays legible.
|
|
59
59
|
*/
|
|
60
60
|
settled?: boolean | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* A risk down the card's leading edge, Card's own rail: what the reader
|
|
63
|
+
* has to weigh before acting, such as a proposal that removes something.
|
|
64
|
+
* Never the state, which the Tag already says in words.
|
|
65
|
+
*/
|
|
66
|
+
rail?: CardRail | undefined;
|
|
61
67
|
/** The body's inset. `md` by default; `none` lets a table run to the card's edges. */
|
|
62
68
|
bodyPadding?: CardSectionPadding | undefined;
|
|
63
69
|
/** What happened, as a `ReceiptStrip` at the card's foot, above any actions. */
|
|
@@ -72,8 +78,9 @@ export interface StatusCardProps extends Omit<HTMLAttributes<HTMLElement>, 'titl
|
|
|
72
78
|
* A record with a state, as the product's own card: the default `Card`, one
|
|
73
79
|
* hairline, a sentence-case title over the head's rule, the state as a `Tag`
|
|
74
80
|
* at the end of the head, and what happened as a strip at the foot. No tone
|
|
75
|
-
* rail and no tinted head: the Tag says the state in words, and
|
|
76
|
-
* it only repeated it in colour.
|
|
81
|
+
* rail for the state and no tinted head: the Tag says the state in words, and
|
|
82
|
+
* a rail beside it only repeated it in colour. A rail is drawn only for a
|
|
83
|
+
* risk the Tag does not carry (`rail`).
|
|
77
84
|
*
|
|
78
85
|
* A SECTION NAMED BY ITS TITLE AND ITS STATE ("Create task, Needs your
|
|
79
86
|
* approval"), so a reader moving by region hears both before reading the
|
package/dist/TableCells/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-
|
|
1
|
+
export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-GNDKUSCG.js';
|
|
2
2
|
import '../chunk-QF5UNP4T.js';
|
|
3
3
|
import '../chunk-I5OIKDX2.js';
|
|
4
4
|
import '../chunk-WIATRXEJ.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-EJNJMHQG.js';
|
|
6
6
|
import '../chunk-RE3FBGQQ.js';
|
|
7
7
|
import '../chunk-BKP6XCAJ.js';
|
|
8
8
|
import '../chunk-PZKHBB7D.js';
|
|
@@ -15,9 +15,11 @@ export interface ThinkingIndicatorProps extends Omit<HTMLAttributes<HTMLDivEleme
|
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* The assistant at work, drawn where its answer will be: the Assistant's mark
|
|
18
|
-
* with its
|
|
19
|
-
* while nothing of the answer is on screen yet, a line saying
|
|
20
|
-
* under a slow shimmer.
|
|
18
|
+
* with its main spark making a quarter turn while its companion twinkles, then
|
|
19
|
+
* resting, and, while nothing of the answer is on screen yet, a line saying
|
|
20
|
+
* what it is doing under a slow shimmer. The mark is drawn at 16 px, so it is
|
|
21
|
+
* the 16 pixel grid drawing, and the motion is this component's stylesheet:
|
|
22
|
+
* the mark carries only its `data-motion` parts.
|
|
21
23
|
*
|
|
22
24
|
* IN PLACE OF A CARET. A blinking bar after streamed text lands wherever the
|
|
23
25
|
* last block ends, on a line of its own under a list or at the start of an
|
|
@@ -30,8 +32,9 @@ export interface ThinkingIndicatorProps extends Omit<HTMLAttributes<HTMLDivEleme
|
|
|
30
32
|
* changes with every step, is hidden from assistive technology, where the
|
|
31
33
|
* steps are read from their own list.
|
|
32
34
|
*
|
|
33
|
-
* UNDER REDUCED MOTION the
|
|
34
|
-
*
|
|
35
|
-
* work is under
|
|
35
|
+
* UNDER REDUCED MOTION the mark holds a still working pose (the main spark
|
|
36
|
+
* tucked, the companion dimmed) and the line is drawn in the secondary ink
|
|
37
|
+
* without the shimmer: the mark and the words still say that work is under
|
|
38
|
+
* way.
|
|
36
39
|
*/
|
|
37
40
|
export declare function ThinkingIndicator({ status, label, className, ...rest }: ThinkingIndicatorProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The assistant at work: the Assistant's mark, its spark turning, and a line
|
|
3
|
+
* of status under a shimmer. See ThinkingIndicator.tsx for why it replaces a
|
|
4
|
+
* caret and how it is announced.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
* ONE LINE OF PROSE TALL, at every state: the mark alone, the mark with a
|
|
9
|
+
* status line, and the line changing from one step to the next all keep the
|
|
10
|
+
* same height, so the thread never moves while the assistant works.
|
|
11
|
+
*/
|
|
12
|
+
.crewlet-thinking {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: var(--spacing-2);
|
|
16
|
+
min-width: 0;
|
|
17
|
+
min-height: calc(var(--font-size-compact) * var(--font-line-height-relaxed));
|
|
18
|
+
font-family: var(--font-family-sans);
|
|
19
|
+
font-size: var(--font-size-compact);
|
|
20
|
+
line-height: var(--font-line-height-relaxed);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* THE SPARK TURNS A QUARTER, THEN RESTS. The Assistant's main spark
|
|
25
|
+
* (data-motion="turn") makes a quarter turn about its own centre while its
|
|
26
|
+
* companion (data-motion="twinkle") dims and shrinks, both on one timeline of
|
|
27
|
+
* --motion-duration-spark (1.6s). The gesture runs from 20% to 70% of the
|
|
28
|
+
* period and every part is at rest in the idle pose for the other half, so
|
|
29
|
+
* the loop never jumps: the spark is four-fold symmetric, so its 90 degree
|
|
30
|
+
* pose is its 0 degree pose. Both parts pivot on their own fill box, which is
|
|
31
|
+
* the spark's centre, so the same rules move the 16 pixel grid drawing and
|
|
32
|
+
* the 48 unit master.
|
|
33
|
+
*
|
|
34
|
+
* THE TURN TUCKS. A full-size spark sweeps its tip through the companion
|
|
35
|
+
* between 26.6 and 63.4 degrees. The spark therefore pulls in to 0.8 over the
|
|
36
|
+
* first 15.37 degrees, holds 0.8 through the fast middle of the turn and opens
|
|
37
|
+
* back to 1 over the last 15.37 degrees, which keeps clear violet between the
|
|
38
|
+
* two at every frame. Rotate and scale are one transform, so the two can never
|
|
39
|
+
* drift apart. The three timing functions are the design's one eased quarter
|
|
40
|
+
* turn, cubic-bezier(0.65, 0, 0.35, 1) over the gesture, split at the 37.5%
|
|
41
|
+
* and 52.5% stops, so the angle follows that curve exactly.
|
|
42
|
+
*
|
|
43
|
+
* THE COMPANION TWINKLES. Its trough sits at 45%, the instant the main spark
|
|
44
|
+
* passes 45 degrees, and it shares the turn's gesture window.
|
|
45
|
+
*/
|
|
46
|
+
.crewlet-thinking__mark [data-motion='turn'],
|
|
47
|
+
.crewlet-thinking__mark [data-motion='twinkle'] {
|
|
48
|
+
transform-box: fill-box;
|
|
49
|
+
transform-origin: center;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.crewlet-thinking__mark [data-motion='turn'] {
|
|
53
|
+
animation: crewlet-thinking-turn var(--motion-duration-spark) linear infinite;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.crewlet-thinking__mark [data-motion='twinkle'] {
|
|
57
|
+
animation: crewlet-thinking-twinkle var(--motion-duration-spark) linear infinite;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@keyframes crewlet-thinking-turn {
|
|
61
|
+
0%,
|
|
62
|
+
20% {
|
|
63
|
+
transform: rotate(0deg) scale(1);
|
|
64
|
+
animation-timing-function: cubic-bezier(0.4878, 0, 0.7883, 0.4041);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
37.5% {
|
|
68
|
+
transform: rotate(15.37deg) scale(0.8);
|
|
69
|
+
animation-timing-function: cubic-bezier(0.4462, 0.2792, 0.5538, 0.7208);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
52.5% {
|
|
73
|
+
transform: rotate(74.63deg) scale(0.8);
|
|
74
|
+
animation-timing-function: cubic-bezier(0.2117, 0.5959, 0.5122, 1);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
70%,
|
|
78
|
+
100% {
|
|
79
|
+
transform: rotate(90deg) scale(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@keyframes crewlet-thinking-twinkle {
|
|
84
|
+
0%,
|
|
85
|
+
20% {
|
|
86
|
+
transform: scale(1);
|
|
87
|
+
opacity: 1;
|
|
88
|
+
animation-timing-function: cubic-bezier(0.45, 0, 0.55, 1);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
45% {
|
|
92
|
+
transform: scale(0.7);
|
|
93
|
+
opacity: 0.5;
|
|
94
|
+
animation-timing-function: cubic-bezier(0.45, 0, 0.55, 1);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
70%,
|
|
98
|
+
100% {
|
|
99
|
+
transform: scale(1);
|
|
100
|
+
opacity: 1;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/*
|
|
105
|
+
* THE SHIMMER IS A LIGHTER BAND CROSSING THE WORDS, the band Skeleton sweeps
|
|
106
|
+
* across a placeholder, set in ink rather than in surface: the words are the
|
|
107
|
+
* secondary ink at rest, so they read at every point of the sweep, and the
|
|
108
|
+
* band is the primary ink. The gradient is clipped to the glyphs and is three
|
|
109
|
+
* times the line's width, so the band crosses it rather than standing in it.
|
|
110
|
+
*/
|
|
111
|
+
.crewlet-thinking__status {
|
|
112
|
+
min-width: 0;
|
|
113
|
+
overflow: hidden;
|
|
114
|
+
color: var(--color-text-secondary);
|
|
115
|
+
text-overflow: ellipsis;
|
|
116
|
+
white-space: nowrap;
|
|
117
|
+
animation: crewlet-thinking-enter var(--motion-duration-moderate) var(--motion-easing-out);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@supports (background-clip: text) or (-webkit-background-clip: text) {
|
|
121
|
+
.crewlet-thinking__status {
|
|
122
|
+
background-image: linear-gradient(
|
|
123
|
+
90deg,
|
|
124
|
+
var(--color-text-secondary) 0%,
|
|
125
|
+
var(--color-text-secondary) 40%,
|
|
126
|
+
var(--color-text-primary) 50%,
|
|
127
|
+
var(--color-text-secondary) 60%,
|
|
128
|
+
var(--color-text-secondary) 100%
|
|
129
|
+
);
|
|
130
|
+
background-size: 300% 100%;
|
|
131
|
+
-webkit-background-clip: text;
|
|
132
|
+
background-clip: text;
|
|
133
|
+
color: transparent;
|
|
134
|
+
animation:
|
|
135
|
+
crewlet-thinking-enter var(--motion-duration-moderate) var(--motion-easing-out),
|
|
136
|
+
crewlet-thinking-shimmer var(--motion-duration-breath) linear infinite;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@keyframes crewlet-thinking-shimmer {
|
|
141
|
+
from {
|
|
142
|
+
background-position: 100% 50%;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
to {
|
|
146
|
+
background-position: 0 50%;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@keyframes crewlet-thinking-enter {
|
|
151
|
+
from {
|
|
152
|
+
opacity: 0;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
to {
|
|
156
|
+
opacity: 1;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/*
|
|
161
|
+
* UNDER REDUCED MOTION THE MARK HOLDS A WORKING POSE. Both animations stop,
|
|
162
|
+
* and the mark shows the gesture's tuck and the twinkle's trough held still
|
|
163
|
+
* on the tile's axes: the main spark at 0.8 and the companion at 0.7 and half
|
|
164
|
+
* strength. It differs from the idle mark without moving, and the 16 pixel
|
|
165
|
+
* grid drawing keeps its pixel centred tips, so it stays crisp at 16 and
|
|
166
|
+
* 20 px. The pose is swapped in at once, never with a transition.
|
|
167
|
+
*/
|
|
168
|
+
@media (prefers-reduced-motion: reduce) {
|
|
169
|
+
.crewlet-thinking__mark [data-motion='turn'] {
|
|
170
|
+
animation: none;
|
|
171
|
+
transform: scale(0.8);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.crewlet-thinking__mark [data-motion='twinkle'] {
|
|
175
|
+
animation: none;
|
|
176
|
+
transform: scale(0.7);
|
|
177
|
+
opacity: 0.5;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.crewlet-thinking__status {
|
|
181
|
+
background-image: none;
|
|
182
|
+
color: var(--color-text-secondary);
|
|
183
|
+
animation: none;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/* The system's own ink: a gradient clipped to text is dropped there. */
|
|
188
|
+
@media (forced-colors: active) {
|
|
189
|
+
.crewlet-thinking__status {
|
|
190
|
+
background-image: none;
|
|
191
|
+
color: CanvasText;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { VersionTimeline } from '../chunk-
|
|
1
|
+
export { VersionTimeline } from '../chunk-WPMZKZUH.js';
|
|
2
2
|
import '../chunk-CI3VPIJN.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-EJNJMHQG.js';
|
|
4
4
|
import '../chunk-RE3FBGQQ.js';
|
|
5
5
|
import '../chunk-BKP6XCAJ.js';
|
|
6
6
|
import '../chunk-PZKHBB7D.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { WidgetFrame } from '../chunk-
|
|
1
|
+
export { WidgetFrame } from '../chunk-S5QJZOPL.js';
|
|
2
2
|
import '../chunk-BRLZXYPA.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-EJNJMHQG.js';
|
|
4
4
|
import '../chunk-RE3FBGQQ.js';
|
|
5
5
|
import '../chunk-UT6CW3C7.js';
|
|
6
6
|
import '../chunk-ODEQTPFM.js';
|