@bundle-stats/ui 4.16.0-beta.3 → 4.16.0-beta.5

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 (28) hide show
  1. package/lib/components/metrics-table-export/metrics-table-export.js +3 -7
  2. package/lib/components/metrics-table-export/metrics-table-export.js.map +1 -1
  3. package/lib/components/preview-source/preview-source.js +8 -5
  4. package/lib/components/preview-source/preview-source.js.map +1 -1
  5. package/lib/components/preview-source/preview-source.module.css +12 -0
  6. package/lib/css/variables.css +4 -0
  7. package/lib/ui/dialog/dialog.module.css +3 -3
  8. package/lib/ui/skeleton/skeleton.module.css +3 -3
  9. package/lib-esm/components/metrics-table-export/metrics-table-export.js +3 -4
  10. package/lib-esm/components/metrics-table-export/metrics-table-export.js.map +1 -1
  11. package/lib-esm/components/preview-source/preview-source.js +8 -5
  12. package/lib-esm/components/preview-source/preview-source.js.map +1 -1
  13. package/lib-esm/components/preview-source/preview-source.module.css +12 -0
  14. package/lib-esm/css/variables.css +4 -0
  15. package/lib-esm/ui/dialog/dialog.module.css +3 -3
  16. package/lib-esm/ui/skeleton/skeleton.module.css +3 -3
  17. package/package.json +3 -3
  18. package/src/components/metrics-table-export/metrics-table-export.tsx +4 -5
  19. package/src/components/preview-source/preview-source.module.css +12 -0
  20. package/src/components/preview-source/preview-source.stories.tsx +6 -0
  21. package/src/components/preview-source/preview-source.tsx +30 -19
  22. package/src/css/variables.css +4 -0
  23. package/src/ui/dialog/dialog.module.css +3 -3
  24. package/src/ui/skeleton/skeleton.module.css +3 -3
  25. package/types/components/preview-source/preview-source.d.ts +2 -1
  26. package/lib/components/metrics-table-export/metrics-table-export.module.css +0 -8
  27. package/lib-esm/components/metrics-table-export/metrics-table-export.module.css +0 -8
  28. package/src/components/metrics-table-export/metrics-table-export.module.css +0 -8
@@ -22,16 +22,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  exports.MetricsTableExport = void 0;
30
27
  const react_1 = __importStar(require("react"));
31
28
  const stack_1 = require("../../layout/stack");
32
29
  const tabs_1 = require("../../ui/tabs");
33
30
  const preview_source_1 = require("../preview-source");
