@react-spectrum/card 3.0.0-alpha.0 → 3.0.0-alpha.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/main.css +1 -2
- package/dist/main.js +1310 -1577
- package/dist/main.js.map +1 -1
- package/dist/module.js +1291 -1491
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +25 -34
- package/dist/types.d.ts.map +1 -1
- package/package.json +21 -20
- package/src/BaseLayout.tsx +13 -1
- package/src/Card.tsx +5 -8
- package/src/CardBase.tsx +24 -64
- package/src/CardView.tsx +33 -19
- package/src/GalleryLayout.tsx +94 -99
- package/src/GridLayout.tsx +40 -29
- package/src/WaterfallLayout.tsx +6 -20
- package/dist/main.css.map +0 -1
- package/src/cardview.css +0 -16
package/src/GalleryLayout.tsx
CHANGED
|
@@ -30,7 +30,7 @@ export interface GalleryLayoutOptions extends BaseLayoutOptions {
|
|
|
30
30
|
itemSpacing?: Size,
|
|
31
31
|
/**
|
|
32
32
|
* The vertical padding for an item.
|
|
33
|
-
* @default
|
|
33
|
+
* @default 78
|
|
34
34
|
*/
|
|
35
35
|
itemPadding?: number,
|
|
36
36
|
/**
|
|
@@ -43,22 +43,14 @@ export interface GalleryLayoutOptions extends BaseLayoutOptions {
|
|
|
43
43
|
* will be targeted.
|
|
44
44
|
* @type {number}
|
|
45
45
|
*/
|
|
46
|
-
threshold?: number
|
|
47
|
-
/**
|
|
48
|
-
* The margin around the grid view between the edges and the items.
|
|
49
|
-
* @default 24
|
|
50
|
-
*/
|
|
51
|
-
margin?: number // TODO: Perhaps should accept Responsive<DimensionValue>
|
|
46
|
+
threshold?: number
|
|
52
47
|
}
|
|
53
48
|
|
|
54
|
-
// TODO: copied from V2, update this with the proper spectrum values
|
|
55
|
-
// Should these be affected by Scale as well?
|
|
56
49
|
const DEFAULT_OPTIONS = {
|
|
57
50
|
S: {
|
|
58
51
|
idealRowHeight: 112,
|
|
59
52
|
minItemSize: new Size(96, 96),
|
|
60
53
|
itemSpacing: new Size(8, 16),
|
|
61
|
-
// TODO: will need to update as well
|
|
62
54
|
itemPadding: 24,
|
|
63
55
|
dropSpacing: 50,
|
|
64
56
|
margin: 8
|
|
@@ -67,8 +59,10 @@ const DEFAULT_OPTIONS = {
|
|
|
67
59
|
idealRowHeight: 208,
|
|
68
60
|
minItemSize: new Size(136, 136),
|
|
69
61
|
itemSpacing: new Size(18, 18),
|
|
70
|
-
|
|
71
|
-
|
|
62
|
+
itemPadding: {
|
|
63
|
+
'medium': 78,
|
|
64
|
+
'large': 99
|
|
65
|
+
},
|
|
72
66
|
dropSpacing: 100,
|
|
73
67
|
margin: 24
|
|
74
68
|
}
|
|
@@ -76,7 +70,6 @@ const DEFAULT_OPTIONS = {
|
|
|
76
70
|
|
|
77
71
|
export class GalleryLayout<T> extends BaseLayout<T> {
|
|
78
72
|
protected idealRowHeight: number;
|
|
79
|
-
protected margin: number;
|
|
80
73
|
protected itemSpacing: Size;
|
|
81
74
|
itemPadding: number;
|
|
82
75
|
protected minItemSize: Size;
|
|
@@ -84,11 +77,10 @@ export class GalleryLayout<T> extends BaseLayout<T> {
|
|
|
84
77
|
|
|
85
78
|
constructor(options: GalleryLayoutOptions = {}) {
|
|
86
79
|
super(options);
|
|
87
|
-
// TODO: restore cardSize option when we support different size cards
|
|
88
80
|
let cardSize = 'L';
|
|
89
81
|
this.idealRowHeight = options.idealRowHeight || DEFAULT_OPTIONS[cardSize].idealRowHeight;
|
|
90
82
|
this.itemSpacing = options.itemSpacing || DEFAULT_OPTIONS[cardSize].itemSpacing;
|
|
91
|
-
this.itemPadding = options.itemPadding != null ? options.itemPadding : DEFAULT_OPTIONS[cardSize].itemPadding;
|
|
83
|
+
this.itemPadding = options.itemPadding != null ? options.itemPadding : DEFAULT_OPTIONS[cardSize].itemPadding[this.scale];
|
|
92
84
|
this.minItemSize = options.minItemSize || DEFAULT_OPTIONS[cardSize].minItemSize;
|
|
93
85
|
this.threshold = options.threshold || 1;
|
|
94
86
|
this.margin = options.margin != null ? options.margin : DEFAULT_OPTIONS[cardSize].margin;
|
|
@@ -146,104 +138,107 @@ export class GalleryLayout<T> extends BaseLayout<T> {
|
|
|
146
138
|
let y = this.margin;
|
|
147
139
|
let availableWidth = visibleWidth - this.margin * 2;
|
|
148
140
|
|
|
149
|
-
//
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
ratio =
|
|
159
|
-
|
|
160
|
-
|
|
141
|
+
// If avaliable width is not greater than 0, skip node layout calculations
|
|
142
|
+
if (availableWidth > 0) {
|
|
143
|
+
// Compute aspect ratios for all of the items, and the total width if all items were on in a single row.
|
|
144
|
+
let ratios = [];
|
|
145
|
+
let totalWidth = 0;
|
|
146
|
+
let minRatio = this.minItemSize.width / this.minItemSize.height;
|
|
147
|
+
let maxRatio = availableWidth / this.minItemSize.height;
|
|
148
|
+
|
|
149
|
+
for (let node of this.collection) {
|
|
150
|
+
let ratio = node.props.width / node.props.height;
|
|
151
|
+
if (ratio < minRatio) {
|
|
152
|
+
ratio = minRatio;
|
|
153
|
+
} else if (ratio > maxRatio && ratio !== minRatio) {
|
|
154
|
+
ratio = maxRatio;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
let itemWidth = ratio * this.minItemSize.height;
|
|
158
|
+
ratios.push(ratio);
|
|
159
|
+
totalWidth += itemWidth;
|
|
161
160
|
}
|
|
162
161
|
|
|
163
|
-
|
|
164
|
-
ratios.push(ratio);
|
|
165
|
-
totalWidth += itemWidth;
|
|
166
|
-
}
|
|
162
|
+
totalWidth += this.itemSpacing.width * (this.collection.size - 1);
|
|
167
163
|
|
|
168
|
-
|
|
164
|
+
// Determine how many rows we'll need, and partition the items into rows
|
|
165
|
+
// using the aspect ratios as weights.
|
|
166
|
+
let rows = Math.max(1, Math.ceil(totalWidth / availableWidth));
|
|
167
|
+
// if the available width can't hold two items, then every item will get its own row
|
|
168
|
+
// this leads to a faster run through linear partition and more dependable output for small row widths
|
|
169
|
+
if (availableWidth <= (this.minItemSize.width * 2) + (this.itemPadding * 2)) {
|
|
170
|
+
rows = this.collection.size;
|
|
171
|
+
}
|
|
169
172
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
let rows = Math.max(1, Math.ceil(totalWidth / availableWidth));
|
|
173
|
-
// if the available width can't hold two items, then every item will get its own row
|
|
174
|
-
// this leads to a faster run through linear partition and more dependable output for small row widths
|
|
175
|
-
if (availableWidth <= (this.minItemSize.width * 2) + (this.itemPadding * 2)) {
|
|
176
|
-
rows = this.collection.size;
|
|
177
|
-
}
|
|
173
|
+
let weightedRatios = ratios.map(ratio => ratio < this.threshold ? ratio + (0.5 * (1 / ratio)) : ratio);
|
|
174
|
+
let partition = linearPartition(weightedRatios, rows);
|
|
178
175
|
|
|
179
|
-
|
|
180
|
-
|
|
176
|
+
let index = 0;
|
|
177
|
+
for (let row of partition) {
|
|
178
|
+
// Compute the total weight for this row
|
|
179
|
+
let totalWeight = 0;
|
|
180
|
+
for (let j = index; j < index + row.length; j++) {
|
|
181
|
+
totalWeight += ratios[j];
|
|
182
|
+
}
|
|
181
183
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
// Compute the total weight for this row
|
|
185
|
-
let totalWeight = 0;
|
|
186
|
-
for (let j = index; j < index + row.length; j++) {
|
|
187
|
-
totalWeight += ratios[j];
|
|
188
|
-
}
|
|
184
|
+
// Determine the row height based on the total available width and weight of this row.
|
|
185
|
+
let bestRowHeight = (availableWidth - (row.length - 1) * this.itemSpacing.width) / totalWeight;
|
|
189
186
|
|
|
190
|
-
|
|
191
|
-
|
|
187
|
+
// if this is the last row and the row height is >2x the ideal row height, then cap to the ideal height
|
|
188
|
+
// probably doing this because if the last row has one extremely tall image, then the row becomes huge
|
|
189
|
+
// though that can happen anywhere if a row has lots of tall images... so i'm not sure why this one matters
|
|
190
|
+
if (row === partition[partition.length - 1] && bestRowHeight > this.idealRowHeight * 2) {
|
|
191
|
+
bestRowHeight = this.idealRowHeight;
|
|
192
|
+
}
|
|
193
|
+
let itemHeight = Math.round(bestRowHeight) + this.itemPadding;
|
|
194
|
+
let x = this.margin;
|
|
195
|
+
|
|
196
|
+
// if any items are going to end up too small, add a bit of width to them and subtract it from wider objects
|
|
197
|
+
let widths = [];
|
|
198
|
+
for (let j = index; j < index + row.length; j++) {
|
|
199
|
+
let width = Math.round(bestRowHeight * ratios[j]);
|
|
200
|
+
widths.push([j - index, width]);
|
|
201
|
+
}
|
|
202
|
+
this._distributeWidths(widths);
|
|
203
|
+
|
|
204
|
+
// Create items for this row.
|
|
205
|
+
for (let j = index; j < index + row.length; j++) {
|
|
206
|
+
let node = this.collection.rows[j];
|
|
207
|
+
let itemWidth = Math.max(widths[j - index][1], this.minItemSize.width);
|
|
208
|
+
let rect = new Rect(x, y, itemWidth, itemHeight);
|
|
209
|
+
let layoutInfo = new LayoutInfo(node.type, node.key, rect);
|
|
210
|
+
layoutInfo.allowOverflow = true;
|
|
211
|
+
this.layoutInfos.set(node.key, layoutInfo);
|
|
212
|
+
x += itemWidth + this.itemSpacing.width;
|
|
213
|
+
}
|
|
192
214
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
// though that can happen anywhere if a row has lots of tall images... so i'm not sure why this one matters
|
|
196
|
-
if (row === partition[partition.length - 1] && bestRowHeight > this.idealRowHeight * 2) {
|
|
197
|
-
bestRowHeight = this.idealRowHeight;
|
|
198
|
-
}
|
|
199
|
-
let itemHeight = Math.round(bestRowHeight) + this.itemPadding;
|
|
200
|
-
let x = this.margin;
|
|
201
|
-
|
|
202
|
-
// if any items are going to end up too small, add a bit of width to them and subtract it from wider objects
|
|
203
|
-
let widths = [];
|
|
204
|
-
for (let j = index; j < index + row.length; j++) {
|
|
205
|
-
let width = Math.round(bestRowHeight * ratios[j]);
|
|
206
|
-
widths.push([j - index, width]);
|
|
207
|
-
}
|
|
208
|
-
this._distributeWidths(widths);
|
|
209
|
-
|
|
210
|
-
// Create items for this row.
|
|
211
|
-
for (let j = index; j < index + row.length; j++) {
|
|
212
|
-
let node = this.collection.rows[j];
|
|
213
|
-
let itemWidth = Math.max(widths[j - index][1], this.minItemSize.width);
|
|
214
|
-
let rect = new Rect(x, y, itemWidth, itemHeight);
|
|
215
|
-
let layoutInfo = new LayoutInfo(node.type, node.key, rect);
|
|
216
|
-
this.layoutInfos.set(node.key, layoutInfo);
|
|
217
|
-
x += itemWidth + this.itemSpacing.width;
|
|
215
|
+
y += itemHeight + this.itemSpacing.height;
|
|
216
|
+
index += row.length;
|
|
218
217
|
}
|
|
219
218
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
219
|
+
if (this.isLoading) {
|
|
220
|
+
let loaderY = y;
|
|
221
|
+
let loaderHeight = 60;
|
|
222
|
+
// If there aren't any items, make loader take all avaliable room and remove margin from y calculation
|
|
223
|
+
// so it doesn't scroll
|
|
224
|
+
if (this.collection.size === 0) {
|
|
225
|
+
loaderY = 0;
|
|
226
|
+
loaderHeight = visibleHeight || 60;
|
|
227
|
+
}
|
|
223
228
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
// so it doesn't scroll
|
|
229
|
-
if (this.collection.size === 0) {
|
|
230
|
-
loaderY = 0;
|
|
231
|
-
loaderHeight = visibleHeight || 60;
|
|
229
|
+
let rect = new Rect(0, loaderY, visibleWidth, loaderHeight);
|
|
230
|
+
let loader = new LayoutInfo('loader', 'loader', rect);
|
|
231
|
+
this.layoutInfos.set('loader', loader);
|
|
232
|
+
y = loader.rect.maxY;
|
|
232
233
|
}
|
|
233
234
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
if (this.collection.size === 0 && !this.isLoading) {
|
|
241
|
-
let rect = new Rect(0, 0, visibleWidth, visibleHeight);
|
|
242
|
-
let placeholder = new LayoutInfo('placeholder', 'placeholder', rect);
|
|
243
|
-
this.layoutInfos.set('placeholder', placeholder);
|
|
244
|
-
y = placeholder.rect.maxY;
|
|
235
|
+
if (this.collection.size === 0 && !this.isLoading) {
|
|
236
|
+
let rect = new Rect(0, 0, visibleWidth, visibleHeight);
|
|
237
|
+
let placeholder = new LayoutInfo('placeholder', 'placeholder', rect);
|
|
238
|
+
this.layoutInfos.set('placeholder', placeholder);
|
|
239
|
+
y = placeholder.rect.maxY;
|
|
240
|
+
}
|
|
245
241
|
}
|
|
246
|
-
|
|
247
242
|
this.contentSize = new Size(visibleWidth, y);
|
|
248
243
|
}
|
|
249
244
|
}
|
package/src/GridLayout.tsx
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import {BaseLayout, BaseLayoutOptions} from './BaseLayout';
|
|
14
14
|
import {Key} from 'react';
|
|
15
15
|
import {LayoutInfo, Rect, Size} from '@react-stately/virtualizer';
|
|
16
|
-
import {Node} from '@react-types/shared';
|
|
16
|
+
import {Node, Orientation} from '@react-types/shared';
|
|
17
17
|
|
|
18
18
|
export interface GridLayoutOptions extends BaseLayoutOptions {
|
|
19
19
|
// /**
|
|
@@ -22,7 +22,7 @@ export interface GridLayoutOptions extends BaseLayoutOptions {
|
|
|
22
22
|
// cardSize?: 'S' | 'M' | 'L',
|
|
23
23
|
/**
|
|
24
24
|
* The minimum item size.
|
|
25
|
-
* @default 208 x 208
|
|
25
|
+
* @default 208 x 208 for horizontal card orientation. 102 x 102 for vertical card orientation.
|
|
26
26
|
*/
|
|
27
27
|
minItemSize?: Size,
|
|
28
28
|
/**
|
|
@@ -30,11 +30,6 @@ export interface GridLayoutOptions extends BaseLayoutOptions {
|
|
|
30
30
|
* @default Infinity
|
|
31
31
|
*/
|
|
32
32
|
maxItemSize?: Size,
|
|
33
|
-
/**
|
|
34
|
-
* The margin around the grid view between the edges and the items.
|
|
35
|
-
* @default 24
|
|
36
|
-
*/
|
|
37
|
-
margin?: number, // TODO: Perhaps should accept Responsive<DimensionValue>
|
|
38
33
|
/**
|
|
39
34
|
* The minimum space required between items.
|
|
40
35
|
* @default 18 x 18
|
|
@@ -46,18 +41,23 @@ export interface GridLayoutOptions extends BaseLayoutOptions {
|
|
|
46
41
|
*/
|
|
47
42
|
maxColumns?: number,
|
|
48
43
|
/**
|
|
49
|
-
* The
|
|
44
|
+
* The additional padding along the card's main axis. Affects the sizing of the content area following the card image.
|
|
50
45
|
* @default 95
|
|
51
46
|
*/
|
|
52
|
-
itemPadding?: number
|
|
47
|
+
itemPadding?: number,
|
|
48
|
+
/**
|
|
49
|
+
* The orientation of the cards withn the grid.
|
|
50
|
+
* @default vertical
|
|
51
|
+
*/
|
|
52
|
+
cardOrientation?: Orientation
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
// TODO: copied from V2, update this with the proper spectrum values
|
|
56
|
-
// Should these be affected by Scale as well?
|
|
57
55
|
const DEFAULT_OPTIONS = {
|
|
58
56
|
S: {
|
|
59
57
|
itemPadding: 20,
|
|
60
|
-
minItemSize:
|
|
58
|
+
minItemSize: {
|
|
59
|
+
'vertical': new Size(96, 96)
|
|
60
|
+
},
|
|
61
61
|
maxItemSize: new Size(Infinity, Infinity),
|
|
62
62
|
margin: 8,
|
|
63
63
|
minSpace: new Size(6, 6),
|
|
@@ -65,10 +65,20 @@ const DEFAULT_OPTIONS = {
|
|
|
65
65
|
dropSpacing: 50
|
|
66
66
|
},
|
|
67
67
|
L: {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
itemPadding: {
|
|
69
|
+
'vertical': {
|
|
70
|
+
'medium': 78,
|
|
71
|
+
'large': 98
|
|
72
|
+
},
|
|
73
|
+
'horizontal': {
|
|
74
|
+
'medium': 150,
|
|
75
|
+
'large': 170
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
minItemSize: {
|
|
79
|
+
'vertical': new Size(208, 208),
|
|
80
|
+
'horizontal': new Size(102, 102)
|
|
81
|
+
},
|
|
72
82
|
maxItemSize: new Size(Infinity, Infinity),
|
|
73
83
|
margin: 24,
|
|
74
84
|
minSpace: new Size(18, 18),
|
|
@@ -80,10 +90,10 @@ const DEFAULT_OPTIONS = {
|
|
|
80
90
|
export class GridLayout<T> extends BaseLayout<T> {
|
|
81
91
|
protected minItemSize: Size;
|
|
82
92
|
protected maxItemSize: Size;
|
|
83
|
-
protected margin: number;
|
|
84
93
|
protected minSpace: Size;
|
|
85
94
|
protected maxColumns: number;
|
|
86
95
|
itemPadding: number;
|
|
96
|
+
cardOrientation: Orientation;
|
|
87
97
|
protected itemSize: Size;
|
|
88
98
|
protected numColumns: number;
|
|
89
99
|
protected numRows: number;
|
|
@@ -91,14 +101,14 @@ export class GridLayout<T> extends BaseLayout<T> {
|
|
|
91
101
|
|
|
92
102
|
constructor(options: GridLayoutOptions = {}) {
|
|
93
103
|
super(options);
|
|
94
|
-
// TODO: restore cardSize option when we support different size cards
|
|
95
104
|
let cardSize = 'L';
|
|
96
|
-
this.
|
|
105
|
+
this.cardOrientation = options.cardOrientation || 'vertical';
|
|
106
|
+
this.minItemSize = options.minItemSize || DEFAULT_OPTIONS[cardSize].minItemSize[this.cardOrientation];
|
|
97
107
|
this.maxItemSize = options.maxItemSize || DEFAULT_OPTIONS[cardSize].maxItemSize;
|
|
98
108
|
this.margin = options.margin != null ? options.margin : DEFAULT_OPTIONS[cardSize].margin;
|
|
99
109
|
this.minSpace = options.minSpace || DEFAULT_OPTIONS[cardSize].minSpace;
|
|
100
110
|
this.maxColumns = options.maxColumns || DEFAULT_OPTIONS[cardSize].maxColumns;
|
|
101
|
-
this.itemPadding = options.itemPadding != null ? options.itemPadding : DEFAULT_OPTIONS[cardSize].itemPadding;
|
|
111
|
+
this.itemPadding = options.itemPadding != null ? options.itemPadding : DEFAULT_OPTIONS[cardSize].itemPadding[this.cardOrientation][this.scale];
|
|
102
112
|
this.itemSize = null;
|
|
103
113
|
this.numColumns = 0;
|
|
104
114
|
this.numRows = 0;
|
|
@@ -109,7 +119,6 @@ export class GridLayout<T> extends BaseLayout<T> {
|
|
|
109
119
|
return 'grid';
|
|
110
120
|
}
|
|
111
121
|
|
|
112
|
-
// TODO: Below functions From V2 Maybe don't need this? Might be a short cut for getting all visible rects since otherwise we'd have to iterate across all nodes
|
|
113
122
|
getIndexAtPoint(x, y, allowInsertingAtEnd = false) {
|
|
114
123
|
let itemHeight = this.itemSize.height + this.minSpace.height;
|
|
115
124
|
let itemWidth = this.itemSize.width + this.horizontalSpacing;
|
|
@@ -141,7 +150,7 @@ export class GridLayout<T> extends BaseLayout<T> {
|
|
|
141
150
|
for (let index = firstVisibleItem; index <= lastVisibleItem; index++) {
|
|
142
151
|
let keyFromIndex = this.collection.rows[index].key;
|
|
143
152
|
let layoutInfo = this.layoutInfos.get(keyFromIndex);
|
|
144
|
-
if (this.isVisible(layoutInfo, rect)) {
|
|
153
|
+
if (layoutInfo && this.isVisible(layoutInfo, rect)) {
|
|
145
154
|
res.push(layoutInfo);
|
|
146
155
|
}
|
|
147
156
|
}
|
|
@@ -159,10 +168,13 @@ export class GridLayout<T> extends BaseLayout<T> {
|
|
|
159
168
|
buildCollection() {
|
|
160
169
|
let visibleWidth = this.virtualizer.visibleRect.width;
|
|
161
170
|
let visibleHeight = this.virtualizer.visibleRect.height;
|
|
171
|
+
let horizontalItemPadding = this.cardOrientation === 'horizontal' ? this.itemPadding : 0;
|
|
172
|
+
let verticalItemPadding = this.cardOrientation === 'vertical' ? this.itemPadding : 0;
|
|
173
|
+
let minCardWidth = this.minItemSize.width + horizontalItemPadding;
|
|
162
174
|
|
|
163
175
|
// Compute the number of rows and columns needed to display the content
|
|
164
176
|
let availableWidth = visibleWidth - this.margin * 2;
|
|
165
|
-
let columns = Math.floor((availableWidth + this.minSpace.width) / (
|
|
177
|
+
let columns = Math.floor((availableWidth + this.minSpace.width) / (minCardWidth + this.minSpace.width));
|
|
166
178
|
this.numColumns = Math.max(1, Math.min(this.maxColumns, columns));
|
|
167
179
|
this.numRows = Math.ceil(this.collection.size / this.numColumns);
|
|
168
180
|
|
|
@@ -171,13 +183,11 @@ export class GridLayout<T> extends BaseLayout<T> {
|
|
|
171
183
|
|
|
172
184
|
// Compute the item width based on the space available
|
|
173
185
|
let itemWidth = Math.floor(width / this.numColumns);
|
|
174
|
-
itemWidth = Math.max(
|
|
175
|
-
|
|
186
|
+
itemWidth = Math.max(minCardWidth, Math.min(this.maxItemSize.width, itemWidth));
|
|
176
187
|
// Compute the item height, which is proportional to the item width
|
|
177
|
-
let t = ((itemWidth -
|
|
178
|
-
let itemHeight = this.minItemSize.height + this.minItemSize.height * t;
|
|
179
|
-
itemHeight = Math.max(this.minItemSize.height, Math.min(this.maxItemSize.height, itemHeight)) +
|
|
180
|
-
|
|
188
|
+
let t = ((itemWidth - minCardWidth) / minCardWidth);
|
|
189
|
+
let itemHeight = Math.floor(this.minItemSize.height + this.minItemSize.height * t);
|
|
190
|
+
itemHeight = Math.max(this.minItemSize.height, Math.min(this.maxItemSize.height, itemHeight)) + verticalItemPadding;
|
|
181
191
|
this.itemSize = new Size(itemWidth, itemHeight);
|
|
182
192
|
|
|
183
193
|
// Compute the horizontal spacing and content height
|
|
@@ -226,6 +236,7 @@ export class GridLayout<T> extends BaseLayout<T> {
|
|
|
226
236
|
let rect = new Rect(x, y, this.itemSize.width, this.itemSize.height);
|
|
227
237
|
// TODO: Perhaps have it so that the child key for each row is stored with the layoutInfo?
|
|
228
238
|
let layoutInfo = new LayoutInfo(node.type, node.key, rect);
|
|
239
|
+
layoutInfo.allowOverflow = true;
|
|
229
240
|
this.layoutInfos.set(node.key, layoutInfo);
|
|
230
241
|
return layoutInfo;
|
|
231
242
|
}
|
package/src/WaterfallLayout.tsx
CHANGED
|
@@ -26,11 +26,6 @@ export interface WaterfallLayoutOptions extends BaseLayoutOptions {
|
|
|
26
26
|
* @default Infinity
|
|
27
27
|
*/
|
|
28
28
|
maxItemSize?: Size,
|
|
29
|
-
/**
|
|
30
|
-
* The margin around the grid view between the edges and the items.
|
|
31
|
-
* @default 24
|
|
32
|
-
*/
|
|
33
|
-
margin?: number, // TODO: Perhaps should accept Responsive<DimensionValue>
|
|
34
29
|
/**
|
|
35
30
|
* The minimum space required between items.
|
|
36
31
|
* @default 18 x 18
|
|
@@ -40,22 +35,15 @@ export interface WaterfallLayoutOptions extends BaseLayoutOptions {
|
|
|
40
35
|
* The maximum number of columns.
|
|
41
36
|
* @default Infinity
|
|
42
37
|
*/
|
|
43
|
-
maxColumns?: number
|
|
44
|
-
/**
|
|
45
|
-
* The vertical padding for an item.
|
|
46
|
-
* @default 56
|
|
47
|
-
*/
|
|
48
|
-
itemPadding?: number
|
|
38
|
+
maxColumns?: number
|
|
49
39
|
}
|
|
50
40
|
|
|
51
41
|
// TODO: this didn't have any options that varied with card size, should it have?
|
|
52
42
|
export class WaterfallLayout<T> extends BaseLayout<T> implements KeyboardDelegate {
|
|
53
43
|
protected minItemSize: Size;
|
|
54
44
|
protected maxItemSize: Size;
|
|
55
|
-
protected margin: number;
|
|
56
45
|
protected minSpace: Size;
|
|
57
46
|
protected maxColumns: number;
|
|
58
|
-
itemPadding: number;
|
|
59
47
|
protected numColumns: number;
|
|
60
48
|
protected itemWidth: number;
|
|
61
49
|
protected horizontalSpacing: number;
|
|
@@ -69,8 +57,6 @@ export class WaterfallLayout<T> extends BaseLayout<T> implements KeyboardDelegat
|
|
|
69
57
|
this.margin = options.margin != null ? options.margin : 24;
|
|
70
58
|
this.minSpace = options.minSpace || new Size(18, 18);
|
|
71
59
|
this.maxColumns = options.maxColumns || Infinity;
|
|
72
|
-
// TODO: not entirely sure what this is for since the layout will automatically shift itself to the correct vertical space for the card
|
|
73
|
-
this.itemPadding = options.itemPadding != null ? options.itemPadding : 56;
|
|
74
60
|
|
|
75
61
|
this.itemWidth = 0;
|
|
76
62
|
this.numColumns = 0;
|
|
@@ -119,8 +105,8 @@ export class WaterfallLayout<T> extends BaseLayout<T> implements KeyboardDelegat
|
|
|
119
105
|
} else if (node.props.width && node.props.height) {
|
|
120
106
|
let nodeWidth = node.props.width;
|
|
121
107
|
let nodeHeight = node.props.height;
|
|
122
|
-
let scaledHeight = Math.round(
|
|
123
|
-
height = Math.max(this.minItemSize.height, Math.min(this.maxItemSize.height, scaledHeight))
|
|
108
|
+
let scaledHeight = Math.round(nodeHeight * ((itemWidth) / nodeWidth));
|
|
109
|
+
height = Math.max(this.minItemSize.height, Math.min(this.maxItemSize.height, scaledHeight));
|
|
124
110
|
} else {
|
|
125
111
|
height = itemWidth;
|
|
126
112
|
}
|
|
@@ -133,6 +119,7 @@ export class WaterfallLayout<T> extends BaseLayout<T> implements KeyboardDelegat
|
|
|
133
119
|
let rect = new Rect(x, y, itemWidth, height);
|
|
134
120
|
let layoutInfo = new LayoutInfo(node.type, key, rect);
|
|
135
121
|
layoutInfo.estimatedSize = estimatedSize;
|
|
122
|
+
layoutInfo.allowOverflow = true;
|
|
136
123
|
this.layoutInfos.set(key, layoutInfo);
|
|
137
124
|
|
|
138
125
|
// TODO: From v2 figure out this bit, when does this get called and what to replace this.collectionView._transaction with?
|
|
@@ -185,10 +172,9 @@ export class WaterfallLayout<T> extends BaseLayout<T> implements KeyboardDelegat
|
|
|
185
172
|
// TODO: also not sure about copying layout info vs mutating it. Listlayout does the below
|
|
186
173
|
// but I feel that is because it actually maintained a layoutNode map cache which this doesn't have
|
|
187
174
|
let newLayoutInfo = layoutInfo.copy();
|
|
188
|
-
newLayoutInfo.rect.height = size.height;
|
|
175
|
+
newLayoutInfo.rect.height = size.height < 600 ? size.height : 600;
|
|
176
|
+
newLayoutInfo.estimatedSize = false;
|
|
189
177
|
this.layoutInfos.set(key, newLayoutInfo);
|
|
190
|
-
// TODO: v2 had layoutInfo.estimatedSize = view.estimatedSize || false; but we can't do the same here?
|
|
191
|
-
layoutInfo.estimatedSize = false;
|
|
192
178
|
return true;
|
|
193
179
|
}
|
|
194
180
|
|
package/dist/main.css.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"AAkGA,sBACE,qBAAsB,CACtB,mDAAwD,CACxD,WAAgB,CAChB,kGAAiD,CAEjD,wBAAiB,CAAjB,oBAAiB,CAAjB,gBAAiB,CACjB,oBAwCF,CAtCE,4BACE,YACF,CAEA,oDACE,QACF,CACA,sEAEE,8CAOF,CATA,sEAEE,+CAOF,CATA,4DACE,iBAAkB,CAElB,6CAAuD,CACvD,gBAAa,CAAb,YAAa,CACb,+CAAgD,CAChD,gDAA+C,CAC/C,kGAAuD,CACvD,iBACF,CACA,qDAIE,mIAIF,CAME,yTAEE,kBAAmB,CACnB,SAAU,CACV,kBACF,CAIJ,2BACE,iBAQF,CAJE,6FAEE,mBACF,CAGF,4BACE,iBAKF,CAJE,gCACE,sBAAuB,CACvB,cACF,CAEF,mCACE,iBAKF,CAJE,uCACE,sBAAuB,CACvB,cACF,CAEF,6BACE,gBAAiB,CACjB,SACF,CACA,8BACE,eAAgB,CAChB,qBACF,CACA,6BACE,gBAAiB,CACjB,qBACF,CACA,8BACE,oBAAqB,CACrB,yBAAiB,CAAjB,wBAAiB,CAAjB,gBACF,CACA,8BACE,iBAAkB,CAClB,qBAAsB,CACtB,eACF,CACA,8BACE,iBACF,CACA,6BACE,gBACF,CACA,iCACE,YACF,CAIA,+DAQE,iBAAkB,CAClB,mGAA8C,CAC9C,kBAAmB,CACnB,kGAqHF,CA/HE,qGACE,SACF,CACA,qEACE,SAAU,CACV,mBACF,CAMA,gFAKE,MAGF,CARA,gFAKE,OAGF,CARA,sEACE,WAAY,CACZ,UAAiB,CACjB,WAAgB,CAChB,iBAAkB,CAElB,KAAoB,CACpB,kGACF,CAEA,+EAKE,MAGF,CARA,+EAKE,OAGF,CARA,qEACE,WAAY,CACZ,UAAiB,CACjB,WAAgB,CAChB,iBAAkB,CAElB,KAAoB,CACpB,kGACF,CAEA,0FACE,gBAAa,CAAb,YAAa,CACb,sIAAyI,CAAzI,2IAAyI,CACzI,uQAA2N,CAA3N,4QAA2N,CAE3N,0SAiBF,CARE,2GAKE,2GAEF,CAPA,sNAME,4GACF,CAPA,2GAME,2GACF,CAPA,iGACE,WAAY,CACZ,iBAAkB,CAClB,UAAiB,CACjB,WAGF,CAGF,0HACE,gBAAa,CAAb,YAAa,CACb,sIAAyI,CAAzI,2IAAyI,CACzI,oHAAyH,CAAzH,yHAAyH,CAEzH,6PAWF,CAHE,uJACE,YACF,CAGF,iNAUE,2GAEF,CAZA,kaAWE,4GACF,CAZA,iNAWE,2GACF,CAZA,6LAEE,UAAiB,CACjB,WAAgB,CAEhB,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,mBAAoB,CAEpB,0GAAwD,CACxD,yBAGF,CAGA,kGACE,gBAAa,CAAb,YAAa,CACb,qBAAmB,CAAnB,kBAAmB,CACnB,4BAAqB,CAArB,oBACF,CACA,sGAIE,8CACF,CALA,sGAIE,+CACF,CALA,4FACE,iBAAkB,CAClB,iBAAkB,CAClB,YAEF,CACA,uGAKE,sDACF,CANA,uGAKE,qDACF,CACA,yLACE,4BAAoB,CAApB,mBAAoB,CACpB,kBAAmB,CACnB,eAAgB,CAChB,sBACF,CAGA,6FACE,iBACF,CACA,6FACE,cAAuB,CACvB,iBACF,CACA,4FACE,cAAuB,CACvB,mBAAa,CAAb,YAAa,CACb,iBAAyB,CAAzB,wBACF,CAIF,0DAQE,iBAAkB,CAClB,mGAA8C,CAC9C,kBAAmB,CACnB,kGAyHF,CAnIE,gGACE,SACF,CACA,gEACE,SAAU,CACV,mBACF,CAMA,2EAKE,MAGF,CARA,2EAKE,OAGF,CARA,iEACE,WAAY,CACZ,UAAiB,CACjB,WAAgB,CAChB,iBAAkB,CAElB,KAAoB,CACpB,kGACF,CAEA,0EAKE,MAGF,CARA,0EAKE,OAGF,CARA,gEACE,WAAY,CACZ,UAAiB,CACjB,WAAgB,CAChB,iBAAkB,CAElB,KAAoB,CACpB,kGACF,CAEA,2HACE,gBAAa,CAAb,YAAa,CACb,WAAgB,CAChB,sIAAyI,CAAzI,2IAAyI,CACzI,uQAA2N,CAA3N,4QAA2N,CAE3N,0SAiBF,CARE,4IAKE,2GAEF,CAPA,wRAME,4GACF,CAPA,4IAME,2GACF,CAPA,kIACE,WAAY,CACZ,iBAAkB,CAClB,UAAiB,CACjB,WAGF,CAGF,qHACE,gBAAa,CAAb,YAAa,CACb,WAAgB,CAChB,sIAAyI,CAAzI,2IAAyI,CACzI,oHAAyH,CAAzH,yHAAyH,CAEzH,6PAWF,CAHE,kJACE,YACF,CAEF,uMAWE,2GAEF,CAbA,8YAYE,4GACF,CAbA,uMAYE,2GACF,CAbA,mLAEE,UAAiB,CACjB,WAAgB,CAGhB,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,mBAAoB,CAEpB,0GAAwD,CACxD,yBAGF,CAGA,6FACE,gBAAa,CAAb,YAAa,CACb,qBAAmB,CAAnB,kBAAmB,CACnB,4BAAqB,CAArB,oBACF,CACA,iGAIE,8CACF,CALA,iGAIE,+CACF,CALA,uFACE,iBAAkB,CAClB,iBAAkB,CAClB,YAEF,CACA,kGAKE,sDACF,CANA,kGAKE,qDACF,CACA,+KACE,4BAAoB,CAApB,mBAAoB,CACpB,kBAAmB,CACnB,eAAgB,CAChB,sBACF,CAGA,wFACE,iBAAqB,CACrB,kBAAmB,CACnB,sBACF,CACA,wFACE,cAAuB,CACvB,iBACF,CACA,uFACE,cAAuB,CACvB,mBAAa,CAAb,YAAa,CACb,iBAAyB,CAAzB,wBACF,CAIF,8DAQE,iBAAkB,CAClB,mGAA8C,CAC9C,kBAAmB,CACnB,kGA0HF,CApIE,oGACE,SACF,CACA,oEACE,SAAU,CACV,mBACF,CAMA,+EAKE,MAGF,CARA,+EAKE,OAGF,CARA,qEACE,WAAY,CACZ,UAAiB,CACjB,WAAgB,CAChB,iBAAkB,CAElB,KAAoB,CACpB,kGACF,CAEA,8EAKE,MAGF,CARA,8EAKE,OAGF,CARA,oEACE,WAAY,CACZ,UAAiB,CACjB,WAAgB,CAChB,iBAAkB,CAElB,KAAoB,CACpB,kGACF,CAEA,+HACE,gBAAa,CAAb,YAAa,CACb,sIAAyI,CAAzI,2IAAyI,CACzI,uQAA2N,CAA3N,4QAA2N,CAE3N,0SAiBF,CARE,gJAKE,2GAEF,CAPA,gSAME,4GACF,CAPA,gJAME,2GACF,CAPA,sIACE,WAAY,CACZ,iBAAkB,CAClB,UAAiB,CACjB,WAGF,CAGF,yHACE,gBAAa,CAAb,YAAa,CACb,sIAAyI,CAAzI,2IAAyI,CACzI,oHAAyH,CAAzH,yHAAyH,CAEzH,6PAcF,CAHE,sJACE,YACF,CAEF,+MAWE,2GAEF,CAbA,8ZAYE,4GACF,CAbA,+MAYE,2GACF,CAbA,2LAEE,UAAiB,CACjB,WAAgB,CAGhB,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,mBAAoB,CAEpB,0GAAwD,CACxD,yBAGF,CAGA,iGACE,gBAAa,CAAb,YAAa,CACb,qBAAmB,CAAnB,kBAAmB,CACnB,4BAAqB,CAArB,oBAAqB,CACrB,UAAiB,CACjB,iDACF,CACA,qGAIE,8CACF,CALA,qGAIE,+CACF,CALA,2FACE,iBAAkB,CAClB,iBAAkB,CAClB,YAEF,CACA,sGAKE,sDACF,CANA,sGAKE,qDACF,CACA,uLACE,4BAAoB,CAApB,mBAAoB,CACpB,kBAAmB,CACnB,eAAgB,CAChB,sBACF,CAGA,4FACE,iBACF,CACA,4FACE,cAAuB,CACvB,iBACF,CACA,2FACE,cAAuB,CACvB,mBAAa,CAAb,YAAa,CACb,iBAAyB,CAAzB,wBACF,CAOF,+DAUE,oDAqFF,CA9FE,qGACE,SACF,CACA,iGACE,UACF,CACA,gGACE,SACF,CAGA,0FACE,WAAgB,CAChB,gBAAa,CAAb,YAAa,CACb,+DAAwE,CAAxE,oEAAwE,CACxE,6PAAyN,CAAzN,kQAAyN,CACzN,kJAkCF,CA3BE,iGACE,WAAY,CACZ,iBAAkB,CAElB,kGACF,CAEA,0GAIE,MAOF,CAXA,oNAKE,OAMF,CAXA,0GAKE,MAMF,CAXA,gGACE,WAAY,CACZ,iBAAkB,CAClB,iBAAkB,CAGlB,KAAoB,CACpB,QAAkB,CAClB,sEAAuD,CAEvD,gKACF,CACA,2HACE,aAAc,CACd,iBAAkB,CAClB,UAAiB,CACjB,WAAgB,CAEhB,kGACF,CAEF,6LAEE,WAAgB,CAChB,UAAiB,CACjB,cAAqB,CAErB,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,mBAAoB,CACpB,kGACF,CACA,kGACE,gBAAa,CAAb,YAAa,CACb,qBAAmB,CAAnB,kBAAmB,CACnB,4BAAqB,CAArB,oBACF,CACA,4FACE,YACF,CACA,uGAKE,sDACF,CANA,uGAKE,qDACF,CANA,6FACE,4BAAoB,CAApB,mBAAoB,CACpB,kBAAmB,CACnB,eAAgB,CAChB,sBAEF,CACA,sGAKE,sDACF,CANA,sGAKE,qDACF,CANA,4FACE,4BAAoB,CAApB,mBAAoB,CACpB,kBAAmB,CACnB,eAAgB,CAChB,sBAEF,CAGA,6FACE,iBACF,CAIA,yLACE,YACF,CAKF,6DAUE,oDA4FF,CArGE,mGACE,SACF,CACA,+FACE,UACF,CACA,8FACE,SACF,CAGA,wFACE,WAAgB,CAChB,gBAAa,CAAb,YAAa,CACb,+DAAwE,CAAxE,oEAAwE,CACxE,4PAA4N,CAA5N,iQAA4N,CAC5N,kJAkCF,CA3BE,+FACE,WAAY,CACZ,iBAAkB,CAElB,kGACF,CAEA,wGAIE,MAOF,CAXA,gNAKE,OAMF,CAXA,wGAKE,MAMF,CAXA,8FACE,WAAY,CACZ,iBAAkB,CAClB,iBAAkB,CAGlB,KAAoB,CACpB,QAAkB,CAClB,sEAAuD,CAEvD,gKACF,CACA,yHACE,aAAc,CACd,iBAAkB,CAClB,UAAiB,CACjB,WAAgB,CAEhB,kGACF,CAEF,yLAEE,WAAgB,CAChB,UAAiB,CACjB,cAAqB,CAErB,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,mBAAoB,CACpB,kGAKF,CAJE,iMACE,WAAY,CACZ,WACF,CAGF,gGACE,gBAAa,CAAb,YAAa,CACb,qBAAmB,CAAnB,kBAAmB,CACnB,4BAAqB,CAArB,oBACF,CACA,0FACE,YACF,CACA,qGAKE,sDACF,CANA,qGAKE,qDACF,CANA,2FACE,4BAAoB,CAApB,mBAAoB,CACpB,kBAAmB,CACnB,eAAgB,CAChB,sBAEF,CACA,oGAKE,sDACF,CANA,oGAKE,qDACF,CANA,0FACE,4BAAoB,CAApB,mBAAoB,CACpB,kBAAmB,CACnB,eAAgB,CAChB,sBAEF,CAGA,2FACE,iBAAqB,CACrB,kBAAmB,CACnB,sBACF,CAIA,qLACE,YACF,CAIF,0DAUE,oDA8GF,CAvHE,gGACE,SACF,CACA,4FACE,UACF,CACA,2FACE,SACF,CAGA,qFACE,WAAgB,CAChB,gBAAa,CAAb,YAAa,CACb,+DAAwE,CAAxE,oEAAwE,CACxE,0MAAyK,CAAzK,+MAAyK,CACzK,kJAwCF,CAjCE,4FACE,WAAY,CACZ,iBAAkB,CAGlB,OAAc,CACd,QAAa,CACb,gBAAiB,CACjB,iBAAkB,CAElB,kGACF,CAEA,qGAIE,MAOF,CAXA,0MAKE,OAMF,CAXA,qGAKE,MAMF,CAXA,2FACE,WAAY,CACZ,iBAAkB,CAClB,iBAAkB,CAGlB,KAAoB,CACpB,QAAkB,CAClB,sEAAuD,CAEvD,gKACF,CACA,sHACE,aAAc,CACd,iBAAkB,CAClB,UAAiB,CACjB,WAAgB,CAEhB,kGACF,CAEF,uQAEE,qBAAsB,CACtB,WAAgB,CAChB,UAAiB,CACjB,cAAqB,CAErB,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,mBACF,CACA,2PAEE,qBAAsB,CACtB,iDAAkD,CAClD,WAAgB,CAChB,UAAiB,CACjB,cAAqB,CAErB,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,mBACF,CACA,sFACE,2HAA4E,CAA5E,mHAA4E,CAG5E,iBACF,CACA,6FACE,gBAAa,CAAb,YAAa,CACb,qBAAmB,CAAnB,kBAAmB,CACnB,4BAAqB,CAArB,oBACF,CACA,uFACE,YACF,CACA,kGAKE,sDACF,CANA,kGAKE,qDACF,CANA,wFACE,4BAAoB,CAApB,mBAAoB,CACpB,kBAAmB,CACnB,eAAgB,CAChB,sBAEF,CACA,iGAKE,sDACF,CANA,iGAKE,qDACF,CANA,uFACE,4BAAoB,CAApB,mBAAoB,CACpB,kBAAmB,CACnB,eAAgB,CAChB,sBAEF,CAGA,wFACE,iBAAqB,CACrB,kBAAmB,CACnB,sBACF,CAIA,+KACE,YACF,CAIF,8DAUE,oDAuFF,CAhGE,oGACE,SACF,CACA,gGACE,UACF,CACA,+FACE,SACF,CAGA,yFACE,WAAgB,CAChB,gBAAa,CAAb,YAAa,CACb,+DAAwE,CAAxE,oEAAwE,CACxE,2MAA0K,CAA1K,gNAA0K,CAC1K,kJAoCF,CA7BE,gGACE,WAAY,CACZ,iBAAkB,CAElB,kGACF,CAEA,yGAIE,MASF,CAbA,kNAKE,OAQF,CAbA,yGAKE,MAQF,CAbA,+FACE,WAAY,CACZ,iBAAkB,CAClB,iBAAkB,CAGlB,KAAoB,CACpB,QAAkB,CAClB,sEAAuD,CACvD,sEAAuD,CACvD,2BAA4B,CAE5B,gKACF,CACA,0HACE,aAAc,CACd,iBAAkB,CAClB,UAAiB,CACjB,WAAgB,CAEhB,kGACF,CAEF,2LAEE,mBAAa,CAAb,YAAa,CAEb,0BAAkB,CAAlB,iBAAkB,CAClB,mBAAoB,CAEpB,kGACF,CAGA,iGACE,gBAAa,CAAb,YAAa,CACb,qBAAmB,CAAnB,kBAAmB,CACnB,4BAAqB,CAArB,oBAAqB,CACrB,UAAiB,CACjB,iDACF,CACA,2FACE,YACF,CACA,sGAEE,sDACF,CAHA,sGAEE,qDACF,CAHA,4FACE,4BAAoB,CAApB,mBAEF,CACA,qGAKE,sDACF,CANA,qGAKE,qDACF,CANA,2FACE,4BAAoB,CAApB,mBAAoB,CACpB,kBAAmB,CACnB,eAAgB,CAChB,sBAEF,CAGA,4FACE,iBACF,CAIA,uLACE,YACF,CAUF,6DAIE,mGAA8C,CAC9C,kBAAmB,CACnB,kGAuFF,CA5FE,8FACE,SACF,CAWE,4iBACE,YACF,CAGF,wFACE,gBAAa,CAAb,YAAa,CACb,WAAgB,CAChB,kHAAwH,CAAxH,uHAAwH,CACxH,gEAAsE,CAAtE,qEAAsE,CACtE,gHAaF,CARE,+FACE,WAAY,CACZ,iBAAkB,CAElB,UAAiB,CACjB,WAAgB,CAChB,kGACF,CAEF,6MASE,2GAIF,CAbA,6MASE,4GAIF,CAbA,6MAUE,8GAGF,CAbA,6MAUE,+GAGF,CAbA,6MAWE,yGAEF,CAbA,6MAWE,wGAEF,CAbA,6MAYE,wBACF,CAbA,6MAYE,uBACF,CAbA,yLAEE,iBAAkB,CAClB,WAAgB,CAGhB,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,mBAMF,CAKA,gGACE,gBAAa,CAAb,YAAa,CACb,qBAAmB,CAAnB,kBAAmB,CACnB,4BAAqB,CAArB,oBACF,CAEA,0FACE,YACF,CACA,qGAKE,sDACF,CANA,qGAKE,qDACF,CANA,2FACE,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,kBAAmB,CACnB,eAAgB,CAChB,sBAEF,CACA,0FACE,YACF,CAIA,2FACE,UAAW,CACX,eAAgB,CAChB,mBAAoB,CACpB,oBAAqB,CAGrB,kBACF,CAIA,qLACE,YACF,CAIF,iEAIE,mGAA8C,CAC9C,kBAAmB,CACnB,kGAgGF,CArGE,kGACE,SACF,CAWE,gkBACE,YACF,CAGF,4FACE,iBAAkB,CAClB,gBAAa,CAAb,YAAa,CACb,WAAgB,CAChB,eAAoB,CACpB,kHAAwH,CAAxH,uHAAwH,CACxH,gEAAsE,CAAtE,qEAAsE,CACtE,gHAoBF,CAPE,qMAPE,WAAY,CACZ,UAAiB,CACjB,WAAgB,CAChB,iBAAkB,CAClB,kGASF,CAEF,qNASE,2GAIF,CAbA,qNASE,4GAIF,CAbA,qNAUE,8GAGF,CAbA,qNAUE,+GAGF,CAbA,qNAWE,yGAEF,CAbA,qNAWE,wGAEF,CAbA,qNAYE,wBACF,CAbA,qNAYE,uBACF,CAbA,iMAEE,iBAAkB,CAClB,WAAgB,CAGhB,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,mBAMF,CAKA,oGACE,gBAAa,CAAb,YAAa,CACb,qBAAmB,CAAnB,kBAAmB,CACnB,4BAAqB,CAArB,oBACF,CAEA,8FACE,YACF,CACA,yGAKE,sDACF,CANA,yGAKE,qDACF,CANA,+FACE,0BAAkB,CAAlB,yBAAkB,CAAlB,iBAAkB,CAClB,kBAAmB,CACnB,eAAgB,CAChB,sBAEF,CACA,8FACE,YACF,CAIA,+FACE,UAAW,CACX,eAAgB,CAChB,mBAAoB,CACpB,oBAAqB,CAGrB,kBACF,CAIA,6LACE,YACF,CC1sCA,4CACE,2FAAyD,CACzD,mGAAiE,CACjE,yDACF,CAEC,4DACE,oEACF,CAED,mDACE,2CACF,CASF,8BACE,2CACF,CAMA,2DACE,2CACF,CAMA,+BACE,kDAA+C,CAC/C,qDA6FF,CA3FE,iDACE,kDAIF,CAHE,wDACE,0DACF,CAKA,yDAIE,mGACF,CAGF,oEACE,2FAOF,CANE,2EAIE,mGACF,CAGF,iDACE,2FAIF,CAHE,wDACE,mGACF,CAGF,sFACE,2FAIF,CAHE,6FACE,mGACF,CAGF,kDACE,2FAYF,CAXE,wDACE,sDAAuD,CACvD,WACF,CACA,oEACE,2FAKF,CAJE,0EACE,sDAAuD,CACvD,WACF,CAGJ,sCACE,gCACF,CACA,qCACE,6CACiE,CACjE,SACF,CAEE,iEACE,gCAA0E,CAC1E,sDACF,CAGF,6HAEE,yDACF,CAWA,6DACE,2CACF,CAOF,+BACE,wBAAyB,CACzB,wBA+FF,CA5FM,mFACE,sDAA2E,CAE3E,0DACF,CAiBA,wLAIE,mGACF,CAcA,yMACE,mGACF,CAMA,8GACE,WACF,CAIE,gIACE,WACF,CAMJ,iEACE,gCAA0E,CAC1E,sDACF,CAqBF,gEACE,6CACiE,CACjE,sDAAuD,CACvD,SACF,CAGF,kCACE,kDAA+C,CAC/C,qDAoGF,CAnGE,oDACE,kDAMF,CAJI,sFACE,0DACF,CAOA,uFAIE,mGACF,CAIJ,uEACE,2FASF,CAPI,yGAIE,mGACF,CAIJ,oDACE,2FAMF,CAJI,sFACE,mGACF,CAIJ,yFACE,2FAMF,CAJI,2HACE,mGACF,CAIJ,qDACE,2FAgBF,CAdI,sFACE,sDAAuD,CACvD,WACF,CAEF,uEACE,2FAOF,CALI,wGACE,sDAAuD,CACvD,WACF,CAMJ,mEACE,6CACiE,CACjE,SACF,CAEF,uJAEE,wDACF,CAHA,uJAEE,uDACF,CC1UF,gDACE,mBAAa,CAAb,YAAa,CACb,qBAAmB,CAAnB,kBAAmB,CACnB,oBAAuB,CAAvB,sBAAuB,CACvB,UAAW,CACX,WACF,CAEA,4CACE,0BAA4B,CAC5B,mCACF,CAEA,gCACE,YACF","sources":["./node_modules/@adobe/spectrum-css-temp/components/card/index.css","./node_modules/@adobe/spectrum-css-temp/components/card/skin.css","./packages/@react-spectrum/card/src/cardview.css"],"sourcesContent":["/*\nCopyright 2019 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\n@import '../commons/index.css';\n\n/**\nLAYERS: There are 5 layers to quiet cards\nlayer -1:\n card back color, seen mostly in quiet cards in a grid\n\nlayer default:\n all content provided by the user\n\nlayer 1:\n avatar\n\nlayer 2:\n color covering\n\nlayer 3:\n checkbox\n*/\n/**\nLAYERS: There are 4 layers to standard/horizontal cards\nno -1 layer because standard cards have a background already\nlayer default:\n all content provided by the user\n\nlayer 1:\n avatar\n\nlayer 2:\n color covering\n\nlayer 3:\n checkbox\n*/\n\n/**\nLAYOUTS\n standard-vertical standard-horizontal quiet-vertical\nvertical-masonry x no x\nhorizontal-masonry no no x\ntiles x x x\nstandalone x x x\n\nStandard Vertical\n.spectrum-Card--waterfall\n.spectrum-Card--tile\n.spectrum-Card--noLayout\n\nStandard Horizontal\n.spectrum-Card--tile\n.spectrum-Card--noLayout\n\nQuiet Vertical\n.spectrum-Card--waterfall\n.spectrum-Card--gallery\n.spectrum-Card--tile\n.spectrum-Card--noLayout\n*/\n\n/**\nELEMENTS\n.spectrum-Card\n.spectrum-Card:before element in standard cards for border/focus\n.spectrum-Card:after element in standard cards for selection overlay\n.spectrum-Card-grid element defining the css grid that everything is laid out on\n.spectrum-Card-grid:before element in the grid used to enforce aspect ratio in quiet cards\n.spectrum-Card-grid:after element in the grid used to decorate with focus ring (required on just the image part in quiet cards)\n.spectrum-Card-grid .spectrum-Card-decoration extra element in the grid used to decorative features like the blue overlay just over the image in quiet cards\n.spectrum-Card-grid .spectrum-Card-sizeHelper extra element in the grid used to enforce aspect ratio in horizontal cards (can't use the before for this, see FF)\n.spectrum-Card-checkboxWrapper\n.spectrum-Card-checkbox\n\nuser-provided\n.spectrum-Card-image\n.spectrum-Card-illustration\n.spectrum-Card-avatar\n.spectrum-Card-heading\n.spectrum-Card-detail\n.spectrum-Card-actions\n.spectrum-Card-content\n.spectrum-Card-divider\n.spectrum-Card-footer\n */\n\n\n/** Shared **/\n.spectrum-Card {\n box-sizing: border-box;\n min-inline-size: var(--spectrum-card-body-header-height);;\n block-size: 100%;\n border-radius: var(--spectrum-card-border-radius);\n\n user-select: none;\n text-decoration: none;\n\n &:focus {\n outline: none;\n }\n\n .spectrum-Card-heading {\n margin: 0;\n }\n .spectrum-Card-checkboxWrapper {\n position: absolute;\n inset-inline-start: var(--spectrum-card-checkbox-margin);\n inset-block-start: var(--spectrum-card-checkbox-margin);\n display: grid;\n inline-size: var(--spectrum-quickactions-height);\n block-size: var(--spectrum-quickactions-height);\n border-radius: var(--spectrum-card-quiet-border-radius);\n visibility: hidden;\n }\n .spectrum-Card-checkbox {\n /* make hitbox of checkbox same as the floating background it sits on, top and bottom are computing 0 right now though\n using calc(50% - var(--spectrum-checkbox-height) - calc(var(--spectrum-checkbox-box-size) / 2))\n */\n padding: 4px\n calc(50% - calc(var(--spectrum-checkbox-box-size) / 2))\n 4px\n calc(50% - calc(var(--spectrum-checkbox-box-size) / 2));\n }\n\n &.is-focused,\n &.is-selected,\n &.focus-ring, /* only for visible focus */\n &:hover {\n .spectrum-Card-checkboxWrapper {\n /* Ideally, this would simply apply is-open to the QuickActions component */\n visibility: visible;\n opacity: 1;\n pointer-events: all;\n }\n }\n}\n\n.spectrum-Card-grid {\n position: relative;\n &:before {\n\n }\n &:after,\n .spectrum-Card-decoration{\n pointer-events: none;\n }\n}\n\n.spectrum-Card-image {\n grid-area: preview;\n & img {\n -webkit-user-drag: none;\n user-drag: none;\n }\n}\n.spectrum-Card-illustration {\n grid-area: preview;\n & svg {\n -webkit-user-drag: none;\n user-drag: none;\n }\n}\n.spectrum-Card-avatar {\n grid-area: avatar;\n z-index: 1;\n}\n.spectrum-Card-heading {\n grid-area: title;\n word-break: break-word;\n}\n.spectrum-Card-detail {\n grid-area: detail;\n word-break: break-word;\n}\n.spectrum-Card-actions {\n grid-area: actionmenu;\n align-self: start;\n}\n.spectrum-Card-content {\n grid-area: content;\n word-break: break-word;\n overflow: hidden;\n}\n.spectrum-Card-divider {\n grid-area: divider;\n}\n.spectrum-Card-footer {\n grid-area: footer;\n}\n.spectrum-Card-decoration {\n display: none;\n}\n\n/** Standard Vertical **/\n/** Waterfall **/\n.spectrum-Card--waterfall.spectrum-Card--default {\n .spectrum-Card-checkboxWrapper {\n z-index: 3;\n }\n &:after {\n z-index: 2;\n pointer-events: none;\n }\n position: relative;\n border-width: var(--spectrum-card-border-size);\n border-style: solid;\n border-radius: var(--spectrum-card-border-radius);\n\n &:before {\n content: ' ';\n inline-size: 100%;\n block-size: 100%;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n border-radius: var(--spectrum-card-border-radius);\n }\n\n &:after {\n content: ' ';\n inline-size: 100%;\n block-size: 100%;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n border-radius: var(--spectrum-card-border-radius);\n }\n\n .spectrum-Card-grid {\n display: grid;\n grid-template-columns: var(--spectrum-card-body-padding-left) minmax(0, auto) 1fr minmax(0, auto) var(--spectrum-card-body-padding-right);\n grid-template-rows: minmax(var(--spectrum-card-coverphoto-height), auto) var(--spectrum-global-dimension-size-300) minmax(var(--spectrum-actionbutton-height), auto) 1fr auto auto var(--spectrum-card-body-padding-bottom);\n /* absolutely position avatar relative to the preview */\n grid-template-areas:\n \"preview preview preview preview preview\"\n \". . . . .\"\n \". title detail actionmenu .\"\n \". content content content .\"\n \". divider divider divider .\"\n \". footer footer footer .\"\n \". . . . .\";\n\n &:before {\n content: ' ';\n grid-area: preview;\n inline-size: 100%;\n block-size: 100%;\n border-start-start-radius: var(--spectrum-card-border-radius);\n border-start-end-radius: var(--spectrum-card-border-radius);\n }\n }\n\n &.spectrum-Card--noPreview .spectrum-Card-grid {\n display: grid;\n grid-template-columns: var(--spectrum-card-body-padding-left) minmax(0, auto) 1fr minmax(0, auto) var(--spectrum-card-body-padding-right);\n grid-template-rows: var(--spectrum-global-dimension-size-300) auto 1fr auto auto var(--spectrum-card-body-padding-bottom);\n /* absolutely position avatar relative to the preview */\n grid-template-areas:\n \". . . . .\"\n \". title detail actionmenu .\"\n \". content content content .\"\n \". divider divider divider .\"\n \". footer footer footer .\"\n \". . . . .\";\n\n .spectrum-Card-avatar {\n display: none;\n }\n }\n\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n inline-size: 100%;\n block-size: 100%;\n\n align-self: center;\n justify-self: center;\n\n border-block-end-width: var(--spectrum-card-border-size);\n border-block-end-style: solid;\n border-start-start-radius: var(--spectrum-card-border-radius);\n border-start-end-radius: var(--spectrum-card-border-radius);\n }\n .spectrum-Card-image {\n }\n .spectrum-Card-illustration {\n display: grid; /* not sure why flex doesn't work here */\n align-items: center;\n justify-items: center;\n }\n .spectrum-Card-avatar {\n grid-area: preview;\n position: absolute;\n inset-block-end: -10px;\n inset-inline-start: var(--spectrum-card-body-padding-left);\n }\n .spectrum-Card-heading {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-detail {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .spectrum-Card-actions {\n }\n .spectrum-Card-content {\n margin-block-end: 5px;\n }\n .spectrum-Card-divider {\n margin-block-start: 5px;\n margin-block-end: 5px;\n }\n .spectrum-Card-footer {\n margin-block-start: 5px;\n display: flex;\n justify-content: flex-end;\n }\n}\n\n/** Tile **/\n.spectrum-Card--grid.spectrum-Card--default {\n .spectrum-Card-checkboxWrapper {\n z-index: 3;\n }\n &:after {\n z-index: 2;\n pointer-events: none;\n }\n position: relative;\n border-width: var(--spectrum-card-border-size);\n border-style: solid;\n border-radius: var(--spectrum-card-border-radius);\n\n &:before {\n content: ' ';\n inline-size: 100%;\n block-size: 100%;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n border-radius: var(--spectrum-card-border-radius);\n }\n\n &:after {\n content: ' ';\n inline-size: 100%;\n block-size: 100%;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n border-radius: var(--spectrum-card-border-radius);\n }\n\n &:not(.spectrum-Card--noPreview) .spectrum-Card-grid {\n display: grid;\n block-size: 100%;\n grid-template-columns: var(--spectrum-card-body-padding-left) minmax(0, auto) 1fr minmax(0, auto) var(--spectrum-card-body-padding-right);\n grid-template-rows: minmax(var(--spectrum-card-coverphoto-height), 1fr) var(--spectrum-global-dimension-size-200) minmax(var(--spectrum-actionbutton-height), auto) auto auto auto var(--spectrum-card-body-padding-bottom);\n /* absolutely position avatar relative to the preview */\n grid-template-areas:\n \"preview preview preview preview preview\"\n \". . . . .\"\n \". title detail actionmenu .\"\n \". content content content .\"\n \". divider divider divider .\"\n \". footer footer footer .\"\n \". . . . .\";\n\n &:before {\n content: ' ';\n grid-area: preview;\n inline-size: 100%;\n block-size: 100%;\n border-start-start-radius: var(--spectrum-card-border-radius);\n border-start-end-radius: var(--spectrum-card-border-radius);\n }\n }\n\n &.spectrum-Card--noPreview .spectrum-Card-grid {\n display: grid;\n block-size: 100%;\n grid-template-columns: var(--spectrum-card-body-padding-left) minmax(0, auto) 1fr minmax(0, auto) var(--spectrum-card-body-padding-right);\n grid-template-rows: var(--spectrum-global-dimension-size-300) auto 1fr auto auto var(--spectrum-card-body-padding-bottom);\n /* absolutely position avatar relative to the preview */\n grid-template-areas:\n \". . . . .\"\n \". title detail actionmenu .\"\n \". content content content .\"\n \". divider divider divider .\"\n \". footer footer footer .\"\n \". . . . .\";\n\n .spectrum-Card-avatar {\n display: none;\n }\n }\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n inline-size: 100%;\n block-size: 100%;\n /*min-inline-size: var(--spectrum-card-min-width); causes to obscure border */\n\n align-self: center;\n justify-self: center;\n\n border-block-end-width: var(--spectrum-card-border-size);\n border-block-end-style: solid;\n border-start-start-radius: var(--spectrum-card-border-radius);\n border-start-end-radius: var(--spectrum-card-border-radius);\n }\n .spectrum-Card-image {\n }\n .spectrum-Card-illustration {\n display: grid; /* not sure why flex doesn't work here */\n align-items: center;\n justify-items: center;\n }\n .spectrum-Card-avatar {\n grid-area: preview;\n position: absolute;\n inset-block-end: -10px;\n inset-inline-start: var(--spectrum-card-body-padding-left);\n }\n .spectrum-Card-heading {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-detail {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .spectrum-Card-actions {\n }\n .spectrum-Card-content {\n margin-block-end: 5px;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .spectrum-Card-divider {\n margin-block-start: 5px;\n margin-block-end: 5px;\n }\n .spectrum-Card-footer {\n margin-block-start: 5px;\n display: flex;\n justify-content: flex-end;\n }\n}\n\n/** Standalone **/\n.spectrum-Card--noLayout.spectrum-Card--default {\n .spectrum-Card-checkboxWrapper {\n z-index: 3;\n }\n &:after {\n z-index: 2;\n pointer-events: none;\n }\n position: relative;\n border-width: var(--spectrum-card-border-size);\n border-style: solid;\n border-radius: var(--spectrum-card-border-radius);\n\n &:before {\n content: ' ';\n inline-size: 100%;\n block-size: 100%;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n border-radius: var(--spectrum-card-border-radius);\n }\n\n &:after {\n content: ' ';\n inline-size: 100%;\n block-size: 100%;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n border-radius: var(--spectrum-card-border-radius);\n }\n\n &:not(.spectrum-Card--noPreview) .spectrum-Card-grid {\n display: grid;\n grid-template-columns: var(--spectrum-card-body-padding-left) minmax(0, auto) 1fr minmax(0, auto) var(--spectrum-card-body-padding-right);\n grid-template-rows: minmax(var(--spectrum-card-coverphoto-height), auto) var(--spectrum-global-dimension-size-300) minmax(var(--spectrum-actionbutton-height), auto) 1fr auto auto var(--spectrum-card-body-padding-bottom);\n /* absolutely position avatar relative to the preview */\n grid-template-areas:\n \"preview preview preview preview preview\"\n \". . . . .\"\n \". title detail actionmenu .\"\n \". content content content .\"\n \". divider divider divider .\"\n \". footer footer footer .\"\n \". . . . .\";\n\n &:before {\n content: ' ';\n grid-area: preview;\n inline-size: 100%;\n block-size: 100%;\n border-start-start-radius: var(--spectrum-card-border-radius);\n border-start-end-radius: var(--spectrum-card-border-radius);\n }\n }\n\n &.spectrum-Card--noPreview .spectrum-Card-grid {\n display: grid;\n grid-template-columns: var(--spectrum-card-body-padding-left) minmax(0, auto) 1fr minmax(0, auto) var(--spectrum-card-body-padding-right);\n grid-template-rows: var(--spectrum-global-dimension-size-300) auto 1fr auto auto var(--spectrum-card-body-padding-bottom);\n /* absolutely position avatar relative to the preview */\n grid-template-areas:\n \". . . . .\"\n \". title detail actionmenu .\"\n \". content content content .\"\n \". divider divider divider .\"\n \". footer footer footer .\"\n \". . . . .\";\n\n /* TODO: is this accurate? if we don't want to enforce it, then we can\n give min-height to spectrum-Card-image/illustration\n and it would no longer be a card state, we could simplify */\n .spectrum-Card-avatar {\n display: none;\n }\n }\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n inline-size: 100%;\n block-size: 100%;\n /*min-inline-size: var(--spectrum-card-min-width); causes to obscure border */\n\n align-self: center;\n justify-self: center;\n\n border-block-end-width: var(--spectrum-card-border-size);\n border-block-end-style: solid;\n border-start-start-radius: var(--spectrum-card-border-radius);\n border-start-end-radius: var(--spectrum-card-border-radius);\n }\n .spectrum-Card-image {\n }\n .spectrum-Card-illustration {\n display: grid; /* not sure why flex doesn't work here */\n align-items: center;\n justify-items: center;\n inline-size: 100%;\n block-size: var(--spectrum-card-coverphoto-height); /* this may be an incorrect assumption */\n }\n .spectrum-Card-avatar {\n grid-area: preview;\n position: absolute;\n inset-block-end: -10px;\n inset-inline-start: var(--spectrum-card-body-padding-left);\n }\n .spectrum-Card-heading {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-detail {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .spectrum-Card-actions {\n }\n .spectrum-Card-content {\n margin-block-end: 5px;\n }\n .spectrum-Card-divider {\n margin-block-start: 5px;\n margin-block-end: 5px;\n }\n .spectrum-Card-footer {\n margin-block-start: 5px;\n display: flex;\n justify-content: flex-end;\n }\n}\n/** END Standard Vertical **/\n\n\n/** Quiet Vertical **/\n/** Waterfall **/\n.spectrum-Card--waterfall.spectrum-Card--isQuiet {\n .spectrum-Card-checkboxWrapper {\n z-index: 3;\n }\n .spectrum-Card-grid:before {\n z-index: -1;\n }\n .spectrum-Card-grid:after {\n z-index: 2;\n }\n min-inline-size: var(--spectrum-card-quiet-min-size);\n\n .spectrum-Card-grid {\n block-size: 100%;\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(30px, 1fr) minmax(0, auto);\n grid-template-rows: minmax(var(--spectrum-card-coverphoto-height), auto) var(--spectrum-card-quiet-body-header-margin-top) minmax(var(--spectrum-actionbutton-height), auto) 1fr var(--spectrum-card-body-padding-bottom);\n grid-template-areas:\n \"preview preview preview\"\n \". . .\"\n \"title detail actionmenu\"\n \"content content content\"\n \". . . \";\n\n &:before {\n content: ' ';\n grid-area: preview;\n\n border-radius: var(--spectrum-card-quiet-border-radius);\n }\n\n &:after {\n content: ' ';\n grid-area: preview;\n position: absolute;\n inset-inline-start: 0;\n inset-inline-end: 0;\n inset-block-start: 0;\n inset-block-end: 0;\n margin: calc(var(--spectrum-alias-focus-ring-gap) * -2);\n\n border-radius: calc(var(--spectrum-card-quiet-border-radius) + var(--spectrum-alias-focus-ring-gap));\n }\n .spectrum-Card-decoration {\n display: block;\n grid-area: preview;\n inline-size: 100%;\n block-size: 100%;\n\n border-radius: var(--spectrum-card-quiet-border-radius);\n }\n }\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n block-size: 100%;\n inline-size: 100%;\n min-inline-size: 100%; /* I do not know why setting a min-width causes the image to shrink */\n\n align-self: center;\n justify-self: center;\n border-radius: var(--spectrum-card-quiet-border-radius);\n }\n .spectrum-Card-illustration {\n display: grid; /* not sure why flex doesn't work here */\n align-items: center;\n justify-items: center;\n }\n .spectrum-Card-avatar {\n display: none;\n }\n .spectrum-Card-heading {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-detail {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-actions {\n }\n .spectrum-Card-content {\n margin-block-end: 5px;\n }\n .spectrum-Card-divider {\n display: none;\n }\n .spectrum-Card-footer {\n display: none;\n }\n}\n\n/** Gallery **/\n/** Non-collection version doesn't work in FF, but should work in a collection which determines the size **/\n.spectrum-Card--gallery.spectrum-Card--isQuiet {\n .spectrum-Card-checkboxWrapper {\n z-index: 3;\n }\n .spectrum-Card-grid:before {\n z-index: -1;\n }\n .spectrum-Card-grid:after {\n z-index: 2;\n }\n min-inline-size: var(--spectrum-card-quiet-min-size);\n\n .spectrum-Card-grid {\n block-size: 100%;\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(30px, 1fr) minmax(0, auto);\n grid-template-rows: 1fr var(--spectrum-card-quiet-body-header-margin-top) minmax(var(--spectrum-actionbutton-height), auto) minmax(auto, var(--spectrum-global-dimension-size-600)) var(--spectrum-card-body-padding-bottom);\n grid-template-areas:\n \"preview preview preview\"\n \". . .\"\n \"title detail actionmenu\"\n \"content content content\"\n \". . . \";\n\n &:before {\n content: ' ';\n grid-area: preview;\n\n border-radius: var(--spectrum-card-quiet-border-radius);\n }\n\n &:after {\n content: ' ';\n grid-area: preview;\n position: absolute;\n inset-inline-start: 0;\n inset-inline-end: 0;\n inset-block-start: 0;\n inset-block-end: 0;\n margin: calc(var(--spectrum-alias-focus-ring-gap) * -2);\n\n border-radius: calc(var(--spectrum-card-quiet-border-radius) + var(--spectrum-alias-focus-ring-gap));\n }\n .spectrum-Card-decoration {\n display: block;\n grid-area: preview;\n inline-size: 100%;\n block-size: 100%;\n\n border-radius: var(--spectrum-card-quiet-border-radius);\n }\n }\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n block-size: 100%;\n inline-size: 100%;\n min-inline-size: 100%; /* I do not know why setting a min-width causes the image to shrink */\n\n align-self: center;\n justify-self: center;\n border-radius: var(--spectrum-card-quiet-border-radius);\n > img {\n width: unset;\n margin: auto;\n }\n }\n\n .spectrum-Card-illustration {\n display: grid; /* not sure why flex doesn't work here */\n align-items: center;\n justify-items: center;\n }\n .spectrum-Card-avatar {\n display: none;\n }\n .spectrum-Card-heading {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-detail {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-actions {\n }\n .spectrum-Card-content {\n margin-block-end: 5px;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .spectrum-Card-divider {\n display: none;\n }\n .spectrum-Card-footer {\n display: none;\n }\n}\n\n/** Tile **/\n.spectrum-Card--grid.spectrum-Card--isQuiet {\n .spectrum-Card-checkboxWrapper {\n z-index: 3;\n }\n .spectrum-Card-grid:before {\n z-index: -1;\n }\n .spectrum-Card-grid:after {\n z-index: 2;\n }\n min-inline-size: var(--spectrum-card-quiet-min-size);\n\n .spectrum-Card-grid {\n block-size: 100%;\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(30px, 1fr) minmax(0, auto);\n grid-template-rows: auto var(--spectrum-card-quiet-body-header-margin-top) minmax(var(--spectrum-actionbutton-height), auto) 1fr var(--spectrum-card-body-padding-bottom);\n grid-template-areas:\n \"preview preview preview\"\n \". . .\"\n \"title detail actionmenu\"\n \"content content content\"\n \". . . \";\n\n &:before {\n content: ' ';\n grid-area: preview;\n\n /* aspect ratio 1:1 because padding-top is calculated from width */\n inline-size: 0;\n block-size: 0;\n padding-top: 100%;\n padding-left: 100%;\n\n border-radius: var(--spectrum-card-quiet-border-radius);\n }\n\n &:after {\n content: ' ';\n grid-area: preview;\n position: absolute;\n inset-inline-start: 0;\n inset-inline-end: 0;\n inset-block-start: 0;\n inset-block-end: 0;\n margin: calc(var(--spectrum-alias-focus-ring-gap) * -2);\n\n border-radius: calc(var(--spectrum-card-quiet-border-radius) + var(--spectrum-alias-focus-ring-gap));\n }\n .spectrum-Card-decoration {\n display: block;\n grid-area: preview;\n inline-size: 100%;\n block-size: 100%;\n\n border-radius: var(--spectrum-card-quiet-border-radius);\n }\n }\n &:not(.spectrum-Card--closeToSquare) .spectrum-Card-image,\n &:not(.spectrum-Card--closeToSquare) .spectrum-Card-illustration {\n box-sizing: border-box; /* so that 100% counts padding as well */\n block-size: 100%;\n inline-size: 100%;\n min-inline-size: 100%; /* I do not know why setting a min-width causes the image to shrink */\n\n align-self: center;\n justify-self: center;\n }\n &.spectrum-Card--closeToSquare .spectrum-Card-image,\n &.spectrum-Card--closeToSquare .spectrum-Card-illustration {\n box-sizing: border-box; /* so that 100% counts padding as well */\n padding: var(--spectrum-global-dimension-size-300);\n block-size: 100%;\n inline-size: 100%;\n min-inline-size: 100%; /* I do not know why setting a min-width causes the image to shrink */\n\n align-self: center;\n justify-self: center;\n }\n .spectrum-Card-image {\n clip-path: inset(0% 0% 0% 0% round var(--spectrum-card-quiet-border-radius));\n /* remove from flow so it doesn't affect grid area size, this way the aspect ratio is maintained\n todo: figure out why or how it's already in the correct centered spot */\n position: absolute;\n }\n .spectrum-Card-illustration {\n display: grid; /* not sure why flex doesn't work here */\n align-items: center;\n justify-items: center;\n }\n .spectrum-Card-avatar {\n display: none;\n }\n .spectrum-Card-heading {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-detail {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-actions {\n }\n .spectrum-Card-content {\n margin-block-end: 5px;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .spectrum-Card-divider {\n display: none;\n }\n .spectrum-Card-footer {\n display: none;\n }\n}\n\n/** Standalone **/\n.spectrum-Card--noLayout.spectrum-Card--isQuiet {\n .spectrum-Card-checkboxWrapper {\n z-index: 3;\n }\n .spectrum-Card-grid:before {\n z-index: -1;\n }\n .spectrum-Card-grid:after {\n z-index: 2;\n }\n min-inline-size: var(--spectrum-card-quiet-min-size);\n\n .spectrum-Card-grid {\n block-size: 100%;\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(30px, 1fr) minmax(0, auto);\n grid-template-rows: auto var(--spectrum-card-quiet-body-header-margin-top) minmax(var(--spectrum-actionbutton-height), auto) auto var(--spectrum-card-body-padding-bottom);\n grid-template-areas:\n \"preview preview preview\"\n \". . .\"\n \"title detail actionmenu\"\n \"content content content\"\n \". . . \";\n\n &:before {\n content: ' ';\n grid-area: preview;\n\n border-radius: var(--spectrum-card-quiet-border-radius);\n }\n\n &:after {\n content: ' ';\n grid-area: preview;\n position: absolute;\n inset-inline-start: 0;\n inset-inline-end: 0;\n inset-block-start: 0;\n inset-block-end: 0;\n margin: calc(var(--spectrum-alias-focus-ring-gap) * -2);\n padding: calc(var(--spectrum-alias-focus-ring-gap) * 2);\n background-clip: content-box;\n\n border-radius: calc(var(--spectrum-card-quiet-border-radius) + var(--spectrum-alias-focus-ring-gap));\n }\n .spectrum-Card-decoration {\n display: block;\n grid-area: preview;\n inline-size: 100%;\n block-size: 100%;\n\n border-radius: var(--spectrum-card-quiet-border-radius);\n }\n }\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n display: flex;\n\n align-self: center;\n justify-self: center;\n\n border-radius: var(--spectrum-card-quiet-border-radius);\n }\n .spectrum-Card-image {\n }\n .spectrum-Card-illustration {\n display: grid; /* not sure why flex doesn't work here */\n align-items: center;\n justify-items: center;\n inline-size: 100%;\n block-size: var(--spectrum-card-coverphoto-height);\n }\n .spectrum-Card-avatar {\n display: none;\n }\n .spectrum-Card-heading {\n align-self: baseline;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-detail {\n align-self: baseline;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-actions {\n }\n .spectrum-Card-content {\n margin-block-end: 5px;\n }\n .spectrum-Card-divider {\n display: none;\n }\n .spectrum-Card-footer {\n display: none;\n }\n}\n/** END Quiet Vertical **/\n\n/** Standard Horizontal **/\n/**\nBroken as a CSS only solution in Safari until aspect-ratio is supported https://caniuse.com/?search=aspect-ratio\nFor now working around it with a useLayoutEffect in CardBase.\n**/\n/** Tile **/\n.spectrum-Card--grid.spectrum-Card--horizontal {\n .spectrum-Card-grid:after {\n z-index: 2;\n }\n border-width: var(--spectrum-card-border-size);\n border-style: solid;\n border-radius: var(--spectrum-card-border-radius);\n .spectrum-Card-checkboxWrapper {\n display: none;\n }\n &.is-focused,\n &.is-selected,\n &:focus,\n &:hover {\n .spectrum-Card-checkboxWrapper {\n display: none;\n }\n }\n\n .spectrum-Card-grid {\n display: grid;\n block-size: 100%;\n grid-template-columns: auto var(--spectrum-global-dimension-size-200) 1fr auto var(--spectrum-global-dimension-size-200);\n grid-template-rows: auto 1fr var(--spectrum-global-dimension-size-200);\n grid-template-areas:\n \"preview . title actionmenu .\"\n \"preview . content content .\"\n \"preview . . . .\";\n\n &:before {\n content: ' ';\n position: absolute;\n\n inline-size: 100%;\n block-size: 100%;\n border-radius: var(--spectrum-card-border-radius);\n }\n }\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n grid-area: preview;\n block-size: 100%;\n /*aspect-ratio: 1/1;*/ /* can't use in safari or FF :( */\n\n align-self: center;\n justify-self: center;\n\n border-start-start-radius: var(--spectrum-card-border-radius);\n border-end-start-radius: var(--spectrum-card-border-radius);\n border-inline-end-width: var(--spectrum-card-border-size);\n border-inline-end-style: solid;\n }\n\n .spectrum-Card-image {\n }\n\n .spectrum-Card-illustration {\n display: grid;\n align-items: center;\n justify-items: center;\n }\n\n .spectrum-Card-avatar {\n display: none;\n }\n .spectrum-Card-heading {\n align-self: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-detail {\n display: none;\n }\n .spectrum-Card-actions {\n }\n /* how to handle long description?? */\n .spectrum-Card-content {\n width: 100%;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n /* not working because this line is removed in css preprocessing */\n -webkit-box-orient: vertical;\n visibility: visible;\n }\n .spectrum-Card-divider {\n display: none;\n }\n .spectrum-Card-footer {\n display: none;\n }\n}\n\n/** Standalone **/\n.spectrum-Card--noLayout.spectrum-Card--horizontal {\n .spectrum-Card-grid:after {\n z-index: 2;\n }\n border-width: var(--spectrum-card-border-size);\n border-style: solid;\n border-radius: var(--spectrum-card-border-radius);\n .spectrum-Card-checkboxWrapper {\n display: none;\n }\n &.is-focused,\n &.is-selected,\n &:focus,\n &:hover {\n .spectrum-Card-checkboxWrapper {\n display: none;\n }\n }\n\n .spectrum-Card-grid {\n position: relative;\n display: grid;\n block-size: 100%;\n max-block-size: 100%;\n grid-template-columns: auto var(--spectrum-global-dimension-size-200) 1fr auto var(--spectrum-global-dimension-size-200);\n grid-template-rows: auto 1fr var(--spectrum-global-dimension-size-200);\n grid-template-areas:\n \"preview . title actionmenu .\"\n \"preview . content content .\"\n \"preview . . . .\";\n\n &:before {\n content: ' ';\n inline-size: 100%;\n block-size: 100%;\n position: absolute;\n border-radius: var(--spectrum-card-border-radius);\n }\n\n &:after {\n content: ' ';\n inline-size: 100%;\n block-size: 100%;\n position: absolute;\n border-radius: var(--spectrum-card-border-radius);\n }\n }\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n grid-area: preview;\n block-size: 100%;\n /*aspect-ratio: 1/1;*/ /* can't use in safari or FF :( */\n\n align-self: center;\n justify-self: center;\n\n border-start-start-radius: var(--spectrum-card-border-radius);\n border-end-start-radius: var(--spectrum-card-border-radius);\n border-inline-end-width: var(--spectrum-card-border-size);\n border-inline-end-style: solid;\n }\n\n .spectrum-Card-image {\n }\n\n .spectrum-Card-illustration {\n display: grid;\n align-items: center;\n justify-items: center;\n }\n\n .spectrum-Card-avatar {\n display: none;\n }\n .spectrum-Card-heading {\n align-self: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: var(--spectrum-card-title-padding-right);\n }\n .spectrum-Card-detail {\n display: none;\n }\n .spectrum-Card-actions {\n }\n /* how to handle long description?? */\n .spectrum-Card-content {\n width: 100%;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n /* not working because this line is removed in css preprocessing */\n -webkit-box-orient: vertical;\n visibility: visible;\n }\n .spectrum-Card-divider {\n display: none;\n }\n .spectrum-Card-footer {\n display: none;\n }\n}\n/** END Standard Horizontal **/\n","/*\nCopyright 2019 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\n.spectrum-Card {\n\n &.is-drop-target {\n border-color: var(--spectrum-card-border-color-key-focus);\n box-shadow: 0 0 0 1px var(--spectrum-card-border-color-key-focus);\n background-color: var(--spectrum-alias-highlight-selected);\n }\n\n .spectrum-Card-checkboxWrapper {\n background-color: var(--spectrum-quickactions-background-color);\n }\n\n .spectrum-Card-detail {\n color: var(--spectrum-card-description-text-color);\n }\n}\n\n.spectrum-Card-illustration {\n}\n.spectrum-Card-image {\n}\n.spectrum-Card-avatar {\n}\n.spectrum-Card-heading {\n color: var(--spectrum-global-color-gray-900);\n}\n.spectrum-Card-detail {\n color: var(--spectrum-global-color-gray-700);\n}\n.spectrum-Card-actions {\n}\n.spectrum-Card-content {\n color: var(--spectrum-global-color-gray-700);\n}\n.spectrum-Card-divider {\n}\n.spectrum-Card-footer {\n}\n\n.spectrum-Card--default {\n border-color: var(--spectrum-card-border-color);\n background-color: var(--spectrum-card-background-color);\n\n &:hover {\n border-color: var(--spectrum-card-border-color-hover);\n &:before {\n box-shadow: 0 0 0 1px var(--spectrum-card-border-color-hover);\n }\n }\n\n &.is-selected {\n border-color: var(--spectrum-card-border-color-key-focus);\n &:before {\n /* Image needs to go right to the edge, so no border. Adding border on focus causes\n * a jump in the text and image. So focus ring is only box-shadow\n */\n box-shadow: 0 0 0 1px var(--spectrum-card-border-color-key-focus);\n }\n }\n\n &:hover.is-selected {\n border-color: var(--spectrum-card-border-color-key-focus);\n &:before {\n /* Image needs to go right to the edge, so no border. Adding border on focus causes\n * a jump in the text and image. So focus ring is only box-shadow\n */\n box-shadow: 0 0 0 1px var(--spectrum-card-border-color-key-focus);\n }\n }\n\n &:focus-ring {\n border-color: var(--spectrum-card-border-color-key-focus);\n &:before {\n box-shadow: 0 0 0 2px var(--spectrum-card-border-color-key-focus);\n }\n }\n\n &:focus-ring:hover.is-selected {\n border-color: var(--spectrum-card-border-color-key-focus);\n &:before {\n box-shadow: 0 0 0 2px var(--spectrum-card-border-color-key-focus);\n }\n }\n\n &.is-selected {\n border-color: var(--spectrum-card-border-color-key-focus);\n &:after {\n background-color: var(--spectrum-global-color-blue-400);\n opacity: 0.15;\n }\n &:hover {\n border-color: var(--spectrum-card-border-color-key-focus);\n &:after {\n background-color: var(--spectrum-global-color-blue-400);\n opacity: 0.25;\n }\n }\n }\n &:before {\n transition: background-color var(--spectrum-global-animation-duration-100);\n }\n &:after {\n transition: background-color var(--spectrum-global-animation-duration-100),\n opacity var(--spectrum-global-animation-duration-100);\n opacity: 0;\n }\n .spectrum-Card-grid {\n &:before {\n transition: background-color var(--spectrum-global-animation-duration-100);\n background-color: var(--spectrum-card-quiet-preview-background-color);\n }\n }\n\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n border-block-end-color: var(--spectrum-card-coverphoto-border-color);\n }\n .spectrum-Card-image {\n }\n .spectrum-Card-avatar {\n }\n .spectrum-Card-heading {\n }\n .spectrum-Card-detail {\n }\n .spectrum-Card-actions {\n }\n .spectrum-Card-content {\n color: var(--spectrum-card-description-text-color);\n }\n .spectrum-Card-divider {\n }\n .spectrum-Card-footer {\n }\n}\n\n.spectrum-Card--isQuiet {\n border-color: transparent;\n background-color: transparent;\n &:hover {\n .spectrum-Card-grid {\n &:before {\n background-color: var(--spectrum-card-quiet-preview-background-color-hover);\n /* TODO do we still want this border on the image itself? */\n box-shadow: 0 0 0 1px var(--spectrum-card-border-color-hover);\n }\n }\n }\n\n &.is-selected {\n .spectrum-Card-grid {\n &:after {\n /* Image needs to go right to the edge, so no border. Adding border on focus causes\n * a jump in the text and image. So focus ring is only box-shadow\n */\n box-shadow: 0 0 0 1px var(--spectrum-card-border-color-key-focus);\n }\n }\n }\n\n &:hover.is-selected {\n .spectrum-Card-grid {\n &:after {\n /* Image needs to go right to the edge, so no border. Adding border on focus causes\n * a jump in the text and image. So focus ring is only box-shadow\n */\n box-shadow: 0 0 0 1px var(--spectrum-card-border-color-key-focus);\n }\n }\n }\n\n &:focus-ring {\n .spectrum-Card-grid {\n &:after {\n box-shadow: 0 0 0 2px var(--spectrum-card-border-color-key-focus);\n }\n }\n }\n\n &:focus-ring:hover.is-selected {\n .spectrum-Card-grid {\n &:after {\n box-shadow: 0 0 0 2px var(--spectrum-card-border-color-key-focus);\n }\n }\n }\n\n &.is-selected {\n .spectrum-Card-grid {\n .spectrum-Card-decoration {\n opacity: 0.15;\n }\n }\n &:hover {\n .spectrum-Card-grid {\n .spectrum-Card-decoration {\n opacity: 0.25;\n }\n }\n }\n }\n\n .spectrum-Card-grid {\n &:before {\n transition: background-color var(--spectrum-global-animation-duration-100);\n background-color: var(--spectrum-card-quiet-preview-background-color);\n }\n }\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n }\n .spectrum-Card-image {\n }\n .spectrum-Card-avatar {\n }\n .spectrum-Card-heading {\n }\n .spectrum-Card-detail {\n }\n .spectrum-Card-actions {\n }\n .spectrum-Card-content {\n }\n .spectrum-Card-divider {\n }\n .spectrum-Card-footer {\n }\n .spectrum-Card-decoration {\n transition: background-color var(--spectrum-global-animation-duration-100),\n opacity var(--spectrum-global-animation-duration-100);\n background-color: var(--spectrum-global-color-blue-400);\n opacity: 0;\n }\n}\n\n.spectrum-Card--horizontal {\n border-color: var(--spectrum-card-border-color);\n background-color: var(--spectrum-card-background-color);\n &:hover {\n border-color: var(--spectrum-card-border-color-hover);\n .spectrum-Card-grid {\n &:before {\n box-shadow: 0 0 0 1px var(--spectrum-card-border-color-hover);\n }\n }\n }\n\n &.is-selected {\n border-color: var(--spectrum-card-border-color-key-focus);\n .spectrum-Card-grid {\n &:before {\n /* Image needs to go right to the edge, so no border. Adding border on focus causes\n * a jump in the text and image. So focus ring is only box-shadow\n */\n box-shadow: 0 0 0 1px var(--spectrum-card-border-color-key-focus);\n }\n }\n }\n\n &:hover.is-selected {\n border-color: var(--spectrum-card-border-color-key-focus);\n .spectrum-Card-grid {\n &:before {\n /* Image needs to go right to the edge, so no border. Adding border on focus causes\n * a jump in the text and image. So focus ring is only box-shadow\n */\n box-shadow: 0 0 0 1px var(--spectrum-card-border-color-key-focus);\n }\n }\n }\n\n &:focus-ring {\n border-color: var(--spectrum-card-border-color-key-focus);\n .spectrum-Card-grid {\n &:before {\n box-shadow: 0 0 0 2px var(--spectrum-card-border-color-key-focus);\n }\n }\n }\n\n &:focus-ring:hover.is-selected {\n border-color: var(--spectrum-card-border-color-key-focus);\n .spectrum-Card-grid {\n &:before {\n box-shadow: 0 0 0 2px var(--spectrum-card-border-color-key-focus);\n }\n }\n }\n\n &.is-selected {\n border-color: var(--spectrum-card-border-color-key-focus);\n .spectrum-Card-grid {\n &:after {\n background-color: var(--spectrum-global-color-blue-400);\n opacity: 0.15;\n }\n }\n &:hover {\n border-color: var(--spectrum-card-border-color-key-focus);\n .spectrum-Card-grid {\n &:after {\n background-color: var(--spectrum-global-color-blue-400);\n opacity: 0.25;\n }\n }\n }\n }\n\n .spectrum-Card-grid {\n &:after {\n transition: background-color var(--spectrum-global-animation-duration-100),\n opacity var(--spectrum-global-animation-duration-100);\n opacity: 0;\n }\n }\n .spectrum-Card-image,\n .spectrum-Card-illustration {\n border-inline-end-color: var(--spectrum-card-coverphoto-border-color);\n }\n .spectrum-Card-image {\n }\n .spectrum-Card-illustration {\n }\n .spectrum-Card-avatar {\n }\n .spectrum-Card-heading {\n }\n .spectrum-Card-detail {\n }\n .spectrum-Card-actions {\n }\n .spectrum-Card-content {\n }\n .spectrum-Card-divider {\n }\n .spectrum-Card-footer {\n }\n}\n",".react-spectrum-CardView-centeredWrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n.react-spectrum-CardView-CardWrapper {\n overflow: visible !important;\n contain: size layout style !important;\n}\n\n.react-spectrum-CardView {\n outline: none;\n}\n"],"names":[],"version":3,"file":"main.css.map"}
|