@crewlethq/ui 0.76.1 → 0.78.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 (139) hide show
  1. package/README.md +18 -0
  2. package/dist/AgentHandoffPanel/index.js +5 -5
  3. package/dist/AppShell/index.js +4 -4
  4. package/dist/ArrangeList/index.js +4 -4
  5. package/dist/ArtifactBar/index.js +8 -8
  6. package/dist/ArtifactCard/index.js +6 -6
  7. package/dist/ArtifactPanel/index.js +1 -1
  8. package/dist/AvatarPicker/index.js +7 -7
  9. package/dist/Canvas/index.js +3 -3
  10. package/dist/CanvasBoard/index.js +5 -5
  11. package/dist/CanvasToolbar/index.js +4 -4
  12. package/dist/CheckGrid/CheckGrid.d.ts +62 -0
  13. package/dist/CheckGrid/index.d.ts +3 -0
  14. package/dist/CheckGrid/index.js +11 -0
  15. package/dist/CheckGrid-B3SRTHOJ.css +287 -0
  16. package/dist/Checkbox/index.js +3 -3
  17. package/dist/ChoiceCards/ChoiceCards.d.ts +20 -6
  18. package/dist/ChoiceCards/index.d.ts +1 -1
  19. package/dist/ChoiceCards/index.js +1 -1
  20. package/dist/{ChoiceCards-HAGJMK6Q.css → ChoiceCards-TVMBO3HZ.css} +60 -5
  21. package/dist/ColorField/index.js +3 -3
  22. package/dist/Combobox/index.js +3 -3
  23. package/dist/CommandPalette/index.js +4 -4
  24. package/dist/CommentThread/index.js +6 -6
  25. package/dist/Composer/index.js +3 -3
  26. package/dist/ConfirmField/index.js +3 -3
  27. package/dist/ContrastBadge/index.js +2 -2
  28. package/dist/ContrastHelp/index.js +4 -4
  29. package/dist/DataGrid/index.js +4 -4
  30. package/dist/DataTable/index.js +6 -6
  31. package/dist/DataView/index.js +8 -8
  32. package/dist/DateTimePicker/index.js +3 -3
  33. package/dist/DescriptionList/DescriptionList.d.ts +8 -1
  34. package/dist/DescriptionList/index.js +1 -1
  35. package/dist/{DescriptionList-DEZISDLQ.css → DescriptionList-VF7NIBXA.css} +6 -0
  36. package/dist/DocTabsEditor/index.js +5 -5
  37. package/dist/{Editor-BXOWAV46.js → Editor-QO2GRTMK.js} +4 -4
  38. package/dist/FollowBanner/index.js +1 -1
  39. package/dist/HuePicker/index.js +6 -6
  40. package/dist/InlineEditor/index.js +1 -1
  41. package/dist/Input/index.js +2 -2
  42. package/dist/LinkInterstitial/index.js +2 -2
  43. package/dist/ListInput/index.js +4 -4
  44. package/dist/LogoSlot/index.js +3 -3
  45. package/dist/MarkdownEditor/index.js +7 -7
  46. package/dist/Menu/index.js +3 -3
  47. package/dist/MergeConflicts/index.js +7 -7
  48. package/dist/Modal/index.js +2 -2
  49. package/dist/ObjectHeader/index.js +1 -1
  50. package/dist/{ObjectHeader-7BGA56VQ.css → ObjectHeader-VKQSEJDN.css} +3 -2
  51. package/dist/OrgTable/index.js +1 -1
  52. package/dist/PeekRail/index.js +1 -1
  53. package/dist/PresenterView/index.js +2 -2
  54. package/dist/PrincipalPicker/index.js +4 -4
  55. package/dist/PropertyList/index.js +3 -3
  56. package/dist/ProposalCard/index.js +4 -4
  57. package/dist/RichEditor/index.js +1 -1
  58. package/dist/SegmentedControl/index.js +6 -6
  59. package/dist/SelectionBar/index.js +1 -1
  60. package/dist/ShareDialog/index.js +2 -2
  61. package/dist/SheetColumnEditor/index.js +9 -9
  62. package/dist/SheetGrid/index.js +5 -5
  63. package/dist/SidePanel/index.js +1 -1
  64. package/dist/SlideCompare/index.js +1 -1
  65. package/dist/SlideFilmstrip/index.js +4 -4
  66. package/dist/Switcher/index.js +4 -4
  67. package/dist/Tabs/Tabs.d.ts +20 -2
  68. package/dist/Tabs/fold.d.ts +3 -1
  69. package/dist/Tabs/index.js +4 -4
  70. package/dist/{Tabs-7ZK2UF75.css → Tabs-M2ELSU3V.css} +68 -0
  71. package/dist/TagsInput/index.js +2 -2
  72. package/dist/ThemeSwitcher/index.js +7 -7
  73. package/dist/TileGrid/index.js +1 -1
  74. package/dist/{TileGrid-UYMVVVJK.css → TileGrid-XOEJ4P52.css} +3 -1
  75. package/dist/TimeRangePicker/index.js +8 -8
  76. package/dist/TimeWindowPicker/index.js +4 -4
  77. package/dist/TreeCanvas/index.js +4 -4
  78. package/dist/TreeGrid/index.js +1 -1
  79. package/dist/ValueField/index.js +4 -4
  80. package/dist/VersionCompare/index.js +7 -7
  81. package/dist/{chunk-TKUAGWNR.js → chunk-2GBG7KPK.js} +1 -1
  82. package/dist/{chunk-25AZQ3GZ.js → chunk-36WK24AI.js} +1 -1
  83. package/dist/{chunk-5CEQ3HLH.js → chunk-3NYVPLPW.js} +1 -1
  84. package/dist/{chunk-HQOEAUDJ.js → chunk-4O5XNGDC.js} +1 -1
  85. package/dist/{chunk-45M73G5A.js → chunk-4Y7PLU4I.js} +1 -1
  86. package/dist/{chunk-2STOSJT3.js → chunk-5N3MF7O2.js} +2 -2
  87. package/dist/{chunk-YQDRJZ5J.js → chunk-62GVKZJI.js} +1 -1
  88. package/dist/{chunk-RIAPCEB5.js → chunk-72Y5DBSY.js} +2 -2
  89. package/dist/{chunk-57AKYFML.js → chunk-A6NUAQFW.js} +1 -1
  90. package/dist/{chunk-S7WG53JB.js → chunk-AXEXOAZQ.js} +1 -1
  91. package/dist/{chunk-MKFEVHSR.js → chunk-B7NX425Z.js} +16 -3
  92. package/dist/{chunk-GHQG4VZA.js → chunk-BRFIUUXX.js} +2 -2
  93. package/dist/{chunk-E35HYQMK.js → chunk-CZUIPICC.js} +1 -1
  94. package/dist/{chunk-DSMQTED5.js → chunk-DCAT5OAX.js} +1 -1
  95. package/dist/{chunk-HWPP22XG.js → chunk-E6ETTJWX.js} +4 -4
  96. package/dist/{chunk-TJIBTHWJ.js → chunk-EVOGHRFN.js} +2 -2
  97. package/dist/{chunk-6EWNMSS4.js → chunk-FRLUJAFK.js} +1 -1
  98. package/dist/{chunk-LMQG3VPG.js → chunk-GKWZTTFV.js} +1 -1
  99. package/dist/{chunk-UY3FWQWG.js → chunk-HDLUG3MA.js} +2 -2
  100. package/dist/{chunk-TPCBPGSB.js → chunk-HMOGLAXY.js} +1 -1
  101. package/dist/chunk-HUIYSNBS.js +65 -0
  102. package/dist/{chunk-ZKLEAK7M.js → chunk-HZHFXKVP.js} +2 -2
  103. package/dist/{chunk-OCGIQGYJ.js → chunk-JIBZ5SF5.js} +2 -2
  104. package/dist/{chunk-ZMIVQGAB.js → chunk-KP5DDOMF.js} +4 -4
  105. package/dist/{chunk-PMBJMNBX.js → chunk-L5PK2MXF.js} +1 -1
  106. package/dist/{chunk-SK5SLGZH.js → chunk-LE6K34SN.js} +1 -1
  107. package/dist/{chunk-MFS6F2P7.js → chunk-LH4OF7FI.js} +3 -1
  108. package/dist/{chunk-TPIMOGOZ.js → chunk-LJSQT5NJ.js} +1 -1
  109. package/dist/{chunk-6THG44LI.js → chunk-LPN3RHMA.js} +42 -19
  110. package/dist/{chunk-OWHETZIU.js → chunk-LWKMJMVC.js} +1 -1
  111. package/dist/{chunk-HZDI2CCS.js → chunk-LXB4CABM.js} +2 -2
  112. package/dist/{chunk-LCZULGMB.js → chunk-MKWURHR5.js} +1 -1
  113. package/dist/{chunk-FQI62PIZ.js → chunk-ODAZIKZF.js} +2 -2
  114. package/dist/{chunk-HIWPPWNY.js → chunk-OPVTNHPH.js} +2 -2
  115. package/dist/{chunk-ZW5SRQ5M.js → chunk-PP5E3FGY.js} +1 -1
  116. package/dist/{chunk-BKXUZCZX.js → chunk-PQDQTK64.js} +1 -1
  117. package/dist/{chunk-IPBSCJIZ.js → chunk-QEVYTXCY.js} +3 -3
  118. package/dist/{chunk-KL6A7JGH.js → chunk-SQ7GYC4K.js} +1 -1
  119. package/dist/{chunk-MP7DGKB6.js → chunk-SZ75VYRX.js} +1 -1
  120. package/dist/{chunk-T24HBEU6.js → chunk-TL74TBDR.js} +1 -1
  121. package/dist/{chunk-IQMWMT4V.js → chunk-TNU6U7C5.js} +2 -2
  122. package/dist/{chunk-ADGNISEI.js → chunk-U4ICCJJP.js} +2 -2
  123. package/dist/{chunk-Q6CQMS6R.js → chunk-UFID3DSP.js} +1 -1
  124. package/dist/{chunk-OOLMTUCO.js → chunk-UQHTHOSZ.js} +1 -1
  125. package/dist/{chunk-JQEXAH7G.js → chunk-VDIKDCNE.js} +1 -1
  126. package/dist/{chunk-CFTBESST.js → chunk-WM3U4ARK.js} +1 -1
  127. package/dist/{chunk-I3G5FJ54.js → chunk-Y7OXW5SB.js} +1 -1
  128. package/dist/generated/index.d.ts +1 -0
  129. package/dist/generated/index.js +90 -89
  130. package/dist/index.js +90 -89
  131. package/dist/styles.css +435 -13
  132. package/package.json +3 -3
  133. package/dist/{chunk-FB3TCNQP.js → chunk-6Q7RW2JJ.js} +1 -1
  134. package/dist/{chunk-PCBPDMNU.js → chunk-CDFQ7MQK.js} +0 -0
  135. package/dist/{chunk-OBPINJNO.js → chunk-EMCVX5FY.js} +1 -1
  136. package/dist/{chunk-OQG4P5KU.js → chunk-KNAHKQD4.js} +1 -1
  137. package/dist/{chunk-7PJFUQMY.js → chunk-MGWFVAPN.js} +1 -1
  138. package/dist/{chunk-HPI5J6AR.js → chunk-SWLVR54P.js} +1 -1
  139. package/dist/{chunk-WK4FQPYW.js → chunk-TD6LHL7M.js} +1 -1
