@crewlethq/ui 0.42.0 → 0.43.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 (47) hide show
  1. package/README.md +14 -2
  2. package/dist/ArrangeFrame/index.js +2 -2
  3. package/dist/ArrangeList/index.js +1 -1
  4. package/dist/AvatarPicker/index.js +3 -3
  5. package/dist/CharacterPicker/index.js +2 -2
  6. package/dist/DataView/index.js +2 -2
  7. package/dist/DatasetSource/index.js +1 -1
  8. package/dist/DirectoryList/DirectoryList.d.ts +55 -0
  9. package/dist/DirectoryList/index.d.ts +3 -0
  10. package/dist/DirectoryList/index.js +3 -0
  11. package/dist/DirectoryList-EESYMH2U.css +126 -0
  12. package/dist/DocTabsEditor/index.js +1 -1
  13. package/dist/ListDetail/ListDetail.d.ts +27 -0
  14. package/dist/ListDetail/index.d.ts +3 -0
  15. package/dist/ListDetail/index.js +2 -0
  16. package/dist/ListDetail-ALKU5VJW.css +53 -0
  17. package/dist/ListInput/index.js +2 -2
  18. package/dist/ObjectHeader/ObjectHeader.d.ts +7 -1
  19. package/dist/ObjectHeader/index.js +1 -1
  20. package/dist/{ObjectHeader-ZOS22FKX.css → ObjectHeader-DNQWRGUK.css} +50 -0
  21. package/dist/PropertyList/index.js +2 -2
  22. package/dist/RichEditor/index.js +1 -1
  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-ODOJJGXH.js → chunk-HFQBMEEH.js} +18 -2
  29. package/dist/{chunk-TVSHR35W.js → chunk-JF3TJUBU.js} +1 -1
  30. package/dist/{chunk-T6MXORP5.js → chunk-JGCDFMXN.js} +1 -1
  31. package/dist/{chunk-Q7HLZH32.js → chunk-PLLYOPS4.js} +1 -1
  32. package/dist/chunk-R5RCGD7N.js +12 -0
  33. package/dist/chunk-SJ6DMG4R.js +39 -0
  34. package/dist/generated/index.d.ts +2 -0
  35. package/dist/generated/index.js +49 -47
  36. package/dist/index.js +49 -47
  37. package/dist/styles.css +236 -1
  38. package/package.json +3 -3
  39. package/dist/{Editor-FXO2JVWK.js → Editor-AMO2B54T.js} +1 -1
  40. package/dist/{chunk-NF6SWHQI.js → chunk-524GGA67.js} +1 -1
  41. package/dist/{chunk-SXBJMBSV.js → chunk-IVAR7NRW.js} +1 -1
  42. package/dist/{chunk-VWYT3GVV.js → chunk-LKBZV5IT.js} +1 -1
  43. package/dist/{chunk-AACPFUZW.js → chunk-NCM73C34.js} +1 -1
  44. package/dist/{chunk-OWIGEE2Y.js → chunk-OVHJTOKW.js} +2 -2
  45. package/dist/{chunk-S3QTFUJX.js → chunk-VXCT6L3F.js} +0 -0
  46. package/dist/{chunk-SNQRGH4A.js → chunk-VZICPYGR.js} +1 -1
  47. package/dist/{chunk-NMYGJJJK.js → chunk-Z5WMCBHR.js} +1 -1
package/dist/styles.css CHANGED
@@ -13725,6 +13725,135 @@ svg.crewlet-datetime__chevron {
13725
13725
  }
13726
13726
 
13727
13727
 
