newspack-components 4.3.0 → 4.4.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 (263) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/DEVELOPMENT.md +868 -0
  3. package/colors/colors.module.scss +52 -2
  4. package/copy-styles.js +3 -2
  5. package/dist/cjs/accordion/index.js +17 -12
  6. package/dist/cjs/action-card/index.js +176 -139
  7. package/dist/cjs/autocomplete-tokenfield/index.js +254 -234
  8. package/dist/cjs/autocomplete-with-latest-posts/index.js +172 -110
  9. package/dist/cjs/autocomplete-with-suggestions/index.js +229 -126
  10. package/dist/cjs/badge/index.js +7 -7
  11. package/dist/cjs/box-contrast/index.js +19 -15
  12. package/dist/cjs/button/index.js +41 -26
  13. package/dist/cjs/button-props/button-props.js +5 -5
  14. package/dist/cjs/button-props/index.js +2 -2
  15. package/dist/cjs/card/core-card.js +110 -52
  16. package/dist/cjs/card/index.js +74 -67
  17. package/dist/cjs/card/style-core.scss +93 -25
  18. package/dist/cjs/card/style.scss +2 -2
  19. package/dist/cjs/card-feature/index.js +141 -0
  20. package/dist/cjs/card-feature/style.scss +75 -0
  21. package/dist/cjs/card-form/index.js +144 -0
  22. package/dist/cjs/card-form/style.scss +20 -0
  23. package/dist/cjs/card-settings-group/index.js +36 -16
  24. package/dist/cjs/card-sortable-list/index.js +176 -140
  25. package/dist/cjs/category-autocomplete/index.js +175 -155
  26. package/dist/cjs/color-picker/index.js +41 -23
  27. package/dist/cjs/color-picker/index.test.js +82 -0
  28. package/dist/cjs/color-picker/style.scss +11 -13
  29. package/dist/cjs/confirm-dialog/index.js +86 -22
  30. package/dist/cjs/consts.js +1 -1
  31. package/dist/cjs/custom-select-control/index.js +39 -28
  32. package/dist/cjs/dataviews/index.js +38 -0
  33. package/dist/cjs/dataviews/style.scss +9 -0
  34. package/dist/cjs/divider/index.js +26 -21
  35. package/dist/cjs/footer/index.js +36 -30
  36. package/dist/cjs/form-token-field/index.js +51 -40
  37. package/dist/cjs/global-notices/index.js +5 -5
  38. package/dist/cjs/grid/index.js +25 -19
  39. package/dist/cjs/grid/style.scss +6 -1
  40. package/dist/cjs/handoff/index.js +204 -156
  41. package/dist/cjs/handoff-message/index.js +12 -7
  42. package/dist/cjs/hooks/index.js +10 -8
  43. package/dist/cjs/hooks/use-confirm-dialog.js +79 -0
  44. package/dist/cjs/hooks/use-unsaved-changes-dialog.js +144 -0
  45. package/dist/cjs/hooks/useObjectState.js +21 -12
  46. package/dist/cjs/hooks/useObjectState.test.js +55 -33
  47. package/dist/cjs/hooks/useOnClickOutside.js +6 -6
  48. package/dist/cjs/hooks/usePrompt.js +10 -13
  49. package/dist/cjs/image-upload/index.js +114 -123
  50. package/dist/cjs/image-upload/index.test.js +11 -13
  51. package/dist/cjs/image-upload/style.scss +12 -40
  52. package/dist/cjs/index.js +136 -104
  53. package/dist/cjs/info-button/index.js +43 -32
  54. package/dist/cjs/integration-icons/active-campaign.js +22 -0
  55. package/dist/cjs/integration-icons/constant-contact.js +28 -0
  56. package/dist/cjs/integration-icons/fundraise-up.js +25 -0
  57. package/dist/cjs/integration-icons/index.js +48 -0
  58. package/dist/cjs/integration-icons/mailchimp.js +19 -0
  59. package/dist/cjs/integration-icons/salesforce.js +17 -0
  60. package/dist/cjs/integration-icons/wisepops.js +20 -0
  61. package/dist/cjs/modal/index.js +22 -19
  62. package/dist/cjs/modal/style.scss +4 -0
  63. package/dist/cjs/newspack-icon/index.js +45 -38
  64. package/dist/cjs/notice/index.js +64 -55
  65. package/dist/cjs/plugin-installer/index.js +259 -253
  66. package/dist/cjs/plugin-settings/SettingsSection.js +66 -60
  67. package/dist/cjs/plugin-settings/index.js +217 -200
  68. package/dist/cjs/plugin-toggle/index.js +192 -199
  69. package/dist/cjs/popover/index.js +41 -28
  70. package/dist/cjs/position-control/index.js +24 -23
  71. package/dist/cjs/progress-bar/index.js +71 -59
  72. package/dist/cjs/progress-bar/index.test.js +62 -68
  73. package/dist/cjs/proxied-imports/router.js +3 -3
  74. package/dist/cjs/radio-control/index.js +40 -27
  75. package/dist/cjs/section-header/index.js +103 -58
  76. package/dist/cjs/section-header/style.scss +31 -11
  77. package/dist/cjs/select-control/ButtonGroupControl.js +26 -21
  78. package/dist/cjs/select-control/GroupedSelectControl.js +41 -35
  79. package/dist/cjs/select-control/index.js +52 -40
  80. package/dist/cjs/settings/MinMaxSetting.js +30 -20
  81. package/dist/cjs/settings/SettingsCard.js +20 -17
  82. package/dist/cjs/settings/SettingsSection.js +22 -21
  83. package/dist/cjs/settings/index.js +5 -5
  84. package/dist/cjs/sortable-newsletter-list-control/index.js +78 -57
  85. package/dist/cjs/steps-list/index.js +44 -34
  86. package/dist/cjs/steps-list-item/index.js +47 -39
  87. package/dist/cjs/style-card/index.js +70 -63
  88. package/dist/cjs/tabbed-navigation/index.js +38 -36
  89. package/dist/cjs/text-control/index.js +27 -25
  90. package/dist/cjs/utils/color.js +4 -4
  91. package/dist/cjs/utils/editor-toolbar-back-button.js +61 -0
  92. package/dist/cjs/utils/index.js +31 -19
  93. package/dist/cjs/utils/style.scss +8 -0
  94. package/dist/cjs/waiting/index.js +48 -37
  95. package/dist/cjs/web-preview/index.js +217 -211
  96. package/dist/cjs/with-wizard/index.js +362 -364
  97. package/dist/cjs/with-wizard/style.scss +4 -54
  98. package/dist/cjs/with-wizard-screen/index.js +54 -58
  99. package/dist/cjs/with-wizard-screen/style.scss +41 -3
  100. package/dist/cjs/wizard/components/WizardError.js +20 -18
  101. package/dist/cjs/wizard/components/WizardSnackbar.js +26 -23
  102. package/dist/cjs/wizard/index.js +176 -114
  103. package/dist/cjs/wizard/store/index.js +171 -123
  104. package/dist/cjs/wizard/store/utils.js +13 -8
  105. package/dist/esm/accordion/index.js +14 -9
  106. package/dist/esm/action-card/index.js +168 -123
  107. package/dist/esm/autocomplete-tokenfield/index.js +248 -222
  108. package/dist/esm/autocomplete-with-latest-posts/index.js +169 -103
  109. package/dist/esm/autocomplete-with-suggestions/index.js +226 -119
  110. package/dist/esm/badge/index.js +5 -5
  111. package/dist/esm/box-contrast/index.js +15 -11
  112. package/dist/esm/button/index.js +39 -21
  113. package/dist/esm/button-props/button-props.js +1 -1
  114. package/dist/esm/card/core-card.js +109 -47
  115. package/dist/esm/card/index.js +69 -54
  116. package/dist/esm/card/style-core.scss +93 -25
  117. package/dist/esm/card/style.scss +2 -2
  118. package/dist/esm/card-feature/index.js +131 -0
  119. package/dist/esm/card-feature/style.scss +75 -0
  120. package/dist/esm/card-form/index.js +134 -0
  121. package/dist/esm/card-form/style.scss +20 -0
  122. package/dist/esm/card-settings-group/index.js +33 -14
  123. package/dist/esm/card-sortable-list/index.js +170 -126
  124. package/dist/esm/category-autocomplete/index.js +168 -140
  125. package/dist/esm/color-picker/index.js +39 -21
  126. package/dist/esm/color-picker/index.test.js +78 -0
  127. package/dist/esm/color-picker/style.scss +11 -13
  128. package/dist/esm/confirm-dialog/index.js +85 -18
  129. package/dist/esm/consts.js +1 -1
  130. package/dist/esm/custom-select-control/index.js +34 -15
  131. package/dist/esm/dataviews/index.js +34 -0
  132. package/dist/esm/dataviews/style.scss +9 -0
  133. package/dist/esm/divider/index.js +24 -16
  134. package/dist/esm/footer/index.js +34 -28
  135. package/dist/esm/form-token-field/index.js +46 -27
  136. package/dist/esm/global-notices/index.js +3 -3
  137. package/dist/esm/grid/index.js +23 -14
  138. package/dist/esm/grid/style.scss +6 -1
  139. package/dist/esm/handoff/index.js +199 -143
  140. package/dist/esm/handoff-message/index.js +10 -6
  141. package/dist/esm/hooks/index.js +8 -6
  142. package/dist/esm/hooks/use-confirm-dialog.js +73 -0
  143. package/dist/esm/hooks/use-unsaved-changes-dialog.js +136 -0
  144. package/dist/esm/hooks/useObjectState.js +19 -9
  145. package/dist/esm/hooks/useObjectState.test.js +54 -32
  146. package/dist/esm/hooks/useOnClickOutside.js +4 -4
  147. package/dist/esm/hooks/usePrompt.js +9 -11
  148. package/dist/esm/image-upload/index.js +110 -111
  149. package/dist/esm/image-upload/index.test.js +11 -13
  150. package/dist/esm/image-upload/style.scss +12 -40
  151. package/dist/esm/index.js +7 -1
  152. package/dist/esm/info-button/index.js +38 -19
  153. package/dist/esm/integration-icons/active-campaign.js +16 -0
  154. package/dist/esm/integration-icons/constant-contact.js +22 -0
  155. package/dist/esm/integration-icons/fundraise-up.js +19 -0
  156. package/dist/esm/integration-icons/index.js +6 -0
  157. package/dist/esm/integration-icons/mailchimp.js +13 -0
  158. package/dist/esm/integration-icons/salesforce.js +11 -0
  159. package/dist/esm/integration-icons/wisepops.js +14 -0
  160. package/dist/esm/modal/index.js +20 -13
  161. package/dist/esm/modal/style.scss +4 -0
  162. package/dist/esm/newspack-icon/index.js +40 -25
  163. package/dist/esm/notice/index.js +59 -42
  164. package/dist/esm/plugin-installer/index.js +255 -243
  165. package/dist/esm/plugin-settings/SettingsSection.js +61 -50
  166. package/dist/esm/plugin-settings/index.js +212 -189
  167. package/dist/esm/plugin-toggle/index.js +187 -190
  168. package/dist/esm/popover/index.js +35 -16
  169. package/dist/esm/position-control/index.js +22 -18
  170. package/dist/esm/progress-bar/index.js +66 -49
  171. package/dist/esm/progress-bar/index.test.js +61 -67
  172. package/dist/esm/radio-control/index.js +34 -15
  173. package/dist/esm/section-header/index.js +102 -57
  174. package/dist/esm/section-header/style.scss +31 -11
  175. package/dist/esm/select-control/ButtonGroupControl.js +23 -18
  176. package/dist/esm/select-control/GroupedSelectControl.js +38 -30
  177. package/dist/esm/select-control/index.js +47 -27
  178. package/dist/esm/settings/MinMaxSetting.js +27 -16
  179. package/dist/esm/settings/SettingsCard.js +18 -13
  180. package/dist/esm/settings/SettingsSection.js +20 -19
  181. package/dist/esm/settings/index.js +3 -3
  182. package/dist/esm/sortable-newsletter-list-control/index.js +74 -53
  183. package/dist/esm/steps-list/index.js +39 -21
  184. package/dist/esm/steps-list-item/index.js +42 -26
  185. package/dist/esm/style-card/index.js +65 -50
  186. package/dist/esm/tabbed-navigation/index.js +35 -33
  187. package/dist/esm/text-control/index.js +25 -19
  188. package/dist/esm/utils/color.js +4 -4
  189. package/dist/esm/utils/editor-toolbar-back-button.js +53 -0
  190. package/dist/esm/utils/index.js +29 -16
  191. package/dist/esm/utils/style.scss +8 -0
  192. package/dist/esm/waiting/index.js +43 -24
  193. package/dist/esm/web-preview/index.js +213 -201
  194. package/dist/esm/with-wizard/index.js +360 -358
  195. package/dist/esm/with-wizard/style.scss +4 -54
  196. package/dist/esm/with-wizard-screen/index.js +48 -46
  197. package/dist/esm/with-wizard-screen/style.scss +41 -3
  198. package/dist/esm/wizard/components/WizardError.js +18 -16
  199. package/dist/esm/wizard/components/WizardSnackbar.js +23 -17
  200. package/dist/esm/wizard/index.js +171 -103
  201. package/dist/esm/wizard/store/index.js +169 -116
  202. package/dist/esm/wizard/store/utils.js +13 -6
  203. package/package.json +30 -16
  204. package/release.config.js +1 -0
  205. package/shared/hooks/use-coauthors.js +195 -27
  206. package/shared/hooks/use-coauthors.test.js +232 -6
  207. package/shared/scss/_mixins.scss +13 -5
  208. package/src/accordion/index.js +8 -7
  209. package/src/action-card/index.js +15 -1
  210. package/src/badge/index.tsx +3 -1
  211. package/src/card/core-card.js +95 -18
  212. package/src/card/index.js +1 -0
  213. package/src/card/style-core.scss +93 -25
  214. package/src/card/style.scss +2 -2
  215. package/src/card-feature/README.md +188 -0
  216. package/src/card-feature/index.tsx +186 -0
  217. package/src/card-feature/style.scss +75 -0
  218. package/src/card-form/README.md +113 -0
  219. package/src/card-form/index.tsx +128 -0
  220. package/src/card-form/style.scss +20 -0
  221. package/src/card-settings-group/index.tsx +28 -3
  222. package/src/card-sortable-list/index.tsx +27 -4
  223. package/src/color-picker/index.js +15 -8
  224. package/src/color-picker/index.test.js +52 -0
  225. package/src/color-picker/style.scss +11 -13
  226. package/src/confirm-dialog/README.md +128 -0
  227. package/src/confirm-dialog/index.tsx +74 -6
  228. package/src/dataviews/index.tsx +34 -0
  229. package/src/dataviews/style.scss +9 -0
  230. package/src/grid/style.scss +6 -1
  231. package/src/handoff/README.md +93 -0
  232. package/src/handoff/index.js +46 -8
  233. package/src/hooks/index.ts +2 -1
  234. package/src/hooks/use-confirm-dialog.tsx +80 -0
  235. package/src/hooks/use-unsaved-changes-dialog.tsx +140 -0
  236. package/src/image-upload/index.js +10 -15
  237. package/src/image-upload/style.scss +12 -40
  238. package/src/index.js +7 -1
  239. package/src/integration-icons/active-campaign.js +14 -0
  240. package/src/integration-icons/constant-contact.js +22 -0
  241. package/src/integration-icons/fundraise-up.js +18 -0
  242. package/src/integration-icons/index.js +6 -0
  243. package/src/integration-icons/mailchimp.js +10 -0
  244. package/src/integration-icons/salesforce.js +10 -0
  245. package/src/integration-icons/wisepops.js +14 -0
  246. package/src/modal/style.scss +4 -0
  247. package/src/plugin-installer/index.js +30 -19
  248. package/src/section-header/index.js +56 -24
  249. package/src/section-header/style.scss +31 -11
  250. package/src/select-control/index.js +4 -0
  251. package/src/utils/editor-toolbar-back-button.tsx +48 -0
  252. package/src/utils/index.js +6 -0
  253. package/src/utils/style.scss +8 -0
  254. package/src/with-wizard/style.scss +4 -54
  255. package/src/with-wizard-screen/style.scss +41 -3
  256. package/src/wizard/index.js +90 -53
  257. package/src/wizard/store/index.js +2 -2
  258. package/dist/cjs/button-card/index.js +0 -72
  259. package/dist/cjs/button-card/style.scss +0 -180
  260. package/dist/esm/button-card/index.js +0 -64
  261. package/dist/esm/button-card/style.scss +0 -180
  262. package/src/button-card/index.js +0 -52
  263. package/src/button-card/style.scss +0 -180
