@crewlethq/ui 0.10.0 → 0.12.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 -1
- package/dist/Accordion/index.js +3 -3
- package/dist/AppShell/index.js +2 -2
- package/dist/AvatarPicker/AvatarPicker.d.ts +32 -0
- package/dist/AvatarPicker/index.d.ts +3 -0
- package/dist/AvatarPicker/index.js +14 -0
- package/dist/AvatarPicker-PREY36MG.css +54 -0
- package/dist/Canvas/index.js +3 -3
- package/dist/Card/index.js +2 -2
- package/dist/CharacterPicker/index.js +2 -1
- package/dist/ChoiceList/ChoiceList.d.ts +45 -0
- package/dist/ChoiceList/index.d.ts +3 -0
- package/dist/ChoiceList/index.js +2 -0
- package/dist/ChoiceList-2PQJS4DX.css +109 -0
- package/dist/CodeBlock/index.js +3 -3
- package/dist/Combobox/index.js +3 -3
- package/dist/CommandPalette/index.js +7 -7
- package/dist/Composer/Composer.d.ts +27 -0
- package/dist/Composer/index.d.ts +3 -0
- package/dist/Composer/index.js +7 -0
- package/dist/Composer-ABGJIAIR.css +88 -0
- package/dist/Copyable/index.js +2 -2
- package/dist/DataTable/index.js +7 -7
- package/dist/DataView/index.js +14 -14
- package/dist/DateTimePicker/index.js +4 -4
- package/dist/Disclosure/index.js +3 -3
- package/dist/FactList/FactList.d.ts +33 -0
- package/dist/FactList/index.d.ts +3 -0
- package/dist/FactList/index.js +6 -0
- package/dist/FactList-G2H73NFR.css +57 -0
- package/dist/HuePicker/index.js +4 -3
- package/dist/Input/FormField.d.ts +8 -1
- package/dist/Input/index.js +1 -1
- package/dist/{Input-DRFNI26F.css → Input-RAKNQJCV.css} +7 -0
- package/dist/ListInput/ListInput.d.ts +3 -1
- package/dist/ListInput/index.js +3 -3
- package/dist/Menu/index.js +3 -3
- package/dist/Modal/index.js +3 -3
- package/dist/OrgTable/index.js +5 -5
- package/dist/SegmentedControl/index.js +3 -3
- package/dist/Tabs/Tabs.d.ts +18 -0
- package/dist/Tabs/index.d.ts +1 -1
- package/dist/Tabs/index.js +1 -1
- package/dist/{Tabs-BWFQSWY3.css → Tabs-5I5Q5KKM.css} +33 -0
- package/dist/TagsInput/index.js +2 -2
- package/dist/ThemeSwitcher/index.js +4 -4
- package/dist/TimeWindowPicker/index.js +5 -5
- package/dist/TreeCanvas/index.js +4 -4
- package/dist/TreeGrid/index.js +2 -2
- package/dist/chunk-3L5NHASN.js +1 -0
- package/dist/{chunk-L7THQMFB.js → chunk-5WEVLIB6.js} +1 -1
- package/dist/{chunk-LPHHDCN3.js → chunk-EBBAAQDY.js} +1 -1
- package/dist/chunk-EXHQ2QVW.js +1 -0
- package/dist/{chunk-ZGX2DP7F.js → chunk-FTEJPHBI.js} +8 -2
- package/dist/{chunk-RIAZM6L3.js → chunk-G2AVKPSL.js} +1 -1
- package/dist/{chunk-6HXH57BL.js → chunk-GARACZAH.js} +4 -2
- package/dist/{chunk-CVB7O3SZ.js → chunk-GOUKOXJK.js} +5 -5
- package/dist/{chunk-UYK72NOS.js → chunk-GXYNEDNA.js} +1 -1
- package/dist/{chunk-IZHN5I3H.js → chunk-HLBRPES3.js} +4 -4
- package/dist/chunk-HV6IZFBK.js +64 -0
- package/dist/{chunk-EUT7VBQG.js → chunk-IINFVK3W.js} +8 -8
- package/dist/{chunk-HEOVQZL7.js → chunk-JHQUT4WJ.js} +6 -2
- package/dist/{chunk-26TXVHN2.js → chunk-K5Q2DK3P.js} +1 -2
- package/dist/{chunk-MORLKUGM.js → chunk-KGTQ5CVD.js} +1 -1
- package/dist/chunk-QBXZLGK2.js +40 -0
- package/dist/chunk-QSLIN64M.js +47 -0
- package/dist/{chunk-MICH6QSJ.js → chunk-S4RCG44T.js} +1 -1
- package/dist/{chunk-UI6HWAWE.js → chunk-UAQIUSSK.js} +1 -1
- package/dist/chunk-URYDN2KA.js +25 -0
- package/dist/{chunk-X6K6OZ47.js → chunk-WEIINZPA.js} +1 -1
- package/dist/{chunk-IGWPZZIB.js → chunk-XV65NTIT.js} +3 -3
- package/dist/{chunk-UO5UK7V2.js → chunk-YXMCUKFI.js} +0 -1
- package/dist/{chunk-7FFDJQ23.js → chunk-ZMJHK7DR.js} +1 -1
- package/dist/generated/index.d.ts +4 -0
- package/dist/generated/index.js +66 -60
- package/dist/index.js +66 -60
- package/dist/styles.css +362 -2
- package/dist/utils/index.js +1 -1
- package/package.json +3 -3
- package/dist/{chunk-VE6LD3KM.js → chunk-2PZBIHRV.js} +2 -2
- package/dist/{chunk-YPTC4TX5.js → chunk-74OVQWA5.js} +0 -0
- package/dist/{chunk-OVLJEVQS.js → chunk-7LD6P32I.js} +1 -1
- package/dist/{chunk-CEOXFO3E.js → chunk-EG6NYWVK.js} +1 -1
- package/dist/{chunk-FZVJDJFN.js → chunk-ENJUPIND.js} +1 -1
- package/dist/{chunk-5I56UXBJ.js → chunk-JCNUQ3US.js} +2 -2
- package/dist/{chunk-SX2DFTQV.js → chunk-MCPKHYMC.js} +1 -1
- package/dist/{chunk-BTHX2FS3.js → chunk-TEEJSTFG.js} +2 -2
- package/dist/{chunk-LSB3EHBW.js → chunk-TFH6SYWB.js} +2 -2
- package/dist/{chunk-26SCUACK.js → chunk-YACKC3K2.js} +1 -1
- package/dist/{chunk-MPXI6FM6.js → chunk-ZHOM65MI.js} +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/** One read-only fact: what it is, its value, and why it cannot be changed here. */
|
|
3
|
+
export interface FactListItem {
|
|
4
|
+
/** Stable identity within the list. */
|
|
5
|
+
key: string;
|
|
6
|
+
/** What the fact is: "Handle", "Placement". */
|
|
7
|
+
label: ReactNode;
|
|
8
|
+
/** Its value, as text or a short node (a link, a tag). */
|
|
9
|
+
value: ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Why it cannot be changed here, in one sentence. Shown as a tooltip when
|
|
12
|
+
* the pointer rests on the row, and read by a screen reader after the value;
|
|
13
|
+
* with one, the row is drawn with a lock.
|
|
14
|
+
*/
|
|
15
|
+
reason?: string | undefined;
|
|
16
|
+
}
|
|
17
|
+
export interface FactListProps {
|
|
18
|
+
items: readonly FactListItem[];
|
|
19
|
+
/** Names the list for a screen reader, where nothing above it does. */
|
|
20
|
+
label?: string | undefined;
|
|
21
|
+
className?: string | undefined;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Facts a form shows and does not edit, as rows in one bordered box: the label
|
|
25
|
+
* on the left, the value on the right, 32px a row.
|
|
26
|
+
*
|
|
27
|
+
* ONE LINE A FACT. A read-only value used to be drawn as a label, the value
|
|
28
|
+
* and a sentence under it, three lines each, so a form's locked facts
|
|
29
|
+
* outweighed its fields. The sentence is the row's tooltip now, and the lock
|
|
30
|
+
* says there is one. It is a description list, so a screen reader reads each
|
|
31
|
+
* label with its value.
|
|
32
|
+
*/
|
|
33
|
+
export declare function FactList({ items, label, className }: FactListProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Read-only facts in one bordered box, a 32px row each: label and lock on the
|
|
3
|
+
* left, the value on the right. The rows share the box's hairline between
|
|
4
|
+
* them, so a list of six reads as one object rather than six cards.
|
|
5
|
+
*/
|
|
6
|
+
.crewlet-fact-list {
|
|
7
|
+
display: grid;
|
|
8
|
+
margin: 0;
|
|
9
|
+
border: 1px solid var(--color-border-default);
|
|
10
|
+
border-radius: var(--radius-md);
|
|
11
|
+
overflow: hidden;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.crewlet-fact-list__row {
|
|
15
|
+
display: flex;
|
|
16
|
+
align-items: center;
|
|
17
|
+
gap: var(--spacing-2);
|
|
18
|
+
min-height: 32px;
|
|
19
|
+
padding: var(--spacing-1) var(--spacing-3);
|
|
20
|
+
font-size: var(--font-size-compact);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.crewlet-fact-list__row + .crewlet-fact-list__row {
|
|
24
|
+
border-top: 1px solid var(--color-border-default);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.crewlet-fact-list__row.is-locked {
|
|
28
|
+
cursor: help;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.crewlet-fact-list__label {
|
|
32
|
+
display: flex;
|
|
33
|
+
flex: 1 1 auto;
|
|
34
|
+
align-items: center;
|
|
35
|
+
gap: var(--spacing-1);
|
|
36
|
+
min-width: 0;
|
|
37
|
+
margin: 0;
|
|
38
|
+
color: var(--color-text-tertiary);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.crewlet-fact-list__lock {
|
|
42
|
+
flex: none;
|
|
43
|
+
color: var(--color-text-tertiary);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.crewlet-fact-list__value {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex: 0 1 auto;
|
|
49
|
+
align-items: center;
|
|
50
|
+
justify-content: flex-end;
|
|
51
|
+
gap: var(--spacing-2);
|
|
52
|
+
min-width: 0;
|
|
53
|
+
margin: 0;
|
|
54
|
+
color: var(--color-text-secondary);
|
|
55
|
+
text-align: right;
|
|
56
|
+
overflow-wrap: anywhere;
|
|
57
|
+
}
|
package/dist/HuePicker/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import '../chunk-EXHQ2QVW.js';
|
|
2
|
+
export { HuePicker } from '../chunk-K5Q2DK3P.js';
|
|
2
3
|
import '../chunk-AYKXMIOR.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-EBBAAQDY.js';
|
|
5
|
+
import '../chunk-JHQUT4WJ.js';
|
|
5
6
|
import '../chunk-CBOICT64.js';
|
|
6
7
|
import '../chunk-BHHIIK3M.js';
|
|
7
8
|
import '../chunk-BZFWDIV6.js';
|
|
@@ -19,6 +19,13 @@ export interface FormFieldProps extends Omit<HTMLAttributes<HTMLElement>, 'child
|
|
|
19
19
|
requiredNews?: boolean | undefined;
|
|
20
20
|
/** Where the value comes from, or what shape it takes. */
|
|
21
21
|
helper?: ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Show the helper only while the field has focus. For a dense form whose
|
|
24
|
+
* every field carries a sentence: at rest the form is labels and values,
|
|
25
|
+
* and the sentence appears under the field the reader is in. It stays in
|
|
26
|
+
* `aria-describedby` either way, so a screen reader hears it on entry.
|
|
27
|
+
*/
|
|
28
|
+
helperOnFocus?: boolean | undefined;
|
|
22
29
|
/** Why the last value was refused. */
|
|
23
30
|
error?: ReactNode;
|
|
24
31
|
/** A control rendered beside the label, such as an Add button. */
|
|
@@ -58,4 +65,4 @@ export interface FormFieldProps extends Omit<HTMLAttributes<HTMLElement>, 'child
|
|
|
58
65
|
* instant, the only line that said what right looks like disappeared. Both
|
|
59
66
|
* lines are joined into `aria-describedby` in reading order, help first.
|
|
60
67
|
*/
|
|
61
|
-
export declare const FormField: ({ label, required, optional, requiredNews, helper, error, labelAction, as, describedBy, htmlFor, className, children, ...rest }: FormFieldProps) => import("react").JSX.Element;
|
|
68
|
+
export declare const FormField: ({ label, required, optional, requiredNews, helper, helperOnFocus, error, labelAction, as, describedBy, htmlFor, className, children, ...rest }: FormFieldProps) => import("react").JSX.Element;
|
package/dist/Input/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-
|
|
1
|
+
export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-FTEJPHBI.js';
|
|
2
2
|
import '../chunk-PQADV6P6.js';
|
|
3
3
|
import '../chunk-4FQT6ZAY.js';
|
|
4
4
|
import '../chunk-BZFWDIV6.js';
|
|
@@ -502,6 +502,13 @@
|
|
|
502
502
|
color: var(--color-text-tertiary);
|
|
503
503
|
}
|
|
504
504
|
|
|
505
|
+
/* SHOWN ONLY WHILE THE FIELD HAS FOCUS (`helperOnFocus`): a dense form reads as
|
|
506
|
+
labels and values at rest, and the sentence appears under the field the
|
|
507
|
+
reader is in. Still described, so a screen reader hears it on entry. */
|
|
508
|
+
.crewlet-form-field--helper-on-focus:not(:focus-within) .crewlet-form-field__helper {
|
|
509
|
+
display: none;
|
|
510
|
+
}
|
|
511
|
+
|
|
505
512
|
/*
|
|
506
513
|
* The error line, on the danger INK. It stays BESIDE the help rather than
|
|
507
514
|
* replacing it: a reader told they are wrong needs the line that says what
|
|
@@ -10,6 +10,8 @@ export interface ListInputProps {
|
|
|
10
10
|
multiline?: boolean | undefined;
|
|
11
11
|
/** Where the values come from, or what shape they take. */
|
|
12
12
|
helper?: ReactNode | undefined;
|
|
13
|
+
/** Show the helper only while the list has focus, as `FormField`'s `helperOnFocus`. */
|
|
14
|
+
helperOnFocus?: boolean | undefined;
|
|
13
15
|
/** Why the last value was refused. */
|
|
14
16
|
error?: ReactNode | undefined;
|
|
15
17
|
/** Shown in the new-item box. */
|
|
@@ -65,4 +67,4 @@ export interface ListInputProps {
|
|
|
65
67
|
*
|
|
66
68
|
* Ported from the engine dashboard's `ui/ListField.tsx`.
|
|
67
69
|
*/
|
|
68
|
-
export declare function ListInput({ label, itemName, value, onChange, multiline, helper, error, placeholder, disabled, optional, enterHint, addLabel, itemLabel, newItemLabel, moveUpLabel, moveDownLabel, removeLabel, addedMessage, removedMessage, movedMessage, }: ListInputProps): import("react").JSX.Element;
|
|
70
|
+
export declare function ListInput({ label, itemName, value, onChange, multiline, helper, helperOnFocus, error, placeholder, disabled, optional, enterHint, addLabel, itemLabel, newItemLabel, moveUpLabel, moveDownLabel, removeLabel, addedMessage, removedMessage, movedMessage, }: ListInputProps): import("react").JSX.Element;
|
package/dist/ListInput/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { ListInput } from '../chunk-
|
|
1
|
+
export { ListInput } from '../chunk-GARACZAH.js';
|
|
2
2
|
import '../chunk-SMBKXWML.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-FTEJPHBI.js';
|
|
4
4
|
import '../chunk-PQADV6P6.js';
|
|
5
5
|
import '../chunk-RSAQOKH3.js';
|
|
6
|
+
import '../chunk-4FQT6ZAY.js';
|
|
6
7
|
import '../chunk-7RPGY3JE.js';
|
|
7
8
|
import '../chunk-R25RGPUB.js';
|
|
8
|
-
import '../chunk-4FQT6ZAY.js';
|
|
9
9
|
import '../chunk-BZFWDIV6.js';
|
|
10
10
|
import '../chunk-ODEQTPFM.js';
|
package/dist/Menu/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { Menu } from '../chunk-
|
|
1
|
+
export { Menu } from '../chunk-TFH6SYWB.js';
|
|
2
|
+
import '../chunk-OG6CL3EB.js';
|
|
3
|
+
import '../chunk-4FQT6ZAY.js';
|
|
2
4
|
import '../chunk-7RPGY3JE.js';
|
|
3
5
|
import '../chunk-R25RGPUB.js';
|
|
4
|
-
import '../chunk-4FQT6ZAY.js';
|
|
5
|
-
import '../chunk-OG6CL3EB.js';
|
|
6
6
|
import '../chunk-BZFWDIV6.js';
|
|
7
7
|
import '../chunk-ODEQTPFM.js';
|
package/dist/Modal/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { ConfirmModal, Modal } from '../chunk-
|
|
1
|
+
export { ConfirmModal, Modal } from '../chunk-TEEJSTFG.js';
|
|
2
|
+
import '../chunk-OG6CL3EB.js';
|
|
2
3
|
import '../chunk-PQADV6P6.js';
|
|
4
|
+
import '../chunk-4FQT6ZAY.js';
|
|
3
5
|
import '../chunk-7RPGY3JE.js';
|
|
4
6
|
import '../chunk-R25RGPUB.js';
|
|
5
|
-
import '../chunk-4FQT6ZAY.js';
|
|
6
|
-
import '../chunk-OG6CL3EB.js';
|
|
7
7
|
import '../chunk-BZFWDIV6.js';
|
|
8
8
|
import '../chunk-ODEQTPFM.js';
|
package/dist/OrgTable/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-ZMJHK7DR.js';
|
|
2
|
+
import '../chunk-MCPKHYMC.js';
|
|
3
3
|
import '../chunk-S3BCVWTU.js';
|
|
4
4
|
import '../chunk-6OF2DBKY.js';
|
|
5
5
|
import '../chunk-53DVJCVW.js';
|
|
6
6
|
import '../chunk-74WGARJE.js';
|
|
7
|
-
import '../chunk-7RPGY3JE.js';
|
|
8
|
-
import '../chunk-R25RGPUB.js';
|
|
9
7
|
import '../chunk-4FQT6ZAY.js';
|
|
10
8
|
import '../chunk-3UK4VFSK.js';
|
|
11
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-7RPGY3JE.js';
|
|
10
|
+
import '../chunk-R25RGPUB.js';
|
|
12
11
|
import '../chunk-BZFWDIV6.js';
|
|
12
|
+
import '../chunk-HI6Q2UXQ.js';
|
|
13
13
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import '../chunk-
|
|
2
|
-
export { SegmentedControl } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
import '../chunk-UAQIUSSK.js';
|
|
2
|
+
export { SegmentedControl } from '../chunk-EBBAAQDY.js';
|
|
3
|
+
import '../chunk-JHQUT4WJ.js';
|
|
4
4
|
import '../chunk-CBOICT64.js';
|
|
5
5
|
import '../chunk-BHHIIK3M.js';
|
|
6
6
|
import '../chunk-BZFWDIV6.js';
|
package/dist/Tabs/Tabs.d.ts
CHANGED
|
@@ -10,10 +10,28 @@ export interface TabsItem {
|
|
|
10
10
|
icon?: ReactNode;
|
|
11
11
|
/** How many things are behind this tab. Drawn as a Count beside the label. */
|
|
12
12
|
count?: number | null;
|
|
13
|
+
/**
|
|
14
|
+
* What needs the reader behind this tab, drawn after the label: problems
|
|
15
|
+
* as a danger count, a warning or an unsaved change as a 6px dot. It
|
|
16
|
+
* replaces the count while it is set. `label` is what a screen reader hears.
|
|
17
|
+
*/
|
|
18
|
+
marker?: TabsMarker | undefined;
|
|
13
19
|
disabled?: boolean;
|
|
14
20
|
/** Any extra props the consumer's renderItem needs to read. */
|
|
15
21
|
[key: string]: unknown;
|
|
16
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* A tab's marker. ONE PER TAB, the most urgent: a problem, then a warning,
|
|
25
|
+
* then a change, so a row of tabs reads as "where is something wrong" first.
|
|
26
|
+
*/
|
|
27
|
+
export type TabsMarker = {
|
|
28
|
+
tone: 'danger';
|
|
29
|
+
count: number;
|
|
30
|
+
label: string;
|
|
31
|
+
} | {
|
|
32
|
+
tone: 'warning' | 'changed';
|
|
33
|
+
label: string;
|
|
34
|
+
};
|
|
17
35
|
export interface TabsRenderItemProps {
|
|
18
36
|
item: TabsItem;
|
|
19
37
|
/**
|
package/dist/Tabs/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import './Tabs.css';
|
|
2
2
|
export { TabPanel, Tabs, tabId } from './Tabs.js';
|
|
3
|
-
export type { TabPanelProps, TabsItem, TabsProps, TabsRenderItemProps, TabsSize, TabsVariant, } from './Tabs.js';
|
|
3
|
+
export type { TabPanelProps, TabsItem, TabsMarker, TabsProps, TabsRenderItemProps, TabsSize, TabsVariant, } from './Tabs.js';
|
package/dist/Tabs/index.js
CHANGED
|
@@ -337,3 +337,36 @@
|
|
|
337
337
|
transition: none;
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
|
+
|
|
341
|
+
/* ── markers ──────────────────────────────────────────────────────────────
|
|
342
|
+
What needs the reader behind a tab: a danger count for problems, a 6px
|
|
343
|
+
dot for a warning or an unsaved change. One per tab, the most urgent. */
|
|
344
|
+
.crewlet-tabs__marker {
|
|
345
|
+
display: inline-flex;
|
|
346
|
+
align-items: center;
|
|
347
|
+
justify-content: center;
|
|
348
|
+
flex: none;
|
|
349
|
+
}
|
|
350
|
+
.crewlet-tabs__marker--danger {
|
|
351
|
+
min-width: 16px;
|
|
352
|
+
height: 16px;
|
|
353
|
+
padding: 0 var(--spacing-1);
|
|
354
|
+
border-radius: var(--radius-circle);
|
|
355
|
+
background: var(--color-feedback-danger-soft);
|
|
356
|
+
color: var(--color-feedback-danger-ink);
|
|
357
|
+
font-family: var(--font-family-mono);
|
|
358
|
+
font-size: var(--font-size-2xs);
|
|
359
|
+
line-height: 1;
|
|
360
|
+
}
|
|
361
|
+
.crewlet-tabs__marker--warning,
|
|
362
|
+
.crewlet-tabs__marker--changed {
|
|
363
|
+
width: 6px;
|
|
364
|
+
height: 6px;
|
|
365
|
+
border-radius: var(--radius-circle);
|
|
366
|
+
}
|
|
367
|
+
.crewlet-tabs__marker--warning {
|
|
368
|
+
background: var(--color-feedback-warning);
|
|
369
|
+
}
|
|
370
|
+
.crewlet-tabs__marker--changed {
|
|
371
|
+
background: var(--color-brand-accent);
|
|
372
|
+
}
|
package/dist/TagsInput/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { TagsInput } from '../chunk-
|
|
1
|
+
export { TagsInput } from '../chunk-ZHOM65MI.js';
|
|
2
2
|
import '../chunk-LOECRMHA.js';
|
|
3
3
|
import '../chunk-WIATRXEJ.js';
|
|
4
4
|
import '../chunk-6MU7HNB4.js';
|
|
5
5
|
import '../chunk-RSAQOKH3.js';
|
|
6
|
+
import '../chunk-4FQT6ZAY.js';
|
|
6
7
|
import '../chunk-7RPGY3JE.js';
|
|
7
8
|
import '../chunk-R25RGPUB.js';
|
|
8
|
-
import '../chunk-4FQT6ZAY.js';
|
|
9
9
|
import '../chunk-BZFWDIV6.js';
|
|
10
10
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { DensitySwitcher, ThemeSwitcher } from '../chunk-
|
|
1
|
+
export { DensitySwitcher, ThemeSwitcher } from '../chunk-WEIINZPA.js';
|
|
2
2
|
export { applyDensity, applyStoredPreferences, applyTheme, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from '../chunk-K3OWD7BJ.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-UAQIUSSK.js';
|
|
4
|
+
import '../chunk-EBBAAQDY.js';
|
|
5
|
+
import '../chunk-JHQUT4WJ.js';
|
|
6
6
|
import '../chunk-CBOICT64.js';
|
|
7
7
|
import '../chunk-BHHIIK3M.js';
|
|
8
8
|
import '../chunk-BZFWDIV6.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-
|
|
1
|
+
export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-HLBRPES3.js';
|
|
2
2
|
import '../chunk-SEFMO2EV.js';
|
|
3
3
|
import '../chunk-6MU7HNB4.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-PDUZO35I.js';
|
|
4
|
+
import '../chunk-FTEJPHBI.js';
|
|
6
5
|
import '../chunk-GXQ3B46I.js';
|
|
6
|
+
import '../chunk-OG6CL3EB.js';
|
|
7
7
|
import '../chunk-PQADV6P6.js';
|
|
8
|
+
import '../chunk-4FQT6ZAY.js';
|
|
9
|
+
import '../chunk-PDUZO35I.js';
|
|
8
10
|
import '../chunk-7RPGY3JE.js';
|
|
9
11
|
import '../chunk-R25RGPUB.js';
|
|
10
|
-
import '../chunk-4FQT6ZAY.js';
|
|
11
|
-
import '../chunk-OG6CL3EB.js';
|
|
12
12
|
import '../chunk-BZFWDIV6.js';
|
|
13
13
|
import '../chunk-ODEQTPFM.js';
|
package/dist/TreeCanvas/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { TreeCanvas } from '../chunk-
|
|
1
|
+
export { TreeCanvas } from '../chunk-5WEVLIB6.js';
|
|
2
2
|
import '../chunk-S3BCVWTU.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-2PZBIHRV.js';
|
|
4
4
|
import '../chunk-53DVJCVW.js';
|
|
5
|
+
import '../chunk-OG6CL3EB.js';
|
|
6
|
+
import '../chunk-4FQT6ZAY.js';
|
|
5
7
|
import '../chunk-7RPGY3JE.js';
|
|
6
8
|
import '../chunk-R25RGPUB.js';
|
|
7
|
-
import '../chunk-4FQT6ZAY.js';
|
|
8
|
-
import '../chunk-OG6CL3EB.js';
|
|
9
9
|
import '../chunk-BZFWDIV6.js';
|
|
10
10
|
import '../chunk-ODEQTPFM.js';
|
package/dist/TreeGrid/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { TreeGrid } from '../chunk-
|
|
1
|
+
export { TreeGrid } from '../chunk-MCPKHYMC.js';
|
|
2
2
|
import '../chunk-S3BCVWTU.js';
|
|
3
3
|
import '../chunk-53DVJCVW.js';
|
|
4
|
+
import '../chunk-4FQT6ZAY.js';
|
|
4
5
|
import '../chunk-7RPGY3JE.js';
|
|
5
6
|
import '../chunk-R25RGPUB.js';
|
|
6
|
-
import '../chunk-4FQT6ZAY.js';
|
|
7
7
|
import '../chunk-BZFWDIV6.js';
|
|
8
8
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './CharacterPicker-ZEYIKUNQ.css';
|
|
@@ -1,5 +1,5 @@
|
|
|
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-
|
|
2
|
+
import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-2PZBIHRV.js';
|
|
3
3
|
import { focusables } from './chunk-R25RGPUB.js';
|
|
4
4
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
5
5
|
import './TreeCanvas-L2XYONWL.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './HuePicker-5QIUR6L7.css';
|
|
@@ -2,7 +2,7 @@ import { useHeadingLevel, headingTag, HeadingLevelProvider, nextHeadingLevel } f
|
|
|
2
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-
|
|
5
|
+
import './Input-RAKNQJCV.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';
|
|
@@ -162,6 +162,7 @@ var FormField = ({
|
|
|
162
162
|
optional,
|
|
163
163
|
requiredNews,
|
|
164
164
|
helper,
|
|
165
|
+
helperOnFocus = false,
|
|
165
166
|
error,
|
|
166
167
|
labelAction,
|
|
167
168
|
as = "div",
|
|
@@ -188,7 +189,12 @@ var FormField = ({
|
|
|
188
189
|
helper ? /* @__PURE__ */ jsx("div", { id: helperId, className: "crewlet-form-field__helper", children: helper }) : null,
|
|
189
190
|
error ? /* @__PURE__ */ jsx("div", { id: errorId, className: "crewlet-form-field__error", role: "alert", children: error }) : null
|
|
190
191
|
] });
|
|
191
|
-
const classes = cx(
|
|
192
|
+
const classes = cx(
|
|
193
|
+
"crewlet-form-field",
|
|
194
|
+
Boolean(error) && "is-error",
|
|
195
|
+
helperOnFocus && helper ? "crewlet-form-field--helper-on-focus" : null,
|
|
196
|
+
className
|
|
197
|
+
);
|
|
192
198
|
if (as === "fieldset") {
|
|
193
199
|
return (
|
|
194
200
|
/*
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Kbd } from './chunk-SMBKXWML.js';
|
|
2
|
-
import { FormField, Textarea, Input } from './chunk-
|
|
2
|
+
import { FormField, Textarea, Input } from './chunk-FTEJPHBI.js';
|
|
3
3
|
import { announce } from './chunk-RSAQOKH3.js';
|
|
4
|
-
import { isComposing } from './chunk-R25RGPUB.js';
|
|
5
4
|
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
5
|
+
import { isComposing } from './chunk-R25RGPUB.js';
|
|
6
6
|
import './ListInput-O7LJKOIG.css';
|
|
7
7
|
import { useState, useRef, useLayoutEffect } from 'react';
|
|
8
8
|
import { ArrowUpGlyph, ArrowDownGlyph, XGlyph, PlusGlyph } from '@crewlethq/icons/glyphs';
|
|
@@ -18,6 +18,7 @@ function ListInput({
|
|
|
18
18
|
onChange,
|
|
19
19
|
multiline = false,
|
|
20
20
|
helper,
|
|
21
|
+
helperOnFocus,
|
|
21
22
|
error,
|
|
22
23
|
placeholder,
|
|
23
24
|
disabled = false,
|
|
@@ -155,6 +156,7 @@ function ListInput({
|
|
|
155
156
|
label,
|
|
156
157
|
optional,
|
|
157
158
|
helper,
|
|
159
|
+
helperOnFocus,
|
|
158
160
|
error,
|
|
159
161
|
className: "crewlet-list-input",
|
|
160
162
|
labelAction: /* @__PURE__ */ jsx(
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Menu } from './chunk-LSB3EHBW.js';
|
|
2
|
-
import { EmptyValue } from './chunk-EUCC37WY.js';
|
|
3
|
-
import { Modal } from './chunk-BTHX2FS3.js';
|
|
4
1
|
import { useCardHeaderSlot } from './chunk-AV2DXAEL.js';
|
|
5
|
-
import {
|
|
2
|
+
import { Menu } from './chunk-TFH6SYWB.js';
|
|
3
|
+
import { EmptyValue } from './chunk-EUCC37WY.js';
|
|
4
|
+
import { Modal } from './chunk-TEEJSTFG.js';
|
|
6
5
|
import { useClipboard } from './chunk-5VNUYO76.js';
|
|
7
|
-
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
8
6
|
import { Button } from './chunk-OG6CL3EB.js';
|
|
7
|
+
import { Checkbox } from './chunk-YCTMKKRA.js';
|
|
8
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
9
9
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
10
10
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
11
11
|
import './DataTable-WZK3V62B.css';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useListbox } from './chunk-6MU7HNB4.js';
|
|
2
|
-
import { Input } from './chunk-
|
|
2
|
+
import { Input } from './chunk-FTEJPHBI.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,10 +1,10 @@
|
|
|
1
1
|
import { Select } from './chunk-SEFMO2EV.js';
|
|
2
|
-
import { Input } from './chunk-
|
|
3
|
-
import { Popover } from './chunk-PDUZO35I.js';
|
|
2
|
+
import { Input } from './chunk-FTEJPHBI.js';
|
|
4
3
|
import { today, shiftMonth, CalendarGrid, compareDays } from './chunk-GXQ3B46I.js';
|
|
5
|
-
import { isComposing } from './chunk-R25RGPUB.js';
|
|
6
|
-
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
7
4
|
import { Button } from './chunk-OG6CL3EB.js';
|
|
5
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
6
|
+
import { Popover } from './chunk-PDUZO35I.js';
|
|
7
|
+
import { isComposing } from './chunk-R25RGPUB.js';
|
|
8
8
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
9
9
|
import './TimeWindowPicker-GBF4JDFI.css';
|
|
10
10
|
import { useMemo, useState, useRef, useId, useEffect } from 'react';
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { HuePicker } from './chunk-K5Q2DK3P.js';
|
|
2
|
+
import { NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
|
|
3
|
+
import { Popover } from './chunk-PDUZO35I.js';
|
|
4
|
+
import { CharacterPicker } from './chunk-YXMCUKFI.js';
|
|
5
|
+
import { Avatar } from './chunk-HI6Q2UXQ.js';
|
|
6
|
+
import { cx } from './chunk-ODEQTPFM.js';
|
|
7
|
+
import './AvatarPicker-PREY36MG.css';
|
|
8
|
+
import { CREWLET_CHARACTER_GEOMETRY, CREWLET_CHARACTERS } from '@crewlethq/icons/characters';
|
|
9
|
+
import { PencilGlyph } from '@crewlethq/icons/glyphs';
|
|
10
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
11
|
+
|
|
12
|
+
function AvatarPicker({
|
|
13
|
+
value,
|
|
14
|
+
onChange,
|
|
15
|
+
name,
|
|
16
|
+
size = "lg",
|
|
17
|
+
characters = CREWLET_CHARACTERS,
|
|
18
|
+
disabled = false,
|
|
19
|
+
className
|
|
20
|
+
}) {
|
|
21
|
+
const badge = /* @__PURE__ */ jsx(Avatar, { kind: "agent", name, character: value.character, hue: value.hue, size, decorative: true });
|
|
22
|
+
if (disabled) return /* @__PURE__ */ jsx("span", { className: cx("crewlet-avatar-picker", className), children: badge });
|
|
23
|
+
const now = `${CREWLET_CHARACTER_GEOMETRY[value.character].name} in ${NODE_HUE_NAMES[value.hue]}`;
|
|
24
|
+
return /* @__PURE__ */ jsx(
|
|
25
|
+
Popover,
|
|
26
|
+
{
|
|
27
|
+
label: "Profile icon",
|
|
28
|
+
align: "start",
|
|
29
|
+
className: "crewlet-avatar-picker__panel",
|
|
30
|
+
trigger: (open, toggle) => /* @__PURE__ */ jsxs(
|
|
31
|
+
"button",
|
|
32
|
+
{
|
|
33
|
+
type: "button",
|
|
34
|
+
className: cx("crewlet-avatar-picker", className),
|
|
35
|
+
"aria-label": `Change ${name}'s profile icon, now ${now}`,
|
|
36
|
+
"aria-expanded": open,
|
|
37
|
+
"aria-haspopup": "dialog",
|
|
38
|
+
onClick: toggle,
|
|
39
|
+
children: [
|
|
40
|
+
badge,
|
|
41
|
+
/* @__PURE__ */ jsx("span", { className: "crewlet-avatar-picker__pip", "aria-hidden": "true", children: /* @__PURE__ */ jsx(PencilGlyph, { size: 9 }) })
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
children: /* @__PURE__ */ jsxs("div", { className: "crewlet-avatar-picker__body", children: [
|
|
46
|
+
/* @__PURE__ */ jsx("span", { className: "crewlet-avatar-picker__label", children: "Character" }),
|
|
47
|
+
/* @__PURE__ */ jsx(
|
|
48
|
+
CharacterPicker,
|
|
49
|
+
{
|
|
50
|
+
label: "Character",
|
|
51
|
+
value: value.character,
|
|
52
|
+
hue: value.hue,
|
|
53
|
+
characters,
|
|
54
|
+
onValueChange: (character) => onChange({ ...value, character })
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
/* @__PURE__ */ jsx("span", { className: "crewlet-avatar-picker__label", children: "Color" }),
|
|
58
|
+
/* @__PURE__ */ jsx(HuePicker, { label: "Color", size: "sm", value: value.hue, onValueChange: (hue) => onChange({ ...value, hue }) })
|
|
59
|
+
] })
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export { AvatarPicker };
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Toolbar } from './chunk-PGRPNDWM.js';
|
|
2
|
-
import { RelativeTime } from './chunk-3CZ7XAVY.js';
|
|
3
2
|
import { PageHeader } from './chunk-HOXGBLEY.js';
|
|
4
|
-
import {
|
|
3
|
+
import { RelativeTime } from './chunk-3CZ7XAVY.js';
|
|
4
|
+
import { DateTimePicker } from './chunk-JCNUQ3US.js';
|
|
5
5
|
import { useListbox, useOptionKeys } from './chunk-6MU7HNB4.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
6
|
+
import { Kbd } from './chunk-SMBKXWML.js';
|
|
7
|
+
import { Input } from './chunk-FTEJPHBI.js';
|
|
8
|
+
import { DataTable } from './chunk-GOUKOXJK.js';
|
|
9
|
+
import { Menu } from './chunk-TFH6SYWB.js';
|
|
10
|
+
import { Button } from './chunk-OG6CL3EB.js';
|
|
11
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
10
12
|
import { Popover } from './chunk-PDUZO35I.js';
|
|
11
13
|
import { Count } from './chunk-BHHIIK3M.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';
|