13728
+ /* DirectoryList-EESYMH2U.css */
13729
+ /*
13730
+ * DirectoryList: named groups of links, each line a mark, a label and a state,
13731
+ * and one foot that holds the bottom (DirectoryList.tsx).
13732
+ *
13733
+ * NO FRAME OF ITS OWN. The list draws on the column it is placed in, its lines
13734
+ * on the hover and selected grounds alone, so it never makes a box inside a
13735
+ * box; the foot's hairline is the one rule it draws.
13736
+ */
13737
+
13738
+ .crewlet-directory {
13739
+ display: flex;
13740
+ flex-direction: column;
13741
+ gap: var(--spacing-2);
13742
+ min-width: 0;
13743
+ min-height: 0;
13744
+ height: 100%;
13745
+ font-family: var(--font-family-sans);
13746
+ }
13747
+
13748
+ /* The groups take the room and scroll on their own, so the foot stays put. */
13749
+ .crewlet-directory__groups {
13750
+ display: flex;
13751
+ flex: 1 1 auto;
13752
+ flex-direction: column;
13753
+ gap: var(--spacing-5);
13754
+ min-height: 0;
13755
+ overflow-y: auto;
13756
+ }
13757
+
13758
+ .crewlet-directory__group {
13759
+ display: flex;
13760
+ flex-direction: column;
13761
+ gap: var(--spacing-2);
13762
+ min-width: 0;
13763
+ }
13764
+
13765
+ .crewlet-directory__heading {
13766
+ margin: 0;
13767
+ padding: 0 var(--spacing-2);
13768
+ font-size: var(--font-size-xs);
13769
+ font-weight: var(--font-weight-semibold);
13770
+ letter-spacing: 0.04em;
13771
+ text-transform: uppercase;
13772
+ color: var(--color-text-tertiary);
13773
+ }
13774
+
13775
+ .crewlet-directory__items {
13776
+ display: flex;
13777
+ flex-direction: column;
13778
+ gap: 2px;
13779
+ margin: 0;
13780
+ padding: 0;
13781
+ list-style: none;
13782
+ }
13783
+
13784
+ .crewlet-directory__item {
13785
+ display: grid;
13786
+ grid-template-columns: auto minmax(0, 1fr) auto;
13787
+ align-items: center;
13788
+ gap: var(--spacing-2);
13789
+ min-height: var(--size-row-md);
13790
+ padding: var(--spacing-1) var(--spacing-2);
13791
+ border-radius: var(--radius-md);
13792
+ color: var(--color-text-primary);
13793
+ font-size: var(--font-size-sm);
13794
+ text-decoration: none;
13795
+ }
13796
+
13797
+ .crewlet-directory__item:hover {
13798
+ background: var(--color-surface-hover);
13799
+ }
13800
+
13801
+ .crewlet-directory__item--selected,
13802
+ .crewlet-directory__item--selected:hover {
13803
+ background: var(--color-surface-selected);
13804
+ }
13805
+
13806
+ .crewlet-directory__item:focus-visible {
13807
+ outline: 2px solid var(--color-focus);
13808
+ outline-offset: 1px;
13809
+ }
13810
+
13811
+ .crewlet-directory__mark {
13812
+ display: inline-flex;
13813
+ flex: none;
13814
+ align-items: center;
13815
+ justify-content: center;
13816
+ width: var(--size-row-sm);
13817
+ height: var(--size-row-sm);
13818
+ }
13819
+
13820
+ .crewlet-directory__text {
13821
+ display: flex;
13822
+ flex-direction: column;
13823
+ min-width: 0;
13824
+ }
13825
+
13826
+ .crewlet-directory__label {
13827
+ overflow: hidden;
13828
+ font-weight: var(--font-weight-medium);
13829
+ text-overflow: ellipsis;
13830
+ white-space: nowrap;
13831
+ }
13832
+
13833
+ .crewlet-directory__hint {
13834
+ overflow: hidden;
13835
+ font-size: var(--font-size-xs);
13836
+ color: var(--color-text-tertiary);
13837
+ text-overflow: ellipsis;
13838
+ white-space: nowrap;
13839
+ }
13840
+
13841
+ .crewlet-directory__status {
13842
+ display: inline-flex;
13843
+ flex: none;
13844
+ font-size: var(--font-size-xs);
13845
+ color: var(--color-text-secondary);
13846
+ }
13847
+
13848
+ /* The foot: one small step under the groups, at the bottom of the column. */
13849
+ .crewlet-directory__foot {
13850
+ flex: none;
13851
+ min-width: 0;
13852
+ padding: var(--spacing-2) var(--spacing-2) 0;
13853
+ border-top: 1px solid var(--color-border-default);
13854
+ }
13855
+
13856
+
13728
13857
  /* Disclosure-P4FH3C35.css */
