@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.
Files changed (45) hide show
  1. package/README.md +24 -3
  2. package/dist/ArtifactCover/index.js +2 -2
  3. package/dist/CommentThread/index.js +2 -2
  4. package/dist/Document/Document.d.ts +8 -1
  5. package/dist/Document/index.js +1 -1
  6. package/dist/{Document-PQGXJHB7.css → Document-G3YTZIUL.css} +71 -0
  7. package/dist/EditingStatus/EditingStatus.d.ts +25 -0
  8. package/dist/EditingStatus/index.d.ts +3 -0
  9. package/dist/EditingStatus/index.js +2 -0
  10. package/dist/EditingStatus-NFADEPSX.css +53 -0
  11. package/dist/Editor-YZ7KG2RD.js +2099 -0
  12. package/dist/Markdown/grammar.d.ts +170 -0
  13. package/dist/Markdown/index.d.ts +2 -0
  14. package/dist/Markdown/index.js +1 -0
  15. package/dist/RichEditor/Editor.d.ts +17 -0
  16. package/dist/RichEditor/RichEditor.d.ts +26 -0
  17. package/dist/RichEditor/codec.d.ts +78 -0
  18. package/dist/RichEditor/commands.d.ts +89 -0
  19. package/dist/RichEditor/index.d.ts +4 -0
  20. package/dist/RichEditor/index.js +8 -0
  21. package/dist/RichEditor/keys.d.ts +16 -0
  22. package/dist/RichEditor/nodeviews.d.ts +60 -0
  23. package/dist/RichEditor/paste.d.ts +47 -0
  24. package/dist/RichEditor/plugins.d.ts +49 -0
  25. package/dist/RichEditor/roundtrip.d.ts +14 -0
  26. package/dist/RichEditor/schema.d.ts +23 -0
  27. package/dist/RichEditor/types.d.ts +140 -0
  28. package/dist/RichEditor-NPD2KAPS.css +419 -0
  29. package/dist/RichEditorMarkdown/index.d.ts +1 -0
  30. package/dist/RichEditorMarkdown/index.js +3 -0
  31. package/dist/chunk-3DPIU2Q7.js +28 -0
  32. package/dist/{chunk-XALUCIG5.js → chunk-6AH2XJ3Q.js} +1 -1
  33. package/dist/chunk-A4E5YLXO.js +85 -0
  34. package/dist/{chunk-FKULOLKG.js → chunk-GR55WT4R.js} +1 -1
  35. package/dist/chunk-IDBHX5SR.js +12 -0
  36. package/dist/{chunk-WI6K5M5X.js → chunk-M3LUNN7F.js} +1 -1
  37. package/dist/chunk-SKOYC2CF.js +288 -0
  38. package/dist/chunk-VOX3YRFO.js +76 -0
  39. package/dist/chunk-YFW4MTK4.js +749 -0
  40. package/dist/generated/index.d.ts +4 -0
  41. package/dist/generated/index.js +44 -38
  42. package/dist/index.js +44 -38
  43. package/dist/styles.css +550 -1
  44. package/package.json +13 -3
  45. /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-PQGXJHB7.css */
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.29.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.29.0",
46
- "@crewlethq/tokens": "0.29.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