@@ -1,14 +1,14 @@
1
- export { TreeCanvas } from '../chunk-JQEXAH7G.js';
1
+ export { TreeCanvas } from '../chunk-VDIKDCNE.js';
2
2
  import '../chunk-MY374UUD.js';
3
- import '../chunk-OBPINJNO.js';
3
+ import '../chunk-EMCVX5FY.js';
4
4
  import '../chunk-LM3ISVJA.js';
5
5
  import '../chunk-I33UIUZD.js';
6
6
  import '../chunk-ANTAQAR4.js';
7
7
  import '../chunk-DGXZ635L.js';
8
- import '../chunk-OMV5W53A.js';
9
8
  import '../chunk-XSPCITPN.js';
9
+ import '../chunk-OMV5W53A.js';
10
10
  import '../chunk-H5XTJ7GJ.js';
11
- import '../chunk-UAUP6XGK.js';
12
11
  import '../chunk-NUZHC6MM.js';
12
+ import '../chunk-UAUP6XGK.js';
13
13
  import '../chunk-UT6CW3C7.js';
14
14
  import '../chunk-ODEQTPFM.js';
@@ -3,7 +3,7 @@ import '../chunk-MY374UUD.js';
3
3
  import '../chunk-LM3ISVJA.js';
4
4
  import '../chunk-OMV5W53A.js';
