@crewlethq/ui 0.35.0 → 0.36.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 (170) hide show
  1. package/README.md +77 -0
  2. package/dist/AgentHandoffPanel/AgentHandoffPanel.d.ts +99 -0
  3. package/dist/AgentHandoffPanel/index.d.ts +3 -0
  4. package/dist/AgentHandoffPanel/index.js +16 -0
  5. package/dist/AgentHandoffPanel-JWSW62GU.css +151 -0
  6. package/dist/ArrangeFrame/index.js +1 -1
  7. package/dist/{ArrangeFrame-3PLZAG22.css → ArrangeFrame-QXOQTFAH.css} +22 -5
  8. package/dist/ArrangeList/index.js +4 -3
  9. package/dist/ArtifactBar/ArtifactBar.d.ts +2 -1
  10. package/dist/ArtifactBar/index.js +2 -2
  11. package/dist/{ArtifactBar-HV5AT4RG.css → ArtifactBar-FWPBBKQ5.css} +8 -0
  12. package/dist/ArtifactCard/index.js +3 -3
  13. package/dist/ArtifactCover/index.js +3 -2
  14. package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +16 -7
  15. package/dist/ArtifactKindIllustration/index.js +1 -1
  16. package/dist/{ArtifactKindIllustration-5FPRJQ3P.css → ArtifactKindIllustration-5KTP43QS.css} +36 -0
  17. package/dist/ArtifactMakeRow/ArtifactMakeRow.d.ts +39 -0
  18. package/dist/ArtifactMakeRow/index.d.ts +4 -0
  19. package/dist/ArtifactMakeRow/index.js +4 -0
  20. package/dist/ArtifactMakeRow-RWUTS5MC.css +167 -0
  21. package/dist/ArtifactPanel/ArtifactPanel.d.ts +8 -1
  22. package/dist/ArtifactPanel/index.js +1 -1
  23. package/dist/{ArtifactPanel-HW3SU7CP.css → ArtifactPanel-KKUUIPEU.css} +9 -0
  24. package/dist/AuthLayout/index.js +2 -2
  25. package/dist/AvatarPicker/index.js +2 -2
  26. package/dist/Canvas/index.js +2 -2
  27. package/dist/CanvasBoard/CanvasBoard.d.ts +27 -13
  28. package/dist/CanvasBoard/index.d.ts +1 -1
  29. package/dist/CanvasBoard/index.js +4 -4
  30. package/dist/{CanvasBoard-5NNSKY6A.css → CanvasBoard-TS4P356F.css} +13 -6
  31. package/dist/CanvasToolbar/index.js +3 -3
  32. package/dist/Card/index.js +1 -1
  33. package/dist/{Card-KJOYHDTJ.css → Card-QOVASQNU.css} +17 -12
  34. package/dist/ChangeMark/index.js +2 -2
  35. package/dist/Checkbox/index.js +3 -2
  36. package/dist/ChoiceButtons/index.js +1 -1
  37. package/dist/{ChoiceButtons-DJ5EOGUA.css → ChoiceButtons-FLIFXFFS.css} +10 -0
  38. package/dist/ChoiceList/index.js +1 -1
  39. package/dist/{ChoiceList-RBL7FNQL.css → ChoiceList-EA2W6MOS.css} +36 -5
  40. package/dist/Combobox/index.js +3 -2
  41. package/dist/CommandPalette/index.js +3 -2
  42. package/dist/CommentThread/index.js +6 -5
  43. package/dist/Composer/Composer.d.ts +4 -0
  44. package/dist/Composer/index.js +3 -2
  45. package/dist/{Composer-ABGJIAIR.css → Composer-PXITWNEK.css} +26 -15
  46. package/dist/ConfirmField/index.js +3 -2
  47. package/dist/DataTable/index.js +5 -4
  48. package/dist/DataView/index.js +9 -8
  49. package/dist/DatasetSource/DatasetSource.d.ts +4 -0
  50. package/dist/DatasetSource/index.js +1 -1
  51. package/dist/{DatasetSource-XFPZBRXL.css → DatasetSource-SMGX4PS5.css} +38 -4
  52. package/dist/DateTimePicker/index.js +2 -1
  53. package/dist/{DateTimePicker-HG2KQXQ6.css → DateTimePicker-2IVTKFV2.css} +15 -2
  54. package/dist/DocTabsEditor/index.js +4 -3
  55. package/dist/Document/Document.d.ts +15 -3
  56. package/dist/Document/index.js +2 -1
  57. package/dist/{Document-JUGCSQ4L.css → Document-YFWTWXJP.css} +34 -2
  58. package/dist/{Editor-BVQHBF7L.js → Editor-HORWMUM3.js} +2 -1
  59. package/dist/FilterChip/index.js +1 -1
  60. package/dist/{FilterChip-EZ4QMW4E.css → FilterChip-VL33P3JL.css} +5 -1
  61. package/dist/Input/index.js +2 -1
  62. package/dist/{Input-GBZSFXLU.css → Input-ABGOFENS.css} +46 -10
  63. package/dist/LayersList/index.js +1 -1
  64. package/dist/{LayersList-NQZEIPZB.css → LayersList-TBNF4XGL.css} +16 -3
  65. package/dist/LinkInterstitial/index.js +2 -2
  66. package/dist/ListInput/index.js +4 -3
  67. package/dist/LivePreview/LivePreview.d.ts +105 -25
  68. package/dist/LivePreview/budget.d.ts +64 -20
  69. package/dist/LivePreview/index.d.ts +5 -3
  70. package/dist/LivePreview/index.js +1 -1
  71. package/dist/LivePreview/stills.d.ts +57 -0
  72. package/dist/LivePreview-BROGKR4N.css +113 -0
  73. package/dist/PresenterView/index.js +2 -2
  74. package/dist/PrincipalPicker/index.js +4 -3
  75. package/dist/RichEditor/index.js +1 -1
  76. package/dist/Select/index.js +2 -1
  77. package/dist/{Select-A54YS5EP.css → Select-W3CHTZXP.css} +18 -2
  78. package/dist/ShareDialog/index.js +5 -4
  79. package/dist/SheetColumnEditor/index.js +7 -6
  80. package/dist/SheetGrid/index.js +6 -6
  81. package/dist/SheetModel/columns.d.ts +19 -0
  82. package/dist/SheetModel/index.d.ts +1 -0
  83. package/dist/SheetModel/index.js +1 -1
  84. package/dist/SlideCompare/index.js +2 -2
  85. package/dist/SlideFilmstrip/index.js +3 -3
  86. package/dist/{SlideFilmstrip-4ITZLMO4.css → SlideFilmstrip-PAT7P4OG.css} +26 -7
  87. package/dist/SlideGrid/index.js +2 -2
  88. package/dist/{SlideGrid-S4LTJ4UU.css → SlideGrid-FJA33DV4.css} +11 -1
  89. package/dist/SlideStage/index.js +1 -1
  90. package/dist/{SlideStage-S2FISF4C.css → SlideStage-ZTTEQSS2.css} +4 -2
  91. package/dist/SourceEditor/index.js +2 -1
  92. package/dist/{SourceEditor-G2C3STPX.css → SourceEditor-QAYE2JS6.css} +19 -12
  93. package/dist/Switcher/index.js +5 -4
  94. package/dist/TagsInput/index.js +3 -2
  95. package/dist/{TagsInput-XMXTI5Q4.css → TagsInput-7EGBBXHS.css} +7 -1
  96. package/dist/ThemeGallery/index.js +1 -1
  97. package/dist/{ThemeGallery-HSUKBDWY.css → ThemeGallery-X35Y25EX.css} +26 -5
  98. package/dist/TimeWindowPicker/index.js +4 -3
  99. package/dist/{TimeWindowPicker-T763GLXH.css → TimeWindowPicker-DEFDV77Z.css} +15 -2
  100. package/dist/TreeCanvas/index.js +3 -3
  101. package/dist/VersionTimeline/index.js +2 -2
  102. package/dist/{chunk-V43UVX4H.js → chunk-27GD7LVR.js} +1 -1
  103. package/dist/{chunk-CCLNGVCM.js → chunk-2DV4THNQ.js} +2 -2
  104. package/dist/{chunk-2CQLNML5.js → chunk-3PTUDKSR.js} +4 -2
  105. package/dist/{chunk-ONL54WMH.js → chunk-46RL3E54.js} +1 -1
  106. package/dist/{chunk-HAKTRTRP.js → chunk-47JQAGRV.js} +1 -1
  107. package/dist/{chunk-UHJQDFKQ.js → chunk-4ZJLOKSS.js} +1 -1
  108. package/dist/{chunk-ACA27MZH.js → chunk-5QXRI35B.js} +1 -1
  109. package/dist/{chunk-LL5AFXU7.js → chunk-5RT5O4JR.js} +1 -1
  110. package/dist/chunk-66ADEPFB.js +51 -0
  111. package/dist/{chunk-3Y56GQPM.js → chunk-7VAUGG6B.js} +1 -1
  112. package/dist/{chunk-NKZCJRKO.js → chunk-APDKUGSH.js} +2 -2
  113. package/dist/{chunk-YSJC7AZC.js → chunk-BWOIUOO3.js} +1 -1
  114. package/dist/{chunk-PI7HKLIT.js → chunk-D7GNNID2.js} +3 -1
  115. package/dist/{chunk-THROPJZC.js → chunk-DEMALFHY.js} +1 -1
  116. package/dist/chunk-EOQFPZEE.js +138 -0
  117. package/dist/{chunk-QFNWMWWY.js → chunk-ES4RKQ7B.js} +4 -4
  118. package/dist/{chunk-MAD6WPER.js → chunk-FG4O64DV.js} +5 -6
  119. package/dist/{chunk-E35CMI5D.js → chunk-FHHYXZSP.js} +31 -13
  120. package/dist/{chunk-AYB6AYNH.js → chunk-GMLAKNFY.js} +1 -1
  121. package/dist/{chunk-ZB5O3ELS.js → chunk-GRYZ5EP3.js} +4 -2
  122. package/dist/{chunk-ILAEBSLJ.js → chunk-H5NOLRGH.js} +2 -2
  123. package/dist/{chunk-W3UVOZKL.js → chunk-IPAU6FLH.js} +6 -2
  124. package/dist/{chunk-Z6VW6CXX.js → chunk-IQH3DDZ2.js} +2 -2
  125. package/dist/{chunk-6QFAK2WV.js → chunk-IUYUS2SO.js} +4 -1
  126. package/dist/{chunk-AXBRWRGV.js → chunk-JQLS3MZB.js} +1 -1
  127. package/dist/{chunk-FGYET26P.js → chunk-KJW2AS57.js} +1 -1
  128. package/dist/{chunk-QIXMNOBD.js → chunk-KYZMN6I6.js} +2 -2
  129. package/dist/{chunk-73A7D5CE.js → chunk-L4WZSVMT.js} +3 -1
  130. package/dist/{chunk-OOMXLJ3S.js → chunk-LFSIKGRQ.js} +13 -1
  131. package/dist/{chunk-W7QBBKUE.js → chunk-MJW6SQYB.js} +7 -3
  132. package/dist/{chunk-GMU6SQ6B.js → chunk-MRMHZ437.js} +3 -3
  133. package/dist/{chunk-ULPL26BU.js → chunk-N5SKHIAP.js} +1 -1
  134. package/dist/{chunk-LV4APO72.js → chunk-NQGPD6NX.js} +1 -1
  135. package/dist/{chunk-7UYONN6K.js → chunk-OSZDHN5Z.js} +2 -2
  136. package/dist/chunk-P6WFZDKS.js +111 -0
  137. package/dist/{chunk-CPEPST4S.js → chunk-PJIPUEJ3.js} +1 -1
  138. package/dist/{chunk-QS4ZGTEU.js → chunk-PPFX6GRK.js} +1 -1
  139. package/dist/{chunk-7DZDSSJS.js → chunk-RH2NCQBZ.js} +5 -4
  140. package/dist/{chunk-3VD3G3IL.js → chunk-T5RQGI6O.js} +1 -1
  141. package/dist/{chunk-F2KY4RLI.js → chunk-TVRBQMIX.js} +5 -3
  142. package/dist/{chunk-QEFHYUCY.js → chunk-UWGUKMBK.js} +1 -1
  143. package/dist/{chunk-5YLON2PW.js → chunk-UYZZV4DZ.js} +1 -1
  144. package/dist/{chunk-BQ7AKL2N.js → chunk-VKKUGZ3G.js} +3 -1
  145. package/dist/{chunk-5VCG26CV.js → chunk-W3HYWD63.js} +4 -4
  146. package/dist/{chunk-DEJHAOC5.js → chunk-WMXAX6VA.js} +1 -1
  147. package/dist/{chunk-6JVRY5DQ.js → chunk-WNAYQQ6Y.js} +2 -2
  148. package/dist/{chunk-VDPJGP4Q.js → chunk-WX2NIG4G.js} +1 -1
  149. package/dist/{chunk-ZU3DUXD2.js → chunk-WZGYIVYH.js} +1 -1
  150. package/dist/chunk-XGBLRDSU.js +446 -0
  151. package/dist/{chunk-22CQQDFW.js → chunk-XMRTFPWX.js} +2 -2
  152. package/dist/{chunk-HUVG2FFT.js → chunk-Y5BD4MTE.js} +4 -2
  153. package/dist/chunk-YSGLEHND.js +56 -0
  154. package/dist/generated/index.d.ts +2 -0
  155. package/dist/generated/index.js +93 -90
  156. package/dist/index.js +93 -90
  157. package/dist/styles.css +862 -130
  158. package/dist/utils/focusModality.d.ts +41 -0
  159. package/dist/utils/index.d.ts +2 -0
  160. package/dist/utils/index.js +2 -1
  161. package/package.json +3 -3
  162. package/dist/LivePreview-SRO7KHO4.css +0 -65
  163. package/dist/chunk-KF6YGL4B.js +0 -160
  164. package/dist/chunk-TYKQ33CL.js +0 -35
  165. package/dist/{chunk-3P4Y5RX6.js → chunk-4BYHAOHH.js} +1 -1
  166. package/dist/{chunk-3WCNHYXE.js → chunk-5BP6IS3N.js} +0 -0
  167. package/dist/{chunk-KD2IRYCT.js → chunk-5WDXPHEW.js} +1 -1
  168. package/dist/{chunk-OSFA5ROT.js → chunk-FEJANUZK.js} +0 -0
  169. package/dist/{chunk-FJJHD73S.js → chunk-GYBDPCRC.js} +1 -1
  170. package/dist/{chunk-VHZ3AXJD.js → chunk-NQCY44B3.js} +1 -1
