@scouterna/ui-webc 1.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/dist/cjs/{index-D42maJcS.js → index-5z4HClQY.js} +7 -8
  2. package/dist/cjs/index-5z4HClQY.js.map +1 -0
  3. package/dist/cjs/loader.cjs.js +2 -2
  4. package/dist/cjs/scout-bottom-bar-item.cjs.entry.js +8 -2
  5. package/dist/cjs/scout-bottom-bar-item.entry.cjs.js.map +1 -1
  6. package/dist/cjs/scout-bottom-bar.cjs.entry.js +2 -2
  7. package/dist/cjs/scout-button.cjs.entry.js +18 -3
  8. package/dist/cjs/scout-button.entry.cjs.js.map +1 -1
  9. package/dist/cjs/scout-card.cjs.entry.js +2 -2
  10. package/dist/cjs/scout-checkbox.cjs.entry.js +53 -0
  11. package/dist/cjs/scout-checkbox.entry.cjs.js.map +1 -0
  12. package/dist/cjs/scout-divider.cjs.entry.js +19 -0
  13. package/dist/cjs/scout-divider.entry.cjs.js.map +1 -0
  14. package/dist/cjs/scout-field.cjs.entry.js +2 -2
  15. package/dist/cjs/scout-input.cjs.entry.js +1 -1
  16. package/dist/cjs/scout-link.cjs.entry.js +64 -0
  17. package/dist/cjs/scout-link.entry.cjs.js.map +1 -0
  18. package/dist/cjs/scout-list-view-item.cjs.entry.js +64 -0
  19. package/dist/cjs/scout-list-view-item.entry.cjs.js.map +1 -0
  20. package/dist/cjs/scout-list-view.cjs.entry.js +21 -0
  21. package/dist/cjs/scout-list-view.entry.cjs.js.map +1 -0
  22. package/dist/cjs/scout-loader.cjs.entry.js +73 -0
  23. package/dist/cjs/scout-loader.entry.cjs.js.map +1 -0
  24. package/dist/cjs/scout-select.cjs.entry.js +60 -0
  25. package/dist/cjs/scout-select.entry.cjs.js.map +1 -0
  26. package/dist/cjs/scout-stack.cjs.entry.js +39 -0
  27. package/dist/cjs/scout-stack.entry.cjs.js.map +1 -0
  28. package/dist/cjs/scout-switch.cjs.entry.js +49 -0
  29. package/dist/cjs/scout-switch.entry.cjs.js.map +1 -0
  30. package/dist/cjs/ui-webc.cjs.js +3 -3
  31. package/dist/cjs/ui-webc.cjs.js.map +1 -1
  32. package/dist/collection/collection-manifest.json +11 -2
  33. package/dist/collection/components/bottom-bar/bottom-bar.js +1 -1
  34. package/dist/collection/components/bottom-bar-item/bottom-bar-item.js +46 -2
  35. package/dist/collection/components/bottom-bar-item/bottom-bar-item.js.map +1 -1
  36. package/dist/collection/components/button/button.css +19 -17
  37. package/dist/collection/components/button/button.js +76 -4
  38. package/dist/collection/components/button/button.js.map +1 -1
  39. package/dist/collection/components/card/card.js +1 -1
  40. package/dist/collection/components/checkbox/checkbox.css +81 -0
  41. package/dist/collection/components/checkbox/checkbox.js +176 -0
  42. package/dist/collection/components/checkbox/checkbox.js.map +1 -0
  43. package/dist/collection/components/divider/divider.css +5 -0
  44. package/dist/collection/components/divider/divider.js +20 -0
  45. package/dist/collection/components/divider/divider.js.map +1 -0
  46. package/dist/collection/components/field/field.js +1 -1
  47. package/dist/collection/components/input/input.js +2 -2
  48. package/dist/collection/components/link/link.css +30 -0
  49. package/dist/collection/components/link/link.js +207 -0
  50. package/dist/collection/components/link/link.js.map +1 -0
  51. package/dist/collection/components/list-view/list-view.css +5 -0
  52. package/dist/collection/components/list-view/list-view.js +22 -0
  53. package/dist/collection/components/list-view/list-view.js.map +1 -0
  54. package/dist/collection/components/list-view-item/list-view-item.css +72 -0
  55. package/dist/collection/components/list-view-item/list-view-item.js +226 -0
  56. package/dist/collection/components/list-view-item/list-view-item.js.map +1 -0
  57. package/dist/collection/components/loader/loader.css +121 -0
  58. package/dist/collection/components/loader/loader.js +111 -0
  59. package/dist/collection/components/loader/loader.js.map +1 -0
  60. package/dist/collection/components/loader/symbols/adventurer.svg +22 -0
  61. package/dist/collection/components/loader/symbols/challenger.svg +22 -0
  62. package/dist/collection/components/loader/symbols/discoverer.svg +22 -0
  63. package/dist/collection/components/loader/symbols/family-scout.svg +22 -0
  64. package/dist/collection/components/loader/symbols/rover.svg +22 -0
  65. package/dist/collection/components/loader/symbols/tracker.svg +22 -0
  66. package/dist/collection/components/select/select.css +60 -0
  67. package/dist/collection/components/select/select.js +176 -0
  68. package/dist/collection/components/select/select.js.map +1 -0
  69. package/dist/collection/components/stack/stack.css +6 -0
  70. package/dist/collection/components/stack/stack.js +96 -0
  71. package/dist/collection/components/stack/stack.js.map +1 -0
  72. package/dist/collection/components/switch/switch.css +79 -0
  73. package/dist/collection/components/switch/switch.js +173 -0
  74. package/dist/collection/components/switch/switch.js.map +1 -0
  75. package/dist/components/index.js +1 -1
  76. package/dist/components/{p-MfRr-Vl1.js → p-S6Ssep7K.js} +7 -9
  77. package/dist/components/p-S6Ssep7K.js.map +1 -0
  78. package/dist/components/scout-bottom-bar-item.js +11 -3
  79. package/dist/components/scout-bottom-bar-item.js.map +1 -1
  80. package/dist/components/scout-bottom-bar.js +2 -2
  81. package/dist/components/scout-button.js +22 -4
  82. package/dist/components/scout-button.js.map +1 -1
  83. package/dist/components/scout-card.js +2 -2
  84. package/dist/components/scout-checkbox.d.ts +11 -0
  85. package/dist/components/scout-checkbox.js +78 -0
  86. package/dist/components/scout-checkbox.js.map +1 -0
  87. package/dist/components/scout-divider.d.ts +11 -0
  88. package/dist/components/scout-divider.js +39 -0
  89. package/dist/components/scout-divider.js.map +1 -0
  90. package/dist/components/scout-field.js +3 -3
  91. package/dist/components/scout-input.js +2 -2
  92. package/dist/components/scout-link.d.ts +11 -0
  93. package/dist/components/scout-link.js +91 -0
  94. package/dist/components/scout-link.js.map +1 -0
  95. package/dist/components/scout-list-view-item.d.ts +11 -0
  96. package/dist/components/scout-list-view-item.js +92 -0
  97. package/dist/components/scout-list-view-item.js.map +1 -0
  98. package/dist/components/scout-list-view.d.ts +11 -0
  99. package/dist/components/scout-list-view.js +41 -0
  100. package/dist/components/scout-list-view.js.map +1 -0
  101. package/dist/components/scout-loader.d.ts +11 -0
  102. package/dist/components/scout-loader.js +96 -0
  103. package/dist/components/scout-loader.js.map +1 -0
  104. package/dist/components/scout-select.d.ts +11 -0
  105. package/dist/components/scout-select.js +84 -0
  106. package/dist/components/scout-select.js.map +1 -0
  107. package/dist/components/scout-stack.d.ts +11 -0
  108. package/dist/components/scout-stack.js +62 -0
  109. package/dist/components/scout-stack.js.map +1 -0
  110. package/dist/components/scout-switch.d.ts +11 -0
  111. package/dist/components/scout-switch.js +75 -0
  112. package/dist/components/scout-switch.js.map +1 -0
  113. package/dist/custom-elements.json +1399 -133
  114. package/dist/esm/{index-DByXnE9g.js → index-BI7oh__S.js} +7 -9
  115. package/dist/esm/index-BI7oh__S.js.map +1 -0
  116. package/dist/esm/loader.js +3 -3
  117. package/dist/esm/scout-bottom-bar-item.entry.js +8 -2
  118. package/dist/esm/scout-bottom-bar-item.entry.js.map +1 -1
  119. package/dist/esm/scout-bottom-bar.entry.js +2 -2
  120. package/dist/esm/scout-button.entry.js +18 -3
  121. package/dist/esm/scout-button.entry.js.map +1 -1
  122. package/dist/esm/scout-card.entry.js +2 -2
  123. package/dist/esm/scout-checkbox.entry.js +51 -0
  124. package/dist/esm/scout-checkbox.entry.js.map +1 -0
  125. package/dist/esm/scout-divider.entry.js +17 -0
  126. package/dist/esm/scout-divider.entry.js.map +1 -0
  127. package/dist/esm/scout-field.entry.js +2 -2
  128. package/dist/esm/scout-input.entry.js +1 -1
  129. package/dist/esm/scout-link.entry.js +62 -0
  130. package/dist/esm/scout-link.entry.js.map +1 -0
  131. package/dist/esm/scout-list-view-item.entry.js +62 -0
  132. package/dist/esm/scout-list-view-item.entry.js.map +1 -0
  133. package/dist/esm/scout-list-view.entry.js +19 -0
  134. package/dist/esm/scout-list-view.entry.js.map +1 -0
  135. package/dist/esm/scout-loader.entry.js +71 -0
  136. package/dist/esm/scout-loader.entry.js.map +1 -0
  137. package/dist/esm/scout-select.entry.js +58 -0
  138. package/dist/esm/scout-select.entry.js.map +1 -0
  139. package/dist/esm/scout-stack.entry.js +37 -0
  140. package/dist/esm/scout-stack.entry.js.map +1 -0
  141. package/dist/esm/scout-switch.entry.js +47 -0
  142. package/dist/esm/scout-switch.entry.js.map +1 -0
  143. package/dist/esm/ui-webc.js +4 -4
  144. package/dist/esm/ui-webc.js.map +1 -1
  145. package/dist/types/components/bottom-bar-item/bottom-bar-item.d.ts +2 -0
  146. package/dist/types/components/button/button.d.ts +4 -1
  147. package/dist/types/components/checkbox/checkbox.d.ts +22 -0
  148. package/dist/types/components/divider/divider.d.ts +3 -0
  149. package/dist/types/components/link/link.d.ts +39 -0
  150. package/dist/types/components/list-view/list-view.d.ts +3 -0
  151. package/dist/types/components/list-view-item/list-view-item.d.ts +16 -0
  152. package/dist/types/components/loader/loader.d.ts +15 -0
  153. package/dist/types/components/select/select.d.ts +31 -0
  154. package/dist/types/components/stack/stack.d.ts +22 -0
  155. package/dist/types/components/switch/switch.d.ts +25 -0
  156. package/dist/types/components.d.ts +429 -2
  157. package/dist/types/stencil-public-runtime.d.ts +20 -11
  158. package/dist/ui-webc/p-15634492.entry.js +2 -0
  159. package/dist/ui-webc/p-15634492.entry.js.map +1 -0
  160. package/dist/ui-webc/{p-383736c1.entry.js → p-316eed06.entry.js} +2 -2
  161. package/dist/ui-webc/p-4064b941.entry.js +2 -0
  162. package/dist/ui-webc/p-4064b941.entry.js.map +1 -0
  163. package/dist/ui-webc/p-5e2c0abc.entry.js +2 -0
  164. package/dist/ui-webc/p-5e2c0abc.entry.js.map +1 -0
  165. package/dist/ui-webc/{p-9b7c270d.entry.js → p-662554f2.entry.js} +2 -2
  166. package/dist/ui-webc/p-72e5904f.entry.js +2 -0
  167. package/dist/ui-webc/p-72e5904f.entry.js.map +1 -0
  168. package/dist/ui-webc/p-939fb179.entry.js +2 -0
  169. package/dist/ui-webc/p-939fb179.entry.js.map +1 -0
  170. package/dist/ui-webc/p-93c5edd1.entry.js +2 -0
  171. package/dist/ui-webc/p-93c5edd1.entry.js.map +1 -0
  172. package/dist/ui-webc/p-9c2bb8d7.entry.js +2 -0
  173. package/dist/ui-webc/p-9c2bb8d7.entry.js.map +1 -0
  174. package/dist/ui-webc/p-BI7oh__S.js +3 -0
  175. package/dist/ui-webc/p-BI7oh__S.js.map +1 -0
  176. package/dist/ui-webc/{p-fb926c68.entry.js → p-b24cd5e8.entry.js} +2 -2
  177. package/dist/ui-webc/p-b7e542b2.entry.js +2 -0
  178. package/dist/ui-webc/p-b7e542b2.entry.js.map +1 -0
  179. package/dist/ui-webc/p-d0b4b8c4.entry.js +2 -0
  180. package/dist/ui-webc/p-df4ec2af.entry.js +2 -0
  181. package/dist/ui-webc/p-df4ec2af.entry.js.map +1 -0
  182. package/dist/ui-webc/p-eb235f73.entry.js +2 -0
  183. package/dist/ui-webc/p-eb235f73.entry.js.map +1 -0
  184. package/dist/ui-webc/p-f164c4f7.entry.js +2 -0
  185. package/dist/ui-webc/p-f164c4f7.entry.js.map +1 -0
  186. package/dist/ui-webc/scout-bottom-bar-item.entry.esm.js.map +1 -1
  187. package/dist/ui-webc/scout-button.entry.esm.js.map +1 -1
  188. package/dist/ui-webc/scout-checkbox.entry.esm.js.map +1 -0
  189. package/dist/ui-webc/scout-divider.entry.esm.js.map +1 -0
  190. package/dist/ui-webc/scout-link.entry.esm.js.map +1 -0
  191. package/dist/ui-webc/scout-list-view-item.entry.esm.js.map +1 -0
  192. package/dist/ui-webc/scout-list-view.entry.esm.js.map +1 -0
  193. package/dist/ui-webc/scout-loader.entry.esm.js.map +1 -0
  194. package/dist/ui-webc/scout-select.entry.esm.js.map +1 -0
  195. package/dist/ui-webc/scout-stack.entry.esm.js.map +1 -0
  196. package/dist/ui-webc/scout-switch.entry.esm.js.map +1 -0
  197. package/dist/ui-webc/ui-webc.css +2 -2
  198. package/dist/ui-webc/ui-webc.esm.js +1 -1
  199. package/dist/ui-webc/ui-webc.esm.js.map +1 -1
  200. package/package.json +10 -9
  201. package/dist/cjs/index-D42maJcS.js.map +0 -1
  202. package/dist/components/p-MfRr-Vl1.js.map +0 -1
  203. package/dist/esm/index-DByXnE9g.js.map +0 -1
  204. package/dist/ui-webc/p-99329c64.entry.js +0 -2
  205. package/dist/ui-webc/p-99329c64.entry.js.map +0 -1
  206. package/dist/ui-webc/p-DByXnE9g.js +0 -3
  207. package/dist/ui-webc/p-DByXnE9g.js.map +0 -1
  208. package/dist/ui-webc/p-c0c3a4af.entry.js +0 -2
  209. package/dist/ui-webc/p-e7602729.entry.js +0 -2
  210. package/dist/ui-webc/p-e7602729.entry.js.map +0 -1
  211. /package/dist/ui-webc/{p-383736c1.entry.js.map → p-316eed06.entry.js.map} +0 -0
  212. /package/dist/ui-webc/{p-9b7c270d.entry.js.map → p-662554f2.entry.js.map} +0 -0
  213. /package/dist/ui-webc/{p-fb926c68.entry.js.map → p-b24cd5e8.entry.js.map} +0 -0
  214. /package/dist/ui-webc/{p-c0c3a4af.entry.js.map → p-d0b4b8c4.entry.js.map} +0 -0
