@pocketprep/ui-kit 3.5.0 → 3.5.2

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 (85) hide show
  1. package/README.md +2 -2
  2. package/dist/@pocketprep/ui-kit.css +1 -0
  3. package/dist/@pocketprep/ui-kit.js +14335 -14870
  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 +123 -121
  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 +4 -4
  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 +4 -3
  51. package/lib/components/Quiz/Question/DropdownExplanation.vue +2 -2
  52. package/lib/components/Quiz/Question/Explanation.vue +2 -2
  53. package/lib/components/Quiz/Question/MatrixChoicesContainer.vue +12 -17
  54. package/lib/components/Quiz/Question/MatrixRadioGroup.vue +2 -2
  55. package/lib/components/Quiz/Question/MobileMatrixChoicesContainer.vue +19 -26
  56. package/lib/components/Quiz/Question/MobileMatrixRadioGroup.vue +7 -5
  57. package/lib/components/Quiz/Question/PassageAndImage.vue +2 -2
  58. package/lib/components/Quiz/Question/PassageAndImageDropdown.vue +7 -6
  59. package/lib/components/Quiz/Question/Paywall.vue +2 -2
  60. package/lib/components/Quiz/Question/QuestionContext.vue +2 -3
  61. package/lib/components/Quiz/Question/StatsSummary.vue +2 -2
  62. package/lib/components/Quiz/Question/Summary.vue +2 -2
  63. package/lib/components/Quiz/Question.vue +29 -28
  64. package/lib/components/Quiz/QuizContainer.vue +31 -37
  65. package/lib/components/Quiz/QuizProgress.vue +73 -77
  66. package/lib/components/Quiz/QuizProgressBar.vue +3 -2
  67. package/lib/components/Search/Pill.vue +2 -2
  68. package/lib/components/Search/Search.vue +2 -2
  69. package/lib/components/SidePanels/SidePanel.vue +8 -3
  70. package/lib/components/Tables/Table.vue +4 -3
  71. package/lib/components/Tables/TableActions.vue +3 -3
  72. package/lib/components/Tags/Tag.vue +2 -2
  73. package/lib/components/Toasts/Toast.vue +5 -3
  74. package/lib/components/Tooltips/OverflowTooltip.vue +2 -2
  75. package/lib/components/Tooltips/Tooltip.vue +2 -2
  76. package/lib/directives.ts +1 -1
  77. package/lib/pocketprep-export.module.scss +3 -2
  78. package/lib/pocketprep.scss +2 -2
  79. package/lib/styles/_breakpoints.scss +6 -12
  80. package/lib/styles/_colors.scss +0 -1
  81. package/package.json +36 -27
  82. package/stylelint.config.js +38 -0
  83. package/.eslintrc.cjs +0 -74
  84. package/dist/style.css +0 -1
  85. 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;
@@ -5,158 +5,160 @@
5
5
  class="uikit-exam-search"
6
6
  :class="{ 'uikit-exam-search--bundle-selected': selectedBundle }"
7
7
  >
8
- <Search
9
- v-model="examSearchString"
10
- v-breakpoint="{
11
- breakpoints: { small: smallBreakpoint },
12
- containerEl: examSearchContainer
13
- }"
14
- class="uikit-exam-search__search"
15
- placeholder="Search exams"
16
- type="white"
17
- :is-dark-mode="isDarkMode"
18
- />
19
- <div
20
- v-if="examSearchString"
21
- v-breakpoint="{
22
- breakpoints: { small: smallBreakpoint },
23
- containerEl: examSearchContainer
24
- }"
25
- class="uikit-exam-search__search-results"
26
- >
27
- <div class="uikit-exam-search__search-results-header">
28
- <span
29
- v-dark="isDarkMode"
30
- class="uikit-exam-search__search-results-count"
31
- aria-live="polite"
32
- role="alert"
33
- >
34
- {{ filteredExams.length }} Search Result{{ filteredExams.length !== 1 ? 's' : '' }}
35
- </span>
36
- <Button
37
- class="uikit-exam-search__search-reset-btn"
38
- type="tertiary-small"
39
- :is-dark-mode="isDarkMode"
40
- @click="examSearchString = ''"
41
- >
42
- Browse Instead
43
- </Button>
44
- </div>
45
- <ul class="uikit-exam-search__search-results-list">
46
- <ExamCard
47
- v-for="exam in filteredExams"
48
- :key="exam.objectId"
49
- v-breakpoint="{
50
- breakpoints: { small: smallBreakpoint },
51
- containerEl: examSearchContainer
52
- }"
53
- :is-premium="premiumExamIds.includes(exam.objectId)"
54
- :exam="exam"
55
- :bundle="exam.bundle"
56
- class="uikit-exam-search__search-results-card"
57
- :is-selected="selectedExam && selectedExam.objectId === exam.objectId"
58
- :is-dark-mode="isDarkMode"
59
- @select="selectExam(exam)"
60
- />
61
- <div class="uikit-exam-search__exam-list-padding" />
62
- </ul>
63
- </div>
64
- <div
65
- v-else
66
- class="uikit-exam-search__bundle-search"
67
- :class="{ 'uikit-exam-search__bundle-search--bundle-selected': selectedBundle }"
68
- >
69
- <div
8
+ <template v-if="examSearchContainer">
9
+ <Search
10
+ v-model="examSearchString"
70
11
  v-breakpoint="{
