@ceed/cds 0.0.126 → 0.0.128

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 (100) hide show
  1. package/dist/index.js +1 -6
  2. package/package.json +2 -3
  3. package/dist/components/Accordions/Accordions.js +0 -66
  4. package/dist/components/Accordions/index.js +0 -3
  5. package/dist/components/Autocomplete/Autocomplete.js +0 -251
  6. package/dist/components/Autocomplete/index.js +0 -3
  7. package/dist/components/Box/Box.js +0 -6
  8. package/dist/components/Box/index.js +0 -3
  9. package/dist/components/Breadcrumbs/Breadcrumbs.js +0 -67
  10. package/dist/components/Breadcrumbs/index.js +0 -3
  11. package/dist/components/Button/Button.js +0 -28
  12. package/dist/components/Button/index.js +0 -3
  13. package/dist/components/Calendar/Calendar.js +0 -383
  14. package/dist/components/Calendar/hooks/use-calendar-props.js +0 -80
  15. package/dist/components/Calendar/hooks/use-calendar.js +0 -244
  16. package/dist/components/Calendar/index.js +0 -3
  17. package/dist/components/Calendar/types.js +0 -1
  18. package/dist/components/Calendar/utils/index.js +0 -72
  19. package/dist/components/Card/Card.js +0 -22
  20. package/dist/components/Card/index.js +0 -3
  21. package/dist/components/Checkbox/Checkbox.js +0 -28
  22. package/dist/components/Checkbox/index.js +0 -3
  23. package/dist/components/Chip/Chip.js +0 -6
  24. package/dist/components/Chip/index.js +0 -3
  25. package/dist/components/Container/Container.js +0 -65
  26. package/dist/components/Container/index.js +0 -3
  27. package/dist/components/CurrencyInput/CurrencyInput.js +0 -108
  28. package/dist/components/CurrencyInput/hooks/use-currency-setting.js +0 -165
  29. package/dist/components/CurrencyInput/index.js +0 -3
  30. package/dist/components/DataTable/DataTable.js +0 -437
  31. package/dist/components/DataTable/index.js +0 -3
  32. package/dist/components/DataTable/types.js +0 -1
  33. package/dist/components/DatePicker/DatePicker.js +0 -207
  34. package/dist/components/DatePicker/index.js +0 -3
  35. package/dist/components/DateRangePicker/DateRangePicker.js +0 -209
  36. package/dist/components/DateRangePicker/index.js +0 -3
  37. package/dist/components/DialogActions/DialogActions.js +0 -15
  38. package/dist/components/DialogActions/index.js +0 -3
  39. package/dist/components/DialogContent/DialogContent.js +0 -12
  40. package/dist/components/DialogContent/index.js +0 -3
  41. package/dist/components/DialogFrame/DialogFrame.js +0 -51
  42. package/dist/components/DialogFrame/index.js +0 -3
  43. package/dist/components/DialogTitle/DialogTitle.js +0 -12
  44. package/dist/components/DialogTitle/index.js +0 -3
  45. package/dist/components/Divider/Divider.js +0 -28
  46. package/dist/components/Divider/index.js +0 -3
  47. package/dist/components/Dropdown/Dropdown.js +0 -6
  48. package/dist/components/Dropdown/index.js +0 -3
  49. package/dist/components/FormControl/FormControl.js +0 -17
  50. package/dist/components/FormControl/index.js +0 -3
  51. package/dist/components/FormHelperText/FormHelperText.js +0 -6
  52. package/dist/components/FormHelperText/index.js +0 -3
  53. package/dist/components/FormLabel/FormLabel.js +0 -6
  54. package/dist/components/FormLabel/index.js +0 -3
  55. package/dist/components/Grid/Grid.js +0 -6
  56. package/dist/components/Grid/index.js +0 -3
  57. package/dist/components/IconButton/IconButton.js +0 -28
  58. package/dist/components/IconButton/index.js +0 -3
  59. package/dist/components/Input/Input.js +0 -51
  60. package/dist/components/Input/index.js +0 -3
  61. package/dist/components/InsetDrawer/InsetDrawer.js +0 -45
  62. package/dist/components/InsetDrawer/index.js +0 -3
  63. package/dist/components/Markdown/Markdown.js +0 -59
  64. package/dist/components/Markdown/index.js +0 -3
  65. package/dist/components/Menu/Menu.js +0 -56
  66. package/dist/components/Menu/index.js +0 -3
  67. package/dist/components/Modal/Modal.js +0 -63
  68. package/dist/components/Modal/index.js +0 -3
  69. package/dist/components/MonthPicker/MonthPicker.js +0 -203
  70. package/dist/components/MonthPicker/index.js +0 -3
  71. package/dist/components/MonthRangePicker/MonthRangePicker.js +0 -207
  72. package/dist/components/MonthRangePicker/index.js +0 -3
  73. package/dist/components/Radio/Radio.js +0 -10
  74. package/dist/components/Radio/index.js +0 -3
  75. package/dist/components/RadioList/RadioList.js +0 -38
  76. package/dist/components/RadioList/index.js +0 -3
  77. package/dist/components/Select/Select.js +0 -76
  78. package/dist/components/Select/index.js +0 -3
  79. package/dist/components/Sheet/Sheet.js +0 -6
  80. package/dist/components/Sheet/index.js +0 -3
  81. package/dist/components/Stack/Stack.js +0 -6
  82. package/dist/components/Stack/index.js +0 -3
  83. package/dist/components/Switch/Switch.js +0 -54
  84. package/dist/components/Switch/index.js +0 -3
  85. package/dist/components/Table/Table.js +0 -89
  86. package/dist/components/Table/index.js +0 -3
  87. package/dist/components/Tabs/Tabs.js +0 -18
  88. package/dist/components/Tabs/index.js +0 -3
  89. package/dist/components/Textarea/Textarea.js +0 -50
  90. package/dist/components/Textarea/index.js +0 -3
  91. package/dist/components/ThemeProvider/ThemeProvider.js +0 -159
  92. package/dist/components/ThemeProvider/index.js +0 -3
  93. package/dist/components/Tooltip/Tooltip.js +0 -28
  94. package/dist/components/Tooltip/index.js +0 -3
  95. package/dist/components/Typography/Typography.js +0 -28
  96. package/dist/components/Typography/index.js +0 -3
  97. package/dist/components/Uploader/Uploader.js +0 -353
  98. package/dist/components/Uploader/index.js +0 -3
  99. package/dist/components/index.js +0 -44
  100. package/dist/index.mjs +0 -1
