@dotss/tictoccroc 0.3.0 → 0.3.2

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.
@@ -7,5 +7,5 @@ export interface CalendarProps extends Omit<FlexboxProps, 'onChange' | 'value'>,
7
7
  weekHeadInlineCSS?: FlexboxProps['inlineCSS'];
8
8
  datePickerProps?: Omit<DatePickerProps, 'onChange' | 'value' | 'date'>;
9
9
  }
10
- declare const Calendar: any;
10
+ declare const Calendar: import('react').ForwardRefExoticComponent<Omit<CalendarProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
11
11
  export default Calendar;
@@ -2,11 +2,11 @@ import { jsxs as t, jsx as r } from "react/jsx-runtime";
2
2
  import { useRef as F, useEffect as L } from "react";
3
3
  import { Flexbox as n, Typography as e, Button as $ } from "@dotss/ui";
4
4
  import q from "@dotss/ui/core/useTheme";
5
- import { getClassInfo as z, getCtaButtonText as G } from "./BotMessage.utils.mjs";
6
- import J from "../../Image/Image.mjs";
7
- import K from "../../../hooks/useInView/useInView.mjs";
5
+ import z from "dayjs";
6
+ import { getClassInfo as G, getCtaButtonText as J } from "./BotMessage.utils.mjs";
7
+ import K from "../../Image/Image.mjs";
8
+ import N from "../../../hooks/useInView/useInView.mjs";
8
9
  import S from "../../../utils/getCareTypeLabel/getCareTypeLabel.mjs";
