@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
package/README.md CHANGED
@@ -47,7 +47,7 @@ Usage for Open edX and others:
47
47
 
48
48
  ```
49
49
  // ... Any custom SCSS variables should be defined here
50
- @import '~@openedx/paragon/scss/core/core.scss';
50
+ @import '~@openedx/paragon/styles/scss/core/core.scss';
51
51
  ```
52
52
 
53
53
  Usage on with `@edx/brand`:
@@ -57,7 +57,7 @@ Usage on with `@edx/brand`:
57
57
  ```
58
58
  @import '~@edx/brand/paragon/fonts.scss';
59
59
  @import '~@edx/brand/paragon/variables.scss';
60
- @import '~@openedx/paragon/scss/core/core.scss';
60
+ @import '~@openedx/paragon/styles/scss/core/core.scss';
61
61
  @import '~@edx/brand/paragon/overrides.scss';
62
62
  ```
63
63
 
@@ -69,7 +69,10 @@ The Paragon CLI (Command Line Interface) is a tool that provides various utility
69
69
 
70
70
  ### Available Commands
71
71
 
72
- - `paragon install-theme [theme]`: Installs the specific @edx/brand package.
72
+ - `paragon install-theme [theme]`: Installs the specific [brand package](https://github.com/openedx/brand-openedx).
73
+ - `paragon build-tokens`: Build Paragon's design tokens.
74
+ - `paragon replace-variables`: Replace SCSS variables usages or definitions to CSS variables and vice versa in `.scss` files.
75
+ - `paragon build-scss`: Compile Paragon's core and themes SCSS into CSS.
73
76
 
74
77
  Use `paragon help` to see more information.
75
78
 
@@ -148,7 +151,7 @@ module.exports = {
148
151
  dist: The sub-directory of the source code where it puts its build artifact. Often "dist".
149
152
  */
150
153
  localModules: [
151
- { moduleName: '@openedx/paragon/scss/core', dir: '../src/paragon', dist: 'scss/core' },
154
+ { moduleName: '@openedx/paragon/styles/scss/core', dir: '../src/paragon', dist: 'styles/scss/core' },
152
155
  { moduleName: '@openedx/paragon/icons', dir: '../src/paragon', dist: 'icons' },
153
156
  // Note that using dist: 'dist' will require you to run 'npm build' in Paragon
154
157
  // to add local changes to the 'dist' directory, so that they can be picked up by the MFE.
@@ -158,7 +161,7 @@ module.exports = {
158
161
  };
159
162
  ```
160
163
 
161
- Then, when importing Paragon's core SCSS in your MFE the import needs to begin with a tilde `~` so that path to your local Paragon repository gets resolved correctly: `@import "~@openedx/paragon/scss/core";`
164
+ Then, when importing Paragon's core SCSS in your MFE the import needs to begin with a tilde `~` so that path to your local Paragon repository gets resolved correctly: `@import "~@openedx/paragon/styles/scss/core";`
162
165
 
163
166
  #### Internationalization
164
167
 
@@ -477,3 +480,31 @@ The assigned maintainers for this component and other project details may be fou
477
480
  Please do not report security issues in public. Please email security@openedx.org.
478
481
 
479
482
  We tend to prioritize security issues which impact the published `@openedx/paragon` NPM library more so than the [documentation website](https://paragon-openedx.netlify.app/) or example React application.
483
+
484
+ ## Design Tokens
485
+
486
+ Design tokens are all the values needed to build and maintain a design system — spacing, color, typography, object styles, etc. They can represent anything defined by the design: color as an RGB value, opacity as a number, spacing as a REM value. They are used instead of hard-coded values to provide flexibility and uniformity across the application.
487
+
488
+ By defining style properties as tokens, we can transform the styles into various implementations compatible with different platforms or formats as our use cases expand (e.g., transforming tokens to CSS variables, CSS utility classes, etc.).
489
+
490
+ ### Theming with design tokens
491
+
492
+ Paragon uses [style-dictionary](https://github.com/amzn/style-dictionary) to build design tokens into CSS variables that are included in the package. Read more in [design tokens README](tokens/README.md).
493
+
494
+ #### Compiling CSS from design tokens for Paragon contributions (in this repo)
495
+ 1. **`npm install`.** Install dependencies, including `style-dictionary`.
496
+ 2. Make changes to design token(s).
497
+ 3. **`npm run build-scss`.** Transforms the tokens to CSS variables and CSS utility classes, and generates `core.css` and `light.css` output files.
498
+ - `light.css`. CSS variable definitions for colors in the light theme variant.
499
+ - `core.css`. Contains the majority of Paragon/Bootstrap foundational styles for layout, components, etc. Consumes CSS variables defined by `light.css`.
500
+ 4. Test changes locally (e.g., running the documentation website, the example MFE app, etc.).
501
+ 5. Ensure changes to `core.css` and `light.css` are committed & released to NPM (which also "releases" them on versioned public CDNs for NPM packages).
502
+ 6. Consuming applications would inject the `core.css` and `light.css` theme files into their applications via a mechanism similar to https://github.com/openedx/frontend-platform/pull/440 (ideally pulling from a public CDN for NPM packages, but falling back to locally installed copies, if needed).
503
+
504
+ #### Compiling CSS from design tokens for `@edx/brand` theme authors (in `@edx/brand` repos)
505
+ 1. **`npm install`.** Install dependencies, including `@edx/paragon`.
506
+ 2. Create tokens that will override Paragon's default tokens (matching same JSON schema).
507
+ 3. **`npm run build-scss`.** This `@edx/brand` repo will have a new NPM script that utilizes a new CLI exported by `@edx/paragon` which exposes the `build-tokens.js` script (or possibly another if we end up needing one for the brand packages to run specifically, TBD) for `@edx/brand` consumers.
508
+ - The intent of running this command is to effectively deep merge the tokens defined in Paragon's default tokens with the override tokens defined by `@edx/brand`, generating its own `core.css` and `light.css` output files (exact output files still a TBD) containing CSS variable overrides based on the token overrides.
509
+ 5. Ensure any changes to the generated `core.css` and `light.css` files are committed & released to NPM (which also "releases" them on versioned public CDNs for NPM packages).
510
+ - _Note: It is a bit unclear still in the above linked implementation POC for `@edx/frontend-platform` how it would integrate with `@edx/brand` in this way. Open to suggestions/feedback/ideas here._
@@ -2,10 +2,13 @@
2
2
  const chalk = require('chalk');
3
3
  const themeCommand = require('../lib/install-theme');
4
4
  const helpCommand = require('../lib/help');
5
+ const buildTokensCommand = require('../lib/build-tokens');
6
+ const replaceVariablesCommand = require('../lib/replace-variables');
7
+ const buildScssCommand = require('../lib/build-scss');
8
+ const { sendTrackInfo } = require('../lib/utils');
5
9
  const versionCommand = require('../lib/version');
6
10
  const migrateToOpenEdxScopeCommand = require('../lib/migrate-to-openedx-scope');
7
11
 
8
- const HELP_COMMAND = 'help';
9
12
  const commandAliases = {
10
13
  '-v': 'version',
11
14
  '--version': 'version',
@@ -31,6 +34,9 @@ const COMMANDS = {
31
34
  * {
32
35
  * name: '--optionName',
33
36
  * description: 'optionDescription',
37
+ * choices: 'optionChoices',
38
+ * defaultValue: 'optionDefaultValue',
39
+ * required: true/false,
34
40
  * },
35
41
  * ...
36
42
  * ],
@@ -60,8 +66,118 @@ const COMMANDS = {
60
66
  },
61
67
  ],
62
68
  },
69
+ 'build-tokens': {
70
+ executor: buildTokensCommand,
71
+ description: 'CLI to build Paragon design tokens.',
72
+ options: [
73
+ {
74
+ name: '-s, --source',
75
+ description: 'Specify the source directory for design tokens.',
76
+ defaultValue: '\'\'',
77
+ },
78
+ {
79
+ name: '-b, --build-dir',
80
+ description: 'Specify the build directory for the generated tokens.',
81
+ defaultValue: './build/',
82
+ },
83
+ {
84
+ name: '--source-tokens-only',
85
+ description: 'Include only source design tokens in the build.',
86
+ defaultValue: false,
87
+ },
88
+ {
89
+ name: '-t, --themes',
90
+ description: 'Specify themes to include in the token build.',
91
+ defaultValue: 'light',
92
+ },
93
+ ],
94
+ },
95
+ 'replace-variables': {
96
+ executor: replaceVariablesCommand,
97
+ description: 'CLI to replace SCSS variables usages or definitions to CSS variables and vice versa in .scss files.',
98
+ parameters: [
99
+ {
100
+ name: '-p, --filePath',
101
+ description: 'Path to the file or directory where to replace variables.',
102
+ defaultValue: '\'\'',
103
+ },
104
+ ],
105
+ options: [
106
+ {
107
+ name: '-s, --source',
108
+ description: 'Type of replacement: usage or definition. If set to "definition" the command will only update SCSS variables definitions with CSS variables, if set to "usage" - all occurrences of SCSS variables will we replaced',
109
+ defaultValue: '\'\'',
110
+ },
111
+ {
112
+ name: '-t, --replacementType',
113
+ description: 'Type of replacement: usage or definition. If set to "definition" the command will only update SCSS variables definitions with CSS variables, if set to "usage" - all occurrences of SCSS variables will we replaced',
114
+ choices: '[usage|definition]',
115
+ defaultValue: 'definition',
116
+ },
117
+ {
118
+ name: '-d, --direction',
119
+ description: 'Map direction: css-to-scss or scss-to-css, if replacement type parameter is set to "definition" this has no effect.',
120
+ choices: '[scss-to-css|css-to-scss]',
121
+ defaultValue: 'scss-to-css',
122
+ },
123
+ ],
124
+ },
125
+ 'build-scss': {
126
+ executor: buildScssCommand,
127
+ description: 'CLI to compile Paragon\'s core and themes SCSS into CSS.',
128
+ options: [
129
+ {
130
+ name: '--corePath',
131
+ description: 'Path to the theme\'s core SCSS file, defaults to Paragon\'s core.scss.',
132
+ defaultValue: 'styles/scss/core/core.scss',
133
+ },
134
+ {
135
+ name: '--themesPath',
136
+ description: `Path to the directory that contains themes' files. Expects directory to have following structure:
137
+ themes/
138
+ light/
139
+ │ ├─ index.css
140
+ │ ├─ other_css_files
141
+ dark/
142
+ │ ├─ index.css
143
+ │ ├─ other_css_files
144
+ some_other_custom_theme/
145
+ │ ├─ index.css
146
+ │ ├─ other_css_files
147
+ ...
148
+
149
+ where index.css has imported all other CSS files in the theme's subdirectory. The script will output
150
+ light.css, dark.css and some_other_custom_theme.css files (together with maps and minified versions).
151
+ You can provide any amount of themes. Default to paragon's themes.
152
+ `,
153
+ defaultValue: 'styles/css/themes',
154
+ },
155
+ {
156
+ name: '--outDir',
157
+ description: 'Specifies directory where to out resulting CSS files.',
158
+ defaultValue: './dist',
159
+ },
160
+ {
161
+ name: '--defaultThemeVariants',
162
+ description: `Specifies default theme variants. Defaults to a single 'light' theme variant.
163
+ You can provide multiple default theme variants by passing multiple values, for
164
+ example: \`--defaultThemeVariants light dark\`
165
+ `,
166
+ defaultValue: 'light',
167
+ },
168
+ ],
169
+ },
63
170
  help: {
64
- executor: helpCommand,
171
+ executor: (args) => helpCommand(COMMANDS, args),
172
+ parameters: [
173
+ {
174
+ name: 'command',
175
+ description: 'Specifies command name.',
176
+ defaultValue: '\'\'',
177
+ choices: '[install-theme|build-tokens|replace-variables|build-scss]',
178
+ required: false,
179
+ },
180
+ ],
65
181
  description: 'Displays help for available commands.',
66
182
  },
