@arbetsformedlingen/yrkesvaljaren 2.0.5

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 (146) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +369 -0
  3. package/dist/cjs/af-validation-message-BzY5H0xU.js +16 -0
  4. package/dist/cjs/core-selector.cjs.entry.js +476 -0
  5. package/dist/cjs/digi-service-job-selector.cjs.entry.js +1619 -0
  6. package/dist/cjs/fuse-BTLNKxuL.js +1631 -0
  7. package/dist/cjs/geo-valjaren.cjs.entry.js +14910 -0
  8. package/dist/cjs/index-BOuTGlEp.js +1817 -0
  9. package/dist/cjs/index.cjs.js +14 -0
  10. package/dist/cjs/job-selector-demo.cjs.entry.js +692 -0
  11. package/dist/cjs/loader.cjs.js +12 -0
  12. package/dist/cjs/neobrutal-search.cjs.entry.js +171 -0
  13. package/dist/cjs/search.engine-D0cMelRi.js +489 -0
  14. package/dist/cjs/taxonomy-registry-DVmuDUpM.js +435 -0
  15. package/dist/cjs/types-CtHBl6Ra.js +14 -0
  16. package/dist/cjs/yrkesvaljaren.cjs.js +24 -0
  17. package/dist/collection/collection-manifest.json +15 -0
  18. package/dist/collection/components/core-selector/core-selector.css +803 -0
  19. package/dist/collection/components/core-selector/core-selector.js +761 -0
  20. package/dist/collection/components/core-selector/types.js +1 -0
  21. package/dist/collection/components/design-compat/af-icon.js +13 -0
  22. package/dist/collection/components/design-compat/af-label.js +2 -0
  23. package/dist/collection/components/design-compat/af-tag.js +6 -0
  24. package/dist/collection/components/design-compat/af-validation-message.js +11 -0
  25. package/dist/collection/components/design-compat/index.js +4 -0
  26. package/dist/collection/components/geovaljaren/geovaljaren.css +21 -0
  27. package/dist/collection/components/geovaljaren/geovaljaren.js +304 -0
  28. package/dist/collection/components/geovaljaren/logic/adapter.utils.js +20 -0
  29. package/dist/collection/components/geovaljaren/logic/data.utils.js +12 -0
  30. package/dist/collection/components/geovaljaren/logic/history-service.js +25 -0
  31. package/dist/collection/components/geovaljaren/logic/search.engine.js +28 -0
  32. package/dist/collection/components/job-selector/constants.js +26 -0
  33. package/dist/collection/components/job-selector/history-service.js +41 -0
  34. package/dist/collection/components/job-selector/job-selector-controller.js +835 -0
  35. package/dist/collection/components/job-selector/job-selector.css +318 -0
  36. package/dist/collection/components/job-selector/job-selector.js +1378 -0
  37. package/dist/collection/components/job-selector/keyboard-handlers.js +84 -0
  38. package/dist/collection/components/job-selector/logic/adapter.utils.js +75 -0
  39. package/dist/collection/components/job-selector/logic/label-formatter.js +118 -0
  40. package/dist/collection/components/job-selector/logic/search.engine.js +50 -0
  41. package/dist/collection/components/job-selector/search-logic.js +35 -0
  42. package/dist/collection/components/job-selector/search.utils.js +224 -0
  43. package/dist/collection/components/job-selector/suggestions-list.js +31 -0
  44. package/dist/collection/components/job-selector/taxonomy-registry.js +60 -0
  45. package/dist/collection/components/job-selector/test-data.mock.js +33 -0
  46. package/dist/collection/components/job-selector/types.js +10 -0
  47. package/dist/collection/components/job-selector/validation-message.js +24 -0
  48. package/dist/collection/demo-data.js +20 -0
  49. package/dist/collection/index.js +7 -0
  50. package/dist/collection/verkstad/verkstad.js +407 -0
  51. package/dist/components/core-selector.d.ts +11 -0
  52. package/dist/components/core-selector.js +1 -0
  53. package/dist/components/core-selector2.js +1 -0
  54. package/dist/components/digi-service-job-selector.d.ts +11 -0
  55. package/dist/components/digi-service-job-selector.js +1 -0
  56. package/dist/components/fuse.js +1 -0
  57. package/dist/components/geo-valjaren.d.ts +11 -0
  58. package/dist/components/geo-valjaren.js +1 -0
  59. package/dist/components/index.d.ts +35 -0
  60. package/dist/components/index.js +1 -0
  61. package/dist/components/job-selector-demo.d.ts +11 -0
  62. package/dist/components/job-selector-demo.js +1 -0
  63. package/dist/components/job-selector.js +1 -0
  64. package/dist/components/neobrutal-search.d.ts +11 -0
  65. package/dist/components/neobrutal-search.js +1 -0
  66. package/dist/components/search.engine.js +1 -0
  67. package/dist/components/types.js +1 -0
  68. package/dist/esm/af-validation-message-F8NIH2rC.js +14 -0
  69. package/dist/esm/core-selector.entry.js +474 -0
  70. package/dist/esm/digi-service-job-selector.entry.js +1617 -0
  71. package/dist/esm/fuse-BPnhMTul.js +1629 -0
  72. package/dist/esm/geo-valjaren.entry.js +14908 -0
  73. package/dist/esm/index-CGXZllj2.js +1806 -0
  74. package/dist/esm/index.js +10 -0
  75. package/dist/esm/job-selector-demo.entry.js +690 -0
  76. package/dist/esm/loader.js +10 -0
  77. package/dist/esm/neobrutal-search.entry.js +169 -0
  78. package/dist/esm/search.engine-nZ7AcXba.js +479 -0
  79. package/dist/esm/taxonomy-registry-Dw0VR9Aw.js +430 -0
  80. package/dist/esm/types-DHUftoZJ.js +12 -0
  81. package/dist/esm/yrkesvaljaren.js +20 -0
  82. package/dist/index.cjs.js +1 -0
  83. package/dist/index.js +1 -0
  84. package/dist/types/components/core-selector/core-selector.d.ts +46 -0
  85. package/dist/types/components/core-selector/types.d.ts +1 -0
  86. package/dist/types/components/design-compat/af-icon.d.ts +7 -0
  87. package/dist/types/components/design-compat/af-label.d.ts +8 -0
  88. package/dist/types/components/design-compat/af-tag.d.ts +8 -0
  89. package/dist/types/components/design-compat/af-validation-message.d.ts +9 -0
  90. package/dist/types/components/design-compat/index.d.ts +5 -0
  91. package/dist/types/components/geovaljaren/geovaljaren.d.ts +24 -0
  92. package/dist/types/components/geovaljaren/logic/adapter.utils.d.ts +7 -0
  93. package/dist/types/components/geovaljaren/logic/data.utils.d.ts +7 -0
  94. package/dist/types/components/geovaljaren/logic/history-service.d.ts +6 -0
  95. package/dist/types/components/geovaljaren/logic/search.engine.d.ts +7 -0
  96. package/dist/types/components/job-selector/ambient.d.ts +4 -0
  97. package/dist/types/components/job-selector/constants.d.ts +13 -0
  98. package/dist/types/components/job-selector/history-service.d.ts +6 -0
  99. package/dist/types/components/job-selector/job-selector-controller.d.ts +82 -0
  100. package/dist/types/components/job-selector/job-selector.d.ts +140 -0
  101. package/dist/types/components/job-selector/keyboard-handlers.d.ts +13 -0
  102. package/dist/types/components/job-selector/logic/adapter.utils.d.ts +12 -0
  103. package/dist/types/components/job-selector/logic/label-formatter.d.ts +4 -0
  104. package/dist/types/components/job-selector/logic/search.engine.d.ts +21 -0
  105. package/dist/types/components/job-selector/search-logic.d.ts +17 -0
  106. package/dist/types/components/job-selector/search.utils.d.ts +10 -0
  107. package/dist/types/components/job-selector/suggestions-list.d.ts +13 -0
  108. package/dist/types/components/job-selector/taxonomy-registry.d.ts +20 -0
  109. package/dist/types/components/job-selector/test-data.mock.d.ts +7 -0
  110. package/dist/types/components/job-selector/types.d.ts +107 -0
  111. package/dist/types/components/job-selector/validation-message.d.ts +8 -0
  112. package/dist/types/components/job-selector-demo/job-selector-demo.d.ts +55 -0
  113. package/dist/types/components/neobrutal-search/neobrutal-search.d.ts +18 -0
  114. package/dist/types/components.d.ts +425 -0
  115. package/dist/types/demo-data.d.ts +16 -0
  116. package/dist/types/index.d.ts +5 -0
  117. package/dist/types/stencil-public-runtime.d.ts +1873 -0
  118. package/dist/types/verkstad/verkstad.d.ts +1 -0
  119. package/dist/yrkesvaljaren/fuse-B0eHOxow.js.map +1 -0
  120. package/dist/yrkesvaljaren/index-Cy4BCo5s.js.map +1 -0
  121. package/dist/yrkesvaljaren/index-DfJXTQqL.js.map +1 -0
  122. package/dist/yrkesvaljaren/index.esm.js +1 -0
  123. package/dist/yrkesvaljaren/index.esm.js.map +1 -0
  124. package/dist/yrkesvaljaren/p-16636162.entry.js +1 -0
  125. package/dist/yrkesvaljaren/p-273cf6df.entry.js +1 -0
  126. package/dist/yrkesvaljaren/p-9e48afa4.entry.js +1 -0
  127. package/dist/yrkesvaljaren/p-BPnhMTul.js +1 -0
  128. package/dist/yrkesvaljaren/p-CGXZllj2.js +3 -0
  129. package/dist/yrkesvaljaren/p-DHUftoZJ.js +1 -0
  130. package/dist/yrkesvaljaren/p-DYFAzvqX.js +1 -0
  131. package/dist/yrkesvaljaren/p-Dw0VR9Aw.js +1 -0
  132. package/dist/yrkesvaljaren/p-aef7b5ae.entry.js +1 -0
  133. package/dist/yrkesvaljaren/p-b0f16abd.entry.js +1 -0
  134. package/dist/yrkesvaljaren/p-uBrs3sSs.js +1 -0
  135. package/dist/yrkesvaljaren/search.engine-DPT6roRm.js.map +1 -0
  136. package/dist/yrkesvaljaren/taxonomy-registry-s5khf6s4.js.map +1 -0
  137. package/dist/yrkesvaljaren/types-DHUftoZJ.js.map +1 -0
  138. package/dist/yrkesvaljaren/yrkesvaljaren.css +1 -0
  139. package/dist/yrkesvaljaren/yrkesvaljaren.esm.js +1 -0
  140. package/dist/yrkesvaljaren/yrkesvaljaren.esm.js.map +1 -0
  141. package/loader/cdn.js +1 -0
  142. package/loader/index.cjs.js +1 -0
  143. package/loader/index.d.ts +24 -0
  144. package/loader/index.es2017.js +1 -0
  145. package/loader/index.js +2 -0
  146. package/package.json +126 -0
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-BOuTGlEp.js');
4
+
5
+ const defineCustomElements = async (win, options) => {
6
+ if (typeof window === 'undefined') return undefined;
7
+ await index.globalScripts();
8
+ return index.bootstrapLazy([["job-selector-demo.cjs",[[512,"job-selector-demo",{"afHideHeader":[4,"af-hide-header"],"afHidePreamble":[4,"af-hide-preamble"],"variant":[32],"version":[32],"required":[32],"allowFreeText":[32],"history":[32],"size":[32],"framework":[32],"codeInstallationMode":[32],"lastSingleSelection":[32],"lastMultiSelection":[32],"implementationCode":[32],"readmeMainContent":[32],"readmeCodeContent":[32],"availableYvVersions":[32],"latestYvDataVersion":[32],"latestVersion":[32],"latestDate":[32],"latestType":[32],"latestChanges":[32],"isTaxonomyLoading":[32]},[[0,"afJobSelected","handleSelection"]]]]],["geo-valjaren.cjs",[[513,"geo-valjaren",{"label":[513,"af-label"],"placeholder":[513,"af-placeholder"],"selectorState":[32]},[[0,"csInput","handleInput"],[0,"csFocus","handleFocus"],[0,"csRequestHistory","handleRequestHistory"],[0,"csSelect","handleSelect"],[0,"csBlur","handleBlur"],[0,"csClear","handleClear"],[0,"csClearHistory","handleCsClearHistory"],[0,"csEditSelection","handleEdit"]]]]],["neobrutal-search.cjs",[[513,"neobrutal-search",{"engine":[32],"results":[32],"inputValue":[32],"isLoading":[32],"error":[32],"selectedItem":[32],"isFlipped":[32]}]]],["core-selector.cjs",[[785,"core-selector",{"state":[16],"config":[16],"label":[1],"labelDescription":[1,"label-description"],"componentId":[1,"component-id"],"size":[513,"cs-size"],"afFocused":[4,"af-focused"],"activeIndex":[32],"isFocusedInternal":[32],"isNavigatingWithKeyboard":[32],"setFocus":[64]},null,{"afFocused":[{"handleAfFocusedChange":0}],"config":[{"handleConfigChange":0}],"state":[{"handleStateChange":0}]}]]],["digi-service-job-selector.cjs",[[593,"digi-service-job-selector",{"name":[513],"taxonomyUrl":[513,"af-taxonomy-url"],"placeholder":[513,"af-placeholder"],"label":[513,"af-label"],"disabled":[516],"enableMultiple":[516,"af-enable-multiple"],"showSearchIcon":[516,"af-show-search-icon"],"errorMessage":[513,"af-error-message"],"labelDescription":[513,"af-label-description"],"required":[516,"af-required"],"manualInput":[516,"af-manual-input"],"history":[516,"af-history"],"popular":[516,"af-popular"],"size":[513,"af-size"],"taxonomyData":[1040],"afFocused":[32],"state":[32],"activeErrorType":[32],"animatingItemId":[32],"updateData":[64],"setSelection":[64],"setFocus":[64],"validate":[64],"checkValidity":[64],"reportValidity":[64],"getValidity":[64],"getValidationMessage":[64]},[[0,"afJobValidationChange","handleFormValidationSync"],[8,"hashchange","handleHashFocus"],[0,"csInput","handleInput"],[0,"csSelect","handleCsSelect"],[0,"csClear","handleCsClear"],[0,"csClearHistory","handleCsClearHistory"],[0,"csRequestHistory","handleCsRequestHistory"],[0,"csLoadMore","handleCsLoadMore"],[0,"csRemoveItem","handleCsRemoveItem"],[0,"csFocus","handleCsFocus"],[0,"csBlur","handleCsBlur"],[0,"csEditSelection","handleCsEditSelection"]],{"required":[{"watchRequired":0}],"manualInput":[{"watchManualInput":0}],"history":[{"watchHistory":0}],"popular":[{"watchPopular":0}],"enableMultiple":[{"watchEnableMultiple":0}],"disabled":[{"watchDisabled":0}],"taxonomyData":[{"watchTaxonomyData":0}]}]]]], options);
9
+ };
10
+
11
+ exports.setNonce = index.setNonce;
12
+ exports.defineCustomElements = defineCustomElements;
@@ -0,0 +1,171 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-BOuTGlEp.js');
4
+ var search_engine = require('./search.engine-D0cMelRi.js');
5
+ var taxonomyRegistry = require('./taxonomy-registry-DVmuDUpM.js');
6
+ require('./fuse-BTLNKxuL.js');
7
+
8
+ const neobrutalSearchCss = () => `:host{display:block;font-family:'Courier New', Courier, monospace;--bg-color:#fff4e6;--primary:#ff00ff;--secondary:#00ffff;--text:#000;--border:4px solid #000;--shadow:8px 8px 0px #000}.neobrutal-container{background-color:var(--bg-color);padding:40px;border:var(--border);box-shadow:var(--shadow);max-width:600px;margin:20px auto;min-height:600px;position:relative;box-sizing:border-box;display:flex;flex-direction:column;transition:min-height 0.6s cubic-bezier(0.23, 1, 0.32, 1)}.flip-container{perspective:1000px;width:100%}.flipper{transition:0.6s;transform-style:preserve-3d;position:relative;width:100%}.flip-container.flipped .flipper{transform:rotateY(180deg)}.front,.back{backface-visibility:hidden;top:0;left:0;width:100%}.front{z-index:2;transform:rotateY(0deg);position:relative}.flip-container.flipped .front{position:absolute}.back{transform:rotateY(180deg);box-sizing:border-box;position:absolute}.flip-container.flipped .back{position:relative;z-index:3}h1.glitch{font-size:3rem;font-weight:900;text-transform:uppercase;margin-bottom:30px;background-color:var(--primary);color:var(--text);display:inline-block;padding:5px 15px;border:var(--border);box-shadow:4px 4px 0px #000}.input-wrapper{margin-bottom:50px;padding-right:10px;padding-bottom:10px}input{width:100%;padding:20px;font-size:1.5rem;font-family:inherit;font-weight:bold;border:var(--border);background:white;outline:none;text-transform:uppercase;box-shadow:8px 8px 0px #000;transition:all 0.1s;box-sizing:border-box}.status{font-size:1.5rem;font-weight:bold;background-color:yellow;border:var(--border);padding:10px;margin-bottom:20px;text-align:center}.fire-status{font-size:1.8rem;font-weight:900;background-color:#ff4500;color:#fff;border:var(--border);padding:15px;margin-bottom:15px;text-align:center;position:relative;box-shadow:10px 10px 0px #000;animation:fire-flicker 0.2s infinite alternate}@keyframes fire-flicker{0%{transform:scale(1) rotate(-0.5deg)}100%{transform:scale(1.01) rotate(0.5deg)}}.fire-emoji{font-size:2rem;display:inline-block;margin:0 10px}.raw-data-container{margin-top:10px;margin-bottom:30px;background:#000;border:2px solid #fff;padding:15px;text-align:left;box-shadow:5px 5px 0px #ff00ff}.raw-label{font-size:0.8rem;color:#0f0;margin-bottom:5px;font-weight:bold}.raw-output{font-family:'Courier New', Courier, monospace;font-size:0.8rem;color:#0f0;margin:0;white-space:pre-wrap;word-break:break-all}.flip-btn{position:absolute;top:10px;right:10px;background:#000;color:#fff;border:2px solid #fff;padding:5px 10px;font-weight:bold;cursor:pointer;font-family:'Courier New', Courier, monospace;z-index:10}.flip-btn:hover{background:#ff00ff;color:#000}.source-view{background:#0d1117 !important;color:#e6edf3 !important;border-color:#30363d !important;padding:30px !important;display:flex;flex-direction:column}.source-header{font-size:2rem;color:#ff00ff;margin-bottom:20px;text-shadow:2px 2px 0 #000}.code-scroll-container{flex:1;background:#161b22;border:1px solid #30363d;border-radius:6px;padding:10px}.code-block{margin-bottom:25px;text-align:left}.code-label{background:#238636;color:#fff;display:inline-block;padding:4px 8px;font-weight:bold;font-size:0.8rem;border-radius:4px 4px 0 0}pre{background:#0d1117;margin:0;padding:10px;border:1px solid #30363d}pre code{font-family:'Courier New', Courier, monospace;font-size:0.85rem;line-height:1.4;background:transparent !important;color:#e6edf3}.result-card{background-color:white;border:var(--border);box-shadow:5px 5px 0px #000;padding:15px;transition:all 0.1s;cursor:pointer}.result-card:hover{transform:translate(2px, 2px);box-shadow:3px 3px 0px #000;background-color:var(--secondary)}.card-header{display:flex;justify-content:space-between;margin-bottom:10px;border-bottom:2px solid #000;padding-bottom:5px}.type-badge{background-color:yellow;padding:2px 8px;font-weight:bold;border:2px solid #000}.score-badge{background-color:lime;padding:2px 8px;font-weight:bold;border:2px solid #000}.label{font-size:1.2rem;font-weight:800}`;
9
+
10
+ // VIKTIGT: Dessa strängar representerar den FAKTISKA källkoden som användaren ser.
11
+ const SOURCE_CODE_JS = `import { Component, h, State, Element } from '@stencil/core';
12
+ import { TaxonomySearchEngine } from '../job-selector/logic/search.engine';
13
+ import { getRegisteredTaxonomy } from '../job-selector/taxonomy-registry';
14
+
15
+ @Component({ tag: 'neobrutal-search', styleUrl: 'neobrutal-search.css', shadow: true })
16
+ export class NeobrutalSearch {
17
+ @Element() el!: HTMLElement;
18
+ @State() engine: TaxonomySearchEngine | null = null;
19
+ @State() results: any[] = [];
20
+ @State() inputValue: string = '';
21
+ @State() isLoading: boolean = true;
22
+ @State() error: string = '';
23
+ @State() selectedItem: any | null = null;
24
+ @State() isFlipped: boolean = false;
25
+
26
+ async componentWillLoad() {
27
+ try {
28
+ const taxonomyData = getRegisteredTaxonomy();
29
+ this.engine = new TaxonomySearchEngine(taxonomyData);
30
+ this.isLoading = false;
31
+ } catch (err) {
32
+ this.error = 'DATA FAILURE';
33
+ this.isLoading = false;
34
+ }
35
+ }
36
+
37
+ componentDidUpdate() {
38
+ if (this.isFlipped) this.highlightCode();
39
+ }
40
+
41
+ highlightCode() {
42
+ const hljs = (window as any).hljs;
43
+ if (hljs && this.el?.shadowRoot) {
44
+ const blocks = this.el.shadowRoot.querySelectorAll('pre code');
45
+ blocks.forEach((block) => hljs.highlightElement(block));
46
+ }
47
+ }
48
+
49
+ handleInput(event: Event) {
50
+ const query = (event.target as HTMLInputElement).value;
51
+ this.inputValue = query;
52
+ this.selectedItem = null;
53
+
54
+ if (!this.engine || query.length < 2) {
55
+ this.results = [];
56
+ return;
57
+ }
58
+
59
+ this.results = this.engine.search(query, 3);
60
+ }
61
+
62
+ handleSelect(item: any) {
63
+ this.selectedItem = item;
64
+ this.results = [];
65
+ this.inputValue = item.label;
66
+ }
67
+
68
+ toggleFlip() {
69
+ this.isFlipped = !this.isFlipped;
70
+ if (this.isFlipped) setTimeout(() => this.highlightCode(), 100);
71
+ }
72
+
73
+ render() {
74
+ return (
75
+ <div class="neobrutal-container">
76
+ {/* ... UI structure ... */}
77
+ </div>
78
+ );
79
+ }
80
+ }`;
81
+ const SOURCE_CODE_CSS = `.neobrutal-container {
82
+ background-color: #fff4e6;
83
+ padding: 40px;
84
+ border: 4px solid #000;
85
+ box-shadow: 8px 8px 0px #000;
86
+ font-family: 'Courier New', Courier, monospace;
87
+ }
88
+
89
+ .fire-status {
90
+ background-color: #ff4500;
91
+ animation: fire-flicker 0.2s infinite alternate;
92
+ }
93
+
94
+ .raw-data-container {
95
+ background: #000;
96
+ color: #0f0;
97
+ padding: 15px;
98
+ box-shadow: 5px 5px 0px #ff00ff;
99
+ }`;
100
+ const NeobrutalSearch = class {
101
+ constructor(hostRef) {
102
+ index.registerInstance(this, hostRef);
103
+ }
104
+ get el() { return index.getElement(this); }
105
+ engine = null;
106
+ results = [];
107
+ inputValue = '';
108
+ isLoading = true;
109
+ error = '';
110
+ selectedItem = null;
111
+ isFlipped = false;
112
+ async componentWillLoad() {
113
+ try {
114
+ console.log('[NeobrutalSearch] Initializing...');
115
+ const taxonomyData = taxonomyRegistry.getRegisteredTaxonomy();
116
+ this.engine = new search_engine.TaxonomySearchEngine(taxonomyData);
117
+ this.isLoading = false;
118
+ }
119
+ catch (err) {
120
+ console.error('[NeobrutalSearch] Init failed:', err);
121
+ this.error = 'DATA FAILURE';
122
+ this.isLoading = false;
123
+ }
124
+ }
125
+ componentDidUpdate() {
126
+ if (this.isFlipped) {
127
+ this.highlightCode();
128
+ }
129
+ }
130
+ highlightCode() {
131
+ const hljs = window.hljs;
132
+ if (hljs && this.el?.shadowRoot) {
133
+ const blocks = this.el.shadowRoot.querySelectorAll('pre code');
134
+ blocks.forEach((block) => {
135
+ hljs.highlightElement(block);
136
+ });
137
+ }
138
+ }
139
+ handleInput(event) {
140
+ const query = event.target.value;
141
+ this.inputValue = query;
142
+ this.selectedItem = null;
143
+ if (!this.engine || query.length < 2) {
144
+ this.results = [];
145
+ return;
146
+ }
147
+ const searchResults = this.engine.search(query, 3);
148
+ this.results = searchResults;
149
+ }
150
+ handleSelect(item) {
151
+ this.selectedItem = item;
152
+ this.results = [];
153
+ this.inputValue = item.label;
154
+ }
155
+ toggleFlip() {
156
+ this.isFlipped = !this.isFlipped;
157
+ if (this.isFlipped) {
158
+ setTimeout(() => this.highlightCode(), 100);
159
+ }
160
+ }
161
+ render() {
162
+ return (index.h("div", { key: '032a555551974ef504c703419db83581652a5083', class: `flip-container ${this.isFlipped ? 'flipped' : ''}` }, index.h("link", { key: '8af8fac02cd7b8ac1112c08c51e32be3845b7647', rel: "stylesheet", href: "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/atom-one-dark.min.css" }), index.h("div", { key: '5f63de826af07f1139126a64fb205f65e14f5060', class: "flipper" }, index.h("div", { key: 'a7878c0a9db257884cedab104366639d2edb506b', class: "front neobrutal-container" }, index.h("button", { key: '6d65c76d93c717e7c056f0e2da60d2f825efd781', class: "flip-btn", onClick: () => this.toggleFlip() }, "FLIP_ME \uD83D\uDD04"), index.h("h1", { key: '56981f916be340a827e376cb713e6b6fb5e097bb', class: "glitch", "data-text": "YRKE_S\u00D6K" }, "YRKE_S\u00D6K"), index.h("div", { key: 'ba3c2e76b631e0d48c5f2ecee1095a999393822e', class: "input-wrapper" }, index.h("input", { key: '75a8e4553a2e77992efa9591a64fba83c3dbe3ea', type: "text", placeholder: "VAD VILL DU BLI?", onInput: (e) => this.handleInput(e), value: this.inputValue, disabled: this.isLoading })), this.isLoading && index.h("div", { key: '46ec1526451477d7ecf90ffe46dd964986096903', class: "status" }, "LOADING_DATA..."), this.error && index.h("div", { key: '01bc30a4d4e17e493d8deb08c7e5b71da9c23df7', class: "status error" }, this.error), this.selectedItem && (index.h("div", { key: '0e6d79bc76dbecd7a79bbf0b00246acdef45eda3' }, index.h("div", { key: 'f942688584b54c4b43679903549781fbe346e154', class: "fire-status" }, index.h("span", { key: 'efde5818a4449b710d22e43e9c8148f380f89f3d', class: "fire-emoji" }, "\uD83D\uDD25 \uD83D\uDD25 \uD83D\uDD25"), "HETT VAL: ", this.selectedItem.label.toUpperCase(), "!", index.h("span", { key: '7764fa1ed1fd7b0541f5ad3a49e3135f4a61edfe', class: "fire-emoji" }, "\uD83D\uDD25 \uD83D\uDD25 \uD83D\uDD25")), index.h("div", { key: '415e1ee36443cc50cddb0f87e8750b34084fd485', class: "raw-data-container" }, index.h("div", { key: 'ed730d664599ecac4a89ccdf597833ea3f9fb47a', class: "raw-label" }, "RAW_JSON_DATA:"), index.h("pre", { key: '0921ef8ebccb5add5e9d379e31872b2798b399f8', class: "raw-output" }, JSON.stringify(this.selectedItem, null, 2))))), index.h("div", { key: '9af42c5d7cb9d901b6909e8ea4260da7dfee09fd', class: "results-container" }, this.results.map(result => {
163
+ const metadata = result?.metadata || {};
164
+ const original = metadata?.originalResult;
165
+ return (index.h("div", { class: "result-card", onClick: () => this.handleSelect(result) }, index.h("div", { class: "card-header" }, index.h("span", { class: "type-badge" }, original?.category === 'job-title' ? 'YRK' : 'GRP'), index.h("span", { class: "score-badge" }, "SCR: ", Math.round((metadata?.score || 0) * 10))), index.h("div", { class: "card-body" }, index.h("div", { class: "label" }, result.displayLabel || result.label))));
166
+ }))), index.h("div", { key: '349e56ba67845d6b63ab8616823c5909452ed593', class: "back neobrutal-container source-view" }, index.h("button", { key: '1de742d808b48a65bb266ea19a83ccf567a76ac6', class: "flip-btn", onClick: () => this.toggleFlip() }, "BACK \uD83D\uDD19"), index.h("h1", { key: 'b2400cbd8d36417df1cbb3c487fa7e3d824f4a02', class: "source-header" }, "FULL_SOURCE_CODE"), index.h("p", { key: '59c3e040a7177810b53200426da4543f99c7ca73', class: "source-desc" }, "Exakt den koden du ser, inga fejk snippets h\u00E4r inte:"), index.h("div", { key: '8ed08d5d1d79ec49c6e6bb6a5be504ddd6ed84c2', class: "code-scroll-container" }, index.h("div", { key: '5018114c97191ccf174ae197d56917f35848dcef', class: "code-block" }, index.h("div", { key: '466523ef6acb91d435248d5d399fef5a79bc2e6f', class: "code-label" }, "neobrutal-search.tsx"), index.h("pre", { key: '2a3ad662ac5a0346131aaa13dfd9544169338e48' }, index.h("code", { key: '76b3240d79589217899d74f6727b64d1c8495d7a', class: "language-typescript" }, SOURCE_CODE_JS))), index.h("div", { key: '2990f5d3da12a8c8ffeccbb4f786945b7eb70483', class: "code-block" }, index.h("div", { key: '5b957f082c75f5de3f5bd766c9fd135e1ee06471', class: "code-label" }, "neobrutal-search.css"), index.h("pre", { key: '8a2c509035923387c2dac463b72feda6c2c41ba2' }, index.h("code", { key: '581e2ccebcef975ac6dd79059da4c82cb0ffe176', class: "language-css" }, SOURCE_CODE_CSS))))))));
167
+ }
168
+ };
169
+ NeobrutalSearch.style = neobrutalSearchCss();
170
+
171
+ exports.neobrutal_search = NeobrutalSearch;