9
- import N from "dayjs";
10
10
  function V({
11
11
  id: P,
12
12
  botMessageType: y,
@@ -30,10 +30,10 @@ function V({
30
30
  const {
31
31
  palette: { brand: D, grey: m, background: k },
32
32
  spacing: d
33
- } = q(), f = F(null), { isInView: u } = K(f), x = G(s), i = w, H = [
33
+ } = q(), f = F(null), { isInView: u } = N(f), x = J(s), i = w, H = [
34
34
  S(i == null ? void 0 : i.firstCareType),
35
35
  S(i == null ? void 0 : i.secondCareType)
36
- ].filter(Boolean).filter((E) => E !== "-").join("+"), c = z(i), M = () => o == null ? void 0 : o({
36
+ ].filter(Boolean).filter((E) => E !== "-").join("+"), c = G(i), M = () => o == null ? void 0 : o({
37
37
  botMessageType: y,
38
38
  ctaType: s,
39
39
  ctaTargetId: C,
@@ -91,7 +91,7 @@ function V({
91
91
  inlineCSS: {
92
92
  whiteSpace: "nowrap"
93
93
  },
94
- children: N(I).format("A h:mm")
94
+ children: z(I).format("A h:mm")
95
95
  }
96
96
  )
97
97
  ]
@@ -112,7 +112,7 @@ function V({
112
112
  },
113
113
  children: [
114
114
  g && /* @__PURE__ */ r(
115
- J,
115
+ K,
116
116
  {
117
117
  src: g,
118
118
  width: 32,
@@ -1,5 +1,5 @@
1
- import o from "../../../utils/getCareTypeLabel/getCareTypeLabel.mjs";
2
1
  import n from "dayjs";
2
+ import o from "../../../utils/getCareTypeLabel/getCareTypeLabel.mjs";
3
3
  function u(r) {
4
4
  switch (r) {
5
5
  case "MY_CLASS_CHECK":
@@ -1,6 +1,6 @@
1
1
  import { jsxs as n, jsx as e, Fragment as q } from "react/jsx-runtime";
2
- import { useRef as x, useImperativeHandle as J, useEffect as y } from "react";
3
- import { Flexbox as d, Typography as v, Button as Q, Icon as I, Menu as X, MenuBlock as P, CircularProgressIndicator as Y } from "@dotss/ui";
2
+ import { useRef as y, useImperativeHandle as J, useEffect as v } from "react";
3
+ import { Flexbox as d, Typography as I, Button as Q, Icon as C, Menu as X, MenuBlock as T, CircularProgressIndicator as Y } from "@dotss/ui";
4
4
  import Z from "@dotss/ui/core/useTheme";
5
5
  import { useCheckHoverPossible as _ } from "@dotss/ui/hooks";
6
6
  import { MenuButton as A } from "@dotss/ui/Menu";
@@ -8,48 +8,48 @@ import V from "dayjs";
8
8
  import U from "../../Image/Image.mjs";
9
9
  import M from "../../../hooks/useInView/useInView.mjs";
10
10
  function de({
11
- id: C,
12
- content: f = "",
11
+ id: k,
12
+ content: u = "",
13
13
  mine: i = !1,
14
14
  avatarUrl: h = "",
15
- unreadUserCount: u = 0,
16
- regDatetime: T,
15
+ unreadUserCount: g = 0,
16
+ regDatetime: $,
17
17
  status: l,
18
18
  onView: m,
19
- openMenu: g,
20
- onClickAvatar: c,
19
+ openMenu: S,
20
+ onClickAvatar: a,
21
21
  onCloseMenu: t,
22
- onClickMenu: $,
23
- onResend: S,
24
- onDelete: b,
25
- onViewAll: z,
22
+ onClickMenu: z,
23
+ onResend: b,
24
+ onDelete: x,
25
+ onViewAll: B,
26
26
  showAvatar: w,
27
- showTime: B,
28
- ref: R,
29
- inlineCSS: j,
30
- ...G
27
+ showTime: R,
28
+ ref: j,
29
+ inlineCSS: G,
30
+ ...H
31
31
  }) {
32
32
  const {
33
- palette: { brand: k, grey: a, etc: H },
33
+ palette: { brand: p, grey: c, etc: K },
34
34
  spacing: E
35
- } = Z(), { isHoverPossible: K } = _(), o = x(null), D = x(null), p = x(null);
36
- J(R, () => o.current);
37
- const F = M(o), L = 300, s = l === "FAILED", N = f.length > L, O = (r) => {
38
- r === "resend" ? (t == null || t(), p.current = setTimeout(() => {
39
- S == null || S();
40
- }, 200)) : r === "delete" && (t == null || t(), p.current = setTimeout(() => {
35
+ } = Z(), { isHoverPossible: D } = _(), o = y(null), F = y(null), s = y(null);
36
+ J(j, () => o.current);
37
+ const L = M(o), N = 300, f = l === "FAILED", P = u.length > N, O = (r) => {
38
+ r === "resend" ? (t == null || t(), s.current = setTimeout(() => {
41
39
  b == null || b();
40
+ }, 200)) : r === "delete" && (t == null || t(), s.current = setTimeout(() => {
41
+ x == null || x();
42
42
  }, 200));
43
43
  }, W = (r) => {
44
44
  (r.key === "Enter" || r.key === " ") && (r.preventDefault(), r.currentTarget.click());
45
45
  };
46
- return y(() => {
47
- F && (m == null || m());
48
- }, [F, m]), y(() => {
46
+ return v(() => {
47
+ L && (m == null || m());
48
+ }, [L, m]), v(() => {
49
49
  var r;
50
- s && ((r = o == null ? void 0 : o.current) == null || r.scrollIntoView());
51
- }, [s]), y(() => () => {
52
- p.current && clearTimeout(p.current);
50
+ f && ((r = o == null ? void 0 : o.current) == null || r.scrollIntoView());
51
+ }, [f]), v(() => () => {
52
+ s.current && clearTimeout(s.current);
53
53
  }, []), /* @__PURE__ */ n(
54
54
  d,
55
55
  {
@@ -60,27 +60,27 @@ function de({
60
60
  pr: 4,
61
61
  gap: 1,
62
62
  "aria-busy": l === "PENDING",
63
- ...G,
63
+ ...H,
64
64
  inlineCSS: {
65
65
  cursor: l === "PENDING" ? "wait" : "default",
66
66
  overflowAnchor: "none",
67
- ...j
67
+ ...G
68
68
  },
69
69
  children: [
70
70
  /* @__PURE__ */ n(d, { alignItems: "flex-start", gap: 2.5, children: [
71
71
  !i && w && h && /* @__PURE__ */ e(
72
72
  d,
73
73
  {
74
- role: typeof c == "function" ? "button" : void 0,
75
- tabIndex: typeof c == "function" ? 0 : -1,
76
- onClick: c,
74
+ role: typeof a == "function" ? "button" : void 0,
75
+ tabIndex: typeof a == "function" ? 0 : -1,
76
+ onClick: a,
77
77
  onKeyDown: W,
78
- "aria-label": typeof c == "function" ? "선생님 프로필 보기" : void 0,
78
+ "aria-label": typeof a == "function" ? "선생님 프로필 보기" : void 0,
79
79
  inlineCSS: {
80
80
  position: "relative",
81
81
  overflow: "hidden",
82
82
  minWidth: 32,
83
- cursor: typeof c == "function" ? "pointer" : void 0
83
+ cursor: typeof a == "function" ? "pointer" : void 0
84
84
  },
85
85
  children: /* @__PURE__ */ e(
86
86
  U,
@@ -111,30 +111,42 @@ function de({
111
111
  gap: 2.5,
112
112
  inlineCSS: {
113
113
  borderRadius: 12,
114
- backgroundColor: i ? k.primary.pageControl : a[10]
114
+ backgroundColor: i ? p.primary.pageControl : c[10]
115
115
  },
116
116
  children: [
117
117
  /* @__PURE__ */ e(
118
- v,
118
+ I,
119
119
  {
120
120
  tag: "p",
121
121
  variant: "b3R",
122
122
  inlineCSS: {
123
123
  whiteSpace: "pre-wrap",
124
- wordBreak: "break-all"
124
+ wordBreak: "break-all",
125
+ userSelect: "text",
126
+ "& *": {
127
+ userSelect: "text"
128
+ }
125
129
  },
126
- children: N ? f.slice(0, L) + "..." : f
130
+ children: P ? u.slice(0, N) + "..." : u
127
131
  }
128
132
  ),
129
- N && /* @__PURE__ */ e(
133
+ P && /* @__PURE__ */ e(
130
134
  Q,
131
135
  {
132
136
  variant: "text",
133
137
  size: "xSmall",
134
- endAdornment: /* @__PURE__ */ e(I, { name: "ChevronRightLine" }),
135
- onClick: z,
138
+ endAdornment: /* @__PURE__ */ e(C, { name: "ChevronRightLine" }),
139
+ onClick: B,
136
140
  inlineCSS: {
137
- marginLeft: "auto"
141
+ marginLeft: "auto",
142
+ '&:active:not([aria-disabled="true"])': {
143
+ backgroundColor: p.primary.main
144
+ },
145
+ ...D && {
146
+ '&:hover:not([aria-disabled="true"])': {
147
+ backgroundColor: p.primary.main
148
+ }
149
+ }
138
150
  },
139
151
  children: "전체보기"
140
152
  }
@@ -143,50 +155,50 @@ function de({
143
155
  }
144
156
  )
145
157
  ] }),
146
- s && /* @__PURE__ */ n(q, { children: [
158
+ f && /* @__PURE__ */ n(q, { children: [
147
159
  /* @__PURE__ */ n(
148
160
  A,
149
161
  {
150
- ref: D,
151
- isMenuOpen: !!g,
152
- menuId: `message-${C}-menu`,
153
- onClick: $,
162
+ ref: F,
163
+ isMenuOpen: !!S,
164
+ menuId: `message-${k}-menu`,
165
+ onClick: z,
154
166
  size: "xSmall",
155
167
  inlineCSS: {
156
168
  padding: E.content(0.5),
157
169
  gap: E.content(0.5),
158
170
  borderRadius: 200,
159
- backgroundColor: g ? a[10] : "transparent",
171
+ backgroundColor: S ? c[10] : "transparent",
160
172
  cursor: "pointer",
161
- ...K && {
173
+ ...D && {
162
174
  "&:hover": {
163
- backgroundColor: `${a[10]} !important`
175
+ backgroundColor: `${c[10]} !important`
164
176
  }
165
177
  },
166
178
  "&:active": {
167
- backgroundColor: `${a[10]} !important`
179
+ backgroundColor: `${c[10]} !important`
168
180
  }
169
181
  },
170
182
  children: [
171
183
  /* @__PURE__ */ e(
172
- I,
184
+ C,
173
185
  {
174
186
  name: "ResetLine",
175
187
  size: "xSmall",
176
188
  color: "grey.70",
177
189
  inlineCSS: {
178
- color: `${a[70]} !important`
190
+ color: `${c[70]} !important`
179
191
  }
180
192
  }
181
193
  ),
182
194
  /* @__PURE__ */ e(
183
- I,
195
+ C,
184
196
  {
185
197
  name: "CloseLine",
186
198
  size: "xSmall",
187
199
  color: "etc.red",
188
200
  inlineCSS: {
189
- color: `${H.red} !important`
201
+ color: `${K.red} !important`
190
202
  }
191
203
  }
192
204
  )
@@ -196,21 +208,21 @@ function de({
196
208
  /* @__PURE__ */ n(
197
209
  X,
198
210
  {
199
- id: `message-${C}-menu`,
200
- anchorRef: D,
201
- open: g,
211
+ id: `message-${k}-menu`,
212
+ anchorRef: F,
213
+ open: S,
202
214
  onClose: t,
203
215
  onChange: O,
204
216
  width: 160,
205
217
  placement: "bottom-left",
206
218
  children: [
207
- /* @__PURE__ */ e(P, { value: "resend", children: "재전송" }),
208
- /* @__PURE__ */ e(P, { value: "delete", children: "삭제" })
219
+ /* @__PURE__ */ e(T, { value: "resend", children: "재전송" }),
220
+ /* @__PURE__ */ e(T, { value: "delete", children: "삭제" })
209
221
  ]
210
222
  }
211
223
  )
212
224
  ] }),
213
- !s && /* @__PURE__ */ n(
225
+ !f && /* @__PURE__ */ n(
214
226
  d,
215
227
  {
216
228
  flexDirection: "column",
@@ -219,19 +231,19 @@ function de({
219
231
  whiteSpace: "nowrap"
220
232
  },
221
233
  children: [
222
- i && u > 0 && l === "SUCCEEDED" && /* @__PURE__ */ e(
223
- v,
234
+ i && g > 0 && l === "SUCCEEDED" && /* @__PURE__ */ e(
235
+ I,
224
236
  {
225
237
  tag: "span",
226
238
  variant: "c5B",
227
239
  "aria-hidden": !0,
228
240
  inlineCSS: {
229
- color: k.primary.text
241
+ color: p.primary.text
230
242
  },
231
- children: u
243
+ children: g
232
244
  }
233
245
  ),
234
- i && u > 0 && l === "PENDING" && /* @__PURE__ */ e(
246
+ i && g > 0 && l === "PENDING" && /* @__PURE__ */ e(
235
247
  Y,
236
248
  {
237
249
  size: "small",
@@ -243,15 +255,15 @@ function de({
243
255
  }
244
256
  ),
245
257
  /* @__PURE__ */ e(
246
- v,
258
+ I,
247
259
  {
248
260
  tag: "span",
249
261
  variant: "c5R",
250
262
  color: "etc.dimmed01",
251
263
  inlineCSS: {
252
- display: B ? void 0 : "none"
264
+ display: R ? void 0 : "none"
253
265
  },
254
- children: V(T).format("A h:mm")
266
+ children: V($).format("A h:mm")
255
267
  }
256
268
  )
257
269
  ]
@@ -20,5 +20,5 @@ export interface ImageProps extends Omit<HTMLProps<HTMLImageElement>, 'onError'>
20
20
  enableErrorFallback?: boolean;
21
21
  renderErrorFallback?: () => ReactNode;
22
22
  }
23
- declare const Image: any;
23
+ declare const Image: import('react').ForwardRefExoticComponent<Omit<ImageProps, "ref"> & import('react').RefAttributes<HTMLImageElement>>;
24
24
  export default Image;
@@ -7,7 +7,7 @@ export declare function getHorizontalLayoutRows(images: {
7
7
  originalWidth?: number;
8
8
  width: number;
9
9
  height: number;
10
- }[], blocks: ReactElement<MasonryBlockProps>[], rowCount: number, fallbackWidth: number): ReactElement<MasonryBlockProps>[][];
10
+ }[], blocks: ReactElement<MasonryBlockProps>[], rowCount: number, fallbackWidth: number): ReactElement<MasonryBlockProps, string | import('react').JSXElementConstructor<any>>[][];
11
11
  export declare function findNextFocusableElement(currentElement: HTMLDivElement, keyDirection: 'left' | 'right' | 'up' | 'down', candidates: (HTMLDivElement | null)[]): HTMLDivElement | null;
12
12
  export declare function getNextIndexHorizontalFromRows(rows: HTMLDivElement[][], currentIndex: number, keyDirection: 'up' | 'down' | 'left' | 'right'): number | null;
13
13
  export declare function findImageInChildren(children: ReactNode): ReactElement<ImageProps> | null;
@@ -17,5 +17,5 @@ export interface MasonryBlockProps extends FlexboxProps {
17
17
  }>;
18
18
  setInnerRef?: (ref: HTMLDivElement | null) => void;
19
19
  }
20
- declare const MasonryBlock: any;
20
+ declare const MasonryBlock: import('react').ForwardRefExoticComponent<Omit<MasonryBlockProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
21
21
  export default MasonryBlock;
@@ -19,5 +19,5 @@ export interface TimePickerProps extends Omit<FlexboxProps, 'onChange'> {
19
19
  renderStartTimeLabel?: (item: TimePickerItem, isSelected: boolean) => ReactNode;
20
20
  renderEndTimeLabel?: (item: TimePickerItem, isSelected: boolean) => ReactNode;
21
21
  }
22
- declare const TimePicker: any;
22
+ declare const TimePicker: import('react').ForwardRefExoticComponent<Omit<TimePickerProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
23
23
  export default TimePicker;
@@ -1,9 +1,9 @@
1
1
  import { jsxs as R, jsx as c } from "react/jsx-runtime";
2
- import { forwardRef as O, useState as j, useRef as w, useEffect as r } from "react";
3
- import { ChainPicker as I, Typography as S, Flexbox as Q } from "@dotss/ui";
2
+ import { forwardRef as O, useState as j, useRef as w, useCallback as Q, useEffect as r } from "react";
3
+ import { Flexbox as U, Typography as S, ChainPicker as I } from "@dotss/ui";
4
4
  import z from "@emotion/styled";
5
- import b from "../../utils/getTimeRange/getTimeRange.mjs";
6
- const U = z.div`
5
+ import x from "../../utils/getTimeRange/getTimeRange.mjs";
6
+ const V = z.div`
7
7
  position: relative;
8
8
  display: flex;
9
9
  align-items: center;
@@ -11,36 +11,36 @@ const U = z.div`
11
11
  gap: ${({ theme: { spacing: o } }) => o.content(7)}px;
12
12
  width: 100%;
13
13
  padding: ${({ theme: { spacing: o } }) => o.content(2)}px 0;
14
- `, V = z.div`
14
+ `, W = z.div`
15
15
  position: absolute;
16
16
  width: 100%;
17
17
  height: 54px;
18
18
  background: ${({ theme: o }) => o.palette.background.primary};
19
19
  border-radius: 12px;
20
- `, k = O(function({
20
+ `, C = O(function({
21
21
  onChange: F,
22
22
  onChangeStartTime: p,
23
23
  onChangeEndTime: s,
24
24
  startTime: l = 9,
25
- endTime: n = 12,
26
- range: t = [0, 24],
25
+ endTime: t = 12,
26
+ range: n = [0, 24],
27
27
  step: i = 1,
28
- startTimeChainPickerProps: m,
29
- endTimeChainPickerProps: f,
28
+ startTimeChainPickerProps: u,
29
+ endTimeChainPickerProps: d,
30
30
  timePickerHighlightProps: H,
31
31
  renderStartTimeLabel: N,
32
32
  renderEndTimeLabel: q,
33
33
  inlineCSS: A,
34
34
  ...B
35
35
  }, D) {
36
- const [a, y] = j(l), [u, x] = j(n), E = w(
37
- b(0, 24, { minTime: t[0], maxTime: t[1] - i })
38
- ), d = w(
39
- b(0, 24, { minTime: l + i, maxTime: t[1] })
40
- ), $ = (e, h) => {
36
+ const [f, y] = j(l), [m, b] = j(t), E = w(
37
+ x(0, 24, { minTime: n[0], maxTime: n[1] - i })
38
+ ), a = w(
39
+ x(0, 24, { minTime: l + i, maxTime: n[1] })
40
+ ), h = Q((e, $) => {
41
41
  const [v, M] = e.label.split(":").map(Number), K = v >= 12, g = v % 12 || 12, L = K ? "오후" : "오전";
42
42
  return /* @__PURE__ */ R(
43
- Q,
43
+ U,
44
44
  {
45
45
  gap: 1,
46
46
  alignItems: "center",
@@ -48,75 +48,73 @@ const U = z.div`
48
48
  "aria-label": `${L} ${g}시 ${M}분`,
49
49
  inlineCSS: { width: "82px" },
50
50
  children: [
51
- /* @__PURE__ */ c(S, { tag: "span", variant: h ? "h5M" : "b5M", children: L }),
52
- /* @__PURE__ */ c(S, { tag: "span", variant: h ? "h2M" : "h4M", children: `${g}:${M.toString().padStart(2, "0")}` })
51
+ /* @__PURE__ */ c(S, { tag: "span", variant: $ ? "h5M" : "b5M", children: L }),
52
+ /* @__PURE__ */ c(S, { tag: "span", variant: $ ? "h2M" : "h4M", children: `${g}:${M.toString().padStart(2, "0")}` })
53
53
  ]
54
54
  }
55
55
  );
56
- }, G = (e) => {
57
- y(e), d.current = b(0, 24, {
58
- minTime: e + i > t[1] ? t[1] : e + i,
59
- maxTime: t[1]
60
- }), e >= n - 0.5 && x(d.current[0].value);
56
+ }, []), G = (e) => {
57
+ y(e), a.current = x(0, 24, {
58
+ minTime: e + i > n[1] ? n[1] : e + i,
59
+ maxTime: n[1]
60
+ }), e >= t - 0.5 && b(a.current[0].value);
61
61
  }, J = (e) => {
62
- x(e);
62
+ b(e);
63
63
  };
64
64
  return r(() => {
65
- d.current = b(0, 24, {
66
- minTime: l + i > t[1] ? t[1] : l + i,
67
- maxTime: t[1]
65
+ a.current = x(0, 24, {
66
+ minTime: l + i > n[1] ? n[1] : l + i,
67
+ maxTime: n[1]
68
68
  });
69
- }, [l, n, t, i]), r(() => {
69
+ }, [l, t, n, i]), r(() => {
70
70
  y(l);
71
71
  }, [l]), r(() => {
72
- l >= n - 0.5 ? x(d.current[0].value) : x(n);
73
- }, [l, n]), r(() => {
74
- F(a, u);
75
- }, [a, u]), r(() => {
76
- p == null || p(a);
77
- }, [a]), r(() => {
78
- s == null || s(u);
79
- }, [u]), /* @__PURE__ */ R(U, { ref: D, css: A, role: "group", "aria-label": "시간 선택", ...B, children: [
80
- /* @__PURE__ */ c(V, { ...H, "aria-hidden": !0 }),
72
+ l >= t - 0.5 ? b(a.current[0].value) : b(t);
73
+ }, [l, t]), r(() => {
74
+ F(f, m);
75
+ }, [f, m]), r(() => {
76
+ p == null || p(f);
77
+ }, [f]), r(() => {
78
+ s == null || s(m);
79
+ }, [m]), /* @__PURE__ */ R(V, { ref: D, css: A, role: "group", "aria-label": "시간 선택", ...B, children: [
80
+ /* @__PURE__ */ c(W, { ...H, "aria-hidden": !0 }),
81
81
  /* @__PURE__ */ c(
82
82
  I,
83
83
  {
84
84
  column: E.current,
85
85
  value: l,
86
86
  onChange: G,
87
- renderLabel: N || $,
87
+ renderLabel: N || h,
88
88
  "aria-label": "시작 시간 선택",
89
89
  inlineCSS: {
90
90
  "& > li": {
91
91
  padding: 0
92
92
  },
93
- ...m == null ? void 0 : m.inlineCSS
93
+ ...u == null ? void 0 : u.inlineCSS
94
94
  },
95
- ...m
96
- },
97
- `start-time-${a}`
95
+ ...u
96
+ }
98
97
  ),
99
98
  /* @__PURE__ */ c(S, { variant: "h5M", color: "grey.50", "aria-hidden": !0, inlineCSS: { zIndex: 1 }, children: "부터" }),
100
99
  /* @__PURE__ */ c(
101
100
  I,
102
101
  {
103
- column: d.current,
104
- value: n,
102
+ column: a.current,
103
+ value: t,
105
104
  onChange: J,
106
- renderLabel: q || $,
105
+ renderLabel: q || h,
107
106
  "aria-label": "종료 시간 선택",
108
107
  inlineCSS: {
109
108
  "& > li": {
110
109
  padding: 0
111
110
  },
112
- ...f == null ? void 0 : f.inlineCSS
111
+ ...d == null ? void 0 : d.inlineCSS
113
112
  },
114
- ...f
115
- },
116
- `end-time-${u}`
113
+ ...d
114
+ }
117
115
  )
118
116
  ] });
119
117
  });
120
118
  export {
121
- k as default
119
+ C as default
122
120
  };
@@ -1,4 +1,4 @@
1
1
  import { RefObject } from 'react';
2
2
  export default function useInView(targetRef: RefObject<HTMLElement | null>, options?: IntersectionObserverInit): {
3
- isInView: any;
3
+ isInView: boolean;
4
4
  };
@@ -1,2 +1,3 @@
1
- declare const useIsomorphicLayoutEffect: any;
1
+ import { useEffect } from 'react';
2
+ declare const useIsomorphicLayoutEffect: typeof useEffect;
2
3
  export default useIsomorphicLayoutEffect;
@@ -1,6 +1,6 @@
1
1
  import { ReactNode, SyntheticEvent } from 'react';
2
- import { ImageProps } from '../../../../shared/components/Image';
3
2
  import { FlexboxProps } from 'node_modules/@dotss/ui/Flexbox/Flexbox';
3
+ import { ImageProps } from '../../../../shared/components/Image';
4
4
  import { BannerProps } from '..';
5
5
  export interface Carousel1AccountProps extends Omit<FlexboxProps, 'title' | 'id'> {
6
6
  id: number;
@@ -1,71 +1,83 @@
1
- import { jsx as r, Fragment as f, jsxs as n } from "react/jsx-runtime";
2
- import b from "@dotss/ui/core/useTheme";
3
- import l from "@dotss/ui/Flexbox";
4
- import c from "@dotss/ui/Typography";
5
- import C from "../../../../shared/components/Carousel/Carousel.mjs";
6
- import S from "../../../../shared/components/Carousel/CarouselSlide/CarouselSlide.mjs";
7
- import w from "../../../../shared/components/Image/Image.mjs";
1
+ import { jsx as e, Fragment as C, jsxs as l } from "react/jsx-runtime";
2
+ import k from "@dotss/ui/core/useTheme";
3
+ import c from "@dotss/ui/Flexbox";
4
+ import v from "@dotss/ui/hooks/useCheckHoverPossible/useCheckHoverPossible";
5
+ import d from "@dotss/ui/Typography";
6
+ import S from "../../../../shared/components/Carousel/Carousel.mjs";
7
+ import w from "../../../../shared/components/Carousel/CarouselSlide/CarouselSlide.mjs";
8
+ import x from "../../../../shared/components/Image/Image.mjs";
8
9
  import "@dotss/ui";
9
- function D({
10
+ function I({
10
11
  id: p,
11
- title: d,
12
+ title: s,
12
13
  banners: m,
13
- onClickBanner: i,
14
- imageProps: s,
15
- ...h
14
+ onClickBanner: a,
15
+ imageProps: u,
16
+ ...g
16
17
  }) {
17
- const { spacing: o } = b(), u = (t, a) => (e) => {
18
- i && typeof i == "function" && (e.stopPropagation(), e.preventDefault(), i(t, a, e));
18
+ const { spacing: i, palette: n } = k(), { isHoverPossible: h } = v(), b = (o, t) => (r) => {
19
+ a && typeof a == "function" && (r.stopPropagation(), r.preventDefault(), a(o, t, r));
19
20
  };
20
- return /* @__PURE__ */ r(f, { children: /* @__PURE__ */ n(l, { flexDirection: "column", inlineCSS: { width: "100%" }, ...h, children: [
21
- /* @__PURE__ */ r(
22
- c,
21
+ return /* @__PURE__ */ e(C, { children: /* @__PURE__ */ l(c, { flexDirection: "column", inlineCSS: { width: "100%" }, ...g, children: [
22
+ /* @__PURE__ */ e(
23
+ d,
23
24
  {
24
25
  id: `banner-account-carousel1-${p}`,
25
26
  variant: "h2B",
26
27
  inlineCSS: {
27
28
  whiteSpace: "pre-wrap",
28
29
  wordBreak: "keep-all",
29
- paddingLeft: o.content(4),
30
- paddingRight: o.content(4),
31
- marginBottom: o.content(3)
30
+ paddingLeft: i.content(4),
31
+ paddingRight: i.content(4),
32
+ marginBottom: i.content(3)
32
33
  },
33
- children: d
34
+ children: s
34
35
  }
35
36
  ),
36
- /* @__PURE__ */ r(C, { rowCount: 2, step: 1, spacing: 5, children: m.map(({ id: t, title: a, url: e, image: g }) => /* @__PURE__ */ r(S, { children: /* @__PURE__ */ n(
37
- l,
37
+ /* @__PURE__ */ e(S, { rowCount: 2, step: 1, spacing: 5, children: m.map(({ id: o, title: t, url: r, image: f }) => /* @__PURE__ */ e(w, { children: /* @__PURE__ */ l(
38
+ c,
38
39
  {
39
40
  tag: "a",
40
- href: e,
41
+ href: r,
41
42
  alignItems: "center",
42
43
  gap: 4,
43
44
  draggable: !1,
44
- onClick: u(e, t),
45
- inlineCSS: { width: 264 },
45
+ onClick: b(r, o),
46
+ inlineCSS: {
47
+ width: 264,
48
+ borderRadius: 12,
49
+ '&:active:not([aria-disabled="true"])': {
50
+ backgroundColor: n.background.primary
51
+ },
52
+ ...h && {
53
+ '&:hover:not([aria-disabled="true"])': {
54
+ backgroundColor: n.background.primary
55
+ }
56
+ }
57
+ },
46
58
  children: [
47
- /* @__PURE__ */ r(
48
- w,
59
+ /* @__PURE__ */ e(
60
+ x,
49
61
  {
50
- src: g || "",
62
+ src: f || "",
51
63
  width: 140,
52
64
  height: 98,
53
- alt: `${a} 이미지`,
65
+ alt: `${t} 이미지`,
54
66
  "aria-hidden": !0,
55
67
  draggable: !1,
56
68
  borderRadius: 12,
57
69
  enableFallback: !0,
58
70
  enableErrorFallback: !0,
59
71
  style: { objectFit: "cover" },
60
- ...s
72
+ ...u
61
73
  }
62
74
  ),
63
- /* @__PURE__ */ r(c, { tag: "p", variant: "b2M", lineClamp: 2, children: a })
75
+ /* @__PURE__ */ e(d, { tag: "p", variant: "b2M", lineClamp: 2, children: t })
64
76
  ]
65
77
  }
66
- ) }, `tictoccroc-carousel1-account-${t}`)) })
78
+ ) }, `tictoccroc-carousel1-account-${o}`)) })
67
79
  ] }) });
68
80
  }
69
81
  export {
70
- D as default
82
+ I as default
71
83
  };
@@ -1,6 +1,6 @@
1
1
  import { ReactNode, SyntheticEvent } from 'react';
2
- import { ImageProps } from '../../../../shared/components/Image';
3
2
  import { FlexboxProps } from 'node_modules/@dotss/ui/Flexbox/Flexbox';
3
+ import { ImageProps } from '../../../../shared/components/Image';
4
4
  import { BannerProps } from '..';
5
5
  export interface Carousel2AccountProps extends Omit<FlexboxProps, 'title' | 'id'> {
6
6
  id: number;
@@ -1,39 +1,40 @@
1
- import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
- import b from "@dotss/ui/core/useTheme";
1
+ import { jsxs as n, jsx as r } from "react/jsx-runtime";
2
+ import k from "@dotss/ui/core/useTheme";
3
3
  import l from "@dotss/ui/Flexbox";
4
+ import v from "@dotss/ui/hooks/useCheckHoverPossible/useCheckHoverPossible";
4
5
  import c from "@dotss/ui/Typography";
5
- import C from "../../../../shared/components/Carousel/Carousel.mjs";
6
- import x from "../../../../shared/components/Carousel/CarouselSlide/CarouselSlide.mjs";
7
- import S from "../../../../shared/components/Image/Image.mjs";
6
+ import x from "../../../../shared/components/Carousel/Carousel.mjs";
7
+ import S from "../../../../shared/components/Carousel/CarouselSlide/CarouselSlide.mjs";
8
+ import w from "../../../../shared/components/Image/Image.mjs";
8
9
  import "@dotss/ui";
9
- function R({
10
- id: d,
11
- title: m,
12
- banners: s,
13
- onClickBanner: o,
14
- imageProps: u,
10
+ function T({
11
+ id: s,
12
+ title: u,
13
+ banners: m,
14
+ onClickBanner: a,
15
+ imageProps: g,
15
16
  ...h
16
17
  }) {
17
- const { spacing: a } = b(), g = (t, i) => (r) => {
18
- o && typeof o == "function" && (r.stopPropagation(), r.preventDefault(), o(t, i, r));
18
+ const { spacing: i, palette: d } = k(), { isHoverPossible: f } = v(), b = (o, t) => (e) => {
19
+ a && typeof a == "function" && (e.stopPropagation(), e.preventDefault(), a(o, t, e));
19
20
  };
20
21
  return /* @__PURE__ */ n(l, { tag: "section", flexDirection: "column", inlineCSS: { width: "100%" }, ...h, children: [
21
- /* @__PURE__ */ e(
22
+ /* @__PURE__ */ r(
22
23
  c,
23
24
  {
24
- id: `banner-account-carousel2-${d}`,
25
+ id: `banner-account-carousel2-${s}`,
25
26
  variant: "h2B",
26
27
  inlineCSS: {
27
28
  whiteSpace: "pre-wrap",
28
29
  wordBreak: "keep-all",
29
- paddingLeft: a.content(4),
30
- paddingRight: a.content(4),
31
- marginBottom: a.content(4)
30
+ paddingLeft: i.content(4),
31
+ paddingRight: i.content(4),
32
+ marginBottom: i.content(4)
32
33
  },
33
- children: m
34
+ children: u
34
35
  }
35
36
  ),
36
- /* @__PURE__ */ e(C, { rowCount: 1, step: 1, spacing: 3, children: s.map(({ id: t, title: i, subTitle: r, url: p, image: f }) => /* @__PURE__ */ e(x, { children: /* @__PURE__ */ n(
37
+ /* @__PURE__ */ r(x, { rowCount: 1, step: 1, spacing: 3, children: m.map(({ id: o, title: t, subTitle: e, url: p, image: C }) => /* @__PURE__ */ r(S, { children: /* @__PURE__ */ n(
37
38
  l,
38
39
  {
39
40
  tag: "a",
@@ -41,34 +42,45 @@ function R({
41
42
  flexDirection: "column",
42
43
  gap: 3,
43
44
  draggable: !1,
44
- onClick: g(p, t),
45
- inlineCSS: { width: 240 },
45
+ onClick: b(p, o),
46
+ inlineCSS: {
47
+ width: 240,
48
+ borderRadius: 12,
49
+ '&:active:not([aria-disabled="true"])': {
50
+ backgroundColor: d.background.primary
51
+ },
52
+ ...f && {
53
+ '&:hover:not([aria-disabled="true"])': {
54
+ backgroundColor: d.background.primary
55
+ }
56
+ }
57
+ },
46
58
  children: [
47
- /* @__PURE__ */ e(
48
- S,
59
+ /* @__PURE__ */ r(
60
+ w,
49
61
  {
50
- src: f || "",
62
+ src: C || "",
51
63
  width: 240,
52
64
  height: 168,
53
- alt: `${i} 이미지`,
65
+ alt: `${t} 이미지`,
54
66
  "aria-hidden": !0,
55
67
  draggable: !1,
56
68
  borderRadius: 12,
57
69
  enableFallback: !0,
58
70
  enableErrorFallback: !0,
59
71
  style: { objectFit: "cover" },
60
- ...u
72
+ ...g
61
73
  }
62
74
  ),
63
75
  /* @__PURE__ */ n(l, { flexDirection: "column", gap: 1, children: [
64
- /* @__PURE__ */ e(c, { tag: "p", variant: "h4B", lineClamp: 1, children: i }),
65
- /* @__PURE__ */ e(c, { tag: "p", variant: "b4R", lineClamp: 1, color: "grey.70", children: r })
76
+ /* @__PURE__ */ r(c, { tag: "p", variant: "h4B", lineClamp: 1, children: t }),
77
+ /* @__PURE__ */ r(c, { tag: "p", variant: "b4R", lineClamp: 1, color: "grey.70", children: e })
66
78
  ] })
67
79
  ]
68
80
  }
69
- ) }, `tictoccroc-carousel2-account-${t}`)) })
81
+ ) }, `tictoccroc-carousel2-account-${o}`)) })
70
82
  ] });
71
83
  }
72
84
  export {
73
- R as default
85
+ T as default
74
86
  };
@@ -1,6 +1,6 @@
1
1
  import { ReactNode, SyntheticEvent } from 'react';
2
- import { ImageProps } from '../../../../shared/components/Image';
3
2
  import { FlexboxProps } from 'node_modules/@dotss/ui/Flexbox/Flexbox';
3
+ import { ImageProps } from '../../../../shared/components/Image';
4
4
  import { BannerProps } from '..';
5
5
  export interface TextAccountProps extends Omit<FlexboxProps, 'title' | 'id'> {
6
6
  id: number;
@@ -18,5 +18,5 @@ export interface AvailableScheduleSectionProps extends FlexboxProps {
18
18
  };
19
19
  };
20
20
  }
21
- declare const AvailableScheduleSection: any;
21
+ declare const AvailableScheduleSection: import('react').ForwardRefExoticComponent<Omit<AvailableScheduleSectionProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
22
22
  export default AvailableScheduleSection;
@@ -3,5 +3,5 @@ export interface CareNoteSectionProps extends FlexboxProps {
3
3
  totalCount: number;
4
4
  onClickViewAll?: () => void;
5
5
  }
6
- declare const CareNoteSection: any;
6
+ declare const CareNoteSection: import('react').ForwardRefExoticComponent<Omit<CareNoteSectionProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
7
7
  export default CareNoteSection;
@@ -3,5 +3,5 @@ export interface ParentReviewSectionProps extends FlexboxProps {
3
3
  totalCount: number;
4
4
  onClickViewAll?: () => void;
5
5
  }
6
- declare const ParentReviewSection: any;
6
+ declare const ParentReviewSection: import('react').ForwardRefExoticComponent<Omit<ParentReviewSectionProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
7
7
  export default ParentReviewSection;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dotss/tictoccroc",
3
3
  "type": "module",
4
- "version": "0.3.0",
4
+ "version": "0.3.2",
5
5
  "description": "Tictoccroc shared components, hooks, utils, and APIs for Dotss",
6
6
  "main": "./dist/index.mjs",
7
7
  "module": "./dist/index.mjs",
@@ -103,6 +103,7 @@
103
103
  "devDependencies": {
104
104
  "@emotion/react": "^11.14.0",
105
105
  "@emotion/styled": "^11.14.0",
106
+ "@storybook/addon-docs": "^9.0.4",
106
107
  "@storybook/addon-onboarding": "^9.0.4",
107
108
  "@storybook/react-vite": "^9.0.4",
108
109
  "@types/node": "^22.15.29",
@@ -111,7 +112,11 @@
111
112
  "glob": "^10.4.2",
112
113
  "storybook": "^9.0.4",
113
114
  "vite-plugin-dts": "^4.5.4",
114
- "vitest": "^1.6.0"
115
+ "vitest": "^1.6.0",
116
+ "react": "^18.0.0",
117
+ "react-dom": "^18.0.0",
118
+ "@types/react": "^18.0.0",
119
+ "@types/react-dom": "^18.0.0"
115
120
  },
116
121
  "peerDependencies": {
117
122
  "@dotss/ui": ">=1.0.3",