@crewlethq/ui 0.8.1 → 0.10.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 +27 -2
- package/dist/Avatar/Avatar.d.ts +67 -15
- package/dist/Avatar/AvatarStack.d.ts +7 -3
- package/dist/Avatar/index.d.ts +2 -2
- package/dist/Avatar/index.js +2 -1
- package/dist/Avatar-QHYOFID3.css +322 -0
- package/dist/CharacterPicker/CharacterPicker.d.ts +38 -0
- package/dist/CharacterPicker/index.d.ts +3 -0
- package/dist/CharacterPicker/index.js +4 -0
- package/dist/CharacterPicker-ZEYIKUNQ.css +42 -0
- package/dist/CommandPalette/index.js +2 -2
- package/dist/DataTable/index.js +2 -2
- package/dist/DataView/index.js +6 -6
- package/dist/EntityChip/index.js +3 -2
- package/dist/HuePicker/HuePicker.d.ts +26 -0
- package/dist/HuePicker/index.d.ts +3 -0
- package/dist/HuePicker/index.js +8 -0
- package/dist/HuePicker-5QIUR6L7.css +18 -0
- package/dist/ImageUpload/index.js +3 -2
- package/dist/ListInput/index.js +2 -2
- package/dist/OrgLabel/index.js +3 -2
- package/dist/OrgNode/index.js +4 -3
- package/dist/OrgTable/index.js +4 -3
- package/dist/SegmentedControl/index.js +4 -2
- package/dist/Tabs/index.js +2 -1
- package/dist/Tabs/roving.d.ts +9 -1
- package/dist/TagsInput/index.js +2 -2
- package/dist/ThemeSwitcher/index.js +5 -3
- package/dist/TimeWindowPicker/index.js +3 -3
- package/dist/TreeCanvas/TreeCanvas.d.ts +5 -13
- package/dist/chunk-26TXVHN2.js +31 -0
- package/dist/chunk-3UK4VFSK.js +67 -0
- package/dist/{chunk-B47YUQGM.js → chunk-6OF2DBKY.js} +1 -1
- package/dist/{chunk-6SIG5I72.js → chunk-7FFDJQ23.js} +1 -1
- package/dist/chunk-AYKXMIOR.js +13 -0
- package/dist/chunk-CBOICT64.js +74 -0
- package/dist/{chunk-WSOFKOLP.js → chunk-DDTDN5L2.js} +1 -1
- package/dist/{chunk-A3K56LY6.js → chunk-EUT7VBQG.js} +4 -4
- package/dist/{chunk-DRHXRGB6.js → chunk-HEOVQZL7.js} +3 -62
- package/dist/chunk-HI6Q2UXQ.js +169 -0
- package/dist/{chunk-VCOELPCT.js → chunk-IHGKPEEV.js} +1 -1
- package/dist/{chunk-W4GQWFRX.js → chunk-LAQK4V3Z.js} +1 -1
- package/dist/{chunk-N5KCGFWI.js → chunk-LPHHDCN3.js} +2 -3
- package/dist/chunk-UI6HWAWE.js +2 -0
- package/dist/chunk-UO5UK7V2.js +73 -0
- package/dist/{chunk-RHHGLTXJ.js → chunk-X6K6OZ47.js} +1 -1
- package/dist/generated/index.d.ts +2 -0
- package/dist/generated/index.js +38 -32
- package/dist/index.js +38 -32
- package/dist/styles.css +223 -35
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +2 -1
- package/dist/utils/nodeHue.d.ts +25 -0
- package/dist/utils/tone.d.ts +4 -1
- package/package.json +3 -3
- package/dist/Avatar-XID7Z74C.css +0 -200
- package/dist/chunk-IA232OTU.js +0 -156
- package/dist/{chunk-4JHWMJZI.js → chunk-6HXH57BL.js} +1 -1
- package/dist/{chunk-IJ7QXNIJ.js → chunk-AER7UDD4.js} +0 -0
- package/dist/{chunk-KTIEJ5Q5.js → chunk-CVB7O3SZ.js} +1 -1
- package/dist/{chunk-BXPLX7YU.js → chunk-IGWPZZIB.js} +1 -1
- package/dist/{chunk-HVPC2GHY.js → chunk-IZHN5I3H.js} +1 -1
- package/dist/{chunk-DBUGBINU.js → chunk-MPXI6FM6.js} +1 -1
- /package/dist/{chunk-PKIN4IMB.js → chunk-YPTC4TX5.js} +0 -0
package/README.md
CHANGED
|
@@ -42,13 +42,13 @@ import { Button } from '@crewlethq/ui/Button'; // 8 KB of CSS, not 182 KB
|
|
|
42
42
|
| ---- | ---------- |
|
|
43
43
|
| Actions | `Button` and `ButtonLink` (variants `primary`, `secondary`, `outline`, `ghost`, `accent`, `danger`; sizes `small`, `medium`, `large`; shapes `square`, `pill`), `IconButton`, `Menu`, `Link`, `Copyable`, `CopyButton`, `Kbd` |
|
|
44
44
|
| Content and text | `Text` (the eight registers), `Prose`, `InlineCode`, `List` and `ListItem`, `DescriptionList`, `Timeline`, `RelativeTime` |
|
|
45
|
-
| Forms | `Input`, `Textarea`, `Label`, `FormField`, `FormRow`, `Checkbox`, `Select`, `Tag`, `TagsInput`, `DateTimePicker`, `TimeWindowPicker`, `ImageUpload` |
|
|
45
|
+
| Forms | `Input`, `Textarea`, `Label`, `FormField`, `FormRow`, `Checkbox`, `Select`, `Tag`, `TagsInput`, `DateTimePicker`, `TimeWindowPicker`, `ImageUpload`, `CharacterPicker`, `HuePicker` |
|
|
46
46
|
| Data display | `DataTable`, `CopyableCell`, `Table`, `StatCard`, `Meter`, `SegmentedMeter`, `Stepper`, `PricingCard`, `Avatar`, `AvatarStack`, `EntityChip`, `CodeBlock`, `Skeleton`, `Eyebrow` |
|
|
47
47
|
| List screens | `DataView`, and its parts on their own: `DataViewToolbar`, `FilterAxisBar`, `FilterAxisChip`, plus the filter model (`filterDefsFromColumns`, `applyColumnFilters`, `filterPredicate`, `blankFilterValue`) |
|
|
48
48
|
| Feedback and overlays | `Callout`, `Toaster`, `Modal` (with `variant="sheet"`), `ConfirmModal`, `CommandPalette`, `Tooltip`, `Popover`, `Announcer` |
|
|
49
49
|
| Charts | `Legend`, `BarList`, `StackedBar`, `StackedColumns`, `ActivityStrip`, `TimeSeries`, `Sparkline`, the reading layer they share (`ChartTooltip`, `useChartHover`), and the ramp (`DATA_COLORS`, `DATA_COLOR_OTHER`, `dataColor`) |
|
|
50
50
|
| Marks | `Count`, `StatusDot`, `EmptyValue`, `VisuallyHidden` |
|
|
51
|
-
| Hooks and seams | `useModalLayer`, `usePopupLayer`, `LayerHost`, `useListbox`, `useOptionKeys`, `useClipboard`, `useAnnouncer`, `useNow`, `formatRelative`, `HeadingLevelProvider`, `cx` |
|
|
51
|
+
| Hooks and seams | `useModalLayer`, `usePopupLayer`, `LayerHost`, `useListbox`, `useOptionKeys`, `useClipboard`, `useAnnouncer`, `useNow`, `formatRelative`, `HeadingLevelProvider`, `cx`, the node hues (`NODE_HUES`, `NODE_HUE_NAMES`, `isNodeHue`) |
|
|
52
52
|
| Layout | `Container`, `Section`, `Card`, `Tabs`, `Accordion`, `Disclosure` |
|
|
53
53
|
| Application shell | `AppShell` with `AppShell.Rail`, `AppShell.Topbar` and `useAppShell`, `SidebarNav` and `NavItem`, `BrandLockup`, `SearchTrigger`, `PageHeader`, `Toolbar`, `Stack`, `Inline`, `Spacer`, `AutoGrid`, `ErrorBoundary`, `useShortcut`, `useFullscreen` |
|
|
54
54
|
| Preferences | `ThemeToggle`, `ThemeSwitcher`, `DensitySwitcher`, `useThemePreference`, `useDensityPreference`, `useSystemTheme`, `resolveTheme`, `applyStoredPreferences` |
|
|
@@ -191,6 +191,31 @@ places:
|
|
|
191
191
|
- A surface that pans or zooms dispatches `LAYER_REPOSITION_EVENT` on its host
|
|
192
192
|
when the content beneath it moves, and every panel anchored inside follows.
|
|
193
193
|
|
|
194
|
+
## Breaking changes in 0.10.0
|
|
195
|
+
|
|
196
|
+
0.10.0 moves an agent's state off the ring round its badge and onto a small badge on its corner.
|
|
197
|
+
|
|
198
|
+
**A state is a status, never a ring.** `Avatar` takes `status`: `working`, `needs` (waiting on a person) or `stopped`, and none for idle. It draws a round badge on the lower-right corner, the state's fill carrying a glyph whose shape says it (play, a question mark, a square) in `--color-text-inverse`, which the tokens' palette suite now holds at 3:1 on each fill (`MARK_ON_FILL`). The badge sits in a notch cut out of the face with a mask, so it reads on any ground without knowing its colour. A badge with a status is drawn inside a `.crewlet-avatar-frame` of the face's own size, which takes your `className` and `style`; a badge that names itself appends the state to its accessible name (`Software Engineer avatar, stopped`), and a decorative one says nothing, so say the state in words beside it. `AVATAR_STATUSES` and `AVATAR_STATUS_LABELS` list the statuses and their words. A ring of a state's hue round a plate in the agent's own hue put two colours on one small mark, and framed what the agent was doing louder than who it is.
|
|
199
|
+
|
|
200
|
+
| Was | Is |
|
|
201
|
+
|---|---|
|
|
202
|
+
| `<Avatar ring="info">`, `ring="warning"`, `ring="danger"` for what a seat is doing | `status="working"`, `status="needs"`, `status="stopped"` |
|
|
203
|
+
| `<Avatar ring="success">` | no status; say a finished state in words beside the badge |
|
|
204
|
+
| `AvatarRing` naming `info`, `warning`, `danger` or `success` | `AvatarRing` is `'brand'` alone, the selected ring; a state is an `AvatarStatus` |
|
|
205
|
+
| an `AvatarStack` member's `ring` | nothing: each member overlaps the one before it, so a corner badge would be hidden; say what the members are doing beside the stack |
|
|
206
|
+
| a stylesheet of your own reading `.crewlet-avatar--ring-info`, `-warning`, `-danger` or `-success` | `.crewlet-avatar__status--working`, `--needs` or `--stopped` |
|
|
207
|
+
| a `ring="brand"` and a `status` on one badge | the status alone; the notch is cut from the outline the ring would follow, so a badge with a status draws no ring |
|
|
208
|
+
|
|
209
|
+
## Changes in 0.9.0
|
|
210
|
+
|
|
211
|
+
0.9.0 gives an agent a face of its own: one of the thirty Crewlet characters in `@crewlethq/icons/characters`, drawn in one of the six node hues an operator chooses for it.
|
|
212
|
+
|
|
213
|
+
**An agent's badge can be its character.** `Avatar` takes `character` and `hue`. An agent badge with a `character` draws that character, centred, on a plate of its hue (the hue's `-fill`, its `-line` round the badge and the hue itself as the ink), in place of its initials and of any image. A badge of `AVATAR_CHARACTER_FULL_DETAIL` (56px) and up draws the character's keyline and visor gap; a smaller one draws it compact, where a hairline would be a blur. A `human` badge ignores both and keeps its circle and initials, and what any badge says to a screen reader is unchanged. An `AvatarStack` member takes the same two fields, for a stack of agents drawn as themselves. What to change: nothing; a badge with neither prop draws as it did.
|
|
214
|
+
|
|
215
|
+
**The node hues are one exported set.** `NODE_HUES`, `NODE_HUE_NAMES`, `isNodeHue` and the `NodeHue` type name the six hues an entity is told apart by, where somebody chose one. `TreeCardTone` (and so `OrgTableTone`) is now `NodeHue`, so an agent's card, row and badge are drawn from one list. What to change: nothing; the six names are the same.
|
|
216
|
+
|
|
217
|
+
**Two pickers choose them.** `CharacterPicker` is a radio group of every character, laid out in rows of six (`CHARACTER_PICKER_COLUMNS`), each drawn as the badge it would make in the agent's hue; Left and Right walk the characters, Up and Down move a whole row, and the chosen badge carries the kit's selected ring. `HuePicker` is a `SegmentedControl` radio row of the six hues, each a swatch and the hue's name. Both take `disabled`, which keeps the choice shown and lets nothing in the group take focus or a press. Wrap either in `FormField as="fieldset"` for a labelled field.
|
|
218
|
+
|
|
194
219
|
## Changes in 0.7.0
|
|
195
220
|
|
|
196
221
|
0.7.0 draws the org surfaces (`TreeCanvas`'s `node` appearance, `OrgTable`,
|
package/dist/Avatar/Avatar.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { HTMLAttributes } from 'react';
|
|
2
|
-
import type
|
|
2
|
+
import { type CrewletCharacterId } from '@crewlethq/icons/characters';
|
|
3
|
+
import type { NodeHue } from '../utils/nodeHue.js';
|
|
3
4
|
/**
|
|
4
5
|
* WHAT THE BADGE STANDS FOR, drawn as its outline.
|
|
5
6
|
*
|
|
@@ -35,16 +36,37 @@ export type AvatarKind = 'agent' | 'human';
|
|
|
35
36
|
*/
|
|
36
37
|
export type AvatarTone = 'neutral' | 'seeded';
|
|
37
38
|
/**
|
|
38
|
-
* The
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* `
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* No ring at all is the resting state.
|
|
39
|
+
* The SELECTED ring: a 1.5px line 2px outside the badge, in the accent.
|
|
40
|
+
*
|
|
41
|
+
* It is the one ring there is. A ring used to carry a state too (`info`,
|
|
42
|
+
* `warning`, `danger`, `success`), and on a character plate that already
|
|
43
|
+
* wears its own hue it put a second colour round a 32px mark, framing what
|
|
44
|
+
* the agent was doing louder than who it is. A state is a [AvatarStatus]
|
|
45
|
+
* now, a small badge on the corner whose SHAPE says it.
|
|
46
46
|
*/
|
|
47
|
-
export type AvatarRing =
|
|
47
|
+
export type AvatarRing = 'brand';
|
|
48
|
+
/**
|
|
49
|
+
* WHAT AN AGENT IS DOING, drawn as a small round badge on the lower-right
|
|
50
|
+
* corner: `working`, `needs` (it is waiting on a person) or `stopped`. An idle
|
|
51
|
+
* badge carries none, because a mark that means "nothing is happening" is one
|
|
52
|
+
* a reader learns to skip.
|
|
53
|
+
*
|
|
54
|
+
* SHAPE FIRST, colour second. Each badge is a state's fill step carrying a
|
|
55
|
+
* glyph, play for working, a question for needs and a square for stopped, so
|
|
56
|
+
* it reads to somebody who cannot separate the hues and in forced-colors mode,
|
|
57
|
+
* where every fill is one system colour. The glyph is in the inverse ink,
|
|
58
|
+
* which the tokens' palette suite holds at 3:1 on each fill (`MARK_ON_FILL`).
|
|
59
|
+
*
|
|
60
|
+
* THE BADGE IS NOT THE ONLY CARRIER. A row that draws a badge with a status
|
|
61
|
+
* says the state in words as well; a badge drawn alone (a breadcrumb, a stack)
|
|
62
|
+
* is the case the glyph exists for. A badge that names itself appends the
|
|
63
|
+
* state to its accessible name.
|
|
64
|
+
*/
|
|
65
|
+
export type AvatarStatus = 'working' | 'needs' | 'stopped';
|
|
66
|
+
/** Every status, in the order a legend lists them. */
|
|
67
|
+
export declare const AVATAR_STATUSES: readonly ["working", "needs", "stopped"];
|
|
68
|
+
/** What each status is called in a sentence: the accessible name's last words. */
|
|
69
|
+
export declare const AVATAR_STATUS_LABELS: Readonly<Record<AvatarStatus, string>>;
|
|
48
70
|
/** The four steps, in px. A number is accepted for anything outside them. */
|
|
49
71
|
export declare const AVATAR_SIZES: {
|
|
50
72
|
readonly xs: 20;
|
|
@@ -79,8 +101,13 @@ export interface AvatarProps extends HTMLAttributes<HTMLElement> {
|
|
|
79
101
|
/** An agent (the default) is a squircle; a human is a circle. */
|
|
80
102
|
kind?: AvatarKind | undefined;
|
|
81
103
|
tone?: AvatarTone | undefined;
|
|
82
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* The selected ring, or none. Not drawn on a badge with a `status`: the
|
|
106
|
+
* corner badge is cut out of the outline the ring would follow.
|
|
107
|
+
*/
|
|
83
108
|
ring?: AvatarRing | undefined;
|
|
109
|
+
/** What the agent is doing, as a corner badge; none is idle. */
|
|
110
|
+
status?: AvatarStatus | undefined;
|
|
84
111
|
/**
|
|
85
112
|
* The name is already printed beside this badge, so the badge itself says
|
|
86
113
|
* nothing. Without it a row reads "Carlos Diaz avatar, Carlos Diaz".
|
|
@@ -91,7 +118,26 @@ export interface AvatarProps extends HTMLAttributes<HTMLElement> {
|
|
|
91
118
|
* outlives a rename, so the colour does too. Only read with `tone="seeded"`.
|
|
92
119
|
*/
|
|
93
120
|
colorSeed?: string | undefined;
|
|
121
|
+
/**
|
|
122
|
+
* The Crewlet character an AGENT is drawn as, in place of its initials and
|
|
123
|
+
* of any image. A person is never drawn as one: on a `human` badge this is
|
|
124
|
+
* ignored, and the circle and the initials stay.
|
|
125
|
+
*/
|
|
126
|
+
character?: CrewletCharacterId | undefined;
|
|
127
|
+
/**
|
|
128
|
+
* The hue the agent's character is drawn in, on a plate of the same hue.
|
|
129
|
+
* Read only with `character`; a character with no hue is drawn in the
|
|
130
|
+
* neutral badge's ink, on its plate.
|
|
131
|
+
*/
|
|
132
|
+
hue?: NodeHue | undefined;
|
|
94
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* The smallest badge, in px, a character is drawn at full detail: its keyline
|
|
136
|
+
* and its visor gap. Under it both are hairlines finer than a pixel, which a
|
|
137
|
+
* screen draws as a blur round the body, so the character is drawn compact
|
|
138
|
+
* (see `CrewletCharacterDetail`).
|
|
139
|
+
*/
|
|
140
|
+
export declare const AVATAR_CHARACTER_FULL_DETAIL = 56;
|
|
95
141
|
/**
|
|
96
142
|
* Two uppercase initials, or one where the name has only one letter to give.
|
|
97
143
|
*
|
|
@@ -139,11 +185,17 @@ export declare function avatarPixels(size: AvatarSize): number;
|
|
|
139
185
|
*/
|
|
140
186
|
export declare function avatarCorner(pixels: number): number;
|
|
141
187
|
/**
|
|
142
|
-
* An identity badge: an image, or the initials behind it.
|
|
188
|
+
* An identity badge: an agent's character, an image, or the initials behind it.
|
|
143
189
|
*
|
|
144
190
|
* If the image fails to load (a stale CDN URL, an expired signature) it
|
|
145
191
|
* degrades to the initials rather than to a broken-image glyph. Either way it
|
|
146
|
-
* keeps its kind's outline and its
|
|
147
|
-
* says nothing about what they are or what they are doing.
|
|
192
|
+
* keeps its kind's outline, its ring and its status: whether somebody has
|
|
193
|
+
* uploaded a photo says nothing about what they are or what they are doing.
|
|
194
|
+
*
|
|
195
|
+
* A BADGE WITH A STATUS IS FRAMED: the face (character, image or initials)
|
|
196
|
+
* stands in a box of its own size beside the corner badge, and the face has a
|
|
197
|
+
* notch cut where the badge sits, so the badge reads on any ground without
|
|
198
|
+
* knowing what colour that ground is. The frame takes the caller's class and
|
|
199
|
+
* style, which is where a layout reaches for the badge.
|
|
148
200
|
*/
|
|
149
|
-
export declare const Avatar: ({ src, name, size, kind, tone, ring, decorative, colorSeed, className, style, ...rest }: AvatarProps) => import("react").JSX.Element;
|
|
201
|
+
export declare const Avatar: ({ src, name, size, kind, tone, ring, status, decorative, colorSeed, character, hue, className, style, ...rest }: AvatarProps) => import("react").JSX.Element;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { HTMLAttributes } from 'react';
|
|
2
|
-
import
|
|
2
|
+
import type { CrewletCharacterId } from '@crewlethq/icons/characters';
|
|
3
|
+
import type { NodeHue } from '../utils/nodeHue.js';
|
|
4
|
+
import { type AvatarKind, type AvatarSizeStep } from './Avatar.js';
|
|
3
5
|
/** One badge in a stack. */
|
|
4
6
|
export interface AvatarStackMember {
|
|
5
7
|
/** Who: the initials, and a word of the stack's accessible name. */
|
|
@@ -7,8 +9,10 @@ export interface AvatarStackMember {
|
|
|
7
9
|
/** An agent (the default) is a squircle; a human is a circle. */
|
|
8
10
|
kind?: AvatarKind | undefined;
|
|
9
11
|
src?: string | undefined;
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
+
/** The Crewlet character an agent member is drawn as, as `Avatar` draws it. */
|
|
13
|
+
character?: CrewletCharacterId | undefined;
|
|
14
|
+
/** The hue an agent member's character is drawn in, as `Avatar` draws it. */
|
|
15
|
+
hue?: NodeHue | undefined;
|
|
12
16
|
/**
|
|
13
17
|
* What tells two members apart when their names do not (a seat's handle, a
|
|
14
18
|
* person's id), unique within the stack. The name is used when it is absent.
|
package/dist/Avatar/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './Avatar.css';
|
|
2
2
|
import './AvatarStack.css';
|
|
3
|
-
export { AVATAR_CORNER_RATIO, AVATAR_SIZES, Avatar, avatarCorner, avatarPixels, avatarTint, getInitials, } from './Avatar.js';
|
|
4
|
-
export type { AvatarKind, AvatarProps, AvatarRing, AvatarSize, AvatarSizeStep, AvatarTone } from './Avatar.js';
|
|
3
|
+
export { AVATAR_CHARACTER_FULL_DETAIL, AVATAR_CORNER_RATIO, AVATAR_SIZES, AVATAR_STATUS_LABELS, AVATAR_STATUSES, Avatar, avatarCorner, avatarPixels, avatarTint, getInitials, } from './Avatar.js';
|
|
4
|
+
export type { AvatarKind, AvatarProps, AvatarRing, AvatarSize, AvatarSizeStep, AvatarStatus, AvatarTone, } from './Avatar.js';
|
|
5
5
|
export { AvatarStack, avatarStackLabel } from './AvatarStack.js';
|
|
6
6
|
export type { AvatarStackMember, AvatarStackProps } from './AvatarStack.js';
|
package/dist/Avatar/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { AvatarStack, avatarStackLabel } from '../chunk-3UK4VFSK.js';
|
|
2
|
+
export { AVATAR_CHARACTER_FULL_DETAIL, AVATAR_CORNER_RATIO, AVATAR_SIZES, AVATAR_STATUSES, AVATAR_STATUS_LABELS, Avatar, avatarCorner, avatarPixels, avatarTint, getInitials } from '../chunk-HI6Q2UXQ.js';
|
|
2
3
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The identity badge.
|
|
3
|
+
*
|
|
4
|
+
* IT IS NEUTRAL UNLESS SOMEBODY CHOSE OTHERWISE, and a hash never chooses. The
|
|
5
|
+
* system this replaces coloured a seat by `PALETTE[hash(name) % 8]`, over the
|
|
6
|
+
* same eight families it also spent on phases and event categories, so one
|
|
7
|
+
* amber meant "the execute phase", "the decision category" and "the Analyst"
|
|
8
|
+
* at once. A hash of a name carries no information: rename the seat and its
|
|
9
|
+
* colour changes, which is the proof it never meant anything. Identity is the
|
|
10
|
+
* OUTLINE (a squircle for an agent, a circle for a person), the monogram and
|
|
11
|
+
* the name, and for an agent an operator gave one, its character and its hue.
|
|
12
|
+
*
|
|
13
|
+
* A STATE IS A CORNER BADGE, NEVER A LINE ROUND THE PLATE. A ring in a state's
|
|
14
|
+
* hue round a plate in the agent's own hue put two colours on a 32px mark and
|
|
15
|
+
* framed what the agent was doing louder than who it is. The one ring left is
|
|
16
|
+
* SELECTED, in the accent.
|
|
17
|
+
*
|
|
18
|
+
* The seeded tints stay for the one case that earns them, a roster somebody
|
|
19
|
+
* scans, and their grounds are TOKENS: measured under white initials and held
|
|
20
|
+
* at 4.5:1 by the palette suite. Spelled as literals, five of the ten sat
|
|
21
|
+
* under that floor while the suite measured ten values nothing painted with.
|
|
22
|
+
*
|
|
23
|
+
* AN AGENT'S OWN HUE IS NOT A HASH. An agent an operator gave a Crewlet
|
|
24
|
+
* character and a hue is drawn as that character, in that hue, on a plate of
|
|
25
|
+
* it: the hue was chosen for the seat and survives a rename, which a hash of
|
|
26
|
+
* the name never did. It is one of the six node hues (`NodeHue`), each a
|
|
27
|
+
* measured set of steps rather than a colour with alphas applied here.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
.crewlet-avatar {
|
|
31
|
+
--crewlet-avatar-size: 32px;
|
|
32
|
+
display: inline-flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
justify-content: center;
|
|
35
|
+
flex: none;
|
|
36
|
+
width: var(--crewlet-avatar-size);
|
|
37
|
+
height: var(--crewlet-avatar-size);
|
|
38
|
+
overflow: hidden;
|
|
39
|
+
object-fit: cover;
|
|
40
|
+
font-family: var(--font-family-sans);
|
|
41
|
+
font-size: var(--font-size-xs);
|
|
42
|
+
font-weight: var(--font-weight-semibold);
|
|
43
|
+
letter-spacing: var(--font-letter-spacing-wide);
|
|
44
|
+
/* The document's own leading rather than a tight step of the badge's own.
|
|
45
|
+
The box is a fixed square that centres whatever line it holds, so the ink
|
|
46
|
+
lands in the same place either way; what the tight step bought was one
|
|
47
|
+
more number in a component that already sets four. */
|
|
48
|
+
line-height: var(--font-line-height-body);
|
|
49
|
+
text-transform: uppercase;
|
|
50
|
+
user-select: none;
|
|
51
|
+
box-sizing: border-box;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/*
|
|
55
|
+
* The four steps. Each pairs its box with a type step, so two initials sit
|
|
56
|
+
* inside the outline at every one of them. A numeric size sets the same
|
|
57
|
+
* `--crewlet-avatar-size` inline and computes its own type, because nothing in
|
|
58
|
+
* the scale can answer for an arbitrary box; everything else it takes from the
|
|
59
|
+
* rules below exactly as a step does.
|
|
60
|
+
*/
|
|
61
|
+
.crewlet-avatar--xs {
|
|
62
|
+
--crewlet-avatar-size: 20px;
|
|
63
|
+
font-size: var(--font-size-2xs);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.crewlet-avatar--sm {
|
|
67
|
+
--crewlet-avatar-size: 26px;
|
|
68
|
+
font-size: var(--font-size-2xs);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.crewlet-avatar--md {
|
|
72
|
+
--crewlet-avatar-size: 32px;
|
|
73
|
+
font-size: var(--font-size-xs);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.crewlet-avatar--lg {
|
|
77
|
+
--crewlet-avatar-size: 40px;
|
|
78
|
+
font-size: var(--font-size-sm);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* ── kinds ─────────────────────────────────────────────────────────────── */
|
|
82
|
+
|
|
83
|
+
/*
|
|
84
|
+
* AN AGENT IS A SQUIRCLE, set in the mono face: what the engine runs, named
|
|
85
|
+
* the way a handle is written.
|
|
86
|
+
*
|
|
87
|
+
* THE CORNER MOVES WITH THE BOX, at 0.29 of it (`AVATAR_CORNER_RATIO` in the
|
|
88
|
+
* component, which the suite holds equal to this number): the approved
|
|
89
|
+
* design's 7px at 24 and 9px at 30, as one proportion. It is computed here from
|
|
90
|
+
* the size property every step and every numeric size sets, so there is ONE
|
|
91
|
+
* ladder. There used to be two, a step table here and a numeric table in the
|
|
92
|
+
* component, and they disagreed: `size={80}` drew a squarer badge than
|
|
93
|
+
* `size="lg"` at half its width.
|
|
94
|
+
*
|
|
95
|
+
* WHERE THE BROWSER DRAWS A SQUIRCLE, IT IS A WHOLE ONE. `corner-shape:
|
|
96
|
+
* squircle` is a superellipse of exponent 4, which at a given radius reaches
|
|
97
|
+
* much closer to the box's corner than a circular arc does: at the 45 degree
|
|
98
|
+
* point it stands 0.159 of the radius in from each edge, against 0.293 for an
|
|
99
|
+
* arc. Kept at 0.29 of the box, that corner would stand 0.046 of the box in,
|
|
100
|
+
* half the design's depth and a nearly square badge. At half the box it stands
|
|
101
|
+
* 0.0795 of the box in, against the design's 0.0849 (0.13px at 24px), with the
|
|
102
|
+
* continuous curvature a squircle is for. So the corner is the circle token
|
|
103
|
+
* there, and the fallback above is what every other browser draws.
|
|
104
|
+
*/
|
|
105
|
+
.crewlet-avatar--agent {
|
|
106
|
+
border-radius: calc(var(--crewlet-avatar-size) * 0.29);
|
|
107
|
+
font-family: var(--font-family-mono);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@supports (corner-shape: squircle) {
|
|
111
|
+
.crewlet-avatar--agent {
|
|
112
|
+
corner-shape: squircle;
|
|
113
|
+
border-radius: var(--radius-circle);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* A PERSON IS A CIRCLE, set in the sans face, the round badge every member list
|
|
118
|
+
a reader has used already speaks. */
|
|
119
|
+
.crewlet-avatar--human {
|
|
120
|
+
border-radius: var(--radius-circle);
|
|
121
|
+
font-family: var(--font-family-sans);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.crewlet-avatar--image {
|
|
125
|
+
display: block;
|
|
126
|
+
object-fit: cover;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* ── tones ─────────────────────────────────────────────────────────────── */
|
|
130
|
+
|
|
131
|
+
.crewlet-avatar--fallback {
|
|
132
|
+
border: 1px solid transparent;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* The design's badge: the raised rung with the strong hairline round it and
|
|
136
|
+
the secondary ink, so a badge on a card reads as a mark standing on it
|
|
137
|
+
rather than as a hole in it. */
|
|
138
|
+
.crewlet-avatar--neutral {
|
|
139
|
+
background: var(--color-surface-elevated);
|
|
140
|
+
border-color: var(--color-border-strong);
|
|
141
|
+
color: var(--color-text-secondary);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.crewlet-avatar--seeded {
|
|
145
|
+
color: var(--color-text-on-accent);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.crewlet-avatar--tint-0 { background: var(--color-avatar-tint-0); }
|
|
149
|
+
.crewlet-avatar--tint-1 { background: var(--color-avatar-tint-1); }
|
|
150
|
+
.crewlet-avatar--tint-2 { background: var(--color-avatar-tint-2); }
|
|
151
|
+
.crewlet-avatar--tint-3 { background: var(--color-avatar-tint-3); }
|
|
152
|
+
.crewlet-avatar--tint-4 { background: var(--color-avatar-tint-4); }
|
|
153
|
+
.crewlet-avatar--tint-5 { background: var(--color-avatar-tint-5); }
|
|
154
|
+
.crewlet-avatar--tint-6 { background: var(--color-avatar-tint-6); }
|
|
155
|
+
.crewlet-avatar--tint-7 { background: var(--color-avatar-tint-7); }
|
|
156
|
+
.crewlet-avatar--tint-8 { background: var(--color-avatar-tint-8); }
|
|
157
|
+
.crewlet-avatar--tint-9 { background: var(--color-avatar-tint-9); }
|
|
158
|
+
|
|
159
|
+
/* ── an agent's character ─────────────────────────────────────────────── */
|
|
160
|
+
|
|
161
|
+
/*
|
|
162
|
+
* THE CHARACTER FILLS MOST OF THE PLATE, centred by its own frame (it frames
|
|
163
|
+
* every silhouette square on what it draws), with the plate's corner clear of
|
|
164
|
+
* it: a wide character such as the original Crewlet reaches the plate's
|
|
165
|
+
* sides, a tall one its top and its foot, and none touches the curve.
|
|
166
|
+
*/
|
|
167
|
+
.crewlet-avatar--character {
|
|
168
|
+
border: 1px solid transparent;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.crewlet-avatar__character {
|
|
172
|
+
display: block;
|
|
173
|
+
flex: none;
|
|
174
|
+
width: 74%;
|
|
175
|
+
height: 74%;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/* The plate an agent's hue is drawn on: the hue's fill, its line round the
|
|
179
|
+
badge and the hue itself as the character's ink. */
|
|
180
|
+
.crewlet-avatar--hue-purple {
|
|
181
|
+
background: var(--color-node-purple-fill);
|
|
182
|
+
border-color: var(--color-node-purple-line);
|
|
183
|
+
color: var(--color-node-purple);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.crewlet-avatar--hue-cyan {
|
|
187
|
+
background: var(--color-node-cyan-fill);
|
|
188
|
+
border-color: var(--color-node-cyan-line);
|
|
189
|
+
color: var(--color-node-cyan);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.crewlet-avatar--hue-green {
|
|
193
|
+
background: var(--color-node-green-fill);
|
|
194
|
+
border-color: var(--color-node-green-line);
|
|
195
|
+
color: var(--color-node-green);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.crewlet-avatar--hue-amber {
|
|
199
|
+
background: var(--color-node-amber-fill);
|
|
200
|
+
border-color: var(--color-node-amber-line);
|
|
201
|
+
color: var(--color-node-amber);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.crewlet-avatar--hue-rose {
|
|
205
|
+
background: var(--color-node-rose-fill);
|
|
206
|
+
border-color: var(--color-node-rose-line);
|
|
207
|
+
color: var(--color-node-rose);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.crewlet-avatar--hue-blue {
|
|
211
|
+
background: var(--color-node-blue-fill);
|
|
212
|
+
border-color: var(--color-node-blue-line);
|
|
213
|
+
color: var(--color-node-blue);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* ── the selected ring ────────────────────────────────────────────────── */
|
|
217
|
+
|
|
218
|
+
/*
|
|
219
|
+
* A 1.5px LINE 2px OUTSIDE THE BADGE, which is the design's ring: it draws a
|
|
220
|
+
* 3.5px shadow over a 2px one in the card's colour, and 3.5 less 2 is 1.5.
|
|
221
|
+
* Longhands, so nothing else that sets an outline resets the ring's geometry.
|
|
222
|
+
*
|
|
223
|
+
* AN OUTLINE RATHER THAN THAT SHADOW PAIR, for three reasons. The gap is
|
|
224
|
+
* TRANSPARENT, so the ring reads on whatever the badge stands on, where the
|
|
225
|
+
* design's gap is the card's own fill and cuts a card-coloured band into any
|
|
226
|
+
* other ground. An outline follows the corner, the squircle's included, in
|
|
227
|
+
* every engine this package supports. And forced-colors mode keeps an outline
|
|
228
|
+
* and drops every shadow, so the ring is still drawn for the readers who most
|
|
229
|
+
* need a boundary.
|
|
230
|
+
*
|
|
231
|
+
* SELECTED, in the accent, which is what the accent means: where the reader
|
|
232
|
+
* is. It is the only place a badge spends the accent, and the accent is
|
|
233
|
+
* measured at 3:1 as a mark on every opaque surface by @crewlethq/tokens.
|
|
234
|
+
*/
|
|
235
|
+
.crewlet-avatar--ring-brand {
|
|
236
|
+
outline-style: solid;
|
|
237
|
+
outline-width: 1.5px;
|
|
238
|
+
outline-offset: 2px;
|
|
239
|
+
outline-color: var(--color-brand-accent);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/* ── the status badge ─────────────────────────────────────────────────── */
|
|
243
|
+
|
|
244
|
+
/*
|
|
245
|
+
* THE FRAME is the face's own box, so a badge with a status takes exactly the
|
|
246
|
+
* room one without takes: the corner badge hangs past it rather than growing
|
|
247
|
+
* it, and a row lays out the same either way. The badge is 0.42 of the box,
|
|
248
|
+
* never under 10px, which is the size its glyph stays a shape at.
|
|
249
|
+
*/
|
|
250
|
+
.crewlet-avatar-frame {
|
|
251
|
+
--crewlet-avatar-status-size: max(10px, calc(var(--crewlet-avatar-size) * 0.42));
|
|
252
|
+
--crewlet-avatar-status-overhang: 2px;
|
|
253
|
+
--crewlet-avatar-status-gap: 1.5px;
|
|
254
|
+
position: relative;
|
|
255
|
+
display: inline-flex;
|
|
256
|
+
flex: none;
|
|
257
|
+
width: var(--crewlet-avatar-size);
|
|
258
|
+
height: var(--crewlet-avatar-size);
|
|
259
|
+
vertical-align: middle;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/*
|
|
263
|
+
* THE NOTCH: the face is masked by a circle a gap wider than the badge, centred
|
|
264
|
+
* where the badge sits, so the gap shows whatever the badge stands on. A ring
|
|
265
|
+
* of the ground's colour would need to know that ground, and a badge on a card,
|
|
266
|
+
* a hovered row and the page would each need a different one. A mask reads only
|
|
267
|
+
* alpha, so its black is opacity rather than a colour.
|
|
268
|
+
*/
|
|
269
|
+
.crewlet-avatar--notched {
|
|
270
|
+
--crewlet-avatar-status-centre: calc(
|
|
271
|
+
100% + var(--crewlet-avatar-status-overhang) - var(--crewlet-avatar-status-size) / 2
|
|
272
|
+
);
|
|
273
|
+
--crewlet-avatar-status-cut: calc(var(--crewlet-avatar-status-size) / 2 + var(--crewlet-avatar-status-gap));
|
|
274
|
+
-webkit-mask-image: radial-gradient(
|
|
275
|
+
circle at var(--crewlet-avatar-status-centre) var(--crewlet-avatar-status-centre),
|
|
276
|
+
transparent var(--crewlet-avatar-status-cut),
|
|
277
|
+
#000 calc(var(--crewlet-avatar-status-cut) + 0.5px)
|
|
278
|
+
);
|
|
279
|
+
mask-image: radial-gradient(
|
|
280
|
+
circle at var(--crewlet-avatar-status-centre) var(--crewlet-avatar-status-centre),
|
|
281
|
+
transparent var(--crewlet-avatar-status-cut),
|
|
282
|
+
#000 calc(var(--crewlet-avatar-status-cut) + 0.5px)
|
|
283
|
+
);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/*
|
|
287
|
+
* THE BADGE: a state's fill step carrying its glyph in the inverse ink, which
|
|
288
|
+
* the tokens' palette suite holds at 3:1 on each fill (`MARK_ON_FILL`). The
|
|
289
|
+
* transparent outline is drawn only in forced-colors mode, where the fill
|
|
290
|
+
* becomes the page's own colour and the outline is what keeps a boundary.
|
|
291
|
+
*/
|
|
292
|
+
.crewlet-avatar__status {
|
|
293
|
+
position: absolute;
|
|
294
|
+
right: calc(var(--crewlet-avatar-status-overhang) * -1);
|
|
295
|
+
bottom: calc(var(--crewlet-avatar-status-overhang) * -1);
|
|
296
|
+
display: grid;
|
|
297
|
+
place-items: center;
|
|
298
|
+
width: var(--crewlet-avatar-status-size);
|
|
299
|
+
height: var(--crewlet-avatar-status-size);
|
|
300
|
+
border-radius: var(--radius-circle);
|
|
301
|
+
outline: 1px solid transparent;
|
|
302
|
+
color: var(--color-text-inverse);
|
|
303
|
+
pointer-events: none;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.crewlet-avatar__status > svg {
|
|
307
|
+
display: block;
|
|
308
|
+
width: 100%;
|
|
309
|
+
height: 100%;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.crewlet-avatar__status--working {
|
|
313
|
+
background: var(--color-feedback-info);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.crewlet-avatar__status--needs {
|
|
317
|
+
background: var(--color-feedback-warning);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.crewlet-avatar__status--stopped {
|
|
321
|
+
background: var(--color-feedback-danger);
|
|
322
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
import { type CrewletCharacterId } from '@crewlethq/icons/characters';
|
|
3
|
+
import type { NodeHue } from '../utils/nodeHue.js';
|
|
4
|
+
/**
|
|
5
|
+
* How many characters a row of the grid holds. Thirty characters make five
|
|
6
|
+
* full rows, and a grid that wraps by width would leave the arrow keys
|
|
7
|
+
* guessing which option sits above which.
|
|
8
|
+
*/
|
|
9
|
+
export declare const CHARACTER_PICKER_COLUMNS = 6;
|
|
10
|
+
export interface CharacterPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'onChange'> {
|
|
11
|
+
/** The group's name, said on entering it: "Character". */
|
|
12
|
+
label: string;
|
|
13
|
+
/** The chosen character. */
|
|
14
|
+
value: CrewletCharacterId;
|
|
15
|
+
onValueChange: (character: CrewletCharacterId) => void;
|
|
16
|
+
/** The hue every option is shown in, so the grid previews the agent it will be. */
|
|
17
|
+
hue?: NodeHue | undefined;
|
|
18
|
+
/** The characters offered, in order. Every character, by default. */
|
|
19
|
+
characters?: readonly CrewletCharacterId[] | undefined;
|
|
20
|
+
/** Nothing can be chosen, and the grid says so. */
|
|
21
|
+
disabled?: boolean | undefined;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The choice of an agent's Crewlet character: a grid of the characters, each
|
|
25
|
+
* drawn as the badge it would make, in the agent's own hue.
|
|
26
|
+
*
|
|
27
|
+
* A RADIO GROUP, because a character is a setting and exactly one is chosen:
|
|
28
|
+
* the grid is one tab stop, the arrows move through it and choose as they
|
|
29
|
+
* move, as the platform's own radio group does. Left and Right walk the
|
|
30
|
+
* options in reading order and Up and Down move a whole row, because the
|
|
31
|
+
* options are laid out in rows and an arrow that ignored that would move
|
|
32
|
+
* somewhere the reader is not looking.
|
|
33
|
+
*
|
|
34
|
+
* THE CHOSEN OPTION IS SAID THE WAY THE KIT SAYS SELECTED, with the badge's
|
|
35
|
+
* own `brand` ring, rather than a frame the grid draws round a tile: one
|
|
36
|
+
* badge, one line round it, and the line means "this one".
|
|
37
|
+
*/
|
|
38
|
+
export declare function CharacterPicker({ label, value, onValueChange, hue, characters, disabled, className, ...rest }: CharacterPickerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The grid of characters.
|
|
3
|
+
*
|
|
4
|
+
* SIX COLUMNS, ALWAYS, and the tiles share the width: the arrow keys move a
|
|
5
|
+
* whole row on Up and Down, so a row has to hold the same options at every
|
|
6
|
+
* width (`CHARACTER_PICKER_COLUMNS`). A tile is a target the size of the
|
|
7
|
+
* badge it holds and the gap round it, never smaller than the kit's control
|
|
8
|
+
* floor.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
.crewlet-character-picker {
|
|
12
|
+
display: grid;
|
|
13
|
+
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
14
|
+
gap: var(--spacing-1);
|
|
15
|
+
justify-items: center;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.crewlet-character-picker__option {
|
|
19
|
+
display: grid;
|
|
20
|
+
place-items: center;
|
|
21
|
+
min-width: var(--size-control-lg);
|
|
22
|
+
min-height: var(--size-control-lg);
|
|
23
|
+
padding: var(--spacing-1);
|
|
24
|
+
border: 0;
|
|
25
|
+
border-radius: var(--radius-md);
|
|
26
|
+
background: transparent;
|
|
27
|
+
cursor: pointer;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.crewlet-character-picker__option:hover:not(:disabled) {
|
|
31
|
+
background: var(--color-surface-hover);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.crewlet-character-picker__option:focus-visible {
|
|
35
|
+
outline: 2px solid var(--color-focus);
|
|
36
|
+
outline-offset: 2px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.crewlet-character-picker__option:disabled {
|
|
40
|
+
cursor: not-allowed;
|
|
41
|
+
opacity: 0.5;
|
|
42
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { CommandPalette } from '../chunk-
|
|
1
|
+
export { CommandPalette } from '../chunk-IGWPZZIB.js';
|
|
2
2
|
import '../chunk-SMBKXWML.js';
|
|
3
|
-
import '../chunk-BTHX2FS3.js';
|
|
4
3
|
import '../chunk-6MU7HNB4.js';
|
|
5
4
|
import '../chunk-ZGX2DP7F.js';
|
|
5
|
+
import '../chunk-BTHX2FS3.js';
|
|
6
6
|
import '../chunk-BHHIIK3M.js';
|
|
7
7
|
import '../chunk-PQADV6P6.js';
|
|
8
8
|
import '../chunk-7RPGY3JE.js';
|
package/dist/DataTable/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-
|
|
1
|
+
export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-CVB7O3SZ.js';
|
|
2
2
|
import '../chunk-LSB3EHBW.js';
|
|
3
3
|
import '../chunk-EUCC37WY.js';
|
|
4
4
|
import '../chunk-BTHX2FS3.js';
|
|
5
5
|
import '../chunk-AV2DXAEL.js';
|
|
6
|
-
import '../chunk-5VNUYO76.js';
|
|
7
6
|
import '../chunk-YCTMKKRA.js';
|
|
7
|
+
import '../chunk-5VNUYO76.js';
|
|
8
8
|
import '../chunk-PQADV6P6.js';
|
|
9
9
|
import '../chunk-7RPGY3JE.js';
|
|
10
10
|
import '../chunk-R25RGPUB.js';
|