@automattic/jetpack-components 0.68.2 → 0.69.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 (257) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/components/action-button/index.d.ts +25 -0
  3. package/build/components/action-button/index.js +48 -0
  4. package/build/components/action-popover/index.d.ts +6 -0
  5. package/build/components/action-popover/index.js +38 -0
  6. package/build/components/action-popover/types.d.ts +20 -0
  7. package/build/components/action-popover/types.js +1 -0
  8. package/build/components/admin-page/index.d.ts +12 -0
  9. package/build/components/admin-page/index.js +44 -0
  10. package/build/components/admin-page/types.d.ts +56 -0
  11. package/build/components/admin-page/types.js +1 -0
  12. package/build/components/admin-section/basic/index.d.ts +10 -0
  13. package/build/components/admin-section/basic/index.js +12 -0
  14. package/build/components/admin-section/hero/index.d.ts +10 -0
  15. package/build/components/admin-section/hero/index.js +12 -0
  16. package/build/components/admin-section/types.d.ts +8 -0
  17. package/build/components/admin-section/types.js +1 -0
  18. package/build/components/alert/index.d.ts +23 -0
  19. package/build/components/alert/index.js +33 -0
  20. package/build/components/automattic-byline-logo/index.d.ts +10 -0
  21. package/build/components/automattic-byline-logo/index.js +13 -0
  22. package/build/components/automattic-byline-logo/types.d.ts +15 -0
  23. package/build/components/automattic-byline-logo/types.js +1 -0
  24. package/build/components/automattic-for-agencies-logo/index.d.ts +11 -0
  25. package/build/components/automattic-for-agencies-logo/index.js +12 -0
  26. package/build/components/automattic-icon-logo/index.d.ts +13 -0
  27. package/build/components/automattic-icon-logo/index.js +13 -0
  28. package/build/components/badge/index.d.ts +19 -0
  29. package/build/components/badge/index.js +22 -0
  30. package/build/components/boost-score-bar/index.d.ts +5 -0
  31. package/build/components/boost-score-bar/index.js +35 -0
  32. package/build/components/boost-score-bar/types.d.ts +9 -0
  33. package/build/components/boost-score-bar/types.js +1 -0
  34. package/build/components/boost-score-graph/annotations-plugin.d.ts +16 -0
  35. package/build/components/boost-score-graph/annotations-plugin.js +58 -0
  36. package/build/components/boost-score-graph/background.d.ts +3 -0
  37. package/build/components/boost-score-graph/background.js +5 -0
  38. package/build/components/boost-score-graph/day-highlight-plugin.d.ts +13 -0
  39. package/build/components/boost-score-graph/day-highlight-plugin.js +69 -0
  40. package/build/components/boost-score-graph/get-date-format.d.ts +9 -0
  41. package/build/components/boost-score-graph/get-date-format.js +52 -0
  42. package/build/components/boost-score-graph/index.d.ts +44 -0
  43. package/build/components/boost-score-graph/index.js +42 -0
  44. package/build/components/boost-score-graph/tooltip.d.ts +3 -0
  45. package/build/components/boost-score-graph/tooltip.js +22 -0
  46. package/build/components/boost-score-graph/tooltips-plugin.d.ts +15 -0
  47. package/build/components/boost-score-graph/tooltips-plugin.js +78 -0
  48. package/build/components/boost-score-graph/uplot-line-chart.d.ts +27 -0
  49. package/build/components/boost-score-graph/uplot-line-chart.js +187 -0
  50. package/build/components/boost-score-graph/use-boost-score-transform.d.ts +14 -0
  51. package/build/components/boost-score-graph/use-boost-score-transform.js +26 -0
  52. package/build/components/boost-score-graph/use-resize.d.ts +9 -0
  53. package/build/components/boost-score-graph/use-resize.js +31 -0
  54. package/build/components/button/index.d.ts +10 -0
  55. package/build/components/button/index.js +45 -0
  56. package/build/components/button/types.d.ts +19 -0
  57. package/build/components/button/types.js +1 -0
  58. package/build/components/chip/index.d.ts +15 -0
  59. package/build/components/chip/index.js +16 -0
  60. package/build/components/contextual-upgrade-trigger/index.d.ts +4 -0
  61. package/build/components/contextual-upgrade-trigger/index.js +12 -0
  62. package/build/components/contextual-upgrade-trigger/types.d.ts +9 -0
  63. package/build/components/contextual-upgrade-trigger/types.js +1 -0
  64. package/build/components/copy-to-clipboard/index.d.ts +4 -0
  65. package/build/components/copy-to-clipboard/index.js +40 -0
  66. package/build/components/copy-to-clipboard/types.d.ts +6 -0
  67. package/build/components/copy-to-clipboard/types.js +1 -0
  68. package/build/components/decorative-card/index.d.ts +11 -0
  69. package/build/components/decorative-card/index.js +13 -0
  70. package/build/components/decorative-card/types.d.ts +14 -0
  71. package/build/components/decorative-card/types.js +1 -0
  72. package/build/components/dialog/index.d.ts +20 -0
  73. package/build/components/dialog/index.js +31 -0
  74. package/build/components/diff-viewer/index.d.ts +4 -0
  75. package/build/components/diff-viewer/index.js +33 -0
  76. package/build/components/diff-viewer/parse-filename.d.ts +29 -0
  77. package/build/components/diff-viewer/parse-filename.js +61 -0
  78. package/build/components/diff-viewer/parse-patch.d.ts +9 -0
  79. package/build/components/diff-viewer/parse-patch.js +148 -0
  80. package/build/components/donut-meter/index.d.ts +58 -0
  81. package/build/components/donut-meter/index.js +36 -0
  82. package/build/components/global-notices/global-notices.d.ts +11 -0
  83. package/build/components/global-notices/global-notices.js +19 -0
  84. package/build/components/global-notices/index.d.ts +3 -0
  85. package/build/components/global-notices/index.js +3 -0
  86. package/build/components/global-notices/use-global-notices.d.ts +10 -0
  87. package/build/components/global-notices/use-global-notices.js +30 -0
  88. package/build/components/gridicon/index.d.ts +14 -0
  89. package/build/components/gridicon/index.js +167 -0
  90. package/build/components/gridicon/types.d.ts +39 -0
  91. package/build/components/gridicon/types.js +1 -0
  92. package/build/components/icon-tooltip/index.d.ts +11 -0
  93. package/build/components/icon-tooltip/index.js +75 -0
  94. package/build/components/icon-tooltip/types.d.ts +69 -0
  95. package/build/components/icon-tooltip/types.js +1 -0
  96. package/build/components/icons/index.d.ts +70 -0
  97. package/build/components/icons/index.js +86 -0
  98. package/build/components/icons/types.d.ts +27 -0
  99. package/build/components/icons/types.js +1 -0
  100. package/build/components/indeterminate-progress-bar/index.d.ts +10 -0
  101. package/build/components/indeterminate-progress-bar/index.js +20 -0
  102. package/build/components/indeterminate-progress-bar/types.d.ts +6 -0
  103. package/build/components/indeterminate-progress-bar/types.js +1 -0
  104. package/build/components/jetpack-footer/index.d.ts +11 -0
  105. package/build/components/jetpack-footer/index.js +71 -0
  106. package/build/components/jetpack-footer/types.d.ts +47 -0
  107. package/build/components/jetpack-footer/types.js +1 -0
  108. package/build/components/jetpack-logo/index.d.ts +4 -0
  109. package/build/components/jetpack-logo/index.js +10 -0
  110. package/build/components/jetpack-logo/types.d.ts +7 -0
  111. package/build/components/jetpack-logo/types.js +1 -0
  112. package/build/components/jetpack-protect-logo/index.d.ts +4 -0
  113. package/build/components/jetpack-protect-logo/index.js +10 -0
  114. package/build/components/jetpack-protect-logo/types.d.ts +7 -0
  115. package/build/components/jetpack-protect-logo/types.js +1 -0
  116. package/build/components/jetpack-search-logo/index.d.ts +4 -0
  117. package/build/components/jetpack-search-logo/index.js +7 -0
  118. package/build/components/jetpack-search-logo/types.d.ts +7 -0
  119. package/build/components/jetpack-search-logo/types.js +1 -0
  120. package/build/components/jetpack-vaultpress-backup-logo/index.d.ts +4 -0
  121. package/build/components/jetpack-vaultpress-backup-logo/index.js +8 -0
  122. package/build/components/jetpack-vaultpress-backup-logo/types.d.ts +6 -0
  123. package/build/components/jetpack-vaultpress-backup-logo/types.js +1 -0
  124. package/build/components/jetpack-videopress-logo/index.d.ts +4 -0
  125. package/build/components/jetpack-videopress-logo/index.js +8 -0
  126. package/build/components/jetpack-videopress-logo/types.d.ts +6 -0
  127. package/build/components/jetpack-videopress-logo/types.js +1 -0
  128. package/build/components/layout/col/index.d.ts +10 -0
  129. package/build/components/layout/col/index.js +42 -0
  130. package/build/components/layout/container/index.d.ts +4 -0
  131. package/build/components/layout/container/index.js +30 -0
  132. package/build/components/layout/types.d.ts +58 -0
  133. package/build/components/layout/types.js +1 -0
  134. package/build/components/layout/use-breakpoint-match/index.d.ts +19 -0
  135. package/build/components/layout/use-breakpoint-match/index.js +50 -0
  136. package/build/components/loading-placeholder/index.d.ts +8 -0
  137. package/build/components/loading-placeholder/index.js +7 -0
  138. package/build/components/marked-lines/index.d.ts +4 -0
  139. package/build/components/marked-lines/index.js +50 -0
  140. package/build/components/notice/index.d.ts +29 -0
  141. package/build/components/notice/index.js +35 -0
  142. package/build/components/number-control/index.d.ts +10 -0
  143. package/build/components/number-control/index.js +16 -0
  144. package/build/components/number-format/index.d.ts +9 -0
  145. package/build/components/number-format/index.js +13 -0
  146. package/build/components/number-slider/index.d.ts +12 -0
  147. package/build/components/number-slider/index.js +43 -0
  148. package/build/components/number-slider/types.d.ts +50 -0
  149. package/build/components/number-slider/types.js +1 -0
  150. package/build/components/popover/index.d.ts +9 -0
  151. package/build/components/popover/index.js +6 -0
  152. package/build/components/pricing-card/index.d.ts +11 -0
  153. package/build/components/pricing-card/index.js +32 -0
  154. package/build/components/pricing-card/types.d.ts +51 -0
  155. package/build/components/pricing-card/types.js +1 -0
  156. package/build/components/pricing-table/index.d.ts +7 -0
  157. package/build/components/pricing-table/index.js +66 -0
  158. package/build/components/pricing-table/types.d.ts +68 -0
  159. package/build/components/pricing-table/types.js +1 -0
  160. package/build/components/product-offer/icons-card.d.ts +10 -0
  161. package/build/components/product-offer/icons-card.js +23 -0
  162. package/build/components/product-offer/index.d.ts +11 -0
  163. package/build/components/product-offer/index.js +31 -0
  164. package/build/components/product-offer/product-offer-header.d.ts +9 -0
  165. package/build/components/product-offer/product-offer-header.js +14 -0
  166. package/build/components/product-offer/types.d.ts +102 -0
  167. package/build/components/product-offer/types.js +1 -0
  168. package/build/components/product-price/index.d.ts +11 -0
  169. package/build/components/product-price/index.js +32 -0
  170. package/build/components/product-price/price.d.ts +9 -0
  171. package/build/components/product-price/price.js +19 -0
  172. package/build/components/product-price/types.d.ts +61 -0
  173. package/build/components/product-price/types.js +1 -0
  174. package/build/components/progress-bar/index.d.ts +10 -0
  175. package/build/components/progress-bar/index.js +26 -0
  176. package/build/components/progress-bar/types.d.ts +18 -0
  177. package/build/components/progress-bar/types.js +1 -0
  178. package/build/components/qr-code/index.d.ts +46 -0
  179. package/build/components/qr-code/index.js +21 -0
  180. package/build/components/radio-control/index.d.ts +24 -0
  181. package/build/components/radio-control/index.js +8 -0
  182. package/build/components/record-meter-bar/index.d.ts +62 -0
  183. package/build/components/record-meter-bar/index.js +40 -0
  184. package/build/components/spinner/index.d.ts +13 -0
  185. package/build/components/spinner/index.js +27 -0
  186. package/build/components/split-button/index.d.ts +4 -0
  187. package/build/components/split-button/index.js +8 -0
  188. package/build/components/split-button/types.d.ts +8 -0
  189. package/build/components/split-button/types.js +1 -0
  190. package/build/components/stat-card/index.d.ts +9 -0
  191. package/build/components/stat-card/index.js +27 -0
  192. package/build/components/stat-card/types.d.ts +29 -0
  193. package/build/components/stat-card/types.js +1 -0
  194. package/build/components/status/index.d.ts +8 -0
  195. package/build/components/status/index.js +18 -0
  196. package/build/components/terms-of-service/index.d.ts +5 -0
  197. package/build/components/terms-of-service/index.js +32 -0
  198. package/build/components/terms-of-service/types.d.ts +23 -0
  199. package/build/components/terms-of-service/types.js +1 -0
  200. package/build/components/testimonials/index.d.ts +3 -0
  201. package/build/components/testimonials/index.js +18 -0
  202. package/build/components/testimonials/testimonial.d.ts +4 -0
  203. package/build/components/testimonials/testimonial.js +7 -0
  204. package/build/components/testimonials/types.d.ts +13 -0
  205. package/build/components/testimonials/types.js +1 -0
  206. package/build/components/text/constants.d.ts +14 -0
  207. package/build/components/text/constants.js +29 -0
  208. package/build/components/text/index.d.ts +32 -0
  209. package/build/components/text/index.js +53 -0
  210. package/build/components/text/types.d.ts +50 -0
  211. package/build/components/text/types.js +1 -0
  212. package/build/components/theme-provider/index.d.ts +80 -0
  213. package/build/components/theme-provider/index.js +129 -0
  214. package/build/components/theme-provider/types.d.ts +23 -0
  215. package/build/components/theme-provider/types.js +1 -0
  216. package/build/components/threat-fixer-button/index.d.ts +17 -0
  217. package/build/components/threat-fixer-button/index.js +56 -0
  218. package/build/components/threat-severity-badge/index.d.ts +4 -0
  219. package/build/components/threat-severity-badge/index.js +13 -0
  220. package/build/components/threats-data-views/constants.d.ts +33 -0
  221. package/build/components/threats-data-views/constants.js +37 -0
  222. package/build/components/threats-data-views/index.d.ts +30 -0
  223. package/build/components/threats-data-views/index.js +413 -0
  224. package/build/components/threats-data-views/threats-status-toggle-group-control.d.ts +16 -0
  225. package/build/components/threats-data-views/threats-status-toggle-group-control.js +95 -0
  226. package/build/components/toggle-control/index.d.ts +21 -0
  227. package/build/components/toggle-control/index.js +21 -0
  228. package/build/components/upsell-banner/index.d.ts +14 -0
  229. package/build/components/upsell-banner/index.js +21 -0
  230. package/build/components/upsell-banner/types.d.ts +13 -0
  231. package/build/components/upsell-banner/types.js +1 -0
  232. package/build/components/zendesk-chat/constants.d.ts +1 -0
  233. package/build/components/zendesk-chat/constants.js +2 -0
  234. package/build/components/zendesk-chat/index.d.ts +3 -0
  235. package/build/components/zendesk-chat/index.js +27 -0
  236. package/build/components/zendesk-chat/types.d.ts +11 -0
  237. package/build/components/zendesk-chat/types.js +1 -0
  238. package/build/index.d.ts +67 -0
  239. package/build/index.js +81 -0
  240. package/build/lib/locale/index.d.ts +13 -0
  241. package/build/lib/locale/index.js +34 -0
  242. package/build/tools/get-product-checkout-url/index.d.ts +10 -0
  243. package/build/tools/get-product-checkout-url/index.js +22 -0
  244. package/build/tools/get-site-admin-url/index.d.ts +6 -0
  245. package/build/tools/get-site-admin-url/index.js +13 -0
  246. package/build/tools/jp-redirect/index.d.ts +20 -0
  247. package/build/tools/jp-redirect/index.js +50 -0
  248. package/build/tools/jp-redirect/types.d.ts +39 -0
  249. package/build/tools/jp-redirect/types.js +1 -0
  250. package/build/tools/pricing-utils/index.d.ts +8 -0
  251. package/build/tools/pricing-utils/index.js +9 -0
  252. package/build/tools/pricing-utils/types.d.ts +12 -0
  253. package/build/tools/pricing-utils/types.js +1 -0
  254. package/components/boost-score-graph/uplot-line-chart.tsx +16 -1
  255. package/components/jetpack-footer/style.scss +5 -0
  256. package/components/number-slider/index.tsx +8 -2
  257. package/package.json +19 -12
