@propelinc/citrus-ui 0.5.1 → 1.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 (299) hide show
  1. package/README.md +56 -86
  2. package/dist/colors/colors.d.ts +31 -0
  3. package/dist/colors/theme.d.ts +2 -11
  4. package/dist/colors/util-classes.d.ts +11 -0
  5. package/dist/components/CAccordion.vue.d.ts +21 -0
  6. package/dist/components/CAccordionItem.vue.d.ts +41 -0
  7. package/dist/components/CAppBar.vue.d.ts +156 -0
  8. package/dist/components/CBadge.vue.d.ts +52 -0
  9. package/dist/components/CBottomSheet.vue.d.ts +226 -0
  10. package/dist/components/CButton/CButton.vue.d.ts +231 -0
  11. package/dist/components/CButton/types.d.ts +5 -0
  12. package/dist/components/CButtonStack.vue.d.ts +24 -0
  13. package/dist/components/CCard.vue.d.ts +107 -0
  14. package/dist/components/CCardFooter.vue.d.ts +26 -0
  15. package/dist/components/CCardHeader.vue.d.ts +3 -0
  16. package/dist/components/CCardSection.vue.d.ts +17 -0
  17. package/dist/components/CCheckbox.vue.d.ts +145 -0
  18. package/dist/components/CCol.vue.d.ts +21 -0
  19. package/dist/components/CDivider.vue.d.ts +17 -0
  20. package/dist/components/CDobField.vue.d.ts +2109 -0
  21. package/dist/components/CDobSelect.vue.d.ts +398 -0
  22. package/dist/components/CEmailField.vue.d.ts +699 -0
  23. package/dist/components/CExpandTransition.vue.d.ts +19 -0
  24. package/dist/components/CFadeTransition.vue.d.ts +3 -0
  25. package/dist/components/CFileInput.vue.d.ts +98 -0
  26. package/dist/components/CFixedPageFooter.vue.d.ts +106 -0
  27. package/dist/components/CForm.vue.d.ts +29 -0
  28. package/dist/components/CFormFieldCounter.vue.d.ts +42 -0
  29. package/dist/components/CIconButton.vue.d.ts +390 -0
  30. package/dist/components/CLabel.vue.d.ts +32 -0
  31. package/dist/components/CListItem.vue.d.ts +208 -0
  32. package/dist/components/CListItemContent.vue.d.ts +27 -0
  33. package/dist/components/CListItemIcon.vue.d.ts +54 -0
  34. package/dist/components/CLoader.vue.d.ts +73 -0
  35. package/dist/components/CLogo.vue.d.ts +19 -0
  36. package/dist/components/CMaskedTextField.vue.d.ts +2012 -0
  37. package/dist/components/CMenu.vue.d.ts +6 -0
  38. package/dist/components/CMenuItem.vue.d.ts +170 -0
  39. package/dist/components/CMenuLabel.vue.d.ts +3 -0
  40. package/dist/components/CModal.vue.d.ts +206 -0
  41. package/dist/components/CModalLoading.vue.d.ts +230 -0
  42. package/dist/components/CNotification.vue.d.ts +589 -0
  43. package/dist/components/CPhoneField.vue.d.ts +2088 -0
  44. package/dist/components/CPill.vue.d.ts +42 -0
  45. package/dist/components/CPillGroup.vue.d.ts +70 -0
  46. package/dist/components/CPopup.vue.d.ts +21 -0
  47. package/dist/components/CProgressLinear.vue.d.ts +61 -0
  48. package/dist/components/CProgressRing.vue.d.ts +103 -0
  49. package/dist/components/CRadio.vue.d.ts +73 -0
  50. package/dist/components/CRadioGroup.vue.d.ts +123 -0
  51. package/dist/components/CRebrand.vue.d.ts +28 -0
  52. package/dist/components/CRow.vue.d.ts +67 -0
  53. package/dist/components/CSafeArea.vue.d.ts +18 -0
  54. package/dist/components/CSectionHeader.vue.d.ts +28 -0
  55. package/dist/components/CSelect.vue.d.ts +293 -0
  56. package/dist/components/CSkeleton.vue.d.ts +3 -0
  57. package/dist/components/CSkeletonLoaderCard.vue.d.ts +21 -0
  58. package/dist/components/CSkeletonLoaderCircle.vue.d.ts +5 -0
  59. package/dist/components/CSkeletonLoaderText.vue.d.ts +44 -0
  60. package/dist/components/CSlideFadeTransition.vue.d.ts +58 -0
  61. package/dist/components/CSplitInput.vue.d.ts +2131 -0
  62. package/dist/components/CSquaredIcon.vue.d.ts +47 -0
  63. package/dist/components/CSsnField.vue.d.ts +2083 -0
  64. package/dist/components/CStatusDot.vue.d.ts +27 -0
  65. package/dist/components/CSwitch.vue.d.ts +54 -0
  66. package/dist/components/CSwitchListItem.vue.d.ts +392 -0
  67. package/dist/components/CTextArea.vue.d.ts +240 -0
  68. package/dist/components/CTextField.vue.d.ts +647 -0
  69. package/dist/components/CTextLink.vue.d.ts +55 -0
  70. package/dist/components/CThirdPartyLogo.vue.d.ts +128 -0
  71. package/dist/components/CTimeago.vue.d.ts +12 -0
  72. package/dist/components/CToast.vue.d.ts +458 -0
  73. package/dist/components/CToastsList.vue.d.ts +430 -0
  74. package/dist/components/CValidationMessage.vue.d.ts +45 -0
  75. package/dist/components/CZipcodeField.vue.d.ts +2080 -0
  76. package/dist/components/index.d.ts +66 -25
  77. package/dist/components/internal/CCloseButton.vue.d.ts +14 -0
  78. package/dist/composables/accessibility.d.ts +1 -0
  79. package/dist/composables/animation.d.ts +12 -0
  80. package/dist/composables/binding.d.ts +19 -0
  81. package/dist/composables/colors.d.ts +13 -0
  82. package/dist/composables/elements.d.ts +3 -0
  83. package/dist/composables/fields.d.ts +9 -0
  84. package/dist/composables/gestures.d.ts +53 -0
  85. package/dist/composables/i18n.d.ts +3 -0
  86. package/dist/composables/id.d.ts +11 -0
  87. package/dist/composables/input-mask.d.ts +18 -0
  88. package/dist/composables/router.d.ts +30 -0
  89. package/dist/composables/slots.d.ts +2 -0
  90. package/dist/composables/toast.d.ts +21 -0
  91. package/dist/composables/validations.d.ts +77 -0
  92. package/dist/index.css +1 -0
  93. package/dist/index.d.ts +5 -4
  94. package/dist/index.mjs +11738 -0
  95. package/dist/index.mjs.map +1 -0
  96. package/dist/plugin.d.ts +2 -2
  97. package/dist/services/animation.d.ts +17 -0
  98. package/dist/services/directives/index.d.ts +2 -0
  99. package/dist/services/directives/scroll-into-view.d.ts +7 -0
  100. package/dist/services/directives/tap-animation.d.ts +6 -0
  101. package/dist/services/id.d.ts +22 -0
  102. package/dist/services/injections/accordions.d.ts +3 -0
  103. package/dist/services/injections/animations.d.ts +2 -0
  104. package/dist/services/injections/buttons.d.ts +4 -0
  105. package/dist/services/injections/forms.d.ts +6 -0
  106. package/dist/services/injections/icon-buttons.d.ts +3 -0
  107. package/dist/services/injections/pills.d.ts +4 -0
  108. package/dist/services/injections/radio.d.ts +10 -0
  109. package/dist/styles/main.css +3002 -0
  110. package/dist/styles/utils.css +2319 -0
  111. package/dist/theme/icons.d.ts +35 -2
  112. package/dist/types/CForm.d.ts +12 -0
  113. package/dist/types/font-awesome.d.ts +5 -0
  114. package/dist/types.d.ts +12 -0
  115. package/index.ts +2 -0
  116. package/package.json +63 -77
  117. package/src/assets/fonts/grenette-regular.woff2 +0 -0
  118. package/src/assets/fonts/grenette-semibold.woff2 +0 -0
  119. package/src/assets/fonts/polymath.woff2 +0 -0
  120. package/src/assets/logos/propel/icon.svg +15 -0
  121. package/src/assets/logos/propel/lockup.svg +11 -0
  122. package/src/colors/colors.ts +173 -0
  123. package/src/colors/theme.ts +8 -14
  124. package/src/colors/util-classes.ts +49 -0
  125. package/src/componentResolver.js +33 -0
  126. package/src/components/CAccordion.vue +32 -7
  127. package/src/components/CAccordionItem.vue +109 -36
  128. package/src/components/CAppBar.vue +237 -0
  129. package/src/components/CBadge.vue +74 -0
  130. package/src/components/CBottomSheet.vue +430 -0
  131. package/src/components/CButton/CButton.vue +347 -0
  132. package/src/components/CButton/types.ts +5 -0
  133. package/src/components/CButtonStack.vue +36 -0
  134. package/src/components/CCard.vue +149 -41
  135. package/src/components/CCardFooter.vue +11 -27
  136. package/src/components/CCardHeader.vue +30 -21
  137. package/src/components/CCardSection.vue +23 -12
  138. package/src/components/CCheckbox.vue +191 -21
  139. package/src/components/CCol.vue +55 -0
  140. package/src/components/CDivider.vue +46 -0
  141. package/src/components/CDobField.vue +153 -0
  142. package/src/components/CDobSelect.vue +274 -0
  143. package/src/components/CEmailField.vue +61 -0
  144. package/src/components/CExpandTransition.vue +55 -0
  145. package/src/components/CFadeTransition.vue +23 -0
  146. package/src/components/CFileInput.vue +186 -0
  147. package/src/components/CFixedPageFooter.vue +76 -0
  148. package/src/components/CForm.vue +86 -0
  149. package/src/components/CFormFieldCounter.vue +40 -0
  150. package/src/components/CIconButton.vue +175 -59
  151. package/src/components/CLabel.vue +52 -0
  152. package/src/components/CListItem.vue +149 -45
  153. package/src/components/CListItemContent.vue +60 -0
  154. package/src/components/CListItemIcon.vue +27 -31
  155. package/src/components/CLoader.vue +156 -0
  156. package/src/components/CLogo.vue +23 -0
  157. package/src/components/CMaskedTextField.vue +118 -0
  158. package/src/components/CMenu.vue +24 -0
  159. package/src/components/CMenuItem.vue +106 -0
  160. package/src/components/CMenuLabel.vue +26 -0
  161. package/src/components/CModal.vue +198 -79
  162. package/src/components/CModalLoading.vue +27 -9
  163. package/src/components/CNotification.vue +86 -53
  164. package/src/components/CPhoneField.vue +69 -0
  165. package/src/components/CPill.vue +162 -0
  166. package/src/components/CPillGroup.vue +73 -0
  167. package/src/components/CPopup.vue +66 -0
  168. package/src/components/CProgressLinear.vue +52 -0
  169. package/src/components/CProgressRing.vue +126 -0
  170. package/src/components/CRadio.vue +138 -0
  171. package/src/components/CRadioGroup.vue +142 -0
  172. package/src/components/CRebrand.vue +28 -0
  173. package/src/components/CRow.vue +62 -0
  174. package/src/components/CSafeArea.vue +23 -0
  175. package/src/components/CSectionHeader.vue +50 -0
  176. package/src/components/CSelect.vue +223 -74
  177. package/src/components/CSkeleton.vue +65 -0
  178. package/src/components/CSkeletonLoaderCard.vue +29 -0
  179. package/src/components/CSkeletonLoaderCircle.vue +18 -14
  180. package/src/components/CSkeletonLoaderText.vue +127 -17
  181. package/src/components/CSlideFadeTransition.vue +100 -0
  182. package/src/components/CSplitInput.vue +111 -0
  183. package/src/components/CSquaredIcon.vue +83 -0
  184. package/src/components/CSsnField.vue +86 -0
  185. package/src/components/CStatusDot.vue +70 -0
  186. package/src/components/CSwitch.vue +125 -0
  187. package/src/components/CSwitchListItem.vue +110 -0
  188. package/src/components/CTextArea.vue +193 -47
  189. package/src/components/CTextField.vue +450 -93
  190. package/src/components/CTextLink.vue +48 -38
  191. package/src/components/CThirdPartyLogo.vue +127 -0
  192. package/src/components/CTimeago.vue +63 -0
  193. package/src/components/CToast.vue +259 -0
  194. package/src/components/CToastsList.vue +32 -0
  195. package/src/components/CValidationMessage.vue +70 -0
  196. package/src/components/CZipcodeField.vue +69 -0
  197. package/src/components/index.ts +66 -25
  198. package/src/components/internal/CCloseButton.vue +57 -0
  199. package/src/composables/accessibility.ts +29 -0
  200. package/src/composables/animation.ts +95 -0
  201. package/src/composables/binding.ts +34 -0
  202. package/src/composables/colors.ts +59 -0
  203. package/src/composables/elements.ts +72 -0
  204. package/src/composables/fields.ts +19 -0
  205. package/src/composables/gestures.ts +197 -0
  206. package/src/composables/i18n.ts +13 -0
  207. package/src/composables/id.ts +23 -0
  208. package/src/composables/input-mask.ts +139 -0
  209. package/src/composables/router.ts +64 -0
  210. package/src/composables/slots.ts +57 -0
  211. package/src/composables/toast.ts +64 -0
  212. package/src/composables/validations.ts +214 -0
  213. package/src/index.ts +7 -7
  214. package/src/plugin.ts +13 -6
  215. package/src/services/animation.ts +101 -0
  216. package/src/services/directives/index.ts +2 -0
  217. package/src/services/directives/scroll-into-view.ts +86 -0
  218. package/src/services/directives/tap-animation.ts +71 -0
  219. package/src/services/id.ts +31 -0
  220. package/src/services/injections/accordions.ts +4 -0
  221. package/src/services/injections/animations.ts +3 -0
  222. package/src/services/injections/buttons.ts +5 -0
  223. package/src/services/injections/forms.ts +8 -0
  224. package/src/services/injections/icon-buttons.ts +4 -0
  225. package/src/services/injections/pills.ts +7 -0
  226. package/src/services/injections/radio.ts +12 -0
  227. package/src/shims-vue.d.ts +6 -3
  228. package/src/styles/_animation.scss +19 -0
  229. package/src/styles/_button.scss +61 -0
  230. package/src/styles/_colors.scss +58 -11
  231. package/src/styles/_core.scss +280 -119
  232. package/src/styles/_form-fields.scss +69 -16
  233. package/src/styles/_grenette.scss +13 -0
  234. package/src/styles/_polymath.scss +14 -0
  235. package/src/styles/_reset.scss +105 -0
  236. package/src/styles/_shoelace.scss +46 -0
  237. package/src/styles/_typography.scss +39 -10
  238. package/src/styles/main.scss +6 -3
  239. package/src/styles/utils/a11y.scss +18 -0
  240. package/src/styles/utils/typography.scss +13 -0
  241. package/src/styles/utils.scss +560 -0
  242. package/src/styles/variables.scss +57 -45
  243. package/src/theme/icons.ts +16 -5
  244. package/src/types/CForm.ts +15 -0
  245. package/src/types/font-awesome.ts +6 -0
  246. package/src/types.ts +15 -0
  247. package/.browserslistrc +0 -3
  248. package/.eslintrc.js +0 -4
  249. package/.nvmrc +0 -1
  250. package/.stylelintrc.js +0 -3
  251. package/babel.config.js +0 -3
  252. package/dist/citrus-ui.common.js +0 -42228
  253. package/dist/citrus-ui.common.js.map +0 -1
  254. package/dist/citrus-ui.css +0 -1
  255. package/dist/citrus-ui.umd.js +0 -42238
  256. package/dist/citrus-ui.umd.js.map +0 -1
  257. package/dist/citrus-ui.umd.min.js +0 -27
  258. package/dist/citrus-ui.umd.min.js.map +0 -1
  259. package/dist/demo.html +0 -10
  260. package/dist/fonts/Blitz-Script.85ed9abe.woff2 +0 -0
  261. package/dist/fonts/ObjectSans-Bold.5492f3d5.woff2 +0 -0
  262. package/dist/fonts/ObjectSans-BoldSlanted.29e2a87e.woff2 +0 -0
  263. package/dist/fonts/ObjectSans-Heavy.d0b2f035.woff2 +0 -0
  264. package/dist/fonts/ObjectSans-HeavySlanted.45e9c063.woff2 +0 -0
  265. package/dist/fonts/ObjectSans-Light.f885dec3.woff2 +0 -0
  266. package/dist/fonts/ObjectSans-LightSlanted.b8eb7c12.woff2 +0 -0
  267. package/dist/fonts/ObjectSans-Regular.e4ea0b90.woff2 +0 -0
  268. package/dist/fonts/ObjectSans-Slanted.57a90be9.woff2 +0 -0
  269. package/dist/fonts/ObjectSans-Thin.86d44227.woff2 +0 -0
  270. package/dist/fonts/ObjectSans-ThinSlanted.20342160.woff2 +0 -0
  271. package/jest.config.js +0 -9
  272. package/plopfile.js +0 -67
  273. package/postcss.config.js +0 -5
  274. package/src/assets/fonts/Blitz-Script.woff2 +0 -0
  275. package/src/assets/fonts/ObjectSans-Bold.woff2 +0 -0
  276. package/src/assets/fonts/ObjectSans-BoldSlanted.woff2 +0 -0
  277. package/src/assets/fonts/ObjectSans-Heavy.woff2 +0 -0
  278. package/src/assets/fonts/ObjectSans-HeavySlanted.woff2 +0 -0
  279. package/src/assets/fonts/ObjectSans-Light.woff2 +0 -0
  280. package/src/assets/fonts/ObjectSans-LightSlanted.woff2 +0 -0
  281. package/src/assets/fonts/ObjectSans-Regular.woff2 +0 -0
  282. package/src/assets/fonts/ObjectSans-Slanted.woff2 +0 -0
  283. package/src/assets/fonts/ObjectSans-Thin.woff2 +0 -0
  284. package/src/assets/fonts/ObjectSans-ThinSlanted.woff2 +0 -0
  285. package/src/components/CAlert.vue +0 -73
  286. package/src/components/CBanner.vue +0 -47
  287. package/src/components/CButton.vue +0 -146
  288. package/src/components/CListItemAction.vue +0 -29
  289. package/src/components/CSegmentedButton.vue +0 -47
  290. package/src/components/CSegmentedButtonOption.vue +0 -42
  291. package/src/components/helpers/FormField.vue +0 -48
  292. package/src/components/helpers/SelectInput.vue +0 -115
  293. package/src/shims-scss.d.ts +0 -4
  294. package/src/shims-vuetify.d.ts +0 -4
  295. package/src/styles/_blitz.scss +0 -8
  296. package/src/styles/_object-sans.scss +0 -23
  297. package/tsconfig.dist.json +0 -9
  298. package/tsconfig.json +0 -42
  299. package/vue.config.js +0 -5
