@kumori/aurora-wui-components 0.0.0 → 0.0.2

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.
Files changed (61) hide show
  1. package/dist/components/cards/aurora-base-card.d.ts +51 -0
  2. package/dist/components/cards/aurora-base-card.d.ts.map +1 -0
  3. package/dist/components/cards/aurora-base-card.js +299 -0
  4. package/dist/components/cards/aurora-base-card.js.map +1 -0
  5. package/dist/components/cards/aurora-more-actions.d.ts +23 -0
  6. package/dist/components/cards/aurora-more-actions.d.ts.map +1 -0
  7. package/dist/components/cards/aurora-more-actions.js +194 -0
  8. package/dist/components/cards/aurora-more-actions.js.map +1 -0
  9. package/dist/components/cards/aurora-runtime-card.d.ts +44 -0
  10. package/dist/components/cards/aurora-runtime-card.d.ts.map +1 -0
  11. package/dist/components/cards/aurora-runtime-card.js +427 -0
  12. package/dist/components/cards/aurora-runtime-card.js.map +1 -0
  13. package/dist/components/cards/card.types.d.ts +39 -0
  14. package/dist/components/cards/card.types.d.ts.map +1 -0
  15. package/dist/components/cards/card.types.js +2 -0
  16. package/dist/components/cards/card.types.js.map +1 -0
  17. package/dist/components/cards/parts/aurora-card-action-banner.d.ts +8 -0
  18. package/dist/components/cards/parts/aurora-card-action-banner.d.ts.map +1 -0
  19. package/dist/components/cards/parts/aurora-card-action-banner.js +61 -0
  20. package/dist/components/cards/parts/aurora-card-action-banner.js.map +1 -0
  21. package/dist/components/cards/parts/aurora-card-attention-banner.d.ts +20 -0
  22. package/dist/components/cards/parts/aurora-card-attention-banner.d.ts.map +1 -0
  23. package/dist/components/cards/parts/aurora-card-attention-banner.js +111 -0
  24. package/dist/components/cards/parts/aurora-card-attention-banner.js.map +1 -0
  25. package/dist/components/cards/parts/aurora-card-filter-item.d.ts +9 -0
  26. package/dist/components/cards/parts/aurora-card-filter-item.d.ts.map +1 -0
  27. package/dist/components/cards/parts/aurora-card-filter-item.js +53 -0
  28. package/dist/components/cards/parts/aurora-card-filter-item.js.map +1 -0
  29. package/dist/components/cards/parts/aurora-card-filter.d.ts +20 -0
  30. package/dist/components/cards/parts/aurora-card-filter.d.ts.map +1 -0
  31. package/dist/components/cards/parts/aurora-card-filter.js +168 -0
  32. package/dist/components/cards/parts/aurora-card-filter.js.map +1 -0
  33. package/dist/components/cards/parts/aurora-card-header.d.ts +19 -0
  34. package/dist/components/cards/parts/aurora-card-header.d.ts.map +1 -0
  35. package/dist/components/cards/parts/aurora-card-header.js +161 -0
  36. package/dist/components/cards/parts/aurora-card-header.js.map +1 -0
  37. package/dist/components/cards/parts/aurora-card-resource-table.d.ts +22 -0
  38. package/dist/components/cards/parts/aurora-card-resource-table.d.ts.map +1 -0
  39. package/dist/components/cards/parts/aurora-card-resource-table.js +210 -0
  40. package/dist/components/cards/parts/aurora-card-resource-table.js.map +1 -0
  41. package/dist/components/cards/parts/aurora-card-stat-item.d.ts +12 -0
  42. package/dist/components/cards/parts/aurora-card-stat-item.d.ts.map +1 -0
  43. package/dist/components/cards/parts/aurora-card-stat-item.js +69 -0
  44. package/dist/components/cards/parts/aurora-card-stat-item.js.map +1 -0
  45. package/dist/components/cards/parts/aurora-card-stats-row.d.ts +11 -0
  46. package/dist/components/cards/parts/aurora-card-stats-row.d.ts.map +1 -0
  47. package/dist/components/cards/parts/aurora-card-stats-row.js +56 -0
  48. package/dist/components/cards/parts/aurora-card-stats-row.js.map +1 -0
  49. package/dist/components/cards/parts/aurora-card-status-bar.d.ts +15 -0
  50. package/dist/components/cards/parts/aurora-card-status-bar.d.ts.map +1 -0
  51. package/dist/components/cards/parts/aurora-card-status-bar.js +87 -0
  52. package/dist/components/cards/parts/aurora-card-status-bar.js.map +1 -0
  53. package/dist/index.d.ts +14 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +14 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/styles/aurora-theme.d.ts +8 -0
  58. package/dist/styles/aurora-theme.d.ts.map +1 -0
  59. package/dist/styles/aurora-theme.js +43 -0
  60. package/dist/styles/aurora-theme.js.map +1 -0
  61. package/package.json +3 -2