@@ -0,0 +1,13 @@
1
+ import { FC, ReactNode } from 'react';
2
+ export interface TestimonialProps {
3
+ img: string;
4
+ quote: string;
5
+ author: string;
6
+ profession: string | ReactNode;
7
+ hidden?: boolean;
8
+ }
9
+ export type TestimonialType = FC<TestimonialProps>;
10
+ export interface TestimonialsProps {
11
+ testimonials: TestimonialProps[];
12
+ }
13
+ export type TestimonialsType = FC<TestimonialsProps>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ export declare const VARIANTS_MAPPING: {
2
+ readonly 'headline-medium': "h1";
3
+ readonly 'headline-small': "h2";
4
+ readonly 'headline-small-regular': "h2";
5
+ readonly 'title-medium': "h3";
6
+ readonly 'title-medium-semi-bold': "h3";
7
+ readonly 'title-small': "h4";
8
+ readonly body: "p";
9
+ readonly 'body-small': "p";
10
+ readonly 'body-extra-small': "p";
11
+ readonly 'body-extra-small-bold': "p";
12
+ readonly label: "p";
13
+ };
14
+ export declare const BOX_MODEL_VALUES: readonly ["mt", "mr", "mb", "ml", "mx", "my", "m", "pt", "pr", "pb", "pl", "px", "py", "p"];
@@ -0,0 +1,29 @@
1
+ export const VARIANTS_MAPPING = {
2
+ 'headline-medium': 'h1',
3
+ 'headline-small': 'h2',
4
+ 'headline-small-regular': 'h2',
5
+ 'title-medium': 'h3',
6
+ 'title-medium-semi-bold': 'h3',
7
+ 'title-small': 'h4',
8
+ body: 'p',
9
+ 'body-small': 'p',
10
+ 'body-extra-small': 'p',
11
+ 'body-extra-small-bold': 'p',
12
+ label: 'p',
13
+ };
14
+ export const BOX_MODEL_VALUES = [
15
+ 'mt',
16
+ 'mr',
17
+ 'mb',
18
+ 'ml',
19
+ 'mx',
20
+ 'my',
21
+ 'm',
22
+ 'pt',
23
+ 'pr',
24
+ 'pb',
25
+ 'pl',
26
+ 'px',
27
+ 'py',
28
+ 'p',
29
+ ];
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import type { H3Props, TextProps, TitleProps } from './types.js';
3
+ /**
4
+ * Text component.
5
+ *
6
+ * @param {TextProps} props - Component props.
7
+ * @return {React.ReactElement} - JSX.Element
8
+ */
9
+ declare const Text: React.ForwardRefExoticComponent<TextProps & React.RefAttributes<HTMLElement>>;
10
+ export default Text;
11
+ /**
12
+ * Heading component - Medium size.
13
+ *
14
+ * @param {TextProps} props - Component props.
15
+ * @return {React.ReactElement} - JSX.Element
16
+ */
17
+ export declare const H2: React.FC<TextProps>;
18
+ /**
19
+ * Heading component - Small size,
20
+ *
21
+ * @param {H3Props} props - Component props.
22
+ * @return {React.ReactElement} - JSX.Element
23
+ */
24
+ export declare const H3: React.FC<H3Props>;
25
+ /**
26
+ * Title component, based on Text component.
27
+ *
28
+ * @param {TitleProps} props - Component props.
29
+ * @return {React.ReactElement} - JSX.Element
30
+ */
31
+ export declare const Title: React.FC<TitleProps>;
32
+ export * from './constants.js';
@@ -0,0 +1,53 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import clsx from 'clsx';
3
+ import { forwardRef, useMemo } from 'react';
4
+ import { BOX_MODEL_VALUES, VARIANTS_MAPPING } from './constants.js';
5
+ import styles from './style.module.scss';
6
+ /**
7
+ * Text component.
8
+ *
9
+ * @param {TextProps} props - Component props.
10
+ * @return {React.ReactElement} - JSX.Element
11
+ */
12
+ const Text = forwardRef(({ variant = 'body', children, component, className, ...componentProps }, ref) => {
13
+ const Component = component || VARIANTS_MAPPING[variant] || 'span';
14
+ // Build Styles module CSS classnames.
15
+ const boxModelClasses = useMemo(() => {
16
+ return BOX_MODEL_VALUES.reduce((acc, value) => {
17
+ if (typeof componentProps[value] !== 'undefined') {
18
+ acc += styles[`${value}-${componentProps[value]}`] + ' ';
19
+ // pick spacing prop. Do not pass down to Component.
20
+ delete componentProps[value];
21
+ }
22
+ return acc;
23
+ }, '');
24
+ }, [componentProps]);
25
+ return (_jsx(Component, { className: clsx(styles.reset, styles[variant], className, boxModelClasses), ...componentProps, ref: ref, children: children }));
26
+ });
27
+ Text.displayName = 'Text';
28
+ export default Text;
29
+ /**
30
+ * Heading component - Medium size.
31
+ *
32
+ * @param {TextProps} props - Component props.
33
+ * @return {React.ReactElement} - JSX.Element
34
+ */
35
+ export const H2 = ({ children, ...componentProps }) => (_jsx(Text, { variant: "headline-medium", mb: 3, ...componentProps, children: children }));
36
+ /**
37
+ * Heading component - Small size,
38
+ *
39
+ * @param {H3Props} props - Component props.
40
+ * @return {React.ReactElement} - JSX.Element
41
+ */
42
+ export const H3 = ({ children, weight = 'bold', ...componentProps }) => {
43
+ const variant = `headline-small${weight === 'bold' ? '' : `-${weight}`}`;
44
+ return (_jsx(Text, { variant: variant, mb: 3, ...componentProps, children: children }));
45
+ };
46
+ /**
47
+ * Title component, based on Text component.
48
+ *
49
+ * @param {TitleProps} props - Component props.
50
+ * @return {React.ReactElement} - JSX.Element
51
+ */
52
+ export const Title = ({ children, size = 'medium', ...componentProps }) => (_jsx(Text, { variant: `title-${size}`, mb: 1, ...componentProps, children: children }));
53
+ export * from './constants.js';
@@ -0,0 +1,50 @@
1
+ import { VARIANTS_MAPPING } from './constants.js';
2
+ import type React from 'react';
3
+ export type SpacingValue = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
4
+ export type TextProps = {
5
+ variant?: keyof typeof VARIANTS_MAPPING;
6
+ /** margin */
7
+ m?: SpacingValue;
8
+ /** margin-top */
9
+ mt?: SpacingValue;
10
+ /** margin-right */
11
+ mr?: SpacingValue;
12
+ /** margin-bottom */
13
+ mb?: SpacingValue;
14
+ /** margin-left */
15
+ ml?: SpacingValue;
16
+ /** margin left and right */
17
+ mx?: SpacingValue;
18
+ /** margin top and bottom */
19
+ my?: SpacingValue;
20
+ /** padding */
21
+ p?: SpacingValue;
22
+ /** padding-top */
23
+ pt?: SpacingValue;
24
+ /** padding-right */
25
+ pr?: SpacingValue;
26
+ /** padding-bottom */
27
+ pb?: SpacingValue;
28
+ /** padding-left */
29
+ pl?: SpacingValue;
30
+ /** padding left and right */
31
+ px?: SpacingValue;
32
+ /** padding top and bottom */
33
+ py?: SpacingValue;
34
+ /** HTML Class */
35
+ className?: string;
36
+ /** The text itself that will be rendered. */
37
+ children: React.ReactNode;
38
+ /** Force an specific tag (span, div) or use a custom component that will receive className and children */
39
+ component?: React.FC<{
40
+ [prop: string]: unknown;
41
+ }> | React.ElementType;
42
+ };
43
+ export type H3Props = TextProps & {
44
+ /** Font weight: 'bold' (default) | 'regular'. */
45
+ weight?: 'bold' | 'regular';
46
+ };
47
+ export type TitleProps = TextProps & {
48
+ /** Heading size: 'medium' (default) | 'small'. */
49
+ size?: 'medium' | 'small';
50
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import { ThemeProviderProps } from './types.js';
3
+ export declare const typography: {
4
+ '--font-headline-medium': string;
5
+ '--font-headline-small': string;
6
+ '--font-title-medium': string;
7
+ '--font-title-small': string;
8
+ '--font-body': string;
9
+ '--font-body-small': string;
10
+ '--font-body-extra-small': string;
11
+ '--font-title-large': string;
12
+ '--font-label': string;
13
+ };
14
+ export declare const colors: {
15
+ '--jp-black': string;
16
+ '--jp-black-80': string;
17
+ '--jp-white': string;
18
+ '--jp-white-off': string;
19
+ '--jp-gray': string;
20
+ '--jp-gray-0': string;
21
+ '--jp-gray-5': string;
22
+ '--jp-gray-10': string;
23
+ '--jp-gray-20': string;
24
+ '--jp-gray-40': string;
25
+ '--jp-gray-50': string;
26
+ '--jp-gray-60': string;
27
+ '--jp-gray-70': string;
28
+ '--jp-gray-80': string;
29
+ '--jp-gray-90': string;
30
+ '--jp-gray-off': string;
31
+ '--jp-red-0': string;
32
+ '--jp-red-5': string;
33
+ '--jp-red-40': string;
34
+ '--jp-red-50': string;
35
+ '--jp-red-60': string;
36
+ '--jp-red-70': string;
37
+ '--jp-red-80': string;
38
+ '--jp-red': string;
39
+ '--jp-yellow-5': string;
40
+ '--jp-yellow-10': string;
41
+ '--jp-yellow-20': string;
42
+ '--jp-yellow-30': string;
43
+ '--jp-yellow-40': string;
44
+ '--jp-yellow-50': string;
45
+ '--jp-yellow-60': string;
46
+ '--jp-blue-20': string;
47
+ '--jp-blue-40': string;
48
+ '--jp-pink': string;
49
+ '--jp-green-0': string;
50
+ '--jp-green-5': string;
51
+ '--jp-green-10': string;
52
+ '--jp-green-20': string;
53
+ '--jp-green-30': string;
54
+ '--jp-green-40': string;
55
+ '--jp-green-50': string;
56
+ '--jp-green-60': string;
57
+ '--jp-green-70': string;
58
+ '--jp-green-80': string;
59
+ '--jp-green-90': string;
60
+ '--jp-green-100': string;
61
+ '--jp-green': string;
62
+ '--jp-green-primary': string;
63
+ '--jp-green-secondary': string;
64
+ };
65
+ export declare const borders: {
66
+ '--jp-border-radius': string;
67
+ '--jp-menu-border-height': string;
68
+ '--jp-underline-thickness': string;
69
+ };
70
+ export declare const spacing: {
71
+ '--spacing-base': string;
72
+ };
73
+ /**
74
+ * ThemeProvider React component.
75
+ *
76
+ * @param {ThemeProviderProps} props - Component properties.
77
+ * @return {React.ReactNode} ThemeProvider component.
78
+ */
79
+ declare const ThemeProvider: React.FC<ThemeProviderProps>;
80
+ export default ThemeProvider;
@@ -0,0 +1,129 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useLayoutEffect, useRef } from 'react';
3
+ import styles from './globals.module.scss';
4
+ export const typography = {
5
+ // Headline
6
+ '--font-headline-medium': '48px',
7
+ '--font-headline-small': '36px',
8
+ '--font-title-medium': '24px',
9
+ '--font-title-small': '20px',
10
+ '--font-body': '16px',
11
+ '--font-body-small': '14px',
12
+ '--font-body-extra-small': '12px',
13
+ // Deprecated
14
+ '--font-title-large': 'var(--font-headline-small)',
15
+ '--font-label': 'var(--font-body-extra-small)',
16
+ };
17
+ export const colors = {
18
+ '--jp-black': '#000000',
19
+ '--jp-black-80': '#2c3338',
20
+ // White
21
+ '--jp-white': '#ffffff',
22
+ '--jp-white-off': '#f9f9f6',
23
+ // Gray
24
+ '--jp-gray': '#dcdcde',
25
+ '--jp-gray-0': '#F6F7F7',
26
+ '--jp-gray-5': 'var(--jp-gray)',
27
+ '--jp-gray-10': '#C3C4C7',
28
+ '--jp-gray-20': '#A7AAAD',
29
+ '--jp-gray-40': '#787C82',
30
+ '--jp-gray-50': '#646970',
31
+ '--jp-gray-60': '#50575E',
32
+ '--jp-gray-70': '#3C434A',
33
+ '--jp-gray-80': '#2C3338',
34
+ '--jp-gray-90': '#1d2327',
35
+ '--jp-gray-off': '#e2e2df',
36
+ // Red
37
+ '--jp-red-0': '#F7EBEC',
38
+ '--jp-red-5': '#FACFD2',
39
+ '--jp-red-40': '#E65054',
40
+ '--jp-red-50': '#D63638',
41
+ '--jp-red-60': '#B32D2E',
42
+ '--jp-red-70': '#8A2424',
43
+ '--jp-red-80': '#691C1C',
44
+ '--jp-red': '#d63639',
45
+ // Yellow
46
+ '--jp-yellow-5': '#F5E6B3',
47
+ '--jp-yellow-10': '#F2CF75',
48
+ '--jp-yellow-20': '#F0C930',
49
+ '--jp-yellow-30': '#DEB100',
50
+ '--jp-yellow-40': '#C08C00',
51
+ '--jp-yellow-50': '#9D6E00',
52
+ '--jp-yellow-60': '#7D5600',
53
+ // Blue
54
+ '--jp-blue-20': '#68B3E8',
55
+ '--jp-blue-40': '#1689DB',
56
+ // Pink
57
+ '--jp-pink': '#C9356E',
58
+ // Green
59
+ '--jp-green-0': '#f0f2eb',
60
+ '--jp-green-5': '#d0e6b8',
61
+ '--jp-green-10': '#9dd977',
62
+ '--jp-green-20': '#64ca43',
63
+ '--jp-green-30': '#2fb41f',
64
+ '--jp-green-40': '#069e08',
65
+ '--jp-green-50': '#008710',
66
+ '--jp-green-60': '#007117',
67
+ '--jp-green-70': '#005b18',
68
+ '--jp-green-80': '#004515',
69
+ '--jp-green-90': '#003010',
70
+ '--jp-green-100': '#001c09',
71
+ '--jp-green': '#069e08',
72
+ '--jp-green-primary': 'var( --jp-green-40 )',
73
+ '--jp-green-secondary': 'var( --jp-green-30 )',
74
+ };
75
+ export const borders = {
76
+ '--jp-border-radius': '4px',
77
+ '--jp-menu-border-height': '1px',
78
+ '--jp-underline-thickness': '2px',
79
+ };
80
+ export const spacing = {
81
+ '--spacing-base': '8px',
82
+ };
83
+ const globalThemeInstances = {};
84
+ const setup = (root, id, withGlobalStyles) => {
85
+ const tokens = { ...typography, ...colors, ...borders, ...spacing };
86
+ for (const key in tokens) {
87
+ root.style.setProperty(key, tokens[key]);
88
+ }
89
+ if (withGlobalStyles) {
90
+ root.classList.add(styles.global);
91
+ }
92
+ if (!id) {
93
+ return;
94
+ }
95
+ // Register theme provider instance.
96
+ globalThemeInstances[id] = {
97
+ provided: true,
98
+ root,
99
+ };
100
+ };
101
+ /**
102
+ * ThemeProvider React component.
103
+ *
104
+ * @param {ThemeProviderProps} props - Component properties.
105
+ * @return {React.ReactNode} ThemeProvider component.
106
+ */
107
+ const ThemeProvider = ({ children = null, targetDom, id, withGlobalStyles = true, }) => {
108
+ const themeWrapperRef = useRef();
109
+ // Check whether the theme provider instance is already registered.
110
+ const isAlreadyProvided = globalThemeInstances?.[id]?.provided;
111
+ useLayoutEffect(() => {
112
+ if (isAlreadyProvided) {
113
+ return;
114
+ }
115
+ if (targetDom) {
116
+ return setup(targetDom, id, withGlobalStyles);
117
+ }
118
+ if (!themeWrapperRef?.current) {
119
+ return;
120
+ }
121
+ setup(themeWrapperRef.current, id, withGlobalStyles);
122
+ }, [targetDom, themeWrapperRef, isAlreadyProvided, id, withGlobalStyles]);
123
+ // Do not wrap when the DOM element target is defined.
124
+ if (targetDom) {
125
+ return _jsx(_Fragment, { children: children });
126
+ }
127
+ return _jsx("div", { ref: themeWrapperRef, children: children });
128
+ };
129
+ export default ThemeProvider;
@@ -0,0 +1,23 @@
1
+ /// <reference types="react" resolution-mode="require"/>
2
+ export type ThemeProviderProps = {
3
+ /**
4
+ * An optional id to register and identify the provider instance.
5
+ */
6
+ id?: string;
7
+ /**
8
+ * Target DOM element to store theme styles. Optional.
9
+ */
10
+ targetDom?: HTMLElement;
11
+ /**
12
+ * Content
13
+ */
14
+ children?: React.ReactNode;
15
+ /**
16
+ * Inser global/reset styles
17
+ */
18
+ withGlobalStyles?: boolean;
19
+ };
20
+ export type ThemeInstance = {
21
+ provided: boolean;
22
+ root: HTMLElement;
23
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" resolution-mode="require"/>
2
+ import { type Threat } from '@automattic/jetpack-scan';
3
+ /**
4
+ * Threat Fixer Button component.
5
+ *
6
+ * @param {object} props - Component props.
7
+ * @param {object} props.threat - The threat.
8
+ * @param {Function} props.onClick - The onClick function.
9
+ * @param {string} props.className - The className.
10
+ *
11
+ * @return {JSX.Element} The component.
12
+ */
13
+ export default function ThreatFixerButton({ threat, className, onClick, }: {
14
+ threat: Threat;
15
+ onClick: (items: Threat[]) => void;
16
+ className?: string;
17
+ }): JSX.Element;
@@ -0,0 +1,56 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { getFixerState, getFixerAction, getFixerDescription, } from '@automattic/jetpack-scan';
3
+ import { Tooltip } from '@wordpress/components';
4
+ import { useCallback, useMemo } from '@wordpress/element';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { Button } from '@automattic/jetpack-components';
7
+ import styles from './styles.module.scss';
8
+ /**
9
+ * Threat Fixer Button component.
10
+ *
11
+ * @param {object} props - Component props.
12
+ * @param {object} props.threat - The threat.
13
+ * @param {Function} props.onClick - The onClick function.
14
+ * @param {string} props.className - The className.
15
+ *
16
+ * @return {JSX.Element} The component.
17
+ */
18
+ export default function ThreatFixerButton({ threat, className, onClick, }) {
19
+ const fixerState = useMemo(() => {
20
+ return getFixerState(threat.fixer);
21
+ }, [threat.fixer]);
22
+ const tooltipText = useMemo(() => {
23
+ if (!threat.fixable) {
24
+ return null;
25
+ }
26
+ if (fixerState.error) {
27
+ return __('An error occurred auto-fixing this threat.', 'jetpack-components');
28
+ }
29
+ if (fixerState.stale) {
30
+ return __('The auto-fixer is taking longer than expected.', 'jetpack-components');
31
+ }
32
+ if (fixerState.inProgress) {
33
+ return __('An auto-fixer is in progress.', 'jetpack-components');
34
+ }
35
+ return getFixerDescription(threat);
36
+ }, [threat, fixerState]);
37
+ const buttonText = useMemo(() => {
38
+ if (!threat.fixable) {
39
+ return null;
40
+ }
41
+ if (fixerState.error) {
42
+ return __('Error', 'jetpack-components');
43
+ }
44
+ return getFixerAction(threat);
45
+ }, [threat, fixerState.error]);
46
+ const handleClick = useCallback((event) => {
47
+ event.stopPropagation();
48
+ onClick([threat]);
49
+ }, [onClick, threat]);
50
+ if (!threat.fixable) {
51
+ return null;
52
+ }
53
+ return (_jsx("div", { children: _jsx(Tooltip, { className: styles.tooltip, text: tooltipText, children: _jsx(Button, { size: "small", weight: "regular", variant: "secondary", onClick: handleClick, children: buttonText, className: className, isLoading: fixerState.inProgress, isDestructive: (threat.fixable && threat.fixable.fixer === 'delete') ||
54
+ fixerState.error ||
55
+ fixerState.stale, style: { minWidth: '72px' } }) }) }));
56
+ }
@@ -0,0 +1,4 @@
1
+ declare const ThreatSeverityBadge: ({ severity }: {
2
+ severity: any;
3
+ }) => import("react/jsx-runtime").JSX.Element;
4
+ export default ThreatSeverityBadge;
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { _x } from '@wordpress/i18n';
3
+ import Badge from '../badge/index.js';
4
+ const ThreatSeverityBadge = ({ severity }) => {
5
+ if (severity >= 5) {
6
+ return (_jsx(Badge, { variant: "danger", children: _x('Critical', 'Severity label for issues rated 5 or higher.', 'jetpack-components') }));
7
+ }
8
+ if (severity >= 3 && severity < 5) {
9
+ return (_jsx(Badge, { variant: "warning", children: _x('High', 'Severity label for issues rated between 3 and 5.', 'jetpack-components') }));
10
+ }
11
+ return (_jsx(Badge, { children: _x('Low', 'Severity label for issues rated below 3.', 'jetpack-components') }));
12
+ };
13
+ export default ThreatSeverityBadge;
@@ -0,0 +1,33 @@
1
+ export declare const THREAT_STATUSES: {
2
+ value: string;
3
+ label: string;
4
+ variant?: 'success' | 'warning';
5
+ }[];
6
+ export declare const THREAT_TYPES: {
7
+ value: string;
8
+ label: string;
9
+ }[];
10
+ export declare const THREAT_ICONS: {
11
+ plugins: any;
12
+ themes: any;
13
+ core: any;
14
+ file: any;
15
+ default: any;
16
+ };
17
+ export declare const THREAT_FIELD_THREAT = "threat";
18
+ export declare const THREAT_FIELD_TITLE = "title";
19
+ export declare const THREAT_FIELD_DESCRIPTION = "description";
20
+ export declare const THREAT_FIELD_ICON = "icon";
21
+ export declare const THREAT_FIELD_STATUS = "status";
22
+ export declare const THREAT_FIELD_TYPE = "type";
23
+ export declare const THREAT_FIELD_EXTENSION = "extension";
24
+ export declare const THREAT_FIELD_PLUGIN = "plugin";
25
+ export declare const THREAT_FIELD_THEME = "theme";
26
+ export declare const THREAT_FIELD_SEVERITY = "severity";
27
+ export declare const THREAT_FIELD_SIGNATURE = "signature";
28
+ export declare const THREAT_FIELD_FIRST_DETECTED = "first-detected";
29
+ export declare const THREAT_FIELD_FIXED_ON = "fixed-on";
30
+ export declare const THREAT_FIELD_AUTO_FIX = "auto-fix";
31
+ export declare const THREAT_ACTION_FIX = "fix";
32
+ export declare const THREAT_ACTION_IGNORE = "ignore";
33
+ export declare const THREAT_ACTION_UNIGNORE = "unignore";
@@ -0,0 +1,37 @@
1
+ import { __ } from '@wordpress/i18n';
2
+ import { code as fileIcon, color as themeIcon, plugins as pluginIcon, shield as shieldIcon, wordpress as coreIcon, } from '@wordpress/icons';
3
+ export const THREAT_STATUSES = [
4
+ { value: 'current', label: __('Active', 'jetpack-components'), variant: 'warning' },
5
+ { value: 'fixed', label: __('Fixed', 'jetpack-components'), variant: 'success' },
6
+ { value: 'ignored', label: __('Ignored', 'jetpack-components') },
7
+ ];
8
+ export const THREAT_TYPES = [
9
+ { value: 'plugins', label: __('Plugin', 'jetpack-components') },
10
+ { value: 'themes', label: __('Theme', 'jetpack-components') },
11
+ { value: 'core', label: __('WordPress', 'jetpack-components') },
12
+ { value: 'file', label: __('File', 'jetpack-components') },
13
+ ];
14
+ export const THREAT_ICONS = {
15
+ plugins: pluginIcon,
16
+ themes: themeIcon,
17
+ core: coreIcon,
18
+ file: fileIcon,
19
+ default: shieldIcon,
20
+ };
21
+ export const THREAT_FIELD_THREAT = 'threat';
22
+ export const THREAT_FIELD_TITLE = 'title';
23
+ export const THREAT_FIELD_DESCRIPTION = 'description';
24
+ export const THREAT_FIELD_ICON = 'icon';
25
+ export const THREAT_FIELD_STATUS = 'status';
26
+ export const THREAT_FIELD_TYPE = 'type';
27
+ export const THREAT_FIELD_EXTENSION = 'extension';
28
+ export const THREAT_FIELD_PLUGIN = 'plugin';
29
+ export const THREAT_FIELD_THEME = 'theme';
30
+ export const THREAT_FIELD_SEVERITY = 'severity';
31
+ export const THREAT_FIELD_SIGNATURE = 'signature';
32
+ export const THREAT_FIELD_FIRST_DETECTED = 'first-detected';
33
+ export const THREAT_FIELD_FIXED_ON = 'fixed-on';
34
+ export const THREAT_FIELD_AUTO_FIX = 'auto-fix';
35
+ export const THREAT_ACTION_FIX = 'fix';
36
+ export const THREAT_ACTION_IGNORE = 'ignore';
37
+ export const THREAT_ACTION_UNIGNORE = 'unignore';
@@ -0,0 +1,30 @@
1
+ /// <reference types="react" resolution-mode="require"/>
2
+ import { type Threat } from '@automattic/jetpack-scan';
3
+ import { type ActionButton, type Filter } from '@wordpress/dataviews';
4
+ /**
5
+ * DataViews component for displaying security threats.
6
+ *
7
+ * @param {object} props - Component props.
8
+ * @param {Array} props.data - Threats data.
9
+ * @param {Array} props.filters - Initial DataView filters.
10
+ * @param {Function} props.onChangeSelection - Callback function run when an item is selected.
11
+ * @param {Function} props.onFixThreats - Threat fix action callback.
12
+ * @param {Function} props.onIgnoreThreats - Threat ignore action callback.
13
+ * @param {Function} props.onUnignoreThreats - Threat unignore action callback.
14
+ * @param {Function} props.isThreatEligibleForFix - Function to determine if a threat is eligible for fixing.
15
+ * @param {Function} props.isThreatEligibleForIgnore - Function to determine if a threat is eligible for ignoring.
16
+ * @param {Function} props.isThreatEligibleForUnignore - Function to determine if a threat is eligible for unignoring.
17
+ *
18
+ * @return {JSX.Element} The ThreatsDataViews component.
19
+ */
20
+ export default function ThreatsDataViews({ data, filters, onChangeSelection, isThreatEligibleForFix, isThreatEligibleForIgnore, isThreatEligibleForUnignore, onFixThreats, onIgnoreThreats, onUnignoreThreats, }: {
21
+ data: Threat[];
22
+ filters?: Filter[];
23
+ onChangeSelection?: (selectedItemIds: string[]) => void;
24
+ isThreatEligibleForFix?: (threat: Threat) => boolean;
25
+ isThreatEligibleForIgnore?: (threat: Threat) => boolean;
26
+ isThreatEligibleForUnignore?: (threat: Threat) => boolean;
27
+ onFixThreats?: (threats: Threat[]) => void;
28
+ onIgnoreThreats?: ActionButton<Threat>['callback'];
29
+ onUnignoreThreats?: ActionButton<Threat>['callback'];
30
+ }): JSX.Element;