@tipp/ui 1.5.10 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/dist/app/index.cjs +274 -264
  2. package/dist/app/index.cjs.map +1 -1
  3. package/dist/app/index.js +29 -31
  4. package/dist/app/platform/coach-question-list.cjs +1 -1
  5. package/dist/app/platform/coach-question-list.cjs.map +1 -1
  6. package/dist/app/platform/coach-question-list.js +4 -4
  7. package/dist/app/platform/edit-coaching-time.cjs +63 -59
  8. package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
  9. package/dist/app/platform/edit-coaching-time.js +12 -14
  10. package/dist/app/platform/edit-service-type.cjs +2 -1
  11. package/dist/app/platform/edit-service-type.cjs.map +1 -1
  12. package/dist/app/platform/edit-service-type.js +12 -12
  13. package/dist/app/platform/goal-manage-card-edit.cjs +24 -4
  14. package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
  15. package/dist/app/platform/goal-manage-card-edit.js +12 -12
  16. package/dist/app/platform/goal-manage-card-read.cjs +10 -8
  17. package/dist/app/platform/goal-manage-card-read.cjs.map +1 -1
  18. package/dist/app/platform/goal-manage-card-read.js +5 -5
  19. package/dist/app/platform/on-offline-radio-card.cjs +2 -1
  20. package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
  21. package/dist/app/platform/on-offline-radio-card.js +11 -11
  22. package/dist/app/platform/report-card.cjs +1 -1
  23. package/dist/app/platform/report-card.cjs.map +1 -1
  24. package/dist/app/platform/report-card.js +4 -4
  25. package/dist/app/platform/reservation-card.cjs +81 -9
  26. package/dist/app/platform/reservation-card.cjs.map +1 -1
  27. package/dist/app/platform/reservation-card.d.cts +2 -0
  28. package/dist/app/platform/reservation-card.d.ts +2 -0
  29. package/dist/app/platform/reservation-card.js +12 -12
  30. package/dist/app/platform/session-card.cjs +104 -100
  31. package/dist/app/platform/session-card.cjs.map +1 -1
  32. package/dist/app/platform/session-card.js +14 -16
  33. package/dist/app/platform/session-review-simple-read.cjs +1 -1
  34. package/dist/app/platform/session-review-simple-read.cjs.map +1 -1
  35. package/dist/app/platform/session-review-simple-read.js +4 -4
  36. package/dist/app/platform/userInfos/coaching-customer-info/index.cjs +10 -34
  37. package/dist/app/platform/userInfos/coaching-customer-info/index.cjs.map +1 -1
  38. package/dist/app/platform/userInfos/coaching-customer-info/index.js +9 -9
  39. package/dist/app/platform/userInfos/coaching-customer-info/large.cjs +4 -11
  40. package/dist/app/platform/userInfos/coaching-customer-info/large.cjs.map +1 -1
  41. package/dist/app/platform/userInfos/coaching-customer-info/large.d.cts +1 -1
  42. package/dist/app/platform/userInfos/coaching-customer-info/large.d.ts +1 -1
  43. package/dist/app/platform/userInfos/coaching-customer-info/large.js +6 -6
  44. package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs +4 -11
  45. package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs.map +1 -1
  46. package/dist/app/platform/userInfos/coaching-customer-info/medium.d.cts +1 -1
  47. package/dist/app/platform/userInfos/coaching-customer-info/medium.d.ts +1 -1
  48. package/dist/app/platform/userInfos/coaching-customer-info/medium.js +6 -6
  49. package/dist/app/platform/userInfos/coaching-customer-info/small.cjs +4 -12
  50. package/dist/app/platform/userInfos/coaching-customer-info/small.cjs.map +1 -1
  51. package/dist/app/platform/userInfos/coaching-customer-info/small.d.cts +1 -1
  52. package/dist/app/platform/userInfos/coaching-customer-info/small.d.ts +1 -1
  53. package/dist/app/platform/userInfos/coaching-customer-info/small.js +5 -5
  54. package/dist/app/platform/userInfos/session-user-info-detail.cjs +1 -1
  55. package/dist/app/platform/userInfos/session-user-info-detail.cjs.map +1 -1
  56. package/dist/app/platform/userInfos/session-user-info-detail.js +6 -6
  57. package/dist/app/platform/userInfos/utils.cjs +1 -1
  58. package/dist/app/platform/userInfos/utils.cjs.map +1 -1
  59. package/dist/app/platform/userInfos/utils.d.cts +1 -0
  60. package/dist/app/platform/userInfos/utils.d.ts +1 -0
  61. package/dist/app/platform/userInfos/utils.js +5 -5
  62. package/dist/atoms/dialog.js +2 -2
  63. package/dist/atoms/drawer.cjs +38 -9
  64. package/dist/atoms/drawer.cjs.map +1 -1
  65. package/dist/atoms/drawer.js +2 -1
  66. package/dist/atoms/index.cjs +24 -2
  67. package/dist/atoms/index.cjs.map +1 -1
  68. package/dist/atoms/index.d.cts +1 -1
  69. package/dist/atoms/index.d.ts +1 -1
  70. package/dist/atoms/index.js +10 -8
  71. package/dist/chunk-2MNNK576.js +52 -0
  72. package/dist/chunk-2MNNK576.js.map +1 -0
  73. package/dist/chunk-3BDAXSFJ.js +46 -0
  74. package/dist/chunk-3BDAXSFJ.js.map +1 -0
  75. package/dist/chunk-3F6KWGBZ.js +89 -0
  76. package/dist/chunk-3F6KWGBZ.js.map +1 -0
  77. package/dist/chunk-4DHKHART.js +177 -0
  78. package/dist/chunk-4DHKHART.js.map +1 -0
  79. package/dist/chunk-4VVKVY67.js +45 -0
  80. package/dist/chunk-4VVKVY67.js.map +1 -0
  81. package/dist/chunk-55BS56C7.js +165 -0
  82. package/dist/chunk-55BS56C7.js.map +1 -0
  83. package/dist/chunk-5QTFO46W.js +177 -0
  84. package/dist/chunk-5QTFO46W.js.map +1 -0
  85. package/dist/chunk-5QXQPRW7.js +89 -0
  86. package/dist/chunk-5QXQPRW7.js.map +1 -0
  87. package/dist/chunk-643OBFGH.js +145 -0
  88. package/dist/chunk-643OBFGH.js.map +1 -0
  89. package/dist/chunk-6LNT56PI.js +30 -0
  90. package/dist/chunk-6LNT56PI.js.map +1 -0
  91. package/dist/chunk-6NK4TENV.js +244 -0
  92. package/dist/chunk-6NK4TENV.js.map +1 -0
  93. package/dist/chunk-6RTDC4IZ.js +145 -0
  94. package/dist/chunk-6RTDC4IZ.js.map +1 -0
  95. package/dist/chunk-7HTPOEYY.js +60 -0
  96. package/dist/chunk-7HTPOEYY.js.map +1 -0
  97. package/dist/chunk-7QSHSKGH.js +250 -0
  98. package/dist/chunk-7QSHSKGH.js.map +1 -0
  99. package/dist/chunk-7XPVJ35J.js +177 -0
  100. package/dist/chunk-7XPVJ35J.js.map +1 -0
  101. package/dist/chunk-AEM57IUZ.js +145 -0
  102. package/dist/chunk-AEM57IUZ.js.map +1 -0
  103. package/dist/chunk-BN23HSLB.js +145 -0
  104. package/dist/chunk-BN23HSLB.js.map +1 -0
  105. package/dist/chunk-BSDY5S2S.js +177 -0
  106. package/dist/chunk-BSDY5S2S.js.map +1 -0
  107. package/dist/chunk-BXSGWGPX.js +51 -0
  108. package/dist/chunk-BXSGWGPX.js.map +1 -0
  109. package/dist/chunk-C54BNXQ3.js +174 -0
  110. package/dist/chunk-C54BNXQ3.js.map +1 -0
  111. package/dist/chunk-DAAG2ECN.js +145 -0
  112. package/dist/chunk-DAAG2ECN.js.map +1 -0
  113. package/dist/chunk-DEC74YZM.js +277 -0
  114. package/dist/chunk-DEC74YZM.js.map +1 -0
  115. package/dist/chunk-EDGXK4S3.js +30 -0
  116. package/dist/chunk-EDGXK4S3.js.map +1 -0
  117. package/dist/chunk-EPHO2NHY.js +165 -0
  118. package/dist/chunk-EPHO2NHY.js.map +1 -0
  119. package/dist/chunk-FLHTCZJ6.js +145 -0
  120. package/dist/chunk-FLHTCZJ6.js.map +1 -0
  121. package/dist/chunk-FYMXBVJN.js +163 -0
  122. package/dist/chunk-FYMXBVJN.js.map +1 -0
  123. package/dist/chunk-G4HAO2PO.js +145 -0
  124. package/dist/chunk-G4HAO2PO.js.map +1 -0
  125. package/dist/chunk-GWJPOXZB.js +145 -0
  126. package/dist/chunk-GWJPOXZB.js.map +1 -0
  127. package/dist/chunk-GWV7ZQS7.js +165 -0
  128. package/dist/chunk-GWV7ZQS7.js.map +1 -0
  129. package/dist/chunk-HAXSZIZN.js +174 -0
  130. package/dist/chunk-HAXSZIZN.js.map +1 -0
  131. package/dist/chunk-HVKX7LGP.js +63 -0
  132. package/dist/chunk-HVKX7LGP.js.map +1 -0
  133. package/dist/chunk-HW5TXRPH.js +51 -0
  134. package/dist/chunk-HW5TXRPH.js.map +1 -0
  135. package/dist/chunk-HXUZQJQY.js +60 -0
  136. package/dist/chunk-HXUZQJQY.js.map +1 -0
  137. package/dist/chunk-I5NKXTH5.js +63 -0
  138. package/dist/chunk-I5NKXTH5.js.map +1 -0
  139. package/dist/chunk-ID5SXFYY.js +277 -0
  140. package/dist/chunk-ID5SXFYY.js.map +1 -0
  141. package/dist/chunk-JFAEGRYZ.js +145 -0
  142. package/dist/chunk-JFAEGRYZ.js.map +1 -0
  143. package/dist/chunk-JHZGOPC4.js +104 -0
  144. package/dist/chunk-JHZGOPC4.js.map +1 -0
  145. package/dist/chunk-KEVIRRIU.js +250 -0
  146. package/dist/chunk-KEVIRRIU.js.map +1 -0
  147. package/dist/chunk-KWVMO7QA.js +145 -0
  148. package/dist/chunk-KWVMO7QA.js.map +1 -0
  149. package/dist/chunk-KZQALSCC.js +277 -0
  150. package/dist/chunk-KZQALSCC.js.map +1 -0
  151. package/dist/chunk-LSZ6443S.js +250 -0
  152. package/dist/chunk-LSZ6443S.js.map +1 -0
  153. package/dist/chunk-MEVO4WQM.js +163 -0
  154. package/dist/chunk-MEVO4WQM.js.map +1 -0
  155. package/dist/chunk-MR7H7IVE.js +192 -0
  156. package/dist/chunk-MR7H7IVE.js.map +1 -0
  157. package/dist/chunk-NCAJKLJL.js +277 -0
  158. package/dist/chunk-NCAJKLJL.js.map +1 -0
  159. package/dist/chunk-NOU2SQ3S.js +145 -0
  160. package/dist/chunk-NOU2SQ3S.js.map +1 -0
  161. package/dist/chunk-NTS2GASQ.js +30 -0
  162. package/dist/chunk-NTS2GASQ.js.map +1 -0
  163. package/dist/chunk-OCCR3BYX.js +145 -0
  164. package/dist/chunk-OCCR3BYX.js.map +1 -0
  165. package/dist/chunk-P3IQELLW.js +103 -0
  166. package/dist/chunk-P3IQELLW.js.map +1 -0
  167. package/dist/chunk-P7MEVIA2.js +177 -0
  168. package/dist/chunk-P7MEVIA2.js.map +1 -0
  169. package/dist/chunk-PM2MEPSY.js +145 -0
  170. package/dist/chunk-PM2MEPSY.js.map +1 -0
  171. package/dist/chunk-PYR4SVP5.js +146 -0
  172. package/dist/chunk-PYR4SVP5.js.map +1 -0
  173. package/dist/chunk-Q4B4TVV6.js +52 -0
  174. package/dist/chunk-Q4B4TVV6.js.map +1 -0
  175. package/dist/chunk-Q76YER7W.js +177 -0
  176. package/dist/chunk-Q76YER7W.js.map +1 -0
  177. package/dist/chunk-QW3Q5PDH.js +250 -0
  178. package/dist/chunk-QW3Q5PDH.js.map +1 -0
  179. package/dist/chunk-RSCMNIHH.js +165 -0
  180. package/dist/chunk-RSCMNIHH.js.map +1 -0
  181. package/dist/chunk-RZDYA4LT.js +174 -0
  182. package/dist/chunk-RZDYA4LT.js.map +1 -0
  183. package/dist/chunk-S3F7WBI2.js +45 -0
  184. package/dist/chunk-S3F7WBI2.js.map +1 -0
  185. package/dist/chunk-SDY76VWM.js +145 -0
  186. package/dist/chunk-SDY76VWM.js.map +1 -0
  187. package/dist/chunk-SNL4BT3L.js +249 -0
  188. package/dist/chunk-SNL4BT3L.js.map +1 -0
  189. package/dist/chunk-T24Z37LZ.js +51 -0
  190. package/dist/chunk-T24Z37LZ.js.map +1 -0
  191. package/dist/chunk-TDRNTGNE.js +164 -0
  192. package/dist/chunk-TDRNTGNE.js.map +1 -0
  193. package/dist/chunk-TU453YST.js +63 -0
  194. package/dist/chunk-TU453YST.js.map +1 -0
  195. package/dist/chunk-UTBSTESQ.js +30 -0
  196. package/dist/chunk-UTBSTESQ.js.map +1 -0
  197. package/dist/chunk-VF5Q4NSV.js +174 -0
  198. package/dist/chunk-VF5Q4NSV.js.map +1 -0
  199. package/dist/chunk-VIOAD7BY.js +145 -0
  200. package/dist/chunk-VIOAD7BY.js.map +1 -0
  201. package/dist/chunk-VKXZLSWB.js +249 -0
  202. package/dist/chunk-VKXZLSWB.js.map +1 -0
  203. package/dist/chunk-VVZ6M3AZ.js +145 -0
  204. package/dist/chunk-VVZ6M3AZ.js.map +1 -0
  205. package/dist/chunk-WHPYQRMZ.js +145 -0
  206. package/dist/chunk-WHPYQRMZ.js.map +1 -0
  207. package/dist/chunk-WNSDISYV.js +54 -0
  208. package/dist/chunk-WNSDISYV.js.map +1 -0
  209. package/dist/chunk-X7RBL443.js +145 -0
  210. package/dist/chunk-X7RBL443.js.map +1 -0
  211. package/dist/chunk-XM5HV4U7.js +145 -0
  212. package/dist/chunk-XM5HV4U7.js.map +1 -0
  213. package/dist/chunk-XY5462PL.js +277 -0
  214. package/dist/chunk-XY5462PL.js.map +1 -0
  215. package/dist/chunk-YDPVHTY2.js +163 -0
  216. package/dist/chunk-YDPVHTY2.js.map +1 -0
  217. package/dist/chunk-ZILPOC5V.js +277 -0
  218. package/dist/chunk-ZILPOC5V.js.map +1 -0
  219. package/dist/index.cjs +261 -250
  220. package/dist/index.cjs.map +1 -1
  221. package/dist/index.d.cts +1 -2
  222. package/dist/index.d.ts +1 -2
  223. package/dist/index.js +48 -51
  224. package/dist/layouts/index.cjs.map +1 -1
  225. package/dist/layouts/index.js +26 -26
  226. package/dist/layouts/response-display.cjs.map +1 -1
  227. package/dist/layouts/response-display.js +26 -26
  228. package/dist/molecules/date-picker/date-picker-button.cjs +1 -1
  229. package/dist/molecules/date-picker/date-picker-button.cjs.map +1 -1
  230. package/dist/molecules/date-picker/date-picker-button.js +4 -4
  231. package/dist/molecules/expand-table/index.cjs +1 -1
  232. package/dist/molecules/expand-table/index.cjs.map +1 -1
  233. package/dist/molecules/expand-table/index.js +4 -4
  234. package/dist/molecules/expand-table/row.cjs +1 -1
  235. package/dist/molecules/expand-table/row.cjs.map +1 -1
  236. package/dist/molecules/expand-table/row.js +4 -4
  237. package/dist/molecules/form/form.cjs +251 -0
  238. package/dist/molecules/form/form.cjs.map +1 -0
  239. package/dist/molecules/form/form.d.cts +33 -0
  240. package/dist/molecules/form/form.d.ts +33 -0
  241. package/dist/molecules/form/form.js +12 -0
  242. package/dist/molecules/form/form.js.map +1 -0
  243. package/dist/molecules/form/index.cjs +253 -0
  244. package/dist/molecules/form/index.cjs.map +1 -0
  245. package/dist/molecules/form/index.d.cts +3 -0
  246. package/dist/molecules/form/index.d.ts +3 -0
  247. package/dist/molecules/form/index.js +12 -0
  248. package/dist/molecules/form/index.js.map +1 -0
  249. package/dist/molecules/index.cjs +27 -4
  250. package/dist/molecules/index.cjs.map +1 -1
  251. package/dist/molecules/index.js +15 -15
  252. package/dist/molecules/navigation.cjs +1 -1
  253. package/dist/molecules/navigation.cjs.map +1 -1
  254. package/dist/molecules/navigation.js +4 -4
  255. package/dist/molecules/radio-button-card.cjs +1 -1
  256. package/dist/molecules/radio-button-card.cjs.map +1 -1
  257. package/dist/molecules/radio-button-card.js +4 -4
  258. package/dist/molecules/tag-selector.cjs +1 -1
  259. package/dist/molecules/tag-selector.cjs.map +1 -1
  260. package/dist/molecules/tag-selector.js +4 -4
  261. package/dist/molecules/time-select.cjs +27 -4
  262. package/dist/molecules/time-select.cjs.map +1 -1
  263. package/dist/molecules/time-select.d.cts +6 -1
  264. package/dist/molecules/time-select.d.ts +6 -1
  265. package/dist/molecules/time-select.js +7 -7
  266. package/dist/utils/index.js +6 -6
  267. package/package.json +1 -1
  268. package/src/app/platform/edit-coaching-time.tsx +3 -2
  269. package/src/app/platform/goal-manage-card-read.tsx +10 -7
  270. package/src/app/platform/reservation-card.tsx +39 -2
  271. package/src/app/platform/userInfos/coaching-customer-info/large.tsx +3 -15
  272. package/src/app/platform/userInfos/coaching-customer-info/medium.tsx +3 -15
  273. package/src/app/platform/userInfos/coaching-customer-info/small.tsx +4 -18
  274. package/src/app/platform/userInfos/utils.tsx +1 -0
  275. package/src/atoms/drawer.tsx +2 -0
  276. package/src/atoms/index.ts +1 -1
  277. package/src/index.ts +0 -1
  278. package/src/molecules/{form.tsx → form/form.tsx} +32 -6
  279. package/src/molecules/form/index.ts +1 -0
  280. package/src/molecules/time-select.tsx +37 -6
  281. package/src/layouts/index.ts +0 -1
  282. package/src/layouts/response-display.tsx +0 -62