@@ -1,10 +1,10 @@
1
- import { g as globalScripts, b as bootstrapLazy } from './index-DByXnE9g.js';
2
- export { s as setNonce } from './index-DByXnE9g.js';
1
+ import { g as globalScripts, b as bootstrapLazy } from './index-BI7oh__S.js';
2
+ export { s as setNonce } from './index-BI7oh__S.js';
3
3
 
4
4
  const defineCustomElements = async (win, options) => {
5
5
  if (typeof window === 'undefined') return undefined;
6
6
  await globalScripts();
7
- return bootstrapLazy([["scout-bottom-bar",[[273,"scout-bottom-bar"]]],["scout-bottom-bar-item",[[273,"scout-bottom-bar-item",{"type":[1],"href":[1],"icon":[1],"label":[1],"active":[4]}]]],["scout-button",[[273,"scout-button",{"type":[1],"variant":[1],"icon":[1]}]]],["scout-card",[[273,"scout-card"]]],["scout-field",[[262,"scout-field",{"label":[1],"helpText":[1,"help-text"],"inputId":[32],"errorText":[32],"errorHidden":[32]},[[0,"_fieldId","catchFieldId"],[0,"scoutInputChange","handleInputChange"],[0,"scoutBlur","handleValidationBlur"]]]]],["scout-input",[[258,"scout-input",{"type":[1],"inputmode":[1],"pattern":[1],"value":[1],"disabled":[4],"validate":[16],"ariaId":[32]}]]]], options);
7
+ return bootstrapLazy([["scout-bottom-bar",[[273,"scout-bottom-bar"]]],["scout-bottom-bar-item",[[785,"scout-bottom-bar-item",{"type":[1],"href":[1],"target":[1],"rel":[1],"icon":[1],"label":[1],"active":[4]}]]],["scout-button",[[785,"scout-button",{"type":[1],"href":[1],"target":[1],"rel":[1],"variant":[1],"icon":[1]}]]],["scout-card",[[273,"scout-card"]]],["scout-checkbox",[[770,"scout-checkbox",{"checked":[4],"disabled":[4],"ariaLabelledby":[1,"aria-labelledby"],"label":[1],"ariaId":[32]}]]],["scout-divider",[[273,"scout-divider"]]],["scout-field",[[774,"scout-field",{"label":[1],"helpText":[1,"help-text"],"inputId":[32],"errorText":[32],"errorHidden":[32]},[[0,"_fieldId","catchFieldId"],[0,"scoutInputChange","handleInputChange"],[0,"scoutBlur","handleValidationBlur"]]]]],["scout-input",[[770,"scout-input",{"type":[1],"inputmode":[1],"pattern":[1],"value":[1],"disabled":[4],"validate":[16],"ariaId":[32]}]]],["scout-link",[[785,"scout-link",{"href":[1],"label":[1],"rel":[1],"linkAriaLabel":[1,"link-aria-label"],"type":[1],"target":[1]}]]],["scout-list-view",[[273,"scout-list-view"]]],["scout-list-view-item",[[785,"scout-list-view-item",{"icon":[1],"primary":[1],"secondary":[1],"type":[1],"href":[1],"target":[1],"rel":[1]}]]],["scout-loader",[[769,"scout-loader",{"text":[1],"size":[1]}]]],["scout-select",[[774,"scout-select",{"value":[1],"disabled":[4],"validate":[16],"ariaId":[32]}]]],["scout-stack",[[785,"scout-stack",{"direction":[1],"gapSize":[1,"gap-size"]}]]],["scout-switch",[[785,"scout-switch",{"toggled":[4],"disabled":[4],"ariaLabelledby":[1,"aria-labelledby"],"label":[1],"ariaId":[32]}]]]], options);
8
8
  };
