@crisp-ui-kit/crisp 0.57.2 → 0.57.4
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/assigneepicker.css +13 -0
- package/dist/assigneepicker.d.ts +7 -0
- package/dist/assigneepicker.layered.css +15 -0
- package/dist/button.css +3 -0
- package/dist/button.d.ts +2 -2
- package/dist/button.layered.css +3 -0
- package/dist/chip.css +1 -1
- package/dist/chip.layered.css +1 -1
- package/dist/cjs/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/cjs/components/button/button.recipe.js +33 -0
- package/dist/cjs/components/chip/chip.recipe.js +3 -1
- package/dist/cjs/components/datatable/datatable.js +6 -3
- package/dist/cjs/components/datatable/datatable.recipe.js +45 -6
- package/dist/cjs/components/datepickerfield/datepickerfield.js +2 -2
- package/dist/cjs/components/datepickerfield/datepickerfield.recipe.js +16 -3
- package/dist/cjs/components/menu/menu.js +65 -9
- package/dist/cjs/components/multiselect/multiselect.js +3 -0
- package/dist/cjs/components/multiselect/multiselect.recipe.js +18 -0
- package/dist/cjs/components/select/select.js +2 -2
- package/dist/cjs/components/select/select.recipe.js +19 -0
- package/dist/cjs/components/table/table.recipe.js +7 -1
- package/dist/cjs/core/floating-portal.js +7 -4
- package/dist/cjs/core/index.js +2 -1
- package/dist/cjs/core/place-floating.js +38 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/product/assigneepicker/assigneepicker.js +127 -0
- package/dist/cjs/product/assigneepicker/assigneepicker.recipe.js +36 -0
- package/dist/cjs/product/assigneepicker/index.js +7 -0
- package/dist/cjs/product/inbox/inbox.js +11 -3
- package/dist/cjs/product/notesgallery/index.js +7 -0
- package/dist/cjs/product/notesgallery/notesgallery.js +80 -0
- package/dist/cjs/product/notesgallery/notesgallery.recipe.js +46 -0
- package/dist/cjs/product/objectpagemenu/index.js +17 -0
- package/dist/cjs/product/objectpagemenu/objectpagemenu.js +26 -0
- package/dist/cjs/product/objectpagemenu/objectpagemenu.recipe.js +30 -0
- package/dist/cjs/product/objectsettings/objectsettings.js +107 -14
- package/dist/cjs/product/recordpage/index.js +2 -1
- package/dist/cjs/product/recordpage/recordpage.js +112 -7
- package/dist/cjs/product/recordpage/recordpage.recipe.js +63 -0
- package/dist/cjs/product/recordpicker/index.js +7 -0
- package/dist/cjs/product/recordpicker/recordpicker.js +100 -0
- package/dist/cjs/product/recordpicker/recordpicker.recipe.js +36 -0
- package/dist/cjs/product/savedviews/index.js +2 -1
- package/dist/cjs/product/savedviews/savedviews.js +22 -0
- package/dist/cjs/product/savedviews/savedviews.recipe.js +47 -0
- package/dist/cjs/product/share/index.js +7 -0
- package/dist/cjs/product/share/share.js +179 -0
- package/dist/cjs/product/share/share.recipe.js +114 -0
- package/dist/cjs/product/shortcutssheet/index.js +17 -0
- package/dist/cjs/product/shortcutssheet/shortcutssheet.js +125 -0
- package/dist/cjs/product/shortcutssheet/shortcutssheet.recipe.js +50 -0
- package/dist/cjs/product/taskeditpopover/index.js +7 -0
- package/dist/cjs/product/taskeditpopover/taskeditpopover.js +159 -0
- package/dist/cjs/product/taskeditpopover/taskeditpopover.recipe.js +68 -0
- package/dist/cjs/product/workspaceswitchermenu/index.js +17 -0
- package/dist/cjs/product/workspaceswitchermenu/workspaceswitchermenu.js +38 -0
- package/dist/cjs/product/workspaceswitchermenu/workspaceswitchermenu.recipe.js +34 -0
- package/dist/cjs/tokens/palette.js +27 -0
- package/dist/cjs/tokens/semantic.js +20 -0
- package/dist/datatable.css +50 -11
- package/dist/datatable.layered.css +50 -11
- package/dist/datepickerfield.css +8 -2
- package/dist/datepickerfield.d.ts +2 -2
- package/dist/datepickerfield.layered.css +8 -2
- package/dist/esm/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/esm/components/button/button.recipe.js +33 -0
- package/dist/esm/components/chip/chip.recipe.js +3 -1
- package/dist/esm/components/datatable/datatable.js +6 -3
- package/dist/esm/components/datatable/datatable.recipe.js +45 -6
- package/dist/esm/components/datepickerfield/datepickerfield.js +2 -2
- package/dist/esm/components/datepickerfield/datepickerfield.recipe.js +16 -3
- package/dist/esm/components/menu/menu.js +64 -8
- package/dist/esm/components/multiselect/multiselect.js +3 -0
- package/dist/esm/components/multiselect/multiselect.recipe.js +18 -0
- package/dist/esm/components/select/select.js +2 -2
- package/dist/esm/components/select/select.recipe.js +19 -0
- package/dist/esm/components/table/table.recipe.js +7 -1
- package/dist/esm/core/floating-portal.js +7 -4
- package/dist/esm/core/index.js +1 -1
- package/dist/esm/core/place-floating.js +37 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/product/assigneepicker/assigneepicker.js +91 -0
- package/dist/esm/product/assigneepicker/assigneepicker.recipe.js +33 -0
- package/dist/esm/product/assigneepicker/index.js +2 -0
- package/dist/esm/product/inbox/inbox.js +11 -3
- package/dist/esm/product/notesgallery/index.js +2 -0
- package/dist/esm/product/notesgallery/notesgallery.js +44 -0
- package/dist/esm/product/notesgallery/notesgallery.recipe.js +43 -0
- package/dist/esm/product/objectpagemenu/index.js +1 -0
- package/dist/esm/product/objectpagemenu/objectpagemenu.js +23 -0
- package/dist/esm/product/objectpagemenu/objectpagemenu.recipe.js +27 -0
- package/dist/esm/product/objectsettings/objectsettings.js +106 -13
- package/dist/esm/product/recordpage/index.js +1 -1
- package/dist/esm/product/recordpage/recordpage.js +112 -8
- package/dist/esm/product/recordpage/recordpage.recipe.js +63 -0
- package/dist/esm/product/recordpicker/index.js +2 -0
- package/dist/esm/product/recordpicker/recordpicker.js +64 -0
- package/dist/esm/product/recordpicker/recordpicker.recipe.js +33 -0
- package/dist/esm/product/savedviews/index.js +1 -1
- package/dist/esm/product/savedviews/savedviews.js +22 -1
- package/dist/esm/product/savedviews/savedviews.recipe.js +47 -0
- package/dist/esm/product/share/index.js +2 -0
- package/dist/esm/product/share/share.js +143 -0
- package/dist/esm/product/share/share.recipe.js +111 -0
- package/dist/esm/product/shortcutssheet/index.js +1 -0
- package/dist/esm/product/shortcutssheet/shortcutssheet.js +88 -0
- package/dist/esm/product/shortcutssheet/shortcutssheet.recipe.js +47 -0
- package/dist/esm/product/taskeditpopover/index.js +2 -0
- package/dist/esm/product/taskeditpopover/taskeditpopover.js +123 -0
- package/dist/esm/product/taskeditpopover/taskeditpopover.recipe.js +65 -0
- package/dist/esm/product/workspaceswitchermenu/index.js +1 -0
- package/dist/esm/product/workspaceswitchermenu/workspaceswitchermenu.js +35 -0
- package/dist/esm/product/workspaceswitchermenu/workspaceswitchermenu.recipe.js +31 -0
- package/dist/esm/tokens/palette.js +27 -0
- package/dist/esm/tokens/semantic.js +20 -0
- package/dist/multiselect.css +18 -0
- package/dist/multiselect.layered.css +18 -0
- package/dist/native/tokens.d.ts +1 -1
- package/dist/native/tokens.js +56 -4
- package/dist/notesgallery.css +15 -0
- package/dist/notesgallery.d.ts +7 -0
- package/dist/notesgallery.layered.css +17 -0
- package/dist/objectpagemenu.css +3 -0
- package/dist/objectpagemenu.d.ts +7 -0
- package/dist/objectpagemenu.layered.css +5 -0
- package/dist/recordpage.css +59 -0
- package/dist/recordpage.layered.css +59 -0
- package/dist/recordpicker.css +13 -0
- package/dist/recordpicker.d.ts +7 -0
- package/dist/recordpicker.layered.css +15 -0
- package/dist/savedviews.css +47 -0
- package/dist/savedviews.layered.css +47 -0
- package/dist/select.css +19 -0
- package/dist/select.layered.css +19 -0
- package/dist/share.css +84 -0
- package/dist/share.d.ts +7 -0
- package/dist/share.layered.css +86 -0
- package/dist/shortcutssheet.css +24 -0
- package/dist/shortcutssheet.d.ts +7 -0
- package/dist/shortcutssheet.layered.css +26 -0
- package/dist/styles.css +438 -16
- package/dist/styles.layered.css +438 -16
- package/dist/table.css +7 -2
- package/dist/table.layered.css +7 -2
- package/dist/taskeditpopover.css +36 -0
- package/dist/taskeditpopover.d.ts +7 -0
- package/dist/taskeditpopover.layered.css +38 -0
- package/dist/tokens.css +26 -0
- package/dist/tokens.json +56 -4
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +9 -1
- package/dist/types/components/button/button.d.ts +2 -0
- package/dist/types/components/button/button.recipe.d.ts +12 -0
- package/dist/types/components/chip/chip.recipe.d.ts +1 -1
- package/dist/types/components/datatable/datatable.d.ts +8 -0
- package/dist/types/components/datepickerfield/datepickerfield.d.ts +4 -1
- package/dist/types/components/datepickerfield/datepickerfield.recipe.d.ts +18 -3
- package/dist/types/components/menu/menu.d.ts +50 -7
- package/dist/types/components/multiselect/multiselect.d.ts +9 -0
- package/dist/types/components/select/select.d.ts +10 -0
- package/dist/types/core/floating-portal.d.ts +6 -5
- package/dist/types/core/index.d.ts +1 -1
- package/dist/types/core/place-floating.d.ts +37 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/product/assigneepicker/assigneepicker.d.ts +36 -0
- package/dist/types/product/assigneepicker/assigneepicker.recipe.d.ts +3 -0
- package/dist/types/product/assigneepicker/index.d.ts +2 -0
- package/dist/types/product/inbox/inbox.d.ts +13 -1
- package/dist/types/product/notesgallery/index.d.ts +2 -0
- package/dist/types/product/notesgallery/notesgallery.d.ts +54 -0
- package/dist/types/product/notesgallery/notesgallery.recipe.d.ts +3 -0
- package/dist/types/product/objectpagemenu/index.d.ts +1 -0
- package/dist/types/product/objectpagemenu/objectpagemenu.d.ts +40 -0
- package/dist/types/product/objectpagemenu/objectpagemenu.recipe.d.ts +17 -0
- package/dist/types/product/objectsettings/objectsettings.d.ts +71 -15
- package/dist/types/product/recordpage/index.d.ts +1 -1
- package/dist/types/product/recordpage/recordpage.d.ts +142 -1
- package/dist/types/product/recordpicker/index.d.ts +2 -0
- package/dist/types/product/recordpicker/recordpicker.d.ts +38 -0
- package/dist/types/product/recordpicker/recordpicker.recipe.d.ts +3 -0
- package/dist/types/product/savedviews/index.d.ts +1 -1
- package/dist/types/product/savedviews/savedviews.d.ts +36 -0
- package/dist/types/product/share/index.d.ts +2 -0
- package/dist/types/product/share/share.d.ts +85 -0
- package/dist/types/product/share/share.recipe.d.ts +3 -0
- package/dist/types/product/shortcutssheet/index.d.ts +1 -0
- package/dist/types/product/shortcutssheet/shortcutssheet.d.ts +49 -0
- package/dist/types/product/shortcutssheet/shortcutssheet.recipe.d.ts +3 -0
- package/dist/types/product/taskeditpopover/index.d.ts +2 -0
- package/dist/types/product/taskeditpopover/taskeditpopover.d.ts +67 -0
- package/dist/types/product/taskeditpopover/taskeditpopover.recipe.d.ts +3 -0
- package/dist/types/product/workspaceswitchermenu/index.d.ts +1 -0
- package/dist/types/product/workspaceswitchermenu/workspaceswitchermenu.d.ts +54 -0
- package/dist/types/product/workspaceswitchermenu/workspaceswitchermenu.recipe.d.ts +19 -0
- package/dist/types/tokens/contract.d.ts +13 -0
- package/dist/types/tokens/palette.d.ts +52 -0
- package/dist/types/tokens/semantic.d.ts +20 -0
- package/dist/workspaceswitchermenu.css +4 -0
- package/dist/workspaceswitchermenu.d.ts +7 -0
- package/dist/workspaceswitchermenu.layered.css +6 -0
- package/package.json +41 -1
package/dist/native/tokens.js
CHANGED
|
@@ -73,7 +73,20 @@ export const tokens = {
|
|
|
73
73
|
"strokeSelectInvalid": "#fa342c",
|
|
74
74
|
"strokeSelectDivider": "#00000010",
|
|
75
75
|
"fgSelectPlaceholder": "#b0b3ba",
|
|
76
|
-
"shadowSelect": "#0000001f"
|
|
76
|
+
"shadowSelect": "#0000001f",
|
|
77
|
+
"bgTagSwatch1": "#fff3cc",
|
|
78
|
+
"bgTagSwatch2": "#f4fbcb",
|
|
79
|
+
"bgTagSwatch3": "#fdf7c4",
|
|
80
|
+
"bgTagSwatch4": "#feecf3",
|
|
81
|
+
"bgTagSwatch5": "#e0fced",
|
|
82
|
+
"bgTagSwatch6": "#ddf7ff",
|
|
83
|
+
"bgTagSwatch7": "#f6f7f7",
|
|
84
|
+
"bgTagSwatch8": "#ffebeb",
|
|
85
|
+
"bgTagSwatch9": "#feeee1",
|
|
86
|
+
"bgTagSwatch10": "#e5eeff",
|
|
87
|
+
"bgTagSwatch11": "#f5f0ff",
|
|
88
|
+
"bgTagSwatch12": "#fdedff",
|
|
89
|
+
"fgTagSwatch": "#000000"
|
|
77
90
|
},
|
|
78
91
|
"dark": {
|
|
79
92
|
"bgBrandSolid": "#0298d9",
|
|
@@ -145,7 +158,20 @@ export const tokens = {
|
|
|
145
158
|
"strokeSelectInvalid": "#ff6e60",
|
|
146
159
|
"strokeSelectDivider": "#ffffff17",
|
|
147
160
|
"fgSelectPlaceholder": "#868b94",
|
|
148
|
-
"shadowSelect": "#000000cc"
|
|
161
|
+
"shadowSelect": "#000000cc",
|
|
162
|
+
"bgTagSwatch1": "#fff3cc",
|
|
163
|
+
"bgTagSwatch2": "#f4fbcb",
|
|
164
|
+
"bgTagSwatch3": "#fdf7c4",
|
|
165
|
+
"bgTagSwatch4": "#feecf3",
|
|
166
|
+
"bgTagSwatch5": "#e0fced",
|
|
167
|
+
"bgTagSwatch6": "#ddf7ff",
|
|
168
|
+
"bgTagSwatch7": "#f6f7f7",
|
|
169
|
+
"bgTagSwatch8": "#ffebeb",
|
|
170
|
+
"bgTagSwatch9": "#feeee1",
|
|
171
|
+
"bgTagSwatch10": "#e5eeff",
|
|
172
|
+
"bgTagSwatch11": "#f5f0ff",
|
|
173
|
+
"bgTagSwatch12": "#fdedff",
|
|
174
|
+
"fgTagSwatch": "#000000"
|
|
149
175
|
}
|
|
150
176
|
},
|
|
151
177
|
"palette": {
|
|
@@ -215,7 +241,20 @@ export const tokens = {
|
|
|
215
241
|
"selectInvalidStroke": "#fa342c",
|
|
216
242
|
"selectDivider": "#00000010",
|
|
217
243
|
"selectPlaceholder": "#b0b3ba",
|
|
218
|
-
"selectShadow": "#0000001f"
|
|
244
|
+
"selectShadow": "#0000001f",
|
|
245
|
+
"tagSwatch1": "#fff3cc",
|
|
246
|
+
"tagSwatch2": "#f4fbcb",
|
|
247
|
+
"tagSwatch3": "#fdf7c4",
|
|
248
|
+
"tagSwatch4": "#feecf3",
|
|
249
|
+
"tagSwatch5": "#e0fced",
|
|
250
|
+
"tagSwatch6": "#ddf7ff",
|
|
251
|
+
"tagSwatch7": "#f6f7f7",
|
|
252
|
+
"tagSwatch8": "#ffebeb",
|
|
253
|
+
"tagSwatch9": "#feeee1",
|
|
254
|
+
"tagSwatch10": "#e5eeff",
|
|
255
|
+
"tagSwatch11": "#f5f0ff",
|
|
256
|
+
"tagSwatch12": "#fdedff",
|
|
257
|
+
"tagSwatchInk": "#000000"
|
|
219
258
|
},
|
|
220
259
|
"dark": {
|
|
221
260
|
"gray00": "#0a0a0a",
|
|
@@ -283,7 +322,20 @@ export const tokens = {
|
|
|
283
322
|
"selectInvalidStroke": "#ff6e60",
|
|
284
323
|
"selectDivider": "#ffffff17",
|
|
285
324
|
"selectPlaceholder": "#868b94",
|
|
286
|
-
"selectShadow": "#000000cc"
|
|
325
|
+
"selectShadow": "#000000cc",
|
|
326
|
+
"tagSwatch1": "#fff3cc",
|
|
327
|
+
"tagSwatch2": "#f4fbcb",
|
|
328
|
+
"tagSwatch3": "#fdf7c4",
|
|
329
|
+
"tagSwatch4": "#feecf3",
|
|
330
|
+
"tagSwatch5": "#e0fced",
|
|
331
|
+
"tagSwatch6": "#ddf7ff",
|
|
332
|
+
"tagSwatch7": "#f6f7f7",
|
|
333
|
+
"tagSwatch8": "#ffebeb",
|
|
334
|
+
"tagSwatch9": "#feeee1",
|
|
335
|
+
"tagSwatch10": "#e5eeff",
|
|
336
|
+
"tagSwatch11": "#f5f0ff",
|
|
337
|
+
"tagSwatch12": "#fdedff",
|
|
338
|
+
"tagSwatchInk": "#000000"
|
|
287
339
|
}
|
|
288
340
|
},
|
|
289
341
|
"space": {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
.crisp-notesgallery {
|
|
2
|
+
display: flex; flex-direction: column; min-height: 0; box-sizing: border-box; font-family: var(--crisp-font-sans); color: var(--crisp-fg-primary); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
|
|
3
|
+
& .crisp-notesgallery-tabs { display: flex; align-items: center; gap: var(--crisp-space-2); height: 44px; flex-shrink: 0; padding: 0 var(--crisp-space-3); }
|
|
4
|
+
& .crisp-notesgallery-toolbar { display: flex; align-items: center; gap: var(--crisp-space-2); height: var(--crisp-size-header); flex-shrink: 0; padding: 0 var(--crisp-space-3); }
|
|
5
|
+
& .crisp-notesgallery-toolbar-trail { display: flex; align-items: center; gap: var(--crisp-space-2); margin-inline-start: auto; }
|
|
6
|
+
& .crisp-notesgallery-favorites-section { background: var(--crisp-bg-subtle); box-shadow: inset 0 -1px 0 var(--crisp-border-subtle); }
|
|
7
|
+
& .crisp-notesgallery-favorites-label { padding: var(--crisp-space-2) var(--crisp-space-4) 0; font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
|
|
8
|
+
& .crisp-notesgallery-favorites { display: flex; align-items: center; justify-content: center; min-height: 200px; padding: var(--crisp-space-6); }
|
|
9
|
+
& .crisp-notesgallery-favorites-empty { box-sizing: border-box; width: 100%; padding: var(--crisp-space-6); border: 1px dashed var(--crisp-border-default); border-radius: var(--crisp-radius-xl); text-align: center; font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
|
|
10
|
+
& .crisp-notesgallery-body { flex: 1; min-height: 0; overflow-y: auto; padding: 0 var(--crisp-space-3) var(--crisp-space-3); }
|
|
11
|
+
& .crisp-notesgallery-group { display: flex; align-items: center; gap: var(--crisp-space-1-5); height: var(--crisp-size-menuRow); padding: var(--crisp-space-2) var(--crisp-space-1); font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
|
|
12
|
+
& .crisp-notesgallery-group-count { display: inline-flex; align-items: center; justify-content: center; min-width: 16px; height: 16px; padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-sm); background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); font-size: var(--crisp-text-xs); color: var(--crisp-fg-muted); }
|
|
13
|
+
& .crisp-notesgallery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: var(--crisp-space-4); padding-bottom: var(--crisp-space-4); }
|
|
14
|
+
& .crisp-notesgallery-empty { padding: var(--crisp-space-8) var(--crisp-space-3); text-align: center; font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
|
|
15
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
@layer crisp-components {
|
|
2
|
+
.crisp-notesgallery {
|
|
3
|
+
display: flex; flex-direction: column; min-height: 0; box-sizing: border-box; font-family: var(--crisp-font-sans); color: var(--crisp-fg-primary); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
|
|
4
|
+
& .crisp-notesgallery-tabs { display: flex; align-items: center; gap: var(--crisp-space-2); height: 44px; flex-shrink: 0; padding: 0 var(--crisp-space-3); }
|
|
5
|
+
& .crisp-notesgallery-toolbar { display: flex; align-items: center; gap: var(--crisp-space-2); height: var(--crisp-size-header); flex-shrink: 0; padding: 0 var(--crisp-space-3); }
|
|
6
|
+
& .crisp-notesgallery-toolbar-trail { display: flex; align-items: center; gap: var(--crisp-space-2); margin-inline-start: auto; }
|
|
7
|
+
& .crisp-notesgallery-favorites-section { background: var(--crisp-bg-subtle); box-shadow: inset 0 -1px 0 var(--crisp-border-subtle); }
|
|
8
|
+
& .crisp-notesgallery-favorites-label { padding: var(--crisp-space-2) var(--crisp-space-4) 0; font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
|
|
9
|
+
& .crisp-notesgallery-favorites { display: flex; align-items: center; justify-content: center; min-height: 200px; padding: var(--crisp-space-6); }
|
|
10
|
+
& .crisp-notesgallery-favorites-empty { box-sizing: border-box; width: 100%; padding: var(--crisp-space-6); border: 1px dashed var(--crisp-border-default); border-radius: var(--crisp-radius-xl); text-align: center; font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
|
|
11
|
+
& .crisp-notesgallery-body { flex: 1; min-height: 0; overflow-y: auto; padding: 0 var(--crisp-space-3) var(--crisp-space-3); }
|
|
12
|
+
& .crisp-notesgallery-group { display: flex; align-items: center; gap: var(--crisp-space-1-5); height: var(--crisp-size-menuRow); padding: var(--crisp-space-2) var(--crisp-space-1); font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
|
|
13
|
+
& .crisp-notesgallery-group-count { display: inline-flex; align-items: center; justify-content: center; min-width: 16px; height: 16px; padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-sm); background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); font-size: var(--crisp-text-xs); color: var(--crisp-fg-muted); }
|
|
14
|
+
& .crisp-notesgallery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: var(--crisp-space-4); padding-bottom: var(--crisp-space-4); }
|
|
15
|
+
& .crisp-notesgallery-empty { padding: var(--crisp-space-8) var(--crisp-space-3); text-align: center; font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
|
|
16
|
+
}
|
|
17
|
+
}
|
package/dist/recordpage.css
CHANGED
|
@@ -101,6 +101,18 @@
|
|
|
101
101
|
the component's own comment) -- NOT `display: contents`, which
|
|
102
102
|
drops a button's accessible semantics in some engines. */
|
|
103
103
|
& .crisp-recordpage-edit-trigger { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--crisp-space-1); margin: 0; padding: 0; border: none; background: none; text-align: start; font: inherit; color: inherit; cursor: pointer; }
|
|
104
|
+
/* #990: measured live on app.attio.com's URL/domain attribute (hover the
|
|
105
|
+
row) -- the link itself never carries the edit affordance, a
|
|
106
|
+
separate 20px button trails it, mounting only on hover: 16px icon,
|
|
107
|
+
rgba(0,0,0,0.55) (crisp's own color-mix(fgPrimary 55%) -- the exact
|
|
108
|
+
formula .crisp-datatable-entity-action's identical muted icon
|
|
109
|
+
already uses), 6px radius (radius.sm). Reveal is opacity-based,
|
|
110
|
+
not the mount/unmount Attio's own DOM does, so a keyboard user
|
|
111
|
+
tabbing to it (:focus-visible) doesn't need the row hovered first --
|
|
112
|
+
same mechanism DataTable's own row actions (#601) already use. */
|
|
113
|
+
& .crisp-recordpage-edit-affordance { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 20px; height: 20px; margin: 0; padding: 0; border: none; border-radius: var(--crisp-radius-sm); background: none; font-family: inherit; color: color-mix(in srgb, var(--crisp-fg-primary) 55%, transparent); cursor: pointer; opacity: 0; transition: opacity .12s, background-color .12s, color .12s; }
|
|
114
|
+
& .crisp-recordpage-field:hover .crisp-recordpage-edit-affordance, & .crisp-recordpage-edit-affordance:focus-visible { opacity: 1; }
|
|
115
|
+
& .crisp-recordpage-edit-affordance:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); color: var(--crisp-fg-primary); }
|
|
104
116
|
& .crisp-recordpage-empty { color: var(--crisp-fg-muted); }
|
|
105
117
|
/* #431: measured live on app.attio.com's record page Details column --
|
|
106
118
|
clicking a field's value opens a plain, borderless field exactly
|
|
@@ -193,6 +205,29 @@
|
|
|
193
205
|
& .crisp-recordpage-task[data-done] .crisp-recordpage-task-text { text-decoration: line-through; color: var(--crisp-fg-muted); }
|
|
194
206
|
& .crisp-recordpage-emptycard { display: flex; flex-direction: column; align-items: center; gap: var(--crisp-space-1-5); padding: var(--crisp-space-6) var(--crisp-space-3); border: 1px dashed var(--crisp-border-default); border-radius: var(--crisp-radius-xl); color: var(--crisp-fg-muted); font-size: var(--crisp-text-md); text-align: center; }
|
|
195
207
|
& .crisp-recordpage-emptycard svg { color: var(--crisp-fg-muted); opacity: 0.7; }
|
|
208
|
+
/* #622: the Activity tab's own toolbar -- "Filters" + "+ Add meeting",
|
|
209
|
+
both the same measured button chrome as the topbar's own action
|
|
210
|
+
buttons (28px, e.field shadow, 14/500 label). */
|
|
211
|
+
& .crisp-recordpage-tabtoolbar { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); }
|
|
212
|
+
/* #622: Files tab's empty state -- measured live on Attio's own record
|
|
213
|
+
page (a company with no files uploaded). The 138x138 dotted-grid
|
|
214
|
+
backdrop is the same measured tile EmptyState's records variant uses
|
|
215
|
+
(crisp/#603), duplicated here rather than composed through that
|
|
216
|
+
component because this surface's title (16/600) and body (14/500,
|
|
217
|
+
63%-mixed fgPrimary, not the flat fgMuted EmptyState uses) measure to
|
|
218
|
+
their own values, matching neither of that component's existing
|
|
219
|
+
variants. */
|
|
220
|
+
& .crisp-recordpage-panel--center { flex: 1; align-items: center; justify-content: center; }
|
|
221
|
+
& .crisp-recordpage-illustrated { display: flex; flex-direction: column; align-items: center; gap: var(--crisp-space-1-5); text-align: center; }
|
|
222
|
+
& .crisp-recordpage-illustrated-icon { display: flex; align-items: center; justify-content: center; width: 138px; height: 138px; margin-bottom: var(--crisp-space-2); color: color-mix(in srgb, var(--crisp-fg-primary) 22%, transparent); background: radial-gradient(circle, color-mix(in srgb, var(--crisp-fg-primary) 12%, transparent) 1.2px, transparent 1.2px) 0 0 / 16px 16px; }
|
|
223
|
+
& .crisp-recordpage-illustrated-title { font-size: var(--crisp-text-xl); font-weight: var(--crisp-weight-semibold); color: var(--crisp-fg-primary); }
|
|
224
|
+
/* #988: the Calls tab's own gated state measures a larger 20/24 title
|
|
225
|
+
than Files/Deals' 16/600 -- Attio's own "empty view" pattern (the
|
|
226
|
+
same 20/600 EmptyState's page/records variants already carry, not a
|
|
227
|
+
one-off). */
|
|
228
|
+
& .crisp-recordpage-illustrated-title--lg { font-size: 20px; line-height: 24px; }
|
|
229
|
+
& .crisp-recordpage-illustrated-desc { max-width: 320px; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
|
|
230
|
+
& .crisp-recordpage-illustrated-actions { display: inline-flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: var(--crisp-space-1-5); margin-top: var(--crisp-space-2); }
|
|
196
231
|
& .crisp-recordpage-action[data-active] svg { color: #f5b83d; fill: #f5b83d; }
|
|
197
232
|
& .crisp-recordstable-tag { display: inline-flex; align-items: center; height: var(--crisp-size-chip); padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-chip); font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); white-space: nowrap; background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); color: color-mix(in srgb, var(--crisp-fg-primary) 82%, transparent); }
|
|
198
233
|
& .crisp-recordstable-tag[data-tone="brand"] { background: color-mix(in srgb, var(--crisp-bg-brand-solid) 14%, transparent); color: color-mix(in srgb, var(--crisp-bg-brand-solid) 82%, var(--crisp-fg-primary)); }
|
|
@@ -202,6 +237,30 @@
|
|
|
202
237
|
& .crisp-recordstable-tag[data-tone="purple"] { background: color-mix(in srgb, var(--crisp-bg-purple) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-purple) 80%, var(--crisp-fg-primary)); }
|
|
203
238
|
& .crisp-recordstable-tag[data-tone="cyan"] { background: color-mix(in srgb, var(--crisp-bg-cyan) 18%, transparent); color: color-mix(in srgb, var(--crisp-bg-cyan) 82%, var(--crisp-fg-primary)); }
|
|
204
239
|
& .crisp-recordstable-tag[data-tone="orange"] { background: color-mix(in srgb, var(--crisp-bg-orange) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-orange) 82%, var(--crisp-fg-primary)); }
|
|
240
|
+
/* #620: the "Run workflow" quick action's own popover -- measured live:
|
|
241
|
+
a centered, top-anchored overlay sharing product/command's own
|
|
242
|
+
Cmd-K-palette shell exactly (elevation.modal, bgOverlayFrost 60% +
|
|
243
|
+
blur(15px), radius 2xl/xl outer/inner) -- duplicated here rather than
|
|
244
|
+
imported, the same "own copy per product surface" choice already
|
|
245
|
+
made elsewhere in this codebase (product/command sits outside this
|
|
246
|
+
lane's own product/recordpage ownership). */
|
|
247
|
+
& .crisp-recordpage-workflow-backdrop { position: fixed; inset: 0; z-index: 60; background: transparent; }
|
|
248
|
+
& .crisp-recordpage-workflow-positioner { position: fixed; inset: 0; z-index: 61; display: flex; align-items: flex-start; justify-content: center; padding: 15vh var(--crisp-space-4) var(--crisp-space-4); }
|
|
249
|
+
& .crisp-recordpage-workflow-content { position: relative; display: flex; flex-direction: column; box-sizing: border-box; width: 90vw; max-width: 808px; padding: var(--crisp-space-1); border-radius: var(--crisp-radius-2xl); background: color-mix(in srgb, var(--crisp-bg-overlay-frost) 60%, transparent); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); box-shadow: 0 8px 28px -6px var(--crisp-shadow-overlay1), 0 18px 88px -4px var(--crisp-shadow-overlay2), 0 0 1px var(--crisp-shadow-overlay3); opacity: 1; transform: scale(1); transition: opacity .2s ease, transform .2s ease; @starting-style { opacity: 0; transform: scale(0.97); } }
|
|
250
|
+
& .crisp-recordpage-workflow-card { display: flex; flex-direction: column; box-sizing: border-box; border-radius: var(--crisp-radius-xl); background: var(--crisp-bg-surface); overflow: hidden; }
|
|
251
|
+
& .crisp-recordpage-workflow-header { display: flex; align-items: center; gap: var(--crisp-space-2); height: 52px; flex-shrink: 0; padding: 0 var(--crisp-space-2) 0 var(--crisp-space-4); }
|
|
252
|
+
& .crisp-recordpage-workflow-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); letter-spacing: -0.07px; color: var(--crisp-fg-primary); }
|
|
253
|
+
& .crisp-recordpage-workflow-close { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 28px; height: 28px; margin: 0; padding: 0; border: none; border-radius: var(--crisp-radius-md); background: none; color: color-mix(in srgb, var(--crisp-fg-primary) 55%, transparent); font-family: inherit; cursor: pointer; transition: background-color .12s, color .12s; }
|
|
254
|
+
& .crisp-recordpage-workflow-close:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); color: var(--crisp-fg-primary); }
|
|
255
|
+
& .crisp-recordpage-workflow-search { display: flex; align-items: center; min-height: 52px; padding: var(--crisp-space-4); }
|
|
256
|
+
& .crisp-recordpage-workflow-input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--crisp-text-xl); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-primary); }
|
|
257
|
+
& .crisp-recordpage-workflow-input::placeholder { color: var(--crisp-fg-muted); }
|
|
258
|
+
& .crisp-recordpage-workflow-sep { height: 1px; flex-shrink: 0; background: var(--crisp-border-subtle); }
|
|
259
|
+
& .crisp-recordpage-workflow-empty { display: flex; flex-direction: column; align-items: center; gap: var(--crisp-space-2); padding: var(--crisp-space-6) var(--crisp-space-3); text-align: center; }
|
|
260
|
+
& .crisp-recordpage-workflow-create { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); height: 32px; padding: 0 var(--crisp-space-3); margin-top: var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-ring-neutral), 0 0 2px rgba(28,40,64,0.18), 0 1px 3px rgba(0,0,0,0.04); font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-primary); cursor: pointer; transition: background-color .12s; }
|
|
261
|
+
& .crisp-recordpage-workflow-create:hover { background: var(--crisp-bg-raised); }
|
|
262
|
+
& .crisp-recordpage-workflow-footer { display: flex; align-items: center; height: 44px; flex-shrink: 0; padding: 0 var(--crisp-space-2-5); border-top: 1px solid var(--crisp-border-subtle); }
|
|
263
|
+
& .crisp-recordpage-workflow-footer-nav { display: flex; align-items: center; gap: var(--crisp-space-1-5); font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
|
|
205
264
|
}
|
|
206
265
|
|
|
207
266
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -102,6 +102,18 @@
|
|
|
102
102
|
the component's own comment) -- NOT `display: contents`, which
|
|
103
103
|
drops a button's accessible semantics in some engines. */
|
|
104
104
|
& .crisp-recordpage-edit-trigger { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--crisp-space-1); margin: 0; padding: 0; border: none; background: none; text-align: start; font: inherit; color: inherit; cursor: pointer; }
|
|
105
|
+
/* #990: measured live on app.attio.com's URL/domain attribute (hover the
|
|
106
|
+
row) -- the link itself never carries the edit affordance, a
|
|
107
|
+
separate 20px button trails it, mounting only on hover: 16px icon,
|
|
108
|
+
rgba(0,0,0,0.55) (crisp's own color-mix(fgPrimary 55%) -- the exact
|
|
109
|
+
formula .crisp-datatable-entity-action's identical muted icon
|
|
110
|
+
already uses), 6px radius (radius.sm). Reveal is opacity-based,
|
|
111
|
+
not the mount/unmount Attio's own DOM does, so a keyboard user
|
|
112
|
+
tabbing to it (:focus-visible) doesn't need the row hovered first --
|
|
113
|
+
same mechanism DataTable's own row actions (#601) already use. */
|
|
114
|
+
& .crisp-recordpage-edit-affordance { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 20px; height: 20px; margin: 0; padding: 0; border: none; border-radius: var(--crisp-radius-sm); background: none; font-family: inherit; color: color-mix(in srgb, var(--crisp-fg-primary) 55%, transparent); cursor: pointer; opacity: 0; transition: opacity .12s, background-color .12s, color .12s; }
|
|
115
|
+
& .crisp-recordpage-field:hover .crisp-recordpage-edit-affordance, & .crisp-recordpage-edit-affordance:focus-visible { opacity: 1; }
|
|
116
|
+
& .crisp-recordpage-edit-affordance:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); color: var(--crisp-fg-primary); }
|
|
105
117
|
& .crisp-recordpage-empty { color: var(--crisp-fg-muted); }
|
|
106
118
|
/* #431: measured live on app.attio.com's record page Details column --
|
|
107
119
|
clicking a field's value opens a plain, borderless field exactly
|
|
@@ -194,6 +206,29 @@
|
|
|
194
206
|
& .crisp-recordpage-task[data-done] .crisp-recordpage-task-text { text-decoration: line-through; color: var(--crisp-fg-muted); }
|
|
195
207
|
& .crisp-recordpage-emptycard { display: flex; flex-direction: column; align-items: center; gap: var(--crisp-space-1-5); padding: var(--crisp-space-6) var(--crisp-space-3); border: 1px dashed var(--crisp-border-default); border-radius: var(--crisp-radius-xl); color: var(--crisp-fg-muted); font-size: var(--crisp-text-md); text-align: center; }
|
|
196
208
|
& .crisp-recordpage-emptycard svg { color: var(--crisp-fg-muted); opacity: 0.7; }
|
|
209
|
+
/* #622: the Activity tab's own toolbar -- "Filters" + "+ Add meeting",
|
|
210
|
+
both the same measured button chrome as the topbar's own action
|
|
211
|
+
buttons (28px, e.field shadow, 14/500 label). */
|
|
212
|
+
& .crisp-recordpage-tabtoolbar { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); }
|
|
213
|
+
/* #622: Files tab's empty state -- measured live on Attio's own record
|
|
214
|
+
page (a company with no files uploaded). The 138x138 dotted-grid
|
|
215
|
+
backdrop is the same measured tile EmptyState's records variant uses
|
|
216
|
+
(crisp/#603), duplicated here rather than composed through that
|
|
217
|
+
component because this surface's title (16/600) and body (14/500,
|
|
218
|
+
63%-mixed fgPrimary, not the flat fgMuted EmptyState uses) measure to
|
|
219
|
+
their own values, matching neither of that component's existing
|
|
220
|
+
variants. */
|
|
221
|
+
& .crisp-recordpage-panel--center { flex: 1; align-items: center; justify-content: center; }
|
|
222
|
+
& .crisp-recordpage-illustrated { display: flex; flex-direction: column; align-items: center; gap: var(--crisp-space-1-5); text-align: center; }
|
|
223
|
+
& .crisp-recordpage-illustrated-icon { display: flex; align-items: center; justify-content: center; width: 138px; height: 138px; margin-bottom: var(--crisp-space-2); color: color-mix(in srgb, var(--crisp-fg-primary) 22%, transparent); background: radial-gradient(circle, color-mix(in srgb, var(--crisp-fg-primary) 12%, transparent) 1.2px, transparent 1.2px) 0 0 / 16px 16px; }
|
|
224
|
+
& .crisp-recordpage-illustrated-title { font-size: var(--crisp-text-xl); font-weight: var(--crisp-weight-semibold); color: var(--crisp-fg-primary); }
|
|
225
|
+
/* #988: the Calls tab's own gated state measures a larger 20/24 title
|
|
226
|
+
than Files/Deals' 16/600 -- Attio's own "empty view" pattern (the
|
|
227
|
+
same 20/600 EmptyState's page/records variants already carry, not a
|
|
228
|
+
one-off). */
|
|
229
|
+
& .crisp-recordpage-illustrated-title--lg { font-size: 20px; line-height: 24px; }
|
|
230
|
+
& .crisp-recordpage-illustrated-desc { max-width: 320px; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
|
|
231
|
+
& .crisp-recordpage-illustrated-actions { display: inline-flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: var(--crisp-space-1-5); margin-top: var(--crisp-space-2); }
|
|
197
232
|
& .crisp-recordpage-action[data-active] svg { color: #f5b83d; fill: #f5b83d; }
|
|
198
233
|
& .crisp-recordstable-tag { display: inline-flex; align-items: center; height: var(--crisp-size-chip); padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-chip); font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); white-space: nowrap; background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); color: color-mix(in srgb, var(--crisp-fg-primary) 82%, transparent); }
|
|
199
234
|
& .crisp-recordstable-tag[data-tone="brand"] { background: color-mix(in srgb, var(--crisp-bg-brand-solid) 14%, transparent); color: color-mix(in srgb, var(--crisp-bg-brand-solid) 82%, var(--crisp-fg-primary)); }
|
|
@@ -203,6 +238,30 @@
|
|
|
203
238
|
& .crisp-recordstable-tag[data-tone="purple"] { background: color-mix(in srgb, var(--crisp-bg-purple) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-purple) 80%, var(--crisp-fg-primary)); }
|
|
204
239
|
& .crisp-recordstable-tag[data-tone="cyan"] { background: color-mix(in srgb, var(--crisp-bg-cyan) 18%, transparent); color: color-mix(in srgb, var(--crisp-bg-cyan) 82%, var(--crisp-fg-primary)); }
|
|
205
240
|
& .crisp-recordstable-tag[data-tone="orange"] { background: color-mix(in srgb, var(--crisp-bg-orange) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-orange) 82%, var(--crisp-fg-primary)); }
|
|
241
|
+
/* #620: the "Run workflow" quick action's own popover -- measured live:
|
|
242
|
+
a centered, top-anchored overlay sharing product/command's own
|
|
243
|
+
Cmd-K-palette shell exactly (elevation.modal, bgOverlayFrost 60% +
|
|
244
|
+
blur(15px), radius 2xl/xl outer/inner) -- duplicated here rather than
|
|
245
|
+
imported, the same "own copy per product surface" choice already
|
|
246
|
+
made elsewhere in this codebase (product/command sits outside this
|
|
247
|
+
lane's own product/recordpage ownership). */
|
|
248
|
+
& .crisp-recordpage-workflow-backdrop { position: fixed; inset: 0; z-index: 60; background: transparent; }
|
|
249
|
+
& .crisp-recordpage-workflow-positioner { position: fixed; inset: 0; z-index: 61; display: flex; align-items: flex-start; justify-content: center; padding: 15vh var(--crisp-space-4) var(--crisp-space-4); }
|
|
250
|
+
& .crisp-recordpage-workflow-content { position: relative; display: flex; flex-direction: column; box-sizing: border-box; width: 90vw; max-width: 808px; padding: var(--crisp-space-1); border-radius: var(--crisp-radius-2xl); background: color-mix(in srgb, var(--crisp-bg-overlay-frost) 60%, transparent); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); box-shadow: 0 8px 28px -6px var(--crisp-shadow-overlay1), 0 18px 88px -4px var(--crisp-shadow-overlay2), 0 0 1px var(--crisp-shadow-overlay3); opacity: 1; transform: scale(1); transition: opacity .2s ease, transform .2s ease; @starting-style { opacity: 0; transform: scale(0.97); } }
|
|
251
|
+
& .crisp-recordpage-workflow-card { display: flex; flex-direction: column; box-sizing: border-box; border-radius: var(--crisp-radius-xl); background: var(--crisp-bg-surface); overflow: hidden; }
|
|
252
|
+
& .crisp-recordpage-workflow-header { display: flex; align-items: center; gap: var(--crisp-space-2); height: 52px; flex-shrink: 0; padding: 0 var(--crisp-space-2) 0 var(--crisp-space-4); }
|
|
253
|
+
& .crisp-recordpage-workflow-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); letter-spacing: -0.07px; color: var(--crisp-fg-primary); }
|
|
254
|
+
& .crisp-recordpage-workflow-close { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 28px; height: 28px; margin: 0; padding: 0; border: none; border-radius: var(--crisp-radius-md); background: none; color: color-mix(in srgb, var(--crisp-fg-primary) 55%, transparent); font-family: inherit; cursor: pointer; transition: background-color .12s, color .12s; }
|
|
255
|
+
& .crisp-recordpage-workflow-close:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); color: var(--crisp-fg-primary); }
|
|
256
|
+
& .crisp-recordpage-workflow-search { display: flex; align-items: center; min-height: 52px; padding: var(--crisp-space-4); }
|
|
257
|
+
& .crisp-recordpage-workflow-input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--crisp-text-xl); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-primary); }
|
|
258
|
+
& .crisp-recordpage-workflow-input::placeholder { color: var(--crisp-fg-muted); }
|
|
259
|
+
& .crisp-recordpage-workflow-sep { height: 1px; flex-shrink: 0; background: var(--crisp-border-subtle); }
|
|
260
|
+
& .crisp-recordpage-workflow-empty { display: flex; flex-direction: column; align-items: center; gap: var(--crisp-space-2); padding: var(--crisp-space-6) var(--crisp-space-3); text-align: center; }
|
|
261
|
+
& .crisp-recordpage-workflow-create { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); height: 32px; padding: 0 var(--crisp-space-3); margin-top: var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-ring-neutral), 0 0 2px rgba(28,40,64,0.18), 0 1px 3px rgba(0,0,0,0.04); font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-primary); cursor: pointer; transition: background-color .12s; }
|
|
262
|
+
& .crisp-recordpage-workflow-create:hover { background: var(--crisp-bg-raised); }
|
|
263
|
+
& .crisp-recordpage-workflow-footer { display: flex; align-items: center; height: 44px; flex-shrink: 0; padding: 0 var(--crisp-space-2-5); border-top: 1px solid var(--crisp-border-subtle); }
|
|
264
|
+
& .crisp-recordpage-workflow-footer-nav { display: flex; align-items: center; gap: var(--crisp-space-1-5); font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
|
|
206
265
|
}
|
|
207
266
|
|
|
208
267
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
.crisp-recordpicker {
|
|
2
|
+
display: flex; flex-direction: column; box-sizing: border-box; width: 350px; font-family: var(--crisp-font-sans);
|
|
3
|
+
& .crisp-recordpicker-search { display: flex; align-items: center; gap: var(--crisp-space-2); height: 36px; padding: 0 var(--crisp-space-3); color: var(--crisp-fg-muted); }
|
|
4
|
+
& .crisp-recordpicker-search svg { flex-shrink: 0; }
|
|
5
|
+
& .crisp-recordpicker-search-input { flex: 1; min-width: 0; border: none; outline: none; background: none; font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); line-height: 20px; color: var(--crisp-fg-primary); }
|
|
6
|
+
& .crisp-recordpicker-search-input::placeholder { color: var(--crisp-fg-muted); }
|
|
7
|
+
& .crisp-recordpicker-loading { display: flex; align-items: center; justify-content: center; gap: 10px; padding: var(--crisp-space-8) var(--crisp-space-3); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); line-height: 20px; }
|
|
8
|
+
& .crisp-recordpicker-empty { padding: var(--crisp-space-4) var(--crisp-space-3); text-align: center; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
|
|
9
|
+
& .crisp-recordpicker-list { display: flex; flex-direction: column; margin: 0; padding: var(--crisp-space-1); list-style: none; max-height: 280px; overflow-y: auto; }
|
|
10
|
+
& .crisp-recordpicker-option { display: flex; align-items: center; gap: var(--crisp-space-2); width: 100%; box-sizing: border-box; height: 32px; padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: none; font-family: inherit; font-size: var(--crisp-text-lg); color: var(--crisp-fg-primary); text-align: start; cursor: pointer; }
|
|
11
|
+
& .crisp-recordpicker-option svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
|
|
12
|
+
& .crisp-recordpicker-option:hover, & .crisp-recordpicker-option[data-highlighted] { background: var(--crisp-bg-raised); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
@layer crisp-components {
|
|
2
|
+
.crisp-recordpicker {
|
|
3
|
+
display: flex; flex-direction: column; box-sizing: border-box; width: 350px; font-family: var(--crisp-font-sans);
|
|
4
|
+
& .crisp-recordpicker-search { display: flex; align-items: center; gap: var(--crisp-space-2); height: 36px; padding: 0 var(--crisp-space-3); color: var(--crisp-fg-muted); }
|
|
5
|
+
& .crisp-recordpicker-search svg { flex-shrink: 0; }
|
|
6
|
+
& .crisp-recordpicker-search-input { flex: 1; min-width: 0; border: none; outline: none; background: none; font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); line-height: 20px; color: var(--crisp-fg-primary); }
|
|
7
|
+
& .crisp-recordpicker-search-input::placeholder { color: var(--crisp-fg-muted); }
|
|
8
|
+
& .crisp-recordpicker-loading { display: flex; align-items: center; justify-content: center; gap: 10px; padding: var(--crisp-space-8) var(--crisp-space-3); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); line-height: 20px; }
|
|
9
|
+
& .crisp-recordpicker-empty { padding: var(--crisp-space-4) var(--crisp-space-3); text-align: center; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
|
|
10
|
+
& .crisp-recordpicker-list { display: flex; flex-direction: column; margin: 0; padding: var(--crisp-space-1); list-style: none; max-height: 280px; overflow-y: auto; }
|
|
11
|
+
& .crisp-recordpicker-option { display: flex; align-items: center; gap: var(--crisp-space-2); width: 100%; box-sizing: border-box; height: 32px; padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: none; font-family: inherit; font-size: var(--crisp-text-lg); color: var(--crisp-fg-primary); text-align: start; cursor: pointer; }
|
|
12
|
+
& .crisp-recordpicker-option svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
|
|
13
|
+
& .crisp-recordpicker-option:hover, & .crisp-recordpicker-option[data-highlighted] { background: var(--crisp-bg-raised); }
|
|
14
|
+
}
|
|
15
|
+
}
|
package/dist/savedviews.css
CHANGED
|
@@ -71,6 +71,53 @@
|
|
|
71
71
|
font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium);
|
|
72
72
|
color: color-mix(in srgb, var(--crisp-fg-primary) 50%, transparent);
|
|
73
73
|
}
|
|
74
|
+
|
|
75
|
+
/* crisp#568: the "Discard changes" / "Save for everyone ▾" bar a
|
|
76
|
+
consumer swaps into its own toolbar's trailing slot (TableToolbar's
|
|
77
|
+
own children prop already documents "right-aligned actions after the
|
|
78
|
+
count") while the loaded view is dirty -- measured live on
|
|
79
|
+
app.attio.com replacing that exact slot's usual Import/Export + New
|
|
80
|
+
button. Not rendered inside SavedViews' own trigger/panel, which
|
|
81
|
+
stays untouched; this is its own export, SavedViewsSaveBar. */
|
|
82
|
+
.crisp-savedviews-savebar { display: flex; align-items: center; gap: var(--crisp-space-2); }
|
|
83
|
+
/* Rest-state color is a 55% color-mix of fgPrimary -- measured
|
|
84
|
+
identical to recordpanel's own ".crisp-recordpanel-section-action"
|
|
85
|
+
(its own comment: "measured 10px/400, a lighter mix..." -- font size
|
|
86
|
+
there was the SAME outer-vs-inner-div miss #688 corrected; the 55%
|
|
87
|
+
mix itself checks out independently here). Hover repeats crisp's own
|
|
88
|
+
already-measured Button ghost intent exactly (bgRaised + fgPrimary),
|
|
89
|
+
confirmed live (hover bg rgba(0,0,0,.04) + ink text matches bgRaised
|
|
90
|
+
+ fgPrimary bit for bit) -- reused, not re-derived. */
|
|
91
|
+
.crisp-savedviews-savebar-discard {
|
|
92
|
+
box-sizing: border-box; display: inline-flex; align-items: center; height: 28px;
|
|
93
|
+
margin: 0; padding-inline: var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md);
|
|
94
|
+
background: none; font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium);
|
|
95
|
+
color: color-mix(in srgb, var(--crisp-fg-primary) 55%, transparent); cursor: pointer;
|
|
96
|
+
transition: background-color .12s ease, color .12s ease;
|
|
97
|
+
}
|
|
98
|
+
.crisp-savedviews-savebar-discard:hover { background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); }
|
|
99
|
+
/* the split "Save for everyone ▾" pill -- two adjacent buttons sharing
|
|
100
|
+
one visual pill (measured: label half rounds only its outer/left
|
|
101
|
+
corners, the chevron half only its outer/right corners, seamless
|
|
102
|
+
between). Fill is crisp's OWN measured bgBrandContrast, not Attio's
|
|
103
|
+
own literal button blue -- the owner's directive is Attio structure/
|
|
104
|
+
sizing, seed-identity color (crisp direction doc). Hover/active reuse
|
|
105
|
+
Button's own already-measured primary-intent brightness filter
|
|
106
|
+
(crisp#910) rather than Attio's own literal darker fill, for the
|
|
107
|
+
same reason. */
|
|
108
|
+
.crisp-savedviews-savebar-save-group { display: flex; }
|
|
109
|
+
.crisp-savedviews-savebar-save, .crisp-savedviews-savebar-save-chevron {
|
|
110
|
+
box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center;
|
|
111
|
+
height: 28px; margin: 0; border: none; background: var(--crisp-bg-brand-contrast); color: var(--crisp-fg-on-brand);
|
|
112
|
+
cursor: pointer; transition: filter .2s;
|
|
113
|
+
}
|
|
114
|
+
.crisp-savedviews-savebar-save:hover, .crisp-savedviews-savebar-save-chevron:hover { filter: brightness(0.96); }
|
|
115
|
+
.crisp-savedviews-savebar-save:active, .crisp-savedviews-savebar-save-chevron:active { filter: brightness(0.92); }
|
|
116
|
+
.crisp-savedviews-savebar-save {
|
|
117
|
+
padding-inline: var(--crisp-space-2) var(--crisp-space-1-5); border-radius: var(--crisp-radius-md) 0 0 var(--crisp-radius-md);
|
|
118
|
+
font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium);
|
|
119
|
+
}
|
|
120
|
+
.crisp-savedviews-savebar-save-chevron { width: 28px; padding: 0; border-radius: 0 var(--crisp-radius-md) var(--crisp-radius-md) 0; }
|
|
74
121
|
|
|
75
122
|
.crisp-savedviews {
|
|
76
123
|
position: relative; display: inline-flex; font-family: var(--crisp-font-sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; /* crisp/#772 follow-up, re-measured live 2026-09-25 in the trigger's
|
|
@@ -72,6 +72,53 @@
|
|
|
72
72
|
font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium);
|
|
73
73
|
color: color-mix(in srgb, var(--crisp-fg-primary) 50%, transparent);
|
|
74
74
|
}
|
|
75
|
+
|
|
76
|
+
/* crisp#568: the "Discard changes" / "Save for everyone ▾" bar a
|
|
77
|
+
consumer swaps into its own toolbar's trailing slot (TableToolbar's
|
|
78
|
+
own children prop already documents "right-aligned actions after the
|
|
79
|
+
count") while the loaded view is dirty -- measured live on
|
|
80
|
+
app.attio.com replacing that exact slot's usual Import/Export + New
|
|
81
|
+
button. Not rendered inside SavedViews' own trigger/panel, which
|
|
82
|
+
stays untouched; this is its own export, SavedViewsSaveBar. */
|
|
83
|
+
.crisp-savedviews-savebar { display: flex; align-items: center; gap: var(--crisp-space-2); }
|
|
84
|
+
/* Rest-state color is a 55% color-mix of fgPrimary -- measured
|
|
85
|
+
identical to recordpanel's own ".crisp-recordpanel-section-action"
|
|
86
|
+
(its own comment: "measured 10px/400, a lighter mix..." -- font size
|
|
87
|
+
there was the SAME outer-vs-inner-div miss #688 corrected; the 55%
|
|
88
|
+
mix itself checks out independently here). Hover repeats crisp's own
|
|
89
|
+
already-measured Button ghost intent exactly (bgRaised + fgPrimary),
|
|
90
|
+
confirmed live (hover bg rgba(0,0,0,.04) + ink text matches bgRaised
|
|
91
|
+
+ fgPrimary bit for bit) -- reused, not re-derived. */
|
|
92
|
+
.crisp-savedviews-savebar-discard {
|
|
93
|
+
box-sizing: border-box; display: inline-flex; align-items: center; height: 28px;
|
|
94
|
+
margin: 0; padding-inline: var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md);
|
|
95
|
+
background: none; font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium);
|
|
96
|
+
color: color-mix(in srgb, var(--crisp-fg-primary) 55%, transparent); cursor: pointer;
|
|
97
|
+
transition: background-color .12s ease, color .12s ease;
|
|
98
|
+
}
|
|
99
|
+
.crisp-savedviews-savebar-discard:hover { background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); }
|
|
100
|
+
/* the split "Save for everyone ▾" pill -- two adjacent buttons sharing
|
|
101
|
+
one visual pill (measured: label half rounds only its outer/left
|
|
102
|
+
corners, the chevron half only its outer/right corners, seamless
|
|
103
|
+
between). Fill is crisp's OWN measured bgBrandContrast, not Attio's
|
|
104
|
+
own literal button blue -- the owner's directive is Attio structure/
|
|
105
|
+
sizing, seed-identity color (crisp direction doc). Hover/active reuse
|
|
106
|
+
Button's own already-measured primary-intent brightness filter
|
|
107
|
+
(crisp#910) rather than Attio's own literal darker fill, for the
|
|
108
|
+
same reason. */
|
|
109
|
+
.crisp-savedviews-savebar-save-group { display: flex; }
|
|
110
|
+
.crisp-savedviews-savebar-save, .crisp-savedviews-savebar-save-chevron {
|
|
111
|
+
box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center;
|
|
112
|
+
height: 28px; margin: 0; border: none; background: var(--crisp-bg-brand-contrast); color: var(--crisp-fg-on-brand);
|
|
113
|
+
cursor: pointer; transition: filter .2s;
|
|
114
|
+
}
|
|
115
|
+
.crisp-savedviews-savebar-save:hover, .crisp-savedviews-savebar-save-chevron:hover { filter: brightness(0.96); }
|
|
116
|
+
.crisp-savedviews-savebar-save:active, .crisp-savedviews-savebar-save-chevron:active { filter: brightness(0.92); }
|
|
117
|
+
.crisp-savedviews-savebar-save {
|
|
118
|
+
padding-inline: var(--crisp-space-2) var(--crisp-space-1-5); border-radius: var(--crisp-radius-md) 0 0 var(--crisp-radius-md);
|
|
119
|
+
font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium);
|
|
120
|
+
}
|
|
121
|
+
.crisp-savedviews-savebar-save-chevron { width: 28px; padding: 0; border-radius: 0 var(--crisp-radius-md) var(--crisp-radius-md) 0; }
|
|
75
122
|
|
|
76
123
|
.crisp-savedviews {
|
|
77
124
|
position: relative; display: inline-flex; font-family: var(--crisp-font-sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; /* crisp/#772 follow-up, re-measured live 2026-09-25 in the trigger's
|
package/dist/select.css
CHANGED
|
@@ -62,6 +62,25 @@
|
|
|
62
62
|
.crisp-select-option[data-disabled] .crisp-select-option-description,
|
|
63
63
|
.crisp-select-option[data-disabled] .crisp-select-option-check { color: var(--crisp-fg-disabled); }
|
|
64
64
|
.crisp-select-option-dot { flex-shrink: 0; width: 8px; height: 8px; border-radius: var(--crisp-radius-full); margin-inline-end: var(--crisp-space-2); }
|
|
65
|
+
/* your-moon/crisp#998: Attio's own 12-colour tag palette (measured live,
|
|
66
|
+
see tokens/palette.ts's tagSwatch1 comment) -- the label itself as a
|
|
67
|
+
filled pill, not a dot beside it. 7px radius/10px text have no
|
|
68
|
+
matching step in the shared scale (radius.xs is 4px, .sm is 6px;
|
|
69
|
+
text.xs is 11px), so both are the measured literals, same as
|
|
70
|
+
DataTable's own avatar font-size (#891). */
|
|
71
|
+
.crisp-select-swatch { display: inline-flex; align-items: center; height: var(--crisp-size-chip); padding: 0 var(--crisp-space-1); border-radius: 7px; font-size: 10px; font-weight: var(--crisp-weight-regular); color: var(--crisp-fg-tag-swatch); }
|
|
72
|
+
.crisp-select-swatch[data-swatch="1"] { background: var(--crisp-bg-tag-swatch1); }
|
|
73
|
+
.crisp-select-swatch[data-swatch="2"] { background: var(--crisp-bg-tag-swatch2); }
|
|
74
|
+
.crisp-select-swatch[data-swatch="3"] { background: var(--crisp-bg-tag-swatch3); }
|
|
75
|
+
.crisp-select-swatch[data-swatch="4"] { background: var(--crisp-bg-tag-swatch4); }
|
|
76
|
+
.crisp-select-swatch[data-swatch="5"] { background: var(--crisp-bg-tag-swatch5); }
|
|
77
|
+
.crisp-select-swatch[data-swatch="6"] { background: var(--crisp-bg-tag-swatch6); }
|
|
78
|
+
.crisp-select-swatch[data-swatch="7"] { background: var(--crisp-bg-tag-swatch7); }
|
|
79
|
+
.crisp-select-swatch[data-swatch="8"] { background: var(--crisp-bg-tag-swatch8); }
|
|
80
|
+
.crisp-select-swatch[data-swatch="9"] { background: var(--crisp-bg-tag-swatch9); }
|
|
81
|
+
.crisp-select-swatch[data-swatch="10"] { background: var(--crisp-bg-tag-swatch10); }
|
|
82
|
+
.crisp-select-swatch[data-swatch="11"] { background: var(--crisp-bg-tag-swatch11); }
|
|
83
|
+
.crisp-select-swatch[data-swatch="12"] { background: var(--crisp-bg-tag-swatch12); }
|
|
65
84
|
.crisp-select-option-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--crisp-space-0-5); }
|
|
66
85
|
.crisp-select-option-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
|
|
67
86
|
.crisp-select-option-description { min-width: 0; overflow: hidden; text-overflow: ellipsis; color: var(--crisp-fg-neutral-subtle); }
|
package/dist/select.layered.css
CHANGED
|
@@ -63,6 +63,25 @@
|
|
|
63
63
|
.crisp-select-option[data-disabled] .crisp-select-option-description,
|
|
64
64
|
.crisp-select-option[data-disabled] .crisp-select-option-check { color: var(--crisp-fg-disabled); }
|
|
65
65
|
.crisp-select-option-dot { flex-shrink: 0; width: 8px; height: 8px; border-radius: var(--crisp-radius-full); margin-inline-end: var(--crisp-space-2); }
|
|
66
|
+
/* your-moon/crisp#998: Attio's own 12-colour tag palette (measured live,
|
|
67
|
+
see tokens/palette.ts's tagSwatch1 comment) -- the label itself as a
|
|
68
|
+
filled pill, not a dot beside it. 7px radius/10px text have no
|
|
69
|
+
matching step in the shared scale (radius.xs is 4px, .sm is 6px;
|
|
70
|
+
text.xs is 11px), so both are the measured literals, same as
|
|
71
|
+
DataTable's own avatar font-size (#891). */
|
|
72
|
+
.crisp-select-swatch { display: inline-flex; align-items: center; height: var(--crisp-size-chip); padding: 0 var(--crisp-space-1); border-radius: 7px; font-size: 10px; font-weight: var(--crisp-weight-regular); color: var(--crisp-fg-tag-swatch); }
|
|
73
|
+
.crisp-select-swatch[data-swatch="1"] { background: var(--crisp-bg-tag-swatch1); }
|
|
74
|
+
.crisp-select-swatch[data-swatch="2"] { background: var(--crisp-bg-tag-swatch2); }
|
|
75
|
+
.crisp-select-swatch[data-swatch="3"] { background: var(--crisp-bg-tag-swatch3); }
|
|
76
|
+
.crisp-select-swatch[data-swatch="4"] { background: var(--crisp-bg-tag-swatch4); }
|
|
77
|
+
.crisp-select-swatch[data-swatch="5"] { background: var(--crisp-bg-tag-swatch5); }
|
|
78
|
+
.crisp-select-swatch[data-swatch="6"] { background: var(--crisp-bg-tag-swatch6); }
|
|
79
|
+
.crisp-select-swatch[data-swatch="7"] { background: var(--crisp-bg-tag-swatch7); }
|
|
80
|
+
.crisp-select-swatch[data-swatch="8"] { background: var(--crisp-bg-tag-swatch8); }
|
|
81
|
+
.crisp-select-swatch[data-swatch="9"] { background: var(--crisp-bg-tag-swatch9); }
|
|
82
|
+
.crisp-select-swatch[data-swatch="10"] { background: var(--crisp-bg-tag-swatch10); }
|
|
83
|
+
.crisp-select-swatch[data-swatch="11"] { background: var(--crisp-bg-tag-swatch11); }
|
|
84
|
+
.crisp-select-swatch[data-swatch="12"] { background: var(--crisp-bg-tag-swatch12); }
|
|
66
85
|
.crisp-select-option-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--crisp-space-0-5); }
|
|
67
86
|
.crisp-select-option-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
|
|
68
87
|
.crisp-select-option-description { min-width: 0; overflow: hidden; text-overflow: ellipsis; color: var(--crisp-fg-neutral-subtle); }
|