@tipp/ui 1.4.11 → 1.4.12

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 (109) hide show
  1. package/dist/atoms/field-error-wrapper.js +2 -2
  2. package/dist/atoms/form.cjs +88 -11
  3. package/dist/atoms/form.cjs.map +1 -1
  4. package/dist/atoms/form.d.cts +3 -1
  5. package/dist/atoms/form.d.ts +3 -1
  6. package/dist/atoms/form.js +3 -1
  7. package/dist/atoms/index.cjs +34 -5
  8. package/dist/atoms/index.cjs.map +1 -1
  9. package/dist/atoms/index.d.cts +1 -1
  10. package/dist/atoms/index.d.ts +1 -1
  11. package/dist/atoms/index.js +55 -55
  12. package/dist/atoms/pagination.js +2 -2
  13. package/dist/chunk-32VPQ7D7.js +115 -0
  14. package/dist/chunk-32VPQ7D7.js.map +1 -0
  15. package/dist/chunk-5AONIQFL.js +109 -0
  16. package/dist/chunk-5AONIQFL.js.map +1 -0
  17. package/dist/chunk-6EZF7NBC.js +164 -0
  18. package/dist/chunk-6EZF7NBC.js.map +1 -0
  19. package/dist/chunk-6IGZEBJG.js +112 -0
  20. package/dist/chunk-6IGZEBJG.js.map +1 -0
  21. package/dist/chunk-7P3RJ3PX.js +114 -0
  22. package/dist/chunk-7P3RJ3PX.js.map +1 -0
  23. package/dist/chunk-BH6Y4UOA.js +164 -0
  24. package/dist/chunk-BH6Y4UOA.js.map +1 -0
  25. package/dist/chunk-EYX7O5YA.js +111 -0
  26. package/dist/chunk-EYX7O5YA.js.map +1 -0
  27. package/dist/chunk-FVT3CWDP.js +340 -0
  28. package/dist/chunk-FVT3CWDP.js.map +1 -0
  29. package/dist/chunk-FXPW5E3O.js +169 -0
  30. package/dist/chunk-FXPW5E3O.js.map +1 -0
  31. package/dist/chunk-GFYZHWFM.js +117 -0
  32. package/dist/chunk-GFYZHWFM.js.map +1 -0
  33. package/dist/chunk-GVVNEQAM.js +114 -0
  34. package/dist/chunk-GVVNEQAM.js.map +1 -0
  35. package/dist/chunk-HS4UMG25.js +60 -0
  36. package/dist/chunk-HS4UMG25.js.map +1 -0
  37. package/dist/chunk-IFONY3P4.js +83 -0
  38. package/dist/chunk-IFONY3P4.js.map +1 -0
  39. package/dist/chunk-IH5KYNBX.js +117 -0
  40. package/dist/chunk-IH5KYNBX.js.map +1 -0
  41. package/dist/chunk-IJRCXNT4.js +340 -0
  42. package/dist/chunk-IJRCXNT4.js.map +1 -0
  43. package/dist/chunk-JOQA4635.js +110 -0
  44. package/dist/chunk-JOQA4635.js.map +1 -0
  45. package/dist/chunk-KFUQSMZY.js +340 -0
  46. package/dist/chunk-KFUQSMZY.js.map +1 -0
  47. package/dist/chunk-KKEXBKSB.js +112 -0
  48. package/dist/chunk-KKEXBKSB.js.map +1 -0
  49. package/dist/chunk-KQ75QB4F.js +340 -0
  50. package/dist/chunk-KQ75QB4F.js.map +1 -0
  51. package/dist/chunk-LMDAXWJG.js +192 -0
  52. package/dist/chunk-LMDAXWJG.js.map +1 -0
  53. package/dist/chunk-LZCKTU33.js +109 -0
  54. package/dist/chunk-LZCKTU33.js.map +1 -0
  55. package/dist/chunk-M3XIYHN4.js +340 -0
  56. package/dist/chunk-M3XIYHN4.js.map +1 -0
  57. package/dist/chunk-MOAXPZLZ.js +114 -0
  58. package/dist/chunk-MOAXPZLZ.js.map +1 -0
  59. package/dist/chunk-NCJ7W6Q6.js +111 -0
  60. package/dist/chunk-NCJ7W6Q6.js.map +1 -0
  61. package/dist/chunk-T4CFVC4D.js +83 -0
  62. package/dist/chunk-T4CFVC4D.js.map +1 -0
  63. package/dist/chunk-T5SEG6AS.js +164 -0
  64. package/dist/chunk-T5SEG6AS.js.map +1 -0
  65. package/dist/chunk-TJKYEERY.js +114 -0
  66. package/dist/chunk-TJKYEERY.js.map +1 -0
  67. package/dist/chunk-TOBTSM5I.js +63 -0
  68. package/dist/chunk-TOBTSM5I.js.map +1 -0
  69. package/dist/chunk-UGS3D4GN.js +111 -0
  70. package/dist/chunk-UGS3D4GN.js.map +1 -0
  71. package/dist/chunk-UNKNG6YR.js +340 -0
  72. package/dist/chunk-UNKNG6YR.js.map +1 -0
  73. package/dist/chunk-V2PH6RFH.js +164 -0
  74. package/dist/chunk-V2PH6RFH.js.map +1 -0
  75. package/dist/chunk-W3QLZMC4.js +192 -0
  76. package/dist/chunk-W3QLZMC4.js.map +1 -0
  77. package/dist/chunk-WLRX3IFJ.js +110 -0
  78. package/dist/chunk-WLRX3IFJ.js.map +1 -0
  79. package/dist/chunk-WX4S7KAG.js +109 -0
  80. package/dist/chunk-WX4S7KAG.js.map +1 -0
  81. package/dist/chunk-YNIACSWN.js +164 -0
  82. package/dist/chunk-YNIACSWN.js.map +1 -0
  83. package/dist/chunk-YRHQKIRO.js +117 -0
  84. package/dist/chunk-YRHQKIRO.js.map +1 -0
  85. package/dist/index.cjs +34 -5
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.css +4 -7
  88. package/dist/index.css.map +1 -1
  89. package/dist/index.d.cts +1 -1
  90. package/dist/index.d.ts +1 -1
  91. package/dist/index.js +71 -71
  92. package/dist/molecules/date-picker/index.js +2 -2
  93. package/dist/molecules/expand-table/index.js +24 -24
  94. package/dist/molecules/expand-table/row.js +22 -22
  95. package/dist/molecules/form.cjs +218 -0
  96. package/dist/molecules/form.cjs.map +1 -0
  97. package/dist/molecules/form.d.cts +22 -0
  98. package/dist/molecules/form.d.ts +22 -0
  99. package/dist/molecules/form.js +10 -0
  100. package/dist/molecules/form.js.map +1 -0
  101. package/dist/molecules/index.js +30 -30
  102. package/dist/molecules/learning-post.js +3 -3
  103. package/dist/molecules/navigation.js +23 -23
  104. package/dist/molecules/stepper.js +3 -3
  105. package/dist/molecules/tag-selector.js +23 -23
  106. package/package.json +1 -1
  107. package/src/atoms/index.ts +1 -1
  108. package/src/molecules/form.tsx +122 -0
  109. package/src/atoms/form.tsx +0 -72
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/molecules/form.tsx","../../src/atoms/heading.tsx","../../src/atoms/typo.tsx"],"sourcesContent":["import * as RadixForm from '@radix-ui/react-form';\nimport { createContext, forwardRef, useContext } from 'react';\nimport type { HeadingProps } from '@radix-ui/themes';\nimport { Heading } from '../atoms/heading';\nimport { Typo } from '../atoms/typo';\n\nconst Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Root\n {...rest}\n className={`FormRoot ${className || ''}`}\n ref={ref}\n >\n {children}\n </RadixForm.Root>\n );\n }\n);\n\nRoot.displayName = 'FORM_ROOT';\n\ntype FormFieldProps = RadixForm.FormFieldProps & { required?: boolean };\n\nconst FieldContext = createContext<FormFieldProps>({\n name: '',\n});\n\nconst Field = forwardRef<HTMLDivElement, FormFieldProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Field\n {...rest}\n className={`FormField ${className || ''}`}\n ref={ref}\n >\n <FieldContext.Provider value={rest}>{children}</FieldContext.Provider>\n </RadixForm.Field>\n );\n }\n);\nField.displayName = 'FORM_FIELD';\n\ntype LabelProps = RadixForm.FormLabelProps & {\n /** label의 타입을 지정 */\n variant?: 'title' | 'body';\n};\n\nfunction HeadingLabel(props: HeadingProps): React.ReactElement {\n return (\n <Heading variant=\"heading5\" {...props}>\n {props.children}\n </Heading>\n );\n}\n\nconst Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ children, className, variant = 'body', ...rest }, ref) => {\n const Comp = variant === 'title' ? HeadingLabel : Typo;\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Label\n {...rest}\n asChild\n className={`FormLabel ${className || ''}`}\n ref={ref}\n >\n <Comp>\n {children}\n {fieldProps.required ? (\n <Typo as=\"span\" color=\"tomato\">\n {` *`}\n </Typo>\n ) : null}\n </Comp>\n </RadixForm.Label>\n );\n }\n);\nLabel.displayName = 'FORM_Label';\n\nconst Message = forwardRef<HTMLSpanElement, RadixForm.FormMessageProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Message\n {...rest}\n asChild\n className={`FormMessage ${className || ''}`}\n ref={ref}\n >\n <Typo color=\"red\">{children}</Typo>\n </RadixForm.Message>\n );\n }\n);\nMessage.displayName = 'FORM_Message';\n\ntype ControlProps = Omit<RadixForm.FormControlProps, 'required'>;\nconst Control = forwardRef<HTMLInputElement, ControlProps>(\n ({ className, ...rest }, ref) => {\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Control\n {...rest}\n className={`FormControl ${className || ''}`}\n ref={ref}\n required={fieldProps.required}\n />\n );\n }\n);\nControl.displayName = 'FORM_Control';\n\nexport const Form = {\n Root,\n Field,\n Label,\n Message,\n ValidityState,\n Control: RadixForm.Control,\n Submit: RadixForm.Submit,\n};\n","import {\n Heading as RadixHeading,\n type HeadingProps as RadixHeadingProps,\n} from '@radix-ui/themes';\nimport { useMemo } from 'react';\n\nexport { Heading as RadixHeading } from '@radix-ui/themes';\n\nexport type HeadingProps = RadixHeadingProps & {\n variant?: 'heading1' | 'heading2' | 'heading3' | 'heading4' | 'heading5';\n};\n\nexport function Heading(props: HeadingProps): React.ReactElement {\n const { size, children, variant, ...rest } = props;\n const radixSize = useMemo<RadixHeadingProps['size']>(() => {\n switch (variant) {\n case 'heading1':\n return '7';\n case 'heading2':\n return '6';\n case 'heading3':\n return '5';\n case 'heading4':\n return '4';\n case 'heading5':\n return '3';\n default:\n return size;\n }\n }, [size, variant]);\n\n return (\n <RadixHeading {...rest} size={radixSize}>\n {children}\n </RadixHeading>\n );\n}\n","import type { TextProps as RadixTextProps } from '@radix-ui/themes';\nimport { Text as RadixText } from '@radix-ui/themes';\nimport React, { useMemo, forwardRef } from 'react';\n\nexport type TypoProps = RadixTextProps & {\n variant?: 'body' | 'caption' | 'subtitle';\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactElement => {\n const { size, variant, children, ...rest } = props;\n\n const radixSize = useMemo<RadixTextProps['size']>(() => {\n if (size !== undefined) return size;\n switch (variant) {\n case 'caption':\n return '1';\n case 'subtitle':\n return '3';\n case 'body':\n default:\n return '2';\n }\n }, [size, variant]);\n\n return (\n <RadixText {...rest} ref={ref} size={radixSize}>\n {children}\n </RadixText>\n );\n }\n);\n\nTypo.displayName = 'Typo';\n"],"mappings":"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","names":["import_react","import_themes","Heading","RadixHeading","import_themes","import_react","import_jsx_runtime","RadixText","import_jsx_runtime","Root","Field","Heading","Label","Message","Control"]}
@@ -0,0 +1,22 @@
1
+ import * as react from 'react';
2
+ import * as RadixForm from '@radix-ui/react-form';
3
+
4
+ declare const Form: {
5
+ Root: react.ForwardRefExoticComponent<RadixForm.FormProps & react.RefAttributes<HTMLFormElement>>;
6
+ Field: react.ForwardRefExoticComponent<RadixForm.FormFieldProps & {
7
+ required?: boolean | undefined;
8
+ } & react.RefAttributes<HTMLDivElement>>;
9
+ Label: react.ForwardRefExoticComponent<RadixForm.FormLabelProps & {
10
+ /** label의 타입을 지정 */
11
+ variant?: "title" | "body" | undefined;
12
+ } & react.RefAttributes<HTMLLabelElement>>;
13
+ Message: react.ForwardRefExoticComponent<RadixForm.FormMessageProps & react.RefAttributes<HTMLSpanElement>>;
14
+ ValidityState: {
15
+ new (): ValidityState;
16
+ prototype: ValidityState;
17
+ };
18
+ Control: react.ForwardRefExoticComponent<RadixForm.FormControlProps & react.RefAttributes<HTMLInputElement>>;
19
+ Submit: react.ForwardRefExoticComponent<RadixForm.FormSubmitProps & react.RefAttributes<HTMLButtonElement>>;
20
+ };
21
+
22
+ export { Form };
@@ -0,0 +1,22 @@
1
+ import * as react from 'react';
2
+ import * as RadixForm from '@radix-ui/react-form';
3
+
4
+ declare const Form: {
5
+ Root: react.ForwardRefExoticComponent<RadixForm.FormProps & react.RefAttributes<HTMLFormElement>>;
6
+ Field: react.ForwardRefExoticComponent<RadixForm.FormFieldProps & {
7
+ required?: boolean | undefined;
8
+ } & react.RefAttributes<HTMLDivElement>>;
9
+ Label: react.ForwardRefExoticComponent<RadixForm.FormLabelProps & {
10
+ /** label의 타입을 지정 */
11
+ variant?: "title" | "body" | undefined;
12
+ } & react.RefAttributes<HTMLLabelElement>>;
13
+ Message: react.ForwardRefExoticComponent<RadixForm.FormMessageProps & react.RefAttributes<HTMLSpanElement>>;
14
+ ValidityState: {
15
+ new (): ValidityState;
16
+ prototype: ValidityState;
17
+ };
18
+ Control: react.ForwardRefExoticComponent<RadixForm.FormControlProps & react.RefAttributes<HTMLInputElement>>;
19
+ Submit: react.ForwardRefExoticComponent<RadixForm.FormSubmitProps & react.RefAttributes<HTMLButtonElement>>;
20
+ };
21
+
22
+ export { Form };
@@ -0,0 +1,10 @@
1
+ import {
2
+ Form
3
+ } from "../chunk-MOAXPZLZ.js";
4
+ import "../chunk-52MVZ6AN.js";
5
+ import "../chunk-HK224ADT.js";
6
+ import "../chunk-N552FDTV.js";
7
+ export {
8
+ Form
9
+ };
10
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,89 +1,89 @@
1
1
  import "../chunk-6ZAP2Q6K.js";
