@openedx/paragon 22.4.0 → 23.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/README.md +36 -5
  2. package/bin/paragon-scripts.js +128 -9
  3. package/dist/ActionRow/_index.scss +2 -4
  4. package/dist/Alert/index.scss +41 -32
  5. package/dist/Annotation/_mixins.scss +104 -0
  6. package/dist/Annotation/index.scss +130 -103
  7. package/dist/Avatar/index.scss +18 -20
  8. package/dist/AvatarButton/index.scss +3 -5
  9. package/dist/Badge/index.scss +112 -2
  10. package/dist/Breadcrumb/index.scss +14 -16
  11. package/dist/Bubble/index.scss +25 -12
  12. package/dist/Button/_mixins.scss +14 -0
  13. package/dist/Button/button-group.scss +126 -0
  14. package/dist/Button/index.js +0 -2
  15. package/dist/Button/index.js.map +1 -1
  16. package/dist/Button/index.scss +855 -370
  17. package/dist/Card/card-bootstrap.scss +168 -0
  18. package/dist/Card/index.scss +78 -79
  19. package/dist/Carousel/index.scss +168 -2
  20. package/dist/Chip/index.scss +46 -37
  21. package/dist/Chip/mixins.scss +8 -3
  22. package/dist/ChipCarousel/index.scss +4 -4
  23. package/dist/CloseButton/index.scss +31 -2
  24. package/dist/Code/index.scss +47 -2
  25. package/dist/Collapsible/index.scss +15 -15
  26. package/dist/ColorPicker/index.scss +9 -11
  27. package/dist/DataTable/CollapsibleButtonGroup.js +2 -2
  28. package/dist/DataTable/CollapsibleButtonGroup.js.map +1 -1
  29. package/dist/DataTable/index.scss +48 -50
  30. package/dist/Dropdown/dropdown-bootstrap.scss +181 -0
  31. package/dist/Dropdown/index.js +0 -2
  32. package/dist/Dropdown/index.js.map +1 -1
  33. package/dist/Dropdown/index.scss +11 -12
  34. package/dist/Dropzone/index.scss +12 -14
  35. package/dist/Form/_FormText.scss +8 -8
  36. package/dist/Form/_bootstrap-custom-forms.scss +551 -0
  37. package/dist/Form/_bootstrap-forms.scss +381 -0
  38. package/dist/Form/_index.scss +168 -146
  39. package/dist/Form/_input-group.scss +188 -0
  40. package/dist/Form/_mixins.scss +216 -3
  41. package/dist/Hyperlink/index.scss +1 -1
  42. package/dist/Icon/index.scss +10 -12
  43. package/dist/IconButton/_mixins.scss +4 -0
  44. package/dist/IconButton/index.js +5 -11
  45. package/dist/IconButton/index.js.map +1 -1
  46. package/dist/IconButton/index.scss +387 -74
  47. package/dist/IconButtonToggle/index.scss +1 -1
  48. package/dist/Image/index.scss +53 -2
  49. package/dist/Menu/index.scss +25 -27
  50. package/dist/Modal/_ModalDialog.scss +52 -50
  51. package/dist/Modal/index.scss +6 -73
  52. package/dist/Nav/_mixins.scss +4 -4
  53. package/dist/Nav/index.scss +70 -66
  54. package/dist/Navbar/index.scss +276 -2
  55. package/dist/OverflowScroll/data/useOverflowScrollElementAttributes.js +3 -3
  56. package/dist/Overlay/index.js +2 -3
  57. package/dist/Overlay/index.js.map +1 -1
  58. package/dist/PageBanner/index.scss +17 -21
  59. package/dist/Pagination/index.scss +32 -34
  60. package/dist/Pagination/pagination-bootstrap.scss +83 -0
  61. package/dist/Popover/index.scss +9 -10
  62. package/dist/Popover/popover-bootstrap.scss +198 -0
  63. package/dist/ProductTour/Checkpoint.scss +71 -43
  64. package/dist/ProgressBar/_mixins.scss +22 -0
  65. package/dist/ProgressBar/bootstrap-progress.scss +49 -0
  66. package/dist/ProgressBar/index.scss +28 -36
  67. package/dist/Scrollable/index.scss +2 -2
  68. package/dist/SearchField/SearchFieldInput.js +2 -2
  69. package/dist/SearchField/SearchFieldInput.js.map +1 -1
  70. package/dist/SearchField/index.scss +15 -17
  71. package/dist/SelectableBox/index.scss +11 -13
  72. package/dist/Sheet/index.scss +10 -10
  73. package/dist/Spinner/index.scss +57 -2
  74. package/dist/Stack/index.scss +1 -3
  75. package/dist/Stepper/index.scss +19 -20
  76. package/dist/Sticky/index.scss +4 -6
  77. package/dist/Tabs/index.js +0 -2
  78. package/dist/Tabs/index.js.map +1 -1
  79. package/dist/Tabs/index.scss +26 -25
  80. package/dist/Toast/ToastContainer.scss +9 -11
  81. package/dist/Toast/bootstrap-toast.scss +46 -0
  82. package/dist/Toast/index.scss +9 -10
  83. package/dist/Tooltip/index.scss +136 -10
  84. package/dist/ValidationMessage/index.scss +1 -1
  85. package/dist/core.css +16788 -0
  86. package/dist/core.css.map +1 -0
  87. package/dist/core.min.css +2 -0
  88. package/dist/index.js +0 -14
  89. package/dist/index.scss +0 -4
  90. package/dist/light.css +4098 -0
  91. package/dist/light.css.map +1 -0
  92. package/dist/light.min.css +2 -0
  93. package/dist/theme-urls.json +21 -0
  94. package/dist/utils/breakpoints.js +1 -1
  95. package/lib/build-scss.js +188 -0
  96. package/lib/build-tokens.js +119 -0
  97. package/lib/help.js +36 -23
  98. package/lib/replace-variables.js +38 -0
  99. package/lib/utils.js +30 -0
  100. package/package.json +25 -10
  101. package/src/ActionRow/_index.scss +2 -4
  102. package/src/Alert/index.scss +41 -32
  103. package/src/Annotation/_mixins.scss +104 -0
  104. package/src/Annotation/index.scss +130 -103
  105. package/src/Avatar/index.scss +18 -20
  106. package/src/AvatarButton/index.scss +3 -5
  107. package/src/Badge/index.scss +112 -2
  108. package/src/Breadcrumb/index.scss +14 -16
  109. package/src/Bubble/index.scss +25 -12
  110. package/src/Button/README.md +0 -84
  111. package/src/Button/_mixins.scss +14 -0
  112. package/src/Button/button-group.scss +126 -0
  113. package/src/Button/index.jsx +0 -3
  114. package/src/Button/index.scss +855 -370
  115. package/src/Card/card-bootstrap.scss +168 -0
  116. package/src/Card/index.scss +78 -79
  117. package/src/Carousel/index.scss +168 -2
  118. package/src/Chip/index.scss +46 -37
  119. package/src/Chip/mixins.scss +8 -3
  120. package/src/ChipCarousel/index.scss +4 -4
  121. package/src/CloseButton/index.scss +31 -2
  122. package/src/Code/index.scss +47 -2
  123. package/src/Collapsible/index.scss +15 -15
  124. package/src/ColorPicker/index.scss +9 -11
  125. package/src/DataTable/CollapsibleButtonGroup.jsx +2 -2
  126. package/src/DataTable/index.scss +48 -50
  127. package/src/Dropdown/README.md +0 -93
  128. package/src/Dropdown/dropdown-bootstrap.scss +181 -0
  129. package/src/Dropdown/index.jsx +0 -2
  130. package/src/Dropdown/index.scss +11 -12
  131. package/src/Dropzone/index.scss +12 -14
  132. package/src/Form/_FormText.scss +8 -8
  133. package/src/Form/_bootstrap-custom-forms.scss +551 -0
  134. package/src/Form/_bootstrap-forms.scss +381 -0
  135. package/src/Form/_index.scss +168 -146
  136. package/src/Form/_input-group.scss +188 -0
  137. package/src/Form/_mixins.scss +216 -3
  138. package/src/Hyperlink/index.scss +1 -1
  139. package/src/Icon/index.scss +10 -12
  140. package/src/IconButton/README.md +1 -15
  141. package/src/IconButton/__snapshots__/IconButton.test.jsx.snap +5 -28
  142. package/src/IconButton/_mixins.scss +4 -0
  143. package/src/IconButton/index.jsx +6 -13
  144. package/src/IconButton/index.scss +387 -74
  145. package/src/IconButtonToggle/index.scss +1 -1
  146. package/src/Image/index.scss +53 -2
  147. package/src/Menu/index.scss +25 -27
  148. package/src/Modal/_ModalDialog.scss +52 -50
  149. package/src/Modal/index.scss +6 -73
  150. package/src/Nav/_mixins.scss +4 -4
  151. package/src/Nav/index.scss +70 -66
  152. package/src/Navbar/index.scss +276 -2
  153. package/src/OverflowScroll/data/useOverflowScrollElementAttributes.js +3 -3
  154. package/src/Overlay/index.jsx +2 -3
  155. package/src/PageBanner/index.scss +17 -21
  156. package/src/Pagination/index.scss +32 -34
  157. package/src/Pagination/pagination-bootstrap.scss +83 -0
  158. package/src/Popover/index.scss +9 -10
  159. package/src/Popover/popover-bootstrap.scss +198 -0
  160. package/src/ProductTour/Checkpoint.scss +71 -43
  161. package/src/ProgressBar/_mixins.scss +22 -0
  162. package/src/ProgressBar/bootstrap-progress.scss +49 -0
  163. package/src/ProgressBar/index.scss +28 -36
  164. package/src/Scrollable/index.scss +2 -2
  165. package/src/SearchField/SearchFieldInput.jsx +2 -2
  166. package/src/SearchField/__snapshots__/SearchField.test.jsx.snap +12 -8
  167. package/src/SearchField/index.scss +15 -17
  168. package/src/SelectableBox/index.scss +11 -13
  169. package/src/Sheet/index.scss +10 -10
  170. package/src/Spinner/index.scss +57 -2
  171. package/src/Stack/index.scss +1 -3
  172. package/src/Stepper/index.scss +19 -20
  173. package/src/Sticky/index.scss +4 -6
  174. package/src/Tabs/README.md +1 -23
  175. package/src/Tabs/index.jsx +0 -3
  176. package/src/Tabs/index.scss +26 -25
  177. package/src/Toast/ToastContainer.scss +9 -11
  178. package/src/Toast/bootstrap-toast.scss +46 -0
  179. package/src/Toast/index.scss +9 -10
  180. package/src/Tooltip/index.scss +136 -10
  181. package/src/TransitionReplace/README.md +4 -4
  182. package/src/ValidationMessage/index.scss +1 -1
  183. package/src/index.js +0 -14
  184. package/src/index.scss +0 -4
  185. package/src/setupTest.js +0 -6
  186. package/src/utils/breakpoints.js +1 -1
  187. package/styles/css/core/custom-media-breakpoints.css +17 -0
  188. package/styles/css/core/index.css +2 -0
  189. package/styles/css/core/variables.css +614 -0
  190. package/styles/css/themes/light/index.css +2 -0
  191. package/styles/css/themes/light/utility-classes.css +2454 -0
  192. package/styles/css/themes/light/variables.css +1644 -0
  193. package/{scss → styles/scss}/core/_functions.scss +1 -1
  194. package/styles/scss/core/_grid.scss +21 -0
  195. package/{scss → styles/scss}/core/_utilities.scss +17 -11
  196. package/styles/scss/core/_variables.scss +869 -0
  197. package/styles/scss/core/bootstrap-override/_functions.scss +104 -0
  198. package/styles/scss/core/bootstrap-override/_mixins.scss +4 -0
  199. package/styles/scss/core/bootstrap-override/_utilities.scss +4 -0
  200. package/styles/scss/core/bootstrap-override/bootstrap.scss +2 -0
  201. package/styles/scss/core/bootstrap-override/mixins/_grid-framework.scss +80 -0
  202. package/styles/scss/core/bootstrap-override/mixins/_grid.scss +69 -0
  203. package/styles/scss/core/bootstrap-override/mixins/_list-group.scss +22 -0
  204. package/styles/scss/core/bootstrap-override/utilities/_background.scss +7 -0
  205. package/styles/scss/core/bootstrap-override/utilities/_borders.scss +67 -0
  206. package/styles/scss/core/bootstrap-override/utilities/_spacing.scss +70 -0
  207. package/styles/scss/core/bootstrap-override/utilities/_text.scss +68 -0
  208. package/styles/scss/core/core.scss +21 -0
  209. package/{scss → styles/scss}/core/utilities-only.scss +1 -0
  210. package/tokens/README.md +158 -0
  211. package/tokens/css-utilities.js +56 -0
  212. package/tokens/map-scss-to-css.js +24 -0
  213. package/tokens/replace-variables.js +32 -0
  214. package/tokens/sass-helpers.js +98 -0
  215. package/tokens/src/core/alias/size.json +15 -0
  216. package/tokens/src/core/components/ActionRow.json +10 -0
  217. package/tokens/src/core/components/Alert.json +30 -0
  218. package/tokens/src/core/components/Annotation.json +25 -0
  219. package/tokens/src/core/components/Avatar.json +17 -0
  220. package/tokens/src/core/components/AvatarButton.json +11 -0
  221. package/tokens/src/core/components/Badge.json +33 -0
  222. package/tokens/src/core/components/Breadcrumb.json +37 -0
  223. package/tokens/src/core/components/Bubble.json +10 -0
  224. package/tokens/src/core/components/Button/core.json +105 -0
  225. package/tokens/src/core/components/Card.json +91 -0
  226. package/tokens/src/core/components/Carousel.json +37 -0
  227. package/tokens/src/core/components/Chip.json +43 -0
  228. package/tokens/src/core/components/ChipCarousel.json +15 -0
  229. package/tokens/src/core/components/CloseButton.json +14 -0
  230. package/tokens/src/core/components/Code.json +34 -0
  231. package/tokens/src/core/components/Collapsible.json +29 -0
  232. package/tokens/src/core/components/ColorPicker.json +8 -0
  233. package/tokens/src/core/components/Container.json +13 -0
  234. package/tokens/src/core/components/DataTable.json +27 -0
  235. package/tokens/src/core/components/Dropdown.json +67 -0
  236. package/tokens/src/core/components/Dropzone.json +21 -0
  237. package/tokens/src/core/components/Form/other.json +14 -0
  238. package/tokens/src/core/components/Form/size.json +233 -0
  239. package/tokens/src/core/components/Form/spacing.json +155 -0
  240. package/tokens/src/core/components/Form/transition.json +16 -0
  241. package/tokens/src/core/components/Form/typography.json +122 -0
  242. package/tokens/src/core/components/Icon.json +11 -0
  243. package/tokens/src/core/components/IconButton.json +15 -0
  244. package/tokens/src/core/components/Image.json +28 -0
  245. package/tokens/src/core/components/Menu.json +48 -0
  246. package/tokens/src/core/components/Modal.json +47 -0
  247. package/tokens/src/core/components/Nav.json +55 -0
  248. package/tokens/src/core/components/Navbar.json +70 -0
  249. package/tokens/src/core/components/Pagination.json +70 -0
  250. package/tokens/src/core/components/Popover.json +48 -0
  251. package/tokens/src/core/components/ProductTour.json +37 -0
  252. package/tokens/src/core/components/ProgressBar.json +39 -0
  253. package/tokens/src/core/components/SearchField.json +23 -0
  254. package/tokens/src/core/components/SelectableBox.json +9 -0
  255. package/tokens/src/core/components/Sheet.json +10 -0
  256. package/tokens/src/core/components/Spinner.json +19 -0
  257. package/tokens/src/core/components/Stack.json +7 -0
  258. package/tokens/src/core/components/Stepper.json +42 -0
  259. package/tokens/src/core/components/Sticky.json +7 -0
  260. package/tokens/src/core/components/Tab.json +19 -0
  261. package/tokens/src/core/components/Tabs.json +19 -0
  262. package/tokens/src/core/components/Toast.json +30 -0
  263. package/tokens/src/core/components/Tooltip.json +33 -0
  264. package/tokens/src/core/components/general/caret.json +13 -0
  265. package/tokens/src/core/components/general/headings.json +16 -0
  266. package/tokens/src/core/components/general/hr.json +10 -0
  267. package/tokens/src/core/components/general/input.json +51 -0
  268. package/tokens/src/core/components/general/link.json +30 -0
  269. package/tokens/src/core/components/general/list.json +26 -0
  270. package/tokens/src/core/components/general/text.json +24 -0
  271. package/tokens/src/core/global/breakpoints.json +12 -0
  272. package/tokens/src/core/global/display.json +21 -0
  273. package/tokens/src/core/global/elevation.json +19 -0
  274. package/tokens/src/core/global/other.json +4 -0
  275. package/tokens/src/core/global/spacing.json +35 -0
  276. package/tokens/src/core/global/transition.json +14 -0
  277. package/tokens/src/core/global/typography.json +91 -0
  278. package/tokens/src/core/utilities/color.json +12 -0
  279. package/tokens/src/themes/light/alias/color.json +114 -0
  280. package/tokens/src/themes/light/components/Alert.json +47 -0
  281. package/tokens/src/themes/light/components/Annotation.json +29 -0
  282. package/tokens/src/themes/light/components/Avatar.json +7 -0
  283. package/tokens/src/themes/light/components/Badge.json +186 -0
  284. package/tokens/src/themes/light/components/Breadcrumb.json +14 -0
  285. package/tokens/src/themes/light/components/Bubble.json +18 -0
  286. package/tokens/src/themes/light/components/Button/brand.json +260 -0
  287. package/tokens/src/themes/light/components/Button/core.json +24 -0
  288. package/tokens/src/themes/light/components/Button/danger.json +247 -0
  289. package/tokens/src/themes/light/components/Button/dark.json +230 -0
  290. package/tokens/src/themes/light/components/Button/info.json +238 -0
  291. package/tokens/src/themes/light/components/Button/light.json +236 -0
  292. package/tokens/src/themes/light/components/Button/primary.json +250 -0
  293. package/tokens/src/themes/light/components/Button/secondary.json +278 -0
  294. package/tokens/src/themes/light/components/Button/success.json +253 -0
  295. package/tokens/src/themes/light/components/Button/tertiary.json +109 -0
  296. package/tokens/src/themes/light/components/Button/warning.json +276 -0
  297. package/tokens/src/themes/light/components/Card.json +40 -0
  298. package/tokens/src/themes/light/components/Carousel.json +45 -0
  299. package/tokens/src/themes/light/components/Chip.json +50 -0
  300. package/tokens/src/themes/light/components/CloseButton.json +10 -0
  301. package/tokens/src/themes/light/components/Code.json +23 -0
  302. package/tokens/src/themes/light/components/DataTable.json +26 -0
  303. package/tokens/src/themes/light/components/Dropdown.json +41 -0
  304. package/tokens/src/themes/light/components/Dropzone.json +23 -0
  305. package/tokens/src/themes/light/components/Form/color.json +270 -0
  306. package/tokens/src/themes/light/components/Form/elevation.json +76 -0
  307. package/tokens/src/themes/light/components/Form/other.json +131 -0
  308. package/tokens/src/themes/light/components/IconButton.json +451 -0
  309. package/tokens/src/themes/light/components/Image.json +18 -0
  310. package/tokens/src/themes/light/components/Menu.json +30 -0
  311. package/tokens/src/themes/light/components/Modal.json +37 -0
  312. package/tokens/src/themes/light/components/Nav.json +166 -0
  313. package/tokens/src/themes/light/components/Navbar.json +136 -0
  314. package/tokens/src/themes/light/components/OverflowScroll.json +9 -0
  315. package/tokens/src/themes/light/components/PageBanner.json +24 -0
  316. package/tokens/src/themes/light/components/Pagination.json +45 -0
  317. package/tokens/src/themes/light/components/Popover.json +55 -0
  318. package/tokens/src/themes/light/components/ProductTour.json +35 -0
  319. package/tokens/src/themes/light/components/ProgressBar.json +20 -0
  320. package/tokens/src/themes/light/components/Scrollable.json +14 -0
  321. package/tokens/src/themes/light/components/SearchField.json +25 -0
  322. package/tokens/src/themes/light/components/Sheet.json +22 -0
  323. package/tokens/src/themes/light/components/Stepper.json +34 -0
  324. package/tokens/src/themes/light/components/Sticky.json +18 -0
  325. package/tokens/src/themes/light/components/Tab.json +62 -0
  326. package/tokens/src/themes/light/components/Toast.json +33 -0
  327. package/tokens/src/themes/light/components/Tooltip.json +30 -0
  328. package/tokens/src/themes/light/components/general/body.json +8 -0
  329. package/tokens/src/themes/light/components/general/headings.json +7 -0
  330. package/tokens/src/themes/light/components/general/hr.json +15 -0
  331. package/tokens/src/themes/light/components/general/input.json +18 -0
  332. package/tokens/src/themes/light/components/general/link.json +109 -0
  333. package/tokens/src/themes/light/components/general/list.json +38 -0
  334. package/tokens/src/themes/light/components/general/text.json +6 -0
  335. package/tokens/src/themes/light/global/color.json +1661 -0
  336. package/tokens/src/themes/light/global/elevation.json +201 -0
  337. package/tokens/src/themes/light/global/other.json +4 -0
  338. package/tokens/style-dictionary.js +223 -0
  339. package/tokens/utils.js +210 -0
  340. package/dist/ActionRow/_variables.scss +0 -2
  341. package/dist/Alert/_variables.scss +0 -24
  342. package/dist/Annotation/_variables.scss +0 -18
  343. package/dist/Avatar/_variables.scss +0 -10
  344. package/dist/AvatarButton/_variables.scss +0 -3
  345. package/dist/Badge/_variables.scss +0 -16
  346. package/dist/Breadcrumb/_variables.scss +0 -27
  347. package/dist/Bubble/_variables.scss +0 -8
  348. package/dist/Button/_variables.scss +0 -52
  349. package/dist/Button/deprecated/index.js +0 -149
  350. package/dist/Button/deprecated/index.js.map +0 -1
  351. package/dist/Card/_variables.scss +0 -55
  352. package/dist/Carousel/_variables.scss +0 -27
  353. package/dist/CheckBox/index.js +0 -102
  354. package/dist/CheckBox/index.js.map +0 -1
  355. package/dist/CheckBoxGroup/index.js +0 -15
  356. package/dist/CheckBoxGroup/index.js.map +0 -1
  357. package/dist/Chip/_variables.scss +0 -28
  358. package/dist/ChipCarousel/_variables.scss +0 -3
  359. package/dist/CloseButton/_variables.scss +0 -6
  360. package/dist/Code/_variables.scss +0 -17
  361. package/dist/Collapsible/_variables.scss +0 -12
  362. package/dist/ColorPicker/_variables.scss +0 -2
  363. package/dist/Container/_variables.scss +0 -5
  364. package/dist/DataTable/_variables.scss +0 -11
  365. package/dist/Dropdown/_variables.scss +0 -33
  366. package/dist/Dropdown/deprecated/DropdownButton.js +0 -44
  367. package/dist/Dropdown/deprecated/DropdownButton.js.map +0 -1
  368. package/dist/Dropdown/deprecated/DropdownItem.js +0 -33
  369. package/dist/Dropdown/deprecated/DropdownItem.js.map +0 -1
  370. package/dist/Dropdown/deprecated/DropdownMenu.js +0 -46
  371. package/dist/Dropdown/deprecated/DropdownMenu.js.map +0 -1
  372. package/dist/Dropdown/deprecated/index.js +0 -241
  373. package/dist/Dropdown/deprecated/index.js.map +0 -1
  374. package/dist/Dropzone/_variables.scss +0 -9
  375. package/dist/Fieldset/index.js +0 -117
  376. package/dist/Fieldset/index.js.map +0 -1
  377. package/dist/Fieldset/index.scss +0 -12
  378. package/dist/Form/_variables.scss +0 -267
  379. package/dist/Icon/_variables.scss +0 -7
  380. package/dist/Image/_variables.scss +0 -13
  381. package/dist/Input/index.js +0 -166
  382. package/dist/Input/index.js.map +0 -1
  383. package/dist/InputSelect/index.js +0 -105
  384. package/dist/InputSelect/index.js.map +0 -1
  385. package/dist/InputText/index.js +0 -45
  386. package/dist/InputText/index.js.map +0 -1
  387. package/dist/ListBox/index.js +0 -148
  388. package/dist/ListBox/index.js.map +0 -1
  389. package/dist/ListBoxOption/index.js +0 -94
  390. package/dist/ListBoxOption/index.js.map +0 -1
  391. package/dist/Menu/_variables.scss +0 -24
  392. package/dist/Modal/_variables.scss +0 -50
  393. package/dist/Modal/index.js +0 -292
  394. package/dist/Modal/index.js.map +0 -1
  395. package/dist/Nav/_variables.scss +0 -58
  396. package/dist/Navbar/_variables.scss +0 -40
  397. package/dist/OverflowScroll/_variables.scss +0 -5
  398. package/dist/OverflowScroll/index.scss +0 -1
  399. package/dist/Pagination/_variables.scss +0 -19
  400. package/dist/Popover/_variables.scss +0 -36
  401. package/dist/ProductTour/_variables.scss +0 -15
  402. package/dist/ProgressBar/_variables.scss +0 -23
  403. package/dist/RadioButtonGroup/index.js +0 -188
  404. package/dist/RadioButtonGroup/index.js.map +0 -1
  405. package/dist/SearchField/_variables.scss +0 -14
  406. package/dist/SelectableBox/_variables.scss +0 -5
  407. package/dist/Spinner/_variables.scss +0 -9
  408. package/dist/Stack/_variables.scss +0 -1
  409. package/dist/StatusAlert/index.js +0 -168
  410. package/dist/StatusAlert/index.js.map +0 -1
  411. package/dist/Stepper/_variables.scss +0 -18
  412. package/dist/Sticky/_variables.scss +0 -3
  413. package/dist/Table/_variables.scss +0 -34
  414. package/dist/Table/index.js +0 -267
  415. package/dist/Table/index.js.map +0 -1
  416. package/dist/Table/index.scss +0 -12
  417. package/dist/Tabs/_variables.scss +0 -24
  418. package/dist/Tabs/deprecated/Tabs.scss +0 -3
  419. package/dist/Tabs/deprecated/index.js +0 -123
  420. package/dist/Tabs/deprecated/index.js.map +0 -1
  421. package/dist/TextArea/index.js +0 -44
  422. package/dist/TextArea/index.js.map +0 -1
  423. package/dist/Toast/_variables.scss +0 -19
  424. package/dist/Tooltip/_variables.scss +0 -21
  425. package/dist/ValidationFormGroup/index.js +0 -106
  426. package/dist/ValidationFormGroup/index.js.map +0 -1
  427. package/dist/paragon.css +0 -45
  428. package/scss/core/_grid.scss +0 -21
  429. package/scss/core/_variables.scss +0 -875
  430. package/scss/core/core.scss +0 -21
  431. package/src/ActionRow/_variables.scss +0 -2
  432. package/src/Alert/_variables.scss +0 -24
  433. package/src/Annotation/_variables.scss +0 -18
  434. package/src/Avatar/_variables.scss +0 -10
  435. package/src/AvatarButton/_variables.scss +0 -3
  436. package/src/Badge/_variables.scss +0 -16
  437. package/src/Breadcrumb/_variables.scss +0 -27
  438. package/src/Bubble/_variables.scss +0 -8
  439. package/src/Button/_variables.scss +0 -52
  440. package/src/Button/deprecated/Button.test.jsx +0 -34
  441. package/src/Button/deprecated/index.jsx +0 -145
  442. package/src/Card/_variables.scss +0 -55
  443. package/src/Carousel/_variables.scss +0 -27
  444. package/src/CheckBox/CheckBox.test.jsx +0 -65
  445. package/src/CheckBox/README.md +0 -93
  446. package/src/CheckBox/index.jsx +0 -80
  447. package/src/CheckBoxGroup/CheckBoxGroup.test.jsx +0 -33
  448. package/src/CheckBoxGroup/README.md +0 -35
  449. package/src/CheckBoxGroup/index.jsx +0 -19
  450. package/src/Chip/_variables.scss +0 -28
  451. package/src/ChipCarousel/_variables.scss +0 -3
  452. package/src/CloseButton/_variables.scss +0 -6
  453. package/src/Code/_variables.scss +0 -17
  454. package/src/Collapsible/_variables.scss +0 -12
  455. package/src/ColorPicker/_variables.scss +0 -2
  456. package/src/Container/_variables.scss +0 -5
  457. package/src/DataTable/_variables.scss +0 -11
  458. package/src/Dropdown/_variables.scss +0 -33
  459. package/src/Dropdown/deprecated/Dropdown.test.jsx +0 -238
  460. package/src/Dropdown/deprecated/DropdownButton.jsx +0 -52
  461. package/src/Dropdown/deprecated/DropdownItem.jsx +0 -34
  462. package/src/Dropdown/deprecated/DropdownMenu.jsx +0 -50
  463. package/src/Dropdown/deprecated/__snapshots__/Dropdown.test.jsx.snap +0 -229
  464. package/src/Dropdown/deprecated/index.jsx +0 -222
  465. package/src/Dropzone/_variables.scss +0 -9
  466. package/src/Fieldset/Fieldset.test.jsx +0 -101
  467. package/src/Fieldset/README.md +0 -146
  468. package/src/Fieldset/index.jsx +0 -107
  469. package/src/Fieldset/index.scss +0 -12
  470. package/src/Form/_variables.scss +0 -267
  471. package/src/Icon/_variables.scss +0 -7
  472. package/src/Image/_variables.scss +0 -13
  473. package/src/Input/README.md +0 -74
  474. package/src/Input/__snapshots__/input.test.jsx.snap +0 -53
  475. package/src/Input/index.jsx +0 -151
  476. package/src/Input/input.test.jsx +0 -85
  477. package/src/InputSelect/README.md +0 -136
  478. package/src/InputSelect/index.jsx +0 -92
  479. package/src/InputText/InputText.test.jsx +0 -74
  480. package/src/InputText/README.md +0 -293
  481. package/src/InputText/index.jsx +0 -49
  482. package/src/ListBox/ListBox.test.jsx +0 -161
  483. package/src/ListBox/README.md +0 -185
  484. package/src/ListBox/index.jsx +0 -115
  485. package/src/ListBoxOption/ListBoxOption.test.jsx +0 -154
  486. package/src/ListBoxOption/index.jsx +0 -78
  487. package/src/Menu/_variables.scss +0 -24
  488. package/src/Modal/README.md +0 -148
  489. package/src/Modal/_variables.scss +0 -50
  490. package/src/Modal/index.jsx +0 -319
  491. package/src/Modal/tests/Modal.test.jsx +0 -261
  492. package/src/Nav/_variables.scss +0 -58
  493. package/src/Navbar/_variables.scss +0 -40
  494. package/src/OverflowScroll/_variables.scss +0 -5
  495. package/src/OverflowScroll/index.scss +0 -1
  496. package/src/Pagination/_variables.scss +0 -19
  497. package/src/Popover/_variables.scss +0 -36
  498. package/src/ProductTour/_variables.scss +0 -15
  499. package/src/ProgressBar/_variables.scss +0 -23
  500. package/src/RadioButtonGroup/README.md +0 -50
  501. package/src/RadioButtonGroup/RadioButtonGroup.test.jsx +0 -127
  502. package/src/RadioButtonGroup/index.jsx +0 -185
  503. package/src/SearchField/_variables.scss +0 -14
  504. package/src/SelectableBox/_variables.scss +0 -5
  505. package/src/Spinner/_variables.scss +0 -9
  506. package/src/Stack/_variables.scss +0 -1
  507. package/src/StatusAlert/README.md +0 -149
  508. package/src/StatusAlert/StatusAlert.test.jsx +0 -150
  509. package/src/StatusAlert/index.jsx +0 -144
  510. package/src/Stepper/_variables.scss +0 -18
  511. package/src/Sticky/_variables.scss +0 -3
  512. package/src/Table/README.md +0 -506
  513. package/src/Table/Table.test.jsx +0 -367
  514. package/src/Table/_variables.scss +0 -34
  515. package/src/Table/index.jsx +0 -264
  516. package/src/Table/index.scss +0 -12
  517. package/src/Tabs/_variables.scss +0 -24
  518. package/src/Tabs/deprecated/Tabs.scss +0 -3
  519. package/src/Tabs/deprecated/Tabs.test.jsx +0 -50
  520. package/src/Tabs/deprecated/index.jsx +0 -117
  521. package/src/TextArea/README.md +0 -63
  522. package/src/TextArea/index.jsx +0 -48
  523. package/src/Toast/_variables.scss +0 -19
  524. package/src/Tooltip/_variables.scss +0 -21
  525. package/src/ValidationFormGroup/README.md +0 -116
  526. package/src/ValidationFormGroup/ValidationFormGroup.test.jsx +0 -146
  527. package/src/ValidationFormGroup/__snapshots__/ValidationFormGroup.test.jsx.snap +0 -161
  528. package/src/ValidationFormGroup/index.jsx +0 -114
  529. /package/{scss → styles/scss}/core/_exports.module.scss +0 -0
  530. /package/{scss → styles/scss}/core/_typography.scss +0 -0