34
- const metrics_table_export_module_css_1 = __importDefault(require("./metrics-table-export.module.css"));
35
31
  const generateSourceJSON = (items) => {
36
32
  const output = items.map((item) => ({
37
33
  name: item.label,
@@ -67,12 +63,12 @@ const SOURCES = [
67
63
  {
68
64
  label: 'CSV',
69
65
  transformFn: generateSourceCSV,
70
- extension: '.csv',
66
+ extension: 'csv',
71
67
  },
72
68
  {
73
69
  label: 'JSON',
74
70
  transformFn: generateSourceJSON,
75
- extension: '.json',
71
+ extension: 'json',
76
72
  },
77
73
  ];
78
74
  const MetricsTableExport = (props) => {
@@ -80,7 +76,7 @@ const MetricsTableExport = (props) => {
80
76
  const [selectedId, setSelectedId] = (0, react_1.useState)(SOURCES[0].label);
81
77
  return (react_1.default.createElement(stack_1.Stack, { space: "small", ...restProps },
82
78
  react_1.default.createElement(tabs_1.Tabs, null, SOURCES.map((source) => (react_1.default.createElement(tabs_1.Tabs.Item, { onClick: () => setSelectedId(source.label), isTabActive: selectedId === source.label, key: source.label }, source.label)))),
83
- react_1.default.createElement("div", { className: metrics_table_export_module_css_1.default.panels }, SOURCES.map((source) => selectedId === source.label && (react_1.default.createElement(preview_source_1.PreviewSource, { source: source.transformFn(items), download: `${download}.${source.extension}`, className: metrics_table_export_module_css_1.default.panel, key: source.label }))))));
79
+ react_1.default.createElement("div", null, SOURCES.map((source) => selectedId === source.label && (react_1.default.createElement(preview_source_1.PreviewSource, { source: source.transformFn(items), rows: 20, download: `${download}.${source.extension}`, key: source.label }))))));
84
80
  };
85
81
  exports.MetricsTableExport = MetricsTableExport;
86
82
  //# sourceMappingURL=metrics-table-export.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics-table-export.js","sourceRoot":"","sources":["../../../src/components/metrics-table-export/metrics-table-export.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics-table-export.js","sourceRoot":"","sources":["../../../src/components/metrics-table-export/metrics-table-export.tsx"],"names":[],"mappings":"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"}
@@ -12,14 +12,17 @@ const control_group_1 = require("../../ui/control-group");
12
12
  const tooltip_1 = require("../../ui/tooltip");
13
13
  const textarea_1 = require("../../ui/textarea");
14
14
  const preview_source_module_css_1 = __importDefault(require("./preview-source.module.css"));
15
+ const DEFAULT_ROWS = 10;
15
16
  const PreviewSource = (props) => {
16
- const { className = '', source, download = false, ...restProps } = props;
17
- return (react_1.default.createElement("div", { className: (0, classnames_1.default)(preview_source_module_css_1.default.root, className), ...restProps },
18
- react_1.default.createElement(control_group_1.ControlGroup, { className: preview_source_module_css_1.default.toolbar },
17
+ const { className = '', source, rows = DEFAULT_ROWS, download = false, ...restProps } = props;
18
+ const isEmpty = !source;
19
+ const rootClassName = (0, classnames_1.default)(preview_source_module_css_1.default.root, className, isEmpty && preview_source_module_css_1.default.isEmpty);
20
+ return (react_1.default.createElement("div", { className: rootClassName, ...restProps },
21
+ source && (react_1.default.createElement(control_group_1.ControlGroup, { className: preview_source_module_css_1.default.toolbar },
19
22
  react_1.default.createElement(copy_to_clipboard_1.CopyToClipboard, { outline: true, size: "small", text: source }),
20
23
  download && (react_1.default.createElement(tooltip_1.Tooltip, { title: `Download ${download}`, className: preview_source_module_css_1.default.downloadTooltip },
21
- react_1.default.createElement(button_1.Button, { outline: true, rightGlyph: button_1.BUTTON_GLYPHS.DOWNLOAD, size: "small", as: "a", href: `data:application/json,${encodeURIComponent(source)}`, download: download })))),
22
- react_1.default.createElement(textarea_1.Textarea, { previewSource: true, readOnly: true, rows: 12, className: preview_source_module_css_1.default.content }, source)));
24
+ react_1.default.createElement(button_1.Button, { outline: true, rightGlyph: button_1.BUTTON_GLYPHS.DOWNLOAD, size: "small", as: "a", href: `data:application/json,${encodeURIComponent(source)}`, download: download }))))),
25
+ react_1.default.createElement(textarea_1.Textarea, { previewSource: true, readOnly: true, rows: rows, className: preview_source_module_css_1.default.content }, source)));
23
26
  };
24
27
  exports.PreviewSource = PreviewSource;
25
28
  //# sourceMappingURL=preview-source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview-source.js","sourceRoot":"","sources":["../../../src/components/preview-source/preview-source.tsx"],"names":[],"mappings":";;;;;;AACA,kDAA0B;AAC1B,4DAA4B;AAE5B,4CAAwD;AACxD,kEAA6D;AAC7D,0DAAsD;AACtD,8CAA2C;AAC3C,gDAA6C;AAC7C,4FAA8C;AAYvC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAEzE,OAAO,CACL,uCAAK,SAAS,EAAE,IAAA,oBAAE,EAAC,mCAAG,CAAC,IAAI,EAAE,SAAS,CAAC,KAAM,SAAS;QACpD,8BAAC,4BAAY,IAAC,SAAS,EAAE,mCAAG,CAAC,OAAO;YAClC,8BAAC,mCAAe,IAAC,OAAO,QAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,MAAM,GAAI;YACrD,QAAQ,IAAI,CACX,8BAAC,iBAAO,IAAC,KAAK,EAAE,YAAY,QAAQ,EAAE,EAAE,SAAS,EAAE,mCAAG,CAAC,eAAe;gBACpE,8BAAC,eAAM,IACL,OAAO,QACP,UAAU,EAAE,sBAAa,CAAC,QAAQ,EAClC,IAAI,EAAC,OAAO,EACZ,EAAE,EAAC,GAAG,EACN,IAAI,EAAE,yBAAyB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAC3D,QAAQ,EAAE,QAAQ,GAClB,CACM,CACX,CACY;QACf,8BAAC,mBAAQ,IAAC,aAAa,QAAC,QAAQ,QAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,mCAAG,CAAC,OAAO,IAC9D,MAAM,CACE,CACP,CACP,CAAC;AACJ,CAAC,CAAC;AAzBW,QAAA,aAAa,iBAyBxB"}
1
+ {"version":3,"file":"preview-source.js","sourceRoot":"","sources":["../../../src/components/preview-source/preview-source.tsx"],"names":[],"mappings":";;;;;;AACA,kDAA0B;AAC1B,4DAA4B;AAE5B,4CAAwD;AACxD,kEAA6D;AAC7D,0DAAsD;AACtD,8CAA2C;AAC3C,gDAA6C;AAC7C,4FAA8C;AAE9C,MAAM,YAAY,GAAG,EAAE,CAAC;AAgBjB,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,GAAG,YAAY,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAE9F,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC;IACxB,MAAM,aAAa,GAAG,IAAA,oBAAE,EAAC,mCAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,IAAI,mCAAG,CAAC,OAAO,CAAC,CAAC;IAEtE,OAAO,CACL,uCAAK,SAAS,EAAE,aAAa,KAAM,SAAS;QACzC,MAAM,IAAI,CACT,8BAAC,4BAAY,IAAC,SAAS,EAAE,mCAAG,CAAC,OAAO;YAClC,8BAAC,mCAAe,IAAC,OAAO,QAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,MAAM,GAAI;YACrD,QAAQ,IAAI,CACX,8BAAC,iBAAO,IAAC,KAAK,EAAE,YAAY,QAAQ,EAAE,EAAE,SAAS,EAAE,mCAAG,CAAC,eAAe;gBACpE,8BAAC,eAAM,IACL,OAAO,QACP,UAAU,EAAE,sBAAa,CAAC,QAAQ,EAClC,IAAI,EAAC,OAAO,EACZ,EAAE,EAAC,GAAG,EACN,IAAI,EAAE,yBAAyB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAC3D,QAAQ,EAAE,QAAQ,GAClB,CACM,CACX,CACY,CAChB;QACD,8BAAC,mBAAQ,IAAC,aAAa,QAAC,QAAQ,QAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,mCAAG,CAAC,OAAO,IAChE,MAAM,CACE,CACP,CACP,CAAC;AACJ,CAAC,CAAC;AA9BW,QAAA,aAAa,iBA8BxB"}
@@ -7,6 +7,8 @@
7
7
  z-index: 2;
8
8
  top: var(--space-xsmall);
9
9
  right: var(--space-xsmall);
10
+ background: var(--color-background);
11
+ border-radius: var(--radius-medium);
10
12
  }