@@ -1,24 +1,12 @@
1
- import React, { useMemo } from 'react';
2
- import {
3
- getColorFromProjectState,
4
- getTextFromProjectState,
5
- } from '@tipp/biz-utils';
6
- import { Badge, Box, Flex, Grid, Heading, Typo } from '../../../../atoms';
1
+ import React from 'react';
2
+ import { Box, Flex, Grid, Heading, Typo } from '../../../../atoms';
7
3
  import type { CoachingCustomerInfoProps } from '../utils';
8
4
 
9
5
  export function CoachingCustomerInfoSmall({
10
6
  customer,
11
- session,
12
7
  children,
8
+ badge,
13
9
  }: CoachingCustomerInfoProps): React.ReactElement {
14
- const badgeColor = useMemo(() => {
15
- return getColorFromProjectState(session?.state);
16
- }, [session?.state]);
17
-
18
- const sessionText = useMemo(() => {
19
- return getTextFromProjectState(session?.state);
20
- }, [session?.state]);
21
-
22
10
  return (
23
11
  <Flex
24
12
  direction={{ initial: 'column', xs: 'row' }}
@@ -34,9 +22,7 @@ export function CoachingCustomerInfoSmall({
34
22
  <Typo color="gray" truncate variant="body">
35
23
  {customer?.company}
36
24
  </Typo>
37
- <Box style={{ justifySelf: 'end' }}>
38
- <Badge color={badgeColor}>{sessionText}</Badge>
39
- </Box>
25
+ <Box style={{ justifySelf: 'end' }}>{badge}</Box>
40
26
  </Grid>
41
27
  </Box>
42
28
  {children}
@@ -7,6 +7,7 @@ export interface CoachingCustomerInfoProps {
7
7
  customer?: Customer;
8
8
  session?: Session;
9
9
  children?: React.ReactElement;
10
+ badge?: React.ReactElement;
10
11
  }
11
12
 
12
13
  export interface Customer {
@@ -5,6 +5,7 @@ import { ClosePanelArrowIcon } from '../icons/close-panel-arrow';
5
5
  import { Flex } from './flex';
6
6
  import { Separator } from './separator';
7
7
  import { IconButton } from './icon-button';
8
+ import { ToastContainer } from './toast';
8
9
 
9
10
  export function Root(props: Dialog.DialogProps): React.ReactNode {
10
11
  return <Dialog.Root {...props} />;
@@ -37,6 +38,7 @@ export function Content(props: ContentProps): React.ReactElement {
37
38
  <Dialog.Portal container={containerRef.current}>
38
39
  <Theme>
39
40
  <Dialog.Overlay className="DrawerOverlay" />
41
+ <ToastContainer />
40
42
  <Dialog.Content
41
43
  className={`DrawerContent ${position} ${className || ''}`}
42
44
  onPointerDownOutside={preventDefault}
@@ -52,6 +52,6 @@ export * from './field-error-wrapper';
52
52
  export * from './ellipsis-tooltip';
53
53
  export * from './drawer';
54
54
  export * from './toast';
55
- export * from '../molecules/form';
55
+ export * from '../molecules/form/form';
56
56
  export * from './auto-sizing-input';
57
57
  export * from './bullet-text';
package/src/index.ts CHANGED
@@ -7,4 +7,3 @@ export * from './icon';
7
7
  export * from './charts';
8
8
  export * from './utils';
9
9
  export * from './app';
10
- export * from './layouts';
@@ -1,9 +1,9 @@
1
1
  import * as RadixForm from '@radix-ui/react-form';
2
2
  import { createContext, forwardRef, useContext, useMemo } from 'react';
3
3
  import type { HeadingProps } from '@radix-ui/themes';
4
- import { Heading } from '../atoms/heading';
5
- import type { TypoProps } from '../atoms/typo';
6
- import { Typo } from '../atoms/typo';
4
+ import { Heading } from '../../atoms/heading';
5
+ import type { TypoProps } from '../../atoms/typo';
6
+ import { Typo } from '../../atoms/typo';
7
7
 
8
8
  const Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(
9
9
  ({ children, className, ...rest }, ref) => {
@@ -21,7 +21,7 @@ const Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(
21
21
 
22
22
  Root.displayName = 'FORM_ROOT';
23
23
 
24
- type FormFieldProps = RadixForm.FormFieldProps & { required?: boolean };
24
+ export type FormFieldProps = RadixForm.FormFieldProps & { required?: boolean };
25
25
 
26
26
  const FieldContext = createContext<FormFieldProps>({
27
27
  name: '',
@@ -42,7 +42,7 @@ const Field = forwardRef<HTMLDivElement, FormFieldProps>(
42
42
  );
43
43
  Field.displayName = 'FORM_FIELD';
44
44
 
45
- type LabelProps = RadixForm.FormLabelProps & {
45
+ export type FormLabelProps = RadixForm.FormLabelProps & {
46
46
  /** label의 타입을 지정 */
47
47
  variant?: 'title' | 'body' | 'caption';
48
48
  };
@@ -63,7 +63,7 @@ function CaptionLabel(props: TypoProps): React.ReactElement {
63
63
  );
64
64
  }
65
65
 
66
- const Label = forwardRef<HTMLLabelElement, LabelProps>(
66
+ const Label = forwardRef<HTMLLabelElement, FormLabelProps>(
67
67
  ({ children, className, variant, ...rest }, ref) => {
68
68
  const Comp = useMemo(() => {
69
69
  switch (variant) {
@@ -131,6 +131,31 @@ const Control = forwardRef<HTMLInputElement, ControlProps>(
131
131
  );
132
132
  Control.displayName = 'FORM_Control';
133
133
 
134
+ interface FormItemProps extends FormFieldProps {
135
+ children: React.ReactElement;
136
+ label: string;
137
+ labelVariant?: FormLabelProps['variant'];
138
+ errorMessage?: string;
139
+ }
140
+
141
+ export function FormItem({
142
+ label,
143
+ labelVariant,
144
+ children,
145
+ errorMessage,
146
+ ...fieldProps
147
+ }: FormItemProps): React.JSX.Element {
148
+ return (
149
+ <Form.Field {...fieldProps}>
150
+ <Form.Label variant={labelVariant}>{label}</Form.Label>
151
+ {children}
152
+ <Form.Message forceMatch={Boolean(errorMessage)}>
153
+ {errorMessage}
154
+ </Form.Message>
155
+ </Form.Field>
156
+ );
157
+ }
158
+
134
159
  export const Form = {
135
160
  Root,
136
161
  Field,
@@ -138,4 +163,5 @@ export const Form = {
138
163
  Message,
139
164
  Control: RadixForm.Control,
140
165
  Submit: RadixForm.Submit,
166
+ FormItem,
141
167
  };
@@ -0,0 +1 @@
1
+ export * from './form';
@@ -1,27 +1,58 @@
1
1
  import React, { useMemo } from 'react';
2
+ import { format } from 'date-fns';
2
3
  import type { SelectRootProps } from '../atoms';
3
4
  import { Flex, Select } from '../atoms';
4
5
  import { getTimeOptions } from '../utils';
5
6
 
7
+ interface TimeSelectProps extends SelectRootProps {
8
+ maxTime?: Date;
9
+ minTime?: Date;
10
+ time?: Date;
11
+ }
12
+
13
+ const getOptionValue = (date?: Date, timeValue?: Date): string | undefined => {
14
+ if (date && timeValue) {
15
+ if (format(date, 'yyyyMMdd') === format(timeValue, 'yyyyMMdd')) {
16
+ return format(date, 'HH:mm');
17
+ }
18
+ }
19
+ };
20
+
6
21
  export function TimeSelect({
7
22
  value,
23
+ maxTime,
24
+ minTime,
25
+ time,
8
26
  ...rest
9
- }: SelectRootProps): React.ReactElement {
27
+ }: TimeSelectProps): React.ReactElement {
10
28
  const timeOptions = useMemo(() => {
11
29
  return getTimeOptions();
12
30
  }, []);
13
31
 
32
+ const [minOption, maxOption] = useMemo(() => {
33
+ return [getOptionValue(minTime, time), getOptionValue(maxTime, time)];
34
+ }, [maxTime, minTime, time]);
35
+
14
36
  return (
15
37
  <Select.Root value={value} {...rest}>
16
38
  <Flex direction="column" width="100%">
17
39
  <Select.Trigger placeholder="- " style={{ minWidth: '100px' }} />
18
40
  </Flex>
19
41
  <Select.Content>
20
- {timeOptions.map((time) => (
21
- <Select.Item key={time} value={time}>
22
- {time}
23
- </Select.Item>
24
- ))}
42
+ {timeOptions.map((option) => {
43
+ const visible =
44
+ (!minOption || option >= minOption) &&
45
+ (!maxOption || option <= maxOption);
46
+
47
+ if (!visible) {
48
+ return null;
49
+ }
50
+ return (
51
+ <Select.Item key={option} value={option}>
52
+ {option}
53
+ </Select.Item>
54
+ );
55
+ })}
25
56
  </Select.Content>
26
57
  </Select.Root>
27
58
  );
@@ -1 +0,0 @@
1
- export * from './response-display';
@@ -1,62 +0,0 @@
1
- import type { Breakpoint, Responsive } from '@radix-ui/themes/props';
2
- import React from 'react';
3
- import type { BoxProps } from '../atoms';
4
- import { Box } from '../atoms';
5
-
6
- type Children = React.ReactElement;
7
- export type ResponseDisplayProps = Responsive<Children>;
8
-
9
- const breakpoints: Breakpoint[] = ['initial', 'xs', 'sm', 'md', 'lg', 'xl'];
10
-
11
- const sortByBreakpoint = (
12
- a: [string, Children],
13
- b: [string, Children]
14
- ): number => {
15
- return (
16
- breakpoints.indexOf(a[0] as Breakpoint) -
17
- breakpoints.indexOf(b[0] as Breakpoint)
18
- );
19
- };
20
-
21
- const getDisplay = (
22
- prev: Breakpoint | undefined,
23
- cur: Breakpoint | undefined,
24
- index: Breakpoint | undefined
25
- ): BoxProps['display'] => {
26
- const result: BoxProps['display'] = {};
27
- if (prev) {
28
- result.initial = 'none';
29
- }
30
- if (cur) {
31
- result[cur] = 'block';
32
- }
33
- if (index) {
34
- result[index] = 'none';
35
- }
36
- return result;
37
- };
38
-
39
- export function ResponseDisplay(
40
- props: ResponseDisplayProps
41
- ): React.ReactElement {
42
- const sortedChildren = Object.entries(props).sort(sortByBreakpoint);
43
-
44
- return (
45
- <>
46
- {sortedChildren.map(([key, value], index) => {
47
- return (
48
- <Box
49
- display={getDisplay(
50
- sortedChildren[index - 1]?.[0] as Breakpoint,
51
- sortedChildren[index]?.[0] as Breakpoint,
52
- sortedChildren[index + 1]?.[0] as Breakpoint
53
- )}
54
- key={key}
55
- >
56
- {value}
57
- </Box>
58
- );
59
- })}
60
- </>
61
- );
62
- }