@@ -0,0 +1,427 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, html, css } from 'lit';
8
+ import { customElement, property } from 'lit/decorators.js';
9
+ import './parts/aurora-card-resource-table.js';
10
+ let AuroraRuntimeCard = class AuroraRuntimeCard extends LitElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.name = '';
14
+ this.logo = '';
15
+ this.revisions = [];
16
+ this.displayedRevision = '';
17
+ this.lastDeployed = '';
18
+ this.isDeployed = false;
19
+ this.tableStats = [];
20
+ this.attentionThreshold = 90;
21
+ this.filterOpened = false;
22
+ this.filterDisplayText = '';
23
+ this.filterRoles = [];
24
+ this.showAttention = false;
25
+ this.borderColor = '';
26
+ this.statusCode = '';
27
+ this.statusMessage = '';
28
+ this.isRemoving = false;
29
+ // Labels
30
+ this.deployedLabel = 'Deployed';
31
+ this.allLabel = 'All Roles & Instances';
32
+ this.attentionLabel = 'Attention needed';
33
+ this.serviceDetailLabel = 'Service detail';
34
+ this.manageLabel = 'Manage';
35
+ this.askOwnerLabel = 'Ask your owner';
36
+ this.invalidCredsLabel = 'Invalid credentials.';
37
+ this.limitReachedLabel = 'Limit reached.';
38
+ this.andLabel = 'and';
39
+ }
40
+ render() {
41
+ return html `
42
+ <div class="${this.isRemoving ? 'card card--removing' : 'card'}" style="border-top-color:${this.borderColor};" ?inert=${this.isRemoving}>
43
+ <div style="display:flex;flex-direction:column;gap:0.5rem;">
44
+ ${this._renderHeader()}
45
+ <div style="width:100%;padding-inline:0.5rem;display:flex;flex-direction:column;gap:0.5rem;">
46
+ ${this._renderDeployInfo()}
47
+ ${this._renderTable()}
48
+ </div>
49
+ </div>
50
+ ${this._renderFooter()}
51
+ <slot name="dialogs"></slot>
52
+ </div>
53
+ `;
54
+ }
55
+ _renderHeader() {
56
+ return html `
57
+ <div class="header">
58
+ ${this.logo ? html `<div class="logo-wrap"><img src=${this.logo} /></div>` : ''}
59
+ <div class="header-text">
60
+ <div style="display:flex;justify-content:space-between;align-items:center;">
61
+ <span class="header-name">${this.name}</span>
62
+ </div>
63
+ <div class="revision-wrap">
64
+ <sl-select style="width:100%;" value=${this.displayedRevision} @sl-change=${this._onRevisionChange}>
65
+ ${this.revisions.map((rev) => html `<sl-option value=${rev.id}>${this._formatRevision(rev.id)}</sl-option>`)}
66
+ </sl-select>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ `;
71
+ }
72
+ _renderDeployInfo() {
73
+ return html `
74
+ <div class="deploy-row">
75
+ <span class="deploy-time"><slot name="time-elapsed"></slot></span>
76
+ ${this.isDeployed
77
+ ? html `<span class="deployed-badge">${this.deployedLabel}</span>`
78
+ : ''}
79
+ </div>
80
+ `;
81
+ }
82
+ _renderTable() {
83
+ return html `
84
+ <div class="table-wrap">
85
+ <div class="filter-relative">
86
+ <div class="filter-bar" @click=${this._onToggleFilter}>
87
+ <span class="filter-selected">${this.filterDisplayText || this.allLabel}</span>
88
+ <div class="filter-suffix">
89
+ ${this.showAttention ? html `<p class="filter-attention">${this.attentionLabel}</p>` : ''}
90
+ <axebow-icon iconName="chevron_right" rotate="90" iconColor="var(--axebow-tertiary)" size="small"></axebow-icon>
91
+ </div>
92
+ </div>
93
+
94
+ <div class="filter-dropdown ${this.filterOpened ? '' : 'hidden'}">
95
+ <p class="filter-option" @click=${() => this._onFilterChange('', 'all')}>${this.allLabel}</p>
96
+ ${this.filterRoles.map((role) => html `
97
+ <div class="filter-role" @click=${() => this._onFilterChange(role.name, 'role')}>
98
+ <div class="filter-role-inner">
99
+ ${role.logo ? html `<img src=${role.logo} class="role-logo" />` : ''}
100
+ <p>${role.name}</p>
101
+ </div>
102
+ </div>
103
+ ${role.instances.map((inst) => html `
104
+ <div class="filter-instance" @click=${() => this._onFilterChange(inst.name, 'instance')}>
105
+ <div class="filter-instance-inner">
106
+ <axebow-icon iconName="subdirectory_arrow_right" size="small"></axebow-icon>
107
+ <p>${inst.name}</p>
108
+ </div>
109
+ ${inst.needsAttention
110
+ ? html `<axebow-icon iconName="warning" iconColor="var(--axebow-error)" size="small"></axebow-icon>`
111
+ : ''}
112
+ </div>
113
+ `)}
114
+ `)}
115
+ </div>
116
+ </div>
117
+
118
+ <aurora-card-resource-table
119
+ .rows=${this.tableStats}
120
+ .attentionThreshold=${this.attentionThreshold}
121
+ .manageLabel=${this.manageLabel}
122
+ .askOwnerLabel=${this.askOwnerLabel}
123
+ .invalidCredsLabel=${this.invalidCredsLabel}
124
+ .limitReachedLabel=${this.limitReachedLabel}
125
+ .andLabel=${this.andLabel}
126
+ ></aurora-card-resource-table>
127
+ </div>
128
+ `;
129
+ }
130
+ _renderFooter() {
131
+ return html `
132
+ <div class="footer">
133
+ <div class="status-block">
134
+ ${this.borderColor === 'var(--axebow-gray)'
135
+ ? html `<sl-spinner style="--indicator-color:${this.borderColor};"></sl-spinner>`
136
+ : ''}
137
+ <p class="status-code" style="color:${this.borderColor};" title=${this.statusCode}>${this.statusCode}</p>
138
+ ${this.statusCode
139
+ ? html `
140
+ <sl-tooltip content=${this.statusMessage}>
141
+ <axebow-icon class="cursor-pointer" style="flex-shrink:0;" iconColor=${this.borderColor} iconName="info" size="small"></axebow-icon>
142
+ </sl-tooltip>
143
+ `
144
+ : ''}
145
+ </div>
146
+ <axebow-button variant="text" size="medium" @click=${this._onServiceDetail}>${this.serviceDetailLabel}</axebow-button>
147
+ </div>
148
+ `;
149
+ }
150
+ _formatRevision(id) {
151
+ if (!id)
152
+ return '';
153
+ const parts = id.split('/');
154
+ return parts[parts.length - 1] ?? id;
155
+ }
156
+ _onRevisionChange(e) {
157
+ const revision = e.target.value;
158
+ this.dispatchEvent(new CustomEvent('revision-change', { detail: { revision }, bubbles: true, composed: true }));
159
+ }
160
+ _onToggleFilter() {
161
+ this.dispatchEvent(new CustomEvent('toggle-filter', { bubbles: true, composed: true }));
162
+ }
163
+ _onFilterChange(selected, type) {
164
+ this.dispatchEvent(new CustomEvent('filter-change', { detail: { selected, type }, bubbles: true, composed: true }));
165
+ }
166
+ _onServiceDetail() {
167
+ this.dispatchEvent(new CustomEvent('service-detail-click', { bubbles: true, composed: true }));
168
+ }
169
+ };
170
+ AuroraRuntimeCard.styles = css `
171
+ :host { display: block; width: 380px; height: 417px; max-width: 100%; }
172
+
173
+ .card {
174
+ width: 100%;
175
+ height: 100%;
176
+ background-color: var(--axebow-white);
177
+ border-radius: 0.5rem;
178
+ padding: 0.5rem 0.5rem 1rem;
179
+ display: flex;
180
+ flex-direction: column;
181
+ justify-content: space-between;
182
+ gap: 0.5rem;
183
+ box-sizing: border-box;
184
+ border-top: 4px solid transparent;
185
+ transition: box-shadow 200ms ease-in-out;
186
+ }
187
+ .card:hover { box-shadow: 0 4px 12px 0 rgba(13,24,33,0.08); }
188
+ .card--removing { pointer-events: none; cursor: not-allowed; filter: grayscale(100%); }
189
+
190
+ .header {
191
+ width: 100%;
192
+ background-color: var(--axebow-anti-flash-white);
193
+ border-radius: 0.375rem;
194
+ padding: 0.5rem 0.75rem;
195
+ height: 4rem;
196
+ display: flex;
197
+ align-items: center;
198
+ gap: 0.75rem;
199
+ }
200
+ .logo-wrap { height: 2.5rem; width: 2.5rem; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
201
+ .logo-wrap img { max-height: 100%; max-width: 100%; object-fit: contain; }
202
+ .header-text { display: flex; flex-direction: column; flex: 1; min-width: 0; justify-content: center; }
203
+ .header-name { font-weight: 700; font-size: 1.25rem; color: var(--axebow-primary); line-height: 1.25; }
204
+
205
+ .revision-wrap { font-style: italic; color: var(--axebow-primary); display: flex; align-items: center; }
206
+
207
+ .revision-wrap sl-select {
208
+ --sl-input-background-color: transparent;
209
+ --sl-input-border-color: transparent;
210
+ border: none;
211
+ background: transparent;
212
+ padding: 0;
213
+ margin: 0;
214
+ min-width: 0;
215
+ width: 100% !important;
216
+ }
217
+ .revision-wrap sl-select::part(base) {
218
+ border: none;
219
+ background-color: transparent;
220
+ padding: 0;
221
+ min-width: 0;
222
+ display: inline-block;
223
+ }
224
+ .revision-wrap sl-select::part(display-input) { padding: 0; }
225
+ sl-select::part(combobox) { padding: 0; }
226
+ sl-select::part(display-input) { padding: 0 8px; }
227
+
228
+ .deploy-row {
229
+ display: flex;
230
+ flex-direction: row;
231
+ justify-content: space-between;
232
+ align-items: center;
233
+ min-height: 2.5rem;
234
+ max-height: 2.5rem;
235
+ overflow: hidden;
236
+ }
237
+ .deploy-time { color: var(--axebow-secondary); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
238
+ .deployed-badge {
239
+ color: var(--axebow-secondary);
240
+ border: 2px solid var(--axebow-secondary);
241
+ border-radius: 0.5rem;
242
+ padding: 0.125rem 0.375rem;
243
+ white-space: nowrap;
244
+ font-size: 0.75rem;
245
+ }
246
+
247
+ .table-wrap {
248
+ width: 100%;
249
+ border: 1px solid var(--axebow-light-gray);
250
+ border-radius: 0.375rem;
251
+ }
252
+
253
+ .filter-bar {
254
+ display: flex;
255
+ justify-content: space-between;
256
+ align-items: center;
257
+ border-bottom: 1px solid var(--axebow-light-gray);
258
+ width: 100%;
259
+ padding-inline: 0.5rem;
260
+ cursor: pointer;
261
+ height: 1.75rem;
262
+ }
263
+ .filter-selected { color: var(--axebow-tertiary); }
264
+ .filter-suffix { display: flex; align-items: center; gap: 0.5rem; }
265
+ .filter-attention { color: var(--axebow-error); margin: 0; font-size: 0.75rem; }
266
+
267
+ .filter-dropdown {
268
+ position: absolute;
269
+ top: 100%;
270
+ left: 0;
271
+ right: 0;
272
+ z-index: 1;
273
+ display: flex;
274
+ flex-direction: column;
275
+ background: white;
276
+ border-bottom-left-radius: 0.5rem;
277
+ border-bottom-right-radius: 0.5rem;
278
+ border: 1px solid var(--axebow-light-gray);
279
+ box-shadow: 2px 2px 25px 0px rgba(0,0,0,0.1);
280
+ max-height: 10rem;
281
+ overflow-y: auto;
282
+ }
283
+ .filter-dropdown.hidden { display: none; }
284
+ .filter-option {
285
+ width: 100%;
286
+ padding: 0.5rem;
287
+ cursor: pointer;
288
+ margin: 0;
289
+ }
290
+ .filter-option:hover { background-color: var(--axebow-light-gray); }
291
+ .filter-role {
292
+ width: 100%;
293
+ padding: 0.25rem 0.5rem;
294
+ display: flex;
295
+ justify-content: space-between;
296
+ align-items: center;
297
+ border-top: 1px solid var(--axebow-light-gray);
298
+ cursor: pointer;
299
+ }
300
+ .filter-role:hover { background-color: var(--axebow-light-gray); }
301
+ .filter-role-inner { display: flex; align-items: center; gap: 0.5rem; }
302
+ .role-logo { width: 1.25rem; height: 1.25rem; }
303
+ .filter-instance {
304
+ width: 100%;
305
+ padding: 0.25rem 0.5rem;
306
+ display: flex;
307
+ justify-content: space-between;
308
+ align-items: center;
309
+ border-top: 1px solid var(--axebow-light-gray);
310
+ cursor: pointer;
311
+ padding-left: 1.5rem;
312
+ }
313
+ .filter-instance:hover { background-color: var(--axebow-light-gray); }
314
+ .filter-instance-inner { display: flex; align-items: center; gap: 0.5rem; }
315
+ .filter-relative { position: relative; }
316
+ p { margin: 0; }
317
+
318
+ .footer {
319
+ display: flex;
320
+ justify-content: space-between;
321
+ align-items: center;
322
+ padding-inline: 0.5rem;
323
+ gap: 1rem;
324
+ height: 2.5rem;
325
+ overflow: hidden;
326
+ margin-bottom: 0.25rem;
327
+ }
328
+ .status-block { display: flex; align-items: center; gap: 0.25rem; min-width: 0; flex: 1; }
329
+ .status-code {
330
+ font-weight: 700;
331
+ font-size: 0.75rem;
332
+ margin: 0;
333
+ display: -webkit-box;
334
+ -webkit-line-clamp: 1;
335
+ -webkit-box-orient: vertical;
336
+ overflow: hidden;
337
+ }
338
+
339
+ sl-dialog::part(panel) { width: 35vw; min-width: 400px; }
340
+ sl-dialog::part(body) { padding-top: 0; }
341
+
342
+ sl-select sl-option[checked] .revision-ts,
343
+ sl-select sl-option[current] .revision-ts,
344
+ sl-select sl-option[aria-selected="true"] .revision-ts { color: white !important; }
345
+
346
+ sl-tooltip::part(base) { max-width: none; white-space: normal; word-break: break-word; }
347
+ `;
348
+ __decorate([
349
+ property({ type: String })
350
+ ], AuroraRuntimeCard.prototype, "name", void 0);
351
+ __decorate([
352
+ property({ type: String })
353
+ ], AuroraRuntimeCard.prototype, "logo", void 0);
354
+ __decorate([
355
+ property({ type: Array })
356
+ ], AuroraRuntimeCard.prototype, "revisions", void 0);
357
+ __decorate([
358
+ property({ type: String })
359
+ ], AuroraRuntimeCard.prototype, "displayedRevision", void 0);
360
+ __decorate([
361
+ property({ type: String })
362
+ ], AuroraRuntimeCard.prototype, "lastDeployed", void 0);
363
+ __decorate([
364
+ property({ type: Boolean })
365
+ ], AuroraRuntimeCard.prototype, "isDeployed", void 0);
366
+ __decorate([
367
+ property({ type: Array })
368
+ ], AuroraRuntimeCard.prototype, "tableStats", void 0);
369
+ __decorate([
370
+ property({ type: Number })
371
+ ], AuroraRuntimeCard.prototype, "attentionThreshold", void 0);
372
+ __decorate([
373
+ property({ type: Boolean })
374
+ ], AuroraRuntimeCard.prototype, "filterOpened", void 0);
375
+ __decorate([
376
+ property({ type: String })
377
+ ], AuroraRuntimeCard.prototype, "filterDisplayText", void 0);
378
+ __decorate([
379
+ property({ type: Array })
380
+ ], AuroraRuntimeCard.prototype, "filterRoles", void 0);
381
+ __decorate([
382
+ property({ type: Boolean })
383
+ ], AuroraRuntimeCard.prototype, "showAttention", void 0);
384
+ __decorate([
385
+ property({ type: String })
386
+ ], AuroraRuntimeCard.prototype, "borderColor", void 0);
387
+ __decorate([
388
+ property({ type: String })
389
+ ], AuroraRuntimeCard.prototype, "statusCode", void 0);
390
+ __decorate([
391
+ property({ type: String })
392
+ ], AuroraRuntimeCard.prototype, "statusMessage", void 0);
393
+ __decorate([
394
+ property({ type: Boolean })
395
+ ], AuroraRuntimeCard.prototype, "isRemoving", void 0);
396
+ __decorate([
397
+ property({ type: String })
398
+ ], AuroraRuntimeCard.prototype, "deployedLabel", void 0);
399
+ __decorate([
400
+ property({ type: String })
401
+ ], AuroraRuntimeCard.prototype, "allLabel", void 0);
402
+ __decorate([
403
+ property({ type: String })
404
+ ], AuroraRuntimeCard.prototype, "attentionLabel", void 0);
405
+ __decorate([
406
+ property({ type: String })
407
+ ], AuroraRuntimeCard.prototype, "serviceDetailLabel", void 0);
408
+ __decorate([
409
+ property({ type: String })
410
+ ], AuroraRuntimeCard.prototype, "manageLabel", void 0);
411
+ __decorate([
412
+ property({ type: String })
413
+ ], AuroraRuntimeCard.prototype, "askOwnerLabel", void 0);
414
+ __decorate([
415
+ property({ type: String })
416
+ ], AuroraRuntimeCard.prototype, "invalidCredsLabel", void 0);
417
+ __decorate([
418
+ property({ type: String })
419
+ ], AuroraRuntimeCard.prototype, "limitReachedLabel", void 0);
420
+ __decorate([
421
+ property({ type: String })
422
+ ], AuroraRuntimeCard.prototype, "andLabel", void 0);
423
+ AuroraRuntimeCard = __decorate([
424
+ customElement('aurora-runtime-card')
425
+ ], AuroraRuntimeCard);
426
+ export { AuroraRuntimeCard };
427
+ //# sourceMappingURL=aurora-runtime-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aurora-runtime-card.js","sourceRoot":"","sources":["../../../src/components/cards/aurora-runtime-card.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export type CardBadge = 'free-iaas' | 'ha' | 'none';
2
+ export interface CardFilterItem {
3
+ name: string;
4
+ showAttention: boolean;
5
+ }
6
+ export interface TableStatsType {
7
+ title: string;
8
+ value: number | string;
9
+ percentage: number;
10
+ icon: string;
11
+ iconRotation?: number;
12
+ minValue?: number | string;
13
+ maxValue?: number | string;
14
+ tagValue?: string;
15
+ isSecondary?: boolean;
16
+ hidden?: boolean;
17
+ }
18
+ export interface MainStatsType {
19
+ title: string;
20
+ value: number;
21
+ label: string;
22
+ onClickLabel?: () => void;
23
+ active?: boolean;
24
+ }
25
+ export interface ActionMenuItem {
26
+ label: string;
27
+ icon: string;
28
+ type: 'primary' | 'secondary' | 'tertiary' | 'error' | 'warning';
29
+ onTap: (e: Event) => void;
30
+ }
31
+ export interface RuntimeFilterRole {
32
+ name: string;
33
+ logo?: string;
34
+ instances: Array<{
35
+ name: string;
36
+ needsAttention: boolean;
37
+ }>;
38
+ }
39
+ //# sourceMappingURL=card.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.types.d.ts","sourceRoot":"","sources":["../../../src/components/cards/card.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IACjE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=card.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.types.js","sourceRoot":"","sources":["../../../src/components/cards/card.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class AuroraCardActionBanner extends LitElement {
3
+ static styles: import("lit").CSSResult;
4
+ label: string;
5
+ render(): import("lit-html").TemplateResult<1>;
6
+ private _onClick;
7
+ }
8
+ //# sourceMappingURL=aurora-card-action-banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aurora-card-action-banner.d.ts","sourceRoot":"","sources":["../../../../src/components/cards/parts/aurora-card-action-banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,qBACa,sBAAuB,SAAQ,UAAU;IACpD,MAAM,CAAC,MAAM,0BAyBX;IAE0B,KAAK,SAAkB;IAEnD,MAAM;IAWN,OAAO,CAAC,QAAQ;CAGjB"}
@@ -0,0 +1,61 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, html, css } from 'lit';
8
+ import { customElement, property } from 'lit/decorators.js';
9
+ let AuroraCardActionBanner = class AuroraCardActionBanner extends LitElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.label = 'View details';
13
+ }
14
+ render() {
15
+ return html `
16
+ <div class="banner">
17
+ <axebow-button variant="text" size="small" @click=${this._onClick}>
18
+ ${this.label}
19
+ <axebow-icon iconName="arrow_forward" iconColor="var(--axebow-tertiary)" size="small"></axebow-icon>
20
+ </axebow-button>
21
+ </div>
22
+ `;
23
+ }
24
+ _onClick() {
25
+ this.dispatchEvent(new CustomEvent('action-click', { bubbles: true, composed: true }));
26
+ }
27
+ };
28
+ AuroraCardActionBanner.styles = css `
29
+ :host { display: block; }
30
+ .banner {
31
+ background-color: color-mix(in srgb, var(--axebow-tertiary) 10%, white);
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ gap: 0.25rem;
36
+ width: 100%;
37
+ padding-inline: 0.75rem;
38
+ font-size: 0.875rem;
39
+ text-align: center;
40
+ }
41
+ axebow-button::part(label) {
42
+ color: var(--axebow-tertiary);
43
+ font-weight: 600;
44
+ display: flex;
45
+ align-items: center;
46
+ gap: 2px;
47
+ }
48
+ axebow-button::part(base) {
49
+ padding: 0;
50
+ height: auto;
51
+ min-height: unset;
52
+ }
53
+ `;
54
+ __decorate([
55
+ property({ type: String })
56
+ ], AuroraCardActionBanner.prototype, "label", void 0);
57
+ AuroraCardActionBanner = __decorate([
58
+ customElement('aurora-card-action-banner')
59
+ ], AuroraCardActionBanner);
60
+ export { AuroraCardActionBanner };
61
+ //# sourceMappingURL=aurora-card-action-banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aurora-card-action-banner.js","sourceRoot":"","sources":["../../../../src/components/cards/parts/aurora-card-action-banner.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGrD,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,UAAU;IAA/C;;QA4BuB,UAAK,GAAG,cAAc,CAAC;IAgBrD,CAAC;IAdC,MAAM;QACJ,OAAO,IAAI,CAAA;;4DAE6C,IAAI,CAAC,QAAQ;YAC7D,IAAI,CAAC,KAAK;;;;KAIjB,CAAC;IACJ,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC;;AA1CM,6BAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBlB,AAzBY,CAyBX;AAE0B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qDAAwB;AA5BxC,sBAAsB;IADlC,aAAa,CAAC,2BAA2B,CAAC;GAC9B,sBAAsB,CA4ClC"}
@@ -0,0 +1,20 @@
1
+ import { LitElement } from 'lit';
2
+ import { TableStatsType } from '../card.types.js';
3
+ export declare class AuroraCardAttentionBanner extends LitElement {
4
+ static styles: import("lit").CSSResult;
5
+ cardType: 'account' | 'environment' | 'tenant';
6
+ tableStats: TableStatsType[];
7
+ threshold: number;
8
+ isPlainRole: boolean;
9
+ invalidCredentials: boolean;
10
+ manageLabel: string;
11
+ askOwnerLabel: string;
12
+ invalidCredsLabel: string;
13
+ limitReachedLabel: string;
14
+ andLabel: string;
15
+ private _getExceeded;
16
+ private _formatList;
17
+ render(): import("lit-html").TemplateResult<1>;
18
+ private _onManage;
19
+ }
20
+ //# sourceMappingURL=aurora-card-attention-banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aurora-card-attention-banner.d.ts","sourceRoot":"","sources":["../../../../src/components/cards/parts/aurora-card-attention-banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBACa,yBAA0B,SAAQ,UAAU;IACvD,MAAM,CAAC,MAAM,0BAgBX;IAE0B,QAAQ,EAAE,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAa;IAC5D,UAAU,EAAE,cAAc,EAAE,CAAM;IACjC,SAAS,SAAM;IACd,WAAW,UAAS;IACpB,kBAAkB,UAAS;IAC5B,WAAW,SAAY;IACvB,aAAa,SAAoB;IACjC,iBAAiB,SAA0B;IAC3C,iBAAiB,SAAoB;IACrC,QAAQ,SAAS;IAE7C,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,WAAW;IAMnB,MAAM;IAuBN,OAAO,CAAC,SAAS;CAGlB"}