@@ -1,169 +1,279 @@
1
1
  // ****************************************************************************
2
- // This file contains our Citrus-specific Sass variables. These are intended to
3
- // be used to style Citrus and imported into stylesheets in freshcard-app
4
- // and freshebt-vue.
2
+ // This file contains our Citrus-specific Sass variables. These are intended to
3
+ // be used to style Citrus and imported into stylesheets in freshebt-vue
4
+ // and microfrontends.
5
+ //
6
+ // VARIABLES AND MIXINS ONLY.
7
+ //
8
+ // NOTE(slanden): Be sure to update the colors.ts file when updating this file.
5
9
  // ****************************************************************************
6
10
 
7
11
  // COLORS
8
- $color-providers-green-tint-2: #ECFDE8;
9
- $color-providers-green-tint-1: #D1FAC7;
10
- $color-providers-green: #B3F6A2;
11
- $color-accent-green: #51D156;
12
- $color-accent-green-shade-1: #49A24C;
13
- $color-accent-green-shade-2: #3A823D;
14
-
15
- $color-providers-blue-tint-2: #E8EBFD;
16
- $color-providers-blue-tint-1: #D1D7FC;
17
- $color-providers-blue: #A3B0F9;
18
- $color-accent-blue: #5560CB;
19
- $color-accent-blue-shade-1: #404898;
20
- $color-accent-blue-shade-2: #2F3570;
21
-
22
- $color-navy-tint-4: #D1D3D7;
23
- $color-navy-tint-3: #A4A8AF;
24
- $color-navy-tint-2: #767C88;
25
- $color-navy-tint-1: #495160;
26
- $color-navy: #1B2538;
27
-
28
- $color-neutral: #FAF8F6;
29
- $color-neutral-shade: #E9E6E1;
30
- $color-white: #FFF;
31
12
 
