@searchcraft/javascript-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/LICENSE +201 -0
  2. package/dist/cjs/app-globals-3a1e7e63.js +7 -0
  3. package/dist/cjs/app-globals-3a1e7e63.js.map +1 -0
  4. package/dist/cjs/index-0c2339c7.js +1226 -0
  5. package/dist/cjs/index-0c2339c7.js.map +1 -0
  6. package/dist/cjs/index.cjs.js +12 -0
  7. package/dist/cjs/index.cjs.js.map +1 -0
  8. package/dist/cjs/loader.cjs.js +17 -0
  9. package/dist/cjs/loader.cjs.js.map +1 -0
  10. package/dist/cjs/sc-auto-search-form.cjs.entry.js +101 -0
  11. package/dist/cjs/sc-auto-search-form.cjs.entry.js.map +1 -0
  12. package/dist/cjs/sc-base-search-form_11.cjs.entry.js +471 -0
  13. package/dist/cjs/sc-base-search-form_11.cjs.entry.js.map +1 -0
  14. package/dist/cjs/sc-spinner-light-a3bfc8e6.js +20 -0
  15. package/dist/cjs/sc-spinner-light-a3bfc8e6.js.map +1 -0
  16. package/dist/cjs/sc-spinner-light.cjs.entry.js +12 -0
  17. package/dist/cjs/sc-spinner-light.cjs.entry.js.map +1 -0
  18. package/dist/cjs/searchcraft-javascript-sdk.cjs.js +27 -0
  19. package/dist/cjs/searchcraft-javascript-sdk.cjs.js.map +1 -0
  20. package/dist/cjs/store-6c259dd0.js +251 -0
  21. package/dist/cjs/store-6c259dd0.js.map +1 -0
  22. package/dist/collection/assets/ButtonIcons.js +3 -0
  23. package/dist/collection/assets/ButtonIcons.js.map +1 -0
  24. package/dist/collection/assets/ClearInputIcon.js +6 -0
  25. package/dist/collection/assets/ClearInputIcon.js.map +1 -0
  26. package/dist/collection/assets/SearchIcons.js +6 -0
  27. package/dist/collection/assets/SearchIcons.js.map +1 -0
  28. package/dist/collection/collection-manifest.json +24 -0
  29. package/dist/collection/components/sc-auto-search-form/sc-auto-search-form.js +275 -0
  30. package/dist/collection/components/sc-auto-search-form/sc-auto-search-form.js.map +1 -0
  31. package/dist/collection/components/sc-auto-search-form/sc-auto-search-form.module.css +16 -0
  32. package/dist/collection/components/sc-base-search-form/sc-base-search-form.js +168 -0
  33. package/dist/collection/components/sc-base-search-form/sc-base-search-form.js.map +1 -0
  34. package/dist/collection/components/sc-base-search-form/sc-base-search-form.module.css +14 -0
  35. package/dist/collection/components/sc-base-search-result/sc-base-search-result.js +242 -0
  36. package/dist/collection/components/sc-base-search-result/sc-base-search-result.js.map +1 -0
  37. package/dist/collection/components/sc-base-search-result/sc-base-search-result.module.css +170 -0
  38. package/dist/collection/components/sc-base-search-results/sc-base-search-results.js +58 -0
  39. package/dist/collection/components/sc-base-search-results/sc-base-search-results.js.map +1 -0
  40. package/dist/collection/components/sc-base-search-results/sc-base-search-results.module.css +20 -0
  41. package/dist/collection/components/sc-button/sc-button.js +137 -0
  42. package/dist/collection/components/sc-button/sc-button.js.map +1 -0
  43. package/dist/collection/components/sc-button/sc-button.module.css +82 -0
  44. package/dist/collection/components/sc-clear-input-button/sc-clear-input-button.js +99 -0
  45. package/dist/collection/components/sc-clear-input-button/sc-clear-input-button.js.map +1 -0
  46. package/dist/collection/components/sc-clear-input-button/sc-clear-input-button.module.css +31 -0
  47. package/dist/collection/components/sc-error-message/sc-error-message.js +64 -0
  48. package/dist/collection/components/sc-error-message/sc-error-message.js.map +1 -0
  49. package/dist/collection/components/sc-error-message/sc-error-message.module.css +21 -0
  50. package/dist/collection/components/sc-input/sc-input.js +251 -0
  51. package/dist/collection/components/sc-input/sc-input.js.map +1 -0
  52. package/dist/collection/components/sc-input/sc-input.module.css +224 -0
  53. package/dist/collection/components/sc-input-caption/sc-input-caption.js +122 -0
  54. package/dist/collection/components/sc-input-caption/sc-input-caption.js.map +1 -0
  55. package/dist/collection/components/sc-input-caption/sc-input-caption.module.css +79 -0
  56. package/dist/collection/components/sc-input-icon/sc-input-icon.js +72 -0
  57. package/dist/collection/components/sc-input-icon/sc-input-icon.js.map +1 -0
  58. package/dist/collection/components/sc-input-icon/sc-input-icon.module.css +19 -0
  59. package/dist/collection/components/sc-input-label/sc-input-label.js +74 -0
  60. package/dist/collection/components/sc-input-label/sc-input-label.js.map +1 -0
  61. package/dist/collection/components/sc-input-label/sc-input-label.module.css +21 -0
  62. package/dist/collection/components/sc-spinner-dark/sc-spinner-dark.js +19 -0
  63. package/dist/collection/components/sc-spinner-dark/sc-spinner-dark.js.map +1 -0
  64. package/dist/collection/components/sc-spinner-dark/sc-spinner-dark.module.css +35 -0
  65. package/dist/collection/components/sc-spinner-light/sc-spinner-light.js +19 -0
  66. package/dist/collection/components/sc-spinner-light/sc-spinner-light.js.map +1 -0
  67. package/dist/collection/components/sc-spinner-light/sc-spinner-light.module.css +26 -0
  68. package/dist/collection/index.js +12 -0
  69. package/dist/collection/index.js.map +1 -0
  70. package/dist/collection/provider/store.js +68 -0
  71. package/dist/collection/provider/store.js.map +1 -0
  72. package/dist/collection/utils/utils.js +1 -0
  73. package/dist/collection/utils/utils.js.map +1 -0
  74. package/dist/components/index.d.ts +33 -0
  75. package/dist/components/index.js +4 -0
  76. package/dist/components/index.js.map +1 -0
  77. package/dist/components/p-074239f9.js +34 -0
  78. package/dist/components/p-074239f9.js.map +1 -0
  79. package/dist/components/p-184d9504.js +61 -0
  80. package/dist/components/p-184d9504.js.map +1 -0
  81. package/dist/components/p-23bdbb1f.js +58 -0
  82. package/dist/components/p-23bdbb1f.js.map +1 -0
  83. package/dist/components/p-255a89f7.js +62 -0
  84. package/dist/components/p-255a89f7.js.map +1 -0
  85. package/dist/components/p-5410e357.js +108 -0
  86. package/dist/components/p-5410e357.js.map +1 -0
  87. package/dist/components/p-5b7b903a.js +71 -0
  88. package/dist/components/p-5b7b903a.js.map +1 -0
  89. package/dist/components/p-5cdc6210.js +82 -0
  90. package/dist/components/p-5cdc6210.js.map +1 -0
  91. package/dist/components/p-6f0eaec6.js +247 -0
  92. package/dist/components/p-6f0eaec6.js.map +1 -0
  93. package/dist/components/p-75be555b.js +54 -0
  94. package/dist/components/p-75be555b.js.map +1 -0
  95. package/dist/components/p-79564f07.js +41 -0
  96. package/dist/components/p-79564f07.js.map +1 -0
  97. package/dist/components/p-a912a224.js +1062 -0
  98. package/dist/components/p-a912a224.js.map +1 -0
  99. package/dist/components/p-b05f23e3.js +18 -0
  100. package/dist/components/p-b05f23e3.js.map +1 -0
  101. package/dist/components/p-c47cb37f.js +46 -0
  102. package/dist/components/p-c47cb37f.js.map +1 -0
  103. package/dist/components/p-c54fdecb.js +164 -0
  104. package/dist/components/p-c54fdecb.js.map +1 -0
  105. package/dist/components/p-dfb43eea.js +34 -0
  106. package/dist/components/p-dfb43eea.js.map +1 -0
  107. package/dist/components/sc-auto-search-form.d.ts +11 -0
  108. package/dist/components/sc-auto-search-form.js +152 -0
  109. package/dist/components/sc-auto-search-form.js.map +1 -0
  110. package/dist/components/sc-base-search-form.d.ts +11 -0
  111. package/dist/components/sc-base-search-form.js +135 -0
  112. package/dist/components/sc-base-search-form.js.map +1 -0
  113. package/dist/components/sc-base-search-result.d.ts +11 -0
  114. package/dist/components/sc-base-search-result.js +8 -0
  115. package/dist/components/sc-base-search-result.js.map +1 -0
  116. package/dist/components/sc-base-search-results.d.ts +11 -0
  117. package/dist/components/sc-base-search-results.js +83 -0
  118. package/dist/components/sc-base-search-results.js.map +1 -0
  119. package/dist/components/sc-button.d.ts +11 -0
  120. package/dist/components/sc-button.js +8 -0
  121. package/dist/components/sc-button.js.map +1 -0
  122. package/dist/components/sc-clear-input-button.d.ts +11 -0
  123. package/dist/components/sc-clear-input-button.js +8 -0
  124. package/dist/components/sc-clear-input-button.js.map +1 -0
  125. package/dist/components/sc-error-message.d.ts +11 -0
  126. package/dist/components/sc-error-message.js +8 -0
  127. package/dist/components/sc-error-message.js.map +1 -0
  128. package/dist/components/sc-input-caption.d.ts +11 -0
  129. package/dist/components/sc-input-caption.js +8 -0
  130. package/dist/components/sc-input-caption.js.map +1 -0
  131. package/dist/components/sc-input-icon.d.ts +11 -0
  132. package/dist/components/sc-input-icon.js +8 -0
  133. package/dist/components/sc-input-icon.js.map +1 -0
  134. package/dist/components/sc-input-label.d.ts +11 -0
  135. package/dist/components/sc-input-label.js +8 -0
  136. package/dist/components/sc-input-label.js.map +1 -0
  137. package/dist/components/sc-input.d.ts +11 -0
  138. package/dist/components/sc-input.js +8 -0
  139. package/dist/components/sc-input.js.map +1 -0
  140. package/dist/components/sc-spinner-dark.d.ts +11 -0
  141. package/dist/components/sc-spinner-dark.js +8 -0
  142. package/dist/components/sc-spinner-dark.js.map +1 -0
  143. package/dist/components/sc-spinner-light.d.ts +11 -0
  144. package/dist/components/sc-spinner-light.js +8 -0
  145. package/dist/components/sc-spinner-light.js.map +1 -0
  146. package/dist/esm/app-globals-0f993ce5.js +5 -0
  147. package/dist/esm/app-globals-0f993ce5.js.map +1 -0
  148. package/dist/esm/index-c97f8c28.js +1198 -0
  149. package/dist/esm/index-c97f8c28.js.map +1 -0
  150. package/dist/esm/index.js +3 -0
  151. package/dist/esm/index.js.map +1 -0
  152. package/dist/esm/loader.js +13 -0
  153. package/dist/esm/loader.js.map +1 -0
  154. package/dist/esm/sc-auto-search-form.entry.js +97 -0
  155. package/dist/esm/sc-auto-search-form.entry.js.map +1 -0
  156. package/dist/esm/sc-base-search-form_11.entry.js +457 -0
  157. package/dist/esm/sc-base-search-form_11.entry.js.map +1 -0
  158. package/dist/esm/sc-spinner-light-cdb79a33.js +18 -0
  159. package/dist/esm/sc-spinner-light-cdb79a33.js.map +1 -0
  160. package/dist/esm/sc-spinner-light.entry.js +4 -0
  161. package/dist/esm/sc-spinner-light.entry.js.map +1 -0
  162. package/dist/esm/searchcraft-javascript-sdk.js +22 -0
  163. package/dist/esm/searchcraft-javascript-sdk.js.map +1 -0
  164. package/dist/esm/store-2370857c.js +247 -0
  165. package/dist/esm/store-2370857c.js.map +1 -0
  166. package/dist/index.cjs.js +1 -0
  167. package/dist/index.js +1 -0
  168. package/dist/loader/cdn.js +1 -0
  169. package/dist/loader/index.cjs.js +1 -0
  170. package/dist/loader/index.d.ts +24 -0
  171. package/dist/loader/index.es2017.js +1 -0
  172. package/dist/loader/index.js +2 -0
  173. package/dist/loader/package.json +11 -0
  174. package/dist/searchcraft-javascript-sdk/index.esm.js +2 -0
  175. package/dist/searchcraft-javascript-sdk/index.esm.js.map +1 -0
  176. package/dist/searchcraft-javascript-sdk/p-6f0eaec6.js +11 -0
  177. package/dist/searchcraft-javascript-sdk/p-6f0eaec6.js.map +1 -0
  178. package/dist/searchcraft-javascript-sdk/p-8e9ba2cf.js +3 -0
  179. package/dist/searchcraft-javascript-sdk/p-8e9ba2cf.js.map +1 -0
  180. package/dist/searchcraft-javascript-sdk/p-94c68cce.js +2 -0
  181. package/dist/searchcraft-javascript-sdk/p-94c68cce.js.map +1 -0
  182. package/dist/searchcraft-javascript-sdk/p-9545c59a.entry.js +7 -0
  183. package/dist/searchcraft-javascript-sdk/p-9545c59a.entry.js.map +1 -0
  184. package/dist/searchcraft-javascript-sdk/p-c632f66c.entry.js +2 -0
  185. package/dist/searchcraft-javascript-sdk/p-c632f66c.entry.js.map +1 -0
  186. package/dist/searchcraft-javascript-sdk/p-e1255160.js +2 -0
  187. package/dist/searchcraft-javascript-sdk/p-e1255160.js.map +1 -0
  188. package/dist/searchcraft-javascript-sdk/p-f7dbb9a8.entry.js +2 -0
  189. package/dist/searchcraft-javascript-sdk/p-f7dbb9a8.entry.js.map +1 -0
  190. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js +2 -0
  191. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js.map +1 -0
  192. package/dist/types/assets/ButtonIcons.d.ts +1 -0
  193. package/dist/types/assets/ClearInputIcon.d.ts +4 -0
  194. package/dist/types/assets/SearchIcons.d.ts +4 -0
  195. package/dist/types/components/sc-auto-search-form/sc-auto-search-form.d.ts +41 -0
  196. package/dist/types/components/sc-base-search-form/sc-base-search-form.d.ts +20 -0
  197. package/dist/types/components/sc-base-search-result/sc-base-search-result.d.ts +16 -0
  198. package/dist/types/components/sc-base-search-results/sc-base-search-results.d.ts +9 -0
  199. package/dist/types/components/sc-button/sc-button.d.ts +13 -0
  200. package/dist/types/components/sc-clear-input-button/sc-clear-input-button.d.ts +10 -0
  201. package/dist/types/components/sc-error-message/sc-error-message.d.ts +11 -0
  202. package/dist/types/components/sc-input/sc-input.d.ts +22 -0
  203. package/dist/types/components/sc-input-caption/sc-input-caption.d.ts +9 -0
  204. package/dist/types/components/sc-input-icon/sc-input-icon.d.ts +7 -0
  205. package/dist/types/components/sc-input-label/sc-input-label.d.ts +7 -0
  206. package/dist/types/components/sc-spinner-dark/sc-spinner-dark.d.ts +3 -0
  207. package/dist/types/components/sc-spinner-light/sc-spinner-light.d.ts +3 -0
  208. package/dist/types/components.d.ts +386 -0
  209. package/dist/types/index.d.ts +11 -0
  210. package/dist/types/provider/store.d.ts +18 -0
  211. package/dist/types/stencil-public-runtime.d.ts +1680 -0
  212. package/dist/types/utils/utils.d.ts +0 -0
  213. package/loader/cdn.js +1 -0
  214. package/loader/index.cjs.js +1 -0
  215. package/loader/index.d.ts +24 -0
  216. package/loader/index.es2017.js +1 -0
  217. package/loader/index.js +2 -0
  218. package/loader/package.json +11 -0
  219. package/package.json +47 -0
  220. package/readme.md +11 -0
