@crewlethq/ui 0.75.3 → 0.75.4

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 (104) hide show
  1. package/dist/AgentHandoffPanel/index.js +4 -4
  2. package/dist/AppShell/index.js +3 -3
  3. package/dist/ArrangeList/index.js +4 -4
  4. package/dist/ArtifactBar/index.js +6 -6
  5. package/dist/ArtifactCard/index.js +4 -4
  6. package/dist/ArtifactPanel/index.js +1 -1
  7. package/dist/AvatarPicker/index.js +6 -6
  8. package/dist/Canvas/index.js +2 -2
  9. package/dist/CanvasBoard/index.js +4 -4
  10. package/dist/CanvasToolbar/index.js +3 -3
  11. package/dist/Checkbox/index.js +3 -3
  12. package/dist/ChoiceButtons/ChoiceButtons.d.ts +10 -3
  13. package/dist/ChoiceButtons/index.js +1 -1
  14. package/dist/{ChoiceButtons-3MJQAHHA.css → ChoiceButtons-T3GG6VLG.css} +44 -48
  15. package/dist/ColorField/index.js +3 -3
  16. package/dist/Combobox/index.js +3 -3
  17. package/dist/CommandPalette/index.js +3 -3
  18. package/dist/CommentThread/index.js +5 -5
  19. package/dist/Composer/index.js +3 -3
  20. package/dist/ConfirmField/index.js +3 -3
  21. package/dist/ContrastHelp/index.js +1 -1
  22. package/dist/DataGrid/index.js +4 -4
  23. package/dist/DataTable/index.js +5 -5
  24. package/dist/DataView/index.js +7 -7
  25. package/dist/DateTimePicker/index.js +2 -2
  26. package/dist/DocTabsEditor/index.js +4 -4
  27. package/dist/{Editor-OLFAUSUA.js → Editor-VW5CRDKY.js} +3 -3
  28. package/dist/HuePicker/index.js +5 -5
  29. package/dist/Input/index.js +2 -2
  30. package/dist/LinkInterstitial/index.js +1 -1
  31. package/dist/ListInput/index.js +3 -3
  32. package/dist/MarkdownEditor/index.js +5 -5
  33. package/dist/Menu/index.js +2 -2
  34. package/dist/MergeConflicts/index.js +5 -5
  35. package/dist/Modal/index.js +1 -1
  36. package/dist/OrgTable/index.js +1 -1
  37. package/dist/PresenterView/index.js +1 -1
  38. package/dist/PrincipalPicker/index.js +4 -4
  39. package/dist/ProposalCard/index.js +4 -4
  40. package/dist/RichEditor/index.js +1 -1
  41. package/dist/SegmentedControl/index.js +4 -4
  42. package/dist/ShareDialog/index.js +1 -1
  43. package/dist/SheetColumnEditor/index.js +8 -8
  44. package/dist/SheetGrid/index.js +3 -3
  45. package/dist/SidePanel/index.js +1 -1
  46. package/dist/SlideFilmstrip/index.js +3 -3
  47. package/dist/Switcher/index.js +3 -3
  48. package/dist/Tabs/index.js +3 -3
  49. package/dist/TagsInput/index.js +2 -2
  50. package/dist/ThemeSwitcher/index.js +5 -5
  51. package/dist/TimeRangePicker/index.js +6 -6
  52. package/dist/TimeWindowPicker/index.js +3 -3
  53. package/dist/TreeCanvas/index.js +3 -3
  54. package/dist/TreeGrid/index.js +1 -1
  55. package/dist/ValueField/index.js +4 -4
  56. package/dist/VersionCompare/index.js +5 -5
  57. package/dist/{chunk-K2RJO72E.js → chunk-3EY5SEGH.js} +1 -1
  58. package/dist/{chunk-ZSRRCXUD.js → chunk-3WN5HUAK.js} +1 -1
  59. package/dist/{chunk-USO73ZJM.js → chunk-4MVLED6E.js} +2 -2
  60. package/dist/{chunk-OXEWUAND.js → chunk-5OFRDX66.js} +1 -1
  61. package/dist/{chunk-5JPID3YI.js → chunk-6C6YK75K.js} +1 -1
  62. package/dist/{chunk-CMTLQOJY.js → chunk-7LSSYHOT.js} +1 -1
  63. package/dist/{chunk-5M64E3HV.js → chunk-AB6F5YXX.js} +2 -2
  64. package/dist/{chunk-OXB45TG2.js → chunk-ADSOY7UM.js} +2 -2
  65. package/dist/{chunk-SRDZVY5M.js → chunk-AQIFKLXY.js} +1 -1
  66. package/dist/{chunk-IU5J6BY5.js → chunk-BWAUL5MB.js} +2 -2
  67. package/dist/{chunk-ILF6KVNK.js → chunk-BWFJB5JD.js} +2 -2
  68. package/dist/{chunk-5U2CYMFU.js → chunk-EOXI3CRG.js} +1 -1
  69. package/dist/{chunk-GAT75MN4.js → chunk-ERFXYGRF.js} +2 -2
  70. package/dist/{chunk-ODAZIKZF.js → chunk-FQI62PIZ.js} +2 -2
  71. package/dist/{chunk-TQCSQRKQ.js → chunk-FURJVZCT.js} +1 -1
  72. package/dist/{chunk-UHW7EXWQ.js → chunk-H32JW6CZ.js} +1 -1
  73. package/dist/{chunk-ZD52GKKS.js → chunk-IPUEVTRJ.js} +1 -1
  74. package/dist/{chunk-HKSQ7QHF.js → chunk-J5WWMC35.js} +4 -4
  75. package/dist/{chunk-W7OJKHVR.js → chunk-JPQSVECQ.js} +1 -1
  76. package/dist/{chunk-VDIKDCNE.js → chunk-JQEXAH7G.js} +1 -1
  77. package/dist/{chunk-CFXDWGQI.js → chunk-JVII5264.js} +1 -1
  78. package/dist/{chunk-OUUHIA3B.js → chunk-KAA3GFTP.js} +4 -4
  79. package/dist/{chunk-SQ7GYC4K.js → chunk-KL6A7JGH.js} +1 -1
  80. package/dist/{chunk-TF74KS36.js → chunk-LQWORB5B.js} +1 -1
  81. package/dist/{chunk-6RTYHTT7.js → chunk-NU5RUT7Y.js} +1 -1
  82. package/dist/{chunk-SAUIIBNA.js → chunk-NXNLAZPK.js} +1 -1
  83. package/dist/{chunk-7OFVR7X4.js → chunk-OOPOQKZZ.js} +1 -1
  84. package/dist/{chunk-352FPJ2Q.js → chunk-OXEOC64K.js} +1 -1
  85. package/dist/{chunk-EAR2F5OA.js → chunk-PBCNINMB.js} +1 -1
  86. package/dist/{chunk-HDF4OGVD.js → chunk-RNXYNXKN.js} +1 -1
  87. package/dist/{chunk-C3SCONKY.js → chunk-RVSNBUIU.js} +4 -2
  88. package/dist/{chunk-5NFYTQK2.js → chunk-TKBFRGUV.js} +3 -3
  89. package/dist/{chunk-HMOGLAXY.js → chunk-TPCBPGSB.js} +1 -1
  90. package/dist/{chunk-GAUBP247.js → chunk-TWJERLT3.js} +1 -1
  91. package/dist/{chunk-PYJLHHYF.js → chunk-TYIHFDMP.js} +1 -1
  92. package/dist/{chunk-HDLUG3MA.js → chunk-UY3FWQWG.js} +2 -2
  93. package/dist/{chunk-4OX2WVXO.js → chunk-VWMB3CJN.js} +1 -1
  94. package/dist/{chunk-EEVATVP5.js → chunk-W5AXJWOW.js} +2 -2
  95. package/dist/{chunk-IQQSMK4E.js → chunk-ZUBFVK6B.js} +1 -1
  96. package/dist/generated/index.js +58 -58
  97. package/dist/index.js +58 -58
  98. package/dist/styles.css +45 -49
  99. package/package.json +3 -3
  100. package/dist/{chunk-DCQ2VTBB.js → chunk-ETSF7SU6.js} +1 -1
  101. package/dist/{chunk-BAHLBMCH.js → chunk-HEIOLITO.js} +1 -1
  102. package/dist/{chunk-SWLVR54P.js → chunk-HPI5J6AR.js} +1 -1
  103. package/dist/{chunk-EMCVX5FY.js → chunk-OBPINJNO.js} +1 -1
  104. package/dist/{chunk-KNAHKQD4.js → chunk-OQG4P5KU.js} +1 -1