71
12
  breakpoints: { small: smallBreakpoint },
72
13
  containerEl: examSearchContainer
73
14
  }"
74
- class="uikit-exam-search__bundle-list"
75
- >
76
- <div class="uikit-exam-search__browse-industry-text">
77
- <span v-if="!selectedBundle">or </span>browse by industry
78
- </div>
79
- <BundleList
80
- v-model="selectedBundle"
81
- :bundles="bundles"
82
- :is-dark-mode="isDarkMode"
83
- :premium-bundle-ids="!selectedBundle ? premiumBundleIds : []"
84
- />
85
- </div>
86
- <div
87
- v-if="selectedBundle"
15
+ class="uikit-exam-search__search"
16
+ placeholder="Search exams"
17
+ type="white"
18
+ :is-dark-mode="isDarkMode"
19
+ />
20
+ <div
21
+ v-if="examSearchString"
88
22
  v-breakpoint="{
89
23
  breakpoints: { small: smallBreakpoint },
90
24
  containerEl: examSearchContainer
91
25
  }"
92
- class="uikit-exam-search__bundle-exam-container"
26
+ class="uikit-exam-search__search-results"
27
+ >
28
+ <div class="uikit-exam-search__search-results-header">
29
+ <span
30
+ v-dark="isDarkMode"
31
+ class="uikit-exam-search__search-results-count"
32
+ aria-live="polite"
33
+ role="alert"
34
+ >
35
+ {{ filteredExams.length }} Search Result{{ filteredExams.length !== 1 ? 's' : '' }}
36
+ </span>
37
+ <Button
38
+ class="uikit-exam-search__search-reset-btn"
39
+ type="tertiary-small"
40
+ :is-dark-mode="isDarkMode"
41
+ @click="examSearchString = ''"
42
+ >
43
+ Browse Instead
44
+ </Button>
45
+ </div>
46
+ <ul class="uikit-exam-search__search-results-list">
47
+ <ExamCard
48
+ v-for="exam in filteredExams"
49
+ :key="exam.objectId"
50
+ v-breakpoint="{
51
+ breakpoints: { small: smallBreakpoint },
52
+ containerEl: examSearchContainer
53
+ }"
54
+ :is-premium="premiumExamIds.includes(exam.objectId)"
55
+ :exam="exam"
56
+ :bundle="exam.bundle"
57
+ class="uikit-exam-search__search-results-card"
58
+ :is-selected="selectedExam && selectedExam.objectId === exam.objectId"
59
+ :is-dark-mode="isDarkMode"
60
+ @select="selectExam(exam)"
61
+ />
62
+ <div class="uikit-exam-search__exam-list-padding" />
63
+ </ul>
64
+ </div>
65
+ <div
66
+ v-else
67
+ class="uikit-exam-search__bundle-search"
68
+ :class="{ 'uikit-exam-search__bundle-search--bundle-selected': selectedBundle }"
93
69
  >
94
- <div
70
+ <div
95
71
  v-breakpoint="{
96
72
  breakpoints: { small: smallBreakpoint },
97
73
  containerEl: examSearchContainer
98
74
  }"
99
- class="uikit-exam-search__bundle-exam-container-top"
75
+ class="uikit-exam-search__bundle-list"
100
76
  >
101
- <PocketButton
102
- v-breakpoint="{
103
- breakpoints: { small: smallBreakpoint },
104
- containerEl: examSearchContainer
105
- }"
106
- class="uikit-exam-search__bundle-exam-back"
77
+ <div class="uikit-exam-search__browse-industry-text">
78
+ <span v-if="!selectedBundle">or </span>browse by industry
79
+ </div>
80
+ <BundleList
81
+ v-model="selectedBundle"
82
+ :bundles="bundles"
107
83
  :is-dark-mode="isDarkMode"