2
2
  import {
3
3
  DatePicker
4
- } from "../chunk-C3YMRWG2.js";
4
+ } from "../chunk-2QDLO3YM.js";
5
5
  import {
6
6
  ExpandTable,
7
7
  createColumnHelper
8
- } from "../chunk-3D63H4NN.js";
8
+ } from "../chunk-BSG2Q4XC.js";
9
9
  import "../chunk-PCWEW2UL.js";
10
- import "../chunk-NDUKDKGB.js";
11
10
  import {
12
11
  DotNavigation
13
12
  } from "../chunk-EDTEVEJW.js";
14
13
  import {
15
14
  LearningPost
16
- } from "../chunk-CLBSZCMO.js";
15
+ } from "../chunk-YNIACSWN.js";
16
+ import "../chunk-BVNXAZ4W.js";
17
17
  import {
18
18
  Navigation
19
- } from "../chunk-F44BXTHN.js";
19
+ } from "../chunk-OCINOC2X.js";
20
20
  import {
21
21
  Stepper
22
- } from "../chunk-Y3L7BYDF.js";
22
+ } from "../chunk-PF5CPG6R.js";
23
23
  import {
24
24
  TagSelector
25
- } from "../chunk-2E772Q7M.js";
26
- import "../chunk-BVNXAZ4W.js";
25
+ } from "../chunk-KQ75QB4F.js";
27
26
  import "../chunk-BSTJBBEX.js";
