@crewlethq/ui 0.74.0 → 0.75.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 (72) hide show
  1. package/dist/ArtifactBar/index.js +1 -1
  2. package/dist/ArtifactCard/index.js +4 -4
  3. package/dist/Avatar/Avatar.d.ts +7 -2
  4. package/dist/Avatar/index.js +2 -2
  5. package/dist/{Avatar-FDQSCB7A.css → Avatar-VJSJGFRG.css} +48 -0
  6. package/dist/AvatarPicker/index.js +3 -3
  7. package/dist/CharacterPicker/index.js +2 -2
  8. package/dist/ChoiceButtons/index.js +1 -1
  9. package/dist/{ChoiceButtons-Q2ET3I2N.css → ChoiceButtons-G7XHZKDP.css} +7 -0
  10. package/dist/ColorChip/ColorChip.d.ts +6 -2
  11. package/dist/ColorChip/index.js +1 -1
  12. package/dist/{ColorChip-A5XHTH3J.css → ColorChip-EYQCUXBV.css} +23 -2
  13. package/dist/CommentThread/index.js +4 -4
  14. package/dist/{Editor-WZ5L4BI2.js → Editor-SSCCUK7P.js} +4 -3
  15. package/dist/EntityChip/index.js +3 -3
  16. package/dist/ImageUpload/index.js +3 -3
  17. package/dist/InlineRef/InlineRef.d.ts +73 -0
  18. package/dist/InlineRef/index.d.ts +3 -0
  19. package/dist/InlineRef/index.js +3 -0
  20. package/dist/InlineRef-SJWUKXGT.css +129 -0
  21. package/dist/Markdown/index.js +2 -1
  22. package/dist/OpenInAppCard/index.js +3 -2
  23. package/dist/OrgLabel/index.js +3 -3
  24. package/dist/OrgNode/index.js +4 -4
  25. package/dist/OrgTable/index.js +4 -4
  26. package/dist/PeopleRail/index.js +3 -3
  27. package/dist/PresenceStack/index.js +3 -3
  28. package/dist/Principal/index.js +3 -3
  29. package/dist/PrincipalPicker/index.js +4 -4
  30. package/dist/RichEditor/index.js +4 -3
  31. package/dist/RichEditorMarkdown/index.js +4 -3
  32. package/dist/ShareDialog/index.js +4 -4
  33. package/dist/SheetGrid/index.js +4 -4
  34. package/dist/TableCells/index.js +3 -3
  35. package/dist/ThemeGallery/index.js +2 -2
  36. package/dist/VersionTimeline/index.js +4 -4
  37. package/dist/chunk-266I4BJJ.js +70 -0
  38. package/dist/{chunk-CSQTDGTS.js → chunk-2DMTW2Y3.js} +1 -1
  39. package/dist/{chunk-O3HCFM3D.js → chunk-53J2YNQA.js} +1 -1
  40. package/dist/{chunk-OSKJZNBT.js → chunk-5XBNJNSO.js} +1 -1
  41. package/dist/{chunk-EVXXY75R.js → chunk-6LN64KGG.js} +1 -1
  42. package/dist/{chunk-3EETQFAM.js → chunk-6UBCZZWD.js} +2 -2
  43. package/dist/{chunk-QH6VYJ3X.js → chunk-7CSTEH5I.js} +1 -1
  44. package/dist/{chunk-YGWIWDXE.js → chunk-AB6F5YXX.js} +1 -1
  45. package/dist/{chunk-75S74BBK.js → chunk-B5K2YUD4.js} +2 -2
  46. package/dist/{chunk-BKP6XCAJ.js → chunk-BT3GB7HC.js} +2 -2
  47. package/dist/{chunk-7SYEOJLP.js → chunk-FXMYDXCI.js} +1 -1
  48. package/dist/{chunk-SWD4QBL6.js → chunk-GBASM5EV.js} +1 -1
  49. package/dist/{chunk-G4QZWVAB.js → chunk-GT2OG2XM.js} +1 -1
  50. package/dist/{chunk-SNQRGH4A.js → chunk-I22MUEG7.js} +1 -1
  51. package/dist/{chunk-PZKHBB7D.js → chunk-KTIQSSME.js} +12 -4
  52. package/dist/{chunk-EN4UJQ63.js → chunk-L3OL2WUH.js} +2 -2
  53. package/dist/{chunk-ONQKKHON.js → chunk-LM6VYJTV.js} +1 -1
  54. package/dist/{chunk-FWUX3F6Q.js → chunk-MUFBHVCT.js} +1 -1
  55. package/dist/{chunk-CI3VPIJN.js → chunk-N2BF272H.js} +1 -1
  56. package/dist/{chunk-MFQPGMJT.js → chunk-NU5RUT7Y.js} +1 -1
  57. package/dist/{chunk-DB7UVFOY.js → chunk-OXEOC64K.js} +2 -2
  58. package/dist/{chunk-RUBKDJAQ.js → chunk-OZAZHM55.js} +1 -1
  59. package/dist/{chunk-AGLONIVV.js → chunk-PKVWCKS2.js} +1 -1
  60. package/dist/{chunk-73SAOOR5.js → chunk-Q2T4L6ML.js} +1 -1
  61. package/dist/{chunk-6GTTRJWJ.js → chunk-QGWZN3KU.js} +1 -1
  62. package/dist/chunk-TWM6G2I2.js +1 -0
  63. package/dist/{chunk-56IFLQGF.js → chunk-ZQEJSEPS.js} +1 -1
  64. package/dist/{chunk-SMZPUHBL.js → chunk-ZWXHTXZO.js} +1 -1
  65. package/dist/generated/index.d.ts +1 -0
  66. package/dist/generated/index.js +63 -61
  67. package/dist/index.js +63 -61
  68. package/dist/styles.css +213 -5
  69. package/package.json +3 -3
  70. package/dist/{chunk-LWFOX3PB.js → chunk-BYNKGOBA.js} +1 -1
  71. /package/dist/{chunk-BAKPMH3S.js → chunk-KBZO4B33.js} +0 -0
  72. /package/dist/{chunk-ABGLGAFJ.js → chunk-KOJPDCGQ.js} +0 -0
