@searchcraft/javascript-sdk 0.2.2 → 0.2.4

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 (133) hide show
  1. package/dist/cjs/index.cjs.js +2 -2
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/searchcraft-auto-search-form_17.cjs.entry.js +46 -61
  4. package/dist/cjs/searchcraft-auto-search-form_17.cjs.entry.js.map +1 -1
  5. package/dist/cjs/searchcraft-base-search-form.cjs.entry.js +3 -3
  6. package/dist/cjs/searchcraft-base-search-form.cjs.entry.js.map +1 -1
  7. package/dist/cjs/searchcraft-javascript-sdk.cjs.js +1 -1
  8. package/dist/cjs/{store-ccdd30e6.js → store-b0a26894.js} +3 -4
  9. package/dist/cjs/{store-ccdd30e6.js.map → store-b0a26894.js.map} +1 -1
  10. package/dist/cjs/{utils-bd99e8b0.js → utils-15f85bca.js} +23 -4
  11. package/dist/cjs/utils-15f85bca.js.map +1 -0
  12. package/dist/collection/components/searchcraft-auto-search-form/searchcraft-auto-search-form.js +10 -10
  13. package/dist/collection/components/searchcraft-auto-search-form/searchcraft-auto-search-form.js.map +1 -1
  14. package/dist/collection/components/searchcraft-auto-search-form/searchcraft-auto-search-form.module.css +2 -0
  15. package/dist/collection/components/searchcraft-base-search-form/searchcraft-base-search-form.js +1 -1
  16. package/dist/collection/components/searchcraft-base-search-form/searchcraft-base-search-form.js.map +1 -1
  17. package/dist/collection/components/searchcraft-base-search-form/searchcraft-base-search-form.module.css +6 -2
  18. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js +37 -37
  19. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js.map +1 -1
  20. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.module.css +7 -7
  21. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js +53 -73
  22. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js.map +1 -1
  23. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.module.css +1 -1
  24. package/dist/collection/components/searchcraft-clear-input-button/searchcraft-clear-input-button.js +2 -3
  25. package/dist/collection/components/searchcraft-clear-input-button/searchcraft-clear-input-button.js.map +1 -1
  26. package/dist/collection/components/searchcraft-filters-list/searchcraft-filters-list.js +8 -8
  27. package/dist/collection/components/searchcraft-filters-list/searchcraft-filters-list.js.map +1 -1
  28. package/dist/collection/components/searchcraft-input-icon/searchcraft-input-icon.js +15 -15
  29. package/dist/collection/components/searchcraft-input-icon/searchcraft-input-icon.js.map +1 -1
  30. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.js +0 -1
  31. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.js.map +1 -1
  32. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.module.css +0 -1
  33. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js +20 -13
  34. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js.map +1 -1
  35. package/dist/collection/components/searchcraft-slider/searchcraft-slider.module.css +26 -35
  36. package/dist/collection/components/searchcraft-spinner-dark/searchcraft-spinner-dark.module.css +6 -6
  37. package/dist/collection/components/searchcraft-spinner-light/searchcraft-spinner-light.module.css +3 -3
  38. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.module.css +9 -9
  39. package/dist/collection/index.js +0 -2
  40. package/dist/collection/index.js.map +1 -1
  41. package/dist/collection/provider/store.js +2 -4
  42. package/dist/collection/provider/store.js.map +1 -1
  43. package/dist/collection/utils/utils.js +21 -3
  44. package/dist/collection/utils/utils.js.map +1 -1
  45. package/dist/components/index.js +2 -2
  46. package/dist/components/{p-2350c0ab.js → p-1204b43a.js} +6 -6
  47. package/dist/components/{p-2350c0ab.js.map → p-1204b43a.js.map} +1 -1
  48. package/dist/components/{p-c70cd874.js → p-1c377190.js} +5 -6
  49. package/dist/components/p-1c377190.js.map +1 -0
  50. package/dist/components/{p-c815eb98.js → p-25f18f2e.js} +2 -2
  51. package/dist/components/{p-c815eb98.js.map → p-25f18f2e.js.map} +1 -1
  52. package/dist/components/{p-99971aa9.js → p-33bb5c45.js} +3 -4
  53. package/dist/components/{p-99971aa9.js.map → p-33bb5c45.js.map} +1 -1
  54. package/dist/components/{p-15dd4fe4.js → p-3fece4e2.js} +2 -2
  55. package/dist/components/{p-15dd4fe4.js.map → p-3fece4e2.js.map} +1 -1
  56. package/dist/components/{p-85693c64.js → p-576f0d2b.js} +2 -2
  57. package/dist/components/{p-85693c64.js.map → p-576f0d2b.js.map} +1 -1
  58. package/dist/components/{p-1101288c.js → p-8c38185e.js} +3 -3
  59. package/dist/components/p-8c38185e.js.map +1 -0
  60. package/dist/components/{p-bd90d9b4.js → p-8c70054a.js} +10 -10
  61. package/dist/components/p-8c70054a.js.map +1 -0
  62. package/dist/components/{p-8fe6289d.js → p-ae84b899.js} +1 -2
  63. package/dist/components/p-ae84b899.js.map +1 -0
  64. package/dist/components/{p-aff5cd24.js → p-ff6c3650.js} +23 -5
  65. package/dist/components/p-ff6c3650.js.map +1 -0
  66. package/dist/components/searchcraft-auto-search-form.js +11 -11
  67. package/dist/components/searchcraft-auto-search-form.js.map +1 -1
  68. package/dist/components/searchcraft-base-search-form.js +10 -10
  69. package/dist/components/searchcraft-base-search-form.js.map +1 -1
  70. package/dist/components/searchcraft-base-search-result.js +1 -1
  71. package/dist/components/searchcraft-base-search-results.js +21 -41
  72. package/dist/components/searchcraft-base-search-results.js.map +1 -1
  73. package/dist/components/searchcraft-button.js +1 -1
  74. package/dist/components/searchcraft-clear-input-button.js +1 -1
  75. package/dist/components/searchcraft-filters-list.js +9 -9
  76. package/dist/components/searchcraft-filters-list.js.map +1 -1
  77. package/dist/components/searchcraft-input-icon.js +1 -1
  78. package/dist/components/searchcraft-input-label.js +1 -1
  79. package/dist/components/searchcraft-input.js +1 -1
  80. package/dist/components/searchcraft-results-info.js +2 -2
  81. package/dist/components/searchcraft-results-info.js.map +1 -1
  82. package/dist/components/searchcraft-slider.js +17 -10
  83. package/dist/components/searchcraft-slider.js.map +1 -1
  84. package/dist/components/searchcraft-spinner-dark.js +1 -1
  85. package/dist/components/searchcraft-spinner-light.js +1 -1
  86. package/dist/components/searchcraft-toggle-button.js +2 -2
  87. package/dist/components/searchcraft-toggle-button.js.map +1 -1
  88. package/dist/esm/index.js +2 -2
  89. package/dist/esm/loader.js +1 -1
  90. package/dist/esm/searchcraft-auto-search-form_17.entry.js +46 -61
  91. package/dist/esm/searchcraft-auto-search-form_17.entry.js.map +1 -1
  92. package/dist/esm/searchcraft-base-search-form.entry.js +3 -3
  93. package/dist/esm/searchcraft-base-search-form.entry.js.map +1 -1
  94. package/dist/esm/searchcraft-javascript-sdk.js +1 -1
  95. package/dist/esm/{store-311de204.js → store-97358312.js} +3 -4
  96. package/dist/esm/{store-311de204.js.map → store-97358312.js.map} +1 -1
  97. package/dist/esm/{utils-e2076797.js → utils-dbb6302b.js} +23 -5
  98. package/dist/esm/utils-dbb6302b.js.map +1 -0
  99. package/dist/searchcraft-javascript-sdk/index.esm.js +1 -1
  100. package/dist/searchcraft-javascript-sdk/p-1a0e85ee.entry.js +2 -0
  101. package/dist/searchcraft-javascript-sdk/p-1a0e85ee.entry.js.map +1 -0
  102. package/dist/searchcraft-javascript-sdk/p-acca6173.entry.js +2 -0
  103. package/dist/searchcraft-javascript-sdk/p-acca6173.entry.js.map +1 -0
  104. package/dist/searchcraft-javascript-sdk/{p-80ea9602.js → p-cd489e98.js} +1 -1
  105. package/dist/searchcraft-javascript-sdk/p-cd489e98.js.map +1 -0
  106. package/dist/searchcraft-javascript-sdk/p-ff6c3650.js +2 -0
  107. package/dist/searchcraft-javascript-sdk/p-ff6c3650.js.map +1 -0
  108. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js +1 -1
  109. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js.map +1 -1
  110. package/dist/types/components/searchcraft-auto-search-form/searchcraft-auto-search-form.d.ts +1 -1
  111. package/dist/types/components/searchcraft-base-search-result/searchcraft-base-search-result.d.ts +3 -3
  112. package/dist/types/components/searchcraft-base-search-results/searchcraft-base-search-results.d.ts +8 -9
  113. package/dist/types/components/searchcraft-filters-list/searchcraft-filters-list.d.ts +1 -1
  114. package/dist/types/components/searchcraft-input-icon/searchcraft-input-icon.d.ts +1 -7
  115. package/dist/types/components/searchcraft-slider/searchcraft-slider.d.ts +4 -4
  116. package/dist/types/components.d.ts +1 -13
  117. package/dist/types/provider/store.d.ts +8 -8
  118. package/dist/types/utils/utils.d.ts +1 -0
  119. package/package.json +1 -1
  120. package/dist/cjs/utils-bd99e8b0.js.map +0 -1
  121. package/dist/components/p-1101288c.js.map +0 -1
  122. package/dist/components/p-8fe6289d.js.map +0 -1
  123. package/dist/components/p-aff5cd24.js.map +0 -1
  124. package/dist/components/p-bd90d9b4.js.map +0 -1
  125. package/dist/components/p-c70cd874.js.map +0 -1
  126. package/dist/esm/utils-e2076797.js.map +0 -1
  127. package/dist/searchcraft-javascript-sdk/p-6108dd80.entry.js +0 -2
  128. package/dist/searchcraft-javascript-sdk/p-6108dd80.entry.js.map +0 -1
  129. package/dist/searchcraft-javascript-sdk/p-80ea9602.js.map +0 -1
  130. package/dist/searchcraft-javascript-sdk/p-a9bac3ca.entry.js +0 -2
  131. package/dist/searchcraft-javascript-sdk/p-a9bac3ca.entry.js.map +0 -1
  132. package/dist/searchcraft-javascript-sdk/p-aff5cd24.js +0 -2
  133. package/dist/searchcraft-javascript-sdk/p-aff5cd24.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-clear-input-button.js","sourceRoot":"","sources":["../../../src/components/searchcraft-clear-input-button/searchcraft-clear-input-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,EAEL,IAAI,EACJ,CAAC,EACD,KAAK,GACN,MAAM,eAAe,CAAC;AACvB,OAAO,UAAU,MAAM,YAAY,CAAC;AAOpC,MAAM,OAAO,2BAA2B;;QAatC,0CAA0C;QAClC,qBAAgB,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,+BAA+B;YACvD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,iBAAiB;QAC3C,CAAC,CAAC;4BAhBsB,KAAK;sCACI,KAAK;qBAKrB,OAAO;;IAEhB,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;IAChC,CAAC;IAQD,MAAM;QACJ,OAAO,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CACnC,cACE,KAAK,EAAE,UAAU,CAAC,qBAAqB,EAAE,4BAA4B,CAAC,EACtE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,IAAI,EAAC,QAAQ,IAEZ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACnB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAClB,oCAA6B,CAC9B,CAAC,CAAC,CAAC,CACF,mCAA4B,CAC7B,CACF,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACtB,kCAA4B,IAAI,EAAC,aAAa,GAAG,CAClD,CAAC,CAAC,CAAC,CACF,kCAA4B,IAAI,EAAC,YAAY,GAAG,CACjD,CACM,CACV,CAAC,CAAC,CAAC,CACF,cACE,KAAK,EAAE,UAAU,CAAC,qBAAqB,EAAE,4BAA4B,CAAC,EACtE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,IAAI,EAAC,QAAQ,IAEZ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACnB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAClB,oCAA6B,CAC9B,CAAC,CAAC,CAAC,CACF,mCAA4B,CAC7B,CACF,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACtB,kCAA4B,IAAI,EAAC,aAAa,GAAG,CAClD,CAAC,CAAC,CAAC,CACF,kCAA4B,IAAI,EAAC,YAAY,GAAG,CACjD,CACM,CACV,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Event,\n type EventEmitter,\n Prop,\n h,\n State,\n} from '@stencil/core';\nimport classNames from 'classnames';\n\n@Component({\n tag: 'searchcraft-clear-input-button',\n styleUrl: 'searchcraft-clear-input-button.module.scss',\n shadow: true,\n})\nexport class SearchcraftClearInputButton {\n @Prop() isRequesting? = false;\n @Prop() rightToLeftOrientation = false;\n\n // Updated `clearInput` to an EventEmitter\n @Event() clearInput: EventEmitter<void>;\n\n @State() theme = 'light';\n\n private isLightTheme() {\n return this.theme === 'light';\n }\n\n // Added a click handler to emit the event\n private handleClearClick = (event: MouseEvent) => {\n event.preventDefault(); // Prevent default if necessary\n this.clearInput.emit(); // Emit the event\n };\n\n render() {\n return this.rightToLeftOrientation ? (\n <button\n class={classNames('inputClearButtonRTL', '.sc-clear-input-button-rtl')}\n onClick={this.handleClearClick}\n type='button'\n >\n {this.isRequesting ? (\n this.isLightTheme ? (\n <searchcraft-spinner-light />\n ) : (\n <searchcraft-spinner-dark />\n )\n ) : this.isLightTheme ? (\n <searchcraft-clear-icon-set type='clear-light' />\n ) : (\n <searchcraft-clear-icon-set type='clear-dark' />\n )}\n </button>\n ) : (\n <button\n class={classNames('inputClearButtonLTR', '.sc-clear-input-button-ltr')}\n onClick={this.handleClearClick}\n type='button'\n >\n {this.isRequesting ? (\n this.isLightTheme ? (\n <searchcraft-spinner-light />\n ) : (\n <searchcraft-spinner-dark />\n )\n ) : this.isLightTheme ? (\n <searchcraft-clear-icon-set type='clear-light' />\n ) : (\n <searchcraft-clear-icon-set type='clear-dark' />\n )}\n </button>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-clear-input-button.js","sourceRoot":"","sources":["../../../src/components/searchcraft-clear-input-button/searchcraft-clear-input-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,EAEL,IAAI,EACJ,CAAC,EACD,KAAK,GACN,MAAM,eAAe,CAAC;AACvB,OAAO,UAAU,MAAM,YAAY,CAAC;AAOpC,MAAM,OAAO,2BAA2B;;QAY9B,qBAAgB,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC,CAAC;4BAdsB,KAAK;sCACI,KAAK;qBAIrB,OAAO;;IAEhB,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;IAChC,CAAC;IAOD,MAAM;QACJ,OAAO,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CACnC,cACE,KAAK,EAAE,UAAU,CAAC,qBAAqB,EAAE,4BAA4B,CAAC,EACtE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,IAAI,EAAC,QAAQ,IAEZ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACnB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAClB,oCAA6B,CAC9B,CAAC,CAAC,CAAC,CACF,mCAA4B,CAC7B,CACF,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACtB,kCAA4B,IAAI,EAAC,aAAa,GAAG,CAClD,CAAC,CAAC,CAAC,CACF,kCAA4B,IAAI,EAAC,YAAY,GAAG,CACjD,CACM,CACV,CAAC,CAAC,CAAC,CACF,cACE,KAAK,EAAE,UAAU,CAAC,qBAAqB,EAAE,4BAA4B,CAAC,EACtE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,IAAI,EAAC,QAAQ,IAEZ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACnB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAClB,oCAA6B,CAC9B,CAAC,CAAC,CAAC,CACF,mCAA4B,CAC7B,CACF,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACtB,kCAA4B,IAAI,EAAC,aAAa,GAAG,CAClD,CAAC,CAAC,CAAC,CACF,kCAA4B,IAAI,EAAC,YAAY,GAAG,CACjD,CACM,CACV,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Event,\n type EventEmitter,\n Prop,\n h,\n State,\n} from '@stencil/core';\nimport classNames from 'classnames';\n\n@Component({\n tag: 'searchcraft-clear-input-button',\n styleUrl: 'searchcraft-clear-input-button.module.scss',\n shadow: true,\n})\nexport class SearchcraftClearInputButton {\n @Prop() isRequesting? = false;\n @Prop() rightToLeftOrientation = false;\n\n @Event() clearInput: EventEmitter<void>;\n\n @State() theme = 'light';\n\n private isLightTheme() {\n return this.theme === 'light';\n }\n\n private handleClearClick = (event: MouseEvent) => {\n event.preventDefault();\n this.clearInput.emit();\n };\n\n render() {\n return this.rightToLeftOrientation ? (\n <button\n class={classNames('inputClearButtonRTL', '.sc-clear-input-button-rtl')}\n onClick={this.handleClearClick}\n type='button'\n >\n {this.isRequesting ? (\n this.isLightTheme ? (\n <searchcraft-spinner-light />\n ) : (\n <searchcraft-spinner-dark />\n )\n ) : this.isLightTheme ? (\n <searchcraft-clear-icon-set type='clear-light' />\n ) : (\n <searchcraft-clear-icon-set type='clear-dark' />\n )}\n </button>\n ) : (\n <button\n class={classNames('inputClearButtonLTR', '.sc-clear-input-button-ltr')}\n onClick={this.handleClearClick}\n type='button'\n >\n {this.isRequesting ? (\n this.isLightTheme ? (\n <searchcraft-spinner-light />\n ) : (\n <searchcraft-spinner-dark />\n )\n ) : this.isLightTheme ? (\n <searchcraft-clear-icon-set type='clear-light' />\n ) : (\n <searchcraft-clear-icon-set type='clear-dark' />\n )}\n </button>\n );\n }\n}\n"]}
@@ -19,10 +19,10 @@ export class SearchcraftFiltersList {
19
19
  this.dynamicFilters = [];
20
20
  this.initialFilters = [];
21
21
  this.isRequesting = false;
22
- this.selectedFilters = new Set();
23
22
  this.originalFilterCounts = {};
24
23
  this.query = '';
25
24
  this.resultsCount = 0;
25
+ this.selectedFilters = new Set();
26
26
  }
27
27
  connectedCallback() {
28
28
  this.unsubscribe = useSearchcraftStore.subscribe((state) => {
@@ -64,10 +64,10 @@ export class SearchcraftFiltersList {
64
64
  }
65
65
  formatLabel(label) {
66
66
  return label
67
- .replace(/-/g, ' ') // Replace dashes with spaces
68
- .split(' ') // Split words
69
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) // Capitalize the first letter
70
- .join(' '); // Join words back into a single string
67
+ .replace(/-/g, ' ')
68
+ .split(' ')
69
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
70
+ .join(' ');
71
71
  }
72
72
  render() {
73
73
  if (!this.query || this.resultsCount === 0) {
@@ -81,7 +81,7 @@ export class SearchcraftFiltersList {
81
81
  });
82
82
  return (h("div", { class: 'filtersList' }, filtersToRender.map((filter) => (h("div", { key: filter.value }, h("label", { class: 'checkboxLabel' }, h("input", { class: 'filterCheckbox', checked: filter.isChecked, onChange: (event) => this.handleFilterChange(filter.value, event.target.checked), type: 'checkbox', value: filter.value }), this.formatLabel(filter.label)), filter.isChecked &&
83
83
  filter.children.map((childFilter) => {
84
- const childLabel = childFilter.label.split('/').pop(); // Get only the part after the last '/'
84
+ const childLabel = childFilter.label.split('/').pop();
85
85
  return (h("label", { class: 'childCheckboxLabel', key: childFilter.value, style: { marginLeft: '20px' } }, h("input", { class: 'childFilterCheckbox', checked: this.selectedFilters.has(childFilter.value), onChange: (event) => this.handleFilterChange(childFilter.value, event.target.checked), type: 'checkbox', value: childFilter.value }), this.formatLabel(childLabel || '')));
86
86
  }))))));
87
87
  }
@@ -127,10 +127,10 @@ export class SearchcraftFiltersList {
127
127
  "dynamicFilters": {},
128
128
  "initialFilters": {},
129
129
  "isRequesting": {},
130
- "selectedFilters": {},
131
130
  "originalFilterCounts": {},
132
131
  "query": {},
133
- "resultsCount": {}
132
+ "resultsCount": {},
133
+ "selectedFilters": {}
134
134
  };
135
135
  }
136
136
  static get events() {
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-filters-list.js","sourceRoot":"","sources":["../../../src/components/searchcraft-filters-list/searchcraft-filters-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,CAAC,EACD,KAAK,EACL,IAAI,EACJ,KAAK,GAEN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAQtD,MAAM,OAAO,sBAAsB;;QAYzB,gBAAW,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;QAqDrD,uBAAkB,GAAG,CAAC,KAAa,EAAE,OAAgB,EAAE,EAAE;YACvD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YAED,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAE9D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC/C,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;YAC1D,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAC5B,CAAC,CAAC;uBA5EyD,EAAE;8BAGM,EAAE;8BACF,EAAE;4BAC7C,KAAK;+BACW,IAAI,GAAG,EAAE;oCACO,EAAE;qBACzC,EAAE;4BACK,CAAC;;IAKzB,iBAAiB;QACf,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;;YACzD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,CAAA,MAAA,MAAA,MAAA,KAAK,CAAC,aAAa,0CAAE,IAAI,0CAAE,IAAI,0CAAE,MAAM,KAAI,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,aAAa,0CAAE,IAAI,CAAC,MAAM,CAAC;YAChD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,yBAAyB,CAAC,MAAc;;QACtC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,KAAI,EAAE,CAAC,CAAC,GAAG,CACjE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACf,MAAM,WAAW,GAAG,GAAG,CAAC;YACxB,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC;YACpD,OAAO;gBACL,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG;gBAC7C,KAAK,EAAE,WAAW;aACnB,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,8DAA8D;QAC9D,MAAM,cAAc,GAAG;YACrB,GAAG,IAAI,CAAC,cAAc;YACtB,GAAG,UAAU,CAAC,MAAM,CAClB,CAAC,MAAM,EAAE,EAAE,CACT,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CACvB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAC5C,CACJ;SACF,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,sCAAsC;QACtC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAgBD,WAAW,CAAC,KAAa;QACvB,OAAO,KAAK;aACT,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,6BAA6B;aAChD,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc;aACzB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;aAC1F,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,uCAAuC;IACvD,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAChD,CAAC,aAAa,EAAE,EAAE,CAChB,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;gBACnD,aAAa,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAC9C,CAAC;YACF,uCACK,aAAa,KAChB,SAAS,EACT,QAAQ,EAAE,eAAe,IACzB;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CACL,WAAK,KAAK,EAAC,aAAa,IACrB,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,WAAK,GAAG,EAAE,MAAM,CAAC,KAAK;YAEpB,aAAO,KAAK,EAAC,eAAe;gBAC1B,aACE,KAAK,EAAC,gBAAgB,EACtB,OAAO,EAAE,MAAM,CAAC,SAAS,EACzB,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,CACzB,IAAI,CAAC,kBAAkB,CACrB,MAAM,CAAC,KAAK,EACX,KAAK,CAAC,MAA2B,CAAC,OAAO,CAC3C,EAEH,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,MAAM,CAAC,KAAK,GACnB;gBACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CACzB;YAGP,MAAM,CAAC,SAAS;gBACf,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;oBAClC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,uCAAuC;oBAC9F,OAAO,CACL,aACE,KAAK,EAAC,oBAAoB,EAC1B,GAAG,EAAE,WAAW,CAAC,KAAK,EACtB,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;wBAE7B,aACE,KAAK,EAAC,qBAAqB,EAC3B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EACpD,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,CACzB,IAAI,CAAC,kBAAkB,CACrB,WAAW,CAAC,KAAK,EAChB,KAAK,CAAC,MAA2B,CAAC,OAAO,CAC3C,EAEH,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,WAAW,CAAC,KAAK,GACxB;wBACD,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC,CAC7B,CACT,CAAC;gBACJ,CAAC,CAAC,CACA,CACP,CAAC,CACE,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n h,\n State,\n Prop,\n Event,\n type EventEmitter,\n} from '@stencil/core';\nimport { useSearchcraftStore } from '@provider/store';\nimport type { Facets } from '@searchcraft/core';\n\n@Component({\n tag: 'searchcraft-filters-list',\n styleUrl: 'searchcraft-filters-list.module.scss',\n shadow: true,\n})\nexport class SearchcraftFiltersList {\n @Prop() filters: Array<{ label: string; value: string }> = [];\n @Event() filtersUpdated: EventEmitter<string[]>;\n\n @State() dynamicFilters: Array<{ label: string; value: string }> = [];\n @State() initialFilters: Array<{ label: string; value: string }> = [];\n @State() isRequesting = false;\n @State() selectedFilters: Set<string> = new Set();\n @State() originalFilterCounts: Record<string, string> = {};\n @State() query = '';\n @State() resultsCount = 0;\n\n private searchStore = useSearchcraftStore.getState();\n unsubscribe: () => void;\n\n connectedCallback() {\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n this.isRequesting = state.isRequesting;\n this.query = state.query || '';\n this.resultsCount = state.searchResults?.data?.hits?.length || 0;\n\n const facets = state.searchResults?.data.facets;\n if (facets) {\n this.populateFiltersFromFacets(facets);\n }\n });\n }\n\n disconnectedCallback() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\n\n populateFiltersFromFacets(facets: Facets) {\n const newFilters = Object.entries(facets.section?.counts || {}).map(\n ([key, count]) => {\n const filterValue = key;\n this.originalFilterCounts[filterValue] = `${count}`;\n return {\n label: `${key.replace(/^\\//, '')} (${count})`,\n value: filterValue,\n };\n },\n );\n\n // Update dynamic filters while preserving the initial filters\n const updatedFilters = [\n ...this.initialFilters,\n ...newFilters.filter(\n (filter) =>\n !this.initialFilters.some(\n (initial) => initial.value === filter.value,\n ),\n ),\n ];\n\n this.dynamicFilters = updatedFilters;\n\n // Store the initial filters only once\n if (this.initialFilters.length === 0) {\n this.initialFilters = [...updatedFilters];\n }\n }\n\n handleFilterChange = (value: string, checked: boolean) => {\n if (checked) {\n this.selectedFilters.add(value);\n } else {\n this.selectedFilters.delete(value);\n }\n\n const selectedFiltersArray = Array.from(this.selectedFilters);\n\n this.filtersUpdated.emit(selectedFiltersArray);\n this.searchStore.setSelectedFilters(selectedFiltersArray);\n this.searchStore.search();\n };\n\n formatLabel(label: string): string {\n return label\n .replace(/-/g, ' ') // Replace dashes with spaces\n .split(' ') // Split words\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) // Capitalize the first letter\n .join(' '); // Join words back into a single string\n }\n\n render() {\n if (!this.query || this.resultsCount === 0) {\n return null;\n }\n\n const filtersToRender = this.initialFilters.map((initialFilter) => {\n const isChecked = this.selectedFilters.has(initialFilter.value);\n const dynamicChildren = this.dynamicFilters.filter(\n (dynamicFilter) =>\n dynamicFilter.value.startsWith(initialFilter.value) &&\n dynamicFilter.value !== initialFilter.value, // Exclude parent itself\n );\n return {\n ...initialFilter,\n isChecked,\n children: dynamicChildren,\n };\n });\n\n return (\n <div class='filtersList'>\n {filtersToRender.map((filter) => (\n <div key={filter.value}>\n {/* Render the parent filter */}\n <label class='checkboxLabel'>\n <input\n class='filterCheckbox'\n checked={filter.isChecked}\n onChange={(event: Event) =>\n this.handleFilterChange(\n filter.value,\n (event.target as HTMLInputElement).checked,\n )\n }\n type='checkbox'\n value={filter.value}\n />\n {this.formatLabel(filter.label)}\n </label>\n\n {/* Render dynamic child filters underneath the checked parent */}\n {filter.isChecked &&\n filter.children.map((childFilter) => {\n const childLabel = childFilter.label.split('/').pop(); // Get only the part after the last '/'\n return (\n <label\n class='childCheckboxLabel'\n key={childFilter.value}\n style={{ marginLeft: '20px' }} // Add indentation for child filters\n >\n <input\n class='childFilterCheckbox'\n checked={this.selectedFilters.has(childFilter.value)}\n onChange={(event: Event) =>\n this.handleFilterChange(\n childFilter.value,\n (event.target as HTMLInputElement).checked,\n )\n }\n type='checkbox'\n value={childFilter.value}\n />\n {this.formatLabel(childLabel || '')}\n </label>\n );\n })}\n </div>\n ))}\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-filters-list.js","sourceRoot":"","sources":["../../../src/components/searchcraft-filters-list/searchcraft-filters-list.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n State,\n Prop,\n Event,\n type EventEmitter,\n} from '@stencil/core';\n\nimport type { Facets } from '@searchcraft/core';\n\nimport { useSearchcraftStore } from '@provider/store';\n\n@Component({\n tag: 'searchcraft-filters-list',\n styleUrl: 'searchcraft-filters-list.module.scss',\n shadow: true,\n})\nexport class SearchcraftFiltersList {\n @Prop() filters: Array<{ label: string; value: string }> = [];\n\n @Event() filtersUpdated: EventEmitter<string[]>;\n\n @State() dynamicFilters: Array<{ label: string; value: string }> = [];\n @State() initialFilters: Array<{ label: string; value: string }> = [];\n @State() isRequesting = false;\n @State() originalFilterCounts: Record<string, string> = {};\n @State() query = '';\n @State() resultsCount = 0;\n @State() selectedFilters: Set<string> = new Set();\n\n private searchStore = useSearchcraftStore.getState();\n unsubscribe: () => void;\n\n connectedCallback() {\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n this.isRequesting = state.isRequesting;\n this.query = state.query || '';\n this.resultsCount = state.searchResults?.data?.hits?.length || 0;\n\n const facets = state.searchResults?.data.facets;\n if (facets) {\n this.populateFiltersFromFacets(facets);\n }\n });\n }\n\n disconnectedCallback() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\n\n populateFiltersFromFacets(facets: Facets) {\n const newFilters = Object.entries(facets.section?.counts || {}).map(\n ([key, count]) => {\n const filterValue = key;\n this.originalFilterCounts[filterValue] = `${count}`;\n return {\n label: `${key.replace(/^\\//, '')} (${count})`,\n value: filterValue,\n };\n },\n );\n\n // Update dynamic filters while preserving the initial filters\n const updatedFilters = [\n ...this.initialFilters,\n ...newFilters.filter(\n (filter) =>\n !this.initialFilters.some(\n (initial) => initial.value === filter.value,\n ),\n ),\n ];\n\n this.dynamicFilters = updatedFilters;\n\n // Store the initial filters only once\n if (this.initialFilters.length === 0) {\n this.initialFilters = [...updatedFilters];\n }\n }\n\n handleFilterChange = (value: string, checked: boolean) => {\n if (checked) {\n this.selectedFilters.add(value);\n } else {\n this.selectedFilters.delete(value);\n }\n\n const selectedFiltersArray = Array.from(this.selectedFilters);\n\n this.filtersUpdated.emit(selectedFiltersArray);\n this.searchStore.setSelectedFilters(selectedFiltersArray);\n this.searchStore.search();\n };\n\n formatLabel(label: string): string {\n return label\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n\n render() {\n if (!this.query || this.resultsCount === 0) {\n return null;\n }\n\n const filtersToRender = this.initialFilters.map((initialFilter) => {\n const isChecked = this.selectedFilters.has(initialFilter.value);\n const dynamicChildren = this.dynamicFilters.filter(\n (dynamicFilter) =>\n dynamicFilter.value.startsWith(initialFilter.value) &&\n dynamicFilter.value !== initialFilter.value, // Exclude parent itself\n );\n return {\n ...initialFilter,\n isChecked,\n children: dynamicChildren,\n };\n });\n\n return (\n <div class='filtersList'>\n {filtersToRender.map((filter) => (\n <div key={filter.value}>\n {/* Render the parent filter */}\n <label class='checkboxLabel'>\n <input\n class='filterCheckbox'\n checked={filter.isChecked}\n onChange={(event: Event) =>\n this.handleFilterChange(\n filter.value,\n (event.target as HTMLInputElement).checked,\n )\n }\n type='checkbox'\n value={filter.value}\n />\n {this.formatLabel(filter.label)}\n </label>\n {filter.isChecked &&\n filter.children.map((childFilter) => {\n const childLabel = childFilter.label.split('/').pop();\n return (\n <label\n class='childCheckboxLabel'\n key={childFilter.value}\n style={{ marginLeft: '20px' }}\n >\n <input\n class='childFilterCheckbox'\n checked={this.selectedFilters.has(childFilter.value)}\n onChange={(event: Event) =>\n this.handleFilterChange(\n childFilter.value,\n (event.target as HTMLInputElement).checked,\n )\n }\n type='checkbox'\n value={childFilter.value}\n />\n {this.formatLabel(childLabel || '')}\n </label>\n );\n })}\n </div>\n ))}\n </div>\n );\n }\n}\n"]}
@@ -2,8 +2,8 @@ import { h } from "@stencil/core";
2
2
  export class SearchcraftInputIcon {
3
3
  constructor() {
4
4
  this.error = undefined;
5
- this.rightToLeftOrientation = false;
6
5
  this.height = 20;
6
+ this.rightToLeftOrientation = false;
7
7
  this.width = 20;
8
8
  this.theme = 'light';
9
9
  }
@@ -39,35 +39,35 @@ export class SearchcraftInputIcon {
39
39
  "optional": true,
40
40
  "docs": {
41
41
  "tags": [],
42
- "text": "Determines if an error icon should be displayed."
42
+ "text": ""
43
43
  },
44
44
  "attribute": "error",
45
45
  "reflect": false
46
46
  },
47
- "rightToLeftOrientation": {
48
- "type": "boolean",
47
+ "height": {
48
+ "type": "number",
49
49
  "mutable": false,
50
50
  "complexType": {
51
- "original": "boolean",
52
- "resolved": "boolean",
51
+ "original": "number",
52
+ "resolved": "number",
53
53
  "references": {}
54
54
  },
55
55
  "required": false,
56
56
  "optional": false,
57
57
  "docs": {
58
58
  "tags": [],
59
- "text": "Determines if the layout should be right-to-left."
59
+ "text": ""
60
60
  },
61
- "attribute": "right-to-left-orientation",
61
+ "attribute": "height",
62
62
  "reflect": false,
63
- "defaultValue": "false"
63
+ "defaultValue": "20"
64
64
  },
65
- "height": {
66
- "type": "number",
65
+ "rightToLeftOrientation": {
66
+ "type": "boolean",
67
67
  "mutable": false,
68
68
  "complexType": {
69
- "original": "number",
70
- "resolved": "number",
69
+ "original": "boolean",
70
+ "resolved": "boolean",
71
71
  "references": {}
72
72
  },
73
73
  "required": false,
@@ -76,9 +76,9 @@ export class SearchcraftInputIcon {
76
76
  "tags": [],
77
77
  "text": ""
78
78
  },
79
- "attribute": "height",
79
+ "attribute": "right-to-left-orientation",
80
80
  "reflect": false,
81
- "defaultValue": "20"
81
+ "defaultValue": "false"
82
82
  },
83
83
  "width": {
84
84
  "type": "number",
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-input-icon.js","sourceRoot":"","sources":["../../../src/components/searchcraft-input-icon/searchcraft-input-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAO1D,MAAM,OAAO,oBAAoB;;;sCASE,KAAK;sBACrB,EAAE;qBACH,EAAE;qBAED,OAAO;;IAEhB,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAClB,WACE,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,IAEnE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CACrB,mCACE,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAC,aAAa,EAClB,KAAK,EAAE,IAAI,CAAC,KAAK,GACjB,CACH,CAAC,CAAC,CAAC,CACF,mCACE,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAC,YAAY,EACjB,KAAK,EAAE,IAAI,CAAC,KAAK,GACjB,CACH,CACG,CACP,CAAC,CAAC,CAAC,CACF,WACE,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,IAEnE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CACrB,mCACE,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAC,cAAc,EACnB,KAAK,EAAE,IAAI,CAAC,KAAK,GACjB,CACH,CAAC,CAAC,CAAC,CACF,mCACE,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAC,aAAa,EAClB,KAAK,EAAE,IAAI,CAAC,KAAK,GACjB,CACH,CACG,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, State } from '@stencil/core';\n\n@Component({\n tag: 'searchcraft-input-icon',\n styleUrl: 'searchcraft-input-icon.module.scss',\n shadow: true,\n})\nexport class SearchcraftInputIcon {\n /**\n * Determines if an error icon should be displayed.\n */\n @Prop() error?: boolean;\n\n /**\n * Determines if the layout should be right-to-left.\n */\n @Prop() rightToLeftOrientation = false;\n @Prop() height = 20;\n @Prop() width = 20;\n\n @State() theme = 'light';\n\n private isLightTheme() {\n return this.theme === 'light';\n }\n\n render() {\n return this.error ? (\n <div\n class={this.rightToLeftOrientation ? 'inputIconRTL' : 'inputIconLTR'}\n >\n {this.isLightTheme() ? (\n <searchcraft-search-icon-set\n height={this.height}\n type='error-light'\n width={this.width}\n />\n ) : (\n <searchcraft-search-icon-set\n height={this.height}\n type='error-dark'\n width={this.width}\n />\n )}\n </div>\n ) : (\n <div\n class={this.rightToLeftOrientation ? 'inputIconRTL' : 'inputIconLTR'}\n >\n {this.isLightTheme() ? (\n <searchcraft-search-icon-set\n height={this.height}\n type='search-light'\n width={this.width}\n />\n ) : (\n <searchcraft-search-icon-set\n height={this.height}\n type='search-dark'\n width={this.width}\n />\n )}\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-input-icon.js","sourceRoot":"","sources":["../../../src/components/searchcraft-input-icon/searchcraft-input-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAO1D,MAAM,OAAO,oBAAoB;;;sBAEd,EAAE;sCACc,KAAK;qBACtB,EAAE;qBAED,OAAO;;IAEhB,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAClB,WACE,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,IAEnE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CACrB,mCACE,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAC,aAAa,EAClB,KAAK,EAAE,IAAI,CAAC,KAAK,GACjB,CACH,CAAC,CAAC,CAAC,CACF,mCACE,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAC,YAAY,EACjB,KAAK,EAAE,IAAI,CAAC,KAAK,GACjB,CACH,CACG,CACP,CAAC,CAAC,CAAC,CACF,WACE,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,IAEnE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CACrB,mCACE,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAC,cAAc,EACnB,KAAK,EAAE,IAAI,CAAC,KAAK,GACjB,CACH,CAAC,CAAC,CAAC,CACF,mCACE,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAC,aAAa,EAClB,KAAK,EAAE,IAAI,CAAC,KAAK,GACjB,CACH,CACG,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, State } from '@stencil/core';\n\n@Component({\n tag: 'searchcraft-input-icon',\n styleUrl: 'searchcraft-input-icon.module.scss',\n shadow: true,\n})\nexport class SearchcraftInputIcon {\n @Prop() error?: boolean;\n @Prop() height = 20;\n @Prop() rightToLeftOrientation = false;\n @Prop() width = 20;\n\n @State() theme = 'light';\n\n private isLightTheme() {\n return this.theme === 'light';\n }\n\n render() {\n return this.error ? (\n <div\n class={this.rightToLeftOrientation ? 'inputIconRTL' : 'inputIconLTR'}\n >\n {this.isLightTheme() ? (\n <searchcraft-search-icon-set\n height={this.height}\n type='error-light'\n width={this.width}\n />\n ) : (\n <searchcraft-search-icon-set\n height={this.height}\n type='error-dark'\n width={this.width}\n />\n )}\n </div>\n ) : (\n <div\n class={this.rightToLeftOrientation ? 'inputIconRTL' : 'inputIconLTR'}\n >\n {this.isLightTheme() ? (\n <searchcraft-search-icon-set\n height={this.height}\n type='search-light'\n width={this.width}\n />\n ) : (\n <searchcraft-search-icon-set\n height={this.height}\n type='search-dark'\n width={this.width}\n />\n )}\n </div>\n );\n }\n}\n"]}
@@ -10,7 +10,6 @@ export class SearchcraftInputLabel {
10
10
  return this.theme === 'light';
11
11
  }
12
12
  render() {
13
- // Render nothing if no label prop is provided
14
13
  if (!this.label) {
15
14
  return null;
16
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-input-label.js","sourceRoot":"","sources":["../../../src/components/searchcraft-input-label/searchcraft-input-label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,UAAU,MAAM,YAAY,CAAC;AAOpC,MAAM,OAAO,qBAAqB;;mCACD,EAAE;;qBAEhB,OAAO;;IAEhB,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QAEpE,OAAO,CACL,aACE,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,EACvD,OAAO,EAAC,sBAAsB,IAE7B,IAAI,CAAC,KAAK,CACL,CACT,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, State } from '@stencil/core';\nimport classNames from 'classnames';\n\n@Component({\n tag: 'searchcraft-input-label',\n styleUrl: 'searchcraft-input-label.module.scss',\n shadow: true,\n})\nexport class SearchcraftInputLabel {\n @Prop() inputLabelClassName? = '';\n @Prop() label?: string; // Make label optional\n @State() theme = 'light';\n\n private isLightTheme() {\n return this.theme === 'light';\n }\n\n render() {\n // Render nothing if no label prop is provided\n if (!this.label) {\n return null;\n }\n\n const labelStyle = this.isLightTheme() ? 'labelLight' : 'labelDark';\n\n return (\n <label\n class={classNames(labelStyle, this.inputLabelClassName)}\n htmlFor='searchcraft-input-id'\n >\n {this.label}\n </label>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-input-label.js","sourceRoot":"","sources":["../../../src/components/searchcraft-input-label/searchcraft-input-label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,UAAU,MAAM,YAAY,CAAC;AAOpC,MAAM,OAAO,qBAAqB;;mCACD,EAAE;;qBAEhB,OAAO;;IAEhB,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QACpE,OAAO,CACL,aACE,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,EACvD,OAAO,EAAC,sBAAsB,IAE7B,IAAI,CAAC,KAAK,CACL,CACT,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, State } from '@stencil/core';\nimport classNames from 'classnames';\n\n@Component({\n tag: 'searchcraft-input-label',\n styleUrl: 'searchcraft-input-label.module.scss',\n shadow: true,\n})\nexport class SearchcraftInputLabel {\n @Prop() inputLabelClassName? = '';\n @Prop() label?: string;\n @State() theme = 'light';\n\n private isLightTheme() {\n return this.theme === 'light';\n }\n\n render() {\n if (!this.label) {\n return null;\n }\n const labelStyle = this.isLightTheme() ? 'labelLight' : 'labelDark';\n return (\n <label\n class={classNames(labelStyle, this.inputLabelClassName)}\n htmlFor='searchcraft-input-id'\n >\n {this.label}\n </label>\n );\n }\n}\n"]}
@@ -7,7 +7,6 @@
7
7
 
8
8
  .resultsInfo {
9
9
  color: #292929;
10
- font-family: "Brygada 1918";
11
10
  font-size: 18px;
12
11
  font-weight: 600;
13
12
  line-height: 20px;
@@ -27,13 +27,13 @@ export class SearchcraftSlider {
27
27
  this.endYear = Math.max(value, this.startYear);
28
28
  this.updateYears();
29
29
  };
30
- this.minYear = 2000;
31
30
  this.maxYear = new Date().getFullYear();
31
+ this.minYear = 2014;
32
32
  this.endYear = this.maxYear;
33
- this.query = '';
34
- this.startYear = this.minYear;
35
33
  this.hasSearched = false;
34
+ this.query = '';
36
35
  this.resultsCount = 0;
36
+ this.startYear = this.minYear;
37
37
  }
38
38
  componentDidLoad() {
39
39
  this.unsubscribe = useSearchcraftStore.subscribe((state) => {
@@ -54,7 +54,14 @@ export class SearchcraftSlider {
54
54
  if (!this.query || this.resultsCount === 0) {
55
55
  return null;
56
56
  }
57
- return (h("div", { class: 'slider-container' }, h("div", { class: 'range-container' }, h("input", { class: 'range-slider', max: this.maxYear, min: this.minYear, onInput: this.handleStartYearChange, step: '1', type: 'range', value: this.startYear }), h("input", { class: 'range-slider', max: this.maxYear, min: this.minYear, onInput: this.handleEndYearChange, step: '1', type: 'range', value: this.endYear })), h("div", { class: 'year-labels' }, h("span", { class: 'year-label' }, this.startYear), h("span", { class: 'year-label' }, this.endYear))));
57
+ const rangeMin = this.minYear;
58
+ const rangeMax = this.maxYear;
59
+ const startPercent = ((this.startYear - rangeMin) / (rangeMax - rangeMin)) * 100;
60
+ const endPercent = ((this.endYear - rangeMin) / (rangeMax - rangeMin)) * 100;
61
+ return (h("div", { class: 'sliderContainer' }, h("div", { class: 'rangeContainer' }, h("div", { class: 'activeRange', style: {
62
+ left: `${startPercent}%`,
63
+ width: `${endPercent - startPercent}%`,
64
+ } }), h("input", { class: 'rangeSlider', max: this.maxYear, min: this.minYear, onInput: this.handleStartYearChange, step: '1', type: 'range', value: this.startYear }), h("input", { class: 'rangeSlider', max: this.maxYear, min: this.minYear, onInput: this.handleEndYearChange, step: '1', type: 'range', value: this.endYear })), h("div", { class: 'yearLabels' }, h("span", { class: 'yearLabel' }, this.startYear), h("span", { class: 'yearLabel' }, this.endYear))));
58
65
  }
59
66
  static get is() { return "searchcraft-slider"; }
60
67
  static get encapsulation() { return "shadow"; }
@@ -70,7 +77,7 @@ export class SearchcraftSlider {
70
77
  }
71
78
  static get properties() {
72
79
  return {
73
- "minYear": {
80
+ "maxYear": {
74
81
  "type": "number",
75
82
  "mutable": false,
76
83
  "complexType": {
@@ -84,11 +91,11 @@ export class SearchcraftSlider {
84
91
  "tags": [],
85
92
  "text": ""
86
93
  },
87
- "attribute": "min-year",
94
+ "attribute": "max-year",
88
95
  "reflect": false,
89
- "defaultValue": "2000"
96
+ "defaultValue": "new Date().getFullYear()"
90
97
  },
91
- "maxYear": {
98
+ "minYear": {
92
99
  "type": "number",
93
100
  "mutable": false,
94
101
  "complexType": {
@@ -102,19 +109,19 @@ export class SearchcraftSlider {
102
109
  "tags": [],
103
110
  "text": ""
104
111
  },
105
- "attribute": "max-year",
112
+ "attribute": "min-year",
106
113
  "reflect": false,
107
- "defaultValue": "new Date().getFullYear()"
114
+ "defaultValue": "2014"
108
115
  }
109
116
  };
110
117
  }
111
118
  static get states() {
112
119
  return {
113
120
  "endYear": {},
114
- "query": {},
115
- "startYear": {},
116
121
  "hasSearched": {},
117
- "resultsCount": {}
122
+ "query": {},
123
+ "resultsCount": {},
124
+ "startYear": {}
118
125
  };
119
126
  }
120
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-slider.js","sourceRoot":"","sources":["../../../src/components/searchcraft-slider/searchcraft-slider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, State, Prop } from '@stencil/core';\nimport { useSearchcraftStore } from '@provider/store';\n\n@Component({\n tag: 'searchcraft-slider',\n styleUrl: 'searchcraft-slider.module.scss',\n shadow: true,\n})\nexport class SearchcraftSlider {\n @Prop() minYear = 2000;\n @Prop() maxYear = new Date().getFullYear();\n\n @State() endYear = this.maxYear;\n @State() query = '';\n @State() startYear = this.minYear;\n @State() hasSearched = false;\n unsubscribe: () => void;\n private searchStore = useSearchcraftStore.getState();\n @State() resultsCount = 0; // Track the count of search results\n\n componentDidLoad() {\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (state.query.length > 0) {\n this.hasSearched = true;\n this.resultsCount = state.searchResults?.data?.hits?.length || 0;\n }\n this.query = state.query;\n });\n }\n\n disconnectedCallback() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\n\n private updateYears = async () => {\n this.searchStore.setYearsRange([this.startYear, this.endYear]);\n\n try {\n if (typeof this.query === 'string' && this.query.trim() !== '') {\n await this.searchStore.search();\n } else {\n console.warn('Query is missing or empty, skipping search request.');\n }\n } catch (error) {\n console.error('Search failed:', error);\n }\n };\n\n private handleStartYearChange = (event: InputEvent) => {\n const value = Number.parseInt((event.target as HTMLInputElement).value, 10);\n this.startYear = Math.min(value, this.endYear);\n this.updateYears();\n };\n\n private handleEndYearChange = (event: InputEvent) => {\n const value = Number.parseInt((event.target as HTMLInputElement).value, 10);\n this.endYear = Math.max(value, this.startYear);\n this.updateYears();\n };\n\n render() {\n if (!this.query || this.resultsCount === 0) {\n return null;\n }\n return (\n <div class='slider-container'>\n <div class='range-container'>\n <input\n class='range-slider'\n max={this.maxYear}\n min={this.minYear}\n onInput={this.handleStartYearChange}\n step='1'\n type='range'\n value={this.startYear}\n />\n <input\n class='range-slider'\n max={this.maxYear}\n min={this.minYear}\n onInput={this.handleEndYearChange}\n step='1'\n type='range'\n value={this.endYear}\n />\n </div>\n <div class='year-labels'>\n <span class='year-label'>{this.startYear}</span>\n <span class='year-label'>{this.endYear}</span>\n </div>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-slider.js","sourceRoot":"","sources":["../../../src/components/searchcraft-slider/searchcraft-slider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, State, Prop } from '@stencil/core';\nimport { useSearchcraftStore } from '@provider/store';\n\n@Component({\n tag: 'searchcraft-slider',\n styleUrl: 'searchcraft-slider.module.scss',\n shadow: true,\n})\nexport class SearchcraftSlider {\n @Prop() maxYear = new Date().getFullYear();\n @Prop() minYear = 2014;\n\n @State() endYear = this.maxYear;\n @State() hasSearched = false;\n @State() query = '';\n @State() resultsCount = 0;\n @State() startYear = this.minYear;\n\n private searchStore = useSearchcraftStore.getState();\n\n unsubscribe: () => void;\n\n componentDidLoad() {\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (state.query.length > 0) {\n this.hasSearched = true;\n this.resultsCount = state.searchResults?.data?.hits?.length || 0;\n }\n this.query = state.query;\n });\n }\n\n disconnectedCallback() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\n\n private updateYears = async () => {\n this.searchStore.setYearsRange([this.startYear, this.endYear]);\n\n try {\n if (typeof this.query === 'string' && this.query.trim() !== '') {\n await this.searchStore.search();\n } else {\n console.warn('Query is missing or empty, skipping search request.');\n }\n } catch (error) {\n console.error('Search failed:', error);\n }\n };\n\n private handleStartYearChange = (event: InputEvent) => {\n const value = Number.parseInt((event.target as HTMLInputElement).value, 10);\n this.startYear = Math.min(value, this.endYear);\n this.updateYears();\n };\n\n private handleEndYearChange = (event: InputEvent) => {\n const value = Number.parseInt((event.target as HTMLInputElement).value, 10);\n this.endYear = Math.max(value, this.startYear);\n this.updateYears();\n };\n\n render() {\n if (!this.query || this.resultsCount === 0) {\n return null;\n }\n\n const rangeMin = this.minYear;\n const rangeMax = this.maxYear;\n const startPercent =\n ((this.startYear - rangeMin) / (rangeMax - rangeMin)) * 100;\n const endPercent =\n ((this.endYear - rangeMin) / (rangeMax - rangeMin)) * 100;\n\n return (\n <div class='sliderContainer'>\n <div class='rangeContainer'>\n <div\n class='activeRange'\n style={{\n left: `${startPercent}%`,\n width: `${endPercent - startPercent}%`,\n }}\n />\n <input\n class='rangeSlider'\n max={this.maxYear}\n min={this.minYear}\n onInput={this.handleStartYearChange}\n step='1'\n type='range'\n value={this.startYear}\n />\n <input\n class='rangeSlider'\n max={this.maxYear}\n min={this.minYear}\n onInput={this.handleEndYearChange}\n step='1'\n type='range'\n value={this.endYear}\n />\n </div>\n <div class='yearLabels'>\n <span class='yearLabel'>{this.startYear}</span>\n <span class='yearLabel'>{this.endYear}</span>\n </div>\n </div>\n );\n }\n}\n"]}
@@ -1,77 +1,68 @@
1
- .slider-container {
1
+ .sliderContainer {
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  gap: 10px;
5
5
  font-family: Arial, sans-serif;
6
6
  align-items: center;
7
+ width: 100%;
7
8
  }
8
9
 
9
- label {
10
- font-size: 14px;
11
- font-weight: bold;
12
- margin-bottom: 10px;
13
- }
14
-
15
- .range-container {
10
+ .rangeContainer {
16
11
  display: flex;
12
+ position: relative;
17
13
  width: 100%;
18
14
  align-items: center;
19
15
  }
20
-
21
- .range-slider {
16
+ .rangeContainer .activeRange {
17
+ position: absolute;
18
+ top: 50%;
19
+ transform: translateY(-50%);
20
+ height: 4px;
21
+ background: #007DB3;
22
+ z-index: 0;
23
+ border-radius: 2px;
24
+ }
25
+ .rangeContainer .rangeSlider {
22
26
  width: 100%;
23
27
  height: 4px;
24
- background: #ddd;
28
+ background: transparent;
25
29
  border-radius: 2px;
26
30
  outline: none;
27
- margin: 0 -1px;
28
- position: relative;
29
- }
30
-
31
- .range-slider::-webkit-slider-thumb {
32
31
  -webkit-appearance: none;
33
32
  appearance: none;
33
+ position: absolute;
34
+ margin: 0;
35
+ }
36
+ .rangeContainer .rangeSlider::-webkit-slider-thumb {
37
+ -webkit-appearance: none;
34
38
  width: 20px;
35
39
  height: 20px;
36
40
  background-color: #FFF;
37
41
  border-radius: 50%;
38
- border: 1px solid #E6E6E6;
42
+ border: 2px solid #e6e6e6;
39
43
  cursor: pointer;
40
- position: relative;
41
44
  }
42
-
43
- .range-slider::-moz-range-thumb {
45
+ .rangeContainer .rangeSlider::-moz-range-thumb {
44
46
  width: 20px;
45
47
  height: 20px;
46
48
  background-color: #FFF;
47
49
  border-radius: 50%;
48
- border: 1px solid #E6E6E6;
50
+ border: 2px solid #e6e6e6;
49
51
  cursor: pointer;
50
52
  }
51
53
 
52
- .range-slider:before {
53
- content: "";
54
- position: absolute;
55
- height: 4px;
56
- background-color: #FFF;
57
- border-radius: 2px;
58
- left: 0;
59
- right: 0;
60
- z-index: -1;
61
- }
62
-
63
- .year-labels {
54
+ .yearLabels {
64
55
  display: flex;
65
56
  justify-content: space-between;
66
57
  width: 100%;
67
58
  margin-top: 10px;
68
59
  font-size: 15px;
69
60
  font-weight: 600;
70
- font-family: "Source Sans Pro";
61
+ font-family: "Source Sans Pro", sans-serif;
71
62
  color: #666;
72
63
  }
73
64
 
74
- .year-label {
65
+ .yearLabel {
75
66
  min-width: 30px;
76
67
  text-align: center;
77
68
  }
@@ -5,21 +5,21 @@
5
5
  }
6
6
 
7
7
  .spinnerDark {
8
- height: 100%;
9
- width: 100%;
8
+ animation: spinning 1s linear infinite;
10
9
  background: conic-gradient(#000 50%, #FFFFFF);
11
10
  clip-path: circle(50%);
11
+ height: 100%;
12
12
  mask-image: radial-gradient(circle at center, rgba(0, 0, 0, 0) 6.6666666667px, rgb(0, 0, 0) 6.6666666667px);
13
- animation: spinning 1s linear infinite;
13
+ width: 100%;
14
14
  }
15
15
 
16
16
  .spinnerLight {
17
- height: 100%;
18
- width: 100%;
17
+ animation: spinning 1s linear infinite;
19
18
  background: conic-gradient(#737373 50%, #FFFFFF);
20
19
  clip-path: circle(50%);
20
+ height: 100%;
21
21
  mask-image: radial-gradient(circle at center, rgba(0, 0, 0, 0) 6.6666666667px, rgb(0, 0, 0) 6.6666666667px);
22
- animation: spinning 1s linear infinite;
22
+ width: 100%;
23
23
  }
24
24
 
25
25
  @keyframes spinning {
@@ -5,12 +5,12 @@
5
5
  }
6
6
 
7
7
  .spinnerLight {
8
- height: 100%;
9
- width: 100%;
8
+ animation: spinning 1s linear infinite;
10
9
  background: conic-gradient(#737373 50%, #FFFFFF);
11
10
  clip-path: circle(50%);
11
+ height: 100%;
12
12
  mask-image: radial-gradient(circle at center, rgba(0, 0, 0, 0) 6.6666666667px, rgb(0, 0, 0) 6.6666666667px);
13
- animation: spinning 1s linear infinite;
13
+ width: 100%;
14
14
  }
15
15
 
16
16
  @keyframes spinning {
@@ -1,29 +1,29 @@
1
1
  .toggle-wrapper {
2
- box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.05);
3
- margin-left: 10px;
2
+ background: #ddd;
4
3
  border: none;
5
4
  border-radius: 16px;
6
- width: 44px;
5
+ box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.05);
6
+ cursor: pointer;
7
7
  height: 26px;
8
- background: #ddd;
8
+ margin-left: 10px;
9
9
  position: relative;
10
- cursor: pointer;
10
+ width: 44px;
11
11
  }
12
12
 
13
13
  .toggle-wrapper.active {
14
- box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.05);
15
14
  background: #007DB3;
15
+ box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.05);
16
16
  }
17
17
 
18
18
  .toggle-wrapper .toggle-switch {
19
- width: 18px;
20
- height: 18px;
21
19
  background: #fff;
22
20
  border-radius: 50%;
21
+ height: 18px;
22
+ left: 4px;
23
23
  position: absolute;
24
24
  top: calc(50% - 9px);
25
- left: 4px;
26
25
  transition: transform 0.3s ease;
26
+ width: 18px;
27
27
  }
28
28
 
29
29
  .toggle-wrapper .toggle-switch.active {
@@ -7,8 +7,6 @@
7
7
  * DO NOT use this file to export your components. Instead, use the recommended approaches
8
8
  * to consume components of this package as outlined in the `README.md`.
9
9
  */
10
- // Export utility functions
11
10
  export { extractDynamicProperties, parseCustomStyles, parseSearchKeys, serializeStyles, } from './utils/utils';
12
- // Export Zustand store and useTheme hook
13
11
  export { useSearchcraftStore, useThemeStore } from './provider/store';
14
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,2BAA2B;AAC3B,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,yCAAyC;AACzC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["/**\n * @fileoverview entry point for your component library\n *\n * This is the entry point for your component library. Use this file to export utilities,\n * constants or data structure that accompany your components.\n *\n * DO NOT use this file to export your components. Instead, use the recommended approaches\n * to consume components of this package as outlined in the `README.md`.\n */\n\nexport type * from './components';\n\n// Export utility functions\nexport {\n extractDynamicProperties,\n parseCustomStyles,\n parseSearchKeys,\n serializeStyles,\n} from './utils/utils';\n\n// Export Zustand store and useTheme hook\nexport { useSearchcraftStore, useThemeStore } from './provider/store';\n\nexport { Components } from './components';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["/**\n * @fileoverview entry point for your component library\n *\n * This is the entry point for your component library. Use this file to export utilities,\n * constants or data structure that accompany your components.\n *\n * DO NOT use this file to export your components. Instead, use the recommended approaches\n * to consume components of this package as outlined in the `README.md`.\n */\n\nexport type * from './components';\n\nexport {\n extractDynamicProperties,\n parseCustomStyles,\n parseSearchKeys,\n serializeStyles,\n} from './utils/utils';\n\nexport { useSearchcraftStore, useThemeStore } from './provider/store';\n\nexport { Components } from './components';\n"]}
@@ -27,7 +27,7 @@ const useSearchcraftStore = create((set, get) => {
27
27
  isRequesting: false,
28
28
  searchResults: null,
29
29
  facets: null,
30
- selectedFilters: [], // Initialize selected filters as an empty array
30
+ selectedFilters: [],
31
31
  searchParams: {
32
32
  mode: 'fuzzy',
33
33
  sort: 'asc',
@@ -35,7 +35,7 @@ const useSearchcraftStore = create((set, get) => {
35
35
  setQuery: (query) => set({ query }),
36
36
  setSearchResults: (results) => set({ searchResults: results }),
37
37
  setFacets: (facets) => set({ facets }),
38
- setSelectedFilters: (filters) => set({ selectedFilters: filters }), // Update the selected filters
38
+ setSelectedFilters: (filters) => set({ selectedFilters: filters }),
39
39
  setIsRequesting: (isRequesting) => set({ isRequesting }),
40
40
  setSearchParams: (params) => set((state) => ({
41
41
  searchParams: Object.assign(Object.assign({}, state.searchParams), params),
@@ -87,11 +87,9 @@ const useSearchcraftStore = create((set, get) => {
87
87
  },
88
88
  };
89
89
  });
90
- // Zustand store for Theme state
91
90
  const useThemeStore = create((set) => ({
92
91
  theme: 'light',
93
92
  toggleTheme: () => set((state) => ({ theme: state.theme === 'light' ? 'dark' : 'light' })),
94
93
  }));
95
- // Export the Zustand stores for use in Stencil components
96
94
  export { useSearchcraftStore, useThemeStore };
97
95
  //# sourceMappingURL=store.js.map