27
+ import "../chunk-NDUKDKGB.js";
28
28
  import "../chunk-KTVZ4KLX.js";
29
+ import "../chunk-MOAXPZLZ.js";
30
+ import "../chunk-ILRUXI2E.js";
31
+ import "../chunk-JPIZP2PZ.js";
29
32
  import "../chunk-CYYWMYE7.js";
33
+ import "../chunk-3JRNKBMN.js";
34
+ import "../chunk-HYITAA4J.js";
30
35
  import "../chunk-5H3YPCZK.js";
31
36
  import "../chunk-FR2GDOU2.js";
32
37
  import "../chunk-74DX4CU7.js";
33
38
  import "../chunk-OYM4XCHQ.js";
34
39
  import "../chunk-YJ7ZFOYL.js";
35
40
  import "../chunk-5ZITU5L7.js";
36
- import "../chunk-ILRUXI2E.js";
37
- import "../chunk-JPIZP2PZ.js";
41
+ import "../chunk-365QMK4D.js";
42
+ import "../chunk-YO3BQW6S.js";
38
43
  import "../chunk-6IVCARWS.js";
39
44
  import "../chunk-6DJOIRMF.js";
40
45
  import "../chunk-FPD73OHW.js";
41
46
  import "../chunk-ZKZDVS7G.js";
