@crewlethq/ui 0.14.0 → 0.15.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 (70) hide show
  1. package/README.md +26 -0
  2. package/dist/AppShell/AppShell.d.ts +76 -11
  3. package/dist/AppShell/index.d.ts +1 -1
  4. package/dist/AppShell/index.js +2 -2
  5. package/dist/{AppShell-CEVLW4QG.css → AppShell-6QUD7NWM.css} +74 -1
  6. package/dist/AvatarPicker/index.js +3 -3
  7. package/dist/Canvas/index.js +3 -3
  8. package/dist/Charts/StackedColumns.d.ts +30 -7
  9. package/dist/Charts/index.d.ts +1 -1
  10. package/dist/Charts/index.js +1 -1
  11. package/dist/{Charts-JUERFLAR.css → Charts-JYW4X5ZL.css} +18 -1
  12. package/dist/CommandPalette/index.js +3 -3
  13. package/dist/DataTable/index.js +5 -5
  14. package/dist/DataView/index.js +8 -8
  15. package/dist/DateTimePicker/index.js +3 -3
  16. package/dist/DescriptionList/DescriptionList.d.ts +9 -1
  17. package/dist/DescriptionList/index.js +1 -1
  18. package/dist/{DescriptionList-YYY3V3O6.css → DescriptionList-IXMRCSMK.css} +24 -0
  19. package/dist/FactList/index.js +3 -3
  20. package/dist/Layer/index.js +1 -1
  21. package/dist/Layer-J222IFNX.css +33 -0
  22. package/dist/Layout/index.js +1 -1
  23. package/dist/{Layout-2ZCV3IGF.css → Layout-ZBEGLXAE.css} +18 -0
  24. package/dist/ListInput/index.js +1 -1
  25. package/dist/MarkdownEditor/index.js +1 -1
  26. package/dist/Menu/index.js +2 -2
  27. package/dist/Modal/index.js +2 -2
  28. package/dist/OrgTable/index.js +4 -4
  29. package/dist/Popover/index.js +2 -2
  30. package/dist/Select/index.js +2 -2
  31. package/dist/Shortcut/index.js +1 -1
  32. package/dist/Switcher/index.js +4 -4
  33. package/dist/TagsInput/index.js +1 -1
  34. package/dist/TimeWindowPicker/index.js +4 -4
  35. package/dist/Toaster/Toaster.d.ts +6 -1
  36. package/dist/Toaster/index.js +2 -2
  37. package/dist/{Toaster-VZKISP2S.css → Toaster-EOOOTSJT.css} +6 -4
  38. package/dist/Toolbar/index.js +1 -1
  39. package/dist/Tooltip/index.js +2 -2
  40. package/dist/TreeCanvas/index.js +4 -4
  41. package/dist/TreeGrid/index.js +3 -3
  42. package/dist/{chunk-5IXMLWGW.js → chunk-2GXTIK37.js} +4 -4
  43. package/dist/{chunk-RZ7RGECB.js → chunk-2OLCUNG7.js} +1 -1
  44. package/dist/{chunk-AXNQCAFC.js → chunk-2UU5IGZI.js} +1 -1
  45. package/dist/{chunk-IFM63LAG.js → chunk-7BZPYA5P.js} +2 -2
  46. package/dist/{chunk-2PZBIHRV.js → chunk-AMH67MLM.js} +2 -2
  47. package/dist/{chunk-6LXMLQUM.js → chunk-B2Z2CDM5.js} +2 -2
  48. package/dist/{chunk-O2ZDZZS7.js → chunk-BWRGFKJP.js} +3 -2
  49. package/dist/{chunk-75WOCYGC.js → chunk-DYHSQHAZ.js} +1 -1
  50. package/dist/{chunk-4FFHJBEN.js → chunk-EFNHOVC2.js} +1 -1
  51. package/dist/{chunk-XN4JBAN3.js → chunk-F2XSYBKH.js} +8 -2
  52. package/dist/{chunk-IXUU5DLZ.js → chunk-FC4YTTFJ.js} +1 -1
  53. package/dist/{chunk-L3CTFFLZ.js → chunk-H3XOMT7W.js} +53 -9
  54. package/dist/{chunk-7RPGY3JE.js → chunk-HMPFGIWM.js} +1 -1
  55. package/dist/{chunk-WYQOHFML.js → chunk-IYZZL3MZ.js} +1 -1
  56. package/dist/{chunk-URYDN2KA.js → chunk-JI5AVQLA.js} +1 -1
  57. package/dist/{chunk-TFMJH2E6.js → chunk-K4VORB64.js} +1 -1
  58. package/dist/{chunk-Y6NR7QJ3.js → chunk-LCF4WPYS.js} +2 -2
  59. package/dist/{chunk-4WNNEDKO.js → chunk-MLT2HBPN.js} +87 -74
  60. package/dist/{chunk-TFH6SYWB.js → chunk-NS7BVLL3.js} +1 -1
  61. package/dist/{chunk-CBZSSKH3.js → chunk-QH3AKP2N.js} +18 -5
  62. package/dist/{chunk-3VVKJ7AZ.js → chunk-QV266R6G.js} +3 -3
  63. package/dist/{chunk-CQY5NTRS.js → chunk-QWOPX2MN.js} +1 -1
  64. package/dist/{chunk-53DVJCVW.js → chunk-VYOKRN2I.js} +1 -1
  65. package/dist/{chunk-W4ENKCXJ.js → chunk-ZAC7SKUN.js} +1 -1
  66. package/dist/generated/index.js +32 -32
  67. package/dist/index.js +32 -32
  68. package/dist/styles.css +157 -13
  69. package/package.json +3 -3
  70. package/dist/Layer-NAFSGCFA.css +0 -23