package/dist/styles.css CHANGED
@@ -10103,7 +10103,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10103
10103
  }
10104
10104
 
10105
10105
 
10106
- /* ChoiceButtons-3MJQAHHA.css */
10106
+ /* ChoiceButtons-T3GG6VLG.css */
10107
10107
  /*
10108
10108
  * One answer, sent with one press: a column of buttons as tall as a touch
10109
10109
  * target, the recommended one first and filled with the accent.
@@ -10111,6 +10111,11 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10111
10111
  * The plain option is the secondary button's recipe (the card's own ground
10112
10112
  * inside the strong hairline), and the recommended one the primary's, so the
10113
10113
  * pair reads as the screen's one primary action and its alternatives.
10114
+ *
10115
+ * AS TOGGLES (`chosen` given, so every option carries `aria-pressed`) the
10116
+ * accent is the chosen option's alone: the recommended one is drawn plain with
10117
+ * its mark kept, so an answer that went against the recommendation never shows
10118
+ * the option NOT chosen as the loudest one on the screen.
10114
10119
  */
10115
10120
 
10116
10121
  .crewlet-choice-buttons {
@@ -10126,7 +10131,6 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10126
10131
 
10127
10132
  display: flex;
10128
10133
  align-items: center;
10129
- justify-content: space-between;
10130
10134
  gap: var(--spacing-3);
10131
10135
  min-width: 0;
10132
10136
  min-height: var(--size-control-lg);
@@ -10171,13 +10175,21 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10171
10175
  }
