globuswebcomponents 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/cjs/gb-btn_3.cjs.entry.js +43 -41
  2. package/dist/cjs/gb-btn_3.cjs.entry.js.map +1 -1
  3. package/dist/collection/components/gb-btn/gb-btn.js +21 -20
  4. package/dist/collection/components/gb-btn/gb-btn.js.map +1 -1
  5. package/dist/collection/components/gb-button/gb-button.js +22 -21
  6. package/dist/collection/components/gb-button/gb-button.js.map +1 -1
  7. package/dist/collection/components/gb-button/gb-button.tsx +91 -0
  8. package/dist/collection/components/gb-button/readme.md +40 -0
  9. package/dist/collection/components/test-tooltip/test-tooltip.js +2 -2
  10. package/dist/collection/components/test-tooltip/test-tooltip.js.map +1 -1
  11. package/dist/components/gb-btn.js +21 -20
  12. package/dist/components/gb-btn.js.map +1 -1
  13. package/dist/components/gb-button.js +1 -1
  14. package/dist/components/gb-file-upload-item-base.js +1 -1
  15. package/dist/components/gb-file-upload.js +2 -2
  16. package/dist/components/gb-notification-panel.js +1 -1
  17. package/dist/components/{p-8c11789e.js → p-53bb79e9.js} +2 -2
  18. package/dist/components/{p-8c11789e.js.map → p-53bb79e9.js.map} +1 -1
  19. package/dist/components/{p-8115a477.js → p-ca9a0d2a.js} +23 -22
  20. package/dist/components/p-ca9a0d2a.js.map +1 -0
  21. package/dist/components/test-tooltip.js +2 -2
  22. package/dist/components/test-tooltip.js.map +1 -1
  23. package/dist/esm/gb-avatar-add-button.entry.js +1 -1
  24. package/dist/esm/gb-avatar-dropdown.entry.js +1 -1
  25. package/dist/esm/gb-avatar-group.entry.js +1 -1
  26. package/dist/esm/gb-avatar-label-group.entry.js +1 -1
  27. package/dist/esm/gb-avatar-profile-photo.entry.js +1 -1
  28. package/dist/esm/gb-avatar_3.entry.js +1 -1
  29. package/dist/esm/gb-badge-close.entry.js +1 -1
  30. package/dist/esm/gb-badge.entry.js +1 -1
  31. package/dist/esm/gb-btn_3.entry.js +44 -42
  32. package/dist/esm/gb-btn_3.entry.js.map +1 -1
  33. package/dist/esm/gb-button-close_2.entry.js +1 -1
  34. package/dist/esm/gb-checkbox-group.entry.js +1 -1
  35. package/dist/esm/gb-checkbox_2.entry.js +1 -1
  36. package/dist/esm/gb-collapse-button.entry.js +1 -1
  37. package/dist/esm/gb-dropdown-items-with-shortcut.entry.js +1 -1
  38. package/dist/esm/gb-file-type-icon.entry.js +1 -1
  39. package/dist/esm/gb-file-upload-item-base.entry.js +1 -1
  40. package/dist/esm/gb-file-upload.entry.js +1 -1
  41. package/dist/esm/gb-header-icon.entry.js +1 -1
  42. package/dist/esm/gb-help-dropdown.entry.js +1 -1
  43. package/dist/esm/gb-input-dropdown-menu-item.entry.js +1 -1
  44. package/dist/esm/gb-input-dropdown.entry.js +1 -1
  45. package/dist/esm/gb-input-field.entry.js +1 -1
  46. package/dist/esm/gb-megainput-field.entry.js +1 -1
  47. package/dist/esm/gb-notification-content.entry.js +1 -1
  48. package/dist/esm/gb-notification-panel.entry.js +1 -1
  49. package/dist/esm/gb-progress-circle.entry.js +1 -1
  50. package/dist/esm/gb-scrollbar.entry.js +1 -1
  51. package/dist/esm/gb-slider-control-handle.entry.js +1 -1
  52. package/dist/esm/gb-slider.entry.js +1 -1
  53. package/dist/esm/gb-tag-checkbox_3.entry.js +1 -1
  54. package/dist/esm/gb-tag.entry.js +1 -1
  55. package/dist/esm/gb-textarea-input-field.entry.js +1 -1
  56. package/dist/esm/gb-toggle-base.entry.js +1 -1
  57. package/dist/esm/gb-toggle.entry.js +1 -1
  58. package/dist/esm/gb-tooltip.entry.js +1 -1
  59. package/dist/esm/gb-wysiwyg-editor-icon.entry.js +1 -1
  60. package/dist/esm/globuscomponents.js +2 -2
  61. package/dist/esm/{index-b1fb2c43.js → index-baccaaaf.js} +2 -2
  62. package/dist/esm/{index-b1fb2c43.js.map → index-baccaaaf.js.map} +1 -1
  63. package/dist/esm/loader.js +2 -2
  64. package/dist/globuscomponents/gb-button.css +303 -0
  65. package/dist/globuscomponents/gb-button.tsx +91 -0
  66. package/dist/globuscomponents/globuscomponents.esm.js +1 -1
  67. package/dist/globuscomponents/{p-74aef423.entry.js → p-00244d6c.entry.js} +2 -2
  68. package/dist/globuscomponents/{p-61fd847f.entry.js → p-03fd3db6.entry.js} +2 -2
  69. package/dist/globuscomponents/{p-4c2187ce.entry.js → p-0b58ad12.entry.js} +2 -2
  70. package/dist/globuscomponents/{p-6187221a.entry.js → p-13a84f56.entry.js} +2 -2
  71. package/dist/globuscomponents/{p-5058e15b.entry.js → p-14e14b09.entry.js} +2 -2
  72. package/dist/globuscomponents/{p-3d1463bb.entry.js → p-14f8a91b.entry.js} +2 -2
  73. package/dist/globuscomponents/{p-df6ca614.entry.js → p-185d02fb.entry.js} +2 -2
  74. package/dist/globuscomponents/{p-fc5f1608.entry.js → p-23133621.entry.js} +2 -2
  75. package/dist/globuscomponents/{p-aa9276da.entry.js → p-2a21fc28.entry.js} +2 -2
  76. package/dist/globuscomponents/p-2ce9c18a.entry.js +2 -0
  77. package/dist/globuscomponents/{p-612e13af.entry.js.map → p-2ce9c18a.entry.js.map} +1 -1
  78. package/dist/globuscomponents/{p-da4f965a.entry.js → p-31bf4710.entry.js} +2 -2
  79. package/dist/globuscomponents/{p-db85bbb3.entry.js → p-33f4e7f6.entry.js} +2 -2
  80. package/dist/globuscomponents/{p-91764ae6.entry.js → p-3b7b933c.entry.js} +2 -2
  81. package/dist/globuscomponents/{p-70c0c48f.entry.js → p-4958c9ba.entry.js} +2 -2
  82. package/dist/globuscomponents/{p-eae87772.js → p-4cc02ec1.js} +2 -2
  83. package/dist/globuscomponents/{p-3f71767b.entry.js → p-554f28f6.entry.js} +2 -2
  84. package/dist/globuscomponents/{p-9a6025f9.entry.js → p-5ec82950.entry.js} +2 -2
  85. package/dist/globuscomponents/{p-cd0b001d.entry.js → p-6cea59d4.entry.js} +2 -2
  86. package/dist/globuscomponents/{p-89739cc8.entry.js → p-75b21675.entry.js} +2 -2
  87. package/dist/globuscomponents/{p-4aedd512.entry.js → p-7fd10105.entry.js} +2 -2
  88. package/dist/globuscomponents/p-8aae1040.entry.js +2 -0
  89. package/dist/globuscomponents/p-8aae1040.entry.js.map +1 -0
  90. package/dist/globuscomponents/{p-ea02ed2e.entry.js → p-8f25cee8.entry.js} +2 -2
  91. package/dist/globuscomponents/{p-b10893b7.entry.js → p-92a735ee.entry.js} +2 -2
  92. package/dist/globuscomponents/{p-17998f68.entry.js → p-92af7f46.entry.js} +2 -2
  93. package/dist/globuscomponents/{p-48116815.entry.js → p-96d65ef9.entry.js} +2 -2
  94. package/dist/globuscomponents/{p-2e50812d.entry.js → p-9abd951b.entry.js} +2 -2
  95. package/dist/globuscomponents/{p-da460f1f.entry.js → p-a6295219.entry.js} +2 -2
  96. package/dist/globuscomponents/{p-844a7d68.entry.js → p-c6c34486.entry.js} +2 -2
  97. package/dist/globuscomponents/p-c75f96d6.entry.js +2 -0
  98. package/dist/globuscomponents/{p-2b3262cd.entry.js.map → p-c75f96d6.entry.js.map} +1 -1
  99. package/dist/globuscomponents/{p-375589bc.entry.js → p-c922560c.entry.js} +2 -2
  100. package/dist/globuscomponents/{p-b33c894d.entry.js → p-d735b2a6.entry.js} +2 -2
  101. package/dist/globuscomponents/{p-da728002.entry.js → p-da9e05fa.entry.js} +2 -2
  102. package/dist/globuscomponents/{p-c641c937.entry.js → p-ea7ce35a.entry.js} +2 -2
  103. package/dist/globuscomponents/{p-fd17a6f4.entry.js → p-ecd8b206.entry.js} +2 -2
  104. package/dist/globuscomponents/{p-dea460fb.entry.js → p-efd96d9e.entry.js} +2 -2
  105. package/dist/globuscomponents/{p-614ee37b.entry.js → p-f37c9704.entry.js} +2 -2
  106. package/dist/globuscomponents/{p-80f66cd1.entry.js → p-fed6c43b.entry.js} +2 -2
  107. package/dist/globuscomponents/readme.md +40 -0
  108. package/dist/types/components/gb-btn/gb-btn.d.ts +1 -0
  109. package/dist/types/components/gb-button/gb-button.d.ts +1 -0
  110. package/package.json +1 -1
  111. package/dist/components/p-8115a477.js.map +0 -1
  112. package/dist/globuscomponents/p-2b3262cd.entry.js +0 -2
  113. package/dist/globuscomponents/p-612e13af.entry.js +0 -2
  114. package/dist/globuscomponents/p-d5ba4031.entry.js +0 -2
  115. package/dist/globuscomponents/p-d5ba4031.entry.js.map +0 -1
  116. /package/dist/globuscomponents/{p-74aef423.entry.js.map → p-00244d6c.entry.js.map} +0 -0
  117. /package/dist/globuscomponents/{p-61fd847f.entry.js.map → p-03fd3db6.entry.js.map} +0 -0
  118. /package/dist/globuscomponents/{p-4c2187ce.entry.js.map → p-0b58ad12.entry.js.map} +0 -0
  119. /package/dist/globuscomponents/{p-6187221a.entry.js.map → p-13a84f56.entry.js.map} +0 -0
  120. /package/dist/globuscomponents/{p-5058e15b.entry.js.map → p-14e14b09.entry.js.map} +0 -0
  121. /package/dist/globuscomponents/{p-3d1463bb.entry.js.map → p-14f8a91b.entry.js.map} +0 -0
  122. /package/dist/globuscomponents/{p-df6ca614.entry.js.map → p-185d02fb.entry.js.map} +0 -0
  123. /package/dist/globuscomponents/{p-fc5f1608.entry.js.map → p-23133621.entry.js.map} +0 -0
  124. /package/dist/globuscomponents/{p-aa9276da.entry.js.map → p-2a21fc28.entry.js.map} +0 -0
  125. /package/dist/globuscomponents/{p-da4f965a.entry.js.map → p-31bf4710.entry.js.map} +0 -0
  126. /package/dist/globuscomponents/{p-db85bbb3.entry.js.map → p-33f4e7f6.entry.js.map} +0 -0
  127. /package/dist/globuscomponents/{p-91764ae6.entry.js.map → p-3b7b933c.entry.js.map} +0 -0
  128. /package/dist/globuscomponents/{p-70c0c48f.entry.js.map → p-4958c9ba.entry.js.map} +0 -0
  129. /package/dist/globuscomponents/{p-eae87772.js.map → p-4cc02ec1.js.map} +0 -0
  130. /package/dist/globuscomponents/{p-3f71767b.entry.js.map → p-554f28f6.entry.js.map} +0 -0
  131. /package/dist/globuscomponents/{p-9a6025f9.entry.js.map → p-5ec82950.entry.js.map} +0 -0
  132. /package/dist/globuscomponents/{p-cd0b001d.entry.js.map → p-6cea59d4.entry.js.map} +0 -0
  133. /package/dist/globuscomponents/{p-89739cc8.entry.js.map → p-75b21675.entry.js.map} +0 -0
  134. /package/dist/globuscomponents/{p-4aedd512.entry.js.map → p-7fd10105.entry.js.map} +0 -0
  135. /package/dist/globuscomponents/{p-ea02ed2e.entry.js.map → p-8f25cee8.entry.js.map} +0 -0
  136. /package/dist/globuscomponents/{p-b10893b7.entry.js.map → p-92a735ee.entry.js.map} +0 -0
  137. /package/dist/globuscomponents/{p-17998f68.entry.js.map → p-92af7f46.entry.js.map} +0 -0
  138. /package/dist/globuscomponents/{p-48116815.entry.js.map → p-96d65ef9.entry.js.map} +0 -0
  139. /package/dist/globuscomponents/{p-2e50812d.entry.js.map → p-9abd951b.entry.js.map} +0 -0
  140. /package/dist/globuscomponents/{p-da460f1f.entry.js.map → p-a6295219.entry.js.map} +0 -0
  141. /package/dist/globuscomponents/{p-844a7d68.entry.js.map → p-c6c34486.entry.js.map} +0 -0
  142. /package/dist/globuscomponents/{p-375589bc.entry.js.map → p-c922560c.entry.js.map} +0 -0
  143. /package/dist/globuscomponents/{p-b33c894d.entry.js.map → p-d735b2a6.entry.js.map} +0 -0
  144. /package/dist/globuscomponents/{p-da728002.entry.js.map → p-da9e05fa.entry.js.map} +0 -0
  145. /package/dist/globuscomponents/{p-c641c937.entry.js.map → p-ea7ce35a.entry.js.map} +0 -0
  146. /package/dist/globuscomponents/{p-fd17a6f4.entry.js.map → p-ecd8b206.entry.js.map} +0 -0
  147. /package/dist/globuscomponents/{p-dea460fb.entry.js.map → p-efd96d9e.entry.js.map} +0 -0
  148. /package/dist/globuscomponents/{p-614ee37b.entry.js.map → p-f37c9704.entry.js.map} +0 -0
  149. /package/dist/globuscomponents/{p-80f66cd1.entry.js.map → p-fed6c43b.entry.js.map} +0 -0