67
183
  version: {
@@ -70,8 +186,14 @@ const COMMANDS = {
70
186
  },
71
187
  };
72
188
 
189
+ /**
190
+ * Executes a Paragon CLI command based on the provided command-line arguments.
191
+ *
192
+ * @async
193
+ * @function executeParagonCommand
194
+ */
73
195
  (async () => {
74
- const [command] = process.argv.slice(2);
196
+ const [command, ...commandArgs] = process.argv.slice(2);
75
197
  const resolvedCommand = commandAliases[command] || command;
76
198
  const executor = COMMANDS[resolvedCommand];
77
199
 
@@ -81,16 +203,13 @@ const COMMANDS = {
81
203
  return;
82
204
  }
83
205
 
84
- if (command === HELP_COMMAND) {
85
- helpCommand(COMMANDS);
86
- return;
87
- }
88
-
89
206
  try {
90
- await executor.executor();
207
+ await executor.executor(commandArgs);
208
+ sendTrackInfo('openedx.paragon.cli-command.used', { command, status: 'success' });
91
209
  } catch (error) {
92
210
  // eslint-disable-next-line no-console
93
211
  console.error(chalk.red.bold('An error occurred:', error.message));
212
+ sendTrackInfo('openedx.paragon.cli-command.used', { command, status: 'error', errorMsg: error.message });
94
213
  process.exit(1);
95
214
  }
96
215
  })();