@@ -0,0 +1,111 @@
1
+ import { useFocusModality } from './chunk-YSGLEHND.js';
2
+ import { cx } from './chunk-ODEQTPFM.js';
3
+ import './Document-YFWTWXJP.css';
4
+ import { forwardRef, useRef, useCallback, useLayoutEffect, useEffect } from 'react';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ function Document({ as: Tag = "div", size = "md", measure = "normal", className, children, ...rest }) {
8
+ return /* @__PURE__ */ jsx(
9
+ Tag,
10
+ {
11
+ ...rest,
12
+ className: cx(
13
+ "crewlet-document",
14
+ `crewlet-document--${size}`,
15
+ measure === "normal" && "crewlet-document--measure",
16
+ className
17
+ ),
18
+ children
19
+ }
20
+ );
21
+ }
22
+ function DocumentTitle({ as: Tag = "h1", className, children, ...rest }) {
23
+ return /* @__PURE__ */ jsx(Tag, { ...rest, className: cx("crewlet-document-title", className), children });
24
+ }
25
+ var LINE_BREAKS = /\r\n|[\r\n\u2028\u2029]/g;
26
+ var DocumentTitleField = forwardRef(function DocumentTitleField2({ error = false, className, onChange, onKeyDown, value, defaultValue, ...rest }, forwarded) {
27
+ useFocusModality();
28
+ const own = useRef(null);
29
+ const ref = useCallback(
30
+ (element) => {
31
+ own.current = element;
32
+ if (typeof forwarded === "function") forwarded(element);
33
+ else if (forwarded) forwarded.current = element;
34
+ },
35
+ [forwarded]
36
+ );
37
+ const fit = useCallback(() => {
38
+ const element = own.current;
39
+ if (!element) return;
40
+ element.style.height = "auto";
41
+ const style = getComputedStyle(element);
42
+ const edges = style.boxSizing === "border-box" ? parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth) : -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
43
+ element.style.height = `${element.scrollHeight + (Number.isFinite(edges) ? edges : 0)}px`;
44
+ }, []);
45
+ useLayoutEffect(fit, [fit, value]);
46
+ useEffect(() => {
47
+ const element = own.current;
48
+ if (!element || typeof ResizeObserver === "undefined") return void 0;
49
+ let width = element.clientWidth;
50
+ const observer = new ResizeObserver(() => {
51
+ if (element.clientWidth === width) return;
52
+ width = element.clientWidth;
53
+ fit();
54
+ });
55
+ observer.observe(element);
56
+ return () => observer.disconnect();
57
+ }, [fit]);
58
+ useEffect(() => {
59
+ const element = own.current;
60
+ if (!element) return void 0;
61
+ const refuse = (event) => {
62
+ if (event.inputType === "insertLineBreak" || event.inputType === "insertParagraph") event.preventDefault();
63
+ };
64
+ element.addEventListener("beforeinput", refuse);
65
+ return () => element.removeEventListener("beforeinput", refuse);
66
+ }, []);
67
+ const change = (event) => {
68
+ const element = event.currentTarget;
69
+ if (LINE_BREAKS.test(element.value)) {
70
+ LINE_BREAKS.lastIndex = 0;
71
+ const caret = element.selectionStart;
72
+ element.value = element.value.replace(LINE_BREAKS, " ");
73
+ element.setSelectionRange(caret, caret);
74
+ }
75
+ LINE_BREAKS.lastIndex = 0;
76
+ onChange?.(event);
77
+ if (value === void 0) fit();
78
+ };
79
+ const keyDown = (event) => {
80
+ onKeyDown?.(event);
81
+ if (event.key !== "Enter" || event.defaultPrevented || event.nativeEvent.isComposing) return;
82
+ const form = event.currentTarget.form;
83
+ if (!form) return;
84
+ const submitter = form.querySelector(
85
+ 'button[type="submit"], button:not([type]), input[type="submit"], input[type="image"]'
86
+ );
87
+ if (submitter) {
88
+ if (!submitter.disabled) form.requestSubmit(submitter);
89
+ return;
90
+ }
91
+ const fields = form.querySelectorAll('input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]), textarea');
92
+ if (fields.length === 1) form.requestSubmit();
93
+ };
94
+ return /* @__PURE__ */ jsx(
95
+ "textarea",
96
+ {
97
+ ...rest,
98
+ ref,
99
+ rows: 1,
100
+ value,
101
+ defaultValue,
102
+ "aria-multiline": "false",
103
+ "aria-invalid": error || void 0,
104
+ className: cx("crewlet-document-title", "crewlet-document-title-field", className),
105
+ onChange: change,
106
+ onKeyDown: keyDown
107
+ }
108
+ );
109
+ });
110
+
111
+ export { Document, DocumentTitle, DocumentTitleField };
@@ -1,4 +1,4 @@
1
- import { FormField } from './chunk-6QFAK2WV.js';
1
+ import { FormField } from './chunk-IUYUS2SO.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './Checkbox-ALWG3WV2.css';
4
4
  import { forwardRef, useId, useRef, useCallback, useEffect } from 'react';