11
13
 
12
14
  /** fix control group with nested components */
@@ -21,8 +23,18 @@
21
23
  box-shadow: none;
22
24
  }
23
25
 
26
+ /** Source content */
24
27
  .content {
25
28
  position: relative;
26
29
  z-index: 1;
27
30
  height: 100%;
31
+ background: var(--color-highlight);
32
+ color: var(--color-text);
33
+ }
34
+
35
+ /** Empty / loading state */
36
+ .isEmpty .content {
37
+ pointer-events: none;
38
+ background: var(--skeleton-block-background);
39
+ opacity: var(--skeleton-opacity);
28
40
  }
@@ -201,6 +201,10 @@
201
201
 
202
202
  --outline-hover: 0 0 0 var(--space-xxxsmall) var(--color-highlight);
203
203
 
204
+ --skeleton-inline-background: linear-gradient(transparent 10%, currentColor 10.1%, currentColor 89.9%, transparent 90%);
205
+ --skeleton-block-background: currentColor;
206
+ --skeleton-opacity: 0.06;
207
+
204
208
  /** Layout */
205
209
  --max-width: 88rem;
206
210
  --entry-info-width: 64rem;
@@ -61,11 +61,11 @@
61
61
 
62
62
  /** Width variation */
63
63
  .width--narrow {
64
- max-width: 480px;
64
+ max-width: 360px;
65
65
  }
66
66
 
67
67
  .width--medium {
68
- max-width: 748px;
68
+ max-width: 640px;
69
69
  }
70
70
 
71
71
  .width--wide {
@@ -73,7 +73,7 @@
73
73
  }
74
74
 
