@startinblox/components-ds4go 2.2.4 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1002 -904
- package/locales/en.xlf +75 -0
- package/package.json +1 -1
- package/src/components/solid-fact-bundle-creation.ts +202 -59
- package/src/styles/fact-bundle-creation.scss +102 -0
package/locales/en.xlf
CHANGED
|
@@ -23,6 +23,81 @@
|
|
|
23
23
|
<trans-unit id="sd3682395cf86f913">
|
|
24
24
|
<source>Bundle updated on</source>
|
|
25
25
|
</trans-unit>
|
|
26
|
+
<trans-unit id="s20acf344316637a0">
|
|
27
|
+
<source>All Catalogs</source>
|
|
28
|
+
</trans-unit>
|
|
29
|
+
<trans-unit id="s67269ab6dc51ec41">
|
|
30
|
+
<source>Error while loading catalog <x id="0" equiv-text="${this.catalogId}"/></source>
|
|
31
|
+
</trans-unit>
|
|
32
|
+
<trans-unit id="s0b88896b7338837d">
|
|
33
|
+
<source>All Datasets</source>
|
|
34
|
+
</trans-unit>
|
|
35
|
+
<trans-unit id="s541d9cd11a5bc840">
|
|
36
|
+
<source>Datasets from</source>
|
|
37
|
+
</trans-unit>
|
|
38
|
+
<trans-unit id="s01ceffa02fa6bd7f">
|
|
39
|
+
<source>All Sectors</source>
|
|
40
|
+
</trans-unit>
|
|
41
|
+
<trans-unit id="s4aaac20ff7887391">
|
|
42
|
+
<source>Catalogs available in</source>
|
|
43
|
+
</trans-unit>
|
|
44
|
+
<trans-unit id="sa89a60c3e1230cec">
|
|
45
|
+
<source>Root Authority</source>
|
|
46
|
+
</trans-unit>
|
|
47
|
+
<trans-unit id="se5784a16a6799dad">
|
|
48
|
+
<source>Back to <x id="0" equiv-text="${this.catalogId ? this.sectorId : "Root Authority"}"/></source>
|
|
49
|
+
</trans-unit>
|
|
50
|
+
<trans-unit id="s6665daa6d6147db0">
|
|
51
|
+
<source>No data available, data source may be temporarily unavailable.</source>
|
|
52
|
+
</trans-unit>
|
|
53
|
+
<trans-unit id="sc16e00a7a8b2fde2">
|
|
54
|
+
<source>Back</source>
|
|
55
|
+
</trans-unit>
|
|
56
|
+
<trans-unit id="s2c8189544e3ea679">
|
|
57
|
+
<source>Retry</source>
|
|
58
|
+
</trans-unit>
|
|
59
|
+
<trans-unit id="seb1a452f2df70baf">
|
|
60
|
+
<source>Create bundle</source>
|
|
61
|
+
</trans-unit>
|
|
62
|
+
<trans-unit id="sed5b6ae54e00125c">
|
|
63
|
+
<source>Bundle name</source>
|
|
64
|
+
</trans-unit>
|
|
65
|
+
<trans-unit id="s11099da36cbc3173">
|
|
66
|
+
<source>Bundle description</source>
|
|
67
|
+
</trans-unit>
|
|
68
|
+
<trans-unit id="sac1b0231875ff056">
|
|
69
|
+
<source><x id="0" equiv-text="${selectedFactsCount}"/> selected fact<x id="1" equiv-text="${selectedFactsCount > 1 ? "s" : ""}"/></source>
|
|
70
|
+
</trans-unit>
|
|
71
|
+
<trans-unit id="s8272d3578b7c78d5">
|
|
72
|
+
<source>Displaying <x id="0" equiv-text="${splicedDatas.length}"/> of <x id="1" equiv-text="${datas.length}"/> result<x id="2" equiv-text="${datas.length > 1 ? "s" : ""}"/></source>
|
|
73
|
+
</trans-unit>
|
|
74
|
+
<trans-unit id="sa40e7f4f2a43e2f7">
|
|
75
|
+
<source>Show more results</source>
|
|
76
|
+
</trans-unit>
|
|
77
|
+
<trans-unit id="sacf246e0fa11730d">
|
|
78
|
+
<source>Show all results</source>
|
|
79
|
+
</trans-unit>
|
|
80
|
+
<trans-unit id="s9094c0cde8fb5058">
|
|
81
|
+
<source>No results found</source>
|
|
82
|
+
</trans-unit>
|
|
83
|
+
<trans-unit id="sc7e3b594ffcd9d61">
|
|
84
|
+
<source>Open access</source>
|
|
85
|
+
</trans-unit>
|
|
86
|
+
<trans-unit id="sefcf950b3cc4fc3b">
|
|
87
|
+
<source>Language</source>
|
|
88
|
+
</trans-unit>
|
|
89
|
+
<trans-unit id="s6ae6714aac4ba43d">
|
|
90
|
+
<source>Language code (en, de, es, fr...)</source>
|
|
91
|
+
</trans-unit>
|
|
92
|
+
<trans-unit id="s21fb127cabcd5617">
|
|
93
|
+
<source>Comma-separated, eg.: en,de,es,fr)</source>
|
|
94
|
+
</trans-unit>
|
|
95
|
+
<trans-unit id="sa6ef22f7e7e95e2b">
|
|
96
|
+
<source>Access policy</source>
|
|
97
|
+
</trans-unit>
|
|
98
|
+
<trans-unit id="s6de61424bb681993">
|
|
99
|
+
<source>Contract policy</source>
|
|
100
|
+
</trans-unit>
|
|
26
101
|
</body>
|
|
27
102
|
</file>
|
|
28
103
|
</xliff>
|
package/package.json
CHANGED
|
@@ -7,64 +7,19 @@ import {
|
|
|
7
7
|
} from "@helpers";
|
|
8
8
|
import { msg, str } from "@lit/localize";
|
|
9
9
|
import { Task } from "@lit/task";
|
|
10
|
-
import type {
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
import type {
|
|
11
|
+
OdrlPolicy,
|
|
12
|
+
OrbitComponent as OrbitComponentConfig,
|
|
13
|
+
PropertiesPicker,
|
|
14
|
+
Resource,
|
|
15
|
+
} from "@src/component";
|
|
16
|
+
import ComponentStyles from "@styles/fact-bundle-creation.scss?inline";
|
|
17
|
+
import { html, nothing, unsafeCSS } from "lit";
|
|
13
18
|
import { customElement, property, state } from "lit/decorators.js";
|
|
14
19
|
|
|
15
20
|
@customElement("solid-fact-bundle-creation")
|
|
16
21
|
export class SolidFactBundle extends OrbitComponent {
|
|
17
|
-
static styles = [
|
|
18
|
-
unsafeCSS(FlexHelpers),
|
|
19
|
-
css`
|
|
20
|
-
[slot="content"] {
|
|
21
|
-
height: 100%;
|
|
22
|
-
}
|
|
23
|
-
section {
|
|
24
|
-
gap: var(--scale-400);
|
|
25
|
-
padding: var(--scale-900) 0;
|
|
26
|
-
height: calc(100% - var(--scale-900) * 2);
|
|
27
|
-
}
|
|
28
|
-
section > div {
|
|
29
|
-
height: 100%;
|
|
30
|
-
display: flex;
|
|
31
|
-
flex-direction: column;
|
|
32
|
-
gap: var(--scale-400);
|
|
33
|
-
flex: 1;
|
|
34
|
-
}
|
|
35
|
-
section > div:first-child {
|
|
36
|
-
max-width: 400px;
|
|
37
|
-
}
|
|
38
|
-
.card-grid {
|
|
39
|
-
flex: 1;
|
|
40
|
-
overflow-y: scroll;
|
|
41
|
-
display: flex;
|
|
42
|
-
flex-direction: row;
|
|
43
|
-
flex-wrap: wrap;
|
|
44
|
-
gap: 20px;
|
|
45
|
-
align-content: flex-start;
|
|
46
|
-
}
|
|
47
|
-
.card-grid-vertical {
|
|
48
|
-
justify-content: stretch;
|
|
49
|
-
}
|
|
50
|
-
.card-grid-vertical tems-card-catalog {
|
|
51
|
-
width: 354px;
|
|
52
|
-
height: fit-content;
|
|
53
|
-
}
|
|
54
|
-
tems-card-catalog {
|
|
55
|
-
cursor: pointer;
|
|
56
|
-
}
|
|
57
|
-
tems-card-catalog[selected] {
|
|
58
|
-
--color-border-primary: var(--color-surface-action-solid);
|
|
59
|
-
}
|
|
60
|
-
tems-search-bar {
|
|
61
|
-
--scale-900: 0;
|
|
62
|
-
}
|
|
63
|
-
.gap-400 {
|
|
64
|
-
gap: var(--scale-400);
|
|
65
|
-
}
|
|
66
|
-
`,
|
|
67
|
-
];
|
|
22
|
+
static styles = [unsafeCSS(ComponentStyles)];
|
|
68
23
|
|
|
69
24
|
@property({ attribute: "header", type: String })
|
|
70
25
|
header?: string = "DS4GO Fact Bundling Creation";
|
|
@@ -81,12 +36,48 @@ export class SolidFactBundle extends OrbitComponent {
|
|
|
81
36
|
@state()
|
|
82
37
|
bundleDescription = "";
|
|
83
38
|
|
|
39
|
+
@state()
|
|
40
|
+
bundleLanguage = "en";
|
|
41
|
+
|
|
42
|
+
policyTemplates: { id: string; name: string; policy: OdrlPolicy }[] = [
|
|
43
|
+
{
|
|
44
|
+
id: "policy-open-access",
|
|
45
|
+
name: msg("Open access"),
|
|
46
|
+
policy: {
|
|
47
|
+
"@type": "Set",
|
|
48
|
+
permission: [
|
|
49
|
+
{
|
|
50
|
+
action: "use",
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
prohibition: [],
|
|
54
|
+
obligation: [],
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
|
|
59
|
+
@state()
|
|
60
|
+
bundleAccessPolicy = this.policyTemplates[0].id;
|
|
61
|
+
|
|
62
|
+
@state()
|
|
63
|
+
bundleContractPolicy = this.policyTemplates[0].id;
|
|
64
|
+
|
|
84
65
|
@state()
|
|
85
66
|
filterFactText = "";
|
|
86
67
|
|
|
87
68
|
@state()
|
|
88
69
|
spliceLength = 0;
|
|
89
70
|
|
|
71
|
+
@state()
|
|
72
|
+
dspConnector: OrbitComponentConfig | undefined;
|
|
73
|
+
|
|
74
|
+
async _afterAttach() {
|
|
75
|
+
// use this.dspConnector.instance to reach the connector
|
|
76
|
+
this.dspConnector = this.orbit?.getComponent("dsp-connector");
|
|
77
|
+
|
|
78
|
+
return Promise.resolve();
|
|
79
|
+
}
|
|
80
|
+
|
|
90
81
|
cherryPickedProperties: PropertiesPicker[] = [
|
|
91
82
|
{ key: "created_at", value: "created_at", cast: formatDate },
|
|
92
83
|
{ key: "updated_at", value: "updated_at", cast: formatDate },
|
|
@@ -185,7 +176,9 @@ export class SolidFactBundle extends OrbitComponent {
|
|
|
185
176
|
"@type": ["ldp:Container", "ds4go:FactBundle"],
|
|
186
177
|
name: this.bundleName,
|
|
187
178
|
description: this.bundleDescription || "",
|
|
188
|
-
"ldp:contains": this.selectedFacts.map((fact: Resource) => ({
|
|
179
|
+
"ldp:contains": this.selectedFacts.map((fact: Resource) => ({
|
|
180
|
+
"@id": fact["@id"],
|
|
181
|
+
})),
|
|
189
182
|
};
|
|
190
183
|
|
|
191
184
|
const newFactBundleId = await window.sibStore.post(
|
|
@@ -207,6 +200,90 @@ export class SolidFactBundle extends OrbitComponent {
|
|
|
207
200
|
}),
|
|
208
201
|
);
|
|
209
202
|
|
|
203
|
+
if (this.dspConnector) {
|
|
204
|
+
const idFromBundleId = await window.crypto.subtle
|
|
205
|
+
.digest("SHA-256", new TextEncoder().encode(newFactBundleId))
|
|
206
|
+
.then((hash) => {
|
|
207
|
+
return `sha-256:${Array.from(new Uint8Array(hash))
|
|
208
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
209
|
+
.join("")}`;
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
await this.dspConnector.instance?.createAsset({
|
|
213
|
+
"@id": `urn:asset-id:${idFromBundleId}`,
|
|
214
|
+
properties: {
|
|
215
|
+
name: this.bundleName,
|
|
216
|
+
description: this.bundleDescription,
|
|
217
|
+
contenttype: "application/ld+json",
|
|
218
|
+
language: this.bundleLanguage,
|
|
219
|
+
},
|
|
220
|
+
dataAddress: {
|
|
221
|
+
"@type": "DataAddress",
|
|
222
|
+
type: "HttpData",
|
|
223
|
+
baseUrl: newFactBundleId,
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
await Promise.all([
|
|
228
|
+
this.dspConnector.instance?.createPolicy({
|
|
229
|
+
"@id": `urn:access-policy-id:${idFromBundleId}`,
|
|
230
|
+
"@type": "PolicyDefinition",
|
|
231
|
+
policy: {
|
|
232
|
+
"@context": "http://www.w3.org/ns/odrl.jsonld",
|
|
233
|
+
...this.policyTemplates.find(
|
|
234
|
+
(p) => p.id === this.bundleAccessPolicy,
|
|
235
|
+
)?.policy,
|
|
236
|
+
},
|
|
237
|
+
}),
|
|
238
|
+
this.dspConnector.instance?.createPolicy({
|
|
239
|
+
"@id": `urn:contract-policy-id:${idFromBundleId}`,
|
|
240
|
+
"@type": "PolicyDefinition",
|
|
241
|
+
policy: {
|
|
242
|
+
"@context": "http://www.w3.org/ns/odrl.jsonld",
|
|
243
|
+
...this.policyTemplates.find(
|
|
244
|
+
(p) => p.id === this.bundleContractPolicy,
|
|
245
|
+
)?.policy,
|
|
246
|
+
},
|
|
247
|
+
}),
|
|
248
|
+
this.dspConnector.instance?.createContract({
|
|
249
|
+
"@id": `urn:contract-id:${idFromBundleId}`,
|
|
250
|
+
"@type": "ContractDefinition",
|
|
251
|
+
accessPolicyId: `urn:access-policy-id:${idFromBundleId}`,
|
|
252
|
+
contractPolicyId: `urn:contract-policy-id:${idFromBundleId}`,
|
|
253
|
+
assetsSelector: [
|
|
254
|
+
{
|
|
255
|
+
"@type": "Criterion",
|
|
256
|
+
operandLeft: "https://w3id.org/edc/v0.0.1/ns/id",
|
|
257
|
+
operator: "=",
|
|
258
|
+
operandRight: `urn:asset-id:${idFromBundleId}`,
|
|
259
|
+
},
|
|
260
|
+
],
|
|
261
|
+
}),
|
|
262
|
+
]);
|
|
263
|
+
|
|
264
|
+
// TODO: Do it from the other side, Adele
|
|
265
|
+
const TemsAssetManagement = document.querySelector(
|
|
266
|
+
"solid-tems-assets-management",
|
|
267
|
+
);
|
|
268
|
+
if (TemsAssetManagement) {
|
|
269
|
+
TemsAssetManagement.loadAssets();
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
const TemsPoliciesManagement = document.querySelector(
|
|
273
|
+
"solid-tems-policies-management",
|
|
274
|
+
);
|
|
275
|
+
if (TemsPoliciesManagement) {
|
|
276
|
+
TemsPoliciesManagement.loadPolicies();
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
const TemsContractsManagement = document.querySelector(
|
|
280
|
+
"solid-tems-contracts-management",
|
|
281
|
+
);
|
|
282
|
+
if (TemsContractsManagement) {
|
|
283
|
+
TemsContractsManagement.loadData();
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
210
287
|
this.bundleName = "";
|
|
211
288
|
this.bundleDescription = "";
|
|
212
289
|
this.selectedFacts = [];
|
|
@@ -219,8 +296,11 @@ export class SolidFactBundle extends OrbitComponent {
|
|
|
219
296
|
bubbles: true,
|
|
220
297
|
}),
|
|
221
298
|
);
|
|
222
|
-
if(factbundleComponent) {
|
|
223
|
-
requestNavigation(
|
|
299
|
+
if (factbundleComponent) {
|
|
300
|
+
requestNavigation(
|
|
301
|
+
factbundleComponent?.route,
|
|
302
|
+
factbundleComponent?.defaultDataSrc,
|
|
303
|
+
);
|
|
224
304
|
}
|
|
225
305
|
}
|
|
226
306
|
|
|
@@ -232,6 +312,24 @@ export class SolidFactBundle extends OrbitComponent {
|
|
|
232
312
|
this.bundleDescription = e.detail.value;
|
|
233
313
|
}
|
|
234
314
|
|
|
315
|
+
_updateBundleLanguage(e: Event) {
|
|
316
|
+
this.bundleLanguage = e.detail.value;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
_selectBundleAccessPolicy(e: Event) {
|
|
320
|
+
e.preventDefault();
|
|
321
|
+
if (e.target) {
|
|
322
|
+
this.bundleAccessPolicy = e.target.value;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
_selectBundleContractPolicy(e: Event) {
|
|
327
|
+
e.preventDefault();
|
|
328
|
+
if (e.target) {
|
|
329
|
+
this.bundleContractPolicy = e.target.value;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
235
333
|
_toggleFactSelection(fact: Resource) {
|
|
236
334
|
if (this.selectedFacts.includes(fact)) {
|
|
237
335
|
this.selectedFacts = this.selectedFacts.filter((f) => f !== fact);
|
|
@@ -258,7 +356,12 @@ export class SolidFactBundle extends OrbitComponent {
|
|
|
258
356
|
|
|
259
357
|
const splicedDatas = datas.slice(0, this.spliceLength);
|
|
260
358
|
const selectedFactsCount = this.selectedFacts.length;
|
|
261
|
-
const allowCreation =
|
|
359
|
+
const allowCreation =
|
|
360
|
+
!!this.bundleName &&
|
|
361
|
+
selectedFactsCount > 0 &&
|
|
362
|
+
!!this.bundleLanguage &&
|
|
363
|
+
!!this.bundleAccessPolicy &&
|
|
364
|
+
!!this.bundleContractPolicy;
|
|
262
365
|
|
|
263
366
|
return html`<tems-viewport>
|
|
264
367
|
<tems-header slot="header" heading=${this.header}>
|
|
@@ -293,6 +396,43 @@ export class SolidFactBundle extends OrbitComponent {
|
|
|
293
396
|
@change=${this._updateBundleDescription}
|
|
294
397
|
></tems-textarea>
|
|
295
398
|
</div>
|
|
399
|
+
<div>
|
|
400
|
+
<tems-input
|
|
401
|
+
type="text"
|
|
402
|
+
label=${msg("Language")}
|
|
403
|
+
placeholder=${msg("Language code (en, de, es, fr...)")}
|
|
404
|
+
hint=${msg("Comma-separated, eg.: en,de,es,fr)")}
|
|
405
|
+
required=""
|
|
406
|
+
.value=${this.bundleLanguage}
|
|
407
|
+
@change=${this._updateBundleLanguage}
|
|
408
|
+
></tems-input>
|
|
409
|
+
</div>
|
|
410
|
+
<div class="select">
|
|
411
|
+
<tems-label label=${msg("Access policy")}></tems-label>
|
|
412
|
+
<select @change=${this._selectBundleAccessPolicy}>
|
|
413
|
+
${this.policyTemplates.map((policy) => {
|
|
414
|
+
return html`<option
|
|
415
|
+
value="${policy.id}"
|
|
416
|
+
?selected="${policy.id === this.bundleAccessPolicy}"
|
|
417
|
+
>
|
|
418
|
+
${policy.name}
|
|
419
|
+
</option>`;
|
|
420
|
+
})}
|
|
421
|
+
</select>
|
|
422
|
+
</div>
|
|
423
|
+
<div class="select">
|
|
424
|
+
<tems-label label=${msg("Contract policy")}></tems-label>
|
|
425
|
+
<select @change=${this._selectBundleContractPolicy}>
|
|
426
|
+
${this.policyTemplates.map((policy) => {
|
|
427
|
+
return html`<option
|
|
428
|
+
value="${policy.id}"
|
|
429
|
+
?selected="${policy.id === this.bundleContractPolicy}"
|
|
430
|
+
>
|
|
431
|
+
${policy.name}
|
|
432
|
+
</option>`;
|
|
433
|
+
})}
|
|
434
|
+
</select>
|
|
435
|
+
</div>
|
|
296
436
|
${selectedFactsCount > 0
|
|
297
437
|
? html`<tems-division type="h4">
|
|
298
438
|
<div>
|
|
@@ -403,7 +543,10 @@ export class SolidFactBundle extends OrbitComponent {
|
|
|
403
543
|
</div>
|
|
404
544
|
</div>`
|
|
405
545
|
: nothing}`
|
|
406
|
-
: html`${msg("No results found")}
|
|
546
|
+
: html`${msg("No results found")}
|
|
547
|
+
${this.filterFactText
|
|
548
|
+
? `for "${this.filterFactText}".`
|
|
549
|
+
: ""}`}
|
|
407
550
|
</div>`
|
|
408
551
|
: nothing}
|
|
409
552
|
</section>
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
@use "sass:meta";
|
|
2
|
+
|
|
3
|
+
@include meta.load-css("./_helpers/flex");
|
|
4
|
+
|
|
5
|
+
[slot="content"] {
|
|
6
|
+
height: 100%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
section {
|
|
10
|
+
gap: var(--scale-400);
|
|
11
|
+
padding: var(--scale-900) 0;
|
|
12
|
+
height: calc(100% - var(--scale-900) * 2);
|
|
13
|
+
|
|
14
|
+
> div {
|
|
15
|
+
height: 100%;
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
gap: var(--scale-400);
|
|
19
|
+
flex: 1;
|
|
20
|
+
|
|
21
|
+
&:first-child {
|
|
22
|
+
max-width: 400px;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.card-grid {
|
|
28
|
+
flex: 1;
|
|
29
|
+
overflow-y: scroll;
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-direction: row;
|
|
32
|
+
flex-wrap: wrap;
|
|
33
|
+
gap: 20px;
|
|
34
|
+
align-content: flex-start;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.card-grid-vertical {
|
|
38
|
+
justify-content: stretch;
|
|
39
|
+
|
|
40
|
+
tems-card-catalog {
|
|
41
|
+
width: 354px;
|
|
42
|
+
height: fit-content;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
tems-card-catalog {
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
|
|
49
|
+
&[selected] {
|
|
50
|
+
--color-border-primary: var(--color-surface-action-solid);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
tems-search-bar {
|
|
55
|
+
--scale-900: 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.gap-400 {
|
|
59
|
+
gap: var(--scale-400);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
div.select {
|
|
63
|
+
align-items: flex-start;
|
|
64
|
+
display: flex;
|
|
65
|
+
flex-direction: column;
|
|
66
|
+
gap: var(--scale-200);
|
|
67
|
+
width: 100%;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
select {
|
|
71
|
+
width: 100%;
|
|
72
|
+
background-color: var(--color-surface-primary);
|
|
73
|
+
border: var(--border-width-sm) solid var(--color-border-primary);
|
|
74
|
+
border-radius: var(--border-radius-md);
|
|
75
|
+
color: var(--color-text-body);
|
|
76
|
+
font-family: var(--font-family-body);
|
|
77
|
+
font-size: var(--typography-size-body-sm);
|
|
78
|
+
font-style: normal;
|
|
79
|
+
font-weight: var(--font-weight-regular);
|
|
80
|
+
line-height: var(--line-height-body-sm);
|
|
81
|
+
letter-spacing: var(--font-letter-spacing-default);
|
|
82
|
+
padding: var(--scale-100) var(--scale-300);
|
|
83
|
+
appearance: none;
|
|
84
|
+
cursor: pointer;
|
|
85
|
+
|
|
86
|
+
&:hover {
|
|
87
|
+
border: var(--border-width-sm) solid var(--color-border-action);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
option {
|
|
91
|
+
background-color: var(--color-surface-primary);
|
|
92
|
+
color: var(--color-text-body);
|
|
93
|
+
font-family: var(--font-family-body);
|
|
94
|
+
font-size: var(--typography-size-body-sm);
|
|
95
|
+
font-style: normal;
|
|
96
|
+
font-weight: var(--font-weight-regular);
|
|
97
|
+
line-height: var(--line-height-body-sm);
|
|
98
|
+
letter-spacing: var(--font-letter-spacing-default);
|
|
99
|
+
padding: var(--scale-100) var(--scale-300);
|
|
100
|
+
cursor: pointer;
|
|
101
|
+
}
|
|
102
|
+
}
|