108
- type="tertiary"
109
- @click="selectedBundle = null"
110
- >
111
- <Icon type="arrow" /> Back to Browse
112
- </PocketButton>
113
- <span
84
+ :premium-bundle-ids="!selectedBundle ? premiumBundleIds : []"
85
+ />
86
+ </div>
87
+ <div
88
+ v-if="selectedBundle"
89
+ v-breakpoint="{
90
+ breakpoints: { small: smallBreakpoint },
91
+ containerEl: examSearchContainer
92
+ }"
93
+ class="uikit-exam-search__bundle-exam-container"
94
+ >
95
+ <div
114
96
  v-breakpoint="{
115
97
  breakpoints: { small: smallBreakpoint },
116
98
  containerEl: examSearchContainer
117
99
  }"
118
- class="uikit-exam-search__bundle-exam-count"
119
- tabindex="-1"
120
- >
121
- {{ selectedBundleExams.length }}
122
- {{ selectedBundle.name }}
123
- Exam{{ selectedBundleExams.length > 1 ? 's' : '' }}
124
- </span>
125
- </div>
126
- <div
127
- :key="selectedBundle.objectId"
128
- class="uikit-exam-search__bundle-exam-list-container"
129
- >
130
- <div
131
- :key="selectedBundle.objectId"
132
- class="uikit-exam-search__bundle-exam-list"
100
+ class="uikit-exam-search__bundle-exam-container-top"
133
101
  >
134
- <ExamCard
135
- v-for="exam in selectedBundleExams"
136
- :key="exam.objectId"
102
+ <PocketButton
137
103
  v-breakpoint="{
138
104
  breakpoints: { small: smallBreakpoint },
139
105
  containerEl: examSearchContainer
140
106
  }"
141
- :exam="exam"
107
+ class="uikit-exam-search__bundle-exam-back"
142
108
  :is-dark-mode="isDarkMode"
143
- :bundle="exam.bundle"
144
- class="uikit-exam-search__search-results-card"
145
- :is-premium="premiumExamIds.includes(exam.objectId)"
146
- :is-selected="selectedExam && selectedExam.objectId === exam.objectId"
147
- @select="selectExam(exam)"
148
- />
149
- <div
109
+ type="tertiary"
110
+ @click="selectedBundle = null"
111
+ >
112
+ <Icon type="arrow" /> Back to Browse
113
+ </PocketButton>
114
+ <span
150
115
  v-breakpoint="{
151
116
  breakpoints: { small: smallBreakpoint },
152
117
  containerEl: examSearchContainer
153
118
  }"
154
- class="uikit-exam-search__exam-list-padding"
155
- />
119
+ class="uikit-exam-search__bundle-exam-count"
120
+ tabindex="-1"
121
+ >
122
+ {{ selectedBundleExams.length }}
123
+ {{ selectedBundle.name }}
124
+ Exam{{ selectedBundleExams.length > 1 ? 's' : '' }}
125
+ </span>
126
+ </div>
127
+ <div
128
+ :key="selectedBundle.objectId"
129
+ class="uikit-exam-search__bundle-exam-list-container"
130
+ >
131
+ <div
132
+ :key="selectedBundle.objectId"
133
+ class="uikit-exam-search__bundle-exam-list"
134
+ >
135
+ <ExamCard
136
+ v-for="exam in selectedBundleExams"
137
+ :key="exam.objectId"
138
+ v-breakpoint="{
139
+ breakpoints: { small: smallBreakpoint },
140
+ containerEl: examSearchContainer
141
+ }"
142
+ :exam="exam"
143
+ :is-dark-mode="isDarkMode"
144
+ :bundle="exam.bundle"
145
+ class="uikit-exam-search__search-results-card"
146
+ :is-premium="premiumExamIds.includes(exam.objectId)"
147
+ :is-selected="selectedExam && selectedExam.objectId === exam.objectId"
148
+ @select="selectExam(exam)"
149
+ />
150
+ <div
151
+ v-breakpoint="{
152
+ breakpoints: { small: smallBreakpoint },
153
+ containerEl: examSearchContainer
154
+ }"
155
+ class="uikit-exam-search__exam-list-padding"
156
+ />
157
+ </div>
156
158
  </div>
157
159
  </div>
158
160
  </div>
159
- </div>
161
+ </template>
160
162
  </div>
161
163
  </template>
162
164
 
@@ -281,7 +283,7 @@ export default class BundleSearch extends Vue {
281
283
  </script>
282
284
 
283
285
  <style lang="scss">
284
- @import '../../styles/colors';
286
+ @use '@/styles/colors' as *;
285
287
 
286
288
  .uikit-exam-search {
287
289
  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