@@ -1,5 +1,5 @@
1
1
  import { useListbox } from './chunk-F73MC7EZ.js';
2
- import { Input } from './chunk-6QFAK2WV.js';
2
+ import { Input } from './chunk-IUYUS2SO.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './Combobox-4FUVYIE7.css';
5
5
  import { forwardRef, useId, useMemo, useRef, useCallback } from 'react';
@@ -1,13 +1,14 @@
1
- import { Textarea } from './chunk-6QFAK2WV.js';
1
+ import { Textarea } from './chunk-IUYUS2SO.js';
2
2
  import { Kbd } from './chunk-SMBKXWML.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './Composer-ABGJIAIR.css';
4
+ import './Composer-PXITWNEK.css';
5
5
  import { forwardRef } from 'react';
6
6
  import { jsxs, jsx } from 'react/jsx-runtime';
7
7
 
8
8
  var COMPOSER_COUNTER_AT = 0.8;
9
9
  var Composer = forwardRef(function Composer2({ value, onChange, onSubmit, label, actions, maxLength, className, rows = 3, onKeyDown, ...rest }, ref) {
10
10
  const near = maxLength !== void 0 && value.length >= maxLength * COMPOSER_COUNTER_AT;
11
+ const hasActions = actions !== void 0 && actions !== null && actions !== false;
11
12
  const keyDown = (event) => {
12
13
  onKeyDown?.(event);
13
14
  if (event.defaultPrevented || !onSubmit) return;
@@ -32,7 +33,7 @@ var Composer = forwardRef(function Composer2({ value, onChange, onSubmit, label,
32
33
  ...rest
33
34
  }
34
35
  ),
35
- /* @__PURE__ */ jsxs("div", { className: "crewlet-composer__footer", children: [
36
+ onSubmit || near || hasActions ? /* @__PURE__ */ jsxs("div", { className: "crewlet-composer__footer", "data-hint-only": !near && !hasActions || void 0, children: [
36
37
  onSubmit ? /* @__PURE__ */ jsxs("span", { className: "crewlet-composer__hint", children: [
37
38
  /* @__PURE__ */ jsx(Kbd, { keys: ["Mod", "Enter"], subtle: true }),
38
39
  " to send"
@@ -40,7 +41,7 @@ var Composer = forwardRef(function Composer2({ value, onChange, onSubmit, label,
40
41
  near ? /* @__PURE__ */ jsx("span", { className: "crewlet-composer__counter", "aria-live": "polite", children: `${value.length.toLocaleString()} / ${maxLength.toLocaleString()}` }) : null,
41
42
  /* @__PURE__ */ jsx("span", { className: "crewlet-composer__spacer" }),
42
43
  actions
43
- ] })
44
+ ] }) : null
44
45
  ] });
45
46
  });
46
47
 
@@ -9,7 +9,7 @@ import { jsx } from 'react/jsx-runtime';
9
9
  var engine = null;
10
10
  var loading = null;
11
11
  function loadEngine() {
12
- loading ??= import('./Editor-BVQHBF7L.js').then(
12
+ loading ??= import('./Editor-HORWMUM3.js').then(
13
13
  (module) => {
14
14
  engine = module.Editor;
15
15
  return engine;
@@ -1,12 +1,13 @@
1
- import { Select } from './chunk-BQ7AKL2N.js';
1
+ import { Select } from './chunk-VKKUGZ3G.js';
2
2
  import { today, shiftMonth, CalendarGrid, compareDays } from './chunk-GXQ3B46I.js';
3
3
  import { Popover } from './chunk-K3IJQNB7.js';
4
- import { Input } from './chunk-6QFAK2WV.js';
4
+ import { Input } from './chunk-IUYUS2SO.js';
5
+ import { useFocusModality } from './chunk-YSGLEHND.js';
5
6
  import { isComposing } from './chunk-R25RGPUB.js';
6
7
  import { Button } from './chunk-OG6CL3EB.js';
7
8
  import { IconButton } from './chunk-4FQT6ZAY.js';
8
9
  import { cx } from './chunk-ODEQTPFM.js';
9
- import './TimeWindowPicker-T763GLXH.css';
10
+ import './TimeWindowPicker-DEFDV77Z.css';
10
11
  import { useMemo, useState, useRef, useId, useEffect } from 'react';
11
12
  import { ClockGlyph, ChevronDownGlyph, CheckGlyph, ChevronLeftGlyph, ChevronRightGlyph } from '@crewlethq/icons/glyphs';
12
13
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -322,6 +323,7 @@ function TimeWindowPicker({
322
323
  size = "md",
323
324
  labels: labelOverrides
324
325
  }) {
326
+ useFocusModality();
325
327
  const labels = useMemo(() => withLabels(labelOverrides), [labelOverrides]);
326
328
  const isSet = isTimeWindowSet(value);
327
329
  const described = describeTimeWindow(value, { presets, labels });
@@ -1,5 +1,5 @@
1
1
  import { useReorder } from './chunk-XJ2QEBMM.js';
2
- import { Input } from './chunk-6QFAK2WV.js';
2
+ import { Input } from './chunk-IUYUS2SO.js';
3
3
  import { Menu } from './chunk-BUVCV3WI.js';
4
4
  import { IconButton } from './chunk-4FQT6ZAY.js';
5
5
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
@@ -1,6 +1,6 @@
1
1
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './FilterChip-EZ4QMW4E.css';
3
+ import './FilterChip-VL33P3JL.css';
4
4
  import { createContext, useContext, useRef, useId, useCallback, useLayoutEffect } from 'react';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,7 +1,8 @@
1
1
  import { useListbox, useOptionKeys, useHighlightRest } from './chunk-F73MC7EZ.js';
2
+ import { useFocusModality } from './chunk-YSGLEHND.js';
2
3
  import { useLayerContainer, viewportBounds, anchorGone, placePopup, LAYER_GAP, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
3
4
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './Select-A54YS5EP.css';
5
+ import './Select-W3CHTZXP.css';
5
6
  import { forwardRef, useId, useMemo, useState, useRef, useCallback, useEffect, useLayoutEffect } from 'react';
6
7
  import { createPortal } from 'react-dom';
7
8
  import { ChevronDownGlyph, CheckGlyph, SearchGlyph } from '@crewlethq/icons/glyphs';
@@ -36,6 +37,7 @@ var Select = forwardRef(function Select2({
36
37
  onHighlight,
37
38
  ...native
38
39
  }, ref) {
40
+ useFocusModality();
39
41
  const generatedId = useId();
40
42
  const rootId = id ?? generatedId;
41
43
  const classes = cx(className, width === "auto" && "crewlet-select--auto", appearance === "quiet" && "crewlet-select--quiet");
@@ -1,10 +1,10 @@
1
1
  import { TagGroup } from './chunk-O2EGEONV.js';
2
- import { Tag } from './chunk-GFV4LJHH.js';
3
- import { StatusDot } from './chunk-WIATRXEJ.js';
4
2
  import { CursorFlag } from './chunk-3BYIWOTV.js';
5
3
  import { presenceHueClass } from './chunk-I6POAB4V.js';
6
- import { ChangeMark } from './chunk-HAKTRTRP.js';
7
- 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-OOMXLJ3S.js';
4
+ import { Tag } from './chunk-GFV4LJHH.js';
5
+ import { StatusDot } from './chunk-WIATRXEJ.js';
6
+ import { ChangeMark } from './chunk-47JQAGRV.js';
7
+ 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';
8
8
  import { presenceLabels } from './chunk-Z7JYG5TF.js';
9
9
  import { Popover } from './chunk-K3IJQNB7.js';
10
10
  import { Tooltip } from './chunk-6ZJ3N7QI.js';
@@ -1,7 +1,7 @@
1
1
  import { announce } from './chunk-RSAQOKH3.js';
2
2
  import { IconButton } from './chunk-4FQT6ZAY.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './ArrangeFrame-3PLZAG22.css';
4
+ import './ArrangeFrame-QXOQTFAH.css';
5
5
  import { forwardRef, useRef, useCallback, useState, useEffect } from 'react';
6
6
  import { TrashGlyph } from '@crewlethq/icons/glyphs';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -1,7 +1,7 @@
1
- import { Composer } from './chunk-7DZDSSJS.js';
2
1
  import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
3
2
  import { toInstant, RelativeTime, formatExact, toISO } from './chunk-3CZ7XAVY.js';
4
- import { Document } from './chunk-TYKQ33CL.js';
3
+ import { Document } from './chunk-P6WFZDKS.js';
4
+ import { Composer } from './chunk-RH2NCQBZ.js';
5
5
  import { Count } from './chunk-BHHIIK3M.js';
6
6
  import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
7
7
  import { Button } from './chunk-OG6CL3EB.js';
@@ -1,5 +1,5 @@
1
1
  import { BrandLockup } from './chunk-7KBNFFM3.js';
2
- import { Card } from './chunk-ACA27MZH.js';
2
+ import { Card } from './chunk-5QXRI35B.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './AuthLayout-ODHBUPHQ.css';
5
5
  import { useId } from 'react';
@@ -1,5 +1,5 @@
1
1
  import { cx } from './chunk-ODEQTPFM.js';
2
- import './ChoiceList-RBL7FNQL.css';
2
+ import './ChoiceList-EA2W6MOS.css';
3
3
  import { useId } from 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5