@tekkare/auriga 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 (45) hide show
  1. package/README.md +89 -0
  2. package/dist/module.cjs +5 -0
  3. package/dist/module.d.mts +7 -0
  4. package/dist/module.d.ts +7 -0
  5. package/dist/module.json +8 -0
  6. package/dist/module.mjs +23 -0
  7. package/dist/runtime/components/argAdvancedSearchBar.vue +866 -0
  8. package/dist/runtime/components/argAdvancedSearchBar.vue.d.ts +4 -0
  9. package/dist/runtime/components/argBtn.vue +108 -0
  10. package/dist/runtime/components/argBtn.vue.d.ts +4 -0
  11. package/dist/runtime/components/argComplexSelect.vue +558 -0
  12. package/dist/runtime/components/argComplexSelect.vue.d.ts +4 -0
  13. package/dist/runtime/components/argDataLoader.vue +337 -0
  14. package/dist/runtime/components/argDataLoader.vue.d.ts +4 -0
  15. package/dist/runtime/components/argDropdownSelect.vue +321 -0
  16. package/dist/runtime/components/argDropdownSelect.vue.d.ts +4 -0
  17. package/dist/runtime/components/argFileBtn.vue +136 -0
  18. package/dist/runtime/components/argFileBtn.vue.d.ts +4 -0
  19. package/dist/runtime/components/argHeaderTabs.vue +216 -0
  20. package/dist/runtime/components/argHeaderTabs.vue.d.ts +4 -0
  21. package/dist/runtime/components/argIcon.vue +3135 -0
  22. package/dist/runtime/components/argIcon.vue.d.ts +4 -0
  23. package/dist/runtime/components/argMultipleChoice.vue +149 -0
  24. package/dist/runtime/components/argMultipleChoice.vue.d.ts +4 -0
  25. package/dist/runtime/components/argNoData.vue +83 -0
  26. package/dist/runtime/components/argNoData.vue.d.ts +4 -0
  27. package/dist/runtime/components/argSearchInput.vue +123 -0
  28. package/dist/runtime/components/argSearchInput.vue.d.ts +4 -0
  29. package/dist/runtime/components/argSimpleLabel.vue +214 -0
  30. package/dist/runtime/components/argSimpleLabel.vue.d.ts +4 -0
  31. package/dist/runtime/components/argStyle.vue +975 -0
  32. package/dist/runtime/components/argStyle.vue.d.ts +4 -0
  33. package/dist/runtime/components/argTable.vue +863 -0
  34. package/dist/runtime/components/argTable.vue.d.ts +4 -0
  35. package/dist/runtime/components/argTags.vue +26 -0
  36. package/dist/runtime/components/argTags.vue.d.ts +4 -0
  37. package/dist/runtime/components/argTekkareLoader.vue +72 -0
  38. package/dist/runtime/components/argTekkareLoader.vue.d.ts +4 -0
  39. package/dist/runtime/components/argTooltip.vue +141 -0
  40. package/dist/runtime/components/argTooltip.vue.d.ts +4 -0
  41. package/dist/runtime/plugin.d.ts +2 -0
  42. package/dist/runtime/plugin.mjs +4 -0
  43. package/dist/types.d.mts +15 -0
  44. package/dist/types.d.ts +15 -0
  45. package/package.json +45 -0