32
- $color-purple: #7C3872;
33
- $color-pink: #F6A0D1;
34
- $color-orange: #FC8247;
35
- $color-peach: #FDCAB7;
36
- $color-yellow: #FFC200;
37
- $color-lemon: #FEE69A;
38
-
39
- $color-alert-red: #C34459;
13
+ // Neutrals
14
+ $color-black: #000;
15
+ $color-gray-500: rgba(0, 0, 0, 0.69);
16
+ $color-gray-400: rgba(0, 0, 0, 0.48);
17
+ $color-gray-300: rgba(0, 0, 0, 0.31);
18
+ $color-gray-200: rgba(0, 0, 0, 0.1);
19
+ $color-gray-100: rgba(0, 0, 0, 0.04);
20
+ $color-white: #fff;
21
+
22
+ // Blues
23
+ $color-blue-500: #1a43d7;
24
+ $color-blue-400: #496ae0;
25
+ $color-blue-300: #7a95f8;
26
+ $color-blue-200: #b2cffa;
27
+ $color-blue-100: #e0edff;
28
+
29
+ // Purples
30
+ $color-purple-500: #6431d0;
31
+ $color-purple-400: #804fe8;
32
+ $color-purple-300: #ac8eff;
33
+ $color-purple-200: #cdbcff;
34
+ $color-purple-100: #ebe4ff;
35
+
36
+ // Greens
37
+ $color-green-500: #1f7400;
38
+ $color-green-400: #3fa41c;
39
+ $color-green-300: #8bc95a;
40
+ $color-green-200: #b8da96;
41
+ $color-green-100: #dcf2cb;
42
+
43
+ // Golds
44
+ $color-gold-500: #f47500;
45
+ $color-gold-400: #f99500;
46
+ $color-gold-300: #ffc120;
47
+ $color-gold-200: #fcde74;
48
+ $color-gold-100: #fff0ba;
49
+
50
+ // Reds
51
+ $color-red-500: #cd000c;
52
+ $color-red-400: #f52323;
53
+ $color-red-300: #ff6969;
54
+ $color-red-200: #ffaaa5;
55
+ $color-red-100: #ffe5dd;
56
+
57
+ $color-providers-green-tint-2: #d1fac7;
58
+ $color-providers-green-tint-1: #b3f6a2;
59
+ $color-providers-green: #51d156;
60
+ $color-accent-green: #49a24c;
61
+ $color-accent-green-shade-1: #3a823d;
62
+ $color-accent-green-shade-2: #17551a;
63
+
64
+ $color-providers-blue-tint-2: #e8ebfd;
65
+ $color-providers-blue-tint-1: #d1d7fc;
66
+ $color-providers-blue: black;
67
+ $color-accent-blue: #5560cb;
68
+ $color-accent-blue-shade-1: #404898;
69
+ $color-accent-blue-shade-2: #2f3570;
70
+
71
+ $color-pink-tint-2: #ffdef1;
72
+ $color-pink-tint-1: #fdc3e4;
73
+ $color-pink: #f6a0d1;
74
+ $color-accent-pink: #d75fae;
75
+ $color-accent-pink-shade-1: #7c3872;
76
+ $color-accent-pink-shade-2: #56204e;
77
+
78
+ $color-orange-tint-2: #ffdbce;
79
+ $color-orange-tint-1: #fdcab7;
80
+ $color-orange: #ffa895;
81
+ $color-accent-orange: #fc8247;
82
+ $color-accent-orange-shade-1: #e15c1b;
83
+ $color-accent-orange-shade-2: #a9440b;
84
+
85
+ $color-yellow-tint-2: #fee69a;
86
+ $color-yellow-tint-1: #ffdc6b;
87
+ $color-yellow: #ffc200;
88
+
89
+ $color-alert-red: #c34459;
90
+ $color-accent-red-shade-1: #981d31;
91
+ $color-accent-red-shade-2: #701323;
92
+
93
+ // BACKGROUND
94
+ $color-background: $color-white;
95
+ $color-button-background: $color-black;
40
96
 
