@pocketprep/ui-kit 3.4.90 → 3.5.1

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 (88) hide show
  1. package/README.md +2 -2
  2. package/dist/@pocketprep/ui-kit.css +1 -0
  3. package/dist/@pocketprep/ui-kit.js +16490 -18228
  4. package/dist/@pocketprep/ui-kit.js.map +1 -1
  5. package/dist/@pocketprep/ui-kit.umd.cjs +11 -11
  6. package/dist/@pocketprep/ui-kit.umd.cjs.map +1 -1
  7. package/eslint.config.ts +111 -0
  8. package/lib/components/Banners/Banner.vue +2 -2
  9. package/lib/components/Bundles/BundleList.vue +1 -1
  10. package/lib/components/Bundles/BundleSearch.vue +43 -12
  11. package/lib/components/Bundles/PremiumPill.vue +2 -2
  12. package/lib/components/Buttons/Button.vue +19 -18
  13. package/lib/components/Buttons/Link.vue +9 -8
  14. package/lib/components/Buttons/Tab.vue +4 -3
  15. package/lib/components/Calendar/Calendar.vue +14 -2
  16. package/lib/components/Charts/Bar.vue +3 -3
  17. package/lib/components/Charts/Pie.vue +4 -4
  18. package/lib/components/Controls/SegmentControl.vue +8 -7
  19. package/lib/components/Controls/Slider.vue +2 -3
  20. package/lib/components/Controls/ToggleSwitch.vue +3 -2
  21. package/lib/components/EmptyStates/EmptyState.vue +3 -2
  22. package/lib/components/Exams/ExamCard.vue +3 -3
  23. package/lib/components/Exams/ExamMenuCard.vue +2 -2
  24. package/lib/components/Filters/FilterDropdown.vue +2 -2
  25. package/lib/components/Filters/FilterOptions.vue +2 -2
  26. package/lib/components/Forms/Checkbox.vue +2 -2
  27. package/lib/components/Forms/CheckboxOption.vue +2 -2
  28. package/lib/components/Forms/Errors.vue +2 -2
  29. package/lib/components/Forms/Input.vue +2 -2
  30. package/lib/components/Forms/Radio.vue +37 -39
  31. package/lib/components/Forms/RadioButton.vue +1 -1
  32. package/lib/components/Forms/Select.vue +7 -6
  33. package/lib/components/Forms/Textarea.vue +2 -2
  34. package/lib/components/Icons/Icon.vue +1 -0
  35. package/lib/components/Icons/IconEdit.vue +4 -2
  36. package/lib/components/Icons/IconFullViewActive.vue +1 -1
  37. package/lib/components/Icons/IconLoading2.vue +1 -3
  38. package/lib/components/Loaders/SkeletonLoader.vue +2 -2
  39. package/lib/components/Messaging/InfoMessage.vue +2 -2
  40. package/lib/components/Modal/Modal.vue +2 -2
  41. package/lib/components/Modal/ModalContainer.vue +2 -2
  42. package/lib/components/Onboarding/EmailAuth.vue +5 -5
  43. package/lib/components/Onboarding/MagicCodeEntry.vue +3 -4
  44. package/lib/components/Pagination/QuestionReviewPagination.vue +23 -21
  45. package/lib/components/Pagination/TablePagination.vue +2 -2
  46. package/lib/components/Quiz/FlagToggle.vue +2 -2
  47. package/lib/components/Quiz/GlobalMetricsToggle.vue +3 -2
  48. package/lib/components/Quiz/KeyboardShortcutsButton.vue +1 -1
  49. package/lib/components/Quiz/KeyboardShortcutsModal.vue +1 -1
  50. package/lib/components/Quiz/Question/ChoicesContainer.vue +99 -132
  51. package/lib/components/Quiz/Question/DropdownExplanation.vue +41 -55
  52. package/lib/components/Quiz/Question/Explanation.vue +49 -59
  53. package/lib/components/Quiz/Question/MatrixChoicesContainer.vue +208 -226
  54. package/lib/components/Quiz/Question/MatrixRadioGroup.vue +7 -6
  55. package/lib/components/Quiz/Question/MobileMatrixChoicesContainer.vue +315 -320
  56. package/lib/components/Quiz/Question/MobileMatrixRadioGroup.vue +14 -11
  57. package/lib/components/Quiz/Question/PassageAndImage.vue +34 -45
  58. package/lib/components/Quiz/Question/PassageAndImageDropdown.vue +39 -49
  59. package/lib/components/Quiz/Question/Paywall.vue +30 -41
  60. package/lib/components/Quiz/Question/QuestionContext.vue +24 -33
  61. package/lib/components/Quiz/Question/StatsSummary.vue +12 -22
  62. package/lib/components/Quiz/Question/Summary.vue +56 -66
  63. package/lib/components/Quiz/Question/composables.ts +71 -0
  64. package/lib/components/Quiz/Question/injectionSymbols.ts +69 -0
  65. package/lib/components/Quiz/Question.vue +810 -1009
  66. package/lib/components/Quiz/QuizContainer.vue +63 -67
  67. package/lib/components/Quiz/QuizProgress.vue +73 -77
  68. package/lib/components/Quiz/QuizProgressBar.vue +3 -2
  69. package/lib/components/Quiz/question.d.ts +4 -4
  70. package/lib/components/Search/Pill.vue +2 -2
  71. package/lib/components/Search/Search.vue +2 -2
  72. package/lib/components/SidePanels/SidePanel.vue +8 -3
  73. package/lib/components/Tables/Table.vue +4 -3
  74. package/lib/components/Tables/TableActions.vue +3 -3
  75. package/lib/components/Tags/Tag.vue +2 -2
  76. package/lib/components/Toasts/Toast.vue +5 -3
  77. package/lib/components/Tooltips/OverflowTooltip.vue +2 -2
  78. package/lib/components/Tooltips/Tooltip.vue +2 -2
  79. package/lib/directives.ts +28 -23
  80. package/lib/pocketprep-export.module.scss +3 -2
  81. package/lib/pocketprep.scss +2 -2
  82. package/lib/styles/_breakpoints.scss +12 -24
  83. package/lib/styles/_colors.scss +0 -1
  84. package/package.json +38 -29
  85. package/stylelint.config.js +38 -0
  86. package/.eslintrc.cjs +0 -74
  87. package/dist/style.css +0 -1
  88. package/stylelint.config.cjs +0 -22