9
9
 
10
10
  export { defineCustomElements };
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-DByXnE9g.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-BI7oh__S.js';
2
2
 
3
3
  function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
4
4
 
@@ -18,6 +18,8 @@ const ScoutBottomBarItem = class {
18
18
  * `type` is set to "link".
19
19
  */
20
20
  href;
21
+ target;
22
+ rel;
21
23
  /**
22
24
  * An icon to display above the label. Must be an SVG string.
23
25
  */
@@ -37,9 +39,13 @@ const ScoutBottomBarItem = class {
37
39
  const props = this.type === "link"
38
40
  ? {
39
41
  href: this.href,
42
+ target: this.target,
43
+ // This might not be our job, but better safe than sorry.
44
+ rel: this.rel ??
45
+ (this.target === "_blank" ? "noopener noreferrer" : undefined),
40
46
  }
41
47
  : {};
42
- return (h(Tag, { key: 'da439bd71733883dd610eb24b9ffffb9bb2369e1', class: clsx("button", this.active && "active"), onClick: () => this.scoutClick.emit(), ...props }, h("span", { key: 'e3267d4487d643265984555155760cbdb242ef81', class: "icon", innerHTML: this.icon }), h("span", { key: '02ade513642f237b24ef25856bf4b56e386b7b2a', class: "label" }, this.label)));
48
+ return (h(Tag, { key: 'd6accb2a7bb0af55f33dba3299749b7ec5ba68a4', class: clsx("button", this.active && "active"), onClick: () => this.scoutClick.emit(), ...props }, h("span", { key: '419edd0be8ff7a4f91aeb1641afffb9d949efba2', class: "icon", innerHTML: this.icon }), h("span", { key: 'e1e40f9a192ffe8a0152a1d0333fbedf174e7bea', class: "label" }, this.label)));
43
49
  }
44
50
  static get delegatesFocus() { return true; }
45
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"scout-bottom-bar-item.entry.js","sources":["../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","src/components/bottom-bar-item/bottom-bar-item.css?tag=scout-bottom-bar-item&encapsulation=shadow","src/components/bottom-bar-item/bottom-bar-item.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;",":host {\n display: flex;\n flex: 1;\n}\n\n.button {\n display: flex;\n flex-direction: column;\n flex: 1;\n justify-content: center;\n align-items: center;\n background-color: transparent;\n border: none;\n color: var(--color-text-base);\n cursor: pointer;\n}\n\n.button:hover {\n background-color: var(--color-neutral-50);\n}\n\n.button.active {\n background-color: var(--color-blue-50);\n color: var(--color-blue-500);\n}\n\n.button .icon {\n width: var(--spacing-6);\n height: var(--spacing-6);\n}\n\n.button .label {\n font: var(--type-label-sm);\n}\n\na {\n text-decoration: none;\n}","import { Component, Event, type EventEmitter, h, Prop } from \"@stencil/core\";\nimport clsx from \"clsx\";\n\nexport type ItemType = \"button\" | \"link\";\n\n/**\n * A bottom bar item used within the bottom bar for navigation. Should not be\n * used outside of a bottom bar.\n */\n@Component({\n tag: \"scout-bottom-bar-item\",\n styleUrl: \"bottom-bar-item.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutBottomBarItem {\n /**\n * The type of the bottom bar item, either a button or a link.\n */\n @Prop() type: ItemType = \"button\";\n\n /**\n * An optional link to navigate to when the item is clicked. Only used when\n * `type` is set to \"link\".\n */\n @Prop() href?: string;\n\n /**\n * An icon to display above the label. Must be an SVG string.\n */\n @Prop() icon!: string;\n\n /**\n * The label to display below the icon.\n */\n @Prop() label!: string;\n\n /**\n * Whether the item is currently active. Should be set to true when the item\n * represents the current page.\n */\n @Prop() active?: boolean;\n\n @Event() scoutClick: EventEmitter<void>;\n\n render() {\n const Tag = this.type === \"link\" ? \"a\" : \"button\";\n\n const props =\n this.type === \"link\"\n ? {\n href: this.href,\n }\n : {};\n\n return (\n <Tag\n class={clsx(\"button\", this.active && \"active\")}\n onClick={() => this.scoutClick.emit()}\n {...props}\n >\n <span class=\"icon\" innerHTML={this.icon} />\n <span class=\"label\">{this.label}</span>\n </Tag>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;;ACA/W,MAAM,gBAAgB,GAAG,+eAA+e;;MCgB3f,kBAAkB,GAAA,MAAA;;;;;AAC7B;;AAEG;IACK,IAAI,GAAa,QAAQ;AAEjC;;;AAGG;AACK,IAAA,IAAI;AAEZ;;AAEG;AACK,IAAA,IAAI;AAEZ;;AAEG;AACK,IAAA,KAAK;AAEb;;;AAGG;AACK,IAAA,MAAM;AAEL,IAAA,UAAU;IAEnB,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,GAAG,GAAG,QAAQ;AAEjD,QAAA,MAAM,KAAK,GACT,IAAI,CAAC,IAAI,KAAK;AACZ,cAAE;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB;cACD,EAAE;AAER,QAAA,QACE,CAAA,CAAC,GAAG,EAAA,EAAA,GAAA,EAAA,0CAAA,EACF,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,EAC9C,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KACjC,KAAK,EAAA,EAET,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,MAAM,EAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAI,CAAA,EAC3C,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,OAAO,EAAE,EAAA,IAAI,CAAC,KAAK,CAAQ,CACnC;;;;;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"scout-bottom-bar-item.entry.js","sources":["../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","src/components/bottom-bar-item/bottom-bar-item.css?tag=scout-bottom-bar-item&encapsulation=shadow","src/components/bottom-bar-item/bottom-bar-item.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;",":host {\n display: flex;\n flex: 1;\n}\n\n.button {\n display: flex;\n flex-direction: column;\n flex: 1;\n justify-content: center;\n align-items: center;\n background-color: transparent;\n border: none;\n color: var(--color-text-base);\n cursor: pointer;\n}\n\n.button:hover {\n background-color: var(--color-neutral-50);\n}\n\n.button.active {\n background-color: var(--color-blue-50);\n color: var(--color-blue-500);\n}\n\n.button .icon {\n width: var(--spacing-6);\n height: var(--spacing-6);\n}\n\n.button .label {\n font: var(--type-label-sm);\n}\n\na {\n text-decoration: none;\n}","import { Component, Event, type EventEmitter, h, Prop } from \"@stencil/core\";\nimport clsx from \"clsx\";\n\nexport type ItemType = \"button\" | \"link\";\n\n/**\n * A bottom bar item used within the bottom bar for navigation. Should not be\n * used outside of a bottom bar.\n */\n@Component({\n tag: \"scout-bottom-bar-item\",\n styleUrl: \"bottom-bar-item.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutBottomBarItem {\n /**\n * The type of the bottom bar item, either a button or a link.\n */\n @Prop() type: ItemType = \"button\";\n\n /**\n * An optional link to navigate to when the item is clicked. Only used when\n * `type` is set to \"link\".\n */\n @Prop() href?: string;\n @Prop() target?: string;\n @Prop() rel?: string;\n\n /**\n * An icon to display above the label. Must be an SVG string.\n */\n @Prop() icon!: string;\n\n /**\n * The label to display below the icon.\n */\n @Prop() label!: string;\n\n /**\n * Whether the item is currently active. Should be set to true when the item\n * represents the current page.\n */\n @Prop() active?: boolean;\n\n @Event() scoutClick: EventEmitter<void>;\n\n render() {\n const Tag = this.type === \"link\" ? \"a\" : \"button\";\n\n const props =\n this.type === \"link\"\n ? {\n href: this.href,\n target: this.target,\n // This might not be our job, but better safe than sorry.\n rel:\n this.rel ??\n (this.target === \"_blank\" ? \"noopener noreferrer\" : undefined),\n }\n : {};\n\n return (\n <Tag\n class={clsx(\"button\", this.active && \"active\")}\n onClick={() => this.scoutClick.emit()}\n {...props}\n >\n <span class=\"icon\" innerHTML={this.icon} />\n <span class=\"label\">{this.label}</span>\n </Tag>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;;ACA/W,MAAM,gBAAgB,GAAG,+eAA+e;;MCgB3f,kBAAkB,GAAA,MAAA;;;;;AAC7B;;AAEG;IACK,IAAI,GAAa,QAAQ;AAEjC;;;AAGG;AACK,IAAA,IAAI;AACJ,IAAA,MAAM;AACN,IAAA,GAAG;AAEX;;AAEG;AACK,IAAA,IAAI;AAEZ;;AAEG;AACK,IAAA,KAAK;AAEb;;;AAGG;AACK,IAAA,MAAM;AAEL,IAAA,UAAU;IAEnB,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,GAAG,GAAG,QAAQ;AAEjD,QAAA,MAAM,KAAK,GACT,IAAI,CAAC,IAAI,KAAK;AACZ,cAAE;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;;gBAEnB,GAAG,EACD,IAAI,CAAC,GAAG;AACR,qBAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,qBAAqB,GAAG,SAAS,CAAC;AACjE;cACD,EAAE;AAER,QAAA,QACE,CAAA,CAAC,GAAG,EAAA,EAAA,GAAA,EAAA,0CAAA,EACF,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,EAC9C,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KACjC,KAAK,EAAA,EAET,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,MAAM,EAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAI,CAAA,EAC3C,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,OAAO,EAAE,EAAA,IAAI,CAAC,KAAK,CAAQ,CACnC;;;;;;;;","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h } from './index-DByXnE9g.js';
1
+ import { r as registerInstance, h } from './index-BI7oh__S.js';
2
2
 
3
3
  const bottomBarCss = ":host{display:flex;width:100%}.container{display:flex;flex:1;height:var(--spacing-14);border-top:1px solid var(--color-neutral-100)}";
4
4
 
@@ -7,7 +7,7 @@ const ScoutBottomBar = class {
7
7
  registerInstance(this, hostRef);
8
8
  }
9
9
  render() {
10
- return (h("nav", { key: '0904c3ec8b60ca5fe9a2ed4d68ea2b6fcb55f0dc', class: "container" }, h("slot", { key: '18223004272416c7ced4ff31a160adbb451a7367' })));
10
+ return (h("nav", { key: '9bee87231edda78b5d5b52cbba60c4686f98307b', class: "container" }, h("slot", { key: 'f6d625aa11702ee7382384aa32f8a8d8e5bf55f8' })));
11
11
  }
12
12
  static get delegatesFocus() { return true; }
13
13
  };
@@ -1,6 +1,6 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-DByXnE9g.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-BI7oh__S.js';
2
2
 
3
- const buttonCss = ":host{display:inline-flex}button{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-3);height:var(--spacing-10);padding:0 var(--spacing-4);font:var(--type-body-base);border-radius:var(--spacing-2);border:1px solid transparent;cursor:pointer}.icon{width:var(--spacing-5);height:var(--spacing-5);margin:0 calc(var(--spacing-1) * -1)}.icon svg{width:100%;height:100%}button.primary{background-color:var(--color-background-brand-base);color:var(--color-text-brand-inverse)}button.primary:hover{background-color:var(--color-background-brand-hovered)}button.primary:active{background-color:var(--color-background-brand-pressed)}button.outlined{background-color:transparent;border-color:var(--color-background-brand-subtle-base);color:var(--color-text-brand-base)}button.outlined:hover{background-color:var(--color-background-brand-subtle-hovered)}button.outlined:active{background-color:var(--color-background-brand-subtle-pressed)}button.text{background-color:transparent;border-color:transparent;color:var(--color-text-brand-base)}button.text:hover{background-color:var(--color-background-brand-subtle-hovered)}button.text:active{background-color:var(--color-background-brand-subtle-pressed)}button.caution{background-color:var(--color-background-caution-bold-base);color:var(--color-text-caution-bold-base)}button.caution:hover{background-color:var(--color-background-caution-bold-hovered)}button.caution:active{background-color:var(--color-background-caution-bold-pressed)}button.danger{background-color:var(--color-background-danger-bold-base);color:var(--color-text-danger-bold-base)}button.danger:hover{background-color:var(--color-background-danger-bold-hovered)}button.danger:active{background-color:var(--color-background-danger-bold-pressed)}";
3
+ const buttonCss = ":host{display:inline-flex}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-3);height:var(--spacing-10);padding:0 var(--spacing-4);font:var(--type-body-base);border-radius:var(--spacing-2);border:1px solid transparent;cursor:pointer;-webkit-text-decoration:none;text-decoration:none}.icon{width:var(--spacing-5);height:var(--spacing-5);margin:0 calc(var(--spacing-1) * -1)}.icon svg{width:100%;height:100%}.button.primary{background-color:var(--color-background-brand-base);color:var(--color-text-brand-inverse)}.button.primary:hover{background-color:var(--color-background-brand-hovered)}.button.primary:active{background-color:var(--color-background-brand-pressed)}.button.outlined{background-color:transparent;border-color:var(--color-background-brand-subtle-base);color:var(--color-text-brand-base)}.button.outlined:hover{background-color:var(--color-background-brand-subtle-hovered)}.button.outlined:active{background-color:var(--color-background-brand-subtle-pressed)}.button.text{background-color:transparent;border-color:transparent;color:var(--color-text-brand-base)}.button.text:hover{background-color:var(--color-background-brand-subtle-hovered)}.button.text:active{background-color:var(--color-background-brand-subtle-pressed)}.button.caution{background-color:var(--color-background-caution-bold-base);color:var(--color-text-caution-bold-base)}.button.caution:hover{background-color:var(--color-background-caution-bold-hovered)}.button.caution:active{background-color:var(--color-background-caution-bold-pressed)}.button.danger{background-color:var(--color-background-danger-bold-base);color:var(--color-text-danger-bold-base)}.button.danger:hover{background-color:var(--color-background-danger-bold-hovered)}.button.danger:active{background-color:var(--color-background-danger-bold-pressed)}";
4
4
 
5
5
  const ScoutButton = class {
6
6
  constructor(hostRef) {
@@ -8,6 +8,9 @@ const ScoutButton = class {
8
8
  this.scoutClick = createEvent(this, "scoutClick");
9
9
  }
10
10
  type = "button";
11
+ href;
12
+ target;
13
+ rel;
11
14
  /**
12
15
  * The variant primarily affects the color of the button.
13
16
  */
@@ -18,7 +21,19 @@ const ScoutButton = class {
18
21
  icon;
19
22
  scoutClick;
20
23
  render() {
21
- return (h("button", { key: '7c5b9b8b4dbb40537b923585af17c81dc6ee1644', type: this.type, class: this.variant, onClick: () => this.scoutClick.emit() }, h("slot", { key: 'a89b795dbbd004cd8d9123bacf338cb87cca4953' }), this.icon && h("span", { key: '12ac9a0668ebd4d84fd02e5065f1c9802d188171', class: "icon", innerHTML: this.icon })));
24
+ const Tag = this.type === "link" ? "a" : "button";
25
+ const props = this.type === "link"
26
+ ? {
27
+ href: this.href,
28
+ target: this.target,
29
+ // This might not be our job, but better safe than sorry.
30
+ rel: this.rel ??
31
+ (this.target === "_blank" ? "noopener noreferrer" : undefined),
32
+ }
33
+ : {
34
+ type: this.type,
35
+ };
36
+ return (h(Tag, { key: 'fc7b2867c649782e166b7a363c5e3b43955a8011', class: `button ${this.variant}`, onClick: () => this.scoutClick.emit(), ...props }, h("slot", { key: '60d6e548ddf0da4bca40f1daea0fb656da8fb733' }), this.icon && h("span", { key: 'aef054b5de8cc20f5f26a9e2e82b76f43a9d3f32', class: "icon", innerHTML: this.icon })));
22
37
  }
23
38
  static get delegatesFocus() { return true; }
24
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"scout-button.entry.js","sources":["src/components/button/button.css?tag=scout-button&encapsulation=shadow","src/components/button/button.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n}\n\nbutton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-3);\n height: var(--spacing-10);\n padding: 0 var(--spacing-4);\n font: var(--type-body-base);\n border-radius: var(--spacing-2);\n border: 1px solid transparent;\n cursor: pointer;\n}\n\n.icon {\n width: var(--spacing-5);\n height: var(--spacing-5);\n margin: 0 calc(var(--spacing-1) * -1);\n}\n\n.icon svg {\n width: 100%;\n height: 100%;\n}\n\nbutton.primary {\n background-color: var(--color-background-brand-base);\n color: var(--color-text-brand-inverse);\n\n &:hover {\n background-color: var(--color-background-brand-hovered);\n }\n &:active {\n background-color: var(--color-background-brand-pressed);\n }\n}\n\nbutton.outlined {\n background-color: transparent;\n border-color: var(--color-background-brand-subtle-base);\n color: var(--color-text-brand-base);\n\n &:hover {\n background-color: var(--color-background-brand-subtle-hovered);\n }\n &:active {\n background-color: var(--color-background-brand-subtle-pressed);\n }\n}\n\nbutton.text {\n background-color: transparent;\n border-color: transparent;\n color: var(--color-text-brand-base);\n\n &:hover {\n background-color: var(--color-background-brand-subtle-hovered);\n }\n &:active {\n background-color: var(--color-background-brand-subtle-pressed);\n }\n}\n\nbutton.caution {\n background-color: var(--color-background-caution-bold-base);\n color: var(--color-text-caution-bold-base);\n\n &:hover {\n background-color: var(--color-background-caution-bold-hovered);\n }\n &:active {\n background-color: var(--color-background-caution-bold-pressed);\n }\n}\n\nbutton.danger {\n background-color: var(--color-background-danger-bold-base);\n color: var(--color-text-danger-bold-base);\n\n &:hover {\n background-color: var(--color-background-danger-bold-hovered);\n }\n &:active {\n background-color: var(--color-background-danger-bold-pressed);\n }\n}\n","import { Component, Event, type EventEmitter, h, Prop } from \"@stencil/core\";\n\nexport type Variant = \"primary\" | \"outlined\" | \"text\" | \"caution\" | \"danger\";\n\n/**\n * A simple button component.\n */\n@Component({\n tag: \"scout-button\",\n styleUrl: \"button.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutButton {\n @Prop() type: \"button\" | \"submit\" | \"reset\" = \"button\";\n\n /**\n * The variant primarily affects the color of the button.\n */\n @Prop() variant: Variant = \"outlined\";\n\n /**\n * An optional icon to display alongside the button text. Must be an SVG string.\n */\n @Prop() icon?: string;\n\n @Event() scoutClick: EventEmitter<void>;\n\n render() {\n return (\n <button\n type={this.type}\n class={this.variant}\n onClick={() => this.scoutClick.emit()}\n >\n <slot />\n {this.icon && <span class=\"icon\" innerHTML={this.icon} />}\n </button>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,SAAS,GAAG,kvDAAkvD;;MCcvvD,WAAW,GAAA,MAAA;;;;;IACd,IAAI,GAAkC,QAAQ;AAEtD;;AAEG;IACK,OAAO,GAAY,UAAU;AAErC;;AAEG;AACK,IAAA,IAAI;AAEH,IAAA,UAAU;IAEnB,MAAM,GAAA;AACJ,QAAA,QACE,CACE,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,OAAO,EACnB,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAA,EAErC,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,EACP,IAAI,CAAC,IAAI,IAAI,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,MAAM,EAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAI,CAAA,CAClD;;;;;;;;"}
1
+ {"version":3,"file":"scout-button.entry.js","sources":["src/components/button/button.css?tag=scout-button&encapsulation=shadow","src/components/button/button.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-3);\n height: var(--spacing-10);\n padding: 0 var(--spacing-4);\n font: var(--type-body-base);\n border-radius: var(--spacing-2);\n border: 1px solid transparent;\n cursor: pointer;\n text-decoration: none;\n}\n\n.icon {\n width: var(--spacing-5);\n height: var(--spacing-5);\n margin: 0 calc(var(--spacing-1) * -1);\n}\n\n.icon svg {\n width: 100%;\n height: 100%;\n}\n\n.button.primary {\n background-color: var(--color-background-brand-base);\n color: var(--color-text-brand-inverse);\n\n &:hover {\n background-color: var(--color-background-brand-hovered);\n }\n\n &:active {\n background-color: var(--color-background-brand-pressed);\n }\n}\n\n.button.outlined {\n background-color: transparent;\n border-color: var(--color-background-brand-subtle-base);\n color: var(--color-text-brand-base);\n\n &:hover {\n background-color: var(--color-background-brand-subtle-hovered);\n }\n\n &:active {\n background-color: var(--color-background-brand-subtle-pressed);\n }\n}\n\n.button.text {\n background-color: transparent;\n border-color: transparent;\n color: var(--color-text-brand-base);\n\n &:hover {\n background-color: var(--color-background-brand-subtle-hovered);\n }\n\n &:active {\n background-color: var(--color-background-brand-subtle-pressed);\n }\n}\n\n.button.caution {\n background-color: var(--color-background-caution-bold-base);\n color: var(--color-text-caution-bold-base);\n\n &:hover {\n background-color: var(--color-background-caution-bold-hovered);\n }\n\n &:active {\n background-color: var(--color-background-caution-bold-pressed);\n }\n}\n\n.button.danger {\n background-color: var(--color-background-danger-bold-base);\n color: var(--color-text-danger-bold-base);\n\n &:hover {\n background-color: var(--color-background-danger-bold-hovered);\n }\n\n &:active {\n background-color: var(--color-background-danger-bold-pressed);\n }\n}","import { Component, Event, type EventEmitter, h, Prop } from \"@stencil/core\";\n\nexport type Variant = \"primary\" | \"outlined\" | \"text\" | \"caution\" | \"danger\";\n\n/**\n * A simple button component.\n */\n@Component({\n tag: \"scout-button\",\n styleUrl: \"button.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutButton {\n @Prop() type: \"button\" | \"submit\" | \"reset\" | \"link\" = \"button\";\n\n @Prop() href?: string;\n @Prop() target?: string;\n @Prop() rel?: string;\n\n /**\n * The variant primarily affects the color of the button.\n */\n @Prop() variant: Variant = \"outlined\";\n\n /**\n * An optional icon to display alongside the button text. Must be an SVG string.\n */\n @Prop() icon?: string;\n\n @Event() scoutClick: EventEmitter<void>;\n\n render() {\n const Tag = this.type === \"link\" ? \"a\" : \"button\";\n\n const props =\n this.type === \"link\"\n ? {\n href: this.href,\n target: this.target,\n // This might not be our job, but better safe than sorry.\n rel:\n this.rel ??\n (this.target === \"_blank\" ? \"noopener noreferrer\" : undefined),\n }\n : {\n type: this.type,\n };\n\n return (\n <Tag\n class={`button ${this.variant}`}\n onClick={() => this.scoutClick.emit()}\n {...props}\n >\n <slot />\n {this.icon && <span class=\"icon\" innerHTML={this.icon} />}\n </Tag>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,SAAS,GAAG,ozDAAozD;;MCczzD,WAAW,GAAA,MAAA;;;;;IACd,IAAI,GAA2C,QAAQ;AAEvD,IAAA,IAAI;AACJ,IAAA,MAAM;AACN,IAAA,GAAG;AAEX;;AAEG;IACK,OAAO,GAAY,UAAU;AAErC;;AAEG;AACK,IAAA,IAAI;AAEH,IAAA,UAAU;IAEnB,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,GAAG,GAAG,QAAQ;AAEjD,QAAA,MAAM,KAAK,GACT,IAAI,CAAC,IAAI,KAAK;AACZ,cAAE;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;;gBAEnB,GAAG,EACD,IAAI,CAAC,GAAG;AACR,qBAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,qBAAqB,GAAG,SAAS,CAAC;AACjE;AACH,cAAE;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;AAEP,QAAA,QACE,CAAC,CAAA,GAAG,EACF,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,OAAO,CAAE,CAAA,EAC/B,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAA,GACjC,KAAK,EAAA,EAET,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,EACP,IAAI,CAAC,IAAI,IAAI,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,MAAM,EAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAI,CAAA,CACrD;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h } from './index-DByXnE9g.js';
1
+ import { r as registerInstance, h } from './index-BI7oh__S.js';
2
2
 
3
3
  const cardCss = ":host{display:block;border-radius:var(--spacing-2);border:1px solid var(--color-gray-100);padding:var(--spacing-2);box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)}";
4
4
 
@@ -7,7 +7,7 @@ const ScoutCard = class {
7
7
  registerInstance(this, hostRef);
8
8
  }
9
9
  render() {
10
- return h("slot", { key: 'bde708b7482da31d53fbc29581bed3f068e26279' });
10
+ return h("slot", { key: '44e84e98fac4b83c20fdec40a532c752f41dffd7' });
11
11
  }
12
12
  static get delegatesFocus() { return true; }
13
13
  };
@@ -0,0 +1,51 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-BI7oh__S.js';
2
+
3
+ const checkSvg = 'data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9ImN1cnJlbnRDb2xvciIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCiAgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItY2hlY2siCj4KICA8cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KICA8cGF0aCBkPSJNNSAxMmw1IDVsMTAgLTEwIiAvPgo8L3N2Zz4=';
4
+
5
+ const checkboxCss = ".checkbox.sc-scout-checkbox{width:var(--spacing-6);height:var(--spacing-6);-moz-appearance:none;appearance:none;-webkit-appearance:none;display:flex;align-content:center;justify-content:center;border-radius:3px;background-color:var(--color-text-brand-inverse);border:2px solid var(--color-gray-300);position:relative}.checkbox.sc-scout-checkbox:hover{border:2px solid var(--color-gray-400);box-shadow:inset 0px 0px 5px 5px var(--color-background-brand-subtle-hovered);cursor:pointer}.checkbox.sc-scout-checkbox:active{background-color:var(--color-background-brand-subtle-pressed)}.checkbox.sc-scout-checkbox:checked:hover{background-color:var(--color-background-brand-hovered);border:2px solid var(--color-background-brand-hovered);box-shadow:none}.checkbox.sc-scout-checkbox:checked{background-color:var(--color-background-brand-base);border-color:var(--color-background-brand-base)}.checkbox.sc-scout-checkbox::after{content:\"\";position:absolute;width:var(--spacing-10);height:var(--spacing-10);top:50%;left:50%;transform:translate(-50%, -50%)}.checkbox.sc-scout-checkbox:checked::before{content:\"\";background-color:var(--color-text-brand-inverse);width:var(--spacing-6);height:var(--spacing-6);position:absolute;top:50%;left:50%;right:0;bottom:0;transform:translate(-50%, -50%);-webkit-mask-image:var(--icon-checkbox);mask-image:var(--icon-checkbox);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.checkbox.sc-scout-checkbox:disabled{pointer-events:none;background-color:var(--color-gray-100);border-color:var(--color-gray-100)}label.sc-scout-checkbox{display:flex;flex-direction:row-reverse;align-items:center;font:var(--type-label-base);color:var(--color-text-base)}.inlineDivider.sc-scout-checkbox{width:var(--spacing-2)}";
6
+
7
+ const ScoutCheckbox = class {
8
+ constructor(hostRef) {
9
+ registerInstance(this, hostRef);
10
+ this.scoutCheckboxChecked = createEvent(this, "scoutCheckboxChecked");
11
+ this._fieldId = createEvent(this, "_fieldId");
12
+ }
13
+ checked = false;
14
+ disabled = false;
15
+ /**
16
+ * Use this prop if you need to connect your checkbox with another element describing its use, other than the property label.
17
+ */
18
+ ariaLabelledby;
19
+ label;
20
+ ariaId;
21
+ scoutCheckboxChecked;
22
+ /**
23
+ * Internal event used for form field association.
24
+ */
25
+ _fieldId;
26
+ componentWillLoad() {
27
+ this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;
28
+ this._fieldId.emit(this.ariaId);
29
+ }
30
+ onClick(event) {
31
+ const checkbox = event.target;
32
+ console.log("checkbox", checkbox.checked);
33
+ this.scoutCheckboxChecked.emit({
34
+ checked: checkbox.checked,
35
+ element: checkbox,
36
+ });
37
+ }
38
+ /*
39
+ todo:
40
+ - Wrap checkbox with label if used.
41
+ - make sure it works with field nicely with label.
42
+ */
43
+ render() {
44
+ const Tag = this.label && this.label.length ? "label" : "div";
45
+ return (h(Tag, { key: '39d7814c3af4261c7b60423464d5b3167ad96003' }, this.label, h("span", { key: '10375644d673913047c66460c2c0395f0110b644', class: "inlineDivider" }), h("input", { key: '3e5c5fa2571874e75325a7a3161a15e00332cd36', class: "checkbox", onChange: (event) => this.onClick(event), style: { "--icon-checkbox": `url(${checkSvg})` }, type: "checkbox", id: this.ariaId, "aria-labelledby": this.ariaLabelledby, "aria-disabled": this.disabled, disabled: this.disabled, checked: this.checked })));
46
+ }
47
+ };
48
+ ScoutCheckbox.style = checkboxCss;
49
+
50
+ export { ScoutCheckbox as scout_checkbox };
51
+ //# sourceMappingURL=scout-checkbox.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout-checkbox.entry.js","sources":["../../node_modules/.pnpm/@tabler+icons@3.35.0/node_modules/@tabler/icons/icons/outline/check.svg","src/components/checkbox/checkbox.css?tag=scout-checkbox&encapsulation=scoped","src/components/checkbox/checkbox.tsx"],"sourcesContent":["<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-check\"\n>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path d=\"M5 12l5 5l10 -10\" />\n</svg>",".checkbox {\n width: var(--spacing-6);\n height: var(--spacing-6);\n appearance: none;\n -webkit-appearance: none;\n display: flex;\n align-content: center;\n justify-content: center;\n border-radius: 3px;\n background-color: var(--color-text-brand-inverse);\n border: 2px solid var(--color-gray-300);\n position: relative;\n}\n\n.checkbox:hover {\n border: 2px solid var(--color-gray-400);\n box-shadow: inset 0px 0px 5px 5px var(--color-background-brand-subtle-hovered);\n cursor: pointer;\n}\n\n.checkbox:active {\n background-color: var(--color-background-brand-subtle-pressed);\n}\n\n.checkbox:checked:hover {\n background-color: var(--color-background-brand-hovered);\n border: 2px solid var(--color-background-brand-hovered);\n box-shadow: none;\n}\n\n.checkbox:checked {\n background-color: var(--color-background-brand-base);\n border-color: var(--color-background-brand-base);\n}\n\n.checkbox::after {\n content: \"\";\n position: absolute;\n width: var(--spacing-10);\n height: var(--spacing-10);\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n.checkbox:checked::before {\n content: \"\";\n background-color: var(--color-text-brand-inverse);\n width: var(--spacing-6);\n height: var(--spacing-6);\n position: absolute;\n /* Needed because of the border */\n top: 50%;\n left: 50%;\n right: 0;\n bottom: 0;\n transform: translate(-50%, -50%);\n mask-image: var(--icon-checkbox);\n mask-repeat: no-repeat;\n}\n\n.checkbox:disabled {\n pointer-events: none;\n background-color: var(--color-gray-100);\n border-color: var(--color-gray-100);\n}\n\nlabel {\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n font: var(--type-label-base);\n color: var(--color-text-base);\n}\n\n.inlineDivider {\n width: var(--spacing-2);\n}\n","import {\n Component,\n Event,\n type EventEmitter,\n h,\n Prop,\n State,\n} from \"@stencil/core\";\nimport checkIcon from \"@tabler/icons/outline/check.svg\";\n\n@Component({\n tag: \"scout-checkbox\",\n styleUrl: \"checkbox.css\",\n scoped: true,\n})\nexport class ScoutCheckbox {\n @Prop() checked: boolean = false;\n\n @Prop() disabled: boolean = false;\n\n /**\n * Use this prop if you need to connect your checkbox with another element describing its use, other than the property label.\n */\n @Prop() ariaLabelledby: string;\n\n @Prop() label: string;\n\n @State() ariaId: string;\n\n @Event() scoutCheckboxChecked: EventEmitter<{\n checked: boolean;\n element: HTMLInputElement;\n }>;\n /**\n * Internal event used for form field association.\n */\n @Event() _fieldId: EventEmitter<string>;\n\n componentWillLoad(): Promise<void> | void {\n this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;\n this._fieldId.emit(this.ariaId);\n }\n\n onClick(event: Event) {\n const checkbox = event.target as HTMLInputElement;\n console.log(\"checkbox\", checkbox.checked);\n\n this.scoutCheckboxChecked.emit({\n checked: checkbox.checked,\n element: checkbox,\n });\n }\n /*\n todo:\n - Wrap checkbox with label if used.\n - make sure it works with field nicely with label.\n */\n\n render() {\n const Tag = this.label && this.label.length ? \"label\" : \"div\";\n return (\n <Tag>\n {this.label}\n <span class=\"inlineDivider\"></span>\n <input\n class=\"checkbox\"\n onChange={(event) => this.onClick(event)}\n style={{ \"--icon-checkbox\": `url(${checkIcon})` }}\n type=\"checkbox\"\n id={this.ariaId}\n aria-labelledby={this.ariaLabelledby}\n aria-disabled={this.disabled}\n disabled={this.disabled}\n checked={this.checked}\n />\n </Tag>\n );\n }\n}\n"],"names":["checkIcon"],"mappings":";;AAAA,MAAM,QAAQ,GAAG,4fAA4f;;ACA7gB,MAAM,WAAW,GAAG,0sDAA0sD;;MCejtD,aAAa,GAAA,MAAA;;;;;;IAChB,OAAO,GAAY,KAAK;IAExB,QAAQ,GAAY,KAAK;AAEjC;;AAEG;AACK,IAAA,cAAc;AAEd,IAAA,KAAK;AAEJ,IAAA,MAAM;AAEN,IAAA,oBAAoB;AAI7B;;AAEG;AACM,IAAA,QAAQ;IAEjB,iBAAiB,GAAA;QACf,IAAI,CAAC,MAAM,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE;QAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGjC,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA0B;QACjD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC;AAEzC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzB,YAAA,OAAO,EAAE,QAAQ;AAClB,SAAA,CAAC;;AAEJ;;;;AAIE;IAEF,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,KAAK;QAC7D,QACE,EAAC,GAAG,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACD,IAAI,CAAC,KAAK,EACX,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,eAAe,EAAQ,CAAA,EACnC,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,UAAU,EAChB,QAAQ,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EACxC,KAAK,EAAE,EAAE,iBAAiB,EAAE,CAAA,IAAA,EAAOA,QAAS,CAAA,CAAA,CAAG,EAAE,EACjD,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,IAAI,CAAC,MAAM,EAAA,iBAAA,EACE,IAAI,CAAC,cAAc,EAAA,eAAA,EACrB,IAAI,CAAC,QAAQ,EAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAA,CACrB,CACE;;;;;;;","x_google_ignoreList":[0]}
@@ -0,0 +1,17 @@
1
+ import { r as registerInstance, h, H as Host } from './index-BI7oh__S.js';
2
+
3
+ const dividerCss = ":host{display:block;height:1px;background-color:var(--color-gray-200)}";
4
+
5
+ const ScoutDivider = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ render() {
10
+ return h(Host, { key: '78c9366fcd393e53b579481d31feafa643b63690' });
11
+ }
12
+ static get delegatesFocus() { return true; }
13
+ };
14
+ ScoutDivider.style = dividerCss;
15
+
16
+ export { ScoutDivider as scout_divider };
17
+ //# sourceMappingURL=scout-divider.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout-divider.entry.js","sources":["src/components/divider/divider.css?tag=scout-divider&encapsulation=shadow","src/components/divider/divider.tsx"],"sourcesContent":[":host {\n display: block;\n height: 1px;\n background-color: var(--color-gray-200);\n}","import { Component, Host, h } from \"@stencil/core\";\n\n@Component({\n tag: \"scout-divider\",\n styleUrl: \"divider.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutDivider {\n render() {\n return <Host />;\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,UAAU,GAAG,wEAAwE;;MCS9E,YAAY,GAAA,MAAA;;;;IACvB,MAAM,GAAA;QACJ,OAAO,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAG;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, a as getElement, h } from './index-DByXnE9g.js';
1
+ import { r as registerInstance, a as getElement, h } from './index-BI7oh__S.js';
2
2
 
3
3
  const fieldCss = ".field.sc-scout-field{display:flex;flex-direction:column}.label.sc-scout-field{font:var(--type-label-sm);font-weight:600;color:var(--color-text-base)}.error-text.sc-scout-field{font:var(--type-label-sm);color:var(--color-text-danger-base);margin:var(--spacing-1) 0 0 0}.error-text.sc-scout-field:empty{margin:0}.help-text.sc-scout-field{font:var(--type-label-sm);color:var(--color-gray-600);margin:var(--spacing-1) 0 0 0}";
4
4
 
@@ -36,7 +36,7 @@ const ScoutField = class {
36
36
  this.errorHidden = false;
37
37
  }
38
38
  render() {
39
- return (h("div", { key: 'bcd308f7ff69063860281b7f4f48ef2baa608308', class: "field" }, h("label", { key: '756d4a97399ed94970b3d39850dd5c4d0e155a99', htmlFor: this.inputId, class: "label" }, this.label), h("slot", { key: '3700f8aba58c90b14224e0d35a147f1a11ba7f98' }), h("p", { key: '60a70a27e3b7811accc657bbe49405306d342d9d', class: "error-text", "aria-live": "polite" }, !this.errorHidden && this.errorText), this.helpText && h("p", { key: '44f8377005f43ca1a332d6c4d8aec48e5aafb3c4', class: "help-text" }, this.helpText)));
39
+ return (h("div", { key: 'e38499f35a268b15962a31a2dc45361fb803a8e3', class: "field" }, h("label", { key: '3e6ba58b91285a082964bd01336fd4c7d8260835', htmlFor: this.inputId, class: "label" }, this.label), h("slot", { key: '75de87617caef28b9d90d0e112870a5cf2b08bfc' }), h("p", { key: 'f152609ade3a840a4bfd6bfef5f5aadf8060fab2', class: "error-text", "aria-live": "polite" }, !this.errorHidden && this.errorText), this.helpText && h("p", { key: '86069ef5f19840e44e79a274152742070b51e7a8', class: "help-text" }, this.helpText)));
40
40
  }
41
41
  };
42
42
  ScoutField.style = fieldCss;
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-DByXnE9g.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-BI7oh__S.js';
2
2
 
3
3
  const inputCss = ".input.sc-scout-input{height:var(--spacing-10);padding:var(--spacing-2);font:var(--type-body-base);border:1px solid var(--color-gray-300);border-radius:var(--spacing-2);background-color:var(--color-white);color:var(--color-text-base)}.input.sc-scout-input:disabled{background-color:var(--color-gray-100);color:var(--color-gray-700);cursor:not-allowed}";
4
4
 
@@ -0,0 +1,62 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-BI7oh__S.js';
2
+
3
+ const linkCss = ":host{display:inline}a,button{color:var(--color-text-brand-base);-webkit-text-decoration:none;text-decoration:none}a:hover,button:hover{-webkit-text-decoration:underline;text-decoration:underline;color:var(--color-background-brand-hover)}a:active,button:active{color:var(--color-background-brand-pressed)}button{display:inline;background:none;border:none;padding:0;cursor:pointer}";
4
+
5
+ const ScoutLink = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.scoutLinkClick = createEvent(this, "scoutLinkClick");
9
+ }
10
+ /**
11
+ * The URL that the link points to. Required when type is set to link
12
+ */
13
+ href;
14
+ /**
15
+ * Text to be displayed for the link
16
+ */
17
+ label;
18
+ rel;
19
+ /**
20
+ * If the label property is not sufficient to describe its use, add an aria-label describing what happens
21
+ * when pressing the button or where the user navigates if it is a link.
22
+ */
23
+ linkAriaLabel;
24
+ /**
25
+ * There are two types. If you intend to use it as a button with onclick, a button is rendered, however if you want to you it
26
+ * as a normal link, a link with href is rendered.
27
+ */
28
+ type = "link";
29
+ /**
30
+ * _blank Opens the linked document in a new window or tab
31
+ *
32
+ * _self Opens the linked document in the same frame as it was clicked (this is default)
33
+ *
34
+ * _parent Opens the linked document in the parent frame
35
+ *
36
+ * _top Opens the linked document in the full body of the window
37
+ *
38
+ * _framename Opens the linked document in the named iframe
39
+ */
40
+ target = "_self";
41
+ /**
42
+ * Only sent if the link is a button.
43
+ */
44
+ scoutLinkClick;
45
+ render() {
46
+ if (this.type === "button") {
47
+ return (h("button", { type: "button", "aria-label": this.linkAriaLabel || "", onClick: () => this.scoutLinkClick.emit() }, this.label));
48
+ }
49
+ if (!this.href) {
50
+ throw new Error("Href is requied when type is set to link");
51
+ }
52
+ return (h("a", { href: this.href, target: this.target, "aria-label": this.linkAriaLabel || "", rel:
53
+ // This might not be our job, but better safe than sorry.
54
+ this.rel ??
55
+ (this.target === "_blank" ? "noopener noreferrer" : undefined) }, this.label));
56
+ }
57
+ static get delegatesFocus() { return true; }
58
+ };
59
+ ScoutLink.style = linkCss;
60
+
61
+ export { ScoutLink as scout_link };
62
+ //# sourceMappingURL=scout-link.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout-link.entry.js","sources":["src/components/link/link.css?tag=scout-link&encapsulation=shadow","src/components/link/link.tsx"],"sourcesContent":[":host {\n display: inline;\n}\n\na,\nbutton {\n color: var(--color-text-brand-base);\n text-decoration: none;\n}\na:hover,\nbutton:hover {\n text-decoration: underline;\n color: var(--color-background-brand-hover);\n}\na:active,\nbutton:active {\n color: var(--color-background-brand-pressed);\n}\n\nbutton {\n display: inline;\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n}\n","import { Component, Event, type EventEmitter, h, Prop } from \"@stencil/core\";\n\n@Component({\n tag: \"scout-link\",\n styleUrl: \"link.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutLink {\n /**\n * The URL that the link points to. Required when type is set to link\n */\n @Prop() href?: string;\n\n /**\n * Text to be displayed for the link\n */\n @Prop() label: string;\n\n @Prop() rel?: string;\n\n /**\n * If the label property is not sufficient to describe its use, add an aria-label describing what happens\n * when pressing the button or where the user navigates if it is a link.\n */\n @Prop() linkAriaLabel?: string;\n\n /**\n * There are two types. If you intend to use it as a button with onclick, a button is rendered, however if you want to you it\n * as a normal link, a link with href is rendered.\n */\n @Prop() type: \"link\" | \"button\" = \"link\";\n\n /**\n * _blank\tOpens the linked document in a new window or tab\n *\n * _self\tOpens the linked document in the same frame as it was clicked (this is default)\n *\n * _parent\tOpens the linked document in the parent frame\n *\n * _top\tOpens the linked document in the full body of the window\n *\n * _framename\tOpens the linked document in the named iframe\n */\n @Prop() target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | \"framename\" =\n \"_self\";\n\n /**\n * Only sent if the link is a button.\n */\n @Event() scoutLinkClick: EventEmitter<HTMLButtonElement>;\n\n render() {\n if (this.type === \"button\") {\n return (\n <button\n type=\"button\"\n aria-label={this.linkAriaLabel || \"\"}\n onClick={() => this.scoutLinkClick.emit()}\n >\n {this.label}\n </button>\n );\n }\n\n if (!this.href) {\n throw new Error(\"Href is requied when type is set to link\");\n }\n\n return (\n <a\n href={this.href}\n target={this.target}\n aria-label={this.linkAriaLabel || \"\"}\n rel={\n // This might not be our job, but better safe than sorry.\n this.rel ??\n (this.target === \"_blank\" ? \"noopener noreferrer\" : undefined)\n }\n >\n {this.label}\n </a>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,OAAO,GAAG,8XAA8X;;MCSjY,SAAS,GAAA,MAAA;;;;;AACpB;;AAEG;AACK,IAAA,IAAI;AAEZ;;AAEG;AACK,IAAA,KAAK;AAEL,IAAA,GAAG;AAEX;;;AAGG;AACK,IAAA,aAAa;AAErB;;;AAGG;IACK,IAAI,GAAsB,MAAM;AAExC;;;;;;;;;;AAUG;IACK,MAAM,GACZ,OAAO;AAET;;AAEG;AACM,IAAA,cAAc;IAEvB,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC1B,YAAA,QACE,CAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EAAA,YAAA,EACD,IAAI,CAAC,aAAa,IAAI,EAAE,EACpC,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAA,EAExC,IAAI,CAAC,KAAK,CACJ;;AAIb,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;;QAG7D,QACE,SACE,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,MAAM,EAAE,IAAI,CAAC,MAAM,gBACP,IAAI,CAAC,aAAa,IAAI,EAAE,EACpC,GAAG;;AAED,YAAA,IAAI,CAAC,GAAG;iBACP,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,qBAAqB,GAAG,SAAS,CAAC,EAG/D,EAAA,IAAI,CAAC,KAAK,CACT;;;;;;;;"}
@@ -0,0 +1,62 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host } from './index-BI7oh__S.js';
2
+
3
+ const listViewItemCss = ":host{display:flex}.button{flex:1;display:flex;align-items:center;text-align:inherit;min-height:var(--spacing-12);color:var(--color-text-base);padding:var(--spacing-2) var(--spacing-4);cursor:pointer;border:none;background-color:transparent;-webkit-text-decoration:none;text-decoration:none}.button:hover{background-color:var(--color-background-brand-subtle-hovered)}.prefix-icon,.suffix-icon{display:flex;align-items:center;height:var(--spacing-6);color:var(--color-neutral-700)}.prefix-icon svg,.suffix-icon svg,.prefix-icon .icon,.suffix-icon .icon{width:var(--spacing-6);height:var(--spacing-6)}.prefix-icon{justify-content:flex-start;width:var(--spacing-14)}.suffix-icon{justify-content:flex-end;width:var(--spacing-8)}.suffix-icon .icon{background-color:currentColor;-webkit-mask-image:var(--icon);mask-image:var(--icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}.content{flex:1;display:flex;flex-direction:column;justify-content:center}.primary{font:var(--type-body-base)}.secondary{font:var(--type-body-sm);color:var(--color-neutral-700)}";
4
+
5
+ const ScoutListViewItem = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.scoutClick = createEvent(this, "scoutClick");
9
+ }
10
+ icon;
11
+ primary;
12
+ secondary;
13
+ type = "button";
14
+ href;
15
+ target;
16
+ rel;
17
+ scoutClick;
18
+ render() {
19
+ const Tag = this.type === "link" ? "a" : "button";
20
+ const linkProps = this.type === "link"
21
+ ? {
22
+ href: this.href,
23
+ target: this.target,
24
+ // This might not be our job, but better safe than sorry.
25
+ rel: this.rel ??
26
+ (this.target === "_blank" ? "noopener noreferrer" : undefined),
27
+ }
28
+ : {};
29
+ return (
30
+ // biome-ignore lint/a11y/useSemanticElements: We can't use <li> because we're using shadow DOM.
31
+ h(Host, { key: '075b28cf90ce6487ba7c7212c209c2fafff80c8f', role: "listitem" }, h(Tag, { key: '30bc35454f69979ade277e4e376346ef5cc01c3b', class: "button", ...linkProps, onClick: () => this.scoutClick.emit() }, this.getPrefix(), this.getContent(), this.getSuffix())));
32
+ }
33
+ getPrefix() {
34
+ if (!this.icon) {
35
+ return null;
36
+ }
37
+ return h("div", { class: "prefix-icon", innerHTML: this.icon });
38
+ }
39
+ getContent() {
40
+ return (h("div", { class: "content" }, this.primary && h("div", { class: "primary" }, this.primary), this.secondary && h("div", { class: "secondary" }, this.secondary)));
41
+ }
42
+ getSuffix() {
43
+ // if (this.type === "link") {
44
+ // return (
45
+ // <div class="suffix-icon">
46
+ // <span
47
+ // class="icon"
48
+ // style={{
49
+ // "--icon": `url(${ChevronRightIcon})`,
50
+ // }}
51
+ // />
52
+ // </div>
53
+ // );
54
+ // }
55
+ return null;
56
+ }
57
+ static get delegatesFocus() { return true; }
58
+ };
59
+ ScoutListViewItem.style = listViewItemCss;
60
+
61
+ export { ScoutListViewItem as scout_list_view_item };
62
+ //# sourceMappingURL=scout-list-view-item.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout-list-view-item.entry.js","sources":["src/components/list-view-item/list-view-item.css?tag=scout-list-view-item&encapsulation=shadow","src/components/list-view-item/list-view-item.tsx"],"sourcesContent":[":host {\n display: flex;\n}\n\n.button {\n flex: 1;\n display: flex;\n align-items: center;\n text-align: unset;\n min-height: var(--spacing-12);\n color: var(--color-text-base);\n padding: var(--spacing-2) var(--spacing-4);\n cursor: pointer;\n border: none;\n background-color: transparent;\n text-decoration: none;\n}\n\n.button:hover {\n\n background-color: var(--color-background-brand-subtle-hovered);\n}\n\n.prefix-icon,\n.suffix-icon {\n display: flex;\n align-items: center;\n height: var(--spacing-6);\n color: var(--color-neutral-700);\n\n svg,\n .icon {\n width: var(--spacing-6);\n height: var(--spacing-6);\n }\n}\n\n.prefix-icon {\n justify-content: flex-start;\n width: var(--spacing-14);\n}\n\n.suffix-icon {\n justify-content: flex-end;\n width: var(--spacing-8);\n\n .icon {\n background-color: currentColor;\n mask-image: var(--icon);\n mask-repeat: no-repeat;\n mask-size: 100% 100%;\n }\n}\n\n.content {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.primary {\n font: var(--type-body-base);\n}\n\n.secondary {\n font: var(--type-body-sm);\n color: var(--color-neutral-700);\n}","import {\n Component,\n Event,\n type EventEmitter,\n Host,\n h,\n Prop,\n} from \"@stencil/core\";\n\nexport type ItemType = \"button\" | \"link\";\n\n@Component({\n tag: \"scout-list-view-item\",\n styleUrl: \"list-view-item.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutListViewItem {\n @Prop() icon?: string;\n @Prop() primary?: string;\n @Prop() secondary?: string;\n @Prop() type: ItemType = \"button\";\n\n @Prop() href?: string;\n @Prop() target?: string;\n @Prop() rel?: string;\n\n @Event() scoutClick: EventEmitter<void>;\n\n render() {\n const Tag = this.type === \"link\" ? \"a\" : \"button\";\n\n const linkProps =\n this.type === \"link\"\n ? {\n href: this.href,\n target: this.target,\n // This might not be our job, but better safe than sorry.\n rel:\n this.rel ??\n (this.target === \"_blank\" ? \"noopener noreferrer\" : undefined),\n }\n : {};\n\n return (\n // biome-ignore lint/a11y/useSemanticElements: We can't use <li> because we're using shadow DOM.\n <Host role=\"listitem\">\n <Tag\n class=\"button\"\n {...linkProps}\n onClick={() => this.scoutClick.emit()}\n >\n {this.getPrefix()}\n {this.getContent()}\n {this.getSuffix()}\n </Tag>\n </Host>\n );\n }\n\n private getPrefix() {\n if (!this.icon) {\n return null;\n }\n\n return <div class=\"prefix-icon\" innerHTML={this.icon} />;\n }\n\n private getContent() {\n return (\n <div class=\"content\">\n {this.primary && <div class=\"primary\">{this.primary}</div>}\n {this.secondary && <div class=\"secondary\">{this.secondary}</div>}\n </div>\n );\n }\n\n private getSuffix() {\n // if (this.type === \"link\") {\n // return (\n // <div class=\"suffix-icon\">\n // <span\n // class=\"icon\"\n // style={{\n // \"--icon\": `url(${ChevronRightIcon})`,\n // }}\n // />\n // </div>\n // );\n // }\n\n return null;\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,eAAe,GAAG,klCAAklC;;MCkB7lC,iBAAiB,GAAA,MAAA;;;;;AACpB,IAAA,IAAI;AACJ,IAAA,OAAO;AACP,IAAA,SAAS;IACT,IAAI,GAAa,QAAQ;AAEzB,IAAA,IAAI;AACJ,IAAA,MAAM;AACN,IAAA,GAAG;AAEF,IAAA,UAAU;IAEnB,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,GAAG,GAAG,QAAQ;AAEjD,QAAA,MAAM,SAAS,GACb,IAAI,CAAC,IAAI,KAAK;AACZ,cAAE;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;;gBAEnB,GAAG,EACD,IAAI,CAAC,GAAG;AACR,qBAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,qBAAqB,GAAG,SAAS,CAAC;AACjE;cACD,EAAE;QAER;;QAEE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAC,IAAI,EAAC,UAAU,EAAA,EACnB,CAAA,CAAC,GAAG,EACF,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,QAAQ,EAAA,GACV,SAAS,EACb,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAA,EAEpC,IAAI,CAAC,SAAS,EAAE,EAChB,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,SAAS,EAAE,CACb,CACD;;IAIH,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,OAAO,IAAI;;AAGb,QAAA,OAAO,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,aAAa,EAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAA,CAAI;;IAGlD,UAAU,GAAA;QAChB,QACE,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,SAAS,EAAA,EACjB,IAAI,CAAC,OAAO,IAAI,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,SAAS,EAAE,EAAA,IAAI,CAAC,OAAO,CAAO,EACzD,IAAI,CAAC,SAAS,IAAI,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,WAAW,EAAE,EAAA,IAAI,CAAC,SAAS,CAAO,CAC5D;;IAIF,SAAS,GAAA;;;;;;;;;;;;;AAcf,QAAA,OAAO,IAAI;;;;;;;;"}
@@ -0,0 +1,19 @@
1
+ import { r as registerInstance, h, H as Host } from './index-BI7oh__S.js';
2
+
3
+ const listViewCss = ":host{display:flex;flex-direction:column;padding:var(--spacing-2) 0}";
4
+
5
+ const ScoutListView = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ render() {
10
+ return (
11
+ // biome-ignore lint/a11y/useSemanticElements: We can't use <ul> because we're using shadow DOM.
12
+ h(Host, { key: '162a45f1de284bc6f737769753837c29ca51155a', role: "list" }, h("slot", { key: '6a66f07a8082b94330dc33a183a7a915139d1e39' })));
13
+ }
14
+ static get delegatesFocus() { return true; }
15
+ };
16
+ ScoutListView.style = listViewCss;
17
+
18
+ export { ScoutListView as scout_list_view };
19
+ //# sourceMappingURL=scout-list-view.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout-list-view.entry.js","sources":["src/components/list-view/list-view.css?tag=scout-list-view&encapsulation=shadow","src/components/list-view/list-view.tsx"],"sourcesContent":[":host {\n display: flex;\n flex-direction: column;\n padding: var(--spacing-2) 0;\n}","import { Component, Host, h } from \"@stencil/core\";\n\n@Component({\n tag: \"scout-list-view\",\n styleUrl: \"list-view.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutListView {\n render() {\n return (\n // biome-ignore lint/a11y/useSemanticElements: We can't use <ul> because we're using shadow DOM.\n <Host role=\"list\">\n <slot />\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,WAAW,GAAG,sEAAsE;;MCS7E,aAAa,GAAA,MAAA;;;;IACxB,MAAM,GAAA;QACJ;;QAEE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAC,IAAI,EAAC,MAAM,EAAA,EACf,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACH;;;;;;;;"}