@@ -0,0 +1,201 @@
1
+ {
2
+ "elevation": {
3
+ "box-shadow": {
4
+ "level": {
5
+ "1": {
6
+ "value": "0 .0625rem .125rem rgba(0, 0, 0, .15), 0 .0625rem .25rem rgba(0, 0, 0, .15)",
7
+ "type": "shadow",
8
+ "source": "$level-1-box-shadow",
9
+ "description": "Basic box shadow of level 1."
10
+ },
11
+ "2": {
12
+ "value": "0 .125rem .25rem rgba(0, 0, 0, .15), 0 .125rem .5rem rgba(0, 0, 0, .15)",
13
+ "type": "shadow",
14
+ "source": "$level-2-box-shadow",
15
+ "description": "Basic box shadow of level 2."
16
+ },
17
+ "3": {
18
+ "value": "0 0 .625rem rgba(0, 0, 0, .15), 0 0 1rem rgba(0, 0, 0, .15)",
19
+ "type": "shadow",
20
+ "source": "$level-3-box-shadow",
21
+ "description": "Basic box shadow of level 3."
22
+ },
23
+ "4": {
24
+ "value": "0 .625rem 1.25rem rgba(0, 0, 0, .15), 0 .5rem 1.25rem rgba(0, 0, 0, .15)",
25
+ "type": "shadow",
26
+ "source": "$level-4-box-shadow",
27
+ "description": "Basic box shadow of level 4."
28
+ },
29
+ "5": {
30
+ "value": "0 1.25px 2.5rem rgba(0, 0, 0, .15), 0 .5rem 2.5rem rgba(0, 0, 0, .15)",
31
+ "type": "shadow",
32
+ "source": "$level-5-box-shadow",
33
+ "description": "Basic box shadow of level 5."
34
+ }
35
+ },
36
+ "base": { "value": "0 .125rem .25rem rgba(0, 0, 0, .3)", "type": "shadow", "source": "$box-shadow", "description": "Default box shadow." },
37
+ "sm": { "value": "0 .0625rem .125rem rgba(0, 0, 0, .2)", "type": "shadow", "source": "$box-shadow-sm", "description": "Small box shadow." },
38
+ "lg": { "value": "0 .25rem .5rem rgba(0, 0, 0, .3)", "type": "shadow", "source": "$box-shadow-lg", "description": "Large box shadow." },
39
+ "down": {
40
+ "1": {
41
+ "value": "0 .0625rem .125rem rgba(0, 0, 0, .15), 0 .0625rem .25rem rgba(0, 0, 0, .15)",
42
+ "type": "shadow",
43
+ "source": "$box-shadow-down-1",
44
+ "description": "Bottom box shadow of level 1."
45
+ },
46
+ "2": {
47
+ "value": "0 .125rem .25rem rgba(0, 0, 0, .15), 0 .125rem .5rem rgba(0, 0, 0, .15)",
48
+ "type": "shadow",
49
+ "source": "$box-shadow-down-2",
50
+ "description": "Bottom box shadow of level 2."
51
+ },
52
+ "3": {
53
+ "value": "0 .5rem 1rem rgba(0, 0, 0, .15), 0 .25rem .625rem rgba(0, 0, 0, .15)",
54
+ "type": "shadow",
55
+ "source": "$box-shadow-down-3",
56
+ "description": "Bottom box shadow of level 3."
57
+ },
58
+ "4": {
59
+ "value": "0 .625rem 1.25rem rgba(0, 0, 0, .15), 0 .5rem 1.25rem rgba(0, 0, 0, .15)",
60
+ "type": "shadow",
61
+ "source": "$box-shadow-down-4",
62
+ "description": "Bottom box shadow of level 4."
63
+ },
64
+ "5": {
65
+ "value": "0 1.25px 2.5rem rgba(0, 0, 0, .15), 0 .5rem 2.5rem rgba(0, 0, 0, .15)",
66
+ "type": "shadow",
67
+ "source": "$box-shadow-down-5",
68
+ "description": "Bottom box shadow of level 5."
69
+ }
70
+ },
71
+ "left": {
72
+ "1": {
73
+ "value": "-.0625rem 0 .125rem rgba(0, 0, 0, .15), -.0625rem 0 .25rem rgba(0, 0, 0, .15)",
74
+ "type": "shadow",
75
+ "source": "$box-shadow-left-1",
76
+ "description": "Left box shadow of level 1."
77
+ },
78
+ "2": {
79
+ "value": "-.125rem 0 .25rem rgba(0, 0, 0, .15), -.125rem 0 .5rem rgba(0, 0, 0, .15)",
80
+ "type": "shadow",
81
+ "source": "$box-shadow-left-2",
82
+ "description": "Left box shadow of level 2."
83
+ },
84
+ "3": {
85
+ "value": "-.5rem 0 1rem rgba(0, 0, 0, .15), -.25rem 0 .625rem rgba(0, 0, 0, .15)",
86
+ "type": "shadow",
87
+ "source": "$box-shadow-left-3",
88
+ "description": "Left box shadow of level 3."
89
+ },
90
+ "4": {
91
+ "value": "-.625rem 0 1.25rem rgba(0, 0, 0, .15), -.5rem 0 1.25rem rgba(0, 0, 0, .15)",
92
+ "type": "shadow",
93
+ "source": "$box-shadow-left-4",
94
+ "description": "Left box shadow of level 4."
95
+ },
96
+ "5": {
97
+ "value": "-1.25rem 0 2.5rem rgba(0, 0, 0, .15), -.5rem 0 3rem rgba(0, 0, 0, .15)",
98
+ "type": "shadow",
99
+ "source": "$box-shadow-left-5",
100
+ "description": "Left box shadow of level 5."
101
+ }
102
+ },
103
+ "up": {
104
+ "1": {
105
+ "value": "0 -.0625rem .125rem rgba(0, 0, 0, .15), 0 -.0625rem .25rem rgba(0, 0, 0, .15)",
106
+ "type": "shadow",
107
+ "source": "$box-shadow-up-1",
108
+ "description": "Top box shadow of level 1."
109
+ },
110
+ "2": {
111
+ "value": "0 -.125rem .25rem rgba(0, 0, 0, .15), 0 -.125rem .5rem rgba(0, 0, 0, .15)",
112
+ "type": "shadow",
113
+ "source": "$box-shadow-up-2",
114
+ "description": "Top box shadow of level 2."
115
+ },
116
+ "3": {
117
+ "value": "0 -.5rem 1rem rgba(0, 0, 0, .15), 0 -.25rem .625rem rgba(0, 0, 0, .15)",
118
+ "type": "shadow",
119
+ "source": "$box-shadow-up-3",
120
+ "description": "Top box shadow of level 3."
121
+ },
122
+ "4": {
123
+ "value": "0 -.625rem 1.25rem rgba(0, 0, 0, .15), 0 -.5rem 1.25rem rgba(0, 0, 0, .15)",
124
+ "type": "shadow",
125
+ "source": "$box-shadow-up-4",
126
+ "description": "Top box shadow of level 4."
127
+ },
128
+ "5": {
129
+ "value": "0 -1.25rem 2.5rem rgba(0, 0, 0, .15), 0 -.5rem 3rem rgba(0, 0, 0, .15)",
130
+ "type": "shadow",
131
+ "source": "$box-shadow-up-5",
132
+ "description": "Basic box shadow of level 5."
133
+ }
134
+ },
135
+ "right": {
136
+ "1": {
137
+ "value": ".0625rem 0 .125rem rgba(0, 0, 0, .15), .0625rem 0 .25rem rgba(0, 0, 0, .15)",
138
+ "type": "shadow",
139
+ "source": "$box-shadow-right-1",
140
+ "description": "Right box shadow of level 1."
141
+ },
142
+ "2": {
143
+ "value": ".125rem 0 .25rem rgba(0, 0, 0, .15), .125rem 0 .5rem rgba(0, 0, 0, .15)",
144
+ "type": "shadow",
145
+ "source": "$box-shadow-right-2",
146
+ "description": "Right box shadow of level 2."
147
+ },
148
+ "3": {
149
+ "value": ".5rem 0 1rem rgba(0, 0, 0, .15), .25rem 0 .625rem rgba(0, 0, 0, .15)",
150
+ "type": "shadow",
151
+ "source": "$box-shadow-right-3",
152
+ "description": "Right box shadow of level 3."
153
+ },
154
+ "4": {
155
+ "value": ".625rem 0 1.25rem rgba(0, 0, 0, .15), .5rem 0 1.25rem rgba(0, 0, 0, .15)",
156
+ "type": "shadow",
157
+ "source": "$box-shadow-right-4",
158
+ "description": "Right box shadow of level 4."
159
+ },
160
+ "5": {
161
+ "value": "1.25rem 0 2.5rem rgba(0, 0, 0, .15), .5rem 0 3rem rgba(0, 0, 0, .15)",
162
+ "type": "shadow",
163
+ "source": "$box-shadow-right-5",
164
+ "description": "Right box shadow of level 5."
165
+ }
166
+ },
167
+ "centered": {
168
+ "1": {
169
+ "value": "0 0 .125rem rgba(0, 0, 0, .15), 0 0 .25rem rgba(0, 0, 0, .15)",
170
+ "type": "shadow",
171
+ "source": "$box-shadow-centered-1",
172
+ "description": "Centered box shadow of level 1."
173
+ },
174
+ "2": {
175
+ "value": "0 0 .25rem rgba(0, 0, 0, .15), 0 0 .5rem rgba(0, 0, 0, .15)",
176
+ "type": "shadow",
177
+ "source": "$box-shadow-centered-2",
178
+ "description": "Centered box shadow of level 2."
179
+ },
180
+ "3": {
181
+ "value": "0 0 .625rem rgba(0, 0, 0, .15), 0 0 1rem rgba(0, 0, 0, .15)",
182
+ "type": "shadow",
183
+ "source": "$box-shadow-centered-3",
184
+ "description": "Centered box shadow of level 3."
185
+ },
186
+ "4": {
187
+ "value": "0 0 1.25rem rgba(0, 0, 0, .15), 0 0 1.25rem rgba(0, 0, 0, .15)",
188
+ "type": "shadow",
189
+ "source": "$box-shadow-centered-4",
190
+ "description": "Centered box shadow of level 4."
191
+ },
192
+ "5": {
193
+ "value": "0 0 2.5rem rgba(0, 0, 0, .15), 0 0 3rem rgba(0, 0, 0, .15)",
194
+ "type": "shadow",
195
+ "source": "$box-shadow-centered-5",
196
+ "description": "Centered box shadow of level 5."
197
+ }
198
+ }
199
+ }
200
+ }
201
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "yiq-text-dark": "#454545",
3
+ "yiq-text-light": "#FFFFFF"
4
+ }
@@ -0,0 +1,223 @@
1
+ /**
2
+ * This module creates and exports custom StyleDictionary instance for Paragon.
3
+ */
4
+ const StyleDictionary = require('style-dictionary');
5
+ const chroma = require('chroma-js');
6
+ const { colorYiq, darken, lighten } = require('./sass-helpers');
7
+ const cssUtilities = require('./css-utilities');
8
+ const { composeBreakpointName } = require('./utils');
9
+
10
+ const { fileHeader, sortByReference } = StyleDictionary.formatHelpers;
11
+
12
+ const colorTransform = (token, theme) => {
13
+ const {
14
+ name: tokenName,
15
+ value,
16
+ original,
17
+ modify = [],
18
+ } = token;
19
+ const reservedColorValues = ['inherit', 'initial', 'revert', 'unset', 'currentColor'];
20
+
21
+ if (reservedColorValues.includes(original.value)) {
22
+ return original.value;
23
+ }
24
+
25
+ let color = chroma(value);
26
+
27
+ if (modify && modify.length > 0) {
28
+ modify.forEach((modifier) => {
29
+ const { type, amount, otherColor } = modifier;
30
+ switch (type) {
31
+ case 'mix':
32
+ color = color.mix(otherColor, amount, 'rgb');
33
+ break;
34
+ case 'color-yiq': {
35
+ const { light, dark, threshold } = modifier;
36
+ color = colorYiq({
37
+ tokenName,
38
+ backgroundColor: color,
39
+ light,
40
+ dark,
41
+ threshold,
42
+ theme,
43
+ });
44
+ break;
45
+ }
46
+ case 'darken':
47
+ color = darken(color, amount);
48
+ break;
49
+ case 'lighten':
50
+ color = lighten(color, amount);
51
+ break;
52
+ default:
53
+ color = color[type](amount);
54
+ }
55
+ });
56
+ }
57
+
58
+ return color.hex('rgba').toUpperCase();
59
+ };
60
+
61
+ /**
62
+ * Custom formatter that extends default css/variables format to allow specifying
63
+ * 1. 'outputReferences' per token (by default you are only able to specify it globally for all tokens)
64
+ * 2. 'theme' to output only theme's variables (e.g, 'light' or 'dark'), if theme is not provided - only
65
+ * core tokens are built.
66
+ */
67
+ const createCustomCSSVariables = ({
68
+ formatterArgs,
69
+ themeVariant,
70
+ }) => {
71
+ const { dictionary, options, file } = formatterArgs;
72
+
73
+ const outputTokens = themeVariant
74
+ ? dictionary.allTokens.filter(token => token.filePath.includes(themeVariant))
75
+ : dictionary.allTokens;
76
+
77
+ const variables = outputTokens.sort(sortByReference(dictionary)).map(token => {
78
+ let { value } = token;
79
+
80
+ const outputReferencesForToken = (token.original.outputReferences === false) ? false : options.outputReferences;
81
+
82
+ if (dictionary.usesReference(token.original.value) && outputReferencesForToken) {
83
+ const refs = dictionary.getReferences(token.original.value);
84
+ refs.forEach(ref => {
85
+ value = value.replace(ref.value, `var(--${ref.name})`);
86
+ });
87
+ }
88
+
89
+ return ` --${token.name}: ${value};`;
90
+ }).join('\n');
91
+
92
+ return `${fileHeader({ file })}:root {\n${variables}\n}\n`;
93
+ };
94
+
95
+ /**
96
+ * Transformer that applies SASS color functions to tokens.
97
+ */
98
+ StyleDictionary.registerTransform({
99
+ name: 'color/sass-color-functions',
100
+ transitive: true,
101
+ type: 'value',
102
+ matcher(token) {
103
+ return token.attributes.category === 'color' || token.value?.toString().startsWith('#');
104
+ },
105
+ transformer: colorTransform,
106
+ });
107
+
108
+ /**
109
+ * Transforms that implements str-replace from SASS.
110
+ */
111
+ StyleDictionary.registerTransform({
112
+ name: 'str-replace',
113
+ transitive: true,
114
+ type: 'value',
115
+ matcher(token) {
116
+ return token.modify && token.modify[0].type === 'str-replace';
117
+ },
118
+ transformer(token) {
119
+ const { value, modify } = token;
120
+ const { toReplace, replaceWith } = modify[0];
121
+ return value.replaceAll(toReplace, replaceWith);
122
+ },
123
+ });
124
+
125
+ /**
126
+ * The custom formatter to create CSS variables for core tokens.
127
+ */
128
+ StyleDictionary.registerFormat({
129
+ name: 'css/custom-variables',
130
+ formatter: formatterArgs => createCustomCSSVariables({ formatterArgs }),
131
+ });
132
+
133
+ /**
134
+ * Formatter to generate CSS utility classes.
135
+ * Looks in ./src/utilities/ to get utility classes configuration, filters tokens by 'filters' object attributes
136
+ * (see https://amzn.github.io/style-dictionary/#/tokens?id=category-type-item for possible keys in the object,
137
+ * each key should have a list of valid values) and generates CSS classes with using functions defined in
138
+ * 'utilityFunctionsToApply' list, those functions must be located in css-utilities.js module and return string.
139
+ */
140
+ StyleDictionary.registerFormat({
141
+ name: 'css/utility-classes',
142
+ formatter({ dictionary, file }) {
143
+ const { utilities } = dictionary.properties;
144
+
145
+ if (!utilities) {
146
+ return '';
147
+ }
148
+
149
+ let utilityClasses = '';
150
+
151
+ utilities.forEach(({ filters, utilityFunctionsToApply }) => {
152
+ let tokens = dictionary.allTokens;
153
+
154
+ Object.entries(filters).forEach(([attributeName, allowedValues]) => {
155
+ tokens = tokens.filter((token) => allowedValues.includes(token.attributes[attributeName]));
156
+ });
157
+
158
+ // eslint-disable-next-line no-restricted-syntax
159
+ for (const token of tokens) {
160
+ // Get action token by reference
161
+ const ref = dictionary.getReferences(token.original.actions.default)[0];
162
+ token.actions = { default: `var(--${ref.name})` };
163
+ // eslint-disable-next-line no-restricted-syntax
164
+ for (const funcName of utilityFunctionsToApply) {
165
+ utilityClasses += cssUtilities[funcName](token);
166
+ }
167
+ }
168
+ });
169
+
170
+ return fileHeader({ file }) + utilityClasses;
171
+ },
172
+ });
173
+
174
+ /**
175
+ * Formatter to generate CSS custom media queries for responsive breakpoints.
176
+ * Gets input about existing tokens of the 'size' category,
177
+ * 'breakpoints' subcategory, and generates a CSS custom media queries.
178
+ */
179
+ StyleDictionary.registerFormat({
180
+ name: 'css/custom-media-breakpoints',
181
+ formatter({ dictionary, file }) {
182
+ const { size: { breakpoint } } = dictionary.properties;
183
+
184
+ let customMediaVariables = '';
185
+ const breakpoints = Object.values(breakpoint || {});
186
+
187
+ for (let i = 0; i < breakpoints.length; i++) {
188
+ const [currentBreakpoint, nextBreakpoint] = [breakpoints[i], breakpoints[i + 1]];
189
+ customMediaVariables += `${composeBreakpointName(currentBreakpoint.name, 'min')} (min-width: ${currentBreakpoint.value});\n`;
190
+ if (nextBreakpoint) {
191
+ customMediaVariables += `${composeBreakpointName(currentBreakpoint.name, 'max')} (max-width: ${nextBreakpoint.value});\n`;
192
+ }
193
+ }
194
+
195
+ return fileHeader({ file }) + customMediaVariables;
196
+ },
197
+ });
198
+
199
+ /**
200
+ * Custom file header for custom and built-in formatters.
201
+ */
202
+ StyleDictionary.registerFileHeader({
203
+ name: 'customFileHeader',
204
+ fileHeader: (defaultMessage) => [
205
+ 'IMPORTANT: This file is the result of assembling design tokens',
206
+ ...defaultMessage,
207
+ ],
208
+ });
209
+
210
+ /**
211
+ * Registers a filter `isSource` that filters output to only include tokens
212
+ * that are marked as `isSource` in their metadata.
213
+ */
214
+ StyleDictionary.registerFilter({
215
+ name: 'isSource',
216
+ matcher: token => token?.isSource === true,
217
+ });
218
+
219
+ module.exports = {
220
+ StyleDictionary,
221
+ createCustomCSSVariables,
222
+ colorTransform,
223
+ };
@@ -0,0 +1,210 @@
1
+ const fs = require('fs');
2
+ const readline = require('readline');
3
+ const path = require('path');
4
+
5
+ function getFilesWithExtension(location, extension, files = [], excludeDirectories = []) {
6
+ const content = fs.statSync(location);
7
+ if (content.isDirectory()) {
8
+ const contentPaths = fs.readdirSync(location);
9
+ contentPaths.forEach(contentPath => {
10
+ if (!excludeDirectories.includes(contentPath)) {
11
+ getFilesWithExtension(path.join(location, contentPath), extension, files, excludeDirectories);
12
+ }
13
+ });
14
+ } else if (location.endsWith(extension)) {
15
+ files.push(location);
16
+ }
17
+ return files;
18
+ }
19
+
20
+ function getSCSStoCSSMap(prefix, tokensObject, result) {
21
+ Object.entries(tokensObject).forEach(([node, value]) => {
22
+ if (value?.constructor.name === 'Object') {
23
+ const newPrefix = `${prefix}-${node}`;
24
+ getSCSStoCSSMap(newPrefix, value, result);
25
+ } else if (node === 'source') {
26
+ // eslint-disable-next-line no-param-reassign
27
+ result[value] = `var(${prefix})`;
28
+ }
29
+ });
30
+ return result;
31
+ }
32
+
33
+ async function replaceVariablesUsage(filePath, variablesMap, direction = 'scss-to-css') {
34
+ let variableRegex;
35
+ let result = '';
36
+
37
+ if (direction === 'css-to-scss') {
38
+ variableRegex = /var\((\w|-|_)*\)/g;
39
+ } else if (direction === 'scss-to-css') {
40
+ variableRegex = /(\$|#{\$)(\w|-|_)*(}|,|;|\)|\s|$)/g;
41
+ }
42
+
43
+ const fileStream = fs.createReadStream(filePath);
44
+
45
+ const rl = readline.createInterface({
46
+ input: fileStream,
47
+ crlfDelay: Infinity,
48
+ });
49
+
50
+ // eslint-disable-next-line no-restricted-syntax
51
+ for await (const line of rl) {
52
+ let parsedLine = line;
53
+ const variables = [...parsedLine.matchAll(variableRegex)];
54
+
55
+ variables.forEach(variableData => {
56
+ let varExpressionToReplace = variableData[0];
57
+ let actualVariable = varExpressionToReplace;
58
+
59
+ if (direction === 'scss-to-css') {
60
+ // handle interpolation expressions first, e.g. #{$some-variable}
61
+ if (varExpressionToReplace.startsWith('#{') && varExpressionToReplace.endsWith('}')) {
62
+ actualVariable = varExpressionToReplace.slice(2, -1);
63
+
64
+ // general case, e.g. $some-variable;
65
+ } else if ([',', ';', ')', ' ', '}'].includes(varExpressionToReplace.slice(-1))) {
66
+ varExpressionToReplace = varExpressionToReplace.slice(0, -1);
67
+ actualVariable = varExpressionToReplace;
68
+ }
69
+ }
70
+
71
+ if (actualVariable in variablesMap) {
72
+ parsedLine = parsedLine.replaceAll(varExpressionToReplace, variablesMap[actualVariable]);
73
+ }
74
+ });
75
+
76
+ result += `${parsedLine}\n`;
77
+ }
78
+
79
+ fs.writeFileSync(filePath, result);
80
+ }
81
+
82
+ /**
83
+ * Replaces SCSS variables definition with value from design tokens
84
+ *
85
+ * @async
86
+ * @param {string} pathToStylesheet - full path to the stylesheet where to perform replacement
87
+ * @param {Object} variablesMap - object that contains variables definitions to use during replacement
88
+ */
89
+ async function replaceVariablesDefinitions(pathToStylesheet, variablesMap) {
90
+ const fileStream = fs.createReadStream(pathToStylesheet);
91
+
92
+ const rl = readline.createInterface({
93
+ input: fileStream,
94
+ crlfDelay: Infinity,
95
+ });
96
+
97
+ let result = '';
98
+ let currentVar = '';
99
+ let currentValue = '';
100
+
101
+ function processVariable() {
102
+ if (currentVar) {
103
+ if (currentVar in variablesMap) {
104
+ result += `${currentVar}: ${variablesMap[currentVar]} !default;\n`;
105
+ } else {
106
+ result += `${currentVar}:${currentValue}`;
107
+ }
108
+ } else {
109
+ result += currentValue;
110
+ }
111
+ }
112
+
113
+ // eslint-disable-next-line no-restricted-syntax
114
+ for await (const line of rl) {
115
+ if (line.startsWith('$')) {
116
+ processVariable();
117
+ [currentVar, ...currentValue] = line.split(':');
118
+ currentValue = `${currentValue.join(':')}\n`;
119
+ } else if (!line.trim() || line.startsWith('\\')) {
120
+ processVariable();
121
+ currentVar = '';
122
+ currentValue = `${line}\n`;
123
+ } else {
124
+ currentValue += `${line}\n`;
125
+ }
126
+ }
127
+
128
+ // last variable was not covered by the loop
129
+ processVariable();
130
+
131
+ fs.writeFileSync(pathToStylesheet, result);
132
+ }
133
+
134
+ /**
135
+ * Update SCSS variables definitions or usages in given path with CSS variables derived from design tokens
136
+ *
137
+ * @param {string} location - path where to update variables
138
+ * @param {Object} variablesMap - SCSS-to-CSS or CSS-to-SCSS mapping of the variables
139
+ * @param {string} transformType - type of operation, one of ['definition', 'usage'].
140
+ * 'definition' will replace SCSS variables definitions with CSS ones, while 'usage' will replace all occurrences
141
+ * of SCSS / CSS variables (depends on the direction parameter).
142
+ * @param {Array[string]} excludePaths - exclude paths from the search
143
+ * @param {string} direction - replacement direction of variables, takes effect only when transformType === 'usage'.
144
+ * Can be either 'scss-to-css' or 'css-to-scss'.
145
+ * @return {Promise<void>}
146
+ */
147
+ async function transformInPath(location, variablesMap, transformType = 'definition', excludePaths = [], direction = 'scss-to-css') {
148
+ const content = fs.statSync(location);
149
+ if (content.isDirectory()) {
150
+ const contentPaths = fs.readdirSync(location);
151
+ contentPaths.forEach(contentPath => {
152
+ if (!excludePaths.includes(contentPath)) {
153
+ transformInPath(path.join(location, contentPath), variablesMap, transformType, excludePaths, direction);
154
+ }
155
+ });
156
+ } else if (location.endsWith('.scss')) {
157
+ if (transformType === 'usage') {
158
+ await replaceVariablesUsage(location, variablesMap, direction);
159
+ } else {
160
+ await replaceVariablesDefinitions(location, variablesMap);
161
+ }
162
+ }
163
+ }
164
+
165
+ function createIndexCssFile({ buildDir = path.resolve(__dirname, '../styles/css'), isTheme, themeVariant }) {
166
+ const directoryPath = isTheme ? `${buildDir}/themes/${themeVariant}` : `${buildDir}/core`;
167
+
168
+ fs.readdir(directoryPath, (errDir, files) => {
169
+ if (errDir) {
170
+ // eslint-disable-next-line no-console
171
+ console.error('Error reading directory:', errDir);
172
+ return;
173
+ }
174
+
175
+ const outputCssFiles = files.filter(file => file !== 'index.css');
176
+ // When creating themes, there are typically two files: one for utility classes and one for variables.
177
+ // It's organized them to allow variables be reading first.
178
+ if (isTheme) { outputCssFiles.reverse(); }
179
+
180
+ const exportStatements = outputCssFiles.map((file) => `@import "${file}";`);
181
+
182
+ const indexContent = `${exportStatements.join('\n')}\n`;
183
+
184
+ fs.writeFile(path.join(directoryPath, 'index.css'), indexContent, (errFile) => {
185
+ if (errFile) {
186
+ // eslint-disable-next-line no-console
187
+ console.error('Error creating index file:', errFile);
188
+ }
189
+ });
190
+ });
191
+ }
192
+
193
+ /**
194
+ * Composes a breakpoint name according to the Paragon namespace.
195
+ *
196
+ * @param {string} breakpointName - breakpoint initial name.
197
+ * @param {string} format - screen width format.
198
+ * @return {string} - new breakpoint name.
199
+ */
200
+ function composeBreakpointName(breakpointName, format) {
201
+ return `@custom-media --${breakpointName.replace(/breakpoint/g, `breakpoint-${format}-width`)}`;
202
+ }
203
+
204
+ module.exports = {
205
+ createIndexCssFile,
206
+ getFilesWithExtension,
207
+ getSCSStoCSSMap,
208
+ transformInPath,
209
+ composeBreakpointName,
210
+ };
@@ -1,2 +0,0 @@
1
- $action-row-gap-x: .5rem !default;
2
- $action-row-gap-y: .5rem !default;
@@ -1,24 +0,0 @@
1
- // Alerts
2
- //
3
- // Define alert colors, border radius, and padding.
4
-
5
- $alert-padding-y: 1.5rem !default;
6
- $alert-padding-x: 1.5rem !default;
7
- $alert-margin-bottom: 1rem !default;
8
- $alert-border-radius: $border-radius !default;
9
- $alert-link-font-weight: $font-weight-normal !default;
10
- $alert-border-width: 0 !default;
11
- $alert-title-color: #000000 !default;
12
- $alert-box-shadow: 0 1px 2px rgba(0, 0, 0, .15), 0 1px 4px rgba(0, 0, 0, .15) !default;
13
-
14
- $alert-bg-level: -10 !default;
15
- $alert-border-level: -9 !default;
16
- $alert-color-level: 6 !default;
17
-
18
- $alert-icon-space: .8rem !default;
19
-
20
- $alert-font-size: .875rem !default;
21
- $alert-line-height: 1.5rem !default;
22
- $alert-content-color: $gray-700 !default;
23
-
24
- $alert-actions-gap: map-get($spacers, 3);
@@ -1,18 +0,0 @@
1
- $annotation-padding: .5rem !default;
2
- $annotation-box-shadow: drop-shadow(0 2px 4px rgba(0, 0, 0, .15))
3
- drop-shadow(0 2px 8px rgba(0, 0, 0, .15)) !default;
4
- $annotation-border-radius: .25rem !default;
5
- $annotation-max-width: 18.75rem !default;
6
- $annotation-font-size: $font-size-sm !default;
7
- $annotation-line-height: $line-height-sm !default;
8
-
9
- $annotation-variants: (
10
- "success": ( "background-color": $success, "color": $white ),
11
- "warning": ( "background-color": $accent-b, "color": $black ),
12
- "error": ( "background-color": $danger, "color": $white ),
13
- "light": ( "background-color": $white, "color": $primary-500 ),
14
- "dark": ( "background-color": $dark, "color": $white ),
15
- ) !default;
16
-
17
- $annotation-arrow-side-margin: .25rem !default;
18
- $annotation-arrow-border-width: .5rem !default;