@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
package/README.md CHANGED
@@ -4,93 +4,63 @@ Propel's UI component library.
4
4
 
5
5
  See what components are currently available in [Storybook](https://storybook.providersapp.com/).
6
6
 
7
- Also, see the Citrus UI slack channel #proj-citrus-design-system.
8
-
9
- ## Setup
10
-
11
- ```bash
12
- nvm use # Switches to the correct version of node
13
- npm install # Install dependencies
14
- ```
15
-
16
- ### VSCode Setup
17
-
18
- First, install:
19
-
20
- - [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) - highlights ESLint errors in your editor
21
- - [Stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint) - highligths Stylelint errors in your editor
22
-
23
- Once you install the ESLint and Stylelint extensions, VSCode can fix lint errors when you save a file.
24
-
25
- To set this up:
26
-
27
- 1. Head over to your VSCode settings
28
- 2. Search for `editor.codeActionsOnSave` and click "Edit in settings.json"
29
- 3. Add this configuration:
30
-
31
- ```json
32
- "editor.codeActionsOnSave": {
33
- "source.fixAll.eslint": true,
34
- "source.fixAll.stylelint": true,
35
- },
36
- ```
37
-
38
- ## Development
39
-
40
- ### Storybook
41
-
42
- Unlike a normal Vue project, we don't use a dev server to compile an app. Instead, we rely on [Storybook](https://storybook.js.org/) to render and manually test our components.
43
-
44
-
45
- ```bash
46
- npm run serve:storybook
47
- ```
48
-
49
- ### Testing
50
-
51
- Since there is no app to test, there are no e2e tests. Instead, all tests are written in jest. You can make sure you components render correctly using Storybook.
52
-
53
- ```bash
54
- npm run test:unit
55
- ```
56
-
57
- ### Linting
58
-
59
- ```bash
60
- npm run lint:js # Runs ESLint + Prettier
61
- npm run lint:css # Runs Stylelint
62
- ```
63
-
64
- ### Adding a component
65
-
66
- To add a new component, first generate the component with plop.
67
-
68
- ```bash
69
- npm run generate:component # Interactive CLI
70
- npm run generate:component -- [name] [directory] [document in storybook] # Shortcuts
7
+ Questions? Ask for eng help in [#unit-eng-frontend-libraries](https://propel-team.slack.com/archives/C02F363U5RB). Get answers to design or cross-functional questions in [#wg-citrus-design-system](https://propel-team.slack.com/archives/C02004PUH5M).
8
+
9
+ ## Docs
10
+
11
+ | Page | Description |
12
+ | -------------------------------------------------- | --------------------------------------- |
13
+ | [Development](/libs/citrus-ui/docs/DEVELOPMENT.md) | Linting, testing, and adding components |
14
+ | [Style Guide](/libs/citrus-ui/docs/STYLE_GUIDE.md) | Guidelines for code styles |
15
+
16
+ ---
17
+
18
+ ## CDN Usage
19
+
20
+ citrus-ui is published to npm as `@propelinc/citrus-ui` and can be loaded via jsDelivr or unpkg. The following peer dependencies must be loaded separately.
21
+
22
+ > **Note:** `@fortawesome/pro-*` packages require a paid FontAwesome Pro license and are not available on public CDNs. Components that use icons (`CButton`, `CLabel`, `CCheckbox`, `CTextField`, `CSelect`, and others) will not render icons without FontAwesome Pro. See [CDN challenges](#cdn-challenges) below.
23
+
24
+ ```html
25
+ <!-- Shoelace styles + assets -->
26
+ <link
27
+ rel="stylesheet"
28
+ href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.15.0/cdn/themes/light.css"
29
+ />
30
+ <script type="module">
31
+ import { setBasePath } from 'https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.15.0/cdn/shoelace-autoloader.js';
32
+ setBasePath('https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.15.0/cdn/');
33
+ </script>
34
+
35
+ <!-- FontAwesome Pro (self-hosted — not available on public CDNs) -->
36
+ <script src="YOUR_SELF_HOSTED_FONTAWESOME_PRO_URL"></script>
37
+
38
+ <!-- citrus-ui styles -->
39
+ <link
40
+ rel="stylesheet"
41
+ href="https://cdn.jsdelivr.net/npm/@propelinc/citrus-ui@1.0.0/dist/styles/main.css"
42
+ />
43
+
44
+ <!-- citrus-ui + Vue -->
45
+ <script type="module">
46
+ import { createApp } from 'https://cdn.jsdelivr.net/npm/vue@3/dist/vue.esm-browser.prod.js';
47
+ import CitrusUi from 'https://cdn.jsdelivr.net/npm/@propelinc/citrus-ui@1.0.0/dist/index.mjs';
48
+
49
+ const app = createApp({
50
+ /* ... */
51
+ });
52
+ app.use(CitrusUi);
53
+ app.mount('#app');
54
+ </script>
71
55
  ```
72
56
 
73
- ❗️ If you want the component to be available to your Vue app, you'll need to add the component to [index.ts](https://github.com/propelinc/citrus-ui/blob/main/src/index.ts) and define the type in [index.d.ts](https://github.com/propelinc/citrus-ui/blob/main/src/index.d.ts).
57
+ ### CDN Challenges
74
58
 
75
- ## Publishing
76
-
77
- When publishing a new version, bump the version in the package.json according to [semantic versioning](https://semver.org/)
78
- .
79
-
80
- Then, run:
81
-
82
- ```bash
83
- npm run publish:dist
84
- ```
85
-
86
- Finally, announce the new version in #proj-citrus-design-system.
87
-
88
- ### NPM Access
89
-
90
- Because this package is published to our internal NPM repository, you'll need an [NPM account](https://www.npmjs.com/) and to be part of the [@propelinc organization](https://www.npmjs.com/org/propelinc) to publish. Once you have that set up, you'll have to login:
91
-
92
- ```bash
93
- npm login --scope=@propelinc
94
- ```
59
+ | Dependency | CDN available? | Notes |
60
+ | ------------------------------------------- | -------------- | ----------------------------------------------------- |
61
+ | `vue` | ✅ | jsDelivr / unpkg |
62
+ | `@shoelace-style/shoelace` | ✅ | Requires `setBasePath` to point at CDN assets |
63
+ | `dayjs`, `lodash`, `i18next`, `maska`, etc. | ✅ | All on public npm, available via CDN |
64
+ | `@fortawesome/pro-*` | ❌ | Paid license, not on public npm — must be self-hosted |
95
65
 
96
- Or alternatively, just ask Mohan to publish for you.
66
+ Because FontAwesome Pro cannot be served from a public CDN, components that render icons will require a self-hosted FontAwesome Pro bundle or an alternative delivery mechanism for those packages.
@@ -0,0 +1,31 @@
1
+ export type HexColor = `#${string}`;
2
+ export type RgbaColor = `rgba(${number}, ${number}, ${number}, ${number})`;
3
+ /**
4
+ * CSS color value from the palette (hex or rgba). Use this type when a value
5
+ * may be either format, e.g. gray colors are rgba, others are hex.
6
+ */
7
+ export type CssColor = HexColor | RgbaColor;
8
+ /**
9
+ * Maps a color name to its corresponding CSS color (hex or rgba).
10
+ * Gray neutrals use rgba for transparency; other colors use hex.
11
+ *
12
+ * NOTE: Please write hex codes in lowercase letters
13
+ */
14
+ declare const Colors: Record<string, CssColor>;
15
+ export default Colors;
16
+ /**
17
+ * This is a type predicate that will allow TypeScript to know that the string tested is a
18
+ * HexColor within the scope of the narrowing.
19
+ */
20
+ export declare function isHexColor(color?: string): color is HexColor;
21
+ export declare function isRgbaColor(color?: string): color is RgbaColor;
22
+ export declare function isCssColor(color?: string): color is CssColor;
23
+ /**
24
+ * This is a type predicate that will allow TypeScript to know that the string tested is a
25
+ * key of the Colors object.
26
+ */
27
+ export declare function isColorKey(color?: string): color is keyof typeof Colors;
28
+ /**
29
+ * Validates a string as either a hex color or a color key.
30
+ */
31
+ export declare function isValidColor(value: string): boolean;
@@ -1,12 +1,3 @@
1
- declare const _default: {
2
- [x: string]: import("vuetify/types/services/theme").VuetifyThemeItem;
3
- primary?: import("vuetify/types/services/theme").VuetifyThemeItem;
4
- secondary?: import("vuetify/types/services/theme").VuetifyThemeItem;
5
- accent?: import("vuetify/types/services/theme").VuetifyThemeItem;
6
- info?: import("vuetify/types/services/theme").VuetifyThemeItem;
7
- warning?: import("vuetify/types/services/theme").VuetifyThemeItem;
8
- error?: import("vuetify/types/services/theme").VuetifyThemeItem;
9
- success?: import("vuetify/types/services/theme").VuetifyThemeItem;
10
- anchor?: string | number | undefined;
11
- };
1
+ type Theme = Record<string, string>;
2
+ declare const _default: Theme;
12
3
  export default _default;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Generates utility classes for each Citrus color.
3
+ *
4
+ * For example, for blue-500 it creates:
5
+ * - `.blue-500` - sets background and border
6
+ * - `.blue-500--text` - sets text color
7
+ *
8
+ * This matches the syntax of Vuetify's utils:
9
+ * https://vuetifyjs.com/en/styles/colors/#classes
10
+ */
11
+ export declare function addColorUtils(): void;
@@ -0,0 +1,21 @@
1
+ import { DefineComponent, ExtractPropTypes, Ref, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ declare const _default: DefineComponent<ExtractPropTypes<{
3
+ /** Removes horizontal padding for all items inside */
4
+ fluid: {
5
+ type: BooleanConstructor;
6
+ default: boolean;
7
+ };
8
+ }>, {
9
+ accordion: Ref<HTMLDivElement | null, HTMLDivElement | null>;
10
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, "change"[], "change", PublicProps, Readonly< ExtractPropTypes<{
11
+ /** Removes horizontal padding for all items inside */
12
+ fluid: {
13
+ type: BooleanConstructor;
14
+ default: boolean;
15
+ };
16
+ }>> & Readonly<{
17
+ onChange?: ((...args: any[]) => any) | undefined;
18
+ }>, {
19
+ fluid: boolean;
20
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
21
+ export default _default;
@@ -0,0 +1,41 @@
1
+ import { default as SlDetails } from '@shoelace-style/shoelace/dist/components/details/details';
2
+ import { PropType, DefineComponent, ExtractPropTypes, Ref, ComputedRef, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ import { IconDefinition } from '@fortawesome/pro-regular-svg-icons';
4
+ import { FontAwesomeIconProps } from '@fortawesome/vue-fontawesome';
5
+ declare const _default: DefineComponent<ExtractPropTypes<{
6
+ /** Controls whether the item is open */
7
+ value: {
8
+ type: BooleanConstructor;
9
+ default: boolean;
10
+ };
11
+ /** Removes horizontal padding from the content */
12
+ fluid: {
13
+ type: PropType<boolean | null>;
14
+ default: null;
15
+ };
16
+ }>, {
17
+ internalValue: Ref<boolean, boolean>;
18
+ faChevronDown: IconDefinition;
19
+ details: Ref<SlDetails | null, SlDetails | null>;
20
+ injectedOrPropFluid: ComputedRef<boolean>;
21
+ onChange: (value: boolean) => void;
22
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, "input"[], "input", PublicProps, Readonly< ExtractPropTypes<{
23
+ /** Controls whether the item is open */
24
+ value: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ /** Removes horizontal padding from the content */
29
+ fluid: {
30
+ type: PropType<boolean | null>;
31
+ default: null;
32
+ };
33
+ }>> & Readonly<{
34
+ onInput?: ((...args: any[]) => any) | undefined;
35
+ }>, {
36
+ fluid: boolean | null;
37
+ value: boolean;
38
+ }, {}, {
39
+ FontAwesomeIcon: DefineComponent<FontAwesomeIconProps>;
40
+ }, {}, string, ComponentProvideOptions, true, {}, any>;
41
+ export default _default;
@@ -0,0 +1,156 @@
1
+ import { PropType, DefineComponent, ExtractPropTypes, Ref, ComputedRef, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ import { HexColor, default as Colors, isValidColor, CssColor } from '../colors/colors';
3
+ declare const _default: DefineComponent<ExtractPropTypes<{
4
+ /**
5
+ * Used to set the background color of the app bar. Needs to accept either a hex code or a
6
+ * a valid color key from the Colors object.
7
+ */
8
+ backgroundColor: {
9
+ type: PropType<HexColor | keyof typeof Colors>;
10
+ default: string;
11
+ validator: typeof isValidColor;
12
+ };
13
+ color: {
14
+ type: PropType<HexColor | keyof typeof Colors>;
15
+ default: undefined;
16
+ validator: typeof isValidColor;
17
+ };
18
+ /** If true, the app bar will be fixed to the top of the viewport. */
19
+ fixed: {
20
+ type: BooleanConstructor;
21
+ default: boolean;
22
+ };
23
+ /** If true, the app bar will have a bottom border. */
24
+ border: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ /** Shows text in the center of the component. Typically used for page names. Overrides the title slot. */
29
+ title: {
30
+ type: StringConstructor;
31
+ default: string;
32
+ };
33
+ /** Shows a loading spinner. Overrides the title slot. */
34
+ loading: {
35
+ type: BooleanConstructor;
36
+ default: boolean;
37
+ };
38
+ /** Adds screen reader only text alternative to loading icon, text should be translated */
39
+ loaderAccessibleText: {
40
+ type: StringConstructor;
41
+ default: string;
42
+ };
43
+ }>, {
44
+ bgCssColor: Ref< CssColor | undefined, CssColor | undefined>;
45
+ textCssColor: ComputedRef<CssColor>;
46
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ExtractPropTypes<{
47
+ /**
48
+ * Used to set the background color of the app bar. Needs to accept either a hex code or a
49
+ * a valid color key from the Colors object.
50
+ */
51
+ backgroundColor: {
52
+ type: PropType<HexColor | keyof typeof Colors>;
53
+ default: string;
54
+ validator: typeof isValidColor;
55
+ };
56
+ color: {
57
+ type: PropType<HexColor | keyof typeof Colors>;
58
+ default: undefined;
59
+ validator: typeof isValidColor;
60
+ };
61
+ /** If true, the app bar will be fixed to the top of the viewport. */
62
+ fixed: {
63
+ type: BooleanConstructor;
64
+ default: boolean;
65
+ };
66
+ /** If true, the app bar will have a bottom border. */
67
+ border: {
68
+ type: BooleanConstructor;
69
+ default: boolean;
70
+ };
71
+ /** Shows text in the center of the component. Typically used for page names. Overrides the title slot. */
72
+ title: {
73
+ type: StringConstructor;
74
+ default: string;
75
+ };
76
+ /** Shows a loading spinner. Overrides the title slot. */
77
+ loading: {
78
+ type: BooleanConstructor;
79
+ default: boolean;
80
+ };
81
+ /** Adds screen reader only text alternative to loading icon, text should be translated */
82
+ loaderAccessibleText: {
83
+ type: StringConstructor;
84
+ default: string;
85
+ };
86
+ }>> & Readonly<{}>, {
87
+ title: string;
88
+ border: boolean;
89
+ fixed: boolean;
90
+ color: string;
91
+ backgroundColor: string;
92
+ loading: boolean;
93
+ loaderAccessibleText: string;
94
+ }, {}, {
95
+ CLoader: DefineComponent<ExtractPropTypes<{
96
+ accessibleText: {
97
+ type: StringConstructor;
98
+ default: undefined;
99
+ };
100
+ color: {
101
+ type: PropType<HexColor | keyof typeof Colors>;
102
+ default: string;
103
+ validator: typeof isValidColor;
104
+ };
105
+ small: {
106
+ type: BooleanConstructor;
107
+ default: boolean;
108
+ };
109
+ size: {
110
+ type: PropType<"sm" | "lg" | "md">;
111
+ default: string;
112
+ };
113
+ trackColor: {
114
+ type: PropType<HexColor | keyof typeof Colors>;
115
+ default: string;
116
+ validator: typeof isValidColor;
117
+ };
118
+ }>, {
119
+ computedSize: ComputedRef<"sm" | "lg" | "md">;
120
+ indicatorColorCode: Ref< CssColor | undefined, CssColor | undefined>;
121
+ SIZE_TO_FONT_SIZE: Record<"sm" | "lg" | "md", `${number}px`>;
122
+ SIZE_TO_TRACK_WIDTH: Record<"sm" | "lg" | "md", `${number}px`>;
123
+ trackColorCode: Ref< CssColor | undefined, CssColor | undefined>;
124
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ExtractPropTypes<{
125
+ accessibleText: {
126
+ type: StringConstructor;
127
+ default: undefined;
128
+ };
129
+ color: {
130
+ type: PropType<HexColor | keyof typeof Colors>;
131
+ default: string;
132
+ validator: typeof isValidColor;
133
+ };
134
+ small: {
135
+ type: BooleanConstructor;
136
+ default: boolean;
137
+ };
138
+ size: {
139
+ type: PropType<"sm" | "lg" | "md">;
140
+ default: string;
141
+ };
142
+ trackColor: {
143
+ type: PropType<HexColor | keyof typeof Colors>;
144
+ default: string;
145
+ validator: typeof isValidColor;
146
+ };
147
+ }>> & Readonly<{}>, {
148
+ small: boolean;
149
+ size: "sm" | "lg" | "md";
150
+ accessibleText: string;
151
+ color: string;
152
+ trackColor: string;
153
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
154
+ CFadeTransition: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
155
+ }, {}, string, ComponentProvideOptions, true, {}, any>;
156
+ export default _default;
@@ -0,0 +1,52 @@
1
+ import { DefineComponent, ExtractPropTypes, ComputedRef, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ declare const _default: DefineComponent<ExtractPropTypes<{
3
+ /** Sets the text of the badge, can also use default slot */
4
+ text: {
5
+ type: StringConstructor;
6
+ default: undefined;
7
+ };
8
+ /** Adds a unique data-test attribute for testing to the container */
9
+ dataTest: {
10
+ type: StringConstructor;
11
+ default: string;
12
+ };
13
+ /** Sets the background color */
14
+ color: {
15
+ type: StringConstructor;
16
+ default: string;
17
+ };
18
+ /** Sets the text color */
19
+ textColor: {
20
+ type: StringConstructor;
21
+ default: string;
22
+ };
23
+ }>, {
24
+ computedStyle: ComputedRef<Record<string, string>>;
25
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ExtractPropTypes<{
26
+ /** Sets the text of the badge, can also use default slot */
27
+ text: {
28
+ type: StringConstructor;
29
+ default: undefined;
30
+ };
31
+ /** Adds a unique data-test attribute for testing to the container */
32
+ dataTest: {
33
+ type: StringConstructor;
34
+ default: string;
35
+ };
36
+ /** Sets the background color */
37
+ color: {
38
+ type: StringConstructor;
39
+ default: string;
40
+ };
41
+ /** Sets the text color */
42
+ textColor: {
43
+ type: StringConstructor;
44
+ default: string;
45
+ };
46
+ }>> & Readonly<{}>, {
47
+ text: string;
48
+ dataTest: string;
49
+ color: string;
50
+ textColor: string;
51
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
52
+ export default _default;