@crewlethq/ui 0.43.0 → 0.44.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 (46) hide show
  1. package/README.md +10 -0
  2. package/dist/AgentHandoffPanel/index.js +2 -2
  3. package/dist/ArrangeFrame/index.js +2 -2
  4. package/dist/ArrangeList/index.js +1 -1
  5. package/dist/AvatarPicker/index.js +3 -3
  6. package/dist/CatalogTile/CatalogTile.d.ts +12 -1
  7. package/dist/CatalogTile/index.d.ts +1 -1
  8. package/dist/CatalogTile/index.js +1 -1
  9. package/dist/{CatalogTile-XL4XLFUH.css → CatalogTile-VPSLCKJE.css} +55 -0
  10. package/dist/CharacterPicker/index.js +2 -2
  11. package/dist/CommentThread/index.js +2 -2
  12. package/dist/DataView/index.js +2 -2
  13. package/dist/DatasetSource/index.js +1 -1
  14. package/dist/DirectoryList/DirectoryList.d.ts +9 -4
  15. package/dist/DirectoryList/index.js +1 -1
  16. package/dist/{DirectoryList-EESYMH2U.css → DirectoryList-7OXXN47X.css} +30 -7
  17. package/dist/DocTabsEditor/index.js +1 -1
  18. package/dist/ListInput/index.js +2 -2
  19. package/dist/RichEditor/index.js +1 -1
  20. package/dist/Section/Section.d.ts +6 -0
  21. package/dist/Section/index.js +1 -1
  22. package/dist/{Section-O5AHGSOG.css → Section-M7SG6NP2.css} +14 -0
  23. package/dist/SheetGrid/index.js +5 -5
  24. package/dist/SlideFilmstrip/index.js +1 -1
  25. package/dist/Switcher/index.js +2 -2
  26. package/dist/TableCells/index.js +1 -1
  27. package/dist/TagsInput/index.js +2 -2
  28. package/dist/{chunk-SJ6DMG4R.js → chunk-4AA6WPQU.js} +1 -1
  29. package/dist/{chunk-PCT47E7O.js → chunk-5GNA4RKP.js} +36 -1
  30. package/dist/{chunk-3TFDQLW3.js → chunk-JQ7IFSF6.js} +1 -1
  31. package/dist/{chunk-BO7Q6JP6.js → chunk-N3SHQ3VU.js} +1 -1
  32. package/dist/{chunk-PLLYOPS4.js → chunk-Q7HLZH32.js} +1 -1
  33. package/dist/{chunk-JF3TJUBU.js → chunk-TVSHR35W.js} +1 -1
  34. package/dist/generated/index.js +40 -40
  35. package/dist/index.js +40 -40
  36. package/dist/styles.css +102 -10
  37. package/package.json +3 -3
  38. package/dist/{Editor-AMO2B54T.js → Editor-FXO2JVWK.js} +1 -1
  39. package/dist/{chunk-NCM73C34.js → chunk-AACPFUZW.js} +1 -1
  40. package/dist/{chunk-524GGA67.js → chunk-NF6SWHQI.js} +1 -1
  41. package/dist/{chunk-Z5WMCBHR.js → chunk-NMYGJJJK.js} +1 -1
  42. package/dist/{chunk-AGNZIT3Z.js → chunk-NVMZQ3Y4.js} +1 -1
  43. package/dist/{chunk-OVHJTOKW.js → chunk-OWIGEE2Y.js} +2 -2
  44. package/dist/{chunk-VZICPYGR.js → chunk-SNQRGH4A.js} +1 -1
  45. package/dist/{chunk-IVAR7NRW.js → chunk-SXBJMBSV.js} +1 -1
  46. package/dist/{chunk-LKBZV5IT.js → chunk-VWYT3GVV.js} +1 -1
package/dist/styles.css CHANGED
@@ -6958,7 +6958,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
6958
6958
  }
6959
6959
 
6960
6960
 
