@crewlethq/ui 0.29.0 → 0.30.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 +24 -3
- package/dist/ArtifactCover/index.js +2 -2
- package/dist/CommentThread/index.js +2 -2
- package/dist/Document/Document.d.ts +8 -1
- package/dist/Document/index.js +1 -1
- package/dist/{Document-PQGXJHB7.css → Document-G3YTZIUL.css} +71 -0
- package/dist/EditingStatus/EditingStatus.d.ts +25 -0
- package/dist/EditingStatus/index.d.ts +3 -0
- package/dist/EditingStatus/index.js +2 -0
- package/dist/EditingStatus-NFADEPSX.css +53 -0
- package/dist/Editor-YZ7KG2RD.js +2099 -0
- package/dist/Markdown/grammar.d.ts +170 -0
- package/dist/Markdown/index.d.ts +2 -0
- package/dist/Markdown/index.js +1 -0
- package/dist/RichEditor/Editor.d.ts +17 -0
- package/dist/RichEditor/RichEditor.d.ts +26 -0
- package/dist/RichEditor/codec.d.ts +78 -0
- package/dist/RichEditor/commands.d.ts +89 -0
- package/dist/RichEditor/index.d.ts +4 -0
- package/dist/RichEditor/index.js +8 -0
- package/dist/RichEditor/keys.d.ts +16 -0
- package/dist/RichEditor/nodeviews.d.ts +60 -0
- package/dist/RichEditor/paste.d.ts +47 -0
- package/dist/RichEditor/plugins.d.ts +49 -0
- package/dist/RichEditor/roundtrip.d.ts +14 -0
- package/dist/RichEditor/schema.d.ts +23 -0
- package/dist/RichEditor/types.d.ts +140 -0
- package/dist/RichEditor-NPD2KAPS.css +419 -0
- package/dist/RichEditorMarkdown/index.d.ts +1 -0
- package/dist/RichEditorMarkdown/index.js +3 -0
- package/dist/chunk-3DPIU2Q7.js +28 -0
- package/dist/{chunk-XALUCIG5.js → chunk-6AH2XJ3Q.js} +1 -1
- package/dist/chunk-A4E5YLXO.js +85 -0
- package/dist/{chunk-FKULOLKG.js → chunk-GR55WT4R.js} +1 -1
- package/dist/chunk-IDBHX5SR.js +12 -0
- package/dist/{chunk-WI6K5M5X.js → chunk-M3LUNN7F.js} +1 -1
- package/dist/chunk-SKOYC2CF.js +288 -0
- package/dist/chunk-VOX3YRFO.js +76 -0
- package/dist/chunk-YFW4MTK4.js +749 -0
- package/dist/generated/index.d.ts +4 -0
- package/dist/generated/index.js +44 -38
- package/dist/index.js +44 -38
- package/dist/styles.css +550 -1
- package/package.json +13 -3
- /package/dist/{chunk-IFNQKWUO.js → chunk-OC46246T.js} +0 -0
package/dist/styles.css
CHANGED
|
@@ -11158,7 +11158,7 @@ svg.crewlet-datetime__chevron {
|
|
|
11158
11158
|
}
|
|
11159
11159
|
|
|
11160
11160
|
|
|
11161
|
-
/* Document-
|
|
11161
|
+
/* Document-G3YTZIUL.css */
|
|
11162
11162
|
/*
|
|
11163
11163
|
* Rendered markdown, set as a document (Document.tsx).
|
|
11164
11164
|
*
|
|
@@ -11448,6 +11448,133 @@ svg.crewlet-datetime__chevron {
|
|
|
11448
11448
|
overflow-wrap: anywhere;
|
|
11449
11449
|
}
|
|
11450
11450
|
|
|
11451
|
+
/*
|
|
11452
|
+
* A TABLE CELL'S ALIGNMENT, read off `data-align` as well as off a style: an
|
|
11453
|
+
* editor that may not write a style attribute under a strict policy marks a
|
|
11454
|
+
* column this way, and the cell is set as the reader's is.
|
|
11455
|
+
*/
|
|
11456
|
+
.crewlet-document :where(th, td)[data-align='center'] {
|
|
11457
|
+
text-align: center;
|
|
11458
|
+
}
|
|
11459
|
+
|
|
11460
|
+
.crewlet-document :where(th, td)[data-align='right'] {
|
|
11461
|
+
text-align: end;
|
|
11462
|
+
}
|
|
11463
|
+
|
|
11464
|
+
/*
|
|
11465
|
+
* A CALLOUT (`> [!NOTE]` and its four siblings): a tinted block with its tone
|
|
11466
|
+
* named on a line of its own, read by its shape as everything here is. A
|
|
11467
|
+
* renderer emits an element with `data-callout="<tone>"` and `role="note"`,
|
|
11468
|
+
* the tone's name in an element with `data-callout-label`, and the blocks in
|
|
11469
|
+
* one with `data-callout-body`. The fill, the ink and the line are each tone's
|
|
11470
|
+
* declared steps, the same three `Callout` paints with.
|
|
11471
|
+
*/
|
|
11472
|
+
.crewlet-document [data-callout] {
|
|
11473
|
+
--crewlet-document-callout-fill: var(--color-feedback-info-soft);
|
|
11474
|
+
--crewlet-document-callout-ink: var(--color-feedback-info-ink);
|
|
11475
|
+
--crewlet-document-callout-line: var(--color-feedback-info-line);
|
|
11476
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
11477
|
+
border-inline-start: 3px solid var(--crewlet-document-callout-line);
|
|
11478
|
+
border-radius: var(--radius-sm);
|
|
11479
|
+
background: var(--crewlet-document-callout-fill);
|
|
11480
|
+
}
|
|
11481
|
+
|
|
11482
|
+
.crewlet-document [data-callout='tip'] {
|
|
11483
|
+
--crewlet-document-callout-fill: var(--color-feedback-success-soft);
|
|
11484
|
+
--crewlet-document-callout-ink: var(--color-feedback-success-ink);
|
|
11485
|
+
--crewlet-document-callout-line: var(--color-feedback-success-line);
|
|
11486
|
+
}
|
|
11487
|
+
|
|
11488
|
+
.crewlet-document [data-callout='important'] {
|
|
11489
|
+
--crewlet-document-callout-fill: var(--color-brand-accent-soft);
|
|
11490
|
+
--crewlet-document-callout-ink: var(--color-brand-accent-ink);
|
|
11491
|
+
--crewlet-document-callout-line: var(--color-brand-accent);
|
|
11492
|
+
}
|
|
11493
|
+
|
|
11494
|
+
.crewlet-document [data-callout='warning'] {
|
|
11495
|
+
--crewlet-document-callout-fill: var(--color-feedback-warning-soft);
|
|
11496
|
+
--crewlet-document-callout-ink: var(--color-feedback-warning-ink);
|
|
11497
|
+
--crewlet-document-callout-line: var(--color-feedback-warning-line);
|
|
11498
|
+
}
|
|
11499
|
+
|
|
11500
|
+
.crewlet-document [data-callout='caution'] {
|
|
11501
|
+
--crewlet-document-callout-fill: var(--color-feedback-danger-soft);
|
|
11502
|
+
--crewlet-document-callout-ink: var(--color-feedback-danger-ink);
|
|
11503
|
+
--crewlet-document-callout-line: var(--color-feedback-danger-line);
|
|
11504
|
+
}
|
|
11505
|
+
|
|
11506
|
+
.crewlet-document [data-callout-label] {
|
|
11507
|
+
margin: 0 0 var(--spacing-1);
|
|
11508
|
+
color: var(--crewlet-document-callout-ink);
|
|
11509
|
+
font-size: var(--font-size-xs);
|
|
11510
|
+
font-weight: var(--font-weight-semibold);
|
|
11511
|
+
line-height: var(--font-line-height-snug);
|
|
11512
|
+
}
|
|
11513
|
+
|
|
11514
|
+
.crewlet-document [data-callout-body] {
|
|
11515
|
+
color: var(--color-text-primary);
|
|
11516
|
+
}
|
|
11517
|
+
|
|
11518
|
+
.crewlet-document [data-callout-body] > * + * {
|
|
11519
|
+
margin-block-start: var(--crewlet-document-gap);
|
|
11520
|
+
}
|
|
11521
|
+
|
|
11522
|
+
|
|
11523
|
+
/* EditingStatus-NFADEPSX.css */
|
|
11524
|
+
/*
|
|
11525
|
+
* The editing status (EditingStatus.tsx): a word and a dot, in the bar's own
|
|
11526
|
+
* small step, quiet until something is unsaved.
|
|
11527
|
+
*/
|
|
11528
|
+
|
|
11529
|
+
.crewlet-editing-status {
|
|
11530
|
+
display: inline-flex;
|
|
11531
|
+
align-items: center;
|
|
11532
|
+
gap: var(--spacing-2);
|
|
11533
|
+
min-width: 0;
|
|
11534
|
+
color: var(--color-text-secondary);
|
|
11535
|
+
font-family: var(--font-family-sans);
|
|
11536
|
+
font-size: var(--font-size-compact);
|
|
11537
|
+
white-space: nowrap;
|
|
11538
|
+
}
|
|
11539
|
+
|
|
11540
|
+
.crewlet-editing-status__dot {
|
|
11541
|
+
flex: none;
|
|
11542
|
+
width: var(--spacing-2);
|
|
11543
|
+
height: var(--spacing-2);
|
|
11544
|
+
border-radius: var(--radius-circle);
|
|
11545
|
+
background: var(--color-text-tertiary);
|
|
11546
|
+
}
|
|
11547
|
+
|
|
11548
|
+
.crewlet-editing-status--dirty .crewlet-editing-status__dot {
|
|
11549
|
+
background: var(--color-brand-accent);
|
|
11550
|
+
}
|
|
11551
|
+
|
|
11552
|
+
.crewlet-editing-status__label {
|
|
11553
|
+
color: var(--color-text-primary);
|
|
11554
|
+
font-weight: var(--font-weight-medium);
|
|
11555
|
+
}
|
|
11556
|
+
|
|
11557
|
+
.crewlet-editing-status__state {
|
|
11558
|
+
overflow: hidden;
|
|
11559
|
+
color: var(--color-text-tertiary);
|
|
11560
|
+
text-overflow: ellipsis;
|
|
11561
|
+
}
|
|
11562
|
+
|
|
11563
|
+
.crewlet-editing-status__state::before {
|
|
11564
|
+
content: '\00b7';
|
|
11565
|
+
margin-right: var(--spacing-2);
|
|
11566
|
+
}
|
|
11567
|
+
|
|
11568
|
+
@media (width < 480px) {
|
|
11569
|
+
.crewlet-editing-status__state {
|
|
11570
|
+
position: absolute;
|
|
11571
|
+
width: 1px;
|
|
11572
|
+
height: 1px;
|
|
11573
|
+
overflow: hidden;
|
|
11574
|
+
clip-path: inset(50%);
|
|
11575
|
+
}
|
|
11576
|
+
}
|
|
11577
|
+
|
|
11451
11578
|
|
|
11452
11579
|
/* EmptyState-C6HRBGT7.css */
|
|
11453
11580
|
/*
|
|
@@ -18425,6 +18552,428 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
18425
18552
|
}
|
|
18426
18553
|
|
|
18427
18554
|
|
|
18555
|
+
/* RichEditor-NPD2KAPS.css */
|
|
18556
|
+
/*
|
|
18557
|
+
* The rich editor (RichEditor.tsx).
|
|
18558
|
+
*
|
|
18559
|
+
* THE DOCUMENT IS SET BY `Document`'s stylesheet, not by this one: the
|
|
18560
|
+
* editable element carries `crewlet-document`, so a heading, a list, a quote
|
|
18561
|
+
* or a table looks the same while it is edited as when it is read. What is
|
|
18562
|
+
* here is only what editing adds: the caret's world (ProseMirror's own
|
|
18563
|
+
* required rules, the placeholder, a selected node), the controls a block
|
|
18564
|
+
* draws in its slot, and the surfaces that float over the page (the slash
|
|
18565
|
+
* menu, the selection toolbar, the link and picture panels, the table bar).
|
|
18566
|
+
*/
|
|
18567
|
+
|
|
18568
|
+
.crewlet-rich-editor {
|
|
18569
|
+
position: relative;
|
|
18570
|
+
min-width: 0;
|
|
18571
|
+
}
|
|
18572
|
+
|
|
18573
|
+
/* ── the editable document ─────────────────────────────────────────────── */
|
|
18574
|
+
|
|
18575
|
+
/*
|
|
18576
|
+
* ProseMirror's own required rules: whitespace is preserved as typed (the
|
|
18577
|
+
* view maps it to positions one to one), and ligatures are off so a caret
|
|
18578
|
+
* never lands inside one.
|
|
18579
|
+
*/
|
|
18580
|
+
.crewlet-rich-editor__content {
|
|
18581
|
+
position: relative;
|
|
18582
|
+
min-height: calc(var(--spacing-10) * 3);
|
|
18583
|
+
outline: none;
|
|
18584
|
+
white-space: pre-wrap;
|
|
18585
|
+
white-space: break-spaces;
|
|
18586
|
+
word-wrap: break-word;
|
|
18587
|
+
font-variant-ligatures: none;
|
|
18588
|
+
font-feature-settings: 'liga' 0;
|
|
18589
|
+
caret-color: var(--color-brand-accent);
|
|
18590
|
+
}
|
|
18591
|
+
|
|
18592
|
+
.crewlet-rich-editor__content pre {
|
|
18593
|
+
white-space: pre-wrap;
|
|
18594
|
+
}
|
|
18595
|
+
|
|
18596
|
+
.crewlet-rich-editor__content li {
|
|
18597
|
+
position: relative;
|
|
18598
|
+
}
|
|
18599
|
+
|
|
18600
|
+
.crewlet-rich-editor__content [draggable][contenteditable='false'] {
|
|
18601
|
+
user-select: text;
|
|
18602
|
+
}
|
|
18603
|
+
|
|
18604
|
+
.crewlet-rich-editor__content.ProseMirror-hideselection *::selection {
|
|
18605
|
+
background: transparent;
|
|
18606
|
+
}
|
|
18607
|
+
|
|
18608
|
+
.crewlet-rich-editor__content.ProseMirror-hideselection {
|
|
18609
|
+
caret-color: transparent;
|
|
18610
|
+
}
|
|
18611
|
+
|
|
18612
|
+
.crewlet-rich-editor__content img.ProseMirror-separator {
|
|
18613
|
+
display: inline !important;
|
|
18614
|
+
border: none !important;
|
|
18615
|
+
margin: 0 !important;
|
|
18616
|
+
}
|
|
18617
|
+
|
|
18618
|
+
/* A selected block (a picture, a rule) is outlined, as a focused control is. */
|
|
18619
|
+
.crewlet-rich-editor__content .ProseMirror-selectednode {
|
|
18620
|
+
outline: 2px solid var(--color-focus);
|
|
18621
|
+
outline-offset: 2px;
|
|
18622
|
+
border-radius: var(--radius-xs);
|
|
18623
|
+
}
|
|
18624
|
+
|
|
18625
|
+
/* The caret between two blocks nobody can type into (two tables, say). */
|
|
18626
|
+
.crewlet-rich-editor__content .ProseMirror-gapcursor {
|
|
18627
|
+
display: none;
|
|
18628
|
+
position: absolute;
|
|
18629
|
+
pointer-events: none;
|
|
18630
|
+
}
|
|
18631
|
+
|
|
18632
|
+
.crewlet-rich-editor__content .ProseMirror-gapcursor::after {
|
|
18633
|
+
content: '';
|
|
18634
|
+
display: block;
|
|
18635
|
+
position: absolute;
|
|
18636
|
+
top: calc(var(--spacing-2) * -1);
|
|
18637
|
+
width: var(--spacing-5);
|
|
18638
|
+
border-top: 1px solid var(--color-text-primary);
|
|
18639
|
+
animation: crewlet-rich-editor-caret calc(var(--motion-duration-breath) / 2) steps(2, start) infinite;
|
|
18640
|
+
}
|
|
18641
|
+
|
|
18642
|
+
@keyframes crewlet-rich-editor-caret {
|
|
18643
|
+
to {
|
|
18644
|
+
visibility: hidden;
|
|
18645
|
+
}
|
|
18646
|
+
}
|
|
18647
|
+
|
|
18648
|
+
.crewlet-rich-editor__content.ProseMirror-focused .ProseMirror-gapcursor {
|
|
18649
|
+
display: block;
|
|
18650
|
+
}
|
|
18651
|
+
|
|
18652
|
+
/*
|
|
18653
|
+
* The placeholder and the empty line's hint: a decoration's attribute, drawn
|
|
18654
|
+
* here, so neither is text in the document. Floated with no height, so the
|
|
18655
|
+
* caret stands at the start of the line rather than after the words.
|
|
18656
|
+
*/
|
|
18657
|
+
.crewlet-rich-editor__content .is-empty::before {
|
|
18658
|
+
content: attr(data-placeholder);
|
|
18659
|
+
float: left;
|
|
18660
|
+
height: 0;
|
|
18661
|
+
color: var(--color-text-tertiary);
|
|
18662
|
+
pointer-events: none;
|
|
18663
|
+
}
|
|
18664
|
+
|
|
18665
|
+
/* The slash and the word after it, while the menu is open. */
|
|
18666
|
+
.crewlet-rich-editor__slash {
|
|
18667
|
+
border-radius: var(--radius-xs);
|
|
18668
|
+
background: var(--color-brand-accent-soft);
|
|
18669
|
+
color: var(--color-brand-accent-ink);
|
|
18670
|
+
}
|
|
18671
|
+
|
|
18672
|
+
/* An EMPTY table cell keeps a width a pointer can land in; one with text is
|
|
18673
|
+
sized as the reader's is, so the columns do not move when editing starts. */
|
|
18674
|
+
.crewlet-rich-editor__content :where(th, td):has(> br.ProseMirror-trailingBreak:only-child) {
|
|
18675
|
+
min-width: calc(var(--spacing-10) * 1.5);
|
|
18676
|
+
}
|
|
18677
|
+
|
|
18678
|
+
/* A task's box is pressed here, where a reader's is only read. */
|
|
18679
|
+
.crewlet-rich-editor__content li > input[type='checkbox'] {
|
|
18680
|
+
cursor: pointer;
|
|
18681
|
+
}
|
|
18682
|
+
|
|
18683
|
+
/* A picture the page cannot show reads as its alt text, set apart as a chip. */
|
|
18684
|
+
.crewlet-rich-editor__image-alt {
|
|
18685
|
+
display: inline-flex;
|
|
18686
|
+
align-items: center;
|
|
18687
|
+
padding: 0 var(--spacing-2);
|
|
18688
|
+
border: 1px dashed var(--color-border-strong);
|
|
18689
|
+
border-radius: var(--radius-sm);
|
|
18690
|
+
color: var(--color-text-tertiary);
|
|
18691
|
+
font-size: var(--font-size-xs);
|
|
18692
|
+
}
|
|
18693
|
+
|
|
18694
|
+
.crewlet-rich-editor--disabled .crewlet-rich-editor__content {
|
|
18695
|
+
caret-color: transparent;
|
|
18696
|
+
}
|
|
18697
|
+
|
|
18698
|
+
/* ── a block's controls ─────────────────────────────────────────────────── */
|
|
18699
|
+
|
|
18700
|
+
.crewlet-rich-editor__code {
|
|
18701
|
+
position: relative;
|
|
18702
|
+
}
|
|
18703
|
+
|
|
18704
|
+
/*
|
|
18705
|
+
* A code block's language: a quiet field at the block's top right, read as
|
|
18706
|
+
* the language's name and turning into a field under the pointer or the
|
|
18707
|
+
* keyboard. An empty one shows only while the block is pointed at.
|
|
18708
|
+
*/
|
|
18709
|
+
.crewlet-rich-editor__code-bar {
|
|
18710
|
+
position: absolute;
|
|
18711
|
+
top: var(--spacing-1);
|
|
18712
|
+
right: var(--spacing-1);
|
|
18713
|
+
z-index: var(--z-index-raised);
|
|
18714
|
+
}
|
|
18715
|
+
|
|
18716
|
+
.crewlet-rich-editor__lang {
|
|
18717
|
+
width: 12ch;
|
|
18718
|
+
height: var(--size-control-sm);
|
|
18719
|
+
padding: 0 var(--spacing-2);
|
|
18720
|
+
border: 1px solid transparent;
|
|
18721
|
+
border-radius: var(--radius-sm);
|
|
18722
|
+
background: transparent;
|
|
18723
|
+
color: var(--color-text-tertiary);
|
|
18724
|
+
font-family: var(--font-family-mono);
|
|
18725
|
+
font-size: var(--font-size-2xs);
|
|
18726
|
+
text-align: right;
|
|
18727
|
+
}
|
|
18728
|
+
|
|
18729
|
+
.crewlet-rich-editor__lang::placeholder {
|
|
18730
|
+
color: var(--color-text-tertiary);
|
|
18731
|
+
}
|
|
18732
|
+
|
|
18733
|
+
.crewlet-rich-editor__lang:placeholder-shown {
|
|
18734
|
+
opacity: 0;
|
|
18735
|
+
}
|
|
18736
|
+
|
|
18737
|
+
.crewlet-rich-editor__code:hover .crewlet-rich-editor__lang,
|
|
18738
|
+
.crewlet-rich-editor__lang:focus {
|
|
18739
|
+
opacity: 1;
|
|
18740
|
+
border-color: var(--color-border-default);
|
|
18741
|
+
background: var(--color-surface-elevated);
|
|
18742
|
+
text-align: left;
|
|
18743
|
+
}
|
|
18744
|
+
|
|
18745
|
+
.crewlet-rich-editor__lang:focus-visible {
|
|
18746
|
+
outline: 2px solid var(--color-focus);
|
|
18747
|
+
outline-offset: 0;
|
|
18748
|
+
}
|
|
18749
|
+
|
|
18750
|
+
/* A callout's tone, drawn as its label, and a menu under it. */
|
|
18751
|
+
.crewlet-rich-editor__tone {
|
|
18752
|
+
display: inline-flex;
|
|
18753
|
+
align-items: center;
|
|
18754
|
+
gap: var(--spacing-1);
|
|
18755
|
+
margin: 0;
|
|
18756
|
+
padding: 0;
|
|
18757
|
+
border: none;
|
|
18758
|
+
border-radius: var(--radius-xs);
|
|
18759
|
+
background: transparent;
|
|
18760
|
+
color: inherit;
|
|
18761
|
+
font: inherit;
|
|
18762
|
+
cursor: pointer;
|
|
18763
|
+
}
|
|
18764
|
+
|
|
18765
|
+
.crewlet-rich-editor__tone > svg {
|
|
18766
|
+
opacity: 0;
|
|
18767
|
+
}
|
|
18768
|
+
|
|
18769
|
+
.crewlet-rich-editor__tone:hover > svg,
|
|
18770
|
+
.crewlet-rich-editor__tone:focus-visible > svg,
|
|
18771
|
+
.crewlet-rich-editor__tone[aria-expanded='true'] > svg {
|
|
18772
|
+
opacity: 1;
|
|
18773
|
+
}
|
|
18774
|
+
|
|
18775
|
+
.crewlet-rich-editor__tone:hover {
|
|
18776
|
+
text-decoration: underline;
|
|
18777
|
+
text-underline-offset: 2px;
|
|
18778
|
+
}
|
|
18779
|
+
|
|
18780
|
+
.crewlet-rich-editor__tone:focus-visible {
|
|
18781
|
+
outline: 2px solid var(--color-focus);
|
|
18782
|
+
outline-offset: 2px;
|
|
18783
|
+
}
|
|
18784
|
+
|
|
18785
|
+
/* ── the floating surfaces ───────────────────────────────────────────────── */
|
|
18786
|
+
|
|
18787
|
+
/* Every one is the menu's surface: the same ground, line, radius and shadow. */
|
|
18788
|
+
.crewlet-rich-editor__menu,
|
|
18789
|
+
.crewlet-rich-editor__bar,
|
|
18790
|
+
.crewlet-rich-editor__bubble,
|
|
18791
|
+
.crewlet-rich-editor__panel {
|
|
18792
|
+
position: fixed;
|
|
18793
|
+
z-index: var(--z-index-popover);
|
|
18794
|
+
border: 1px solid var(--color-border-default);
|
|
18795
|
+
border-radius: var(--radius-md);
|
|
18796
|
+
background: var(--color-surface-subtle);
|
|
18797
|
+
box-shadow: var(--shadow-xl);
|
|
18798
|
+
font-family: var(--font-family-sans);
|
|
18799
|
+
animation: crewlet-rich-editor-in var(--motion-duration-fast) var(--motion-easing-emphasized);
|
|
18800
|
+
}
|
|
18801
|
+
|
|
18802
|
+
@keyframes crewlet-rich-editor-in {
|
|
18803
|
+
from {
|
|
18804
|
+
opacity: 0;
|
|
18805
|
+
transform: translateY(var(--spacing-1));
|
|
18806
|
+
}
|
|
18807
|
+
}
|
|
18808
|
+
|
|
18809
|
+
.crewlet-rich-editor__bar,
|
|
18810
|
+
.crewlet-rich-editor__bubble {
|
|
18811
|
+
display: flex;
|
|
18812
|
+
align-items: center;
|
|
18813
|
+
padding: var(--spacing-1);
|
|
18814
|
+
box-shadow: var(--shadow-lg);
|
|
18815
|
+
}
|
|
18816
|
+
|
|
18817
|
+
.crewlet-rich-editor__group {
|
|
18818
|
+
display: inline-flex;
|
|
18819
|
+
align-items: center;
|
|
18820
|
+
gap: calc(var(--spacing-1) / 2);
|
|
18821
|
+
}
|
|
18822
|
+
|
|
18823
|
+
.crewlet-rich-editor__group + .crewlet-rich-editor__group {
|
|
18824
|
+
margin-left: var(--spacing-1);
|
|
18825
|
+
padding-left: var(--spacing-1);
|
|
18826
|
+
border-left: 1px solid var(--color-border-default);
|
|
18827
|
+
}
|
|
18828
|
+
|
|
18829
|
+
/* The slash menu: a block's glyph on a tile, its name, and what it is. */
|
|
18830
|
+
.crewlet-rich-editor__menu {
|
|
18831
|
+
width: min(300px, calc(100vw - var(--spacing-8)));
|
|
18832
|
+
max-height: min(360px, 50vh);
|
|
18833
|
+
overflow-y: auto;
|
|
18834
|
+
overscroll-behavior: contain;
|
|
18835
|
+
padding: var(--spacing-1);
|
|
18836
|
+
}
|
|
18837
|
+
|
|
18838
|
+
.crewlet-rich-editor__group-heading {
|
|
18839
|
+
padding: var(--spacing-2) var(--spacing-2) var(--spacing-1);
|
|
18840
|
+
color: var(--color-text-tertiary);
|
|
18841
|
+
font-size: var(--font-size-2xs);
|
|
18842
|
+
font-weight: var(--font-weight-semibold);
|
|
18843
|
+
letter-spacing: var(--font-letter-spacing-wide);
|
|
18844
|
+
text-transform: uppercase;
|
|
18845
|
+
}
|
|
18846
|
+
|
|
18847
|
+
.crewlet-rich-editor__option {
|
|
18848
|
+
display: flex;
|
|
18849
|
+
align-items: center;
|
|
18850
|
+
gap: var(--spacing-3);
|
|
18851
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
18852
|
+
border-radius: var(--radius-sm);
|
|
18853
|
+
color: var(--color-text-primary);
|
|
18854
|
+
cursor: pointer;
|
|
18855
|
+
}
|
|
18856
|
+
|
|
18857
|
+
.crewlet-rich-editor__option.is-active {
|
|
18858
|
+
background: var(--color-surface-hover);
|
|
18859
|
+
}
|
|
18860
|
+
|
|
18861
|
+
.crewlet-rich-editor__option-icon {
|
|
18862
|
+
display: inline-flex;
|
|
18863
|
+
align-items: center;
|
|
18864
|
+
justify-content: center;
|
|
18865
|
+
flex: none;
|
|
18866
|
+
width: var(--size-control-md);
|
|
18867
|
+
height: var(--size-control-md);
|
|
18868
|
+
border: 1px solid var(--color-border-default);
|
|
18869
|
+
border-radius: var(--radius-sm);
|
|
18870
|
+
background: var(--color-surface-elevated);
|
|
18871
|
+
color: var(--color-text-secondary);
|
|
18872
|
+
}
|
|
18873
|
+
|
|
18874
|
+
.crewlet-rich-editor__option-text {
|
|
18875
|
+
display: flex;
|
|
18876
|
+
flex-direction: column;
|
|
18877
|
+
min-width: 0;
|
|
18878
|
+
flex: 1;
|
|
18879
|
+
}
|
|
18880
|
+
|
|
18881
|
+
.crewlet-rich-editor__option-label {
|
|
18882
|
+
font-size: var(--font-size-compact);
|
|
18883
|
+
line-height: var(--font-line-height-snug);
|
|
18884
|
+
}
|
|
18885
|
+
|
|
18886
|
+
.crewlet-rich-editor__option-description {
|
|
18887
|
+
overflow: hidden;
|
|
18888
|
+
color: var(--color-text-tertiary);
|
|
18889
|
+
font-size: var(--font-size-xs);
|
|
18890
|
+
line-height: var(--font-line-height-snug);
|
|
18891
|
+
text-overflow: ellipsis;
|
|
18892
|
+
white-space: nowrap;
|
|
18893
|
+
}
|
|
18894
|
+
|
|
18895
|
+
.crewlet-rich-editor__option-hint {
|
|
18896
|
+
flex: none;
|
|
18897
|
+
color: var(--color-text-tertiary);
|
|
18898
|
+
font-family: var(--font-family-mono);
|
|
18899
|
+
font-size: var(--font-size-2xs);
|
|
18900
|
+
}
|
|
18901
|
+
|
|
18902
|
+
.crewlet-rich-editor__empty {
|
|
18903
|
+
margin: 0;
|
|
18904
|
+
padding: var(--spacing-2);
|
|
18905
|
+
color: var(--color-text-tertiary);
|
|
18906
|
+
font-size: var(--font-size-compact);
|
|
18907
|
+
}
|
|
18908
|
+
|
|
18909
|
+
/* The link under the caret: where it goes, and what can be done with it. */
|
|
18910
|
+
.crewlet-rich-editor__bubble-link {
|
|
18911
|
+
display: inline-flex;
|
|
18912
|
+
align-items: center;
|
|
18913
|
+
gap: var(--spacing-1);
|
|
18914
|
+
max-width: min(260px, calc(100vw - 160px));
|
|
18915
|
+
padding: 0 var(--spacing-2);
|
|
18916
|
+
color: var(--color-brand-accent-ink);
|
|
18917
|
+
font-size: var(--font-size-compact);
|
|
18918
|
+
text-decoration: none;
|
|
18919
|
+
}
|
|
18920
|
+
|
|
18921
|
+
.crewlet-rich-editor__bubble-link:hover {
|
|
18922
|
+
text-decoration: underline;
|
|
18923
|
+
text-underline-offset: 2px;
|
|
18924
|
+
}
|
|
18925
|
+
|
|
18926
|
+
.crewlet-rich-editor__bubble-link:focus-visible {
|
|
18927
|
+
outline: 2px solid var(--color-focus);
|
|
18928
|
+
outline-offset: 0;
|
|
18929
|
+
border-radius: var(--radius-xs);
|
|
18930
|
+
}
|
|
18931
|
+
|
|
18932
|
+
.crewlet-rich-editor__bubble-href {
|
|
18933
|
+
overflow: hidden;
|
|
18934
|
+
text-overflow: ellipsis;
|
|
18935
|
+
white-space: nowrap;
|
|
18936
|
+
}
|
|
18937
|
+
|
|
18938
|
+
.crewlet-rich-editor__bubble-refused {
|
|
18939
|
+
padding: 0 var(--spacing-2);
|
|
18940
|
+
color: var(--color-feedback-warning-ink);
|
|
18941
|
+
font-size: var(--font-size-xs);
|
|
18942
|
+
}
|
|
18943
|
+
|
|
18944
|
+
/* A panel: the link's address, a picture's address and alt text, a caller's own. */
|
|
18945
|
+
.crewlet-rich-editor__panel {
|
|
18946
|
+
width: min(320px, calc(100vw - var(--spacing-8)));
|
|
18947
|
+
padding: var(--spacing-3);
|
|
18948
|
+
}
|
|
18949
|
+
|
|
18950
|
+
.crewlet-rich-editor__form {
|
|
18951
|
+
display: flex;
|
|
18952
|
+
flex-direction: column;
|
|
18953
|
+
gap: var(--spacing-3);
|
|
18954
|
+
margin: 0;
|
|
18955
|
+
}
|
|
18956
|
+
|
|
18957
|
+
.crewlet-rich-editor__form-actions {
|
|
18958
|
+
display: flex;
|
|
18959
|
+
justify-content: flex-end;
|
|
18960
|
+
gap: var(--spacing-2);
|
|
18961
|
+
}
|
|
18962
|
+
|
|
18963
|
+
@media (prefers-reduced-motion: reduce) {
|
|
18964
|
+
.crewlet-rich-editor__content .ProseMirror-gapcursor::after {
|
|
18965
|
+
animation: none;
|
|
18966
|
+
}
|
|
18967
|
+
|
|
18968
|
+
.crewlet-rich-editor__menu,
|
|
18969
|
+
.crewlet-rich-editor__bar,
|
|
18970
|
+
.crewlet-rich-editor__bubble,
|
|
18971
|
+
.crewlet-rich-editor__panel {
|
|
18972
|
+
animation: none;
|
|
18973
|
+
}
|
|
18974
|
+
}
|
|
18975
|
+
|
|
18976
|
+
|
|
18428
18977
|
/* SandboxedFrame-L6HBQZCD.css */
|
|
18429
18978
|
/*
|
|
18430
18979
|
* The frame fills the box it is given. The page around it does not scroll
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crewlethq/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.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,18 @@
|
|
|
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.30.0",
|
|
46
|
+
"@crewlethq/tokens": "0.30.0",
|
|
47
|
+
"prosemirror-commands": "1.7.2",
|
|
48
|
+
"prosemirror-gapcursor": "1.4.1",
|
|
49
|
+
"prosemirror-history": "1.5.1",
|
|
50
|
+
"prosemirror-inputrules": "1.5.1",
|
|
51
|
+
"prosemirror-keymap": "1.2.3",
|
|
52
|
+
"prosemirror-model": "1.25.12",
|
|
53
|
+
"prosemirror-schema-list": "1.5.1",
|
|
54
|
+
"prosemirror-state": "1.4.4",
|
|
55
|
+
"prosemirror-transform": "1.12.2",
|
|
56
|
+
"prosemirror-view": "1.42.6",
|
|
47
57
|
"uqr": "0.1.3"
|
|
48
58
|
},
|
|
49
59
|
"peerDependencies": {
|
|
File without changes
|