75
75
  .width--extra-wide {
76
- max-width: var(--max-width);
76
+ max-width: calc(var(--max-width) + 2 * var(--space-medium));
77
77
  }
78
78
 
79
79
  /** Center variation */
@@ -1,6 +1,6 @@
1
1
  .root {
2
- background: linear-gradient(transparent 10%, currentColor 10.1%, currentColor 89.9%, transparent 90%);
3
- opacity: 0.05;
2
+ background: var(--skeleton-inline-background);
3
+ opacity: var(--skeleton-opacity);
4
4
  pointer-events: none;
5
5
  min-width: 6em;
6
6
  border-radius: var(--radius-medium);
@@ -14,5 +14,5 @@
14
14
  }
15
15
 
16
16
  .block {
17
- background: currentColor;
17
+ background: var(--skeleton-block-background);
18
18
  }
@@ -2,7 +2,6 @@ import React, { useState } from 'react';
2
2
  import { Stack } from '../../layout/stack';
3
3
  import { Tabs } from '../../ui/tabs';
4
4
  import { PreviewSource } from '../preview-source';
5
- import css from './metrics-table-export.module.css';
6
5
  const generateSourceJSON = (items) => {
7
6
  const output = items.map((item) => {
8
7
  var _a;
@@ -43,12 +42,12 @@ const SOURCES = [
43
42
  {
44
43
  label: 'CSV',
45
44
  transformFn: generateSourceCSV,
46
- extension: '.csv',
45
+ extension: 'csv',
47
46
  },
48
47
  {
49
48
  label: 'JSON',
50
49
  transformFn: generateSourceJSON,
51
- extension: '.json',
50
+ extension: 'json',
52
51
  },
53
52
  ];
54
53
  export const MetricsTableExport = (props) => {
@@ -56,6 +55,6 @@ export const MetricsTableExport = (props) => {
56
55
  const [selectedId, setSelectedId] = useState(SOURCES[0].label);
57
56
  return (React.createElement(Stack, { space: "small", ...restProps },
58
57
  React.createElement(Tabs, null, SOURCES.map((source) => (React.createElement(Tabs.Item, { onClick: () => setSelectedId(source.label), isTabActive: selectedId === source.label, key: source.label }, source.label)))),
59
- React.createElement("div", { className: css.panels }, SOURCES.map((source) => selectedId === source.label && (React.createElement(PreviewSource, { source: source.transformFn(items), download: `${download}.${source.extension}`, className: css.panel, key: source.label }))))));
58
+ React.createElement("div", null, SOURCES.map((source) => selectedId === source.label && (React.createElement(PreviewSource, { source: source.transformFn(items), rows: 20, download: `${download}.${source.extension}`, key: source.label }))))));
60
59
  };
61
60
  //# sourceMappingURL=metrics-table-export.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics-table-export.js","sourceRoot":"","sources":["../../../src/components/metrics-table-export/metrics-table-export.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,GAAG,MAAM,mCAAmC,CAAC;AAEpD,MAAM,kBAAkB,GAAG,CAAC,KAA6B,EAAU,EAAE;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;;QAAC,OAAA,CAAC;YAClC,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACjC,IAAI,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,KAAI,EAAE;gBACzB,IAAI,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,CAAC;aAC1B,CAAC,CAAC;SACJ,CAAC,CAAA;KAAA,CAAC,CAAC;IAEJ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAU,EAAE;;IAClE,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,MAAM,CAAC,IAAI,CACT;QACE,MAAM;QACN,GAAG,CAAC,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,0CAAE,IAAI,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YACrC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,OAAO,KAAK,GAAG,CAAC,WAAW,CAAC;YACrC,CAAC;YAED,OAAO,OAAO,KAAK,GAAG,CAAC,YAAY,CAAC;QACtC,CAAC,CAAC,KAAI,EAAE,CAAC;KACV,CAAC,IAAI,CAAC,aAAa,CAAC,CACtB,CAAC;IAEF,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;QACtB,MAAM,GAAG,GAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjD,MAAA,IAAI,CAAC,IAAI,0CAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,GAAG,CAAC,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG;IACd;QACE,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,iBAAiB;QAC9B,SAAS,EAAE,MAAM;KAClB;IACD;QACE,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,OAAO;KACnB;CACF,CAAC;AAOF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACnE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAChD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE/D,OAAO,CACL,oBAAC,KAAK,IAAC,KAAK,EAAC,OAAO,KAAK,SAAS;QAChC,oBAAC,IAAI,QACF,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,oBAAC,IAAI,CAAC,IAAI,IACR,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAC1C,WAAW,EAAE,UAAU,KAAK,MAAM,CAAC,KAAK,EACxC,GAAG,EAAE,MAAM,CAAC,KAAK,IAEhB,MAAM,CAAC,KAAK,CACH,CACb,CAAC,CACG;QACP,6BAAK,SAAS,EAAE,GAAG,CAAC,MAAM,IACvB,OAAO,CAAC,GAAG,CACV,CAAC,MAAM,EAAE,EAAE,CACT,UAAU,KAAK,MAAM,CAAC,KAAK,IAAI,CAC7B,oBAAC,aAAa,IACZ,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,QAAQ,EAAE,GAAG,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,EAC3C,SAAS,EAAE,GAAG,CAAC,KAAK,EACpB,GAAG,EAAE,MAAM,CAAC,KAAK,GACjB,CACL,CACF,CACG,CACA,CACT,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"metrics-table-export.js","sourceRoot":"","sources":["../../../src/components/metrics-table-export/metrics-table-export.tsx"],"names":[],"mappings":"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"}
@@ -6,13 +6,16 @@ import { ControlGroup } from '../../ui/control-group';
6
6
  import { Tooltip } from '../../ui/tooltip';
7
7
  import { Textarea } from '../../ui/textarea';
8
8
  import css from './preview-source.module.css';
9
+ const DEFAULT_ROWS = 10;
9
10
  export const PreviewSource = (props) => {
10
- const { className = '', source, download = false, ...restProps } = props;
11
- return (React.createElement("div", { className: cx(css.root, className), ...restProps },
12
- React.createElement(ControlGroup, { className: css.toolbar },
11
+ const { className = '', source, rows = DEFAULT_ROWS, download = false, ...restProps } = props;
12
+ const isEmpty = !source;
13
+ const rootClassName = cx(css.root, className, isEmpty && css.isEmpty);
14
+ return (React.createElement("div", { className: rootClassName, ...restProps },
15
+ source && (React.createElement(ControlGroup, { className: css.toolbar },
13
16
  React.createElement(CopyToClipboard, { outline: true, size: "small", text: source }),
14
17
  download && (React.createElement(Tooltip, { title: `Download ${download}`, className: css.downloadTooltip },
15
- React.createElement(Button, { outline: true, rightGlyph: BUTTON_GLYPHS.DOWNLOAD, size: "small", as: "a", href: `data:application/json,${encodeURIComponent(source)}`, download: download })))),
16
- React.createElement(Textarea, { previewSource: true, readOnly: true, rows: 12, className: css.content }, source)));
18
+ React.createElement(Button, { outline: true, rightGlyph: BUTTON_GLYPHS.DOWNLOAD, size: "small", as: "a", href: `data:application/json,${encodeURIComponent(source)}`, download: download }))))),
19
+ React.createElement(Textarea, { previewSource: true, readOnly: true, rows: rows, className: css.content }, source)));
17
20
  };