@@ -23,27 +23,28 @@ const GbButton = class {
23
23
  this.trailingIconSvg = '';
24
24
  }
25
25
  componentWillLoad() {
26
- // if (this.iconLeading && this.iconLeadingSwap) {
27
- // this.loadIcon(this.iconLeadingSwap, 'leading');
28
- // }
29
- // if (this.iconTrailing && this.iconTrailingSwap) {
30
- // this.loadIcon(this.iconTrailingSwap, 'trailing');
31
- // }
26
+ if (this.iconLeading && this.iconLeadingSwap) {
27
+ this.loadIcon(this.iconLeadingSwap, 'leading');
28
+ }
29
+ if (this.iconTrailing && this.iconTrailingSwap) {
30
+ this.loadIcon(this.iconTrailingSwap, 'trailing');
31
+ }
32
32
  const buttonSlot = this.el.querySelector('p');
33
33
  if (buttonSlot) {
34
34
  buttonSlot.classList.add(this.getButtonTextClasses());
35
35
  }
36
36
  }
37
- // async loadIcon(iconName: string, type: 'leading' | 'trailing') {
38
- // const iconPath = getAssetPath(`./assets/${iconName}.svg`);
39
- // const response = await fetch(iconPath);
40
- // const svg = await response.text();
41
- // if (type === 'leading') {
42
- // this.leadingIconSvg = svg;
43
- // } else {
44
- // this.trailingIconSvg = svg;
45
- // }
46
- // }
37
+ async loadIcon(iconName, type) {
38
+ const iconPath = index.getAssetPath(`${iconName}`);
39
+ const response = await fetch(iconPath);
40
+ const svg = await response.text();
41
+ if (type === 'leading') {
42
+ this.leadingIconSvg = svg;
43
+ }
44
+ else {
45
+ this.trailingIconSvg = svg;
46
+ }
47
+ }
47
48
  // Helper to apply color styles based on the button state
48
49
  getButtonClasses() {
49
50
  return {
@@ -71,13 +72,13 @@ const GbButton = class {
71
72
  }
72
73
  }
73
74
  renderLeadingIcon() {
74
- return this.leadingIconSvg ? index.h("div", { class: `icon left-icon ${this.size}`, innerHTML: this.iconLeadingSwap }) : null;
75
+ return index.h("div", { class: `icon left-icon ${this.size}`, innerHTML: this.leadingIconSvg });
75
76
  }
76
77
  renderTrailingIcon() {
77
- return this.trailingIconSvg ? index.h("div", { class: "icon right-icon", innerHTML: this.iconTrailingSwap }) : null;
78
+ return index.h("div", { class: "icon right-icon", innerHTML: this.trailingIconSvg });
78
79
  }
79
80
  render() {
80
- return (index.h("button", { key: '8ea308e5d5f5bf50bf9963810b1c9814a8e9b783', class: this.getButtonClasses() }, this.iconLeading && this.icon === 'default' && this.renderLeadingIcon(), this.icon === 'default' && index.h("slot", { key: 'a2006d8da118afedb11b3f5c08ab7ce40eae55c3' }), this.iconTrailing && this.renderTrailingIcon(), this.icon === 'only' && this.renderLeadingIcon()));
81
+ return (index.h("button", { key: '99642bbacfa19e24c66fba2a9b396872e56b07c2', class: this.getButtonClasses() }, this.iconLeading && this.icon === 'default' && this.renderLeadingIcon(), this.icon === 'default' && index.h("slot", { key: '27230e98581e68daf4f6610aa37111ceb963909e' }), this.iconTrailing && this.renderTrailingIcon(), this.icon === 'only' && this.renderLeadingIcon()));
81
82
  }
82
83
  get el() { return index.getElement(this); }
83
84
  };
@@ -102,27 +103,28 @@ const MyButton = class {
102
103
  this.trailingIconSvg = '';
103
104
  }
104
105
  componentWillLoad() {
105
- // if (this.iconLeading && this.iconLeadingSwap) {
106
- // this.loadIcon(this.iconLeadingSwap, 'leading');
107
- // }
108
- // if (this.iconTrailing && this.iconTrailingSwap) {
109
- // this.loadIcon(this.iconTrailingSwap, 'trailing');
110
- // }
106
+ if (this.iconLeading && this.iconLeadingSwap) {
107
+ this.loadIcon(this.iconLeadingSwap, 'leading');
108
+ }
109
+ if (this.iconTrailing && this.iconTrailingSwap) {
110
+ this.loadIcon(this.iconTrailingSwap, 'trailing');
111
+ }
111
112
  const buttonSlot = this.el.querySelector('p');
112
113
  if (buttonSlot) {
113
114
  buttonSlot.classList.add(this.getButtonTextClasses());
114
115
  }
115
116
  }
116
- // async loadIcon(iconName: string, type: 'leading' | 'trailing') {
117
- // const iconPath = getAssetPath(`./assets/${iconName}.svg`);
118
- // const response = await fetch(iconPath);
119
- // const svg = await response.text();
120
- // if (type === 'leading') {
121
- // this.leadingIconSvg = svg;
122
- // } else {
123
- // this.trailingIconSvg = svg;
124
- // }
125
- // }
117
+ async loadIcon(iconName, type) {
118
+ const iconPath = index.getAssetPath(`${iconName}`);
119
+ const response = await fetch(iconPath);
120
+ const svg = await response.text();
121
+ if (type === 'leading') {
122
+ this.leadingIconSvg = svg;
123
+ }
124
+ else {
125
+ this.trailingIconSvg = svg;
126
+ }
127
+ }
126
128
  // Helper to apply color styles based on the button state
127
129
  getButtonClasses() {
128
130
  return {
@@ -145,15 +147,15 @@ const MyButton = class {
145
147
  }
146
148
  }
147
149
  renderLeadingIcon() {
148
- return this.leadingIconSvg ? index.h("div", { class: `icon left-icon ${this.size}`, innerHTML: this.iconLeadingSwap }) : null;
150
+ return index.h("div", { class: `icon left-icon ${this.size}`, innerHTML: this.leadingIconSvg });
149
151
  }
150
152
  renderTrailingIcon() {
151
- return this.trailingIconSvg ? index.h("div", { class: "icon right-icon", innerHTML: this.iconTrailingSwap }) : null;
153
+ return index.h("div", { class: "icon right-icon", innerHTML: this.trailingIconSvg });
152
154
  }
153
155
  render() {
154
- return (index.h("button", { key: 'd0579aaee1542010978df6cc14a40bacea50560f', class: this.getButtonClasses() }, this.iconLeading && this.icon === 'default' && this.renderLeadingIcon(), this.icon === 'default' && index.h("slot", { key: '4e298a2e008b290709b0bc6b223731a139dc0d16' }), this.iconTrailing && this.renderTrailingIcon(), this.icon === 'only' && this.renderLeadingIcon()));
156
+ return (index.h("button", { key: '4cf45b244021de3767f657d4bbf19eda9475386c', class: this.getButtonClasses() }, this.iconLeading && this.icon === 'default' && this.renderLeadingIcon(), this.icon === 'default' && index.h("slot", { key: '68aa9922ecccbcf54d5bc80913648301d9d1a927' }), this.iconTrailing && this.renderTrailingIcon(), this.icon === 'only' && this.renderLeadingIcon()));
155
157
  }
156
- static get assetsDirs() { return ["assets"]; }
158
+ static get assetsDirs() { return [""]; }
157
159
  get el() { return index.getElement(this); }
158
160
  };
159
161
  MyButton.style = GbButtonStyle0;
@@ -169,7 +171,7 @@ const TestTooltip = class {
169
171
  this.visible = true;
170
172
  }
