@crisp-ui-kit/crisp 0.36.0 → 0.38.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/dist/badge.css +5 -5
- package/dist/badge.layered.css +5 -5
- package/dist/cjs/components/badge/badge.recipe.js +11 -5
- package/dist/cjs/components/contextmenu/contextmenu.js +25 -8
- package/dist/cjs/components/contextmenu/contextmenu.recipe.js +5 -2
- package/dist/cjs/components/dialog/dialog.js +1 -1
- package/dist/cjs/components/dialog/dialog.recipe.js +1 -1
- package/dist/cjs/components/fileupload/fileupload.js +2 -2
- package/dist/cjs/components/menu/menu.js +20 -3
- package/dist/cjs/components/menu/menu.recipe.js +4 -3
- package/dist/cjs/components/multiselect/multiselect.js +29 -12
- package/dist/cjs/components/multiselect/multiselect.recipe.js +17 -5
- package/dist/cjs/components/popover/popover.js +25 -8
- package/dist/cjs/components/popover/popover.recipe.js +5 -3
- package/dist/cjs/components/select/select.js +32 -11
- package/dist/cjs/components/select/select.recipe.js +19 -4
- package/dist/cjs/components/tabletoolbar/tabletoolbar.js +50 -6
- package/dist/cjs/core/floating-portal.js +28 -0
- package/dist/cjs/core/floating-stack.js +54 -0
- package/dist/cjs/core/index.js +6 -1
- package/dist/cjs/product/recordstable/recordstable.js +15 -4
- package/dist/cjs/tokens/palette.js +23 -0
- package/dist/cjs/tokens/semantic.js +7 -0
- package/dist/contextmenu.css +1 -1
- package/dist/contextmenu.layered.css +1 -1
- package/dist/dialog.css +1 -1
- package/dist/dialog.layered.css +1 -1
- package/dist/esm/components/badge/badge.recipe.js +11 -5
- package/dist/esm/components/contextmenu/contextmenu.js +25 -8
- package/dist/esm/components/contextmenu/contextmenu.recipe.js +5 -2
- package/dist/esm/components/dialog/dialog.js +1 -1
- package/dist/esm/components/dialog/dialog.recipe.js +1 -1
- package/dist/esm/components/fileupload/fileupload.js +2 -2
- package/dist/esm/components/menu/menu.js +21 -4
- package/dist/esm/components/menu/menu.recipe.js +4 -3
- package/dist/esm/components/multiselect/multiselect.js +30 -13
- package/dist/esm/components/multiselect/multiselect.recipe.js +17 -5
- package/dist/esm/components/popover/popover.js +26 -9
- package/dist/esm/components/popover/popover.recipe.js +5 -3
- package/dist/esm/components/select/select.js +33 -12
- package/dist/esm/components/select/select.recipe.js +19 -4
- package/dist/esm/components/tabletoolbar/tabletoolbar.js +51 -7
- package/dist/esm/core/floating-portal.js +25 -0
- package/dist/esm/core/floating-stack.js +50 -0
- package/dist/esm/core/index.js +2 -0
- package/dist/esm/product/recordstable/recordstable.js +16 -5
- package/dist/esm/tokens/palette.js +23 -0
- package/dist/esm/tokens/semantic.js +7 -0
- package/dist/menu.css +1 -1
- package/dist/menu.layered.css +1 -1
- package/dist/multiselect.css +7 -1
- package/dist/multiselect.d.ts +2 -2
- package/dist/multiselect.layered.css +7 -1
- package/dist/native/tokens.d.ts +1 -1
- package/dist/native/tokens.js +24 -4
- package/dist/popover.css +1 -1
- package/dist/popover.layered.css +1 -1
- package/dist/select.css +7 -1
- package/dist/select.d.ts +2 -1
- package/dist/select.layered.css +7 -1
- package/dist/styles.css +33 -11
- package/dist/styles.layered.css +33 -11
- package/dist/tokens.css +10 -0
- package/dist/tokens.json +24 -4
- package/dist/types/components/fileupload/fileupload.d.ts +1 -1
- package/dist/types/components/multiselect/multiselect.d.ts +3 -1
- package/dist/types/components/multiselect/multiselect.recipe.d.ts +18 -3
- package/dist/types/components/select/select.d.ts +4 -1
- package/dist/types/components/select/select.recipe.d.ts +12 -0
- package/dist/types/components/tabletoolbar/tabletoolbar.d.ts +10 -1
- package/dist/types/core/floating-portal.d.ts +25 -0
- package/dist/types/core/floating-stack.d.ts +13 -0
- package/dist/types/core/index.d.ts +2 -0
- package/dist/types/product/sidebar/index.d.ts +1 -1
- package/dist/types/tokens/contract.d.ts +5 -0
- package/dist/types/tokens/palette.d.ts +20 -0
- package/dist/types/tokens/semantic.d.ts +7 -0
- package/package.json +1 -1
package/dist/tokens.json
CHANGED
|
@@ -39,7 +39,12 @@
|
|
|
39
39
|
"bgCyan": "#00b9eb",
|
|
40
40
|
"bgPurple": "#9b69ff",
|
|
41
41
|
"bgSidebar": "#fbfbfb",
|
|
42
|
-
"bgSubtle": "#fbfbfb"
|
|
42
|
+
"bgSubtle": "#fbfbfb",
|
|
43
|
+
"fgBrandSoft": "#2057bd",
|
|
44
|
+
"fgSuccessSoft": "#186b3d",
|
|
45
|
+
"fgWarningSoft": "#80520d",
|
|
46
|
+
"fgDangerSoft": "#a33539",
|
|
47
|
+
"fgNeutralSoft": "#686870"
|
|
43
48
|
},
|
|
44
49
|
"dark": {
|
|
45
50
|
"bgBrandSolid": "#266df0",
|
|
@@ -80,7 +85,12 @@
|
|
|
80
85
|
"bgCyan": "#00b9eb",
|
|
81
86
|
"bgPurple": "#9b69ff",
|
|
82
87
|
"bgSidebar": "#0e0f10",
|
|
83
|
-
"bgSubtle": "#0e0f10"
|
|
88
|
+
"bgSubtle": "#0e0f10",
|
|
89
|
+
"fgBrandSoft": "#568df3",
|
|
90
|
+
"fgSuccessSoft": "#2ea968",
|
|
91
|
+
"fgWarningSoft": "#e0982a",
|
|
92
|
+
"fgDangerSoft": "#ff5a5f",
|
|
93
|
+
"fgNeutralSoft": "#9a9aa2"
|
|
84
94
|
}
|
|
85
95
|
},
|
|
86
96
|
"palette": {
|
|
@@ -122,7 +132,12 @@
|
|
|
122
132
|
"orange600": "#f97514",
|
|
123
133
|
"cyan600": "#00b9eb",
|
|
124
134
|
"purple600": "#9b69ff",
|
|
125
|
-
"graySidebar": "#fbfbfb"
|
|
135
|
+
"graySidebar": "#fbfbfb",
|
|
136
|
+
"softBrandText": "#2057bd",
|
|
137
|
+
"softSuccessText": "#186b3d",
|
|
138
|
+
"softWarningText": "#80520d",
|
|
139
|
+
"softDangerText": "#a33539",
|
|
140
|
+
"softNeutralText": "#686870"
|
|
126
141
|
},
|
|
127
142
|
"dark": {
|
|
128
143
|
"gray00": "#0a0a0a",
|
|
@@ -162,7 +177,12 @@
|
|
|
162
177
|
"orange600": "#f97514",
|
|
163
178
|
"cyan600": "#00b9eb",
|
|
164
179
|
"purple600": "#9b69ff",
|
|
165
|
-
"graySidebar": "#0e0f10"
|
|
180
|
+
"graySidebar": "#0e0f10",
|
|
181
|
+
"softBrandText": "#568df3",
|
|
182
|
+
"softSuccessText": "#2ea968",
|
|
183
|
+
"softWarningText": "#e0982a",
|
|
184
|
+
"softDangerText": "#ff5a5f",
|
|
185
|
+
"softNeutralText": "#9a9aa2"
|
|
166
186
|
}
|
|
167
187
|
},
|
|
168
188
|
"space": {
|
|
@@ -21,4 +21,4 @@ export type FileUploadProps = UseFileUploadProps & Omit<React.ComponentPropsWith
|
|
|
21
21
|
* is theirs by construction. Controlled or uncontrolled, the same way every
|
|
22
22
|
* other crisp component is.
|
|
23
23
|
*/
|
|
24
|
-
export declare function FileUpload({ className, labels, "aria-label": ariaLabel, accept, disabled: disabledProp, required, invalid: invalidProp, readOnly, maxFiles, maxFileSize, minFileSize, name, validate, preventDocumentDrop, onFileReject, onFileAccept, acceptedFileEntries: acceptedFileEntriesProp, defaultAcceptedFileEntries, onAcceptedFileEntriesChange, ...rest }: FileUploadProps): React.JSX.Element;
|
|
24
|
+
export declare function FileUpload({ className, labels, "aria-label": ariaLabel, id, accept, disabled: disabledProp, required, invalid: invalidProp, readOnly, maxFiles, maxFileSize, minFileSize, name, validate, preventDocumentDrop, onFileReject, onFileAccept, acceptedFileEntries: acceptedFileEntriesProp, defaultAcceptedFileEntries, onAcceptedFileEntriesChange, ...rest }: FileUploadProps): React.JSX.Element;
|
|
@@ -37,6 +37,8 @@ export type MultiSelectProps = Omit<React.ComponentPropsWithoutRef<"div">, "valu
|
|
|
37
37
|
/** Shown when the search matches nothing. */
|
|
38
38
|
emptyLabel?: string;
|
|
39
39
|
disabled?: boolean;
|
|
40
|
+
/** Red ring + `aria-invalid`, matching `Input`'s and `Select`'s. */
|
|
41
|
+
invalid?: boolean;
|
|
40
42
|
className?: string;
|
|
41
43
|
"aria-label"?: string;
|
|
42
44
|
};
|
|
@@ -46,7 +48,7 @@ export type MultiSelectProps = Omit<React.ComponentPropsWithoutRef<"div">, "valu
|
|
|
46
48
|
* popover with a search field over rows of "[chip] … [checkbox]" that toggle on
|
|
47
49
|
* click (the menu stays open). Keyboard: ↑/↓ move, Enter toggles, Esc closes.
|
|
48
50
|
*/
|
|
49
|
-
export declare function MultiSelect({ options, value: valueProp, defaultValue, onValueChange, name, required, id, placeholder, searchable, searchPlaceholder, emptyLabel, disabled, className, "aria-label": ariaLabel, ...rest }: MultiSelectProps): React.JSX.Element;
|
|
51
|
+
export declare function MultiSelect({ options, value: valueProp, defaultValue, onValueChange, name, required, id, placeholder, searchable, searchPlaceholder, emptyLabel, disabled, invalid, className, "aria-label": ariaLabel, ...rest }: MultiSelectProps): React.JSX.Element;
|
|
50
52
|
export declare namespace MultiSelect {
|
|
51
53
|
var displayName: string;
|
|
52
54
|
}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
|
-
declare const config: import("../..").RecipeConfig<{
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
declare const config: import("../..").RecipeConfig<{
|
|
2
|
+
invalid: {
|
|
3
|
+
true: string;
|
|
4
|
+
false: string;
|
|
5
|
+
};
|
|
6
|
+
}>;
|
|
7
|
+
export declare const multiselectRecipe: import("../..").RecipeFn<{
|
|
8
|
+
invalid: {
|
|
9
|
+
true: string;
|
|
10
|
+
false: string;
|
|
11
|
+
};
|
|
12
|
+
}> & {
|
|
13
|
+
config: import("../..").RecipeConfig<{
|
|
14
|
+
invalid: {
|
|
15
|
+
true: string;
|
|
16
|
+
false: string;
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
4
19
|
};
|
|
5
20
|
export default config;
|
|
@@ -42,6 +42,9 @@ export type SelectProps = Omit<React.ComponentPropsWithoutRef<"div">, "value" |
|
|
|
42
42
|
/** Shown when the search matches nothing. */
|
|
43
43
|
emptyLabel?: string;
|
|
44
44
|
disabled?: boolean;
|
|
45
|
+
/** Red ring + `aria-invalid`, matching `Input`'s. Outranks the open/focus
|
|
46
|
+
* ring — a field being corrected stays visibly wrong while it is. */
|
|
47
|
+
invalid?: boolean;
|
|
45
48
|
className?: string;
|
|
46
49
|
"aria-label"?: string;
|
|
47
50
|
id?: string;
|
|
@@ -53,7 +56,7 @@ export type SelectProps = Omit<React.ComponentPropsWithoutRef<"div">, "value" |
|
|
|
53
56
|
* "No results" empty state). Full keyboard model — ↑/↓ move, Enter/Space pick,
|
|
54
57
|
* Esc close, Home/End jump, opens upward when tight. Controlled or uncontrolled.
|
|
55
58
|
*/
|
|
56
|
-
export declare function Select({ options, value, defaultValue, onValueChange, name, required, placeholder, variant, width, searchable, searchPlaceholder, emptyLabel, disabled, className, "aria-label": ariaLabel, id, ...rest }: SelectProps): React.JSX.Element;
|
|
59
|
+
export declare function Select({ options, value, defaultValue, onValueChange, name, required, placeholder, variant, width, searchable, searchPlaceholder, emptyLabel, disabled, invalid, className, "aria-label": ariaLabel, id, ...rest }: SelectProps): React.JSX.Element;
|
|
57
60
|
export declare namespace Select {
|
|
58
61
|
var displayName: string;
|
|
59
62
|
}
|
|
@@ -7,6 +7,10 @@ declare const config: import("../..").RecipeConfig<{
|
|
|
7
7
|
full: string;
|
|
8
8
|
auto: string;
|
|
9
9
|
};
|
|
10
|
+
invalid: {
|
|
11
|
+
true: string;
|
|
12
|
+
false: string;
|
|
13
|
+
};
|
|
10
14
|
}>;
|
|
11
15
|
export declare const selectRecipe: import("../..").RecipeFn<{
|
|
12
16
|
variant: {
|
|
@@ -17,6 +21,10 @@ export declare const selectRecipe: import("../..").RecipeFn<{
|
|
|
17
21
|
full: string;
|
|
18
22
|
auto: string;
|
|
19
23
|
};
|
|
24
|
+
invalid: {
|
|
25
|
+
true: string;
|
|
26
|
+
false: string;
|
|
27
|
+
};
|
|
20
28
|
}> & {
|
|
21
29
|
config: import("../..").RecipeConfig<{
|
|
22
30
|
variant: {
|
|
@@ -27,6 +35,10 @@ export declare const selectRecipe: import("../..").RecipeFn<{
|
|
|
27
35
|
full: string;
|
|
28
36
|
auto: string;
|
|
29
37
|
};
|
|
38
|
+
invalid: {
|
|
39
|
+
true: string;
|
|
40
|
+
false: string;
|
|
41
|
+
};
|
|
30
42
|
}>;
|
|
31
43
|
};
|
|
32
44
|
export default config;
|
|
@@ -8,18 +8,27 @@ export type ToolbarSort = {
|
|
|
8
8
|
key: string;
|
|
9
9
|
dir: SortDir;
|
|
10
10
|
};
|
|
11
|
-
export type ToolbarFilterOp = "contains" | "is" | "isnot" | "empty" | "notempty";
|
|
11
|
+
export type ToolbarFilterOp = "contains" | "is" | "isnot" | "isanyof" | "empty" | "notempty";
|
|
12
12
|
export type ToolbarFilter = {
|
|
13
13
|
id: string;
|
|
14
14
|
key: string;
|
|
15
15
|
op: ToolbarFilterOp;
|
|
16
16
|
value: string;
|
|
17
|
+
/** Selected values for `"isanyof"` — ignored by every other op. */
|
|
18
|
+
values?: string[];
|
|
17
19
|
};
|
|
18
20
|
export type TableToolbarColumn = {
|
|
19
21
|
key: string;
|
|
20
22
|
label: string;
|
|
21
23
|
/** Leading field-type icon, shown in the field pickers. */
|
|
22
24
|
icon?: IconType;
|
|
25
|
+
/**
|
|
26
|
+
* This column's distinct values (a status/select field's option set, e.g.).
|
|
27
|
+
* Supplying it adds `"isanyof"` — a searchable checkbox list, Attio's
|
|
28
|
+
* faceted multi-select filter — to the column's condition picker. Omit it
|
|
29
|
+
* for a free-text column; there is nothing to check off.
|
|
30
|
+
*/
|
|
31
|
+
values?: string[];
|
|
23
32
|
};
|
|
24
33
|
export type TableToolbarProps = Omit<React.ComponentPropsWithoutRef<"div">, "children"> & {
|
|
25
34
|
/** The fields that can be sorted and filtered on. */
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Portals a floating layer (a `position: fixed` listbox/menu/popover
|
|
4
|
+
* content) to `document.body` — exactly what Tooltip already did with a
|
|
5
|
+
* bare `createPortal` call, pulled out so `Select`, `MultiSelect`, `Menu`,
|
|
6
|
+
* `Popover` and `ContextMenu` share the one implementation (#339).
|
|
7
|
+
*
|
|
8
|
+
* Needed because a `position: fixed` box resolves against the nearest
|
|
9
|
+
* ancestor that establishes a containing block for it — not necessarily the
|
|
10
|
+
* viewport. `transform` (even the identity `scale(1)`), `filter` and
|
|
11
|
+
* `backdrop-filter` all qualify, and `Dialog`'s own measured surface sets
|
|
12
|
+
* both a resting `transform: scale(1)` (so its `@starting-style` entrance
|
|
13
|
+
* has something to animate from) and `backdrop-filter: blur(15px)` (Attio's
|
|
14
|
+
* frosted-glass modal). A floating layer opened from a trigger inside a
|
|
15
|
+
* `Dialog` was rendering offset by the dialog's own box instead of anchored
|
|
16
|
+
* to its trigger.
|
|
17
|
+
*
|
|
18
|
+
* Every caller renders this conditionally on its own `open` state, which
|
|
19
|
+
* starts `false` and is driven only by client interaction — never a prop a
|
|
20
|
+
* fixture sets true at mount (unlike Dialog/Drawer/Command) — so this never
|
|
21
|
+
* touches `document` during SSR, the same safety Tooltip already had.
|
|
22
|
+
*/
|
|
23
|
+
export declare function FloatingPortal({ children, }: {
|
|
24
|
+
children: React.ReactNode;
|
|
25
|
+
}): React.ReactPortal;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Call when a layer opens; call the returned cleanup when it closes. */
|
|
2
|
+
export declare function registerFloatingLayer(el: HTMLElement): () => void;
|
|
3
|
+
/**
|
|
4
|
+
* True when `target` sits inside a layer that was registered strictly after
|
|
5
|
+
* `self` — a layer that could only have been spawned from inside `self`,
|
|
6
|
+
* directly or through further nesting.
|
|
7
|
+
*
|
|
8
|
+
* Pass `null` for `self` when the caller is a hand-rolled dropdown that
|
|
9
|
+
* doesn't register itself on this stack (RecordsTable's and TableToolbar's
|
|
10
|
+
* own popovers, e.g.) — every registered layer then counts, which is the
|
|
11
|
+
* right query for "was this click inside some floating child I opened".
|
|
12
|
+
*/
|
|
13
|
+
export declare function isInsideLaterFloatingLayer(target: Node, self: HTMLElement | null): boolean;
|
|
@@ -3,6 +3,8 @@ export { cx } from "./cx";
|
|
|
3
3
|
export { defineRecipe } from "./define";
|
|
4
4
|
export { withDescribedBy } from "./dialog-description";
|
|
5
5
|
export { isRtlElement } from "./direction";
|
|
6
|
+
export { FloatingPortal } from "./floating-portal";
|
|
7
|
+
export { isInsideLaterFloatingLayer, registerFloatingLayer, } from "./floating-stack";
|
|
6
8
|
export { formValueStyle } from "./form-value";
|
|
7
9
|
export { type FloatingAlign, type PlaceFloatingOptions, placeFloating, } from "./place-floating";
|
|
8
10
|
export { Primitive } from "./primitive";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { ATTIO_SIDEBAR_CHATS_SECTION, ATTIO_SIDEBAR_FOOTER, ATTIO_SIDEBAR_ITEMS, ATTIO_SIDEBAR_LISTS_SECTION, ATTIO_SIDEBAR_RECORDS_SECTION, ATTIO_SIDEBAR_WORKSPACE, Sidebar, type SidebarFooter, type SidebarListsSection, type SidebarNavItem, type SidebarProps, type SidebarRecordItem, type SidebarRecordsSection, type SidebarSection, type SidebarWorkspace, } from "./sidebar";
|
|
1
|
+
export { ATTIO_SIDEBAR_CHATS_SECTION, ATTIO_SIDEBAR_FOOTER, ATTIO_SIDEBAR_ITEMS, ATTIO_SIDEBAR_LISTS_SECTION, ATTIO_SIDEBAR_RECORDS_SECTION, ATTIO_SIDEBAR_WORKSPACE, Sidebar, type SidebarFooter, type SidebarListsSection, type SidebarNavGroup, type SidebarNavGroupItem, type SidebarNavItem, type SidebarProps, type SidebarRecordItem, type SidebarRecordsSection, type SidebarSection, type SidebarWorkspace, } from "./sidebar";
|
|
2
2
|
export { sidebarRecipe } from "./sidebar.recipe";
|
|
@@ -40,6 +40,11 @@ export declare const contract: MapLeafNodes<{
|
|
|
40
40
|
bgPurple: "purple600";
|
|
41
41
|
bgSidebar: "graySidebar";
|
|
42
42
|
bgSubtle: "graySidebar";
|
|
43
|
+
fgBrandSoft: "softBrandText";
|
|
44
|
+
fgSuccessSoft: "softSuccessText";
|
|
45
|
+
fgWarningSoft: "softWarningText";
|
|
46
|
+
fgDangerSoft: "softDangerText";
|
|
47
|
+
fgNeutralSoft: "softNeutralText";
|
|
43
48
|
}, `var(--${string})`> & {
|
|
44
49
|
space: Record<"0.5" | "1" | "1.5" | "2" | "2.5" | "3" | "4" | "5" | "6" | "8" | "px", `var(--${string})`>;
|
|
45
50
|
radius: Record<"2xl" | "chip" | "full" | "lg" | "md" | "sm" | "xl", `var(--${string})`>;
|
|
@@ -151,5 +151,25 @@ export declare const palette: {
|
|
|
151
151
|
readonly light: "#fbfbfb";
|
|
152
152
|
readonly dark: "#0e0f10";
|
|
153
153
|
};
|
|
154
|
+
readonly softBrandText: {
|
|
155
|
+
readonly light: "#2057bd";
|
|
156
|
+
readonly dark: "#568df3";
|
|
157
|
+
};
|
|
158
|
+
readonly softSuccessText: {
|
|
159
|
+
readonly light: "#186b3d";
|
|
160
|
+
readonly dark: "#2ea968";
|
|
161
|
+
};
|
|
162
|
+
readonly softWarningText: {
|
|
163
|
+
readonly light: "#80520d";
|
|
164
|
+
readonly dark: "#e0982a";
|
|
165
|
+
};
|
|
166
|
+
readonly softDangerText: {
|
|
167
|
+
readonly light: "#a33539";
|
|
168
|
+
readonly dark: "#ff5a5f";
|
|
169
|
+
};
|
|
170
|
+
readonly softNeutralText: {
|
|
171
|
+
readonly light: "#686870";
|
|
172
|
+
readonly dark: "#9a9aa2";
|
|
173
|
+
};
|
|
154
174
|
};
|
|
155
175
|
export type PaletteKey = keyof typeof palette;
|
|
@@ -46,5 +46,12 @@ export declare const semantic: {
|
|
|
46
46
|
bgPurple: "purple600";
|
|
47
47
|
bgSidebar: "graySidebar";
|
|
48
48
|
bgSubtle: "graySidebar";
|
|
49
|
+
/** Soft Badge's text colour (#323) — see palette.ts's comment on the
|
|
50
|
+
* soft*Text entries for the Attio measurement this is derived from. */
|
|
51
|
+
fgBrandSoft: "softBrandText";
|
|
52
|
+
fgSuccessSoft: "softSuccessText";
|
|
53
|
+
fgWarningSoft: "softWarningText";
|
|
54
|
+
fgDangerSoft: "softDangerText";
|
|
55
|
+
fgNeutralSoft: "softNeutralText";
|
|
49
56
|
};
|
|
50
57
|
export type Tokens = typeof semantic;
|