@elicecontents/content-ui 1.0.6 → 1.0.7

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 (51) hide show
  1. package/cjs/components/audio/Audio.d.ts +5 -0
  2. package/cjs/components/audio/Audio.js +91 -0
  3. package/cjs/components/audio/Pause.d.ts +5 -0
  4. package/cjs/components/audio/Pause.js +97 -0
  5. package/cjs/components/audio/Play.d.ts +5 -0
  6. package/cjs/components/audio/Play.js +95 -0
  7. package/cjs/components/audio/index.d.ts +2 -0
  8. package/cjs/components/audio/index.js +7 -0
  9. package/cjs/components/base-input/BaseInput.d.ts +4 -2
  10. package/cjs/components/base-input/BaseInput.js +27 -20
  11. package/cjs/components/index.d.ts +3 -0
  12. package/cjs/components/index.js +6 -0
  13. package/cjs/components/recorder/Recorder.d.ts +6 -0
  14. package/cjs/components/recorder/Recorder.js +218 -0
  15. package/cjs/components/recorder/index.d.ts +2 -0
  16. package/cjs/components/recorder/index.js +7 -0
  17. package/cjs/components/video/VideoPlayer.d.ts +21 -0
  18. package/cjs/components/video/VideoPlayer.js +90 -0
  19. package/cjs/components/video/index.d.ts +2 -0
  20. package/cjs/components/video/index.js +7 -0
  21. package/cjs/icons/NumbersIcon.d.ts +3 -1
  22. package/cjs/icons/NumbersIcon.js +23 -3
  23. package/cjs/index.js +6 -0
  24. package/cjs/typography/typography.d.ts +11 -0
  25. package/cjs/typography/typography.js +9 -0
  26. package/es/components/audio/Audio.d.ts +5 -0
  27. package/es/components/audio/Audio.js +83 -0
  28. package/es/components/audio/Pause.d.ts +5 -0
  29. package/es/components/audio/Pause.js +89 -0
  30. package/es/components/audio/Play.d.ts +5 -0
  31. package/es/components/audio/Play.js +87 -0
  32. package/es/components/audio/index.d.ts +2 -0
  33. package/es/components/audio/index.js +1 -0
  34. package/es/components/base-input/BaseInput.d.ts +4 -2
  35. package/es/components/base-input/BaseInput.js +27 -20
  36. package/es/components/index.d.ts +3 -0
  37. package/es/components/index.js +3 -0
  38. package/es/components/recorder/Recorder.d.ts +6 -0
  39. package/es/components/recorder/Recorder.js +209 -0
  40. package/es/components/recorder/index.d.ts +2 -0
  41. package/es/components/recorder/index.js +1 -0
  42. package/es/components/video/VideoPlayer.d.ts +21 -0
  43. package/es/components/video/VideoPlayer.js +86 -0
  44. package/es/components/video/index.d.ts +2 -0
  45. package/es/components/video/index.js +1 -0
  46. package/es/icons/NumbersIcon.d.ts +3 -1
  47. package/es/icons/NumbersIcon.js +23 -3
  48. package/es/index.js +3 -0
  49. package/es/typography/typography.d.ts +11 -0
  50. package/es/typography/typography.js +9 -0
  51. package/package.json +1 -1