42
47
  import "../chunk-MUNMDHRF.js";
43
48
  import "../chunk-TVDKGMBI.js";
44
- import "../chunk-3JRNKBMN.js";
45
- import "../chunk-HYITAA4J.js";
49
+ import "../chunk-O3T3TM3V.js";
46
50
  import "../chunk-XQOL7UBI.js";
47
51
  import "../chunk-TULWX7D6.js";
48
52
  import "../chunk-SIM6HKVI.js";
49
- import "../chunk-5X3BCQPR.js";
53
+ import "../chunk-IM7DSIK2.js";
54
+ import "../chunk-O3DNDMV3.js";
50
55
  import "../chunk-5AVBYDPB.js";
51
- import "../chunk-365QMK4D.js";
52
- import "../chunk-YO3BQW6S.js";
56
+ import "../chunk-UC627KGO.js";
57
+ import "../chunk-4WFMOFN2.js";
58
+ import "../chunk-WKFZ5MMN.js";
59
+ import "../chunk-ACVANQJ4.js";
53
60
  import "../chunk-2DZ2Y3JI.js";
54
- import "../chunk-DJN2IEY6.js";
61
+ import "../chunk-QDZS4B6A.js";
62
+ import "../chunk-52MVZ6AN.js";
55
63
  import "../chunk-25HMMI7R.js";
56
- import "../chunk-2CVXGGI5.js";
57
64
  import "../chunk-EGEQY3KT.js";
58
65
  import "../chunk-HK224ADT.js";
59
- import "../chunk-O3T3TM3V.js";
60
- import "../chunk-O3DNDMV3.js";
66
+ import "../chunk-MIMJ7LON.js";
67
+ import "../chunk-IQEEPHOY.js";
68
+ import "../chunk-LHCDPZ5E.js";
61
69
  import "../chunk-OHMOP5PV.js";
