@crewlethq/ui 0.43.0 → 0.45.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 (67) hide show
  1. package/README.md +22 -2
  2. package/dist/AccessDeniedCard/index.js +2 -2
  3. package/dist/AgentHandoffPanel/index.js +2 -2
  4. package/dist/ArrangeFrame/index.js +2 -2
  5. package/dist/ArrangeList/index.js +1 -1
  6. package/dist/ArtifactCard/index.js +3 -3
  7. package/dist/AsideLayout/AsideLayout.d.ts +24 -0
  8. package/dist/AsideLayout/index.d.ts +3 -0
  9. package/dist/AsideLayout/index.js +2 -0
  10. package/dist/AsideLayout-TH5SQZNK.css +45 -0
  11. package/dist/AvatarPicker/index.js +3 -3
  12. package/dist/CatalogTile/CatalogTile.d.ts +12 -1
  13. package/dist/CatalogTile/index.d.ts +1 -1
  14. package/dist/CatalogTile/index.js +1 -1
  15. package/dist/{CatalogTile-XL4XLFUH.css → CatalogTile-VPSLCKJE.css} +55 -0
  16. package/dist/CharacterPicker/index.js +2 -2
  17. package/dist/DataGrid/index.js +2 -2
  18. package/dist/DataView/index.js +3 -3
  19. package/dist/DatasetSource/index.js +1 -1
  20. package/dist/DirectoryList/DirectoryList.d.ts +9 -4
  21. package/dist/DirectoryList/index.js +1 -1
  22. package/dist/{DirectoryList-EESYMH2U.css → DirectoryList-7OXXN47X.css} +30 -7
  23. package/dist/DocTabsEditor/index.js +1 -1
  24. package/dist/EmptyState/EmptyState.d.ts +9 -2
  25. package/dist/EmptyState/index.js +1 -1
  26. package/dist/{EmptyState-C6HRBGT7.css → EmptyState-7L4UAQBX.css} +34 -0
  27. package/dist/LinkInterstitial/index.js +2 -2
  28. package/dist/ListInput/index.js +2 -2
  29. package/dist/Section/Section.d.ts +6 -0
  30. package/dist/Section/index.js +1 -1
  31. package/dist/{Section-O5AHGSOG.css → Section-M7SG6NP2.css} +14 -0
  32. package/dist/SheetGrid/index.js +5 -5
  33. package/dist/SlideFilmstrip/index.js +1 -1
  34. package/dist/Statement/Statement.d.ts +45 -0
  35. package/dist/Statement/index.d.ts +3 -0
  36. package/dist/Statement/index.js +4 -0
  37. package/dist/Statement-M4QDXIMO.css +53 -0
  38. package/dist/Switcher/index.js +2 -2
  39. package/dist/TableCells/index.js +1 -1
  40. package/dist/TagsInput/index.js +2 -2
  41. package/dist/VersionCompare/index.js +2 -2
  42. package/dist/{chunk-XIDD7PJO.js → chunk-2MYSESZF.js} +1 -1
  43. package/dist/{chunk-SJ6DMG4R.js → chunk-4AA6WPQU.js} +1 -1
  44. package/dist/{chunk-PCT47E7O.js → chunk-5GNA4RKP.js} +36 -1
  45. package/dist/{chunk-3TFDQLW3.js → chunk-JQ7IFSF6.js} +1 -1
  46. package/dist/chunk-KY65C4XS.js +12 -0
  47. package/dist/chunk-MZJKPTA5.js +36 -0
  48. package/dist/{chunk-BO7Q6JP6.js → chunk-N3SHQ3VU.js} +1 -1
  49. package/dist/{chunk-RA2ULG6H.js → chunk-PPUR46MK.js} +10 -1
  50. package/dist/{chunk-PLLYOPS4.js → chunk-Q7HLZH32.js} +1 -1
  51. package/dist/{chunk-KV3ODJXH.js → chunk-QTMUKRTN.js} +1 -1
  52. package/dist/{chunk-IUQQGIHL.js → chunk-U44WGRFW.js} +1 -1
  53. package/dist/generated/index.d.ts +2 -0
  54. package/dist/generated/index.js +62 -60
  55. package/dist/index.js +62 -60
  56. package/dist/styles.css +241 -11
  57. package/package.json +3 -3
  58. package/dist/{chunk-VXCT6L3F.js → chunk-6IPEPSB5.js} +0 -0
  59. package/dist/{chunk-UAGDFEBG.js → chunk-KKUJSMLF.js} +1 -1
  60. package/dist/{chunk-524GGA67.js → chunk-NF6SWHQI.js} +1 -1
  61. package/dist/{chunk-Z5WMCBHR.js → chunk-NMYGJJJK.js} +1 -1
  62. package/dist/{chunk-U2XAJONO.js → chunk-OKE5YSLD.js} +1 -1
  63. package/dist/{chunk-OVHJTOKW.js → chunk-OWIGEE2Y.js} +2 -2
  64. package/dist/{chunk-VZICPYGR.js → chunk-SNQRGH4A.js} +1 -1
  65. package/dist/{chunk-IVAR7NRW.js → chunk-SXBJMBSV.js} +1 -1
  66. package/dist/{chunk-LKBZV5IT.js → chunk-VWYT3GVV.js} +1 -1
  67. package/dist/{chunk-NCM73C34.js → chunk-Y4GXCKOC.js} +2 -2