@@ -0,0 +1,209 @@
1
+ import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import _styled from '@emotion/styled/base';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+ import { useState, useRef, useEffect } from 'react';
5
+ import { Stack, useTheme, Typography, Box, Button } from '@mui/material';
6
+ import ReadyRecord from '../../icons/ReadyRecord.js';
7
+ import Recording from '../../icons/Recording.js';
8
+ import EliceButton from '../button/Button.js';
9
+
10
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
11
+ var EliceRecorder = function EliceRecorder(_ref) {
12
+ var onAudioReady = _ref.onAudioReady,
13
+ onTransform = _ref.onTransform;
14
+ var theme = useTheme();
15
+ var _useState = useState("ready"),
16
+ _useState2 = _slicedToArray(_useState, 2),
17
+ recordingStep = _useState2[0],
18
+ setRecordingStep = _useState2[1];
19
+ var mediaRecorderRef = useRef(null);
20
+ var audioChunks = useRef([]);
21
+ var streamRef = useRef(null);
22
+ var audioContextRef = useRef(null);
23
+ var analyserRef = useRef(null);
24
+ var sourceRef = useRef(null);
25
+ var startRecording = /*#__PURE__*/function () {
26
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
27
+ var audioStream;
28
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
29
+ while (1) switch (_context2.prev = _context2.next) {
30
+ case 0:
31
+ _context2.prev = 0;
32
+ _context2.next = 3;
33
+ return navigator.mediaDevices.getUserMedia({
34
+ audio: true
35
+ });
36
+ case 3:
37
+ audioStream = _context2.sent;
38
+ streamRef.current = audioStream;
39
+ audioChunks.current = [];
40
+ mediaRecorderRef.current = new MediaRecorder(audioStream);
41
+ mediaRecorderRef.current.ondataavailable = function (event) {
42
+ if (event.data.size > 0) {
43
+ audioChunks.current.push(event.data);
44
+ }
45
+ };
46
+ mediaRecorderRef.current.onstop = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
47
+ var audioBlob, file;
48
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
49
+ while (1) switch (_context.prev = _context.next) {
50
+ case 0:
51
+ audioBlob = new Blob(audioChunks.current, {
52
+ type: "audio/wav"
53
+ });
54
+ file = new File([audioBlob], "recording-".concat(Date.now(), ".wav"), {
55
+ type: "audio/wav"
56
+ });
57
+ onAudioReady(file);
58
+ case 3:
59
+ case "end":
60
+ return _context.stop();
61
+ }
62
+ }, _callee);
63
+ }));
64
+ // ✅ 음성 분석용 AudioContext 연결
65
+ audioContextRef.current = new AudioContext();
66
+ analyserRef.current = audioContextRef.current.createAnalyser();
67
+ sourceRef.current = audioContextRef.current.createMediaStreamSource(audioStream);
68
+ sourceRef.current.connect(analyserRef.current);
69
+ mediaRecorderRef.current.start();
70
+ setRecordingStep("recording");
71
+ _context2.next = 20;
72
+ break;
73
+ case 17:
74
+ _context2.prev = 17;
75
+ _context2.t0 = _context2["catch"](0);
76
+ console.error("🎤 마이크 권한을 허용해주세요.", _context2.t0);
77
+ case 20:
78
+ case "end":
79
+ return _context2.stop();
80
+ }
81
+ }, _callee2, null, [[0, 17]]);
82
+ }));
83
+ return function startRecording() {
84
+ return _ref2.apply(this, arguments);
85
+ };
86
+ }();
87
+ var stopRecording = function stopRecording() {
88
+ var _a, _b, _c;
89
+ (_a = mediaRecorderRef.current) === null || _a === void 0 ? void 0 : _a.stop();
90
+ (_b = streamRef.current) === null || _b === void 0 ? void 0 : _b.getTracks().forEach(function (track) {
91
+ return track.stop();
92
+ });
93
+ (_c = audioContextRef.current) === null || _c === void 0 ? void 0 : _c.close();
94
+ audioContextRef.current = null;
95
+ setRecordingStep("waiting");
96
+ };
97
+ return jsxs(Stack, {
98
+ direction: "column",
99
+ minHeight: "70px",
100
+ bgcolor: theme.palette.grey[50],
101
+ padding: "12px 9px",
102
+ borderRadius: "18px",
103
+ alignItems: "center",
104
+ justifyContent: "center",
105
+ children: [jsx(SoundWaveVisualizer, {
106
+ analyser: analyserRef.current
107
+ }), jsxs(StyledRecorderContent, {
108
+ direction: "row",
109
+ children: [jsxs(StyledRecorderButton, {
110
+ step: recordingStep,
111
+ onClick: recordingStep === "ready" ? startRecording : stopRecording,
112
+ children: [recordingStep === "ready" || recordingStep === "waiting" ? jsx(ReadyRecord, {}) : jsx(Recording, {}), jsx(Typography, {
113
+ variant: "buttoninput",
114
+ children: recordingStep === "ready" ? "녹음 시작" : recordingStep === "recording" ? "녹음 중지" : "다시 녹음"
115
+ })]
116
+ }), jsx(EliceButton, {
117
+ disabled: recordingStep !== "waiting",
118
+ variant: recordingStep === "waiting" ? "outlined" : "contained",
119
+ onClick: onTransform,
120
+ children: "\uBCC0\uD658"
121
+ })]
122
+ })]
123
+ });
124
+ };
125
+ var SoundWaveVisualizer = function SoundWaveVisualizer(_ref4) {
126
+ var analyser = _ref4.analyser;
127
+ var theme = useTheme();
128
+ var TOTAL_BARS = 17;
129
+ var _useState3 = useState(0),
130
+ _useState4 = _slicedToArray(_useState3, 2),
131
+ filledBars = _useState4[0],
132
+ setFilledBars = _useState4[1];
133
+ useEffect(function () {
134
+ if (!analyser) return;
135
+ analyser.fftSize = 128; // ✅ FFT 크기 줄여 반응속도 개선
136
+ var dataArray = new Uint8Array(analyser.frequencyBinCount);
137
+ var prevVolume = 0;
138
+ var _updateVolume = function updateVolume() {
139
+ analyser.getByteFrequencyData(dataArray);
140
+ var averageVolume = dataArray.reduce(function (acc, val) {
141
+ return acc + val;
142
+ }, 0) / dataArray.length;
143
+ // ✅ 더 높은 민감도 설정 (3배 증폭)
144
+ var scaledVolume = Math.min(averageVolume * 3, 255);
145
+ // ✅ 더 높은 가중치를 현재 값에 적용 (빠르게 반응)
146
+ var smoothedVolume = prevVolume * 0.5 + scaledVolume * 0.5;
147
+ prevVolume = smoothedVolume;
148
+ // ✅ TOTAL_BARS에 맞게 변환
149
+ var newFilledBars = Math.floor(smoothedVolume / 255 * TOTAL_BARS);
150
+ setFilledBars(function (prev) {
151
+ return Math.round(prev * 0.6 + newFilledBars * 0.4);
152
+ }); // ✅ 더 빠르게 반응
153
+ requestAnimationFrame(_updateVolume);
154
+ };
155
+ _updateVolume();
156
+ return function () {
157
+ return setFilledBars(0);
158
+ };
159
+ }, [analyser]);
160
+ return jsx(Stack, {
161
+ alignItems: "center",
162
+ justifyContent: "center",
163
+ width: "100%",
164
+ bgcolor: "transparent",
165
+ children: jsx(Box, {
166
+ display: "flex",
167
+ justifyContent: "center",
168
+ alignItems: "center",
169
+ p: "6px 36px 7.5px 31px",
170
+ width: "100%",
171
+ gap: "11px",
172
+ bgcolor: theme.palette.grey[50],
173
+ children: Array(TOTAL_BARS).fill(0).map(function (_, idx) {
174
+ return jsx(WaveBar, {
175
+ isFilled: idx < filledBars,
176
+ theme: theme
177
+ }, idx);
178
+ })
179
+ })
180
+ });
181
+ };
182
+ var WaveBar = /*#__PURE__*/_styled(Box, {
183
+ target: "el6xa1g2"
184
+ })("width:11px;height:34px;border-radius:11px;background-color:", function (_ref5) {
185
+ var isFilled = _ref5.isFilled,
186
+ theme = _ref5.theme;
187
+ return isFilled ? theme.palette.primary.main : theme.palette.grey[200];
188
+ }, ";transition:background-color 0.1s ease-in-out;");
189
+ var StyledRecorderButton = /*#__PURE__*/_styled(Button, {
190
+ target: "el6xa1g1"
191
+ })("display:flex;width:160px;border:none;height:55px;padding:12px 20px 12px 17px;justify-content:center;align-items:center;gap:8px;cursor:pointer;flex-shrink:0;border-radius:16px;color:", function (_ref6) {
192
+ var step = _ref6.step;
193
+ return step === "ready" || step === "waiting" ? "#fff" : "#FF5D58";
194
+ }, ";background:", function (_ref7) {
195
+ var step = _ref7.step;
196
+ return step === "ready" || step === "waiting" ? "#FF5D58" : "#FBE0E0";
197
+ }, ";");
198
+ var StyledRecorderContent = /*#__PURE__*/_styled(Stack, {
199
+ target: "el6xa1g0"
200
+ })("production" === "production" ? {
201
+ name: "o9fzdr",
202
+ styles: "width:100%;display:flex;justify-content:center;align-items:center;gap:16px"
203
+ } : {
204
+ name: "o9fzdr",
205
+ styles: "width:100%;display:flex;justify-content:center;align-items:center;gap:16px",
206
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
207
+ });
208
+
209
+ export { EliceRecorder as default };
@@ -0,0 +1,2 @@
1
+ export { default as EliceRecorder } from './Recorder';
2
+ export type { EliceRecorderProps } from './Recorder';
@@ -0,0 +1 @@
1
+ export { default as EliceRecorder } from './Recorder.js';
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export interface EliceVideoPlayerProps {
3
+ source: string;
4
+ autoPlay?: boolean;
5
+ onPlay?: () => void;
6
+ onPause?: () => void;
7
+ onEnded?: () => void;
8
+ onProgress?: (seconds: number) => void;
9
+ tracks?: {
10
+ src: string;
11
+ kind: string;
12
+ srclang: string;
13
+ label: string;
14
+ }[];
15
+ sx?: React.CSSProperties;
16
+ height?: string;
17
+ pageKey?: string;
18
+ videoKey?: string;
19
+ }
20
+ declare const EliceVideoPlayer: ({ source, autoPlay, onPlay, onPause, onEnded, onProgress, tracks, sx, height, videoKey, }: EliceVideoPlayerProps) => import("react/jsx-runtime").JSX.Element;
21
+ export default EliceVideoPlayer;
@@ -0,0 +1,86 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useRef, useEffect } from 'react';
3
+ import { Stack } from '@mui/material';
4
+
5
+ var EliceVideoPlayer = function EliceVideoPlayer(_ref) {
6
+ var source = _ref.source,
7
+ _ref$autoPlay = _ref.autoPlay,
8
+ autoPlay = _ref$autoPlay === void 0 ? false : _ref$autoPlay,
9
+ onPlay = _ref.onPlay,
10
+ onPause = _ref.onPause,
11
+ onEnded = _ref.onEnded,
12
+ onProgress = _ref.onProgress,
13
+ tracks = _ref.tracks,
14
+ sx = _ref.sx,
15
+ _ref$height = _ref.height,
16
+ height = _ref$height === void 0 ? 'auto' : _ref$height,
17
+ videoKey = _ref.videoKey;
18
+ var videoRef = useRef(null);
19
+ var lastTime = useRef(videoKey ? Number(localStorage.getItem(videoKey)) || 0 : 0);
20
+ useEffect(function () {
21
+ var video = videoRef.current;
22
+ if (!video) return;
23
+ video.currentTime = lastTime.current;
24
+ var handlePlay = function handlePlay() {
25
+ return onPlay === null || onPlay === void 0 ? void 0 : onPlay();
26
+ };
27
+ var handlePause = function handlePause() {
28
+ return onPause === null || onPause === void 0 ? void 0 : onPause();
29
+ };
30
+ var handleEnded = function handleEnded() {
31
+ return onEnded === null || onEnded === void 0 ? void 0 : onEnded();
32
+ };
33
+ var handleTimeUpdate = function handleTimeUpdate() {
34
+ var seconds = video.currentTime;
35
+ onProgress === null || onProgress === void 0 ? void 0 : onProgress(seconds);
36
+ if (videoKey) {
37
+ localStorage.setItem(videoKey, seconds.toString());
38
+ }
39
+ };
40
+ video.addEventListener('play', handlePlay);
41
+ video.addEventListener('pause', handlePause);
42
+ video.addEventListener('ended', handleEnded);
43
+ video.addEventListener('timeupdate', handleTimeUpdate);
44
+ return function () {
45
+ video.removeEventListener('play', handlePlay);
46
+ video.removeEventListener('pause', handlePause);
47
+ video.removeEventListener('ended', handleEnded);
48
+ video.removeEventListener('timeupdate', handleTimeUpdate);
49
+ };
50
+ }, [videoKey, onPlay, onPause, onEnded, onProgress]);
51
+ return jsx(Stack, {
52
+ width: "100%",
53
+ height: height,
54
+ borderRadius: "1rem",
55
+ overflow: "hidden",
56
+ border: "1px solid #e0e0e0",
57
+ sx: Object.assign({
58
+ video: {
59
+ width: '100%',
60
+ height: '100%',
61
+ borderRadius: '1rem',
62
+ objectFit: 'cover'
63
+ }
64
+ }, sx),
65
+ children: jsxs("video", {
66
+ ref: videoRef,
67
+ controls: true,
68
+ autoPlay: autoPlay,
69
+ width: "100%",
70
+ crossOrigin: "anonymous",
71
+ children: [jsx("source", {
72
+ src: source,
73
+ type: "video/mp4"
74
+ }), tracks === null || tracks === void 0 ? void 0 : tracks.map(function (track, i) {
75
+ return jsx("track", {
76
+ src: track.src,
77
+ kind: track.kind,
78
+ srcLang: track.srclang,
79
+ label: track.label
80
+ }, i);
81
+ }), "Your browser does not support the video tag."]
82
+ })
83
+ });
84
+ };
85
+
86
+ export { EliceVideoPlayer as default };
@@ -0,0 +1,2 @@
1
+ export { default as EliceVideoPlayer } from './VideoPlayer';
2
+ export type { EliceVideoPlayerProps } from './VideoPlayer';
@@ -0,0 +1 @@
1
+ export { default as EliceVideoPlayer } from './VideoPlayer.js';
@@ -4,6 +4,8 @@ interface NumbersIconProps {
4
4
  color?: string;
5
5
  textColor?: string;
6
6
  pathColor?: string;
7
+ customBackgroundPath?: string;
8
+ type?: 'default' | 'spark';
7
9
  }