@@ -0,0 +1,111 @@
1
+ import stylisticTs from '@stylistic/eslint-plugin-ts'
2
+ import pluginVue from 'eslint-plugin-vue'
3
+ import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'
4
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
5
+ // @ts-ignore
6
+ import pluginCypress from 'eslint-plugin-cypress/flat'
7
+
8
+ // To allow more languages other than `ts` in `.vue` files, uncomment the following lines:
9
+ // import { configureVueProject } from '@vue/eslint-config-typescript'
10
+ // configureVueProject({ scriptLangs: ['ts', 'tsx'] })
11
+ // More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup
12
+
13
+ export default defineConfigWithVueTs(
14
+ {
15
+ name: 'app/files-to-lint',
16
+ files: [ '**/*.{ts,mts,tsx,vue}' ],
17
+ },
18
+ {
19
+ name: 'app/files-to-ignore',
20
+ ignores: [ '**/dist/**', '**/dist-ssr/**', '**/coverage/**', '**/docs/**', '**/cypress/fixtures/**' ],
21
+ },
22
+ stylisticTs.configs.all,
23
+ vueTsConfigs.strictTypeChecked,
24
+ vueTsConfigs.stylisticTypeChecked,
25
+ pluginVue.configs['flat/recommended'],
26
+ {
27
+ rules: {
28
+ '@stylistic/ts/quotes': [ 'error', 'single' ],
29
+ '@stylistic/ts/quote-props': 'off',
30
+ '@stylistic/ts/comma-dangle': [ 'error', {
31
+ 'arrays': 'always-multiline',
32
+ 'objects': 'always-multiline',
33
+ 'imports': 'always-multiline',
34
+ 'exports': 'always-multiline',
35
+ 'functions': 'never',
36
+ }],
37
+ '@stylistic/ts/semi': [ 'error', 'never' ],
38
+ '@stylistic/ts/object-property-newline': [ 'error', { allowAllPropertiesOnSameLine: true }],
39
+ '@stylistic/ts/no-extra-parens': 'off',
40
+ '@stylistic/ts/lines-between-class-members': 'off',
41
+ '@stylistic/ts/lines-around-comment': 'off',
42
+ 'no-console': 'warn',
43
+ 'max-len': [ 'error', { 'code': 120 }],
44
+ 'brace-style': 'error',
45
+ 'keyword-spacing': [ 'error', { 'before': true, 'after': true }],
46
+ '@stylistic/ts/object-curly-spacing': [ 'error', 'always' ],
47
+ 'array-bracket-spacing': [ 'error', 'always', { 'objectsInArrays': false, 'arraysInArrays': false }],
48
+ 'space-in-parens': [ 'error', 'never' ],
49
+ 'space-before-function-paren': [ 'error', 'always' ],
50
+ 'space-infix-ops': [ 'error', { 'int32Hint': true }],
51
+ 'prefer-const': 'error',
52
+ 'no-shadow': 'error',
53
+ 'vue/html-indent': [ 'error', 4 ],
54
+ 'vue/max-attributes-per-line': [ 'error', { 'singleline': 2 }],
55
+ 'vue/no-v-html': 'off',
56
+ 'vue/component-name-in-template-casing': [ 'error', 'PascalCase', {
57
+ 'registeredComponentsOnly': false,
58
+ }],
59
+ 'vue/multi-word-component-names': 'off',
60
+ 'vue/singleline-html-element-content-newline': 'off',
61
+ 'vue/v-on-event-hyphenation': [ 'warn', 'never' ],
62
+ 'vue/attribute-hyphenation': 'off',
63
+ 'vue/first-attribute-linebreak': 'off',
64
+ 'vue/html-closing-bracket-newline': 'off',
65
+ 'vue/multiline-html-element-content-newline': 'off',
66
+ 'vue/attributes-order': 'off',
67
+ 'vue/html-self-closing': 'off',
68
+ 'no-unused-vars': 'off', // We use @typescript-eslint/no-unused-vars instead
69
+ 'no-template-curly-in-string': 'error',
70
+ 'array-callback-return': [ 'error', { 'allowImplicit': true }],
71
+ 'block-scoped-var': 'error',
72
+ 'dot-location': [ 'error', 'property' ],
73
+ 'eqeqeq': 'error',
74
+ 'no-implicit-globals': [ 'error', { 'lexicalBindings': true }],
75
+ '@stylistic/ts/member-delimiter-style': [ 'error', { 'multiline': { delimiter: 'none' } }],
76
+ '@typescript-eslint/no-angle-bracket-type-assertion': 'off',
77
+ '@typescript-eslint/explicit-function-return-type': 'off',
78
+ '@typescript-eslint/explicit-member-accessibility': 'off',
79
+ '@typescript-eslint/no-var-requires': 'off',
80
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
81
+ '@typescript-eslint/consistent-indexed-object-style': 'off',
82
+ '@typescript-eslint/class-literal-property-style': 'off',
83
+ '@typescript-eslint/no-unnecessary-condition': 'off',
84
+ '@typescript-eslint/no-redundant-type-constituents': 'off',
85
+ '@typescript-eslint/consistent-type-definitions': 'off',
86
+ '@typescript-eslint/consistent-type-assertions': 'off',
87
+ '@typescript-eslint/restrict-template-expressions': 'off',
88
+ '@typescript-eslint/prefer-nullish-coalescing': 'off',
89
+ '@typescript-eslint/no-dynamic-delete': 'off',
90
+ '@typescript-eslint/no-floating-promises': 'off',
91
+ '@typescript-eslint/non-nullable-type-assertion-style': 'off',
92
+ '@typescript-eslint/dot-notation': 'off',
93
+ '@typescript-eslint/prefer-regexp-exec': 'off',
94
+ '@typescript-eslint/prefer-reduce-type-parameter': 'off',
95
+ '@typescript-eslint/no-require-imports': 'off',
96
+ '@typescript-eslint/no-unnecessary-type-parameters': 'off',
97
+ '@typescript-eslint/no-confusing-void-expression': [ 'error', { ignoreArrowShorthand: true }],
98
+ '@typescript-eslint/no-unused-expressions': [ 'error', { allowShortCircuit: true }],
99
+ '@typescript-eslint/unbound-method': 'off',
100
+ '@typescript-eslint/no-unused-vars': [ 'error', { caughtErrors: 'none' }],
101
+ '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'off',
102
+ },
103
+ },
104
+ {
105
+ ...pluginCypress.configs.recommended,
106
+ files: [
107
+ '**/__tests__/*.{cy,spec}.{js,ts,jsx,tsx}',
108
+ 'cypress/e2e/**/*.{cy,spec}.{js,ts,jsx,tsx}',
109
+ ],
110
+ }
111
+ )
@@ -42,8 +42,8 @@ export default class Banner extends Vue {
42
42
  </script>
43
43
 
44
44
  <style lang="scss" scoped>
45
- @import '../../styles/breakpoints';
46
- @import '../../styles/colors';
45
+ @use '@/styles/breakpoints' as *;
46
+ @use '@/styles/colors' as *;
47
47
 
48
48
  .uikit-banner {
49
49
  background-color: $manilla;
@@ -111,7 +111,7 @@ export default class BundleSearch extends Vue {
111
111
  </script>
112
112
 
113
113
  <style lang="scss">
114
- @import '../../styles/colors';
114
+ @use '@/styles/colors' as *;
115
115
 
116
116
  .uikit-bundle-list {
117
117
  box-sizing: border-box;
@@ -1,13 +1,17 @@
1
1
  <template>
2
2
  <div
3
3
  ref="uikit-exam-search"
4
- v-breakpoint="{ small: smallBreakpoint }"
4
+ v-breakpoint="{ breakpoints: { small: smallBreakpoint } }"
5
5
  class="uikit-exam-search"
6
6
  :class="{ 'uikit-exam-search--bundle-selected': selectedBundle }"
7
7
  >
8
8
  <Search
9
+ v-if="examSearchContainer"
9
10
  v-model="examSearchString"
10
- v-breakpoint:examSearchContainer="{ small: smallBreakpoint }"
11
+ v-breakpoint="{
12
+ breakpoints: { small: smallBreakpoint },
13
+ containerEl: examSearchContainer
14
+ }"
11
15
  class="uikit-exam-search__search"
12
16
  placeholder="Search exams"
13
17
  type="white"
@@ -15,7 +19,10 @@
15
19
  />
16
20
  <div
17
21
  v-if="examSearchString"
18
- v-breakpoint:examSearchContainer="{ small: smallBreakpoint }"
22
+ v-breakpoint="{
23
+ breakpoints: { small: smallBreakpoint },
24
+ containerEl: examSearchContainer
25
+ }"
19
26
  class="uikit-exam-search__search-results"
20
27
  >
21
28
  <div class="uikit-exam-search__search-results-header">
@@ -40,7 +47,10 @@
40
47
  <ExamCard
41
48
  v-for="exam in filteredExams"
42
49
  :key="exam.objectId"
43
- v-breakpoint:examSearchContainer="{ small: smallBreakpoint }"
50
+ v-breakpoint="{
51
+ breakpoints: { small: smallBreakpoint },
52
+ containerEl: examSearchContainer
53
+ }"
44
54
  :is-premium="premiumExamIds.includes(exam.objectId)"
45
55
  :exam="exam"
46
56
  :bundle="exam.bundle"
@@ -58,7 +68,10 @@
58
68
  :class="{ 'uikit-exam-search__bundle-search--bundle-selected': selectedBundle }"
59
69
  >
60
70
  <div
61
- v-breakpoint:examSearchContainer="{ small: smallBreakpoint }"
71
+ v-breakpoint="{
72
+ breakpoints: { small: smallBreakpoint },
73
+ containerEl: examSearchContainer
74
+ }"
62
75
  class="uikit-exam-search__bundle-list"