@@ -1,72 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _element = require("@wordpress/element");
9
- var _icons = require("@wordpress/icons");
10
- var _ = require("../");
11
- require("./style.scss");
12
- var _classnames = _interopRequireDefault(require("classnames"));
13
- var _jsxRuntime = require("react/jsx-runtime");
14
- /**
15
- * Button Card
16
- */
17
-
18
- /**
19
- * WordPress dependencies
20
- */
21
-
22
- /**
23
- * Internal dependencies
24
- */
25
-
26
- /**
27
- * External dependencies
28
- */
29
-
30
- class ButtonCard extends _element.Component {
31
- /**
32
- * Render
33
- */
34
- render() {
35
- const {
36
- chevron,
37
- className,
38
- desc,
39
- grouped,
40
- icon,
41
- isDestructive,
42
- isPressed,
43
- isSmall,
44
- title,
45
- ...otherProps
46
- } = this.props;
47
- const classes = (0, _classnames.default)('newspack-button-card', className, chevron && 'has-chevron', grouped && 'grouped', icon && 'has-icon', isDestructive && 'is-destructive', isPressed && 'is-pressed', isSmall && 'is-small');
48
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("a", {
49
- className: classes,
50
- ...otherProps,
51
- children: [icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
52
- icon: icon,
53
- height: 48,
54
- width: 48
55
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.Grid, {
56
- noMargin: true,
57
- columns: 1,
58
- gutter: 8,
59
- children: [title && /*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
60
- children: title
61
- }), desc && /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
62
- children: desc
63
- })]
64
- }), chevron && /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
65
- icon: _icons.chevronRight,
66
- height: 24,
67
- width: 24
68
- })]
69
- });
70
- }
71
- }
72
- var _default = exports.default = ButtonCard;
@@ -1,180 +0,0 @@
1
- /**
2
- * Button Card
3
- */
4
-
5
- @use "~@wordpress/base-styles/colors" as wp-colors;
6
-
7
- .newspack-button-card {
8
- background: white;
9
- border-radius: 2px;
10
- border: 1px solid wp-colors.$gray-300;
11
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent;
12
- cursor: pointer;
13
- display: block;
14
- margin: 32px 0;
15
- padding: 32px;
16
- position: relative;
17
- text-decoration: none;
18
- transition:
19
- background-color 125ms ease-in-out,
20
- border-color 125ms ease-in-out,
21
- box-shadow 125ms ease-in-out;
22
-
23
- &:focus,
24
- &.is-pressed {
25
- background: white;
26
- border-color: var(--wp-admin-theme-color);
27
- box-shadow: inset 0 0 0 1px var(--wp-admin-theme-color) !important;
28
- outline: none !important;
29
- z-index: 1;
30
- }
31
-
32
- &.is-pressed:focus-visible {
33
- box-shadow:
34
- inset 0 0 0 1px var(--wp-admin-theme-color),
35
- 0 0 0 1px white,
36
- 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color) !important;
37
- }
38
-
39
- &:active,
40
- &:hover {
41
- border-color: var(--wp-admin-theme-color);
42
- color: var(--wp-admin-theme-color);
43
- text-decoration: none;
44
- z-index: 1;
45
-
46
- .newspack-grid h3,
47
- p {
48
- color: inherit;
49
- }
50
- }
51
-
52
- .newspack-grid h3,
53
- p {
54
- transition: color 125ms ease-in-out;
55
- }
56
-
57
- .newspack-grid h3 {
58
- color: wp-colors.$gray-900;
59
- }
60
-
61
- p {
62
- color: wp-colors.$gray-700;
63
- }
64
-
65
- // Grouped
66
-
67
- &.grouped {
68
- border-radius: 0;
69
-
70
- & + &:not(.br--top) {
71
- margin-top: -33px;
72
- }
73
-
74
- &.br--bottom {
75
- border-bottom-left-radius: 2px;
76
- border-bottom-right-radius: 2px;
77
- }
78
-
79
- &.br--top {
80
- border-top-left-radius: 2px;
81
- border-top-right-radius: 2px;
82
- }
83
- }
84
-
85
- // Chevron & Icon
86
-
87
- &.has-chevron,
88
- &.has-icon {
89
- align-items: center;
90
- display: grid;
91
- grid-gap: 16px;
92
- grid-template-columns: auto 24px;
93
-
94
- &:active,
95
- &:hover {
96
- svg {
97
- fill: currentcolor;
98
- }
99
- }
100
-
101
- svg {
102
- fill: var(--wp-admin-theme-color);
103
- transition: fill 125ms ease-in-out;
104
- }
105
- }
106
-
107
- &.has-icon {
108
- grid-template-columns: 48px auto;
109
-
110
- &.has-chevron {
111
- grid-template-columns: 48px auto 24px;
112
- }
113
- }
114
-
115
- // Is Small
116
-
117
- &.is-small {
118
- padding: 16px;
119
-
120
- &.has-chevron,
121
- &.has-icon {
122
- svg {
123
- height: 24px;
124
- width: 24px;
125
- }
126
- }
127
-
128
- &.has-icon {
129
- grid-template-columns: 24px auto;
130
-
131
- &.has-chevron {
132
- grid-template-columns: 24px auto 24px;
133
- }
134
- }
135
-
136
- h3 {
137
- font-size: 1em;
138
- line-height: 1.5;
139
- }
140
-
141
- p {
142
- font-size: 12px;
143
- line-height: 1.4;
144
- }
145
- }
146
-
147
- // Is Destructive
148
-
149
- &.is-destructive {
150
- .title {
151
- color: wp-colors.$alert-red;
152
- }
153
-
154
- &.has-chevron,
155
- &.has-icon {
156
- svg {
157
- fill: wp-colors.$alert-red;
158
- }
159
- }
160
-
161
- &:focus,
162
- &.is-pressed {
163
- border-color: wp-colors.$alert-red;
164
- box-shadow: inset 0 0 0 1px wp-colors.$alert-red !important;
165
- }
166
-
167
- &.is-pressed:focus-visible {
168
- box-shadow:
169
- inset 0 0 0 1px wp-colors.$alert-red,
170
- 0 0 0 1px white,
171
- 0 0 0 var(--wp-admin-border-width-focus) wp-colors.$alert-red !important;
172
- }
173
-
174
- &:active,
175
- &:hover {
176
- background-color: wp-colors.$gray-100;
177
- border-color: wp-colors.$alert-red;
178
- }
179
- }
180
- }
@@ -1,64 +0,0 @@
1
- /**
2
- * Button Card
3
- */
4
-
5
- /**
6
- * WordPress dependencies
7
- */
8
- import { Component } from '@wordpress/element';
9
- import { Icon, chevronRight } from '@wordpress/icons';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import { Grid } from '../';
15
- import './style.scss';
16
-
17
- /**
18
- * External dependencies
19
- */
20
- import classnames from 'classnames';
21
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
- class ButtonCard extends Component {
23
- /**
24
- * Render
25
- */
26
- render() {
27
- const {
28
- chevron,
29
- className,
30
- desc,
31
- grouped,
32
- icon,
33
- isDestructive,
34
- isPressed,
35
- isSmall,
36
- title,
37
- ...otherProps
38
- } = this.props;
39
- const classes = classnames('newspack-button-card', className, chevron && 'has-chevron', grouped && 'grouped', icon && 'has-icon', isDestructive && 'is-destructive', isPressed && 'is-pressed', isSmall && 'is-small');
40
- return /*#__PURE__*/_jsxs("a", {
41
- className: classes,
42
- ...otherProps,
43
- children: [icon && /*#__PURE__*/_jsx(Icon, {
44
- icon: icon,
45
- height: 48,
46
- width: 48
47
- }), /*#__PURE__*/_jsxs(Grid, {
48
- noMargin: true,
49
- columns: 1,
50
- gutter: 8,
51
- children: [title && /*#__PURE__*/_jsx("h3", {
52
- children: title
53
- }), desc && /*#__PURE__*/_jsx("p", {
54
- children: desc
55
- })]
56
- }), chevron && /*#__PURE__*/_jsx(Icon, {
57
- icon: chevronRight,
58
- height: 24,
59
- width: 24
60
- })]
61
- });
62
- }
63
- }
64
- export default ButtonCard;
@@ -1,180 +0,0 @@
1
- /**
2
- * Button Card
3
- */
4
-
5
- @use "~@wordpress/base-styles/colors" as wp-colors;
6
-
7
- .newspack-button-card {
8
- background: white;
9
- border-radius: 2px;
10
- border: 1px solid wp-colors.$gray-300;
11
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent;
12
- cursor: pointer;
13
- display: block;
14
- margin: 32px 0;
15
- padding: 32px;
16
- position: relative;
17
- text-decoration: none;
18
- transition:
19
- background-color 125ms ease-in-out,
20
- border-color 125ms ease-in-out,
21
- box-shadow 125ms ease-in-out;
22
-
23
- &:focus,
24
- &.is-pressed {
25
- background: white;
26
- border-color: var(--wp-admin-theme-color);
27
- box-shadow: inset 0 0 0 1px var(--wp-admin-theme-color) !important;
28
- outline: none !important;
29
- z-index: 1;
30
- }
31
-
32
- &.is-pressed:focus-visible {
33
- box-shadow:
34
- inset 0 0 0 1px var(--wp-admin-theme-color),
35
- 0 0 0 1px white,
36
- 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color) !important;
37
- }
38
-
39
- &:active,
40
- &:hover {
41
- border-color: var(--wp-admin-theme-color);
42
- color: var(--wp-admin-theme-color);
43
- text-decoration: none;
44
- z-index: 1;
45
-
46
- .newspack-grid h3,
47
- p {
48
- color: inherit;
49
- }
50
- }
51
-
52
- .newspack-grid h3,
53
- p {
54
- transition: color 125ms ease-in-out;
55
- }
56
-
57
- .newspack-grid h3 {
58
- color: wp-colors.$gray-900;
59
- }
60
-
61
- p {
62
- color: wp-colors.$gray-700;
63
- }
64
-
65
- // Grouped
66
-
67
- &.grouped {
68
- border-radius: 0;
69
-
70
- & + &:not(.br--top) {
71
- margin-top: -33px;
72
- }
73
-
74
- &.br--bottom {
75
- border-bottom-left-radius: 2px;
76
- border-bottom-right-radius: 2px;
77
- }
78
-
79
- &.br--top {
80
- border-top-left-radius: 2px;
81
- border-top-right-radius: 2px;
82
- }
83
- }
84
-
85
- // Chevron & Icon
86
-
87
- &.has-chevron,
88
- &.has-icon {
89
- align-items: center;
90
- display: grid;
91
- grid-gap: 16px;
92
- grid-template-columns: auto 24px;
93
-
94
- &:active,
95
- &:hover {
96
- svg {
97
- fill: currentcolor;
98
- }
99
- }
100
-
101
- svg {
102
- fill: var(--wp-admin-theme-color);
103
- transition: fill 125ms ease-in-out;
104
- }
105
- }
106
-
107
- &.has-icon {
108
- grid-template-columns: 48px auto;
109
-
110
- &.has-chevron {
111
- grid-template-columns: 48px auto 24px;
112
- }
113
- }
114
-
115
- // Is Small
116
-
117
- &.is-small {
118
- padding: 16px;
119
-
120
- &.has-chevron,
121
- &.has-icon {
122
- svg {
123
- height: 24px;
124
- width: 24px;
125
- }
126
- }
127
-
128
- &.has-icon {
129
- grid-template-columns: 24px auto;
130
-
131
- &.has-chevron {
132
- grid-template-columns: 24px auto 24px;
133
- }
134
- }
135
-
136
- h3 {
137
- font-size: 1em;
138
- line-height: 1.5;
139
- }
140
-
141
- p {
142
- font-size: 12px;
143
- line-height: 1.4;
144
- }
145
- }
146
-
147
- // Is Destructive
148
-
149
- &.is-destructive {
150
- .title {
151
- color: wp-colors.$alert-red;
152
- }
153
-
154
- &.has-chevron,
155
- &.has-icon {
156
- svg {
157
- fill: wp-colors.$alert-red;
158
- }
159
- }
160
-
161
- &:focus,
162
- &.is-pressed {
163
- border-color: wp-colors.$alert-red;
164
- box-shadow: inset 0 0 0 1px wp-colors.$alert-red !important;
165
- }
166
-
167
- &.is-pressed:focus-visible {
168
- box-shadow:
169
- inset 0 0 0 1px wp-colors.$alert-red,
170
- 0 0 0 1px white,
171
- 0 0 0 var(--wp-admin-border-width-focus) wp-colors.$alert-red !important;
172
- }
173
-
174
- &:active,
175
- &:hover {
176
- background-color: wp-colors.$gray-100;
177
- border-color: wp-colors.$alert-red;
178
- }
179
- }
180
- }
@@ -1,52 +0,0 @@
1
- /**
2
- * Button Card
3
- */
4
-
5
- /**
6
- * WordPress dependencies
7
- */
8
- import { Component } from '@wordpress/element';
9
- import { Icon, chevronRight } from '@wordpress/icons';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import { Grid } from '../';
15
- import './style.scss';
16
-
17
- /**
18
- * External dependencies
19
- */
20
- import classnames from 'classnames';
21
-
22
- class ButtonCard extends Component {
23
- /**
24
- * Render
25
- */
26
- render() {
27
- const { chevron, className, desc, grouped, icon, isDestructive, isPressed, isSmall, title, ...otherProps } = this.props;
28
- const classes = classnames(
29
- 'newspack-button-card',
30
- className,
31
- chevron && 'has-chevron',
32
- grouped && 'grouped',
33
- icon && 'has-icon',
34
- isDestructive && 'is-destructive',
35
- isPressed && 'is-pressed',
36
- isSmall && 'is-small'
37
- );
38
-
39
- return (
40
- <a className={ classes } { ...otherProps }>
41
- { icon && <Icon icon={ icon } height={ 48 } width={ 48 } /> }
42
- <Grid noMargin columns={ 1 } gutter={ 8 }>
43
- { title && <h3>{ title }</h3> }
44
- { desc && <p>{ desc }</p> }
45
- </Grid>
46
- { chevron && <Icon icon={ chevronRight } height={ 24 } width={ 24 } /> }
47
- </a>
48
- );
49
- }
50
- }
51
-
52
- export default ButtonCard;
@@ -1,180 +0,0 @@
1
- /**
2
- * Button Card
3
- */
4
-
5
- @use "~@wordpress/base-styles/colors" as wp-colors;
6
-
7
- .newspack-button-card {
8
- background: white;
9
- border-radius: 2px;
10
- border: 1px solid wp-colors.$gray-300;
11
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent;
12
- cursor: pointer;
13
- display: block;
14
- margin: 32px 0;
15
- padding: 32px;
16
- position: relative;
17
- text-decoration: none;
18
- transition:
19
- background-color 125ms ease-in-out,
20
- border-color 125ms ease-in-out,
21
- box-shadow 125ms ease-in-out;
22
-
23
- &:focus,
24
- &.is-pressed {
25
- background: white;
26
- border-color: var(--wp-admin-theme-color);
27
- box-shadow: inset 0 0 0 1px var(--wp-admin-theme-color) !important;
28
- outline: none !important;
29
- z-index: 1;
30
- }
31
-
32
- &.is-pressed:focus-visible {
33
- box-shadow:
34
- inset 0 0 0 1px var(--wp-admin-theme-color),
35
- 0 0 0 1px white,
36
- 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color) !important;
37
- }
38
-
39
- &:active,
40
- &:hover {
41
- border-color: var(--wp-admin-theme-color);
42
- color: var(--wp-admin-theme-color);
43
- text-decoration: none;
44
- z-index: 1;
45
-
46
- .newspack-grid h3,
47
- p {
48
- color: inherit;
49
- }
50
- }
51
-
52
- .newspack-grid h3,
53
- p {
54
- transition: color 125ms ease-in-out;
55
- }
56
-
57
- .newspack-grid h3 {
58
- color: wp-colors.$gray-900;
59
- }
60
-
61
- p {
62
- color: wp-colors.$gray-700;
63
- }
64
-
65
- // Grouped
66
-
67
- &.grouped {
68
- border-radius: 0;
69
-
70
- & + &:not(.br--top) {
71
- margin-top: -33px;
72
- }
73
-
74
- &.br--bottom {
75
- border-bottom-left-radius: 2px;
76
- border-bottom-right-radius: 2px;
77
- }
78
-
79
- &.br--top {
80
- border-top-left-radius: 2px;
81
- border-top-right-radius: 2px;
82
- }
83
- }
84
-
85
- // Chevron & Icon
86
-
87
- &.has-chevron,
88
- &.has-icon {
89
- align-items: center;
90
- display: grid;
91
- grid-gap: 16px;
92
- grid-template-columns: auto 24px;
93
-
94
- &:active,
95
- &:hover {
96
- svg {
97
- fill: currentcolor;
98
- }
99
- }
100
-
101
- svg {
102
- fill: var(--wp-admin-theme-color);
103
- transition: fill 125ms ease-in-out;
104
- }
105
- }
106
-
107
- &.has-icon {
108
- grid-template-columns: 48px auto;
109
-
110
- &.has-chevron {
111
- grid-template-columns: 48px auto 24px;
112
- }
113
- }
114
-
115
- // Is Small
116
-
117
- &.is-small {
118
- padding: 16px;
119
-
120
- &.has-chevron,
121
- &.has-icon {
122
- svg {
123
- height: 24px;
124
- width: 24px;
125
- }
126
- }
127
-
128
- &.has-icon {
129
- grid-template-columns: 24px auto;
130
-
131
- &.has-chevron {
132
- grid-template-columns: 24px auto 24px;
133
- }
134
- }
135
-
136
- h3 {
137
- font-size: 1em;
138
- line-height: 1.5;
139
- }
140
-
141
- p {
142
- font-size: 12px;
143
- line-height: 1.4;
144
- }
145
- }
146
-
147
- // Is Destructive
148
-
149
- &.is-destructive {
150
- .title {
151
- color: wp-colors.$alert-red;
152
- }
153
-
154
- &.has-chevron,
155
- &.has-icon {
156
- svg {
157
- fill: wp-colors.$alert-red;
158
- }
159
- }
160
-
161
- &:focus,
162
- &.is-pressed {
163
- border-color: wp-colors.$alert-red;
164
- box-shadow: inset 0 0 0 1px wp-colors.$alert-red !important;
165
- }
166
-
167
- &.is-pressed:focus-visible {
168
- box-shadow:
169
- inset 0 0 0 1px wp-colors.$alert-red,
170
- 0 0 0 1px white,
171
- 0 0 0 var(--wp-admin-border-width-focus) wp-colors.$alert-red !important;
172
- }
173
-
174
- &:active,
175
- &:hover {
176
- background-color: wp-colors.$gray-100;
177
- border-color: wp-colors.$alert-red;
178
- }
179
- }
180
- }