8
- declare const NumbersIcon: ({ value, size, color, textColor, pathColor, }: NumbersIconProps) => import("react/jsx-runtime").JSX.Element;
10
+ declare const NumbersIcon: ({ value, size, type, color, textColor, pathColor, customBackgroundPath, }: NumbersIconProps) => import("react/jsx-runtime").JSX.Element;
9
11
  export default NumbersIcon;
@@ -1,6 +1,10 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useTheme } from '@mui/material';
3
3
 
4
+ var backgroundPaths = {
5
+ spark: "M60 42.4274C60 42.4274 46.7999 45.2863 42.4263 60C42.4263 60 31.0711 52.6884 17.5737 60C17.5737 60 14.7148 46.7999 0 42.4263C0 42.4263 7.31164 31.0711 0 17.5737C0 17.5737 13.2001 14.7148 17.5737 0C17.5737 0 28.9289 7.31164 42.4263 0C42.4263 0 45.2852 13.2001 60 17.5737C60 17.5737 52.6884 28.9289 60 42.4263V42.4274Z"
6
+ // 추가 배경이 있다면 여기에 계속 추가
7
+ };
4
8
  // ✅ 숫자 및 문자별 `path` 값을 정적으로 저장
5
9
  var numberPaths = {
6
10
  "1": "M25.7758 31.16H21.3838V16.376L16.9678 19.064V14.84L22.1038 11.864H25.7758V31.16Z",
@@ -22,19 +26,35 @@ var NumbersIcon = function NumbersIcon(_ref) {
22
26
  var value = _ref.value,
23
27
  _ref$size = _ref.size,
24
28
  size = _ref$size === void 0 ? 45 : _ref$size,
29
+ _ref$type = _ref.type,
30
+ type = _ref$type === void 0 ? 'default' : _ref$type,
25
31
  color = _ref.color,
26
32
  textColor = _ref.textColor,
27
33
  _ref$pathColor = _ref.pathColor,
28
- pathColor = _ref$pathColor === void 0 ? "#fff" : _ref$pathColor;
34
+ pathColor = _ref$pathColor === void 0 ? "#fff" : _ref$pathColor,
35
+ customBackgroundPath = _ref.customBackgroundPath;
29
36
  var theme = useTheme();
30
37
  var path = numberPaths[value.toString()];
38
+ var fillColor = color || theme.palette.primary.main;
39
+ var textFill = textColor || theme.palette.text.primary;
40
+ var resolvedBackgroundPath = customBackgroundPath || (type !== "default" ? backgroundPaths[type] : undefined);
31
41
  return jsxs("svg", {
32
42
  width: size,
33
43
  height: size,
34
44
  viewBox: "0 0 45 45",
35
45
  fill: "none",
36
46
  xmlns: "http://www.w3.org/2000/svg",
37
- children: [jsx("circle", {
47
+ children: [resolvedBackgroundPath ? jsx("svg", {
48
+ xmlns: "http://www.w3.org/2000/svg",
49
+ width: size,
50
+ height: size,
51
+ viewBox: "0 0 60 60",
52
+ fill: "none",
53
+ children: jsx("path", {
54
+ d: resolvedBackgroundPath,
55
+ fill: fillColor
56
+ })
57
+ }) : jsx("circle", {
38
58
  cx: "22.5",
39
59
  cy: "22.5",
40
60
  r: "22.5",
@@ -48,7 +68,7 @@ var NumbersIcon = function NumbersIcon(_ref) {
48
68
  dominantBaseline: "middle",
49
69
  textAnchor: "middle",
50
70
  fontSize: size * 0.5,
51
- fill: textColor || theme.palette.text.primary,
71
+ fill: textFill,
52
72
  fontFamily: "Arial, sans-serif",
53
73
  fontWeight: "bold",
54
74
  children: value
package/es/index.js CHANGED
@@ -18,6 +18,9 @@ export { default as EliceSubButton } from './components/subtitle-button/Subtitle
18
18
  export { default as BaseInput } from './components/base-input/BaseInput.js';
19
19
  export { default as EliceModal } from './components/Modal/Modal.js';
20
20
  export { default as EliceRecorderChat } from './components/recorder-chat/RecorderChat.js';
21
+ export { default as EliceVideoPlayer } from './components/video/VideoPlayer.js';
22
+ export { default as EliceRecorder } from './components/recorder/Recorder.js';
23
+ export { default as EliceAudioPlayer } from './components/audio/Audio.js';
21
24
  export { default as ArrowLeft } from './icons/ArrowLeft.js';
22
25
  export { default as ArrowRight } from './icons/ArrowRight.js';
23
26
  export { default as Close } from './icons/Close.js';
@@ -41,6 +41,17 @@ export declare const createAIDTTypography: (fontFamily: keyof typeof TYPOGRAPHY_
41
41
  fontSize: string;
42
42
  };
43
43
  };
44
+ subtitle3: {
45
+ fontSize: string;
46
+ fontWeight: number;
47
+ lineHeight: string;
48
+ "@media (max-width:1200px)": {
49
+ fontSize: string;
50
+ };
51
+ "@media (max-width:512px)": {
52
+ fontSize: string;
53
+ };
54
+ };
44
55
  body1: {
45
56
  fontSize: string;
46
57
  fontWeight: number;
@@ -60,6 +60,15 @@ var createAIDTTypography = function createAIDTTypography(fontFamily) {
60
60
  fontSize: '22px'
61
61
  }),
62
62
  subtitle2: _defineProperty(_defineProperty({
63
+ fontSize: '24px',
64
+ fontWeight: 700,
65
+ lineHeight: '160%'
66
+ }, "@media (max-width:1200px)", {
67
+ fontSize: '24px'
68
+ }), "@media (max-width:512px)", {
69
+ fontSize: '18px'
70
+ }),
71
+ subtitle3: _defineProperty(_defineProperty({
63
72
  fontSize: '20px',
64
73
  fontWeight: 700,
65
74
  lineHeight: '140%'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elicecontents/content-ui",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "A set of UI components for creating content of Elice",
5
5
  "author": "Elice <contact@elice.io>",
6
6
  "license": "UNLICENSED",