63
76
  >
64
77
  <div class="uikit-exam-search__browse-industry-text">
@@ -73,15 +86,24 @@
73
86
  </div>
74
87
  <div
75
88
  v-if="selectedBundle"
76
- v-breakpoint:examSearchContainer="{ small: smallBreakpoint }"
89
+ v-breakpoint="{
90
+ breakpoints: { small: smallBreakpoint },
91
+ containerEl: examSearchContainer
92
+ }"
77
93
  class="uikit-exam-search__bundle-exam-container"
78
94
  >
79
95
  <div
80
- v-breakpoint:examSearchContainer="{ small: smallBreakpoint }"
96
+ v-breakpoint="{
97
+ breakpoints: { small: smallBreakpoint },
98
+ containerEl: examSearchContainer
99
+ }"
81
100
  class="uikit-exam-search__bundle-exam-container-top"
82
101
  >
83
102
  <PocketButton
84
- v-breakpoint:examSearchContainer="{ small: smallBreakpoint }"
103
+ v-breakpoint="{
104
+ breakpoints: { small: smallBreakpoint },
105
+ containerEl: examSearchContainer
106
+ }"
85
107
  class="uikit-exam-search__bundle-exam-back"
86
108
  :is-dark-mode="isDarkMode"
87
109
  type="tertiary"
