@dotss/tictoccroc 0.0.9 → 0.0.10

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/dist/index.mjs CHANGED
@@ -9,15 +9,15 @@ import { default as g } from "./shared/components/MediaDialog/MediaDialogFooter/
9
9
  import { default as y } from "./shared/components/MediaDialog/MediaDialogToolbar/MediaDialogToolbar.mjs";
10
10
  import { default as A } from "./shared/components/Swiper/Swiper.mjs";
11
11
  import { default as v } from "./shared/components/Swiper/SwiperBlock/SwiperBlock.mjs";
12
- import { default as B } from "./shared/components/Carousel/Carousel.mjs";
12
+ import { default as h } from "./shared/components/Carousel/Carousel.mjs";
13
13
  import { default as I } from "./shared/components/Carousel/CarouselSlide/CarouselSlide.mjs";
14
14
  import { default as M } from "./shared/components/TimePicker/TimePicker.mjs";
15
15
  import { default as R } from "./shared/components/Roller/Roller.mjs";
16
16
  import { default as T } from "./shared/components/Roller/RollerBlock/RollerBlock.mjs";
17
17
  import { default as G } from "./shared/components/Image/Image.mjs";
18
- import { default as K } from "./shared/components/Calendar/Calendar.mjs";
19
- import { default as Q } from "./shared/components/Masonry/Masonry.mjs";
20
- import { default as F } from "./shared/components/Masonry/MasonryBlock/MasonryBlock.mjs";
18
+ import { default as F } from "./shared/components/Calendar/Calendar.mjs";
19
+ import { default as N } from "./shared/components/Masonry/Masonry.mjs";
20
+ import { default as j } from "./shared/components/Masonry/MasonryBlock/MasonryBlock.mjs";
21
21
  import { default as V } from "./shared/components/LoadingAnnouncer/LoadingAnnouncer.mjs";
22
22
  import { default as z } from "./shared/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs";
23
23
  import { default as J } from "./shared/utils/getImageUrl/getImageUrl.mjs";
@@ -32,77 +32,79 @@ import { default as se } from "./shared/utils/objectToQueryString/objectToQueryS
32
32
  import { default as ue } from "./shared/utils/getVimeoId/getVimeoId.mjs";
33
33
  import { default as ie } from "./shared/utils/parseQueryString/parseQueryString.mjs";
34
34
  import { default as ce } from "./shared/utils/share/share.mjs";