5
5
  import '../chunk-H5XTJ7GJ.js';
6
- import '../chunk-UAUP6XGK.js';
7
6
  import '../chunk-NUZHC6MM.js';
7
+ import '../chunk-UAUP6XGK.js';
8
8
  import '../chunk-UT6CW3C7.js';
9
9
  import '../chunk-ODEQTPFM.js';
@@ -1,15 +1,15 @@
1
- export { REFERENCE_NAME_PATTERN, ValueField, completeReference, isWholeReference, rankReferences, referenceAt, urlSchemeOf } from '../chunk-GHQG4VZA.js';
1
+ export { REFERENCE_NAME_PATTERN, ValueField, completeReference, isWholeReference, rankReferences, referenceAt, urlSchemeOf } from '../chunk-BRFIUUXX.js';
2
2
  import '../chunk-VK45YJLH.js';
3
- import '../chunk-6EWNMSS4.js';
3
+ import '../chunk-FRLUJAFK.js';
4
4
  import '../chunk-7KHM2FZH.js';
5
- import '../chunk-FB3TCNQP.js';
5
+ import '../chunk-6Q7RW2JJ.js';
6
6
  import '../chunk-PGCLHYVP.js';
7
7
  import '../chunk-PQADV6P6.js';
8
8
  import '../chunk-2G355KDJ.js';
9
9
  import '../chunk-OMV5W53A.js';
10
10
  import '../chunk-2YTOOH3A.js';
11
11
  import '../chunk-H5XTJ7GJ.js';
12
- import '../chunk-UAUP6XGK.js';
13
12
  import '../chunk-NUZHC6MM.js';
13
+ import '../chunk-UAUP6XGK.js';
14
14
  import '../chunk-UT6CW3C7.js';
15
15
  import '../chunk-ODEQTPFM.js';
@@ -1,20 +1,20 @@
1
- export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-OOLMTUCO.js';
1
+ export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-UQHTHOSZ.js';
2
2
  import '../chunk-AOFVXE6V.js';
3
- import '../chunk-25AZQ3GZ.js';
4
- import '../chunk-BKXUZCZX.js';
5
- import '../chunk-6THG44LI.js';
3
+ import '../chunk-36WK24AI.js';
4
+ import '../chunk-PQDQTK64.js';
5
+ import '../chunk-LPN3RHMA.js';
6
6
  import '../chunk-EGMQURBR.js';
7
7
  import '../chunk-CYQBDZ6M.js';
8
8
  import '../chunk-PPUR46MK.js';
9
9
  import '../chunk-MLDTLZAO.js';
10
10
  import '../chunk-PQADV6P6.js';
11
- import '../chunk-OQG4P5KU.js';
11
+ import '../chunk-KNAHKQD4.js';
12
12
  import '../chunk-DGXZ635L.js';
13
+ import '../chunk-XSPCITPN.js';
13
14
  import '../chunk-OMV5W53A.js';
14
15
  import '../chunk-2YTOOH3A.js';
15
- import '../chunk-XSPCITPN.js';
16
16
  import '../chunk-H5XTJ7GJ.js';
17
- import '../chunk-UAUP6XGK.js';
18
17
  import '../chunk-NUZHC6MM.js';
18
+ import '../chunk-UAUP6XGK.js';
19
19
  import '../chunk-UT6CW3C7.js';
20
20
  import '../chunk-ODEQTPFM.js';
@@ -1,6 +1,6 @@
1
1
  import { Switch } from './chunk-3XDT5ZWL.js';
2
2
  import { useReorder } from './chunk-MPVMB2DV.js';
3
- import { Checkbox } from './chunk-LMQG3VPG.js';
3
+ import { Checkbox } from './chunk-GKWZTTFV.js';
4
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,3 +1,3 @@
1
1
  import './HitArea-QUOS6ZDJ.css';