171
173
  componentDidLoad() {
172
- const mainTextSlot = this.el.querySelector('[slot="tooltip-content"]');
174
+ const mainTextSlot = this.el.querySelector('[slot="main_text"]');
173
175
  const supportingTextSlot = this.el.querySelector('[slot="supporting_text"]');
174
176
  if (mainTextSlot) {
175
177
  mainTextSlot.classList.add('text-xs-semi-bold');
@@ -185,7 +187,7 @@ const TestTooltip = class {
185
187
  return this.showArrow ? `arrow ${this.arrowPosition}` : '';
186
188
  }
187
189
  render() {
188
- return (index.h("div", { key: 'fd612812025c21f3a2f558a2341e79a79ae7afcc', class: "tooltip-container" }, index.h("slot", { key: 'a17c0cb19995e2462e1a4a5b07edc8d8285726a2' }), this.visible && (index.h("div", { key: '013cb8286b1f6d0b442987315bc265bd3d4caec0', class: "tooltip" }, index.h("div", { key: 'ceac657cbf3a221dfb9e9ac677b2b4747f23d156', class: this.getArrowClass() }), index.h("div", { key: '98efa5549d0d010ae956bcd658750ef82562623b', class: "tooltip-content" }, index.h("slot", { key: '4b998d475af787312e0fb22677f0d4c9997e05bd', name: "tooltip-content" }))))));
190
+ return (index.h("div", { key: 'eb166a5bffa72689f9463fddf3f8ed4897ffc7a9', class: "tooltip_container" }, index.h("slot", { key: '3e880c2f97a3608c41289af47d5c98b1311383d2' }), this.visible && (index.h("div", { key: '78a7030850ece5a5ef198430a7281e9a58539e7a', class: "tooltip" }, index.h("div", { key: '80ded713d396645ef173bead461c61439cd3883a', class: this.getArrowClass() }), index.h("div", { key: '5843b3b5eaf390d963c639fc0ca446f96d529842', class: "tooltip_content" }, index.h("slot", { key: 'cbb41ed966f215c1a4e0d622b7d38c9b9cadaa22', name: "main_text" }))))));
189
191
  }
190
192
  get el() { return index.getElement(this); }
191
193
  };
@@ -1 +1 @@
1
- {"file":"gb-btn.gb-button.test-tooltip.entry.cjs.js","mappings":"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","names":["h"],"sources":["src/components/gb-btn/gb-btn.css?tag=gb-btn","src/components/gb-btn/gb-btn.tsx","src/components/gb-button/gb-button.css?tag=gb-button&encapsulation=shadow","src/components/gb-button/gb-button.tsx","src/components/test-tooltip/test-tooltip.css?tag=test-tooltip&encapsulation=shadow","src/components/test-tooltip/test-tooltip.tsx"],"sourcesContent":["@import './../../global/global.css';\r\n@import './../../global/spacing.css';\r\n@import './../../global/typography.css';\r\n\r\n:host {\r\n --button-color: var(--primary-color);\r\n --icon-color: var(--primary-color);\r\n}\r\n\r\nbutton {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n border: none;\r\n cursor: pointer;\r\n border-radius: var(--rounded-sm);\r\n width: 100%;\r\n}\r\n\r\nbutton.only{\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\nbutton .icon {\r\n display: inline-flex;\r\n width: auto;\r\n height: auto;\r\n}\r\n\r\nbutton .icon svg path[fill] {\r\n fill: var(--icon-color);\r\n}\r\n\r\nbutton .icon svg path[stroke] {\r\n stroke: var(--icon-color);\r\n}\r\n\r\nbutton .icon svg circle {\r\n stroke: var(--icon-color);\r\n}\r\n\r\n/* Button Sizes Styles */\r\nbutton.xl2{\r\n padding: var(--spacing-none) var(--spacing-6);\r\n height: 3.5rem;\r\n gap: var(--spacing-3);\r\n}\r\n\r\nbutton.xl{\r\n padding: var(--spacing-none) var(--spacing-5);\r\n height: 3rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.lg{\r\n padding: 0.625rem 1.125rem;\r\n height: 2.75rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.md{\r\n padding: var(--spacing-none) var(--spacing-4);\r\n height: 2.5rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.sm{\r\n padding: var(--spacing-none) var(--spacing-3);\r\n height: 2.25rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.only.xl2{\r\n width: 3.5rem;\r\n height: 3.5rem;\r\n}\r\n\r\nbutton.only.xl{\r\n width: 3rem;\r\n height: 3rem;\r\n}\r\n\r\nbutton.only.lg{\r\n width: 2.75rem;\r\n height: 2.75rem;\r\n}\r\n\r\nbutton.only.md{\r\n width: 2.5rem;\r\n height: 2.5rem;\r\n}\r\n\r\nbutton.only.sm{\r\n width: 2.25rem;\r\n height: 2.25rem;\r\n}\r\n\r\nbutton.xl2 .icon svg{\r\n width: var(--spacing-6);\r\n height: var(--spacing-6);\r\n}\r\n\r\nbutton.xl .icon svg,\r\nbutton.lg .icon svg,\r\nbutton.md .icon svg,\r\nbutton.sm .icon svg{\r\n width: var(--spacing-5);\r\n height: var(--spacing-5);\r\n}\r\n\r\n/* Hierarchy Styles */\r\nbutton.primary {\r\n background-color: var(--color-background-brandRed, #E21B2E);\r\n --icon-color: var(--color-icon-inverse, #FFFFFF);\r\n color: var(--color-text-inverse, #FFFFFF);\r\n}\r\n\r\nbutton.secondary_gray {\r\n background-color: transparent;\r\n border: 1px solid var(--color-border, #9AA4B2);\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n}\r\n\r\nbutton.secondary_color {\r\n background-color: transparent;\r\n border: 1px solid var(--color-border-brandRed, #E21B2E);\r\n --icon-color: var(--color-icon-brandRed, #E21B2E);\r\n color: var(--color-text-brandRed, #E21B2E);\r\n}\r\n\r\nbutton.tertiary_gray {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n}\r\n\r\nbutton.tertiary_color {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon-brandRed, #E21B2E);\r\n color: var(--color-text-brandRed, #E21B2E);\r\n}\r\n\r\nbutton.link_gray {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n height: fit-content;\r\n}\r\n\r\nbutton.link_color {\r\n background-color: transparent;\r\n --icon-color: var(--color-link, #075DB2);\r\n color: var(--color-link, #075DB2);\r\n padding: var(--spacing-none);\r\n height: fit-content;\r\n}\r\n\r\n/* Button Destructive Styles */\r\nbutton.primary.destructive{\r\n background-color: var(--color-background-danger, #B51726);\r\n color: var(--color-text-inverse, #FFFFFF);\r\n --icon-color: var(--color-icon-danger-inverse, #FFFFFF);\r\n}\r\n\r\nbutton.secondary_gray.destructive, button.secondary_color.destructive{\r\n border: 1px solid var(--color-border-danger, #B51726);\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\nbutton.tertiary_gray.destructive,\r\nbutton.tertiary_color.destructive{\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\nbutton.link_gray.destructive, \r\nbutton.link_color.destructive{\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\n/* Button States Styles */\r\nbutton.primary:hover{\r\n background-color: var(--color-background-brandRed-hover, #CC1A2A);\r\n}\r\n\r\nbutton.primary:active{\r\n background-color: var(--color-background-brandRed-pressed, #B51726);\r\n}\r\n\r\nbutton.secondary_gray:hover{\r\n background-color: var(--color-background-gray-subtler, #EEF2F6);\r\n}\r\n\r\nbutton.secondary_gray:active{\r\n background-color: var(--color-background-gray-subtle, #E3E8EF);\r\n}\r\n\r\nbutton.secondary_color:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.secondary_color:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.tertiary_gray:hover{\r\n background-color: var(--color-background-gray-subtler, #EEF2F6);\r\n}\r\n\r\nbutton.tertiary_gray:active{\r\n background-color: var(--color-background-gray-subtle, #E3E8EF);\r\n}\r\n\r\nbutton.tertiary_color:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.tertiary_color:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.link_gray:hover,\r\nbutton.link_color:hover{\r\n text-decoration: underline;\r\n}\r\n\r\nbutton.link_gray:active{\r\n text-decoration: none;\r\n color: var(--color-text-bold, #202939);\r\n}\r\n\r\nbutton.link_gray:active{\r\n text-decoration: none;\r\n color: var(--color-link-pressed, #064E94);\r\n}\r\n\r\nbutton.primary.destructive:hover{\r\n background-color: var(--color-background-danger-bold, #8C121D);\r\n}\r\n\r\nbutton.primary.destructive:active{\r\n background-color: var(--color-background-brandRed-hover, #CC1A2A); /* ask Mr Gideon about this */\r\n}\r\n\r\nbutton.secondary_gray.destructive:hover, \r\nbutton.secondary_color.destructive:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.secondary_gray.destructive:active, \r\nbutton.secondary_color.destructive:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.tertiary_gray.destructive:hover, \r\nbutton.tertiary_color.destructive:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.tertiary_gray.destructive:active, \r\nbutton.tertiary_color.destructive:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.link_gray.destructive:active{\r\n color: var(--color-text-danger-bold, #8C121D);\r\n}\r\n\r\nbutton.link_color.destructive:active{\r\n color: var(--color-text-warning-bold, #93370D);\r\n}\r\n\r\n/* Button Disabled Styles */\r\nbutton.disabled{\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\nbutton.primary.disabled {\r\n background-color: var(--color-background-disabled, #F6F8FA);\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n}\r\n\r\nbutton.secondary_gray.disabled,\r\nbutton.secondary_color.disabled{\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n border-color: var(--color-border-disabled, #E3E8EF);\r\n}\r\n\r\nbutton.tertiary_gray.disabled,\r\nbutton.tertiary_color.disabled,\r\nbutton.link_gray.disabled,\r\nbutton.link_color.disabled{\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n}\r\n","import { Component, Element, h, Prop, State } from \"@stencil/core\";\r\nimport { GeneralHierarchies, GeneralSizes } from \"../../models/reusableModels\";\r\n\r\n@Component({\r\n tag: 'gb-btn',\r\n styleUrl: 'gb-btn.css',\r\n})\r\nexport class GbButton {\r\n @Prop() size: GeneralSizes;\r\n @Prop() hierarchy: GeneralHierarchies;\r\n @Prop() icon: 'default' | 'only';\r\n @Prop() destructive: boolean = false;\r\n @Prop() state: 'default' | 'hover' | 'disabled' | 'pressed';\r\n @Prop() iconLeading: boolean = false;\r\n @Prop() iconLeadingSwap: string;\r\n @Prop() iconTrailing: boolean = false;\r\n @Prop() iconTrailingSwap: string;\r\n @Element() el: HTMLElement;\r\n @State() leadingIconSvg: string = '';\r\n @State() trailingIconSvg: string = '';\r\n\r\n componentWillLoad() {\r\n // if (this.iconLeading && this.iconLeadingSwap) {\r\n // this.loadIcon(this.iconLeadingSwap, 'leading');\r\n // }\r\n // if (this.iconTrailing && this.iconTrailingSwap) {\r\n // this.loadIcon(this.iconTrailingSwap, 'trailing');\r\n // }\r\n\r\n const buttonSlot = this.el.querySelector('p');\r\n\r\n if (buttonSlot) {\r\n buttonSlot.classList.add(this.getButtonTextClasses());\r\n }\r\n }\r\n\r\n // async loadIcon(iconName: string, type: 'leading' | 'trailing') {\r\n // const iconPath = getAssetPath(`./assets/${iconName}.svg`);\r\n // const response = await fetch(iconPath);\r\n // const svg = await response.text();\r\n // if (type === 'leading') {\r\n // this.leadingIconSvg = svg;\r\n // } else {\r\n // this.trailingIconSvg = svg;\r\n // }\r\n // }\r\n\r\n // Helper to apply color styles based on the button state\r\n getButtonClasses() {\r\n return {\r\n button: true,\r\n [this.size]: true,\r\n [this.hierarchy]: true,\r\n destructive: this.destructive,\r\n disabled: this.state === 'disabled',\r\n default: this.icon === 'default',\r\n only: this.icon === 'only',\r\n };\r\n }\r\n\r\n getButtonTextClasses() {\r\n switch (this.size) {\r\n case 'xl2':\r\n return 'text-lg-semi-bold';\r\n case 'xl':\r\n return 'text-md-semi-bold';\r\n case 'lg':\r\n return 'text-md-semi-bold';\r\n case 'md':\r\n return 'text-sm-semi-bold';\r\n case 'sm':\r\n return 'text-sm-semi-bold';\r\n }\r\n }\r\n\r\n renderLeadingIcon() {\r\n return this.leadingIconSvg ? <div class={`icon left-icon ${this.size}`} innerHTML={this.iconLeadingSwap}></div> : null;\r\n }\r\n\r\n renderTrailingIcon() {\r\n return this.trailingIconSvg ? <div class=\"icon right-icon\" innerHTML={this.iconTrailingSwap}></div> : null;\r\n }\r\n\r\n render() {\r\n return (\r\n <button class={this.getButtonClasses()}>\r\n {this.iconLeading && this.icon === 'default' && this.renderLeadingIcon()}\r\n {this.icon === 'default' && <slot></slot>}\r\n {this.iconTrailing && this.renderTrailingIcon()}\r\n {this.icon === 'only' && this.renderLeadingIcon()}\r\n </button>\r\n );\r\n }\r\n}","@import './../../global/global.css';\r\n@import './../../global/spacing.css';\r\n@import './../../global/typography.css';\r\n\r\n:host {\r\n --button-color: var(--primary-color);\r\n --icon-color: var(--primary-color);\r\n}\r\n\r\nbutton {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n border: none;\r\n cursor: pointer;\r\n border-radius: var(--rounded-sm);\r\n width: 100%;\r\n}\r\n\r\nbutton.only{\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\nbutton .icon {\r\n display: inline-flex;\r\n width: auto;\r\n height: auto;\r\n}\r\n\r\nbutton .icon svg path[fill] {\r\n fill: var(--icon-color);\r\n}\r\n\r\nbutton .icon svg path[stroke] {\r\n stroke: var(--icon-color);\r\n}\r\n\r\nbutton .icon svg circle {\r\n stroke: var(--icon-color);\r\n}\r\n\r\n/* Button Sizes Styles */\r\nbutton.xl2{\r\n padding: var(--spacing-none) var(--spacing-6);\r\n height: 3.5rem;\r\n gap: var(--spacing-3);\r\n}\r\n\r\nbutton.xl{\r\n padding: var(--spacing-none) var(--spacing-5);\r\n height: 3rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.lg{\r\n padding: 0.625rem 1.125rem;\r\n height: 2.75rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.md{\r\n padding: var(--spacing-none) var(--spacing-4);\r\n height: 2.5rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.sm{\r\n padding: var(--spacing-none) var(--spacing-3);\r\n height: 2.25rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.only.xl2{\r\n width: 3.5rem;\r\n height: 3.5rem;\r\n}\r\n\r\nbutton.only.xl{\r\n width: 3rem;\r\n height: 3rem;\r\n}\r\n\r\nbutton.only.lg{\r\n width: 2.75rem;\r\n height: 2.75rem;\r\n}\r\n\r\nbutton.only.md{\r\n width: 2.5rem;\r\n height: 2.5rem;\r\n}\r\n\r\nbutton.only.sm{\r\n width: 2.25rem;\r\n height: 2.25rem;\r\n}\r\n\r\nbutton.xl2 .icon svg{\r\n width: var(--spacing-6);\r\n height: var(--spacing-6);\r\n}\r\n\r\nbutton.xl .icon svg,\r\nbutton.lg .icon svg,\r\nbutton.md .icon svg,\r\nbutton.sm .icon svg{\r\n width: var(--spacing-5);\r\n height: var(--spacing-5);\r\n}\r\n\r\n/* Hierarchy Styles */\r\nbutton.primary {\r\n background-color: var(--color-background-brandRed, #E21B2E);\r\n --icon-color: var(--color-icon-inverse, #FFFFFF);\r\n color: var(--color-text-inverse, #FFFFFF);\r\n}\r\n\r\nbutton.secondary_gray {\r\n background-color: transparent;\r\n border: 1px solid var(--color-border, #9AA4B2);\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n}\r\n\r\nbutton.secondary_color {\r\n background-color: transparent;\r\n border: 1px solid var(--color-border-brandRed, #E21B2E);\r\n --icon-color: var(--color-icon-brandRed, #E21B2E);\r\n color: var(--color-text-brandRed, #E21B2E);\r\n}\r\n\r\nbutton.tertiary_gray {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n}\r\n\r\nbutton.tertiary_color {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon-brandRed, #E21B2E);\r\n color: var(--color-text-brandRed, #E21B2E);\r\n}\r\n\r\nbutton.link_gray {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n height: fit-content;\r\n}\r\n\r\nbutton.link_color {\r\n background-color: transparent;\r\n --icon-color: var(--color-link, #075DB2);\r\n color: var(--color-link, #075DB2);\r\n padding: var(--spacing-none);\r\n height: fit-content;\r\n}\r\n\r\n/* Button Destructive Styles */\r\nbutton.primary.destructive{\r\n background-color: var(--color-background-danger, #B51726);\r\n color: var(--color-text-inverse, #FFFFFF);\r\n --icon-color: var(--color-icon-danger-inverse, #FFFFFF);\r\n}\r\n\r\nbutton.secondary_gray.destructive, button.secondary_color.destructive{\r\n border: 1px solid var(--color-border-danger, #B51726);\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\nbutton.tertiary_gray.destructive,\r\nbutton.tertiary_color.destructive{\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\nbutton.link_gray.destructive, \r\nbutton.link_color.destructive{\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\n/* Button States Styles */\r\nbutton.primary:hover{\r\n background-color: var(--color-background-brandRed-hover, #CC1A2A);\r\n}\r\n\r\nbutton.primary:active{\r\n background-color: var(--color-background-brandRed-pressed, #B51726);\r\n}\r\n\r\nbutton.secondary_gray:hover{\r\n background-color: var(--color-background-gray-subtler, #EEF2F6);\r\n}\r\n\r\nbutton.secondary_gray:active{\r\n background-color: var(--color-background-gray-subtle, #E3E8EF);\r\n}\r\n\r\nbutton.secondary_color:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.secondary_color:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.tertiary_gray:hover{\r\n background-color: var(--color-background-gray-subtler, #EEF2F6);\r\n}\r\n\r\nbutton.tertiary_gray:active{\r\n background-color: var(--color-background-gray-subtle, #E3E8EF);\r\n}\r\n\r\nbutton.tertiary_color:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.tertiary_color:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.link_gray:hover,\r\nbutton.link_color:hover{\r\n text-decoration: underline;\r\n}\r\n\r\nbutton.link_gray:active{\r\n text-decoration: none;\r\n color: var(--color-text-bold, #202939);\r\n}\r\n\r\nbutton.link_gray:active{\r\n text-decoration: none;\r\n color: var(--color-link-pressed, #064E94);\r\n}\r\n\r\nbutton.primary.destructive:hover{\r\n background-color: var(--color-background-danger-bold, #8C121D);\r\n}\r\n\r\nbutton.primary.destructive:active{\r\n background-color: var(--color-background-brandRed-hover, #CC1A2A); /* ask Mr Gideon about this */\r\n}\r\n\r\nbutton.secondary_gray.destructive:hover, \r\nbutton.secondary_color.destructive:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.secondary_gray.destructive:active, \r\nbutton.secondary_color.destructive:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.tertiary_gray.destructive:hover, \r\nbutton.tertiary_color.destructive:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.tertiary_gray.destructive:active, \r\nbutton.tertiary_color.destructive:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.link_gray.destructive:active{\r\n color: var(--color-text-danger-bold, #8C121D);\r\n}\r\n\r\nbutton.link_color.destructive:active{\r\n color: var(--color-text-warning-bold, #93370D);\r\n}\r\n\r\n/* Button Disabled Styles */\r\nbutton.disabled{\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\nbutton.primary.disabled {\r\n background-color: var(--color-background-disabled, #F6F8FA);\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n}\r\n\r\nbutton.secondary_gray.disabled,\r\nbutton.secondary_color.disabled{\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n border-color: var(--color-border-disabled, #E3E8EF);\r\n}\r\n\r\nbutton.tertiary_gray.disabled,\r\nbutton.tertiary_color.disabled,\r\nbutton.link_gray.disabled,\r\nbutton.link_color.disabled{\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n}\r\n","import { Component, Element, h, Prop, State } from '@stencil/core';\r\nimport { GeneralHierarchies, GeneralSizes } from '../../models/reusableModels';\r\n\r\n@Component({\r\n tag: 'gb-button',\r\n styleUrl: 'gb-button.css',\r\n shadow: true,\r\n assetsDirs: ['assets'],\r\n})\r\nexport class MyButton {\r\n @Prop() size: GeneralSizes;\r\n @Prop() hierarchy: GeneralHierarchies;\r\n @Prop() icon: 'default' | 'only';\r\n @Prop() destructive: boolean = false;\r\n @Prop() state: 'default' | 'hover' | 'disabled' | 'pressed';\r\n @Prop() iconLeading: boolean = false;\r\n @Prop() iconLeadingSwap: string;\r\n @Prop() iconTrailing: boolean = false;\r\n @Prop() iconTrailingSwap: string;\r\n @Element() el: HTMLElement;\r\n @State() leadingIconSvg: string = '';\r\n @State() trailingIconSvg: string = '';\r\n\r\n componentWillLoad() {\r\n // if (this.iconLeading && this.iconLeadingSwap) {\r\n // this.loadIcon(this.iconLeadingSwap, 'leading');\r\n // }\r\n // if (this.iconTrailing && this.iconTrailingSwap) {\r\n // this.loadIcon(this.iconTrailingSwap, 'trailing');\r\n // }\r\n\r\n const buttonSlot = this.el.querySelector('p');\r\n\r\n if (buttonSlot) {\r\n buttonSlot.classList.add(this.getButtonTextClasses());\r\n }\r\n }\r\n\r\n // async loadIcon(iconName: string, type: 'leading' | 'trailing') {\r\n // const iconPath = getAssetPath(`./assets/${iconName}.svg`);\r\n // const response = await fetch(iconPath);\r\n // const svg = await response.text();\r\n // if (type === 'leading') {\r\n // this.leadingIconSvg = svg;\r\n // } else {\r\n // this.trailingIconSvg = svg;\r\n // }\r\n // }\r\n\r\n // Helper to apply color styles based on the button state\r\n getButtonClasses() {\r\n return {\r\n button: true,\r\n [this.size]: true,\r\n [this.hierarchy]: true,\r\n destructive: this.destructive,\r\n disabled: this.state === 'disabled',\r\n default: this.icon === 'default',\r\n only: this.icon === 'only'\r\n };\r\n }\r\n\r\n getButtonTextClasses() {\r\n switch (this.size) {\r\n case 'xl2' : return 'text-lg-semi-bold';\r\n case 'xl' : return 'text-md-semi-bold';\r\n case 'lg' : return 'text-md-semi-bold';\r\n case 'md' : return 'text-sm-semi-bold';\r\n case 'sm' : return 'text-sm-semi-bold';\r\n }\r\n }\r\n\r\n renderLeadingIcon() {\r\n return this.leadingIconSvg ? <div class={`icon left-icon ${this.size}`} innerHTML={this.iconLeadingSwap}></div> : null;\r\n }\r\n\r\n renderTrailingIcon() {\r\n return this.trailingIconSvg ? <div class=\"icon right-icon\" innerHTML={this.iconTrailingSwap}></div> : null;\r\n }\r\n\r\n render() {\r\n return (\r\n <button class={this.getButtonClasses()}>\r\n {this.iconLeading && this.icon === 'default' && this.renderLeadingIcon()}\r\n {this.icon === 'default' && <slot></slot>}\r\n {this.iconTrailing && this.renderTrailingIcon()}\r\n {this.icon === 'only' && this.renderLeadingIcon()}\r\n </button>\r\n );\r\n }\r\n}\r\n","@import './../../global/global.css';\r\n@import './../../global/spacing.css';\r\n@import './../../global/typography.css';\r\n\r\n.tooltip-container {\r\n position: relative;\r\n display: inline-block;\r\n}\r\n \r\n.tooltip {\r\n position: absolute;\r\n background-color: var(--color-surface-bold, #FCFCFC);\r\n border: 0.5px solid var(--color-border-subtler, #E3E8EF);\r\n border-radius: var(--rounded-sm);\r\n box-shadow: var(--shadow-sm);\r\n color: #333;\r\n padding: 8px;\r\n white-space: nowrap;\r\n z-index: 10;\r\n}\r\n \r\n.tooltip-content {\r\n font-size: 14px;\r\n color: #333;\r\n}\r\n \r\n.arrow {\r\n width: 0;\r\n height: 0;\r\n border-style: solid;\r\n position: absolute;\r\n}\r\n\r\n.arrow::before {\r\n content: '';\r\n position: absolute;\r\n width: 0;\r\n height: 0;\r\n border-style: solid;\r\n}\r\n \r\n.arrow.bottom-center {\r\n top: 100%;\r\n left: 50%;\r\n border-width: 8px 8px 0 8px;\r\n border-color: #fff transparent transparent transparent;\r\n transform: translateX(-50%);\r\n}\r\n \r\n.arrow.left {\r\n top: 50%;\r\n right: 100%;\r\n border-width: 6px 0 6px 6px;\r\n border-color: transparent transparent transparent #E3E8EF;\r\n transform: translateY(-50%) rotate(180deg);\r\n}\r\n\r\n.arrow.left::before {\r\n left: -8px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n border-width: 7.5px 0 7.5px 7.5px;\r\n border-color: transparent transparent transparent #fff;\r\n}\r\n \r\n.arrow.right {\r\n top: 50%;\r\n left: 100%;\r\n border-width: 8px 8px 8px 0;\r\n border-color: transparent #fff transparent transparent;\r\n transform: translateY(-50%);\r\n}\r\n \r\n.arrow-right::before {\r\n right: -8px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n border-width: 8px 8px 8px 0;\r\n border-color: transparent #d3d3d3 transparent transparent;\r\n}\r\n\r\n.arrow.top-left {\r\n bottom: 100%;\r\n left: 0;\r\n border-width: 0 8px 8px 8px;\r\n border-color: transparent transparent #fff transparent;\r\n}\r\n \r\n.arrow.top-right {\r\n bottom: 100%;\r\n right: 0;\r\n border-width: 0 8px 8px 8px;\r\n border-color: transparent transparent #fff transparent;\r\n}","import { Component, Element, Prop, State, h } from \"@stencil/core\";\r\n\r\n@Component({\r\n tag: 'test-tooltip',\r\n styleUrl: 'test-tooltip.css',\r\n shadow: true,\r\n})\r\nexport class TestTooltip {\r\n @Prop() showArrow: boolean = true;\r\n @Prop() arrowPosition: 'bottom-center' | 'left' | 'right' | 'top-left' | 'top-right' = 'bottom-center';\r\n\r\n @State() visible: boolean = true;\r\n @Element() el: HTMLElement;\r\n\r\n componentDidLoad() {\r\n const mainTextSlot = this.el.querySelector('[slot=\"tooltip-content\"]');\r\n const supportingTextSlot = this.el.querySelector('[slot=\"supporting_text\"]');\r\n\r\n if (mainTextSlot) {\r\n mainTextSlot.classList.add('text-xs-semi-bold');\r\n }\r\n\r\n if (supportingTextSlot) {\r\n supportingTextSlot.classList.add('text-xs-regular');\r\n }\r\n }\r\n\r\n toggleTooltip() {\r\n this.visible = !this.visible;\r\n }\r\n\r\n getArrowClass() {\r\n return this.showArrow ? `arrow ${this.arrowPosition}` : '';\r\n }\r\n\r\n render() {\r\n return (\r\n <div class=\"tooltip-container\">\r\n <slot />\r\n {this.visible && (\r\n <div class=\"tooltip\">\r\n <div class={this.getArrowClass()}></div>\r\n <div class=\"tooltip-content\">\r\n <slot name=\"tooltip-content\" />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}"],"version":3}
1
+ {"file":"gb-btn.gb-button.test-tooltip.entry.cjs.js","mappings":"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","names":["getAssetPath","h"],"sources":["src/components/gb-btn/gb-btn.css?tag=gb-btn","src/components/gb-btn/gb-btn.tsx","src/components/gb-button/gb-button.css?tag=gb-button&encapsulation=shadow","src/components/gb-button/gb-button.tsx","src/components/test-tooltip/test-tooltip.css?tag=test-tooltip&encapsulation=shadow","src/components/test-tooltip/test-tooltip.tsx"],"sourcesContent":["@import './../../global/global.css';\r\n@import './../../global/spacing.css';\r\n@import './../../global/typography.css';\r\n\r\n:host {\r\n --button-color: var(--primary-color);\r\n --icon-color: var(--primary-color);\r\n}\r\n\r\nbutton {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n border: none;\r\n cursor: pointer;\r\n border-radius: var(--rounded-sm);\r\n width: 100%;\r\n}\r\n\r\nbutton.only{\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\nbutton .icon {\r\n display: inline-flex;\r\n width: auto;\r\n height: auto;\r\n}\r\n\r\nbutton .icon svg path[fill] {\r\n fill: var(--icon-color);\r\n}\r\n\r\nbutton .icon svg path[stroke] {\r\n stroke: var(--icon-color);\r\n}\r\n\r\nbutton .icon svg circle {\r\n stroke: var(--icon-color);\r\n}\r\n\r\n/* Button Sizes Styles */\r\nbutton.xl2{\r\n padding: var(--spacing-none) var(--spacing-6);\r\n height: 3.5rem;\r\n gap: var(--spacing-3);\r\n}\r\n\r\nbutton.xl{\r\n padding: var(--spacing-none) var(--spacing-5);\r\n height: 3rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.lg{\r\n padding: 0.625rem 1.125rem;\r\n height: 2.75rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.md{\r\n padding: var(--spacing-none) var(--spacing-4);\r\n height: 2.5rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.sm{\r\n padding: var(--spacing-none) var(--spacing-3);\r\n height: 2.25rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.only.xl2{\r\n width: 3.5rem;\r\n height: 3.5rem;\r\n}\r\n\r\nbutton.only.xl{\r\n width: 3rem;\r\n height: 3rem;\r\n}\r\n\r\nbutton.only.lg{\r\n width: 2.75rem;\r\n height: 2.75rem;\r\n}\r\n\r\nbutton.only.md{\r\n width: 2.5rem;\r\n height: 2.5rem;\r\n}\r\n\r\nbutton.only.sm{\r\n width: 2.25rem;\r\n height: 2.25rem;\r\n}\r\n\r\nbutton.xl2 .icon svg{\r\n width: var(--spacing-6);\r\n height: var(--spacing-6);\r\n}\r\n\r\nbutton.xl .icon svg,\r\nbutton.lg .icon svg,\r\nbutton.md .icon svg,\r\nbutton.sm .icon svg{\r\n width: var(--spacing-5);\r\n height: var(--spacing-5);\r\n}\r\n\r\n/* Hierarchy Styles */\r\nbutton.primary {\r\n background-color: var(--color-background-brandRed, #E21B2E);\r\n --icon-color: var(--color-icon-inverse, #FFFFFF);\r\n color: var(--color-text-inverse, #FFFFFF);\r\n}\r\n\r\nbutton.secondary_gray {\r\n background-color: transparent;\r\n border: 1px solid var(--color-border, #9AA4B2);\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n}\r\n\r\nbutton.secondary_color {\r\n background-color: transparent;\r\n border: 1px solid var(--color-border-brandRed, #E21B2E);\r\n --icon-color: var(--color-icon-brandRed, #E21B2E);\r\n color: var(--color-text-brandRed, #E21B2E);\r\n}\r\n\r\nbutton.tertiary_gray {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n}\r\n\r\nbutton.tertiary_color {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon-brandRed, #E21B2E);\r\n color: var(--color-text-brandRed, #E21B2E);\r\n}\r\n\r\nbutton.link_gray {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n height: fit-content;\r\n}\r\n\r\nbutton.link_color {\r\n background-color: transparent;\r\n --icon-color: var(--color-link, #075DB2);\r\n color: var(--color-link, #075DB2);\r\n padding: var(--spacing-none);\r\n height: fit-content;\r\n}\r\n\r\n/* Button Destructive Styles */\r\nbutton.primary.destructive{\r\n background-color: var(--color-background-danger, #B51726);\r\n color: var(--color-text-inverse, #FFFFFF);\r\n --icon-color: var(--color-icon-danger-inverse, #FFFFFF);\r\n}\r\n\r\nbutton.secondary_gray.destructive, button.secondary_color.destructive{\r\n border: 1px solid var(--color-border-danger, #B51726);\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\nbutton.tertiary_gray.destructive,\r\nbutton.tertiary_color.destructive{\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\nbutton.link_gray.destructive, \r\nbutton.link_color.destructive{\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\n/* Button States Styles */\r\nbutton.primary:hover{\r\n background-color: var(--color-background-brandRed-hover, #CC1A2A);\r\n}\r\n\r\nbutton.primary:active{\r\n background-color: var(--color-background-brandRed-pressed, #B51726);\r\n}\r\n\r\nbutton.secondary_gray:hover{\r\n background-color: var(--color-background-gray-subtler, #EEF2F6);\r\n}\r\n\r\nbutton.secondary_gray:active{\r\n background-color: var(--color-background-gray-subtle, #E3E8EF);\r\n}\r\n\r\nbutton.secondary_color:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.secondary_color:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.tertiary_gray:hover{\r\n background-color: var(--color-background-gray-subtler, #EEF2F6);\r\n}\r\n\r\nbutton.tertiary_gray:active{\r\n background-color: var(--color-background-gray-subtle, #E3E8EF);\r\n}\r\n\r\nbutton.tertiary_color:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.tertiary_color:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.link_gray:hover,\r\nbutton.link_color:hover{\r\n text-decoration: underline;\r\n}\r\n\r\nbutton.link_gray:active{\r\n text-decoration: none;\r\n color: var(--color-text-bold, #202939);\r\n}\r\n\r\nbutton.link_gray:active{\r\n text-decoration: none;\r\n color: var(--color-link-pressed, #064E94);\r\n}\r\n\r\nbutton.primary.destructive:hover{\r\n background-color: var(--color-background-danger-bold, #8C121D);\r\n}\r\n\r\nbutton.primary.destructive:active{\r\n background-color: var(--color-background-brandRed-hover, #CC1A2A); /* ask Mr Gideon about this */\r\n}\r\n\r\nbutton.secondary_gray.destructive:hover, \r\nbutton.secondary_color.destructive:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.secondary_gray.destructive:active, \r\nbutton.secondary_color.destructive:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.tertiary_gray.destructive:hover, \r\nbutton.tertiary_color.destructive:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.tertiary_gray.destructive:active, \r\nbutton.tertiary_color.destructive:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.link_gray.destructive:active{\r\n color: var(--color-text-danger-bold, #8C121D);\r\n}\r\n\r\nbutton.link_color.destructive:active{\r\n color: var(--color-text-warning-bold, #93370D);\r\n}\r\n\r\n/* Button Disabled Styles */\r\nbutton.disabled{\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\nbutton.primary.disabled {\r\n background-color: var(--color-background-disabled, #F6F8FA);\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n}\r\n\r\nbutton.secondary_gray.disabled,\r\nbutton.secondary_color.disabled{\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n border-color: var(--color-border-disabled, #E3E8EF);\r\n}\r\n\r\nbutton.tertiary_gray.disabled,\r\nbutton.tertiary_color.disabled,\r\nbutton.link_gray.disabled,\r\nbutton.link_color.disabled{\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n}\r\n","import { Component, Element, getAssetPath, h, Prop, State } from \"@stencil/core\";\r\nimport { GeneralHierarchies, GeneralSizes } from \"../../models/reusableModels\";\r\n\r\n@Component({\r\n tag: 'gb-btn',\r\n styleUrl: 'gb-btn.css',\r\n})\r\nexport class GbButton {\r\n @Prop() size: GeneralSizes;\r\n @Prop() hierarchy: GeneralHierarchies;\r\n @Prop() icon: 'default' | 'only';\r\n @Prop() destructive: boolean = false;\r\n @Prop() state: 'default' | 'hover' | 'disabled' | 'pressed';\r\n @Prop() iconLeading: boolean = false;\r\n @Prop() iconLeadingSwap: string;\r\n @Prop() iconTrailing: boolean = false;\r\n @Prop() iconTrailingSwap: string;\r\n @Element() el: HTMLElement;\r\n @State() leadingIconSvg: string = '';\r\n @State() trailingIconSvg: string = '';\r\n\r\n componentWillLoad() {\r\n if (this.iconLeading && this.iconLeadingSwap) {\r\n this.loadIcon(this.iconLeadingSwap, 'leading');\r\n }\r\n if (this.iconTrailing && this.iconTrailingSwap) {\r\n this.loadIcon(this.iconTrailingSwap, 'trailing');\r\n }\r\n\r\n const buttonSlot = this.el.querySelector('p');\r\n\r\n if (buttonSlot) {\r\n buttonSlot.classList.add(this.getButtonTextClasses());\r\n }\r\n }\r\n\r\n async loadIcon(iconName: string, type: 'leading' | 'trailing') {\r\n const iconPath = getAssetPath(`${iconName}`);\r\n const response = await fetch(iconPath);\r\n const svg = await response.text();\r\n if (type === 'leading') {\r\n this.leadingIconSvg = svg;\r\n } else {\r\n this.trailingIconSvg = svg;\r\n }\r\n }\r\n\r\n // Helper to apply color styles based on the button state\r\n getButtonClasses() {\r\n return {\r\n button: true,\r\n [this.size]: true,\r\n [this.hierarchy]: true,\r\n destructive: this.destructive,\r\n disabled: this.state === 'disabled',\r\n default: this.icon === 'default',\r\n only: this.icon === 'only',\r\n };\r\n }\r\n\r\n getButtonTextClasses() {\r\n switch (this.size) {\r\n case 'xl2':\r\n return 'text-lg-semi-bold';\r\n case 'xl':\r\n return 'text-md-semi-bold';\r\n case 'lg':\r\n return 'text-md-semi-bold';\r\n case 'md':\r\n return 'text-sm-semi-bold';\r\n case 'sm':\r\n return 'text-sm-semi-bold';\r\n }\r\n }\r\n\r\n renderLeadingIcon() {\r\n return <div class={`icon left-icon ${this.size}`} innerHTML={this.leadingIconSvg}></div>;\r\n }\r\n\r\n renderTrailingIcon() {\r\n return <div class=\"icon right-icon\" innerHTML={this.trailingIconSvg}></div>;\r\n }\r\n\r\n render() {\r\n return (\r\n <button class={this.getButtonClasses()}>\r\n {this.iconLeading && this.icon === 'default' && this.renderLeadingIcon()}\r\n {this.icon === 'default' && <slot></slot>}\r\n {this.iconTrailing && this.renderTrailingIcon()}\r\n {this.icon === 'only' && this.renderLeadingIcon()}\r\n </button>\r\n );\r\n }\r\n}","@import './../../global/global.css';\r\n@import './../../global/spacing.css';\r\n@import './../../global/typography.css';\r\n\r\n:host {\r\n --button-color: var(--primary-color);\r\n --icon-color: var(--primary-color);\r\n}\r\n\r\nbutton {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n border: none;\r\n cursor: pointer;\r\n border-radius: var(--rounded-sm);\r\n width: 100%;\r\n}\r\n\r\nbutton.only{\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\nbutton .icon {\r\n display: inline-flex;\r\n width: auto;\r\n height: auto;\r\n}\r\n\r\nbutton .icon svg path[fill] {\r\n fill: var(--icon-color);\r\n}\r\n\r\nbutton .icon svg path[stroke] {\r\n stroke: var(--icon-color);\r\n}\r\n\r\nbutton .icon svg circle {\r\n stroke: var(--icon-color);\r\n}\r\n\r\n/* Button Sizes Styles */\r\nbutton.xl2{\r\n padding: var(--spacing-none) var(--spacing-6);\r\n height: 3.5rem;\r\n gap: var(--spacing-3);\r\n}\r\n\r\nbutton.xl{\r\n padding: var(--spacing-none) var(--spacing-5);\r\n height: 3rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.lg{\r\n padding: 0.625rem 1.125rem;\r\n height: 2.75rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.md{\r\n padding: var(--spacing-none) var(--spacing-4);\r\n height: 2.5rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.sm{\r\n padding: var(--spacing-none) var(--spacing-3);\r\n height: 2.25rem;\r\n gap: var(--spacing-2);\r\n}\r\n\r\nbutton.only.xl2{\r\n width: 3.5rem;\r\n height: 3.5rem;\r\n}\r\n\r\nbutton.only.xl{\r\n width: 3rem;\r\n height: 3rem;\r\n}\r\n\r\nbutton.only.lg{\r\n width: 2.75rem;\r\n height: 2.75rem;\r\n}\r\n\r\nbutton.only.md{\r\n width: 2.5rem;\r\n height: 2.5rem;\r\n}\r\n\r\nbutton.only.sm{\r\n width: 2.25rem;\r\n height: 2.25rem;\r\n}\r\n\r\nbutton.xl2 .icon svg{\r\n width: var(--spacing-6);\r\n height: var(--spacing-6);\r\n}\r\n\r\nbutton.xl .icon svg,\r\nbutton.lg .icon svg,\r\nbutton.md .icon svg,\r\nbutton.sm .icon svg{\r\n width: var(--spacing-5);\r\n height: var(--spacing-5);\r\n}\r\n\r\n/* Hierarchy Styles */\r\nbutton.primary {\r\n background-color: var(--color-background-brandRed, #E21B2E);\r\n --icon-color: var(--color-icon-inverse, #FFFFFF);\r\n color: var(--color-text-inverse, #FFFFFF);\r\n}\r\n\r\nbutton.secondary_gray {\r\n background-color: transparent;\r\n border: 1px solid var(--color-border, #9AA4B2);\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n}\r\n\r\nbutton.secondary_color {\r\n background-color: transparent;\r\n border: 1px solid var(--color-border-brandRed, #E21B2E);\r\n --icon-color: var(--color-icon-brandRed, #E21B2E);\r\n color: var(--color-text-brandRed, #E21B2E);\r\n}\r\n\r\nbutton.tertiary_gray {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n}\r\n\r\nbutton.tertiary_color {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon-brandRed, #E21B2E);\r\n color: var(--color-text-brandRed, #E21B2E);\r\n}\r\n\r\nbutton.link_gray {\r\n background-color: transparent;\r\n --icon-color: var(--color-icon, #4B5565);\r\n color: var(--color-text, #4B5565);\r\n height: fit-content;\r\n}\r\n\r\nbutton.link_color {\r\n background-color: transparent;\r\n --icon-color: var(--color-link, #075DB2);\r\n color: var(--color-link, #075DB2);\r\n padding: var(--spacing-none);\r\n height: fit-content;\r\n}\r\n\r\n/* Button Destructive Styles */\r\nbutton.primary.destructive{\r\n background-color: var(--color-background-danger, #B51726);\r\n color: var(--color-text-inverse, #FFFFFF);\r\n --icon-color: var(--color-icon-danger-inverse, #FFFFFF);\r\n}\r\n\r\nbutton.secondary_gray.destructive, button.secondary_color.destructive{\r\n border: 1px solid var(--color-border-danger, #B51726);\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\nbutton.tertiary_gray.destructive,\r\nbutton.tertiary_color.destructive{\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\nbutton.link_gray.destructive, \r\nbutton.link_color.destructive{\r\n color: var(--color-text-danger, #B51726);\r\n --icon-color: var(--color-icon-danger, #B51726);\r\n}\r\n\r\n/* Button States Styles */\r\nbutton.primary:hover{\r\n background-color: var(--color-background-brandRed-hover, #CC1A2A);\r\n}\r\n\r\nbutton.primary:active{\r\n background-color: var(--color-background-brandRed-pressed, #B51726);\r\n}\r\n\r\nbutton.secondary_gray:hover{\r\n background-color: var(--color-background-gray-subtler, #EEF2F6);\r\n}\r\n\r\nbutton.secondary_gray:active{\r\n background-color: var(--color-background-gray-subtle, #E3E8EF);\r\n}\r\n\r\nbutton.secondary_color:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.secondary_color:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.tertiary_gray:hover{\r\n background-color: var(--color-background-gray-subtler, #EEF2F6);\r\n}\r\n\r\nbutton.tertiary_gray:active{\r\n background-color: var(--color-background-gray-subtle, #E3E8EF);\r\n}\r\n\r\nbutton.tertiary_color:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.tertiary_color:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.link_gray:hover,\r\nbutton.link_color:hover{\r\n text-decoration: underline;\r\n}\r\n\r\nbutton.link_gray:active{\r\n text-decoration: none;\r\n color: var(--color-text-bold, #202939);\r\n}\r\n\r\nbutton.link_gray:active{\r\n text-decoration: none;\r\n color: var(--color-link-pressed, #064E94);\r\n}\r\n\r\nbutton.primary.destructive:hover{\r\n background-color: var(--color-background-danger-bold, #8C121D);\r\n}\r\n\r\nbutton.primary.destructive:active{\r\n background-color: var(--color-background-brandRed-hover, #CC1A2A); /* ask Mr Gideon about this */\r\n}\r\n\r\nbutton.secondary_gray.destructive:hover, \r\nbutton.secondary_color.destructive:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.secondary_gray.destructive:active, \r\nbutton.secondary_color.destructive:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.tertiary_gray.destructive:hover, \r\nbutton.tertiary_color.destructive:hover{\r\n background-color: var(--color-background-danger-subtlest, #FEF1F2);\r\n}\r\n\r\nbutton.tertiary_gray.destructive:active, \r\nbutton.tertiary_color.destructive:active{\r\n background-color: var(--color-background-danger-subtler, #FDE3E5);\r\n}\r\n\r\nbutton.link_gray.destructive:active{\r\n color: var(--color-text-danger-bold, #8C121D);\r\n}\r\n\r\nbutton.link_color.destructive:active{\r\n color: var(--color-text-warning-bold, #93370D);\r\n}\r\n\r\n/* Button Disabled Styles */\r\nbutton.disabled{\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\nbutton.primary.disabled {\r\n background-color: var(--color-background-disabled, #F6F8FA);\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n}\r\n\r\nbutton.secondary_gray.disabled,\r\nbutton.secondary_color.disabled{\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n border-color: var(--color-border-disabled, #E3E8EF);\r\n}\r\n\r\nbutton.tertiary_gray.disabled,\r\nbutton.tertiary_color.disabled,\r\nbutton.link_gray.disabled,\r\nbutton.link_color.disabled{\r\n --icon-color: var(--color-icon-disabled, #CDD5DF);\r\n color: var(--color-text-disabled, #CDD5DF);\r\n}\r\n","import { Component, Element, getAssetPath, h, Prop, State } from '@stencil/core';\r\nimport { GeneralHierarchies, GeneralSizes } from '../../models/reusableModels';\r\n\r\n@Component({\r\n tag: 'gb-button',\r\n styleUrl: 'gb-button.css',\r\n shadow: true,\r\n assetsDirs: [''],\r\n})\r\nexport class MyButton {\r\n @Prop() size: GeneralSizes;\r\n @Prop() hierarchy: GeneralHierarchies;\r\n @Prop() icon: 'default' | 'only';\r\n @Prop() destructive: boolean = false;\r\n @Prop() state: 'default' | 'hover' | 'disabled' | 'pressed';\r\n @Prop() iconLeading: boolean = false;\r\n @Prop() iconLeadingSwap: string;\r\n @Prop() iconTrailing: boolean = false;\r\n @Prop() iconTrailingSwap: string;\r\n @Element() el: HTMLElement;\r\n @State() leadingIconSvg: string = '';\r\n @State() trailingIconSvg: string = '';\r\n\r\n componentWillLoad() {\r\n if (this.iconLeading && this.iconLeadingSwap) {\r\n this.loadIcon(this.iconLeadingSwap, 'leading');\r\n }\r\n if (this.iconTrailing && this.iconTrailingSwap) {\r\n this.loadIcon(this.iconTrailingSwap, 'trailing');\r\n }\r\n\r\n const buttonSlot = this.el.querySelector('p');\r\n\r\n if (buttonSlot) {\r\n buttonSlot.classList.add(this.getButtonTextClasses());\r\n }\r\n }\r\n\r\n async loadIcon(iconName: string, type: 'leading' | 'trailing') {\r\n const iconPath = getAssetPath(`${iconName}`);\r\n const response = await fetch(iconPath);\r\n const svg = await response.text();\r\n if (type === 'leading') {\r\n this.leadingIconSvg = svg;\r\n } else {\r\n this.trailingIconSvg = svg;\r\n }\r\n }\r\n\r\n // Helper to apply color styles based on the button state\r\n getButtonClasses() {\r\n return {\r\n button: true,\r\n [this.size]: true,\r\n [this.hierarchy]: true,\r\n destructive: this.destructive,\r\n disabled: this.state === 'disabled',\r\n default: this.icon === 'default',\r\n only: this.icon === 'only'\r\n };\r\n }\r\n\r\n getButtonTextClasses() {\r\n switch (this.size) {\r\n case 'xl2' : return 'text-lg-semi-bold';\r\n case 'xl' : return 'text-md-semi-bold';\r\n case 'lg' : return 'text-md-semi-bold';\r\n case 'md' : return 'text-sm-semi-bold';\r\n case 'sm' : return 'text-sm-semi-bold';\r\n }\r\n }\r\n\r\n renderLeadingIcon() {\r\n return <div class={`icon left-icon ${this.size}`} innerHTML={this.leadingIconSvg}></div>;\r\n }\r\n\r\n renderTrailingIcon() {\r\n return <div class=\"icon right-icon\" innerHTML={this.trailingIconSvg}></div>;\r\n }\r\n\r\n render() {\r\n return (\r\n <button class={this.getButtonClasses()}>\r\n {this.iconLeading && this.icon === 'default' && this.renderLeadingIcon()}\r\n {this.icon === 'default' && <slot></slot>}\r\n {this.iconTrailing && this.renderTrailingIcon()}\r\n {this.icon === 'only' && this.renderLeadingIcon()}\r\n </button>\r\n );\r\n }\r\n}\r\n","@import './../../global/global.css';\r\n@import './../../global/spacing.css';\r\n@import './../../global/typography.css';\r\n\r\n.tooltip-container {\r\n position: relative;\r\n display: inline-block;\r\n}\r\n \r\n.tooltip {\r\n position: absolute;\r\n background-color: var(--color-surface-bold, #FCFCFC);\r\n border: 0.5px solid var(--color-border-subtler, #E3E8EF);\r\n border-radius: var(--rounded-sm);\r\n box-shadow: var(--shadow-sm);\r\n color: #333;\r\n padding: 8px;\r\n white-space: nowrap;\r\n z-index: 10;\r\n}\r\n \r\n.tooltip-content {\r\n font-size: 14px;\r\n color: #333;\r\n}\r\n \r\n.arrow {\r\n width: 0;\r\n height: 0;\r\n border-style: solid;\r\n position: absolute;\r\n}\r\n\r\n.arrow::before {\r\n content: '';\r\n position: absolute;\r\n width: 0;\r\n height: 0;\r\n border-style: solid;\r\n}\r\n \r\n.arrow.bottom-center {\r\n top: 100%;\r\n left: 50%;\r\n border-width: 8px 8px 0 8px;\r\n border-color: #fff transparent transparent transparent;\r\n transform: translateX(-50%);\r\n}\r\n \r\n.arrow.left {\r\n top: 50%;\r\n right: 100%;\r\n border-width: 6px 0 6px 6px;\r\n border-color: transparent transparent transparent #E3E8EF;\r\n transform: translateY(-50%) rotate(180deg);\r\n}\r\n\r\n.arrow.left::before {\r\n left: -8px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n border-width: 7.5px 0 7.5px 7.5px;\r\n border-color: transparent transparent transparent #fff;\r\n}\r\n \r\n.arrow.right {\r\n top: 50%;\r\n left: 100%;\r\n border-width: 8px 8px 8px 0;\r\n border-color: transparent #fff transparent transparent;\r\n transform: translateY(-50%);\r\n}\r\n \r\n.arrow-right::before {\r\n right: -8px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n border-width: 8px 8px 8px 0;\r\n border-color: transparent #d3d3d3 transparent transparent;\r\n}\r\n\r\n.arrow.top-left {\r\n bottom: 100%;\r\n left: 0;\r\n border-width: 0 8px 8px 8px;\r\n border-color: transparent transparent #fff transparent;\r\n}\r\n \r\n.arrow.top-right {\r\n bottom: 100%;\r\n right: 0;\r\n border-width: 0 8px 8px 8px;\r\n border-color: transparent transparent #fff transparent;\r\n}","import { Component, Element, Prop, State, h } from \"@stencil/core\";\r\n\r\n@Component({\r\n tag: 'test-tooltip',\r\n styleUrl: 'test-tooltip.css',\r\n shadow: true,\r\n})\r\nexport class TestTooltip {\r\n @Prop() showArrow: boolean = true;\r\n @Prop() arrowPosition: 'bottom-center' | 'left' | 'right' | 'top-left' | 'top-right' = 'bottom-center';\r\n\r\n @State() visible: boolean = true;\r\n @Element() el: HTMLElement;\r\n\r\n componentDidLoad() {\r\n const mainTextSlot = this.el.querySelector('[slot=\"main_text\"]');\r\n const supportingTextSlot = this.el.querySelector('[slot=\"supporting_text\"]');\r\n\r\n if (mainTextSlot) {\r\n mainTextSlot.classList.add('text-xs-semi-bold');\r\n }\r\n\r\n if (supportingTextSlot) {\r\n supportingTextSlot.classList.add('text-xs-regular');\r\n }\r\n }\r\n\r\n toggleTooltip() {\r\n this.visible = !this.visible;\r\n }\r\n\r\n getArrowClass() {\r\n return this.showArrow ? `arrow ${this.arrowPosition}` : '';\r\n }\r\n\r\n render() {\r\n return (\r\n <div class=\"tooltip_container\">\r\n <slot />\r\n {this.visible && (\r\n <div class=\"tooltip\">\r\n <div class={this.getArrowClass()}></div>\r\n <div class=\"tooltip_content\">\r\n <slot name=\"main_text\" />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}"],"version":3}
@@ -1,4 +1,4 @@
1
- import { h } from "@stencil/core";
1
+ import { getAssetPath, h } from "@stencil/core";
2
2
  export class GbButton {
3
3
  constructor() {
4
4
  this.size = undefined;
@@ -14,27 +14,28 @@ export class GbButton {
14
14
  this.trailingIconSvg = '';
15
15
  }
16
16
  componentWillLoad() {
17
- // if (this.iconLeading && this.iconLeadingSwap) {
18
- // this.loadIcon(this.iconLeadingSwap, 'leading');
19
- // }
20
- // if (this.iconTrailing && this.iconTrailingSwap) {
21
- // this.loadIcon(this.iconTrailingSwap, 'trailing');
22
- // }
17
+ if (this.iconLeading && this.iconLeadingSwap) {
18
+ this.loadIcon(this.iconLeadingSwap, 'leading');
19
+ }
20
+ if (this.iconTrailing && this.iconTrailingSwap) {
21
+ this.loadIcon(this.iconTrailingSwap, 'trailing');
22
+ }
23
23
  const buttonSlot = this.el.querySelector('p');
24
24
  if (buttonSlot) {
25
25
  buttonSlot.classList.add(this.getButtonTextClasses());
26
26
  }
27
27
  }
28
- // async loadIcon(iconName: string, type: 'leading' | 'trailing') {
29
- // const iconPath = getAssetPath(`./assets/${iconName}.svg`);
30
- // const response = await fetch(iconPath);
31
- // const svg = await response.text();
32
- // if (type === 'leading') {
33
- // this.leadingIconSvg = svg;
34
- // } else {
35
- // this.trailingIconSvg = svg;
36
- // }
37
- // }
28
+ async loadIcon(iconName, type) {
29
+ const iconPath = getAssetPath(`${iconName}`);
30
+ const response = await fetch(iconPath);
31
+ const svg = await response.text();
32
+ if (type === 'leading') {
33
+ this.leadingIconSvg = svg;
34
+ }
35
+ else {
36
+ this.trailingIconSvg = svg;
37
+ }
38
+ }
38
39
  // Helper to apply color styles based on the button state
39
40
  getButtonClasses() {
40
41
  return {
@@ -62,13 +63,13 @@ export class GbButton {
62
63
  }
63
64
  }
64
65
  renderLeadingIcon() {
65
- return this.leadingIconSvg ? h("div", { class: `icon left-icon ${this.size}`, innerHTML: this.iconLeadingSwap }) : null;
66
+ return h("div", { class: `icon left-icon ${this.size}`, innerHTML: this.leadingIconSvg });
66
67
  }
67
68
  renderTrailingIcon() {
68
- return this.trailingIconSvg ? h("div", { class: "icon right-icon", innerHTML: this.iconTrailingSwap }) : null;
69
+ return h("div", { class: "icon right-icon", innerHTML: this.trailingIconSvg });
69
70
  }
70
71
  render() {
71
- return (h("button", { key: '8ea308e5d5f5bf50bf9963810b1c9814a8e9b783', class: this.getButtonClasses() }, this.iconLeading && this.icon === 'default' && this.renderLeadingIcon(), this.icon === 'default' && h("slot", { key: 'a2006d8da118afedb11b3f5c08ab7ce40eae55c3' }), this.iconTrailing && this.renderTrailingIcon(), this.icon === 'only' && this.renderLeadingIcon()));
72
+ return (h("button", { key: '99642bbacfa19e24c66fba2a9b396872e56b07c2', class: this.getButtonClasses() }, this.iconLeading && this.icon === 'default' && this.renderLeadingIcon(), this.icon === 'default' && h("slot", { key: '27230e98581e68daf4f6610aa37111ceb963909e' }), this.iconTrailing && this.renderTrailingIcon(), this.icon === 'only' && this.renderLeadingIcon()));
72
73
  }
73
74
  static get is() { return "gb-btn"; }
74
75
  static get originalStyleUrls() {
@@ -1 +1 @@
1
- {"version":3,"file":"gb-btn.js","sourceRoot":"","sources":["../../../src/components/gb-btn/gb-btn.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAOnE,MAAM,OAAO,QAAQ;;;;;2BAIY,KAAK;;2BAEL,KAAK;;4BAEJ,KAAK;;8BAGH,EAAE;+BACD,EAAE;;IAErC,iBAAiB;QACf,kDAAkD;QAClD,oDAAoD;QACpD,IAAI;QACJ,oDAAoD;QACpD,sDAAsD;QACtD,IAAI;QAEJ,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,+DAA+D;IAC/D,4CAA4C;IAC5C,uCAAuC;IACvC,8BAA8B;IAC9B,iCAAiC;IACjC,aAAa;IACb,kCAAkC;IAClC,MAAM;IACN,IAAI;IAEJ,yDAAyD;IACzD,gBAAgB;QACd,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI;YACjB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,KAAK,KAAK,UAAU;YACnC,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;SAC3B,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,KAAK;gBACR,OAAO,mBAAmB,CAAC;YAC7B,KAAK,IAAI;gBACP,OAAO,mBAAmB,CAAC;YAC7B,KAAK,IAAI;gBACP,OAAO,mBAAmB,CAAC;YAC7B,KAAK,IAAI;gBACP,OAAO,mBAAmB,CAAC;YAC7B,KAAK,IAAI;gBACP,OAAO,mBAAmB,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,WAAK,KAAK,EAAE,kBAAkB,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,GAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACzH,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,WAAK,KAAK,EAAC,iBAAiB,EAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,GAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7G,CAAC;IAED,MAAM;QACJ,OAAO,CACL,+DAAQ,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YACnC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACvE,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,8DAAa;YACxC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC9C,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAC1C,CACV,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, h, Prop, State } from \"@stencil/core\";\r\nimport { GeneralHierarchies, GeneralSizes } from \"../../models/reusableModels\";\r\n\r\n@Component({\r\n tag: 'gb-btn',\r\n styleUrl: 'gb-btn.css',\r\n})\r\nexport class GbButton {\r\n @Prop() size: GeneralSizes;\r\n @Prop() hierarchy: GeneralHierarchies;\r\n @Prop() icon: 'default' | 'only';\r\n @Prop() destructive: boolean = false;\r\n @Prop() state: 'default' | 'hover' | 'disabled' | 'pressed';\r\n @Prop() iconLeading: boolean = false;\r\n @Prop() iconLeadingSwap: string;\r\n @Prop() iconTrailing: boolean = false;\r\n @Prop() iconTrailingSwap: string;\r\n @Element() el: HTMLElement;\r\n @State() leadingIconSvg: string = '';\r\n @State() trailingIconSvg: string = '';\r\n\r\n componentWillLoad() {\r\n // if (this.iconLeading && this.iconLeadingSwap) {\r\n // this.loadIcon(this.iconLeadingSwap, 'leading');\r\n // }\r\n // if (this.iconTrailing && this.iconTrailingSwap) {\r\n // this.loadIcon(this.iconTrailingSwap, 'trailing');\r\n // }\r\n\r\n const buttonSlot = this.el.querySelector('p');\r\n\r\n if (buttonSlot) {\r\n buttonSlot.classList.add(this.getButtonTextClasses());\r\n }\r\n }\r\n\r\n // async loadIcon(iconName: string, type: 'leading' | 'trailing') {\r\n // const iconPath = getAssetPath(`./assets/${iconName}.svg`);\r\n // const response = await fetch(iconPath);\r\n // const svg = await response.text();\r\n // if (type === 'leading') {\r\n // this.leadingIconSvg = svg;\r\n // } else {\r\n // this.trailingIconSvg = svg;\r\n // }\r\n // }\r\n\r\n // Helper to apply color styles based on the button state\r\n getButtonClasses() {\r\n return {\r\n button: true,\r\n [this.size]: true,\r\n [this.hierarchy]: true,\r\n destructive: this.destructive,\r\n disabled: this.state === 'disabled',\r\n default: this.icon === 'default',\r\n only: this.icon === 'only',\r\n };\r\n }\r\n\r\n getButtonTextClasses() {\r\n switch (this.size) {\r\n case 'xl2':\r\n return 'text-lg-semi-bold';\r\n case 'xl':\r\n return 'text-md-semi-bold';\r\n case 'lg':\r\n return 'text-md-semi-bold';\r\n case 'md':\r\n return 'text-sm-semi-bold';\r\n case 'sm':\r\n return 'text-sm-semi-bold';\r\n }\r\n }\r\n\r\n renderLeadingIcon() {\r\n return this.leadingIconSvg ? <div class={`icon left-icon ${this.size}`} innerHTML={this.iconLeadingSwap}></div> : null;\r\n }\r\n\r\n renderTrailingIcon() {\r\n return this.trailingIconSvg ? <div class=\"icon right-icon\" innerHTML={this.iconTrailingSwap}></div> : null;\r\n }\r\n\r\n render() {\r\n return (\r\n <button class={this.getButtonClasses()}>\r\n {this.iconLeading && this.icon === 'default' && this.renderLeadingIcon()}\r\n {this.icon === 'default' && <slot></slot>}\r\n {this.iconTrailing && this.renderTrailingIcon()}\r\n {this.icon === 'only' && this.renderLeadingIcon()}\r\n </button>\r\n );\r\n }\r\n}"]}
1
+ {"version":3,"file":"gb-btn.js","sourceRoot":"","sources":["../../../src/components/gb-btn/gb-btn.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, getAssetPath, h, Prop, State } from \"@stencil/core\";\r\nimport { GeneralHierarchies, GeneralSizes } from \"../../models/reusableModels\";\r\n\r\n@Component({\r\n tag: 'gb-btn',\r\n styleUrl: 'gb-btn.css',\r\n})\r\nexport class GbButton {\r\n @Prop() size: GeneralSizes;\r\n @Prop() hierarchy: GeneralHierarchies;\r\n @Prop() icon: 'default' | 'only';\r\n @Prop() destructive: boolean = false;\r\n @Prop() state: 'default' | 'hover' | 'disabled' | 'pressed';\r\n @Prop() iconLeading: boolean = false;\r\n @Prop() iconLeadingSwap: string;\r\n @Prop() iconTrailing: boolean = false;\r\n @Prop() iconTrailingSwap: string;\r\n @Element() el: HTMLElement;\r\n @State() leadingIconSvg: string = '';\r\n @State() trailingIconSvg: string = '';\r\n\r\n componentWillLoad() {\r\n if (this.iconLeading && this.iconLeadingSwap) {\r\n this.loadIcon(this.iconLeadingSwap, 'leading');\r\n }\r\n if (this.iconTrailing && this.iconTrailingSwap) {\r\n this.loadIcon(this.iconTrailingSwap, 'trailing');\r\n }\r\n\r\n const buttonSlot = this.el.querySelector('p');\r\n\r\n if (buttonSlot) {\r\n buttonSlot.classList.add(this.getButtonTextClasses());\r\n }\r\n }\r\n\r\n async loadIcon(iconName: string, type: 'leading' | 'trailing') {\r\n const iconPath = getAssetPath(`${iconName}`);\r\n const response = await fetch(iconPath);\r\n const svg = await response.text();\r\n if (type === 'leading') {\r\n this.leadingIconSvg = svg;\r\n } else {\r\n this.trailingIconSvg = svg;\r\n }\r\n }\r\n\r\n // Helper to apply color styles based on the button state\r\n getButtonClasses() {\r\n return {\r\n button: true,\r\n [this.size]: true,\r\n [this.hierarchy]: true,\r\n destructive: this.destructive,\r\n disabled: this.state === 'disabled',\r\n default: this.icon === 'default',\r\n only: this.icon === 'only',\r\n };\r\n }\r\n\r\n getButtonTextClasses() {\r\n switch (this.size) {\r\n case 'xl2':\r\n return 'text-lg-semi-bold';\r\n case 'xl':\r\n return 'text-md-semi-bold';\r\n case 'lg':\r\n return 'text-md-semi-bold';\r\n case 'md':\r\n return 'text-sm-semi-bold';\r\n case 'sm':\r\n return 'text-sm-semi-bold';\r\n }\r\n }\r\n\r\n renderLeadingIcon() {\r\n return <div class={`icon left-icon ${this.size}`} innerHTML={this.leadingIconSvg}></div>;\r\n }\r\n\r\n renderTrailingIcon() {\r\n return <div class=\"icon right-icon\" innerHTML={this.trailingIconSvg}></div>;\r\n }\r\n\r\n render() {\r\n return (\r\n <button class={this.getButtonClasses()}>\r\n {this.iconLeading && this.icon === 'default' && this.renderLeadingIcon()}\r\n {this.icon === 'default' && <slot></slot>}\r\n {this.iconTrailing && this.renderTrailingIcon()}\r\n {this.icon === 'only' && this.renderLeadingIcon()}\r\n </button>\r\n );\r\n }\r\n}"]}
@@ -1,4 +1,4 @@
1
- import { h } from "@stencil/core";
1
+ import { getAssetPath, h } from "@stencil/core";
2
2
  export class MyButton {
3
3
  constructor() {
4
4
  this.size = undefined;
@@ -14,27 +14,28 @@ export class MyButton {
14
14
  this.trailingIconSvg = '';
15
15
  }
16
16
  componentWillLoad() {
17
- // if (this.iconLeading && this.iconLeadingSwap) {
18
- // this.loadIcon(this.iconLeadingSwap, 'leading');
19
- // }
20
- // if (this.iconTrailing && this.iconTrailingSwap) {
21
- // this.loadIcon(this.iconTrailingSwap, 'trailing');
22
- // }
17
+ if (this.iconLeading && this.iconLeadingSwap) {
18
+ this.loadIcon(this.iconLeadingSwap, 'leading');
19
+ }
20
+ if (this.iconTrailing && this.iconTrailingSwap) {
21
+ this.loadIcon(this.iconTrailingSwap, 'trailing');
22
+ }
23
23
  const buttonSlot = this.el.querySelector('p');
24
24
  if (buttonSlot) {
25
25
  buttonSlot.classList.add(this.getButtonTextClasses());
26
26
  }
27
27
  }
28
- // async loadIcon(iconName: string, type: 'leading' | 'trailing') {
29
- // const iconPath = getAssetPath(`./assets/${iconName}.svg`);
30
- // const response = await fetch(iconPath);
31
- // const svg = await response.text();
32
- // if (type === 'leading') {
33
- // this.leadingIconSvg = svg;
34
- // } else {
35
- // this.trailingIconSvg = svg;
36
- // }
37
- // }
28
+ async loadIcon(iconName, type) {
29
+ const iconPath = getAssetPath(`${iconName}`);
30
+ const response = await fetch(iconPath);
31
+ const svg = await response.text();
32
+ if (type === 'leading') {
33
+ this.leadingIconSvg = svg;
34
+ }
35
+ else {
36
+ this.trailingIconSvg = svg;
37
+ }
38
+ }
38
39
  // Helper to apply color styles based on the button state
39
40
  getButtonClasses() {
40
41
  return {
@@ -57,13 +58,13 @@ export class MyButton {
57
58
  }
58
59
  }
59
60
  renderLeadingIcon() {
60
- return this.leadingIconSvg ? h("div", { class: `icon left-icon ${this.size}`, innerHTML: this.iconLeadingSwap }) : null;
61
+ return h("div", { class: `icon left-icon ${this.size}`, innerHTML: this.leadingIconSvg });
61
62
  }
62
63
  renderTrailingIcon() {
63
- return this.trailingIconSvg ? h("div", { class: "icon right-icon", innerHTML: this.iconTrailingSwap }) : null;
64
+ return h("div", { class: "icon right-icon", innerHTML: this.trailingIconSvg });
64
65
  }
65
66
  render() {
66
- return (h("button", { key: 'd0579aaee1542010978df6cc14a40bacea50560f', class: this.getButtonClasses() }, this.iconLeading && this.icon === 'default' && this.renderLeadingIcon(), this.icon === 'default' && h("slot", { key: '4e298a2e008b290709b0bc6b223731a139dc0d16' }), this.iconTrailing && this.renderTrailingIcon(), this.icon === 'only' && this.renderLeadingIcon()));
67
+ return (h("button", { key: '4cf45b244021de3767f657d4bbf19eda9475386c', class: this.getButtonClasses() }, this.iconLeading && this.icon === 'default' && this.renderLeadingIcon(), this.icon === 'default' && h("slot", { key: '68aa9922ecccbcf54d5bc80913648301d9d1a927' }), this.iconTrailing && this.renderTrailingIcon(), this.icon === 'only' && this.renderLeadingIcon()));
67
68
  }
68
69
  static get is() { return "gb-button"; }
69
70
  static get encapsulation() { return "shadow"; }
@@ -77,7 +78,7 @@ export class MyButton {
77
78
  "$": ["gb-button.css"]
78
79
  };
79
80
  }
80
- static get assetsDirs() { return ["assets"]; }
81
+ static get assetsDirs() { return [""]; }
81
82
  static get properties() {
82
83
  return {
83
84
  "size": {
@@ -1 +1 @@
1
- {"version":3,"file":"gb-button.js","sourceRoot":"","sources":["../../../src/components/gb-button/gb-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AASnE,MAAM,OAAO,QAAQ;;;;;2BAIY,KAAK;;2BAEL,KAAK;;4BAEJ,KAAK;;8BAGH,EAAE;+BACD,EAAE;;IAErC,iBAAiB;QACf,kDAAkD;QAClD,oDAAoD;QACpD,IAAI;QACJ,oDAAoD;QACpD,sDAAsD;QACtD,IAAI;QAEJ,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,+DAA+D;IAC/D,4CAA4C;IAC5C,uCAAuC;IACvC,8BAA8B;IAC9B,iCAAiC;IACjC,aAAa;IACb,kCAAkC;IAClC,MAAM;IACN,IAAI;IAEJ,yDAAyD;IACzD,gBAAgB;QACd,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI;YACjB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,KAAK,KAAK,UAAU;YACnC,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;SAC3B,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,KAAM,CAAC,CAAC,OAAO,mBAAmB,CAAC;YACxC,KAAK,IAAK,CAAC,CAAC,OAAO,mBAAmB,CAAC;YACvC,KAAK,IAAK,CAAC,CAAC,OAAO,mBAAmB,CAAC;YACvC,KAAK,IAAK,CAAC,CAAC,OAAO,mBAAmB,CAAC;YACvC,KAAK,IAAK,CAAC,CAAC,OAAO,mBAAmB,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,WAAK,KAAK,EAAE,kBAAkB,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,GAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACzH,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,WAAK,KAAK,EAAC,iBAAiB,EAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,GAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7G,CAAC;IAED,MAAM;QACJ,OAAO,CACL,+DAAQ,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YACnC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACvE,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,8DAAa;YACxC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC9C,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAC1C,CACV,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, h, Prop, State } from '@stencil/core';\r\nimport { GeneralHierarchies, GeneralSizes } from '../../models/reusableModels';\r\n\r\n@Component({\r\n tag: 'gb-button',\r\n styleUrl: 'gb-button.css',\r\n shadow: true,\r\n assetsDirs: ['assets'],\r\n})\r\nexport class MyButton {\r\n @Prop() size: GeneralSizes;\r\n @Prop() hierarchy: GeneralHierarchies;\r\n @Prop() icon: 'default' | 'only';\r\n @Prop() destructive: boolean = false;\r\n @Prop() state: 'default' | 'hover' | 'disabled' | 'pressed';\r\n @Prop() iconLeading: boolean = false;\r\n @Prop() iconLeadingSwap: string;\r\n @Prop() iconTrailing: boolean = false;\r\n @Prop() iconTrailingSwap: string;\r\n @Element() el: HTMLElement;\r\n @State() leadingIconSvg: string = '';\r\n @State() trailingIconSvg: string = '';\r\n\r\n componentWillLoad() {\r\n // if (this.iconLeading && this.iconLeadingSwap) {\r\n // this.loadIcon(this.iconLeadingSwap, 'leading');\r\n // }\r\n // if (this.iconTrailing && this.iconTrailingSwap) {\r\n // this.loadIcon(this.iconTrailingSwap, 'trailing');\r\n // }\r\n\r\n const buttonSlot = this.el.querySelector('p');\r\n\r\n if (buttonSlot) {\r\n buttonSlot.classList.add(this.getButtonTextClasses());\r\n }\r\n }\r\n\r\n // async loadIcon(iconName: string, type: 'leading' | 'trailing') {\r\n // const iconPath = getAssetPath(`./assets/${iconName}.svg`);\r\n // const response = await fetch(iconPath);\r\n // const svg = await response.text();\r\n // if (type === 'leading') {\r\n // this.leadingIconSvg = svg;\r\n // } else {\r\n // this.trailingIconSvg = svg;\r\n // }\r\n // }\r\n\r\n // Helper to apply color styles based on the button state\r\n getButtonClasses() {\r\n return {\r\n button: true,\r\n [this.size]: true,\r\n [this.hierarchy]: true,\r\n destructive: this.destructive,\r\n disabled: this.state === 'disabled',\r\n default: this.icon === 'default',\r\n only: this.icon === 'only'\r\n };\r\n }\r\n\r\n getButtonTextClasses() {\r\n switch (this.size) {\r\n case 'xl2' : return 'text-lg-semi-bold';\r\n case 'xl' : return 'text-md-semi-bold';\r\n case 'lg' : return 'text-md-semi-bold';\r\n case 'md' : return 'text-sm-semi-bold';\r\n case 'sm' : return 'text-sm-semi-bold';\r\n }\r\n }\r\n\r\n renderLeadingIcon() {\r\n return this.leadingIconSvg ? <div class={`icon left-icon ${this.size}`} innerHTML={this.iconLeadingSwap}></div> : null;\r\n }\r\n\r\n renderTrailingIcon() {\r\n return this.trailingIconSvg ? <div class=\"icon right-icon\" innerHTML={this.iconTrailingSwap}></div> : null;\r\n }\r\n\r\n render() {\r\n return (\r\n <button class={this.getButtonClasses()}>\r\n {this.iconLeading && this.icon === 'default' && this.renderLeadingIcon()}\r\n {this.icon === 'default' && <slot></slot>}\r\n {this.iconTrailing && this.renderTrailingIcon()}\r\n {this.icon === 'only' && this.renderLeadingIcon()}\r\n </button>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"gb-button.js","sourceRoot":"","sources":["../../../src/components/gb-button/gb-button.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, getAssetPath, h, Prop, State } from '@stencil/core';\r\nimport { GeneralHierarchies, GeneralSizes } from '../../models/reusableModels';\r\n\r\n@Component({\r\n tag: 'gb-button',\r\n styleUrl: 'gb-button.css',\r\n shadow: true,\r\n assetsDirs: [''],\r\n})\r\nexport class MyButton {\r\n @Prop() size: GeneralSizes;\r\n @Prop() hierarchy: GeneralHierarchies;\r\n @Prop() icon: 'default' | 'only';\r\n @Prop() destructive: boolean = false;\r\n @Prop() state: 'default' | 'hover' | 'disabled' | 'pressed';\r\n @Prop() iconLeading: boolean = false;\r\n @Prop() iconLeadingSwap: string;\r\n @Prop() iconTrailing: boolean = false;\r\n @Prop() iconTrailingSwap: string;\r\n @Element() el: HTMLElement;\r\n @State() leadingIconSvg: string = '';\r\n @State() trailingIconSvg: string = '';\r\n\r\n componentWillLoad() {\r\n if (this.iconLeading && this.iconLeadingSwap) {\r\n this.loadIcon(this.iconLeadingSwap, 'leading');\r\n }\r\n if (this.iconTrailing && this.iconTrailingSwap) {\r\n this.loadIcon(this.iconTrailingSwap, 'trailing');\r\n }\r\n\r\n const buttonSlot = this.el.querySelector('p');\r\n\r\n if (buttonSlot) {\r\n buttonSlot.classList.add(this.getButtonTextClasses());\r\n }\r\n }\r\n\r\n async loadIcon(iconName: string, type: 'leading' | 'trailing') {\r\n const iconPath = getAssetPath(`${iconName}`);\r\n const response = await fetch(iconPath);\r\n const svg = await response.text();\r\n if (type === 'leading') {\r\n this.leadingIconSvg = svg;\r\n } else {\r\n this.trailingIconSvg = svg;\r\n }\r\n }\r\n\r\n // Helper to apply color styles based on the button state\r\n getButtonClasses() {\r\n return {\r\n button: true,\r\n [this.size]: true,\r\n [this.hierarchy]: true,\r\n destructive: this.destructive,\r\n disabled: this.state === 'disabled',\r\n default: this.icon === 'default',\r\n only: this.icon === 'only'\r\n };\r\n }\r\n\r\n getButtonTextClasses() {\r\n switch (this.size) {\r\n case 'xl2' : return 'text-lg-semi-bold';\r\n case 'xl' : return 'text-md-semi-bold';\r\n case 'lg' : return 'text-md-semi-bold';\r\n case 'md' : return 'text-sm-semi-bold';\r\n case 'sm' : return 'text-sm-semi-bold';\r\n }\r\n }\r\n\r\n renderLeadingIcon() {\r\n return <div class={`icon left-icon ${this.size}`} innerHTML={this.leadingIconSvg}></div>;\r\n }\r\n\r\n renderTrailingIcon() {\r\n return <div class=\"icon right-icon\" innerHTML={this.trailingIconSvg}></div>;\r\n }\r\n\r\n render() {\r\n return (\r\n <button class={this.getButtonClasses()}>\r\n {this.iconLeading && this.icon === 'default' && this.renderLeadingIcon()}\r\n {this.icon === 'default' && <slot></slot>}\r\n {this.iconTrailing && this.renderTrailingIcon()}\r\n {this.icon === 'only' && this.renderLeadingIcon()}\r\n </button>\r\n );\r\n }\r\n}\r\n"]}
@@ -0,0 +1,91 @@
1
+ import { Component, Element, getAssetPath, h, Prop, State } from '@stencil/core';
2
+ import { GeneralHierarchies, GeneralSizes } from '../../models/reusableModels';
3
+
4
+ @Component({
5
+ tag: 'gb-button',
6
+ styleUrl: 'gb-button.css',
7
+ shadow: true,
8
+ assetsDirs: [''],
9
+ })
10
+ export class MyButton {
11
+ @Prop() size: GeneralSizes;
12
+ @Prop() hierarchy: GeneralHierarchies;
13
+ @Prop() icon: 'default' | 'only';
14
+ @Prop() destructive: boolean = false;
15
+ @Prop() state: 'default' | 'hover' | 'disabled' | 'pressed';
16
+ @Prop() iconLeading: boolean = false;
17
+ @Prop() iconLeadingSwap: string;
18
+ @Prop() iconTrailing: boolean = false;
19
+ @Prop() iconTrailingSwap: string;
20
+ @Element() el: HTMLElement;
21
+ @State() leadingIconSvg: string = '';
22
+ @State() trailingIconSvg: string = '';
23
+
24
+ componentWillLoad() {
25
+ if (this.iconLeading && this.iconLeadingSwap) {
26
+ this.loadIcon(this.iconLeadingSwap, 'leading');
27
+ }
28
+ if (this.iconTrailing && this.iconTrailingSwap) {
29
+ this.loadIcon(this.iconTrailingSwap, 'trailing');
30
+ }
31
+
32
+ const buttonSlot = this.el.querySelector('p');
33
+
34
+ if (buttonSlot) {
35
+ buttonSlot.classList.add(this.getButtonTextClasses());
36
+ }
37
+ }
38
+
39
+ async loadIcon(iconName: string, type: 'leading' | 'trailing') {
40
+ const iconPath = getAssetPath(`${iconName}`);
41
+ const response = await fetch(iconPath);
42
+ const svg = await response.text();
43
+ if (type === 'leading') {
44
+ this.leadingIconSvg = svg;
45
+ } else {
46
+ this.trailingIconSvg = svg;
47
+ }
48
+ }
49
+
50
+ // Helper to apply color styles based on the button state
51
+ getButtonClasses() {
52
+ return {
53
+ button: true,
54
+ [this.size]: true,
55
+ [this.hierarchy]: true,
56
+ destructive: this.destructive,
57
+ disabled: this.state === 'disabled',
58
+ default: this.icon === 'default',
59
+ only: this.icon === 'only'
60
+ };
61
+ }
62
+
63
+ getButtonTextClasses() {
64
+ switch (this.size) {
65
+ case 'xl2' : return 'text-lg-semi-bold';
66
+ case 'xl' : return 'text-md-semi-bold';
67
+ case 'lg' : return 'text-md-semi-bold';
68
+ case 'md' : return 'text-sm-semi-bold';
69
+ case 'sm' : return 'text-sm-semi-bold';
70
+ }
71
+ }
72
+
73
+ renderLeadingIcon() {
74
+ return <div class={`icon left-icon ${this.size}`} innerHTML={this.leadingIconSvg}></div>;
75
+ }
76
+
77
+ renderTrailingIcon() {
78
+ return <div class="icon right-icon" innerHTML={this.trailingIconSvg}></div>;
79
+ }
80
+
81
+ render() {
82
+ return (
83
+ <button class={this.getButtonClasses()}>
84
+ {this.iconLeading && this.icon === 'default' && this.renderLeadingIcon()}
85
+ {this.icon === 'default' && <slot></slot>}
86
+ {this.iconTrailing && this.renderTrailingIcon()}
87
+ {this.icon === 'only' && this.renderLeadingIcon()}
88
+ </button>
89
+ );
90
+ }
91
+ }