package/dist/styles.css CHANGED
@@ -3986,6 +3986,54 @@ a.crewlet-make-row__item:active {
3986
3986
  }
3987
3987
 
3988
3988
 
3989
+ /* AsideLayout-TH5SQZNK.css */
3990
+ /*
3991
+ * AsideLayout: a main column with an aside beside it from 56rem of its own
3992
+ * width, and after it below that (AsideLayout.tsx).
3993
+ */
3994
+
3995
+ .crewlet-aside-layout {
3996
+ container-type: inline-size;
3997
+ min-width: 0;
3998
+ }
3999
+
4000
+ .crewlet-aside-layout__columns {
4001
+ display: grid;
4002
+ grid-template-columns: minmax(0, 1fr);
4003
+ align-items: start;
4004
+ gap: var(--spacing-7);
4005
+ }
4006
+
4007
+ /* EACH COLUMN IS A STACK one step apart, so the blocks in it stand apart
4008
+ evenly without each carrying a margin of its own. */
4009
+ .crewlet-aside-layout__main,
4010
+ .crewlet-aside-layout__aside {
4011
+ display: flex;
4012
+ flex-direction: column;
4013
+ gap: var(--spacing-6);
4014
+ min-width: 0;
4015
+ }
4016
+
4017
+ /* FOLLOWING THE MAIN COLUMN, the aside is set off by one hairline, so its
4018
+ facts read as about the page rather than as more of it. */
4019
+ .crewlet-aside-layout__aside {
4020
+ padding-top: var(--spacing-6);
4021
+ border-top: 1px solid var(--color-border-default);
4022
+ }
4023
+
4024
+ @container (min-width: 56rem) {
4025
+ .crewlet-aside-layout__columns {
4026
+ grid-template-columns: minmax(0, 1fr) var(--crewlet-aside-layout-aside, 18rem);
4027
+ gap: var(--spacing-8);
4028
+ }
4029
+
4030
+ .crewlet-aside-layout__aside {
4031
+ padding-top: 0;
4032
+ border-top: 0;
4033
+ }
4034
+ }
4035
+
4036
+
3989
4037
  /* AuthLayout-ODHBUPHQ.css */