13729
13858
  /*
13730
13859
  * The disclosure anatomy, declared once for every expander in the package.
@@ -17732,6 +17861,62 @@ a.crewlet-icon-btn {
17732
17861
  }
17733
17862
 
17734
17863
 
17864
+ /* ListDetail-ALKU5VJW.css */
17865
+ /*
17866
+ * ListDetail: a list beside the detail of what is chosen in it, each scrolling
17867
+ * on its own in the height it is given, one pane on a phone (ListDetail.tsx).
17868
+ */
17869
+
17870
+ .crewlet-list-detail {
17871
+ display: grid;
17872
+ flex: 1 1 auto;
17873
+ grid-template-columns: var(--crewlet-list-detail-list, 17rem) minmax(0, 1fr);
17874
+ gap: var(--spacing-8);
17875
+ height: 100%;
17876
+ min-width: 0;
17877
+ min-height: 0;
17878
+ }
17879
+
17880
+ .crewlet-list-detail__list {
17881
+ display: flex;
17882
+ flex-direction: column;
17883
+ min-width: 0;
17884
+ min-height: 0;
17885
+ padding-right: var(--spacing-6);
17886
+ border-right: 1px solid var(--color-border-default);
17887
+ }
17888
+
17889
+ .crewlet-list-detail__detail {
17890
+ display: flex;
17891
+ flex-direction: column;
17892
+ gap: var(--spacing-5);
17893
+ min-width: 0;
17894
+ min-height: 0;
17895
+ overflow-y: auto;
17896
+ }
17897
+
17898
+ @media (width < 640px) {
17899
+ .crewlet-list-detail {
17900
+ grid-template-columns: minmax(0, 1fr);
17901
+ height: auto;
17902
+ }
17903
+
17904
+ .crewlet-list-detail__list {
17905
+ padding-right: 0;
17906
+ border-right: 0;
17907
+ }
17908
+
17909
+ .crewlet-list-detail__detail {
17910
+ overflow: visible;
17911
+ }
17912
+
17913
+ .crewlet-list-detail--showing-list .crewlet-list-detail__detail,
17914
+ .crewlet-list-detail--showing-detail .crewlet-list-detail__list {
17915
+ display: none;
17916
+ }
17917
+ }
17918
+
17919
+
17735
17920
  /* ListInput-O7LJKOIG.css */