41
97
  // BORDERS
42
- $color-border: $color-neutral-shade;
98
+ $color-border: $color-gray-200;
43
99
  $border-width: 1px;
44
100
  $border: $border-width solid $color-border;
45
101
 
46
102
  $border-radius: 8px;
103
+ $border-radius-next: 12px;
47
104
 
48
- // TYPOGRAPHY
49
- $font-family-object-sans: objectsans;
50
- $font-family-blitz: blitz;
105
+ // STATUS
106
+ $color-status-success: $color-green-500;
107
+ $color-status-warning: $color-gold-500;
108
+ $color-status-error: $color-red-500;
51
109
 
52
- $font-family-base: $font-family-object-sans, sans-serif;
53
- $font-family-script: $font-family-blitz, script;
110
+ // SHADOWS
111
+ $box-shadow-neutral: 0 1px 4px $color-gray-200;
112
+ $box-shadow-toast: 0 4px 20px 0 rgba(0, 0, 0, 0.12);
113
+ $box-shadow-page-footer: 0 -1px 4px rgba($color-black, 0.25);
114
+
115
+ // TYPOGRAPHY
116
+ $font-family-polymath: 'Polymath';
117
+ $font-family-grenette: 'Grenette';
118
+
119
+ // stylelint-disable-next-line scss/dollar-variable-colon-space-after
120
+ $font-family-base:
121
+ $font-family-polymath,
122
+ -apple-system,
123
+ blinkmacsystemfont,
124
+ 'Segoe UI',
125
+ roboto,
126
+ 'Helvetica Neue',
127
+ arial,
128
+ sans-serif;
129
+ $font-family-serif: $font-family-grenette, serif;
130
+
131
+ $color-text-primary: $color-black;
132
+ $color-text-secondary: $color-gray-500;
133
+ $color-text-placeholder: $color-gray-400;
134
+ $color-text-disabled: $color-gray-300;
54
135
 
