@krollins/blueprint 0.1.12 → 0.1.13

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 (95) hide show
  1. package/dist/components/accordion.js +393 -0
  2. package/dist/components/accordion.js.map +1 -0
  3. package/dist/components/alert.js +213 -0
  4. package/dist/components/alert.js.map +1 -0
  5. package/dist/components/avatar.js +237 -0
  6. package/dist/components/avatar.js.map +1 -0
  7. package/dist/components/badge.js +144 -0
  8. package/dist/components/badge.js.map +1 -0
  9. package/dist/components/breadcrumb.js +481 -0
  10. package/dist/components/breadcrumb.js.map +1 -0
  11. package/dist/components/button.js +192 -0
  12. package/dist/components/button.js.map +1 -0
  13. package/dist/components/card.js +223 -0
  14. package/dist/components/card.js.map +1 -0
  15. package/dist/components/checkbox.js +337 -0
  16. package/dist/components/checkbox.js.map +1 -0
  17. package/dist/components/color-picker.js +1660 -0
  18. package/dist/components/color-picker.js.map +1 -0
  19. package/dist/components/combobox.js +595 -0
  20. package/dist/components/combobox.js.map +1 -0
  21. package/dist/components/date-picker.js +726 -0
  22. package/dist/components/date-picker.js.map +1 -0
  23. package/dist/components/divider.js +214 -0
  24. package/dist/components/divider.js.map +1 -0
  25. package/dist/components/drawer.js +568 -0
  26. package/dist/components/drawer.js.map +1 -0
  27. package/dist/components/dropdown.js +377 -0
  28. package/dist/components/dropdown.js.map +1 -0
  29. package/dist/components/file-upload.js +669 -0
  30. package/dist/components/file-upload.js.map +1 -0
  31. package/dist/components/heading.js +161 -0
  32. package/dist/components/heading.js.map +1 -0
  33. package/dist/components/icon.js +599 -0
  34. package/dist/components/icon.js.map +1 -0
  35. package/dist/components/input.js +363 -0
  36. package/dist/components/input.js.map +1 -0
  37. package/dist/components/link.js +178 -0
  38. package/dist/components/link.js.map +1 -0
  39. package/dist/components/menu.js +331 -0
  40. package/dist/components/menu.js.map +1 -0
  41. package/dist/components/modal.js +317 -0
  42. package/dist/components/modal.js.map +1 -0
  43. package/dist/components/multi-select.js +642 -0
  44. package/dist/components/multi-select.js.map +1 -0
  45. package/dist/components/notification.js +429 -0
  46. package/dist/components/notification.js.map +1 -0
  47. package/dist/components/number-input.js +556 -0
  48. package/dist/components/number-input.js.map +1 -0
  49. package/dist/components/pagination.js +320 -0
  50. package/dist/components/pagination.js.map +1 -0
  51. package/dist/components/popover.js +597 -0
  52. package/dist/components/popover.js.map +1 -0
  53. package/dist/components/progress.js +219 -0
  54. package/dist/components/progress.js.map +1 -0
  55. package/dist/components/radio.js +321 -0
  56. package/dist/components/radio.js.map +1 -0
  57. package/dist/components/select.js +498 -0
  58. package/dist/components/select.js.map +1 -0
  59. package/dist/components/skeleton.js +240 -0
  60. package/dist/components/skeleton.js.map +1 -0
  61. package/dist/components/slider.js +9 -0
  62. package/dist/components/slider.js.map +1 -0
  63. package/dist/components/spinner.js +133 -0
  64. package/dist/components/spinner.js.map +1 -0
  65. package/dist/components/stepper.js +812 -0
  66. package/dist/components/stepper.js.map +1 -0
  67. package/dist/components/switch.js +380 -0
  68. package/dist/components/switch.js.map +1 -0
  69. package/dist/components/table.js +642 -0
  70. package/dist/components/table.js.map +1 -0
  71. package/dist/components/tabs.js +547 -0
  72. package/dist/components/tabs.js.map +1 -0
  73. package/dist/components/tag.js +291 -0
  74. package/dist/components/tag.js.map +1 -0
  75. package/dist/components/text.js +278 -0
  76. package/dist/components/text.js.map +1 -0
  77. package/dist/components/textarea.js +380 -0
  78. package/dist/components/textarea.js.map +1 -0
  79. package/dist/components/time-picker.js +457 -0
  80. package/dist/components/time-picker.js.map +1 -0
  81. package/dist/components/tooltip.js +239 -0
  82. package/dist/components/tooltip.js.map +1 -0
  83. package/dist/components/tree.js +582 -0
  84. package/dist/components/tree.js.map +1 -0
  85. package/dist/index.js +93 -17799
  86. package/dist/index.js.map +1 -1
  87. package/dist/shared/boolean-converter-XDGfS9LC.js +12 -0
  88. package/dist/shared/boolean-converter-XDGfS9LC.js.map +1 -0
  89. package/dist/shared/debounce-BckY30Sf.js +23 -0
  90. package/dist/shared/debounce-BckY30Sf.js.map +1 -0
  91. package/dist/shared/memoize-DlOFy-92.js +16 -0
  92. package/dist/shared/memoize-DlOFy-92.js.map +1 -0
  93. package/dist/shared/slider-BNt5TITl.js +484 -0
  94. package/dist/shared/slider-BNt5TITl.js.map +1 -0
  95. package/package.json +44 -2