62
70
  import "../chunk-LZJR77Q2.js";
63
71
  import "../chunk-Q37G2GS6.js";
64
72
  import "../chunk-VTJZMOSP.js";
65
73
  import "../chunk-BDVTRPXG.js";
66
- import "../chunk-UC627KGO.js";
67
- import "../chunk-4WFMOFN2.js";
68
- import "../chunk-WKFZ5MMN.js";
69
- import "../chunk-ACVANQJ4.js";
70
- import "../chunk-52MVZ6AN.js";
74
+ import "../chunk-3SSSCLJ5.js";
75
+ import "../chunk-EWD4AO5N.js";
76
+ import "../chunk-YGL6SWKN.js";
71
77
  import "../chunk-4Y5BEXVN.js";
72
78
  import "../chunk-U7JPP7WJ.js";
73
79
  import "../chunk-LQY4RKWI.js";
74
80
  import "../chunk-ZD7MNMED.js";
75
81
  import "../chunk-B6XJN6EC.js";
76
82
  import "../chunk-UVKNLJDZ.js";
77
- import "../chunk-MIMJ7LON.js";
78
- import "../chunk-IQEEPHOY.js";
79
- import "../chunk-LHCDPZ5E.js";
80
83
  import "../chunk-66C4U3BG.js";
81
84
  import "../chunk-J242TTFH.js";
82
85
  import "../chunk-EAXUQEO5.js";
83
86
  import "../chunk-YJCCE5WP.js";
84
- import "../chunk-3SSSCLJ5.js";
85
- import "../chunk-EWD4AO5N.js";
86
- import "../chunk-YGL6SWKN.js";
87
87
  import "../chunk-N552FDTV.js";
88
88
  export {
89
89
  DatePicker,
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  LearningPost
3
- } from "../chunk-CLBSZCMO.js";
3
+ } from "../chunk-YNIACSWN.js";
4
4
  import "../chunk-BVNXAZ4W.js";
5
+ import "../chunk-52MVZ6AN.js";
5
6
  import "../chunk-25HMMI7R.js";
6
7
  import "../chunk-EGEQY3KT.js";
7
8
  import "../chunk-HK224ADT.js";
8
- import "../chunk-52MVZ6AN.js";
9
+ import "../chunk-EWD4AO5N.js";
9
10
  import "../chunk-4Y5BEXVN.js";
10
11
  import "../chunk-U7JPP7WJ.js";
11
12
  import "../chunk-LQY4RKWI.js";
12
13
  import "../chunk-EAXUQEO5.js";
13
- import "../chunk-EWD4AO5N.js";
14
14
  import "../chunk-N552FDTV.js";
15
15
  export {
16
16
  LearningPost
@@ -1,65 +1,65 @@
1
1
  import {
2
2
  Navigation
3
- } from "../chunk-F44BXTHN.js";
3
+ } from "../chunk-OCINOC2X.js";
4
4
  import "../chunk-KTVZ4KLX.js";
5
+ import "../chunk-MOAXPZLZ.js";
6
+ import "../chunk-ILRUXI2E.js";
7
+ import "../chunk-JPIZP2PZ.js";
5
8
  import "../chunk-CYYWMYE7.js";
9
+ import "../chunk-3JRNKBMN.js";
10
+ import "../chunk-HYITAA4J.js";
6
11
  import "../chunk-5H3YPCZK.js";
7
12
  import "../chunk-FR2GDOU2.js";
8
13
  import "../chunk-74DX4CU7.js";
9
14
  import "../chunk-OYM4XCHQ.js";
10
15
  import "../chunk-YJ7ZFOYL.js";
11
16
  import "../chunk-5ZITU5L7.js";
12
- import "../chunk-ILRUXI2E.js";
13
- import "../chunk-JPIZP2PZ.js";
17
+ import "../chunk-365QMK4D.js";
18
+ import "../chunk-YO3BQW6S.js";
14
19
  import "../chunk-6IVCARWS.js";
15
20
  import "../chunk-6DJOIRMF.js";
16
21
  import "../chunk-FPD73OHW.js";
17
22
  import "../chunk-ZKZDVS7G.js";
18
23
  import "../chunk-MUNMDHRF.js";
19
24
  import "../chunk-TVDKGMBI.js";
20
- import "../chunk-3JRNKBMN.js";
21
- import "../chunk-HYITAA4J.js";
25
+ import "../chunk-O3T3TM3V.js";
22
26
  import "../chunk-XQOL7UBI.js";
23
27
  import "../chunk-TULWX7D6.js";
24
28
  import "../chunk-SIM6HKVI.js";
25
- import "../chunk-5X3BCQPR.js";
29
+ import "../chunk-IM7DSIK2.js";
30
+ import "../chunk-O3DNDMV3.js";
26
31
  import "../chunk-5AVBYDPB.js";