@@ -90,7 +112,10 @@
90
112
  <Icon type="arrow" /> Back to Browse
91
113
  </PocketButton>
92
114
  <span
93
- v-breakpoint:examSearchContainer="{ small: smallBreakpoint }"
115
+ v-breakpoint="{
116
+ breakpoints: { small: smallBreakpoint },
117
+ containerEl: examSearchContainer
118
+ }"
94
119
  class="uikit-exam-search__bundle-exam-count"
95
120
  tabindex="-1"
96
121
  >
@@ -110,7 +135,10 @@
110
135
  <ExamCard
111
136
  v-for="exam in selectedBundleExams"
112
137
  :key="exam.objectId"
113
- v-breakpoint:examSearchContainer="{ small: smallBreakpoint }"
138
+ v-breakpoint="{
139
+ breakpoints: { small: smallBreakpoint },
140
+ containerEl: examSearchContainer
141
+ }"
114
142
  :exam="exam"
115
143
  :is-dark-mode="isDarkMode"
116
144
  :bundle="exam.bundle"
@@ -120,7 +148,10 @@
120
148
  @select="selectExam(exam)"
121
149
  />
122
150
  <div
123
- v-breakpoint:examSearchContainer="{ small: smallBreakpoint }"
151
+ v-breakpoint="{
152
+ breakpoints: { small: smallBreakpoint },
153
+ containerEl: examSearchContainer
154
+ }"
124
155
  class="uikit-exam-search__exam-list-padding"