2
- import './Tabs-7ZK2UF75.css';
2
+ import './Tabs-M2ELSU3V.css';
3
3
  import './SegmentedControl-B7XCUOML.css';
@@ -1,7 +1,7 @@
1
1
  import { Modal } from './chunk-C667GCU7.js';
2
2
  import { useListbox, useHighlightRest } from './chunk-7KHM2FZH.js';
3
3
  import { Kbd } from './chunk-ANTAQAR4.js';
4
- import { Input } from './chunk-FB3TCNQP.js';
4
+ import { Input } from './chunk-6Q7RW2JJ.js';
5
5
  import { Count } from './chunk-MLDTLZAO.js';
6
6
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
7
7
  import { isComposing } from './chunk-H5XTJ7GJ.js';
@@ -1,4 +1,4 @@
1
- import { ContrastLevelTag } from './chunk-7PJFUQMY.js';
1
+ import { ContrastLevelTag } from './chunk-MGWFVAPN.js';
2
2
  import { Popover } from './chunk-KHJIEPZV.js';
3
3
  import { IconButton } from './chunk-UAUP6XGK.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,6 +1,6 @@
1
1
  import { useReorder } from './chunk-MPVMB2DV.js';
2
2
  import { Kbd } from './chunk-ANTAQAR4.js';
3
- import { FormField, Textarea } from './chunk-FB3TCNQP.js';
3
+ import { FormField, Textarea } from './chunk-6Q7RW2JJ.js';
4
4
  import { characterCountState, CharacterCount, countCharacters } from './chunk-PGCLHYVP.js';
5
5
  import { announce } from './chunk-2G355KDJ.js';
6
6
  import { Button } from './chunk-DGXZ635L.js';
@@ -4,12 +4,12 @@ import { presenceHueClass } from './chunk-EFX2YC5T.js';
4
4
  import { ChangeMark } from './chunk-Z2MZTI3H.js';
5
5
  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';
6
6
  import { presenceLabels } from './chunk-Z7JYG5TF.js';
7
- import { Popover } from './chunk-KHJIEPZV.js';
8
7
  import { Tag } from './chunk-VERJCAJ4.js';
8
+ import { Popover } from './chunk-KHJIEPZV.js';
9
9
  import { Tooltip } from './chunk-I33UIUZD.js';
10
10
  import { StatusDot } from './chunk-CYQBDZ6M.js';
11
11
  import { Avatar } from './chunk-KTIQSSME.js';
12
- import { Menu } from './chunk-OQG4P5KU.js';
12
+ import { Menu } from './chunk-KNAHKQD4.js';
13
13
  import { Button } from './chunk-DGXZ635L.js';
14
14
  import { isComposing } from './chunk-H5XTJ7GJ.js';
15
15
  import { IconButton } from './chunk-UAUP6XGK.js';
@@ -3,7 +3,7 @@ import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
3
3
  import { Popover } from './chunk-KHJIEPZV.js';
4
4
  import { KeyChip, highlightMatch } from './chunk-HBDA76EZ.js';
5
5
  import { Skeleton } from './chunk-BRLZXYPA.js';
6
- import { Input } from './chunk-FB3TCNQP.js';
6
+ import { Input } from './chunk-6Q7RW2JJ.js';
7
7
  import { announce } from './chunk-2G355KDJ.js';
8
8
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
9
9
  import { focusables, isComposing } from './chunk-H5XTJ7GJ.js';
@@ -1,11 +1,11 @@
1
1
  import { Select } from './chunk-VK45YJLH.js';
2
2
  import { today, shiftMonth, CalendarGrid, compareDays } from './chunk-EE3DJMSQ.js';
3
3
  import { Popover } from './chunk-KHJIEPZV.js';
4
- import { Input } from './chunk-FB3TCNQP.js';
4
+ import { Input } from './chunk-6Q7RW2JJ.js';
5
5
  import { Button } from './chunk-DGXZ635L.js';
6
6
  import { isComposing } from './chunk-H5XTJ7GJ.js';
7
- import { IconButton } from './chunk-UAUP6XGK.js';
8
7
  import { useFocusModality } from './chunk-NUZHC6MM.js';
8
+ import { IconButton } from './chunk-UAUP6XGK.js';
9
9
  import { cx } from './chunk-ODEQTPFM.js';
10
10
  import './TimeWindowPicker-YZPKNZZI.css';
11
11
  import { useMemo, useState, useRef, useId, useEffect } from 'react';
@@ -1,6 +1,6 @@
1
1
  import { Timeline } from './chunk-4MJN2KN6.js';
2
2
  import { Section } from './chunk-WFCWPXJN.js';
3
- import { Composer } from './chunk-E35HYQMK.js';
3
+ import { Composer } from './chunk-CZUIPICC.js';
4
4
  import { Disclosure } from './chunk-222VILSP.js';
5
5
  import { ArtifactPanel } from './chunk-FFGEJUAP.js';
6
6
  import { Button } from './chunk-DGXZ635L.js';
@@ -1,6 +1,6 @@
1
1
  import { Link } from './chunk-QF5UNP4T.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './ObjectHeader-7BGA56VQ.css';
3
+ import './ObjectHeader-VKQSEJDN.css';
4
4
  import { ArrowUpRightGlyph } from '@crewlethq/icons/glyphs';
5
5
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,10 +1,18 @@
1
1
  import { StatusDot } from './chunk-CYQBDZ6M.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './ChoiceCards-HAGJMK6Q.css';
3
+ import './ChoiceCards-TVMBO3HZ.css';
4
4
  import { useId } from 'react';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
6
 
