@phatvu/web-component-poc 1.0.7 → 1.0.8

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 (50) hide show
  1. package/dist/cjs/{fast-input_4.cjs.entry.js → fast-button_6.cjs.entry.js} +112 -33
  2. package/dist/cjs/fast-carousel.cjs.entry.js +1 -1
  3. package/dist/cjs/{index-BEvZs91D.js → index-227GpI8K.js} +64 -0
  4. package/dist/cjs/job-card.cjs.entry.js +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/web-component-poc.cjs.js +2 -2
  7. package/dist/collection/collection-manifest.json +1 -0
  8. package/dist/collection/components/button/button.css +14 -14
  9. package/dist/collection/components/button/button.js +12 -24
  10. package/dist/collection/components/fast-form/fast-form.css +5 -0
  11. package/dist/collection/components/fast-form/fast-form.js +99 -0
  12. package/dist/collection/components/fast-input/fast-input.css +3 -13
  13. package/dist/collection/components/fast-input/fast-input.js +57 -33
  14. package/dist/collection/components/jobs-list-only/jobs-list-only.js +1 -1
  15. package/dist/collection/components/jobs-list-reactive/jobs-list-reactive.js +1 -1
  16. package/dist/components/fast-button.js +1 -1
  17. package/dist/components/fast-carousel.js +1 -1
  18. package/dist/components/fast-form.d.ts +11 -0
  19. package/dist/components/fast-form.js +1 -0
  20. package/dist/components/fast-input.js +1 -1
  21. package/dist/components/index.js +1 -1
  22. package/dist/components/job-card.js +1 -1
  23. package/dist/components/jobs-item.js +1 -1
  24. package/dist/components/jobs-list-only.js +1 -1
  25. package/dist/components/jobs-list-reactive.js +1 -1
  26. package/dist/components/p-Bb27ylcX.js +1 -0
  27. package/dist/components/{p-DQiaLjLf.js → p-CzgtwPsc.js} +1 -1
  28. package/dist/esm/{fast-input_4.entry.js → fast-button_6.entry.js} +111 -34
  29. package/dist/esm/fast-carousel.entry.js +1 -1
  30. package/dist/esm/{index-C_ZLQIpp.js → index-BqjrT3zA.js} +64 -0
  31. package/dist/esm/job-card.entry.js +1 -1
  32. package/dist/esm/loader.js +3 -3
  33. package/dist/esm/web-component-poc.js +3 -3
  34. package/dist/types/components/button/button.d.ts +1 -13
  35. package/dist/types/components/fast-form/fast-form.d.ts +10 -0
  36. package/dist/types/components/fast-input/fast-input.d.ts +3 -5
  37. package/dist/types/components.d.ts +35 -13
  38. package/dist/web-component-poc/{p-bef7c8e2.entry.js → p-14247159.entry.js} +1 -1
  39. package/dist/web-component-poc/{p-7d45772f.entry.js → p-309a490b.entry.js} +1 -1
  40. package/dist/web-component-poc/p-7ea9a87f.entry.js +1 -0
  41. package/dist/web-component-poc/{p-C_ZLQIpp.js → p-BqjrT3zA.js} +2 -2
  42. package/dist/web-component-poc/web-component-poc.esm.js +1 -1
  43. package/hydrate/index.js +136 -54
  44. package/hydrate/index.mjs +136 -54
  45. package/package.json +3 -3
  46. package/dist/cjs/fast-button.cjs.entry.js +0 -46
  47. package/dist/components/p-BiaJAQXY.js +0 -1
  48. package/dist/esm/fast-button.entry.js +0 -44
  49. package/dist/web-component-poc/p-618fba28.entry.js +0 -1
  50. package/dist/web-component-poc/p-cfb9aed9.entry.js +0 -1
@@ -1,13 +1,104 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BEvZs91D.js');
3
+ var index = require('./index-227GpI8K.js');
4
4
 
5
- const fastInputCss = () => `.fast-input{position:relative;display:inline-flex;gap:0.5rem}.fast-input__field{flex:1;padding:0.5rem 0.75rem;font-size:1rem;border:1px solid #ccc;border-radius:4px}.fast-input__button{padding:0.5rem 1rem;font-size:1rem;cursor:pointer;background:#0070f3;color:#fff;border:none;border-radius:4px}.fast-input__dropdown{position:absolute;top:100%;left:0;right:0;margin:0;padding:0;list-style:none;background:#fff;border:1px solid #ccc;border-top:none;border-radius:0 0 4px 4px;z-index:100;max-height:200px;overflow-y:auto}.fast-input__dropdown-item{padding:0.5rem 0.75rem;cursor:pointer}.fast-input__dropdown-item:hover{background:#f0f0f0}.fast-input__dropdown-loading{padding:0.5rem 0.75rem;color:#999;font-style:italic}`;
5
+ const buttonCss = () => `:host{display:inline-block}.fast-button{display:inline-flex;align-items:center;justify-content:center;padding:0.5rem 1rem;font-family:inherit;font-size:0.875rem;font-weight:500;line-height:1.25;border:none;border-radius:0.375rem;cursor:pointer;transition:background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease}.fast-button:focus{outline:2px solid var(--custom-button-focus-ring, #2563eb);outline-offset:2px}.fast-button:focus:not(:focus-visible){outline:none}.fast-button--primary{background-color:var(--custom-button-primary-bg, #2563eb);color:var(--custom-button-primary-color, #fff)}.fast-button--primary:hover:not(.fast-button--disabled){background-color:var(--custom-button-primary-hover-bg, #1d4ed8)}.fast-button--primary:active:not(.fast-button--disabled){background-color:var(--custom-button-primary-active-bg, #1e40af)}.fast-button--secondary{background-color:var(--custom-button-secondary-bg, #e5e7eb);color:var(--custom-button-secondary-color, #1f2937)}.fast-button--secondary:hover:not(.fast-button--disabled){background-color:var(--custom-button-secondary-hover-bg, #d1d5db)}.fast-button--secondary:active:not(.fast-button--disabled){background-color:var(--custom-button-secondary-active-bg, #9ca3af)}.fast-button--text{background-color:transparent;color:var(--custom-button-text-color, #2563eb)}.fast-button--text:hover:not(.fast-button--disabled){background-color:var(--custom-button-text-hover-bg, rgba(37, 99, 235, 0.08))}.fast-button--text:active:not(.fast-button--disabled){background-color:var(--custom-button-text-active-bg, rgba(37, 99, 235, 0.12))}.fast-button--disabled,.fast-button:disabled{opacity:0.6;cursor:not-allowed}`;
6
6
 