@@ -0,0 +1,866 @@
1
+ <template>
2
+ <div>
3
+ <div
4
+ class="filters_input_search"
5
+ :class="{ filters_shortcuts_open: typing }"
6
+ @keydown.backspace="handleDelete()"
7
+ @click="changeDisplay()"
8
+ >
9
+ <arg-icon
10
+ name="MagnifyingGlass"
11
+ color="var(--wild-blue-yonder)"
12
+ size="20"
13
+ class="search_icon"
14
+ />
15
+ <input
16
+ id="search_input"
17
+ v-model="value"
18
+ class="filters_input_style"
19
+ :placeholder="placeHolderValue"
20
+ @keydown.enter="addTag"
21
+ @keydown.left="selectTag(closeIndex - 1, 0)"
22
+ @keydown.right="selectTag(closeIndex + 1, 1)"
23
+ @keydown.up="shortcutSelect('asc')"
24
+ @keydown.down="shortcutSelect('desc')"
25
+ />
26
+ <div class="research_tags" id="tags">
27
+ <div
28
+ v-for="(search, searchIndex) in searchedWords"
29
+ :key="searchIndex"
30
+ :id="`tag${searchIndex}`"
31
+ :class="{
32
+ selected_tag: selectedTag === searchIndex,
33
+ duplicate_tag: duplicate.includes(search.value),
34
+ }"
35
+ class="input_shortcut_tag"
36
+ @mouseover="hoverTag = searchIndex"
37
+ @mouseleave="hoverTag = null"
38
+ >
39
+ <span v-if="search.type.length > 0" class="tag_search_type"
40
+ >{{ search.type }}
41
+ </span>
42
+ <span class="shortcut_keyword">{{ search.value }}</span>
43
+ <div
44
+ class="remove_search"
45
+ @click="removeTag(searchIndex)"
46
+ @click.stop
47
+ >
48
+ <arg-icon name="X" size="14" />
49
+ </div>
50
+ </div>
51
+ </div>
52
+ <div
53
+ class="remove_search_section"
54
+ @click="emptySearch()"
55
+ :class="{ 'select-remove': removeSelected }"
56
+ >
57
+ <arg-icon
58
+ name="XCircleFill"
59
+ size="20"
60
+ color="var(--wild-blue-yonder)"
61
+ />
62
+ </div>
63
+ </div>
64
+ <div v-if="typing" class="sub_input_section">
65
+ <div class="research_section" id="shortcuts" @click.stop>
66
+ <div class="research_title">
67
+ <p>Research options</p>
68
+ <arg-icon
69
+ name="QuestionFill"
70
+ color="var(--independence)"
71
+ size="16"
72
+ class="align_icon show_shortcuts"
73
+ @click.native="showInfo = !showInfo"
74
+ />
75
+ </div>
76
+ <div class="research_content">
77
+ <div
78
+ :class="{
79
+ research_item_selected: selectedShortcut === shortcut.symbol,
80
+ }"
81
+ class="research_item"
82
+ v-for="(shortcut, index) in shortcuts"
83
+ :key="index"
84
+ @click="selectSearch(shortcut)"
85
+ @mouseover="hoverShortcut = shortcut.symbol"
86
+ @mouseleave="hoverShortcut = ''"
87
+ >
88
+ <p class="research_keyword">{{ shortcut.keyword }}:</p>
89
+ <p class="research_value">{{ shortcut.value }}</p>
90
+ <arg-icon
91
+ name="Plus"
92
+ size="16"
93
+ :color="shortcutColor(shortcut.symbol)"
94
+ class="align_icon"
95
+ />
96
+ </div>
97
+ </div>
98
+ <div
99
+ v-if="hoverShortcut.length > 0 || selectedShortcut.length > 0"
100
+ class="research_footer"
101
+ >
102
+ <div class="research_separator"></div>
103
+ <div class="shortcuts_choice">
104
+ <p>Shortcut:</p>
105
+ <div class="shortcut_tag">
106
+ <p v-if="hoverShortcut.length > 0" class="shortcut_symbol">
107
+ {{ hoverShortcut }}
108
+ </p>
109
+ <p
110
+ v-else-if="selectedShortcut.length > 0"
111
+ class="shortcut_symbol"
112
+ >
113
+ {{ selectedShortcut }}
114
+ </p>
115
+ <p class="shortcut_keyword">keyword</p>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ <div v-if="showInfo" class="searchbar_info" id="info" @click.stop>
121
+ <div class="searchbar_shortcuts">
122
+ <p class="searchbar_info_title">Keyboard shortcuts</p>
123
+ <ul class="searchbar_info_content">
124
+ <li>
125
+ Use <b>left and right</b> arrows to navigate in the searchbar
126
+ </li>
127
+ <li>
128
+ Use <b>up and down</b> arrows to navigate in the research options
129
+ </li>
130
+ <li>
131
+ Hit the <b>enter</b> key to save your search input, delete a
132
+ selected search tag or delete all searches when the remove icon is
133
+ selected
134
+ </li>
135
+ <li>
136
+ If your search input is empty, you can delete your searches one by
137
+ one by hitting the <b>delete</b> key
138
+ </li>
139
+ </ul>
140
+ <p class="searchbar_info_title">Other info</p>
141
+ <ul class="searchbar_info_content">
142
+ <li>
143
+ You can search multiple words by seperating them with a comma
144
+ </li>
145
+ </ul>
146
+ </div>
147
+ <div class="close_info" @click="showInfo = false">
148
+ <arg-icon name="X" size="14" color="var(--pure-white)" />
149
+ </div>
150
+ </div>
151
+ </div>
152
+ </div>
153
+ </template>
154
+ <script>
155
+ export default {
156
+ name: "argAdvancedSearchBar"
157
+ };
158
+ </script>
159
+ <script setup lang="ts">
160
+ import { onMounted, ref, computed, defineProps, defineEmits, watch } from "vue";
161
+ const props = defineProps({
162
+ placeHolderValue: {
163
+ type: String,
164
+ default: "Type your search",
165
+ },
166
+ customShortcuts: {
167
+ type: Array<any>,
168
+ default: () => [],
169
+ },
170
+ });
171
+ var typing = ref(false);
172
+ var shortcuts = ref([
173
+ { keyword: "and", value: "add the word", symbol: "+" },
174
+ { keyword: "or", value: "matches at least one word", symbol: "/" },
175
+ { keyword: "not", value: "exclude the word", symbol: "!" },
176
+ ]);
177
+ var hoverShortcut = ref("");
178
+ var selectedShortcut = ref("");
179
+ var searchedWords = ref([]);
180
+ var closeIndex = ref();
181
+ var value = ref("");
182
+ var selectedTag = ref();
183
+ var duplicate = ref("");
184
+ var searchBar = ref();
185
+ var tagsSection = ref();
186
+ var shortcutIndex = ref(-1);
187
+ var removeSelected = ref(false);
188
+ var hoverTag = ref();
189
+ var showInfo = ref();
190
+ const regexSearch =
191
+ /^[\s\.\+\/\!]|(?:[\+\/\!\s])[\s{1,}\.{1,}\+{1,}\/{1,}\!{1,}]|[\s{1,}\.1,}\+{1,}\/{1,}\!{1,}]$|\s+[\+\/]|\s+$/g;
192
+ // regex to check whitespaces / symbols in input value to avoid duplicate search
193
+ // each alternative is seperated by |
194
+ // 1st alternative: the word begins with a space or a symbol
195
+ // 2nd alternative: the word begins with a combination of one or more spaces and symbols
196
+ // 3rd alternative: the word ends with one or more spaces or symbols
197
+ // 4th alternative: the word contains one or more spaces followed by symbols
198
+ // 5th alternative: the word ends with one or more spaces
199
+
200
+ const emit = defineEmits(["update:Value", "onClose"]);
201
+
202
+ let iconColor = computed(() => {
203
+ if (typing.value === true) {
204
+ return "var(--primary)";
205
+ } else return "var(--wild-blue-yonder)";
206
+ });
207
+
208
+ let hasShortcut = computed(() => {
209
+ if (selectedShortcut.value.length > 0 || hoverShortcut.value.length > 0) {
210
+ return true;
211
+ } else return false;
212
+ });
213
+
214
+ let infoHeight = computed(() => {
215
+ if ((showInfo.value = true)) {
216
+ const infoSection = document.getElementById("info");
217
+ const shortcutSection = document.getElementById("shortcuts");
218
+ if (infoSection !== null && shortcutSection !== null) {
219
+ if (infoSection.offsetHeight > shortcutSection.offsetHeight) {
220
+ return true;
221
+ } else return false;
222
+ } else return false;
223
+ }
224
+ });
225
+
226
+ watch(value, (new_value: string) => {
227
+ if (new_value === "") {
228
+ hoverShortcut.value = "";
229
+ } else {
230
+ for (let i = 0; i < shortcuts.value.length; i++) {
231
+ if (new_value.startsWith(shortcuts.value[i].symbol)) {
232
+ selectedShortcut.value = shortcuts.value[i].symbol;
233
+ }
234
+ }
235
+ }
236
+ });
237
+
238
+ watch(selectedShortcut, (new_shortcut: string) => {
239
+ value.value = `${new_shortcut}`;
240
+ });
241
+
242
+ watch(closeIndex, (new_index: number) => {
243
+ if (new_index > searchedWords.value.length) {
244
+ removeSelected.value = true;
245
+ } else removeSelected.value = false;
246
+ });
247
+
248
+ watch(searchedWords, (newSearched: []) => {
249
+ setTimeout(() => {
250
+ tagsSection.value.scrollLeft += tagsSection.value.scrollWidth;
251
+ }, 100);
252
+ });
253
+
254
+ onMounted(() => {
255
+ searchBar.value = document.getElementById("search_input");
256
+ tagsSection.value = document.getElementById("tags");
257
+ if (props.customShortcuts.length > 0) {
258
+ for (let i = 0; i < props.customShortcuts.length; i++) {
259
+ shortcuts.value.push(props.customShortcuts[i]);
260
+ }
261
+ }
262
+ });
263
+
264
+ function shortcutColor(shortcut: string) {
265
+ if (shortcut === selectedShortcut.value || shortcut === hoverShortcut.value) {
266
+ return "var(--independence)";
267
+ } else return "var(--pure-white)";
268
+ }
269
+
270
+ function shortcutSelect(dir: string) {
271
+ typing.value = true;
272
+ let index;
273
+ if (selectedShortcut.value.length > 0) {
274
+ index = shortcuts.value.findIndex(
275
+ (x) => x.symbol === selectedShortcut.value
276
+ );
277
+ } else {
278
+ index = shortcutIndex.value;
279
+ }
280
+ if (dir === "desc") {
281
+ if (index < shortcuts.value.length - 1) {
282
+ selectedShortcut.value = shortcuts.value[index + 1].symbol;
283
+ shortcutIndex.value += 1;
284
+ } else {
285
+ selectedShortcut.value = shortcuts.value[0].symbol;
286
+ shortcutIndex.value = 0;
287
+ }
288
+ } else {
289
+ if (index > 0) {
290
+ selectedShortcut.value = shortcuts.value[index - 1].symbol;
291
+ shortcutIndex.value -= 1;
292
+ } else {
293
+ selectedShortcut.value =
294
+ shortcuts.value[shortcuts.value.length - 1].symbol;
295
+ shortcutIndex.value = shortcuts.value.length - 1;
296
+ }
297
+ }
298
+ searchBar.value.focus();
299
+ }
300
+
301
+ function addToSearch(search: string, textValue: string) {
302
+ searchedWords.value.push({ type: search, value: textValue });
303
+ closeIndex.value = searchedWords.value.length;
304
+ selectedTag.value = null;
305
+ emit("update:Value", searchedWords.value);
306
+ searchBar.value.focus();
307
+ resetSearch();
308
+ }
309
+
310
+ function selectTag(index: number, direction: number) {
311
+ let nextTag;
312
+ if (direction === 0) {
313
+ nextTag = document.getElementById(`tag${index - 1}`);
314
+ } else {
315
+ nextTag = document.getElementById(`tag${index + 1}`);
316
+ }
317
+ if (direction === 1 && index === 0 && tagsSection.value.scrollLeft > 0) {
318
+ tagsSection.value.scrollLeft = 0;
319
+ }
320
+ if (direction === 0 && index === searchedWords.value.length - 1) {
321
+ tagsSection.value.scrollLeft += tagsSection.value.scrollWidth;
322
+ }
323
+
324
+ if (
325
+ searchedWords.value.length > 0 &&
326
+ index < searchedWords.value.length &&
327
+ index >= 0
328
+ ) {
329
+ selectedTag.value = index;
330
+ closeIndex.value = index;
331
+ if (direction > 0 && index > 2 && nextTag !== null) {
332
+ tagsSection.value.scrollLeft += nextTag.offsetWidth;
333
+ } else if (
334
+ direction === 0 &&
335
+ index < searchedWords.value.length - 2 &&
336
+ nextTag !== null
337
+ ) {
338
+ tagsSection.value.scrollLeft -= nextTag.offsetWidth;
339
+ }
340
+ }
341
+ if (index < 0) {
342
+ selectedTag.value = null;
343
+ closeIndex.value = searchedWords.value.length + 1;
344
+ }
345
+ if (index >= searchedWords.value.length) {
346
+ selectedTag.value = null;
347
+ closeIndex.value = index;
348
+ }
349
+ if (index > searchedWords.value.length + 1) {
350
+ selectedTag.value = null;
351
+ closeIndex.value = -1;
352
+ }
353
+ }
354
+
355
+ function resetSearch() {
356
+ value.value = "";
357
+ }
358
+
359
+ function getKeyword(keyword: string) {
360
+ for (let i = 0; i < shortcuts.value.length; i++) {
361
+ if (keyword === shortcuts.value[i].symbol) {
362
+ return shortcuts.value[i].keyword;
363
+ }
364
+ }
365
+ }
366
+
367
+ function addTag() {
368
+ if (removeSelected.value === true) {
369
+ emptySearch();
370
+ } else if (
371
+ selectedTag.value !== null &&
372
+ selectedTag.value < searchedWords.value.length &&
373
+ selectedTag.value >= 0
374
+ ) {
375
+ removeTag(selectedTag.value);
376
+ } else {
377
+ let search: any;
378
+ let searchValue = "";
379
+ let arrayValues: any[];
380
+ arrayValues = [];
381
+ if (value.value.length > 0) {
382
+ searchValue = value.value.replace(regexSearch, "");
383
+ for (let i = 0; i < shortcuts.value.length; i++) {
384
+ if (value.value.startsWith(shortcuts.value[i].symbol)) {
385
+ search = shortcuts.value[i].keyword;
386
+ searchValue = value.value.replace(shortcuts.value[i].symbol, "");
387
+ }
388
+ }
389
+ if (selectedShortcut.value.length > 0 && search === undefined) {
390
+ search = getKeyword(selectedShortcut.value);
391
+ } else if (hoverShortcut.value.length > 0 && search === undefined) {
392
+ search = getKeyword(hoverShortcut.value);
393
+ } else if (search === undefined) {
394
+ search = "and";
395
+ }
396
+ if (value.value.includes(",")) {
397
+ arrayValues = value.value.split(",");
398
+ }
399
+ }
400
+ if (searchValue.length > 0 && arrayValues.length === 0) {
401
+ if (
402
+ searchedWords.value.filter((f: any) => f.value === searchValue)
403
+ .length === 0
404
+ ) {
405
+ addToSearch(search, searchValue);
406
+ selectedShortcut.value = "";
407
+ } else {
408
+ handleDuplicate(searchValue);
409
+ }
410
+ } else if (arrayValues.length > 0) {
411
+ for (let i = 0; i < arrayValues.length; i++) {
412
+ let arraySearchValue = arrayValues[i].replace(regexSearch, "");
413
+ if (arraySearchValue.length > 0) {
414
+ if (
415
+ searchedWords.value.filter((f: any) => f.value === arraySearchValue)
416
+ .length === 0
417
+ ) {
418
+ addToSearch(search, arraySearchValue);
419
+ selectedShortcut.value = "";
420
+ } else {
421
+ handleDuplicate(arraySearchValue);
422
+ }
423
+ }
424
+ }
425
+ }
426
+ }
427
+ }
428
+
429
+ function handleDuplicate(tag: any) {
430
+ duplicate.value = `${duplicate.value} ${tag}`;
431
+ setTimeout(() => (duplicate.value = ""), 1000);
432
+ }
433
+
434
+ function emptySearch() {
435
+ searchedWords.value = [];
436
+ removeSelected.value = false;
437
+ closeIndex.value = null;
438
+ searchBar.value.focus();
439
+ }
440
+
441
+ function selectSearch(item: any) {
442
+ let searchValue = value.value.replace(regexSearch, "");
443
+ selectedShortcut.value = item.symbol;
444
+ if (searchValue.length > 0) {
445
+ if (
446
+ searchedWords.value.filter((f: any) => f.value === searchValue).length ===
447
+ 0
448
+ ) {
449
+ addToSearch(getKeyword(item.symbol), searchValue);
450
+ } else {
451
+ handleDuplicate(searchValue);
452
+ }
453
+ } else {
454
+ value.value = `${item.symbol}`;
455
+ }
456
+ searchBar.value.focus();
457
+ }
458
+
459
+ function removeTag(tagIndex: any) {
460
+ searchedWords.value.splice(tagIndex, 1);
461
+ emit("update:Value", searchedWords.value);
462
+ if (tagIndex > 0 && value.value.length === 0) {
463
+ selectedTag.value -= 1;
464
+ } else {
465
+ selectedTag.value = searchedWords.value.length;
466
+ }
467
+
468
+ closeIndex.value = selectedTag.value;
469
+ searchBar.value.focus();
470
+ }
471
+
472
+ function handleDelete() {
473
+ if (value.value.length === 0) {
474
+ removeTag(searchedWords.value.length - 1);
475
+ }
476
+ }
477
+
478
+ function changeDisplay() {
479
+ if (typing.value === true) {
480
+ close();
481
+ } else {
482
+ typing.value = true;
483
+ setTimeout(() => {
484
+ document.addEventListener("click", close);
485
+ }, 100);
486
+ }
487
+ searchBar.value.focus();
488
+ }
489
+
490
+ function close() {
491
+ if (typing.value === true) {
492
+ emit("onClose");
493
+ typing.value = false;
494
+ document.removeEventListener("click", close);
495
+ }
496
+ }
497
+ </script>
498
+ <style scoped>
499
+ .research_tags {
500
+ display: flex;
501
+ flex-direction: row;
502
+ align-items: center;
503
+ overflow-x: scroll;
504
+ gap: 8px;
505
+ }
506
+ .research_tags::-webkit-scrollbar {
507
+ display: none;
508
+ }
509
+
510
+ .filters_input_search {
511
+ display: flex;
512
+ flex-direction: row;
513
+ align-items: center;
514
+ padding: 0px 0px 0px 12px;
515
+ gap: 12px;
516
+ background: var(--pure-white);
517
+ border: 1.5px solid var(--dividers);
518
+ border-radius: 8px;
519
+ width: calc(100% - 12px);
520
+ height: 40px;
521
+ }
522
+
523
+ .filters_shortcuts_open {
524
+ border-radius: 8px 8px 8px 0px;
525
+ }
526
+
527
+ .filters_input_style {
528
+ max-width: 20%;
529
+ margin-right: 8px;
530
+ }
531
+
532
+ .filters_input_style,
533
+ .filters_input_style:focus-visible {
534
+ border: none;
535
+ outline: none;
536
+ }
537
+
538
+ .filters_input_style::placeholder {
539
+ color: var(--wild-blue-yonder);
540
+ }
541
+
542
+ .research_section {
543
+ box-sizing: border-box;
544
+ display: flex;
545
+ flex-direction: column;
546
+ align-items: flex-start;
547
+ padding: 0px;
548
+ width: 340px;
549
+ background: var(--pure-white);
550
+ border: 1.5px solid var(--dividers);
551
+ box-shadow: 0px 16px 40px rgba(62, 63, 94, 0.12);
552
+ border-radius: 0px 0px 8px 8px;
553
+ flex-shrink: 0;
554
+ }
555
+
556
+ .research_title {
557
+ display: flex;
558
+ flex-direction: row;
559
+ align-items: center;
560
+ padding: 16px;
561
+ gap: 8px;
562
+ flex: none;
563
+ order: 0;
564
+ align-self: stretch;
565
+ flex-grow: 0;
566
+ font-weight: 700;
567
+ font-size: 14px;
568
+ line-height: 16px;
569
+ }
570
+
571
+ .align_icon {
572
+ margin-left: auto;
573
+ }
574
+
575
+ .research_content {
576
+ width: 90%;
577
+ display: flex;
578
+ flex-direction: column;
579
+ align-items: flex-start;
580
+ padding: 0px 8px;
581
+ flex: none;
582
+ order: 1;
583
+ align-self: stretch;
584
+ flex-grow: 0;
585
+ }
586
+
587
+ .research_item {
588
+ width: 100%;
589
+ display: flex;
590
+ flex-direction: row;
591
+ align-items: center;
592
+ padding: 8px;
593
+ gap: 4px;
594
+ border-radius: 2px;
595
+ cursor: pointer;
596
+ }
597
+
598
+ .research_item:hover {
599
+ background: var(--background) !important;
600
+ }
601
+
602
+ .research_item_selected {
603
+ background: var(--background);
604
+ }
605
+
606
+ .research_keyword {
607
+ font-weight: 500;
608
+ font-size: 16px;
609
+ line-height: 19px;
610
+ }
611
+
612
+ .research_value {
613
+ font-weight: 400;
614
+ font-size: 16px;
615
+ line-height: 19px;
616
+ color: var(--cool-grey);
617
+ }
618
+
619
+ .research_item > svg {
620
+ margin-left: auto;
621
+ }
622
+
623
+ .research_footer {
624
+ display: flex;
625
+ flex-direction: column;
626
+ align-items: flex-start;
627
+ padding: 16px 0px 0px;
628
+ flex: none;
629
+ order: 2;
630
+ align-self: stretch;
631
+ flex-grow: 0;
632
+ }
633
+
634
+ .research_separator {
635
+ background: var(--dividers);
636
+ width: 100%;
637
+ height: 1px;
638
+ }
639
+
640
+ .shortcuts_choice {
641
+ display: flex;
642
+ flex-direction: row;
643
+ align-items: center;
644
+ padding: 12px 16px;
645
+ gap: 4px;
646
+ flex: none;
647
+ order: 1;
648
+ align-self: stretch;
649
+ flex-grow: 0;
650
+ font-weight: 400;
651
+ font-size: 14px;
652
+ line-height: 16px;
653
+ }
654
+
655
+ .shortcut_tag {
656
+ display: flex;
657
+ flex-direction: row;
658
+ justify-content: center;
659
+ align-items: center;
660
+ padding: 4px;
661
+ gap: 2px;
662
+ background: var(--background);
663
+ border-radius: 4px;
664
+ flex: none;
665
+ order: 1;
666
+ flex-grow: 0;
667
+ }
668
+
669
+ .shortcut_keyword {
670
+ font-weight: 400;
671
+ font-size: 14px;
672
+ line-height: 16px;
673
+ white-space: nowrap;
674
+ }
675
+
676
+ .shortcut_symbol {
677
+ font-weight: 500;
678
+ font-size: 14px;
679
+ line-height: 16px;
680
+ }
681
+
682
+ .tag_search_type {
683
+ font-size: 14px;
684
+ line-height: 16px;
685
+ color: var(--cool-grey);
686
+ text-transform: uppercase;
687
+ }
688
+
689
+ .input_shortcut_tag {
690
+ display: flex;
691
+ flex-direction: row;
692
+ align-items: center;
693
+ padding: 4px 12px;
694
+ gap: 4px;
695
+ isolation: isolate;
696
+ background: var(--background);
697
+ border-radius: 8px;
698
+ position: relative;
699
+ width: auto;
700
+ }
701
+
702
+ .input_shortcut_tag:hover .remove_search,
703
+ .input_shortcut_tag.selected_tag > .remove_search {
704
+ transition: all 0.3s ease;
705
+ left: calc(100% - 25px);
706
+ background: var(--background);
707
+ opacity: 1;
708
+ position: absolute;
709
+ }
710
+
711
+ .remove_search_section {
712
+ display: flex;
713
+ flex-direction: row;
714
+ align-items: center;
715
+ padding: 0px 12px;
716
+ border-left: 1px solid var(--dividers);
717
+ height: 100%;
718
+ margin-left: auto;
719
+ cursor: pointer;
720
+ border-radius: 0px 8px 8px 0px;
721
+ }
722
+
723
+ .remove_search {
724
+ display: flex;
725
+ flex-direction: row;
726
+ align-items: center;
727
+ padding-left: 4px;
728
+ border-radius: 0px 8px 8px 0px;
729
+ background: var(--background);
730
+ border-left: 1px solid var(--dividers);
731
+ height: 100%;
732
+ transition: all 0.2s ease;
733
+ left: calc(100% - 15px);
734
+ cursor: pointer;
735
+ position: absolute;
736
+ opacity: 0;
737
+ }
738
+
739
+ .search_error {
740
+ color: var(--alert);
741
+ font-size: 14px;
742
+ }
743
+
744
+ .selected_tag {
745
+ border: 1px solid var(--primary);
746
+ }
747
+
748
+ .input_shortcut_tag.duplicate_tag {
749
+ background: var(--background) !important;
750
+ animation: shake 1s;
751
+ }
752
+ @keyframes shake {
753
+ 10%,
754
+ 90% {
755
+ transform: scale(0.9) translate3d(-1px, 0, 0);
756
+ }
757
+
758
+ 20%,
759
+ 80% {
760
+ transform: scale(0.9) translate3d(2px, 0, 0);
761
+ }
762
+
763
+ 30%,
764
+ 50%,
765
+ 70% {
766
+ transform: scale(0.9) translate3d(-4px, 0, 0);
767
+ }
768
+
769
+ 40%,
770
+ 60% {
771
+ transform: scale(0.9) translate3d(4px, 0, 0);
772
+ }
773
+ }
774
+ .search_icon {
775
+ flex-shrink: 0;
776
+ }
777
+
778
+ .select-remove {
779
+ border: 1px solid var(--primary);
780
+ }
781
+
782
+ .sub_input_section {
783
+ display: flex;
784
+ flex-direction: row;
785
+ align-items: flex-start;
786
+ position: absolute;
787
+ z-index: 3;
788
+ }
789
+
790
+ @media screen and (max-width: 700px) {
791
+ .sub_input_section {
792
+ display: flex;
793
+ flex-direction: column-reverse;
794
+ align-items: flex-start;
795
+ }
796
+ .searchbar_info {
797
+ width: 338px;
798
+ height: 100px;
799
+ overflow-y: scroll;
800
+ border-radius: 0px !important;
801
+ opacity: 1 !important;
802
+ }
803
+ }
804
+
805
+ .searchbar_info {
806
+ box-shadow: 0px 16px 40px rgba(62, 63, 94, 0.12);
807
+ border: 1px solid var(--independence);
808
+ background: var(--independence);
809
+ color: var(--pure-white);
810
+ border-radius: 0px 0px 8px 8px;
811
+ display: flex;
812
+ flex-direction: row;
813
+ align-items: flex-start;
814
+ max-width: 500px;
815
+ }
816
+
817
+ .searchbar_shortcuts {
818
+ padding: 16px;
819
+ }
820
+
821
+ .searchbar_info_title {
822
+ font-size: 14px;
823
+ font-weight: 700;
824
+ text-decoration: underline;
825
+ }
826
+
827
+ .searchbar_info_content {
828
+ font-size: 14px;
829
+ list-style: inside;
830
+ padding-inline-start: 0px !important;
831
+ }
832
+
833
+ .close_info {
834
+ cursor: pointer;
835
+ padding: 12px 16px 0px 0px;
836
+ }
837
+
838
+ .show_shortcuts {
839
+ cursor: pointer;
840
+ }
841
+
842
+ .filters_input_search:hover {
843
+ border: 1.5px solid rgba(33, 118, 255, 0.2) !important;
844
+ }
845
+
846
+ .filters_input_search:focus-within {
847
+ border: 1.5px solid var(--primary) !important;
848
+ box-shadow: 0px 0px 0px 4px rgba(33, 118, 255, 0.1) !important;
849
+ }
850
+
851
+ .filters_input_search:hover .search_icon,
852
+ .filters_input_search:focus-within .search_icon {
853
+ color: var(--primary) !important;
854
+ }
855
+ .filters_input_style {
856
+ width: 100%;
857
+ }
858
+ .filters_input_style,
859
+ .filters_input_style:focus-visible {
860
+ border: none;
861
+ outline: none;
862
+ }
863
+ .filters_input_style::placeholder {
864
+ color: var(--wild-blue-yonder);
865
+ }
866
+ </style>