@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,803 @@
1
+ /*
2
+ * Minimal AF design compatibility tokens and primitives.
3
+ * Values are adapted from the AF design system v37.0.2 (Apache-2.0) so the
4
+ * selectors can render without loading the full design system runtime.
5
+ */
6
+
7
+ :host {
8
+ --digi--grayscale-0: #ffffff;
9
+ --digi--grayscale-50: #fbfbfb;
10
+ --digi--grayscale-100: #f4f4f4;
11
+ --digi--grayscale-200: #ededed;
12
+ --digi--grayscale-300: #e4e4e4;
13
+ --digi--grayscale-400: #dddddd;
14
+ --digi--grayscale-500: #cacaca;
15
+ --digi--grayscale-600: #acacac;
16
+ --digi--grayscale-700: #757575;
17
+ --digi--grayscale-800: #5c5c5c;
18
+ --digi--grayscale-900: #333333;
19
+ --digi--grayscale-1000: #000000;
20
+
21
+ --digi--global--color--cta--link--base: #1616b2;
22
+ --digi--global--color--function--danger--base: #da0000;
23
+ --digi--global--color--function--success--base: #008a20;
24
+ --digi--global--color--function--success--lightest-3: #d4edda;
25
+ --digi--global--color--function--warning--base: #ffe200;
26
+
27
+ --digi--color--text--primary: var(--digi--grayscale-900);
28
+ --digi--color--text--secondary: var(--digi--grayscale-700);
29
+ --digi--color--text--link: var(--digi--global--color--cta--link--base);
30
+ --digi--color--icons--success: var(--digi--global--color--function--success--base);
31
+ --digi--color--icons--warning: #8a7a00;
32
+ --digi--color--icons--danger: var(--digi--global--color--function--danger--base);
33
+
34
+ --digi--global--typography--font-family--default: "Open Sans", Arial, sans-serif;
35
+ --digi--global--typography--font-size--base: 1rem;
36
+ --digi--global--typography--font-size--small: 0.875rem;
37
+ --digi--global--typography--font-weight--regular: 400;
38
+ --digi--global--typography--font-weight--semibold: 600;
39
+ --digi--global--typography--font-weight--bold: 700;
40
+ --digi--global--typography--line-height--base: 1.5;
41
+
42
+ --digi--typography--label--font-size--desktop: 1rem;
43
+ --digi--typography--label--font-weight--desktop: 600;
44
+ --digi--typography--label--line-height--desktop: 1.5;
45
+ --digi--typography--label-description--font-size--desktop: 1rem;
46
+ --digi--typography--label-description--line-height--desktop: 1.5;
47
+ --digi--typography--tag--font-size--desktop: 0.875rem;
48
+
49
+ --digi--gutter--icon: 0.625rem;
50
+ --digi--gutter--smaller: 0.75rem;
51
+ --digi--gutter--small: 0.875rem;
52
+ --digi--gutter--medium: 1rem;
53
+ --digi--border-width--primary: 1px;
54
+ --digi--border-style--primary: solid;
55
+ --digi--border-radius--primary: 0;
56
+ --digi--border-radius--secondary: 6px;
57
+
58
+ --af-tag-color: #091d54;
59
+ --af-tag-hover-background: #ddf1fc;
60
+ }
61
+
62
+ .af-form-label {
63
+ color: var(--digi--color--text--primary);
64
+ display: flex;
65
+ flex-direction: column;
66
+ font-family: var(--digi--global--typography--font-family--default);
67
+ font-size: var(--digi--typography--label--font-size--desktop);
68
+ margin-bottom: 0.5rem;
69
+ }
70
+
71
+ .af-form-label__label {
72
+ cursor: pointer;
73
+ display: block;
74
+ font-weight: var(--digi--typography--label--font-weight--desktop);
75
+ line-height: var(--digi--typography--label--line-height--desktop);
76
+ }
77
+
78
+ .af-form-label__description {
79
+ display: block;
80
+ font-size: var(--digi--typography--label-description--font-size--desktop);
81
+ line-height: var(--digi--typography--label-description--line-height--desktop);
82
+ max-width: 35rem;
83
+ }
84
+
85
+ .af-validation-message {
86
+ align-items: center;
87
+ display: flex;
88
+ flex-wrap: wrap;
89
+ }
90
+
91
+ .af-validation-message__icon {
92
+ flex: 0 0 auto;
93
+ height: 1.25em;
94
+ margin-inline-end: var(--digi--gutter--icon);
95
+ width: 1.25em;
96
+ }
97
+
98
+ .af-validation-message__icon--success,
99
+ .af-validation-message__icon--error {
100
+ background-color: var(--af-validation-icon-color, currentColor);
101
+ -webkit-mask-position: center;
102
+ mask-position: center;
103
+ -webkit-mask-repeat: no-repeat;
104
+ mask-repeat: no-repeat;
105
+ -webkit-mask-size: contain;
106
+ mask-size: contain;
107
+ }
108
+
109
+ .af-validation-message__icon--success {
110
+ --af-validation-icon-color: var(--digi--color--icons--success);
111
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25 25'%3E%3Cpath d='M25 12.5C25 19.404 19.404 25 12.5 25S0 19.404 0 12.5 5.596 0 12.5 0 25 5.596 25 12.5zm-13.946 6.619l9.274-9.275a.806.806 0 000-1.14l-1.14-1.14a.806.806 0 00-1.14 0l-7.564 7.563-3.531-3.531a.807.807 0 00-1.14 0l-1.141 1.14a.806.806 0 000 1.14l5.242 5.243a.806.806 0 001.14 0z'/%3E%3C/svg%3E");
112
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25 25'%3E%3Cpath d='M25 12.5C25 19.404 19.404 25 12.5 25S0 19.404 0 12.5 5.596 0 12.5 0 25 5.596 25 12.5zm-13.946 6.619l9.274-9.275a.806.806 0 000-1.14l-1.14-1.14a.806.806 0 00-1.14 0l-7.564 7.563-3.531-3.531a.807.807 0 00-1.14 0l-1.141 1.14a.806.806 0 000 1.14l5.242 5.243a.806.806 0 001.14 0z'/%3E%3C/svg%3E");
113
+ }
114
+
115
+ .af-validation-message__icon--error {
116
+ --af-validation-icon-color: var(--digi--color--icons--danger);
117
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M34.4328058,0 C35.5494848,0 36.5900526,0.609146757 37.1483921,1.58958113 L47.5812454,19.9104189 C48.1395849,20.8909496 48.1395849,22.1090504 47.5812454,23.0895811 L37.1483921,41.4104189 C36.5900526,42.3908532 35.5494848,43 34.4328058,43 L13.5671942,43 C12.4505152,43 11.4099474,42.3908532 10.8516079,41.4104189 L0.41875464,23.0895811 C-0.13958488,22.1090504 -0.13958488,20.8909496 0.41875464,19.9104189 L10.8516079,1.58958113 C11.4099474,0.609146757 12.4505152,0 13.5671942,0 Z M18.6736823,12.3728178 C18.2711762,11.964729 17.6203819,11.964729 17.2178757,12.3728178 L15.2825964,14.334939 C14.8800903,14.7430278 14.8800903,15.4028485 15.2825964,15.8109373 L20.6089616,21.2111779 L15.2825964,26.6114185 C14.8800903,27.0195074 14.8800903,27.6793281 15.2825964,28.0874169 L17.2178757,30.049538 C17.6203819,30.4576269 18.2711762,30.4576269 18.6736823,30.049538 L24.0000475,24.6492974 L29.3264127,30.049538 C29.7289188,30.4576269 30.3797132,30.4576269 30.7822193,30.049538 L32.7174986,28.0874169 C33.1200048,27.6793281 33.1200048,27.0195074 32.7174986,26.6114185 L27.3911334,21.2111779 L32.7174986,15.8109373 C33.1200048,15.4028485 33.1200048,14.7430278 32.7174986,14.334939 L30.7822193,12.3728178 C30.3797132,11.964729 29.7289188,11.964729 29.3264127,12.3728178 L24.0000475,17.7730584 Z'/%3E%3C/svg%3E");
118
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M34.4328058,0 C35.5494848,0 36.5900526,0.609146757 37.1483921,1.58958113 L47.5812454,19.9104189 C48.1395849,20.8909496 48.1395849,22.1090504 47.5812454,23.0895811 L37.1483921,41.4104189 C36.5900526,42.3908532 35.5494848,43 34.4328058,43 L13.5671942,43 C12.4505152,43 11.4099474,42.3908532 10.8516079,41.4104189 L0.41875464,23.0895811 C-0.13958488,22.1090504 -0.13958488,20.8909496 0.41875464,19.9104189 L10.8516079,1.58958113 C11.4099474,0.609146757 12.4505152,0 13.5671942,0 Z M18.6736823,12.3728178 C18.2711762,11.964729 17.6203819,11.964729 17.2178757,12.3728178 L15.2825964,14.334939 C14.8800903,14.7430278 14.8800903,15.4028485 15.2825964,15.8109373 L20.6089616,21.2111779 L15.2825964,26.6114185 C14.8800903,27.0195074 14.8800903,27.6793281 15.2825964,28.0874169 L17.2178757,30.049538 C17.6203819,30.4576269 18.2711762,30.4576269 18.6736823,30.049538 L24.0000475,24.6492974 L29.3264127,30.049538 C29.7289188,30.4576269 30.3797132,30.4576269 30.7822193,30.049538 L32.7174986,28.0874169 C33.1200048,27.6793281 33.1200048,27.0195074 32.7174986,26.6114185 L27.3911334,21.2111779 L32.7174986,15.8109373 C33.1200048,15.4028485 33.1200048,14.7430278 32.7174986,14.334939 L30.7822193,12.3728178 C30.3797132,11.964729 29.7289188,11.964729 29.3264127,12.3728178 L24.0000475,17.7730584 Z'/%3E%3C/svg%3E");
119
+ }
120
+
121
+ .af-validation-message__icon--warning {
122
+ background: center / contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Ccircle cx='9' cy='9' r='6.75' fill='%23333'/%3E%3Cpath d='m18 9c0 4.9717-4.0298 9-9 9-4.9702 0-9-4.0283-9-9 0-4.9688 4.0298-9 9-9 4.9702 0 9 4.0312 9 9zm-9 1.8145c-0.92196 0-1.6694 0.7474-1.6694 1.6694 0 0.92196 0.7474 1.6694 1.6694 1.6694s1.6694-0.7474 1.6694-1.6694c0-0.92196-0.7474-1.6694-1.6694-1.6694zm-1.3157-1.065c0.012593 0.23095 0.20355 0.41175 0.43483 0.41175h1.7618c0.23128 0 0.42224-0.1808 0.43483-0.41175l0.2692-4.9355c0.013609-0.24946-0.18501-0.45922-0.43483-0.45922h-2.3002c-0.24982 0-0.4484 0.20976-0.43479 0.45922l0.2692 4.9355z' fill='%23FFE200'/%3E%3C/svg%3E");
123
+ position: relative;
124
+ top: 3px;
125
+ }
126
+
127
+ .af-validation-message__text {
128
+ color: var(--digi--color--text--primary);
129
+ flex: 1;
130
+ font-family: var(--digi--global--typography--font-family--default);
131
+ font-size: var(--digi--typography--tag--font-size--desktop);
132
+ transform: translateY(1px);
133
+ }
134
+
135
+ .af-tag {
136
+ display: block;
137
+ max-width: 100%;
138
+ min-width: 0;
139
+ }
140
+
141
+ .af-tag__button {
142
+ align-items: center;
143
+ background: var(--digi--grayscale-0);
144
+ border: var(--digi--border-width--primary) var(--digi--border-style--primary) var(--af-tag-color);
145
+ border-radius: var(--digi--border-radius--secondary);
146
+ color: var(--af-tag-color);
147
+ cursor: pointer;
148
+ display: inline-flex;
149
+ font-family: var(--digi--global--typography--font-family--default);
150
+ font-size: 0.875rem;
151
+ font-weight: var(--digi--global--typography--font-weight--semibold);
152
+ gap: 10px;
153
+ height: auto;
154
+ max-width: 100%;
155
+ min-height: unset;
156
+ min-width: 0;
157
+ padding: 6px 8px;
158
+ text-align: left;
159
+ white-space: normal;
160
+ }
161
+
162
+ .af-tag__button:hover {
163
+ background: var(--af-tag-hover-background);
164
+ }
165
+
166
+ .af-tag__button:focus-visible {
167
+ background: var(--af-tag-hover-background);
168
+ border-color: var(--af-tag-color);
169
+ outline: 2px solid var(--digi--grayscale-1000);
170
+ outline-offset: 2px;
171
+ box-shadow: 0 0 0 5px var(--digi--grayscale-0);
172
+ }
173
+
174
+ .af-tag__button:active {
175
+ background: var(--af-tag-hover-background);
176
+ }
177
+
178
+ .af-tag__text {
179
+ display: inline-block;
180
+ max-width: 100%;
181
+ min-width: 0;
182
+ white-space: normal;
183
+ }
184
+
185
+ .af-tag__text--break {
186
+ overflow-wrap: anywhere;
187
+ word-break: break-word;
188
+ }
189
+
190
+ .af-tag__remove-icon {
191
+ flex: 0 0 auto;
192
+ height: 1em;
193
+ min-height: 0 !important;
194
+ width: 1em;
195
+ }
196
+
197
+
198
+ /* src/components/core-selector/core-selector.css */
199
+ /* Migrated from yrkesvaljaren.css to ensure identical design */
200
+
201
+ :host {
202
+ /* === DIMENSIONER (exponerade för konsumenter) === */
203
+ --selector-width: var(--cs-width, 100%);
204
+ --selector-min-width: var(--cs-min-width, 200px);
205
+ --selector-max-width: var(--cs-max-width, none);
206
+ --selector-height: var(--cs-height, auto);
207
+ --selector-min-height: var(--cs-min-height, auto);
208
+ --selector-max-height: var(--cs-max-height, none);
209
+
210
+ --selector-font-family: var(--global-font-family, 'Open Sans', sans-serif);
211
+ --selector-font-size: var(--cs-font-size, 1rem);
212
+ --selector-text-color: var(--cs-text-color, #212529);
213
+ --selector-placeholder-color: var(--cs-placeholder-color, #6c757d);
214
+ --selector-border-color: var(--cs-border-color, #d1d5db);
215
+ --selector-focus-border-color: var(--cs-focus-border-color, #86b7fe);
216
+ --selector-focus-shadow: var(--cs-focus-shadow, 0 0 0 0.25rem rgba(13, 110, 253, 0.25));
217
+ --selector-background-color: var(--cs-background-color, #fff);
218
+ --selector-icon-color: var(--cs-icon-color, #6c757d);
219
+ --selector-clear-button-color: var(--cs-clear-button-color, #6c757d);
220
+ --selector-clear-button-hover-color: var(--cs-clear-button-hover-color, #212529);
221
+
222
+ --selector-suggestion-background-color: var(--cs-suggestion-background-color, #fff);
223
+ --selector-suggestion-border-color: var(--cs-suggestion-border-color, #ced4da);
224
+ --selector-suggestion-hover-background: var(--cs-suggestion-hover-background, #e9ecef);
225
+ --selector-suggestion-active-background: var(--cs-suggestion-active-background, #dde4eb);
226
+ --selector-suggestion-text-color: var(--cs-suggestion-text-color, #212529);
227
+ --selector-suggestion-highlight-weight: var(--cs-suggestion-highlight-weight, bold);
228
+
229
+ --selector-error-color: var(--cs-error-color, #dc3545);
230
+ --selector-loading-color: var(--cs-loading-color, #6c757d);
231
+
232
+ /* SIZE DEFAULTS (Medium) */
233
+ --selector-container-min-height: 40px;
234
+ --selector-padding-y: 6px;
235
+ --selector-padding-x: 10px;
236
+ --selector-icon-size: 1.1em;
237
+ --selector-gap: 6px;
238
+
239
+ --cs-row-height: 32px; /* Reduced for better compactness */
240
+
241
+ display: flex;
242
+ flex-direction: column;
243
+ width: var(--selector-width);
244
+ min-width: var(--selector-min-width);
245
+ max-width: var(--selector-max-width);
246
+ height: var(--selector-height);
247
+ min-height: var(--selector-min-height);
248
+ max-height: var(--selector-max-height);
249
+ font-family: var(--selector-font-family);
250
+ font-size: var(--selector-font-size);
251
+ color: var(--selector-text-color);
252
+ position: relative;
253
+ }
254
+
255
+ /* --- SIZE MODIFIERS --- */
256
+
257
+ :host([cs-size="small"]) {
258
+ --selector-container-min-height: 32px;
259
+ --selector-padding-y: 2px;
260
+ --selector-icon-size: 1em;
261
+ --selector-gap: 4px;
262
+ --cs-row-height: 28px;
263
+ }
264
+
265
+ :host([cs-size="medium"]) {
266
+ --selector-container-min-height: 40px;
267
+ --selector-padding-y: 6px;
268
+ --cs-row-height: 32px;
269
+ }
270
+
271
+ :host([cs-size="large"]) {
272
+ --selector-container-min-height: 48px;
273
+ --selector-padding-y: 10px;
274
+ --selector-icon-size: 1.25em;
275
+ --selector-gap: 8px;
276
+ --cs-row-height: 40px;
277
+ }
278
+
279
+ * {
280
+ box-sizing: border-box;
281
+ }
282
+
283
+ .core-selector-wrapper {
284
+ display: flex;
285
+ flex-direction: column;
286
+ flex: 1;
287
+ min-height: inherit;
288
+ }
289
+
290
+ .af-form-label {
291
+ margin-bottom: 0.5rem;
292
+ }
293
+
294
+ .search-container {
295
+ display: flex;
296
+ align-items: center;
297
+ flex-wrap: wrap;
298
+ gap: 6px;
299
+ border: 1px solid #757575;
300
+ border-radius: 0px;
301
+ padding: var(--selector-padding-y) var(--selector-padding-x);
302
+ flex: 1;
303
+ min-height: var(--selector-container-min-height);
304
+ cursor: text;
305
+ background-color: var(--selector-background-color);
306
+ position: relative;
307
+ overflow: hidden;
308
+ }
309
+
310
+ .search-container:focus-within {
311
+ outline: 2px solid black;
312
+ outline-offset: 2px;
313
+ }
314
+
315
+ .search-container.is-inactive-selected .selector-input-field {
316
+ caret-color: transparent;
317
+ cursor: default;
318
+ }
319
+
320
+ /* Hide suggestions when an item is selected in single mode,
321
+ even if the component technically has focus */
322
+ .is-inactive-selected + .suggestions-box-container {
323
+ display: none !important;
324
+ }
325
+
326
+ .search-container.is-inactive-selected .search-icon-container {
327
+ display: none;
328
+ }
329
+
330
+ .search-container.is-inactive-selected .input-area {
331
+ padding-left: 0;
332
+ }
333
+
334
+ .input-controls-wrapper {
335
+ position: relative;
336
+ width: 100%;
337
+ display: flex;
338
+ align-items: center;
339
+ }
340
+
341
+ .search-icon-container {
342
+ position: absolute;
343
+ left: 0;
344
+ top: 50%;
345
+ width: 20px;
346
+ height: 20px;
347
+ transform: translateY(-50%);
348
+ z-index: 1;
349
+ pointer-events: none;
350
+ display: flex;
351
+ align-items: center;
352
+ justify-content: center;
353
+ transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;
354
+ opacity: 1;
355
+ max-height: 100%;
356
+ }
357
+
358
+ .search-icon-container.is-hidden {
359
+ opacity: 0;
360
+ transform: translateY(-50%) scale(0.7);
361
+ }
362
+
363
+ .selector-search-icon {
364
+ color: var(--digi--color--icon--primary, #333);
365
+ display: block;
366
+ flex: 0 0 auto;
367
+ width: 20px;
368
+ height: 20px;
369
+ }
370
+
371
+ .clear-button > span {
372
+ color: var(--digi--color--icon--primary, #333);
373
+ }
374
+
375
+ .input-area {
376
+ flex: 1;
377
+ min-width: 0;
378
+ padding-left: 27px;
379
+ display: flex;
380
+ align-items: center;
381
+ transition: padding-left 0.2s ease-in-out;
382
+ }
383
+
384
+ .input-area.has-value {
385
+ padding-left: 0;
386
+ }
387
+
388
+ .selector-input-field {
389
+ width: 100%;
390
+ font-family: inherit;
391
+ font-size: var(--selector-font-size);
392
+ color: inherit;
393
+ border: none;
394
+ outline: none;
395
+ background: transparent;
396
+ transition: padding-right 0.2s ease-in-out;
397
+ }
398
+
399
+ .search-container.has-input .selector-input-field {
400
+ padding-right: 0;
401
+ }
402
+
403
+ .selector-input-field::placeholder {
404
+ color: var(--selector-placeholder-color);
405
+ opacity: 1;
406
+ white-space: nowrap;
407
+ overflow: hidden;
408
+ text-overflow: ellipsis;
409
+ }
410
+
411
+ .clear-button {
412
+ position: static;
413
+ flex-shrink: 0;
414
+ opacity: 0;
415
+ pointer-events: none;
416
+ z-index: 2;
417
+ background: none;
418
+ border: none;
419
+ padding: 0;
420
+ margin: 0;
421
+ height: 20px;
422
+ width: 20px;
423
+ cursor: pointer;
424
+ color: var(--selector-clear-button-color);
425
+ line-height: 1;
426
+ display: flex;
427
+ align-items: center;
428
+ transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out;
429
+ }
430
+
431
+ .clear-button.is-visible {
432
+ opacity: 1;
433
+ pointer-events: auto;
434
+ }
435
+
436
+ .clear-button:hover,
437
+ .clear-button:focus {
438
+ color: var(--selector-clear-button-hover-color);
439
+ outline: none;
440
+ }
441
+
442
+ /* --- Multi-select --- */
443
+ .search-container.multi-search-container {
444
+ display: flex;
445
+ flex-direction: column;
446
+ gap: 0.5rem;
447
+ align-items: stretch;
448
+ padding-top: var(--selector-padding-y);
449
+ padding-bottom: var(--selector-padding-y);
450
+ width: 100%;
451
+ max-width: 100%;
452
+ }
453
+
454
+ .selected-tags-wrapper {
455
+ display: flex;
456
+ flex-wrap: wrap;
457
+ gap: 0.5rem;
458
+ width: 100%;
459
+ max-width: 100%;
460
+ box-sizing: border-box;
461
+ }
462
+
463
+ .selected-tags-wrapper .af-tag {
464
+ display: block;
465
+ max-width: 100%;
466
+ min-width: 0;
467
+ }
468
+
469
+ .selected-tags-wrapper .af-tag__button {
470
+ white-space: normal !important;
471
+ height: auto !important;
472
+ text-align: left !important;
473
+ word-break: break-word !important;
474
+ overflow-wrap: anywhere !important;
475
+ max-width: 100% !important;
476
+ }
477
+
478
+ /* --- Single select displayed value --- */
479
+ .search-container.single-value-display {
480
+ display: flex;
481
+ align-items: center;
482
+ flex-wrap: nowrap;
483
+ gap: 0.5rem;
484
+ min-height: var(--selector-container-min-height);
485
+ padding: var(--selector-padding-y) var(--selector-padding-x);
486
+ }
487
+
488
+ .selected-text-in-box {
489
+ flex-grow: 1;
490
+ white-space: normal;
491
+ word-break: break-word;
492
+ min-width: 0;
493
+ line-height: inherit;
494
+ }
495
+
496
+ .search-container.single-value-display .clear-button {
497
+ position: static;
498
+ transform: none;
499
+ opacity: 1;
500
+ pointer-events: auto;
501
+ flex-shrink: 0;
502
+ }
503
+
504
+ /* --- Suggestions --- */
505
+ .combobox-container {
506
+ position: relative;
507
+ margin-top: 0;
508
+ display: flex;
509
+ flex-direction: column;
510
+ flex: 1;
511
+ }
512
+
513
+ .suggestions-box-container {
514
+ position: absolute;
515
+ top: 100%;
516
+ left: 0;
517
+ right: 0;
518
+ z-index: 100;
519
+ }
520
+
521
+ .suggestions-box-container.is-hidden-list {
522
+ z-index: 101;
523
+ pointer-events: none;
524
+ }
525
+
526
+ .suggestions-box {
527
+ position: relative;
528
+ /* Container for absolute/sticky children */
529
+ background-color: white;
530
+ border: 1px solid var(--selector-suggestion-border-color);
531
+ border-radius: 4px;
532
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
533
+ overflow-y: auto;
534
+ margin: 2px 0px;
535
+
536
+ /* Strict height limit based on 10 items + header buffer */
537
+ max-height: calc(var(--max-visible-rows, 10) * var(--cs-row-height) + 40px);
538
+ }
539
+
540
+ .suggestion-item {
541
+ display: flex;
542
+ align-items: center;
543
+ min-height: var(--cs-row-height);
544
+ height: auto;
545
+ padding: 6px 1rem;
546
+ font-size: inherit;
547
+ line-height: 1.25;
548
+ cursor: pointer;
549
+ color: var(--selector-suggestion-text-color);
550
+ list-style: none;
551
+ transition: background-color 0.15s ease, color 0.15s ease;
552
+ white-space: normal !important;
553
+ word-break: break-word !important;
554
+ overflow-wrap: anywhere !important;
555
+ position: relative;
556
+ z-index: 1;
557
+ box-sizing: border-box;
558
+ }
559
+
560
+ .suggestion-item > span {
561
+ transition: font-weight 0.2s ease, transform 0.2s ease;
562
+ display: inline;
563
+ vertical-align: middle;
564
+ white-space: normal;
565
+ word-break: break-word;
566
+ overflow-wrap: anywhere;
567
+ }
568
+
569
+ .suggestion-item:hover,
570
+ .suggestion-item.active-suggestion {
571
+ background-color: var(--selector-suggestion-active-background);
572
+ }
573
+
574
+ .suggestion-item.active-suggestion.is-keyboard-focus {
575
+ outline: 1px solid black;
576
+ outline-offset: -1px;
577
+ }
578
+
579
+ .suggestion-item.is-selected {
580
+ color: var(--selector-suggestion-text-color) !important;
581
+ cursor: default;
582
+ background-color: #f2f2f2 !important;
583
+ }
584
+
585
+ .suggestion-item.is-selected span {
586
+ font-weight: 600;
587
+ }
588
+
589
+ .selection-indicator-icon {
590
+ width: 0;
591
+ height: 20px;
592
+ opacity: 0;
593
+ transform: scale(0.5);
594
+ margin-right: 0;
595
+ transition: width 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
596
+ opacity 0.2s ease,
597
+ transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
598
+ margin-right 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
599
+ color: var(--digi--grayscale-800, #333);
600
+ flex-shrink: 0;
601
+ display: flex;
602
+ align-items: center;
603
+ justify-content: center;
604
+ overflow: hidden;
605
+ }
606
+
607
+ .suggestion-item.is-selected .selection-indicator-icon {
608
+ width: 24px;
609
+ opacity: 1;
610
+ transform: scale(1);
611
+ margin-right: 8px;
612
+ }
613
+
614
+ .suggestion-item.is-selected.active-suggestion {
615
+ background-color: #f2f2f2 !important;
616
+ }
617
+
618
+ .suggestion-item .suggestion-text strong,
619
+ .suggestion-item .match-highlight {
620
+ font-weight: var(--selector-suggestion-highlight-weight);
621
+ color: inherit;
622
+ display: inline;
623
+ }
624
+
625
+ .metadata-dimmed,
626
+ .occupation-variant-label {
627
+ font-size: 1rem;
628
+ color: var(--digi--grayscale-700, #757575);
629
+ margin-left: 0.25rem;
630
+ display: inline;
631
+ vertical-align: baseline;
632
+ line-height: inherit;
633
+ white-space: normal;
634
+ }
635
+
636
+ .suggestion-item.no-results {
637
+ color: var(--selector-placeholder-color);
638
+ cursor: default;
639
+ padding: 0.5rem 1rem;
640
+ font-style: italic;
641
+ text-align: center;
642
+ height: auto;
643
+ }
644
+
645
+ /* --- Validation --- */
646
+ .search-container.has-validation-error {
647
+ border-color: var(--selector-error-color);
648
+ border-width: 2px;
649
+ background-color: #fef3f2;
650
+ }
651
+
652
+ .search-container.has-positive-validation {
653
+ border-color: #155724;
654
+ background-color: #d4edda;
655
+ }
656
+
657
+ .status-message {
658
+ margin-top: 0.5rem;
659
+ }
660
+
661
+ .selector-validation-message {
662
+ margin-top: 0.5rem;
663
+ display: block;
664
+ }
665
+
666
+ .visually-hidden {
667
+ border: 0;
668
+ clip: rect(0 0 0 0);
669
+ height: 1px;
670
+ margin: -1px;
671
+ overflow: hidden;
672
+ padding: 0;
673
+ position: absolute;
674
+ width: 1px;
675
+ white-space: nowrap;
676
+ }
677
+
678
+ /* Browser search cancel removal */
679
+ input::-webkit-search-decoration,
680
+ input::-webkit-search-cancel-button,
681
+ input::-webkit-search-results-button,
682
+ input::-webkit-search-results-decoration {
683
+ -webkit-appearance: none;
684
+ display: none;
685
+ }
686
+
687
+ input::-ms-clear {
688
+ display: none;
689
+ width: 0;
690
+ height: 0;
691
+ }
692
+
693
+ /* --- List Header & Toast Container --- */
694
+ .list-header-container {
695
+ position: sticky;
696
+ top: 0;
697
+ z-index: 10;
698
+ background-color: #f8f9fa;
699
+ border-bottom: 1px solid var(--selector-suggestion-border-color);
700
+ min-height: auto;
701
+ display: flex;
702
+ flex-direction: column;
703
+ }
704
+
705
+ .list-header-container ::slotted([slot="suggestions-overlay"]) {
706
+ position: absolute !important;
707
+ top: 0;
708
+ left: 0;
709
+ width: 100%;
710
+ height: 100%;
711
+ z-index: 20;
712
+ }
713
+
714
+ .suggestions-box > ::slotted([slot="suggestions-overlay"]) {
715
+ position: sticky !important;
716
+ top: 0;
717
+ left: 0;
718
+ width: 100%;
719
+ z-index: 20;
720
+ }
721
+
722
+ .list-header {
723
+ display: flex;
724
+ align-items: center;
725
+ min-height: var(--cs-row-height);
726
+ padding: 6px 1rem;
727
+ font-size: 0.875rem;
728
+ line-height: 1.25;
729
+ color: var(--digi--grayscale-700, #757575);
730
+ border-bottom: 1px solid var(--selector-suggestion-border-color, #ced4da);
731
+ }
732
+
733
+ .list-header span {
734
+ font-size: 0.875rem;
735
+ font-weight: normal;
736
+ }
737
+
738
+ .history-clear-link {
739
+ color: var(--digi--grayscale-700, #757575);
740
+ text-decoration: underline;
741
+ cursor: pointer;
742
+ margin-left: 0.25rem;
743
+ background: transparent;
744
+ border: 0;
745
+ padding: 0;
746
+ font: inherit;
747
+ }
748
+
749
+ .history-clear-link:hover {
750
+ color: var(--digi--grayscale-900, #222);
751
+ }
752
+
753
+ /* Remove old animations */
754
+ @keyframes cs-shrink-fade { from { opacity: 1; } to { opacity: 1; } }
755
+ @keyframes cs-collapse { from { height: auto; } to { height: auto; } }
756
+
757
+ /* --- Toast Notification (Sticky Overlay) --- */
758
+ .cs-toast {
759
+ position: absolute;
760
+ top: 0;
761
+ left: 0;
762
+ width: 100%;
763
+ height: 100%;
764
+ z-index: 20;
765
+ display: flex;
766
+ align-items: center;
767
+ justify-content: center;
768
+ gap: 8px;
769
+ background-color: #f8fdf0;
770
+ animation: cs-toastSlideDown 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
771
+ pointer-events: none;
772
+ box-sizing: border-box;
773
+ }
774
+
775
+ .cs-toast.is-closing {
776
+ animation: cs-toastSlideUp 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
777
+ }
778
+
779
+ .cs-toast-text {
780
+ margin: 0;
781
+ font-size: 0.875rem;
782
+ font-weight: 500;
783
+ color: #2e7d32;
784
+ }
785
+
786
+ @keyframes cs-toastSlideDown {
787
+ from { transform: translateY(-100%); }
788
+ to { transform: translateY(0); }
789
+ }
790
+
791
+ @keyframes cs-toastSlideUp {
792
+ from { transform: translateY(0); }
793
+ to { transform: translateY(-100%); }
794
+ }
795
+
796
+ .selector-input-field.visually-hidden-selected {
797
+ position: absolute;
798
+ opacity: 0;
799
+ pointer-events: none;
800
+ width: 1px;
801
+ height: 1px;
802
+ overflow: hidden;
803
+ }