27
- import "../chunk-365QMK4D.js";
28
- import "../chunk-YO3BQW6S.js";
32
+ import "../chunk-UC627KGO.js";
33
+ import "../chunk-4WFMOFN2.js";
34
+ import "../chunk-WKFZ5MMN.js";
35
+ import "../chunk-ACVANQJ4.js";
29
36
  import "../chunk-2DZ2Y3JI.js";
30
- import "../chunk-DJN2IEY6.js";
37
+ import "../chunk-QDZS4B6A.js";
38
+ import "../chunk-52MVZ6AN.js";
31
39
  import "../chunk-25HMMI7R.js";
32
- import "../chunk-2CVXGGI5.js";
33
40
  import "../chunk-EGEQY3KT.js";
34
41
  import "../chunk-HK224ADT.js";
35
- import "../chunk-O3T3TM3V.js";
36
- import "../chunk-O3DNDMV3.js";
42
+ import "../chunk-MIMJ7LON.js";
43
+ import "../chunk-IQEEPHOY.js";
44
+ import "../chunk-LHCDPZ5E.js";
37
45
  import "../chunk-OHMOP5PV.js";
38
46
  import "../chunk-LZJR77Q2.js";
39
47
  import "../chunk-Q37G2GS6.js";
40
48
  import "../chunk-VTJZMOSP.js";
41
49
  import "../chunk-BDVTRPXG.js";
42
- import "../chunk-UC627KGO.js";
43
- import "../chunk-4WFMOFN2.js";
44
- import "../chunk-WKFZ5MMN.js";
45
- import "../chunk-ACVANQJ4.js";
46
- import "../chunk-52MVZ6AN.js";
50
+ import "../chunk-3SSSCLJ5.js";
51
+ import "../chunk-EWD4AO5N.js";
52
+ import "../chunk-YGL6SWKN.js";
47
53
  import "../chunk-4Y5BEXVN.js";
48
54
  import "../chunk-U7JPP7WJ.js";
49
55
  import "../chunk-LQY4RKWI.js";
50
56
  import "../chunk-ZD7MNMED.js";
51
57
  import "../chunk-B6XJN6EC.js";
52
58
  import "../chunk-UVKNLJDZ.js";
53
- import "../chunk-MIMJ7LON.js";
54
- import "../chunk-IQEEPHOY.js";
55
- import "../chunk-LHCDPZ5E.js";
56
59
  import "../chunk-66C4U3BG.js";
57
60
  import "../chunk-J242TTFH.js";
58
61
  import "../chunk-EAXUQEO5.js";
59
62
  import "../chunk-YJCCE5WP.js";
60
- import "../chunk-3SSSCLJ5.js";
61
- import "../chunk-EWD4AO5N.js";
62
- import "../chunk-YGL6SWKN.js";
63
63
  import "../chunk-N552FDTV.js";
64
64
  export {
65
65
  Navigation
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  Stepper
3
- } from "../chunk-Y3L7BYDF.js";
4
- import "../chunk-25HMMI7R.js";
3
+ } from "../chunk-PF5CPG6R.js";
5
4
  import "../chunk-52MVZ6AN.js";
6
- import "../chunk-66C4U3BG.js";
5
+ import "../chunk-25HMMI7R.js";
7
6
  import "../chunk-3SSSCLJ5.js";
7
+ import "../chunk-66C4U3BG.js";
8
8
  import "../chunk-N552FDTV.js";
9
9
  export {
10
10
  Stepper
@@ -1,65 +1,65 @@
1
1
  import {
2
2
  TagSelector
3
- } from "../chunk-2E772Q7M.js";
3
+ } from "../chunk-KQ75QB4F.js";
4
4
  import "../chunk-KTVZ4KLX.js";
5
+ import "../chunk-MOAXPZLZ.js";
6
+ import "../chunk-ILRUXI2E.js";
7
+ import "../chunk-JPIZP2PZ.js";
5
8
  import "../chunk-CYYWMYE7.js";
9
+ import "../chunk-3JRNKBMN.js";
10
+ import "../chunk-HYITAA4J.js";
6
11
  import "../chunk-5H3YPCZK.js";
7
12
  import "../chunk-FR2GDOU2.js";
8
13
  import "../chunk-74DX4CU7.js";
9
14
  import "../chunk-OYM4XCHQ.js";
10
15
  import "../chunk-YJ7ZFOYL.js";
11
16
  import "../chunk-5ZITU5L7.js";
12
- import "../chunk-ILRUXI2E.js";
13
- import "../chunk-JPIZP2PZ.js";
17
+ import "../chunk-365QMK4D.js";
18
+ import "../chunk-YO3BQW6S.js";
14
19
  import "../chunk-6IVCARWS.js";
15
20
  import "../chunk-6DJOIRMF.js";
16
21
  import "../chunk-FPD73OHW.js";
17
22
  import "../chunk-ZKZDVS7G.js";
18
23
  import "../chunk-MUNMDHRF.js";
19
24
  import "../chunk-TVDKGMBI.js";
20
- import "../chunk-3JRNKBMN.js";
21
- import "../chunk-HYITAA4J.js";
25
+ import "../chunk-O3T3TM3V.js";
22
26
  import "../chunk-XQOL7UBI.js";