@@ -0,0 +1,19 @@
1
+ import { h } from "@stencil/core";
2
+ export class ScSpinnerLight {
3
+ render() {
4
+ return (h("div", { key: '688125d45da633cea7894306e57b80b940d72fa0', class: 'spinnerContainer' }, h("div", { key: '5775e4964f7446736fcf2262d7797389679b29c5', class: 'spinnerLight' })));
5
+ }
6
+ static get is() { return "sc-spinner-light"; }
7
+ static get encapsulation() { return "shadow"; }
8
+ static get originalStyleUrls() {
9
+ return {
10
+ "$": ["sc-spinner-light.module.scss"]
11
+ };
12
+ }
13
+ static get styleUrls() {
14
+ return {
15
+ "$": ["sc-spinner-light.module.css"]
16
+ };
17
+ }
18
+ }
19
+ //# sourceMappingURL=sc-spinner-light.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sc-spinner-light.js","sourceRoot":"","sources":["../../../src/components/sc-spinner-light/sc-spinner-light.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAO7C,MAAM,OAAO,cAAc;IACzB,MAAM;QACJ,OAAO,CACL,4DAAK,KAAK,EAAC,kBAAkB;YAC3B,4DAAK,KAAK,EAAC,cAAc,GAAG,CACxB,CACP,CAAC;IACJ,CAAC;;;;;;;;;CACF","sourcesContent":["import { Component, h } from '@stencil/core';\n\n@Component({\n tag: 'sc-spinner-light',\n styleUrl: 'sc-spinner-light.module.scss',\n shadow: true,\n})\nexport class ScSpinnerLight {\n render() {\n return (\n <div class='spinnerContainer'>\n <div class='spinnerLight' />\n </div>\n );\n }\n}\n"]}
@@ -0,0 +1,26 @@
1
+ .spinnerContainer {
2
+ background-color: transparent;
3
+ height: 20px;
4
+ width: 20px;
5
+ }
6
+
7
+ .spinnerLight {
8
+ height: 100%;
9
+ width: 100%;
10
+ background: conic-gradient(#737373 50%, #FFFFFF);
11
+ clip-path: circle(50%);
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;
14
+ }
15
+
16
+ @keyframes spinning {
17
+ 0% {
18
+ transform: rotate(0deg);
19
+ }
20
+ 50% {
21
+ transform: rotate(180deg);
22
+ }
23
+ 100% {
24
+ transform: rotate(360deg);
25
+ }
26
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @fileoverview entry point for your component library
3
+ *
4
+ * This is the entry point for your component library. Use this file to export utilities,
5
+ * constants or data structure that accompany your components.
6
+ *
7
+ * DO NOT use this file to export your components. Instead, use the recommended approaches
8
+ * to consume components of this package as outlined in the `README.md`.
9
+ */
10
+ // Export Zustand store and any custom hooks
11
+ export { useSearchcraftStore, useThemeStore } from './provider/store';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,4CAA4C;AAC5C,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 Zustand store and any custom hooks\nexport { useSearchcraftStore, useThemeStore } from './provider/store';\n"]}
@@ -0,0 +1,68 @@
1
+ import { create } from "zustand";
2
+ import { SDKDebugger, LogLevel, } from "@searchcraft/core";
3
+ // Zustand store for Searchcraft state
4
+ const useSearchcraftStore = create((set, get) => {
5
+ let searchcraft = null;
6
+ let debuggerInstance = null;
7
+ const log = (level, message) => {
8
+ if (debuggerInstance) {
9
+ switch (level) {
10
+ case LogLevel.DEBUG:
11
+ debuggerInstance.debug(message);
12
+ break;
13
+ case LogLevel.INFO:
14
+ debuggerInstance.info(message);
15
+ break;
16
+ case LogLevel.WARN:
17
+ debuggerInstance.warn(message);
18
+ break;
19
+ case LogLevel.ERROR:
20
+ debuggerInstance.error(message);
21
+ break;
22
+ }
23
+ }
24
+ };
25
+ return {
26
+ query: '',
27
+ isRequesting: false,
28
+ searchResults: null,
29
+ setQuery: (query) => set({ query }),
30
+ setSearchResults: (results) => set({ searchResults: results }),
31
+ setIsRequesting: (isRequesting) => set({ isRequesting }),
32
+ search: async () => {
33
+ const { query, setIsRequesting, setSearchResults } = get();
34
+ if (!searchcraft) {
35
+ throw new Error('Searchcraft instance is not initialized.');
36
+ }
37
+ log(LogLevel.INFO, `Starting search with query: "${query}"`);
38
+ setIsRequesting(true);
39
+ try {
40
+ const results = await searchcraft.search({ query, mode: 'fuzzy' });
41
+ setSearchResults(results);
42
+ log(LogLevel.DEBUG, `Search results: ${JSON.stringify(results)}`);
43
+ }
44
+ catch (error) {
45
+ console.error(`Search failed: ${error.message}`);
46
+ log(LogLevel.ERROR, `Search failed with error: ${error.message}`);
47
+ }
48
+ finally {
49
+ setIsRequesting(false);
50
+ }
51
+ },
52
+ initialize: (searchcraftInstance, debug = false) => {
53
+ searchcraft = searchcraftInstance;
54
+ debuggerInstance = debug
55
+ ? new SDKDebugger({ logLevel: LogLevel.DEBUG })
56
+ : null;
57
+ log(LogLevel.INFO, 'Searchcraft store initialized.');
58
+ },
59
+ };
60
+ });
61
+ // Zustand store for Theme state
62
+ const useThemeStore = create((set) => ({
63
+ theme: 'light',
64
+ toggleTheme: () => set((state) => ({ theme: state.theme === 'light' ? 'dark' : 'light' })),
65
+ }));
66
+ // Export the Zustand stores for use in Stencil components
67
+ export { useSearchcraftStore, useThemeStore };
68
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/provider/store.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAIL,WAAW,EACX,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAkB3B,sCAAsC;AACtC,MAAM,mBAAmB,GAAG,MAAM,CAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAChE,IAAI,WAAW,GAA2B,IAAI,CAAC;IAC/C,IAAI,gBAAgB,GAAuB,IAAI,CAAC;IAEhD,MAAM,GAAG,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,EAAE;QAC/C,IAAI,gBAAgB,EAAE,CAAC;YACrB,QAAQ,KAAK,EAAE,CAAC;gBACd,KAAK,QAAQ,CAAC,KAAK;oBACjB,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,QAAQ,CAAC,IAAI;oBAChB,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,QAAQ,CAAC,IAAI;oBAChB,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,QAAQ,CAAC,KAAK;oBACjB,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAChC,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;QACnC,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QAC9D,eAAe,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC;QACxD,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,GAAG,EAAE,CAAC;YAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YAED,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,gCAAgC,KAAK,GAAG,CAAC,CAAC;YAC7D,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACnE,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC1B,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,kBAAmB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5D,GAAG,CACD,QAAQ,CAAC,KAAK,EACd,6BAA8B,KAAe,CAAC,OAAO,EAAE,CACxD,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,eAAe,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,UAAU,EAAE,CAAC,mBAAmB,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE;YACjD,WAAW,GAAG,mBAAmB,CAAC;YAClC,gBAAgB,GAAG,KAAK;gBACtB,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC;YAET,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;QACvD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gCAAgC;AAChC,MAAM,aAAa,GAAG,MAAM,CAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjD,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,GAAG,EAAE,CAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CAC1E,CAAC,CAAC,CAAC;AAEJ,0DAA0D;AAC1D,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAC","sourcesContent":["import { create } from 'zustand';\nimport {\n type SearchError,\n type SearchResult,\n type CoreSDK as SearchcraftCore,\n SDKDebugger,\n LogLevel,\n} from '@searchcraft/core';\n\ninterface SearchcraftState {\n query: string;\n isRequesting: boolean;\n searchResults: SearchResult | SearchError | null;\n setQuery: (query: string) => void;\n setSearchResults: (results: SearchResult | SearchError | null) => void;\n setIsRequesting: (isRequesting: boolean) => void;\n search: () => Promise<void>;\n initialize: (searchcraft: SearchcraftCore, debug?: boolean) => void;\n}\n\ninterface ThemeState {\n theme: 'light' | 'dark';\n toggleTheme: () => void;\n}\n\n// Zustand store for Searchcraft state\nconst useSearchcraftStore = create<SearchcraftState>((set, get) => {\n let searchcraft: SearchcraftCore | null = null;\n let debuggerInstance: SDKDebugger | null = null;\n\n const log = (level: LogLevel, message: string) => {\n if (debuggerInstance) {\n switch (level) {\n case LogLevel.DEBUG:\n debuggerInstance.debug(message);\n break;\n case LogLevel.INFO:\n debuggerInstance.info(message);\n break;\n case LogLevel.WARN:\n debuggerInstance.warn(message);\n break;\n case LogLevel.ERROR:\n debuggerInstance.error(message);\n break;\n }\n }\n };\n\n return {\n query: '',\n isRequesting: false,\n searchResults: null,\n setQuery: (query) => set({ query }),\n setSearchResults: (results) => set({ searchResults: results }),\n setIsRequesting: (isRequesting) => set({ isRequesting }),\n search: async () => {\n const { query, setIsRequesting, setSearchResults } = get();\n if (!searchcraft) {\n throw new Error('Searchcraft instance is not initialized.');\n }\n\n log(LogLevel.INFO, `Starting search with query: \"${query}\"`);\n setIsRequesting(true);\n try {\n const results = await searchcraft.search({ query, mode: 'fuzzy' });\n setSearchResults(results);\n log(LogLevel.DEBUG, `Search results: ${JSON.stringify(results)}`);\n } catch (error) {\n console.error(`Search failed: ${(error as Error).message}`);\n log(\n LogLevel.ERROR,\n `Search failed with error: ${(error as Error).message}`,\n );\n } finally {\n setIsRequesting(false);\n }\n },\n initialize: (searchcraftInstance, debug = false) => {\n searchcraft = searchcraftInstance;\n debuggerInstance = debug\n ? new SDKDebugger({ logLevel: LogLevel.DEBUG })\n : null;\n\n log(LogLevel.INFO, 'Searchcraft store initialized.');\n },\n };\n});\n\n// Zustand store for Theme state\nconst useThemeStore = create<ThemeState>((set) => ({\n theme: 'light',\n toggleTheme: () =>\n set((state) => ({ theme: state.theme === 'light' ? 'dark' : 'light' })),\n}));\n\n// Export the Zustand stores for use in Stencil components\nexport { useSearchcraftStore, useThemeStore };\n"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Get the base path to where the assets can be found. Use "setAssetPath(path)"
3
+ * if the path needs to be customized.
4
+ */
5
+ export declare const getAssetPath: (path: string) => string;
6
+
7
+ /**
8
+ * Used to manually set the base path where assets can be found.
9
+ * If the script is used as "module", it's recommended to use "import.meta.url",
10
+ * such as "setAssetPath(import.meta.url)". Other options include
11
+ * "setAssetPath(document.currentScript.src)", or using a bundler's replace plugin to
12
+ * dynamically set the path at build time, such as "setAssetPath(process.env.ASSET_PATH)".
13
+ * But do note that this configuration depends on how your script is bundled, or lack of
14
+ * bundling, and where your assets can be loaded from. Additionally custom bundling
15
+ * will have to ensure the static assets are copied to its build directory.
16
+ */
17
+ export declare const setAssetPath: (path: string) => void;
18
+
19
+ /**
20
+ * Used to specify a nonce value that corresponds with an application's CSP.
21
+ * When set, the nonce will be added to all dynamically created script and style tags at runtime.
22
+ * Alternatively, the nonce value can be set on a meta tag in the DOM head
23
+ * (<meta name="csp-nonce" content="{ nonce value here }" />) which
24
+ * will result in the same behavior.
25
+ */
26
+ export declare const setNonce: (nonce: string) => void
27
+
28
+ export interface SetPlatformOptions {
29
+ raf?: (c: FrameRequestCallback) => number;
30
+ ael?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
31
+ rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
32
+ }
33
+ export declare const setPlatformOptions: (opts: SetPlatformOptions) => void;
@@ -0,0 +1,4 @@
1
+ export { g as getAssetPath, s as setAssetPath, a as setNonce, b as setPlatformOptions } from './p-a912a224.js';
2
+ export { u as useSearchcraftStore, a as useThemeStore } from './p-6f0eaec6.js';
3
+
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"file":"index.js","mappings":";","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -0,0 +1,34 @@
1
+ import { p as proxyCustomElement, H, h } from './p-a912a224.js';
2
+
3
+ const scSpinnerLightModuleCss = ".spinnerContainer{background-color:transparent;height:20px;width:20px}.spinnerLight{height:100%;width:100%;background:conic-gradient(#737373 50%, #FFFFFF);clip-path:circle(50%);mask-image:radial-gradient(circle at center, rgba(0, 0, 0, 0) 6.6666666667px, rgb(0, 0, 0) 6.6666666667px);animation:spinning 1s linear infinite}@keyframes spinning{0%{transform:rotate(0deg)}50%{transform:rotate(180deg)}100%{transform:rotate(360deg)}}";
4
+ const ScSpinnerLightStyle0 = scSpinnerLightModuleCss;
5
+
6
+ const ScSpinnerLight = /*@__PURE__*/ proxyCustomElement(class ScSpinnerLight extends H {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.__attachShadow();
11
+ }
12
+ render() {
13
+ return (h("div", { key: '688125d45da633cea7894306e57b80b940d72fa0', class: 'spinnerContainer' }, h("div", { key: '5775e4964f7446736fcf2262d7797389679b29c5', class: 'spinnerLight' })));
14
+ }
15
+ static get style() { return ScSpinnerLightStyle0; }
16
+ }, [1, "sc-spinner-light"]);
17
+ function defineCustomElement() {
18
+ if (typeof customElements === "undefined") {
19
+ return;
20
+ }
21
+ const components = ["sc-spinner-light"];
22
+ components.forEach(tagName => { switch (tagName) {
23
+ case "sc-spinner-light":
24
+ if (!customElements.get(tagName)) {
25
+ customElements.define(tagName, ScSpinnerLight);
26
+ }
27
+ break;
28
+ } });
29
+ }
30
+ defineCustomElement();
31
+
32
+ export { ScSpinnerLight as S, defineCustomElement as d };
33
+
34
+ //# sourceMappingURL=p-074239f9.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-074239f9.js","mappings":";;AAAA,MAAM,uBAAuB,GAAG,8aAA8a,CAAC;AAC/c,6BAAe,uBAAuB;;MCMzB,cAAc;;;;;;IACzB,MAAM;QACJ,QACE,4DAAK,KAAK,EAAC,kBAAkB,IAC3B,4DAAK,KAAK,EAAC,cAAc,GAAG,CACxB,EACN;KACH;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/sc-spinner-light/sc-spinner-light.module.scss?tag=sc-spinner-light&encapsulation=shadow","src/components/sc-spinner-light/sc-spinner-light.tsx"],"sourcesContent":["$spinner-size: 20px;\n\n.spinnerContainer {\n background-color: transparent;\n height: $spinner-size;\n width: $spinner-size;\n}\n\n.spinnerLight {\n height: 100%;\n width: 100%;\n background: conic-gradient(#737373 50%, #FFFFFF);\n clip-path: circle(50%);\n mask-image: radial-gradient(circle at center, rgba(0,0,0,0) calc($spinner-size/3), rgba(0,0,0,1) calc($spinner-size/3));\n animation: spinning 1s linear infinite;\n}\n\n@keyframes spinning {\n 0% { transform: rotate(0deg); }\n 50% {transform: rotate(180deg);}\n 100% { transform: rotate(360deg); }\n}","import { Component, h } from '@stencil/core';\n\n@Component({\n tag: 'sc-spinner-light',\n styleUrl: 'sc-spinner-light.module.scss',\n shadow: true,\n})\nexport class ScSpinnerLight {\n render() {\n return (\n <div class='spinnerContainer'>\n <div class='spinnerLight' />\n </div>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,61 @@
1
+ import { p as proxyCustomElement, H, h } from './p-a912a224.js';
2
+ import { c as classNames } from './p-5cdc6210.js';
3
+
4
+ const scInputCaptionModuleCss = ":root{--font-stack:Helvetica, Arial, sans-serif}.inputCaptionLightLTR{font-family:var(--font-stack);font-size:12px;font-weight:400;line-height:16px;margin-top:4px;color:#404040}.inputCaptionDarkLTR{font-family:var(--font-stack);font-size:12px;font-weight:400;line-height:16px;margin-top:4px;color:#E6E6E6}.inputCaptionErrorLightLTR{font-family:var(--font-stack);font-size:12px;font-weight:400;line-height:16px;margin-top:4px;color:#990000}.inputCaptionErrorDarkLTR{font-family:var(--font-stack);font-size:12px;font-weight:400;line-height:16px;margin-top:4px;color:#FFB3B3}.inputCaptionLightRTL{font-family:var(--font-stack);font-size:12px;font-weight:400;line-height:16px;margin-top:4px;color:#404040;text-align:right}.inputCaptionDarkRTL{font-family:var(--font-stack);font-size:12px;font-weight:400;line-height:16px;margin-top:4px;color:#E6E6E6;text-align:right}.inputCaptionErrorLightRTL{font-family:var(--font-stack);font-size:12px;font-weight:400;line-height:16px;margin-top:4px;color:#990000;text-align:right}.inputCaptionErrorDarkRTL{font-family:var(--font-stack);font-size:12px;font-weight:400;line-height:16px;margin-top:4px;color:#FFB3B3;text-align:right}";
5
+ const ScInputCaptionStyle0 = scInputCaptionModuleCss;
6
+
7
+ const ScInputCaption = /*@__PURE__*/ proxyCustomElement(class ScInputCaption extends H {
8
+ constructor() {
9
+ super();
10
+ this.__registerHost();
11
+ this.__attachShadow();
12
+ this.error = undefined;
13
+ this.inputCaptionClassName = '';
14
+ this.inputCaptionValue = 'Enter Search';
15
+ this.rightToLeftOrientation = false;
16
+ this.theme = 'light';
17
+ }
18
+ isLightTheme() {
19
+ return this.theme === 'light';
20
+ }
21
+ render() {
22
+ return this.rightToLeftOrientation ? (h("p", { class: classNames(this.error
23
+ ? this.isLightTheme
24
+ ? 'inputCaptionErrorLightRTL'
25
+ : 'inputCaptionErrorDarkRTL'
26
+ : this.isLightTheme
27
+ ? 'inputCaptionLightRTL'
28
+ : 'inputCaptionDarkRTL', this.inputCaptionClassName, '.searchcraft-input-caption') }, this.inputCaptionValue)) : (h("p", { class: classNames(this.error
29
+ ? this.isLightTheme
30
+ ? 'inputCaptionErrorLightLTR'
31
+ : 'inputCaptionErrorDarkLTR'
32
+ : this.isLightTheme
33
+ ? 'inputCaptionLightLTR'
34
+ : 'inputCaptionDarkLTR', this.inputCaptionClassName, '.searchcraft-input-caption') }, this.inputCaptionValue));
35
+ }
36
+ static get style() { return ScInputCaptionStyle0; }
37
+ }, [1, "sc-input-caption", {
38
+ "error": [4],
39
+ "inputCaptionClassName": [1, "input-caption-class-name"],
40
+ "inputCaptionValue": [1, "input-caption-value"],
41
+ "rightToLeftOrientation": [4, "right-to-left-orientation"],
42
+ "theme": [32]
43
+ }]);
44
+ function defineCustomElement() {
45
+ if (typeof customElements === "undefined") {
46
+ return;
47
+ }
48
+ const components = ["sc-input-caption"];
49
+ components.forEach(tagName => { switch (tagName) {
50
+ case "sc-input-caption":
51
+ if (!customElements.get(tagName)) {
52
+ customElements.define(tagName, ScInputCaption);
53
+ }
54
+ break;
55
+ } });
56
+ }
57
+ defineCustomElement();
58
+
59
+ export { ScInputCaption as S, defineCustomElement as d };
60
+
61
+ //# sourceMappingURL=p-184d9504.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-184d9504.js","mappings":";;;AAAA,MAAM,uBAAuB,GAAG,8oCAA8oC,CAAC;AAC/qC,6BAAe,uBAAuB;;MCOzB,cAAc;;;;;;qCAEQ,EAAE;iCACP,cAAc;sCACT,KAAK;qBACrB,OAAO;;IAEhB,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;KAC/B;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,sBAAsB,IAChC,SACE,KAAK,EAAE,UAAU,CACf,IAAI,CAAC,KAAK;kBACN,IAAI,CAAC,YAAY;sBACf,2BAA2B;sBAC3B,0BAA0B;kBAC5B,IAAI,CAAC,YAAY;sBACf,sBAAsB;sBACtB,qBAAqB,EAC3B,IAAI,CAAC,qBAAqB,EAC1B,4BAA4B,CAC7B,IAEA,IAAI,CAAC,iBAAiB,CACrB,KAEJ,SACE,KAAK,EAAE,UAAU,CACf,IAAI,CAAC,KAAK;kBACN,IAAI,CAAC,YAAY;sBACf,2BAA2B;sBAC3B,0BAA0B;kBAC5B,IAAI,CAAC,YAAY;sBACf,sBAAsB;sBACtB,qBAAqB,EAC3B,IAAI,CAAC,qBAAqB,EAC1B,4BAA4B,CAC7B,IAEA,IAAI,CAAC,iBAAiB,CACrB,CACL,CAAC;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/sc-input-caption/sc-input-caption.module.scss?tag=sc-input-caption&encapsulation=shadow","src/components/sc-input-caption/sc-input-caption.tsx"],"sourcesContent":["@import '../../utils/theme';\n\n:root {\n --font-stack: Helvetica, Arial, sans-serif;\n}\n\n@mixin input-caption-base {\n font-family: var(--font-stack);\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n margin-top: 4px;\n}\n\n@mixin input-caption-base-light {\n @include input-caption-base;\n color: $light-input-caption-color;\n}\n\n@mixin input-caption-base-dark {\n @include input-caption-base;\n color: $dark-input-caption-color;\n}\n\n.inputCaptionLightLTR {\n @include input-caption-base-light;\n}\n\n.inputCaptionDarkLTR {\n @include input-caption-base-dark;\n}\n\n.inputCaptionErrorLightLTR {\n @include input-caption-base;\n color: $light-input-caption-color-error;\n}\n\n.inputCaptionErrorDarkLTR {\n @include input-caption-base;\n color: $dark-input-caption-color-error;\n}\n\n.inputCaptionLightRTL {\n @include input-caption-base-light;\n text-align: right;\n}\n\n.inputCaptionDarkRTL {\n @include input-caption-base-dark;\n text-align: right;\n}\n\n.inputCaptionErrorLightRTL {\n @include input-caption-base;\n color: $light-input-caption-color-error;\n text-align: right;\n}\n\n.inputCaptionErrorDarkRTL {\n @include input-caption-base;\n color: $dark-input-caption-color-error;\n text-align: right;\n}","import { Component, Prop, h, State } from '@stencil/core';\nimport classNames from 'classnames';\n\n@Component({\n tag: 'sc-input-caption',\n styleUrl: 'sc-input-caption.module.scss',\n shadow: true,\n})\nexport class ScInputCaption {\n @Prop() error?: boolean;\n @Prop() inputCaptionClassName? = '';\n @Prop() inputCaptionValue = 'Enter Search';\n @Prop() rightToLeftOrientation = false;\n @State() theme = 'light';\n\n private isLightTheme() {\n return this.theme === 'light';\n }\n\n render() {\n return this.rightToLeftOrientation ? (\n <p\n class={classNames(\n this.error\n ? this.isLightTheme\n ? 'inputCaptionErrorLightRTL'\n : 'inputCaptionErrorDarkRTL'\n : this.isLightTheme\n ? 'inputCaptionLightRTL'\n : 'inputCaptionDarkRTL',\n this.inputCaptionClassName,\n '.searchcraft-input-caption',\n )}\n >\n {this.inputCaptionValue}\n </p>\n ) : (\n <p\n class={classNames(\n this.error\n ? this.isLightTheme\n ? 'inputCaptionErrorLightLTR'\n : 'inputCaptionErrorDarkLTR'\n : this.isLightTheme\n ? 'inputCaptionLightLTR'\n : 'inputCaptionDarkLTR',\n this.inputCaptionClassName,\n '.searchcraft-input-caption',\n )}\n >\n {this.inputCaptionValue}\n </p>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,58 @@
1
+ import { p as proxyCustomElement, H, h as h$1 } from './p-a912a224.js';
2
+ import { h } from './p-c54fdecb.js';
3
+
4
+ const SearchIconLight = () => (h("svg", { width: '20', height: '20', viewBox: '0 0 20 20', fill: 'none' },
5
+ h("title", null, "Searchcraft Search Icon Light"),
6
+ h("path", { d: 'M17.5 17.5L13.875 13.875M15.8333 9.16667C15.8333 12.8486 12.8486 15.8333 9.16667 15.8333C5.48477 15.8333 2.5 12.8486 2.5 9.16667C2.5 5.48477 5.48477 2.5 9.16667 2.5C12.8486 2.5 15.8333 5.48477 15.8333 9.16667Z', stroke: '#404040', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' })));
7
+ const SearchIconDark = () => (h("svg", { width: '18', height: '18', viewBox: '0 0 18 18', fill: 'none', xmlns: 'http://www.w3.org/2000/svg' },
8
+ h("title", null, "Searchcraft Search Icon Dark"),
9
+ h("path", { d: 'M16.5 16.5L12.875 12.875M14.8333 8.16667C14.8333 11.8486 11.8486 14.8333 8.16667 14.8333C4.48477 14.8333 1.5 11.8486 1.5 8.16667C1.5 4.48477 4.48477 1.5 8.16667 1.5C11.8486 1.5 14.8333 4.48477 14.8333 8.16667Z', stroke: '#E6E6E6', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' })));
10
+ const SearchIconLightError = () => (h("svg", { width: '20', height: '20', viewBox: '0 0 20 20', fill: 'none' },
11
+ h("title", null, "Searchcraft Error Search Icon Light"),
12
+ h("path", { d: 'M17.5 17.5L13.875 13.875M15.8333 9.16667C15.8333 12.8486 12.8486 15.8333 9.16667 15.8333C5.48477 15.8333 2.5 12.8486 2.5 9.16667C2.5 5.48477 5.48477 2.5 9.16667 2.5C12.8486 2.5 15.8333 5.48477 15.8333 9.16667Z', stroke: '#737373', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' })));
13
+ const SearchIconDarkError = () => (h("svg", { width: '18', height: '18', viewBox: '0 0 18 18', fill: 'none', xmlns: 'http://www.w3.org/2000/svg' },
14
+ h("title", null, "Searchcraft Error Search Icon Dark"),
15
+ h("path", { d: 'M16.5 16.5L12.875 12.875M14.8333 8.16667C14.8333 11.8486 11.8486 14.8333 8.16667 14.8333C4.48477 14.8333 1.5 11.8486 1.5 8.16667C1.5 4.48477 4.48477 1.5 8.16667 1.5C11.8486 1.5 14.8333 4.48477 14.8333 8.16667Z', stroke: '#BFBFBF', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' })));
16
+
17
+ const scInputIconModuleCss = ":root{--font-stack:Helvetica, Arial, sans-serif}.inputIconLTR{height:20px;left:10px;position:absolute;top:11px;width:20px}.inputIconRTL{height:20px;position:absolute;right:10px;top:11px;width:20px}";
18
+ const ScInputIconStyle0 = scInputIconModuleCss;
19
+
20
+ const ScInputIcon = /*@__PURE__*/ proxyCustomElement(class ScInputIcon extends H {
21
+ constructor() {
22
+ super();
23
+ this.__registerHost();
24
+ this.__attachShadow();
25
+ this.error = undefined;
26
+ this.rightToLeftOrientation = false;
27
+ this.theme = 'light';
28
+ }
29
+ isLightTheme() {
30
+ return this.theme === 'light';
31
+ }
32
+ render() {
33
+ return this.error ? (h$1("div", { class: this.rightToLeftOrientation ? 'inputIconRTL' : 'inputIconLTR' }, this.isLightTheme ? h$1(SearchIconLightError, null) : h$1(SearchIconDarkError, null))) : (h$1("div", { class: this.rightToLeftOrientation ? 'inputIconRTL' : 'inputIconLTR' }, this.isLightTheme ? h$1(SearchIconLight, null) : h$1(SearchIconDark, null)));
34
+ }
35
+ static get style() { return ScInputIconStyle0; }
36
+ }, [1, "sc-input-icon", {
37
+ "error": [4],
38
+ "rightToLeftOrientation": [4, "right-to-left-orientation"],
39
+ "theme": [32]
40
+ }]);
41
+ function defineCustomElement() {
42
+ if (typeof customElements === "undefined") {
43
+ return;
44
+ }
45
+ const components = ["sc-input-icon"];
46
+ components.forEach(tagName => { switch (tagName) {
47
+ case "sc-input-icon":
48
+ if (!customElements.get(tagName)) {
49
+ customElements.define(tagName, ScInputIcon);
50
+ }
51
+ break;
52
+ } });
53
+ }
54
+ defineCustomElement();
55
+
56
+ export { ScInputIcon as S, defineCustomElement as d };
57
+
58
+ //# sourceMappingURL=p-23bdbb1f.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-23bdbb1f.js","mappings":";;;AAEO,MAAM,eAAe,GAAG,OAC7B,WAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM;IACzD,iDAA4C;IAC5C,YACE,CAAC,EAAC,mNAAmN,EACrN,MAAM,EAAC,SAAS,kBACH,KAAK,oBACH,OAAO,qBACN,OAAO,GACvB,CACE,CACP,CAAC;AAEK,MAAM,cAAc,GAAG,OAC5B,WACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B;IAElC,gDAA2C;IAC3C,YACE,CAAC,EAAC,mNAAmN,EACrN,MAAM,EAAC,SAAS,kBACH,KAAK,oBACH,OAAO,qBACN,OAAO,GACvB,CACE,CACP,CAAC;AAEK,MAAM,oBAAoB,GAAG,OAClC,WAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM;IACzD,uDAAkD;IAClD,YACE,CAAC,EAAC,mNAAmN,EACrN,MAAM,EAAC,SAAS,kBACH,KAAK,oBACH,OAAO,qBACN,OAAO,GACvB,CACE,CACP,CAAC;AAEK,MAAM,mBAAmB,GAAG,OACjC,WACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B;IAElC,sDAAiD;IACjD,YACE,CAAC,EAAC,mNAAmN,EACrN,MAAM,EAAC,SAAS,kBACH,KAAK,oBACH,OAAO,qBACN,OAAO,GACvB,CACE,CACP;;AChED,MAAM,oBAAoB,GAAG,uMAAuM,CAAC;AACrO,0BAAe,oBAAoB;;MCatB,WAAW;;;;;;sCAEW,KAAK;qBACrB,OAAO;;IAEhB,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;KAC/B;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,IACfA,aACE,KAAK,EAAE,IAAI,CAAC,sBAAsB,GAAG,cAAc,GAAG,cAAc,IAEnE,IAAI,CAAC,YAAY,GAAGA,IAAC,oBAAoB,OAAG,GAAGA,IAAC,mBAAmB,OAAG,CACnE,KAENA,aACE,KAAK,EAAE,IAAI,CAAC,sBAAsB,GAAG,cAAc,GAAG,cAAc,IAEnE,IAAI,CAAC,YAAY,GAAGA,IAAC,eAAe,OAAG,GAAGA,IAAC,cAAc,OAAG,CACzD,CACP,CAAC;KACH;;;;;;;;;;;;;;;;;;;;;;;;","names":["h"],"sources":["src/assets/SearchIcons.tsx","src/components/sc-input-icon/sc-input-icon.module.scss?tag=sc-input-icon&encapsulation=shadow","src/components/sc-input-icon/sc-input-icon.tsx"],"sourcesContent":["import { h } from '@stencil/core';\n\nexport const SearchIconLight = () => (\n <svg width='20' height='20' viewBox='0 0 20 20' fill='none'>\n <title>Searchcraft Search Icon Light</title>\n <path\n d='M17.5 17.5L13.875 13.875M15.8333 9.16667C15.8333 12.8486 12.8486 15.8333 9.16667 15.8333C5.48477 15.8333 2.5 12.8486 2.5 9.16667C2.5 5.48477 5.48477 2.5 9.16667 2.5C12.8486 2.5 15.8333 5.48477 15.8333 9.16667Z'\n stroke='#404040'\n stroke-width='1.5'\n stroke-linecap='round'\n stroke-linejoin='round'\n />\n </svg>\n);\n\nexport const SearchIconDark = () => (\n <svg\n width='18'\n height='18'\n viewBox='0 0 18 18'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <title>Searchcraft Search Icon Dark</title>\n <path\n d='M16.5 16.5L12.875 12.875M14.8333 8.16667C14.8333 11.8486 11.8486 14.8333 8.16667 14.8333C4.48477 14.8333 1.5 11.8486 1.5 8.16667C1.5 4.48477 4.48477 1.5 8.16667 1.5C11.8486 1.5 14.8333 4.48477 14.8333 8.16667Z'\n stroke='#E6E6E6'\n stroke-width='1.5'\n stroke-linecap='round'\n stroke-linejoin='round'\n />\n </svg>\n);\n\nexport const SearchIconLightError = () => (\n <svg width='20' height='20' viewBox='0 0 20 20' fill='none'>\n <title>Searchcraft Error Search Icon Light</title>\n <path\n d='M17.5 17.5L13.875 13.875M15.8333 9.16667C15.8333 12.8486 12.8486 15.8333 9.16667 15.8333C5.48477 15.8333 2.5 12.8486 2.5 9.16667C2.5 5.48477 5.48477 2.5 9.16667 2.5C12.8486 2.5 15.8333 5.48477 15.8333 9.16667Z'\n stroke='#737373'\n stroke-width='1.5'\n stroke-linecap='round'\n stroke-linejoin='round'\n />\n </svg>\n);\n\nexport const SearchIconDarkError = () => (\n <svg\n width='18'\n height='18'\n viewBox='0 0 18 18'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <title>Searchcraft Error Search Icon Dark</title>\n <path\n d='M16.5 16.5L12.875 12.875M14.8333 8.16667C14.8333 11.8486 11.8486 14.8333 8.16667 14.8333C4.48477 14.8333 1.5 11.8486 1.5 8.16667C1.5 4.48477 4.48477 1.5 8.16667 1.5C11.8486 1.5 14.8333 4.48477 14.8333 8.16667Z'\n stroke='#BFBFBF'\n stroke-width='1.5'\n stroke-linecap='round'\n stroke-linejoin='round'\n />\n </svg>\n);\n",":root {\n --font-stack: Helvetica, Arial, sans-serif;\n}\n\n.inputIconLTR {\n height: 20px;\n left: 10px;\n position: absolute;\n top: 11px;\n width: 20px;\n}\n\n.inputIconRTL {\n height: 20px;\n position: absolute;\n right: 10px;\n top: 11px;\n width: 20px;\n}","import { Component, Prop, h, State } from '@stencil/core';\n\nimport {\n SearchIconLight,\n SearchIconDark,\n SearchIconLightError,\n SearchIconDarkError,\n} from '@assets/SearchIcons';\n\n@Component({\n tag: 'sc-input-icon',\n styleUrl: 'sc-input-icon.module.scss',\n shadow: true,\n})\nexport class ScInputIcon {\n @Prop() error?: boolean;\n @Prop() rightToLeftOrientation = false;\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 ? <SearchIconLightError /> : <SearchIconDarkError />}\n </div>\n ) : (\n <div\n class={this.rightToLeftOrientation ? 'inputIconRTL' : 'inputIconLTR'}\n >\n {this.isLightTheme ? <SearchIconLight /> : <SearchIconDark />}\n </div>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,62 @@
1
+ import { p as proxyCustomElement, H, c as createEvent, h, F as Fragment } from './p-a912a224.js';
2
+ import { c as classNames } from './p-5cdc6210.js';
3
+ import { d as defineCustomElement$1 } from './p-dfb43eea.js';
4
+
5
+ const scButtonModuleCss = ":root{--font-stack:Helvetica, Arial, sans-serif}.buttonLight{border-radius:8px;display:flex;font-family:var(--font-stack);font-size:16px;font-weight:700;line-height:20px;padding:11px 20px;position:relative;background-color:#000;border:1px solid #E6E6E6;color:#FFF}.buttonLight:hover{cursor:pointer}.buttonLight:hover{background-color:#2E2E2E}.buttonLight:focus{outline:2px solid #000000}.buttonDark{border-radius:8px;display:flex;font-family:var(--font-stack);font-size:16px;font-weight:700;line-height:20px;padding:11px 20px;position:relative;background-color:#FFF;border:1px solid #404040;color:#292929}.buttonDark:hover{cursor:pointer}.buttonDark:hover{background-color:#FAFAFA}.buttonDark:focus{outline:2px solid #404040}.spinnerMarginRight{left:4px;margin-right:4px;position:absolute}.spinnerMarginLeft{left:4px;margin-left:4px;position:absolute}.buttonLabel{animation:right-and-back 0.2s;margin-left:4px;position:relative}@keyframes right-and-back{0%{right:-6px}50%{right:-12px}75%{right:-6px}100%{right:0px}}";
6
+ const ScButtonStyle0 = scButtonModuleCss;
7
+
8
+ const ScButton = /*@__PURE__*/ proxyCustomElement(class ScButton extends H {
9
+ constructor() {
10
+ super();
11
+ this.__registerHost();
12
+ this.__attachShadow();
13
+ this.buttonClick = createEvent(this, "buttonClick", 7);
14
+ this.handleClick = () => {
15
+ this.buttonClick.emit(); // Emit the event instead of calling a function
16
+ };
17
+ this.iconElement = undefined;
18
+ this.iconOnly = false;
19
+ this.iconPosition = 'left';
20
+ this.label = 'Search';
21
+ this.isRequesting = false;
22
+ this.theme = 'light';
23
+ }
24
+ getButtonStyle() {
25
+ return this.theme === 'light' ? 'buttonLight' : 'buttonDark';
26
+ }
27
+ render() {
28
+ const buttonStyle = this.getButtonStyle();
29
+ return (h(Fragment, { key: '1786fa90c9eff082b58b6b45dda5d64cc1da9c8a' }, this.iconOnly ? (h("button", { class: classNames(buttonStyle, 'searchcraft-button'), onClick: this.handleClick, type: 'submit' }, this.isRequesting ? h("sc-spinner-dark", null) : this.iconElement)) : (h("button", { class: classNames(buttonStyle, 'searchcraft-button'), onClick: this.handleClick, type: 'submit' }, this.iconPosition === 'left' && this.isRequesting ? (h("div", { class: 'spinner-margin-right' }, h("sc-spinner-dark", null))) : (this.iconElement), h("span", { class: classNames(this.isRequesting && 'button-label', 'searchcraft-button-label') }, this.label)))));
30
+ }
31
+ static get style() { return ScButtonStyle0; }
32
+ }, [1, "sc-button", {
33
+ "iconElement": [16],
34
+ "iconOnly": [4, "icon-only"],
35
+ "iconPosition": [1, "icon-position"],
36
+ "label": [1],
37
+ "isRequesting": [32],
38
+ "theme": [32]
39
+ }]);
40
+ function defineCustomElement() {
41
+ if (typeof customElements === "undefined") {
42
+ return;
43
+ }
44
+ const components = ["sc-button", "sc-spinner-dark"];
45
+ components.forEach(tagName => { switch (tagName) {
46
+ case "sc-button":
47
+ if (!customElements.get(tagName)) {
48
+ customElements.define(tagName, ScButton);
49
+ }
50
+ break;
51
+ case "sc-spinner-dark":
52
+ if (!customElements.get(tagName)) {
53
+ defineCustomElement$1();
54
+ }
55
+ break;
56
+ } });
57
+ }
58
+ defineCustomElement();
59
+
60
+ export { ScButton as S, defineCustomElement as d };
61
+
62
+ //# sourceMappingURL=p-255a89f7.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-255a89f7.js","mappings":";;;;AAAA,MAAM,iBAAiB,GAAG,y/BAAy/B,CAAC;AACphC,uBAAe,iBAAiB;;MCenB,QAAQ;;;;;;QAeX,gBAAW,GAAG;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB,CAAC;;wBAfiB,KAAK;4BACD,MAAM;qBACb,QAAQ;4BAIA,KAAK;qBACZ,OAAO;;IAEhB,cAAc;QACpB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,GAAG,aAAa,GAAG,YAAY,CAAC;KAC9D;IAMD,MAAM;QACJ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,QACE,EAAC,QAAQ,uDACN,IAAI,CAAC,QAAQ,IACZ,cACE,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,oBAAoB,CAAC,EACpD,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,IAAI,EAAC,QAAQ,IAEZ,IAAI,CAAC,YAAY,GAAG,0BAAmB,GAAG,IAAI,CAAC,WAAW,CACpD,KAET,cACE,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,oBAAoB,CAAC,EACpD,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,IAAI,EAAC,QAAQ,IAEZ,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,IAChD,WAAK,KAAK,EAAC,sBAAsB,IAC/B,0BAAmB,CACf,KAEN,IAAI,CAAC,WAAW,CACjB,EACD,YACE,KAAK,EAAE,UAAU,CACf,IAAI,CAAC,YAAY,IAAI,cAAc,EACnC,0BAA0B,CAC3B,IAEA,IAAI,CAAC,KAAK,CACN,CACA,CACV,CACQ,EACX;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/sc-button/sc-button.module.scss?tag=sc-button&encapsulation=shadow","src/components/sc-button/sc-button.tsx"],"sourcesContent":["@import '../../utils/theme';\n\n:root {\n --font-stack: Helvetica, Arial, sans-serif;\n}\n\n@mixin button-base {\n border-radius: 8px;\n display: flex;\n font-family: var(--font-stack);\n font-size: 16px;\n font-weight: 700;\n line-height: 20px;\n padding: 11px 20px;\n position: relative;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.buttonLight {\n @include button-base;\n background-color: $light-background;\n border: 1px solid $light-button-border;\n color: $light-button-color;\n\n &:hover {\n background-color: $light-button-hover;\n }\n\n &:focus {\n outline: 2px solid $light-button-outline-focus;\n }\n}\n\n.buttonDark {\n @include button-base;\n background-color: $dark-background;\n border: 1px solid $dark-button-border;\n color: $dark-button-color;\n\n &:hover {\n background-color: $dark-button-hover;\n }\n\n &:focus {\n outline: 2px solid $dark-button-outline-focus;\n }\n}\n\n.spinnerMarginRight {\n left: 4px;\n margin-right: 4px;\n position: absolute;\n}\n\n.spinnerMarginLeft {\n left: 4px;\n margin-left: 4px;\n position: absolute;\n}\n\n.buttonLabel {\n animation: right-and-back .2s;\n margin-left: 4px;\n position: relative;\n}\n\n@keyframes right-and-back {\n 0% { right: -6px; }\n 50% { right: -12px; }\n 75% { right: -6px; }\n 100% {right: 0px; }\n}","import {\n Component,\n Event,\n type EventEmitter,\n Prop,\n h,\n State,\n Fragment,\n} from '@stencil/core';\nimport classNames from 'classnames';\n\n@Component({\n tag: 'sc-button',\n styleUrl: 'sc-button.module.scss',\n shadow: true,\n})\nexport class ScButton {\n @Prop() iconElement?: Element;\n @Prop() iconOnly = false;\n @Prop() iconPosition = 'left';\n @Prop() label = 'Search';\n\n @Event() buttonClick!: EventEmitter<void>;\n\n @State() isRequesting = false;\n @State() theme = 'light';\n\n private getButtonStyle() {\n return this.theme === 'light' ? 'buttonLight' : 'buttonDark';\n }\n\n private handleClick = () => {\n this.buttonClick.emit(); // Emit the event instead of calling a function\n };\n\n render() {\n const buttonStyle = this.getButtonStyle();\n\n return (\n <Fragment>\n {this.iconOnly ? (\n <button\n class={classNames(buttonStyle, 'searchcraft-button')}\n onClick={this.handleClick}\n type='submit'\n >\n {this.isRequesting ? <sc-spinner-dark /> : this.iconElement}\n </button>\n ) : (\n <button\n class={classNames(buttonStyle, 'searchcraft-button')}\n onClick={this.handleClick}\n type='submit'\n >\n {this.iconPosition === 'left' && this.isRequesting ? (\n <div class='spinner-margin-right'>\n <sc-spinner-dark />\n </div>\n ) : (\n this.iconElement\n )}\n <span\n class={classNames(\n this.isRequesting && 'button-label',\n 'searchcraft-button-label',\n )}\n >\n {this.label}\n </span>\n </button>\n )}\n </Fragment>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,108 @@
1
+ import { p as proxyCustomElement, H, c as createEvent, h, F as Fragment } from './p-a912a224.js';
2
+ import { c as classNames } from './p-5cdc6210.js';
3
+ import { d as defineCustomElement$3 } from './p-75be555b.js';
4
+ import { d as defineCustomElement$2 } from './p-184d9504.js';
5
+ import { d as defineCustomElement$1 } from './p-23bdbb1f.js';
6
+
7
+ const scInputModuleCss = ":root{--font-stack:Helvetica, Arial, sans-serif}.inputContainerLTR{position:relative}.inputContainerRTL{position:relative;margin-left:8px}.inputLightLTR{border:none;border-radius:8px;font-family:var(--font-stack);outline:none;padding-bottom:15px;padding-top:15px;background-color:#EDEDED;color:#292929;margin-right:8px;padding-left:36px;padding-right:16px}.inputLightLTR::placeholder{font-family:var(--font-stack);font-size:16px}.inputLightLTR::placeholder{color:#737373}.inputLightLTR:focus{outline:2px solid #000}.inputDarkLTR{border:none;border-radius:8px;font-family:var(--font-stack);outline:none;padding-bottom:15px;padding-top:15px;background-color:#1A1A1A;color:#FFF;margin-right:8px;padding-left:36px;padding-right:16px}.inputDarkLTR::placeholder{font-family:var(--font-stack);font-size:16px}.inputDarkLTR::placeholder{color:#BFBFBF}.inputDarkLTR:focus{outline:2px solid #FFF}.inputErrorLightLTR{border:none;border-radius:8px;font-family:var(--font-stack);outline:none;padding-bottom:15px;padding-top:15px;background-color:#EDEDED;color:#292929;outline:2px solid #c00;margin-right:8px;padding-left:36px;padding-right:16px}.inputErrorLightLTR::placeholder{font-family:var(--font-stack);font-size:16px}.inputErrorLightLTR::placeholder{color:#737373}.inputErrorLightLTR:focus{outline:2px solid #000}.inputErrorLightLTR:focus-visible{outline:2px solid #c00}.inputErrorDarkLTR{border:none;border-radius:8px;font-family:var(--font-stack);outline:none;padding-bottom:15px;padding-top:15px;background-color:#1A1A1A;color:#FFF;outline:2px solid #FFB3B3;margin-right:8px;padding-left:36px;padding-right:16px}.inputErrorDarkLTR::placeholder{font-family:var(--font-stack);font-size:16px}.inputErrorDarkLTR::placeholder{color:#BFBFBF}.inputErrorDarkLTR:focus{outline:2px solid #FFF}.inputErrorDarkLTR:focus-visible{outline:2px solid #FFB3B3}.inputLightRTL{border:none;border-radius:8px;font-family:var(--font-stack);outline:none;padding-bottom:15px;padding-top:15px;background-color:#EDEDED;color:#292929;margin-left:8px;padding-left:16px;padding-right:36px;text-align:right}.inputLightRTL::placeholder{font-family:var(--font-stack);font-size:16px}.inputLightRTL::placeholder{color:#737373}.inputLightRTL:focus{outline:2px solid #000}.inputDarkRTL{border:none;border-radius:8px;font-family:var(--font-stack);outline:none;padding-bottom:15px;padding-top:15px;background-color:#1A1A1A;color:#FFF;margin-left:8px;padding-left:16px;padding-right:36px;text-align:right}.inputDarkRTL::placeholder{font-family:var(--font-stack);font-size:16px}.inputDarkRTL::placeholder{color:#BFBFBF}.inputDarkRTL:focus{outline:2px solid #FFF}.inputErrorLightRTL{border:none;border-radius:8px;font-family:var(--font-stack);outline:none;padding-bottom:15px;padding-top:15px;background-color:#EDEDED;color:#292929;outline:2px solid #c00;margin-left:8px;padding-left:16px;padding-right:36px;text-align:right}.inputErrorLightRTL::placeholder{font-family:var(--font-stack);font-size:16px}.inputErrorLightRTL::placeholder{color:#737373}.inputErrorLightRTL:focus{outline:2px solid #000}.inputErrorLightRTL:focus-visible{outline:2px solid #c00}.inputErrorDarkRTL{border:none;border-radius:8px;font-family:var(--font-stack);outline:none;padding-bottom:15px;padding-top:15px;background-color:#1A1A1A;color:#FFF;outline:2px solid #FFB3B3;margin-left:8px;padding-left:16px;padding-right:36px;text-align:right}.inputErrorDarkRTL::placeholder{font-family:var(--font-stack);font-size:16px}.inputErrorDarkRTL::placeholder{color:#BFBFBF}.inputErrorDarkRTL:focus{outline:2px solid #FFF}.inputErrorDarkRTL:focus-visible{outline:2px solid #FFB3B3}";
8
+ const ScInputStyle0 = scInputModuleCss;
9
+
10
+ const ScInput = /*@__PURE__*/ proxyCustomElement(class ScInput extends H {
11
+ constructor() {
12
+ super();
13
+ this.__registerHost();
14
+ this.__attachShadow();
15
+ this.searchInputChange = createEvent(this, "searchInputChange", 7);
16
+ this.clearInput = createEvent(this, "clearInput", 7);
17
+ this.error = false;
18
+ this.formClassName = '';
19
+ this.inputCaptionClassName = '';
20
+ this.inputCaptionValue = '';
21
+ this.inputClassName = '';
22
+ this.placeholderValue = 'Enter Search';
23
+ this.rightToLeftOrientation = false;
24
+ this.query = '';
25
+ this.theme = 'light';
26
+ }
27
+ get isLightTheme() {
28
+ return this.theme === 'light';
29
+ }
30
+ handleInputChange(event) {
31
+ const input = event.target;
32
+ this.searchInputChange.emit(input.value);
33
+ }
34
+ handleClearInput() {
35
+ if (this.clearInput) {
36
+ this.clearInput.emit();
37
+ }
38
+ }
39
+ render() {
40
+ const containerClassName = this.rightToLeftOrientation
41
+ ? 'inputContainerRTL'
42
+ : 'inputContainerLTR';
43
+ const inputClassName = classNames(this.error
44
+ ? this.isLightTheme
45
+ ? 'inputErrorLightRTL'
46
+ : 'inputErrorDarkRTL'
47
+ : this.isLightTheme
48
+ ? 'inputLightLTR'
49
+ : 'inputDarkLTR', 'searchcraft-input');
50
+ return (h("div", { key: '0257fcbab8d8f78439506f609784ef089f9b2784', class: classNames(containerClassName, this.formClassName, 'searchcraft-input-form') }, this.rightToLeftOrientation ? (h(Fragment, null, h("input", { class: classNames(this.error
51
+ ? this.isLightTheme
52
+ ? 'inputErrorLightRTL'
53
+ : 'inputErrorDarkRTL'
54
+ : this.isLightTheme
55
+ ? 'inputLightRTL'
56
+ : 'inputDarkRTL', inputClassName, 'searchcraft-input'), id: 'searchcraft-input-id', onChange: this.handleInputChange.bind(this), placeholder: this.placeholderValue, type: 'text', value: this.query }), this.inputCaptionValue && (h("sc-input-caption", { inputCaptionClassName: this.inputCaptionClassName, inputCaptionValue: this.inputCaptionValue, rightToLeftOrientation: this.rightToLeftOrientation })), this.query.length > 0 && (h("sc-clear-input-button", { onClearInput: this.handleClearInput, rightToLeftOrientation: this.rightToLeftOrientation })), h("sc-input-icon", { error: this.error, rightToLeftOrientation: this.rightToLeftOrientation }))) : (h(Fragment, null, h("input", { class: classNames(this.error
57
+ ? this.isLightTheme
58
+ ? 'inputErrorLightLTR'
59
+ : 'inputErrorDarkLTR'
60
+ : this.isLightTheme
61
+ ? 'inputLightLTR'
62
+ : 'inputDarkLTR', inputClassName, 'searchcraft-input'), id: 'searchcraft-input-id', onChange: this.handleInputChange.bind(this), placeholder: this.placeholderValue, type: 'text', value: this.query }), this.inputCaptionValue && (h("sc-input-caption", { inputCaptionClassName: this.inputCaptionClassName, inputCaptionValue: this.inputCaptionValue, rightToLeftOrientation: this.rightToLeftOrientation })), this.query.length > 0 && (h("sc-clear-input-button", { onClearInput: this.handleClearInput, rightToLeftOrientation: this.rightToLeftOrientation }))))));
63
+ }
64
+ static get style() { return ScInputStyle0; }
65
+ }, [1, "sc-input", {
66
+ "error": [4],
67
+ "formClassName": [1, "form-class-name"],
68
+ "inputCaptionClassName": [1, "input-caption-class-name"],
69
+ "inputCaptionValue": [1, "input-caption-value"],
70
+ "inputClassName": [1, "input-class-name"],
71
+ "placeholderValue": [1, "placeholder-value"],
72
+ "rightToLeftOrientation": [4, "right-to-left-orientation"],
73
+ "query": [1],
74
+ "theme": [32]
75
+ }]);
76
+ function defineCustomElement() {
77
+ if (typeof customElements === "undefined") {
78
+ return;
79
+ }
80
+ const components = ["sc-input", "sc-clear-input-button", "sc-input-caption", "sc-input-icon"];
81
+ components.forEach(tagName => { switch (tagName) {
82
+ case "sc-input":
83
+ if (!customElements.get(tagName)) {
84
+ customElements.define(tagName, ScInput);
85
+ }
86
+ break;
87
+ case "sc-clear-input-button":
88
+ if (!customElements.get(tagName)) {
89
+ defineCustomElement$3();
90
+ }
91
+ break;
92
+ case "sc-input-caption":
93
+ if (!customElements.get(tagName)) {
94
+ defineCustomElement$2();
95
+ }
96
+ break;
97
+ case "sc-input-icon":
98
+ if (!customElements.get(tagName)) {
99
+ defineCustomElement$1();
100
+ }
101
+ break;
102
+ } });
103
+ }
104
+ defineCustomElement();
105
+
106
+ export { ScInput as S, defineCustomElement as d };
107
+
108
+ //# sourceMappingURL=p-5410e357.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-5410e357.js","mappings":"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","names":[],"sources":["src/components/sc-input/sc-input.module.scss?tag=sc-input&encapsulation=shadow","src/components/sc-input/sc-input.tsx"],"sourcesContent":["@import '../../utils/theme';\n\n:root {\n --font-stack: Helvetica, Arial, sans-serif;\n}\n\n@mixin input-container-base {\n position: relative;\n}\n\n@mixin input-base {\n border: none;\n border-radius: 8px;\n font-family: var(--font-stack);\n outline: none;\n padding-bottom: 15px;\n padding-top: 15px;\n\n &::placeholder {\n font-family: var(--font-stack);\n font-size: 16px;\n }\n}\n\n@mixin input-base-light {\n @include input-base;\n background-color: $light-input-background-color;\n color: $light-input-label-color;\n\n &::placeholder {\n color: $light-input-placeholder-color;\n }\n\n &:focus {\n outline: 2px solid $light-input-outline-focus;\n }\n}\n\n@mixin input-base-dark {\n @include input-base;\n background-color: $dark-input-background-color;\n color: $dark-input-label-color;\n\n &::placeholder {\n color: $dark-input-placeholder-color;\n }\n\n &:focus {\n outline: 2px solid $dark-input-outline-focus;\n }\n}\n\n@mixin input-error-base-light {\n @include input-base-light;\n outline: 2px solid $light-input-error-outline;\n\n &:focus-visible {\n outline: 2px solid $light-input-error-outline,\n }\n}\n\n@mixin input-error-base-dark {\n @include input-base-dark;\n outline: 2px solid $dark-input-error-outline;\n\n &:focus-visible {\n outline: 2px solid $dark-input-error-outline;\n }\n}\n\n.inputContainerLTR {\n @include input-container-base;\n}\n\n.inputContainerRTL {\n @include input-container-base;\n margin-left: 8px;\n}\n\n@mixin align-LTR {\n margin-right: 8px;\n padding-left: 36px;\n padding-right: 16px;\n}\n\n.inputLightLTR {\n @include input-base-light;\n @include align-LTR;\n}\n\n.inputDarkLTR {\n @include input-base-dark;\n @include align-LTR;\n}\n\n.inputErrorLightLTR {\n @include input-error-base-light;\n @include align-LTR;\n}\n\n.inputErrorDarkLTR {\n @include input-error-base-dark;\n @include align-LTR;\n}\n\n@mixin align-RTL {\n margin-left: 8px;\n padding-left: 16px;\n padding-right: 36px;\n text-align: right;\n}\n\n.inputLightRTL {\n @include input-base-light;\n @include align-RTL;\n}\n\n.inputDarkRTL {\n @include input-base-dark;\n @include align-RTL;\n}\n\n.inputErrorLightRTL {\n @include input-error-base-light;\n @include align-RTL;\n}\n\n.inputErrorDarkRTL {\n @include input-error-base-dark;\n @include align-RTL;\n}\n","import {\n Component,\n h,\n Prop,\n State,\n Event,\n Fragment,\n type EventEmitter,\n} from '@stencil/core';\nimport classNames from 'classnames';\n\nexport interface ScInputCustomEvent<T> extends CustomEvent<T> {\n detail: T;\n target: HTMLScInputElement;\n}\n\n@Component({\n tag: 'sc-input',\n styleUrl: 'sc-input.module.scss',\n shadow: true,\n})\nexport class ScInput {\n @Prop() error = false;\n @Prop() formClassName = '';\n @Prop() inputCaptionClassName = '';\n @Prop() inputCaptionValue = '';\n @Prop() inputClassName = '';\n @Prop() placeholderValue = 'Enter Search';\n @Prop() rightToLeftOrientation = false;\n @Prop() query = '';\n\n @Event() searchInputChange: EventEmitter<string>;\n @Event() clearInput: EventEmitter<void>;\n\n @State() theme = 'light';\n\n private get isLightTheme() {\n return this.theme === 'light';\n }\n\n handleInputChange(event: Event) {\n const input = event.target as HTMLInputElement;\n this.searchInputChange.emit(input.value);\n }\n\n handleClearInput() {\n if (this.clearInput) {\n this.clearInput.emit();\n }\n }\n\n render() {\n const containerClassName = this.rightToLeftOrientation\n ? 'inputContainerRTL'\n : 'inputContainerLTR';\n\n const inputClassName = classNames(\n this.error\n ? this.isLightTheme\n ? 'inputErrorLightRTL'\n : 'inputErrorDarkRTL'\n : this.isLightTheme\n ? 'inputLightLTR'\n : 'inputDarkLTR',\n 'searchcraft-input',\n );\n\n return (\n <div\n class={classNames(\n containerClassName,\n this.formClassName,\n 'searchcraft-input-form',\n )}\n >\n {this.rightToLeftOrientation ? (\n <Fragment>\n <input\n class={classNames(\n this.error\n ? this.isLightTheme\n ? 'inputErrorLightRTL'\n : 'inputErrorDarkRTL'\n : this.isLightTheme\n ? 'inputLightRTL'\n : 'inputDarkRTL',\n inputClassName,\n 'searchcraft-input',\n )}\n id='searchcraft-input-id'\n onChange={this.handleInputChange.bind(this)}\n placeholder={this.placeholderValue}\n type='text'\n value={this.query}\n />\n {this.inputCaptionValue && (\n <sc-input-caption\n inputCaptionClassName={this.inputCaptionClassName}\n inputCaptionValue={this.inputCaptionValue}\n rightToLeftOrientation={this.rightToLeftOrientation}\n />\n )}\n {this.query.length > 0 && (\n <sc-clear-input-button\n onClearInput={this.handleClearInput}\n rightToLeftOrientation={this.rightToLeftOrientation}\n />\n )}\n <sc-input-icon\n error={this.error}\n rightToLeftOrientation={this.rightToLeftOrientation}\n />\n </Fragment>\n ) : (\n <Fragment>\n <input\n class={classNames(\n this.error\n ? this.isLightTheme\n ? 'inputErrorLightLTR'\n : 'inputErrorDarkLTR'\n : this.isLightTheme\n ? 'inputLightLTR'\n : 'inputDarkLTR',\n inputClassName,\n 'searchcraft-input',\n )}\n id='searchcraft-input-id'\n onChange={this.handleInputChange.bind(this)}\n placeholder={this.placeholderValue}\n type='text'\n value={this.query}\n />\n {this.inputCaptionValue && (\n <sc-input-caption\n inputCaptionClassName={this.inputCaptionClassName}\n inputCaptionValue={this.inputCaptionValue}\n rightToLeftOrientation={this.rightToLeftOrientation}\n />\n )}\n {this.query.length > 0 && (\n <sc-clear-input-button\n onClearInput={this.handleClearInput}\n rightToLeftOrientation={this.rightToLeftOrientation}\n />\n )}\n </Fragment>\n )}\n </div>\n );\n }\n}\n"],"version":3}