6961
- /* CatalogTile-XL4XLFUH.css */
6961
+ /* CatalogTile-VPSLCKJE.css */
6962
6962
  /*
6963
6963
  * CatalogTile: mark, name and state, one sentence, and a foot with a quiet
6964
6964
  * fact and one action.
@@ -7095,6 +7095,61 @@ a.crewlet-breadcrumb__crumb:focus-visible {
7095
7095
  }
7096
7096
  }
7097
7097
 
7098
+ /*
7099
+ * COMPACT: a summary's tile, about half the comfortable one's height. One
7100
+ * header line holds the mark (the row step's well, 28px), the name, its state
7101
+ * and its fact, and the action at the end; the sentence is one line under it,
7102
+ * aligned to the name, cut to fit. No reserve and no foot, because a summary
7103
+ * has no row of feet to line up.
7104
+ */
7105
+ .crewlet-catalog-tile--compact {
7106
+ gap: var(--spacing-1);
7107
+ padding: var(--spacing-3);
7108
+ }
7109
+
7110
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__head {
7111
+ align-items: center;
7112
+ gap: var(--spacing-2);
7113
+ }
7114
+
7115
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__mark {
7116
+ width: var(--size-row-sm);
7117
+ height: var(--size-row-sm);
7118
+ }
7119
+
7120
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__title {
7121
+ flex: 1 1 auto;
7122
+ flex-direction: row;
7123
+ align-items: center;
7124
+ gap: var(--spacing-2);
7125
+ padding-top: 0;
7126
+ }
7127
+
7128
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__name {
7129
+ flex: 0 1 auto;
7130
+ min-width: 0;
7131
+ overflow: hidden;
7132
+ text-overflow: ellipsis;
7133
+ white-space: nowrap;
7134
+ }
7135
+
7136
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__status {
7137
+ flex: none;
7138
+ }
7139
+
7140
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__meta {
7141
+ flex: 0 1 auto;
7142
+ }
7143
+
7144
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__description {
7145
+ flex: none;
7146
+ min-height: 0;
7147
+ padding-left: calc(var(--size-row-sm) + var(--spacing-2));
7148
+ overflow: hidden;
7149
+ text-overflow: ellipsis;
7150
+ white-space: nowrap;
7151
+ }
7152
+
7098
7153
 
7099
7154
  /* ChangeMark-3VMTW7MT.css */
7100
7155
  /*
@@ -13725,7 +13780,7 @@ svg.crewlet-datetime__chevron {
13725
13780
  }
13726
13781
 
13727
13782
 
13728
- /* DirectoryList-EESYMH2U.css */
13783
+ /* DirectoryList-7OXXN47X.css */
13729
13784
  /*
13730
13785
  * DirectoryList: named groups of links, each line a mark, a label and a state,
13731
13786
  * and one foot that holds the bottom (DirectoryList.tsx).
@@ -13750,7 +13805,9 @@ svg.crewlet-datetime__chevron {
13750
13805
  display: flex;
13751
13806
  flex: 1 1 auto;
13752
13807
  flex-direction: column;
13753
- gap: var(--spacing-5);
13808
+ /* One small step between groups, so a heading reads as the head of the lines
13809
+ under it rather than a band between two runs of them. */
13810
+ gap: var(--spacing-3);
13754
13811
  min-height: 0;
13755
13812
  overflow-y: auto;
13756
13813
  }
@@ -13781,16 +13838,24 @@ svg.crewlet-datetime__chevron {
13781
13838
  list-style: none;
13782
13839
  }
13783
13840
 