23
27
  import "../chunk-TULWX7D6.js";
24
28
  import "../chunk-SIM6HKVI.js";
25
- import "../chunk-5X3BCQPR.js";
29
+ import "../chunk-IM7DSIK2.js";
30
+ import "../chunk-O3DNDMV3.js";
26
31
  import "../chunk-5AVBYDPB.js";
27
- import "../chunk-365QMK4D.js";
28
- import "../chunk-YO3BQW6S.js";
32
+ import "../chunk-UC627KGO.js";
33
+ import "../chunk-4WFMOFN2.js";
34
+ import "../chunk-WKFZ5MMN.js";
35
+ import "../chunk-ACVANQJ4.js";
29
36
  import "../chunk-2DZ2Y3JI.js";
30
- import "../chunk-DJN2IEY6.js";
37
+ import "../chunk-QDZS4B6A.js";
38
+ import "../chunk-52MVZ6AN.js";
31
39
  import "../chunk-25HMMI7R.js";
32
- import "../chunk-2CVXGGI5.js";
33
40
  import "../chunk-EGEQY3KT.js";
34
41
  import "../chunk-HK224ADT.js";
35
- import "../chunk-O3T3TM3V.js";
36
- import "../chunk-O3DNDMV3.js";
42
+ import "../chunk-MIMJ7LON.js";
43
+ import "../chunk-IQEEPHOY.js";
44
+ import "../chunk-LHCDPZ5E.js";
37
45
  import "../chunk-OHMOP5PV.js";
38
46
  import "../chunk-LZJR77Q2.js";
39
47
  import "../chunk-Q37G2GS6.js";
40
48
  import "../chunk-VTJZMOSP.js";
41
49
  import "../chunk-BDVTRPXG.js";
42
- import "../chunk-UC627KGO.js";
43
- import "../chunk-4WFMOFN2.js";
44
- import "../chunk-WKFZ5MMN.js";
45
- import "../chunk-ACVANQJ4.js";
46
- import "../chunk-52MVZ6AN.js";
50
+ import "../chunk-3SSSCLJ5.js";
51
+ import "../chunk-EWD4AO5N.js";
52
+ import "../chunk-YGL6SWKN.js";
47
53
  import "../chunk-4Y5BEXVN.js";
48
54
  import "../chunk-U7JPP7WJ.js";
49
55
  import "../chunk-LQY4RKWI.js";
50
56
  import "../chunk-ZD7MNMED.js";
51
57
  import "../chunk-B6XJN6EC.js";
52
58
  import "../chunk-UVKNLJDZ.js";
53
- import "../chunk-MIMJ7LON.js";
54
- import "../chunk-IQEEPHOY.js";
55
- import "../chunk-LHCDPZ5E.js";
56
59
  import "../chunk-66C4U3BG.js";
57
60
  import "../chunk-J242TTFH.js";
58
61
  import "../chunk-EAXUQEO5.js";
59
62
  import "../chunk-YJCCE5WP.js";
60
- import "../chunk-3SSSCLJ5.js";
61
- import "../chunk-EWD4AO5N.js";
62
- import "../chunk-YGL6SWKN.js";
63
63
  import "../chunk-N552FDTV.js";