55
136
  $font-weight-thin: 100;
56
137
  $font-weight-light: 300;
57
138
  $font-weight-normal: 400;
58
- $font-weight-medium: 500; // Currently unused, but holding its place in case we add it.
139
+ $font-weight-medium: 500; // Currently unused, but holding its place in case we add it.
140
+ $font-weight-semibold: 650;
141
+ $font-weight-emphasized: $font-weight-semibold;
59
142
  $font-weight-bold: 700;
60
143
  $font-weight-heavy: 800;
61
- $font-weight-black: 900; // Currently unused, but holding its place in case we add it.
62
-
63
- $font-size-3x-large: 48px;
64
- $font-size-2x-large: 35px;
65
- $font-size-x-large: 26px;
66
- $font-size-large: 21px;
67
- $font-size-medium: 15px;
68
- $font-size-small: 12px;
144
+ $font-weight-black: 900; // Currently unused, but holding its place in case we add it.
145
+
146
+ $font-size-3x-large: 32px;
147
+ $font-size-2x-large: 26px;
148
+ $font-size-x-large: 24px;
149
+ $font-size-large: 20px;
150
+ $font-size-medium: 16px;
151
+ $font-size-small: 14px;
152
+ $font-size-x-small: 12px;
153
+ $font-size-wallet-caption: 13px; // Only to be used in the wallet on Home.
154
+
155
+ $line-height-small: 120%;
156
+ $line-height-medium: 125%;
157
+ $line-height-large: 140%;
158
+
159
+ $letter-spacing-tighten-medium: -0.5px;
160
+ $letter-spacing-tighten-small: -0.25px;
161
+ $letter-spacing-normal: normal;
162
+ $letter-spacing-extend-small: 0.25px;
163
+ $letter-spacing-extend-medium: 0.5px;
69
164
 