13841
+ /*
13842
+ * THE RAIL'S ROW STEP, 30px (--size-nav-row): a directory is navigation beside
13843
+ * the page as the rail is beside the app, so its lines stand at the rail's
13844
+ * height and in its compact type. Everything a line says fits that one line:
13845
+ * a mark the size of the rail's glyph box, the hint inline after the label,
13846
+ * and the state compact at the end.
13847
+ */
13784
13848
  .crewlet-directory__item {
13785
13849
  display: grid;
13786
13850
  grid-template-columns: auto minmax(0, 1fr) auto;
13787
13851
  align-items: center;
13788
13852
  gap: var(--spacing-2);
13789
- min-height: var(--size-row-md);
13790
- padding: var(--spacing-1) var(--spacing-2);
13853
+ height: var(--size-nav-row);
13854
+ padding: 0 var(--spacing-2);
13791
13855
  border-radius: var(--radius-md);
13792
13856
  color: var(--color-text-primary);
13793
- font-size: var(--font-size-sm);
13857
+ font-size: var(--font-size-compact);
13858
+ line-height: var(--font-line-height-tight);
13794
13859
  text-decoration: none;
13795
13860
  }
13796
13861
 
@@ -13808,22 +13873,28 @@ svg.crewlet-datetime__chevron {
13808
13873
  outline-offset: 1px;
13809
13874
  }
13810
13875
 
13876
+ /* The box takes its mark, as the rail's glyph box does: a mark at the glyph's
13877
+ own step (16px, `md`) sits in the row with room to spare. */
13811
13878
  .crewlet-directory__mark {
13812
13879
  display: inline-flex;
13813
13880
  flex: none;
13814
13881
  align-items: center;
13815
13882
  justify-content: center;
13816
- width: var(--size-row-sm);
13817
- height: var(--size-row-sm);
13818
13883
  }
13819
13884
 
13885
+ /* ONE LINE: the label, then the hint after it in the quiet ink. The hint gives
13886
+ way first, so a narrow column cuts "Atlassian" before it cuts "Confluence". */
13820
13887
  .crewlet-directory__text {
13821
13888
  display: flex;
13822
- flex-direction: column;
13889
+ align-items: baseline;
13890
+ gap: var(--spacing-1);
13823
13891
  min-width: 0;
13824
13892
  }
13825
13893
 
