@pocketprep/ui-kit 2.0.40 → 3.0.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 (305) hide show
  1. package/{.eslintrc.js → .eslintrc.cjs} +16 -17
  2. package/dist/@pocketprep/ui-kit.js +18856 -0
  3. package/dist/@pocketprep/ui-kit.js.map +1 -0
  4. package/dist/@pocketprep/ui-kit.umd.cjs +28 -0
  5. package/dist/@pocketprep/ui-kit.umd.cjs.map +1 -0
  6. package/dist/style.css +1 -0
  7. package/lib/SVGDefinitions.vue +85 -0
  8. package/lib/assets/emojis/tada.png +0 -0
  9. package/lib/assets/halftones/halftone-black.png +0 -0
  10. package/lib/assets/halftones/halftone-blue.png +0 -0
  11. package/lib/assets/halftones/halftone-green.png +0 -0
  12. package/lib/assets/halftones/halftone-purple.png +0 -0
  13. package/lib/assets/halftones/halftone-red.png +0 -0
  14. package/lib/assets/halftones/halftone-yellow.png +0 -0
  15. package/lib/assets/question/paywall-dark.png +0 -0
  16. package/lib/assets/question/paywall-light.png +0 -0
  17. package/lib/components/Banners/Banner.md +41 -0
  18. package/lib/components/Banners/Banner.vue +87 -0
  19. package/lib/components/BundleIcons/AMTA.vue +134 -0
  20. package/lib/components/BundleIcons/BundleIcon.md +60 -0
  21. package/lib/components/BundleIcons/BundleIcon.vue +111 -0
  22. package/lib/components/Bundles/BundleList.md +63 -0
  23. package/lib/components/Bundles/BundleList.vue +170 -0
  24. package/lib/components/Bundles/BundleSearch.md +195 -0
  25. package/lib/components/Bundles/BundleSearch.vue +573 -0
  26. package/lib/components/Bundles/PremiumPill.md +23 -0
  27. package/lib/components/Bundles/PremiumPill.vue +43 -0
  28. package/lib/components/Buttons/Button.md +99 -0
  29. package/lib/components/Buttons/Button.vue +496 -0
  30. package/lib/components/Buttons/Link.md +58 -0
  31. package/lib/components/Buttons/Link.vue +192 -0
  32. package/lib/components/Buttons/Tab.md +35 -0
  33. package/lib/components/Buttons/Tab.vue +103 -0
  34. package/lib/components/Calendar/Calendar.md +18 -0
  35. package/lib/components/Calendar/Calendar.vue +162 -0
  36. package/lib/components/Charts/Bar.md +123 -0
  37. package/lib/components/Charts/Bar.vue +364 -0
  38. package/lib/components/Charts/Pie.md +23 -0
  39. package/lib/components/Charts/Pie.vue +105 -0
  40. package/lib/components/Controls/SegmentControl.md +47 -0
  41. package/lib/components/Controls/SegmentControl.vue +117 -0
  42. package/lib/components/Controls/Slider.md +67 -0
  43. package/lib/components/Controls/Slider.vue +358 -0
  44. package/lib/components/Controls/ToggleSwitch.md +56 -0
  45. package/lib/components/Controls/ToggleSwitch.vue +160 -0
  46. package/lib/components/Exams/ExamCard.md +45 -0
  47. package/lib/components/Exams/ExamCard.vue +257 -0
  48. package/lib/components/Exams/ExamMenuCard.md +90 -0
  49. package/lib/components/Exams/ExamMenuCard.vue +218 -0
  50. package/lib/components/Filters/FilterDropdown.md +59 -0
  51. package/lib/components/Filters/FilterDropdown.vue +176 -0
  52. package/lib/components/Filters/FilterOptions.md +65 -0
  53. package/lib/components/Filters/FilterOptions.vue +265 -0
  54. package/lib/components/Filters/filterOptions.d.ts +10 -0
  55. package/lib/components/Forms/Checkbox.md +52 -0
  56. package/lib/components/Forms/Checkbox.vue +184 -0
  57. package/lib/components/Forms/CheckboxOption.md +37 -0
  58. package/lib/components/Forms/CheckboxOption.vue +173 -0
  59. package/lib/components/Forms/Errors.md +23 -0
  60. package/lib/components/Forms/Errors.vue +109 -0
  61. package/lib/components/Forms/Input.md +63 -0
  62. package/lib/components/Forms/Input.vue +310 -0
  63. package/lib/components/Forms/Radio.md +66 -0
  64. package/lib/components/Forms/Radio.vue +312 -0
  65. package/lib/components/Forms/Select.md +133 -0
  66. package/lib/components/Forms/Select.vue +670 -0
  67. package/lib/components/Forms/Textarea.md +57 -0
  68. package/lib/components/Forms/Textarea.vue +157 -0
  69. package/lib/components/Icons/Icon.md +146 -0
  70. package/lib/components/Icons/Icon.vue +192 -0
  71. package/lib/components/Icons/IconAccordionArrow.md +7 -0
  72. package/lib/components/Icons/IconAccordionArrow.vue +23 -0
  73. package/lib/components/Icons/IconActivity.md +7 -0
  74. package/lib/components/Icons/IconActivity.vue +21 -0
  75. package/lib/components/Icons/IconAdd.md +7 -0
  76. package/lib/components/Icons/IconAdd.vue +19 -0
  77. package/lib/components/Icons/IconAddCircle.md +7 -0
  78. package/lib/components/Icons/IconAddCircle.vue +22 -0
  79. package/lib/components/Icons/IconArrow.md +7 -0
  80. package/lib/components/Icons/IconArrow.vue +21 -0
  81. package/lib/components/Icons/IconBarChart.md +7 -0
  82. package/lib/components/Icons/IconBarChart.vue +23 -0
  83. package/lib/components/Icons/IconCalendar.md +7 -0
  84. package/lib/components/Icons/IconCalendar.vue +19 -0
  85. package/lib/components/Icons/IconCheck.md +7 -0
  86. package/lib/components/Icons/IconCheck.vue +21 -0
  87. package/lib/components/Icons/IconClose.md +7 -0
  88. package/lib/components/Icons/IconClose.vue +23 -0
  89. package/lib/components/Icons/IconCorrect.md +7 -0
  90. package/lib/components/Icons/IconCorrect.vue +19 -0
  91. package/lib/components/Icons/IconEdit.md +7 -0
  92. package/lib/components/Icons/IconEdit.vue +21 -0
  93. package/lib/components/Icons/IconExam.md +7 -0
  94. package/lib/components/Icons/IconExam.vue +34 -0
  95. package/lib/components/Icons/IconExternalLink.md +7 -0
  96. package/lib/components/Icons/IconExternalLink.vue +30 -0
  97. package/lib/components/Icons/IconEyeHide.md +7 -0
  98. package/lib/components/Icons/IconEyeHide.vue +21 -0
  99. package/lib/components/Icons/IconEyeShow.md +7 -0
  100. package/lib/components/Icons/IconEyeShow.vue +21 -0
  101. package/lib/components/Icons/IconFilter.md +7 -0
  102. package/lib/components/Icons/IconFilter.vue +19 -0
  103. package/lib/components/Icons/IconFilterActive.md +7 -0
  104. package/lib/components/Icons/IconFilterActive.vue +20 -0
  105. package/lib/components/Icons/IconFlag.md +7 -0
  106. package/lib/components/Icons/IconFlag.vue +25 -0
  107. package/lib/components/Icons/IconFlagFeedback.md +11 -0
  108. package/lib/components/Icons/IconFlagFeedback.vue +24 -0
  109. package/lib/components/Icons/IconFlagFilled.md +7 -0
  110. package/lib/components/Icons/IconFlagFilled.vue +22 -0
  111. package/lib/components/Icons/IconFullView.md +7 -0
  112. package/lib/components/Icons/IconFullView.vue +30 -0
  113. package/lib/components/Icons/IconFullViewActive.md +7 -0
  114. package/lib/components/Icons/IconFullViewActive.vue +28 -0
  115. package/lib/components/Icons/IconHandle.md +7 -0
  116. package/lib/components/Icons/IconHandle.vue +23 -0
  117. package/lib/components/Icons/IconHeart.md +7 -0
  118. package/lib/components/Icons/IconHeart.vue +19 -0
  119. package/lib/components/Icons/IconHelp.md +7 -0
  120. package/lib/components/Icons/IconHelp.vue +25 -0
  121. package/lib/components/Icons/IconHourglass.md +7 -0
  122. package/lib/components/Icons/IconHourglass.vue +22 -0
  123. package/lib/components/Icons/IconImage.md +7 -0
  124. package/lib/components/Icons/IconImage.vue +21 -0
  125. package/lib/components/Icons/IconIncorrect.md +7 -0
  126. package/lib/components/Icons/IconIncorrect.vue +21 -0
  127. package/lib/components/Icons/IconInfo.md +7 -0
  128. package/lib/components/Icons/IconInfo.vue +24 -0
  129. package/lib/components/Icons/IconKeyboard.md +7 -0
  130. package/lib/components/Icons/IconKeyboard.vue +25 -0
  131. package/lib/components/Icons/IconLaunch.md +7 -0
  132. package/lib/components/Icons/IconLaunch.vue +25 -0
  133. package/lib/components/Icons/IconLightning.md +7 -0
  134. package/lib/components/Icons/IconLightning.vue +21 -0
  135. package/lib/components/Icons/IconList.md +7 -0
  136. package/lib/components/Icons/IconList.vue +26 -0
  137. package/lib/components/Icons/IconLoading.md +7 -0
  138. package/lib/components/Icons/IconLoading.vue +65 -0
  139. package/lib/components/Icons/IconLoading2.md +7 -0
  140. package/lib/components/Icons/IconLoading2.vue +52 -0
  141. package/lib/components/Icons/IconLock.md +7 -0
  142. package/lib/components/Icons/IconLock.vue +23 -0
  143. package/lib/components/Icons/IconMissedQuestions.md +7 -0
  144. package/lib/components/Icons/IconMissedQuestions.vue +22 -0
  145. package/lib/components/Icons/IconMoon.md +7 -0
  146. package/lib/components/Icons/IconMoon.vue +25 -0
  147. package/lib/components/Icons/IconPaginationArrow.md +7 -0
  148. package/lib/components/Icons/IconPaginationArrow.vue +23 -0
  149. package/lib/components/Icons/IconPassage.md +7 -0
  150. package/lib/components/Icons/IconPassage.vue +22 -0
  151. package/lib/components/Icons/IconPencil.md +7 -0
  152. package/lib/components/Icons/IconPencil.vue +19 -0
  153. package/lib/components/Icons/IconPeople.md +7 -0
  154. package/lib/components/Icons/IconPeople.vue +25 -0
  155. package/lib/components/Icons/IconQuestions.md +7 -0
  156. package/lib/components/Icons/IconQuestions.vue +25 -0
  157. package/lib/components/Icons/IconQuick10.md +7 -0
  158. package/lib/components/Icons/IconQuick10.vue +23 -0
  159. package/lib/components/Icons/IconRemoveCircle.md +7 -0
  160. package/lib/components/Icons/IconRemoveCircle.vue +22 -0
  161. package/lib/components/Icons/IconReviewFlag.md +7 -0
  162. package/lib/components/Icons/IconReviewFlag.vue +32 -0
  163. package/lib/components/Icons/IconSearch.md +7 -0
  164. package/lib/components/Icons/IconSearch.vue +23 -0
  165. package/lib/components/Icons/IconShare.md +7 -0
  166. package/lib/components/Icons/IconShare.vue +31 -0
  167. package/lib/components/Icons/IconSideBar.md +7 -0
  168. package/lib/components/Icons/IconSideBar.vue +26 -0
  169. package/lib/components/Icons/IconSideBarActive.md +7 -0
  170. package/lib/components/Icons/IconSideBarActive.vue +28 -0
  171. package/lib/components/Icons/IconStopwatch.md +7 -0
  172. package/lib/components/Icons/IconStopwatch.vue +22 -0
  173. package/lib/components/Icons/IconStrike.md +60 -0
  174. package/lib/components/Icons/IconStrike.vue +23 -0
  175. package/lib/components/Icons/IconSubject.md +7 -0
  176. package/lib/components/Icons/IconSubject.vue +22 -0
  177. package/lib/components/Icons/IconText.md +7 -0
  178. package/lib/components/Icons/IconText.vue +22 -0
  179. package/lib/components/Icons/IconWarning.md +7 -0
  180. package/lib/components/Icons/IconWarning.vue +22 -0
  181. package/lib/components/Modal/Modal.md +31 -0
  182. package/lib/components/Modal/Modal.vue +133 -0
  183. package/lib/components/Modal/ModalContainer.md +96 -0
  184. package/lib/components/Modal/ModalContainer.vue +208 -0
  185. package/lib/components/Onboarding/EmailAuth.md +40 -0
  186. package/lib/components/Onboarding/EmailAuth.vue +218 -0
  187. package/lib/components/Onboarding/MagicCodeEntry.md +20 -0
  188. package/lib/components/Onboarding/MagicCodeEntry.vue +189 -0
  189. package/lib/components/PhonePerson/PhonePerson.md +36 -0
  190. package/lib/components/PhonePerson/PhonePerson.vue +48 -0
  191. package/lib/components/PhonePerson/phoneperson-IT@2x.png +0 -0
  192. package/lib/components/PhonePerson/phoneperson-auto@2x.png +0 -0
  193. package/lib/components/PhonePerson/phoneperson-behavioralhealth@2x.png +0 -0
  194. package/lib/components/PhonePerson/phoneperson-emt@2x.png +0 -0
  195. package/lib/components/PhonePerson/phoneperson-essentials@2x.png +0 -0
  196. package/lib/components/PhonePerson/phoneperson-finance@2x.png +0 -0
  197. package/lib/components/PhonePerson/phoneperson-fitness@2x.png +0 -0
  198. package/lib/components/PhonePerson/phoneperson-medical@2x.png +0 -0
  199. package/lib/components/PhonePerson/phoneperson-nursing@2x.png +0 -0
  200. package/lib/components/PhonePerson/phoneperson-nursingschool@2x.png +0 -0
  201. package/lib/components/PhonePerson/phoneperson-professional@2x.png +0 -0
  202. package/lib/components/PhonePerson/phoneperson-skilledtrades@2x.png +0 -0
  203. package/lib/components/Quiz/FlagToggle.md +37 -0
  204. package/lib/components/Quiz/FlagToggle.vue +124 -0
  205. package/lib/components/Quiz/GlobalMetricsToggle.md +46 -0
  206. package/lib/components/Quiz/GlobalMetricsToggle.vue +124 -0
  207. package/lib/components/Quiz/KeyboardShortcutsButton.md +18 -0
  208. package/lib/components/Quiz/KeyboardShortcutsButton.vue +102 -0
  209. package/lib/components/Quiz/KeyboardShortcutsModal.md +71 -0
  210. package/lib/components/Quiz/KeyboardShortcutsModal.vue +261 -0
  211. package/lib/components/Quiz/Question.md +579 -0
  212. package/lib/components/Quiz/Question.vue +3262 -0
  213. package/lib/components/Quiz/QuizContainer.md +91 -0
  214. package/lib/components/Quiz/QuizContainer.vue +207 -0
  215. package/lib/components/Quiz/QuizProgress.md +122 -0
  216. package/lib/components/Quiz/QuizProgress.vue +188 -0
  217. package/lib/components/Quiz/QuizProgressBar.md +131 -0
  218. package/lib/components/Quiz/QuizProgressBar.vue +96 -0
  219. package/lib/components/Search/Pill.md +37 -0
  220. package/lib/components/Search/Pill.vue +117 -0
  221. package/lib/components/Search/Search.md +44 -0
  222. package/lib/components/Search/Search.vue +341 -0
  223. package/lib/components/SidePanels/SidePanel.md +126 -0
  224. package/lib/components/SidePanels/SidePanel.vue +592 -0
  225. package/lib/components/Tables/StudyTable.md +136 -0
  226. package/lib/components/Tables/Table.vue +497 -0
  227. package/lib/components/Tables/TableActions.vue +199 -0
  228. package/lib/components/Tables/TablePagination.md +19 -0
  229. package/lib/components/Tables/TablePagination.vue +109 -0
  230. package/lib/components/Tables/TeachTable.md +696 -0
  231. package/lib/components/Toasts/Toast.md +35 -0
  232. package/lib/components/Toasts/Toast.vue +213 -0
  233. package/lib/components/Tooltips/OverflowTooltip.md +14 -0
  234. package/lib/components/Tooltips/OverflowTooltip.vue +68 -0
  235. package/lib/components/Tooltips/Tooltip.md +72 -0
  236. package/lib/components/Tooltips/Tooltip.vue +143 -0
  237. package/lib/directives.ts +213 -0
  238. package/lib/index.ts +108 -0
  239. package/{pocketprep-export.module.scss → lib/pocketprep-export.module.scss} +2 -2
  240. package/{pocketprep.scss → lib/pocketprep.scss} +16 -18
  241. package/{styles → lib/styles}/_colors.scss +1 -1
  242. package/lib/styles/fonts.css +149 -0
  243. package/lib/utils.ts +53 -0
  244. package/package.json +75 -56
  245. package/{stylelint.config.js → stylelint.config.cjs} +6 -3
  246. package/assets/Fonts.md +0 -114
  247. package/assets/Images.md +0 -2
  248. package/assets/Styleguidist.vue +0 -11
  249. package/dist/@pocketprep/ui-kit.common.js +0 -29726
  250. package/dist/@pocketprep/ui-kit.common.js.map +0 -1
  251. package/dist/@pocketprep/ui-kit.umd.js +0 -29745
  252. package/dist/@pocketprep/ui-kit.umd.js.map +0 -1
  253. package/dist/@pocketprep/ui-kit.umd.min.js +0 -33
  254. package/dist/@pocketprep/ui-kit.umd.min.js.map +0 -1
  255. package/dist/demo.html +0 -1
  256. package/index.d.ts +0 -63
  257. package/src/directives.d.ts +0 -2
  258. package/src/shims.d.ts +0 -19
  259. package/src/utils.d.ts +0 -51
  260. package/styles/Colors.md +0 -53
  261. package/styles/Styles.md +0 -4
  262. package/styles/_fonts.scss +0 -149
  263. package/tests/shims-test.d.ts +0 -9
  264. /package/{assets → lib/assets}/fonts/muli/muli-400.eot +0 -0
  265. /package/{assets → lib/assets}/fonts/muli/muli-400.svg +0 -0
  266. /package/{assets → lib/assets}/fonts/muli/muli-400.ttf +0 -0
  267. /package/{assets → lib/assets}/fonts/muli/muli-400.woff +0 -0
  268. /package/{assets → lib/assets}/fonts/muli/muli-400.woff2 +0 -0
  269. /package/{assets → lib/assets}/fonts/muli/muli-400italic.eot +0 -0
  270. /package/{assets → lib/assets}/fonts/muli/muli-400italic.svg +0 -0
  271. /package/{assets → lib/assets}/fonts/muli/muli-400italic.ttf +0 -0
  272. /package/{assets → lib/assets}/fonts/muli/muli-400italic.woff +0 -0
  273. /package/{assets → lib/assets}/fonts/muli/muli-400italic.woff2 +0 -0
  274. /package/{assets → lib/assets}/fonts/muli/muli-600.eot +0 -0
  275. /package/{assets → lib/assets}/fonts/muli/muli-600.svg +0 -0
  276. /package/{assets → lib/assets}/fonts/muli/muli-600.ttf +0 -0
  277. /package/{assets → lib/assets}/fonts/muli/muli-600.woff +0 -0
  278. /package/{assets → lib/assets}/fonts/muli/muli-600.woff2 +0 -0
  279. /package/{assets → lib/assets}/fonts/muli/muli-600italic.eot +0 -0
  280. /package/{assets → lib/assets}/fonts/muli/muli-600italic.svg +0 -0
  281. /package/{assets → lib/assets}/fonts/muli/muli-600italic.ttf +0 -0
  282. /package/{assets → lib/assets}/fonts/muli/muli-600italic.woff +0 -0
  283. /package/{assets → lib/assets}/fonts/muli/muli-600italic.woff2 +0 -0
  284. /package/{assets → lib/assets}/fonts/muli/muli-700.eot +0 -0
  285. /package/{assets → lib/assets}/fonts/muli/muli-700.svg +0 -0
  286. /package/{assets → lib/assets}/fonts/muli/muli-700.ttf +0 -0
  287. /package/{assets → lib/assets}/fonts/muli/muli-700.woff +0 -0
  288. /package/{assets → lib/assets}/fonts/muli/muli-700.woff2 +0 -0
  289. /package/{assets → lib/assets}/fonts/muli/muli-700italic.eot +0 -0
  290. /package/{assets → lib/assets}/fonts/muli/muli-700italic.svg +0 -0
  291. /package/{assets → lib/assets}/fonts/muli/muli-700italic.ttf +0 -0
  292. /package/{assets → lib/assets}/fonts/muli/muli-700italic.woff +0 -0
  293. /package/{assets → lib/assets}/fonts/muli/muli-700italic.woff2 +0 -0
  294. /package/{assets → lib/assets}/images/amta.svg +0 -0
  295. /package/{assets → lib/assets}/images/favicon.ico +0 -0
  296. /package/{assets → lib/assets}/images/thumb-large-dark.svg +0 -0
  297. /package/{assets → lib/assets}/images/thumb-large.svg +0 -0
  298. /package/{assets → lib/assets}/images/thumb-small-dark.svg +0 -0
  299. /package/{assets → lib/assets}/images/thumb-small.svg +0 -0
  300. /package/{src → lib}/components/BundleIcons/bundleIcon.d.ts +0 -0
  301. /package/{src → lib}/components/Icons/icon.d.ts +0 -0
  302. /package/{src → lib}/components/PhonePerson/phonePerson.d.ts +0 -0
  303. /package/{src → lib}/components/Tables/table.d.ts +0 -0
  304. /package/{styles → lib/styles}/_breakpoints.scss +0 -0
  305. /package/{styles/_normalize.scss → lib/styles/normalize.css} +0 -0
