@crewlethq/ui 0.6.3 → 0.8.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 (130) hide show
  1. package/README.md +109 -0
  2. package/dist/AddPill/index.js +1 -1
  3. package/dist/{AddPill-IJQYCY6C.css → AddPill-V4TQXJ53.css} +23 -22
  4. package/dist/AppShell/index.js +2 -2
  5. package/dist/{AppShell-XARELGIH.css → AppShell-CEVLW4QG.css} +3 -1
  6. package/dist/Button/index.js +1 -1
  7. package/dist/{Button-EXU36DEH.css → Button-UWKBTKYD.css} +18 -0
  8. package/dist/Canvas/Canvas.d.ts +16 -1
  9. package/dist/Canvas/index.d.ts +1 -1
  10. package/dist/Canvas/index.js +3 -3
  11. package/dist/{Canvas-Q6JETCWR.css → Canvas-YVXHMWLN.css} +13 -0
  12. package/dist/Card/index.js +1 -1
  13. package/dist/{Card-GLP7SUV6.css → Card-KJOYHDTJ.css} +5 -1
  14. package/dist/Charts/BarList.d.ts +23 -0
  15. package/dist/Charts/index.d.ts +1 -1
  16. package/dist/Charts/index.js +1 -1
  17. package/dist/{Charts-B3YEF7R4.css → Charts-THPA5BWV.css} +40 -0
  18. package/dist/Checkbox/index.js +1 -1
  19. package/dist/{Checkbox-BOXQ747I.css → Checkbox-UE7TEPAM.css} +9 -1
  20. package/dist/CodeBlock/index.js +4 -4
  21. package/dist/Combobox/index.js +3 -3
  22. package/dist/CommandPalette/index.js +6 -6
  23. package/dist/Copyable/index.js +3 -3
  24. package/dist/DataTable/index.js +6 -6
  25. package/dist/{DataTable-OLHPF7D4.css → DataTable-WZK3V62B.css} +11 -0
  26. package/dist/DataView/index.js +11 -11
  27. package/dist/DateTimePicker/index.js +4 -4
  28. package/dist/{DateTimePicker-22VNXRWC.css → DateTimePicker-4AZBTODT.css} +11 -6
  29. package/dist/ErrorBoundary/index.js +2 -2
  30. package/dist/FilterChip/index.js +1 -1
  31. package/dist/{FilterChip-GTGLLOXE.css → FilterChip-EZ4QMW4E.css} +4 -1
  32. package/dist/IconButton/index.js +1 -1
  33. package/dist/{IconButton-TVEUWK6L.css → IconButton-VYWP6SGW.css} +15 -0
  34. package/dist/ImageUpload/index.js +1 -1
  35. package/dist/{ImageUpload-YCHJMUGX.css → ImageUpload-L2GE4JUM.css} +5 -1
  36. package/dist/Input/index.js +2 -2
  37. package/dist/{Input-2PU5CPKK.css → Input-DRFNI26F.css} +40 -10
  38. package/dist/Kbd/index.js +1 -1
  39. package/dist/{Kbd-JPLDVJIP.css → Kbd-MCWJTRTT.css} +11 -0
  40. package/dist/ListInput/index.js +4 -4
  41. package/dist/Menu/index.js +3 -3
  42. package/dist/Modal/index.js +3 -3
  43. package/dist/NewItemsNotice/index.js +1 -1
  44. package/dist/{NewItemsNotice-T4DSSPVV.css → NewItemsNotice-Q5ED73BQ.css} +3 -1
  45. package/dist/OrgLabel/OrgLabel.d.ts +12 -3
  46. package/dist/OrgLabel/index.js +1 -1
  47. package/dist/{OrgLabel-CR233G34.css → OrgLabel-6WSKJQOT.css} +38 -0
  48. package/dist/OrgNode/OrgNode.d.ts +7 -4
  49. package/dist/OrgNode/index.js +2 -2
  50. package/dist/{OrgNode-BT7T2Q2X.css → OrgNode-TCHJH5FO.css} +89 -45
  51. package/dist/OrgTable/index.js +5 -5
  52. package/dist/{OrgTable-VWMFC3TB.css → OrgTable-JZSYTUIK.css} +28 -4
  53. package/dist/Popover/index.js +1 -1
  54. package/dist/{Popover-WJGCF3ZQ.css → Popover-QCINR7WG.css} +5 -2
  55. package/dist/PricingCard/index.js +2 -2
  56. package/dist/{PricingCard-7EFXRSD2.css → PricingCard-HTAHG4ST.css} +5 -1
  57. package/dist/SearchTrigger/index.js +1 -1
  58. package/dist/{SearchTrigger-Z5D4AAY7.css → SearchTrigger-KIZLWBEH.css} +4 -1
  59. package/dist/SegmentedControl/SegmentedControl.d.ts +19 -1
  60. package/dist/SegmentedControl/index.d.ts +1 -1
  61. package/dist/SegmentedControl/index.js +2 -2
  62. package/dist/SegmentedControl-76HODRBT.css +160 -0
  63. package/dist/Select/index.js +1 -1
  64. package/dist/{Select-E24U5LBC.css → Select-4ANVLHUY.css} +4 -4
  65. package/dist/Switch/index.js +1 -1
  66. package/dist/{Switch-U4OWK4CL.css → Switch-66RAQCRE.css} +8 -5
  67. package/dist/Tabs/index.js +1 -1
  68. package/dist/{Tabs-XCNPHA7B.css → Tabs-BWFQSWY3.css} +12 -0
  69. package/dist/Tag/index.js +1 -1
  70. package/dist/{Tag-4OXGO2DU.css → Tag-4BRQS6GN.css} +28 -1
  71. package/dist/TagGroup/index.js +1 -1
  72. package/dist/{TagGroup-APC2EFH4.css → TagGroup-BCQZD7ZD.css} +4 -1
  73. package/dist/TagsInput/index.js +3 -3
  74. package/dist/{TagsInput-W4P36PRJ.css → TagsInput-P2HS5QL4.css} +2 -2
  75. package/dist/ThemeSwitcher/index.js +3 -3
  76. package/dist/ThemeToggle/index.js +2 -2
  77. package/dist/TimeWindowPicker/index.js +6 -6
  78. package/dist/{TimeWindowPicker-7I7KWCMU.css → TimeWindowPicker-GBF4JDFI.css} +21 -8
  79. package/dist/Tree/layout.d.ts +3 -3
  80. package/dist/TreeCanvas/TreeCanvas.d.ts +7 -5
  81. package/dist/TreeCanvas/index.js +4 -4
  82. package/dist/{TreeCanvas-HVOV4SQN.css → TreeCanvas-L2XYONWL.css} +80 -74
  83. package/dist/TreeGrid/index.js +2 -2
  84. package/dist/{chunk-SVNXOK25.js → chunk-26SCUACK.js} +2 -2
  85. package/dist/{chunk-4UQ7SMPK.js → chunk-4FQT6ZAY.js} +1 -1
  86. package/dist/{chunk-IBYO2IJN.js → chunk-5I56UXBJ.js} +4 -4
  87. package/dist/{chunk-ZFATEERP.js → chunk-5YLON2PW.js} +1 -1
  88. package/dist/{chunk-EFYPAJT3.js → chunk-6DRDCT22.js} +1 -1
  89. package/dist/{chunk-PQNILU27.js → chunk-6HXH57BL.js} +3 -3
  90. package/dist/{chunk-BNCCEER3.js → chunk-6SIG5I72.js} +22 -11
  91. package/dist/{chunk-RJM4QCGG.js → chunk-6VL4LGWC.js} +36 -13
  92. package/dist/{chunk-OM5E3TTK.js → chunk-74WGARJE.js} +5 -2
  93. package/dist/{chunk-EV6IMYJ6.js → chunk-A722MUNR.js} +1 -1
  94. package/dist/{chunk-WOFOMTGB.js → chunk-B47YUQGM.js} +6 -2
  95. package/dist/{chunk-MV2E3QZM.js → chunk-BTHX2FS3.js} +2 -2
  96. package/dist/{chunk-2QLOH454.js → chunk-BXPLX7YU.js} +3 -3
  97. package/dist/{chunk-V34H2YCY.js → chunk-CEOXFO3E.js} +1 -1
  98. package/dist/{chunk-KKLITCMF.js → chunk-CHG7VT2M.js} +8 -8
  99. package/dist/{chunk-QY7UU5ZB.js → chunk-DRHXRGB6.js} +1 -1
  100. package/dist/{chunk-V2XMNLMS.js → chunk-E6UWRXNM.js} +1 -1
  101. package/dist/{chunk-NQ2HQ6P5.js → chunk-HVPC2GHY.js} +6 -6
  102. package/dist/{chunk-FFKYL7Z3.js → chunk-L7THQMFB.js} +4 -2
  103. package/dist/{chunk-PAWGBSHU.js → chunk-LOECRMHA.js} +1 -1
  104. package/dist/{chunk-LSJZUA5V.js → chunk-LSB3EHBW.js} +2 -2
  105. package/dist/{chunk-ERHSECG2.js → chunk-MORLKUGM.js} +1 -1
  106. package/dist/{chunk-UWQWTGQH.js → chunk-MPXI6FM6.js} +3 -3
  107. package/dist/{chunk-DHPUMOTX.js → chunk-N5KCGFWI.js} +8 -4
  108. package/dist/{chunk-ZAO4HHXI.js → chunk-OG6CL3EB.js} +1 -1
  109. package/dist/{chunk-C5WJUZVR.js → chunk-ORNOOMVY.js} +1 -1
  110. package/dist/{chunk-WUVZDFHS.js → chunk-OVLJEVQS.js} +2 -2
  111. package/dist/{chunk-AUS5FNQE.js → chunk-PDUZO35I.js} +1 -1
  112. package/dist/{chunk-YLYOWZ4V.js → chunk-PXU6HOZB.js} +1 -1
  113. package/dist/{chunk-AGQ3YLA5.js → chunk-QJZ3Y6WW.js} +6 -6
  114. package/dist/{chunk-S7KW47IQ.js → chunk-RHHGLTXJ.js} +1 -1
  115. package/dist/{chunk-SJQ546ID.js → chunk-SEFMO2EV.js} +1 -1
  116. package/dist/{chunk-KJ34ZBBI.js → chunk-SMBKXWML.js} +1 -1
  117. package/dist/{chunk-FIFNP6PL.js → chunk-SX2DFTQV.js} +1 -1
  118. package/dist/{chunk-L6XZOCP4.js → chunk-UCYIRDND.js} +2 -2
  119. package/dist/{chunk-D6EVJUGU.js → chunk-UYK72NOS.js} +1 -1
  120. package/dist/{chunk-TIWAHZZ6.js → chunk-VCOELPCT.js} +2 -2
  121. package/dist/{chunk-2HY7I3NT.js → chunk-VE6LD3KM.js} +5 -3
  122. package/dist/{chunk-CAIHUYXV.js → chunk-W4GQWFRX.js} +1 -1
  123. package/dist/{chunk-BWIPKSWA.js → chunk-XX2VQE55.js} +1 -1
  124. package/dist/{chunk-UA7O3KKJ.js → chunk-YCTMKKRA.js} +1 -1
  125. package/dist/{chunk-DSUY5F4E.js → chunk-ZGX2DP7F.js} +2 -2
  126. package/dist/generated/index.js +44 -44
  127. package/dist/index.js +44 -44
  128. package/dist/styles.css +662 -223
  129. package/package.json +3 -3
  130. package/dist/SegmentedControl-X3BI3XU4.css +0 -68
