@crisp-ui-kit/crisp 0.52.4 → 0.52.5
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/board.css +6 -6
- package/dist/board.layered.css +6 -6
- package/dist/cjs/components/datatable/datatable.recipe.js +4 -1
- package/dist/cjs/components/input/input.recipe.js +6 -1
- package/dist/cjs/components/switch/switch.recipe.js +4 -0
- package/dist/cjs/components/table/table.recipe.js +5 -1
- package/dist/cjs/components/textarea/textarea.recipe.js +6 -1
- package/dist/cjs/product/board/board.recipe.js +16 -6
- package/dist/cjs/tokens/elevation.js +17 -2
- package/dist/cjs/tokens/palette.js +17 -0
- package/dist/cjs/tokens/semantic.js +2 -0
- package/dist/datatable.css +30 -24
- package/dist/datatable.layered.css +30 -24
- package/dist/esm/components/datatable/datatable.recipe.js +4 -1
- package/dist/esm/components/input/input.recipe.js +6 -1
- package/dist/esm/components/switch/switch.recipe.js +4 -0
- package/dist/esm/components/table/table.recipe.js +5 -1
- package/dist/esm/components/textarea/textarea.recipe.js +6 -1
- package/dist/esm/product/board/board.recipe.js +16 -6
- package/dist/esm/tokens/elevation.js +17 -2
- package/dist/esm/tokens/palette.js +17 -0
- package/dist/esm/tokens/semantic.js +2 -0
- package/dist/input.css +1 -1
- package/dist/input.layered.css +1 -1
- package/dist/native/tokens.d.ts +1 -1
- package/dist/native/tokens.js +8 -0
- package/dist/styles.css +46 -34
- package/dist/styles.layered.css +46 -34
- package/dist/switch.css +1 -1
- package/dist/switch.layered.css +1 -1
- package/dist/table.css +3 -1
- package/dist/table.layered.css +3 -1
- package/dist/textarea.css +1 -1
- package/dist/textarea.layered.css +1 -1
- package/dist/tokens.css +4 -0
- package/dist/tokens.json +8 -0
- package/dist/types/components/switch/switch.recipe.d.ts +1 -0
- package/dist/types/tokens/contract.d.ts +2 -0
- package/dist/types/tokens/elevation.d.ts +17 -2
- package/dist/types/tokens/palette.d.ts +8 -0
- package/dist/types/tokens/semantic.d.ts +2 -0
- package/package.json +1 -1
package/dist/table.layered.css
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
display: block; box-sizing: border-box; background: var(--crisp-bg-surface);
|
|
4
4
|
& .crisp-table-scroll { overflow-x: auto; }
|
|
5
5
|
& table { width: 100%; border-collapse: separate; border-spacing: 0; font-family: var(--crisp-font-sans); font-size: var(--crisp-text-lg); color: var(--crisp-fg-primary); }
|
|
6
|
-
|
|
6
|
+
/* #465: 12px, not crisp's old 8px -- measured on a live header cell
|
|
7
|
+
(padding: 0 12px) and independently on a body cell's text inset (getBoundingClientRect delta from the cell edge). Matches ColumnCalc's own already-correct 12px trigger inset. */
|
|
8
|
+
& th, & td { position: relative; height: var(--crisp-size-tableRow); padding: 0 var(--crisp-space-3); border-bottom: 1px solid var(--crisp-border-subtle); border-inline-end: 1px solid var(--crisp-border-subtle); text-align: start; vertical-align: middle; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
7
9
|
& th { height: var(--crisp-size-tableHeader); background: var(--crisp-bg-surface); border-top: 1px solid var(--crisp-border-subtle); font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); letter-spacing: -0.14px; color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); user-select: none; }
|
|
8
10
|
& td { color: var(--crisp-fg-primary); background: var(--crisp-bg-surface); }
|
|
9
11
|
& th:last-child, & td:last-child { border-inline-end: none; }
|
package/dist/textarea.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.crisp-textarea {
|
|
2
2
|
position: relative; display: block; width: 100%; font-family: var(--crisp-font-sans);
|
|
3
|
-
& .crisp-textarea-field { box-sizing: border-box; display: block; width: 100%; min-height: 80px; resize: vertical; margin: 0; padding: var(--crisp-space-2-5) 14px; border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-ring-
|
|
3
|
+
& .crisp-textarea-field { box-sizing: border-box; display: block; width: 100%; min-height: 80px; resize: vertical; margin: 0; padding: var(--crisp-space-2-5) 14px; border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-ring-field); font-family: inherit; font-size: var(--crisp-text-lg); line-height: 20px; color: var(--crisp-fg-primary); outline: none; transition: box-shadow .15s ease; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
|
|
4
4
|
& .crisp-textarea-field::placeholder { color: var(--crisp-fg-muted); }
|
|
5
5
|
& .crisp-textarea-field:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
6
6
|
/* seed-design's focus treatment, same as Input: a 2px ring on an ::after
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@layer crisp-components {
|
|
2
2
|
.crisp-textarea {
|
|
3
3
|
position: relative; display: block; width: 100%; font-family: var(--crisp-font-sans);
|
|
4
|
-
& .crisp-textarea-field { box-sizing: border-box; display: block; width: 100%; min-height: 80px; resize: vertical; margin: 0; padding: var(--crisp-space-2-5) 14px; border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-ring-
|
|
4
|
+
& .crisp-textarea-field { box-sizing: border-box; display: block; width: 100%; min-height: 80px; resize: vertical; margin: 0; padding: var(--crisp-space-2-5) 14px; border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-ring-field); font-family: inherit; font-size: var(--crisp-text-lg); line-height: 20px; color: var(--crisp-fg-primary); outline: none; transition: box-shadow .15s ease; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
|
|
5
5
|
& .crisp-textarea-field::placeholder { color: var(--crisp-fg-muted); }
|
|
6
6
|
& .crisp-textarea-field:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
7
7
|
/* seed-design's focus treatment, same as Input: a 2px ring on an ::after
|
package/dist/tokens.css
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
--crisp-border-default: #e4e4e7;
|
|
9
9
|
--crisp-border-subtle: #eeeff1;
|
|
10
10
|
--crisp-ring-neutral: transparent;
|
|
11
|
+
--crisp-ring-field: rgba(0,0,0,0.06);
|
|
12
|
+
--crisp-ring-switch: #d9dade;
|
|
11
13
|
--crisp-bg-tile-active: #ffffff;
|
|
12
14
|
--crisp-shadow-tile-active: rgba(0,0,0,0.04);
|
|
13
15
|
--crisp-bg-overlay-frost: #ffffff;
|
|
@@ -55,6 +57,8 @@
|
|
|
55
57
|
--crisp-border-default: #212224;
|
|
56
58
|
--crisp-border-subtle: #1c1d1f;
|
|
57
59
|
--crisp-ring-neutral: #212224;
|
|
60
|
+
--crisp-ring-field: #212224;
|
|
61
|
+
--crisp-ring-switch: #212224;
|
|
58
62
|
--crisp-bg-tile-active: #101112;
|
|
59
63
|
--crisp-shadow-tile-active: rgba(0,0,0,0);
|
|
60
64
|
--crisp-bg-overlay-frost: #1c1d1f;
|
package/dist/tokens.json
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
"borderDefault": "#e4e4e7",
|
|
11
11
|
"borderSubtle": "#eeeff1",
|
|
12
12
|
"ringNeutral": "transparent",
|
|
13
|
+
"ringField": "rgba(0,0,0,0.06)",
|
|
14
|
+
"ringSwitch": "#d9dade",
|
|
13
15
|
"bgTileActive": "#ffffff",
|
|
14
16
|
"shadowTileActive": "rgba(0,0,0,0.04)",
|
|
15
17
|
"bgOverlayFrost": "#ffffff",
|
|
@@ -56,6 +58,8 @@
|
|
|
56
58
|
"borderDefault": "#212224",
|
|
57
59
|
"borderSubtle": "#1c1d1f",
|
|
58
60
|
"ringNeutral": "#212224",
|
|
61
|
+
"ringField": "#212224",
|
|
62
|
+
"ringSwitch": "#212224",
|
|
59
63
|
"bgTileActive": "#101112",
|
|
60
64
|
"shadowTileActive": "rgba(0,0,0,0)",
|
|
61
65
|
"bgOverlayFrost": "#1c1d1f",
|
|
@@ -103,6 +107,8 @@
|
|
|
103
107
|
"line200": "#e4e4e7",
|
|
104
108
|
"line100": "#eeeff1",
|
|
105
109
|
"ringNeutral": "transparent",
|
|
110
|
+
"ringField": "rgba(0,0,0,0.06)",
|
|
111
|
+
"ringSwitch": "#d9dade",
|
|
106
112
|
"tileActive": "#ffffff",
|
|
107
113
|
"tileActiveShadow": "rgba(0,0,0,0.04)",
|
|
108
114
|
"overlayFrost": "#ffffff",
|
|
@@ -148,6 +154,8 @@
|
|
|
148
154
|
"line200": "#212224",
|
|
149
155
|
"line100": "#1c1d1f",
|
|
150
156
|
"ringNeutral": "#212224",
|
|
157
|
+
"ringField": "#212224",
|
|
158
|
+
"ringSwitch": "#212224",
|
|
151
159
|
"tileActive": "#101112",
|
|
152
160
|
"tileActiveShadow": "rgba(0,0,0,0)",
|
|
153
161
|
"overlayFrost": "#1c1d1f",
|
|
@@ -10,6 +10,8 @@ export declare const contract: MapLeafNodes<{
|
|
|
10
10
|
borderDefault: "line200";
|
|
11
11
|
borderSubtle: "line100";
|
|
12
12
|
ringNeutral: "ringNeutral";
|
|
13
|
+
ringField: "ringField";
|
|
14
|
+
ringSwitch: "ringSwitch";
|
|
13
15
|
bgTileActive: "tileActive";
|
|
14
16
|
shadowTileActive: "tileActiveShadow";
|
|
15
17
|
bgOverlayFrost: "overlayFrost";
|
|
@@ -23,8 +23,16 @@ export declare const elevation: {
|
|
|
23
23
|
*/
|
|
24
24
|
readonly modal: `0 8px 28px -6px var(--${string}), 0 18px 88px -4px var(--${string}), 0 0 1px var(--${string})`;
|
|
25
25
|
/**
|
|
26
|
-
* The neutral/outlined
|
|
27
|
-
* sidebar search, record-page
|
|
26
|
+
* The neutral/outlined BUTTON-CHROME shadow — real buttons only: the
|
|
27
|
+
* sidebar search trigger, record-page action buttons, table toolbar
|
|
28
|
+
* buttons. #466 corrects this doc comment's own former claim that it
|
|
29
|
+
* covers "inputs, textareas" too — it doesn't: a live Attio text field
|
|
30
|
+
* (Settings page, a real typed input) measures a single 1px ring, none of
|
|
31
|
+
* this token's glow/drop-shadow layers. Confirmed the other direction
|
|
32
|
+
* too — Attio's own white-filled chrome buttons ("Inbox", "Ask Attio",
|
|
33
|
+
* "All Companies" view chip) match this three-layer value exactly, so the
|
|
34
|
+
* token itself was right; only Input/Textarea's use of it was wrong. See
|
|
35
|
+
* `textField` below for the real field shadow.
|
|
28
36
|
*
|
|
29
37
|
* The two raw values **are** the measured value (Lessons 22 and 29) and
|
|
30
38
|
* must stay raw. `rgba(0,0,0,0.04)` equals `tileActiveShadow`'s light value by
|
|
@@ -32,6 +40,13 @@ export declare const elevation: {
|
|
|
32
40
|
* dark mode. Only the ring is theme-aware, via `ringNeutral`.
|
|
33
41
|
*/
|
|
34
42
|
readonly field: `inset 0 0 0 1px var(--${string}), 0 0 2px rgba(28,40,64,0.18), 0 1px 3px rgba(0,0,0,0.04)`;
|
|
43
|
+
/**
|
|
44
|
+
* A real text-entry field (Input, Textarea) — measured live on Attio's
|
|
45
|
+
* Settings page: one 1px inset ring, nothing else (#466). Distinct from
|
|
46
|
+
* `field` above, which is button chrome and carries two extra shadow
|
|
47
|
+
* layers a typed field never has.
|
|
48
|
+
*/
|
|
49
|
+
readonly textField: `inset 0 0 0 1px var(--${string})`;
|
|
35
50
|
/**
|
|
36
51
|
* The same control shadow **without** the theme-aware ring. Lesson 29 added
|
|
37
52
|
* the ring to the neutral-button family but deliberately left `trialbanner`
|
|
@@ -31,6 +31,14 @@ export declare const palette: {
|
|
|
31
31
|
readonly light: "transparent";
|
|
32
32
|
readonly dark: "#212224";
|
|
33
33
|
};
|
|
34
|
+
readonly ringField: {
|
|
35
|
+
readonly light: "rgba(0,0,0,0.06)";
|
|
36
|
+
readonly dark: "#212224";
|
|
37
|
+
};
|
|
38
|
+
readonly ringSwitch: {
|
|
39
|
+
readonly light: "#d9dade";
|
|
40
|
+
readonly dark: "#212224";
|
|
41
|
+
};
|
|
34
42
|
readonly tileActive: {
|
|
35
43
|
readonly light: "#ffffff";
|
|
36
44
|
readonly dark: "#101112";
|
|
@@ -8,6 +8,8 @@ export declare const semantic: {
|
|
|
8
8
|
borderDefault: "line200";
|
|
9
9
|
borderSubtle: "line100";
|
|
10
10
|
ringNeutral: "ringNeutral";
|
|
11
|
+
ringField: "ringField";
|
|
12
|
+
ringSwitch: "ringSwitch";
|
|
11
13
|
bgTileActive: "tileActive";
|
|
12
14
|
shadowTileActive: "tileActiveShadow";
|
|
13
15
|
bgOverlayFrost: "overlayFrost";
|