@@ -1,159 +0,0 @@
1
- import React from "react";
2
- import { CssBaseline, CssVarsProvider, checkboxClasses, extendTheme, GlobalStyles, } from "@mui/joy";
3
- var colorScheme = {
4
- palette: {
5
- danger: {
6
- "50": "#FEF3F2",
7
- "100": "#FDE6E5",
8
- "200": "#FBC7C4",
9
- "300": "#F89E99",
10
- "400": "#F46E66",
11
- "500": "#DC0D00",
12
- "600": "#AB0F00",
13
- "700": "#791000",
14
- "800": "#430A0A",
15
- "900": "#240505",
16
- },
17
- neutral: {
18
- "50": "#FAFBFC",
19
- "100": "#F3F5F7",
20
- "200": "#EBECF0",
21
- "300": "#D1D5DB",
22
- "400": "#A2AAB8",
23
- "500": "#5E6C83",
24
- "600": "#505E79",
25
- "700": "#253858",
26
- "800": "#071B36",
27
- "900": "#0B0D0E",
28
- },
29
- primary: {
30
- "50": "#F2F7FE",
31
- "100": "#E8F0FD",
32
- "200": "#CCDFFC",
33
- "300": "#9DC1F9",
34
- "400": "#4D8EF3",
35
- "500": "#015DEE",
36
- "600": "#0154D6",
37
- "700": "#0141A7",
38
- "800": "#00255F",
39
- "900": "#000F26",
40
- },
41
- warning: {
42
- "50": "#FEF8F2",
43
- "100": "#FEF1E5",
44
- "200": "#FCE1C4",
45
- "300": "#FABD7F",
46
- "400": "#F57C00",
47
- "500": "#AF5100",
48
- "600": "#843600",
49
- "700": "#672600",
50
- "800": "#421400",
51
- "900": "#1d1002",
52
- },
53
- },
54
- };
55
- var defaultTheme = extendTheme({
56
- cssVarPrefix: "ceed",
57
- spacing: 4,
58
- breakpoints: {
59
- values: {
60
- xs: 0,
61
- sm: 360,
62
- md: 600,
63
- lg: 900,
64
- xl: 1280,
65
- },
66
- },
67
- fontFamily: {
68
- display: '"Poppins", var(--ceed-fontFamily-fallback, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol")',
69
- },
70
- typography: {
71
- "marketing-lg": {
72
- color: "var(--ceed-palette-text-primary, var(--ceed-palette-neutral-800, #171A1C))",
73
- fontFamily: 'var(--ceed-fontFamily-display, "Poppins", var(--ceed-fontFamily-fallback, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"))',
74
- fontSize: "var(--ceed-fontSize-marketing-lg, 2.625rem)",
75
- fontWeight: "var(--ceed-fontWeight-lg, 600)",
76
- letterSpacing: "-0.025em",
77
- lineHeight: "var(--ceed-lineHeight-xs, 1.33334)",
78
- },
79
- },
80
- colorSchemes: {
81
- light: colorScheme,
82
- dark: colorScheme,
83
- },
84
- components: {
85
- JoyTypography: {
86
- defaultProps: {
87
- levelMapping: {
88
- "marketing-lg": "div",
89
- },
90
- },
91
- },
92
- JoyTable: {
93
- defaultProps: {
94
- size: "sm",
95
- borderAxis: "bothBetween",
96
- },
97
- styleOverrides: {
98
- root: function (_a) {
99
- var _b;
100
- var theme = _a.theme;
101
- return (_b = {
102
- "--TableRow-stripeBackground": theme.palette.background.level1,
103
- "--TableCell-selectedBackground": theme.palette.background.level2,
104
- "--TableRow-hoverBackground": theme.palette.background.level3,
105
- "& tbody tr[aria-checked=false] th": {
106
- "--TableCell-headBackground": "transparent",
107
- },
108
- "& tbody tr[aria-checked=true]:hover th": {
109
- "--TableCell-headBackground": "var(--TableRow-hoverBackground)",
110
- }
111
- },
112
- _b["& tbody tr[aria-checked=true]:not(:hover) th"] = {
113
- "--TableCell-headBackground": "var(--TableCell-selectedBackground)",
114
- },
115
- _b["& tbody tr[aria-checked=true]:not(:hover) td"] = {
116
- "--TableCell-dataBackground": "var(--TableCell-selectedBackground)",
117
- },
118
- _b["& .".concat(checkboxClasses.root)] = {
119
- verticalAlign: "middle",
120
- },
121
- _b);
122
- },
123
- },
124
- },
125
- JoyTooltip: {
126
- defaultProps: {
127
- size: "sm",
128
- placement: "top",
129
- },
130
- },
131
- },
132
- });
133
- function ThemeProvider(props) {
134
- var _a;
135
- return (React.createElement(React.Fragment, null,
136
- React.createElement(CssVarsProvider, { theme: defaultTheme },
137
- React.createElement(CssBaseline, null),
138
- React.createElement(GlobalStyles, { styles: {
139
- body: (_a = {
140
- "--ceed-fontSize-marketing-lg": "2.625rem"
141
- },
142
- _a[defaultTheme.breakpoints.down("md")] = {
143
- "--ceed-fontSize-xs": "calc(".concat(defaultTheme.fontSize.xs, " * 0.875)"),
144
- "--ceed-fontSize-sm": "calc(".concat(defaultTheme.fontSize.sm, " * 0.875)"),
145
- "--ceed-fontSize-md": "calc(".concat(defaultTheme.fontSize.md, " * 0.875)"),
146
- "--ceed-fontSize-lg": "calc(".concat(defaultTheme.fontSize.lg, " * 0.875)"),
147
- "--ceed-fontSize-xl": "calc(".concat(defaultTheme.fontSize.xl, " * 0.875)"),
148
- "--ceed-fontSize-xl2": "calc(".concat(defaultTheme.fontSize.xl2, " * 0.875)"),
149
- "--ceed-fontSize-xl3": "calc(".concat(defaultTheme.fontSize.xl3, " * 0.875)"),
150
- "--ceed-fontSize-xl4": "calc(".concat(defaultTheme.fontSize.xl4, " * 0.875)"),
151
- // Only typography fontSize
152
- "--ceed-fontSize-marketing-lg": "calc(2.625rem * 0.875)",
153
- },
154
- _a),
155
- } }),
156
- props.children)));
157
- }
158
- export { ThemeProvider };
159
- ThemeProvider.displayName = "ThemeProvider";
@@ -1,3 +0,0 @@
1
- import { ThemeProvider } from "./ThemeProvider";
2
- export * from "./ThemeProvider";
3
- export default ThemeProvider;
@@ -1,28 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import React from "react";
13
- import { Tooltip as JoyTooltip } from "@mui/joy";
14
- import { motion } from "framer-motion";
15
- var MotionTooltip = motion(JoyTooltip);
16
- var Tooltip = function (props) {
17
- // prop destruction
18
- // lib hooks
19
- // state, ref, querystring hooks
20
- // form hooks
21
- // query hooks
22
- // calculated values
23
- // effects
24
- // handlers
25
- return React.createElement(MotionTooltip, __assign({}, props));
26
- };
27
- export { Tooltip };
28
- Tooltip.displayName = "Tooltip";
@@ -1,3 +0,0 @@
1
- import { Tooltip } from "./Tooltip";
2
- export * from "./Tooltip";
3
- export default Tooltip;
@@ -1,28 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import React from "react";
13
- import { Typography as JoyTypography } from "@mui/joy";
14
- import { motion } from "framer-motion";
15
- var MotionTypography = motion(JoyTypography);
16
- var Typography = function (props) {
17
- // prop destruction
18
- // lib hooks
19
- // state, ref, querystring hooks
20
- // form hooks
21
- // query hooks
22
- // calculated values
23
- // effects
24
- // handlers
25
- return React.createElement(MotionTypography, __assign({}, props));
26
- };
27
- export { Typography };
28
- Typography.displayName = "Typography";
@@ -1,3 +0,0 @@
1
- import { Typography } from "./Typography";
2
- export * from "./Typography";
3
- export default Typography;
@@ -1,353 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
38
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
39
- if (ar || !(i in from)) {
40
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
41
- ar[i] = from[i];
42
- }
43
- }
44
- return to.concat(ar || Array.prototype.slice.call(from));
45
- };
46
- import React, { useCallback, useEffect, useMemo, useRef, useState, } from "react";
47
- import { styled } from "@mui/joy";
48
- // @ts-ignore: ESM import 해야만 프레이머에서 정상적으로 동작한다. https://github.com/mui/material-ui/issues/35233
49
- import MuiFileUploadIcon from "@mui/icons-material/esm/CloudUploadRounded.js";
50
- // @ts-ignore: ESM import 해야만 프레이머에서 정상적으로 동작한다. https://github.com/mui/material-ui/issues/35233
51
- import MuiUploadFileIcon from "@mui/icons-material/esm/UploadFileRounded.js";
52
- // @ts-ignore: ESM import 해야만 프레이머에서 정상적으로 동작한다. https://github.com/mui/material-ui/issues/35233
53
- import MuiClearIcon from "@mui/icons-material/esm/ClearRounded.js";
54
- // @ts-ignore: build된 pragmatic-drag-and-drop의 esm file에 extension이 없어서 에러가 발생함. 따라서 빌드된 js파일을 direct로 import한다.
55
- import { combine } from "@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/combine.js";
56
- import { dropTargetForExternal, monitorForExternal,
57
- // @ts-ignore: build된 pragmatic-drag-and-drop의 esm file에 extension이 없어서 에러가 발생함. 따라서 빌드된 js파일을 direct로 import한다.
58
- } from "@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/external/adapter.js";
59
- import { containsFiles, getFiles,
60
- // @ts-ignore: build된 pragmatic-drag-and-drop의 esm file에 extension이 없어서 에러가 발생함. 따라서 빌드된 js파일을 direct로 import한다.
61
- } from "@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/external/file.js";
62
- // @ts-ignore: build된 pragmatic-drag-and-drop의 esm file에 extension이 없어서 에러가 발생함. 따라서 빌드된 js파일을 direct로 import한다.
63
- import { preventUnhandled } from "@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js";
64
- import Typography from "../Typography";
65
- import { Card } from "../Card";
66
- import Stack from "../Stack";
67
- import IconButton from "../IconButton";
68
- import FormControl from "../FormControl";
69
- import FormHelperText from "../FormHelperText";
70
- import Sheet from "../Sheet";
71
- import FormLabel from "../FormLabel";
72
- var VisuallyHiddenInput = styled("input")({
73
- width: "1px",
74
- height: "1px",
75
- overflow: "hidden",
76
- whiteSpace: "nowrap",
77
- clip: "rect(0 0 0 0)",
78
- clipPath: "inset(50%)",
79
- position: "absolute",
80
- });
81
- var PreviewRoot = styled(Stack, {
82
- name: "Uploader",
83
- slot: "PreviewRoot",
84
- })({});
85
- var UploadCard = styled(Card, {
86
- name: "Uploader",
87
- slot: "UploadCard",
88
- })(function (_a) {
89
- var theme = _a.theme;
90
- return ({
91
- padding: theme.spacing(2.5),
92
- border: "1px solid ".concat(theme.palette.neutral.outlinedBorder),
93
- });
94
- });
95
- var UploadFileIcon = styled(MuiUploadFileIcon, {
96
- name: "Uploader",
97
- slot: "UploadFileIcon",
98
- })(function (_a) {
99
- var theme = _a.theme;
100
- return ({
101
- color: theme.palette.neutral["400"],
102
- width: "32px",
103
- height: "32px",
104
- });
105
- });
106
- var ClearIcon = styled(MuiClearIcon, {
107
- name: "Uploader",
108
- slot: "ClearIcon",
109
- })(function (_a) {
110
- var theme = _a.theme;
111
- return ({
112
- color: theme.palette.neutral.plainColor,
113
- width: "18px",
114
- height: "18px",
115
- });
116
- });
117
- var UNITS = [
118
- "byte",
119
- "kilobyte",
120
- "megabyte",
121
- "gigabyte",
122
- "terabyte",
123
- "petabyte",
124
- ];
125
- var getFileSize = function (n) {
126
- var i = n == 0 ? 0 : Math.floor(Math.log(n) / Math.log(1024));
127
- var value = n / Math.pow(1024, i);
128
- var unit = UNITS[i];
129
- return Intl.NumberFormat("en-us", {
130
- style: "unit",
131
- unit: unit,
132
- unitDisplay: "narrow",
133
- }).format(value);
134
- };
135
- var Preview = function (props) {
136
- // prop destruction
137
- var files = props.files, uploaded = props.uploaded, onDelete = props.onDelete;
138
- // lib hooks
139
- // state, ref, querystring hooks
140
- // form hooks
141
- // query hooks
142
- // calculated values
143
- // effects
144
- // handlers
145
- return (React.createElement(PreviewRoot, { gap: 1 }, __spreadArray(__spreadArray([], uploaded, true), files, true).map(function (file) { return (React.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" },
146
- React.createElement(Stack, { direction: "row", alignItems: "center", gap: 2 },
147
- React.createElement(UploadFileIcon, null),
148
- React.createElement(Stack, { flex: "1" },
149
- React.createElement(Typography, { level: "body-sm", textColor: "common.black" }, file.name),
150
- !!file.size && (React.createElement(Typography, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size)))),
151
- React.createElement(IconButton, { onClick: function () { return onDelete === null || onDelete === void 0 ? void 0 : onDelete(file); } },
152
- React.createElement(ClearIcon, null))))); })));
153
- };
154
- var UploaderRoot = styled(Stack, {
155
- name: "Uploader",
156
- slot: "root",
157
- })(function (_a) {
158
- var theme = _a.theme;
159
- return ({
160
- gap: theme.spacing(2),
161
- });
162
- });
163
- var FileDropZone = styled(Sheet, {
164
- name: "Uploader",
165
- slot: "dropZone",
166
- shouldForwardProp: function (prop) { return prop !== "error"; },
167
- })(function (_a) {
168
- var theme = _a.theme, state = _a.state, error = _a.error;
169
- return ({
170
- width: "100%",
171
- display: "flex",
172
- flexDirection: "column",
173
- justifyContent: "center",
174
- alignItems: "center",
175
- padding: theme.spacing(5),
176
- gap: theme.spacing(4),
177
- cursor: "pointer",
178
- backgroundColor: theme.palette.background.surface,
179
- border: error
180
- ? "1px solid ".concat(theme.palette.danger.outlinedBorder)
181
- : state === "idle"
182
- ? "1px solid ".concat(theme.palette.neutral.outlinedBorder)
183
- : "1px solid ".concat(theme.palette.primary.outlinedBorder),
184
- });
185
- });
186
- var UploaderIcon = styled(MuiFileUploadIcon, {
187
- name: "Uploader",
188
- slot: "iconContainer",
189
- shouldForwardProp: function (prop) { return prop !== "error"; },
190
- })(function (_a) {
191
- var theme = _a.theme, state = _a.state, error = _a.error;
192
- return ({
193
- color: error
194
- ? "rgba(".concat(theme.vars.palette.danger.mainChannel, " / 0.6)")
195
- : state === "over"
196
- ? "rgba(".concat(theme.palette.primary.mainChannel, " / 0.6)")
197
- : theme.palette.neutral.softActiveBg,
198
- width: "32px",
199
- height: "32px",
200
- });
201
- });
202
- var Uploader = React.memo(function (props) {
203
- // prop destruction
204
- var accept = props.accept, minCount = props.minCount, maxCount = props.maxCount, name = props.name, size = props.size, maxFileSize = props.maxFileSize, maxFileTotalSize = props.maxFileTotalSize, onChange = props.onChange, label = props.label, helperText = props.helperText, disabled = props.disabled, onDelete = props.onDelete;
205
- // lib hooks
206
- // state, ref, querystring hooks
207
- var dropZoneRef = useRef(null);
208
- var inputRef = useRef(null);
209
- var _a = useState(), errorText = _a[0], setErrorText = _a[1];
210
- var _b = useState([]), files = _b[0], setFiles = _b[1];
211
- var _c = useState(props.uploaded || []), uploaded = _c[0], setUploaded = _c[1];
212
- var _d = useState("idle"), previewState = _d[0], setPreviewState = _d[1];
213
- // form hooks
214
- // query hooks
215
- // calculated values
216
- var error = useMemo(function () { return !!errorText || props.error; }, [props.error, errorText]);
217
- var showDropZone = useMemo(function () {
218
- return !maxCount || (maxCount && __spreadArray(__spreadArray([], uploaded, true), files, true).length !== maxCount);
219
- }, [files, maxCount, uploaded]);
220
- var addFiles = useCallback(function (uploads) {
221
- try {
222
- var types = (accept === null || accept === void 0 ? void 0 : accept.split(",").map(function (type) { return type.trim().replace(".", "").replace("*", ".*"); })) ||
223
- [];
224
- var fileExtension_1 = new RegExp("\\b(".concat(types.join("|"), ")\\b"));
225
- // NOTE: for error text(ref. figma uploader guide)
226
- var lastAccept = types.pop();
227
- var acceptError_1 = "Please upload following file types: ".concat(types.join(", "), " and ").concat(lastAccept, ".");
228
- uploads.forEach(function (file) {
229
- var _a = file.name.split('.'), _ = _a[0], ext = _a[1];
230
- if (!fileExtension_1.test(file.type) && !fileExtension_1.test(ext)) {
231
- throw new Error(acceptError_1);
232
- }
233
- });
234
- if (maxFileSize) {
235
- uploads.forEach(function (file) {
236
- if (file.size > maxFileSize) {
237
- throw new Error("One or more files exceed the individual file size limit. File must be less than ".concat(getFileSize(maxFileSize), "."));
238
- }
239
- });
240
- }
241
- if (maxFileTotalSize) {
242
- var totalFileSize = __spreadArray(__spreadArray([], files, true), uploads, true).reduce(function (acc, file) { return acc + file.size; }, 0);
243
- if (totalFileSize > maxFileTotalSize) {
244
- throw new Error("Total file size has exceeded the maximum limit. File must be less than ".concat(getFileSize(maxFileTotalSize), "."));
245
- }
246
- }
247
- var newFiles = __spreadArray(__spreadArray([], files, true), uploads, true);
248
- if (maxCount && __spreadArray(__spreadArray([], uploaded, true), newFiles, true).length > maxCount) {
249
- throw new Error("File count exceeds the limit: ".concat(maxCount));
250
- }
251
- onChange === null || onChange === void 0 ? void 0 : onChange({
252
- target: {
253
- name: name,
254
- value: newFiles,
255
- },
256
- });
257
- setFiles(newFiles);
258
- setErrorText(undefined);
259
- }
260
- catch (error) {
261
- // TODO: localization, internationalization해야하는 reserved 에러 메세지, 필요한가?
262
- var err = error;
263
- setErrorText(err.message);
264
- }
265
- }, [files, uploaded, maxCount, accept, maxFileSize, maxFileTotalSize, name, onChange]);
266
- // effects
267
- useEffect(function () {
268
- var el = dropZoneRef.current;
269
- if (!el) {
270
- return;
271
- }
272
- return combine(dropTargetForExternal({
273
- element: el,
274
- canDrop: containsFiles,
275
- onDragEnter: function () { return setPreviewState("over"); },
276
- onDragLeave: function () { return setPreviewState("potential"); },
277
- onDrop: function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
278
- var files;
279
- var source = _b.source;
280
- return __generator(this, function (_c) {
281
- switch (_c.label) {
282
- case 0: return [4 /*yield*/, getFiles({ source: source })];
283
- case 1:
284
- files = _c.sent();
285
- addFiles(files);
286
- return [2 /*return*/];
287
- }
288
- });
289
- }); },
290
- }), monitorForExternal({
291
- canMonitor: containsFiles,
292
- onDragStart: function () {
293
- setPreviewState("potential");
294
- preventUnhandled.start();
295
- },
296
- onDrop: function () {
297
- setPreviewState("idle");
298
- preventUnhandled.stop();
299
- },
300
- }));
301
- });
302
- useEffect(function () {
303
- if (inputRef.current && minCount) {
304
- if (files.length < minCount) {
305
- inputRef.current.setCustomValidity("At least ".concat(minCount, " files are required."));
306
- }
307
- else {
308
- inputRef.current.setCustomValidity("");
309
- }
310
- }
311
- }, [inputRef, files, minCount]);
312
- // handlers
313
- var handleFileChanged = useCallback(function (event) {
314
- var files = Array.from(event.target.files || []);
315
- addFiles(files);
316
- }, [addFiles]);
317
- var handleDeleteFile = useCallback(function (deletedFile) {
318
- if (deletedFile instanceof File) {
319
- setFiles(function (current) {
320
- onChange === null || onChange === void 0 ? void 0 : onChange({
321
- target: {
322
- name: name,
323
- value: current.filter(function (file) { return file !== deletedFile; }),
324
- },
325
- });
326
- return current.filter(function (file) { return file !== deletedFile; });
327
- });
328
- }
329
- else {
330
- setUploaded(function (uploaded) {
331
- return uploaded.filter(function (file) { return file.id !== deletedFile.id; });
332
- });
333
- // NOTE: 이미 업로드된 파일에 대해서만 onDeleted를 호출한다.
334
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(deletedFile);
335
- }
336
- setErrorText(undefined);
337
- }, [name, onChange, onDelete]);
338
- var handleUploaderButtonClick = useCallback(function () {
339
- var _a;
340
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click();
341
- }, []);
342
- var uploader = (React.createElement(FileDropZone, { state: previewState, error: !!(error || errorText), ref: dropZoneRef, onClick: handleUploaderButtonClick },
343
- React.createElement(Stack, { alignItems: "center", gap: 1 },
344
- React.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText) })),
345
- React.createElement(VisuallyHiddenInput, { type: "file", onChange: handleFileChanged, multiple: true, accept: accept, disabled: disabled, required: !!minCount, ref: inputRef })));
346
- return (React.createElement(UploaderRoot, null,
347
- showDropZone && (React.createElement(FormControl, { size: size, error: !!(error || errorText), disabled: disabled, required: !!minCount },
348
- label && React.createElement(FormLabel, null, label),
349
- uploader,
350
- errorText ? (React.createElement(FormHelperText, null, errorText)) : (helperText && React.createElement(FormHelperText, null, helperText)))),
351
- __spreadArray(__spreadArray([], uploaded, true), files, true).length > 0 && (React.createElement(Preview, { files: files, uploaded: uploaded, onDelete: handleDeleteFile }))));
352
- });
353
- export { Uploader };
@@ -1,3 +0,0 @@
1
- import { Uploader } from './Uploader';
2
- export * from './Uploader';
3
- export default Uploader;
@@ -1,44 +0,0 @@
1
- export { Accordion, AccordionDetails, Accordions, AccordionSummary, } from "./Accordions";
2
- export { Autocomplete } from "./Autocomplete";
3
- export { Box } from "./Box";
4
- export { Breadcrumbs } from "./Breadcrumbs";
5
- export { Button } from "./Button";
6
- export { Calendar } from "./Calendar";
7
- export { Card } from "./Card";
8
- export { Checkbox } from "./Checkbox";
9
- export { Container } from "./Container";
10
- export { CurrencyInput } from "./CurrencyInput";
11
- export { DataTable } from "./DataTable";
12
- export { DatePicker } from "./DatePicker";
13
- export { DateRangePicker } from "./DateRangePicker";
14
- export { DialogActions } from "./DialogActions";
15
- export { DialogContent } from "./DialogContent";
16
- export { DialogTitle } from "./DialogTitle";
17
- export { DialogFrame } from "./DialogFrame";
18
- export { Divider } from "./Divider";
19
- export { InsetDrawer } from "./InsetDrawer";
20
- export { Dropdown } from "./Dropdown";
21
- export { FormControl } from "./FormControl";
22
- export { FormHelperText } from "./FormHelperText";
23
- export { FormLabel } from "./FormLabel";
24
- export { Grid } from "./Grid";
25
- export { IconButton } from "./IconButton";
26
- export { Input } from "./Input";
27
- export { Markdown } from './Markdown';
28
- export { Menu, MenuButton, MenuItem } from "./Menu";
29
- export { Modal, ModalClose, ModalDialog, ModalOverflow, ModalFrame, } from "./Modal";
30
- export { MonthPicker } from "./MonthPicker";
31
- export { MonthRangePicker } from "./MonthRangePicker";
32
- export { Radio, RadioGroup } from "./Radio";
33
- export { RadioList } from "./RadioList";
34
- export { Select, Option } from "./Select";
35
- export { Sheet } from "./Sheet";
36
- export { Stack } from "./Stack";
37
- export { Switch } from "./Switch";
38
- export { Table, TableHead, TableBody } from "./Table";
39
- export { Tabs, Tab, TabList, TabPanel } from "./Tabs";
40
- export { Textarea } from "./Textarea";
41
- export { ThemeProvider } from "./ThemeProvider";
42
- export { Tooltip } from "./Tooltip";
43
- export { Typography } from "./Typography";
44
- export { Uploader } from './Uploader';