package/dist/styles.css CHANGED
@@ -4560,7 +4560,7 @@ a.crewlet-make-row__item:active {
4560
4560
  }
4561
4561
 
4562
4562
 
4563
- /* Avatar-FDQSCB7A.css */
4563
+ /* Avatar-VJSJGFRG.css */
4564
4564
  /*
4565
4565
  * The identity badge.
4566
4566
  *
@@ -4643,6 +4643,54 @@ a.crewlet-make-row__item:active {
4643
4643
  * 9px, in the component), so the step and its numeric twin draw one badge and
4644
4644
  * two initials clear the ring by a pixel or more.
4645
4645
  */
4646
+ /*
4647
+ * A FACE IN A SENTENCE (`size="text"`): its box is the words' own size, so
4648
+ * it takes their font size and is measured in it, and its initials are set
4649
+ * apart at half that (`.crewlet-avatar__initials`), since setting the box's
4650
+ * own type would change what its em measures.
4651
+ */
4652
+ .crewlet-avatar--text {
4653
+ --crewlet-avatar-size: 1.15em;
4654
+ font-size: inherit;
4655
+ /*
4656
+ * AN INLINE BLOCK, not a flex box, because it sits inside words a reader
4657
+ * copies: a browser copies a line break before an inline flex container,
4658
+ * so "ask @miles" came out over two lines. Its face is centred by its line
4659
+ * instead (`line-height` is its own height).
4660
+ */
4661
+ display: inline-block;
4662
+ text-align: center;
4663
+ line-height: var(--crewlet-avatar-size);
4664
+ }
4665
+
4666
+ /* An image face is a block at every other size. */
4667
+ .crewlet-avatar--text.crewlet-avatar--image {
4668
+ display: inline-block;
4669
+ }
4670
+
4671
+ /* A glyph face (a token's key) centred by the line too, never a flex box. */
4672
+ .crewlet-avatar--text .crewlet-avatar__icon {
4673
+ display: inline-block;
4674
+ vertical-align: middle;
4675
+ }
4676
+
4677
+ /* The character takes 74% of the box: the rest, shared above and below it. */
4678
+ .crewlet-avatar--text .crewlet-avatar__character {
4679
+ margin: 13% auto;
4680
+ }
4681
+
4682
+ .crewlet-avatar__initials {
4683
+ /*
4684
+ * RELATIVE, like InlineCode's size and for its reason: the face sits in
4685
+ * whatever register its sentence is set in, so its initials are half of
4686
+ * that, never a step off the scale.
4687
+ */
4688
+ --crewlet-avatar-initials-size: 0.5em;
4689
+ font-size: var(--crewlet-avatar-initials-size);
4690
+ line-height: 1;
4691
+ vertical-align: middle;
4692
+ }
4693
+
4646
4694
  .crewlet-avatar--xs {
4647
4695
  --crewlet-avatar-size: 20px;
4648
4696
  font-size: calc(var(--crewlet-avatar-size) * 0.45);
@@ -10055,7 +10103,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10055
10103
  }