125
156
  />
126
157
  </div>
@@ -251,7 +282,7 @@ export default class BundleSearch extends Vue {
251
282
  </script>
252
283
 
253
284
  <style lang="scss">
254
- @import '../../styles/colors';
285
+ @use '@/styles/colors' as *;
255
286
 
256
287
  .uikit-exam-search {
257
288
  position: relative;
@@ -19,8 +19,8 @@ export default class PremiumPill extends Vue {
19
19
  </script>
20
20
 
21
21
  <style lang="scss">
22
- @import '../../styles/breakpoints';
23
- @import '../../styles/colors';
22
+ @use '@/styles/breakpoints' as *;
23
+ @use '@/styles/colors' as *;
24
24
 
25
25
  .uikit-premium-pill {
26
26
  font-size: 14px;
@@ -77,8 +77,9 @@ export default class Button extends Vue {
77
77
  </script>
78
78
 
79
79
  <style lang="scss">
80
- @import '../../styles/colors';
81
- @import '../../styles/breakpoints';
80
+ @use 'sass:color';
81
+ @use '@/styles/breakpoints' as *;
82
+ @use '@/styles/colors' as *;
82
83
 
83
84
  .uikit-btn {
84
85
  position: relative;
@@ -153,11 +154,11 @@ export default class Button extends Vue {
153
154
 
154
155
  &:enabled {
155
156
  &:hover {
156
- background-color: mix($brand-blue, black, 90%);
157
+ background-color: color.mix($brand-blue, black, 90%);
157
158
  }
158
159
 
159
160
  &:active {
160
- background-color: mix($brand-blue, black, 80%);
161
+ background-color: color.mix($brand-blue, black, 80%);
161
162
  }
162
163
  }
163
164
 
@@ -171,14 +172,14 @@ export default class Button extends Vue {
171
172
  }
172
173
 
173
174
  &:active {
174
- background-color: mix($butterscotch, black, 80%);
175
+ background-color: color.mix($butterscotch, black, 80%);
175
176
  }
176
177
  }
177
178
  }
178
179
 
179
180
  &--is-loading {
180
181
  cursor: default;
181
- background-color: mix($brand-blue, black, 90%) !important;
182
+ background-color: color.mix($brand-blue, black, 90%) !important;
182
183
 
183
184
  &--dark {
184
185
  background-color: $butterscotch !important;
@@ -213,7 +214,7 @@ export default class Button extends Vue {
213
214
  &:enabled {
214
215
  &:hover,
215
216
  &:active {
216
- background-color: mix($red-pegasus, black, 90%);
217
+ background-color: color.mix($red-pegasus, black, 90%);
217
218
  }
218
219
  }
219
220
 
@@ -228,7 +229,7 @@ export default class Button extends Vue {
228
229
  &:enabled {
229
230
  &:hover,
230
231
  &:active {
231
- background-color: mix($rosa, black, 90%);
232
+ background-color: color.mix($rosa, black, 90%);
232
233
  }
233
234
  }
234
235
  }
@@ -284,11 +285,11 @@ export default class Button extends Vue {
284
285
 
285
286
  &:enabled {
286
287
  &:hover {
287
- background-color: mix($barely-background, black, 96%);
288
+ background-color: color.mix($barely-background, black, 96%);
288
289
  }
289
290
 
290
291
  &:active {
291
- background-color: mix($gray-background, black, 92%);
292
+ background-color: color.mix($gray-background, black, 92%);
292
293
  }
293
294
  }
294
295
 
@@ -307,7 +308,7 @@ export default class Button extends Vue {
307
308
  top: 0;
308
309
  width: 100%;
309
310
  height: 100%;
310
- background-color: mix($barely-background, black, 96%);
311
+ background-color: color.mix($barely-background, black, 96%);
311
312
  opacity: 0.1;
312
313
  border-radius: 4px;
313
314
  }
@@ -364,7 +365,7 @@ export default class Button extends Vue {
364
365
  @media (hover: hover) {
365
366
  &:enabled:hover {
366
367
  text-decoration: underline;
367
- color: mix($brand-blue, black, 90%);
368
+ color: color.mix($brand-blue, black, 90%);
368
369
  }
369
370
  }
370
371
 
@@ -397,11 +398,11 @@ export default class Button extends Vue {
397
398
 
398
399
  &:enabled {
399
400
  &:focus {
400
- color: mix($brand-blue, black, 90%);
401
+ color: color.mix($brand-blue, black, 90%);
401
402
  }
402
403
 
403
404
  &:active {
404
- color: mix($brand-blue, black, 80%);
405
+ color: color.mix($brand-blue, black, 80%);
405
406
  }
406
407
  }
407
408
 
@@ -431,7 +432,7 @@ export default class Button extends Vue {
431
432
  &:enabled {
432
433
  &:hover,
433
434
  &:focus {
434
- color: mix($lust, black, 90%);
435
+ color: color.mix($lust, black, 90%);
435
436
 
436
437
  &::before {
437
438
  border-color: $lust;
@@ -439,7 +440,7 @@ export default class Button extends Vue {
439
440
  }
440
441
 
441
442
  &:active {
442
- color: mix($lust, black, 80%);
443
+ color: color.mix($lust, black, 80%);
443
444
  }
444
445
  }
445
446
 
@@ -450,12 +451,12 @@ export default class Button extends Vue {
450
451
  &:hover,
451
452
  &:focus,
452
453
  &:active {
453
- color: mix($rosa, black, 90%);
454
+ color: color.mix($rosa, black, 90%);
454
455
  }
455
456
 
456
457
  &:focus {
457
458
  &::before {
458
- border-color: mix($rosa, black, 90%);
459
+ border-color: color.mix($rosa, black, 90%);
459
460
  }
460
461
  }
461
462
  }
@@ -49,7 +49,8 @@ export default class Link extends Vue {
49
49
  </script>
50
50
 
51
51
  <style lang="scss">
52
- @import '../../styles/colors';
52
+ @use 'sass:color';
53
+ @use '@/styles/colors' as *;
53
54
 
54
55
  .uikit-link {
55
56
  outline: none;
@@ -104,11 +105,11 @@ export default class Link extends Vue {
104
105
 
105
106
  &:hover,
106
107
  &:focus {
107
- color: mix($brand-blue, black, 90%);
108
+ color: color.mix($brand-blue, black, 90%);
108
109
  }
109
110
 
110
111
  &:active {
111
- color: mix($brand-blue, black, 80%);
112
+ color: color.mix($brand-blue, black, 80%);
112
113
  }
113
114
  }
114
115
 
@@ -141,15 +142,15 @@ export default class Link extends Vue {
141
142
 
142
143
  &:hover,
143
144
  &:focus {
144
- color: mix($pepper, black, 90%);
145
+ color: color.mix($pepper, black, 90%);
145
146
  }
146
147
 
147
148
  &:focus::before {
148
- border-color: mix($pepper, black, 90%);
149
+ border-color: color.mix($pepper, black, 90%);
149
150
  }
150
151
 
151
152
  &:active {
152
- color: mix($pepper, black, 80%);
153
+ color: color.mix($pepper, black, 80%);
153
154
  }
154
155
  }
155
156
 
@@ -159,11 +160,11 @@ export default class Link extends Vue {
159
160
  &:not(.uikit-link--disabled) {
160
161
  &:hover,
161
162
  &:focus {
162
- color: mix($rosa, black, 90%);
163
+ color: color.mix($rosa, black, 90%);
163
164
  }
164
165
 
165
166
  &:focus::before {
166
- border-color: mix($rosa, black, 90%);
167
+ border-color: color.mix($rosa, black, 90%);
167
168
  }
168
169
  }
169
170
  }
@@ -34,8 +34,9 @@ export default class Tab extends Vue {
34
34
  </script>
35
35
 
36
36
  <style lang="scss">
37
- @import '../../styles/breakpoints';
38
- @import '../../styles/colors';
37
+ @use 'sass:color';
38
+ @use '@/styles/breakpoints' as *;
39
+ @use '@/styles/colors' as *;
39
40
 
40
41
  .uikit-tab {
41
42
  color: $brand-blue;
@@ -49,7 +50,7 @@ export default class Tab extends Vue {
49
50
 
50
51
  @media (hover: hover) {
51
52
  &:hover {
52
- color: mix($brand-blue, black, 90%);
53
+ color: color.mix($brand-blue, black, 90%);
53
54
  }
54
55
  }
55
56
 
@@ -23,6 +23,9 @@
23
23
  v-if="isShowingCalendar"
24
24
  v-dark="isDarkMode"
25
25
  class="uikit-calendar__clear-date-icon"
26
+ :class="{
27
+ 'uikit-calendar__clear-date-icon--no-label': !label,
28
+ }"
26
29
  @click.stop.prevent="clearCalendar"
27
30
  >
28
31
  <Tooltip
@@ -39,6 +42,7 @@
39
42
  class="uikit-calendar__calendar-icon"
40
43
  :class="{
41
44
  'uikit-calendar__calendar-icon--active': !disabled && (hover || isShowingCalendar),
45
+ 'uikit-calendar__calendar-icon--no-label': !label,
42
46
  }"
43
47
  >
44
48
  <Icon type="calendarPicker" />
@@ -181,8 +185,8 @@ export default class Calendar extends Vue {
181
185
  </script>
182
186
 
183
187
  <style lang="scss">
184
- @import '../../styles/breakpoints';
185
- @import '../../styles/colors';
188
+ @use '@/styles/breakpoints' as *;
189
+ @use '@/styles/colors' as *;
186
190
 
187
191
  .uikit-calendar {
188
192
  position: relative;
@@ -203,6 +207,10 @@ export default class Calendar extends Vue {
203
207
  color: $steel;
204
208
  outline: none;
205
209
 
210
+ &--no-label {
211
+ top: 8px;
212
+ }
213
+
206
214
  &--dark {
207
215
  color: $pewter;
208
216
  }
@@ -238,6 +246,10 @@ export default class Calendar extends Vue {
238
246
  color: $steel;
239
247
  outline: none;
240
248
 
249
+ &--no-label {
250
+ top: 8px;
251
+ }
252
+
241
253
  &--dark {
242
254
  color: $pewter;
243
255
  }
@@ -50,7 +50,7 @@ type TCustomHighcharts = typeof Highcharts & {
50
50
  prototype: Record<string, unknown>
51
51
  }
52
52
  }
53
- };
53
+ }
54
54
 
55
55
  Accessibility(Highcharts);
56
56
  (function (H) {
@@ -286,7 +286,7 @@ export default class Bar extends Vue {
286
286
  borderRadiusTopRight: 8,
287
287
  }
288
288
  chartOptions.yAxis = {
289
- ...(chartOptions.yAxis || {}),
289
+ ...(chartOptions.yAxis as Highcharts.YAxisOptions || {}),
290
290
  labels: {
291
291
  ...((chartOptions.yAxis as Highcharts.YAxisOptions)?.labels),
292
292
  formatter: function () {
@@ -309,7 +309,7 @@ export default class Bar extends Vue {
309
309
  </script>
310
310
 
311
311
  <style lang="scss">
312
- @import '../../styles/colors';
312
+ @use '@/styles/colors' as *;
313
313
 
314
314
  .uikit-bar {
315
315
  max-height: 100%;
@@ -25,8 +25,8 @@ export default class Pie extends Vue {
25
25
  chart: {
26
26
  plotShadow: false,
27
27
  type: 'pie',
28
- margin: [ 0,0,0,0 ],
29
- spacing: [ 0,0,0,0 ],
28
+ margin: [ 0, 0, 0, 0 ],
29
+ spacing: [ 0, 0, 0, 0 ],
30
30
  },
31
31
  title: undefined,
32
32
  tooltip: {
@@ -76,8 +76,8 @@ export default class Pie extends Vue {
76
76
  </script>
77
77
 
78
78
  <style lang="scss">
79
- @import '../../styles/colors';
80
- @import '../../styles/breakpoints';
79
+ @use '@/styles/breakpoints' as *;
80
+ @use '@/styles/colors' as *;
81
81
 
82
82
  .uikit-pie {
83
83
  max-height: 100%;
@@ -56,7 +56,8 @@ export default class SegmentControl extends Vue {
56
56
  </script>
57
57
 
58
58
  <style lang="scss">
59
- @import '../../styles/colors';
59
+ @use 'sass:color';
60
+ @use '@/styles/colors' as *;
60
61
 
61
62
  .uikit-segment-control {
62
63
  position: relative;
@@ -64,8 +65,8 @@ export default class SegmentControl extends Vue {
64
65
  outline: none;
65
66
  cursor: pointer;
66
67
  border-radius: 4px;
67
- border: 1px solid change-color($brand-blue, $alpha: 0.45);
68
- color: change-color($brand-blue, $alpha: 0.45);
68
+ border: 1px solid color.change($brand-blue, $alpha: 0.45);
69
+ color: color.change($brand-blue, $alpha: 0.45);
69
70
  background-color: white;
70
71
  font-size: 12px;
71
72
  font-weight: 600;
@@ -104,15 +105,15 @@ export default class SegmentControl extends Vue {
104
105
 
105
106
  &:not(&--active) {
106
107
  &:hover {
107
- background-color: change-color($sky-blue, $alpha: 0.45);
108
- color: change-color($brand-blue, $alpha: 0.75);
108
+ background-color: color.change($sky-blue, $alpha: 0.45);
109
+ color: color.change($brand-blue, $alpha: 0.75);
109
110
 
110
111
  &:first-child {
111
- box-shadow: 4px 0 0 0 change-color($sky-blue, $alpha: 0.45);
112
+ box-shadow: 4px 0 0 0 color.change($sky-blue, $alpha: 0.45);
112
113
  }
113
114
 
114
115
  &:last-child {
115
- box-shadow: -4px 0 0 0 change-color($sky-blue, $alpha: 0.45);
116
+ box-shadow: -4px 0 0 0 color.change($sky-blue, $alpha: 0.45);
116
117
  }
117
118
  }
118
119
  }
@@ -89,7 +89,7 @@ export default class Slider extends Vue {
89
89
  }
90
90
  </script>
91
91
  <style lang="scss">
92
- @import '../../styles/colors';
92
+ @use '@/styles/colors' as *;
93
93
 
94
94
  .uikit-slider {
95
95
  display: flex;
@@ -197,7 +197,6 @@ export default class Slider extends Vue {
197
197
  &__slide-input {
198
198
  height: 29px;
199
199
  width: 100%;
200
- -webkit-appearance: none;
201
200
  appearance: none;
202
201
  background: transparent;
203
202
 
@@ -267,7 +266,7 @@ export default class Slider extends Vue {
267
266
  box-sizing: border-box;
268
267
  background: $white;
269
268
  cursor: pointer;
270
- -webkit-appearance: none;
269
+ appearance: none;
271
270
  position: relative;
272
271
  z-index: 1;
273
272
  }