@@ -1,5 +1,3 @@
1
- @import "variables";
2
-
3
1
  .pgn__action-row {
4
2
  display: flex;
5
3
  flex-grow: 1;
@@ -11,7 +9,7 @@
11
9
  }
12
10
 
13
11
  & > * + * {
14
- margin-inline-start: $action-row-gap-x;
12
+ margin-inline-start: var(--pgn-spacing-action-row-gap-x);
15
13
  }
16
14
  }
17
15
 
@@ -27,7 +25,7 @@
27
25
  }
28
26
 
29
27
  & > * + * {
30
- margin-bottom: $action-row-gap-y;
28
+ margin-bottom: var(--pgn-spacing-action-row-gap-y);
31
29
  }
32
30
  }
33
31
 
@@ -1,5 +1,3 @@
1
- @import "variables";
2
-
3
1
  //
4
2
  // Override Bootstrap's alert definition.
5
3
  // We do this to get more control over colors
@@ -12,11 +10,13 @@
12
10
 
13
11
  .alert {
14
12
  position: relative;
15
- padding: $alert-padding-y $alert-padding-x;
16
- margin-bottom: $alert-margin-bottom;
17
- border: $alert-border-width solid transparent;
13
+ padding: var(--pgn-spacing-alert-padding-y) var(--pgn-spacing-alert-padding-x);
14
+ margin-bottom: var(--pgn-spacing-alert-margin-bottom);
15
+ border: var(--pgn-size-alert-border-width) solid var(--pgn-alert-border-color, transparent);
16
+ color: inherit;
17
+ background-color: var(--pgn-alert-bg, transparent);
18
18
 
19
- @include border-radius($alert-border-radius);
19
+ @include border-radius(var(--pgn-size-alert-border-radius));
20
20
  @include pgn-box-shadow(1, "down");
21
21
 
22
22
  .alert-message-content > :last-child {
@@ -24,8 +24,9 @@
24
24
  }
25
25
 
26
26
  .alert-icon {
27
+ color: var(--pgn-alert-icon-color, inherit);
27
28
  float: left;
28
- margin-inline-end: $alert-icon-space;
29
+ margin-inline-end: var(--pgn-spacing-alert-icon-space);
29
30
  width: 1.5rem;
30
31
  height: 1.5rem;
31
32
  flex-shrink: 0;
@@ -34,17 +35,17 @@
34
35
 
35
36
  // Headings for larger alerts
36
37
  .alert-heading {
37
- // Specified to prevent conflicts of changing $headings-color
38
- color: $alert-title-color;
38
+ // Specified to prevent conflicts of changing var(--pgn-color-headings-base)
39
+ color: var(--pgn-color-alert-title);
39
40
  display: flex;
40
41
  }
41
42
 
42
43
  // added to align content and icon
43
44
  .alert-content {
44
45
  display: flex;
45
- font-size: $alert-font-size;
46
- line-height: $alert-line-height;
47
- color: $alert-content-color;
46
+ font-size: var(--pgn-typography-alert-font-size);
47
+ line-height: var(--pgn-typography-alert-line-height);
48
+ color: var(--pgn-color-alert-content);
48
49
  text-align: start;
49
50
 
50
51
  div {
@@ -54,7 +55,7 @@
54
55
 
55
56
  // Provide class for links that match alerts
56
57
  .alert-link {
57
- font-weight: $alert-link-font-weight;
58
+ font-weight: var(--pgn-typography-alert-font-weight-link);
58
59
  text-decoration: underline;
59
60
 
60
61
  &:hover {
@@ -66,16 +67,16 @@
66
67
  //
67
68
  // Expand the right padding and account for the close button's positioning.
68
69
 
69
- // Baking in $close-font-size: $font-size-base * 1.5 !default; to avoid any dependency
70
+ // Baking in $close-font-size: var(--pgn-typography-font-size-base) * 1.5 !default; to avoid any dependency
70
71
  .alert-dismissible {
71
- padding-right: ($font-size-base * 1.5) + $alert-padding-x * 2;
72
+ padding-right: calc((var(--pgn-typography-font-size-base) * 1.5) + (var(--pgn-spacing-alert-padding-x) * 2));
72
73
 
73
74
  // Adjust close link position
74
75
  .close {
75
76
  position: absolute;
76
77
  top: 0;
77
78
  right: 0;
78
- padding: $alert-padding-y $alert-padding-x;
79
+ padding: var(--pgn-spacing-alert-padding-y) var(--pgn-spacing-alert-padding-x);
79
80
  color: inherit;
80
81
  }
81
82
  }
@@ -85,28 +86,36 @@
85
86
  align-items: center;
86
87
 
87
88
  .pgn__alert-actions {
88
- margin-inline-start: $alert-actions-gap;
89
+ margin-inline-start: var(--pgn-spacing-alert-actions-gap);
89
90
  }
90
91
  }
91
92
 
92
- .pgn__alert-message-wrapper-stacked {
93
- .pgn__alert-actions {
94
- margin-top: $alert-actions-gap;
95
- }
93
+ .pgn__alert-message-wrapper-stacked .pgn__alert-actions {
94
+ margin-top: var(--pgn-spacing-alert-actions-gap);
96
95
  }
97
96
 
98
97
  // Alternate styles
99
- //
100
- // Generate contextual modifier classes for coloring the alert.
101
98
 
102
- @each $color, $value in $theme-colors {
103
- .alert-#{$color} {
104
- color: inherit;
105
- background-color: theme-color($color, "background");
106
- border-color: theme-color($color, "border");
99
+ .alert-success {
100
+ --pgn-alert-bg: var(--pgn-color-alert-bg-success);
101
+ --pgn-alert-border-color: var(--pgn-color-alert-border-success);
102
+ --pgn-alert-icon-color: var(--pgn-color-alert-icon-success);
103
+ }
107
104
 
108
- .alert-icon {
109
- color: theme-color($color, "default");
110
- }
111
- }
105
+ .alert-info {
106
+ --pgn-alert-bg: var(--pgn-color-alert-bg-info);
107
+ --pgn-alert-border-color: var(--pgn-color-alert-border-info);
108
+ --pgn-alert-icon-color: var(--pgn-color-alert-icon-info);
109
+ }
110
+
111
+ .alert-danger {
112
+ --pgn-alert-bg: var(--pgn-color-alert-bg-danger);
113
+ --pgn-alert-border-color: var(--pgn-color-alert-border-danger);
114
+ --pgn-alert-icon-color: var(--pgn-color-alert-icon-danger);
115
+ }
116
+
117
+ .alert-warning {
118
+ --pgn-alert-bg: var(--pgn-color-alert-bg-warning);
119
+ --pgn-alert-border-color: var(--pgn-color-alert-border-warning);
120
+ --pgn-alert-icon-color: var(--pgn-color-alert-icon-warning);
112
121
  }
@@ -0,0 +1,104 @@
1
+ @mixin annotation-triangle($triangle-color, $triangle-direction) {
2
+ content: "";
3
+ height: 0;
4
+ width: 0;
5
+ position: absolute;
6
+ border: solid transparent;
7
+
8
+ @if $triangle-direction == top {
9
+ border-bottom-color: $triangle-color;
10
+ border-width: 0 var(--pgn-size-annotation-arrow-border-width) var(--pgn-size-annotation-arrow-border-width);
11
+ right: 0;
12
+ left: 0;
13
+ top: calc(var(--pgn-size-annotation-arrow-border-width) * -1);
14
+ margin: 0 auto;
15
+ }
16
+
17
+ @else if $triangle-direction == right {
18
+ border-left-color: $triangle-color;
19
+ border-width:
20
+ var(--pgn-size-annotation-arrow-border-width) 0 var(--pgn-size-annotation-arrow-border-width)
21
+ var(--pgn-size-annotation-arrow-border-width);
22
+ top: 0;
23
+ bottom: 0;
24
+ right: calc(var(--pgn-size-annotation-arrow-border-width) * -1);
25
+ margin: auto 0;
26
+ }
27
+
28
+ @else if $triangle-direction == bottom {
29
+ border-top-color: $triangle-color;
30
+ border-width: var(--pgn-size-annotation-arrow-border-width) var(--pgn-size-annotation-arrow-border-width) 0;
31
+ right: 0;
32
+ left: 0;
33
+ bottom: calc(var(--pgn-size-annotation-arrow-border-width) * -1);
34
+ margin: 0 auto;
35
+ }
36
+
37
+ @else if $triangle-direction == left {
38
+ border-right-color: $triangle-color;
39
+ border-width:
40
+ var(--pgn-size-annotation-arrow-border-width) var(--pgn-size-annotation-arrow-border-width)
41
+ var(--pgn-size-annotation-arrow-border-width) 0;
42
+ top: 0;
43
+ bottom: 0;
44
+ left: calc(var(--pgn-size-annotation-arrow-border-width) * -1);
45
+ margin: auto 0;
46
+ }
47
+
48
+ @else {
49
+ @error "Unknown direction #{$triangle-direction}.";
50
+ }
51
+ }
52
+
53
+ @mixin annotation-variant($bg-color, $text-color, $direction) {
54
+ background-color: $bg-color;
55
+ color: $text-color;
56
+
57
+ // set additional margin to arrow side of the Annotation
58
+ margin-#{$direction}:
59
+ calc(
60
+ var(--pgn-size-annotation-arrow-border-width) + var(--pgn-spacing-annotation-arrow-side-margin)
61
+ );
62
+
63
+ [dir="rtl"] & {
64
+ @if $direction == left {
65
+ margin-left: 0;
66
+ margin-right:
67
+ calc(
68
+ var(--pgn-size-annotation-arrow-border-width) + var(--pgn-spacing-annotation-arrow-side-margin)
69
+ );
70
+ }
71
+
72
+ @else if $direction == right {
73
+ margin-right: 0;
74
+ margin-left:
75
+ calc(
76
+ var(--pgn-size-annotation-arrow-border-width) + var(--pgn-spacing-annotation-arrow-side-margin)
77
+ );
78
+ }
79
+ }
80
+
81
+ &::after {
82
+ @include annotation-triangle($bg-color, $direction);
83
+
84
+ [dir="rtl"] & {
85
+ @if $direction == left {
86
+ left: initial;
87
+ right: calc(var(--pgn-size-annotation-arrow-border-width) * -1);
88
+ border-width:
89
+ var(--pgn-size-annotation-arrow-border-width) 0 var(--pgn-size-annotation-arrow-border-width)
90
+ var(--pgn-size-annotation-arrow-border-width);
91
+ border-left-color: $bg-color;
92
+ }
93
+
94
+ @else if $direction == right {
95
+ right: initial;
96
+ left: calc(var(--pgn-size-annotation-arrow-border-width) * -1);
97
+ border-width:
98
+ var(--pgn-size-annotation-arrow-border-width) var(--pgn-size-annotation-arrow-border-width)
99
+ var(--pgn-size-annotation-arrow-border-width) 0;
100
+ border-right-color: $bg-color;
101
+ }
102
+ }
103
+ }
104
+ }