bareframe 0.1.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.
Files changed (228) hide show
  1. package/README.md +197 -0
  2. package/dist/components/accordion.css +107 -0
  3. package/dist/components/accordion.js +92 -0
  4. package/dist/components/action-list.css +30 -0
  5. package/dist/components/action-list.js +31 -0
  6. package/dist/components/alert.css +30 -0
  7. package/dist/components/alert.js +31 -0
  8. package/dist/components/anchor.css +30 -0
  9. package/dist/components/anchor.js +31 -0
  10. package/dist/components/autocomplete.css +30 -0
  11. package/dist/components/autocomplete.js +31 -0
  12. package/dist/components/avatar.css +30 -0
  13. package/dist/components/avatar.js +31 -0
  14. package/dist/components/badge.css +30 -0
  15. package/dist/components/badge.js +31 -0
  16. package/dist/components/banner.css +30 -0
  17. package/dist/components/banner.js +31 -0
  18. package/dist/components/bar-chart.css +30 -0
  19. package/dist/components/bar-chart.js +31 -0
  20. package/dist/components/bottom-navigation.css +30 -0
  21. package/dist/components/bottom-navigation.js +31 -0
  22. package/dist/components/bottom-sheet.css +30 -0
  23. package/dist/components/bottom-sheet.js +31 -0
  24. package/dist/components/breadcrumb.css +30 -0
  25. package/dist/components/breadcrumb.js +31 -0
  26. package/dist/components/button-group.css +30 -0
  27. package/dist/components/button-group.js +31 -0
  28. package/dist/components/button.css +136 -0
  29. package/dist/components/button.js +42 -0
  30. package/dist/components/calendar.css +30 -0
  31. package/dist/components/calendar.js +31 -0
  32. package/dist/components/canvas.css +30 -0
  33. package/dist/components/canvas.js +31 -0
  34. package/dist/components/card.css +30 -0
  35. package/dist/components/card.js +31 -0
  36. package/dist/components/carousel.css +30 -0
  37. package/dist/components/carousel.js +31 -0
  38. package/dist/components/chart.css +30 -0
  39. package/dist/components/chart.js +31 -0
  40. package/dist/components/checkbox.css +30 -0
  41. package/dist/components/checkbox.js +31 -0
  42. package/dist/components/chip.css +30 -0
  43. package/dist/components/chip.js +31 -0
  44. package/dist/components/code-block.css +30 -0
  45. package/dist/components/code-block.js +31 -0
  46. package/dist/components/color-picker.css +30 -0
  47. package/dist/components/color-picker.js +31 -0
  48. package/dist/components/combobox.css +30 -0
  49. package/dist/components/combobox.js +31 -0
  50. package/dist/components/command-palette.css +30 -0
  51. package/dist/components/command-palette.js +31 -0
  52. package/dist/components/context-menu.css +30 -0
  53. package/dist/components/context-menu.js +31 -0
  54. package/dist/components/countdown.css +30 -0
  55. package/dist/components/countdown.js +31 -0
  56. package/dist/components/data-grid.css +30 -0
  57. package/dist/components/data-grid.js +31 -0
  58. package/dist/components/date-picker.css +30 -0
  59. package/dist/components/date-picker.js +31 -0
  60. package/dist/components/date-range-picker.css +30 -0
  61. package/dist/components/date-range-picker.js +31 -0
  62. package/dist/components/dialog.css +30 -0
  63. package/dist/components/dialog.js +31 -0
  64. package/dist/components/divider.css +30 -0
  65. package/dist/components/divider.js +31 -0
  66. package/dist/components/donut-chart.css +30 -0
  67. package/dist/components/donut-chart.js +31 -0
  68. package/dist/components/drawer.css +30 -0
  69. package/dist/components/drawer.js +31 -0
  70. package/dist/components/dropdown.css +30 -0
  71. package/dist/components/dropdown.js +31 -0
  72. package/dist/components/empty-state.css +30 -0
  73. package/dist/components/empty-state.js +31 -0
  74. package/dist/components/error-summary.css +30 -0
  75. package/dist/components/error-summary.js +31 -0
  76. package/dist/components/expanded-panel.css +30 -0
  77. package/dist/components/expanded-panel.js +31 -0
  78. package/dist/components/fab.css +30 -0
  79. package/dist/components/fab.js +31 -0
  80. package/dist/components/file-upload.css +30 -0
  81. package/dist/components/file-upload.js +31 -0
  82. package/dist/components/filter-bar.css +30 -0
  83. package/dist/components/filter-bar.js +31 -0
  84. package/dist/components/footer.css +30 -0
  85. package/dist/components/footer.js +31 -0
  86. package/dist/components/form-field.css +30 -0
  87. package/dist/components/form-field.js +31 -0
  88. package/dist/components/gantt-chart.css +30 -0
  89. package/dist/components/gantt-chart.js +31 -0
  90. package/dist/components/gauge.css +30 -0
  91. package/dist/components/gauge.js +31 -0
  92. package/dist/components/graph.css +30 -0
  93. package/dist/components/graph.js +31 -0
  94. package/dist/components/grid.css +30 -0
  95. package/dist/components/grid.js +31 -0
  96. package/dist/components/header.css +30 -0
  97. package/dist/components/header.js +31 -0
  98. package/dist/components/heatmap.css +30 -0
  99. package/dist/components/heatmap.js +31 -0
  100. package/dist/components/hero.css +30 -0
  101. package/dist/components/hero.js +31 -0
  102. package/dist/components/icon.css +30 -0
  103. package/dist/components/icon.js +31 -0
  104. package/dist/components/image.css +30 -0
  105. package/dist/components/image.js +31 -0
  106. package/dist/components/input.css +30 -0
  107. package/dist/components/input.js +31 -0
  108. package/dist/components/key-value-list.css +30 -0
  109. package/dist/components/key-value-list.js +31 -0
  110. package/dist/components/line-chart.css +30 -0
  111. package/dist/components/line-chart.js +31 -0
  112. package/dist/components/link.css +30 -0
  113. package/dist/components/link.js +31 -0
  114. package/dist/components/list-item.css +30 -0
  115. package/dist/components/list-item.js +31 -0
  116. package/dist/components/list.css +30 -0
  117. package/dist/components/list.js +31 -0
  118. package/dist/components/loading-indicator.css +30 -0
  119. package/dist/components/loading-indicator.js +31 -0
  120. package/dist/components/map.css +30 -0
  121. package/dist/components/map.js +31 -0
  122. package/dist/components/menu-item.css +30 -0
  123. package/dist/components/menu-item.js +31 -0
  124. package/dist/components/menu.css +30 -0
  125. package/dist/components/menu.js +31 -0
  126. package/dist/components/message.css +30 -0
  127. package/dist/components/message.js +31 -0
  128. package/dist/components/metric-card.css +30 -0
  129. package/dist/components/metric-card.js +31 -0
  130. package/dist/components/modal.css +30 -0
  131. package/dist/components/modal.js +31 -0
  132. package/dist/components/multi-select.css +30 -0
  133. package/dist/components/multi-select.js +31 -0
  134. package/dist/components/nav.css +30 -0
  135. package/dist/components/nav.js +31 -0
  136. package/dist/components/notification.css +30 -0
  137. package/dist/components/notification.js +31 -0
  138. package/dist/components/number-field.css +30 -0
  139. package/dist/components/number-field.js +31 -0
  140. package/dist/components/otp-input.css +30 -0
  141. package/dist/components/otp-input.js +31 -0
  142. package/dist/components/pagination.css +30 -0
  143. package/dist/components/pagination.js +31 -0
  144. package/dist/components/pie-chart.css +30 -0
  145. package/dist/components/pie-chart.js +31 -0
  146. package/dist/components/popover.css +30 -0
  147. package/dist/components/popover.js +31 -0
  148. package/dist/components/progress-bar.css +30 -0
  149. package/dist/components/progress-bar.js +31 -0
  150. package/dist/components/progress-circle.css +30 -0
  151. package/dist/components/progress-circle.js +31 -0
  152. package/dist/components/quick-actions.css +30 -0
  153. package/dist/components/quick-actions.js +31 -0
  154. package/dist/components/radio-group.css +30 -0
  155. package/dist/components/radio-group.js +31 -0
  156. package/dist/components/radio.css +30 -0
  157. package/dist/components/radio.js +31 -0
  158. package/dist/components/range-slider.css +30 -0
  159. package/dist/components/range-slider.js +31 -0
  160. package/dist/components/rating.css +30 -0
  161. package/dist/components/rating.js +31 -0
  162. package/dist/components/search.css +30 -0
  163. package/dist/components/search.js +31 -0
  164. package/dist/components/segmented-control.css +30 -0
  165. package/dist/components/segmented-control.js +31 -0
  166. package/dist/components/select.css +30 -0
  167. package/dist/components/select.js +31 -0
  168. package/dist/components/sheet.css +30 -0
  169. package/dist/components/sheet.js +31 -0
  170. package/dist/components/skeleton.css +30 -0
  171. package/dist/components/skeleton.js +31 -0
  172. package/dist/components/slider.css +30 -0
  173. package/dist/components/slider.js +31 -0
  174. package/dist/components/snackbar.css +30 -0
  175. package/dist/components/snackbar.js +31 -0
  176. package/dist/components/sparkline.css +30 -0
  177. package/dist/components/sparkline.js +31 -0
  178. package/dist/components/split-button.css +30 -0
  179. package/dist/components/split-button.js +31 -0
  180. package/dist/components/splitter.css +30 -0
  181. package/dist/components/splitter.js +31 -0
  182. package/dist/components/stack.css +30 -0
  183. package/dist/components/stack.js +31 -0
  184. package/dist/components/stepper.css +30 -0
  185. package/dist/components/stepper.js +31 -0
  186. package/dist/components/switch.css +30 -0
  187. package/dist/components/switch.js +31 -0
  188. package/dist/components/tab-group.css +30 -0
  189. package/dist/components/tab-group.js +31 -0
  190. package/dist/components/tab.css +30 -0
  191. package/dist/components/tab.js +31 -0
  192. package/dist/components/table.css +30 -0
  193. package/dist/components/table.js +31 -0
  194. package/dist/components/tag.css +30 -0
  195. package/dist/components/tag.js +31 -0
  196. package/dist/components/textarea.css +30 -0
  197. package/dist/components/textarea.js +31 -0
  198. package/dist/components/textfield.css +30 -0
  199. package/dist/components/textfield.js +31 -0
  200. package/dist/components/timeline.css +30 -0
  201. package/dist/components/timeline.js +31 -0
  202. package/dist/components/toast.css +30 -0
  203. package/dist/components/toast.js +31 -0
  204. package/dist/components/toggle.css +30 -0
  205. package/dist/components/toggle.js +31 -0
  206. package/dist/components/toolbar.css +30 -0
  207. package/dist/components/toolbar.js +31 -0
  208. package/dist/components/tooltip.css +30 -0
  209. package/dist/components/tooltip.js +31 -0
  210. package/dist/components/tree-view.css +30 -0
  211. package/dist/components/tree-view.js +31 -0
  212. package/dist/components/treemap.css +30 -0
  213. package/dist/components/treemap.js +31 -0
  214. package/dist/components/upload-dropzone.css +30 -0
  215. package/dist/components/upload-dropzone.js +31 -0
  216. package/dist/components/video-player.css +30 -0
  217. package/dist/components/video-player.js +31 -0
  218. package/dist/components/virtual-list.css +30 -0
  219. package/dist/components/virtual-list.js +31 -0
  220. package/dist/components/wizard.css +30 -0
  221. package/dist/components/wizard.js +31 -0
  222. package/dist/index.js +110 -0
  223. package/dist/manifest.json +116 -0
  224. package/dist/themes/dark.css +368 -0
  225. package/dist/themes/light.css +368 -0
  226. package/dist/themes/sprint.css +368 -0
  227. package/dist/themes/system.css +398 -0
  228. package/package.json +32 -0