10056
10104
 
10057
10105
 
10058
- /* ChoiceButtons-Q2ET3I2N.css */
10106
+ /* ChoiceButtons-G7XHZKDP.css */
10059
10107
  /*
10060
10108
  * One answer, sent with one press: a column of buttons as tall as a touch
10061
10109
  * target, the recommended one first and filled with the accent.
@@ -10155,6 +10203,13 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10155
10203
  background: var(--color-brand-accent);
10156
10204
  border-color: transparent;
10157
10205
  color: var(--color-text-on-accent);
10206
+ /*
10207
+ * A COLOUR OR A REFERENCE IN THE LABEL takes the label's own ink for its
10208
+ * edge and its mark: the control border and the secondary grey are measured
10209
+ * on the surfaces, and on the accent they all but vanish (1.09:1 light).
10210
+ */
10211
+ --crewlet-color-chip-ring: currentColor;
10212
+ --crewlet-inline-ref-mark-ink: currentColor;
10158
10213
  }
10159
10214
 
10160
10215
  .crewlet-choice-buttons__option--recommended:hover:not([aria-disabled='true']) {
@@ -10707,7 +10762,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10707
10762
  }
10708
10763
 
10709
10764
 
10710
- /* ColorChip-A5XHTH3J.css */
10765
+ /* ColorChip-EYQCUXBV.css */
10711
10766
  /*
10712
10767
  * A colour as a small chip (ColorChip.tsx). Its fill is the one value that is
10713
10768
  * not a token, and it arrives through `--crewlet-color-chip-value` only after
@@ -10720,8 +10775,15 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10720
10775
  width: var(--spacing-3);
10721
10776
  height: var(--spacing-3);
10722
10777
  background: var(--crewlet-color-chip-value, var(--color-surface-inset));
10723
- /* An edge of its own, so a colour that matches its ground is still a chip. */
10724
- box-shadow: inset 0 0 0 1px var(--color-border-hover);
10778
+ /*
10779
+ * AN EDGE OF ITS OWN, so a colour that matches its ground is still a chip,
10780
+ * at the control border's step: it is the chip's boundary, a graphic a
10781
+ * reader has to see (WCAG 1.4.11), and that step clears 3:1 on every ground
10782
+ * in both themes. On a filled ground (an accent option) the ground sets
10783
+ * `--crewlet-color-chip-ring` to its own label's ink, since a grey edge
10784
+ * drawn on the accent nearly vanishes into it.
10785
+ */
10786
+ box-shadow: inset 0 0 0 1px var(--crewlet-color-chip-ring, var(--color-border-control));
10725
10787
  vertical-align: middle;