@@ -0,0 +1,237 @@
1
+ import { css as v, LitElement as h, html as l } from "lit";
2
+ import { property as r, state as b, customElement as f } from "lit/decorators.js";
3
+ const g = v`
4
+ /* Base styles */
5
+ :host {
6
+ display: inline-flex;
7
+ position: relative;
8
+ }
9
+
10
+ .avatar {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ overflow: hidden;
15
+ background: var(--bp-color-primary);
16
+ color: var(--bp-color-text-inverse);
17
+ font-family: var(--bp-font-family);
18
+ font-weight: var(--bp-font-weight-semibold);
19
+ user-select: none;
20
+ flex-shrink: 0;
21
+ box-shadow: var(--bp-shadow-sm);
22
+ position: relative;
23
+ }
24
+
25
+ /* Image avatars have different background */
26
+ .avatar:has(.avatar__image) {
27
+ background: var(--bp-color-surface);
28
+ color: var(--bp-color-text);
29
+ }
30
+
31
+ .avatar__image {
32
+ width: 100%;
33
+ height: 100%;
34
+ object-fit: cover;
35
+ display: block;
36
+ }
37
+
38
+ .avatar__initials {
39
+ text-transform: uppercase;
40
+ line-height: 1;
41
+ letter-spacing: 0.02em;
42
+ }
43
+
44
+ .avatar__fallback {
45
+ opacity: 0.8;
46
+ }
47
+
48
+ /* Shapes */
49
+ .avatar--circle {
50
+ border-radius: var(--bp-border-radius-full);
51
+ }
52
+
53
+ .avatar--square {
54
+ border-radius: var(--bp-border-radius-sm);
55
+ }
56
+
57
+ /* Sizes */
58
+ .avatar--xs {
59
+ width: var(--bp-spacing-6);
60
+ height: var(--bp-spacing-6);
61
+ }
62
+
63
+ .avatar--xs .avatar__initials {
64
+ font-size: var(--bp-font-size-xs);
65
+ }
66
+
67
+ .avatar--sm {
68
+ width: var(--bp-spacing-8);
69
+ height: var(--bp-spacing-8);
70
+ }
71
+
72
+ .avatar--sm .avatar__initials {
73
+ font-size: var(--bp-font-size-sm);
74
+ }
75
+
76
+ .avatar--md {
77
+ width: var(--bp-spacing-10);
78
+ height: var(--bp-spacing-10);
79
+ }
80
+
81
+ .avatar--md .avatar__initials {
82
+ font-size: var(--bp-font-size-base);
83
+ }
84
+
85
+ .avatar--lg {
86
+ width: var(--bp-spacing-12);
87
+ height: var(--bp-spacing-12);
88
+ }
89
+
90
+ .avatar--lg .avatar__initials {
91
+ font-size: var(--bp-font-size-lg);
92
+ }
93
+
94
+ .avatar--xl {
95
+ width: var(--bp-spacing-16);
96
+ height: var(--bp-spacing-16);
97
+ }
98
+
99
+ .avatar--xl .avatar__initials {
100
+ font-size: var(--bp-font-size-2xl);
101
+ }
102
+
103
+ /* States - Interactive */
104
+ :host([clickable]) .avatar {
105
+ cursor: pointer;
106
+ transition:
107
+ transform var(--bp-duration-fast),
108
+ box-shadow var(--bp-duration-fast);
109
+ }
110
+
111
+ :host([clickable]) .avatar:hover {
112
+ transform: translateY(calc(-1 * var(--bp-spacing-0-5)));
113
+ box-shadow: var(--bp-shadow-md);
114
+ }
115
+
116
+ :host([clickable]:focus-within) .avatar {
117
+ outline: var(--bp-focus-width) solid var(--bp-color-focus);
118
+ outline-offset: var(--bp-focus-offset);
119
+ }
120
+
121
+ /* Status indicator */
122
+ .avatar__status {
123
+ position: absolute;
124
+ bottom: 0;
125
+ right: 0;
126
+ width: 25%;
127
+ height: 25%;
128
+ min-width: var(--bp-spacing-2);
129
+ min-height: var(--bp-spacing-2);
130
+ border-radius: var(--bp-border-radius-full);
131
+ border: var(--bp-focus-width) solid var(--bp-color-surface-elevated);
132
+ }
133
+
134
+ .avatar__status--online {
135
+ background: var(--bp-color-success);
136
+ }
137
+
138
+ .avatar__status--offline {
139
+ background: var(--bp-color-border-strong);
140
+ }
141
+
142
+ .avatar__status--busy {
143
+ background: var(--bp-color-error);
144
+ }
145
+
146
+ .avatar__status--away {
147
+ background: var(--bp-color-warning);
148
+ }
149
+ `;
150
+ var u = Object.defineProperty, d = Object.getOwnPropertyDescriptor, t = (i, e, o, n) => {
151
+ for (var s = n > 1 ? void 0 : n ? d(e, o) : e, p = i.length - 1, c; p >= 0; p--)
152
+ (c = i[p]) && (s = (n ? c(e, o, s) : c(s)) || s);
153
+ return n && s && u(e, o, s), s;
154
+ };
155
+ let a = class extends h {
156
+ constructor() {
157
+ super(), this.imageError = !1, this.src = "", this.alt = "", this.initials = "", this.size = "md", this.shape = "circle", this.clickable = !1, this.name = "";
158
+ }
159
+ handleImageError() {
160
+ this.imageError = !0;
161
+ }
162
+ render() {
163
+ const i = this.src.length > 0 && !this.imageError, e = this.initials.length > 0, o = this.name || this.alt;
164
+ return l`
165
+ <div
166
+ class="avatar avatar--${this.size} avatar--${this.shape}"
167
+ part="avatar"
168
+ title="${o}"
169
+ >
170
+ ${i ? l`
171
+ <img
172
+ class="avatar__image"
173
+ src="${this.src}"
174
+ alt="${this.alt}"
175
+ @error="${this.handleImageError}"
176
+ part="image"
177
+ />
178
+ ` : e ? l`<span
179
+ class="avatar__initials"
180
+ part="initials"
181
+ role="img"
182
+ aria-label="${this.alt || "User avatar"}"
183
+ >${this.initials}</span
184
+ >` : l`<bp-icon
185
+ class="avatar__fallback"
186
+ name="users"
187
+ size="${this.size === "xs" ? "xs" : this.size === "xl" ? "lg" : this.size}"
188
+ part="fallback"
189
+ aria-label="User avatar"
190
+ ></bp-icon>`}
191
+ ${this.status ? l`<span
192
+ class="avatar__status avatar__status--${this.status}"
193
+ part="status"
194
+ aria-label="${this.status}"
195
+ ></span>` : ""}
196
+ </div>
197
+ `;
198
+ }
199
+ updated(i) {
200
+ i.has("src") && (this.imageError = !1);
201
+ }
202
+ };
203
+ a.styles = [g];
204
+ t([
205
+ r({ type: String, reflect: !0 })
206
+ ], a.prototype, "src", 2);
207
+ t([
208
+ r({ type: String, reflect: !0 })
209
+ ], a.prototype, "alt", 2);
210
+ t([
211
+ r({ type: String, reflect: !0 })
212
+ ], a.prototype, "initials", 2);
213
+ t([
214
+ r({ type: String, reflect: !0 })
215
+ ], a.prototype, "size", 2);
216
+ t([
217
+ r({ type: String, reflect: !0 })
218
+ ], a.prototype, "shape", 2);
219
+ t([
220
+ r({ type: String, reflect: !0 })
221
+ ], a.prototype, "status", 2);
222
+ t([
223
+ r({ type: Boolean, reflect: !0 })
224
+ ], a.prototype, "clickable", 2);
225
+ t([
226
+ r({ type: String })
227
+ ], a.prototype, "name", 2);
228
+ t([
229
+ b()
230
+ ], a.prototype, "imageError", 2);
231
+ a = t([
232
+ f("bp-avatar")
233
+ ], a);
234
+ export {
235
+ a as BpAvatar
236
+ };
237
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.js","sources":["../../source/components/avatar/avatar.style.ts","../../source/components/avatar/avatar.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const avatarStyles = css`\n /* Base styles */\n :host {\n display: inline-flex;\n position: relative;\n }\n\n .avatar {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n background: var(--bp-color-primary);\n color: var(--bp-color-text-inverse);\n font-family: var(--bp-font-family);\n font-weight: var(--bp-font-weight-semibold);\n user-select: none;\n flex-shrink: 0;\n box-shadow: var(--bp-shadow-sm);\n position: relative;\n }\n\n /* Image avatars have different background */\n .avatar:has(.avatar__image) {\n background: var(--bp-color-surface);\n color: var(--bp-color-text);\n }\n\n .avatar__image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n }\n\n .avatar__initials {\n text-transform: uppercase;\n line-height: 1;\n letter-spacing: 0.02em;\n }\n\n .avatar__fallback {\n opacity: 0.8;\n }\n\n /* Shapes */\n .avatar--circle {\n border-radius: var(--bp-border-radius-full);\n }\n\n .avatar--square {\n border-radius: var(--bp-border-radius-sm);\n }\n\n /* Sizes */\n .avatar--xs {\n width: var(--bp-spacing-6);\n height: var(--bp-spacing-6);\n }\n\n .avatar--xs .avatar__initials {\n font-size: var(--bp-font-size-xs);\n }\n\n .avatar--sm {\n width: var(--bp-spacing-8);\n height: var(--bp-spacing-8);\n }\n\n .avatar--sm .avatar__initials {\n font-size: var(--bp-font-size-sm);\n }\n\n .avatar--md {\n width: var(--bp-spacing-10);\n height: var(--bp-spacing-10);\n }\n\n .avatar--md .avatar__initials {\n font-size: var(--bp-font-size-base);\n }\n\n .avatar--lg {\n width: var(--bp-spacing-12);\n height: var(--bp-spacing-12);\n }\n\n .avatar--lg .avatar__initials {\n font-size: var(--bp-font-size-lg);\n }\n\n .avatar--xl {\n width: var(--bp-spacing-16);\n height: var(--bp-spacing-16);\n }\n\n .avatar--xl .avatar__initials {\n font-size: var(--bp-font-size-2xl);\n }\n\n /* States - Interactive */\n :host([clickable]) .avatar {\n cursor: pointer;\n transition:\n transform var(--bp-duration-fast),\n box-shadow var(--bp-duration-fast);\n }\n\n :host([clickable]) .avatar:hover {\n transform: translateY(calc(-1 * var(--bp-spacing-0-5)));\n box-shadow: var(--bp-shadow-md);\n }\n\n :host([clickable]:focus-within) .avatar {\n outline: var(--bp-focus-width) solid var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n\n /* Status indicator */\n .avatar__status {\n position: absolute;\n bottom: 0;\n right: 0;\n width: 25%;\n height: 25%;\n min-width: var(--bp-spacing-2);\n min-height: var(--bp-spacing-2);\n border-radius: var(--bp-border-radius-full);\n border: var(--bp-focus-width) solid var(--bp-color-surface-elevated);\n }\n\n .avatar__status--online {\n background: var(--bp-color-success);\n }\n\n .avatar__status--offline {\n background: var(--bp-color-border-strong);\n }\n\n .avatar__status--busy {\n background: var(--bp-color-error);\n }\n\n .avatar__status--away {\n background: var(--bp-color-warning);\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { avatarStyles } from './avatar.style.js';\nimport '../icon/icon.js';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarShape = 'circle' | 'square';\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away';\n\n/**\n * An avatar component that displays user profile images with fallback to initials.\n * Supports multiple sizes, shapes, status indicators, and interactive states.\n */\n@customElement('bp-avatar')\nexport class BpAvatar extends LitElement {\n /**\n * Image source URL for the avatar.\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare src: string;\n\n /**\n * Alt text for the avatar image (accessibility).\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare alt: string;\n\n /**\n * Initials to display when no image is provided.\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare initials: string;\n\n /**\n * Size of the avatar.\n * @type {'xs' | 'sm' | 'md' | 'lg' | 'xl'}\n * @default 'md'\n */\n @property({ type: String, reflect: true }) declare size: AvatarSize;\n\n /**\n * Shape of the avatar.\n * @type {'circle' | 'square'}\n * @default 'circle'\n */\n @property({ type: String, reflect: true }) declare shape: AvatarShape;\n\n /**\n * Status indicator for the avatar.\n * @type {'online' | 'offline' | 'busy' | 'away' | undefined}\n * @default undefined\n */\n @property({ type: String, reflect: true }) declare status?: AvatarStatus;\n\n /**\n * Makes the avatar interactive with hover/focus states.\n * @type {boolean}\n * @default false\n */\n @property({ type: Boolean, reflect: true }) declare clickable: boolean;\n\n /**\n * Name for tooltip display on hover.\n * @type {string}\n * @default ''\n */\n @property({ type: String }) declare name: string;\n\n /**\n * Internal state to track if image failed to load.\n * @private\n */\n @state() private imageError = false;\n\n static styles = [avatarStyles];\n\n constructor() {\n super();\n this.src = '';\n this.alt = '';\n this.initials = '';\n this.size = 'md';\n this.shape = 'circle';\n this.clickable = false;\n this.name = '';\n }\n\n private handleImageError() {\n // Track image error state to show fallback\n this.imageError = true;\n }\n\n render() {\n const hasImage = this.src.length > 0 && !this.imageError;\n const hasInitials = this.initials.length > 0;\n const titleText = this.name || this.alt;\n\n return html`\n <div\n class=\"avatar avatar--${this.size} avatar--${this.shape}\"\n part=\"avatar\"\n title=\"${titleText}\"\n >\n ${hasImage\n ? html`\n <img\n class=\"avatar__image\"\n src=\"${this.src}\"\n alt=\"${this.alt}\"\n @error=\"${this.handleImageError}\"\n part=\"image\"\n />\n `\n : hasInitials\n ? html`<span\n class=\"avatar__initials\"\n part=\"initials\"\n role=\"img\"\n aria-label=\"${this.alt || 'User avatar'}\"\n >${this.initials}</span\n >`\n : html`<bp-icon\n class=\"avatar__fallback\"\n name=\"users\"\n size=\"${this.size === 'xs'\n ? 'xs'\n : this.size === 'xl'\n ? 'lg'\n : this.size}\"\n part=\"fallback\"\n aria-label=\"User avatar\"\n ></bp-icon>`}\n ${this.status\n ? html`<span\n class=\"avatar__status avatar__status--${this.status}\"\n part=\"status\"\n aria-label=\"${this.status}\"\n ></span>`\n : ''}\n </div>\n `;\n }\n\n updated(changedProperties: Map<string, unknown>) {\n // Reset image error state when src changes\n if (changedProperties.has('src')) {\n this.imageError = false;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-avatar': BpAvatar;\n }\n}\n"],"names":["avatarStyles","css","BpAvatar","LitElement","hasImage","hasInitials","titleText","html","changedProperties","__decorateClass","property","state","customElement"],"mappings":";;AAEO,MAAMA,IAAeC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACYrB,IAAMC,IAAN,cAAuBC,EAAW;AAAA,EAiEvC,cAAc;AACZ,UAAA,GALO,KAAQ,aAAa,IAM5B,KAAK,MAAM,IACX,KAAK,MAAM,IACX,KAAK,WAAW,IAChB,KAAK,OAAO,MACZ,KAAK,QAAQ,UACb,KAAK,YAAY,IACjB,KAAK,OAAO;AAAA,EACd;AAAA,EAEQ,mBAAmB;AAEzB,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,SAAS;AACP,UAAMC,IAAW,KAAK,IAAI,SAAS,KAAK,CAAC,KAAK,YACxCC,IAAc,KAAK,SAAS,SAAS,GACrCC,IAAY,KAAK,QAAQ,KAAK;AAEpC,WAAOC;AAAA;AAAA,gCAEqB,KAAK,IAAI,YAAY,KAAK,KAAK;AAAA;AAAA,iBAE9CD,CAAS;AAAA;AAAA,UAEhBF,IACEG;AAAA;AAAA;AAAA,uBAGW,KAAK,GAAG;AAAA,uBACR,KAAK,GAAG;AAAA,0BACL,KAAK,gBAAgB;AAAA;AAAA;AAAA,gBAInCF,IACEE;AAAA;AAAA;AAAA;AAAA,8BAIgB,KAAK,OAAO,aAAa;AAAA,mBACpC,KAAK,QAAQ;AAAA,mBAElBA;AAAA;AAAA;AAAA,wBAGU,KAAK,SAAS,OAClB,OACA,KAAK,SAAS,OACZ,OACA,KAAK,IAAI;AAAA;AAAA;AAAA,0BAGL;AAAA,UAChB,KAAK,SACHA;AAAA,sDAC0C,KAAK,MAAM;AAAA;AAAA,4BAErC,KAAK,MAAM;AAAA,wBAE3B,EAAE;AAAA;AAAA;AAAA,EAGZ;AAAA,EAEA,QAAQC,GAAyC;AAE/C,IAAIA,EAAkB,IAAI,KAAK,MAC7B,KAAK,aAAa;AAAA,EAEtB;AACF;AA1IaN,EA+DJ,SAAS,CAACF,CAAY;AAzDsBS,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAN9BR,EAMwC,WAAA,OAAA,CAAA;AAOAO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAb9BR,EAawC,WAAA,OAAA,CAAA;AAOAO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GApB9BR,EAoBwC,WAAA,YAAA,CAAA;AAOAO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA3B9BR,EA2BwC,WAAA,QAAA,CAAA;AAOAO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAlC9BR,EAkCwC,WAAA,SAAA,CAAA;AAOAO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAzC9BR,EAyCwC,WAAA,UAAA,CAAA;AAOCO,EAAA;AAAA,EAAnDC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAhD/BR,EAgDyC,WAAA,aAAA,CAAA;AAOhBO,EAAA;AAAA,EAAnCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAvDfR,EAuDyB,WAAA,QAAA,CAAA;AAMnBO,EAAA;AAAA,EAAhBE,EAAA;AAAM,GA7DIT,EA6DM,WAAA,cAAA,CAAA;AA7DNA,IAANO,EAAA;AAAA,EADNG,EAAc,WAAW;AAAA,GACbV,CAAA;"}
@@ -0,0 +1,144 @@
1
+ import { css as c, LitElement as g, html as d } from "lit";
2
+ import { property as n, customElement as l } from "lit/decorators.js";
3
+ import { classMap as v } from "lit/directives/class-map.js";
4
+ const h = c`
5
+ /* Base styles */
6
+ :host {
7
+ display: inline-block;
8
+ }
9
+
10
+ .badge {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ font-family: var(--bp-font-family);
15
+ font-weight: var(--bp-font-weight-medium);
16
+ line-height: 1;
17
+ border-radius: var(--bp-border-radius-full);
18
+ white-space: nowrap;
19
+ transition:
20
+ background-color var(--bp-transition-fast),
21
+ color var(--bp-transition-fast);
22
+ }
23
+
24
+ /* Variants */
25
+ .badge--primary {
26
+ background-color: var(--bp-color-primary);
27
+ color: var(--bp-color-text-inverse);
28
+ }
29
+
30
+ .badge--success {
31
+ background-color: var(--bp-color-success);
32
+ color: var(--bp-color-text-inverse);
33
+ }
34
+
35
+ .badge--error {
36
+ background-color: var(--bp-color-error);
37
+ color: var(--bp-color-text-inverse);
38
+ }
39
+
40
+ .badge--warning {
41
+ background-color: var(--bp-color-warning);
42
+ color: var(--bp-color-text-inverse);
43
+ }
44
+
45
+ .badge--info {
46
+ background-color: var(--bp-color-info);
47
+ color: var(--bp-color-text-inverse);
48
+ }
49
+
50
+ .badge--neutral {
51
+ background-color: var(--bp-color-border-strong);
52
+ color: var(--bp-color-text);
53
+ }
54
+
55
+ /* Sizes */
56
+ .badge--sm {
57
+ padding: var(--bp-spacing-xs) var(--bp-spacing-xs);
58
+ font-size: var(--bp-font-size-xs);
59
+ min-width: var(--bp-spacing-5);
60
+ height: var(--bp-spacing-5);
61
+ }
62
+
63
+ .badge--md {
64
+ padding: var(--bp-spacing-xs) var(--bp-spacing-sm);
65
+ font-size: var(--bp-font-size-sm);
66
+ min-width: var(--bp-spacing-6);
67
+ height: var(--bp-spacing-6);
68
+ }
69
+
70
+ .badge--lg {
71
+ padding: var(--bp-spacing-sm) var(--bp-spacing-md);
72
+ font-size: var(--bp-font-size-base);
73
+ min-width: var(--bp-spacing-8);
74
+ height: var(--bp-spacing-8);
75
+ }
76
+
77
+ /* Dot variant */
78
+ .badge--dot {
79
+ padding: 0;
80
+ border-radius: var(--bp-border-radius-full);
81
+ }
82
+
83
+ .badge--dot.badge--sm {
84
+ width: var(--bp-spacing-2);
85
+ height: var(--bp-spacing-2);
86
+ min-width: var(--bp-spacing-2);
87
+ }
88
+
89
+ .badge--dot.badge--md {
90
+ width: var(--bp-spacing-3);
91
+ height: var(--bp-spacing-3);
92
+ min-width: var(--bp-spacing-3);
93
+ }
94
+
95
+ .badge--dot.badge--lg {
96
+ width: var(--bp-spacing-4);
97
+ height: var(--bp-spacing-4);
98
+ min-width: var(--bp-spacing-4);
99
+ }
100
+ `;
101
+ var m = Object.defineProperty, f = Object.getOwnPropertyDescriptor, o = (b, e, i, t) => {
102
+ for (var r = t > 1 ? void 0 : t ? f(e, i) : e, s = b.length - 1, p; s >= 0; s--)
103
+ (p = b[s]) && (r = (t ? p(e, i, r) : p(r)) || r);
104
+ return t && r && m(e, i, r), r;
105
+ };
106
+ let a = class extends g {
107
+ constructor() {
108
+ super(), this.variant = "primary", this.size = "md", this.dot = !1;
109
+ }
110
+ render() {
111
+ return d`
112
+ <span
113
+ class=${v({
114
+ badge: !0,
115
+ [`badge--${this.variant}`]: !0,
116
+ [`badge--${this.size}`]: !0,
117
+ "badge--dot": this.dot
118
+ })}
119
+ part="badge"
120
+ role="status"
121
+ aria-live="polite"
122
+ >
123
+ <slot></slot>
124
+ </span>
125
+ `;
126
+ }
127
+ };
128
+ a.styles = [h];
129
+ o([
130
+ n({ type: String, reflect: !0 })
131
+ ], a.prototype, "variant", 2);
132
+ o([
133
+ n({ type: String, reflect: !0 })
134
+ ], a.prototype, "size", 2);
135
+ o([
136
+ n({ type: Boolean, reflect: !0 })
137
+ ], a.prototype, "dot", 2);
138
+ a = o([
139
+ l("bp-badge")
140
+ ], a);
141
+ export {
142
+ a as BpBadge
143
+ };
144
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sources":["../../source/components/badge/badge.style.ts","../../source/components/badge/badge.ts"],"sourcesContent":["import { css } from 'lit';\r\n\r\nexport const badgeStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-family: var(--bp-font-family);\r\n font-weight: var(--bp-font-weight-medium);\r\n line-height: 1;\r\n border-radius: var(--bp-border-radius-full);\r\n white-space: nowrap;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast);\r\n }\r\n\r\n /* Variants */\r\n .badge--primary {\r\n background-color: var(--bp-color-primary);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .badge--success {\r\n background-color: var(--bp-color-success);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .badge--error {\r\n background-color: var(--bp-color-error);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .badge--warning {\r\n background-color: var(--bp-color-warning);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .badge--info {\r\n background-color: var(--bp-color-info);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .badge--neutral {\r\n background-color: var(--bp-color-border-strong);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n /* Sizes */\r\n .badge--sm {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-xs);\r\n font-size: var(--bp-font-size-xs);\r\n min-width: var(--bp-spacing-5);\r\n height: var(--bp-spacing-5);\r\n }\r\n\r\n .badge--md {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\r\n font-size: var(--bp-font-size-sm);\r\n min-width: var(--bp-spacing-6);\r\n height: var(--bp-spacing-6);\r\n }\r\n\r\n .badge--lg {\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n font-size: var(--bp-font-size-base);\r\n min-width: var(--bp-spacing-8);\r\n height: var(--bp-spacing-8);\r\n }\r\n\r\n /* Dot variant */\r\n .badge--dot {\r\n padding: 0;\r\n border-radius: var(--bp-border-radius-full);\r\n }\r\n\r\n .badge--dot.badge--sm {\r\n width: var(--bp-spacing-2);\r\n height: var(--bp-spacing-2);\r\n min-width: var(--bp-spacing-2);\r\n }\r\n\r\n .badge--dot.badge--md {\r\n width: var(--bp-spacing-3);\r\n height: var(--bp-spacing-3);\r\n min-width: var(--bp-spacing-3);\r\n }\r\n\r\n .badge--dot.badge--lg {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n min-width: var(--bp-spacing-4);\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { badgeStyles } from './badge.style.js';\r\n\r\n/**\r\n * Badge component for displaying status indicators, counts, and labels.\r\n *\r\n * @element bp-badge\r\n *\r\n * @slot - Default slot for badge content (text or icons)\r\n *\r\n * @csspart badge - The badge container element\r\n *\r\n * @example\r\n * ```html\r\n * <bp-badge>New</bp-badge>\r\n * <bp-badge variant=\"success\">Active</bp-badge>\r\n * <bp-badge variant=\"error\" size=\"sm\">3</bp-badge>\r\n * ```\r\n */\r\n@customElement('bp-badge')\r\nexport class BpBadge extends LitElement {\r\n /**\r\n * Visual variant of the badge\r\n * @type {'primary' | 'success' | 'error' | 'warning' | 'info' | 'neutral'}\r\n * @default 'primary'\r\n */\r\n @property({ type: String, reflect: true }) declare variant:\r\n | 'primary'\r\n | 'success'\r\n | 'error'\r\n | 'warning'\r\n | 'info'\r\n | 'neutral';\r\n\r\n /**\r\n * Size of the badge\r\n * @type {'sm' | 'md' | 'lg'}\r\n * @default 'md'\r\n */\r\n @property({ type: String, reflect: true }) declare size:\r\n | 'sm'\r\n | 'md'\r\n | 'lg';\r\n\r\n /**\r\n * Whether the badge is a dot/pill shape (for count indicators)\r\n * @type {boolean}\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) declare dot: boolean;\r\n\r\n static styles = [badgeStyles];\r\n\r\n constructor() {\r\n super();\r\n this.variant = 'primary';\r\n this.size = 'md';\r\n this.dot = false;\r\n }\r\n\r\n render() {\r\n return html`\r\n <span\r\n class=${classMap({\r\n badge: true,\r\n [`badge--${this.variant}`]: true,\r\n [`badge--${this.size}`]: true,\r\n 'badge--dot': this.dot,\r\n })}\r\n part=\"badge\"\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n >\r\n <slot></slot>\r\n </span>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-badge': BpBadge;\r\n }\r\n}\r\n"],"names":["badgeStyles","css","BpBadge","LitElement","html","classMap","__decorateClass","property","customElement"],"mappings":";;;AAEO,MAAMA,IAAcC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACoBpB,IAAMC,IAAN,cAAsBC,EAAW;AAAA,EAiCtC,cAAc;AACZ,UAAA,GACA,KAAK,UAAU,WACf,KAAK,OAAO,MACZ,KAAK,MAAM;AAAA,EACb;AAAA,EAEA,SAAS;AACP,WAAOC;AAAA;AAAA,gBAEKC,EAAS;AAAA,MACf,OAAO;AAAA,MACP,CAAC,UAAU,KAAK,OAAO,EAAE,GAAG;AAAA,MAC5B,CAAC,UAAU,KAAK,IAAI,EAAE,GAAG;AAAA,MACzB,cAAc,KAAK;AAAA,IAAA,CACpB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQR;AACF;AAzDaH,EA+BJ,SAAS,CAACF,CAAW;AAzBuBM,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAN9BL,EAMwC,WAAA,WAAA,CAAA;AAaAI,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAnB9BL,EAmBwC,WAAA,QAAA,CAAA;AAUCI,EAAA;AAAA,EAAnDC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GA7B/BL,EA6ByC,WAAA,OAAA,CAAA;AA7BzCA,IAANI,EAAA;AAAA,EADNE,EAAc,UAAU;AAAA,GACZN,CAAA;"}