@@ -0,0 +1,99 @@
1
+ ```vue
2
+ <template>
3
+ <div>
4
+ <Button @click="allDisabled = !allDisabled">Toggle Disabled Status</Button>
5
+ <div class="white">
6
+ <h3>White Background</h3>
7
+ <Button :disabled="allDisabled">Primary</Button>
8
+ <Button :isLoading="true" :disabled="allDisabled">Primary Loading</Button>
9
+ <Button type="primary-yellow" :disabled="allDisabled">Primary Yellow</Button>
10
+ <Button type="primary-red" :disabled="allDisabled">Primary Red</Button>
11
+ <Button type="secondary" :disabled="allDisabled">Secondary</Button>
12
+ <Button type="tertiary" :disabled="allDisabled">Tertiary</Button>
13
+ <Button type="tertiary-red" :disabled="allDisabled">Tertiary Red</Button>
14
+ <Button type="tertiary-small" :disabled="allDisabled">Tertiary Small</Button>
15
+ <Button type="tertiary-red-small" :disabled="allDisabled">Tertiary Red Small</Button>
16
+ <Button type="icon" icon="filter" :disabled="allDisabled">Icon</Button>
17
+ <Button type="icon" icon="add" :disabled="allDisabled" />
18
+ </div>
19
+ <div class="gray">
20
+ <h3>Gray Background</h3>
21
+ <Button :disabled="allDisabled">Primary</Button>
22
+ <Button :isLoading="true" :disabled="allDisabled">Primary Loading</Button>
23
+ <Button type="primary-yellow" :disabled="allDisabled">Primary Yellow</Button>
24
+ <Button type="primary-red" :disabled="allDisabled">Primary Red</Button>
25
+ <Button type="secondary" :disabled="allDisabled">Secondary</Button>
26
+ <Button type="tertiary" :disabled="allDisabled">Tertiary</Button>
27
+ <Button type="tertiary-red" :disabled="allDisabled">Tertiary Red</Button>
28
+ <Button type="tertiary-small" :disabled="allDisabled">Tertiary Small</Button>
29
+ <Button type="tertiary-red-small" :disabled="allDisabled">Tertiary Red Small</Button>
30
+ <Button type="icon" icon="filter" :disabled="allDisabled">Icon</Button>
31
+ <Button type="icon" icon="add" :disabled="allDisabled" />
32
+ </div>
33
+ <div class="dark">
34
+ <h3>Dark Mode</h3>
35
+ <Button :isDarkMode="true" :disabled="allDisabled">Primary</Button>
36
+ <Button :isDarkMode="true" :isLoading="true" :disabled="allDisabled">Primary</Button>
37
+ <Button :isDarkMode="true" type="primary-yellow" :disabled="allDisabled">Primary Yellow</Button>
38
+ <Button :isDarkMode="true" type="primary-red" :disabled="allDisabled">Primary Red</Button>
39
+ <Button :isDarkMode="true" type="secondary" :disabled="allDisabled">Secondary</Button>
40
+ <Button :isDarkMode="true" type="tertiary" :disabled="allDisabled">Tertiary</Button>
41
+ <Button :isDarkMode="true" type="tertiary-red" :disabled="allDisabled">Tertiary Red</Button>
42
+ <Button :isDarkMode="true" type="tertiary-small" :disabled="allDisabled">Tertiary Small</Button>
43
+ <Button :isDarkMode="true" type="tertiary-red-small" :disabled="allDisabled">Tertiary Red Small</Button>
44
+ <Button :isDarkMode="true" type="icon" icon="filter" :disabled="allDisabled">Icon</Button>
45
+ <Button :isDarkMode="true" type="icon" icon="add" :disabled="allDisabled" />
46
+ </div>
47
+ <div class="dark">
48
+ <h3>Dark Background</h3>
49
+ <Button type="secondary-yellow-dark" :disabled="allDisabled">Secondary Yellow Dark</Button>
50
+ <Button type="icon-yellow" icon="filter" :disabled="allDisabled">Icon Yellow</Button>
51
+ <Button type="icon-yellow" icon="add" :disabled="allDisabled" />
52
+ </div>
53
+ </div>
54
+ </template>
55
+
56
+ <script>
57
+ export default {
58
+ data() {
59
+ return {
60
+ allDisabled: false
61
+ }
62
+ }
63
+ }
64
+ </script>
65
+
66
+ <style>
67
+ .white,
68
+ .gray,
69
+ .dark {
70
+ margin: 10px 0;
71
+ padding: 20px;
72
+ border: 1px solid #1f3545;
73
+ display: flex;
74
+ flex-wrap: wrap;
75
+ align-items: center;
76
+ }
77
+
78
+ .white {
79
+ background-color: #fff;
80
+ }
81
+
82
+ .gray {
83
+ background-color: #fbfbfd;
84
+ }
85
+
86
+ .dark {
87
+ color: white;
88
+ background-color: #1f3545;
89
+ }
90
+
91
+ h3 {
92
+ width: 100%;
93
+ }
94
+
95
+ button {
96
+ margin: 4px;
97
+ }
98
+ </style>
99
+ ```
@@ -0,0 +1,496 @@
1
+ <template>
2
+ <button
3
+ v-dark="isDarkMode"
4
+ class="uikit-btn"
5
+ :class="{
6
+ [`uikit-btn--${type}`]: true,
7
+ [`uikit-btn--${type}--is-loading`]: isLoading,
8
+ 'uikit-btn--icon--no-text': !$slots.default?.(),
9
+ }"
10
+ :disabled="disabled"
11
+ tabindex="0"
12
+ @click="buttonClicked"
13
+ @mousedown.prevent
14
+ >
15
+ <Icon
16
+ v-if="isLoading"
17
+ v-dark="isDarkMode"
18
+ aria-label="Loading"
19
+ role="alert"
20
+ type="loading2"
21
+ class="uikit-btn__loading-icon"
22
+ :is-dark-mode="isDarkMode"
23
+ />
24
+ <div class="uikit-btn__content" :class="{ 'uikit-btn__content--is-loading': isLoading }">
25
+ <Icon
26
+ v-if="icon && (type === 'icon' || type === 'icon-yellow')"
27
+ v-dark="isDarkMode"
28
+ class="uikit-btn-icon__icon"
29
+ :class="{
30
+ 'uikit-btn-icon__icon--no-text': !$slots.default?.(),
31
+ }"
32
+ :title="iconTitle"
33
+ :type="icon"
34
+ />
35
+ <slot />
36
+ </div>
37
+ </button>
38
+ </template>
39
+
40
+ <script lang="ts">
41
+ import { Vue, Component, Prop, Emit } from 'vue-facing-decorator'
42
+ import Icon from '../Icons/Icon.vue'
43
+ import type { TIconType } from '../Icons/icon'
44
+ import { dark } from '../../directives'
45
+
46
+ type TButtonType = 'primary' | 'primary-yellow' | 'primary-red' | 'secondary'
47
+ | 'secondary-yellow-dark' | 'tertiary' | 'tertiary-red' | 'tertiary-small' | 'tertiary-red-small' | 'icon'
48
+ | 'icon-yellow'
49
+
50
+ @Component({
51
+ components: {
52
+ Icon,
53
+ },
54
+ directives: {
55
+ dark,
56
+ },
57
+ })
58
+ export default class Button extends Vue {
59
+ @Prop({ default: 'primary' }) readonly type!: TButtonType
60
+ @Prop({ default: false }) readonly disabled!: boolean
61
+ @Prop({ default: false }) readonly isDarkMode!: boolean
62
+ @Prop({ default: null }) readonly icon!: TIconType
63
+ @Prop({ default: '' }) readonly iconTitle!: string
64
+ @Prop({ default: false }) isLoading!: boolean
65
+
66
+ buttonClicked () {
67
+ if (!this.disabled && !this.isLoading) {
68
+ this.emitClick()
69
+ }
70
+ }
71
+
72
+ @Emit('click')
73
+ emitClick () {
74
+ return true
75
+ }
76
+ }
77
+ </script>
78
+
79
+ <style lang="scss">
80
+ @import '../../styles/colors';
81
+ @import '../../styles/breakpoints';
82
+
83
+ .uikit-btn {
84
+ position: relative;
85
+ cursor: pointer;
86
+
87
+ &__loading-icon {
88
+ margin: -2px 0;
89
+ position: absolute;
90
+ left: 50%;
91
+ top: 50%;
92
+ margin-left: -11.5px;
93
+ margin-top: -11.5px;
94
+
95
+ .uikit-loading {
96
+ border-color: $barely-blue;
97
+ border-top-color: $baby-blue;
98
+ }
99
+
100
+ &--dark {
101
+ .uikit-loading {
102
+ border-color: $brand-black;
103
+ border-top-color: $buttermilk;
104
+ }
105
+ }
106
+ }
107
+
108
+ &__content {
109
+ &--is-loading {
110
+ color: transparent;
111
+ opacity: 0;
112
+ }
113
+ }
114
+
115
+ &--primary,
116
+ &--primary-yellow,
117
+ &--primary-red,
118
+ &--secondary,
119
+ &--secondary-yellow-dark {
120
+ font-size: 15px;
121
+ line-height: 18px;
122
+ padding: 11px 18px 10px;
123
+ border-radius: 4px;
124
+ border: none;
125
+ user-select: none;
126
+ outline: none;
127
+ font-weight: 600;
128
+
129
+ @include breakpoint(brown-bear) {
130
+ padding: 13px 18px 12px;
131
+ }
132
+
133
+ &:enabled:focus::before {
134
+ content: '';
135
+ position: absolute;
136
+ top: -2px;
137
+ bottom: -2px;
138
+ left: -2px;
139
+ right: -2px;
140
+ border: 1px solid $brand-blue;
141
+ border-radius: 6px;
142
+ }
143
+
144
+ &--dark:enabled:focus::before {
145
+ border-color: $butterscotch;
146
+ }
147
+ }
148
+
149
+ &--primary {
150
+ background-color: $brand-blue;
151
+ color: $white;
152
+
153
+ &:enabled {
154
+ &:hover {
155
+ background-color: mix($brand-blue, black, 90%);
156
+ }
157
+
158
+ &:active {
159
+ background-color: mix($brand-blue, black, 80%);
160
+ }
161
+ }
162
+
163
+ &--dark {
164
+ background-color: $banana-bread;
165
+ color: $brand-black;
166
+
167
+ &:enabled {
168
+ &:hover {
169
+ background-color: $butterscotch;
170
+ }
171
+
172
+ &:active {
173
+ background-color: mix($butterscotch, black, 80%);
174
+ }
175
+ }
176
+ }
177
+
178
+ &--is-loading {
179
+ cursor: default;
180
+ background-color: mix($brand-blue, black, 90%) !important;
181
+
182
+ &--dark {
183
+ background-color: $butterscotch !important;
184
+ }
185
+ }
186
+ }
187
+
188
+ &--primary-yellow {
189
+ background-color: $banana-bread;
190
+ color: $brand-black;
191
+ font-size: 15px;
192
+ font-weight: 600;
193
+
194
+ &:enabled {
195
+ &:hover,
196
+ &:active {
197
+ background-color: $butterscotch;
198
+ }
199
+ }
200
+
201
+ &:disabled {
202
+ opacity: 0.59;
203
+ }
204
+ }
205
+
206
+ &--primary-red {
207
+ background-color: $red-pegasus;
208
+ color: $white;
209
+ font-size: 15px;
210
+ font-weight: 600;
211
+
212
+ &:enabled {
213
+ &:hover,
214
+ &:active {
215
+ background-color: mix($red-pegasus, black, 90%);
216
+ }
217
+ }
218
+
219
+ &:disabled {
220
+ opacity: 0.3;
221
+ }
222
+
223
+ &--dark {
224
+ background-color: $rosa;
225
+ color: $brand-black;
226
+
227
+ &:enabled {
228
+ &:hover,
229
+ &:active {
230
+ background-color: mix($rosa, black, 90%);
231
+ }
232
+ }
233
+ }
234
+ }
235
+
236
+ &--secondary {
237
+ background-color: transparent;
238
+ color: $brand-blue;
239
+ font-size: 15px;
240
+ font-weight: 600;
241
+
242
+ &:enabled {
243
+ &:hover {
244
+ background-color: mix($barely-background, black, 96%);
245
+ }
246
+
247
+ &:active {
248
+ background-color: mix($gray-background, black, 92%);
249
+ }
250
+ }
251
+
252
+ &--dark {
253
+ color: $banana-bread;
254
+
255
+ &:enabled {
256
+ &:hover,
257
+ &:focus {
258
+ background-color: transparent;
259
+
260
+ &::after {
261
+ content: '';
262
+ position: absolute;
263
+ left: 0;
264
+ top: 0;
265
+ width: 100%;
266
+ height: 100%;
267
+ background-color: mix($barely-background, black, 96%);
268
+ opacity: 0.1;
269
+ border-radius: 4px;
270
+ }
271
+ }
272
+
273
+ &:active {
274
+ background-color: $ash;
275
+ }
276
+ }
277
+ }
278
+ }
279
+
280
+ &--secondary-yellow-dark {
281
+ font-size: 15px;
282
+ font-weight: 600;
283
+ background-color: rgba($cream-puff, 0.14);
284
+ border-radius: 6px;
285
+ color: $banana-bread;
286
+
287
+ &:disabled {
288
+ background-color: transparent;
289
+ }
290
+
291
+ &:enabled {
292
+ &:hover {
293
+ background-color: rgba($cream-puff, 0.26);
294
+ }
295
+
296
+ &:focus {
297
+ &::before {
298
+ border: 1px solid $butterscotch;
299
+ }
300
+ }
301
+
302
+ &:active {
303
+ background-color: rgba($cream-puff, 0.3);
304
+ }
305
+ }
306
+ }
307
+
308
+ &--tertiary,
309
+ &--tertiary-red,
310
+ &--tertiary-small,
311
+ &--tertiary-red-small {
312
+ font-size: 15px;
313
+ background-color: transparent;
314
+ border: none;
315
+ user-select: none;
316
+ outline: none;
317
+ font-weight: 600;
318
+ padding: 0;
319
+ text-decoration: none;
320
+
321
+ &:enabled:hover {
322
+ text-decoration: underline;
323
+ color: mix($brand-blue, black, 90%);
324
+ }
325
+
326
+ &:enabled:focus::before {
327
+ content: '';
328
+ position: absolute;
329
+ left: -3px;
330
+ top: -1px;
331
+ height: 100%;
332
+ width: calc(100% + 4px);
333
+ border: 1px solid $brand-blue;
334
+ border-radius: 4px;
335
+ }
336
+ }
337
+
338
+ &--tertiary,
339
+ &--tertiary-red {
340
+ font-size: 15px;
341
+ line-height: 18px;
342
+ }
343
+
344
+ &--tertiary-small,
345
+ &--tertiary-red-small {
346
+ font-size: 14px;
347
+ }
348
+
349
+ &--tertiary,
350
+ &--tertiary-small {
351
+ color: $brand-blue;
352
+
353
+ &:enabled {
354
+ &:focus {
355
+ color: mix($brand-blue, black, 90%);
356
+ }
357
+
358
+ &:active {
359
+ color: mix($brand-blue, black, 80%);
360
+ }
361
+ }
362
+
363
+ &--dark {
364
+ color: $banana-bread;
365
+
366
+ &:enabled {
367
+ &:hover,
368
+ &:focus,
369
+ &:active {
370
+ color: $butterscotch;
371
+ }
372
+
373
+ &:focus {
374
+ &::before {
375
+ border-color: $butterscotch;
376
+ }
377
+ }
378
+ }
379
+ }
380
+ }
381
+
382
+ &--tertiary-red,
383
+ &--tertiary-red-small {
384
+ color: $lust;
385
+
386
+ &:enabled {
387
+ &:hover,
388
+ &:focus {
389
+ color: mix($lust, black, 90%);
390
+
391
+ &::before {
392
+ border-color: $lust;
393
+ }
394
+ }
395
+
396
+ &:active {
397
+ color: mix($lust, black, 80%);
398
+ }
399
+ }
400
+
401
+ &--dark {
402
+ color: $rosa;
403
+
404
+ &:enabled {
405
+ &:hover,
406
+ &:focus,
407
+ &:active {
408
+ color: mix($rosa, black, 90%);
409
+ }
410
+
411
+ &:focus {
412
+ &::before {
413
+ border-color: mix($rosa, black, 90%);
414
+ }
415
+ }
416
+ }
417
+ }
418
+ }
419
+
420
+ &--icon,
421
+ &--icon-yellow {
422
+ user-select: none;
423
+ outline: none;
424
+ color: $brand-blue;
425
+ background-color: transparent;
426
+ font-weight: 600;
427
+ font-size: 15px;
428
+ line-height: 18px;
429
+ height: 28px;
430
+ padding: 2px 8px 2px 4px;
431
+ display: inline-flex;
432
+ align-items: center;
433
+ border: 1px solid transparent;
434
+ border-radius: 4px;
435
+
436
+ &--no-text {
437
+ padding: 2px 4px;
438
+ }
439
+
440
+ &:enabled {
441
+ &:hover,
442
+ &:active {
443
+ color: $brand-black;
444
+ }
445
+
446
+ &:focus {
447
+ border: 1px solid $brand-blue;
448
+ }
449
+ }
450
+
451
+ &--dark {
452
+ color: $banana-bread;
453
+
454
+ &:enabled {
455
+ &:hover,
456
+ &:active,
457
+ &:focus {
458
+ color: $butterscotch;
459
+ }
460
+
461
+ &:focus {
462
+ border: 1px solid $butterscotch;
463
+ }
464
+ }
465
+ }
466
+ }
467
+
468
+ &--icon-yellow {
469
+ color: $banana-bread;
470
+
471
+ &:enabled {
472
+ &:hover,
473
+ &:active {
474
+ color: $butterscotch;
475
+ }
476
+
477
+ &:focus {
478
+ border: 1px solid $butterscotch;
479
+ }
480
+ }
481
+ }
482
+
483
+ &__icon {
484
+ margin-right: 2px;
485
+
486
+ &--no-text {
487
+ margin-right: 0;
488
+ }
489
+ }
490
+
491
+ &:disabled {
492
+ opacity: 0.4;
493
+ cursor: auto;
494
+ }
495
+ }
496
+ </style>
@@ -0,0 +1,58 @@
1
+ ```vue
2
+ <template>
3
+ <div>
4
+ <div class="light">
5
+ <Link type="tertiary">Tertiary</Link>
6
+ <br>
7
+ <Link :has-icon="true">
8
+ <Icon type="filter"/>
9
+ Tertiary with Icon
10
+ </Link>
11
+ <br>
12
+ <Link type="tertiary-red">Tertiary Red</Link>
13
+ <br>
14
+ <Link type="tertiary-small">Tertiary Small</Link>
15
+ </div>
16
+ <div class="dark">
17
+ <Link isDarkMode="true" type="tertiary">Tertiary</Link>
18
+ <br>
19
+ <Link isDarkMode="true" :has-icon="true">
20
+ <Icon type="filter"/>
21
+ Tertiary with Icon
22
+ </Link>
23
+ <br>
24
+ <Link isDarkMode="true" type="tertiary-red">Tertiary Red</Link>
25
+ <br>
26
+ <Link isDarkMode="true" type="tertiary-small">Tertiary Small</Link>
27
+ </div>
28
+ </div>
29
+ </template>
30
+
31
+ <script>
32
+ import Icon from '../Icons/Icon.vue'
33
+
34
+ export default {
35
+ components: {
36
+ Icon
37
+ }
38
+ }
39
+ </script>
40
+
41
+ <style>
42
+ .light,
43
+ .dark {
44
+ padding: 30px;
45
+ }
46
+
47
+ .dark {
48
+ background-color: #1f3545;
49
+ }
50
+
51
+ svg {
52
+ width: 20px;
53
+ vertical-align: top;
54
+ margin-right: 5px;
55
+ margin-top: -4px;
56
+ }
57
+ </style>
58
+ ```