18
21
  //# sourceMappingURL=preview-source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview-source.js","sourceRoot":"","sources":["../../../src/components/preview-source/preview-source.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,GAAG,MAAM,6BAA6B,CAAC;AAY9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAEzE,OAAO,CACL,6BAAK,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,KAAM,SAAS;QACpD,oBAAC,YAAY,IAAC,SAAS,EAAE,GAAG,CAAC,OAAO;YAClC,oBAAC,eAAe,IAAC,OAAO,QAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,MAAM,GAAI;YACrD,QAAQ,IAAI,CACX,oBAAC,OAAO,IAAC,KAAK,EAAE,YAAY,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,eAAe;gBACpE,oBAAC,MAAM,IACL,OAAO,QACP,UAAU,EAAE,aAAa,CAAC,QAAQ,EAClC,IAAI,EAAC,OAAO,EACZ,EAAE,EAAC,GAAG,EACN,IAAI,EAAE,yBAAyB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAC3D,QAAQ,EAAE,QAAQ,GAClB,CACM,CACX,CACY;QACf,oBAAC,QAAQ,IAAC,aAAa,QAAC,QAAQ,QAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,IAC9D,MAAM,CACE,CACP,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"preview-source.js","sourceRoot":"","sources":["../../../src/components/preview-source/preview-source.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,GAAG,MAAM,6BAA6B,CAAC;AAE9C,MAAM,YAAY,GAAG,EAAE,CAAC;AAgBxB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,GAAG,YAAY,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAE9F,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC;IACxB,MAAM,aAAa,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAEtE,OAAO,CACL,6BAAK,SAAS,EAAE,aAAa,KAAM,SAAS;QACzC,MAAM,IAAI,CACT,oBAAC,YAAY,IAAC,SAAS,EAAE,GAAG,CAAC,OAAO;YAClC,oBAAC,eAAe,IAAC,OAAO,QAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,MAAM,GAAI;YACrD,QAAQ,IAAI,CACX,oBAAC,OAAO,IAAC,KAAK,EAAE,YAAY,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,eAAe;gBACpE,oBAAC,MAAM,IACL,OAAO,QACP,UAAU,EAAE,aAAa,CAAC,QAAQ,EAClC,IAAI,EAAC,OAAO,EACZ,EAAE,EAAC,GAAG,EACN,IAAI,EAAE,yBAAyB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAC3D,QAAQ,EAAE,QAAQ,GAClB,CACM,CACX,CACY,CAChB;QACD,oBAAC,QAAQ,IAAC,aAAa,QAAC,QAAQ,QAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,IAChE,MAAM,CACE,CACP,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -7,6 +7,8 @@