3990
4038
  /*
3991
4039
  * The sign-in page: one narrow column near the top of the window.
@@ -6958,7 +7006,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
6958
7006
  }
6959
7007
 
6960
7008
 
6961
- /* CatalogTile-XL4XLFUH.css */
7009
+ /* CatalogTile-VPSLCKJE.css */
6962
7010
  /*
6963
7011
  * CatalogTile: mark, name and state, one sentence, and a foot with a quiet
6964
7012
  * fact and one action.
@@ -7095,6 +7143,61 @@ a.crewlet-breadcrumb__crumb:focus-visible {
7095
7143
  }
7096
7144
  }
7097
7145
 
7146
+ /*
7147
+ * COMPACT: a summary's tile, about half the comfortable one's height. One
7148
+ * header line holds the mark (the row step's well, 28px), the name, its state
7149
+ * and its fact, and the action at the end; the sentence is one line under it,
7150
+ * aligned to the name, cut to fit. No reserve and no foot, because a summary
7151
+ * has no row of feet to line up.
7152
+ */
7153
+ .crewlet-catalog-tile--compact {
7154
+ gap: var(--spacing-1);
7155
+ padding: var(--spacing-3);
7156
+ }
7157
+
7158
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__head {
7159
+ align-items: center;
7160
+ gap: var(--spacing-2);
7161
+ }
7162
+
7163
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__mark {
7164
+ width: var(--size-row-sm);
7165
+ height: var(--size-row-sm);
7166
+ }
7167
+
7168
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__title {
7169
+ flex: 1 1 auto;
7170
+ flex-direction: row;
7171
+ align-items: center;
7172
+ gap: var(--spacing-2);
7173
+ padding-top: 0;
7174
+ }
7175
+
7176
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__name {
7177
+ flex: 0 1 auto;
7178
+ min-width: 0;
7179
+ overflow: hidden;
7180
+ text-overflow: ellipsis;
7181
+ white-space: nowrap;
7182
+ }
7183
+
7184
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__status {
7185
+ flex: none;
7186
+ }
7187
+
7188
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__meta {
7189
+ flex: 0 1 auto;
7190
+ }
7191
+
7192
+ .crewlet-catalog-tile--compact .crewlet-catalog-tile__description {
7193
+ flex: none;
7194
+ min-height: 0;
7195
+ padding-left: calc(var(--size-row-sm) + var(--spacing-2));
7196
+ overflow: hidden;
7197
+ text-overflow: ellipsis;
7198
+ white-space: nowrap;
7199
+ }
7200
+
7098
7201
 
7099
7202
  /* ChangeMark-3VMTW7MT.css */
7100
7203
  /*
@@ -13725,7 +13828,7 @@ svg.crewlet-datetime__chevron {
13725
13828
  }
13726
13829
 
13727
13830
 
13728
- /* DirectoryList-EESYMH2U.css */
13831
+ /* DirectoryList-7OXXN47X.css */
13729
13832
  /*
13730
13833
  * DirectoryList: named groups of links, each line a mark, a label and a state,
13731
13834
  * and one foot that holds the bottom (DirectoryList.tsx).
@@ -13750,7 +13853,9 @@ svg.crewlet-datetime__chevron {
13750
13853
  display: flex;
13751
13854
  flex: 1 1 auto;
13752
13855
  flex-direction: column;
13753
- gap: var(--spacing-5);
13856
+ /* One small step between groups, so a heading reads as the head of the lines
13857
+ under it rather than a band between two runs of them. */
13858
+ gap: var(--spacing-3);
13754
13859
  min-height: 0;
13755
13860
  overflow-y: auto;
13756
13861
  }
@@ -13781,16 +13886,24 @@ svg.crewlet-datetime__chevron {
13781
13886
  list-style: none;
13782
13887
  }
13783
13888
 