10726
10788
  }
10727
10789
 
@@ -10730,6 +10792,20 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10730
10792
  height: var(--spacing-4);
10731
10793
  }
10732
10794
 
10795
+ /*
10796
+ * AT THE TEXT'S SIZE, for a colour written in a sentence, a code span or a
10797
+ * label: sized by the words around it, so it scales with any register, and
10798
+ * nearly square, since a round chip at this size reads as a status dot.
10799
+ */
10800
+ .crewlet-color-chip--text {
10801
+ width: 0.8em;
10802
+ height: 0.8em;
10803
+ }
10804
+
10805
+ .crewlet-color-chip--text.crewlet-color-chip--square {
10806
+ border-radius: calc(var(--radius-xs) / 2);
10807
+ }
10808
+
10733
10809
  .crewlet-color-chip--round {
10734
10810
  border-radius: var(--radius-circle);
10735
10811
  }
@@ -20307,6 +20383,138 @@ a.crewlet-icon-btn {
20307
20383
  }
20308
20384
 
20309
20385
 
20386
+ /* InlineRef-SJWUKXGT.css */
20387
+ /*
20388
+ * A reference inside a sentence (InlineRef.tsx): a mark at the text's size,
20389
+ * then its words, in the sentence's own ink unless it is a link.
20390
+ */
20391
+
20392
+ .crewlet-inline-ref {
20393
+ /*
20394
+ * InlineCode's size, restated because a consumer may import this component
20395
+ * without that one's stylesheet; the suite holds the two equal.
20396
+ */
20397
+ --crewlet-inline-code-size: 0.92em;
20398
+ /* THE SENTENCE'S OWN INK: a reference in a row or on a filled option reads in what is around it. */
20399
+ color: inherit;
20400
+ /* A token is one word to a reader, and moves to the next line whole. */
20401
+ white-space: nowrap;
20402
+ }
20403
+
20404
+ .crewlet-inline-ref--wrap {
20405
+ white-space: normal;
20406
+ }
20407
+
20408
+ /* The mark and the first word are one run, so no mark ever ends a line alone. */
20409
+ .crewlet-inline-ref__head {
20410
+ white-space: nowrap;
20411
+ }
20412
+
20413
+ /*
20414
+ * A LINK reads as one, in the accent's ink step as `Link` draws it. The
20415
+ * underline is the words', never the mark's: an inline-block takes no
20416
+ * decoration from the anchor around it.
20417
+ */
20418
+ .crewlet-inline-ref--link {
20419
+ color: var(--color-brand-accent-ink);
20420
+ text-decoration: none;
20421
+ border-radius: var(--radius-xs);
20422
+ }
20423
+
20424
+ .crewlet-inline-ref--link:hover {
20425
+ text-decoration: underline;
20426
+ }
20427
+
20428
+ .crewlet-inline-ref--link:focus-visible {
20429
+ outline: 2px solid var(--color-focus);
20430
+ outline-offset: 2px;
20431
+ }
20432
+
20433
+ /*
20434
+ * ONE SQUARE AT THE TEXT'S SIZE for every glyph, mark and chip, centred on
20435
+ * the same line, so a GitHub mark beside one word and a task's glyph beside
20436
+ * the next stand at the same height.
20437
+ *
20438
+ * AN INLINE BLOCK THAT CLIPS, because that is the one box whose baseline is
20439
+ * its own bottom edge whatever it holds: an inline-flex box takes its first
20440
+ * child's, so a vendor mark's `vertical-align: middle` put every mark a fifth
20441
+ * of an em low, and a smaller colour chip moved its box a tenth of an em
20442
+ * below the marks beside it. The drawing inside is centred in it.
20443
+ */
20444
+ .crewlet-inline-ref__mark {
20445
+ display: inline-block;
20446
+ overflow: hidden;
20447
+ line-height: 0;
20448
+ margin-inline-end: 0.3em;
20449
+ /* A copy carries the words, never a picture's place. */
20450
+ user-select: none;
20451
+ }
20452
+
20453
+ .crewlet-inline-ref__mark--glyph {
20454
+ width: 1em;
20455
+ height: 1em;
20456
+ vertical-align: -0.125em;
20457
+ /*
20458
+ * The words' quiet step, or the ink a filled ground asks for: on an accent
20459
+ * fill a secondary grey is the one colour that does not read.
20460
+ */
20461
+ color: var(--crewlet-inline-ref-mark-ink, var(--color-text-secondary));
20462
+ }
20463
+
20464
+ .crewlet-inline-ref__mark--glyph > * {
20465
+ display: block;
20466
+ position: relative;
20467
+ top: 50%;
20468
+ margin-inline: auto;
20469
+ translate: 0 -50%;
20470
+ }
20471
+
20472
+ .crewlet-inline-ref__mark--glyph > svg {
20473
+ width: 100%;
20474
+ height: 100%;
20475
+ }
20476
+
20477
+ /*
20478
+ * A FACE (`Avatar size="text"`) stands in a square a little larger than the
20479
+ * words, and a little below their centre, so it reaches no higher than a
20480
+ * capital and the line keeps its height. It fills its square from the top.
20481
+ */
20482
+ .crewlet-inline-ref__mark--face {
20483
+ width: 1.15em;
20484
+ height: 1.15em;
20485
+ vertical-align: -0.22em;
20486
+ }
20487
+
20488
+ .crewlet-inline-ref__mark--face > * {
20489
+ vertical-align: top;
20490
+ }
20491
+
20492
+ .crewlet-inline-ref--code .crewlet-inline-ref__text {
20493
+ font-family: var(--font-family-mono);
20494
+ font-size: var(--crewlet-inline-code-size);
20495
+ /* An identifier is read character by character. */
20496
+ font-variant-ligatures: none;
20497
+ }
20498
+
20499
+ /*
20500
+ * WHAT A SCREEN READER IS TOLD AND THE EYE IS NOT: what the mark means, and
20501
+ * that a link opens a tab. Clipped as `VisuallyHidden` clips, and left out of
20502
+ * a copy, which carries the words a reader selected.
20503
+ */
20504
+ .crewlet-inline-ref__said {
20505
+ position: absolute;
20506
+ width: 1px;
20507
+ height: 1px;
20508
+ margin: -1px;
20509
+ padding: 0;
20510
+ border: 0;
20511
+ overflow: hidden;
20512
+ clip-path: inset(50%);
20513
+ white-space: pre;
20514
+ user-select: none;
20515
+ }
20516
+
20517
+
20310
20518
  /* Input-GEFFMKBS.css */
20311
20519
  /*
20312
20520
  * The form row: Input, Textarea, Label, FormField, FormRow, FormSection and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.74.0",
3
+ "version": "0.75.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.74.0",
46
- "@crewlethq/tokens": "0.74.0",
45
+ "@crewlethq/icons": "0.75.0",
46
+ "@crewlethq/tokens": "0.75.0",
47
47
  "prosemirror-commands": "1.7.2",
48
48
  "prosemirror-gapcursor": "1.4.1",
49
49
  "prosemirror-history": "1.5.1",
@@ -1,7 +1,7 @@
1
1
  import { ThemeSwatch } from './chunk-3XQUEF5C.js';
2
2
  import { useHighlightRest } from './chunk-7KHM2FZH.js';
3
- import { Tag } from './chunk-I5OIKDX2.js';
4
3
  import { useRoving, tabStop } from './chunk-EGMQURBR.js';
4
+ import { Tag } from './chunk-I5OIKDX2.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './ThemeGallery-UEFZRT6W.css';
7
7
  import { useId } from 'react';
File without changes
File without changes