7
- const FastInput = class {
7
+ const FastButton = class {
8
+ constructor(hostRef) {
9
+ index.registerInstance(this, hostRef);
10
+ this.buttonClick = index.createEvent(this, "buttonClick");
11
+ }
12
+ variant = 'primary';
13
+ type = 'submit';
14
+ disabled = false;
15
+ buttonClick;
16
+ handleClick = (e) => {
17
+ if (this.disabled) {
18
+ e.preventDefault();
19
+ e.stopPropagation();
20
+ return;
21
+ }
22
+ this.buttonClick.emit(e);
23
+ };
24
+ render() {
25
+ return (index.h("button", { key: 'b8e811748ade97c941bdf197a311d69d2801a120', type: this.type, class: {
26
+ 'fast-button': true,
27
+ [`fast-button--${this.variant}`]: true,
28
+ 'fast-button--disabled': this.disabled,
29
+ }, disabled: this.disabled, onClick: this.handleClick }, index.h("slot", { key: 'a6b987059cc33799abd580ea11f0fe644a3973bf' })));
30
+ }
31
+ };
32
+ FastButton.style = buttonCss();
33
+
34
+ const fastFormCss = () => `.fast-form{display:flex;gap:0.5rem;align-items:flex-start}`;
35
+
36
+ const FastForm = class {
8
37
  constructor(hostRef) {
9
38
  index.registerInstance(this, hostRef);
10
39
  this.searchExecuted = index.createEvent(this, "searchExecuted");
40
+ }
41
+ get el() { return index.getElement(this); }
42
+ searchExecuted;
43
+ handleInputSubmit() {
44
+ this.submit();
45
+ }
46
+ async submit() {
47
+ const inputs = this.el.querySelectorAll('fast-input');
48
+ const params = {};
49
+ for (const input of Array.from(inputs)) {
50
+ const paramName = await input.getParamName();
51
+ const value = await input.getValue();
52
+ if (value) {
53
+ params[paramName] = value;
54
+ }
55
+ }
56
+ this.updateUrlParams(params);
57
+ document.dispatchEvent(new CustomEvent('search-executed', {
58
+ detail: params,
59
+ bubbles: true,
60
+ composed: true,
61
+ }));
62
+ this.searchExecuted.emit(params);
63
+ }
64
+ updateUrlParams(params) {
65
+ const urlParams = new URLSearchParams(window.location.search);
66
+ // Get all param names from inputs and clear them first
67
+ const inputs = this.el.querySelectorAll('fast-input');
68
+ for (const input of Array.from(inputs)) {
69
+ const paramName = input.paramName;
70
+ if (paramName) {
71
+ urlParams.delete(paramName);
72
+ }
73
+ }
74
+ // Set new values
75
+ for (const [key, value] of Object.entries(params)) {
76
+ if (value) {
77
+ urlParams.set(key, value);
78
+ }
79
+ }
80
+ const qs = urlParams.toString();
81
+ const newUrl = qs
82
+ ? `${window.location.pathname}?${qs}`
83
+ : window.location.pathname;
84
+ history.pushState({}, '', newUrl);
85
+ }
86
+ handleFormSubmit = (e) => {
87
+ e.preventDefault();
88
+ this.submit();
89
+ };
90
+ render() {
91
+ return (index.h("form", { key: '50436bb904e8b175ae0c23158812a4e4756544c0', class: "fast-form", onSubmit: this.handleFormSubmit }, index.h("slot", { key: '2f76c4c42c15ebf389d6e0fdbcb9a2098bf1156a' })));
92
+ }
93
+ };
94
+ FastForm.style = fastFormCss();
95
+
96
+ const fastInputCss = () => `.fast-input{position:relative;display:inline-block}.fast-input__field{padding:0.5rem 0.75rem;font-size:1rem;border:1px solid #ccc;border-radius:4px;width:100%;box-sizing:border-box}.fast-input__dropdown{position:absolute;top:100%;left:0;right:0;margin:0;padding:0;list-style:none;background:#fff;border:1px solid #ccc;border-top:none;border-radius:0 0 4px 4px;z-index:100;max-height:200px;overflow-y:auto}.fast-input__dropdown-item{padding:0.5rem 0.75rem;cursor:pointer}.fast-input__dropdown-item:hover{background:#f0f0f0}.fast-input__dropdown-loading{padding:0.5rem 0.75rem;color:#999;font-style:italic}`;
97
+
98
+ const FastInput = class {
99
+ constructor(hostRef) {
100
+ index.registerInstance(this, hostRef);
101
+ this.inputSubmit = index.createEvent(this, "inputSubmit");
11
102
  this.inputChanged = index.createEvent(this, "inputChanged");
12
103
  }
13
104
  placeholder = 'Search...';
@@ -18,7 +109,7 @@ const FastInput = class {
18
109
  targetPath;
19
110
  debounceMs = 300;
20
111
  minChars = 3;
21
- searchExecuted;
112
+ inputSubmit;
22
113
  inputChanged;
23
114
  inputValue = '';
24
115
  suggestions = [];
@@ -26,6 +117,12 @@ const FastInput = class {
26
117
  autocompleteLoading = false;
27
118
  debounceTimer;
28
119
  popstateHandler;
120
+ async getValue() {
121
+ return this.inputValue;
122
+ }
123
+ async getParamName() {
124
+ return this.paramName;
125
+ }
29
126
  connectedCallback() {
30
127
  const urlValue = this.getUrlParam();
31
128
  this.inputValue = urlValue !== null ? urlValue : this.value;
@@ -42,30 +139,6 @@ const FastInput = class {
42
139
  const params = new URLSearchParams(window.location.search);
43
140
  return params.get(this.paramName);
44
141
  }
45
- updateUrlParam(value) {
46
- const params = new URLSearchParams(window.location.search);
47
- if (value) {
48
- params.set(this.paramName, value);
49
- }
50
- else {
51
- params.delete(this.paramName);
52
- }
53
- const qs = params.toString();
54
- const newUrl = qs
55
- ? `${window.location.pathname}?${qs}`
56
- : window.location.pathname;
57
- history.pushState({}, '', newUrl);
58
- }
59
- submit() {
60
- this.updateUrlParam(this.inputValue);
61
- document.dispatchEvent(new CustomEvent('search-executed', {
62
- detail: { keyword: this.inputValue },
63
- bubbles: true,
64
- composed: true,
65
- }));
66
- this.searchExecuted.emit({ keyword: this.inputValue });
67
- this.showDropdown = false;
68
- }
69
142
  handleInput = (e) => {
70
143
  const value = e.target.value;
71
144
  this.inputValue = value;
@@ -76,7 +149,9 @@ const FastInput = class {
76
149
  };
77
150
  handleKeydown = (e) => {
78
151
  if (e.key === 'Enter') {
79
- this.submit();
152
+ e.preventDefault();
153
+ this.showDropdown = false;
154
+ this.inputSubmit.emit();
80
155
  }
81
156
  else if (e.key === 'Escape') {
82
157
  this.showDropdown = false;
@@ -122,10 +197,12 @@ const FastInput = class {
122
197
  selectSuggestion(title) {
123
198
  this.inputValue = title;
124
199
  this.showDropdown = false;
125
- this.submit();
200
+ this.inputSubmit.emit();
126
201
  }
127
202
  render() {
128
- return (index.h("div", { key: '3a9d31c7b109205600addc326d63979585f10bcd', class: "fast-input" }, index.h("input", { key: '8f238fe9e002f367d4939616be8c06d938d76045', type: "text", class: "fast-input__field", placeholder: this.placeholder, value: this.inputValue, onInput: this.handleInput, onKeyDown: this.handleKeydown, onBlur: this.handleBlur }), index.h("button", { key: '7b7404f13432750ece669da8ce68be15179921de', class: "fast-input__button", type: "button", onClick: () => this.submit() }, "Search"), this.enableAutocomplete && this.showDropdown && (index.h("ul", { key: '1438bacadc21c183842a8bdaa3f336bffb152e14', class: "fast-input__dropdown" }, this.autocompleteLoading ? (index.h("li", { class: "fast-input__dropdown-loading" }, "Loading...")) : (this.suggestions.map(s => (index.h("li", { class: "fast-input__dropdown-item", onMouseDown: e => { e.preventDefault(); }, onClick: () => this.selectSuggestion(s.title) }, s.title))))))));
203
+ return (index.h("div", { key: 'ea03f3dd68d0da4fc30cbc18a1ef66b5974a4f89', class: "fast-input" }, index.h("input", { key: '31d85c4c90dde0e10ea9424b960c5e4f4a3ca54a', type: "text", class: "fast-input__field", placeholder: this.placeholder, value: this.inputValue, onInput: this.handleInput, onKeyDown: this.handleKeydown, onBlur: this.handleBlur }), this.enableAutocomplete && this.showDropdown && (index.h("ul", { key: '0de6fd68709d906bafd2fec684f0a73045be3705', class: "fast-input__dropdown" }, this.autocompleteLoading ? (index.h("li", { class: "fast-input__dropdown-loading" }, "Loading...")) : (this.suggestions.map(s => (index.h("li", { class: "fast-input__dropdown-item", onMouseDown: e => {
204
+ e.preventDefault();
205
+ }, onClick: () => this.selectSuggestion(s.title) }, s.title))))))));
129
206
  }
130
207
  };
131
208
  FastInput.style = fastInputCss();
@@ -384,7 +461,7 @@ const JobsListOnly = class {
384
461
  : (this.totalJob || jobsArray.length);
385
462
  const showNoResults = !loading && totalJob === 0 && !this.showSuggestions;
386
463
  const showSuggestionsBlock = !loading && totalJob === 0 && this.showSuggestions;
387
- return (index.h("div", { key: '1116855473d28d650641b9d962243bfcdcb434ec', class: `jobs-list-root ${this.rootClass}`.trim() }, index.h("div", { key: 'fcef04f1da9ad4e150af9f59921688f5781d9d43', class: "results-container" }, this.autoFetch && this.fetchLoading && (index.h("div", { key: '75b157c82c89691c7ce73d12ea0144b3b45485c3', class: "jobs-list-only__loading" }, "Loading...")), index.h("div", { key: 'b09f9879e10ee4a93e32177611912da5f19f3526', class: loading ? 'loader' : 'loader hide', "aria-hidden": !loading }), totalJob > 0 && this.showCountText && (index.h("p", { key: 'd10f800fb0a33d82531d5f1728bac4ceba2ed577', class: "jobs-list-only__count" }, this.renderCountText(jobsArray.length, totalJob))), totalJob > 0 && (index.h("div", { key: '18153ed1338bd48f7be4f043b11ce15e3271f27b', class: "card" }, index.h("ul", { key: '766e128b1fd5adb456530ae39e92ba8eb0b5d6cf', class: "results-list front" }, jobsArray.map((job, index) => this.renderJobItem(job, index))))), showNoResults && (index.h("div", { key: 'ed6f3d2bd2bbedabd6e69d508ea1425580e6941f', class: "share-jobs__no-results" }, index.h("h2", { key: '2302656e33340c69e84cb949afb7256b8f35f440' }, this.noResultsLine1), index.h("h3", { key: '1c7e6642441a96c04ee26883fdec4f81b0fe6cec' }, this.noResultsLine2))), showSuggestionsBlock && (index.h("div", { key: 'be7af85f64455918545e88952ca6ff00f0a970c5', class: "card primary-color" }, index.h("h4", { key: '2f63deb8131190eff882308544b15f767b6f3edc', class: "result-suggestions-title" }, this.clearResultSuggestionsTitleText, ":"), index.h("ul", { key: 'cb18daaa9e2c2c442c5b906ed370dcd653b5262d', class: "results-list front" }, index.h("li", { key: 'ff1d5c6518b75c0daa35b43df7162b0dfecde25e', class: "result-suggestions-line" }, this.clearResultSuggestionsLine1), index.h("li", { key: '4099fd7bf8dcf114eca28702a498ab0938f5de46', class: "result-suggestions-line" }, this.clearResultSuggestionsLine2), index.h("li", { key: 'fb65b54c3c0b14bc58112977eb4c7c56c1246a45', class: "result-suggestions-line" }, this.clearResultSuggestionsLine3), this.clearResultSuggestionsLine4 && (index.h("li", { key: '10f745e74cf68a2b1c42e6f49f810a8b59eb27b6', class: "result-suggestions-line" }, this.clearResultSuggestionsLine4))))))));
464
+ return (index.h("div", { key: '1974ecb7e1ded8237d851560fc4b20dd63b4e941', class: `jobs-list-root ${this.rootClass}`.trim() }, index.h("div", { key: '3d80283e8508cbe9ec4aa4516a6f832479374e08', class: "results-container" }, this.autoFetch && this.fetchLoading && (index.h("div", { key: 'c5d3c5362a10ce2442925093118d3436227e8058', class: "jobs-list-only__loading" }, "Loading...")), index.h("div", { key: 'c68e5aebee17cce16947029031b63364ab25ecda', class: loading ? 'loader' : 'loader hide', "aria-hidden": !loading }), totalJob > 0 && this.showCountText && (index.h("p", { key: 'e353fa146040fed1aed050ed3ed833903efcdf41', class: "jobs-list-only__count" }, this.renderCountText(jobsArray.length, totalJob))), totalJob > 0 && (index.h("div", { key: 'e38346f641a1e776a7e70525bf8f3a6a38b6eea5', class: "card" }, index.h("ul", { key: 'db82d99df76e33ad6041d4ec8dd7908cdf8b89d7', class: "results-list front" }, jobsArray.map((job, index) => this.renderJobItem(job, index))))), showNoResults && (index.h("div", { key: '8bd8f45ddb9fcd534c7f386919c1e6cd7a4fb6f3', class: "share-jobs__no-results" }, index.h("h2", { key: '228d32e9dd38f61bcec9f522d3bc4207e17b5365' }, this.noResultsLine1), index.h("h3", { key: '4289b10974936669a00afba6f1d55e33874198b1' }, this.noResultsLine2))), showSuggestionsBlock && (index.h("div", { key: '949e1fe01b2db39a69729a9fbc2eebaf2ea461ba', class: "card primary-color" }, index.h("h4", { key: 'af3361f98987a3a19d45afc1174a99fc4174a65a', class: "result-suggestions-title" }, this.clearResultSuggestionsTitleText, ":"), index.h("ul", { key: 'd7b9236dbbeb9f9596d642aa588d1c1305ed658b', class: "results-list front" }, index.h("li", { key: '0e65c9b985e5708096c8a4b0ea1455b6696db6dd', class: "result-suggestions-line" }, this.clearResultSuggestionsLine1), index.h("li", { key: 'a7fe8459960af60acc81822b48436a32c0e4ad0c', class: "result-suggestions-line" }, this.clearResultSuggestionsLine2), index.h("li", { key: '1e41d5730de755d6b2cb9e5fbda33704816f9096', class: "result-suggestions-line" }, this.clearResultSuggestionsLine3), this.clearResultSuggestionsLine4 && (index.h("li", { key: '9ab1bee87135bfda9996b2c99134597475bfaecb', class: "result-suggestions-line" }, this.clearResultSuggestionsLine4))))))));
388
465
  }
389
466
  };
390
467
  JobsListOnly.style = jobsListOnlyCss();
@@ -488,11 +565,13 @@ const JobsListReactive = class {
488
565
  });
489
566
  }
490
567
  render() {
491
- return index.h("slot", { key: '30a6fe9727eb877b6aafb99072c40811df121ba6' });
568
+ return index.h("slot", { key: '9f3ab802e19a298a790cfb5e86a4f4888e466804' });
492
569
  }
493
570
  };
494
571
  JobsListReactive.style = jobsListReactiveCss();
495
572
 
573
+ exports.fast_button = FastButton;
574
+ exports.fast_form = FastForm;
496
575
  exports.fast_input = FastInput;
497
576
  exports.jobs_item = JobsItem;
498
577
  exports.jobs_list_only = JobsListOnly;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BEvZs91D.js');
3
+ var index = require('./index-227GpI8K.js');
4
4
 
5
5
  function isNumber(subject) {
6
6
  return typeof subject === 'number';
@@ -175,6 +175,23 @@ var plt = {
175
175
  ce: (eventName, opts) => new CustomEvent(eventName, opts)
176
176
  };
177
177
  var supportsShadow = BUILD.shadowDom;
178
+ var supportsListenerOptions = /* @__PURE__ */ (() => {
179
+ var _a;
180
+ let supportsListenerOptions2 = false;
181
+ try {
182
+ (_a = win.document) == null ? void 0 : _a.addEventListener(
183
+ "e",
184
+ null,
185
+ Object.defineProperty({}, "passive", {
186
+ get() {
187
+ supportsListenerOptions2 = true;
188
+ }
189
+ })
190
+ );
191
+ } catch (e) {
192
+ }
193
+ return supportsListenerOptions2;
194
+ })();
178
195
  var promiseResolve = (v) => Promise.resolve(v);
179
196
  var supportsConstructableStylesheets = /* @__PURE__ */ (() => {
180
197
  try {
@@ -1861,6 +1878,13 @@ var dispatchHooks = (hostRef, isInitialLoad) => {
1861
1878
  hostRef.$deferredConnectedCallback$ = false;
1862
1879
  safeCall(instance, "connectedCallback", void 0, elm);
1863
1880
  }
1881
+ {
1882
+ hostRef.$flags$ |= 256 /* isListenReady */;
1883
+ if (hostRef.$queuedListeners$) {
1884
+ hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event, elm));
1885
+ hostRef.$queuedListeners$ = void 0;
1886
+ }
1887
+ }
1864
1888
  if (hostRef.$fetchedCbList$.length) {
1865
1889
  hostRef.$fetchedCbList$.forEach((cb) => cb(elm));
1866
1890
  }
@@ -2303,6 +2327,7 @@ var connectedCallback = (elm) => {
2303
2327
  initializeComponent(elm, hostRef, cmpMeta);
2304
2328
  }
2305
2329
  } else {
2330
+ addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
2306
2331
  if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {
2307
2332
  fireConnectedCallback(hostRef.$lazyInstance$, elm);
2308
2333
  } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {
@@ -2330,6 +2355,12 @@ var disconnectInstance = (instance, elm) => {
2330
2355
  var disconnectedCallback = async (elm) => {
2331
2356
  if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {
2332
2357
  const hostRef = getHostRef(elm);
2358
+ {
2359
+ if (hostRef == null ? void 0 : hostRef.$rmListeners$) {
2360
+ hostRef.$rmListeners$.map((rmListener) => rmListener());
2361
+ hostRef.$rmListeners$ = void 0;
2362
+ }
2363
+ }
2333
2364
  if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {
2334
2365
  disconnectInstance(hostRef.$lazyInstance$, elm);
2335
2366
  } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {
@@ -2381,6 +2412,9 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
2381
2412
  {
2382
2413
  cmpMeta.$members$ = compactMeta[2];
2383
2414
  }
2415
+ {
2416
+ cmpMeta.$listeners$ = compactMeta[3];
2417
+ }
2384
2418
  const tagName = transformTag(cmpMeta.$tagName$);
2385
2419
  const HostElement = class extends HTMLElement {
2386
2420
  ["s-p"];
@@ -2399,6 +2433,7 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
2399
2433
  }
2400
2434
  if (!this.hasRegisteredEventListeners) {
2401
2435
  this.hasRegisteredEventListeners = true;
2436
+ addHostEventListeners(this, hostRef, cmpMeta.$listeners$);
2402
2437
  }
2403
2438
  if (appLoadFallback) {
2404
2439
  clearTimeout(appLoadFallback);
@@ -2468,6 +2503,35 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
2468
2503
  }
2469
2504
  endBootstrap();
2470
2505
  };
2506
+ var addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {
2507
+ if (listeners && win.document) {
2508
+ listeners.map(([flags, name, method]) => {
2509
+ const target = elm;
2510
+ const handler = hostListenerProxy(hostRef, method);
2511
+ const opts = hostListenerOpts(flags);
2512
+ plt.ael(target, name, handler, opts);
2513
+ (hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts));
2514
+ });
2515
+ }
2516
+ };
2517
+ var hostListenerProxy = (hostRef, methodName) => (ev) => {
2518
+ var _a;
2519
+ try {
2520
+ {
2521
+ if (hostRef.$flags$ & 256 /* isListenReady */) {
2522
+ (_a = hostRef.$lazyInstance$) == null ? void 0 : _a[methodName](ev);
2523
+ } else {
2524
+ (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);
2525
+ }
2526
+ }
2527
+ } catch (e) {
2528
+ consoleError(e, hostRef.$hostElement$);
2529
+ }
2530
+ };
2531
+ var hostListenerOpts = (flags) => supportsListenerOptions ? {
2532
+ passive: (flags & 1 /* Passive */) !== 0,
2533
+ capture: (flags & 2 /* Capture */) !== 0
2534
+ } : (flags & 2 /* Capture */) !== 0;
2471
2535
 
2472
2536
  // src/runtime/nonce.ts
2473
2537
  var setNonce = (nonce) => plt.$nonce$ = nonce;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BEvZs91D.js');
3
+ var index = require('./index-227GpI8K.js');
4
4
 
5
5
  const jobCardCss = () => `.job-card{display:block;padding:16px;border:1px solid #e0e0e0;border-radius:8px;background-color:#fff;box-shadow:0 2px 4px rgba(0, 0, 0, 0.08);transition:box-shadow 0.2s ease, border-color 0.2s ease}.job-card:hover{box-shadow:0 4px 8px rgba(0, 0, 0, 0.12);border-color:#d0d0d0}.job-card__header{margin-bottom:12px}.job-card__title{margin:0;font-size:18px;font-weight:700;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.job-card__title--link{text-decoration:none;color:#1f9755;transition:color 0.2s ease}.job-card__title--link:hover{text-decoration:underline;color:#1a7a43}.job-card__reference{font-size:0.875em;color:#666;background-color:#f5f5f5;padding:2px 6px;border-radius:3px}.job-card__reference--empty{display:none}.job-card__remote{background:#e8f5e9;color:#2e7d32;border-radius:100px;padding:4px 12px;text-transform:uppercase;font-size:11px;font-weight:700;line-height:1.5;white-space:nowrap}.job-card__remote--empty{display:none}.job-card__distance{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:13px;font-weight:500;color:#555}.job-card__distance--icon{display:inline-flex;align-items:center}.job-card__distance--icon svg{width:16px;height:16px;color:#1f9755}.job-card__content{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.job-card__info{flex:1;display:flex;flex-direction:column;gap:8px}.job-card__street,.job-card__brand,.job-card__employment-type{display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px;font-size:14px}.job-card__street--empty,.job-card__brand--empty,.job-card__employment-type--empty{color:#999}.job-card__street--icon,.job-card__brand--icon,.job-card__employment-type--icon{display:inline-flex;align-items:center;flex-shrink:0}.job-card__street--icon svg,.job-card__brand--icon svg,.job-card__employment-type--icon svg{width:16px;height:16px;color:#666}.job-card__street--label,.job-card__brand--label,.job-card__employment-type--label{color:#333}.job-card__street--label__wrapper{display:flex;align-items:center;gap:6px}.job-card__street--more-locations__wrapper{display:flex;align-items:center;gap:2px;font-size:12px;margin-left:2px}.job-card__street--amount{font-weight:600;color:#1f9755}.job-card__street--more-locations{color:#999}.job-card__apply{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;background-color:#198754;color:#fff;border-radius:4px;text-decoration:none;font-weight:600;font-size:14px;transition:background-color 0.2s ease, transform 0.1s ease;white-space:nowrap;flex-shrink:0}.job-card__apply:hover{background-color:#1a6f47;transform:translateY(-1px)}.job-card__apply:active{transform:translateY(0)}.job-card__apply--icon{display:inline-flex;align-items:center}.job-card__apply--icon svg{width:14px;height:14px}@media (max-width: 768px){.job-card{padding:12px}.job-card__content{flex-direction:column;gap:10px}.job-card__apply{width:100%;justify-content:center}.job-card__title{font-size:16px}}@media (max-width: 480px){.job-card{padding:10px}.job-card__title{font-size:15px}.job-card__distance{font-size:12px}.job-card__street,.job-card__brand,.job-card__employment-type{font-size:13px}}`;
6
6
 
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BEvZs91D.js');
3
+ var index = require('./index-227GpI8K.js');
4
4
  var appGlobals = require('./app-globals-V2Kpy_OQ.js');
5
5
 
6
6
  const defineCustomElements = async (win, options) => {
7
7
  if (typeof window === 'undefined') return undefined;
8
8
  await appGlobals.globalScripts();
9
- return index.bootstrapLazy([["fast-button.cjs",[[772,"fast-button",{"variant":[1],"type":[1],"disabled":[4]}]]],["fast-carousel.cjs",[[772,"fast-carousel",{"items":[1],"loop":[4],"class":[1],"controlClass":[1,"control-class"],"slideClass":[1,"slide-class"],"itemClass":[1,"item-class"],"scrollPrev":[64],"scrollNext":[64],"goToSlide":[64],"getEmbla":[64]}]]],["job-card.cjs",[[512,"job-card",{"job":[1],"index":[2],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"],"showCommuteTime":[4,"show-commute-time"],"streetFormat":[1,"street-format"],"rootClass":[1,"root-class"],"extraFieldsConfig":[16]}]]],["fast-input_4.cjs",[[512,"jobs-list-only",{"mockData":[4,"mock-data"],"jobs":[1],"loading":[4],"totalJob":[2,"total-job"],"noResultsLine1":[1,"no-results-line-1"],"noResultsLine2":[1,"no-results-line-2"],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"streetFormat":[1,"street-format"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"],"rootClass":[1,"root-class"],"showCountText":[1,"show-count-text"],"showSuggestions":[4,"show-suggestions"],"clearResultSuggestionsTitleText":[1,"clear-result-suggestions-title-text"],"clearResultSuggestionsLine1":[1,"clear-result-suggestions-line-1"],"clearResultSuggestionsLine2":[1,"clear-result-suggestions-line-2"],"clearResultSuggestionsLine3":[1,"clear-result-suggestions-line-3"],"clearResultSuggestionsLine4":[1,"clear-result-suggestions-line-4"],"autoFetch":[4,"auto-fetch"],"apiUrl":[1,"api-url"],"watchParams":[1,"watch-params"],"fetchedJobs":[32],"fetchedTotal":[32],"fetchLoading":[32]}],[512,"fast-input",{"placeholder":[1],"value":[1],"paramName":[1,"param-name"],"enableAutocomplete":[4,"enable-autocomplete"],"autocompleteUrl":[1,"autocomplete-url"],"targetPath":[1,"target-path"],"debounceMs":[2,"debounce-ms"],"minChars":[2,"min-chars"],"inputValue":[32],"suggestions":[32],"showDropdown":[32],"autocompleteLoading":[32]}],[772,"jobs-list-reactive",{"apiUrl":[1,"api-url"],"watchParams":[1,"watch-params"],"loadingClass":[1,"loading-class"],"isLoading":[32]}],[512,"jobs-item",{"job":[16],"index":[2],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"]}]]]], options);
9
+ return index.bootstrapLazy([["fast-carousel.cjs",[[772,"fast-carousel",{"items":[1],"loop":[4],"class":[1],"controlClass":[1,"control-class"],"slideClass":[1,"slide-class"],"itemClass":[1,"item-class"],"scrollPrev":[64],"scrollNext":[64],"goToSlide":[64],"getEmbla":[64]}]]],["job-card.cjs",[[512,"job-card",{"job":[1],"index":[2],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"],"showCommuteTime":[4,"show-commute-time"],"streetFormat":[1,"street-format"],"rootClass":[1,"root-class"],"extraFieldsConfig":[16]}]]],["fast-button_6.cjs",[[512,"jobs-list-only",{"mockData":[4,"mock-data"],"jobs":[1],"loading":[4],"totalJob":[2,"total-job"],"noResultsLine1":[1,"no-results-line-1"],"noResultsLine2":[1,"no-results-line-2"],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"streetFormat":[1,"street-format"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"],"rootClass":[1,"root-class"],"showCountText":[1,"show-count-text"],"showSuggestions":[4,"show-suggestions"],"clearResultSuggestionsTitleText":[1,"clear-result-suggestions-title-text"],"clearResultSuggestionsLine1":[1,"clear-result-suggestions-line-1"],"clearResultSuggestionsLine2":[1,"clear-result-suggestions-line-2"],"clearResultSuggestionsLine3":[1,"clear-result-suggestions-line-3"],"clearResultSuggestionsLine4":[1,"clear-result-suggestions-line-4"],"autoFetch":[4,"auto-fetch"],"apiUrl":[1,"api-url"],"watchParams":[1,"watch-params"],"fetchedJobs":[32],"fetchedTotal":[32],"fetchLoading":[32]}],[772,"fast-button",{"variant":[1],"type":[1],"disabled":[4]}],[260,"fast-form",null,[[0,"inputSubmit","handleInputSubmit"]]],[512,"fast-input",{"placeholder":[1],"value":[1],"paramName":[1,"param-name"],"enableAutocomplete":[4,"enable-autocomplete"],"autocompleteUrl":[1,"autocomplete-url"],"targetPath":[1,"target-path"],"debounceMs":[2,"debounce-ms"],"minChars":[2,"min-chars"],"inputValue":[32],"suggestions":[32],"showDropdown":[32],"autocompleteLoading":[32],"getValue":[64],"getParamName":[64]}],[772,"jobs-list-reactive",{"apiUrl":[1,"api-url"],"watchParams":[1,"watch-params"],"loadingClass":[1,"loading-class"],"isLoading":[32]}],[512,"jobs-item",{"job":[16],"index":[2],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"]}]]]], options);
10
10
  };
11
11
 
12
12
  exports.setNonce = index.setNonce;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BEvZs91D.js');
3
+ var index = require('./index-227GpI8K.js');
4
4
  var appGlobals = require('./app-globals-V2Kpy_OQ.js');
5
5
 
6
6
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
@@ -19,7 +19,7 @@ var patchBrowser = () => {
19
19
 
20
20
  patchBrowser().then(async (options) => {
21
21
  await appGlobals.globalScripts();
22
- return index.bootstrapLazy([["fast-button.cjs",[[772,"fast-button",{"variant":[1],"type":[1],"disabled":[4]}]]],["fast-carousel.cjs",[[772,"fast-carousel",{"items":[1],"loop":[4],"class":[1],"controlClass":[1,"control-class"],"slideClass":[1,"slide-class"],"itemClass":[1,"item-class"],"scrollPrev":[64],"scrollNext":[64],"goToSlide":[64],"getEmbla":[64]}]]],["job-card.cjs",[[512,"job-card",{"job":[1],"index":[2],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"],"showCommuteTime":[4,"show-commute-time"],"streetFormat":[1,"street-format"],"rootClass":[1,"root-class"],"extraFieldsConfig":[16]}]]],["fast-input_4.cjs",[[512,"jobs-list-only",{"mockData":[4,"mock-data"],"jobs":[1],"loading":[4],"totalJob":[2,"total-job"],"noResultsLine1":[1,"no-results-line-1"],"noResultsLine2":[1,"no-results-line-2"],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"streetFormat":[1,"street-format"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"],"rootClass":[1,"root-class"],"showCountText":[1,"show-count-text"],"showSuggestions":[4,"show-suggestions"],"clearResultSuggestionsTitleText":[1,"clear-result-suggestions-title-text"],"clearResultSuggestionsLine1":[1,"clear-result-suggestions-line-1"],"clearResultSuggestionsLine2":[1,"clear-result-suggestions-line-2"],"clearResultSuggestionsLine3":[1,"clear-result-suggestions-line-3"],"clearResultSuggestionsLine4":[1,"clear-result-suggestions-line-4"],"autoFetch":[4,"auto-fetch"],"apiUrl":[1,"api-url"],"watchParams":[1,"watch-params"],"fetchedJobs":[32],"fetchedTotal":[32],"fetchLoading":[32]}],[512,"fast-input",{"placeholder":[1],"value":[1],"paramName":[1,"param-name"],"enableAutocomplete":[4,"enable-autocomplete"],"autocompleteUrl":[1,"autocomplete-url"],"targetPath":[1,"target-path"],"debounceMs":[2,"debounce-ms"],"minChars":[2,"min-chars"],"inputValue":[32],"suggestions":[32],"showDropdown":[32],"autocompleteLoading":[32]}],[772,"jobs-list-reactive",{"apiUrl":[1,"api-url"],"watchParams":[1,"watch-params"],"loadingClass":[1,"loading-class"],"isLoading":[32]}],[512,"jobs-item",{"job":[16],"index":[2],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"]}]]]], options);
22
+ return index.bootstrapLazy([["fast-carousel.cjs",[[772,"fast-carousel",{"items":[1],"loop":[4],"class":[1],"controlClass":[1,"control-class"],"slideClass":[1,"slide-class"],"itemClass":[1,"item-class"],"scrollPrev":[64],"scrollNext":[64],"goToSlide":[64],"getEmbla":[64]}]]],["job-card.cjs",[[512,"job-card",{"job":[1],"index":[2],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"],"showCommuteTime":[4,"show-commute-time"],"streetFormat":[1,"street-format"],"rootClass":[1,"root-class"],"extraFieldsConfig":[16]}]]],["fast-button_6.cjs",[[512,"jobs-list-only",{"mockData":[4,"mock-data"],"jobs":[1],"loading":[4],"totalJob":[2,"total-job"],"noResultsLine1":[1,"no-results-line-1"],"noResultsLine2":[1,"no-results-line-2"],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"streetFormat":[1,"street-format"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"],"rootClass":[1,"root-class"],"showCountText":[1,"show-count-text"],"showSuggestions":[4,"show-suggestions"],"clearResultSuggestionsTitleText":[1,"clear-result-suggestions-title-text"],"clearResultSuggestionsLine1":[1,"clear-result-suggestions-line-1"],"clearResultSuggestionsLine2":[1,"clear-result-suggestions-line-2"],"clearResultSuggestionsLine3":[1,"clear-result-suggestions-line-3"],"clearResultSuggestionsLine4":[1,"clear-result-suggestions-line-4"],"autoFetch":[4,"auto-fetch"],"apiUrl":[1,"api-url"],"watchParams":[1,"watch-params"],"fetchedJobs":[32],"fetchedTotal":[32],"fetchLoading":[32]}],[772,"fast-button",{"variant":[1],"type":[1],"disabled":[4]}],[260,"fast-form",null,[[0,"inputSubmit","handleInputSubmit"]]],[512,"fast-input",{"placeholder":[1],"value":[1],"paramName":[1,"param-name"],"enableAutocomplete":[4,"enable-autocomplete"],"autocompleteUrl":[1,"autocomplete-url"],"targetPath":[1,"target-path"],"debounceMs":[2,"debounce-ms"],"minChars":[2,"min-chars"],"inputValue":[32],"suggestions":[32],"showDropdown":[32],"autocompleteLoading":[32],"getValue":[64],"getParamName":[64]}],[772,"jobs-list-reactive",{"apiUrl":[1,"api-url"],"watchParams":[1,"watch-params"],"loadingClass":[1,"loading-class"],"isLoading":[32]}],[512,"jobs-item",{"job":[16],"index":[2],"applyButtonText":[1,"apply-button-text"],"showBrand":[4,"show-brand"],"showReference":[4,"show-reference"],"showEmploymentType":[4,"show-employment-type"],"multiLocationText":[1,"multi-location-text"],"remoteLocationText":[1,"remote-location-text"],"enableKilometers":[4,"enable-kilometers"]}]]]], options);
23
23
  });
24
24
 
25
25
  exports.setNonce = index.setNonce;
@@ -2,6 +2,7 @@
2
2
  "entries": [
3
3
  "components/button/button.js",
4
4
  "components/fast-carousel/carousel.js",
5
+ "components/fast-form/fast-form.js",
5
6
  "components/fast-input/fast-input.js",
6
7
  "components/job-card/job-card.js",
7
8
  "components/jobs-item/jobs-item.js",
@@ -2,7 +2,7 @@
2
2
  display: inline-block;
3
3
  }
4
4
 
5
- .custom-button {
5
+ .fast-button {
6
6
  display: inline-flex;
7
7
  align-items: center;
8
8
  justify-content: center;
@@ -17,60 +17,60 @@
17
17
  transition: background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
18
18
  }
19
19
 
20
- .custom-button:focus {
20
+ .fast-button:focus {
21
21
  outline: 2px solid var(--custom-button-focus-ring, #2563eb);
22
22
  outline-offset: 2px;
23
23
  }
24
24
 
25
- .custom-button:focus:not(:focus-visible) {
25
+ .fast-button:focus:not(:focus-visible) {
26
26
  outline: none;
27
27
  }
28
28
 
29
29
  /* Primary */
30
- .custom-button--primary {
30
+ .fast-button--primary {
31
31
  background-color: var(--custom-button-primary-bg, #2563eb);
32
32
  color: var(--custom-button-primary-color, #fff);
33
33
  }
34
34
 
35
- .custom-button--primary:hover:not(.custom-button--disabled) {
35
+ .fast-button--primary:hover:not(.fast-button--disabled) {
36
36
  background-color: var(--custom-button-primary-hover-bg, #1d4ed8);
37
37
  }
38
38
 
39
- .custom-button--primary:active:not(.custom-button--disabled) {
39
+ .fast-button--primary:active:not(.fast-button--disabled) {
40
40
  background-color: var(--custom-button-primary-active-bg, #1e40af);
41
41
  }
42
42
 
43
43
  /* Secondary */
44
- .custom-button--secondary {
44
+ .fast-button--secondary {
45
45
  background-color: var(--custom-button-secondary-bg, #e5e7eb);
46
46
  color: var(--custom-button-secondary-color, #1f2937);
47
47
  }
48
48
 
49
- .custom-button--secondary:hover:not(.custom-button--disabled) {
49
+ .fast-button--secondary:hover:not(.fast-button--disabled) {
50
50
  background-color: var(--custom-button-secondary-hover-bg, #d1d5db);
51
51
  }
52
52
 
53
- .custom-button--secondary:active:not(.custom-button--disabled) {
53
+ .fast-button--secondary:active:not(.fast-button--disabled) {
54
54
  background-color: var(--custom-button-secondary-active-bg, #9ca3af);
55
55
  }
56
56
 
57
57
  /* Text */
58
- .custom-button--text {
58
+ .fast-button--text {
59
59
  background-color: transparent;
60
60
  color: var(--custom-button-text-color, #2563eb);
61
61
  }
62
62
 
63
- .custom-button--text:hover:not(.custom-button--disabled) {
63
+ .fast-button--text:hover:not(.fast-button--disabled) {
64
64
  background-color: var(--custom-button-text-hover-bg, rgba(37, 99, 235, 0.08));
65
65
  }
66
66
 
67
- .custom-button--text:active:not(.custom-button--disabled) {
67
+ .fast-button--text:active:not(.fast-button--disabled) {
68
68
  background-color: var(--custom-button-text-active-bg, rgba(37, 99, 235, 0.12));
69
69
  }
70
70
 
71
71
  /* Disabled */
72
- .custom-button--disabled,
73
- .custom-button:disabled {
72
+ .fast-button--disabled,
73
+ .fast-button:disabled {
74
74
  opacity: 0.6;
75
75
  cursor: not-allowed;
76
76
  }
@@ -1,20 +1,8 @@
1
1
  import { h } from "@stencil/core";
2
- export class CustomButton {
3
- /**
4
- * Visual variant of the button.
5
- */
2
+ export class FastButton {
6
3
  variant = 'primary';
7
- /**
8
- * Native button type (button or submit).
9
- */
10
- type = 'button';
11
- /**
12
- * When true, the button is disabled and does not emit events.
13
- */
4
+ type = 'submit';
14
5
  disabled = false;
15
- /**
16
- * Emitted when the button is clicked (not emitted when disabled).
17
- */
18
6
  buttonClick;
19
7
  handleClick = (e) => {
20
8
  if (this.disabled) {
@@ -25,11 +13,11 @@ export class CustomButton {
25
13
  this.buttonClick.emit(e);
26
14
  };
27
15
  render() {
28
- return (h("button", { key: '3b74909afe4e305dfd38f0b07657202e3d5bfccd', type: this.type, class: {
29
- 'custom-button': true,
30
- [`custom-button--${this.variant}`]: true,
31
- 'custom-button--disabled': this.disabled,
32
- }, disabled: this.disabled, onClick: this.handleClick }, h("slot", { key: '49845d350e4665c5c66e30bd9262f788eaaa1e20' })));
16
+ return (h("button", { key: 'b8e811748ade97c941bdf197a311d69d2801a120', type: this.type, class: {
17
+ 'fast-button': true,
18
+ [`fast-button--${this.variant}`]: true,
19
+ 'fast-button--disabled': this.disabled,
20
+ }, disabled: this.disabled, onClick: this.handleClick }, h("slot", { key: 'a6b987059cc33799abd580ea11f0fe644a3973bf' })));
33
21
  }
34
22
  static get is() { return "fast-button"; }
35
23
  static get originalStyleUrls() {
@@ -62,7 +50,7 @@ export class CustomButton {
62
50
  "optional": false,
63
51
  "docs": {
64
52
  "tags": [],
65
- "text": "Visual variant of the button."
53
+ "text": ""
66
54
  },
67
55
  "getter": false,
68
56
  "setter": false,
@@ -88,13 +76,13 @@ export class CustomButton {
88
76
  "optional": false,
89
77
  "docs": {
90
78
  "tags": [],
91
- "text": "Native button type (button or submit)."
79
+ "text": ""
92
80
  },
93
81
  "getter": false,
94
82
  "setter": false,
95
83
  "reflect": false,
96
84
  "attribute": "type",
97
- "defaultValue": "'button'"
85
+ "defaultValue": "'submit'"
98
86
  },
99
87
  "disabled": {
100
88
  "type": "boolean",
@@ -108,7 +96,7 @@ export class CustomButton {
108
96
  "optional": false,
109
97
  "docs": {
110
98
  "tags": [],
111
- "text": "When true, the button is disabled and does not emit events."
99
+ "text": ""
112
100
  },
113
101
  "getter": false,
114
102
  "setter": false,
@@ -127,7 +115,7 @@ export class CustomButton {
127
115
  "composed": true,
128
116
  "docs": {
129
117
  "tags": [],
130
- "text": "Emitted when the button is clicked (not emitted when disabled)."
118
+ "text": ""
131
119
  },
132
120
  "complexType": {
133
121
  "original": "MouseEvent",
@@ -0,0 +1,5 @@
1
+ .fast-form {
2
+ display: flex;
3
+ gap: 0.5rem;
4
+ align-items: flex-start;
5
+ }