13889
+ /*
13890
+ * THE RAIL'S ROW STEP, 30px (--size-nav-row): a directory is navigation beside
13891
+ * the page as the rail is beside the app, so its lines stand at the rail's
13892
+ * height and in its compact type. Everything a line says fits that one line:
13893
+ * a mark the size of the rail's glyph box, the hint inline after the label,
13894
+ * and the state compact at the end.
13895
+ */
13784
13896
  .crewlet-directory__item {
13785
13897
  display: grid;
13786
13898
  grid-template-columns: auto minmax(0, 1fr) auto;
13787
13899
  align-items: center;
13788
13900
  gap: var(--spacing-2);
13789
- min-height: var(--size-row-md);
13790
- padding: var(--spacing-1) var(--spacing-2);
13901
+ height: var(--size-nav-row);
13902
+ padding: 0 var(--spacing-2);
13791
13903
  border-radius: var(--radius-md);
13792
13904
  color: var(--color-text-primary);
13793
- font-size: var(--font-size-sm);
13905
+ font-size: var(--font-size-compact);
13906
+ line-height: var(--font-line-height-tight);
13794
13907
  text-decoration: none;
13795
13908
  }
13796
13909
 
@@ -13808,22 +13921,28 @@ svg.crewlet-datetime__chevron {
13808
13921
  outline-offset: 1px;
13809
13922
  }
13810
13923
 
13924
+ /* The box takes its mark, as the rail's glyph box does: a mark at the glyph's
13925
+ own step (16px, `md`) sits in the row with room to spare. */
13811
13926
  .crewlet-directory__mark {
13812
13927
  display: inline-flex;
13813
13928
  flex: none;
13814
13929
  align-items: center;
13815
13930
  justify-content: center;
13816
- width: var(--size-row-sm);
13817
- height: var(--size-row-sm);
13818
13931
  }
13819
13932
 
13933
+ /* ONE LINE: the label, then the hint after it in the quiet ink. The hint gives
13934
+ way first, so a narrow column cuts "Atlassian" before it cuts "Confluence". */
13820
13935
  .crewlet-directory__text {
13821
13936
  display: flex;
13822
- flex-direction: column;
13937
+ align-items: baseline;
13938
+ gap: var(--spacing-1);
13823
13939
  min-width: 0;
13824
13940
  }
13825
13941
 