13826
13894
  .crewlet-directory__label {
13895
+ flex: 0 0 auto;
13896
+ max-width: 100%;
13897
+ min-width: 0;
13827
13898
  overflow: hidden;
13828
13899
  font-weight: var(--font-weight-medium);
13829
13900
  text-overflow: ellipsis;
@@ -13831,6 +13902,8 @@ svg.crewlet-datetime__chevron {
13831
13902
  }
13832
13903
 
13833
13904
  .crewlet-directory__hint {
13905
+ flex: 0 1 auto;
13906
+ min-width: 0;
13834
13907
  overflow: hidden;
13835
13908
  font-size: var(--font-size-xs);
13836
13909
  color: var(--color-text-tertiary);
@@ -13838,10 +13911,15 @@ svg.crewlet-datetime__chevron {
13838
13911
  white-space: nowrap;
13839
13912
  }
13840
13913
 
13914
+ /* THE STATE IS COMPACT: a pill or a dot and its word in the small step, held
13915
+ inside the row so a state never makes one line taller than the rest. */
13841
13916
  .crewlet-directory__status {
13842
13917
  display: inline-flex;
13843
13918
  flex: none;
13919
+ align-items: center;
13920
+ max-height: calc(var(--size-nav-row) - var(--spacing-2));
13844
13921
  font-size: var(--font-size-xs);
13922
+ line-height: 1;
13845
13923
  color: var(--color-text-secondary);
13846
13924
  }
13847
13925
 
@@ -23325,7 +23403,7 @@ button.crewlet-presence-stack__member:focus-visible {
23325
23403
  }
23326
23404
 
23327
23405
 
23328
- /* Section-O5AHGSOG.css */
23406
+ /* Section-M7SG6NP2.css */
23329
23407
  /*
23330
23408
  * Section, the vertical rhythm band. One spacing scale keeps the cadence
23331
23409
  * between page sections consistent, and collapses on small viewports.
@@ -23351,6 +23429,14 @@ button.crewlet-presence-stack__member:focus-visible {
23351
23429
  padding-block: 0;
23352
23430
  }
23353
23431
 
23432
+ /* The console band at its tightest: a group heading's step to what it names. */
23433
+ .crewlet-section--tight {
23434
+ display: flex;
23435
+ flex-direction: column;
23436
+ gap: var(--spacing-2);
23437
+ padding-block: 0;
23438
+ }
23439
+
23354
23440
  .crewlet-section--sm {
23355
23441
  padding-block: var(--spacing-9);
23356
23442
  }
@@ -23434,6 +23520,12 @@ button.crewlet-presence-stack__member:focus-visible {
23434
23520
  gap: var(--spacing-3);
23435
23521
  }
23436
23522
 
23523
+ /* A tight band keeps its one small step with a title too: the titled column's
23524
+ gap would otherwise win, being later in the sheet. */
23525
+ .crewlet-section--tight.crewlet-section--titled {
23526
+ gap: var(--spacing-2);
23527
+ }
23528
+
23437
23529
  @media (max-width: 768px) {
23438
23530
  .crewlet-section--sm {
23439
23531
  padding-block: var(--spacing-7);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.43.0",
3
+ "version": "0.44.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.43.0",
46
- "@crewlethq/tokens": "0.43.0",
45
+ "@crewlethq/icons": "0.44.0",
46
+ "@crewlethq/tokens": "0.44.0",
47
47
  "prosemirror-commands": "1.7.2",
48
48
  "prosemirror-gapcursor": "1.4.1",
49
49
  "prosemirror-history": "1.5.1",
@@ -1,5 +1,5 @@
1
- import { schema, readMarkdown, writeMarkdown } from './chunk-QH6VYJ3X.js';
2
1
  import { richEditorLabels } from './chunk-CSQTDGTS.js';
2
+ import { schema, readMarkdown, writeMarkdown } from './chunk-QH6VYJ3X.js';
3
3
  import { safeHref, MARKDOWN_CALLOUT_TONES } from './chunk-BAKPMH3S.js';
4
4
  import { Toolbar } from './chunk-NR4CPM4T.js';
5
5
  import { FormField, Input } from './chunk-ZI5G5RS7.js';
@@ -1,6 +1,6 @@
1
1
  import { PageHeader } from './chunk-HOXGBLEY.js';
2
- import { DataTable } from './chunk-GI3S6RMM.js';
3
2
  import { DateTimePicker } from './chunk-UFXLNC2N.js';
3
+ import { DataTable } from './chunk-GI3S6RMM.js';
4
4
  import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
5
5
  import { Popover } from './chunk-KHJIEPZV.js';
6
6
  import { Toolbar } from './chunk-NR4CPM4T.js';
@@ -4,10 +4,10 @@ import { Popover } from './chunk-KHJIEPZV.js';
4
4
  import { KeyChip, highlightMatch } from './chunk-FYTIJM2T.js';
5
5
  import { Skeleton } from './chunk-TEUQWOWZ.js';
6
6
  import { Input } from './chunk-ZI5G5RS7.js';
7
+ import { announce } from './chunk-RSAQOKH3.js';
7
8
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
8
9
  import { focusables, isComposing } from './chunk-H5XTJ7GJ.js';
9
10
  import { returnFocus } from './chunk-NUZHC6MM.js';
10
- import { announce } from './chunk-RSAQOKH3.js';
11
11
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
12
12
  import { cx } from './chunk-ODEQTPFM.js';
13
13
  import './Switcher-K3EPA2RB.css';
@@ -1,8 +1,8 @@
1
1
  import { FormField, Textarea, Input } from './chunk-ZI5G5RS7.js';
2
2
  import { Kbd } from './chunk-SMBKXWML.js';
3
+ import { announce } from './chunk-RSAQOKH3.js';
3
4
  import { isComposing } from './chunk-H5XTJ7GJ.js';
4
5
  import { IconButton } from './chunk-LACA4JGC.js';
5
- import { announce } from './chunk-RSAQOKH3.js';
6
6
  import './ListInput-O7LJKOIG.css';
7
7
  import { useState, useRef, useLayoutEffect } from 'react';
8
8
  import { ArrowUpGlyph, ArrowDownGlyph, XGlyph, PlusGlyph } from '@crewlethq/icons/glyphs';
@@ -1,6 +1,6 @@
1
+ import { Document } from './chunk-PWG3VHRQ.js';
1
2
  import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
2
3
  import { toInstant, RelativeTime, formatExact, toISO } from './chunk-3CZ7XAVY.js';
3
- import { Document } from './chunk-PWG3VHRQ.js';
4
4
  import { Composer } from './chunk-7CXGSS7D.js';
5
5
  import { Count } from './chunk-BHHIIK3M.js';
6
6
  import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
@@ -1,14 +1,14 @@
1
1
  import { TagGroup } from './chunk-O2EGEONV.js';
2
+ import { Tag } from './chunk-KYIAFNU7.js';
2
3
  import { CursorFlag } from './chunk-3BYIWOTV.js';
3
4
  import { presenceHueClass } from './chunk-I6POAB4V.js';
4
- import { Tag } from './chunk-KYIAFNU7.js';
5
5
  import { ChangeMark } from './chunk-66X5WDKE.js';
6
6
  import { isEmptyValue, displayText, ratingMax, findPerson, findOption, statusTone, editText, textMax, sheetLabels, normalizeValue, sameValue, spokenText, drawnColumns, fitSamples, fittedWidth, columnWidth, SHEET_COLUMN_BOUNDS, sortRows, SHEET_ROW_HEIGHT, cellKey, columnOffsets, SHEET_ROW_NUMBER_WIDTH, rangeOf, presenceByCell, presenceByRow, presenceByColumn, scrollToRow, planClear, visibleRows, cellDescription, nextSort, rowName, inRange, hasPrevious, flagText, toTSV, planPaste, parseTSV, isMod, moveFrom, isTypingKey, editorSide, optionHue, parseText, liveOptions, checkValue } from './chunk-LFSIKGRQ.js';
7
7
  import { presenceLabels } from './chunk-Z7JYG5TF.js';
8
8
  import { Popover } from './chunk-KHJIEPZV.js';
9
- import { Avatar } from './chunk-PZKHBB7D.js';
10
9
  import { StatusDot } from './chunk-WIATRXEJ.js';
11
10
  import { Tooltip } from './chunk-I33UIUZD.js';
11
+ import { Avatar } from './chunk-PZKHBB7D.js';
12
12
  import { Menu } from './chunk-PCI7ZJ6Z.js';
13
13
  import { isComposing } from './chunk-H5XTJ7GJ.js';
14
14
  import { Button } from './chunk-OG6CL3EB.js';
@@ -1,5 +1,5 @@
1
- import { Avatar } from './chunk-PZKHBB7D.js';
2
1
  import { useRoving, tabStop } from './chunk-EGMQURBR.js';
2
+ import { Avatar } from './chunk-PZKHBB7D.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import { CREWLET_CHARACTERS, CREWLET_CHARACTER_GEOMETRY } from '@crewlethq/icons/characters';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -1,9 +1,9 @@
1
1
  import { Tag } from './chunk-KYIAFNU7.js';
2
2
  import { useListbox } from './chunk-7KHM2FZH.js';
3
+ import { announce } from './chunk-RSAQOKH3.js';
3
4
  import { isComposing } from './chunk-H5XTJ7GJ.js';
4
5
  import { IconButton } from './chunk-LACA4JGC.js';
5
6
  import { useFocusModality } from './chunk-NUZHC6MM.js';
6
- import { announce } from './chunk-RSAQOKH3.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
8
8
  import './TagsInput-CLFHP6I2.css';
9
9
  import { forwardRef, useState, useRef, useId, useImperativeHandle, useEffect, useMemo, useLayoutEffect } from 'react';
@@ -1,5 +1,5 @@
1
- import { IconButton } from './chunk-LACA4JGC.js';
2
1
  import { announce } from './chunk-RSAQOKH3.js';
2
+ import { IconButton } from './chunk-LACA4JGC.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './ArrangeFrame-QXOQTFAH.css';
5
5
  import { forwardRef, useRef, useCallback, useState, useEffect } from 'react';