7
7
  z-index: 2;
8
8
  top: var(--space-xsmall);
9
9
  right: var(--space-xsmall);
10
+ background: var(--color-background);
11
+ border-radius: var(--radius-medium);
10
12
  }
11
13
 
12
14
  /** fix control group with nested components */
@@ -21,8 +23,18 @@
21
23
  box-shadow: none;
22
24
  }
23
25
 
26
+ /** Source content */
24
27
  .content {
25
28
  position: relative;
26
29
  z-index: 1;
27
30
  height: 100%;
31
+ background: var(--color-highlight);
32
+ color: var(--color-text);
33
+ }
34
+
35
+ /** Empty / loading state */
36
+ .isEmpty .content {
37
+ pointer-events: none;
38
+ background: var(--skeleton-block-background);
39
+ opacity: var(--skeleton-opacity);
28
40
  }
@@ -201,6 +201,10 @@
201
201
 
202
202
  --outline-hover: 0 0 0 var(--space-xxxsmall) var(--color-highlight);
203
203
 
204
+ --skeleton-inline-background: linear-gradient(transparent 10%, currentColor 10.1%, currentColor 89.9%, transparent 90%);
205
+ --skeleton-block-background: currentColor;
206
+ --skeleton-opacity: 0.06;
207
+
204
208
  /** Layout */
205
209
  --max-width: 88rem;
206
210
  --entry-info-width: 64rem;
@@ -61,11 +61,11 @@
61
61
 
62
62
  /** Width variation */
63
63
  .width--narrow {
64
- max-width: 480px;
64
+ max-width: 360px;
65
65
  }
66
66
 
67
67
  .width--medium {
68
- max-width: 748px;
68
+ max-width: 640px;
69
69
  }
70
70
 
71
71
  .width--wide {
@@ -73,7 +73,7 @@
73
73
  }
74
74
 
75
75
  .width--extra-wide {
76
- max-width: var(--max-width);
76
+ max-width: calc(var(--max-width) + 2 * var(--space-medium));
77
77
  }
78
78
 
79
79
  /** Center variation */
@@ -1,6 +1,6 @@
1
1
  .root {
2
- background: linear-gradient(transparent 10%, currentColor 10.1%, currentColor 89.9%, transparent 90%);
3
- opacity: 0.05;
2
+ background: var(--skeleton-inline-background);
3
+ opacity: var(--skeleton-opacity);
4
4
  pointer-events: none;
5
5
  min-width: 6em;
6
6
  border-radius: var(--radius-medium);
@@ -14,5 +14,5 @@
14
14
  }
15
15
 
16
16
  .block {
17
- background: currentColor;
17
+ background: var(--skeleton-block-background);
18
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bundle-stats/ui",
3
- "version": "4.16.0-beta.3",
3
+ "version": "4.16.0-beta.5",
4
4
  "description": "UI components for BundleStats projects.",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -74,7 +74,7 @@
74
74
  "react-router-dom": "^5.0.0"
75
75
  },