35
- import { default as ge } from "./teacher/profile/components/ProfileSummary/ProfileSummary.mjs";
36
- import { default as ye } from "./teacher/profile/components/StatBadgeCollection/StatBadgeCollection.mjs";
37
- import { default as Ae } from "./teacher/profile/components/StatBadgeCollection/StatBadge/StatBadge.mjs";
38
- import { default as ve } from "./teacher/profile/components/ActivityGallery/ActivityGallery.mjs";
39
- import { default as Be } from "./teacher/profile/components/ActivityGallery/ActivityGalleryItem/ActivityGalleryItem.mjs";
40
- import { default as Ie } from "./teacher/profile/components/CertificateSection/CertificateSection.mjs";
41
- import { default as Me } from "./teacher/profile/components/CertificateSection/CertificateItem/CertificateItem.mjs";
42
- import { default as Re } from "./teacher/profile/components/CareerSection/CareerSection.mjs";
43
- import { default as Te } from "./teacher/profile/components/CareerSection/CareerItem/CareerItem.mjs";
44
- import { default as Ge } from "./teacher/profile/components/EducationSection/EducationSection.mjs";
45
- import { default as Ke } from "./teacher/profile/components/EducationSection/EducationItem/EducationItem.mjs";
46
- import { default as Qe } from "./teacher/profile/components/PreferredActivityKeywordGroup/PreferredActivityKeywordGroup.mjs";
47
- import { default as Fe } from "./teacher/profile/components/PreferredAgeGroup/PreferredAgeGroup.mjs";
48
- import { getPreferredAgeKeywords as Ve } from "./teacher/profile/components/PreferredAgeGroup/PreferredAgeGroup.utils.mjs";
49
- import { default as ze } from "./teacher/profile/components/AbilityCollection/AbilityCollection.mjs";
50
- import { default as Je } from "./teacher/profile/components/AbilityCollection/AbilityBadge/AbilityBadge.mjs";
51
- import { getAbilityCollection as We } from "./teacher/profile/components/AbilityCollection/AbilityCollection.utils.mjs";
52
- import { default as Ye } from "./teacher/profile/components/AvailableScheduleSection/AvailableScheduleSection.mjs";
53
- import { default as _e } from "./teacher/profile/components/ClassNotesSection/ClassNotesSection.mjs";
54
- import { default as et } from "./teacher/profile/components/ClassNotesSection/ClassNote/ClassNote.mjs";
55
- import { default as ot } from "./teacher/profile/components/ParentReviewSection/ParentReviewSection.mjs";
56
- import { getChildLabel as at } from "./teacher/profile/components/ParentReviewSection/ParentReviewSection.utils.mjs";
57
- import { default as lt } from "./teacher/profile/components/ParentReviewSection/ParentReviewCard/ParentReviewCard.mjs";
35
+ import { default as ge } from "./shared/utils/dayFlagToDay/dayFlagToDay.mjs";
36
+ import { default as ye } from "./teacher/profile/components/ProfileSummary/ProfileSummary.mjs";
37
+ import { default as Ae } from "./teacher/profile/components/StatBadgeCollection/StatBadgeCollection.mjs";
38
+ import { default as ve } from "./teacher/profile/components/StatBadgeCollection/StatBadge/StatBadge.mjs";
39
+ import { default as he } from "./teacher/profile/components/ActivityGallery/ActivityGallery.mjs";
40
+ import { default as Ie } from "./teacher/profile/components/ActivityGallery/ActivityGalleryItem/ActivityGalleryItem.mjs";
41
+ import { default as Me } from "./teacher/profile/components/CertificateSection/CertificateSection.mjs";
42
+ import { default as Re } from "./teacher/profile/components/CertificateSection/CertificateItem/CertificateItem.mjs";
43
+ import { default as Te } from "./teacher/profile/components/CareerSection/CareerSection.mjs";
44
+ import { default as Ge } from "./teacher/profile/components/CareerSection/CareerItem/CareerItem.mjs";
45
+ import { default as Fe } from "./teacher/profile/components/EducationSection/EducationSection.mjs";
46
+ import { default as Ne } from "./teacher/profile/components/EducationSection/EducationItem/EducationItem.mjs";
47
+ import { default as je } from "./teacher/profile/components/PreferredActivityKeywordGroup/PreferredActivityKeywordGroup.mjs";
48
+ import { default as Ve } from "./teacher/profile/components/PreferredAgeGroup/PreferredAgeGroup.mjs";
49
+ import { getPreferredAgeKeywords as ze } from "./teacher/profile/components/PreferredAgeGroup/PreferredAgeGroup.utils.mjs";
50
+ import { default as Je } from "./teacher/profile/components/AbilityCollection/AbilityCollection.mjs";
51
+ import { default as We } from "./teacher/profile/components/AbilityCollection/AbilityBadge/AbilityBadge.mjs";
52
+ import { getAbilityCollection as Ye } from "./teacher/profile/components/AbilityCollection/AbilityCollection.utils.mjs";
53
+ import { default as _e } from "./teacher/profile/components/AvailableScheduleSection/AvailableScheduleSection.mjs";
54
+ import { default as et } from "./teacher/profile/components/ClassNotesSection/ClassNotesSection.mjs";
55
+ import { default as ot } from "./teacher/profile/components/ClassNotesSection/ClassNote/ClassNote.mjs";
56
+ import { default as at } from "./teacher/profile/components/ParentReviewSection/ParentReviewSection.mjs";
57
+ import { getChildLabel as lt } from "./teacher/profile/components/ParentReviewSection/ParentReviewSection.utils.mjs";
58
+ import { default as st } from "./teacher/profile/components/ParentReviewSection/ParentReviewCard/ParentReviewCard.mjs";
58
59
  export {
59
- Je as AbilityBadge,
60
- ze as AbilityCollection,
61
- ve as ActivityGallery,
62
- Be as ActivityGalleryItem,
63
- Ye as AvailableScheduleSection,
64
- K as Calendar,
65
- Te as CareerItem,
66
- Re as CareerSection,
67
- B as Carousel,
60
+ We as AbilityBadge,
61
+ Je as AbilityCollection,
62
+ he as ActivityGallery,
63
+ Ie as ActivityGalleryItem,
64
+ _e as AvailableScheduleSection,
65
+ F as Calendar,
66
+ Ge as CareerItem,
67
+ Te as CareerSection,
68
+ h as Carousel,
68
69
  I as CarouselSlide,
69
- Me as CertificateItem,
70
- Ie as CertificateSection,
71
- et as ClassNote,
72
- _e as ClassNotesSection,
73
- Ke as EducationItem,
74
- Ge as EducationSection,
70
+ Re as CertificateItem,
71
+ Me as CertificateSection,
72
+ ot as ClassNote,
73
+ et as ClassNotesSection,
74
+ Ne as EducationItem,
75
+ Fe as EducationSection,
75
76
  G as Image,
76
77
  V as LoadingAnnouncer,
77
- Q as Masonry,
78
- F as MasonryBlock,
78
+ N as Masonry,
79
+ j as MasonryBlock,
79
80
  i as MediaBlock,
80
81
  u as MediaDialog,
81
82
  c as MediaDialogContent,
82
83
  g as MediaDialogFooter,
83
84
  y as MediaDialogToolbar,
84
- lt as ParentReviewCard,
85
- ot as ParentReviewSection,
86
- Qe as PreferredActivityKeywordGroup,
87
- Fe as PreferredAgeGroup,
88
- ge as ProfileSummary,
85
+ st as ParentReviewCard,
86
+ at as ParentReviewSection,
87
+ je as PreferredActivityKeywordGroup,
88
+ Ve as PreferredAgeGroup,
89
+ ye as ProfileSummary,
89
90
  R as Roller,
90
91
  T as RollerBlock,
91
92
  l as ScheduleBlock,
92
93
  a as ScheduleEvent,
93
94
  o as Scheduler,
94
- Ae as StatBadge,
95
- ye as StatBadgeCollection,
95
+ ve as StatBadge,
96
+ Ae as StatBadgeCollection,
96
97
  A as Swiper,
97
98
  v as SwiperBlock,
98
99
  M as TimePicker,
99
100
  le as birthDateToAge,
100
- We as getAbilityCollection,
101
+ ge as dayFlagToDay,
102
+ Ye as getAbilityCollection,
101
103
  s as getAvailableDateRange,
102
- at as getChildLabel,
104
+ lt as getChildLabel,
103
105
  _ as getDateRange,
104
106
  J as getImageUrl,
105
- Ve as getPreferredAgeKeywords,
107
+ ze as getPreferredAgeKeywords,
106
108
  Y as getTimeRange,
107
109
  ue as getVimeoId,
108
110
  ee as isAndroid,
@@ -1,5 +1,6 @@
1
1
  import { Dayjs } from 'dayjs';
2
2
  import { ScheduleEventProps } from './ScheduleEvent/ScheduleEvent';
3
+ import { DayFlag } from '../../typings/common';
3
4
  export interface ScheduleEventWithRange extends ScheduleEventProps {
4
5
  start: number;
5
6
  end: number;
@@ -27,7 +28,7 @@ export declare function getAvailableDateRange(startDate: string | Date | Dayjs,
27
28
  endDate: string;
28
29
  startTime: number;
29
30
  endTime: number;
30
- weekDay: string | number;
31
+ dayFlag: DayFlag[];
31
32
  oneDayDate: string | null;
32
33
  }[];
33
34
  mergedTimeBlocks: boolean;
@@ -1,7 +1,8 @@
1
1
  import s from "dayjs";
2
- import g from "../../utils/getDateRange/getDateRange.mjs";
3
- import y from "../../utils/getTimeRange/getTimeRange.mjs";
4
- function M(u, n = []) {
2
+ import g from "../../utils/dayFlagToDay/dayFlagToDay.mjs";
3
+ import v from "../../utils/getDateRange/getDateRange.mjs";
4
+ import E from "../../utils/getTimeRange/getTimeRange.mjs";
5
+ function C(u, n = []) {
5
6
  const a = Array.from({ length: 7 }, (e, f) => u.add(f, "day")), i = u, o = u.add(6, "day").endOf("day"), m = n.map((e) => {
6
7
  const f = s(e.startDate), t = s(e.endDate).endOf("day"), r = f.isBefore(i) ? i : f, c = t.isAfter(o) ? o : t, l = r.diff(i, "day"), p = c.diff(r, "day") + 1;
7
8
  return {
@@ -12,12 +13,12 @@ function M(u, n = []) {
12
13
  }).filter((e) => e.start <= 6 && e.end >= 0);
13
14
  return { days: a.map((e) => e), scheduleEvents: m };
14
15
  }
15
- function _(u, n) {
16
+ function O(u, n) {
16
17
  return u.filter(
17
18
  (a) => s(a.startDate).isBefore(n.endOf("day")) && s(a.endDate).isAfter(n.startOf("day"))
18
19
  );
19
20
  }
20
- function Y(u, n) {
21
+ function x(u, n) {
21
22
  const a = n.startOf("day"), i = n.endOf("day"), m = [...u.filter(
22
23
  (t) => s(t.startDate).isBefore(i) && s(t.endDate).isAfter(a)
23
24
  ).map((t) => ({
@@ -62,20 +63,20 @@ function D(u) {
62
63
  const i = n.length;
63
64
  return a.forEach((o) => o.totalColumns = i), a;
64
65
  }
65
- function C(u) {
66
+ function A(u) {
66
67
  const n = s(u);
67
68
  return n.hour() * 60 + n.minute();
68
69
  }
69
- function O(u, n, {
70
+ function b(u, n, {
70
71
  schedules: a,
71
72
  mergedTimeBlocks: i = !1
72
73
  }) {
73
- return g(u, n).flatMap(({ value: o }, m) => {
74
- const e = a.filter(({ startDate: r, endDate: c, weekDay: l }) => {
74
+ return v(u, n).flatMap(({ value: o }, m) => {
75
+ const e = a.filter(({ startDate: r, endDate: c, dayFlag: l }) => {
75
76
  const p = s(r), h = s(c);
76
- return p.isAfter(o) || h.isBefore(o) ? !1 : String(l) === o.getDay().toString();
77
+ return p.isAfter(o) || h.isBefore(o) ? !1 : l.some((y) => g(y) === s(o).day());
77
78
  }).filter(({ oneDayDate: r }) => r ? s(r).isSame(o, "date") : !0).flatMap(
78
- ({ id: r, startTime: c, endTime: l }) => y(Number(c), Number(l), {
79
+ ({ id: r, startTime: c, endTime: l }) => E(Number(c), Number(l), {
79
80
  step: i ? l - c : void 0,
80
81
  pairs: !i
81
82
  }).map(({ value: p, label: h }) => ({
@@ -95,9 +96,9 @@ function O(u, n, {
95
96
  }
96
97
  export {
97
98
  D as assignColumnsToGroup,
98
- M as generateWeek,
99
- O as getAvailableDateRange,
100
- _ as getDayScheduleEvents,
101
- C as getMinutesFromMidnight,
102
- Y as resolvePositionedScheduleEventsForDate
99
+ C as generateWeek,
100
+ b as getAvailableDateRange,
101
+ O as getDayScheduleEvents,
102
+ A as getMinutesFromMidnight,
103
+ x as resolvePositionedScheduleEventsForDate
103
104
  };
@@ -0,0 +1,9 @@
1
+ export declare const enum DayFlag {
2
+ SUN = "SUN",
3
+ MON = "MON",
4
+ TUE = "TUE",
5
+ WED = "WED",
6
+ THU = "THU",
7
+ FRI = "FRI",
8
+ SAT = "SAT"
9
+ }
@@ -0,0 +1,4 @@
1
+ var U = /* @__PURE__ */ ((T) => (T.SUN = "SUN", T.MON = "MON", T.TUE = "TUE", T.WED = "WED", T.THU = "THU", T.FRI = "FRI", T.SAT = "SAT", T))(U || {});
2
+ export {
3
+ U as DayFlag
4
+ };
@@ -0,0 +1 @@
1
+ export * from './common';
@@ -0,0 +1,4 @@
1
+ import { DayFlag as r } from "./common.mjs";
2
+ export {
3
+ r as DayFlag
4
+ };
@@ -0,0 +1,2 @@
1
+ import { DayFlag } from '../../typings/common';
2
+ export default function dayFlagToDay(dayFlag?: DayFlag): 1 | 0 | 2 | 4 | 3 | 5 | 6 | null;
@@ -0,0 +1,24 @@
1
+ import { DayFlag as r } from "../../typings/common.mjs";
2
+ function t(e) {
3
+ switch (e) {
4
+ case r.SUN:
5
+ return 0;
6
+ case r.MON:
7
+ return 1;
8
+ case r.TUE:
9
+ return 2;
10
+ case r.WED:
11
+ return 3;
12
+ case r.THU:
13
+ return 4;
14
+ case r.FRI:
15
+ return 5;
16
+ case r.SAT:
17
+ return 6;
18
+ default:
19
+ return null;
20
+ }
21
+ }
22
+ export {
23
+ t as default
24
+ };
@@ -0,0 +1,2 @@
1
+ import { default as dayFlagToDay } from './dayFlagToDay';
2
+ export default dayFlagToDay;
@@ -0,0 +1,4 @@
1
+ import o from "./dayFlagToDay.mjs";
2
+ export {
3
+ o as default
4
+ };
@@ -10,3 +10,4 @@ export { default as objectToQueryString } from './objectToQueryString';
10
10
  export { default as getVimeoId } from './getVimeoId';
11
11
  export { default as parseQueryString } from './parseQueryString';
12
12
  export { default as share } from './share';
13
+ export { default as dayFlagToDay } from './dayFlagToDay';
@@ -1,26 +1,28 @@
1
1
  import { default as t } from "./getImageUrl/getImageUrl.mjs";
2
2
  import { default as o } from "./isServer/isServer.mjs";
3
3
  import { default as s } from "./getTimeRange/getTimeRange.mjs";
4
- import { default as d } from "./getDateRange/getDateRange.mjs";
5
- import { default as u } from "./isAndroid/isAndroid.mjs";
4
+ import { default as p } from "./getDateRange/getDateRange.mjs";
5
+ import { default as l } from "./isAndroid/isAndroid.mjs";
6
6
  import { default as x } from "./isApp/isApp.mjs";
7
7
  import { default as i } from "./isDesktop/isDesktop.mjs";
8
- import { default as A } from "./birthDateToAge/birthDateToAge.mjs";
9
- import { default as S } from "./objectToQueryString/objectToQueryString.mjs";
10
- import { default as b } from "./getVimeoId/getVimeoId.mjs";
11
- import { default as y } from "./parseQueryString/parseQueryString.mjs";
8
+ import { default as y } from "./birthDateToAge/birthDateToAge.mjs";
9
+ import { default as T } from "./objectToQueryString/objectToQueryString.mjs";
10
+ import { default as S } from "./getVimeoId/getVimeoId.mjs";
11
+ import { default as h } from "./parseQueryString/parseQueryString.mjs";
12
12
  import { default as Q } from "./share/share.mjs";
13
+ import { default as c } from "./dayFlagToDay/dayFlagToDay.mjs";
13
14
  export {
14
- A as birthDateToAge,
15
- d as getDateRange,
15
+ y as birthDateToAge,
16
+ c as dayFlagToDay,
17
+ p as getDateRange,
16
18
  t as getImageUrl,
17
19
  s as getTimeRange,
18
- b as getVimeoId,
19
- u as isAndroid,
20
+ S as getVimeoId,
21
+ l as isAndroid,
20
22
  x as isApp,
21
23
  i as isDesktop,
22
24
  o as isServer,
23
- S as objectToQueryString,
24
- y as parseQueryString,
25
+ T as objectToQueryString,
26
+ h as parseQueryString,
25
27
  Q as share
26
28
  };
@@ -7,8 +7,8 @@ function F({
7
7
  name: t,
8
8
  iconBasePath: b,
9
9
  completed: d,
10
- detail: { open: S, label: m, description: p, onClose: s, onClickApply: g },
11
- ...o
10
+ detail: { open: S, label: m, description: p, onClose: s, onClickApply: o },
11
+ ...g
12
12
  }) {
13
13
  const {
14
14
  palette: { brand: l },
@@ -27,8 +27,8 @@ function F({
27
27
  "aria-controls": `ability-badge-detail-${t}`,
28
28
  "aria-expanded": S,
29
29
  gap: 2,
30
- ...o,
31
- inlineCSS: { width: "100%", cursor: "pointer", ...o == null ? void 0 : o.inlineCSS },
30
+ ...g,
31
+ inlineCSS: { width: "100%", cursor: "pointer", ...g == null ? void 0 : g.inlineCSS },
32
32
  children: [
33
33
  /* @__PURE__ */ i(
34
34
  h,
@@ -96,7 +96,7 @@ function F({
96
96
  alignItems: "center",
97
97
  justifyContent: "center",
98
98
  gap: 2,
99
- mb: d ? 4 : void 0,
99
+ mb: d || typeof o != "function" ? 4 : void 0,
100
100
  children: [
101
101
  /* @__PURE__ */ i(e, { tag: "h3", variant: "h3B", id: `ability-badge-detail-name-${t}`, children: t }),
102
102
  /* @__PURE__ */ i(v, { variant: "outlined", color: "blue", size: "small", children: m }),
@@ -116,7 +116,7 @@ function F({
116
116
  ]
117
117
  }
118
118
  ),
119
- !d && typeof g == "function" && /* @__PURE__ */ r(
119
+ !d && typeof o == "function" && /* @__PURE__ */ r(
120
120
  a,
121
121
  {
122
122
  mt: 2,
@@ -432,7 +432,7 @@ function F({
432
432
  ]
433
433
  }
434
434
  ),
435
- !d && typeof g == "function" && /* @__PURE__ */ i(R, { children: /* @__PURE__ */ i(L, { size: "large", onClick: g, children: "신청하기" }) })
435
+ !d && typeof o == "function" && /* @__PURE__ */ i(R, { children: /* @__PURE__ */ i(L, { size: "large", onClick: o, children: "신청하기" }) })
436
436
  ]
437
437
  }
438
438
  )
@@ -1,6 +1,6 @@
1
- import { jsxs as l, jsx as e } from "react/jsx-runtime";
1
+ import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
2
  import { forwardRef as w, useState as S } from "react";
3
- import { Flexbox as n, Typography as o, Button as k, Icon as I } from "@dotss/ui";
3
+ import { Flexbox as l, Typography as o, Button as k, Icon as I } from "@dotss/ui";
4
4
  import R from "@dotss/ui/core/useTheme";
5
5
  import D from "@dotss/ui/Switch";
6
6
  import j from "../../../../shared/components/Image/Image.mjs";
@@ -10,7 +10,7 @@ const M = w(
10
10
  function({
11
11
  children: g,
12
12
  title: m = "수업 가능 일정",
13
- action: c,
13
+ action: r,
14
14
  footer: d,
15
15
  flat: s = !1,
16
16
  schedulerProps: p,
@@ -20,12 +20,12 @@ const M = w(
20
20
  }, v) {
21
21
  const {
22
22
  palette: { grey: b, background: f }
23
- } = R(), [t, C] = S(!1), x = () => C((r) => !r), y = (r) => {
23
+ } = R(), [t, C] = S(!1), x = () => C((c) => !c), y = (c) => {
24
24
  var u;
25
- return (u = i.onChange) == null ? void 0 : u.call(i, r);
25
+ return (u = i.onChange) == null ? void 0 : u.call(i, c);
26
26
  };
27
- return /* @__PURE__ */ l(
28
- n,
27
+ return /* @__PURE__ */ n(
28
+ l,
29
29
  {
30
30
  ref: v,
31
31
  tag: "section",
@@ -40,9 +40,9 @@ const M = w(
40
40
  },
41
41
  children: [
42
42
  /* @__PURE__ */ e(o, { id: "available-schedule-section-title", tag: "h2", variant: "h2B", children: m }),
43
- i.active && /* @__PURE__ */ l(n, { flexDirection: "column", gap: 2, children: [
44
- /* @__PURE__ */ l(
45
- n,
43
+ i.active && /* @__PURE__ */ n(l, { flexDirection: "column", gap: 2, children: [
44
+ /* @__PURE__ */ n(
45
+ l,
46
46
  {
47
47
  flexDirection: "column",
48
48
  inlineCSS: {
@@ -54,7 +54,7 @@ const M = w(
54
54
  overflow: "hidden"
55
55
  },
56
56
  children: [
57
- !s && /* @__PURE__ */ e(n, { pt: 4 }),
57
+ !s && /* @__PURE__ */ e(l, { pt: 4 }),
58
58
  /* @__PURE__ */ e(
59
59
  A,
60
60
  {
@@ -87,10 +87,10 @@ const M = w(
87
87
  ]
88
88
  }
89
89
  ),
90
- d && /* @__PURE__ */ e(n, { id: "available-schedule-section-footer", tag: "footer", pl: 12, pr: 2, children: d })
90
+ d && /* @__PURE__ */ e(l, { id: "available-schedule-section-footer", tag: "footer", pl: 12, pr: 2, children: d })
91
91
  ] }),
92
- typeof i.onChange == "function" && /* @__PURE__ */ l(
93
- n,
92
+ typeof i.onChange == "function" && /* @__PURE__ */ n(
93
+ l,
94
94
  {
95
95
  alignItems: "center",
96
96
  justifyContent: "space-between",
@@ -105,6 +105,8 @@ const M = w(
105
105
  {
106
106
  selected: !!i.active,
107
107
  onChange: y,
108
+ selectedLabel: "활동중",
109
+ unselectedLabel: "쉬는중",
108
110
  inputProps: {
109
111
  id: "available-schedule-section-switch"
110
112
  }
@@ -113,8 +115,8 @@ const M = w(
113
115
  ]
114
116
  }
115
117
  ),
116
- !i.active && /* @__PURE__ */ l(
117
- n,
118
+ !i.active && /* @__PURE__ */ n(
119
+ l,
118
120
  {
119
121
  role: "status",
120
122
  pt: 5,
@@ -170,8 +172,8 @@ const M = w(
170
172
  ]
171
173
  }
172
174
  ),
173
- c && /* @__PURE__ */ e(
174
- n,
175
+ r && /* @__PURE__ */ e(
176
+ l,
175
177
  {
176
178
  mt: 2,
177
179
  alignItems: "center",
@@ -179,7 +181,7 @@ const M = w(
179
181
  inlineCSS: {
180
182
  width: "inherit"
181
183
  },
182
- children: c
184
+ children: r
183
185
  }
184
186
  )
185
187
  ]
@@ -66,8 +66,7 @@ function T({
66
66
  ),
67
67
  /* @__PURE__ */ e(h, { id: `career-item-title-${b}`, tag: "p", variant: "b2M", children: [
68
68
  v,
69
- f === "VERIFIED" && // TODO 아이콘 교체 필요
70
- /* @__PURE__ */ i(
69
+ f === "VERIFIED" && /* @__PURE__ */ i(
71
70
  d,
72
71
  {
73
72
  name: "InfoFill",
@@ -1,49 +1,47 @@
1
- import { jsxs as n, jsx as e, Fragment as w } from "react/jsx-runtime";
2
- import { useState as R, useRef as J, useEffect as B } from "react";
3
- import { Flexbox as t, Typography as o, Icon as p, Label as G, Button as K } from "@dotss/ui";
4
- import O from "@dotss/ui/core/useTheme";
5
- import L from "dayjs";
6
- import W from "../../../../shared/components/Image/Image.mjs";
7
- function Q({
1
+ import { jsxs as n, jsx as e, Fragment as C } from "react/jsx-runtime";
2
+ import { useState as I, useRef as F, useEffect as J } from "react";
3
+ import { Flexbox as r, Typography as t, Icon as s, Label as B, Button as A } from "@dotss/ui";
4
+ import G from "@dotss/ui/core/useTheme";
5
+ import K from "dayjs";
6
+ import O from "../../../../shared/components/Image/Image.mjs";
7
+ import { getLastActiveText as W } from "./ProfileSummary.utils.mjs";
8
+ function Y({
8
9
  avatar: i,
9
- introduction: r,
10
- name: h,
11
- grade: y,
12
- activeHours: b = 0,
13
- rating: f = 0,
14
- reviewCount: g = 0,
15
- adronment: k,
16
- lastActiveAt: E,
17
- action: D
10
+ introduction: l,
11
+ name: d,
12
+ grade: f,
13
+ activeHours: S = 0,
14
+ rating: p = 0,
15
+ reviewCount: h = 0,
16
+ adronment: R,
17
+ lastActiveAt: x,
18
+ action: L
18
19
  }) {
19
20
  const {
20
- palette: { background: C, brand: I, etc: z },
21
+ palette: { background: y, brand: E, etc: k },
21
22
  spacing: a
22
- } = O(), [u, M] = R(!1), [$, j] = R(!1), x = J(null), T = b >= 0 && g > 0, m = E ? L(E) : null, v = (l) => {
23
- const c = L(), s = c.diff(l, "minute"), S = c.diff(l, "hour"), d = c.diff(l, "day");
24
- return s < 1 ? "방금 전 활동" : s < 60 ? `${s}분 전 활동` : S < 24 ? `${S}시간 전 활동` : d < 7 ? `${d}일 전 활동` : d < 14 ? "1주 이내 활동" : d < 21 ? "2주 이내 활동" : d < 28 ? "3주 이내 활동" : d <= 30 ? "한 달 이내 활동" : null;
25
- }, H = (l) => {
26
- var c, s;
27
- switch (l.key) {
23
+ } = G(), [g, D] = I(!1), [v, z] = I(!1), b = F(null), T = S >= 0 && h > 0, m = x ? K(x) : null, w = W(m), j = (o) => {
24
+ var c, u;
25
+ switch (o.key) {
28
26
  case "Enter":
29
- l.preventDefault(), (c = i.onClick) == null || c.call(i, l);
27
+ o.preventDefault(), (c = i.onClick) == null || c.call(i, o);
30
28
  break;
31
29
  case " ":
32
- l.preventDefault(), (s = i.onClick) == null || s.call(i, l);
30
+ o.preventDefault(), (u = i.onClick) == null || u.call(i, o);
33
31
  break;
34
32
  }
35
- }, F = () => M((l) => !l);
36
- return B(() => {
37
- const l = () => {
38
- if (!x.current) return;
39
- const c = x.current, s = parseInt(window.getComputedStyle(c).lineHeight), S = c.scrollHeight, d = Math.ceil(S / s);
40
- j(d > 4);
33
+ }, M = () => D((o) => !o);
34
+ return J(() => {
35
+ const o = () => {
36
+ if (!b.current) return;
37
+ const c = b.current, u = parseInt(window.getComputedStyle(c).lineHeight), $ = c.scrollHeight, H = Math.ceil($ / u);
38
+ z(H > 4);
41
39
  };
42
- return l(), window.addEventListener("resize", l), () => {
43
- window.removeEventListener("resize", l);
40
+ return o(), window.addEventListener("resize", o), () => {
41
+ window.removeEventListener("resize", o);
44
42
  };
45
- }, [r.aboutMe]), /* @__PURE__ */ n(
46
- t,
43
+ }, [l.aboutMe]), /* @__PURE__ */ n(
44
+ r,
47
45
  {
48
46
  tag: "section",
49
47
  flexDirection: "column",
@@ -53,14 +51,14 @@ function Q({
53
51
  width: "100%"
54
52
  },
55
53
  children: [
56
- /* @__PURE__ */ n(t, { alignItems: "flex-start", gap: 4, children: [
57
- /* @__PURE__ */ n(t, { flexDirection: "column", gap: 2, alignItems: "center", justifyContent: "center", children: [
54
+ /* @__PURE__ */ n(r, { alignItems: "center", gap: 4, children: [
55
+ /* @__PURE__ */ n(r, { flexDirection: "column", gap: 2, alignItems: "center", justifyContent: "center", children: [
58
56
  /* @__PURE__ */ n(
59
- t,
57
+ r,
60
58
  {
61
59
  role: typeof i.onClick == "function" ? "button" : void 0,
62
60
  tabIndex: typeof i.onClick == "function" ? 0 : -1,
63
- onKeyDown: H,
61
+ onKeyDown: j,
64
62
  onClick: i.onClick,
65
63
  alignItems: "center",
66
64
  justifyContent: "center",
@@ -73,17 +71,17 @@ function Q({
73
71
  width: 88,
74
72
  height: 88,
75
73
  overflow: "hidden",
76
- backgroundColor: C.primary,
74
+ backgroundColor: y.primary,
77
75
  cursor: typeof i.onClick == "function" ? "pointer" : void 0
78
76
  },
79
77
  children: [
80
78
  i.src && /* @__PURE__ */ e(
81
- W,
79
+ O,
82
80
  {
83
81
  width: 88,
84
82
  height: 88,
85
83
  src: i.src,
86
- alt: `${h} 선생님 프로필 이미지`,
84
+ alt: `${d} 선생님 프로필 이미지`,
87
85
  fit: "cover",
88
86
  borderRadius: 100,
89
87
  style: {
@@ -92,7 +90,7 @@ function Q({
92
90
  }
93
91
  ),
94
92
  !i.src && !i.placeholder && /* @__PURE__ */ n(
95
- t,
93
+ r,
96
94
  {
97
95
  role: "status",
98
96
  flexDirection: "column",
@@ -100,7 +98,7 @@ function Q({
100
98
  justifyContent: "center",
101
99
  children: [
102
100
  /* @__PURE__ */ e(
103
- o,
101
+ t,
104
102
  {
105
103
  tag: "p",
106
104
  variant: "c3M",
@@ -109,14 +107,14 @@ function Q({
109
107
  children: "프로필 사진"
110
108
  }
111
109
  ),
112
- /* @__PURE__ */ e(o, { tag: "span", variant: "c5R", color: "etc.red", "aria-hidden": !0, children: "(필수)" })
110
+ /* @__PURE__ */ e(t, { tag: "span", variant: "c5R", color: "etc.red", "aria-hidden": !0, children: "(필수)" })
113
111
  ]
114
112
  }
115
113
  ),
116
114
  !i.src && i.placeholder && i.placeholder,
117
- i.status === "REJECTED" && /* @__PURE__ */ n(w, { children: [
115
+ i.status === "REJECTED" && /* @__PURE__ */ n(C, { children: [
118
116
  /* @__PURE__ */ e(
119
- t,
117
+ r,
120
118
  {
121
119
  alignItems: "center",
122
120
  justifyContent: "center",
@@ -127,13 +125,13 @@ function Q({
127
125
  width: "100%",
128
126
  height: "100%",
129
127
  opacity: 0.8,
130
- backgroundColor: C.primary,
128
+ backgroundColor: y.primary,
131
129
  zIndex: 1
132
130
  }
133
131
  }
134
132
  ),
135
133
  /* @__PURE__ */ e(
136
- p,
134
+ s,
137
135
  {
138
136
  name: "AlertFill",
139
137
  size: "xSmall",
@@ -147,15 +145,26 @@ function Q({
147
145
  }
148
146
  }
149
147
  ),
150
- /* @__PURE__ */ e(o, { role: "status", visuallyHidden: !0, children: "프로필 사진이 반려되었어요. 다시 등록해주세요." })
148
+ /* @__PURE__ */ e(t, { role: "status", visuallyHidden: !0, children: "프로필 사진이 반려되었어요. 다시 등록해주세요." })
151
149
  ] })
152
150
  ]
153
151
  }
154
152
  ),
155
- (m == null ? void 0 : m.isValid()) && /* @__PURE__ */ e(o, { tag: "p", variant: "c3M", color: "grey.50", children: v(m) })
153
+ (m == null ? void 0 : m.isValid()) && /* @__PURE__ */ e(
154
+ t,
155
+ {
156
+ tag: "p",
157
+ variant: "c3M",
158
+ color: "grey.50",
159
+ inlineCSS: {
160
+ visibility: w ? void 0 : "hidden"
161
+ },
162
+ children: w || "활동 정보 없음"
163
+ }
164
+ )
156
165
  ] }),
157
166
  /* @__PURE__ */ n(
158
- t,
167
+ r,
159
168
  {
160
169
  flexDirection: "column",
161
170
  justifyContent: "flex-start",
@@ -165,7 +174,7 @@ function Q({
165
174
  flexGrow: 1,
166
175
  children: [
167
176
  /* @__PURE__ */ n(
168
- t,
177
+ r,
169
178
  {
170
179
  alignItems: "center",
171
180
  gap: 2,
@@ -174,22 +183,22 @@ function Q({
174
183
  maxHeight: 30
175
184
  },
176
185
  children: [
177
- y && /* @__PURE__ */ e(
178
- G,
186
+ f && /* @__PURE__ */ e(
187
+ B,
179
188
  {
180
189
  variant: "outlined",
181
190
  size: "small",
182
191
  color: "blue",
183
- "aria-label": `${h} 선생님의 등급: ${y}`,
184
- children: y
192
+ "aria-label": `${d} 선생님의 등급: ${f}`,
193
+ children: f
185
194
  }
186
195
  ),
187
196
  /* @__PURE__ */ n(
188
- o,
197
+ t,
189
198
  {
190
199
  tag: "p",
191
200
  variant: "h2B",
192
- "aria-label": `${h} 선생님`,
201
+ "aria-label": `${d} 선생님`,
193
202
  inlineCSS: {
194
203
  flexGrow: 1,
195
204
  "& > span": {
@@ -198,17 +207,17 @@ function Q({
198
207
  }
199
208
  },
200
209
  children: [
201
- h,
210
+ d,
202
211
  /* @__PURE__ */ e("span", { "aria-hidden": !0, children: "선생님" })
203
212
  ]
204
213
  }
205
214
  ),
206
- k
215
+ R
207
216
  ]
208
217
  }
209
218
  ),
210
219
  T && /* @__PURE__ */ n(
211
- t,
220
+ r,
212
221
  {
213
222
  pl: 4,
214
223
  pr: 4,
@@ -219,25 +228,25 @@ function Q({
219
228
  gap: 5,
220
229
  inlineCSS: {
221
230
  borderRadius: 8,
222
- backgroundColor: C.primary
231
+ backgroundColor: y.primary
223
232
  },
224
233
  children: [
225
- /* @__PURE__ */ n(t, { alignItems: "center", role: "group", "aria-label": `누적 수업 ${b}시간`, children: [
226
- /* @__PURE__ */ e(p, { name: "TimeLine", size: "xSmall", color: "grey.70" }),
234
+ /* @__PURE__ */ n(r, { alignItems: "center", role: "group", "aria-label": `누적 수업 ${S}시간`, children: [
235
+ /* @__PURE__ */ e(s, { name: "TimeLine", size: "xSmall", color: "grey.70" }),
227
236
  /* @__PURE__ */ e(
228
- o,
237
+ t,
229
238
  {
230
239
  tag: "p",
231
240
  variant: "h4B",
232
241
  inlineCSS: {
233
242
  marginLeft: a.content(1),
234
- color: I.primary.text
243
+ color: E.primary.text
235
244
  },
236
- children: b.toLocaleString()
245
+ children: S.toLocaleString()
237
246
  }
238
247
  ),
239
248
  /* @__PURE__ */ e(
240
- o,
249
+ t,
241
250
  {
242
251
  tag: "span",
243
252
  variant: "b5R",
@@ -250,28 +259,28 @@ function Q({
250
259
  )
251
260
  ] }),
252
261
  /* @__PURE__ */ n(
253
- t,
262
+ r,
254
263
  {
255
264
  alignItems: "center",
256
265
  role: "group",
257
- "aria-label": f > 0 ? `평점 ${f}, 리뷰 ${g}개` : `평점 집계중, 리뷰 ${g}개`,
266
+ "aria-label": p > 0 ? `평점 ${p}, 리뷰 ${h}개` : `평점 집계중, 리뷰 ${h}개`,
258
267
  children: [
259
- /* @__PURE__ */ e(p, { name: "ReviewFill", size: "xSmall", color: "grey.70" }),
260
- f > 0 ? /* @__PURE__ */ n(w, { children: [
268
+ /* @__PURE__ */ e(s, { name: "ReviewLine", size: "xSmall", color: "grey.70" }),
269
+ p > 0 ? /* @__PURE__ */ n(C, { children: [
261
270
  /* @__PURE__ */ e(
262
- o,
271
+ t,
263
272
  {
264
273
  tag: "p",
265
274
  variant: "h4B",
266
275
  inlineCSS: {
267
276
  marginLeft: a.content(1),
268
- color: I.primary.text
277
+ color: E.primary.text
269
278
  },
270
- children: f.toLocaleString()
279
+ children: p.toLocaleString()
271
280
  }
272
281
  ),
273
282
  /* @__PURE__ */ n(
274
- o,
283
+ t,
275
284
  {
276
285
  tag: "span",
277
286
  variant: "b5R",
@@ -281,13 +290,13 @@ function Q({
281
290
  },
282
291
  children: [
283
292
  "(",
284
- g.toLocaleString(),
293
+ h.toLocaleString(),
285
294
  ")"
286
295
  ]
287
296
  }
288
297
  )
289
298
  ] }) : /* @__PURE__ */ e(
290
- o,
299
+ t,
291
300
  {
292
301
  tag: "p",
293
302
  variant: "h4R",
@@ -309,15 +318,15 @@ function Q({
309
318
  )
310
319
  ] }),
311
320
  /* @__PURE__ */ n(
312
- t,
321
+ r,
313
322
  {
314
323
  flexDirection: "column",
315
324
  inlineCSS: {
316
325
  position: "relative"
317
326
  },
318
327
  children: [
319
- (!r.summary || !r.aboutMe) && !r.placeholder && /* @__PURE__ */ n(
320
- o,
328
+ (!l.summary || !l.aboutMe) && !l.placeholder && /* @__PURE__ */ n(
329
+ t,
321
330
  {
322
331
  tag: "p",
323
332
  variant: "b4R",
@@ -325,7 +334,7 @@ function Q({
325
334
  "aria-label": "작성된 프로필 소개가 없어요.",
326
335
  inlineCSS: {
327
336
  "& > span": {
328
- color: z.red
337
+ color: k.red
329
338
  }
330
339
  },
331
340
  children: [
@@ -334,22 +343,22 @@ function Q({
334
343
  ]
335
344
  }
336
345
  ),
337
- (!r.summary || !r.aboutMe) && r.placeholder && r.placeholder,
338
- r.summary && r.aboutMe && /* @__PURE__ */ n(w, { children: [
339
- r.status === "REJECTED" && /* @__PURE__ */ e(o, { role: "status", visuallyHidden: !0, children: "프로필 소개가 반려되었어요. 다시 작성해주세요." }),
346
+ (!l.summary || !l.aboutMe) && l.placeholder && l.placeholder,
347
+ l.summary && l.aboutMe && /* @__PURE__ */ n(C, { children: [
348
+ l.status === "REJECTED" && /* @__PURE__ */ e(t, { role: "status", visuallyHidden: !0, children: "프로필 소개가 반려되었어요. 다시 작성해주세요." }),
340
349
  /* @__PURE__ */ n(
341
- o,
350
+ t,
342
351
  {
343
352
  tag: "dl",
344
353
  variant: "b4M",
345
- color: r.status === "REJECTED" ? "grey.30" : void 0,
354
+ color: l.status === "REJECTED" ? "grey.30" : void 0,
346
355
  inlineCSS: {
347
356
  display: "flex",
348
357
  alignItems: "center"
349
358
  },
350
359
  children: [
351
- r.status === "REJECTED" && /* @__PURE__ */ e(
352
- p,
360
+ l.status === "REJECTED" && /* @__PURE__ */ e(
361
+ s,
353
362
  {
354
363
  name: "AlertFill",
355
364
  size: "xSmall",
@@ -359,55 +368,55 @@ function Q({
359
368
  }
360
369
  }
361
370
  ),
362
- /* @__PURE__ */ e(t, { tag: "dt", visuallyHidden: !0, children: "한 줄 소개" }),
363
- /* @__PURE__ */ e("dd", { children: r.summary })
371
+ /* @__PURE__ */ e(r, { tag: "dt", visuallyHidden: !0, children: "한 줄 소개" }),
372
+ /* @__PURE__ */ e("dd", { children: l.summary })
364
373
  ]
365
374
  }
366
375
  ),
367
376
  /* @__PURE__ */ n(
368
- o,
377
+ t,
369
378
  {
370
- ref: x,
379
+ ref: b,
371
380
  id: "about-me",
372
381
  tag: "dl",
373
382
  variant: "b4R",
374
- color: r.status === "REJECTED" ? "grey.30" : "grey.70",
375
- lineClamp: u ? void 0 : 4,
383
+ color: l.status === "REJECTED" ? "grey.30" : "grey.70",
384
+ lineClamp: g ? void 0 : 4,
376
385
  inlineCSS: {
377
386
  marginTop: a.content(2),
378
387
  whiteSpace: "pre-wrap"
379
388
  },
380
389
  children: [
381
- /* @__PURE__ */ e(t, { tag: "dt", visuallyHidden: !0, children: "자기소개" }),
382
- /* @__PURE__ */ e("dd", { children: r.aboutMe })
390
+ /* @__PURE__ */ e(r, { tag: "dt", visuallyHidden: !0, children: "자기소개" }),
391
+ /* @__PURE__ */ e("dd", { children: l.aboutMe })
383
392
  ]
384
393
  }
385
394
  )
386
395
  ] }),
387
- $ && /* @__PURE__ */ e(
388
- K,
396
+ v && /* @__PURE__ */ e(
397
+ A,
389
398
  {
390
399
  variant: "text",
391
400
  size: "xSmall",
392
401
  color: "secondary",
393
- endAdornment: /* @__PURE__ */ e(p, { name: u ? "ChevronUpLine" : "ChevronDownLine" }),
394
- onClick: F,
395
- "aria-expanded": u,
402
+ endAdornment: /* @__PURE__ */ e(s, { name: g ? "ChevronUpLine" : "ChevronDownLine" }),
403
+ onClick: M,
404
+ "aria-expanded": g,
396
405
  "aria-controls": "about-me",
397
406
  inlineCSS: {
398
407
  marginLeft: "auto"
399
408
  },
400
- children: u ? "접기" : "더보기"
409
+ children: g ? "접기" : "더 보기"
401
410
  }
402
411
  )
403
412
  ]
404
413
  }
405
414
  ),
406
- D
415
+ L
407
416
  ]
408
417
  }
409
418
  );
410
419
  }
411
420
  export {
412
- Q as default
421
+ Y as default
413
422
  };
@@ -0,0 +1,2 @@
1
+ import { Dayjs } from 'dayjs';
2
+ export declare function getLastActiveText(lastActiveDate: Dayjs): string | null;
@@ -0,0 +1,8 @@
1
+ import u from "dayjs";
2
+ function o(f) {
3
+ const n = u(), i = n.diff(f, "minute"), t = n.diff(f, "hour"), r = n.diff(f, "day");
4
+ return i < 1 ? "방금 전 활동" : i < 60 ? `${i}분 전 활동` : t < 24 ? `${t}시간 전 활동` : r < 7 ? `${r}일 전 활동` : r < 14 ? "1주 이내 활동" : r < 21 ? "2주 이내 활동" : r < 28 ? "3주 이내 활동" : r <= 30 ? "한 달 이내 활동" : null;
5
+ }
6
+ export {
7
+ o as getLastActiveText
8
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dotss/tictoccroc",
3
3
  "type": "module",
4
- "version": "0.0.9",
4
+ "version": "0.0.10",
5
5
  "description": "Tictoccroc shared components, hooks, utils, and APIs for Dotss",
6
6
  "main": "./dist/index.mjs",
7
7
  "module": "./dist/index.mjs",
@@ -66,6 +66,14 @@
66
66
  "./shared/utils/*": {
67
67
  "import": "./dist/shared/utils/*/index.mjs",
68
68
  "types": "./dist/shared/utils/*/index.d.ts"
69
+ },
70
+ "./shared/typings": {
71
+ "import": "./dist/shared/typings/index.mjs",
72
+ "types": "./dist/shared/typings/index.d.ts"
73
+ },
74
+ "./shared/typings/*": {
75
+ "import": "./dist/shared/typings/*/index.mjs",
76
+ "types": "./dist/shared/typings/*/index.d.ts"
69
77
  }
70
78
  },
71
79
  "devDependencies": {