13826
13942
  .crewlet-directory__label {
13943
+ flex: 0 0 auto;
13944
+ max-width: 100%;
13945
+ min-width: 0;
13827
13946
  overflow: hidden;
13828
13947
  font-weight: var(--font-weight-medium);
13829
13948
  text-overflow: ellipsis;
@@ -13831,6 +13950,8 @@ svg.crewlet-datetime__chevron {
13831
13950
  }
13832
13951
 
13833
13952
  .crewlet-directory__hint {
13953
+ flex: 0 1 auto;
13954
+ min-width: 0;
13834
13955
  overflow: hidden;
13835
13956
  font-size: var(--font-size-xs);
13836
13957
  color: var(--color-text-tertiary);
@@ -13838,10 +13959,15 @@ svg.crewlet-datetime__chevron {
13838
13959
  white-space: nowrap;
13839
13960
  }
13840
13961
 
13962
+ /* THE STATE IS COMPACT: a pill or a dot and its word in the small step, held
13963
+ inside the row so a state never makes one line taller than the rest. */
13841
13964
  .crewlet-directory__status {
13842
13965
  display: inline-flex;
13843
13966
  flex: none;
13967
+ align-items: center;
13968
+ max-height: calc(var(--size-nav-row) - var(--spacing-2));
13844
13969
  font-size: var(--font-size-xs);
13970
+ line-height: 1;
13845
13971
  color: var(--color-text-secondary);
13846
13972
  }
13847
13973
 
@@ -14848,7 +14974,7 @@ svg.crewlet-datetime__chevron {
14848
14974
  }
14849
14975
 
14850
14976
 
14851
- /* EmptyState-C6HRBGT7.css */
14977
+ /* EmptyState-7L4UAQBX.css */
14852
14978
  /*
14853
14979
  * The empty state.
14854
14980
  *
@@ -14923,6 +15049,40 @@ svg.crewlet-datetime__chevron {
14923
15049
  margin-top: var(--spacing-2);
14924
15050
  }
14925
15051
 
15052
+ /*
15053
+ * INLINE: one left-aligned row on a dashed hairline, the sentence beside its
15054
+ * action. The dash says "nothing here yet" without a glyph, and the box keeps
15055
+ * the place the content will take, so the page does not move when it is
15056
+ * filled. Narrow, the action wraps under the words.
15057
+ */
15058
+ .crewlet-empty-state--inline {
15059
+ flex-direction: row;
15060
+ flex-wrap: wrap;
15061
+ justify-content: space-between;
15062
+ gap: var(--spacing-2) var(--spacing-4);
15063
+ padding: var(--spacing-3) var(--spacing-4);
15064
+ border: 1px dashed var(--color-border-default);
15065
+ border-radius: var(--radius-md);
15066
+ text-align: start;
15067
+ }
15068
+
15069
+ .crewlet-empty-state__text {
15070
+ display: flex;
15071
+ flex: 1 1 16rem;
15072
+ flex-direction: column;
15073
+ gap: var(--spacing-1);
15074
+ min-width: 0;
15075
+ }
15076
+
15077
+ .crewlet-empty-state--inline .crewlet-empty-state__description {
15078
+ max-width: var(--size-measure);
15079
+ }
15080
+
15081
+ .crewlet-empty-state--inline .crewlet-empty-state__action {
15082
+ flex: none;
15083
+ margin-top: 0;
15084
+ }
15085
+
14926
15086
 
14927
15087
  /* EmptyValue-4B6ODXHT.css */
14928
15088
  /*
@@ -23325,7 +23485,7 @@ button.crewlet-presence-stack__member:focus-visible {
23325
23485
  }
23326
23486
 
23327
23487
 
23328
- /* Section-O5AHGSOG.css */
23488
+ /* Section-M7SG6NP2.css */
23329
23489
  /*
23330
23490
  * Section, the vertical rhythm band. One spacing scale keeps the cadence
23331
23491
  * between page sections consistent, and collapses on small viewports.
@@ -23351,6 +23511,14 @@ button.crewlet-presence-stack__member:focus-visible {
23351
23511
  padding-block: 0;
23352
23512
  }
23353
23513
 
23514
+ /* The console band at its tightest: a group heading's step to what it names. */
23515
+ .crewlet-section--tight {
23516
+ display: flex;
23517
+ flex-direction: column;
23518
+ gap: var(--spacing-2);
23519
+ padding-block: 0;
23520
+ }
23521
+
23354
23522
  .crewlet-section--sm {
23355
23523
  padding-block: var(--spacing-9);
23356
23524
  }
@@ -23434,6 +23602,12 @@ button.crewlet-presence-stack__member:focus-visible {
23434
23602
  gap: var(--spacing-3);
23435
23603
  }
23436
23604
 
23605
+ /* A tight band keeps its one small step with a title too: the titled column's
23606
+ gap would otherwise win, being later in the sheet. */
23607
+ .crewlet-section--tight.crewlet-section--titled {
23608
+ gap: var(--spacing-2);
23609
+ }
23610
+
23437
23611
  @media (max-width: 768px) {
23438
23612
  .crewlet-section--sm {
23439
23613
  padding-block: var(--spacing-7);
@@ -27764,6 +27938,62 @@ svg.crewlet-select__chevron {
27764
27938
  }
27765
27939
 
27766
27940
 
27941
+ /* Statement-M4QDXIMO.css */
27942
+ /*
27943
+ * Statement: a label over the words a page exists to say (Statement.tsx).
27944
+ *
27945
+ * THE LABEL IS THE MICRO REGISTER and the words are a step over the body, at
27946
+ * the reading measure, so the statement outweighs everything around it and a
27947
+ * line of it is one an eye can follow back.
27948
+ */
27949
+
27950
+ .crewlet-statement {
27951
+ display: flex;
27952
+ flex-direction: column;
27953
+ gap: var(--spacing-2);
27954
+ margin: 0;
27955
+ min-width: 0;
27956
+ }
27957
+
27958
+ .crewlet-statement__label {
27959
+ margin: 0;
27960
+ font-size: var(--font-size-2xs);
27961
+ font-weight: var(--font-weight-medium);
27962
+ letter-spacing: var(--font-letter-spacing-wide);
27963
+ line-height: var(--font-line-height-snug);
27964
+ text-transform: uppercase;
27965
+ color: var(--color-text-tertiary);
27966
+ }
27967
+
27968
+ /* THE AUTHOR'S OWN LINE BREAKS are kept, and no word stands alone on the last
27969
+ line. A long word (an address, a product name) breaks rather than widening
27970
+ the column. */
27971
+ .crewlet-statement__text {
27972
+ margin: 0;
27973
+ max-width: var(--size-measure);
27974
+ font-size: var(--font-size-lg);
27975
+ line-height: var(--font-line-height-relaxed);
27976
+ color: var(--color-text-primary);
27977
+ white-space: pre-wrap;
27978
+ overflow-wrap: anywhere;
27979
+ text-wrap: pretty;
27980
+ }
27981
+
27982
+ /* A BLOCK under the label is drawn as given: its own register, the column's
27983
+ width. */
27984
+ .crewlet-statement__body {
27985
+ min-width: 0;
27986
+ }
27987
+
27988
+ /* ON A PHONE the words step down to the body's own step over it, so a
27989
+ mission is a paragraph rather than a poster. */
27990
+ @media (width < 640px) {
27991
+ .crewlet-statement__text {
27992
+ font-size: var(--font-size-md);
27993
+ }
27994
+ }
27995
+
27996
+
27767
27997
  /* StatusDot-7OMCQCZF.css */
27768
27998
  /*
27769
27999
  * The status dot: a 7px mark in its tone's fill, beside the word it belongs
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.43.0",
3
+ "version": "0.45.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.45.0",
46
+ "@crewlethq/tokens": "0.45.0",
47
47
  "prosemirror-commands": "1.7.2",
48
48
  "prosemirror-gapcursor": "1.4.1",
49
49
  "prosemirror-history": "1.5.1",
File without changes
@@ -1,5 +1,5 @@
1
- import { ConfirmModal } from './chunk-FYINAYAJ.js';
2
1
  import { InlineCode } from './chunk-5CLW2CXT.js';
2
+ import { ConfirmModal } from './chunk-FYINAYAJ.js';
3
3
  import { Callout } from './chunk-SZZRIHGT.js';
4
4
  import './LinkInterstitial-ET4MSVSV.css';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -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,9 +1,9 @@
1
1
  import { Skeleton } from './chunk-TEUQWOWZ.js';
2
2
  import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
3
3
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
4
+ import { AvatarStack } from './chunk-5AQBPHZD.js';
4
5
  import { ArtifactKindGround } from './chunk-UBZDYOCA.js';
5
6
  import { Card } from './chunk-INHXF2CL.js';
6
- import { AvatarStack } from './chunk-5AQBPHZD.js';
7
7
  import { ArtifactAccessGlyph } from './chunk-BGLKLXL3.js';
8
8
  import { ArtifactKindGlyph } from './chunk-CE2THTQR.js';
9
9
  import { VisuallyHidden } from './chunk-BZFWDIV6.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';
@@ -1,9 +1,9 @@
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
- import { Popover } from './chunk-KHJIEPZV.js';
6
5
  import { Toolbar } from './chunk-NR4CPM4T.js';
6
+ import { Popover } from './chunk-KHJIEPZV.js';
7
7
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
8
8
  import { Input } from './chunk-ZI5G5RS7.js';
9
9
  import { Kbd } from './chunk-SMBKXWML.js';