70
165
  $balance: (
71
- "size": $font-size-2x-large,
72
- "weight": $font-weight-thin,
73
- "line-height": 100%,
74
- "letter-spacing": normal,
166
+ 'size': $font-size-2x-large,
167
+ 'weight': $font-weight-bold,
168
+ 'line-height': 100%,
169
+ 'letter-spacing': $letter-spacing-extend-small,
75
170
  );
76
171
 
77
- $balance-dollar: (
78
- "size": $font-size-x-large,
79
- "weight": $font-weight-light,
80
- "line-height": 100%,
81
- "letter-spacing": normal,
172
+ // NOTE(slanden): These typography definitions don't correctly line up with
173
+ // the definitions in the design system - e.g., x-large-headline here is actually
174
+ // the same as Headline Large in the design system, etc.
175
+ $x-large-headline: (
176
+ 'font-family': var(--font-family-headline, #{$font-family-base}),
177
+ 'size': $font-size-3x-large,
178
+ 'weight': $font-weight-semibold,
179
+ 'line-height': $line-height-small,
180
+ 'letter-spacing': $letter-spacing-tighten-medium,
82
181
  );
83
182
 
84
183
  $large-headline: (
85
- "size": $font-size-x-large,
86
- "weight": $font-weight-bold,
87
- "line-height": 130%,
88
- "letter-spacing": normal,
89
- );
90
-
91
- $large-headline-script: (
92
- "size": $font-size-2x-large,
93
- "weight": $font-weight-normal,
94
- "line-height": 85%,
95
- "letter-spacing": normal,
96
- "font-family": $font-family-script,
184
+ 'font-family': var(--font-family-headline, #{$font-family-base}),
185
+ 'size': $font-size-2x-large,
186
+ 'weight': $font-weight-semibold,
187
+ 'line-height': $line-height-small,
188
+ 'letter-spacing': $letter-spacing-tighten-medium,
97
189
  );
98
190
 
99
191
  $headline: (
100
- "size": $font-size-large,
101
- "weight": $font-weight-bold,
102
- "line-height": 130%,
103
- "letter-spacing": normal,
192
+ 'font-family': var(--font-family-headline, #{$font-family-base}),
193
+ 'size': $font-size-large,
194
+ 'weight': $font-weight-semibold,
195
+ 'line-height': $line-height-medium,
196
+ 'letter-spacing': $letter-spacing-tighten-small,
104
197
  );
105
198
 
106
199
  $subheadline: (
107
- "size": $font-size-medium,
108
- "weight": $font-weight-bold,
109
- "line-height": 150%,
110
- "letter-spacing": normal,
200
+ 'size': $font-size-medium,
201
+ 'weight': $font-weight-semibold,
202
+ 'line-height': $line-height-large,
203
+ 'letter-spacing': $letter-spacing-extend-small,
111
204
  );
112
205
 
113
206
  $body: (
114
- "size": $font-size-medium,
115
- "weight": $font-weight-normal,
116
- "line-height": 150%,
117
- "letter-spacing": normal,
207
+ 'size': $font-size-medium,
208
+ 'weight': $font-weight-normal,
209
+ 'line-height': $line-height-large,
210
+ 'letter-spacing': $letter-spacing-extend-small,
211
+ );
212
+
213
+ $body-emphasized: map-merge(
214
+ $body,
215
+ (
216
+ 'weight': $font-weight-emphasized,
217
+ )
118
218
  );
119
219
 
120
220
  $statement: map-merge(
121
- $body,
221
+ $body,
122
222
  (
123
- "line-height": 100%,
223
+ 'line-height': 100%,
124
224
  )
125
225
  );
126
226
 
127
227
  $caption: (
128
- "size": $font-size-small,
129
- "weight": $font-weight-normal,
130
- "line-height": 130%,
131
- "letter-spacing": normal,
228
+ 'size': $font-size-small,
229
+ 'weight': $font-weight-normal,
230
+ 'line-height': $line-height-large,
231
+ 'letter-spacing': $letter-spacing-extend-small,
132
232
  );
133
233
 
134
- $overline: (
135
- "size": $font-size-small,
136
- "weight": $font-weight-heavy,
137
- "line-height": 100%,
138
- "letter-spacing": 0.5px,
139
- "text-transform": uppercase,
234
+ $caption-emphasized: map-merge(
235
+ $caption,
236
+ (
237
+ 'weight': $font-weight-emphasized,
238
+ )
239
+ );
240
+
241
+ $wallet-caption: (
242
+ 'size': $font-size-wallet-caption,
243
+ 'weight': $font-weight-normal,
244
+ 'line-height': $line-height-large,
245
+ 'letter-spacing': $letter-spacing-extend-small,
246
+ );
247
+
248
+ $eyebrow: (
249
+ 'size': $font-size-x-small,
250
+ 'weight': $font-weight-bold,
251
+ 'line-height': $line-height-small,
252
+ 'letter-spacing': $letter-spacing-extend-medium,
253
+ 'text-transform': uppercase,
140
254
  );
141
255
 
142
256
  @mixin create-type-mixin($type-style) {
143
- font-family: map-get($type-style, "font-family");
144
- font-size: map-get($type-style, "size");
145
- font-weight: map-get($type-style, "weight");
146
- letter-spacing: map-get($type-style, "letter-spacing");
147
- line-height: map-get($type-style, "line-height");
148
- text-transform: map-get($type-style, "text-transform");
257
+ font-family: map-get($type-style, 'font-family');
258
+ font-size: map-get($type-style, 'size');
259
+ font-weight: map-get($type-style, 'weight');
260
+ letter-spacing: map-get($type-style, 'letter-spacing');
261
+ line-height: map-get($type-style, 'line-height');
262
+ text-transform: map-get($type-style, 'text-transform');
149
263
  }
150
264
 
151
265
  @mixin balance {
152
266
  @include create-type-mixin($balance);
153
267
  }
154
268
 
155
- @mixin balance-dollar {
156
- @include create-type-mixin($balance-dollar);
269
+ @mixin x-large-headline {
270
+ @include create-type-mixin($x-large-headline);
157
271
  }
158
272
 
159
273
  @mixin large-headline {
160
274
  @include create-type-mixin($large-headline);
161
275
  }
162
276
 
163
- @mixin large-headline-script {
164
- @include create-type-mixin($large-headline-script);
165
- }
166
-
167
277
  @mixin headline {
168
278
  @include create-type-mixin($headline);
169
279
  }
@@ -176,6 +286,10 @@ $overline: (
176
286
  @include create-type-mixin($body);
177
287
  }
178
288
 
289
+ @mixin body-emphasized {
290
+ @include create-type-mixin($body-emphasized);
291
+ }
292
+
179
293
  @mixin statement {
180
294
  @include create-type-mixin($statement);
181
295
  }
@@ -184,10 +298,39 @@ $overline: (
184
298
  @include create-type-mixin($caption);
185
299
  }
186
300
 
187
- @mixin overline {
188
- @include create-type-mixin($overline);
301
+ @mixin caption-emphasized {
302
+ @include create-type-mixin($caption-emphasized);
303
+ }
304
+
305
+ @mixin wallet-caption {
306
+ @include create-type-mixin($wallet-caption);
307
+ }
308
+
309
+ @mixin eyebrow {
310
+ @include create-type-mixin($eyebrow);
311
+ }
312
+
313
+ @mixin link-underline {
314
+ // TODO(mohan): Remove important when we remove the v-application a tag styling
315
+ text-decoration: underline !important;
316
+ text-decoration-skip-ink: none;
317
+ text-underline-offset: 3px;
318
+ }
319
+
320
+ /** NOTE(ej): These styles address an issue with 'ghost' hover states caused
321
+ * by Vuetify's default hover styles compatible with browser-based apps that
322
+ * support hovering. If an additional component is reported displaying a 'ghost'
323
+ * hover use this mixin in that component's scoped styles.
324
+ * Original bug ticket: https://join-propel.atlassian.net/browse/EUFL-15
325
+ */
326
+ @mixin no-web-effect {
327
+ opacity: 0 !important;
189
328
  }
190
329
 
330
+ // BUTTONS
331
+ $button-size-medium: 40px;
332
+ $button-size-large: 48px;
333
+
191
334
  // ICONS
192
335
  $font-size-icon-medium: 16px;
193
336
  $font-size-icon-large: 20px;
@@ -200,24 +343,42 @@ $card-v-spacing: 12px;
200
343
  $skeleton-loader-animation-duration: 3s;
201
344
  $skeleton-loader-animation: skeleton-loader-animation $skeleton-loader-animation-duration infinite;
202
345
 
203
- @keyframes skeleton-loader-animation {
204
- 0% {
205
- background-position: 150%;
206
- }
207
- 100% {
208
- background-position: -50%;
209
- }
210
- }
211
-
212
- @mixin skeleton-loader($color-base: $color-navy-tint-3, $color-highlight: $color-navy-tint-4) {
346
+ @mixin skeleton-loader($color-base: $color-gray-300, $color-highlight: $color-gray-200) {
213
347
  animation: $skeleton-loader-animation;
214
348
  background: linear-gradient(75deg, $color-base 30%, $color-highlight 50%, $color-base 70%);
215
349
  background-size: 200% 150%;
216
350
  }
217
351
 
218
- @mixin skeleton-loader-text($color-font: $color-navy, $color-highlight: $color-navy-tint-2) {
352
+ @mixin skeleton-loader-text($color-font: $color-black, $color-highlight: $color-gray-400) {
219
353
  @include skeleton-loader($color-font, $color-highlight);
220
354
 
221
355
  background-clip: text;
222
356
  -webkit-text-fill-color: transparent;
223
357
  }
358
+
359
+ // LOADING SPINNER
360
+ $loader-spin-animation-duration: 3.5s;
361
+ $loader-spin-animation: loader-spin-fast-slow $loader-spin-animation-duration infinite
362
+ cubic-bezier(0.35, 0.16, 0.65, 0.84);
363
+
364
+ @mixin contained-input {
365
+ background: $color-white;
366
+ border: 1px solid $color-gray-200;
367
+ border-radius: $border-radius;
368
+ padding: 16px 12px;
369
+ }
370
+
371
+ @mixin override-input-label {
372
+ //NOTE(ej) Checkboxes and Radios are constructed using the HTML label element
373
+ // This requires us to override the heavier default label styles
374
+ // for this component
375
+ font-weight: $font-weight-normal !important;
376
+ margin-bottom: 0;
377
+ }
378
+
379
+ // APP BAR
380
+ $app-bar-height: 42px;
381
+
382
+ // MAX LAYOUT WIDTH
383
+ // Used for responsive breakpoints in web layouts
384
+ $max-layout-width: 480px;
@@ -1,26 +1,79 @@
1
- @import '@/styles/core.scss';
1
+ @import '@propelinc/citrus-ui/src/styles/core';
2
+ @import '@propelinc/citrus-ui/src/styles/utils/a11y';
2
3
 
3
- $color-disabled-text: $color-navy-tint-2;
4
+ $color-disabled-text: $color-gray-400;
5
+ $color-placeholder-text: $color-gray-400;
4
6
 
5
- @mixin form-field() {
6
- &.v-input--is-focused::v-deep .v-input__slot,
7
- &.v-input--has-state::v-deep .v-input__slot {
8
- border-color: currentColor;
7
+ $sl-field-transition-duration: 0.2s;
8
+ $citrus-field-transition-duration: 0.2s;
9
+
10
+ @mixin sl-field($input-part: '', $input-text-part: '') {
11
+ // NOTE(ej): This removes the default focus ring from the input
12
+ // Focus state is still indicated by a change in border color
13
+ --sl-focus-ring-width: 0;
14
+
15
+ &::part(form-control-label) {
16
+ @include body-emphasized;
17
+
18
+ transition: color $sl-field-transition-duration ease;
19
+ }
20
+
21
+ &::part(form-control-help-text) {
22
+ @include caption;
23
+
24
+ color: $color-text-secondary;
25
+ margin-top: 4px;
9
26
  }
10
27
 
11
- &::v-deep .v-input__slot {
12
- border: 1px solid $color-neutral-shade;
13
- transition: border-color ease-in-out 0.3s;
28
+ @if $input-part != '' {
29
+ &::part(#{$input-part}) {
30
+ border-width: $border-width;
31
+ transition: border-color $sl-field-transition-duration ease;
32
+ }
33
+ }
34
+
35
+ @if $input-text-part != '' {
36
+ &::part(#{$input-text-part}) {
37
+ @include body;
38
+
39
+ color: $color-text-primary;
40
+ transition: color $sl-field-transition-duration ease;
41
+ }
14
42
  }
15
43
  }
16
44
 
17
- @mixin form-field-disabled() {
18
- &::v-deep .v-input__slot {
19
- background: $color-neutral-shade !important;
45
+ @mixin sl-field-disabled() {
46
+ &::part(form-control-label) {
47
+ color: $color-text-disabled;
20
48
  }
49
+ }
21
50
 
22
- &::v-deep input,
23
- &::v-deep select {
24
- color: $color-disabled-text;
51
+ @mixin sl-field-focused($input-part: 'base') {
52
+ &::part(#{$input-part}) {
53
+ border-color: $color-black;
25
54
  }
26
- }
55
+ }
56
+
57
+ @mixin sl-field-invalid($input-part: '', $input-text-part: '') {
58
+ @if $input-part != '' {
59
+ &::part(#{$input-part}) {
60
+ border-color: $color-status-error;
61
+ }
62
+ }
63
+
64
+ @if $input-text-part != '' {
65
+ &::part(#{$input-text-part}) {
66
+ color: $color-status-error;
67
+ }
68
+ }
69
+
70
+ &::part(form-control-label) {
71
+ color: $color-status-error;
72
+ }
73
+ }
74
+
75
+ @mixin sl-field-hide-label() {
76
+ &::part(form-control-label) {
77
+ @include sr-only;
78
+ }
79
+ }
@@ -0,0 +1,13 @@
1
+ @import './core';
2
+
3
+ @mixin grenette($font-weight, $file-name) {
4
+ @font-face {
5
+ font-family: $font-family-grenette;
6
+ font-style: normal;
7
+ font-weight: $font-weight;
8
+ src: url('@propelinc/citrus-ui/src/assets/fonts/#{$file-name}.woff2') format('woff2');
9
+ }
10
+ }
11
+
12
+ @include grenette($font-weight-normal, 'grenette-regular');
13
+ @include grenette($font-weight-semibold, 'grenette-semibold');
@@ -0,0 +1,14 @@
1
+ @import './core';
2
+
3
+ $font-styles: normal, italic;
4
+
5
+ // NOTE(mohan): We don't want polymath to show up in italics, so we're defining
6
+ // both italic and normal to be the normal style.
7
+ @each $font-style in $font-styles {
8
+ @font-face {
9
+ font-family: $font-family-polymath;
10
+ font-style: $font-style;
11
+ font-weight: 100 900;
12
+ src: url('@propelinc/citrus-ui/src/assets/fonts/polymath.woff2') format('woff2');
13
+ }
14
+ }