@crewlethq/ui 0.16.0 → 0.17.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.
package/README.md CHANGED
@@ -198,6 +198,10 @@ places:
198
198
  - A surface that pans or zooms dispatches `LAYER_REPOSITION_EVENT` on its host
199
199
  when the content beneath it moves, and every panel anchored inside follows.
200
200
 
201
+ ## Changes in 0.17.0
202
+
203
+ **`Avatar` takes `mark`**, a glyph on the lower-right corner that says how a principal is present rather than what it is doing: a seat's badge acting through an API token keeps its own initials and wears a key there. It sits in the notch a status uses, drawn quiet in the neutral badge's raised fill, strong hairline and secondary ink, and a `status` wins over it. **`markLabel`** is said after the name by a badge that names itself (`Miles avatar, signed in with an API token`); a decorative one says nothing. A marked badge, like one with a status, is drawn inside a `.crewlet-avatar-frame` and draws no ring. What to change: nothing.
204
+
201
205
  ## Changes in 0.16.0
202
206
 
203
207
  0.16.0 adds the pieces the engine console's sign-in, Account and People & access screens were drawing on their own, so every one of them is the package's now.
@@ -108,6 +108,21 @@ export interface AvatarProps extends HTMLAttributes<HTMLElement> {
108
108
  ring?: AvatarRing | undefined;
109
109
  /** What the agent is doing, as a corner badge; none is idle. */
110
110
  status?: AvatarStatus | undefined;
111
+ /**
112
+ * A glyph on the corner saying HOW a principal is present rather than what
113
+ * it is doing: a person's or a seat's badge acting through an API token
114
+ * wears a key there, so the face stays theirs and the credential is still
115
+ * shown. It sits where a status sits, cut into the same notch, in the
116
+ * neutral badge's raised fill, and a `status` wins over it. A component,
117
+ * drawn at the corner's own scale.
118
+ */
119
+ mark?: ReactNode;
120
+ /**
121
+ * What the mark means, said after the name by a badge that names itself
122
+ * ("Miles avatar, signed in with an API token"). A decorative badge says
123
+ * nothing, as it says nothing of a status.
124
+ */
125
+ markLabel?: string | undefined;
111
126
  /**
112
127
  * The name is already printed beside this badge, so the badge itself says
113
128
  * nothing. Without it a row reads "Carlos Diaz avatar, Carlos Diaz".
@@ -218,4 +233,4 @@ export declare function avatarCorner(pixels: number): number;
218
233
  * knowing what colour that ground is. The frame takes the caller's class and
219
234
  * style, which is where a layout reaches for the badge.
220
235
  */
221
- export declare const Avatar: ({ src, name, size, kind, tone, ring, status, decorative, colorSeed, character, hue, icon, className, style, ...rest }: AvatarProps) => import("react").JSX.Element;
236
+ export declare const Avatar: ({ src, name, size, kind, tone, ring, status, mark, markLabel, decorative, colorSeed, character, hue, icon, className, style, ...rest }: AvatarProps) => import("react").JSX.Element;
@@ -1,3 +1,3 @@
1
- export { AvatarStack, avatarStackLabel } from '../chunk-UAMDRJD6.js';
2
- export { AVATAR_CHARACTER_FULL_DETAIL, AVATAR_CORNER_RATIO, AVATAR_SIZES, AVATAR_STATUSES, AVATAR_STATUS_LABELS, Avatar, avatarCorner, avatarInitialsName, avatarPixels, avatarTint, getInitials } from '../chunk-FY4SP3HF.js';
1
+ export { AvatarStack, avatarStackLabel } from '../chunk-UAN5NE7M.js';
2
+ export { AVATAR_CHARACTER_FULL_DETAIL, AVATAR_CORNER_RATIO, AVATAR_SIZES, AVATAR_STATUSES, AVATAR_STATUS_LABELS, Avatar, avatarCorner, avatarInitialsName, avatarPixels, avatarTint, getInitials } from '../chunk-5OM447RW.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -339,3 +339,18 @@
339
339
  .crewlet-avatar__status--stopped {
340
340
  background: var(--color-feedback-danger);
341
341
  }
342
+
343
+ /*
344
+ * A MARK (`mark`): how a principal is present, not a state, so it is drawn
345
+ * quiet rather than in a state's fill: the neutral badge's raised rung, its
346
+ * strong hairline and its secondary ink. The hairline is the corner's own
347
+ * outline, inset by its width, so it keeps the corner's size and survives
348
+ * forced colours.
349
+ */
350
+ .crewlet-avatar__status--mark {
351
+ padding: 1px;
352
+ background: var(--color-surface-elevated);
353
+ outline-color: var(--color-border-strong);
354
+ outline-offset: -1px;
355
+ color: var(--color-text-secondary);
356
+ }
@@ -1,14 +1,14 @@
1
- export { AvatarPicker } from '../chunk-FAEN3HYI.js';
1
+ export { AvatarPicker } from '../chunk-HENOTGUV.js';
2
2
  import '../chunk-NXDEPUVG.js';
3
3
  import '../chunk-AYKXMIOR.js';
4
4
  import '../chunk-26PEPONN.js';
5
5
  import '../chunk-4LDTQWS7.js';
6
6
  import '../chunk-BWRGFKJP.js';
7
- import '../chunk-DZ2YR6MV.js';
7
+ import '../chunk-5PSXBL73.js';
8
8
  import '../chunk-CBOICT64.js';
9
9
  import '../chunk-HMPFGIWM.js';
10
10
  import '../chunk-R25RGPUB.js';
11
11
  import '../chunk-BHHIIK3M.js';
12
12
  import '../chunk-BZFWDIV6.js';
13
- import '../chunk-FY4SP3HF.js';
13
+ import '../chunk-5OM447RW.js';
14
14
  import '../chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
1
  import '../chunk-3L5NHASN.js';
2
- export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-DZ2YR6MV.js';
2
+ export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-5PSXBL73.js';
3
3
  import '../chunk-CBOICT64.js';
4
- import '../chunk-FY4SP3HF.js';
4
+ import '../chunk-5OM447RW.js';
5
5
  import '../chunk-ODEQTPFM.js';
@@ -1,10 +1,10 @@
1
- export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-EIOTVNYX.js';
1
+ export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-RF5O4FYL.js';
2
2
  import '../chunk-NS7BVLL3.js';
3
3
  import '../chunk-EUCC37WY.js';
4
- import '../chunk-DEEVA6TV.js';
5
4
  import '../chunk-75CLJNDQ.js';
6
5
  import '../chunk-STJ7QBC3.js';
7
6
  import '../chunk-DTIW4CHZ.js';
7
+ import '../chunk-DEEVA6TV.js';
8
8
  import '../chunk-4GB57WIT.js';
9
9
  import '../chunk-OG6CL3EB.js';
10
10
  import '../chunk-4FQT6ZAY.js';
@@ -1,15 +1,15 @@
1
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-5EFRWWGX.js';
1
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-XU4H6JQB.js';
2
2
  import '../chunk-3CZ7XAVY.js';
3
3
  import '../chunk-HOXGBLEY.js';
4
4
  import '../chunk-PGRPNDWM.js';
5
- import '../chunk-EIOTVNYX.js';
5
+ import '../chunk-RF5O4FYL.js';
6
6
  import '../chunk-NS7BVLL3.js';
7
7
  import '../chunk-EUCC37WY.js';
8
- import '../chunk-DEEVA6TV.js';
9
8
  import '../chunk-2UU5IGZI.js';
10
9
  import '../chunk-75CLJNDQ.js';
11
10
  import '../chunk-STJ7QBC3.js';
12
11
  import '../chunk-DTIW4CHZ.js';
12
+ import '../chunk-DEEVA6TV.js';
13
13
  import '../chunk-F73MC7EZ.js';
14
14
  import '../chunk-SMBKXWML.js';
15
15
  import '../chunk-4GB57WIT.js';
@@ -1,4 +1,4 @@
1
- export { EntityChip } from '../chunk-CKB3OHL3.js';
2
- import '../chunk-UAMDRJD6.js';
3
- import '../chunk-FY4SP3HF.js';
1
+ export { EntityChip } from '../chunk-4KWOKX2B.js';
2
+ import '../chunk-UAN5NE7M.js';
3
+ import '../chunk-5OM447RW.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { ImageUpload } from '../chunk-KLESCRTS.js';
2
- import '../chunk-UAMDRJD6.js';
3
- import '../chunk-FY4SP3HF.js';
1
+ export { ImageUpload } from '../chunk-YDBC4DNW.js';
2
+ import '../chunk-UAN5NE7M.js';
3
+ import '../chunk-5OM447RW.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { OrgLabel } from '../chunk-6DQWF5Y4.js';
2
- import '../chunk-UAMDRJD6.js';
3
- import '../chunk-FY4SP3HF.js';
1
+ export { OrgLabel } from '../chunk-AKEZ3G5V.js';
2
+ import '../chunk-UAN5NE7M.js';
3
+ import '../chunk-5OM447RW.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
- export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-CGNQPGJL.js';
2
- import '../chunk-6DQWF5Y4.js';
3
- import '../chunk-UAMDRJD6.js';
4
- import '../chunk-FY4SP3HF.js';
1
+ export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-TBMDMXEX.js';
2
+ import '../chunk-AKEZ3G5V.js';
3
+ import '../chunk-UAN5NE7M.js';
4
+ import '../chunk-5OM447RW.js';
5
5
  import '../chunk-ODEQTPFM.js';
@@ -1,13 +1,13 @@
1
- export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-OFMPIRGD.js';
1
+ export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-L4ZLXYPO.js';
2
2
  import '../chunk-B2Z2CDM5.js';
3
3
  import '../chunk-MY374UUD.js';
4
- import '../chunk-6DQWF5Y4.js';
4
+ import '../chunk-AKEZ3G5V.js';
5
5
  import '../chunk-VYOKRN2I.js';
6
6
  import '../chunk-TROLVEZY.js';
7
7
  import '../chunk-4FQT6ZAY.js';
8
- import '../chunk-UAMDRJD6.js';
8
+ import '../chunk-UAN5NE7M.js';
9
9
  import '../chunk-HMPFGIWM.js';
10
10
  import '../chunk-R25RGPUB.js';
11
11
  import '../chunk-BZFWDIV6.js';
12
- import '../chunk-FY4SP3HF.js';
12
+ import '../chunk-5OM447RW.js';
13
13
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- import { Avatar } from './chunk-FY4SP3HF.js';
1
+ import { Avatar } from './chunk-5OM447RW.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './EntityChip-LUCPZBBG.css';
4
4
  import { Children, isValidElement, cloneElement } from 'react';
@@ -51,6 +51,8 @@ var Avatar = ({
51
51
  tone = "neutral",
52
52
  ring,
53
53
  status,
54
+ mark,
55
+ markLabel,
54
56
  decorative = false,
55
57
  colorSeed,
56
58
  character,
@@ -71,9 +73,11 @@ var Avatar = ({
71
73
  fontSize: Math.max(9, Math.round(pixels * 0.36))
72
74
  } : {};
73
75
  const seeded = tone === "seeded" ? avatarTint(colorSeed ?? name ?? "") : null;
74
- const framed = status !== void 0;
76
+ const marked = status === void 0 && mark !== void 0 && mark !== null;
77
+ const framed = status !== void 0 || marked;
78
+ const corner = status !== void 0 ? AVATAR_STATUS_LABELS[status] : marked ? markLabel : void 0;
75
79
  const label = name ? `${name} avatar` : "Avatar";
76
- const spoken = framed ? `${label}, ${AVATAR_STATUS_LABELS[status]}` : label;
80
+ const spoken = corner ? `${label}, ${corner}` : label;
77
81
  const classes = cx(
78
82
  "crewlet-avatar",
79
83
  `crewlet-avatar--${kind}`,
@@ -117,7 +121,7 @@ var Avatar = ({
117
121
  className: cx(classes, "crewlet-avatar--image"),
118
122
  style: faceStyle,
119
123
  src,
120
- alt: decorative ? "" : framed ? `${name ?? ""}, ${AVATAR_STATUS_LABELS[status]}` : name ?? "",
124
+ alt: decorative ? "" : corner ? `${name ?? ""}, ${corner}` : name ?? "",
121
125
  "aria-hidden": decorative ? true : void 0,
122
126
  onError: () => setImageFailed(true)
123
127
  }
@@ -151,7 +155,7 @@ var Avatar = ({
151
155
  style: { "--crewlet-avatar-size": `${pixels}px`, ...style },
152
156
  children: [
153
157
  face,
154
- /* @__PURE__ */ jsx("span", { className: `crewlet-avatar__status crewlet-avatar__status--${status}`, "aria-hidden": "true", children: STATUS_GLYPHS[status] })
158
+ status !== void 0 ? /* @__PURE__ */ jsx("span", { className: `crewlet-avatar__status crewlet-avatar__status--${status}`, "aria-hidden": "true", children: STATUS_GLYPHS[status] }) : /* @__PURE__ */ jsx("span", { className: "crewlet-avatar__status crewlet-avatar__status--mark", "aria-hidden": "true", children: mark })
155
159
  ]
156
160
  }
157
161
  );
@@ -1,5 +1,5 @@
1
1
  import { useRoving, tabStop } from './chunk-CBOICT64.js';
2
- import { Avatar } from './chunk-FY4SP3HF.js';
2
+ import { Avatar } from './chunk-5OM447RW.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import { CREWLET_CHARACTERS, CREWLET_CHARACTER_GEOMETRY } from '@crewlethq/icons/characters';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- import { Avatar } from './chunk-FY4SP3HF.js';
1
+ import { Avatar } from './chunk-5OM447RW.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './OrgLabel-R5KY7C3W.css';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,8 +1,8 @@
1
1
  import { HuePicker } from './chunk-NXDEPUVG.js';
2
2
  import { NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
3
3
  import { Popover } from './chunk-BWRGFKJP.js';
4
- import { CharacterPicker } from './chunk-DZ2YR6MV.js';
5
- import { Avatar } from './chunk-FY4SP3HF.js';
4
+ import { CharacterPicker } from './chunk-5PSXBL73.js';
5
+ import { Avatar } from './chunk-5OM447RW.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './AvatarPicker-PREY36MG.css';
8
8
  import { CREWLET_CHARACTER_GEOMETRY, CREWLET_CHARACTERS } from '@crewlethq/icons/characters';
@@ -1,6 +1,6 @@
1
1
  import { TreeGrid } from './chunk-B2Z2CDM5.js';
2
2
  import { createTreeModel, treeParent } from './chunk-MY374UUD.js';
3
- import { OrgLabel } from './chunk-6DQWF5Y4.js';
3
+ import { OrgLabel } from './chunk-AKEZ3G5V.js';
4
4
  import { AddPill } from './chunk-TROLVEZY.js';
5
5
  import { IconButton } from './chunk-4FQT6ZAY.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- import { OrgLabel } from './chunk-6DQWF5Y4.js';
1
+ import { OrgLabel } from './chunk-AKEZ3G5V.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './OrgNode-TCHJH5FO.css';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
- import { AVATAR_SIZES, Avatar } from './chunk-FY4SP3HF.js';
1
+ import { AVATAR_SIZES, Avatar } from './chunk-5OM447RW.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './Avatar-MBUPR5E5.css';
3
+ import './Avatar-3C2H2WA4.css';
4
4
  import './AvatarStack-GEJBNV7E.css';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
2
2
  import { PageHeader } from './chunk-HOXGBLEY.js';
3
3
  import { Toolbar } from './chunk-PGRPNDWM.js';
4
- import { DataTable } from './chunk-EIOTVNYX.js';
4
+ import { DataTable } from './chunk-RF5O4FYL.js';
5
5
  import { Menu } from './chunk-NS7BVLL3.js';
6
6
  import { DateTimePicker } from './chunk-2UU5IGZI.js';
7
7
  import { useListbox, useOptionKeys } from './chunk-F73MC7EZ.js';
@@ -1,4 +1,4 @@
1
- import { avatarCorner, Avatar } from './chunk-FY4SP3HF.js';
1
+ import { avatarCorner, Avatar } from './chunk-5OM447RW.js';
2
2
  import './ImageUpload-NVGMN7DP.css';
3
3
  import { useRef } from 'react';
4
4
  import { CameraGlyph, XGlyph } from '@crewlethq/icons/glyphs';
@@ -9,8 +9,8 @@ export { applyDensity, applyStoredPreferences, applyTheme, resolveTheme, useDens
9
9
  export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-JF7X673Z.js';
10
10
  export { Timeline, TimelineItem } from '../chunk-O67VF5MS.js';
11
11
  export { ToastProvider, Toaster, useToast } from '../chunk-QH3AKP2N.js';
12
- export { Switch } from '../chunk-A722MUNR.js';
13
12
  export { Switcher } from '../chunk-FA2V2VT6.js';
13
+ export { Switch } from '../chunk-A722MUNR.js';
14
14
  export { Table } from '../chunk-V2N3BMOT.js';
15
15
  export { TagGroup } from '../chunk-E6UWRXNM.js';
16
16
  export { TagsInput } from '../chunk-JCO3SIST.js';
@@ -29,11 +29,11 @@ export { SearchTrigger } from '../chunk-6DRDCT22.js';
29
29
  export { Section } from '../chunk-A2UXBCLO.js';
30
30
  export { SegmentedMeter, segmentedMeterLabel } from '../chunk-4AK52VHB.js';
31
31
  export { FactLine, ObjectHeader, SetByLine } from '../chunk-I7WXZOWA.js';
32
- export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-CGNQPGJL.js';
33
- export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-OFMPIRGD.js';
32
+ export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-L4ZLXYPO.js';
34
33
  export { TreeGrid } from '../chunk-B2Z2CDM5.js';
35
34
  export { SIZE_EPSILON, TYPE_AHEAD_RESET_MS, createTreeModel, isTypeAheadKey, layoutConnectors, layoutForest, placeGroups, treeAllExpandable, treeAncestors, treeCollapseOrAscend, treeExpandOrDescend, treeExpandTo, treeExpandable, treeFirst, treeFirstChild, treeItemAction, treeLast, treeLevel, treeNext, treeParent, treePosInSet, treePrevious, treeSetSize, treeStep, treeTypeAhead, treeVisible, typeAheadBuffer, useLayoutAnchor, useMeasuredSizes, useTreeState } from '../chunk-MY374UUD.js';
36
- export { OrgLabel } from '../chunk-6DQWF5Y4.js';
35
+ export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-TBMDMXEX.js';
36
+ export { OrgLabel } from '../chunk-AKEZ3G5V.js';
37
37
  export { Outline, scrollToHeading, useActiveHeading } from '../chunk-A5YKNRG6.js';
38
38
  export { PricingCard } from '../chunk-UCYIRDND.js';
39
39
  export { Tag } from '../chunk-LOECRMHA.js';
@@ -54,25 +54,25 @@ export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from '../chunk-5YL
54
54
  export { useFullscreen } from '../chunk-XDTYBF2F.js';
55
55
  export { Highlight, highlightRanges, highlightTerms } from '../chunk-H6VKCIWV.js';
56
56
  import '../chunk-EXHQ2QVW.js';
57
- export { ImageUpload } from '../chunk-KLESCRTS.js';
57
+ export { ImageUpload } from '../chunk-YDBC4DNW.js';
58
58
  export { DIFF_LIST_LABELS, DiffList } from '../chunk-LFHCXZO5.js';
59
59
  export { Disclosure } from '../chunk-S4RCG44T.js';
60
60
  export { Document, DocumentTitle } from '../chunk-WI6K5M5X.js';
61
61
  export { DownloadButton } from '../chunk-BJCFNRGH.js';
62
62
  export { downloadText, safeFilename, useDownload } from '../chunk-F6NZOVWL.js';
63
63
  export { EmptyState } from '../chunk-RA2ULG6H.js';
64
- export { EntityChip } from '../chunk-CKB3OHL3.js';
64
+ export { EntityChip } from '../chunk-4KWOKX2B.js';
65
65
  export { ErrorBoundary } from '../chunk-XX2VQE55.js';
66
- export { CommandPalette } from '../chunk-PQ63NLFC.js';
66
+ export { ConfirmField, confirmMatches } from '../chunk-CXBAIVYZ.js';
67
+ export { InlineCode } from '../chunk-5CLW2CXT.js';
67
68
  export { Container } from '../chunk-QVE4GJAT.js';
68
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-5EFRWWGX.js';
69
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-XU4H6JQB.js';
69
70
  export { RelativeTime, currentNow, formatElapsed, formatExact, formatRelative, formatUntil, toISO, toInstant, useNow } from '../chunk-3CZ7XAVY.js';
70
71
  export { PageHeader } from '../chunk-HOXGBLEY.js';
71
72
  export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-PGRPNDWM.js';
72
- export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-EIOTVNYX.js';
73
+ export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-RF5O4FYL.js';
73
74
  export { Menu } from '../chunk-NS7BVLL3.js';
74
75
  export { EMPTY_VALUE, EmptyValue } from '../chunk-EUCC37WY.js';
75
- export { ConfirmModal, Modal } from '../chunk-DEEVA6TV.js';
76
76
  export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-2UU5IGZI.js';
77
77
  export { DescriptionList, DescriptionListItem } from '../chunk-F2XSYBKH.js';
78
78
  export { ActivityStrip, BarList, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, niceScale, useChartHover } from '../chunk-MLT2HBPN.js';
@@ -84,9 +84,9 @@ export { CopyButton, Copyable } from '../chunk-W46LPU4R.js';
84
84
  export { useClipboard, writeClipboard } from '../chunk-STJ7QBC3.js';
85
85
  export { useOutcome } from '../chunk-DTIW4CHZ.js';
86
86
  export { Combobox } from '../chunk-ZFH7H7GS.js';
87
+ export { CommandPalette } from '../chunk-PQ63NLFC.js';
88
+ export { ConfirmModal, Modal } from '../chunk-DEEVA6TV.js';
87
89
  export { HIGHLIGHT_REST_MS, TYPE_AHEAD_WINDOW, useHighlightRest, useListbox, useOptionKeys } from '../chunk-F73MC7EZ.js';
88
- export { ConfirmField, confirmMatches } from '../chunk-CXBAIVYZ.js';
89
- export { InlineCode } from '../chunk-5CLW2CXT.js';
90
90
  export { COMPOSER_COUNTER_AT, Composer } from '../chunk-6NIMZ5XC.js';
91
91
  export { Kbd, isApplePlatform, keyGlyph } from '../chunk-SMBKXWML.js';
92
92
  export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-4GB57WIT.js';
@@ -110,18 +110,18 @@ export { BrandLockup } from '../chunk-7KBNFFM3.js';
110
110
  export { Card } from '../chunk-EG6NYWVK.js';
111
111
  export { useCardHeaderSlot } from '../chunk-AV2DXAEL.js';
112
112
  export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from '../chunk-PQADV6P6.js';
113
- export { AvatarStack, avatarStackLabel } from '../chunk-UAMDRJD6.js';
114
- export { AvatarPicker } from '../chunk-FAEN3HYI.js';
113
+ export { AvatarStack, avatarStackLabel } from '../chunk-UAN5NE7M.js';
114
+ export { AvatarPicker } from '../chunk-HENOTGUV.js';
115
115
  export { HuePicker } from '../chunk-NXDEPUVG.js';
116
116
  export { NODE_HUES, NODE_HUE_NAMES, isNodeHue } from '../chunk-AYKXMIOR.js';
117
117
  export { SegmentedControl } from '../chunk-26PEPONN.js';
118
118
  export { TabPanel, Tabs, tabId } from '../chunk-4LDTQWS7.js';
119
119
  export { Popover } from '../chunk-BWRGFKJP.js';
120
- export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-DZ2YR6MV.js';
120
+ export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-5PSXBL73.js';
121
121
  import '../chunk-CBOICT64.js';
122
122
  export { LAYER_GAP, LAYER_REPOSITION_EVENT, LayerHost, outsideBounds, placePopup, useLayerContainer, viewportBounds } from '../chunk-HMPFGIWM.js';
123
123
  export { focusables, isComposing, isModalLayerOpen, layerCount, useBodyScrollLock, useModalLayer, usePopupLayer } from '../chunk-R25RGPUB.js';
124
124
  export { Count } from '../chunk-BHHIIK3M.js';
125
125
  export { VisuallyHidden } from '../chunk-BZFWDIV6.js';
126
- export { AVATAR_CHARACTER_FULL_DETAIL, AVATAR_CORNER_RATIO, AVATAR_SIZES, AVATAR_STATUSES, AVATAR_STATUS_LABELS, Avatar, avatarCorner, avatarInitialsName, avatarPixels, avatarTint, getInitials } from '../chunk-FY4SP3HF.js';
126
+ export { AVATAR_CHARACTER_FULL_DETAIL, AVATAR_CORNER_RATIO, AVATAR_SIZES, AVATAR_STATUSES, AVATAR_STATUS_LABELS, Avatar, avatarCorner, avatarInitialsName, avatarPixels, avatarTint, getInitials } from '../chunk-5OM447RW.js';
127
127
  export { cx } from '../chunk-ODEQTPFM.js';
package/dist/index.js CHANGED
@@ -9,8 +9,8 @@ export { applyDensity, applyStoredPreferences, applyTheme, resolveTheme, useDens
9
9
  export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from './chunk-JF7X673Z.js';
10
10
  export { Timeline, TimelineItem } from './chunk-O67VF5MS.js';
11
11
  export { ToastProvider, Toaster, useToast } from './chunk-QH3AKP2N.js';
12
- export { Switch } from './chunk-A722MUNR.js';
13
12
  export { Switcher } from './chunk-FA2V2VT6.js';
13
+ export { Switch } from './chunk-A722MUNR.js';
14
14
  export { Table } from './chunk-V2N3BMOT.js';
15
15
  export { TagGroup } from './chunk-E6UWRXNM.js';
16
16
  export { TagsInput } from './chunk-JCO3SIST.js';
@@ -29,11 +29,11 @@ export { SearchTrigger } from './chunk-6DRDCT22.js';
29
29
  export { Section } from './chunk-A2UXBCLO.js';
30
30
  export { SegmentedMeter, segmentedMeterLabel } from './chunk-4AK52VHB.js';
31
31
  export { FactLine, ObjectHeader, SetByLine } from './chunk-I7WXZOWA.js';
32
- export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from './chunk-CGNQPGJL.js';
33
- export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from './chunk-OFMPIRGD.js';
32
+ export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from './chunk-L4ZLXYPO.js';
34
33
  export { TreeGrid } from './chunk-B2Z2CDM5.js';
35
34
  export { SIZE_EPSILON, TYPE_AHEAD_RESET_MS, createTreeModel, isTypeAheadKey, layoutConnectors, layoutForest, placeGroups, treeAllExpandable, treeAncestors, treeCollapseOrAscend, treeExpandOrDescend, treeExpandTo, treeExpandable, treeFirst, treeFirstChild, treeItemAction, treeLast, treeLevel, treeNext, treeParent, treePosInSet, treePrevious, treeSetSize, treeStep, treeTypeAhead, treeVisible, typeAheadBuffer, useLayoutAnchor, useMeasuredSizes, useTreeState } from './chunk-MY374UUD.js';
36
- export { OrgLabel } from './chunk-6DQWF5Y4.js';
35
+ export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from './chunk-TBMDMXEX.js';
36
+ export { OrgLabel } from './chunk-AKEZ3G5V.js';
37
37
  export { Outline, scrollToHeading, useActiveHeading } from './chunk-A5YKNRG6.js';
38
38
  export { PricingCard } from './chunk-UCYIRDND.js';
39
39
  export { Tag } from './chunk-LOECRMHA.js';
@@ -54,25 +54,25 @@ export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from './chunk-5YLO
54
54
  export { useFullscreen } from './chunk-XDTYBF2F.js';
55
55
  export { Highlight, highlightRanges, highlightTerms } from './chunk-H6VKCIWV.js';
56
56
  import './chunk-EXHQ2QVW.js';
57
- export { ImageUpload } from './chunk-KLESCRTS.js';
57
+ export { ImageUpload } from './chunk-YDBC4DNW.js';
58
58
  export { DIFF_LIST_LABELS, DiffList } from './chunk-LFHCXZO5.js';
59
59
  export { Disclosure } from './chunk-S4RCG44T.js';
60
60
  export { Document, DocumentTitle } from './chunk-WI6K5M5X.js';
61
61
  export { DownloadButton } from './chunk-BJCFNRGH.js';
62
62
  export { downloadText, safeFilename, useDownload } from './chunk-F6NZOVWL.js';
63
63
  export { EmptyState } from './chunk-RA2ULG6H.js';
64
- export { EntityChip } from './chunk-CKB3OHL3.js';
64
+ export { EntityChip } from './chunk-4KWOKX2B.js';
65
65
  export { ErrorBoundary } from './chunk-XX2VQE55.js';
66
- export { CommandPalette } from './chunk-PQ63NLFC.js';
66
+ export { ConfirmField, confirmMatches } from './chunk-CXBAIVYZ.js';
67
+ export { InlineCode } from './chunk-5CLW2CXT.js';
67
68
  export { Container } from './chunk-QVE4GJAT.js';
68
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from './chunk-5EFRWWGX.js';
69
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from './chunk-XU4H6JQB.js';
69
70
  export { RelativeTime, currentNow, formatElapsed, formatExact, formatRelative, formatUntil, toISO, toInstant, useNow } from './chunk-3CZ7XAVY.js';
70
71
  export { PageHeader } from './chunk-HOXGBLEY.js';
71
72
  export { Toolbar, ToolbarOverflow, ToolbarWide } from './chunk-PGRPNDWM.js';
72
- export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from './chunk-EIOTVNYX.js';
73
+ export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from './chunk-RF5O4FYL.js';
73
74
  export { Menu } from './chunk-NS7BVLL3.js';
74
75
  export { EMPTY_VALUE, EmptyValue } from './chunk-EUCC37WY.js';
75
- export { ConfirmModal, Modal } from './chunk-DEEVA6TV.js';
76
76
  export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from './chunk-2UU5IGZI.js';
77
77
  export { DescriptionList, DescriptionListItem } from './chunk-F2XSYBKH.js';
78
78
  export { ActivityStrip, BarList, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, niceScale, useChartHover } from './chunk-MLT2HBPN.js';
@@ -84,9 +84,9 @@ export { CopyButton, Copyable } from './chunk-W46LPU4R.js';
84
84
  export { useClipboard, writeClipboard } from './chunk-STJ7QBC3.js';
85
85
  export { useOutcome } from './chunk-DTIW4CHZ.js';
86
86
  export { Combobox } from './chunk-ZFH7H7GS.js';
87
+ export { CommandPalette } from './chunk-PQ63NLFC.js';
88
+ export { ConfirmModal, Modal } from './chunk-DEEVA6TV.js';
87
89
  export { HIGHLIGHT_REST_MS, TYPE_AHEAD_WINDOW, useHighlightRest, useListbox, useOptionKeys } from './chunk-F73MC7EZ.js';
88
- export { ConfirmField, confirmMatches } from './chunk-CXBAIVYZ.js';
89
- export { InlineCode } from './chunk-5CLW2CXT.js';
90
90
  export { COMPOSER_COUNTER_AT, Composer } from './chunk-6NIMZ5XC.js';
91
91
  export { Kbd, isApplePlatform, keyGlyph } from './chunk-SMBKXWML.js';
92
92
  export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from './chunk-4GB57WIT.js';
@@ -110,18 +110,18 @@ export { BrandLockup } from './chunk-7KBNFFM3.js';
110
110
  export { Card } from './chunk-EG6NYWVK.js';
111
111
  export { useCardHeaderSlot } from './chunk-AV2DXAEL.js';
112
112
  export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from './chunk-PQADV6P6.js';
113
- export { AvatarStack, avatarStackLabel } from './chunk-UAMDRJD6.js';
114
- export { AvatarPicker } from './chunk-FAEN3HYI.js';
113
+ export { AvatarStack, avatarStackLabel } from './chunk-UAN5NE7M.js';
114
+ export { AvatarPicker } from './chunk-HENOTGUV.js';
115
115
  export { HuePicker } from './chunk-NXDEPUVG.js';
116
116
  export { NODE_HUES, NODE_HUE_NAMES, isNodeHue } from './chunk-AYKXMIOR.js';
117
117
  export { SegmentedControl } from './chunk-26PEPONN.js';
118
118
  export { TabPanel, Tabs, tabId } from './chunk-4LDTQWS7.js';
119
119
  export { Popover } from './chunk-BWRGFKJP.js';
120
- export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from './chunk-DZ2YR6MV.js';
120
+ export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from './chunk-5PSXBL73.js';
121
121
  import './chunk-CBOICT64.js';
122
122
  export { LAYER_GAP, LAYER_REPOSITION_EVENT, LayerHost, outsideBounds, placePopup, useLayerContainer, viewportBounds } from './chunk-HMPFGIWM.js';
123
123
  export { focusables, isComposing, isModalLayerOpen, layerCount, useBodyScrollLock, useModalLayer, usePopupLayer } from './chunk-R25RGPUB.js';
124
124
  export { Count } from './chunk-BHHIIK3M.js';
125
125
  export { VisuallyHidden } from './chunk-BZFWDIV6.js';
126
- export { AVATAR_CHARACTER_FULL_DETAIL, AVATAR_CORNER_RATIO, AVATAR_SIZES, AVATAR_STATUSES, AVATAR_STATUS_LABELS, Avatar, avatarCorner, avatarInitialsName, avatarPixels, avatarTint, getInitials } from './chunk-FY4SP3HF.js';
126
+ export { AVATAR_CHARACTER_FULL_DETAIL, AVATAR_CORNER_RATIO, AVATAR_SIZES, AVATAR_STATUSES, AVATAR_STATUS_LABELS, Avatar, avatarCorner, avatarInitialsName, avatarPixels, avatarTint, getInitials } from './chunk-5OM447RW.js';
127
127
  export { cx } from './chunk-ODEQTPFM.js';
package/dist/styles.css CHANGED
@@ -1313,7 +1313,7 @@ a.crewlet-account-row__who:focus-visible {
1313
1313
  }
1314
1314
 
1315
1315
 
1316
- /* Avatar-MBUPR5E5.css */
1316
+ /* Avatar-3C2H2WA4.css */
1317
1317
  /*
1318
1318
  * The identity badge.
1319
1319
  *
@@ -1656,6 +1656,21 @@ a.crewlet-account-row__who:focus-visible {
1656
1656
  background: var(--color-feedback-danger);
1657
1657
  }
1658
1658
 
1659
+ /*
1660
+ * A MARK (`mark`): how a principal is present, not a state, so it is drawn
1661
+ * quiet rather than in a state's fill: the neutral badge's raised rung, its
1662
+ * strong hairline and its secondary ink. The hairline is the corner's own
1663
+ * outline, inset by its width, so it keeps the corner's size and survives
1664
+ * forced colours.
1665
+ */
1666
+ .crewlet-avatar__status--mark {
1667
+ padding: 1px;
1668
+ background: var(--color-surface-elevated);
1669
+ outline-color: var(--color-border-strong);
1670
+ outline-offset: -1px;
1671
+ color: var(--color-text-secondary);
1672
+ }
1673
+
1659
1674
 
1660
1675
  /* AvatarPicker-PREY36MG.css */
1661
1676
  /*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "Crewlet shared React components built on @crewlethq/tokens and @crewlethq/icons.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -42,8 +42,8 @@
42
42
  "clean": "rm -rf dist src/generated"
43
43
  },
44
44
  "dependencies": {
45
- "@crewlethq/icons": "0.16.0",
46
- "@crewlethq/tokens": "0.16.0",
45
+ "@crewlethq/icons": "0.17.0",
46
+ "@crewlethq/tokens": "0.17.0",
47
47
  "uqr": "0.1.3"
48
48
  },
49
49
  "peerDependencies": {
@@ -1,8 +1,8 @@
1
1
  import { Menu } from './chunk-NS7BVLL3.js';
2
2
  import { EmptyValue } from './chunk-EUCC37WY.js';
3
- import { Modal } from './chunk-DEEVA6TV.js';
4
3
  import { Checkbox } from './chunk-75CLJNDQ.js';
5
4
  import { useClipboard } from './chunk-STJ7QBC3.js';
5
+ import { Modal } from './chunk-DEEVA6TV.js';
6
6
  import { Button } from './chunk-OG6CL3EB.js';
7
7
  import { IconButton } from './chunk-4FQT6ZAY.js';
8
8
  import { useCardHeaderSlot } from './chunk-AV2DXAEL.js';