@servicetitan/marketing-ui 1.13.0 → 1.16.0
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.
- package/CHANGELOG.md +328 -0
- package/dist/components/ads/ads-stat.js +13 -18
- package/dist/components/ads/ads-stat.js.map +1 -1
- package/dist/components/charts/funnel-chart/components/funnel-chart.js +15 -41
- package/dist/components/charts/funnel-chart/components/funnel-chart.js.map +1 -1
- package/dist/components/charts/funnel-chart/components/funnel-svg.js +9 -16
- package/dist/components/charts/funnel-chart/components/funnel-svg.js.map +1 -1
- package/dist/components/charts/funnel-chart/funnel-chart.stories.js +11 -14
- package/dist/components/charts/funnel-chart/funnel-chart.stories.js.map +1 -1
- package/dist/components/charts/funnel-chart/index.js +2 -16
- package/dist/components/charts/funnel-chart/index.js.map +1 -1
- package/dist/components/charts/funnel-chart/utils/const.js +2 -5
- package/dist/components/charts/funnel-chart/utils/const.js.map +1 -1
- package/dist/components/charts/funnel-chart/utils/interface.js +1 -2
- package/dist/components/charts/line-chart/components/body.js +26 -51
- package/dist/components/charts/line-chart/components/body.js.map +1 -1
- package/dist/components/charts/line-chart/components/container.js +12 -15
- package/dist/components/charts/line-chart/components/container.js.map +1 -1
- package/dist/components/charts/line-chart/components/hover-popover.js +20 -45
- package/dist/components/charts/line-chart/components/hover-popover.js.map +1 -1
- package/dist/components/charts/line-chart/components/sidebar.js +9 -35
- package/dist/components/charts/line-chart/components/sidebar.js.map +1 -1
- package/dist/components/charts/line-chart/components/stuff.js +13 -41
- package/dist/components/charts/line-chart/components/stuff.js.map +1 -1
- package/dist/components/charts/line-chart/components/svg-bars.js +14 -17
- package/dist/components/charts/line-chart/components/svg-bars.js.map +1 -1
- package/dist/components/charts/line-chart/components/svg-body.js +15 -41
- package/dist/components/charts/line-chart/components/svg-body.js.map +1 -1
- package/dist/components/charts/line-chart/components/svg-lines.js +11 -33
- package/dist/components/charts/line-chart/components/svg-lines.js.map +1 -1
- package/dist/components/charts/line-chart/index.js +2 -14
- package/dist/components/charts/line-chart/index.js.map +1 -1
- package/dist/components/charts/line-chart/line-chart.stories.js +19 -27
- package/dist/components/charts/line-chart/line-chart.stories.js.map +1 -1
- package/dist/components/charts/line-chart/stores/line-chart.store.js +20 -23
- package/dist/components/charts/line-chart/stores/line-chart.store.js.map +1 -1
- package/dist/components/charts/line-chart/stores/svg.store.js +10 -13
- package/dist/components/charts/line-chart/stores/svg.store.js.map +1 -1
- package/dist/components/charts/line-chart/utils/const.js +2 -6
- package/dist/components/charts/line-chart/utils/const.js.map +1 -1
- package/dist/components/charts/line-chart/utils/formatters.js +7 -11
- package/dist/components/charts/line-chart/utils/formatters.js.map +1 -1
- package/dist/components/charts/line-chart/utils/interfaces.js +1 -2
- package/dist/components/charts/line-chart/utils/internal-interfaces.js +1 -2
- package/dist/components/charts/line-chart/utils/key.js +1 -5
- package/dist/components/charts/line-chart/utils/key.js.map +1 -1
- package/dist/components/charts/line-chart/utils/labels.js +19 -26
- package/dist/components/charts/line-chart/utils/labels.js.map +1 -1
- package/dist/components/charts/pie-chart/components/pie-chart.js +12 -38
- package/dist/components/charts/pie-chart/components/pie-chart.js.map +1 -1
- package/dist/components/charts/pie-chart/components/pie.js +20 -27
- package/dist/components/charts/pie-chart/components/pie.js.map +1 -1
- package/dist/components/charts/pie-chart/index.js +1 -5
- package/dist/components/charts/pie-chart/index.js.map +1 -1
- package/dist/components/charts/pie-chart/pie-chart.stories.js +11 -18
- package/dist/components/charts/pie-chart/pie-chart.stories.js.map +1 -1
- package/dist/components/charts/pie-chart/utils/const.js +5 -9
- package/dist/components/charts/pie-chart/utils/const.js.map +1 -1
- package/dist/components/charts/pie-chart/utils/interface.js +1 -2
- package/dist/components/image-cropper/image-cropper.js +17 -23
- package/dist/components/image-cropper/image-cropper.js.map +1 -1
- package/dist/components/image-cropper/image-cropper.stories.js +10 -14
- package/dist/components/image-cropper/image-cropper.stories.js.map +1 -1
- package/dist/components/stat/stat-card.js +15 -42
- package/dist/components/stat/stat-card.js.map +1 -1
- package/dist/components/stat/stat-cards.stories.js +10 -13
- package/dist/components/stat/stat-cards.stories.js.map +1 -1
- package/dist/components/stat/stat-extended-card.js +9 -35
- package/dist/components/stat/stat-extended-card.js.map +1 -1
- package/dist/components/stat/stat-extended-card.stories.js +8 -11
- package/dist/components/stat/stat-extended-card.stories.js.map +1 -1
- package/dist/components/ui/action-button/action-button.d.ts +14 -0
- package/dist/components/ui/action-button/action-button.d.ts.map +1 -0
- package/dist/components/ui/action-button/action-button.js +32 -0
- package/dist/components/ui/action-button/action-button.js.map +1 -0
- package/dist/components/ui/action-button/action-button.module.less +51 -0
- package/dist/components/ui/action-button/action-button.stories.d.ts +10 -0
- package/dist/components/ui/action-button/action-button.stories.d.ts.map +1 -0
- package/dist/components/ui/action-button/action-button.stories.js +11 -0
- package/dist/components/ui/action-button/action-button.stories.js.map +1 -0
- package/dist/components/ui/centered-spinner.js +5 -12
- package/dist/components/ui/centered-spinner.js.map +1 -1
- package/dist/components/ui/centered-spinner.stories.js +8 -11
- package/dist/components/ui/centered-spinner.stories.js.map +1 -1
- package/dist/components/ui/date-range-picker/date-range-picker.js +11 -36
- package/dist/components/ui/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/ui/date-range-picker/date-range-picker.stories.js +9 -12
- package/dist/components/ui/date-range-picker/date-range-picker.stories.js.map +1 -1
- package/dist/components/ui/disabled-button.js +4 -8
- package/dist/components/ui/disabled-button.js.map +1 -1
- package/dist/components/ui/line-text/index.js +1 -13
- package/dist/components/ui/line-text/index.js.map +1 -1
- package/dist/components/ui/line-text/line-text-body.stories.js +7 -10
- package/dist/components/ui/line-text/line-text-body.stories.js.map +1 -1
- package/dist/components/ui/line-text/line-text-head.stories.js +7 -10
- package/dist/components/ui/line-text/line-text-head.stories.js.map +1 -1
- package/dist/components/ui/line-text/line-text.js +15 -42
- package/dist/components/ui/line-text/line-text.js.map +1 -1
- package/dist/components/ui/title-popover/title-popover.d.ts +17 -0
- package/dist/components/ui/title-popover/title-popover.d.ts.map +1 -0
- package/dist/components/ui/title-popover/title-popover.js +96 -0
- package/dist/components/ui/title-popover/title-popover.js.map +1 -0
- package/dist/components/ui/title-popover/title-popover.module.less +10 -0
- package/dist/components/ui/title-popover/title-popover.stories.d.ts +11 -0
- package/dist/components/ui/title-popover/title-popover.stories.d.ts.map +1 -0
- package/dist/components/ui/title-popover/title-popover.stories.js +17 -0
- package/dist/components/ui/title-popover/title-popover.stories.js.map +1 -0
- package/dist/index.js +12 -24
- package/dist/index.js.map +1 -1
- package/dist/utils/ads-texts.d.ts +1 -1
- package/dist/utils/ads-texts.d.ts.map +1 -1
- package/dist/utils/ads-texts.js +3 -5
- package/dist/utils/ads-texts.js.map +1 -1
- package/dist/utils/date/__mocks__/date-mock.js +1 -5
- package/dist/utils/date/__mocks__/date-mock.js.map +1 -1
- package/dist/utils/date/date-range-picker-options.js +7 -12
- package/dist/utils/date/date-range-picker-options.js.map +1 -1
- package/dist/utils/date/date-range-picker-state.js +6 -10
- package/dist/utils/date/date-range-picker-state.js.map +1 -1
- package/dist/utils/date/date-tenant.js +1 -5
- package/dist/utils/date/date-tenant.js.map +1 -1
- package/dist/utils/date/date.js +3 -9
- package/dist/utils/date/date.js.map +1 -1
- package/dist/utils/date/index.js +4 -16
- package/dist/utils/date/index.js.map +1 -1
- package/dist/utils/format-big-numbers.js +1 -5
- package/dist/utils/format-big-numbers.js.map +1 -1
- package/dist/utils/formatters.js +13 -41
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/helpers.js +2 -7
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/string-case.js +2 -7
- package/dist/utils/string-case.js.map +1 -1
- package/dist/utils/use-client-rect.js +7 -11
- package/dist/utils/use-client-rect.js.map +1 -1
- package/dist/utils/use-target-range-store.d.ts +7 -0
- package/dist/utils/use-target-range-store.d.ts.map +1 -0
- package/dist/utils/use-target-range-store.js +9 -0
- package/dist/utils/use-target-range-store.js.map +1 -0
- package/package.json +2 -2
- package/src/components/charts/pie-chart/utils/const.ts +1 -1
- package/src/components/ui/action-button/action-button.module.less +51 -0
- package/src/components/ui/action-button/action-button.module.less.d.ts +9 -0
- package/src/components/ui/action-button/action-button.stories.tsx +19 -0
- package/src/components/ui/action-button/action-button.tsx +82 -0
- package/src/components/ui/title-popover/title-popover.module.less +10 -0
- package/src/components/ui/title-popover/title-popover.module.less.d.ts +3 -0
- package/src/components/ui/title-popover/title-popover.stories.tsx +28 -0
- package/src/components/ui/title-popover/title-popover.tsx +86 -0
- package/src/utils/ads-texts.tsx +4 -1
- package/src/utils/use-target-range-store.ts +17 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,20 +7,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
8
|
});
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const image_cropper_1 = require("./image-cropper");
|
|
16
|
-
exports.default = {
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
import { useRef, useState, Fragment } from 'react';
|
|
12
|
+
import { ImageCropper } from './image-cropper';
|
|
13
|
+
export default {
|
|
17
14
|
title: 'Marketing UI/ImageCropper/ImageCropper',
|
|
18
|
-
component:
|
|
15
|
+
component: ImageCropper,
|
|
19
16
|
parameters: {},
|
|
20
17
|
};
|
|
21
18
|
const BasicExample = () => {
|
|
22
|
-
const [imageToEdit, setImageToEdit] =
|
|
23
|
-
const [croppedImage, setCroppedImage] =
|
|
24
|
-
const imageCropper =
|
|
19
|
+
const [imageToEdit, setImageToEdit] = useState();
|
|
20
|
+
const [croppedImage, setCroppedImage] = useState();
|
|
21
|
+
const imageCropper = useRef(null);
|
|
25
22
|
const handleFileChange = (e) => {
|
|
26
23
|
var _a;
|
|
27
24
|
const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
@@ -45,8 +42,7 @@ const BasicExample = () => {
|
|
|
45
42
|
setCroppedImage(reader.result);
|
|
46
43
|
};
|
|
47
44
|
});
|
|
48
|
-
return ((
|
|
45
|
+
return (_jsxs(Fragment, { children: [_jsx("input", { type: "file", accept: "image/png, image/jpeg", onChange: handleFileChange }), imageToEdit && (_jsxs("div", Object.assign({ style: { marginTop: 30 } }, { children: [_jsx("button", Object.assign({ onClick: handleSave }, { children: "Save cropped image" })), _jsx("div", Object.assign({ style: { marginTop: 30 } }, { children: _jsx(ImageCropper, { file: imageToEdit, ref: imageCropper, crop: { width: 300, height: 300 } }) }))] }))), croppedImage && (_jsxs("div", Object.assign({ style: { marginTop: 30 } }, { children: [_jsx("a", Object.assign({ href: croppedImage, download: imageToEdit === null || imageToEdit === void 0 ? void 0 : imageToEdit.name }, { children: "Download" })), _jsx("div", Object.assign({ style: { marginTop: 30 } }, { children: _jsx("img", { src: croppedImage }) }))] })))] }));
|
|
49
46
|
};
|
|
50
|
-
const basic = () => (
|
|
51
|
-
exports.basic = basic;
|
|
47
|
+
export const basic = () => _jsx(BasicExample, {});
|
|
52
48
|
//# sourceMappingURL=image-cropper.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-cropper.stories.js","sourceRoot":"","sources":["../../../src/components/image-cropper/image-cropper.stories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-cropper.stories.js","sourceRoot":"","sources":["../../../src/components/image-cropper/image-cropper.stories.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAmB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,eAAe;IACX,KAAK,EAAE,wCAAwC;IAC/C,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,YAAY,GAAO,GAAG,EAAE;IAC1B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAQ,CAAC;IACvD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,EAAU,CAAC;IAE3D,MAAM,YAAY,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAEhD,MAAM,gBAAgB,GAAG,CAAC,CAAgC,EAAE,EAAE;;QAC1D,MAAM,IAAI,GAAG,MAAA,CAAC,CAAC,MAAM,CAAC,KAAK,0CAAG,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;SACV;QAED,cAAc,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAS,EAAE;;QAC1B,IAAI,CAAC,WAAW,EAAE;YACd,OAAO;SACV;QACD,MAAM,IAAI,GAAG,MAAM,CAAA,MAAA,YAAY,CAAC,OAAO,0CAAE,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA,CAAC;QAC3F,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;SACV;QACD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YACjB,eAAe,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC;QAC7C,CAAC,CAAC;IACN,CAAC,CAAA,CAAC;IAEF,OAAO,CACH,MAAC,QAAQ,eACL,gBAAO,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,uBAAuB,EAAC,QAAQ,EAAE,gBAAgB,GAAI,EAC/E,WAAW,IAAI,CACZ,6BAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,iBACzB,+BAAQ,OAAO,EAAE,UAAU,wCAA6B,EACxD,4BAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,gBACzB,KAAC,YAAY,IACT,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GACnC,IACA,KACJ,CACT,EACA,YAAY,IAAI,CACb,6BAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,iBACzB,0BAAG,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,8BAE9C,EACJ,4BAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,gBACzB,cAAK,GAAG,EAAE,YAAY,GAAI,IACxB,KACJ,CACT,IACM,CACd,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,KAAC,YAAY,KAAG,CAAC"}
|
|
@@ -1,33 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
-
};
|
|
24
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.StatCard = exports.StatDiff = void 0;
|
|
26
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
27
|
-
const classnames_1 = __importDefault(require("classnames"));
|
|
28
|
-
const design_system_1 = require("@servicetitan/design-system");
|
|
29
|
-
const Styles = __importStar(require("./stat-card.module.less"));
|
|
30
|
-
const formatters_1 = require("../../utils/formatters");
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { BodyText, Eyebrow, Stack, Tooltip, } from '@servicetitan/design-system';
|
|
4
|
+
import * as Styles from './stat-card.module.less';
|
|
5
|
+
import { formatValue } from '../../utils/formatters';
|
|
31
6
|
const calculateDiff = (value, prev, percents) => {
|
|
32
7
|
const diff = (value - prev) * (percents ? 100 : 1);
|
|
33
8
|
const absDiff = Math.abs(diff);
|
|
@@ -35,15 +10,15 @@ const calculateDiff = (value, prev, percents) => {
|
|
|
35
10
|
return [absDiff, diffPercent, diff >= 0];
|
|
36
11
|
};
|
|
37
12
|
const formatDifference = (value, isPlus, format) => {
|
|
38
|
-
return (isPlus ? '+' : '-') +
|
|
13
|
+
return (isPlus ? '+' : '-') + formatValue(value, format);
|
|
39
14
|
};
|
|
40
15
|
const formatDifferencePercentage = (value, isPlus) => {
|
|
41
16
|
if (!value) {
|
|
42
17
|
return '';
|
|
43
18
|
}
|
|
44
|
-
return (isPlus ? '+' : '-') +
|
|
19
|
+
return (isPlus ? '+' : '-') + formatValue(value, 'percent-100');
|
|
45
20
|
};
|
|
46
|
-
const StatDiff = ({ value, prev, size, format, inverted, neutral, className, diffPercentOnly = false, }) => {
|
|
21
|
+
export const StatDiff = ({ value, prev, size, format, inverted, neutral, className, diffPercentOnly = false, }) => {
|
|
47
22
|
const percents = format === 'percent';
|
|
48
23
|
const [absDiff, diffPercent, isIncrease] = calculateDiff(value !== null && value !== void 0 ? value : 0, prev !== null && prev !== void 0 ? prev : 0, percents);
|
|
49
24
|
const diff = absDiff === 0 ? '' : isIncrease ? '▲ ' : '▼ ';
|
|
@@ -63,21 +38,19 @@ const StatDiff = ({ value, prev, size, format, inverted, neutral, className, dif
|
|
|
63
38
|
}
|
|
64
39
|
}
|
|
65
40
|
}
|
|
66
|
-
return ((
|
|
41
|
+
return (_jsxs(BodyText, Object.assign({ className: classNames(Styles.statDiff, {
|
|
67
42
|
'c-red-500': !neutral && (inverted ? isIncrease : !isIncrease),
|
|
68
43
|
'c-green-500': !neutral && (inverted ? !isIncrease : isIncrease),
|
|
69
44
|
'c-neutral-200': !!neutral,
|
|
70
|
-
}, className), size: size !== null && size !== void 0 ? size : 'small' }, { children: [(
|
|
45
|
+
}, className), size: size !== null && size !== void 0 ? size : 'small' }, { children: [_jsx("span", { children: diff }), value === undefined ? '\u00A0' : text] })));
|
|
71
46
|
};
|
|
72
|
-
|
|
73
|
-
const StatCard = ({ title, description, value, percent, money, rate, prev, clean, inverted, neutral, fill, valueOnly, className, diffPercentOnly = false, }) => {
|
|
47
|
+
export const StatCard = ({ title, description, value, percent, money, rate, prev, clean, inverted, neutral, fill, valueOnly, className, diffPercentOnly = false, }) => {
|
|
74
48
|
const format = money ? 'money' : percent ? 'percent' : rate ? 'rate' : 'number';
|
|
75
|
-
const val = value === undefined ? '\u00A0' :
|
|
76
|
-
const eyebrow = (
|
|
77
|
-
return ((
|
|
49
|
+
const val = value === undefined ? '\u00A0' : formatValue(value, format);
|
|
50
|
+
const eyebrow = _jsx(Eyebrow, Object.assign({ className: classNames(Styles.title, 'ta-center') }, { children: title }));
|
|
51
|
+
return (_jsxs(Stack, Object.assign({ direction: "column", alignItems: "center", className: classNames('p-y-3', {
|
|
78
52
|
'bg-white border-radius-2 border': !clean,
|
|
79
53
|
'flex-grow-1 flex-basis-0': fill,
|
|
80
|
-
}, className) }, { children: [description ? (
|
|
54
|
+
}, className) }, { children: [description ? _jsx(Tooltip, Object.assign({ text: description }, { children: eyebrow })) : eyebrow, _jsx(BodyText, Object.assign({ className: "fs-6-i ff-display" }, { children: val })), !valueOnly && (_jsx(StatDiff, { value: value, prev: prev, format: format, inverted: inverted, neutral: neutral, diffPercentOnly: diffPercentOnly }))] })));
|
|
81
55
|
};
|
|
82
|
-
exports.StatCard = StatCard;
|
|
83
56
|
//# sourceMappingURL=stat-card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat-card.js","sourceRoot":"","sources":["../../../src/components/stat/stat-card.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stat-card.js","sourceRoot":"","sources":["../../../src/components/stat/stat-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const stat_card_1 = require("./stat-card");
|
|
6
|
-
exports.default = {
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { StatCard } from './stat-card';
|
|
3
|
+
export default {
|
|
7
4
|
title: 'Marketing UI/stat/StatCard',
|
|
8
|
-
component:
|
|
5
|
+
component: StatCard,
|
|
9
6
|
parameters: {},
|
|
10
7
|
};
|
|
11
|
-
const w = (cb) => () => (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
const w = (cb) => () => _jsx("div", Object.assign({ style: { width: '400px' } }, { children: cb() }));
|
|
9
|
+
export const statCardNumber = w(() => _jsx(StatCard, { title: "number", value: 133, prev: 1000 }));
|
|
10
|
+
export const statDiffNumberPercentOnly = w(() => (_jsx(StatCard, { title: "number", value: 133, prev: 1000, diffPercentOnly: true })));
|
|
11
|
+
export const statCardMoney = w(() => _jsx(StatCard, { title: "money", value: 10000, prev: 11000, money: true }));
|
|
12
|
+
export const statCardPercentInverted = w(() => (_jsx(StatCard, { title: "percent", value: 0.27, prev: 0.27333, percent: true, inverted: true })));
|
|
13
|
+
export const statCardRate = w(() => _jsx(StatCard, { title: "rate", value: 5.5, prev: 4.5, rate: true }));
|
|
17
14
|
//# sourceMappingURL=stat-cards.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat-cards.stories.js","sourceRoot":"","sources":["../../../src/components/stat/stat-cards.stories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stat-cards.stories.js","sourceRoot":"","sources":["../../../src/components/stat/stat-cards.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,eAAe;IACX,KAAK,EAAE,4BAA4B;IACnC,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,CAAC,GAAG,CAAC,EAAsB,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,4BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAG,EAAE,EAAE,IAAO,CAAC;AAEzF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC;AAC3F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAC7C,KAAC,QAAQ,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,SAAG,CACtE,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,SAAG,CAAC,CAAC;AAClG,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAC3C,KAAC,QAAQ,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,QAAC,QAAQ,SAAG,CAC5E,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,SAAG,CAAC,CAAC"}
|
|
@@ -1,39 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
-
};
|
|
24
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.StatExtendedCard = void 0;
|
|
26
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
27
|
-
const classnames_1 = __importDefault(require("classnames"));
|
|
28
|
-
const design_system_1 = require("@servicetitan/design-system");
|
|
29
|
-
const formatters_1 = require("../../utils/formatters");
|
|
30
|
-
const stat_card_1 = require("./stat-card");
|
|
31
|
-
const Styles = __importStar(require("./stat-card.module.less"));
|
|
32
|
-
const StatExtendedCard = ({ title, title2, description, value, goal, prev, percent, money, rate, inverted, neutral, fill, className, }) => {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { BodyText, Icon, Headline, Eyebrow, Stack, Tooltip } from '@servicetitan/design-system';
|
|
4
|
+
import { formatValue } from '../../utils/formatters';
|
|
5
|
+
import { StatDiff } from './stat-card';
|
|
6
|
+
import * as Styles from './stat-card.module.less';
|
|
7
|
+
export const StatExtendedCard = ({ title, title2, description, value, goal, prev, percent, money, rate, inverted, neutral, fill, className, }) => {
|
|
33
8
|
const format = money ? 'money' : percent ? 'percent' : rate ? 'rate' : 'number';
|
|
34
|
-
return ((
|
|
9
|
+
return (_jsxs("div", Object.assign({ className: classNames('p-3 bg-white border border-radius-2', {
|
|
35
10
|
'flex-grow-1 flex-basis-0': fill,
|
|
36
|
-
}, className) }, { children: [(
|
|
11
|
+
}, className) }, { children: [_jsxs(Stack, { children: [_jsx(Headline, Object.assign({ size: "small" }, { children: title })), !!description && (_jsx(Tooltip, Object.assign({ text: description }, { children: _jsx(Icon, { name: "info", size: 18, className: "c-neutral-80 m-l-half" }) })))] }), _jsx(Eyebrow, Object.assign({ size: "small", className: "m-t-2 c-black" }, { children: title2 })), _jsx(Stack, Object.assign({ justifyContent: "space-between", className: "m-t-half" }, { children: _jsxs(Stack, Object.assign({ alignItems: "flex-end", className: "flex-grow-1 flex-basis-0" }, { children: [_jsx(Headline, Object.assign({ className: "m-b-0-i m-r-half fw-normal-i", size: "xlarge" }, { children: formatValue(value, format) })), goal !== undefined ? (_jsxs(BodyText, Object.assign({ subdued: true }, { children: ["/ ", formatValue(goal, format), " (Goal)"] }))) : prev !== undefined ? (_jsx(StatDiff, { value: value, prev: prev, format: format, inverted: inverted, neutral: neutral, className: classNames(Styles.statExtendedDiff, 'm-l-1') })) : undefined] })) }))] })));
|
|
37
12
|
};
|
|
38
|
-
exports.StatExtendedCard = StatExtendedCard;
|
|
39
13
|
//# sourceMappingURL=stat-extended-card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat-extended-card.js","sourceRoot":"","sources":["../../../src/components/stat/stat-extended-card.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stat-extended-card.js","sourceRoot":"","sources":["../../../src/components/stat/stat-extended-card.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAiBlD,MAAM,CAAC,MAAM,gBAAgB,GAA8B,CAAC,EACxD,KAAK,EACL,MAAM,EACN,WAAW,EACX,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,SAAS,GACZ,EAAE,EAAE;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEhF,OAAO,CACH,6BACI,SAAS,EAAE,UAAU,CACjB,qCAAqC,EACrC;YACI,0BAA0B,EAAE,IAAI;SACnC,EACD,SAAS,CACZ,iBAED,MAAC,KAAK,eACF,KAAC,QAAQ,kBAAC,IAAI,EAAC,OAAO,gBAAE,KAAK,IAAY,EACxC,CAAC,CAAC,WAAW,IAAI,CACd,KAAC,OAAO,kBAAC,IAAI,EAAE,WAAW,gBACtB,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,uBAAuB,GAAG,IAC1D,CACb,IACG,EACR,KAAC,OAAO,kBAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,eAAe,gBAC1C,MAAM,IACD,EAEV,KAAC,KAAK,kBAAC,cAAc,EAAC,eAAe,EAAC,SAAS,EAAC,UAAU,gBACtD,MAAC,KAAK,kBAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,0BAA0B,iBAC7D,KAAC,QAAQ,kBAAC,SAAS,EAAC,8BAA8B,EAAC,IAAI,EAAC,QAAQ,gBAC3D,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,IACpB,EACV,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAClB,MAAC,QAAQ,kBAAC,OAAO,6BAAI,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAmB,CACpE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CACrB,KAAC,QAAQ,IACL,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,GACzD,CACL,CAAC,CAAC,CAAC,SAAS,KACT,IACJ,KACN,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const stat_extended_card_1 = require("./stat-extended-card");
|
|
6
|
-
exports.default = {
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { StatExtendedCard } from './stat-extended-card';
|
|
3
|
+
export default {
|
|
7
4
|
title: 'Marketing UI/stat/StatExtendedCard',
|
|
8
|
-
component:
|
|
5
|
+
component: StatExtendedCard,
|
|
9
6
|
parameters: {},
|
|
10
7
|
};
|
|
11
|
-
const w = (cb) => () => (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
const w = (cb) => () => _jsx("div", Object.assign({ style: { width: '400px' } }, { children: cb() }));
|
|
9
|
+
export const statCardMoneyWithPrev = w(() => (_jsx(StatExtendedCard, { title: "number", title2: "total number", description: "hint for stat", value: 800, prev: 1000, money: true, fill: true })));
|
|
10
|
+
export const statCardMoneyWithGoal = w(() => (_jsx(StatExtendedCard, { title: "money", title2: "total money", value: 10000, goal: 18000, money: true, fill: true })));
|
|
11
|
+
export const statCardPercentWithPrev = w(() => (_jsx(StatExtendedCard, { title: "percent", title2: "total percent", value: 0.27, prev: 0.33, percent: true, fill: true })));
|
|
15
12
|
//# sourceMappingURL=stat-extended-card.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat-extended-card.stories.js","sourceRoot":"","sources":["../../../src/components/stat/stat-extended-card.stories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stat-extended-card.stories.js","sourceRoot":"","sources":["../../../src/components/stat/stat-extended-card.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAe;IACX,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,CAAC,GAAG,CAAC,EAAsB,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,4BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAG,EAAE,EAAE,IAAO,CAAC;AAEzF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CACzC,KAAC,gBAAgB,IACb,KAAK,EAAC,QAAQ,EACd,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,eAAe,EAC3B,KAAK,EAAE,GAAG,EACV,IAAI,EAAE,IAAI,EACV,KAAK,QACL,IAAI,SACN,CACL,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CACzC,KAAC,gBAAgB,IAAC,KAAK,EAAC,OAAO,EAAC,MAAM,EAAC,aAAa,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,QAAC,IAAI,SAAG,CAChG,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAC3C,KAAC,gBAAgB,IACb,KAAK,EAAC,SAAS,EACf,MAAM,EAAC,eAAe,EACtB,KAAK,EAAE,IAAI,EACX,IAAI,EAAE,IAAI,EACV,OAAO,QACP,IAAI,SACN,CACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactNode, FC } from 'react';
|
|
2
|
+
import { IconNameType } from '@servicetitan/design-system';
|
|
3
|
+
export interface ActionButtonProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
iconName?: IconNameType;
|
|
6
|
+
hover?: 'primary' | 'negative' | 'none';
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
tooltip?: string;
|
|
9
|
+
qaPrefix?: string;
|
|
10
|
+
active?: boolean;
|
|
11
|
+
onClick?(): void;
|
|
12
|
+
}
|
|
13
|
+
export declare const ActionButton: FC<ActionButtonProps>;
|
|
14
|
+
//# sourceMappingURL=action-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-button.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/action-button/action-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,EAAE,EAAU,MAAM,OAAO,CAAC;AAE9C,OAAO,EAGH,YAAY,EAGf,MAAM,6BAA6B,CAAC;AAGrC,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,IAAI,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CA2D9C,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
import classnames from 'classnames';
|
|
4
|
+
import { Icon, BodyText, Tooltip, useFocusVisible, } from '@servicetitan/design-system';
|
|
5
|
+
import * as Styles from './action-button.module.less';
|
|
6
|
+
export const ActionButton = ({ onClick, disabled, children, iconName, hover, qaPrefix, active, tooltip, }) => {
|
|
7
|
+
const buttonRef = useRef(null);
|
|
8
|
+
const { isFocusVisible, focusFunction, blurFunction } = useFocusVisible(buttonRef);
|
|
9
|
+
const handleClick = () => {
|
|
10
|
+
if (disabled) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (onClick) {
|
|
14
|
+
onClick();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const getButton = () => {
|
|
18
|
+
const classes = classnames(Styles.actionButton, qaPrefix, {
|
|
19
|
+
[Styles.primary]: hover === 'primary' && !disabled,
|
|
20
|
+
[Styles.negative]: hover === 'negative' && !disabled,
|
|
21
|
+
[Styles.active]: active && !disabled,
|
|
22
|
+
[Styles.disabled]: disabled,
|
|
23
|
+
[Styles.focusVisible]: isFocusVisible,
|
|
24
|
+
});
|
|
25
|
+
return (_jsxs("button", Object.assign({ type: "button", ref: buttonRef, className: classes, onClick: handleClick, disabled: disabled, onFocus: focusFunction, onBlur: blurFunction }, { children: [iconName && _jsx(Icon, { name: iconName, size: "20px", className: "m-r-1" }), _jsx(BodyText, Object.assign({ className: classnames(Styles.text, `${qaPrefix}-text`) }, { children: children }))] })));
|
|
26
|
+
};
|
|
27
|
+
if (!tooltip) {
|
|
28
|
+
return getButton();
|
|
29
|
+
}
|
|
30
|
+
return (_jsx(Tooltip, Object.assign({ text: tooltip, direction: "l", el: "div", className: `${qaPrefix}-tooltip` }, { children: getButton() })));
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=action-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-button.js","sourceRoot":"","sources":["../../../../src/components/ui/action-button/action-button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EACH,IAAI,EACJ,QAAQ,EAER,OAAO,EACP,eAAe,GAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AAatD,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,EAChD,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,GACV,EAAE,EAAE;IACD,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAEnF,MAAM,WAAW,GAAG,GAAG,EAAE;QACrB,IAAI,QAAQ,EAAE;YACV,OAAO;SACV;QAED,IAAI,OAAO,EAAE;YACT,OAAO,EAAE,CAAC;SACb;IACL,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE;YACtD,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ;YAClD,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,UAAU,IAAI,CAAC,QAAQ;YACpD,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,QAAQ;YACpC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;YAC3B,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,cAAc;SACxC,CAAC,CAAC;QAEH,OAAO,CACH,gCACI,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,YAAY,iBAEnB,QAAQ,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,OAAO,GAAG,EACnE,KAAC,QAAQ,kBAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,QAAQ,OAAO,CAAC,gBAC3D,QAAQ,IACF,KACN,CACZ,CAAC;IACN,CAAC,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE;QACV,OAAO,SAAS,EAAE,CAAC;KACtB;IAED,OAAO,CACH,KAAC,OAAO,kBAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAC,GAAG,EAAC,EAAE,EAAC,KAAK,EAAC,SAAS,EAAE,GAAG,QAAQ,UAAU,gBAC1E,SAAS,EAAE,IACN,CACb,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
@import (reference) '@servicetitan/tokens/dist/tokens.less';
|
|
2
|
+
|
|
3
|
+
.action-button {
|
|
4
|
+
color: @color-neutral-80;
|
|
5
|
+
padding: @spacing-half @spacing-2;
|
|
6
|
+
box-sizing: border-box;
|
|
7
|
+
border: none;
|
|
8
|
+
background-color: transparent;
|
|
9
|
+
width: 100%;
|
|
10
|
+
display: flex;
|
|
11
|
+
align-items: center;
|
|
12
|
+
|
|
13
|
+
&.active {
|
|
14
|
+
background-color: @color-neutral-60;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&.disabled {
|
|
18
|
+
cursor: default;
|
|
19
|
+
color: @color-blue-grey-400;
|
|
20
|
+
|
|
21
|
+
.text {
|
|
22
|
+
color: @color-blue-grey-400;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&.primary,
|
|
27
|
+
&.negative {
|
|
28
|
+
&:focus {
|
|
29
|
+
outline: none;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&:hover,
|
|
33
|
+
&.focus-visible:focus {
|
|
34
|
+
color: @color-white;
|
|
35
|
+
|
|
36
|
+
.text {
|
|
37
|
+
color: @color-white;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&.primary:hover,
|
|
43
|
+
&.primary.focus-visible:focus {
|
|
44
|
+
background-color: @color-blue-400;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&.negative:hover,
|
|
48
|
+
&.negative.focus-visible:focus {
|
|
49
|
+
background-color: @color-red-400;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare const _default: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: import("react").FC<import("./action-button").ActionButtonProps>;
|
|
5
|
+
parameters: {};
|
|
6
|
+
};
|
|
7
|
+
export default _default;
|
|
8
|
+
export declare const actionButtonHoverPrimary: () => JSX.Element;
|
|
9
|
+
export declare const actionButtonHoverNegative: () => JSX.Element;
|
|
10
|
+
//# sourceMappingURL=action-button.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-button.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/action-button/action-button.stories.tsx"],"names":[],"mappings":";;;;;;AAGA,wBAIE;AAKF,eAAO,MAAM,wBAAwB,mBAEnC,CAAC;AAEH,eAAO,MAAM,yBAAyB,mBAEpC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ActionButton } from './action-button';
|
|
3
|
+
export default {
|
|
4
|
+
title: 'Marketing UI/ui/ActionButton',
|
|
5
|
+
component: ActionButton,
|
|
6
|
+
parameters: {},
|
|
7
|
+
};
|
|
8
|
+
const w = (style, cb) => () => _jsx("div", Object.assign({ style: style }, { children: cb() }));
|
|
9
|
+
export const actionButtonHoverPrimary = w({}, () => (_jsx(ActionButton, Object.assign({ hover: "primary" }, { children: "Button" }))));
|
|
10
|
+
export const actionButtonHoverNegative = w({}, () => (_jsx(ActionButton, Object.assign({ hover: "negative" }, { children: "Button" }))));
|
|
11
|
+
//# sourceMappingURL=action-button.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-button.stories.js","sourceRoot":"","sources":["../../../../src/components/ui/action-button/action-button.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,eAAe;IACX,KAAK,EAAE,8BAA8B;IACrC,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,CAAC,GAAG,CAAC,KAA0C,EAAE,EAAsB,EAAE,EAAE,CAAC,GAAG,EAAE,CACnF,4BAAK,KAAK,EAAE,KAAK,gBAAG,EAAE,EAAE,IAAO,CAAC;AAEpC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAChD,KAAC,YAAY,kBAAC,KAAK,EAAC,SAAS,4BAAsB,CACtD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CACjD,KAAC,YAAY,kBAAC,KAAK,EAAC,UAAU,4BAAsB,CACvD,CAAC,CAAC"}
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import classnames from 'classnames';
|
|
3
|
+
import { BodyText, Stack, Spinner } from '@servicetitan/design-system';
|
|
4
|
+
export const CenteredSpinner = ({ size, className, info }) => {
|
|
5
|
+
return (_jsxs(Stack, Object.assign({ justifyContent: "center", alignItems: "center", direction: "column", className: classnames(className, 'h-100 w-100') }, { children: [_jsx(Spinner, { className: "of-hidden", size: size }), !!info && (_jsx(BodyText, Object.assign({ size: "small", className: "m-t-1", subdued: true }, { children: info })))] })));
|
|
4
6
|
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CenteredSpinner = void 0;
|
|
7
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
const classnames_1 = __importDefault(require("classnames"));
|
|
9
|
-
const design_system_1 = require("@servicetitan/design-system");
|
|
10
|
-
const CenteredSpinner = ({ size, className, info }) => {
|
|
11
|
-
return ((0, jsx_runtime_1.jsxs)(design_system_1.Stack, Object.assign({ justifyContent: "center", alignItems: "center", direction: "column", className: (0, classnames_1.default)(className, 'h-100 w-100') }, { children: [(0, jsx_runtime_1.jsx)(design_system_1.Spinner, { className: "of-hidden", size: size }, void 0), !!info && ((0, jsx_runtime_1.jsx)(design_system_1.BodyText, Object.assign({ size: "small", className: "m-t-1", subdued: true }, { children: info }), void 0))] }), void 0));
|
|
12
|
-
};
|
|
13
|
-
exports.CenteredSpinner = CenteredSpinner;
|
|
14
7
|
//# sourceMappingURL=centered-spinner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"centered-spinner.js","sourceRoot":"","sources":["../../../src/components/ui/centered-spinner.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"centered-spinner.js","sourceRoot":"","sources":["../../../src/components/ui/centered-spinner.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AASvE,MAAM,CAAC,MAAM,eAAe,GAAmC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;IACzF,OAAO,CACH,MAAC,KAAK,kBACF,cAAc,EAAC,QAAQ,EACvB,UAAU,EAAC,QAAQ,EACnB,SAAS,EAAC,QAAQ,EAClB,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,aAAa,CAAC,iBAE/C,KAAC,OAAO,IAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAE,IAAI,GAAI,EAC5C,CAAC,CAAC,IAAI,IAAI,CACP,KAAC,QAAQ,kBAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAC,OAAO,sBAC3C,IAAI,IACE,CACd,KACG,CACX,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const centered_spinner_1 = require("./centered-spinner");
|
|
6
|
-
exports.default = {
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CenteredSpinner } from './centered-spinner';
|
|
3
|
+
export default {
|
|
7
4
|
title: 'Marketing UI/ui/CenteredSpinner',
|
|
8
|
-
component:
|
|
5
|
+
component: CenteredSpinner,
|
|
9
6
|
parameters: {},
|
|
10
7
|
};
|
|
11
|
-
const w = (style, cb) => () => (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
const w = (style, cb) => () => _jsx("div", Object.assign({ style: style }, { children: cb() }));
|
|
9
|
+
export const centeredSpinnerTiny = w({}, () => _jsx(CenteredSpinner, { size: "tiny" }));
|
|
10
|
+
export const centeredSpinner = w({ width: '400px', height: '400px' }, () => _jsx(CenteredSpinner, {}));
|
|
11
|
+
export const centeredSpinnerTitled = w({ width: '400px', height: '400px' }, () => (_jsx(CenteredSpinner, { info: "Wait for data fetch" })));
|
|
15
12
|
//# sourceMappingURL=centered-spinner.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"centered-spinner.stories.js","sourceRoot":"","sources":["../../../src/components/ui/centered-spinner.stories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"centered-spinner.stories.js","sourceRoot":"","sources":["../../../src/components/ui/centered-spinner.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAe;IACX,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,CAAC,GAAG,CAAC,KAA0C,EAAE,EAAsB,EAAE,EAAE,CAAC,GAAG,EAAE,CACnF,4BAAK,KAAK,EAAE,KAAK,gBAAG,EAAE,EAAE,IAAO,CAAC;AAEpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAC,eAAe,IAAC,IAAI,EAAC,MAAM,GAAG,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,KAAC,eAAe,KAAG,CAAC,CAAC;AACjG,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAC9E,KAAC,eAAe,IAAC,IAAI,EAAC,qBAAqB,GAAG,CACjD,CAAC,CAAC"}
|