@bluevolt-tech/lumen 2.0.1 → 2.2.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/README.md +37 -23
- package/dist/components/_shared/adopt-styles.d.ts +8 -0
- package/dist/components/_shared/date-range-validator.d.ts +86 -0
- package/dist/components/_shared/dropdown-controller.d.ts +60 -0
- package/dist/components/_shared/selectable-card.d.ts +10 -0
- package/dist/components/bv-alert-banner/bv-alert-banner.js +19 -17
- package/dist/components/bv-avatar/bv-avatar.js +19 -11
- package/dist/components/bv-badge/bv-badge.js +19 -11
- package/dist/components/bv-button/bv-button.js +18 -16
- package/dist/components/bv-category-pill/bv-category-pill.js +18 -16
- package/dist/components/bv-checkbox/bv-checkbox.js +19 -11
- package/dist/components/bv-chip/bv-chip.js +19 -11
- package/dist/components/bv-course-detail/bv-course-detail.js +20 -34
- package/dist/components/bv-course-detail-modal/bv-course-detail-modal.js +24 -90
- package/dist/components/bv-course-grid-card/bv-course-grid-card.d.ts +2 -6
- package/dist/components/bv-course-grid-card/bv-course-grid-card.js +98 -105
- package/dist/components/bv-course-list-card/bv-course-list-card.d.ts +2 -6
- package/dist/components/bv-course-list-card/bv-course-list-card.js +98 -105
- package/dist/components/bv-course-outline/bv-course-outline.js +19 -11
- package/dist/components/bv-date-range-input/bv-date-range-input.d.ts +10 -6
- package/dist/components/bv-date-range-input/bv-date-range-input.js +602 -125
- package/dist/components/bv-date-range-picker/bv-date-range-picker.d.ts +71 -4
- package/dist/components/bv-date-range-picker/bv-date-range-picker.js +441 -76
- package/dist/components/bv-empty-state/bv-empty-state.js +20 -28
- package/dist/components/bv-filter-dropdown/bv-filter-dropdown.d.ts +1 -4
- package/dist/components/bv-filter-dropdown/bv-filter-dropdown.js +80 -53
- package/dist/components/bv-filter-panel/bv-filter-panel.js +20 -22
- package/dist/components/bv-icon/bv-icon.js +19 -11
- package/dist/components/bv-input/bv-input.js +18 -16
- package/dist/components/bv-input-dropdown/bv-input-dropdown.d.ts +1 -4
- package/dist/components/bv-input-dropdown/bv-input-dropdown.js +79 -78
- package/dist/components/bv-modal/bv-modal.js +19 -11
- package/dist/components/bv-page-title/bv-page-title.js +19 -6
- package/dist/components/bv-pagination/bv-pagination.d.ts +1 -0
- package/dist/components/bv-pagination/bv-pagination.js +23 -186
- package/dist/components/bv-portal-header/bv-portal-header.js +25 -83
- package/dist/components/bv-portal-layout/bv-portal-layout.js +19 -11
- package/dist/components/bv-progress-bar/bv-progress-bar.js +19 -11
- package/dist/components/bv-promo-banner/bv-promo-banner.js +19 -11
- package/dist/components/bv-radio/bv-radio.js +19 -11
- package/dist/components/bv-searchbox/bv-searchbox.js +19 -11
- package/dist/components/bv-segmented-control/bv-segmented-control.js +18 -16
- package/dist/components/bv-select/bv-select.d.ts +1 -4
- package/dist/components/bv-select/bv-select.js +78 -44
- package/dist/components/bv-split-button/bv-split-button.d.ts +1 -4
- package/dist/components/bv-split-button/bv-split-button.js +78 -42
- package/dist/components/bv-star-rating/bv-star-rating.js +19 -11
- package/dist/components/bv-table/bv-table.d.ts +5 -0
- package/dist/components/bv-table/bv-table.js +70 -19
- package/dist/components/bv-toggle/bv-toggle.js +19 -11
- package/dist/components/bv-tooltip/bv-tooltip.js +20 -17
- package/dist/components/bv-user-row/bv-user-row.js +22 -50
- package/dist/components/bv-view-switcher/bv-view-switcher.js +19 -11
- package/dist/themes/base.css +1 -1
- package/package.json +8 -1
- package/themes/base.css +1 -1
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
// css-inline:/home/runner/work/BV_lumen/BV_lumen/components/bv-portal-header/bv-portal-header.css
|
|
2
2
|
var bv_portal_header_default = ":host {\n display: block;\n background: var(--bv-color-neutral-0);\n border: 1px solid var(--bv-color-neutral-200);\n}\n\n.header {\n display: flex;\n flex-direction: column;\n}\n\n.title-bar {\n padding: var(--bv-spacing-md) var(--bv-spacing-lg);\n border-bottom: 1px solid var(--bv-color-neutral-200);\n}\n\n.title {\n margin: 0;\n font-family: var(--bv-font-family-base);\n font-size: var(--bv-font-size-2xl);\n font-weight: var(--bv-font-weight-medium);\n color: var(--bv-color-neutral-900);\n line-height: 32px;\n}\n\n.body {\n display: flex;\n flex-direction: column;\n gap: var(--bv-spacing-sm);\n padding: var(--bv-spacing-md) var(--bv-spacing-lg);\n}\n\nbv-promo-banner {\n align-self: flex-start;\n}\n";
|
|
3
3
|
|
|
4
|
+
// components/_shared/adopt-styles.ts
|
|
5
|
+
var _sheetCache = /* @__PURE__ */ new Map();
|
|
6
|
+
function adoptStyles(shadow, css) {
|
|
7
|
+
if ("adoptedStyleSheets" in ShadowRoot.prototype && typeof CSSStyleSheet !== "undefined" && "replaceSync" in CSSStyleSheet.prototype) {
|
|
8
|
+
let sheet = _sheetCache.get(css);
|
|
9
|
+
if (!sheet) {
|
|
10
|
+
sheet = new CSSStyleSheet();
|
|
11
|
+
sheet.replaceSync(css);
|
|
12
|
+
_sheetCache.set(css, sheet);
|
|
13
|
+
}
|
|
14
|
+
shadow.adoptedStyleSheets = [sheet];
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const style = document.createElement("style");
|
|
18
|
+
style.textContent = css;
|
|
19
|
+
shadow.appendChild(style);
|
|
20
|
+
}
|
|
21
|
+
|
|
4
22
|
// css-inline:/home/runner/work/BV_lumen/BV_lumen/components/bv-user-row/bv-user-row.css
|
|
5
23
|
var bv_user_row_default = ":host {\n display: inline-block;\n}\n\n.row {\n display: inline-flex;\n align-items: center;\n gap: var(--bv-spacing-lg);\n}\n\n/* User info */\n.user-info {\n display: flex;\n align-items: center;\n gap: var(--bv-spacing-md);\n min-width: 0;\n}\n\nbv-avatar {\n --bv-avatar-size: 56px;\n flex-shrink: 0;\n}\n\n.text-col {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.user-name {\n font-family: var(--bv-font-family-base);\n font-size: var(--bv-font-size-lg);\n font-weight: var(--bv-font-weight-semibold);\n color: var(--bv-color-secondary-foreground);\n line-height: 28px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.user-org {\n font-family: var(--bv-font-family-base);\n font-size: var(--bv-font-size-md);\n font-weight: var(--bv-font-weight-regular);\n color: var(--bv-color-neutral-600);\n line-height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Edit action host \u2014 flex to keep either <bv-button> or <a> aligned */\n.edit-action {\n flex-shrink: 0;\n display: inline-flex;\n}\n\n/* Edit button \u2014 white bg, neutral border */\n.edit-btn {\n --bv-button-bg: var(--bv-color-neutral-0);\n --bv-button-bg-hover: var(--bv-color-neutral-100);\n --bv-button-color: var(--bv-color-secondary-foreground);\n --bv-button-border-color: var(--bv-color-neutral-300);\n --bv-button-border-color-hover: var(--bv-color-neutral-400);\n flex-shrink: 0;\n}\n\n/* Edit link \u2014 same visual as .edit-btn, but a real anchor */\n.edit-link {\n display: inline-flex;\n align-items: center;\n gap: var(--bv-spacing-sm);\n padding: 8px 16px;\n background: var(--bv-color-neutral-0);\n color: var(--bv-color-secondary-foreground);\n border: 1px solid var(--bv-color-neutral-300);\n border-radius: var(--bv-radius-md);\n font-family: var(--bv-font-family-base);\n font-size: var(--bv-font-size-sm);\n font-weight: var(--bv-font-weight-medium);\n text-decoration: none;\n cursor: pointer;\n transition:\n background var(--bv-transition-fast),\n border-color var(--bv-transition-fast);\n}\n\n.edit-link:hover {\n background: var(--bv-color-neutral-100);\n border-color: var(--bv-color-neutral-400);\n}\n\n.edit-link:focus-visible {\n outline: 2px solid var(--bv-color-primary);\n outline-offset: 2px;\n}\n";
|
|
6
24
|
|
|
@@ -15,12 +33,7 @@ var BvAvatar = class extends HTMLElement {
|
|
|
15
33
|
_label = null;
|
|
16
34
|
constructor() {
|
|
17
35
|
super();
|
|
18
|
-
this.attachShadow({ mode: "open" });
|
|
19
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
20
|
-
const sheet = new CSSStyleSheet();
|
|
21
|
-
sheet.replaceSync(bv_avatar_default);
|
|
22
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
23
|
-
}
|
|
36
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_avatar_default);
|
|
24
37
|
}
|
|
25
38
|
connectedCallback() {
|
|
26
39
|
this._render();
|
|
@@ -35,11 +48,6 @@ var BvAvatar = class extends HTMLElement {
|
|
|
35
48
|
if (this._rendered) return;
|
|
36
49
|
this._rendered = true;
|
|
37
50
|
const shadow = this.shadowRoot;
|
|
38
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
39
|
-
const s = document.createElement("style");
|
|
40
|
-
s.textContent = bv_avatar_default;
|
|
41
|
-
shadow.appendChild(s);
|
|
42
|
-
}
|
|
43
51
|
const div = document.createElement("div");
|
|
44
52
|
div.className = "avatar";
|
|
45
53
|
const src = this.getAttribute("src");
|
|
@@ -160,14 +168,6 @@ var rawIcons = {
|
|
|
160
168
|
};
|
|
161
169
|
|
|
162
170
|
// components/bv-button/bv-button.ts
|
|
163
|
-
var _sheet = null;
|
|
164
|
-
function getSheet() {
|
|
165
|
-
if (!_sheet) {
|
|
166
|
-
_sheet = new CSSStyleSheet();
|
|
167
|
-
_sheet.replaceSync(bv_button_default);
|
|
168
|
-
}
|
|
169
|
-
return _sheet;
|
|
170
|
-
}
|
|
171
171
|
var BvButton = class extends HTMLElement {
|
|
172
172
|
static observedAttributes = [
|
|
173
173
|
"variant",
|
|
@@ -183,10 +183,7 @@ var BvButton = class extends HTMLElement {
|
|
|
183
183
|
];
|
|
184
184
|
constructor() {
|
|
185
185
|
super();
|
|
186
|
-
|
|
187
|
-
if ("adoptedStyleSheets" in ShadowRoot.prototype) {
|
|
188
|
-
shadow.adoptedStyleSheets = [getSheet()];
|
|
189
|
-
}
|
|
186
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_button_default);
|
|
190
187
|
}
|
|
191
188
|
// ── Accessors ────────────────────────────────────────────────
|
|
192
189
|
get variant() {
|
|
@@ -243,11 +240,6 @@ var BvButton = class extends HTMLElement {
|
|
|
243
240
|
const shadow = this.shadowRoot;
|
|
244
241
|
let btn = shadow.querySelector("button");
|
|
245
242
|
if (!btn) {
|
|
246
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
247
|
-
const styleEl = document.createElement("style");
|
|
248
|
-
styleEl.textContent = bv_button_default;
|
|
249
|
-
shadow.appendChild(styleEl);
|
|
250
|
-
}
|
|
251
243
|
btn = document.createElement("button");
|
|
252
244
|
btn.setAttribute("part", "button");
|
|
253
245
|
btn.appendChild(document.createElement("slot"));
|
|
@@ -311,12 +303,7 @@ var BvIcon = class extends HTMLElement {
|
|
|
311
303
|
_wrap = null;
|
|
312
304
|
constructor() {
|
|
313
305
|
super();
|
|
314
|
-
this.attachShadow({ mode: "open" });
|
|
315
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
316
|
-
const sheet = new CSSStyleSheet();
|
|
317
|
-
sheet.replaceSync(bv_icon_default);
|
|
318
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
319
|
-
}
|
|
306
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_icon_default);
|
|
320
307
|
}
|
|
321
308
|
connectedCallback() {
|
|
322
309
|
this._render();
|
|
@@ -328,11 +315,6 @@ var BvIcon = class extends HTMLElement {
|
|
|
328
315
|
if (this._rendered) return;
|
|
329
316
|
this._rendered = true;
|
|
330
317
|
const shadow = this.shadowRoot;
|
|
331
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
332
|
-
const s = document.createElement("style");
|
|
333
|
-
s.textContent = bv_icon_default;
|
|
334
|
-
shadow.appendChild(s);
|
|
335
|
-
}
|
|
336
318
|
this._wrap = document.createElement("span");
|
|
337
319
|
this._wrap.className = "icon-wrap";
|
|
338
320
|
shadow.appendChild(this._wrap);
|
|
@@ -378,12 +360,7 @@ var BvUserRow = class extends HTMLElement {
|
|
|
378
360
|
_els = {};
|
|
379
361
|
constructor() {
|
|
380
362
|
super();
|
|
381
|
-
this.attachShadow({ mode: "open" });
|
|
382
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
383
|
-
const sheet = new CSSStyleSheet();
|
|
384
|
-
sheet.replaceSync(bv_user_row_default);
|
|
385
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
386
|
-
}
|
|
363
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_user_row_default);
|
|
387
364
|
}
|
|
388
365
|
connectedCallback() {
|
|
389
366
|
this._render();
|
|
@@ -427,11 +404,6 @@ var BvUserRow = class extends HTMLElement {
|
|
|
427
404
|
if (this._rendered) return;
|
|
428
405
|
this._rendered = true;
|
|
429
406
|
const shadow = this.shadowRoot;
|
|
430
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
431
|
-
const s = document.createElement("style");
|
|
432
|
-
s.textContent = bv_user_row_default;
|
|
433
|
-
shadow.appendChild(s);
|
|
434
|
-
}
|
|
435
407
|
const row = document.createElement("div");
|
|
436
408
|
row.className = "row";
|
|
437
409
|
const userInfo = document.createElement("div");
|
|
@@ -520,12 +492,7 @@ var BvPromoBanner = class extends HTMLElement {
|
|
|
520
492
|
_anchor = null;
|
|
521
493
|
constructor() {
|
|
522
494
|
super();
|
|
523
|
-
this.attachShadow({ mode: "open" });
|
|
524
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
525
|
-
const sheet = new CSSStyleSheet();
|
|
526
|
-
sheet.replaceSync(bv_promo_banner_default);
|
|
527
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
528
|
-
}
|
|
495
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_promo_banner_default);
|
|
529
496
|
}
|
|
530
497
|
connectedCallback() {
|
|
531
498
|
this._render();
|
|
@@ -551,11 +518,6 @@ var BvPromoBanner = class extends HTMLElement {
|
|
|
551
518
|
if (this._rendered) return;
|
|
552
519
|
this._rendered = true;
|
|
553
520
|
const shadow = this.shadowRoot;
|
|
554
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
555
|
-
const s = document.createElement("style");
|
|
556
|
-
s.textContent = bv_promo_banner_default;
|
|
557
|
-
shadow.appendChild(s);
|
|
558
|
-
}
|
|
559
521
|
const anchor = document.createElement("a");
|
|
560
522
|
anchor.className = "banner";
|
|
561
523
|
anchor.href = this.getAttribute("href") ?? "";
|
|
@@ -603,12 +565,7 @@ var BvSearchbox = class extends HTMLElement {
|
|
|
603
565
|
_input = null;
|
|
604
566
|
constructor() {
|
|
605
567
|
super();
|
|
606
|
-
this.attachShadow({ mode: "open" });
|
|
607
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
608
|
-
const sheet = new CSSStyleSheet();
|
|
609
|
-
sheet.replaceSync(bv_searchbox_default);
|
|
610
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
611
|
-
}
|
|
568
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_searchbox_default);
|
|
612
569
|
}
|
|
613
570
|
connectedCallback() {
|
|
614
571
|
this._render();
|
|
@@ -626,11 +583,6 @@ var BvSearchbox = class extends HTMLElement {
|
|
|
626
583
|
if (this._rendered) return;
|
|
627
584
|
this._rendered = true;
|
|
628
585
|
const shadow = this.shadowRoot;
|
|
629
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
630
|
-
const s = document.createElement("style");
|
|
631
|
-
s.textContent = bv_searchbox_default;
|
|
632
|
-
shadow.appendChild(s);
|
|
633
|
-
}
|
|
634
586
|
const icon = document.createElement("span");
|
|
635
587
|
icon.className = "search-icon";
|
|
636
588
|
icon.innerHTML = SEARCH_ICON;
|
|
@@ -676,12 +628,7 @@ var BvPortalHeader = class extends HTMLElement {
|
|
|
676
628
|
_els = {};
|
|
677
629
|
constructor() {
|
|
678
630
|
super();
|
|
679
|
-
this.attachShadow({ mode: "open" });
|
|
680
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
681
|
-
const sheet = new CSSStyleSheet();
|
|
682
|
-
sheet.replaceSync(bv_portal_header_default);
|
|
683
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
684
|
-
}
|
|
631
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_portal_header_default);
|
|
685
632
|
}
|
|
686
633
|
connectedCallback() {
|
|
687
634
|
this._render();
|
|
@@ -750,11 +697,6 @@ var BvPortalHeader = class extends HTMLElement {
|
|
|
750
697
|
if (this._rendered) return;
|
|
751
698
|
this._rendered = true;
|
|
752
699
|
const shadow = this.shadowRoot;
|
|
753
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
754
|
-
const s = document.createElement("style");
|
|
755
|
-
s.textContent = bv_portal_header_default;
|
|
756
|
-
shadow.appendChild(s);
|
|
757
|
-
}
|
|
758
700
|
const header = document.createElement("div");
|
|
759
701
|
header.className = "header";
|
|
760
702
|
const titleBar = document.createElement("div");
|
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
// css-inline:/home/runner/work/BV_lumen/BV_lumen/components/bv-portal-layout/bv-portal-layout.css
|
|
2
2
|
var bv_portal_layout_default = ":host {\n display: block;\n min-height: 100vh;\n box-sizing: border-box;\n\n background: var(--bv-layout-bg, #f9fafb);\n padding: var(--bv-layout-gutter, 20px);\n\n /* Publish layout context tokens so all descendants inherit them */\n --bv-layout-gutter: 20px;\n --bv-layout-bg: #f9fafb;\n --bv-layout-radius: 0px;\n --bv-content-radius: 0px;\n}\n\n.layout {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n";
|
|
3
3
|
|
|
4
|
+
// components/_shared/adopt-styles.ts
|
|
5
|
+
var _sheetCache = /* @__PURE__ */ new Map();
|
|
6
|
+
function adoptStyles(shadow, css) {
|
|
7
|
+
if ("adoptedStyleSheets" in ShadowRoot.prototype && typeof CSSStyleSheet !== "undefined" && "replaceSync" in CSSStyleSheet.prototype) {
|
|
8
|
+
let sheet = _sheetCache.get(css);
|
|
9
|
+
if (!sheet) {
|
|
10
|
+
sheet = new CSSStyleSheet();
|
|
11
|
+
sheet.replaceSync(css);
|
|
12
|
+
_sheetCache.set(css, sheet);
|
|
13
|
+
}
|
|
14
|
+
shadow.adoptedStyleSheets = [sheet];
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const style = document.createElement("style");
|
|
18
|
+
style.textContent = css;
|
|
19
|
+
shadow.appendChild(style);
|
|
20
|
+
}
|
|
21
|
+
|
|
4
22
|
// components/bv-portal-layout/bv-portal-layout.ts
|
|
5
23
|
var BvPortalLayout = class extends HTMLElement {
|
|
6
24
|
_rendered = false;
|
|
7
25
|
constructor() {
|
|
8
26
|
super();
|
|
9
|
-
this.attachShadow({ mode: "open" });
|
|
10
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
11
|
-
const sheet = new CSSStyleSheet();
|
|
12
|
-
sheet.replaceSync(bv_portal_layout_default);
|
|
13
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
14
|
-
}
|
|
27
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_portal_layout_default);
|
|
15
28
|
}
|
|
16
29
|
connectedCallback() {
|
|
17
30
|
this._render();
|
|
@@ -20,11 +33,6 @@ var BvPortalLayout = class extends HTMLElement {
|
|
|
20
33
|
if (this._rendered) return;
|
|
21
34
|
this._rendered = true;
|
|
22
35
|
const shadow = this.shadowRoot;
|
|
23
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
24
|
-
const s = document.createElement("style");
|
|
25
|
-
s.textContent = bv_portal_layout_default;
|
|
26
|
-
shadow.appendChild(s);
|
|
27
|
-
}
|
|
28
36
|
const layout = document.createElement("div");
|
|
29
37
|
layout.className = "layout";
|
|
30
38
|
layout.appendChild(document.createElement("slot"));
|
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
// css-inline:/home/runner/work/BV_lumen/BV_lumen/components/bv-progress-bar/bv-progress-bar.css
|
|
2
2
|
var bv_progress_bar_default = ":host {\n --bv-progress-track: var(--bv-color-neutral-200);\n --bv-progress-fill: var(--bv-color-primary);\n --bv-progress-height: 8px;\n display: block;\n width: 100%;\n}\n\n:host([variant='success']) {\n --bv-progress-fill: var(--bv-color-success);\n}\n:host([variant='warning']) {\n --bv-progress-fill: var(--bv-color-warning);\n}\n:host([variant='danger']) {\n --bv-progress-fill: var(--bv-color-danger);\n}\n\n:host([size='sm']) {\n --bv-progress-height: 4px;\n}\n:host([size='lg']) {\n --bv-progress-height: 12px;\n}\n\n.track {\n width: 100%;\n height: var(--bv-progress-height);\n background: var(--bv-progress-track);\n border-radius: var(--bv-radius-full);\n overflow: hidden;\n}\n\n.fill {\n height: 100%;\n background: var(--bv-progress-fill);\n border-radius: var(--bv-radius-full);\n transition: width var(--bv-transition-normal);\n min-width: 0;\n max-width: 100%;\n}\n";
|
|
3
3
|
|
|
4
|
+
// components/_shared/adopt-styles.ts
|
|
5
|
+
var _sheetCache = /* @__PURE__ */ new Map();
|
|
6
|
+
function adoptStyles(shadow, css) {
|
|
7
|
+
if ("adoptedStyleSheets" in ShadowRoot.prototype && typeof CSSStyleSheet !== "undefined" && "replaceSync" in CSSStyleSheet.prototype) {
|
|
8
|
+
let sheet = _sheetCache.get(css);
|
|
9
|
+
if (!sheet) {
|
|
10
|
+
sheet = new CSSStyleSheet();
|
|
11
|
+
sheet.replaceSync(css);
|
|
12
|
+
_sheetCache.set(css, sheet);
|
|
13
|
+
}
|
|
14
|
+
shadow.adoptedStyleSheets = [sheet];
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const style = document.createElement("style");
|
|
18
|
+
style.textContent = css;
|
|
19
|
+
shadow.appendChild(style);
|
|
20
|
+
}
|
|
21
|
+
|
|
4
22
|
// components/bv-progress-bar/bv-progress-bar.ts
|
|
5
23
|
var BvProgressBar = class extends HTMLElement {
|
|
6
24
|
static observedAttributes = ["value", "max", "variant", "size"];
|
|
@@ -8,12 +26,7 @@ var BvProgressBar = class extends HTMLElement {
|
|
|
8
26
|
_rendered = false;
|
|
9
27
|
constructor() {
|
|
10
28
|
super();
|
|
11
|
-
this.attachShadow({ mode: "open" });
|
|
12
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
13
|
-
const sheet = new CSSStyleSheet();
|
|
14
|
-
sheet.replaceSync(bv_progress_bar_default);
|
|
15
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
16
|
-
}
|
|
29
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_progress_bar_default);
|
|
17
30
|
}
|
|
18
31
|
connectedCallback() {
|
|
19
32
|
this._render();
|
|
@@ -30,11 +43,6 @@ var BvProgressBar = class extends HTMLElement {
|
|
|
30
43
|
if (this._rendered) return;
|
|
31
44
|
this._rendered = true;
|
|
32
45
|
const shadow = this.shadowRoot;
|
|
33
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
34
|
-
const s = document.createElement("style");
|
|
35
|
-
s.textContent = bv_progress_bar_default;
|
|
36
|
-
shadow.appendChild(s);
|
|
37
|
-
}
|
|
38
46
|
this.setAttribute("role", "progressbar");
|
|
39
47
|
const track = document.createElement("div");
|
|
40
48
|
track.className = "track";
|
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
// css-inline:/home/runner/work/BV_lumen/BV_lumen/components/bv-promo-banner/bv-promo-banner.css
|
|
2
2
|
var bv_promo_banner_default = ":host {\n display: inline-block;\n}\n\n.banner {\n display: flex;\n align-items: center;\n gap: var(--bv-spacing-sm);\n padding: 5px var(--bv-spacing-sm) 5px 5px;\n background: var(--bv-color-primary-light);\n border-radius: var(--bv-radius-xl);\n cursor: pointer;\n text-decoration: none;\n transition: opacity var(--bv-transition-fast);\n}\n\n.banner:hover {\n opacity: 0.88;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: var(--bv-spacing-xs);\n padding: 2px var(--bv-spacing-sm);\n background: var(--bv-color-neutral-0);\n border-radius: var(--bv-radius-full);\n flex-shrink: 0;\n}\n\n.badge-label {\n font-family: var(--bv-font-family-base);\n font-size: var(--bv-font-size-xs);\n font-weight: var(--bv-font-weight-medium);\n color: var(--bv-color-primary-dark);\n white-space: nowrap;\n}\n\n.badge-logo {\n height: 12px;\n width: auto;\n display: block;\n}\n\n.message {\n flex: none;\n font-family: var(--bv-font-family-base);\n font-size: var(--bv-font-size-xs);\n font-weight: var(--bv-font-weight-medium);\n color: var(--bv-color-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.chevron {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n color: var(--bv-color-primary);\n display: flex;\n align-items: center;\n}\n";
|
|
3
3
|
|
|
4
|
+
// components/_shared/adopt-styles.ts
|
|
5
|
+
var _sheetCache = /* @__PURE__ */ new Map();
|
|
6
|
+
function adoptStyles(shadow, css) {
|
|
7
|
+
if ("adoptedStyleSheets" in ShadowRoot.prototype && typeof CSSStyleSheet !== "undefined" && "replaceSync" in CSSStyleSheet.prototype) {
|
|
8
|
+
let sheet = _sheetCache.get(css);
|
|
9
|
+
if (!sheet) {
|
|
10
|
+
sheet = new CSSStyleSheet();
|
|
11
|
+
sheet.replaceSync(css);
|
|
12
|
+
_sheetCache.set(css, sheet);
|
|
13
|
+
}
|
|
14
|
+
shadow.adoptedStyleSheets = [sheet];
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const style = document.createElement("style");
|
|
18
|
+
style.textContent = css;
|
|
19
|
+
shadow.appendChild(style);
|
|
20
|
+
}
|
|
21
|
+
|
|
4
22
|
// components/bv-promo-banner/bv-promo-banner.ts
|
|
5
23
|
var CHEVRON = `<svg class="chevron" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
6
24
|
<path d="M6 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
@@ -21,12 +39,7 @@ var BvPromoBanner = class extends HTMLElement {
|
|
|
21
39
|
_anchor = null;
|
|
22
40
|
constructor() {
|
|
23
41
|
super();
|
|
24
|
-
this.attachShadow({ mode: "open" });
|
|
25
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
26
|
-
const sheet = new CSSStyleSheet();
|
|
27
|
-
sheet.replaceSync(bv_promo_banner_default);
|
|
28
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
29
|
-
}
|
|
42
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_promo_banner_default);
|
|
30
43
|
}
|
|
31
44
|
connectedCallback() {
|
|
32
45
|
this._render();
|
|
@@ -52,11 +65,6 @@ var BvPromoBanner = class extends HTMLElement {
|
|
|
52
65
|
if (this._rendered) return;
|
|
53
66
|
this._rendered = true;
|
|
54
67
|
const shadow = this.shadowRoot;
|
|
55
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
56
|
-
const s = document.createElement("style");
|
|
57
|
-
s.textContent = bv_promo_banner_default;
|
|
58
|
-
shadow.appendChild(s);
|
|
59
|
-
}
|
|
60
68
|
const anchor = document.createElement("a");
|
|
61
69
|
anchor.className = "banner";
|
|
62
70
|
anchor.href = this.getAttribute("href") ?? "";
|
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
// css-inline:/home/runner/work/BV_lumen/BV_lumen/components/bv-radio/bv-radio.css
|
|
2
2
|
var bv_radio_default = ":host {\n --bv-radio-size: 16px;\n --bv-radio-border: var(--bv-color-neutral-300);\n --bv-radio-checked-color: var(--bv-color-primary);\n display: inline-flex;\n font-family: var(--bv-font-family-base);\n}\n\n.wrap {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n user-select: none;\n}\n\n:host([disabled]) .wrap {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.circle {\n width: var(--bv-radio-size);\n height: var(--bv-radio-size);\n border-radius: 50%;\n border: 1.5px solid var(--bv-radio-border);\n background: var(--bv-color-neutral-0);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: border-color var(--bv-transition-fast);\n}\n\n:host([checked]) .circle {\n border-color: var(--bv-radio-checked-color);\n}\n\n.dot {\n width: calc(var(--bv-radio-size) * 0.5);\n height: calc(var(--bv-radio-size) * 0.5);\n border-radius: 50%;\n background: var(--bv-radio-checked-color);\n display: none;\n}\n\n:host([checked]) .dot {\n display: block;\n}\n\n.label {\n font-size: var(--bv-font-size-sm);\n color: var(--bv-color-neutral-800);\n line-height: 20px;\n}\n";
|
|
3
3
|
|
|
4
|
+
// components/_shared/adopt-styles.ts
|
|
5
|
+
var _sheetCache = /* @__PURE__ */ new Map();
|
|
6
|
+
function adoptStyles(shadow, css) {
|
|
7
|
+
if ("adoptedStyleSheets" in ShadowRoot.prototype && typeof CSSStyleSheet !== "undefined" && "replaceSync" in CSSStyleSheet.prototype) {
|
|
8
|
+
let sheet = _sheetCache.get(css);
|
|
9
|
+
if (!sheet) {
|
|
10
|
+
sheet = new CSSStyleSheet();
|
|
11
|
+
sheet.replaceSync(css);
|
|
12
|
+
_sheetCache.set(css, sheet);
|
|
13
|
+
}
|
|
14
|
+
shadow.adoptedStyleSheets = [sheet];
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const style = document.createElement("style");
|
|
18
|
+
style.textContent = css;
|
|
19
|
+
shadow.appendChild(style);
|
|
20
|
+
}
|
|
21
|
+
|
|
4
22
|
// components/bv-radio/bv-radio.ts
|
|
5
23
|
var BvRadio = class extends HTMLElement {
|
|
6
24
|
static observedAttributes = ["checked", "disabled", "label", "name", "value"];
|
|
@@ -8,12 +26,7 @@ var BvRadio = class extends HTMLElement {
|
|
|
8
26
|
_labelEl = null;
|
|
9
27
|
constructor() {
|
|
10
28
|
super();
|
|
11
|
-
this.attachShadow({ mode: "open" });
|
|
12
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
13
|
-
const sheet = new CSSStyleSheet();
|
|
14
|
-
sheet.replaceSync(bv_radio_default);
|
|
15
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
16
|
-
}
|
|
29
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_radio_default);
|
|
17
30
|
}
|
|
18
31
|
connectedCallback() {
|
|
19
32
|
this._render();
|
|
@@ -33,11 +46,6 @@ var BvRadio = class extends HTMLElement {
|
|
|
33
46
|
if (this._rendered) return;
|
|
34
47
|
this._rendered = true;
|
|
35
48
|
const shadow = this.shadowRoot;
|
|
36
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
37
|
-
const s = document.createElement("style");
|
|
38
|
-
s.textContent = bv_radio_default;
|
|
39
|
-
shadow.appendChild(s);
|
|
40
|
-
}
|
|
41
49
|
const wrap = document.createElement("label");
|
|
42
50
|
wrap.className = "wrap";
|
|
43
51
|
const circle = document.createElement("span");
|
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
// css-inline:/home/runner/work/BV_lumen/BV_lumen/components/bv-searchbox/bv-searchbox.css
|
|
2
2
|
var bv_searchbox_default = ":host {\n display: block;\n width: 100%;\n position: relative;\n font-family: var(--bv-font-family-base);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--bv-color-neutral-400);\n display: flex;\n pointer-events: none;\n}\n\n.search-input {\n width: 100%;\n box-sizing: border-box;\n height: 40px;\n padding: 0 12px 0 38px;\n font-size: var(--bv-font-size-sm);\n font-family: inherit;\n border: 1px solid var(--bv-color-neutral-300);\n border-radius: var(--bv-radius-lg);\n outline: none;\n color: var(--bv-color-neutral-800);\n background: var(--bv-color-neutral-0);\n transition: border-color var(--bv-transition-fast);\n}\n\n:host([size='sm']) .search-input {\n height: 36px;\n}\n:host([size='lg']) .search-input {\n height: 46px;\n}\n\n.search-input::placeholder {\n color: var(--bv-color-neutral-400);\n}\n\n.search-input:focus {\n border-color: #6fb0d8;\n box-shadow:\n 0px 0px 0px 4px #dbe8ff,\n 0px 1px 2px 0px rgba(16, 24, 40, 0.05);\n}\n";
|
|
3
3
|
|
|
4
|
+
// components/_shared/adopt-styles.ts
|
|
5
|
+
var _sheetCache = /* @__PURE__ */ new Map();
|
|
6
|
+
function adoptStyles(shadow, css) {
|
|
7
|
+
if ("adoptedStyleSheets" in ShadowRoot.prototype && typeof CSSStyleSheet !== "undefined" && "replaceSync" in CSSStyleSheet.prototype) {
|
|
8
|
+
let sheet = _sheetCache.get(css);
|
|
9
|
+
if (!sheet) {
|
|
10
|
+
sheet = new CSSStyleSheet();
|
|
11
|
+
sheet.replaceSync(css);
|
|
12
|
+
_sheetCache.set(css, sheet);
|
|
13
|
+
}
|
|
14
|
+
shadow.adoptedStyleSheets = [sheet];
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const style = document.createElement("style");
|
|
18
|
+
style.textContent = css;
|
|
19
|
+
shadow.appendChild(style);
|
|
20
|
+
}
|
|
21
|
+
|
|
4
22
|
// components/bv-searchbox/bv-searchbox.ts
|
|
5
23
|
var SEARCH_ICON = `<svg width="16" height="16" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
6
24
|
<path d="M17.5 17.5L13.875 13.875M15.8333 9.16667C15.8333 12.8486 12.8486 15.8333 9.16667 15.8333C5.48477 15.8333 2.5 12.8486 2.5 9.16667C2.5 5.48477 5.48477 2.5 9.16667 2.5C12.8486 2.5 15.8333 5.48477 15.8333 9.16667Z"
|
|
@@ -12,12 +30,7 @@ var BvSearchbox = class extends HTMLElement {
|
|
|
12
30
|
_input = null;
|
|
13
31
|
constructor() {
|
|
14
32
|
super();
|
|
15
|
-
this.attachShadow({ mode: "open" });
|
|
16
|
-
if ("replaceSync" in CSSStyleSheet.prototype) {
|
|
17
|
-
const sheet = new CSSStyleSheet();
|
|
18
|
-
sheet.replaceSync(bv_searchbox_default);
|
|
19
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
20
|
-
}
|
|
33
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_searchbox_default);
|
|
21
34
|
}
|
|
22
35
|
connectedCallback() {
|
|
23
36
|
this._render();
|
|
@@ -35,11 +48,6 @@ var BvSearchbox = class extends HTMLElement {
|
|
|
35
48
|
if (this._rendered) return;
|
|
36
49
|
this._rendered = true;
|
|
37
50
|
const shadow = this.shadowRoot;
|
|
38
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
39
|
-
const s = document.createElement("style");
|
|
40
|
-
s.textContent = bv_searchbox_default;
|
|
41
|
-
shadow.appendChild(s);
|
|
42
|
-
}
|
|
43
51
|
const icon = document.createElement("span");
|
|
44
52
|
icon.className = "search-icon";
|
|
45
53
|
icon.innerHTML = SEARCH_ICON;
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
// css-inline:/home/runner/work/BV_lumen/BV_lumen/components/bv-segmented-control/bv-segmented-control.css
|
|
2
2
|
var bv_segmented_control_default = ":host {\n display: block;\n font-family: var(--bv-font-family-base);\n}\n\n.field-label {\n display: block;\n font-size: var(--bv-font-size-sm);\n line-height: 20px;\n font-weight: var(--bv-font-weight-semibold);\n color: var(--bv-color-neutral-800);\n margin-bottom: 6px;\n}\n\n.field-label[hidden] {\n display: none;\n}\n\n.required-mark {\n color: var(--bv-color-danger);\n margin-left: 2px;\n}\n\n.container {\n display: flex;\n align-items: center;\n height: 44px;\n box-sizing: border-box;\n background: var(--bv-color-neutral-100);\n border: 1px solid var(--bv-color-neutral-200);\n border-radius: var(--bv-radius-lg);\n padding: 3px;\n gap: 2px;\n}\n\n.pill {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 0 var(--bv-spacing-md);\n border: none;\n border-radius: calc(var(--bv-radius-lg) - 3px);\n background: transparent;\n font-family: inherit;\n font-size: var(--bv-font-size-sm);\n font-weight: var(--bv-font-weight-medium);\n color: var(--bv-color-neutral-500);\n cursor: pointer;\n white-space: nowrap;\n user-select: none;\n transition:\n color var(--bv-transition-fast),\n background var(--bv-transition-fast),\n box-shadow var(--bv-transition-fast);\n}\n\n.pill:hover:not(.selected) {\n color: var(--bv-color-neutral-800);\n}\n\n.pill.selected {\n background: var(--bv-color-neutral-0);\n color: var(--bv-color-neutral-900);\n box-shadow: var(--bv-shadow-sm);\n}\n";
|
|
3
3
|
|
|
4
|
-
// components/
|
|
5
|
-
var
|
|
6
|
-
function
|
|
7
|
-
if (
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
// components/_shared/adopt-styles.ts
|
|
5
|
+
var _sheetCache = /* @__PURE__ */ new Map();
|
|
6
|
+
function adoptStyles(shadow, css) {
|
|
7
|
+
if ("adoptedStyleSheets" in ShadowRoot.prototype && typeof CSSStyleSheet !== "undefined" && "replaceSync" in CSSStyleSheet.prototype) {
|
|
8
|
+
let sheet = _sheetCache.get(css);
|
|
9
|
+
if (!sheet) {
|
|
10
|
+
sheet = new CSSStyleSheet();
|
|
11
|
+
sheet.replaceSync(css);
|
|
12
|
+
_sheetCache.set(css, sheet);
|
|
13
|
+
}
|
|
14
|
+
shadow.adoptedStyleSheets = [sheet];
|
|
15
|
+
return;
|
|
10
16
|
}
|
|
11
|
-
|
|
17
|
+
const style = document.createElement("style");
|
|
18
|
+
style.textContent = css;
|
|
19
|
+
shadow.appendChild(style);
|
|
12
20
|
}
|
|
21
|
+
|
|
22
|
+
// components/bv-segmented-control/bv-segmented-control.ts
|
|
13
23
|
var BvSegmentedControl = class extends HTMLElement {
|
|
14
24
|
static observedAttributes = ["options", "value", "label", "required"];
|
|
15
25
|
_rendered = false;
|
|
@@ -18,10 +28,7 @@ var BvSegmentedControl = class extends HTMLElement {
|
|
|
18
28
|
_options = [];
|
|
19
29
|
constructor() {
|
|
20
30
|
super();
|
|
21
|
-
|
|
22
|
-
if ("adoptedStyleSheets" in ShadowRoot.prototype) {
|
|
23
|
-
shadow.adoptedStyleSheets = [getSheet()];
|
|
24
|
-
}
|
|
31
|
+
adoptStyles(this.attachShadow({ mode: "open" }), bv_segmented_control_default);
|
|
25
32
|
}
|
|
26
33
|
get value() {
|
|
27
34
|
return this.getAttribute("value") ?? "";
|
|
@@ -49,11 +56,6 @@ var BvSegmentedControl = class extends HTMLElement {
|
|
|
49
56
|
if (this._rendered) return;
|
|
50
57
|
this._rendered = true;
|
|
51
58
|
const shadow = this.shadowRoot;
|
|
52
|
-
if (!shadow.adoptedStyleSheets.length) {
|
|
53
|
-
const s = document.createElement("style");
|
|
54
|
-
s.textContent = bv_segmented_control_default;
|
|
55
|
-
shadow.appendChild(s);
|
|
56
|
-
}
|
|
57
59
|
const labelEl = document.createElement("span");
|
|
58
60
|
labelEl.className = "field-label";
|
|
59
61
|
this._labelEl = labelEl;
|
|
@@ -16,7 +16,7 @@ export declare class BvSelect extends HTMLElement {
|
|
|
16
16
|
private _errorEl;
|
|
17
17
|
private _options;
|
|
18
18
|
private _value;
|
|
19
|
-
private
|
|
19
|
+
private _dropdown;
|
|
20
20
|
constructor();
|
|
21
21
|
get value(): string;
|
|
22
22
|
set value(v: string);
|
|
@@ -28,9 +28,6 @@ export declare class BvSelect extends HTMLElement {
|
|
|
28
28
|
disconnectedCallback(): void;
|
|
29
29
|
attributeChangedCallback(name: string, _old: string | null, val: string | null): void;
|
|
30
30
|
private _render;
|
|
31
|
-
private _toggle;
|
|
32
|
-
private _open;
|
|
33
|
-
private _close;
|
|
34
31
|
private _syncLabel;
|
|
35
32
|
private _syncTriggerLabel;
|
|
36
33
|
private _renderOptions;
|