64
64
  export {
65
65
  TagSelector
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tipp/ui",
3
- "version": "1.4.11",
3
+ "version": "1.4.12",
4
4
  "private": false,
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -52,5 +52,5 @@ export * from './field-error-wrapper';
52
52
  export * from './ellipsis-tooltip';
53
53
  export * from './drawer';
54
54
  export * from './toast';
55
- export * from './form';
55
+ export * from '../molecules/form';
56
56
  export * from './auto-sizing-input';
@@ -0,0 +1,122 @@
1
+ import * as RadixForm from '@radix-ui/react-form';
2
+ import { createContext, forwardRef, useContext } from 'react';
3
+ import type { HeadingProps } from '@radix-ui/themes';
4
+ import { Heading } from '../atoms/heading';
5
+ import { Typo } from '../atoms/typo';
6
+
7
+ const Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(
8
+ ({ children, className, ...rest }, ref) => {
9
+ return (
10
+ <RadixForm.Root
11
+ {...rest}
12
+ className={`FormRoot ${className || ''}`}
13
+ ref={ref}
14
+ >
15
+ {children}
16
+ </RadixForm.Root>
17
+ );
18
+ }
19
+ );
20
+
21
+ Root.displayName = 'FORM_ROOT';
22
+
23
+ type FormFieldProps = RadixForm.FormFieldProps & { required?: boolean };
24
+
25
+ const FieldContext = createContext<FormFieldProps>({
26
+ name: '',
27
+ });
28
+
29
+ const Field = forwardRef<HTMLDivElement, FormFieldProps>(
30
+ ({ children, className, ...rest }, ref) => {
31
+ return (
32
+ <RadixForm.Field
33
+ {...rest}
34
+ className={`FormField ${className || ''}`}
35
+ ref={ref}
36
+ >
37
+ <FieldContext.Provider value={rest}>{children}</FieldContext.Provider>
38
+ </RadixForm.Field>
39
+ );
40
+ }
41
+ );
42
+ Field.displayName = 'FORM_FIELD';
43
+
44
+ type LabelProps = RadixForm.FormLabelProps & {
45
+ /** label의 타입을 지정 */
46
+ variant?: 'title' | 'body';
47
+ };
48
+
49
+ function HeadingLabel(props: HeadingProps): React.ReactElement {
50
+ return (
51
+ <Heading variant="heading5" {...props}>
52
+ {props.children}
53
+ </Heading>
54
+ );
55
+ }
56
+
57
+ const Label = forwardRef<HTMLLabelElement, LabelProps>(
58
+ ({ children, className, variant = 'body', ...rest }, ref) => {
59
+ const Comp = variant === 'title' ? HeadingLabel : Typo;
60
+ const fieldProps = useContext(FieldContext);
61
+ return (
62
+ <RadixForm.Label
63
+ {...rest}
64
+ asChild
65
+ className={`FormLabel ${className || ''}`}
66
+ ref={ref}
67
+ >
68
+ <Comp>
69
+ {children}
70
+ {fieldProps.required ? (
71
+ <Typo as="span" color="tomato">
72
+ {` *`}
73
+ </Typo>
74
+ ) : null}
75
+ </Comp>
76
+ </RadixForm.Label>
77
+ );
78
+ }
79
+ );
80
+ Label.displayName = 'FORM_Label';
81
+
82
+ const Message = forwardRef<HTMLSpanElement, RadixForm.FormMessageProps>(
83
+ ({ children, className, ...rest }, ref) => {
84
+ return (
85
+ <RadixForm.Message
86
+ {...rest}
87
+ asChild
88
+ className={`FormMessage ${className || ''}`}
89
+ ref={ref}
90
+ >
91
+ <Typo color="red">{children}</Typo>
92
+ </RadixForm.Message>
93
+ );
94
+ }
95
+ );
96
+ Message.displayName = 'FORM_Message';
97
+
98
+ type ControlProps = Omit<RadixForm.FormControlProps, 'required'>;
99
+ const Control = forwardRef<HTMLInputElement, ControlProps>(
100
+ ({ className, ...rest }, ref) => {
101
+ const fieldProps = useContext(FieldContext);
102
+ return (
103
+ <RadixForm.Control
104
+ {...rest}
105
+ className={`FormControl ${className || ''}`}
106
+ ref={ref}
107
+ required={fieldProps.required}
108
+ />
109
+ );
110
+ }
111
+ );
112
+ Control.displayName = 'FORM_Control';
113
+
114
+ export const Form = {
115
+ Root,
116
+ Field,
117
+ Label,
118
+ Message,
119
+ ValidityState,
120
+ Control: RadixForm.Control,
121
+ Submit: RadixForm.Submit,
122
+ };
@@ -1,72 +0,0 @@
1
- import * as RadixForm from '@radix-ui/react-form';
2
- import { forwardRef } from 'react';
3
-
4
- const Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(
5
- ({ children, className, ...rest }, ref) => {
6
- return (
7
- <RadixForm.Root
8
- {...rest}
9
- className={`FormRoot ${className || ''}`}
10
- ref={ref}
11
- >
12
- {children}
13
- </RadixForm.Root>
14
- );
15
- }
16
- );
17
-
18
- Root.displayName = 'FORM_ROOT';
19
-
20
- const Field = forwardRef<HTMLDivElement, RadixForm.FormFieldProps>(
21
- ({ children, className, ...rest }, ref) => {
22
- return (
23
- <RadixForm.Field
24
- {...rest}
25
- className={`FormField ${className || ''}`}
26
- ref={ref}
27
- >
28
- {children}
29
- </RadixForm.Field>
30
- );
31
- }
32
- );
33
- Field.displayName = 'FORM_FIELD';
34
-
35
- const Label = forwardRef<HTMLLabelElement, RadixForm.FormLabelProps>(
36
- ({ children, className, ...rest }, ref) => {
37
- return (
38
- <RadixForm.Label
39
- {...rest}
40
- className={`FormLabel ${className || ''}`}
41
- ref={ref}
42
- >
43
- {children}
44
- </RadixForm.Label>
45
- );
46
- }
47
- );
48
- Label.displayName = 'FORM_Label';
49
-
50
- const Message = forwardRef<HTMLSpanElement, RadixForm.FormMessageProps>(
51
- ({ children, className, ...rest }, ref) => {
52
- return (
53
- <RadixForm.Message
54
- {...rest}
55
- className={`FormMessage ${className || ''}`}
56
- ref={ref}
57
- >
58
- {children}
59
- </RadixForm.Message>
60
- );
61
- }
62
- );
63
- Message.displayName = 'FORM_Message';
64
-
65
- export const Form = {
66
- Root,
67
- Field,
68
- Label,
69
- Message,
70
- Control: RadixForm.Control,
71
- Submit: RadixForm.Submit,
72
- };