@@ -25,6 +25,24 @@
25
25
  flex-direction: row;
26
26
  }
27
27
 
28
+ /*
29
+ * DRAWN AS A LIST, IT IS STILL A RUN OF ITEMS. A Stack or an Inline spends no
30
+ * pixel of its own, and a `ul` or an `ol` arrives with the browser's: a margin
31
+ * above and below, a 40px indent and a marker on every item, so a list of five
32
+ * names laid out as a Stack was pushed in and bulleted. They are taken back,
33
+ * and the element stays a list to a screen reader. A list that wants its
34
+ * markers is `List variant="bulleted"`.
35
+ *
36
+ * Inside :where(), so the rule weighs one class like every other here and a
37
+ * caller's own class still decides what it sets.
38
+ */
39
+ :where(ul, ol).crewlet-stack,
40
+ :where(ul, ol).crewlet-inline {
41
+ margin: 0;
42
+ padding: 0;
43
+ list-style: none;
44
+ }
45
+
28
46
  /*
29
47
  * A GRID OF CARDS KEEPS ITS TRACKS. `auto-fill` lays down every track the row
30
48
  * has room for and leaves the empty ones empty; `auto-fit`, which this was,
@@ -4,7 +4,7 @@ import '../chunk-FTEJPHBI.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-RSAQOKH3.js';
6
6
  import '../chunk-4FQT6ZAY.js';
7
- import '../chunk-7RPGY3JE.js';
7
+ import '../chunk-HMPFGIWM.js';
8
8
  import '../chunk-R25RGPUB.js';
9
9
  import '../chunk-BZFWDIV6.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -6,7 +6,7 @@ import '../chunk-26PEPONN.js';
6
6
  import '../chunk-4LDTQWS7.js';
7
7
  import '../chunk-CBOICT64.js';
8
8
  import '../chunk-BHHIIK3M.js';
9
- import '../chunk-7RPGY3JE.js';
9
+ import '../chunk-HMPFGIWM.js';
10
10
  import '../chunk-R25RGPUB.js';
11
11
  import '../chunk-BZFWDIV6.js';
12
12
  import '../chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
- export { Menu } from '../chunk-TFH6SYWB.js';
1
+ export { Menu } from '../chunk-NS7BVLL3.js';
2
2
  import '../chunk-OG6CL3EB.js';
3
3
  import '../chunk-4FQT6ZAY.js';
4
- import '../chunk-7RPGY3JE.js';
4
+ import '../chunk-HMPFGIWM.js';
5
5
  import '../chunk-R25RGPUB.js';
6
6
  import '../chunk-BZFWDIV6.js';
7
7
  import '../chunk-ODEQTPFM.js';
@@ -1,8 +1,8 @@
1
- export { ConfirmModal, Modal } from '../chunk-TFMJH2E6.js';
1
+ export { ConfirmModal, Modal } from '../chunk-K4VORB64.js';
2
2
  import '../chunk-OG6CL3EB.js';
3
3
  import '../chunk-PQADV6P6.js';
4
4
  import '../chunk-4FQT6ZAY.js';
5
- import '../chunk-7RPGY3JE.js';
5
+ import '../chunk-HMPFGIWM.js';
6
6
  import '../chunk-R25RGPUB.js';
7
7
  import '../chunk-BZFWDIV6.js';
8
8
  import '../chunk-ODEQTPFM.js';
@@ -1,12 +1,12 @@
1
- export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-75WOCYGC.js';
2
- import '../chunk-6LXMLQUM.js';
1
+ export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-DYHSQHAZ.js';
2
+ import '../chunk-B2Z2CDM5.js';
3
3
  import '../chunk-MY374UUD.js';
4
4
  import '../chunk-6OF2DBKY.js';
5
- import '../chunk-53DVJCVW.js';
5
+ import '../chunk-VYOKRN2I.js';
6
6
  import '../chunk-74WGARJE.js';
7
7
  import '../chunk-4FQT6ZAY.js';
8
8
  import '../chunk-6NIZCQUM.js';
9
- import '../chunk-7RPGY3JE.js';
9
+ import '../chunk-HMPFGIWM.js';
10
10
  import '../chunk-R25RGPUB.js';
11
11
  import '../chunk-BZFWDIV6.js';
12
12
  import '../chunk-HI6Q2UXQ.js';
@@ -1,4 +1,4 @@
1
- export { Popover } from '../chunk-O2ZDZZS7.js';
2
- import '../chunk-7RPGY3JE.js';
1
+ export { Popover } from '../chunk-BWRGFKJP.js';
2
+ import '../chunk-HMPFGIWM.js';
3
3
  import '../chunk-R25RGPUB.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
- export { Select } from '../chunk-IXUU5DLZ.js';
1
+ export { Select } from '../chunk-FC4YTTFJ.js';
2
2
  import '../chunk-F73MC7EZ.js';
3
- import '../chunk-7RPGY3JE.js';
3
+ import '../chunk-HMPFGIWM.js';
4
4
  import '../chunk-R25RGPUB.js';
5
5
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
1
  export { matchesShortcut, useShortcut } from '../chunk-2FPENTCF.js';
2
- import '../chunk-7RPGY3JE.js';
2
+ import '../chunk-HMPFGIWM.js';
3
3
  import '../chunk-R25RGPUB.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,6 +1,6 @@
1
- export { Switcher } from '../chunk-Y6NR7QJ3.js';
1
+ export { Switcher } from '../chunk-LCF4WPYS.js';
2
2
  import '../chunk-W5J7R5EB.js';
3
- import '../chunk-TFMJH2E6.js';
3
+ import '../chunk-K4VORB64.js';
4
4
  import '../chunk-F73MC7EZ.js';
5
5
  import '../chunk-FTEJPHBI.js';
6
6
  import '../chunk-FYTIJM2T.js';
@@ -9,8 +9,8 @@ import '../chunk-PQADV6P6.js';
9
9
  import '../chunk-RSAQOKH3.js';
10
10
  import '../chunk-IG75YMUN.js';
11
11
  import '../chunk-4FQT6ZAY.js';
12
- import '../chunk-O2ZDZZS7.js';
13
- import '../chunk-7RPGY3JE.js';
12
+ import '../chunk-BWRGFKJP.js';
13
+ import '../chunk-HMPFGIWM.js';
14
14
  import '../chunk-R25RGPUB.js';
15
15
  import '../chunk-BZFWDIV6.js';
16
16
  import '../chunk-ODEQTPFM.js';
@@ -4,7 +4,7 @@ import '../chunk-WIATRXEJ.js';
4
4
  import '../chunk-F73MC7EZ.js';
5
5
  import '../chunk-RSAQOKH3.js';
6
6
  import '../chunk-4FQT6ZAY.js';
7
- import '../chunk-7RPGY3JE.js';
7
+ import '../chunk-HMPFGIWM.js';
8
8
  import '../chunk-R25RGPUB.js';
9
9
  import '../chunk-BZFWDIV6.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -1,13 +1,13 @@
1
- export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-IFM63LAG.js';
2
- import '../chunk-IXUU5DLZ.js';
1
+ export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-7BZPYA5P.js';
2
+ import '../chunk-FC4YTTFJ.js';
3
3
  import '../chunk-F73MC7EZ.js';
4
4
  import '../chunk-FTEJPHBI.js';
5
5
  import '../chunk-GXQ3B46I.js';
6
6
  import '../chunk-OG6CL3EB.js';
7
7
  import '../chunk-PQADV6P6.js';
8
8
  import '../chunk-4FQT6ZAY.js';
9
- import '../chunk-O2ZDZZS7.js';
10
- import '../chunk-7RPGY3JE.js';
9
+ import '../chunk-BWRGFKJP.js';
10
+ import '../chunk-HMPFGIWM.js';
11
11
  import '../chunk-R25RGPUB.js';
12
12
  import '../chunk-BZFWDIV6.js';
13
13
  import '../chunk-ODEQTPFM.js';
@@ -93,7 +93,12 @@ export interface ToastProviderProps {
93
93
  children?: ReactNode;
94
94
  position?: ToasterProps['position'];
95
95
  renderAction?: ToasterProps['renderAction'];
96
- /** How many to keep on screen. The oldest goes when the next arrives. */
96
+ /**
97
+ * How many to keep on screen. When one more arrives, the oldest toast that
98
+ * would have gone by itself goes. A sticky one never does, so while every
99
+ * toast held is sticky the stack holds more than this, until the reader
100
+ * dismisses some.
101
+ */
97
102
  max?: number | undefined;