17736
17921
  /*
17737
17922
  * ListInput: an ordered list of sentences, written in the box at the top and
@@ -19635,7 +19820,7 @@ a.crewlet-icon-btn {
19635
19820
  }
19636
19821
 
19637
19822
 
19638
- /* ObjectHeader-ZOS22FKX.css */
19823
+ /* ObjectHeader-DNQWRGUK.css */
19639
19824
  /*
19640
19825
  * The header of an object: its eyebrow, its head row and its fact line.
19641
19826
  *
@@ -19656,6 +19841,56 @@ a.crewlet-icon-btn {
19656
19841
  padding: var(--spacing-3) 0 var(--spacing-2);
19657
19842
  }
19658
19843
 
19844
+ /*
19845
+ * A MARKED HEADER: the object's own mark on a plate, the catalogue tile's well
19846
+ * at one and a half rows, beside the column the rest of the header keeps. The
19847
+ * plate is the one box in the header, so the mark reads as the object's face
19848
+ * rather than as one more glyph in the eyebrow.
19849
+ */
19850
+ .crewlet-object-header--marked {
19851
+ flex-direction: row;
19852
+ align-items: flex-start;
19853
+ gap: var(--spacing-4);
19854
+ }
19855
+
19856
+ .crewlet-object-header__mark {
19857
+ display: inline-flex;
19858
+ flex: none;
19859
+ align-items: center;
19860
+ justify-content: center;
19861
+ width: calc(var(--size-row-lg) * 1.5);
19862
+ height: calc(var(--size-row-lg) * 1.5);
19863
+ border-radius: var(--radius-lg);
19864
+ background: var(--color-surface-elevated);
19865
+ border: 1px solid var(--color-border-default);
19866
+ }
19867
+
19868
+ .crewlet-object-header--peek .crewlet-object-header__mark {
19869
+ width: var(--size-row-lg);
19870
+ height: var(--size-row-lg);
19871
+ border-radius: var(--radius-md);
19872
+ }
19873
+
19874
+ .crewlet-object-header__body {
19875
+ display: flex;
19876
+ flex: 1 1 auto;
19877
+ flex-direction: column;
19878
+ gap: var(--spacing-1);
19879
+ min-width: 0;
19880
+ }
19881
+
19882
+ @media (width < 640px) {
19883
+ .crewlet-object-header--marked {
19884
+ gap: var(--spacing-3);
19885
+ }
19886
+
19887
+ .crewlet-object-header--marked .crewlet-object-header__mark {
19888
+ width: var(--size-row-lg);
19889
+ height: var(--size-row-lg);
19890
+ border-radius: var(--radius-md);
19891
+ }
19892
+ }
19893
+
19659
19894
  .crewlet-object-header__eyebrow {
19660
19895
  display: flex;
19661
19896
  align-items: center;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.42.0",
3
+ "version": "0.43.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.42.0",
46
- "@crewlethq/tokens": "0.42.0",
45
+ "@crewlethq/icons": "0.43.0",
46
+ "@crewlethq/tokens": "0.43.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 { richEditorLabels } from './chunk-CSQTDGTS.js';
2
1
  import { schema, readMarkdown, writeMarkdown } from './chunk-QH6VYJ3X.js';
2
+ import { richEditorLabels } from './chunk-CSQTDGTS.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';
@@ -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';
8
7
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
9
8
  import { focusables, isComposing } from './chunk-H5XTJ7GJ.js';
10
9
  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,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';
4
3
  import { isComposing } from './chunk-H5XTJ7GJ.js';
5
4
  import { IconButton } from './chunk-LACA4JGC.js';
6
5
  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 { announce } from './chunk-RSAQOKH3.js';
2
1
  import { IconButton } from './chunk-LACA4JGC.js';
2
+ import { announce } from './chunk-RSAQOKH3.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,6 +1,6 @@
1
1
  import { PageHeader } from './chunk-HOXGBLEY.js';
2
- import { DateTimePicker } from './chunk-UFXLNC2N.js';
3
2
  import { DataTable } from './chunk-GI3S6RMM.js';
3
+ import { DateTimePicker } from './chunk-UFXLNC2N.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';
@@ -1,14 +1,14 @@
1
1
  import { TagGroup } from './chunk-O2EGEONV.js';
2
- import { Tag } from './chunk-KYIAFNU7.js';
3
2
  import { CursorFlag } from './chunk-3BYIWOTV.js';
4
3
  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';
9
10
  import { StatusDot } from './chunk-WIATRXEJ.js';
10
11
  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';
File without changes
@@ -1,5 +1,5 @@
1
- import { useRoving, tabStop } from './chunk-EGMQURBR.js';
2
1
  import { Avatar } from './chunk-PZKHBB7D.js';
2
+ import { useRoving, tabStop } from './chunk-EGMQURBR.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,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';
4
3
  import { isComposing } from './chunk-H5XTJ7GJ.js';
5
4
  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';