76
76
  "dependencies": {
77
- "@bundle-stats/utils": "^4.16.0-beta.3",
77
+ "@bundle-stats/utils": "^4.16.0-beta.5",
78
78
  "ariakit": "2.0.0-next.44",
79
79
  "d3": "7.9.0",
80
80
  "modern-css-reset": "1.4.0",
@@ -82,5 +82,5 @@
82
82
  "snarkdown": "2.0.0",
83
83
  "use-query-params": "2.2.1"
84
84
  },
85
- "gitHead": "192202fe9951efa05865b4421e69c9e577d2d6cc"
85
+ "gitHead": "b61ff19f9bbf4476a2fdbf2bcf11a714c79431ed"
86
86
  }
@@ -5,7 +5,6 @@ import type { ReportMetricRow } from '@bundle-stats/utils';
5
5
  import { Stack } from '../../layout/stack';
6
6
  import { Tabs } from '../../ui/tabs';
7
7
  import { PreviewSource } from '../preview-source';
8
- import css from './metrics-table-export.module.css';
9
8
 
10
9
  const generateSourceJSON = (items: Array<ReportMetricRow>): string => {
11
10
  const output = items.map((item) => ({
@@ -54,12 +53,12 @@ const SOURCES = [
54
53
  {
55
54
  label: 'CSV',
56
55
  transformFn: generateSourceCSV,
57
- extension: '.csv',
56
+ extension: 'csv',
58
57
  },
59
58
  {
60
59
  label: 'JSON',
61
60
  transformFn: generateSourceJSON,
62
- extension: '.json',
61
+ extension: 'json',
63
62
  },
64
63
  ];
65
64
 
@@ -85,14 +84,14 @@ export const MetricsTableExport = (props: MetricsTableExportProps) => {
85
84
  </Tabs.Item>
86
85
  ))}
87
86
  </Tabs>
88
- <div className={css.panels}>
87
+ <div>
89
88
  {SOURCES.map(
90
89
  (source) =>
91
90
  selectedId === source.label && (
92
91
  <PreviewSource
93
92
  source={source.transformFn(items)}
93
+ rows={20}
94
94
  download={`${download}.${source.extension}`}
95
- className={css.panel}
96
95
  key={source.label}
97
96
  />
98
97
  ),
@@ -7,6 +7,8 @@
7
7
  z-index: 2;
8
8
  top: var(--space-xsmall);
9
9
  right: var(--space-xsmall);
10
+ background: var(--color-background);
11
+ border-radius: var(--radius-medium);
10
12
  }
11
13
 
12
14
  /** fix control group with nested components */
@@ -21,8 +23,18 @@
21
23
  box-shadow: none;
22
24
  }
23
25
 
26
+ /** Source content */
24
27
  .content {
25
28
  position: relative;
26
29
  z-index: 1;
27
30
  height: 100%;
31
+ background: var(--color-highlight);
32
+ color: var(--color-text);
33
+ }
34
+
35
+ /** Empty / loading state */
36
+ .isEmpty .content {
37
+ pointer-events: none;
38
+ background: var(--skeleton-block-background);
39
+ opacity: var(--skeleton-opacity);
28
40
  }
@@ -33,3 +33,9 @@ export const Default: Story = {
33
33
  download: 'bundle-stats--assets.json',
34
34
  },
35
35
  };
36
+
37
+ export const Empty: Story = {
38
+ args: {
39
+ download: 'bundle-stats--assets.json',
40
+ },
41
+ };
@@ -9,8 +9,14 @@ import { Tooltip } from '../../ui/tooltip';
9
9
  import { Textarea } from '../../ui/textarea';
10
10
  import css from './preview-source.module.css';
11
11
 
12
+ const DEFAULT_ROWS = 10;
13
+
12
14
  type PreviewSourceProps = {
13
- source: string;
15
+ source?: string;
16
+ /**
17
+ * Textarea rows
18
+ */
19
+ rows?: number;
14
20
  /**
15
21
  * Link download attribute
16
22
  * @example
@@ -20,26 +26,31 @@ type PreviewSourceProps = {
20
26
  } & ComponentProps<'div'>;
21
27
 
22
28
  export const PreviewSource = (props: PreviewSourceProps) => {
23
- const { className = '', source, download = false, ...restProps } = props;
29
+ const { className = '', source, rows = DEFAULT_ROWS, download = false, ...restProps } = props;
30
+
31
+ const isEmpty = !source;
32
+ const rootClassName = cx(css.root, className, isEmpty && css.isEmpty);
24
33
 
25
34
  return (
26
- <div className={cx(css.root, className)} {...restProps}>
27
- <ControlGroup className={css.toolbar}>
28
- <CopyToClipboard outline size="small" text={source} />
29
- {download && (
30
- <Tooltip title={`Download ${download}`} className={css.downloadTooltip}>
31
- <Button
32
- outline
33
- rightGlyph={BUTTON_GLYPHS.DOWNLOAD}
34
- size="small"
35
- as="a"
36
- href={`data:application/json,${encodeURIComponent(source)}`}
37
- download={download}
38
- />
39
- </Tooltip>
40
- )}
41
- </ControlGroup>
42
- <Textarea previewSource readOnly rows={12} className={css.content}>
35
+ <div className={rootClassName} {...restProps}>
36
+ {source && (
37
+ <ControlGroup className={css.toolbar}>
38
+ <CopyToClipboard outline size="small" text={source} />
39
+ {download && (
40
+ <Tooltip title={`Download ${download}`} className={css.downloadTooltip}>
41
+ <Button
42
+ outline
43
+ rightGlyph={BUTTON_GLYPHS.DOWNLOAD}
44
+ size="small"
45
+ as="a"
46
+ href={`data:application/json,${encodeURIComponent(source)}`}
47
+ download={download}
48
+ />
49
+ </Tooltip>
50
+ )}
51
+ </ControlGroup>
52
+ )}
53
+ <Textarea previewSource readOnly rows={rows} className={css.content}>
43
54
  {source}
44
55
  </Textarea>
45
56
  </div>
@@ -201,6 +201,10 @@
201
201
 
202
202
  --outline-hover: 0 0 0 var(--space-xxxsmall) var(--color-highlight);
203
203
 
204
+ --skeleton-inline-background: linear-gradient(transparent 10%, currentColor 10.1%, currentColor 89.9%, transparent 90%);
205
+ --skeleton-block-background: currentColor;
206
+ --skeleton-opacity: 0.06;
207
+
204
208
  /** Layout */
205
209
  --max-width: 88rem;
206
210
  --entry-info-width: 64rem;
@@ -61,11 +61,11 @@
61
61
 
62
62
  /** Width variation */
63
63
  .width--narrow {
64
- max-width: 480px;
64
+ max-width: 360px;
65
65
  }
66
66
 
67
67
  .width--medium {
68
- max-width: 748px;
68
+ max-width: 640px;
69
69
  }
70
70
 
71
71
  .width--wide {
@@ -73,7 +73,7 @@
73
73
  }
74
74
 
75
75
  .width--extra-wide {
76
- max-width: var(--max-width);
76
+ max-width: calc(var(--max-width) + 2 * var(--space-medium));
77
77
  }
78
78
 
79
79
  /** Center variation */
@@ -1,6 +1,6 @@
1
1
  .root {
2
- background: linear-gradient(transparent 10%, currentColor 10.1%, currentColor 89.9%, transparent 90%);
3
- opacity: 0.05;
2
+ background: var(--skeleton-inline-background);
3
+ opacity: var(--skeleton-opacity);
4
4
  pointer-events: none;
5
5
  min-width: 6em;
6
6
  border-radius: var(--radius-medium);
@@ -14,5 +14,5 @@
14
14
  }
15
15
 
16
16
  .block {
17
- background: currentColor;
17
+ background: var(--skeleton-block-background);
18
18
  }
@@ -1,7 +1,8 @@
1
1
  import type { ComponentProps } from 'react';
2
2
  import React from 'react';
3
3
  type PreviewSourceProps = {
4
- source: string;
4
+ source?: string;
5
+ rows?: number;
5
6
  download?: string;
6
7
  } & ComponentProps<'div'>;
7
8
  export declare const PreviewSource: (props: PreviewSourceProps) => React.JSX.Element;
@@ -1,8 +0,0 @@
1
- .panels {
2
- }
3
-
4
- .panel {
5
- min-height: 320px;
6
- height: 60vh;
7
- max-height: 480px;
8
- }
@@ -1,8 +0,0 @@
1
- .panels {
2
- }
3
-
4
- .panel {
5
- min-height: 320px;
6
- height: 60vh;
7
- max-height: 480px;
8
- }
@@ -1,8 +0,0 @@
1
- .panels {
2
- }
3
-
4
- .panel {
5
- min-height: 320px;
6
- height: 60vh;
7
- max-height: 480px;
8
- }