10172
10176
 
10173
10177
  /*
10174
- * THE OPTION APPLIED is drawn as every chosen option in the package is: the
10175
- * selected edge over the soft selected fill, calm beside the focus ring, and
10176
- * held under the pointer so a hover never makes it look unchosen.
10178
+ * THE OPTION APPLIED stands on the soft selected fill inside an edge in the
10179
+ * accent's ink, with a check mark in the same ink, held under the pointer and
10180
+ * the press so neither makes it look unchosen.
10181
+ *
10182
+ * The edge is the accent's INK, not the selected edge the package's other
10183
+ * chosen options draw. That edge is a tint, as low as 1.65:1 against this fill
10184
+ * (dark, on the raised rung), and here the edge is what tells a pressed toggle
10185
+ * from the others, which WCAG 1.4.11 holds to 3:1. The ink clears 4.71:1 at
10186
+ * its tightest (light, on the frame), and the check mark makes the state more
10187
+ * than a colour.
10177
10188
  */
10178
10189
  .crewlet-choice-buttons__option.is-chosen,
10179
- .crewlet-choice-buttons__option.is-chosen:hover {
10180
- border-color: var(--color-border-selected);
10190
+ .crewlet-choice-buttons__option.is-chosen:hover,
10191
+ .crewlet-choice-buttons__option.is-chosen:active {
10192
+ border-color: var(--color-brand-accent-ink);
10181
10193
  background: var(--color-surface-selected);
10182
10194
  }
10183
10195
 
@@ -10199,7 +10211,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10199
10211
  cursor: progress;
10200
10212
  }
10201
10213
 