7
- function ChoiceCards({ label, options, value, onChange, minCardWidth = "md", className }) {
7
+ function ChoiceCards({
8
+ label,
9
+ options,
10
+ value,
11
+ onChange,
12
+ minCardWidth = "md",
13
+ density = "comfortable",
14
+ className
15
+ }) {
8
16
  const name = useId();
9
17
  const described = options.some((o) => o.description != null && o.description !== false && o.description !== "");
10
18
  const facts = Math.max(0, ...options.map((o) => o.facts?.length ?? 0));
@@ -16,7 +24,12 @@ function ChoiceCards({ label, options, value, onChange, minCardWidth = "md", cla
16
24
  {
17
25
  role: "radiogroup",
18
26
  "aria-label": label,
19
- className: cx("crewlet-choice-cards", `crewlet-choice-cards--${minCardWidth}`, className),
27
+ className: cx(
28
+ "crewlet-choice-cards",
29
+ `crewlet-choice-cards--${minCardWidth}`,
30
+ density === "compact" && "crewlet-choice-cards--compact",
31
+ className
32
+ ),
20
33
  style: rows,
21
34
  children: options.map((option, index) => {
22
35
  const id = `${name}-${index}`;
@@ -1,6 +1,6 @@
1
1
  import { Select } from './chunk-VK45YJLH.js';
2
- import { Combobox } from './chunk-6EWNMSS4.js';
3
- import { FormField, Textarea, InputAffix } from './chunk-FB3TCNQP.js';
2
+ import { Combobox } from './chunk-FRLUJAFK.js';
3
+ import { FormField, Textarea, InputAffix } from './chunk-6Q7RW2JJ.js';
4
4
  import './Input-WSMB7JG2.css';
5
5
  import './VisuallyHidden-AOEXU5EB.css';
6
6
  import './HitArea-QUOS6ZDJ.css';
@@ -1,5 +1,5 @@
1
1
  import { Kbd } from './chunk-ANTAQAR4.js';
2
- import { Textarea } from './chunk-FB3TCNQP.js';
2
+ import { Textarea } from './chunk-6Q7RW2JJ.js';
3
3
  import { isComposing } from './chunk-H5XTJ7GJ.js';
4
4
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
1
  import { RefusalStrip, ReceiptStrip } from './chunk-ZWCK4N4L.js';
2
2
  import { ChangeList } from './chunk-BBD7PTBG.js';
3
3
  import { StatusCard } from './chunk-RTMNULTL.js';
4
- import { Checkbox } from './chunk-LMQG3VPG.js';
4
+ import { Checkbox } from './chunk-GKWZTTFV.js';
5
5
  import { Disclosure } from './chunk-222VILSP.js';
6
6
  import { Button } from './chunk-DGXZ635L.js';
7
7
  import { Spinner } from './chunk-XSPCITPN.js';
@@ -1,15 +1,15 @@
1
1
  import { PageHeader } from './chunk-FPDIHEM4.js';
2
2
  import { FilterPill } from './chunk-K4LZXSKZ.js';
3
- import { DateTimePicker } from './chunk-HPI5J6AR.js';
4
- import { DataTable } from './chunk-HZDI2CCS.js';
3
+ import { DateTimePicker } from './chunk-SWLVR54P.js';
4
+ import { DataTable } from './chunk-LXB4CABM.js';
5
5
  import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
6
6
  import { Toolbar } from './chunk-NR4CPM4T.js';
7
7
  import { Popover } from './chunk-KHJIEPZV.js';
8
8
  import { RelativeTime } from './chunk-EJNJMHQG.js';
9
9
  import { Kbd } from './chunk-ANTAQAR4.js';
10
- import { Input } from './chunk-FB3TCNQP.js';
10
+ import { Input } from './chunk-6Q7RW2JJ.js';
11
11
  import { Count } from './chunk-MLDTLZAO.js';
12
- import { Menu } from './chunk-OQG4P5KU.js';
12
+ import { Menu } from './chunk-KNAHKQD4.js';
13
13
  import { Button } from './chunk-DGXZ635L.js';
14
14
  import { IconButton } from './chunk-UAUP6XGK.js';
15
15
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
@@ -1,6 +1,6 @@
1
1
  import { useReorder } from './chunk-MPVMB2DV.js';
2
- import { Input } from './chunk-FB3TCNQP.js';
3
- import { Menu } from './chunk-OQG4P5KU.js';
2
+ import { Input } from './chunk-6Q7RW2JJ.js';
3
+ import { Menu } from './chunk-KNAHKQD4.js';
4
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
1
  import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
2
- import { Input } from './chunk-FB3TCNQP.js';
2
+ import { Input } from './chunk-6Q7RW2JJ.js';
3
3
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './HitArea-QUOS6ZDJ.css';
@@ -1,4 +1,4 @@
1
- import { FormField } from './chunk-FB3TCNQP.js';
1
+ import { FormField } from './chunk-6Q7RW2JJ.js';
2
2
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './Checkbox-GAMV2XD7.css';
@@ -1,10 +1,10 @@
1
1
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
2
- import { Menu } from './chunk-OQG4P5KU.js';
2
+ import { Menu } from './chunk-KNAHKQD4.js';
3
3
  import { PeekContext, AsideContext, ResizeHandle, clampSize } from './chunk-PIYJNCN7.js';
4
4
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
5
5
  import { focusables, useModalLayer, isComposing, layerCount } from './chunk-H5XTJ7GJ.js';
6
- import { IconButton } from './chunk-UAUP6XGK.js';
7
6
  import { returnFocus } from './chunk-NUZHC6MM.js';
7
+ import { IconButton } from './chunk-UAUP6XGK.js';
8
8
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
9
9
  import { cx } from './chunk-ODEQTPFM.js';
10
10
  import './HitArea-QUOS6ZDJ.css';
@@ -1,7 +1,7 @@
1
1
  import { SlideStage } from './chunk-RMEBFYL7.js';
2
2
  import { useReorder } from './chunk-MPVMB2DV.js';
3
3
  import { Kbd, isApplePlatform } from './chunk-ANTAQAR4.js';
4
- import { Menu } from './chunk-OQG4P5KU.js';
4
+ import { Menu } from './chunk-KNAHKQD4.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './SlideFilmstrip-BLGBCLEU.css';
@@ -0,0 +1,65 @@
1
+ import { Checkbox } from './chunk-GKWZTTFV.js';
2
+ import { cx } from './chunk-ODEQTPFM.js';
3
+ import './CheckGrid-B3SRTHOJ.css';
4
+ import { useId } from 'react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var MOST_COLUMNS = 6;
8
+ function CheckGrid({ label, rows, columns, stateOf, onChange, className }) {
9
+ const base = useId();
10
+ const rowId = (r) => `${base}-row-${r}`;
11
+ const noteId = (c) => `${base}-note-${c}`;
12
+ const layout = columns.length > MOST_COLUMNS ? "many" : String(columns.length);
13
+ const notes = columns.flatMap((column, c) => column.disabledReason ? [{ column, c }] : []);
14
+ return /* @__PURE__ */ jsxs(
15
+ "div",
16
+ {
17
+ className: cx("crewlet-check-grid", `crewlet-check-grid--${layout}`, className),
18
+ style: { ["--crewlet-check-grid-columns"]: columns.length },
19
+ children: [
20
+ /* @__PURE__ */ jsxs("div", { role: "table", "aria-label": label, className: "crewlet-check-grid__table", children: [
21
+ /* @__PURE__ */ jsxs("div", { role: "row", className: "crewlet-check-grid__head", children: [
22
+ /* @__PURE__ */ jsx("span", { role: "cell", className: "crewlet-check-grid__corner" }),
23
+ columns.map((column) => /* @__PURE__ */ jsxs("span", { role: "columnheader", className: "crewlet-check-grid__column", children: [
24
+ column.media ? /* @__PURE__ */ jsx("span", { className: "crewlet-check-grid__media", children: column.media }) : null,
25
+ column.label
26
+ ] }, column.value))
27
+ ] }),
28
+ rows.map((row, r) => /* @__PURE__ */ jsxs("div", { role: "row", className: "crewlet-check-grid__row", children: [
29
+ /* @__PURE__ */ jsxs("span", { role: "rowheader", className: "crewlet-check-grid__name", children: [
30
+ row.media ? /* @__PURE__ */ jsx("span", { className: "crewlet-check-grid__media", children: row.media }) : null,
31
+ /* @__PURE__ */ jsx("span", { id: rowId(r), children: row.label })
32
+ ] }),
33
+ columns.map((column, c) => {
34
+ const state = stateOf(row.value, column.value);
35
+ const refused = column.disabledReason !== void 0 && state === "unchecked";
36
+ const box = `${base}-box-${r}-${c}`;
37
+ return /* @__PURE__ */ jsx("span", { role: "cell", className: "crewlet-check-grid__cell", children: /* @__PURE__ */ jsx(
38
+ Checkbox,
39
+ {
40
+ id: box,
41
+ size: "sm",
42
+ className: "crewlet-check-grid__box",
43
+ label: column.label,
44
+ "aria-labelledby": `${rowId(r)} ${box}-label`,
45
+ "aria-describedby": refused ? noteId(c) : void 0,
46
+ checked: state === "checked",
47
+ indeterminate: state === "mixed",
48
+ disabled: refused,
49
+ onCheckedChange: (next) => onChange(row.value, column.value, next)
50
+ }
51
+ ) }, column.value);
52
+ })
53
+ ] }, row.value))
54
+ ] }),
55
+ notes.length > 0 ? /* @__PURE__ */ jsx("ul", { className: "crewlet-check-grid__notes", children: notes.map(({ column, c }) => /* @__PURE__ */ jsxs("li", { id: noteId(c), children: [
56
+ column.label,
57
+ ": ",
58
+ column.disabledReason
59
+ ] }, column.value)) }) : null
60
+ ]
61
+ }
62
+ );
63
+ }
64
+
65
+ export { CheckGrid };
@@ -1,11 +1,11 @@
1
1
  import { Skeleton } from './chunk-BRLZXYPA.js';
2
2
  import { PrincipalAvatar } from './chunk-N2BF272H.js';
3
3
  import { RelativeTime } from './chunk-EJNJMHQG.js';
4
- import { Card } from './chunk-4AUTALJA.js';
5
4
  import { AvatarStack } from './chunk-BT3GB7HC.js';
6
5
  import { ArtifactKindGround } from './chunk-NHLNHH4J.js';
7
- import { Checkbox } from './chunk-LMQG3VPG.js';
6
+ import { Card } from './chunk-4AUTALJA.js';
8
7
  import { ArtifactAccessGlyph } from './chunk-DOY3KC6I.js';
8
+ import { Checkbox } from './chunk-GKWZTTFV.js';
9
9
  import { ArtifactKindGlyph } from './chunk-RSKW25Y5.js';
10
10
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
11
11
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
1
  import { Modal } from './chunk-C667GCU7.js';
2
2
  import { Callout } from './chunk-BPCY7ZID.js';
3
- import { SegmentedControl } from './chunk-BKXUZCZX.js';
4
- import { FormField, Input } from './chunk-FB3TCNQP.js';
3
+ import { SegmentedControl } from './chunk-PQDQTK64.js';
4
+ import { FormField, Input } from './chunk-6Q7RW2JJ.js';
5
5
  import { Button } from './chunk-DGXZ635L.js';
6
6
  import { useState } from 'react';
7
7
  import { ClockGlyph } from '@crewlethq/icons/glyphs';
@@ -1,11 +1,11 @@
1
1
  import { Select } from './chunk-VK45YJLH.js';
2
2
  import { SHEET_LABELS, SHEET_COLUMN_TYPES, optionHue, retypeColumn } from './chunk-LFSIKGRQ.js';
3
- import { HueSwatch } from './chunk-SK5SLGZH.js';
3
+ import { HueSwatch } from './chunk-LE6K34SN.js';
4
4
  import { NODE_HUES, NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
5
- import { Checkbox } from './chunk-LMQG3VPG.js';
5
+ import { Checkbox } from './chunk-GKWZTTFV.js';
6
6
  import { Kbd } from './chunk-ANTAQAR4.js';
7
- import { FormField, Input } from './chunk-FB3TCNQP.js';
8
- import { Menu } from './chunk-OQG4P5KU.js';
7
+ import { FormField, Input } from './chunk-6Q7RW2JJ.js';
8
+ import { Menu } from './chunk-KNAHKQD4.js';
9
9
  import { Button } from './chunk-DGXZ635L.js';
10
10
  import { IconButton } from './chunk-UAUP6XGK.js';
11
11
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
@@ -1,5 +1,5 @@
1
1
  import { useThemePreference, useDensityPreference } from './chunk-Z24ZUSTX.js';
2
- import { SegmentedControl } from './chunk-BKXUZCZX.js';
2
+ import { SegmentedControl } from './chunk-PQDQTK64.js';
3
3
  import { SunGlyph, MonitorGlyph, MoonGlyph } from '@crewlethq/icons/glyphs';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { NODE_HUES, NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
2
- import { SegmentedControl } from './chunk-BKXUZCZX.js';
2
+ import { SegmentedControl } from './chunk-PQDQTK64.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,11 +1,12 @@
1
1
  import { cx } from './chunk-ODEQTPFM.js';
2
- import './DescriptionList-DEZISDLQ.css';
2
+ import './DescriptionList-VF7NIBXA.css';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
5
5
  function DescriptionList({
6
6
  dense = false,
7
7
  fit = false,
8
8
  termWidth,
9
+ uniform = false,
9
10
  items,
10
11
  className,
11
12
  style,
@@ -21,6 +22,7 @@ function DescriptionList({
21
22
  "crewlet-description-list",
22
23
  dense && "crewlet-description-list--dense",
23
24
  fit && "crewlet-description-list--fit",
25
+ uniform && "crewlet-description-list--uniform",
24
26
  className
25
27
  ),
26
28
  children: [
@@ -1,5 +1,5 @@
1
1
  import { InlineCode } from './chunk-PLL7ZJHY.js';
2
- import { FormField, Input } from './chunk-FB3TCNQP.js';
2
+ import { FormField, Input } from './chunk-6Q7RW2JJ.js';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
 
5
5
  function confirmMatches(typed, phrase) {
@@ -1,12 +1,12 @@
1
1
  import { useRoving, tabStop } from './chunk-EGMQURBR.js';
2
2
  import { StatusDot } from './chunk-CYQBDZ6M.js';
3
3
  import { Count } from './chunk-MLDTLZAO.js';
4
- import { Menu } from './chunk-OQG4P5KU.js';
4
+ import { Menu } from './chunk-KNAHKQD4.js';
5
5
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
6
6
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
8
8
  import './HitArea-QUOS6ZDJ.css';
9
- import './Tabs-7ZK2UF75.css';
9
+ import './Tabs-M2ELSU3V.css';
10
10
  import React, { useRef, useImperativeHandle, useLayoutEffect, useState } from 'react';
11
11
  import { ChevronDownGlyph } from '@crewlethq/icons/glyphs';
12
12
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -44,7 +44,7 @@ function noteFits({
44
44
  var NOTHING_FOLDED = { folded: [], note: true };
45
45
  var px = (value) => parseFloat(value) || 0;
46
46
  var widthOf = (el) => el ? el.getBoundingClientRect().width : 0;
47
- function useFold(enabled, box, row, values, current) {
47
+ function useFold(enabled, box, row, values, current, layout = null) {
48
48
  const [fold, setFold] = useState(NOTHING_FOLDED);
49
49
  const signature = values.join("\n");
50
50
  useLayoutEffect(() => {
@@ -81,7 +81,7 @@ function useFold(enabled, box, row, values, current) {
81
81
  watch.observe(item);
82
82
  }
83
83
  return () => watch.disconnect();
84
- }, [enabled, box, row, signature, current]);
84
+ }, [enabled, box, row, signature, current, layout]);
85
85
  return enabled ? fold : NOTHING_FOLDED;
86
86
  }
87
87
  var FOLDED = { "aria-hidden": true, inert: true };
@@ -112,6 +112,7 @@ function Tabs({
112
112
  panelId,
113
113
  renderItem,
114
114
  trailing,
115
+ actions,
115
116
  overflow = "scroll",
116
117
  moreLabel = "More",
117
118
  moreMenuLabel,
@@ -122,6 +123,7 @@ function Tabs({
122
123
  const boxRef = useRef(null);
123
124
  const folding = overflow === "menu";
124
125
  const boxed = folding && !renderItem;
126
+ const barred = actions !== void 0 && actions !== null && actions !== false;
125
127
  useImperativeHandle(ref, () => boxed ? boxRef.current : navRef.current, [boxed]);
126
128
  const { buttons, onKeyDown } = useRoving(items.length, null);
127
129
  const fold = useFold(
@@ -129,7 +131,8 @@ function Tabs({
129
131
  boxed ? boxRef : navRef,
130
132
  navRef,
131
133
  items.map((item) => item.value),
132
- value
134
+ value,
135
+ barred
133
136
  );
134
137
  const isFolded = (item) => fold.folded.includes(item.value);
135
138
  useLayoutEffect(() => {
@@ -161,13 +164,18 @@ function Tabs({
161
164
  mutation.disconnect();
162
165
  resize?.disconnect();
163
166
  };
164
- }, [variant, value, items]);
167
+ }, [variant, value, items, barred]);
168
+ useLayoutEffect(() => {
169
+ if (variant === "underline" || !barred) return;
170
+ const nav = navRef.current;
171
+ if (nav) reveal(nav);
172
+ }, [variant, value, items, barred]);
165
173
  const rootClass = cx(
166
174
  "crewlet-tabs",
167
175
  `crewlet-tabs--${variant}`,
168
176
  `crewlet-tabs--${size}`,
169
177
  folding && "crewlet-tabs--fold",
170
- !boxed && className
178
+ !boxed && !barred && className
171
179
  );
172
180
  const selected = tabStop(
173
181
  items.map((item) => ({ disabled: item.disabled || isFolded(item) })),
@@ -274,21 +282,36 @@ function Tabs({
274
282
  children: note
275
283
  }
276
284
  ) : null;
285
+ const bar = (row) => /* @__PURE__ */ jsxs("div", { className: barred ? cx("crewlet-tabs-bar", `crewlet-tabs-bar--${variant}`, className) : "crewlet-tabs-host", children: [
286
+ row,
287
+ barred ? /* @__PURE__ */ jsx("div", { className: "crewlet-tabs__actions", "data-tabs-actions": "", children: actions }) : null
288
+ ] });
277
289
  if (renderItem) {
278
- return /* @__PURE__ */ jsxs("nav", { ref: navRef, className: rootClass, "aria-label": ariaLabel, children: [
279
- rows,
280
- more,
281
- noteNode,
282
- folding && trailing ? /* @__PURE__ */ jsx("span", { className: "crewlet-tabs__trailing", "data-tabs-trailing": "", children: trailing }) : trailing
283
- ] });
290
+ return bar(
291
+ /* @__PURE__ */ jsxs("nav", { ref: navRef, className: rootClass, "aria-label": ariaLabel, children: [
292
+ rows,
293
+ more,
294
+ noteNode,
295
+ folding && trailing ? /* @__PURE__ */ jsx("span", { className: "crewlet-tabs__trailing", "data-tabs-trailing": "", children: trailing }) : trailing
296
+ ] })
297
+ );
284
298
  }
285
299
  const list = /* @__PURE__ */ jsx("div", { ref: navRef, className: rootClass, "aria-label": ariaLabel, role: "tablist", children: rows });
286
- if (!boxed) return list;
287
- return /* @__PURE__ */ jsxs("div", { ref: boxRef, className: cx("crewlet-tabs-fold", `crewlet-tabs-fold--${variant}`, className), children: [
288
- list,
289
- more,
290
- noteNode
291
- ] });
300
+ if (!boxed) return bar(list);
301
+ return bar(
302
+ /* @__PURE__ */ jsxs(
303
+ "div",
304
+ {
305
+ ref: boxRef,
306
+ className: cx("crewlet-tabs-fold", `crewlet-tabs-fold--${variant}`, !barred && className),
307
+ children: [
308
+ list,
309
+ more,
310
+ noteNode
311
+ ]
312
+ }
313
+ )
314
+ );
292
315
  }
293
316
  function TabPanel({ id, value, children, className }) {
294
317
  return /* @__PURE__ */ jsx(
@@ -1,5 +1,5 @@
1
1
  import { FileDrop, FilePickButton } from './chunk-KQWJWTED.js';
2
- import { contrastRatio } from './chunk-7PJFUQMY.js';
2
+ import { contrastRatio } from './chunk-MGWFVAPN.js';
3
3
  import { normalizeHex } from './chunk-7W3LYIOC.js';
4
4
  import { Button } from './chunk-DGXZ635L.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
@@ -2,8 +2,8 @@ import { Modal } from './chunk-C667GCU7.js';
2
2
  import { useClipboard } from './chunk-STJ7QBC3.js';
3
3
  import { EmptyValue } from './chunk-RE3FBGQQ.js';
4
4
  import { useCardHeaderSlot } from './chunk-AV2DXAEL.js';
5
- import { Checkbox } from './chunk-LMQG3VPG.js';
6
- import { Menu } from './chunk-OQG4P5KU.js';
5
+ import { Checkbox } from './chunk-GKWZTTFV.js';
6
+ import { Menu } from './chunk-KNAHKQD4.js';
7
7
  import { Button } from './chunk-DGXZ635L.js';
8
8
  import { IconButton } from './chunk-UAUP6XGK.js';
9
9
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
@@ -1,4 +1,4 @@
1
- import { Checkbox } from './chunk-LMQG3VPG.js';
1
+ import { Checkbox } from './chunk-GKWZTTFV.js';
2
2
  import { EmptyState } from './chunk-PPUR46MK.js';
3
3
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
4
4
  import { Button } from './chunk-DGXZ635L.js';