98
103
  }
99
104
  /**
@@ -1,5 +1,5 @@
1
- export { ToastProvider, Toaster, useToast } from '../chunk-CBZSSKH3.js';
2
- import '../chunk-7RPGY3JE.js';
1
+ export { ToastProvider, Toaster, useToast } from '../chunk-QH3AKP2N.js';
2
+ import '../chunk-HMPFGIWM.js';
3
3
  import '../chunk-R25RGPUB.js';
4
4
  import '../chunk-BZFWDIV6.js';
5
5
  import '../chunk-ODEQTPFM.js';
@@ -102,10 +102,12 @@
102
102
 
103
103
  /*
104
104
  * A VARIANT IS ITS MARK AND ITS WASH. The words stay in the strip's own inks
105
- * and the edge stays the hairline, so a failure is a rose mark on a faint rose
106
- * wash rather than a red strip: the outcome is said by the glyph and the title,
107
- * and the sentence beside them is read in the ink every sentence is read in.
108
- * Information is the neutral mark on the neutral wash.
105
+ * and the edge stays the hairline, so a failure is a rose mark rather than a
106
+ * red strip: the outcome is said by the glyph and the title, and the sentence
107
+ * beside them is read in the ink every sentence is read in. The wash is the
108
+ * countdown, so only a toast that counts down draws one: a success is a moss
109
+ * mark on a faint moss wash, and a failure, sticky unless it is given a
110
+ * duration, draws none. Information is the neutral mark on the neutral wash.
109
111
  */