10202
- .crewlet-choice-buttons__option--recommended {
10214
+ .crewlet-choice-buttons__option--recommended:not([aria-pressed]) {
10203
10215
  background: var(--color-brand-accent);
10204
10216
  border-color: transparent;
10205
10217
  color: var(--color-text-on-accent);
@@ -10212,12 +10224,12 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10212
10224
  --crewlet-inline-ref-mark-ink: currentColor;
10213
10225
  }
10214
10226
 
10215
- .crewlet-choice-buttons__option--recommended:hover:not([aria-disabled='true']) {
10227
+ .crewlet-choice-buttons__option--recommended:not([aria-pressed]):hover:not([aria-disabled='true']) {
10216
10228
  background: var(--color-brand-accent-hover);
10217
10229
  border-color: transparent;
10218
10230
  }
10219
10231
 
10220
- .crewlet-choice-buttons__option--recommended:active:not([aria-disabled='true']) {
10232
+ .crewlet-choice-buttons__option--recommended:not([aria-pressed]):active:not([aria-disabled='true']) {
10221
10233
  background: var(--color-brand-accent-active);
10222
10234
  }
10223
10235
 
@@ -10226,33 +10238,18 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10226
10238
  * nearly the fill's own colour, so its ring stands off it as a primary
10227
10239
  * button's does.
10228
10240
  */
10229
- .crewlet-choice-buttons__option--recommended:focus-visible {
10241
+ .crewlet-choice-buttons__option--recommended:not([aria-pressed]):focus-visible {
10230
10242
  outline-offset: 2px;
10231
10243
  }
10232
10244
 
10233
10245
  /*
10234
- * THE RECOMMENDED OPTION, CHOSEN, is drawn as every chosen option is: the
10235
- * selected edge over the soft selected fill, in the primary ink, its mark kept
10236
- * so a reader still sees which option was recommended. The chosen rule swapped
10237
- * the accent fill for the soft one and left the accent's own ink behind, white
10238
- * on a pale tint, under 1.5:1 in the light theme. Held under the pointer and
10239
- * the press too, which otherwise bring the accent back.
10246
+ * The words take the room the option has to spare, so the recommended mark and
10247
+ * the check mark after them sit together at the far end, and a picture before
10248
+ * them keeps its place at the start.
10240
10249
  */
10241
- .crewlet-choice-buttons__option--recommended.is-chosen,
10242
- .crewlet-choice-buttons__option--recommended.is-chosen:hover:not([aria-disabled='true']),
10243
- .crewlet-choice-buttons__option--recommended.is-chosen:active:not([aria-disabled='true']) {
10244
- border-color: var(--color-border-selected);
10245
- background: var(--color-surface-selected);
10246
- color: var(--color-text-primary);
10247
- }
10248
-
10249
- /* Off the accent, the ring is drawn over the selected edge again. */
10250
- .crewlet-choice-buttons__option--recommended.is-chosen:focus-visible {
10251
- outline-offset: var(--size-focus-ring-inset-offset);
10252
- }
10253
-
10254
10250
  .crewlet-choice-buttons__text {
10255
10251
  display: grid;
10252
+ flex: 1 1 auto;
10256
10253
  gap: 2px;
10257
10254
  min-width: 0;
10258
10255
  overflow-wrap: anywhere;
@@ -10268,15 +10265,10 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10268
10265
  * On the accent fill the detail takes the label's own ink. The tertiary step
10269
10266
  * is measured on the surfaces, not on the accent, where it does not clear.
10270
10267
  */
10271
- .crewlet-choice-buttons__option--recommended .crewlet-choice-buttons__detail {
10268
+ .crewlet-choice-buttons__option--recommended:not([aria-pressed]) .crewlet-choice-buttons__detail {
10272
10269
  color: var(--color-text-on-accent);
10273
10270
  }
10274
10271
 
10275
- /* Chosen, it is off the accent, and the detail takes its tertiary step again. */
10276
- .crewlet-choice-buttons__option--recommended.is-chosen .crewlet-choice-buttons__detail {
10277
- color: var(--color-text-tertiary);
10278
- }
10279
-
10280
10272
  /*
10281
10273
  * The mark, in the micro-label register. Full ink rather than a faded one:
10282
10274
  * eleven pixels of white on the accent clears 4.5:1 only at full strength.
@@ -10289,8 +10281,12 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10289
10281
  text-transform: uppercase;
10290
10282
  }
10291
10283
 
10292
- /* The picture before the words, centred on the label's line. */
10293
- .crewlet-choice-buttons__media {
10284
+ /*
10285
+ * The picture before the words and the check mark at the far end, each
10286
+ * centred on the label's line.
10287
+ */
10288
+ .crewlet-choice-buttons__media,
10289
+ .crewlet-choice-buttons__check {
10294
10290
  display: inline-flex;
10295
10291
  flex: none;
10296
10292
  align-items: center;
@@ -10299,22 +10295,22 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
10299
10295
 
10300
10296
  /*
10301
10297
  * With a detail under it the label's line is the FIRST line, not the
10302
- * option's middle, so the picture stands on a box one line tall at the top.
10303
- * Centred on the label and its detail together, a suggestion's swatch sat
10304
- * 7px under the value it shows.
10298
+ * option's middle, so the picture and the check mark stand on a box one line
10299
+ * tall at the top. Centred on the label and its detail together, a
10300
+ * suggestion's swatch sat 7px under the value it shows.
10305
10301
  */
10306
- .crewlet-choice-buttons__option:has(.crewlet-choice-buttons__detail) .crewlet-choice-buttons__media {
10302
+ .crewlet-choice-buttons__option:has(.crewlet-choice-buttons__detail) .crewlet-choice-buttons__media,
10303
+ .crewlet-choice-buttons__option:has(.crewlet-choice-buttons__detail) .crewlet-choice-buttons__check {
10307
10304
  align-self: flex-start;
10308
10305
  min-height: calc(var(--crewlet-choice-buttons-leading) * 1em);
10309
10306
  }
10310
10307
 
10311
- /* Before the words, not at the far end with the recommended mark. */
10312
- .crewlet-choice-buttons__option:has(.crewlet-choice-buttons__media) {
10313
- justify-content: flex-start;
10314
- }
10315
-
10316
- .crewlet-choice-buttons__option:has(.crewlet-choice-buttons__media) .crewlet-choice-buttons__note {
10317
- margin-inline-start: auto;
10308
+ /*
10309
+ * The chosen option's check mark, at the label's size and in the edge's ink,
10310
+ * which clears the 3:1 a mark has to on the selected fill in every theme.
10311
+ */
10312
+ .crewlet-choice-buttons__check {
10313
+ color: var(--color-brand-accent-ink);
10318
10314
  }
10319
10315
 
10320
10316
  /*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.75.3",
3
+ "version": "0.75.4",
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.75.3",
46
- "@crewlethq/tokens": "0.75.3",
45
+ "@crewlethq/icons": "0.75.4",
46
+ "@crewlethq/tokens": "0.75.4",
47
47
  "prosemirror-commands": "1.7.2",
48
48
  "prosemirror-gapcursor": "1.4.1",
49
49
  "prosemirror-history": "1.5.1",
@@ -2,8 +2,8 @@ import { characterCountState, CharacterCount } from './chunk-PGCLHYVP.js';
2
2
  import { useHeadingLevel, headingTag, HeadingLevelProvider, nextHeadingLevel } from './chunk-PQADV6P6.js';
3
3
  import { announce } from './chunk-2G355KDJ.js';
4
4
  import { isComposing } from './chunk-H5XTJ7GJ.js';
5
- import { useFocusModality } from './chunk-NUZHC6MM.js';
6
5
  import { IconButton } from './chunk-UAUP6XGK.js';
6
+ import { useFocusModality } from './chunk-NUZHC6MM.js';
7
7
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
8
8
  import { cx } from './chunk-ODEQTPFM.js';
9
9
  import './Input-GEFFMKBS.css';
@@ -2,8 +2,8 @@ import { useListbox } from './chunk-7KHM2FZH.js';
2
2
  import { Tag } from './chunk-I5OIKDX2.js';
3
3
  import { announce } from './chunk-2G355KDJ.js';
4
4
  import { isComposing } from './chunk-H5XTJ7GJ.js';
5
- import { useFocusModality } from './chunk-NUZHC6MM.js';
6
5
  import { IconButton } from './chunk-UAUP6XGK.js';
6
+ import { useFocusModality } from './chunk-NUZHC6MM.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
8
8
  import './TagsInput-MZXEHKJD.css';
9
9
  import { forwardRef, useState, useRef, useId, useImperativeHandle, useEffect, useMemo, useLayoutEffect } from 'react';
@@ -1,8 +1,8 @@
1
1
  import { today, CalendarGrid, shiftMonth, compareDays } from './chunk-EE3DJMSQ.js';
2
2
  import { Popover } from './chunk-KHJIEPZV.js';
3
3
  import { Button } from './chunk-DGXZ635L.js';
4
- import { useFocusModality } from './chunk-NUZHC6MM.js';
5
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
+ import { useFocusModality } from './chunk-NUZHC6MM.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './DateTimePicker-PM6TIRIX.css';
8
8
  import { useMemo, useState, useEffect } from 'react';
@@ -3,8 +3,8 @@ import { Tooltip } from './chunk-I33UIUZD.js';
3
3
  import { Kbd } from './chunk-ANTAQAR4.js';
4
4
  import { Button } from './chunk-DGXZ635L.js';
5
5
  import { LAYER_REPOSITION_EVENT, LayerHost } from './chunk-OMV5W53A.js';
6
- import { returnFocus } from './chunk-NUZHC6MM.js';
7
6
  import { IconButton } from './chunk-UAUP6XGK.js';
7
+ import { returnFocus } from './chunk-NUZHC6MM.js';
8
8
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
9
9
  import { cx } from './chunk-ODEQTPFM.js';
10
10
  import './Canvas-4QJHVLJ4.css';
@@ -1,8 +1,8 @@
1
1
  import { Button } from './chunk-DGXZ635L.js';
2
2
  import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
3
3
  import { usePopupLayer } from './chunk-H5XTJ7GJ.js';
4
- import { returnFocus } from './chunk-NUZHC6MM.js';
5
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
+ import { returnFocus } from './chunk-NUZHC6MM.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './Menu-I4SNXHOT.css';
8
8
  import { useId, useState, useRef, useCallback, useLayoutEffect, useEffect } from 'react';