@@ -0,0 +1,31 @@
1
+ class BfAvatar extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+
7
+ connectedCallback() {
8
+ if (this._initialized) {
9
+ return;
10
+ }
11
+ this._initialized = true;
12
+
13
+ const cssUrl = new URL('./avatar.css', import.meta.url);
14
+ const link = document.createElement('link');
15
+ link.rel = 'stylesheet';
16
+ link.href = cssUrl.href;
17
+
18
+ const root = document.createElement('div');
19
+ root.className = 'root';
20
+ root.setAttribute('part', 'root');
21
+ root.innerHTML = '<slot></slot>';
22
+
23
+ if (!this.innerHTML.trim()) {
24
+ root.textContent = 'avatar';
25
+ }
26
+
27
+ this.shadowRoot.replaceChildren(link, root);
28
+ }
29
+ }
30
+
31
+ customElements.define('bf-avatar', BfAvatar);
@@ -0,0 +1,30 @@
1
+ :host {
2
+ --bf-badge-font: var(--bf-theme-font-family, inherit);
3
+ --bf-badge-radius: var(--bf-theme-radius-md, 8px);
4
+ --bf-badge-border-width: var(--bf-theme-border-width, 1px);
5
+ --bf-badge-border-style: var(--bf-theme-border-style, solid);
6
+ --bf-badge-border-color: var(--bf-theme-badge-border-color, var(--bf-theme-border-1, #cbd5e1));
7
+ --bf-badge-bg: var(--bf-theme-badge-bg, var(--bf-theme-surface-1, #ffffff));
8
+ --bf-badge-color: var(--bf-theme-badge-color, var(--bf-theme-text-1, #0f172a));
9
+ --bf-badge-padding-y: var(--bf-theme-space-2, 0.6rem);
10
+ --bf-badge-padding-x: var(--bf-theme-space-3, 0.9rem);
11
+ --bf-badge-transition:
12
+ var(--bf-theme-transition-bg, background-color 120ms ease),
13
+ var(--bf-theme-transition-color, color 120ms ease),
14
+ var(--bf-theme-transition-border, border-color 120ms ease);
15
+
16
+ display: block;
17
+ font: var(--bf-badge-font);
18
+ color: var(--bf-badge-color);
19
+ }
20
+
21
+ .root {
22
+ background: var(--bf-badge-bg);
23
+ color: var(--bf-badge-color);
24
+ border-width: var(--bf-badge-border-width);
25
+ border-style: var(--bf-badge-border-style);
26
+ border-color: var(--bf-badge-border-color);
27
+ border-radius: var(--bf-badge-radius);
28
+ padding: var(--bf-badge-padding-y) var(--bf-badge-padding-x);
29
+ transition: var(--bf-badge-transition);
30
+ }
@@ -0,0 +1,31 @@
1
+ class BfBadge extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+
7
+ connectedCallback() {
8
+ if (this._initialized) {
9
+ return;
10
+ }
11
+ this._initialized = true;
12
+
13
+ const cssUrl = new URL('./badge.css', import.meta.url);
14
+ const link = document.createElement('link');
15
+ link.rel = 'stylesheet';
16
+ link.href = cssUrl.href;
17
+
18
+ const root = document.createElement('div');
19
+ root.className = 'root';
20
+ root.setAttribute('part', 'root');
21
+ root.innerHTML = '<slot></slot>';
22
+
23
+ if (!this.innerHTML.trim()) {
24
+ root.textContent = 'badge';
25
+ }
26
+
27
+ this.shadowRoot.replaceChildren(link, root);
28
+ }
29
+ }
30
+
31
+ customElements.define('bf-badge', BfBadge);
@@ -0,0 +1,30 @@
1
+ :host {
2
+ --bf-banner-font: var(--bf-theme-font-family, inherit);
3
+ --bf-banner-radius: var(--bf-theme-radius-md, 8px);
4
+ --bf-banner-border-width: var(--bf-theme-border-width, 1px);
5
+ --bf-banner-border-style: var(--bf-theme-border-style, solid);
6
+ --bf-banner-border-color: var(--bf-theme-banner-border-color, var(--bf-theme-border-1, #cbd5e1));
7
+ --bf-banner-bg: var(--bf-theme-banner-bg, var(--bf-theme-surface-1, #ffffff));
8
+ --bf-banner-color: var(--bf-theme-banner-color, var(--bf-theme-text-1, #0f172a));
9
+ --bf-banner-padding-y: var(--bf-theme-space-2, 0.6rem);
10
+ --bf-banner-padding-x: var(--bf-theme-space-3, 0.9rem);
11
+ --bf-banner-transition:
12
+ var(--bf-theme-transition-bg, background-color 120ms ease),
13
+ var(--bf-theme-transition-color, color 120ms ease),
14
+ var(--bf-theme-transition-border, border-color 120ms ease);
15
+
16
+ display: block;
17
+ font: var(--bf-banner-font);
18
+ color: var(--bf-banner-color);
19
+ }
20
+
21
+ .root {
22
+ background: var(--bf-banner-bg);
23
+ color: var(--bf-banner-color);
24
+ border-width: var(--bf-banner-border-width);
25
+ border-style: var(--bf-banner-border-style);
26
+ border-color: var(--bf-banner-border-color);
27
+ border-radius: var(--bf-banner-radius);
28
+ padding: var(--bf-banner-padding-y) var(--bf-banner-padding-x);
29
+ transition: var(--bf-banner-transition);
30
+ }
@@ -0,0 +1,31 @@
1
+ class BfBanner extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+
7
+ connectedCallback() {
8
+ if (this._initialized) {
9
+ return;
10
+ }
11
+ this._initialized = true;
12
+
13
+ const cssUrl = new URL('./banner.css', import.meta.url);
14
+ const link = document.createElement('link');
15
+ link.rel = 'stylesheet';
16
+ link.href = cssUrl.href;
17
+
18
+ const root = document.createElement('div');
19
+ root.className = 'root';
20
+ root.setAttribute('part', 'root');
21
+ root.innerHTML = '<slot></slot>';
22
+
23
+ if (!this.innerHTML.trim()) {
24
+ root.textContent = 'banner';
25
+ }
26
+
27
+ this.shadowRoot.replaceChildren(link, root);
28
+ }
29
+ }
30
+
31
+ customElements.define('bf-banner', BfBanner);
@@ -0,0 +1,30 @@
1
+ :host {
2
+ --bf-bar-chart-font: var(--bf-theme-font-family, inherit);
3
+ --bf-bar-chart-radius: var(--bf-theme-radius-md, 8px);
4
+ --bf-bar-chart-border-width: var(--bf-theme-border-width, 1px);
5
+ --bf-bar-chart-border-style: var(--bf-theme-border-style, solid);
6
+ --bf-bar-chart-border-color: var(--bf-theme-bar-chart-border-color, var(--bf-theme-border-1, #cbd5e1));
7
+ --bf-bar-chart-bg: var(--bf-theme-bar-chart-bg, var(--bf-theme-surface-1, #ffffff));
8
+ --bf-bar-chart-color: var(--bf-theme-bar-chart-color, var(--bf-theme-text-1, #0f172a));
9
+ --bf-bar-chart-padding-y: var(--bf-theme-space-2, 0.6rem);
10
+ --bf-bar-chart-padding-x: var(--bf-theme-space-3, 0.9rem);
11
+ --bf-bar-chart-transition:
12
+ var(--bf-theme-transition-bg, background-color 120ms ease),
13
+ var(--bf-theme-transition-color, color 120ms ease),
14
+ var(--bf-theme-transition-border, border-color 120ms ease);
15
+
16
+ display: block;
17
+ font: var(--bf-bar-chart-font);
18
+ color: var(--bf-bar-chart-color);
19
+ }
20
+
21
+ .root {
22
+ background: var(--bf-bar-chart-bg);
23
+ color: var(--bf-bar-chart-color);
24
+ border-width: var(--bf-bar-chart-border-width);
25
+ border-style: var(--bf-bar-chart-border-style);
26
+ border-color: var(--bf-bar-chart-border-color);
27
+ border-radius: var(--bf-bar-chart-radius);
28
+ padding: var(--bf-bar-chart-padding-y) var(--bf-bar-chart-padding-x);
29
+ transition: var(--bf-bar-chart-transition);
30
+ }
@@ -0,0 +1,31 @@
1
+ class BfBarChart extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+
7
+ connectedCallback() {
8
+ if (this._initialized) {
9
+ return;
10
+ }
11
+ this._initialized = true;
12
+
13
+ const cssUrl = new URL('./bar-chart.css', import.meta.url);
14
+ const link = document.createElement('link');
15
+ link.rel = 'stylesheet';
16
+ link.href = cssUrl.href;
17
+
18
+ const root = document.createElement('div');
19
+ root.className = 'root';
20
+ root.setAttribute('part', 'root');
21
+ root.innerHTML = '<slot></slot>';
22
+
23
+ if (!this.innerHTML.trim()) {
24
+ root.textContent = 'bar chart';
25
+ }
26
+
27
+ this.shadowRoot.replaceChildren(link, root);
28
+ }
29
+ }
30
+
31
+ customElements.define('bf-bar-chart', BfBarChart);
@@ -0,0 +1,30 @@
1
+ :host {
2
+ --bf-bottom-navigation-font: var(--bf-theme-font-family, inherit);
3
+ --bf-bottom-navigation-radius: var(--bf-theme-radius-md, 8px);
4
+ --bf-bottom-navigation-border-width: var(--bf-theme-border-width, 1px);
5
+ --bf-bottom-navigation-border-style: var(--bf-theme-border-style, solid);
6
+ --bf-bottom-navigation-border-color: var(--bf-theme-bottom-navigation-border-color, var(--bf-theme-border-1, #cbd5e1));
7
+ --bf-bottom-navigation-bg: var(--bf-theme-bottom-navigation-bg, var(--bf-theme-surface-1, #ffffff));
8
+ --bf-bottom-navigation-color: var(--bf-theme-bottom-navigation-color, var(--bf-theme-text-1, #0f172a));
9
+ --bf-bottom-navigation-padding-y: var(--bf-theme-space-2, 0.6rem);
10
+ --bf-bottom-navigation-padding-x: var(--bf-theme-space-3, 0.9rem);
11
+ --bf-bottom-navigation-transition:
12
+ var(--bf-theme-transition-bg, background-color 120ms ease),
13
+ var(--bf-theme-transition-color, color 120ms ease),
14
+ var(--bf-theme-transition-border, border-color 120ms ease);
15
+
16
+ display: block;
17
+ font: var(--bf-bottom-navigation-font);
18
+ color: var(--bf-bottom-navigation-color);
19
+ }
20
+
21
+ .root {
22
+ background: var(--bf-bottom-navigation-bg);
23
+ color: var(--bf-bottom-navigation-color);
24
+ border-width: var(--bf-bottom-navigation-border-width);
25
+ border-style: var(--bf-bottom-navigation-border-style);
26
+ border-color: var(--bf-bottom-navigation-border-color);
27
+ border-radius: var(--bf-bottom-navigation-radius);
28
+ padding: var(--bf-bottom-navigation-padding-y) var(--bf-bottom-navigation-padding-x);
29
+ transition: var(--bf-bottom-navigation-transition);
30
+ }
@@ -0,0 +1,31 @@
1
+ class BfBottomNavigation extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+
7
+ connectedCallback() {
8
+ if (this._initialized) {
9
+ return;
10
+ }
11
+ this._initialized = true;
12
+
13
+ const cssUrl = new URL('./bottom-navigation.css', import.meta.url);
14
+ const link = document.createElement('link');
15
+ link.rel = 'stylesheet';
16
+ link.href = cssUrl.href;
17
+
18
+ const root = document.createElement('div');
19
+ root.className = 'root';
20
+ root.setAttribute('part', 'root');
21
+ root.innerHTML = '<slot></slot>';
22
+
23
+ if (!this.innerHTML.trim()) {
24
+ root.textContent = 'bottom navigation';
25
+ }
26
+
27
+ this.shadowRoot.replaceChildren(link, root);
28
+ }
29
+ }
30
+
31
+ customElements.define('bf-bottom-navigation', BfBottomNavigation);
@@ -0,0 +1,30 @@
1
+ :host {
2
+ --bf-bottom-sheet-font: var(--bf-theme-font-family, inherit);
3
+ --bf-bottom-sheet-radius: var(--bf-theme-radius-md, 8px);
4
+ --bf-bottom-sheet-border-width: var(--bf-theme-border-width, 1px);
5
+ --bf-bottom-sheet-border-style: var(--bf-theme-border-style, solid);
6
+ --bf-bottom-sheet-border-color: var(--bf-theme-bottom-sheet-border-color, var(--bf-theme-border-1, #cbd5e1));
7
+ --bf-bottom-sheet-bg: var(--bf-theme-bottom-sheet-bg, var(--bf-theme-surface-1, #ffffff));
8
+ --bf-bottom-sheet-color: var(--bf-theme-bottom-sheet-color, var(--bf-theme-text-1, #0f172a));
9
+ --bf-bottom-sheet-padding-y: var(--bf-theme-space-2, 0.6rem);
10
+ --bf-bottom-sheet-padding-x: var(--bf-theme-space-3, 0.9rem);
11
+ --bf-bottom-sheet-transition:
12
+ var(--bf-theme-transition-bg, background-color 120ms ease),
13
+ var(--bf-theme-transition-color, color 120ms ease),
14
+ var(--bf-theme-transition-border, border-color 120ms ease);
15
+
16
+ display: block;
17
+ font: var(--bf-bottom-sheet-font);
18
+ color: var(--bf-bottom-sheet-color);
19
+ }
20
+
21
+ .root {
22
+ background: var(--bf-bottom-sheet-bg);
23
+ color: var(--bf-bottom-sheet-color);
24
+ border-width: var(--bf-bottom-sheet-border-width);
25
+ border-style: var(--bf-bottom-sheet-border-style);
26
+ border-color: var(--bf-bottom-sheet-border-color);
27
+ border-radius: var(--bf-bottom-sheet-radius);
28
+ padding: var(--bf-bottom-sheet-padding-y) var(--bf-bottom-sheet-padding-x);
29
+ transition: var(--bf-bottom-sheet-transition);
30
+ }
@@ -0,0 +1,31 @@
1
+ class BfBottomSheet extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+
7
+ connectedCallback() {
8
+ if (this._initialized) {
9
+ return;
10
+ }
11
+ this._initialized = true;
12
+
13
+ const cssUrl = new URL('./bottom-sheet.css', import.meta.url);
14
+ const link = document.createElement('link');
15
+ link.rel = 'stylesheet';
16
+ link.href = cssUrl.href;
17
+
18
+ const root = document.createElement('div');
19
+ root.className = 'root';
20
+ root.setAttribute('part', 'root');
21
+ root.innerHTML = '<slot></slot>';
22
+
23
+ if (!this.innerHTML.trim()) {
24
+ root.textContent = 'bottom sheet';
25
+ }
26
+
27
+ this.shadowRoot.replaceChildren(link, root);
28
+ }
29
+ }
30
+
31
+ customElements.define('bf-bottom-sheet', BfBottomSheet);
@@ -0,0 +1,30 @@
1
+ :host {
2
+ --bf-breadcrumb-font: var(--bf-theme-font-family, inherit);
3
+ --bf-breadcrumb-radius: var(--bf-theme-radius-md, 8px);
4
+ --bf-breadcrumb-border-width: var(--bf-theme-border-width, 1px);
5
+ --bf-breadcrumb-border-style: var(--bf-theme-border-style, solid);
6
+ --bf-breadcrumb-border-color: var(--bf-theme-breadcrumb-border-color, var(--bf-theme-border-1, #cbd5e1));
7
+ --bf-breadcrumb-bg: var(--bf-theme-breadcrumb-bg, var(--bf-theme-surface-1, #ffffff));
8
+ --bf-breadcrumb-color: var(--bf-theme-breadcrumb-color, var(--bf-theme-text-1, #0f172a));
9
+ --bf-breadcrumb-padding-y: var(--bf-theme-space-2, 0.6rem);
10
+ --bf-breadcrumb-padding-x: var(--bf-theme-space-3, 0.9rem);
11
+ --bf-breadcrumb-transition:
12
+ var(--bf-theme-transition-bg, background-color 120ms ease),
13
+ var(--bf-theme-transition-color, color 120ms ease),
14
+ var(--bf-theme-transition-border, border-color 120ms ease);
15
+
16
+ display: block;
17
+ font: var(--bf-breadcrumb-font);
18
+ color: var(--bf-breadcrumb-color);
19
+ }
20
+
21
+ .root {
22
+ background: var(--bf-breadcrumb-bg);
23
+ color: var(--bf-breadcrumb-color);
24
+ border-width: var(--bf-breadcrumb-border-width);
25
+ border-style: var(--bf-breadcrumb-border-style);
26
+ border-color: var(--bf-breadcrumb-border-color);
27
+ border-radius: var(--bf-breadcrumb-radius);
28
+ padding: var(--bf-breadcrumb-padding-y) var(--bf-breadcrumb-padding-x);
29
+ transition: var(--bf-breadcrumb-transition);
30
+ }
@@ -0,0 +1,31 @@
1
+ class BfBreadcrumb extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+
7
+ connectedCallback() {
8
+ if (this._initialized) {
9
+ return;
10
+ }
11
+ this._initialized = true;
12
+
13
+ const cssUrl = new URL('./breadcrumb.css', import.meta.url);
14
+ const link = document.createElement('link');
15
+ link.rel = 'stylesheet';
16
+ link.href = cssUrl.href;
17
+
18
+ const root = document.createElement('div');
19
+ root.className = 'root';
20
+ root.setAttribute('part', 'root');
21
+ root.innerHTML = '<slot></slot>';
22
+
23
+ if (!this.innerHTML.trim()) {
24
+ root.textContent = 'breadcrumb';
25
+ }
26
+
27
+ this.shadowRoot.replaceChildren(link, root);
28
+ }
29
+ }
30
+
31
+ customElements.define('bf-breadcrumb', BfBreadcrumb);
@@ -0,0 +1,30 @@
1
+ :host {
2
+ --bf-button-group-font: var(--bf-theme-font-family, inherit);
3
+ --bf-button-group-radius: var(--bf-theme-radius-md, 8px);
4
+ --bf-button-group-border-width: var(--bf-theme-border-width, 1px);
5
+ --bf-button-group-border-style: var(--bf-theme-border-style, solid);
6
+ --bf-button-group-border-color: var(--bf-theme-button-group-border-color, var(--bf-theme-border-1, #cbd5e1));
7
+ --bf-button-group-bg: var(--bf-theme-button-group-bg, var(--bf-theme-surface-1, #ffffff));
8
+ --bf-button-group-color: var(--bf-theme-button-group-color, var(--bf-theme-text-1, #0f172a));
9
+ --bf-button-group-padding-y: var(--bf-theme-space-2, 0.6rem);
10
+ --bf-button-group-padding-x: var(--bf-theme-space-3, 0.9rem);
11
+ --bf-button-group-transition:
12
+ var(--bf-theme-transition-bg, background-color 120ms ease),
13
+ var(--bf-theme-transition-color, color 120ms ease),
14
+ var(--bf-theme-transition-border, border-color 120ms ease);
15
+
16
+ display: block;
17
+ font: var(--bf-button-group-font);
18
+ color: var(--bf-button-group-color);
19
+ }
20
+
21
+ .root {
22
+ background: var(--bf-button-group-bg);
23
+ color: var(--bf-button-group-color);
24
+ border-width: var(--bf-button-group-border-width);
25
+ border-style: var(--bf-button-group-border-style);
26
+ border-color: var(--bf-button-group-border-color);
27
+ border-radius: var(--bf-button-group-radius);
28
+ padding: var(--bf-button-group-padding-y) var(--bf-button-group-padding-x);
29
+ transition: var(--bf-button-group-transition);
30
+ }
@@ -0,0 +1,31 @@
1
+ class BfButtonGroup extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+
7
+ connectedCallback() {
8
+ if (this._initialized) {
9
+ return;
10
+ }
11
+ this._initialized = true;
12
+
13
+ const cssUrl = new URL('./button-group.css', import.meta.url);
14
+ const link = document.createElement('link');
15
+ link.rel = 'stylesheet';
16
+ link.href = cssUrl.href;
17
+
18
+ const root = document.createElement('div');
19
+ root.className = 'root';
20
+ root.setAttribute('part', 'root');
21
+ root.innerHTML = '<slot></slot>';
22
+
23
+ if (!this.innerHTML.trim()) {
24
+ root.textContent = 'button group';
25
+ }
26
+
27
+ this.shadowRoot.replaceChildren(link, root);
28
+ }
29
+ }
30
+
31
+ customElements.define('bf-button-group', BfButtonGroup);
@@ -0,0 +1,136 @@
1
+ :host {
2
+ --bf-button-font: var(--bf-theme-font-family, inherit);
3
+ --bf-button-border-width: var(--bf-theme-border-width, 1px);
4
+ --bf-button-border-style: var(--bf-theme-border-style, solid);
5
+ --bf-button-border-radius: var(--bf-theme-radius-md, 6px);
6
+ --bf-button-padding-y: var(--bf-theme-space-2, 0.5rem);
7
+ --bf-button-padding-x: var(--bf-theme-space-3, 0.9rem);
8
+ --bf-button-cursor: var(--bf-theme-cursor-button, pointer);
9
+ --bf-button-opacity-hover: var(--bf-theme-opacity-hover, 0.95);
10
+ --bf-button-active-translate-y: var(--bf-theme-active-translate-y, 1px);
11
+ --bf-button-focus-outline-width: var(--bf-theme-focus-ring-width, 2px);
12
+ --bf-button-focus-outline-style: var(--bf-theme-focus-ring-style, solid);
13
+ --bf-button-focus-outline-color: var(--bf-theme-focus-ring-color, #93c5fd);
14
+ --bf-button-focus-outline-offset: var(--bf-theme-focus-ring-offset, 2px);
15
+ --bf-button-transition:
16
+ var(--bf-theme-transition-transform, transform 120ms ease),
17
+ var(--bf-theme-transition-opacity, opacity 120ms ease),
18
+ var(--bf-theme-transition-bg, background-color 120ms ease),
19
+ var(--bf-theme-transition-color, color 120ms ease),
20
+ var(--bf-theme-transition-border, border-color 120ms ease);
21
+
22
+ --bf-button-primary-bg: var(--bf-theme-button-primary-bg, #1d4ed8);
23
+ --bf-button-primary-color: var(--bf-theme-button-primary-color, #ffffff);
24
+ --bf-button-primary-border-color: var(
25
+ --bf-theme-button-primary-border-color,
26
+ transparent
27
+ );
28
+ --bf-button-primary-hover-bg: var(--bf-button-primary-bg);
29
+ --bf-button-primary-hover-color: var(--bf-button-primary-color);
30
+ --bf-button-primary-hover-border-color: var(--bf-button-primary-border-color);
31
+ --bf-button-primary-active-bg: var(--bf-button-primary-bg);
32
+ --bf-button-primary-active-color: var(--bf-button-primary-color);
33
+ --bf-button-primary-active-border-color: var(
34
+ --bf-button-primary-border-color
35
+ );
36
+
37
+ --bf-button-secondary-bg: var(--bf-theme-button-secondary-bg, #ffffff);
38
+ --bf-button-secondary-color: var(--bf-theme-button-secondary-color, #1d4ed8);
39
+ --bf-button-secondary-border-color: var(
40
+ --bf-theme-button-secondary-border-color,
41
+ #1d4ed8
42
+ );
43
+ --bf-button-secondary-hover-bg: var(--bf-button-secondary-bg);
44
+ --bf-button-secondary-hover-color: var(--bf-button-secondary-color);
45
+ --bf-button-secondary-hover-border-color: var(
46
+ --bf-button-secondary-border-color
47
+ );
48
+ --bf-button-secondary-active-bg: var(--bf-button-secondary-bg);
49
+ --bf-button-secondary-active-color: var(--bf-button-secondary-color);
50
+ --bf-button-secondary-active-border-color: var(
51
+ --bf-button-secondary-border-color
52
+ );
53
+
54
+ display: inline-block;
55
+ }
56
+
57
+ button {
58
+ --_bf-button-bg: var(--bf-button-primary-bg);
59
+ --_bf-button-color: var(--bf-button-primary-color);
60
+ --_bf-button-border-color: var(--bf-button-primary-border-color);
61
+ --_bf-button-hover-bg: var(--bf-button-primary-hover-bg);
62
+ --_bf-button-hover-color: var(--bf-button-primary-hover-color);
63
+ --_bf-button-hover-border-color: var(--bf-button-primary-hover-border-color);
64
+ --_bf-button-active-bg: var(--bf-button-primary-active-bg);
65
+ --_bf-button-active-color: var(--bf-button-primary-active-color);
66
+ --_bf-button-active-border-color: var(
67
+ --bf-button-primary-active-border-color
68
+ );
69
+
70
+ font: var(--bf-button-font);
71
+ border-width: var(--bf-button-border-width);
72
+ border-style: var(--bf-button-border-style);
73
+ border-color: var(--_bf-button-border-color);
74
+ border-radius: var(--bf-button-border-radius);
75
+ cursor: var(--bf-button-cursor);
76
+ padding: var(--bf-button-padding-y) var(--bf-button-padding-x);
77
+ transition: var(--bf-button-transition);
78
+ background: var(--_bf-button-bg);
79
+ color: var(--_bf-button-color);
80
+ }
81
+
82
+ button:hover {
83
+ opacity: var(--bf-button-opacity-hover);
84
+ background: var(--_bf-button-hover-bg);
85
+ color: var(--_bf-button-hover-color);
86
+ border-color: var(--_bf-button-hover-border-color);
87
+ }
88
+
89
+ button:active {
90
+ transform: translateY(var(--bf-button-active-translate-y));
91
+ background: var(--_bf-button-active-bg);
92
+ color: var(--_bf-button-active-color);
93
+ border-color: var(--_bf-button-active-border-color);
94
+ }
95
+
96
+ button:focus-visible {
97
+ outline-width: var(--bf-button-focus-outline-width);
98
+ outline-style: var(--bf-button-focus-outline-style);
99
+ outline-color: var(--bf-button-focus-outline-color);
100
+ outline-offset: var(--bf-button-focus-outline-offset);
101
+ }
102
+
103
+ button:disabled {
104
+ opacity: var(--bf-button-disabled-opacity, 0.55);
105
+ cursor: var(--bf-button-disabled-cursor, not-allowed);
106
+ }
107
+
108
+ button.primary {
109
+ --_bf-button-bg: var(--bf-button-primary-bg);
110
+ --_bf-button-color: var(--bf-button-primary-color);
111
+ --_bf-button-border-color: var(--bf-button-primary-border-color);
112
+ --_bf-button-hover-bg: var(--bf-button-primary-hover-bg);
113
+ --_bf-button-hover-color: var(--bf-button-primary-hover-color);
114
+ --_bf-button-hover-border-color: var(--bf-button-primary-hover-border-color);
115
+ --_bf-button-active-bg: var(--bf-button-primary-active-bg);
116
+ --_bf-button-active-color: var(--bf-button-primary-active-color);
117
+ --_bf-button-active-border-color: var(
118
+ --bf-button-primary-active-border-color
119
+ );
120
+ }
121
+
122
+ button.secondary {
123
+ --_bf-button-bg: var(--bf-button-secondary-bg);
124
+ --_bf-button-color: var(--bf-button-secondary-color);
125
+ --_bf-button-border-color: var(--bf-button-secondary-border-color);
126
+ --_bf-button-hover-bg: var(--bf-button-secondary-hover-bg);
127
+ --_bf-button-hover-color: var(--bf-button-secondary-hover-color);
128
+ --_bf-button-hover-border-color: var(
129
+ --bf-button-secondary-hover-border-color
130
+ );
131
+ --_bf-button-active-bg: var(--bf-button-secondary-active-bg);
132
+ --_bf-button-active-color: var(--bf-button-secondary-active-color);
133
+ --_bf-button-active-border-color: var(
134
+ --bf-button-secondary-active-border-color
135
+ );
136
+ }
@@ -0,0 +1,42 @@
1
+ class BfButton extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+
7
+ connectedCallback() {
8
+ const label = this.getAttribute('label') || 'Button';
9
+ const variant = this.getAttribute('variant') || 'primary';
10
+ const cssUrl = new URL('./button.css', import.meta.url);
11
+
12
+ this.shadowRoot.innerHTML = '';
13
+
14
+ const link = document.createElement('link');
15
+ link.rel = 'stylesheet';
16
+ link.href = cssUrl.href;
17
+
18
+ const button = document.createElement('button');
19
+ button.className = variant;
20
+ button.type = 'button';
21
+ button.textContent = label;
22
+ button.append(document.createElement('slot'));
23
+
24
+ this.shadowRoot.append(link, button);
25
+
26
+ button.addEventListener('click', () => {
27
+ this.dispatchEvent(
28
+ new CustomEvent('bf-click', {
29
+ bubbles: true,
30
+ composed: true,
31
+ detail: {
32
+ label,
33
+ variant,
34
+ at: new Date().toISOString(),
35
+ },
36
+ }),
37
+ );
38
+ });
39
+ }
40
+ }
41
+
42
+ customElements.define('bf-button', BfButton);