110
112
  .crewlet-toast--success {
111
113
  --crewlet-toast-mark: var(--color-feedback-success-ink);
@@ -1,4 +1,4 @@
1
1
  export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-PGRPNDWM.js';
2
- import '../chunk-7RPGY3JE.js';
2
+ import '../chunk-HMPFGIWM.js';
3
3
  import '../chunk-R25RGPUB.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { Tooltip } from '../chunk-CQY5NTRS.js';
2
- import '../chunk-7RPGY3JE.js';
1
+ export { Tooltip } from '../chunk-QWOPX2MN.js';
2
+ import '../chunk-HMPFGIWM.js';
3
3
  import '../chunk-R25RGPUB.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,10 +1,10 @@
1
- export { TreeCanvas } from '../chunk-RZ7RGECB.js';
1
+ export { TreeCanvas } from '../chunk-2OLCUNG7.js';
2
2
  import '../chunk-MY374UUD.js';
3
- import '../chunk-2PZBIHRV.js';
4
- import '../chunk-53DVJCVW.js';
3
+ import '../chunk-AMH67MLM.js';
4
+ import '../chunk-VYOKRN2I.js';
5
5
  import '../chunk-OG6CL3EB.js';
6
6
  import '../chunk-4FQT6ZAY.js';
7
- import '../chunk-7RPGY3JE.js';
7
+ import '../chunk-HMPFGIWM.js';
8
8
  import '../chunk-R25RGPUB.js';
9
9
  import '../chunk-BZFWDIV6.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -1,8 +1,8 @@
1
- export { TreeGrid } from '../chunk-6LXMLQUM.js';
1
+ export { TreeGrid } from '../chunk-B2Z2CDM5.js';
2
2
  import '../chunk-MY374UUD.js';
3
- import '../chunk-53DVJCVW.js';
3
+ import '../chunk-VYOKRN2I.js';
4
4
  import '../chunk-4FQT6ZAY.js';
5
- import '../chunk-7RPGY3JE.js';
5
+ import '../chunk-HMPFGIWM.js';
6
6
  import '../chunk-R25RGPUB.js';
7
7
  import '../chunk-BZFWDIV6.js';
8
8
  import '../chunk-ODEQTPFM.js';
@@ -1,15 +1,15 @@
1
1
  import { PageHeader } from './chunk-HOXGBLEY.js';
2
2
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
3
3
  import { Toolbar } from './chunk-PGRPNDWM.js';
4
- import { DataTable } from './chunk-3VVKJ7AZ.js';
5
- import { Menu } from './chunk-TFH6SYWB.js';
6
- import { DateTimePicker } from './chunk-AXNQCAFC.js';
4
+ import { DataTable } from './chunk-QV266R6G.js';
5
+ import { Menu } from './chunk-NS7BVLL3.js';
6
+ import { DateTimePicker } from './chunk-2UU5IGZI.js';
7
7
  import { useListbox, useOptionKeys } from './chunk-F73MC7EZ.js';
8
8
  import { Kbd } from './chunk-SMBKXWML.js';
9
9
  import { Input } from './chunk-FTEJPHBI.js';
10
10
  import { Button } from './chunk-OG6CL3EB.js';
11
11
  import { IconButton } from './chunk-4FQT6ZAY.js';
12
- import { Popover } from './chunk-O2ZDZZS7.js';
12
+ import { Popover } from './chunk-BWRGFKJP.js';
13
13
  import { Count } from './chunk-BHHIIK3M.js';
14
14
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
15
15
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
1
  import { useTreeState, useMeasuredSizes, layoutForest, treeAncestors, useLayoutAnchor, treeExpandable, layoutConnectors, treeItemAction, treeStep, treePosInSet, treeSetSize, treeLevel, placeGroups } from './chunk-MY374UUD.js';
2
- import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-2PZBIHRV.js';
2
+ import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-AMH67MLM.js';
3
3
  import { focusables } from './chunk-R25RGPUB.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './TreeCanvas-L2XYONWL.css';
@@ -1,7 +1,7 @@
1
1
  import { today, CalendarGrid, shiftMonth, compareDays } from './chunk-GXQ3B46I.js';
2
2
  import { Button } from './chunk-OG6CL3EB.js';
3
3
  import { IconButton } from './chunk-4FQT6ZAY.js';
4
- import { Popover } from './chunk-O2ZDZZS7.js';
4
+ import { Popover } from './chunk-BWRGFKJP.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './DateTimePicker-NJ6XH2TE.css';
7
7
  import { useMemo, useState, useEffect } from 'react';
@@ -1,9 +1,9 @@
1
- import { Select } from './chunk-IXUU5DLZ.js';
1
+ import { Select } from './chunk-FC4YTTFJ.js';
2
2
  import { Input } from './chunk-FTEJPHBI.js';
3
3
  import { today, shiftMonth, CalendarGrid, compareDays } from './chunk-GXQ3B46I.js';
4
4
  import { Button } from './chunk-OG6CL3EB.js';
5
5
  import { IconButton } from './chunk-4FQT6ZAY.js';
6
- import { Popover } from './chunk-O2ZDZZS7.js';
6
+ import { Popover } from './chunk-BWRGFKJP.js';
7
7
  import { isComposing } from './chunk-R25RGPUB.js';
8
8
  import { cx } from './chunk-ODEQTPFM.js';
9
9
  import './TimeWindowPicker-BZ5HHATU.css';
@@ -1,7 +1,7 @@
1
- import { LayerNodeBridge } from './chunk-53DVJCVW.js';
1
+ import { LayerNodeBridge } from './chunk-VYOKRN2I.js';
2
2
  import { Button } from './chunk-OG6CL3EB.js';
3
3
  import { IconButton } from './chunk-4FQT6ZAY.js';
4
- import { LAYER_REPOSITION_EVENT, LayerHost } from './chunk-7RPGY3JE.js';
4
+ import { LAYER_REPOSITION_EVENT, LayerHost } from './chunk-HMPFGIWM.js';
5
5
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './Canvas-YVXHMWLN.css';
@@ -1,7 +1,7 @@
1
1
  import { useTreeState, treeExpandable, treeLevel, treePosInSet, treeSetSize, treeItemAction, treePrevious, treeNext, treeStep } from './chunk-MY374UUD.js';
2
- import { LayerNodeBridge } from './chunk-53DVJCVW.js';
2
+ import { LayerNodeBridge } from './chunk-VYOKRN2I.js';
3
3
  import { IconButton } from './chunk-4FQT6ZAY.js';
4
- import { LayerHost, LAYER_REPOSITION_EVENT } from './chunk-7RPGY3JE.js';
4
+ import { LayerHost, LAYER_REPOSITION_EVENT } from './chunk-HMPFGIWM.js';
5
5
  import { focusables } from './chunk-R25RGPUB.js';
6
6
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- import { useLayerContainer, viewportBounds, LAYER_GAP, outsideBounds, placePopup, LAYER_REPOSITION_EVENT } from './chunk-7RPGY3JE.js';
1
+ import { useLayerContainer, viewportBounds, LAYER_GAP, outsideBounds, placePopup, LAYER_REPOSITION_EVENT } from './chunk-HMPFGIWM.js';
2
2
  import { usePopupLayer, focusables } from './chunk-R25RGPUB.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './Popover-QCINR7WG.css';
@@ -44,7 +44,8 @@ function Popover({
44
44
  }, []);
45
45
  const close = useCallback(
46
46
  (reason) => {
47
- if (reason === "escape" || reason === "tab") anchor.current?.focus();
47
+ const held = panel.current?.contains(document.activeElement) ?? false;
48
+ if (reason === "escape" || reason === "tab" || reason === "content" && held) anchor.current?.focus();
48
49
  setOpen(false, reason);
49
50
  },
50
51
  [setOpen]
@@ -1,4 +1,4 @@
1
- import { TreeGrid } from './chunk-6LXMLQUM.js';
1
+ import { TreeGrid } from './chunk-B2Z2CDM5.js';
2
2
  import { createTreeModel, treeParent } from './chunk-MY374UUD.js';
3
3
  import { OrgLabel } from './chunk-6OF2DBKY.js';
4
4
  import { AddPill } from './chunk-74WGARJE.js';
@@ -1,6 +1,6 @@
1
1
  import { HuePicker } from './chunk-NXDEPUVG.js';
2
2
  import { NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
3
- import { Popover } from './chunk-O2ZDZZS7.js';
3
+ import { Popover } from './chunk-BWRGFKJP.js';
4
4
  import { CharacterPicker } from './chunk-YXMCUKFI.js';
5
5
  import { Avatar } from './chunk-HI6Q2UXQ.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,9 +1,10 @@
1
1
  import { cx } from './chunk-ODEQTPFM.js';
2
- import './DescriptionList-YYY3V3O6.css';
2
+ import './DescriptionList-IXMRCSMK.css';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
5
5
  function DescriptionList({
6
6
  dense = false,
7
+ fit = false,
7
8
  items,
8
9
  className,
9
10
  children,
@@ -13,7 +14,12 @@ function DescriptionList({
13
14
  "dl",
14
15
  {
15
16
  ...rest,
16
- className: cx("crewlet-description-list", dense && "crewlet-description-list--dense", className),
17
+ className: cx(
18
+ "crewlet-description-list",
19
+ dense && "crewlet-description-list--dense",
20
+ fit && "crewlet-description-list--fit",
21
+ className
22
+ ),
17
23
  children: [
18
24
  items?.map(([term, detail], index) => /* @__PURE__ */ jsx(DescriptionListItem, { term, children: detail }, index)),
19
25
  children
@@ -1,5 +1,5 @@
1
1
  import { useListbox, useOptionKeys, useHighlightRest } from './chunk-F73MC7EZ.js';
2
- import { useLayerContainer, viewportBounds, outsideBounds, placePopup, LAYER_GAP, LAYER_REPOSITION_EVENT } from './chunk-7RPGY3JE.js';
2
+ import { useLayerContainer, viewportBounds, outsideBounds, placePopup, LAYER_GAP, LAYER_REPOSITION_EVENT } from './chunk-HMPFGIWM.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './Select-2P7AWUE4.css';
5
5
  import { forwardRef, useId, useMemo, useState, useRef, useCallback, useEffect, useLayoutEffect } from 'react';
@@ -1,12 +1,13 @@
1
1
  import { useMediaMatch } from './chunk-IG75YMUN.js';
2
2
  import { IconButton } from './chunk-4FQT6ZAY.js';
3
3
  import { useModalLayer, focusables } from './chunk-R25RGPUB.js';
4
+ import { VisuallyHidden } from './chunk-BZFWDIV6.js';
4
5
  import { cx } from './chunk-ODEQTPFM.js';
5
- import './AppShell-CEVLW4QG.css';
6
- import { createContext, useContext, useId, useState, useRef, useCallback, useEffect, useLayoutEffect } from 'react';
6
+ import './AppShell-6QUD7NWM.css';
7
+ import { createContext, forwardRef, useContext, useId, useState, useRef, useCallback, useEffect, useLayoutEffect } from 'react';
7
8
  import { breakpoint } from '@crewlethq/tokens';
8
- import { MenuGlyph } from '@crewlethq/icons/glyphs';
9
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
+ import { ChevronUpGlyph, MenuGlyph } from '@crewlethq/icons/glyphs';
10
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
10
11
 
11
12
  var NARROW = `(width < ${breakpoint.shell})`;
12
13
  var AppShellContext = createContext(null);
@@ -156,37 +157,80 @@ function AppShellRail({ header, footer, className, children }) {
156
157
  footer ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-foot", children: footer }) : null
157
158
  ] });
158
159
  }
159
- function AppShellRailRow({ icon, trailing, detail, onClick, label, className, children }) {
160
+ function opensSomething(haspopup) {
161
+ return haspopup !== void 0 && haspopup !== false && haspopup !== "false";
162
+ }
163
+ var AppShellRailRow = forwardRef(function AppShellRailRow2({
164
+ icon,
165
+ trailing,
166
+ count,
167
+ detail,
168
+ onClick,
169
+ label,
170
+ className,
171
+ children,
172
+ "aria-expanded": expanded,
173
+ "aria-haspopup": haspopup,
174
+ "aria-controls": controls
175
+ }, ref) {
160
176
  const block = detail !== void 0 && detail !== null && detail !== false && detail !== "";
177
+ const opens = onClick !== void 0 && opensSomething(haspopup);
161
178
  const inside = /* @__PURE__ */ jsxs(Fragment, { children: [
162
179
  icon ? /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-row-icon", "aria-hidden": true, children: icon }) : null,
163
180
  /* @__PURE__ */ jsxs("span", { className: "crewlet-app-shell__rail-row-body", children: [
164
181
  /* @__PURE__ */ jsxs("span", { className: "crewlet-app-shell__rail-row-text", children: [
165
- /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-row-label", children }),
182
+ /* @__PURE__ */ jsxs("span", { className: "crewlet-app-shell__rail-row-label", children: [
183
+ children,
184
+ count ? /* @__PURE__ */ jsx(VisuallyHidden, { children: `, ${String(count.value)} ${count.label}` }) : null
185
+ ] }),
166
186
  block ? /* @__PURE__ */ jsxs(Fragment, { children: [
167
187
  " ",
168
188
  /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-row-detail", children: detail })
169
189
  ] }) : null
170
190
  ] }),
191
+ count ? /* @__PURE__ */ jsxs(Fragment, { children: [
192
+ " ",
193
+ /* @__PURE__ */ jsxs(
194
+ "span",
195
+ {
196
+ className: cx(
197
+ "crewlet-app-shell__rail-row-count",
198
+ count.tone === "warning" && "crewlet-app-shell__rail-row-count--warning"
199
+ ),
200
+ "aria-hidden": true,
201
+ children: [
202
+ count.mark ? /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-row-count-mark", children: count.mark }) : null,
203
+ count.value
204
+ ]
205
+ }
206
+ )
207
+ ] }) : null,
171
208
  trailing ? /* @__PURE__ */ jsxs(Fragment, { children: [
172
209
  " ",
173
210
  /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-row-trailing", children: trailing })
174
211
  ] }) : null
175
- ] })
212
+ ] }),
213
+ opens ? /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-row-opens", "aria-hidden": true, children: /* @__PURE__ */ jsx(ChevronUpGlyph, { size: "xs" }) }) : null
176
214
  ] });
177
215
  const shape = cx("crewlet-app-shell__rail-row", block && "crewlet-app-shell__rail-row--block", className);
178
- if (onClick === void 0) return /* @__PURE__ */ jsx("div", { className: shape, children: inside });
216
+ if (onClick === void 0) {
217
+ return /* @__PURE__ */ jsx("div", { ref, className: shape, children: inside });
218
+ }
179
219
  return /* @__PURE__ */ jsx(
180
220
  "button",
181
221
  {
222
+ ref,
182
223
  type: "button",
183
224
  className: cx(shape, "crewlet-app-shell__rail-row--action"),
184
225
  "aria-label": label,
226
+ "aria-expanded": expanded,
227
+ "aria-haspopup": haspopup,
228
+ "aria-controls": controls,
185
229
  onClick,
186
230
  children: inside
187
231
  }
188
232
  );
189
- }
233
+ });
190
234
  function AppShellToggle({ className }) {
191
235
  const { drawerOpen, toggleDrawer, railId, toggleLabel, hasRail } = useAppShell();
192
236
  if (!hasRail) return null;
@@ -1,5 +1,5 @@
1
1
  import { cx } from './chunk-ODEQTPFM.js';
2
- import './Layer-NAFSGCFA.css';
2
+ import './Layer-J222IFNX.css';
3
3
  import { createContext, useState, useContext } from 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,4 +1,4 @@
1
- import { Modal } from './chunk-TFMJH2E6.js';
1
+ import { Modal } from './chunk-K4VORB64.js';
2
2
  import { useListbox, useHighlightRest } from './chunk-F73MC7EZ.js';
3
3
  import { Kbd } from './chunk-SMBKXWML.js';
4
4
  import { Input } from './chunk-FTEJPHBI.js';
@@ -1,4 +1,4 @@
1
- import { Tooltip } from './chunk-CQY5NTRS.js';
1
+ import { Tooltip } from './chunk-QWOPX2MN.js';
2
2
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './FactList-G2H73NFR.css';
@@ -1,7 +1,7 @@
1
1
  import { Button } from './chunk-OG6CL3EB.js';
2
2
  import { HeadingLevelProvider } from './chunk-PQADV6P6.js';
3
3
  import { IconButton } from './chunk-4FQT6ZAY.js';
4
- import { useLayerContainer } from './chunk-7RPGY3JE.js';
4
+ import { useLayerContainer } from './chunk-HMPFGIWM.js';
5
5
  import { focusables, useModalLayer, useBodyScrollLock } from './chunk-R25RGPUB.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './Modal-RQAYGG4L.css';
@@ -1,11 +1,11 @@
1
1
  import { Skeleton } from './chunk-W5J7R5EB.js';
2
- import { Modal } from './chunk-TFMJH2E6.js';
2
+ import { Modal } from './chunk-K4VORB64.js';
3
3
  import { useListbox, useOptionKeys } from './chunk-F73MC7EZ.js';
4
4
  import { Input } from './chunk-FTEJPHBI.js';
5
5
  import { KeyChip, highlightMatch } from './chunk-FYTIJM2T.js';
6
6
  import { announce } from './chunk-RSAQOKH3.js';
7
7
  import { useMediaMatch } from './chunk-IG75YMUN.js';
8
- import { Popover } from './chunk-O2ZDZZS7.js';
8
+ import { Popover } from './chunk-BWRGFKJP.js';
9
9
  import { focusables, isComposing } from './chunk-R25RGPUB.js';
10
10
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
11
11
  import { cx } from './chunk-ODEQTPFM.js';