@crisp-ui-kit/crisp 0.57.0 → 0.57.1
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/dist/accentpicker.css +5 -0
- package/dist/accentpicker.d.ts +7 -0
- package/dist/accentpicker.layered.css +7 -0
- package/dist/avatar.css +1 -1
- package/dist/avatar.layered.css +1 -1
- package/dist/badge.css +2 -2
- package/dist/badge.layered.css +2 -2
- package/dist/button.css +3 -3
- package/dist/button.layered.css +3 -3
- package/dist/cjs/components/accentpicker/accentpicker.js +66 -0
- package/dist/cjs/components/accentpicker/accentpicker.recipe.js +25 -0
- package/dist/cjs/components/accentpicker/index.js +7 -0
- package/dist/cjs/components/avatar/avatar.recipe.js +4 -1
- package/dist/cjs/components/badge/badge.recipe.js +16 -2
- package/dist/cjs/components/button/button.recipe.js +16 -6
- package/dist/cjs/components/input/input.js +2 -2
- package/dist/cjs/components/input/input.recipe.js +8 -0
- package/dist/cjs/components/multiselect/multiselect.js +1 -1
- package/dist/cjs/components/multiselect/multiselect.recipe.js +12 -3
- package/dist/cjs/components/progress/progress.js +21 -4
- package/dist/cjs/components/progress/progress.recipe.js +30 -0
- package/dist/cjs/components/select/select.js +2 -2
- package/dist/cjs/components/select/select.recipe.js +32 -5
- package/dist/cjs/components/text/text.recipe.js +8 -7
- package/dist/cjs/components/textarea/textarea.js +3 -2
- package/dist/cjs/components/textarea/textarea.recipe.js +2 -1
- package/dist/cjs/components/textlink/textlink.recipe.js +6 -3
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/product/recordpage/recordpage.js +46 -5
- package/dist/cjs/tokens/palette.js +79 -25
- package/dist/cjs/tokens/scale.js +1 -0
- package/dist/cjs/tokens/semantic.js +24 -0
- package/dist/esm/components/accentpicker/accentpicker.js +30 -0
- package/dist/esm/components/accentpicker/accentpicker.recipe.js +22 -0
- package/dist/esm/components/accentpicker/index.js +2 -0
- package/dist/esm/components/avatar/avatar.recipe.js +4 -1
- package/dist/esm/components/badge/badge.recipe.js +16 -2
- package/dist/esm/components/button/button.recipe.js +16 -6
- package/dist/esm/components/input/input.js +3 -3
- package/dist/esm/components/input/input.recipe.js +8 -0
- package/dist/esm/components/multiselect/multiselect.js +1 -1
- package/dist/esm/components/multiselect/multiselect.recipe.js +12 -3
- package/dist/esm/components/progress/progress.js +22 -5
- package/dist/esm/components/progress/progress.recipe.js +30 -0
- package/dist/esm/components/select/select.js +2 -2
- package/dist/esm/components/select/select.recipe.js +32 -5
- package/dist/esm/components/text/text.recipe.js +8 -7
- package/dist/esm/components/textarea/textarea.js +3 -2
- package/dist/esm/components/textarea/textarea.recipe.js +2 -1
- package/dist/esm/components/textlink/textlink.recipe.js +6 -3
- package/dist/esm/index.js +1 -0
- package/dist/esm/product/recordpage/recordpage.js +47 -6
- package/dist/esm/tokens/palette.js +79 -25
- package/dist/esm/tokens/scale.js +1 -0
- package/dist/esm/tokens/semantic.js +24 -0
- package/dist/input.css +7 -0
- package/dist/input.layered.css +7 -0
- package/dist/multiselect.css +4 -0
- package/dist/multiselect.d.ts +2 -2
- package/dist/multiselect.layered.css +4 -0
- package/dist/native/tokens.d.ts +1 -1
- package/dist/native/tokens.js +33 -22
- package/dist/progress.css +3 -0
- package/dist/progress.layered.css +3 -0
- package/dist/select.css +22 -2
- package/dist/select.d.ts +2 -2
- package/dist/select.layered.css +22 -2
- package/dist/styles.css +71 -23
- package/dist/styles.layered.css +71 -23
- package/dist/text.css +1 -1
- package/dist/text.layered.css +1 -1
- package/dist/textarea.css +2 -1
- package/dist/textarea.layered.css +2 -1
- package/dist/textlink.css +2 -2
- package/dist/textlink.layered.css +2 -2
- package/dist/tokens.css +18 -11
- package/dist/tokens.json +33 -22
- package/dist/types/components/accentpicker/accentpicker.d.ts +23 -0
- package/dist/types/components/accentpicker/accentpicker.recipe.d.ts +3 -0
- package/dist/types/components/accentpicker/index.d.ts +2 -0
- package/dist/types/components/button/button.recipe.d.ts +2 -2
- package/dist/types/components/input/input.d.ts +12 -0
- package/dist/types/components/multiselect/multiselect.d.ts +4 -3
- package/dist/types/components/multiselect/multiselect.recipe.d.ts +3 -0
- package/dist/types/components/progress/progress.d.ts +16 -4
- package/dist/types/components/progress/progress.recipe.d.ts +22 -0
- package/dist/types/components/select/select.d.ts +6 -5
- package/dist/types/components/select/select.recipe.d.ts +3 -0
- package/dist/types/components/textarea/textarea.d.ts +16 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/product/recordpage/recordpage.d.ts +37 -1
- package/dist/types/tokens/contract.d.ts +4 -1
- package/dist/types/tokens/palette.d.ts +19 -11
- package/dist/types/tokens/scale.d.ts +1 -0
- package/dist/types/tokens/semantic.d.ts +15 -0
- package/package.json +6 -1
|
@@ -5,15 +5,27 @@ export type ProgressProps = React.ComponentPropsWithoutRef<"div"> & {
|
|
|
5
5
|
max?: number;
|
|
6
6
|
/** Render as N discrete segments (a step bar) instead of a continuous fill. */
|
|
7
7
|
segments?: number;
|
|
8
|
+
/**
|
|
9
|
+
* `"linear"` (default) or `"circular"` — a small ring, measured live on
|
|
10
|
+
* Attio's own Settings > Profile character-counter (crisp#634).
|
|
11
|
+
*/
|
|
12
|
+
variant?: "linear" | "circular";
|
|
13
|
+
/**
|
|
14
|
+
* Circular only: outer diameter in px. Default 18 is Attio's own measured
|
|
15
|
+
* size; `strokeWidth` scales proportionally at other sizes (18px's own
|
|
16
|
+
* 1.6px ratio) since only the one size was ever measured.
|
|
17
|
+
*/
|
|
18
|
+
size?: number;
|
|
8
19
|
"aria-label"?: string;
|
|
9
20
|
className?: string;
|
|
10
21
|
};
|
|
11
22
|
/**
|
|
12
|
-
* A progress bar — a continuous brand fill,
|
|
13
|
-
* `segments` is set (the "Getting started 3/6" pattern)
|
|
14
|
-
* `
|
|
23
|
+
* A progress bar — a continuous brand fill, a segmented row of pills when
|
|
24
|
+
* `segments` is set (the "Getting started 3/6" pattern), or a small ring
|
|
25
|
+
* (`variant="circular"`, a character-counter's own progress). Reports its
|
|
26
|
+
* state via `role="progressbar"` and the ARIA value attributes.
|
|
15
27
|
*/
|
|
16
|
-
export declare function Progress({ value, max, segments, "aria-label": ariaLabel, className, ...rest }: ProgressProps): import("react").JSX.Element;
|
|
28
|
+
export declare function Progress({ value, max, segments, variant, size, "aria-label": ariaLabel, className, ...rest }: ProgressProps): import("react").JSX.Element;
|
|
17
29
|
export declare namespace Progress {
|
|
18
30
|
var displayName: string;
|
|
19
31
|
}
|
|
@@ -42,6 +42,28 @@ declare const spec: {
|
|
|
42
42
|
readonly decls: {
|
|
43
43
|
background: `var(--${string})`;
|
|
44
44
|
};
|
|
45
|
+
}, {
|
|
46
|
+
readonly selector: "&[data-variant=\"circular\"]";
|
|
47
|
+
readonly decls: {
|
|
48
|
+
readonly display: "inline-flex";
|
|
49
|
+
readonly height: "auto";
|
|
50
|
+
readonly borderRadius: "0";
|
|
51
|
+
readonly background: "transparent";
|
|
52
|
+
readonly overflow: "visible";
|
|
53
|
+
};
|
|
54
|
+
}, {
|
|
55
|
+
readonly slot: "circleTrack";
|
|
56
|
+
readonly selector: "& .crisp-progress-circle-track";
|
|
57
|
+
readonly decls: {
|
|
58
|
+
readonly stroke: `color-mix(in srgb, var(--${string}) 14%, transparent)`;
|
|
59
|
+
};
|
|
60
|
+
}, {
|
|
61
|
+
readonly slot: "circleFill";
|
|
62
|
+
readonly selector: "& .crisp-progress-circle-fill";
|
|
63
|
+
readonly decls: {
|
|
64
|
+
readonly stroke: `var(--${string})`;
|
|
65
|
+
readonly transition: "stroke-dashoffset 0.25s ease";
|
|
66
|
+
};
|
|
45
67
|
}];
|
|
46
68
|
};
|
|
47
69
|
declare const config: import("../..").RecipeConfig<Record<string, Record<string, string>>>;
|
|
@@ -56,12 +56,13 @@ export type SelectProps = Omit<React.ComponentPropsWithoutRef<"div">, "value" |
|
|
|
56
56
|
/** `full` (default) fills its container; `auto` sizes to content. */
|
|
57
57
|
width?: "full" | "auto";
|
|
58
58
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
59
|
+
* `small` (default, crisp/#889) is Attio's own 32px trigger height — lines
|
|
60
|
+
* up with `Input`'s own size, since the two sit side by side in every
|
|
61
|
+
* form. `medium`/`large` are seed-design's own 40px/52px (crisp/#867),
|
|
62
|
+
* opt-in where the surrounding layout calls for a bigger control. Purely
|
|
63
|
+
* visual — the listbox/item chrome is identical across all three.
|
|
63
64
|
*/
|
|
64
|
-
size?: "medium" | "large";
|
|
65
|
+
size?: "small" | "medium" | "large";
|
|
65
66
|
/**
|
|
66
67
|
* Answered and locked, not editable — unlike `disabled`, the trigger stays
|
|
67
68
|
* focusable and its text stays full-strength ink (crisp/#867, seed-design's
|
|
@@ -4,6 +4,7 @@ declare const config: import("../..").RecipeConfig<{
|
|
|
4
4
|
auto: string;
|
|
5
5
|
};
|
|
6
6
|
size: {
|
|
7
|
+
small: string;
|
|
7
8
|
medium: string;
|
|
8
9
|
large: string;
|
|
9
10
|
};
|
|
@@ -22,6 +23,7 @@ export declare const selectRecipe: import("../..").RecipeFn<{
|
|
|
22
23
|
auto: string;
|
|
23
24
|
};
|
|
24
25
|
size: {
|
|
26
|
+
small: string;
|
|
25
27
|
medium: string;
|
|
26
28
|
large: string;
|
|
27
29
|
};
|
|
@@ -40,6 +42,7 @@ export declare const selectRecipe: import("../..").RecipeFn<{
|
|
|
40
42
|
auto: string;
|
|
41
43
|
};
|
|
42
44
|
size: {
|
|
45
|
+
small: string;
|
|
43
46
|
medium: string;
|
|
44
47
|
large: string;
|
|
45
48
|
};
|
|
@@ -2,6 +2,14 @@ import * as React from "react";
|
|
|
2
2
|
export type TextareaProps = React.ComponentPropsWithoutRef<"textarea"> & {
|
|
3
3
|
/** Show a "N / maxLength" counter bottom-right (also caps input at maxLength). */
|
|
4
4
|
showCount?: boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Pair the counter with a small circular progress ring (crisp#634),
|
|
7
|
+
* measured live on Attio's own Settings > Profile "Personal context"
|
|
8
|
+
* field. Only meaningful alongside `showCount`+`maxLength` — not every
|
|
9
|
+
* counted textarea in Attio has one, so this is opt-in rather than tied
|
|
10
|
+
* to `showCount` itself.
|
|
11
|
+
*/
|
|
12
|
+
showProgress?: boolean;
|
|
5
13
|
/** Extra class on the wrapper. */
|
|
6
14
|
wrapperClassName?: string;
|
|
7
15
|
};
|
|
@@ -13,6 +21,14 @@ export type TextareaProps = React.ComponentPropsWithoutRef<"textarea"> & {
|
|
|
13
21
|
export declare const Textarea: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "ref"> & {
|
|
14
22
|
/** Show a "N / maxLength" counter bottom-right (also caps input at maxLength). */
|
|
15
23
|
showCount?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Pair the counter with a small circular progress ring (crisp#634),
|
|
26
|
+
* measured live on Attio's own Settings > Profile "Personal context"
|
|
27
|
+
* field. Only meaningful alongside `showCount`+`maxLength` — not every
|
|
28
|
+
* counted textarea in Attio has one, so this is opt-in rather than tied
|
|
29
|
+
* to `showCount` itself.
|
|
30
|
+
*/
|
|
31
|
+
showProgress?: boolean;
|
|
16
32
|
/** Extra class on the wrapper. */
|
|
17
33
|
wrapperClassName?: string;
|
|
18
34
|
} & React.RefAttributes<HTMLTextAreaElement>>;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type LucideIcon } from "lucide-react";
|
|
2
2
|
import * as React from "react";
|
|
3
|
+
import { type CommentAuthor, type CommentThread } from "../comments";
|
|
3
4
|
import { type Column, type Row } from "./column";
|
|
4
5
|
export type RecordPageNote = {
|
|
5
6
|
id: string;
|
|
@@ -143,6 +144,29 @@ export type RecordPageProps = Omit<React.ComponentPropsWithoutRef<"div">, "child
|
|
|
143
144
|
* the built-in CRM set.
|
|
144
145
|
*/
|
|
145
146
|
highlights?: RecordPageHighlight[] | false;
|
|
147
|
+
/**
|
|
148
|
+
* Wires the header's Comments entry point (#864) to crisp's own,
|
|
149
|
+
* already-closed `product/comments` panel (#625) — the gap #864 found
|
|
150
|
+
* wasn't the comments feature itself, only that `RecordPage` never
|
|
151
|
+
* opened it. Controlled the same way `notes`/`tasks` are: supply this
|
|
152
|
+
* (even `[]`) and `onPostComment` to own the data yourself; omit both to
|
|
153
|
+
* let `RecordPage` keep a small self-contained thread list, same as its
|
|
154
|
+
* default Notes/Tasks behaviour.
|
|
155
|
+
*/
|
|
156
|
+
comments?: CommentThread[];
|
|
157
|
+
onPostComment?: (text: string, threadId: string | null) => void;
|
|
158
|
+
/**
|
|
159
|
+
* Attributes a self-managed comment's `author` (id/name/avatar) — has no
|
|
160
|
+
* effect when `comments` is controlled, since then every thread's author
|
|
161
|
+
* is already the caller's own data. Defaults to a synthetic "You", same
|
|
162
|
+
* as Notes/Tasks already show for a comment-less consumer.
|
|
163
|
+
*/
|
|
164
|
+
currentUser?: CommentAuthor;
|
|
165
|
+
/** Called when the header's Share button is clicked. Renders regardless
|
|
166
|
+
* (matching Compose email/Add to list's own no-op-until-wired
|
|
167
|
+
* convention) — Attio's own Share opens a dialog crisp has no measured
|
|
168
|
+
* content for; only the entry point is in scope here (#864). */
|
|
169
|
+
onShare?: () => void;
|
|
146
170
|
};
|
|
147
171
|
/**
|
|
148
172
|
* Every chrome string RecordPage renders. Supplied as a PARTIAL map, so
|
|
@@ -161,6 +185,14 @@ export type RecordPageLabels = {
|
|
|
161
185
|
addToFavourites: string;
|
|
162
186
|
removeFromFavourites: string;
|
|
163
187
|
copyRecordLink: string;
|
|
188
|
+
/** "…" record actions menu (#621): configure the record page's layout. */
|
|
189
|
+
configurePage: string;
|
|
190
|
+
/** "…" record actions menu (#621): copy this page's own URL. */
|
|
191
|
+
copyPageUrl: string;
|
|
192
|
+
/** "…" record actions menu (#621): copy the record's raw id. */
|
|
193
|
+
copyRecordId: string;
|
|
194
|
+
/** "…" record actions menu (#621): merge this record into another. */
|
|
195
|
+
mergeRecords: string;
|
|
164
196
|
deleteRecord: string;
|
|
165
197
|
linkRecords: string;
|
|
166
198
|
logANote: string;
|
|
@@ -172,6 +204,10 @@ export type RecordPageLabels = {
|
|
|
172
204
|
composeEmail: string;
|
|
173
205
|
askAttio: string;
|
|
174
206
|
addToList: string;
|
|
207
|
+
/** The header's text-only Share button (#864, measured: no icon). */
|
|
208
|
+
share: string;
|
|
209
|
+
/** aria-label on the header's Comments icon button (#864). */
|
|
210
|
+
comments: string;
|
|
175
211
|
/** Empty state under the Lists panel. */
|
|
176
212
|
noLists: string;
|
|
177
213
|
highlights: string;
|
|
@@ -268,7 +304,7 @@ export declare namespace RecordDetails {
|
|
|
268
304
|
* Emails sections (Notes & Tasks are live — add and check things off). Drop it
|
|
269
305
|
* into the app's main content area.
|
|
270
306
|
*/
|
|
271
|
-
export declare function RecordPage({ record, columns, collection, labels, onBack, onToggleFull, full, className, onEdit, tabs: tabsProp, defaultTab, notes: notesProp, onAddNote, tasks: tasksProp, onAddTask, onToggleTask, sections, highlights: highlightsProp, quickActions: quickActionsProp, ...rest }: RecordPageProps): React.JSX.Element;
|
|
307
|
+
export declare function RecordPage({ record, columns, collection, labels, onBack, onToggleFull, full, className, onEdit, tabs: tabsProp, defaultTab, notes: notesProp, onAddNote, tasks: tasksProp, onAddTask, onToggleTask, sections, highlights: highlightsProp, quickActions: quickActionsProp, comments: commentsProp, onPostComment, currentUser, onShare, ...rest }: RecordPageProps): React.JSX.Element;
|
|
272
308
|
export declare namespace RecordPage {
|
|
273
309
|
var displayName: string;
|
|
274
310
|
}
|
|
@@ -3,6 +3,8 @@ export type Theme = "light" | "dark";
|
|
|
3
3
|
export declare const contract: MapLeafNodes<{
|
|
4
4
|
bgBrandSolid: "brand600";
|
|
5
5
|
bgBrandSolidPressed: "brand700";
|
|
6
|
+
bgBrandContrast: "brandContrast";
|
|
7
|
+
fgBrandContrast: "brandContrast";
|
|
6
8
|
fgOnBrand: "white";
|
|
7
9
|
fgOnTone: "ink";
|
|
8
10
|
bgSurface: "gray00";
|
|
@@ -43,6 +45,7 @@ export declare const contract: MapLeafNodes<{
|
|
|
43
45
|
strokeFocusRing: "focusRing";
|
|
44
46
|
bgSuccess: "green600";
|
|
45
47
|
bgWarning: "amber600";
|
|
48
|
+
bgWarningSolid: "amberSolid";
|
|
46
49
|
bgOrange: "orange600";
|
|
47
50
|
bgCyan: "cyan600";
|
|
48
51
|
bgPurple: "purple600";
|
|
@@ -68,7 +71,7 @@ export declare const contract: MapLeafNodes<{
|
|
|
68
71
|
shadowSelect: "selectShadow";
|
|
69
72
|
}, `var(--${string})`> & {
|
|
70
73
|
space: Record<"0.5" | "1" | "1.5" | "2" | "2.5" | "3" | "3.5" | "4" | "5" | "6" | "8" | "px", `var(--${string})`>;
|
|
71
|
-
radius: Record<"2xl" | "3xl" | "chip" | "full" | "lg" | "md" | "sm" | "xl", `var(--${string})`>;
|
|
74
|
+
radius: Record<"2xl" | "3xl" | "chip" | "full" | "lg" | "md" | "sm" | "xl" | "xs", `var(--${string})`>;
|
|
72
75
|
size: Record<"calendarCell" | "calendarPill" | "chip" | "header" | "icon" | "menuRow" | "row" | "selectIconLg" | "selectTriggerLg" | "selectTriggerMd" | "tableHeader" | "tableRow", `var(--${string})`>;
|
|
73
76
|
font: Record<"sans", `var(--${string})`>;
|
|
74
77
|
text: Record<"lg" | "md" | "sm" | "xl" | "xs", `var(--${string})`>;
|
|
@@ -12,7 +12,7 @@ export declare const palette: {
|
|
|
12
12
|
readonly dark: "#101112";
|
|
13
13
|
};
|
|
14
14
|
readonly gray50: {
|
|
15
|
-
readonly light: "#
|
|
15
|
+
readonly light: "#f7f8f9";
|
|
16
16
|
readonly dark: "#101112";
|
|
17
17
|
};
|
|
18
18
|
readonly gray900: {
|
|
@@ -20,7 +20,7 @@ export declare const palette: {
|
|
|
20
20
|
readonly dark: "#f5f5f5";
|
|
21
21
|
};
|
|
22
22
|
readonly line200: {
|
|
23
|
-
readonly light: "#
|
|
23
|
+
readonly light: "#dcdee3";
|
|
24
24
|
readonly dark: "#212224";
|
|
25
25
|
};
|
|
26
26
|
readonly line100: {
|
|
@@ -108,23 +108,27 @@ export declare const palette: {
|
|
|
108
108
|
readonly dark: "#9a9aa2";
|
|
109
109
|
};
|
|
110
110
|
readonly brand600: {
|
|
111
|
-
readonly light: "#
|
|
112
|
-
readonly dark: "#
|
|
111
|
+
readonly light: "#0298d9";
|
|
112
|
+
readonly dark: "#0298d9";
|
|
113
113
|
};
|
|
114
114
|
readonly brand700: {
|
|
115
|
-
readonly light: "#
|
|
116
|
-
readonly dark: "#
|
|
115
|
+
readonly light: "#0283bb";
|
|
116
|
+
readonly dark: "#0283bb";
|
|
117
|
+
};
|
|
118
|
+
readonly brandContrast: {
|
|
119
|
+
readonly light: "#0278ac";
|
|
120
|
+
readonly dark: "#0278ac";
|
|
117
121
|
};
|
|
118
122
|
readonly red600: {
|
|
119
|
-
readonly light: "#
|
|
123
|
+
readonly light: "#fa342c";
|
|
120
124
|
readonly dark: "#ff5a5f";
|
|
121
125
|
};
|
|
122
126
|
readonly red700: {
|
|
123
|
-
readonly light: "#
|
|
127
|
+
readonly light: "#ca1d13";
|
|
124
128
|
readonly dark: "#ba2525";
|
|
125
129
|
};
|
|
126
130
|
readonly red500: {
|
|
127
|
-
readonly light: "#
|
|
131
|
+
readonly light: "#fa342c";
|
|
128
132
|
readonly dark: "#ff5a5f";
|
|
129
133
|
};
|
|
130
134
|
readonly fieldFocus: {
|
|
@@ -160,11 +164,15 @@ export declare const palette: {
|
|
|
160
164
|
readonly dark: "#5e98fe";
|
|
161
165
|
};
|
|
162
166
|
readonly green600: {
|
|
163
|
-
readonly light: "#
|
|
167
|
+
readonly light: "#079171";
|
|
164
168
|
readonly dark: "#2ea968";
|
|
165
169
|
};
|
|
166
170
|
readonly amber600: {
|
|
167
|
-
readonly light: "#
|
|
171
|
+
readonly light: "#9b7821";
|
|
172
|
+
readonly dark: "#e0982a";
|
|
173
|
+
};
|
|
174
|
+
readonly amberSolid: {
|
|
175
|
+
readonly light: "#fbdc65";
|
|
168
176
|
readonly dark: "#e0982a";
|
|
169
177
|
};
|
|
170
178
|
readonly orange600: {
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
export declare const semantic: {
|
|
2
2
|
bgBrandSolid: "brand600";
|
|
3
3
|
bgBrandSolidPressed: "brand700";
|
|
4
|
+
/** your-moon/crisp#897: the AA-safe darker sibling of `bgBrandSolid` — a
|
|
5
|
+
* SOLID fill carrying white text (Button primary, Badge solid+brand,
|
|
6
|
+
* Avatar's brand tone). `bgBrandSolid` itself stays the exact brand
|
|
7
|
+
* accent (focus rings, selected states, icons, tints), unpaired with
|
|
8
|
+
* white text anywhere that matters for contrast. */
|
|
9
|
+
bgBrandContrast: "brandContrast";
|
|
10
|
+
/** your-moon/crisp#897: brand-coloured TEXT sitting on a white page
|
|
11
|
+
* (TextLink/Text's `brand` tone) — same value as `bgBrandContrast`,
|
|
12
|
+
* named separately because one's a background and one's a foreground,
|
|
13
|
+
* matching every other fg/bg pair in this file. */
|
|
14
|
+
fgBrandContrast: "brandContrast";
|
|
4
15
|
fgOnBrand: "white";
|
|
5
16
|
fgOnTone: "ink";
|
|
6
17
|
bgSurface: "gray00";
|
|
@@ -60,6 +71,10 @@ export declare const semantic: {
|
|
|
60
71
|
strokeFocusRing: "focusRing";
|
|
61
72
|
bgSuccess: "green600";
|
|
62
73
|
bgWarning: "amber600";
|
|
74
|
+
/** A SOLID warning fill (Badge's `variant="solid" tone="warning"`) — seed's
|
|
75
|
+
* own warning-solid is a distinct, paler yellow, not `bgWarning` tinted
|
|
76
|
+
* lighter. See `amberSolid` in palette.ts. */
|
|
77
|
+
bgWarningSolid: "amberSolid";
|
|
63
78
|
bgOrange: "orange600";
|
|
64
79
|
bgCyan: "cyan600";
|
|
65
80
|
bgPurple: "purple600";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crisp-ui-kit/crisp",
|
|
3
|
-
"version": "0.57.
|
|
3
|
+
"version": "0.57.1",
|
|
4
4
|
"description": "A lean React design system, measured pixel-for-pixel from Attio.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -33,6 +33,11 @@
|
|
|
33
33
|
"./styles.css": "./dist/styles.css",
|
|
34
34
|
"./styles.layered.css": "./dist/styles.layered.css",
|
|
35
35
|
"./base.css": "./dist/base.css",
|
|
36
|
+
"./accentpicker": {
|
|
37
|
+
"types": "./dist/types/components/accentpicker/index.d.ts",
|
|
38
|
+
"import": "./dist/esm/components/accentpicker/index.js",
|
|
39
|
+
"require": "./dist/cjs/components/accentpicker/index.js"
|
|
40
|
+
},
|
|
36
41
|
"./accordion": {
|
|
37
42
|
"types": "./dist/types/components/accordion/index.d.ts",
|
|
38
43
|
"import": "./dist/esm/components/accordion/index.js",
|