@@ -1,10 +1,10 @@
1
- import { TreeGrid } from './chunk-FIFNP6PL.js';
2
- import { createTreeModel } from './chunk-S3BCVWTU.js';
3
- import { OrgLabel } from './chunk-WOFOMTGB.js';
4
- import { AddPill } from './chunk-OM5E3TTK.js';
5
- import { IconButton } from './chunk-4UQ7SMPK.js';
1
+ import { TreeGrid } from './chunk-SX2DFTQV.js';
2
+ import { createTreeModel, treeParent } from './chunk-S3BCVWTU.js';
3
+ import { OrgLabel } from './chunk-B47YUQGM.js';
4
+ import { AddPill } from './chunk-74WGARJE.js';
5
+ import { IconButton } from './chunk-4FQT6ZAY.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
- import './OrgTable-VWMFC3TB.css';
7
+ import './OrgTable-JZSYTUIK.css';
8
8
  import { useMemo, useRef, useImperativeHandle, useCallback } from 'react';
9
9
  import { ChevronDownGlyph, ChevronUpGlyph } from '@crewlethq/icons/glyphs';
10
10
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
@@ -24,7 +24,7 @@ function OrgTable({
24
24
  ...rest
25
25
  }) {
26
26
  const text = { ...LABELS, ...labels };
27
- const depths = useMemo(() => createTreeModel(rows).depth, [rows]);
27
+ const tree = useMemo(() => createTreeModel(rows), [rows]);
28
28
  const grid = useRef(null);
29
29
  useImperativeHandle(
30
30
  ref,
@@ -38,20 +38,22 @@ function OrgTable({
38
38
  const cell = useCallback(
39
39
  (id, column, context) => {
40
40
  if (column !== 1) return renderCell(id, column, context);
41
- const depth = depths.get(id) ?? 0;
41
+ const depth = tree.depth.get(id) ?? 0;
42
+ const open = context.expandable(id) && context.expanded(id);
42
43
  return /* @__PURE__ */ jsxs(Fragment, { children: [
43
44
  /* @__PURE__ */ jsx(
44
45
  OrgTableWire,
45
46
  {
46
47
  depth,
47
48
  tone: tone?.(id),
48
- trunk: depth > 0 || context.expandable(id) && context.expanded(id)
49
+ trunk: depth > 0 || open,
50
+ last: !open && lastUnderRoot(tree, id)
49
51
  }
50
52
  ),
51
53
  renderCell(id, column, context)
52
54
  ] });
53
55
  },
54
- [depths, renderCell, tone]
56
+ [tree, renderCell, tone]
55
57
  );
56
58
  return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-org-table", className), children: [
57
59
  controls && /*
@@ -97,10 +99,18 @@ function OrgTable({
97
99
  )
98
100
  ] });
99
101
  }
102
+ function lastUnderRoot(tree, id) {
103
+ for (let at = id, up = treeParent(tree, id); up !== null; at = up, up = treeParent(tree, up)) {
104
+ const siblings = tree.children.get(up) ?? [];
105
+ if (siblings[siblings.length - 1] !== at) return false;
106
+ }
107
+ return true;
108
+ }
100
109
  function OrgTableWire({
101
110
  depth,
102
111
  tone,
103
- trunk
112
+ trunk,
113
+ last
104
114
  }) {
105
115
  return /* @__PURE__ */ jsx(
106
116
  "span",
@@ -108,6 +118,7 @@ function OrgTableWire({
108
118
  className: "crewlet-org-table__wire",
109
119
  "aria-hidden": "true",
110
120
  "data-trunk": trunk ? "" : void 0,
121
+ "data-last": last ? "" : void 0,
111
122
  "data-root": depth === 0 ? "" : void 0,
112
123
  "data-tone": tone,
113
124
  style: { "--crewlet-org-table-depth": depth }
@@ -1,6 +1,6 @@
1
1
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './Charts-B3YEF7R4.css';
3
+ import './Charts-THPA5BWV.css';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
  import { useState, useRef, useCallback, useId } from 'react';
6
6
 
@@ -61,15 +61,24 @@ function BarList({
61
61
  /* @__PURE__ */ jsxs("ul", { role: "list", className: cx("crewlet-bar-list", `crewlet-bar-list--${layout}`, className), children: [
62
62
  shown.map((datum, index) => {
63
63
  const width = top > 0 && datum.value > 0 ? Math.max(1, datum.value / top * 100) : 0;
64
+ const parts = (datum.parts ?? []).map((part, at) => ({ ...part, color: part.color ?? dataColor(at) })).filter((part) => part.value > 0);
64
65
  const bar = width > 0 ? /* @__PURE__ */ jsx(
65
66
  "span",
66
67
  {
67
- className: "crewlet-bar-list__bar",
68
+ className: cx("crewlet-bar-list__bar", parts.length > 0 && "crewlet-bar-list__bar--parts"),
68
69
  "aria-hidden": true,
69
- style: {
70
+ style: parts.length > 0 ? { width: `${width}%` } : {
70
71
  width: `${width}%`,
71
72
  "--crewlet-bar-list-bar-color": datum.color ?? dataColor(index)
72
- }
73
+ },
74
+ children: parts.map((part) => /* @__PURE__ */ jsx(
75
+ "span",
76
+ {
77
+ className: "crewlet-bar-list__part",
78
+ style: { flexGrow: part.value, "--crewlet-bar-list-part-color": part.color }
79
+ },
80
+ part.id
81
+ ))
73
82
  }
74
83
  ) : null;
75
84
  const value = /* @__PURE__ */ jsx("span", { className: "crewlet-bar-list__value", children: datum.display ?? datum.value.toLocaleString() });
@@ -98,15 +107,29 @@ function BarList({
98
107
  /* @__PURE__ */ jsx("span", { className: "crewlet-bar-list__sub", children: datum.sub })
99
108
  ] })
100
109
  ] });
101
- return /* @__PURE__ */ jsx("li", { className: "crewlet-bar-list__item", children: datum.href ? /* @__PURE__ */ jsx("a", { className: "crewlet-bar-list__row crewlet-bar-list__row--pressable", href: datum.href, children: body }) : datum.onSelect ? /* @__PURE__ */ jsx(
102
- "button",
103
- {
104
- type: "button",
105
- className: "crewlet-bar-list__row crewlet-bar-list__row--pressable",
106
- onClick: datum.onSelect,
107
- children: body
108
- }
109
- ) : /* @__PURE__ */ jsx("span", { className: "crewlet-bar-list__row", children: body }) }, datum.id);
110
+ return /* @__PURE__ */ jsxs("li", { className: "crewlet-bar-list__item", children: [
111
+ datum.href ? /* @__PURE__ */ jsx("a", { className: "crewlet-bar-list__row crewlet-bar-list__row--pressable", href: datum.href, children: body }) : datum.onSelect ? /* @__PURE__ */ jsx(
112
+ "button",
113
+ {
114
+ type: "button",
115
+ className: "crewlet-bar-list__row crewlet-bar-list__row--pressable",
116
+ onClick: datum.onSelect,
117
+ children: body
118
+ }
119
+ ) : /* @__PURE__ */ jsx("span", { className: "crewlet-bar-list__row", children: body }),
120
+ parts.length > 0 && /* @__PURE__ */ jsx(
121
+ Legend,
122
+ {
123
+ className: "crewlet-bar-list__key",
124
+ items: parts.map((part) => ({
125
+ id: part.id,
126
+ label: part.label,
127
+ color: part.color,
128
+ value: part.display ?? part.value.toLocaleString()
129
+ }))
130
+ }
131
+ )
132
+ ] }, datum.id);
110
133
  }),
111
134
  remaining > 0 && /* @__PURE__ */ jsx("li", { className: "crewlet-bar-list__more", children: moreLabel(remaining) })
112
135
  ] })
@@ -1,6 +1,6 @@
1
1
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './AddPill-IJQYCY6C.css';
3
+ import './AddPill-V4TQXJ53.css';
4
4
  import { useState, useId, useRef, useCallback, useEffect, Fragment } from 'react';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -93,7 +93,10 @@ function AddPill({
93
93
  onClick: press,
94
94
  children: [
95
95
  /* @__PURE__ */ jsx("span", { className: "crewlet-add-pill__disc", "aria-hidden": "true" }),
96
- /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", focusable: "false", children: /* @__PURE__ */ jsx("path", { d: "M8 3.5v9M3.5 8h9" }) })
96
+ /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", focusable: "false", children: [
97
+ /* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "7" }),
98
+ /* @__PURE__ */ jsx("path", { d: "M8 4.5v7M4.5 8h7" })
99
+ ] })
97
100
  ]
98
101
  }
99
102
  ),
@@ -1,5 +1,5 @@
1
1
  import { cx } from './chunk-ODEQTPFM.js';
2
- import './Switch-U4OWK4CL.css';
2
+ import './Switch-66RAQCRE.css';
3
3
  import { forwardRef, useId } from 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,6 +1,6 @@
1
1
  import { Avatar } from './chunk-IA232OTU.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './OrgLabel-CR233G34.css';
3
+ import './OrgLabel-6WSKJQOT.css';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
 
6
6
  function OrgLabel(props) {
@@ -8,7 +8,11 @@ function OrgLabel(props) {
8
8
  const zone = props.avatar === void 0 ? /* @__PURE__ */ jsx(
9
9
  "span",
10
10
  {
11
- className: cx("crewlet-org-label__icon", props.iconSize === "lg" && "crewlet-org-label__icon--lg"),
11
+ className: cx(
12
+ "crewlet-org-label__icon",
13
+ props.iconSize === "lg" && "crewlet-org-label__icon--lg",
14
+ props.iconRing === true && "crewlet-org-label__icon--ring"
15
+ ),
12
16
  "aria-hidden": "true",
13
17
  children: props.icon
14
18
  }
@@ -1,8 +1,8 @@
1
1
  import { HeadingLevelProvider } from './chunk-PQADV6P6.js';
2
2
  import { useLayerContainer } from './chunk-7RPGY3JE.js';
3
3
  import { focusables, useModalLayer, useBodyScrollLock } from './chunk-R25RGPUB.js';
4
- import { IconButton } from './chunk-4UQ7SMPK.js';
5
- import { Button } from './chunk-ZAO4HHXI.js';
4
+ import { IconButton } from './chunk-4FQT6ZAY.js';
5
+ import { Button } from './chunk-OG6CL3EB.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './Modal-BNT3TDV2.css';
8
8
  import { useId, useRef, useCallback } from 'react';
@@ -1,7 +1,7 @@
1
- import { Kbd } from './chunk-KJ34ZBBI.js';
2
- import { Modal } from './chunk-MV2E3QZM.js';
1
+ import { Kbd } from './chunk-SMBKXWML.js';
2
+ import { Modal } from './chunk-BTHX2FS3.js';
3
3
  import { useListbox } from './chunk-6MU7HNB4.js';
4
- import { Input } from './chunk-DSUY5F4E.js';
4
+ import { Input } from './chunk-ZGX2DP7F.js';
5
5
  import { Count } from './chunk-BHHIIK3M.js';
6
6
  import { isComposing } from './chunk-R25RGPUB.js';
7
7
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
@@ -2,7 +2,7 @@ import { CardHeaderSlotContext } from './chunk-AV2DXAEL.js';
2
2
  import { Count } from './chunk-BHHIIK3M.js';
3
3
  import { useHeadingLevel, HeadingLevelProvider, nextHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
- import './Card-GLP7SUV6.css';
5
+ import './Card-KJOYHDTJ.css';
6
6
  import { createContext, useId, useState, isValidElement, useRef, useCallback, useMemo, Children, cloneElement, useContext, useEffect, Fragment } from 'react';
7
7
  import { jsx, jsxs } from 'react/jsx-runtime';
8
8
 
@@ -1,16 +1,16 @@
1
1
  import { Toolbar } from './chunk-PGRPNDWM.js';
2
2
  import { PageHeader } from './chunk-HOXGBLEY.js';
3
3
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
4
- import { Kbd } from './chunk-KJ34ZBBI.js';
5
- import { DataTable } from './chunk-AGQ3YLA5.js';
6
- import { Menu } from './chunk-LSJZUA5V.js';
7
- import { DateTimePicker } from './chunk-IBYO2IJN.js';
8
- import { Popover } from './chunk-AUS5FNQE.js';
4
+ import { DateTimePicker } from './chunk-5I56UXBJ.js';
5
+ import { Popover } from './chunk-PDUZO35I.js';
6
+ import { DataTable } from './chunk-QJZ3Y6WW.js';
7
+ import { Menu } from './chunk-LSB3EHBW.js';
8
+ import { Kbd } from './chunk-SMBKXWML.js';
9
9
  import { useListbox, useOptionKeys } from './chunk-6MU7HNB4.js';
10
- import { Input } from './chunk-DSUY5F4E.js';
10
+ import { Input } from './chunk-ZGX2DP7F.js';
11
11
  import { Count } from './chunk-BHHIIK3M.js';
12
- import { IconButton } from './chunk-4UQ7SMPK.js';
13
- import { Button } from './chunk-ZAO4HHXI.js';
12
+ import { IconButton } from './chunk-4FQT6ZAY.js';
13
+ import { Button } from './chunk-OG6CL3EB.js';
14
14
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
15
15
  import { cx } from './chunk-ODEQTPFM.js';
16
16
  import './DataView-N6JX464S.css';
@@ -1,6 +1,6 @@
1
1
  import { Count } from './chunk-BHHIIK3M.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './Tabs-XCNPHA7B.css';
3
+ import './Tabs-BWFQSWY3.css';
4
4
  import React, { useRef, useState, useLayoutEffect } from 'react';
5
5
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { useAnnouncer } from './chunk-RSAQOKH3.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './TagGroup-APC2EFH4.css';
3
+ import './TagGroup-BCQZD7ZD.css';
4
4
  import { useState, useRef, Children } from 'react';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,12 +1,12 @@
1
- import { Select } from './chunk-SJQ546ID.js';
2
- import { Popover } from './chunk-AUS5FNQE.js';
1
+ import { Select } from './chunk-SEFMO2EV.js';
2
+ import { Popover } from './chunk-PDUZO35I.js';
3
3
  import { today, shiftMonth, CalendarGrid, compareDays } from './chunk-GXQ3B46I.js';
4
- import { Input } from './chunk-DSUY5F4E.js';
4
+ import { Input } from './chunk-ZGX2DP7F.js';
5
5
  import { isComposing } from './chunk-R25RGPUB.js';
6
- import { IconButton } from './chunk-4UQ7SMPK.js';
7
- import { Button } from './chunk-ZAO4HHXI.js';
6
+ import { IconButton } from './chunk-4FQT6ZAY.js';
7
+ import { Button } from './chunk-OG6CL3EB.js';
8
8
  import { cx } from './chunk-ODEQTPFM.js';
9
- import './TimeWindowPicker-7I7KWCMU.css';
9
+ import './TimeWindowPicker-GBF4JDFI.css';
10
10
  import { useMemo, useState, useRef, useId, useEffect } from 'react';
11
11
  import { ClockGlyph, ChevronDownGlyph, CheckGlyph, ChevronLeftGlyph, ChevronRightGlyph } from '@crewlethq/icons/glyphs';
12
12
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,8 +1,8 @@
1
1
  import { useTreeState, useMeasuredSizes, layoutForest, treeAncestors, useLayoutAnchor, treeExpandable, layoutConnectors, treeItemAction, treeStep, treePosInSet, treeSetSize, treeLevel, placeGroups } from './chunk-S3BCVWTU.js';
2
- import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-2HY7I3NT.js';
2
+ import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-VE6LD3KM.js';
3
3
  import { focusables } from './chunk-R25RGPUB.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
- import './TreeCanvas-HVOV4SQN.css';
5
+ import './TreeCanvas-L2XYONWL.css';
6
6
  import { useState, useRef, useMemo, useLayoutEffect, useCallback, useImperativeHandle, useId, useSyncExternalStore } from 'react';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
 
@@ -133,6 +133,7 @@ function TreeCanvas({
133
133
  controlsBelow,
134
134
  hint,
135
135
  dimmed = false,
136
+ ground,
136
137
  composing = null,
137
138
  labels,
138
139
  ref,
@@ -461,6 +462,7 @@ function TreeCanvas({
461
462
  controlsBelow,
462
463
  hint,
463
464
  dimmed,
465
+ ground,
464
466
  largestItemWidth: widestCard,
465
467
  labels,
466
468
  children: [
@@ -1,6 +1,6 @@
1
1
  import { StatusDot } from './chunk-WIATRXEJ.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './Tag-4OXGO2DU.css';
3
+ import './Tag-4BRQS6GN.css';
4
4
  import { XGlyph } from '@crewlethq/icons/glyphs';
5
5
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { useLayerContainer, viewportBounds, LAYER_GAP, outsideBounds, placePopup, LAYER_REPOSITION_EVENT } from './chunk-7RPGY3JE.js';
2
2
  import { usePopupLayer } from './chunk-R25RGPUB.js';
3
- import { IconButton } from './chunk-4UQ7SMPK.js';
4
- import { Button } from './chunk-ZAO4HHXI.js';
3
+ import { IconButton } from './chunk-4FQT6ZAY.js';
4
+ import { Button } from './chunk-OG6CL3EB.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './Menu-BT5PMFJI.css';
7
7
  import { useId, useState, useRef, useCallback, useLayoutEffect, useEffect } from 'react';
@@ -1,4 +1,4 @@
1
- import { CopyButton } from './chunk-SVNXOK25.js';
1
+ import { CopyButton } from './chunk-26SCUACK.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './CodeBlock-GYNJ2HI6.css';
4
4
  import { forwardRef, useRef, useState, useLayoutEffect } from 'react';
@@ -1,10 +1,10 @@
1
- import { Tag } from './chunk-PAWGBSHU.js';
1
+ import { Tag } from './chunk-LOECRMHA.js';
2
2
  import { useListbox } from './chunk-6MU7HNB4.js';
3
3
  import { announce } from './chunk-RSAQOKH3.js';
4
4
  import { isComposing } from './chunk-R25RGPUB.js';
5
- import { IconButton } from './chunk-4UQ7SMPK.js';
5
+ import { IconButton } from './chunk-4FQT6ZAY.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
- import './TagsInput-W4P36PRJ.css';
7
+ import './TagsInput-P2HS5QL4.css';
8
8
  import { forwardRef, useState, useRef, useId, useImperativeHandle, useEffect, useMemo, useLayoutEffect } from 'react';
9
9
  import { CheckGlyph, ChevronLeftGlyph, ChevronRightGlyph } from '@crewlethq/icons/glyphs';
10
10
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -1,9 +1,9 @@
1
- import { useRoving, tabStop, tabId } from './chunk-QY7UU5ZB.js';
1
+ import { useRoving, tabStop, tabId } from './chunk-DRHXRGB6.js';
2
2
  import { Count } from './chunk-BHHIIK3M.js';
3
3
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
- import './Tabs-XCNPHA7B.css';
6
- import './SegmentedControl-X3BI3XU4.css';
5
+ import './Tabs-BWFQSWY3.css';
6
+ import './SegmentedControl-76HODRBT.css';
7
7
  import { useId } from 'react';
8
8
  import { jsxs, jsx } from 'react/jsx-runtime';
9
9
 
@@ -14,6 +14,8 @@ function SegmentedControl({
14
14
  value,
15
15
  onValueChange,
16
16
  size = "md",
17
+ layout = "pill",
18
+ trailing,
17
19
  className = "",
18
20
  semantics,
19
21
  panelId,
@@ -49,10 +51,11 @@ function SegmentedControl({
49
51
  * Tabs.css is bundled last), so the cards were drawn inside a pill
50
52
  * bar sized to its content, which is what the mode exists to avoid.
51
53
  */
52
- !cards && "crewlet-tabs--pill",
54
+ !cards && layout === "pill" && "crewlet-tabs--pill",
53
55
  `crewlet-tabs--${size}`,
54
56
  "crewlet-segmented",
55
57
  cards && "crewlet-segmented--cards",
58
+ !cards && layout === "chips" && "crewlet-segmented--chips",
56
59
  className
57
60
  ),
58
61
  role: radio ? "radiogroup" : "tablist",
@@ -99,6 +102,7 @@ function SegmentedControl({
99
102
  option.value
100
103
  );
101
104
  }),
105
+ trailing ? /* @__PURE__ */ jsx("span", { className: "crewlet-segmented__trailing", children: trailing }) : null,
102
106
  hint ? /* @__PURE__ */ jsx(VisuallyHidden, { id: hintId, children: hint }) : null
103
107
  ]
104
108
  }
@@ -1,6 +1,6 @@
1
1
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './Button-EXU36DEH.css';
3
+ import './Button-UWKBTKYD.css';
4
4
  import { forwardRef, useId, Children, isValidElement, cloneElement } from 'react';
5
5
  import { ExternalLinkGlyph } from '@crewlethq/icons/glyphs';
6
6
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { useThemePreference, useSystemTheme, resolveTheme } from './chunk-K3OWD7BJ.js';
2
- import { IconButton } from './chunk-4UQ7SMPK.js';
2
+ import { IconButton } from './chunk-4FQT6ZAY.js';
3
3
  import { SunGlyph, MoonGlyph } from '@crewlethq/icons/glyphs';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,7 +1,7 @@
1
1
  import { useModalLayer, focusables } from './chunk-R25RGPUB.js';
2
- import { IconButton } from './chunk-4UQ7SMPK.js';
2
+ import { IconButton } from './chunk-4FQT6ZAY.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './AppShell-XARELGIH.css';
4
+ import './AppShell-CEVLW4QG.css';
5
5
  import { createContext, useContext, useId, useState, useRef, useCallback, useEffect, useLayoutEffect, useSyncExternalStore } from 'react';
6
6
  import { breakpoint } from '@crewlethq/tokens';
7
7
  import { MenuGlyph } from '@crewlethq/icons/glyphs';
@@ -1,7 +1,7 @@
1
1
  import { useLayerContainer, viewportBounds, LAYER_GAP, outsideBounds, placePopup, LAYER_REPOSITION_EVENT } from './chunk-7RPGY3JE.js';
2
2
  import { usePopupLayer, focusables } from './chunk-R25RGPUB.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './Popover-WJGCF3ZQ.css';
4
+ import './Popover-QCINR7WG.css';
5
5
  import { useId, useState, useRef, useCallback, useLayoutEffect, useEffect, cloneElement } from 'react';
6
6
  import { createPortal } from 'react-dom';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
1
  import { useAnnouncer } from './chunk-RSAQOKH3.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './NewItemsNotice-T4DSSPVV.css';
3
+ import './NewItemsNotice-Q5ED73BQ.css';
4
4
  import { useRef, useEffect } from 'react';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,14 +1,14 @@
1
- import { Menu } from './chunk-LSJZUA5V.js';
1
+ import { Menu } from './chunk-LSB3EHBW.js';
2
2
  import { EmptyValue } from './chunk-EUCC37WY.js';
3
- import { Modal } from './chunk-MV2E3QZM.js';
3
+ import { Checkbox } from './chunk-YCTMKKRA.js';
4
4
  import { useCardHeaderSlot } from './chunk-AV2DXAEL.js';
5
- import { Checkbox } from './chunk-UA7O3KKJ.js';
6
5
  import { useClipboard } from './chunk-5VNUYO76.js';
7
- import { IconButton } from './chunk-4UQ7SMPK.js';
8
- import { Button } from './chunk-ZAO4HHXI.js';
6
+ import { Modal } from './chunk-BTHX2FS3.js';
7
+ import { IconButton } from './chunk-4FQT6ZAY.js';
8
+ import { Button } from './chunk-OG6CL3EB.js';
9
9
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
10
10
  import { cx } from './chunk-ODEQTPFM.js';
11
- import './DataTable-OLHPF7D4.css';
11
+ import './DataTable-WZK3V62B.css';
12
12
  import React, { useState, useCallback, useMemo, useRef, useLayoutEffect, useEffect, useId } from 'react';
13
13
  import { createPortal } from 'react-dom';
14
14
  import { CheckGlyph, CircleAlertGlyph, CopyGlyph, ChevronsLeftGlyph, ChevronLeftGlyph, ChevronRightGlyph, ChevronsRightGlyph, SettingsGlyph, GripVerticalGlyph, ChevronUpGlyph, ChevronDownGlyph, TrashGlyph, ArrowUpGlyph, ArrowDownGlyph, ChevronsUpDownGlyph, RotateCcwGlyph } from '@crewlethq/icons/glyphs';
@@ -1,5 +1,5 @@
1
1
  import { useThemePreference, useDensityPreference } from './chunk-K3OWD7BJ.js';
2
- import { SegmentedControl } from './chunk-DHPUMOTX.js';
2
+ import { SegmentedControl } from './chunk-N5KCGFWI.js';
3
3
  import { SunGlyph, MonitorGlyph, MoonGlyph } from '@crewlethq/icons/glyphs';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,7 +1,7 @@
1
1
  import { useListbox, useOptionKeys } from './chunk-6MU7HNB4.js';
2
2
  import { useLayerContainer, viewportBounds, outsideBounds, placePopup, LAYER_GAP, LAYER_REPOSITION_EVENT } from './chunk-7RPGY3JE.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './Select-E24U5LBC.css';
4
+ import './Select-4ANVLHUY.css';
5
5
  import { forwardRef, useId, useMemo, useState, useRef, useCallback, useEffect, useLayoutEffect } from 'react';
6
6
  import { createPortal } from 'react-dom';
7
7
  import { ChevronDownGlyph, CheckGlyph, SearchGlyph } from '@crewlethq/icons/glyphs';
@@ -1,6 +1,6 @@
1
1
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './Kbd-JPLDVJIP.css';
3
+ import './Kbd-MCWJTRTT.css';
4
4
  import { Fragment } from 'react';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
6
 
@@ -2,7 +2,7 @@ import { useTreeState, treeExpandable, treeLevel, treePosInSet, treeSetSize, tre
2
2
  import { LayerNodeBridge } from './chunk-53DVJCVW.js';
3
3
  import { LayerHost, LAYER_REPOSITION_EVENT } from './chunk-7RPGY3JE.js';
4
4
  import { focusables } from './chunk-R25RGPUB.js';
5
- import { IconButton } from './chunk-4UQ7SMPK.js';
5
+ import { IconButton } from './chunk-4FQT6ZAY.js';
6
6
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
8
8
  import './TreeGrid-NSW7VMOX.css';
@@ -1,5 +1,5 @@
1
- import { Tag } from './chunk-PAWGBSHU.js';
2
- import './PricingCard-7EFXRSD2.css';
1
+ import { Tag } from './chunk-LOECRMHA.js';
2
+ import './PricingCard-HTAHG4ST.css';
3
3
  import { forwardRef } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { useListbox } from './chunk-6MU7HNB4.js';
2
- import { Input } from './chunk-DSUY5F4E.js';
2
+ import { Input } from './chunk-ZGX2DP7F.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,6 +1,6 @@
1
- import { OrgLabel } from './chunk-WOFOMTGB.js';
1
+ import { OrgLabel } from './chunk-B47YUQGM.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './OrgNode-BT7T2Q2X.css';
3
+ import './OrgNode-TCHJH5FO.css';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
 
6
6
  function OrgNodeLabel(props) {
@@ -1,10 +1,10 @@
1
1
  import { LayerNodeBridge } from './chunk-53DVJCVW.js';
2
2
  import { LAYER_REPOSITION_EVENT, LayerHost } from './chunk-7RPGY3JE.js';
3
- import { IconButton } from './chunk-4UQ7SMPK.js';
4
- import { Button } from './chunk-ZAO4HHXI.js';
3
+ import { IconButton } from './chunk-4FQT6ZAY.js';
4
+ import { Button } from './chunk-OG6CL3EB.js';
5
5
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
- import './Canvas-Q6JETCWR.css';
7
+ import './Canvas-YVXHMWLN.css';
8
8
  import { useId, useRef, useState, useCallback, useLayoutEffect, useImperativeHandle, useEffect } from 'react';
9
9
  import { ZoomOutGlyph, ZoomInGlyph, FullscreenGlyph } from '@crewlethq/icons/glyphs';
10
10
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -164,6 +164,7 @@ function Canvas({
164
164
  hint,
165
165
  largestItemWidth,
166
166
  dimmed = false,
167
+ ground = "plain",
167
168
  touch = true,
168
169
  labels,
169
170
  onReady,
@@ -449,6 +450,7 @@ function Canvas({
449
450
  className: cx("crewlet-canvas", className),
450
451
  ref: root,
451
452
  "data-dimmed": dimmed,
453
+ "data-ground": ground,
452
454
  "data-ready": ready,
453
455
  "data-animate": animate === false ? "false" : animate,
454
456
  "data-panning": panning,
@@ -1,5 +1,5 @@
1
1
  import { avatarCorner, Avatar } from './chunk-IA232OTU.js';
2
- import './ImageUpload-YCHJMUGX.css';
2
+ import './ImageUpload-L2GE4JUM.css';
3
3
  import { useRef } from 'react';
4
4
  import { CameraGlyph, XGlyph } from '@crewlethq/icons/glyphs';
5
5
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- import { Button } from './chunk-ZAO4HHXI.js';
1
+ import { Button } from './chunk-OG6CL3EB.js';
2
2
  import './ErrorBoundary-U2PA3LY2.css';
3
3
  import { Component } from 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { cx } from './chunk-ODEQTPFM.js';
2
- import './Checkbox-BOXQ747I.css';
2
+ import './Checkbox-UE7TEPAM.css';
3
3
  import { forwardRef, useId, useRef, useCallback, useEffect } from 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,8 +1,8 @@
1
1
  import { useHeadingLevel, headingTag, HeadingLevelProvider, nextHeadingLevel } from './chunk-PQADV6P6.js';
2
- import { IconButton } from './chunk-4UQ7SMPK.js';
2
+ import { IconButton } from './chunk-4FQT6ZAY.js';
3
3
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
- import './Input-2PU5CPKK.css';
5
+ import './Input-DRFNI26F.css';
6
6
  import { forwardRef, useRef, useState, useImperativeHandle, useEffect, useId } from 'react';
7
7
  import { XGlyph } from '@crewlethq/icons/glyphs';
8
8
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';