sellmate-design-system-react 0.1.3 → 0.1.4
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/components/SActionModal/SActionModal.cjs +129 -1
- package/dist/components/SActionModal/SActionModal.cjs.map +1 -1
- package/dist/components/SActionModal/SActionModal.js +129 -1
- package/dist/components/SActionModal/SActionModal.js.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs +156 -3
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js +157 -4
- package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
- package/dist/components/SButton/SButton.cjs +129 -1
- package/dist/components/SButton/SButton.cjs.map +1 -1
- package/dist/components/SButton/SButton.js +129 -1
- package/dist/components/SButton/SButton.js.map +1 -1
- package/dist/components/SCalendar/SCalendar.cjs +131 -3
- package/dist/components/SCalendar/SCalendar.cjs.map +1 -1
- package/dist/components/SCalendar/SCalendar.d.ts +3 -1
- package/dist/components/SCalendar/SCalendar.js +131 -3
- package/dist/components/SCalendar/SCalendar.js.map +1 -1
- package/dist/components/SCallout/SCallout.cjs +129 -1
- package/dist/components/SCallout/SCallout.cjs.map +1 -1
- package/dist/components/SCallout/SCallout.js +129 -1
- package/dist/components/SCallout/SCallout.js.map +1 -1
- package/dist/components/SCheckbox/SCheckbox.cjs +129 -1
- package/dist/components/SCheckbox/SCheckbox.cjs.map +1 -1
- package/dist/components/SCheckbox/SCheckbox.js +129 -1
- package/dist/components/SCheckbox/SCheckbox.js.map +1 -1
- package/dist/components/SChip/SChip.cjs +130 -3
- package/dist/components/SChip/SChip.cjs.map +1 -1
- package/dist/components/SChip/SChip.js +130 -3
- package/dist/components/SChip/SChip.js.map +1 -1
- package/dist/components/SChipInput/SChipInput.cjs +153 -3
- package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
- package/dist/components/SChipInput/SChipInput.js +153 -3
- package/dist/components/SChipInput/SChipInput.js.map +1 -1
- package/dist/components/SConfirmModal/SConfirmModal.cjs +129 -1
- package/dist/components/SConfirmModal/SConfirmModal.cjs.map +1 -1
- package/dist/components/SConfirmModal/SConfirmModal.js +129 -1
- package/dist/components/SConfirmModal/SConfirmModal.js.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs +158 -5
- package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.js +158 -5
- package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs +156 -3
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js +156 -3
- package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
- package/dist/components/SDropdownButton/SDropdownButton.cjs +129 -1
- package/dist/components/SDropdownButton/SDropdownButton.cjs.map +1 -1
- package/dist/components/SDropdownButton/SDropdownButton.js +129 -1
- package/dist/components/SDropdownButton/SDropdownButton.js.map +1 -1
- package/dist/components/SField/SField.cjs +129 -1
- package/dist/components/SField/SField.cjs.map +1 -1
- package/dist/components/SField/SField.js +129 -1
- package/dist/components/SField/SField.js.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.cjs +156 -3
- package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.js +156 -3
- package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
- package/dist/components/SForm/SForm.cjs +91 -0
- package/dist/components/SForm/SForm.cjs.map +1 -0
- package/dist/components/SForm/SForm.d.ts +33 -0
- package/dist/components/SForm/SForm.js +89 -0
- package/dist/components/SForm/SForm.js.map +1 -0
- package/dist/components/SForm/index.d.ts +1 -0
- package/dist/components/SGhostButton/SGhostButton.cjs +129 -1
- package/dist/components/SGhostButton/SGhostButton.cjs.map +1 -1
- package/dist/components/SGhostButton/SGhostButton.js +129 -1
- package/dist/components/SGhostButton/SGhostButton.js.map +1 -1
- package/dist/components/SGuide/SGuide.cjs +129 -1
- package/dist/components/SGuide/SGuide.cjs.map +1 -1
- package/dist/components/SGuide/SGuide.js +129 -1
- package/dist/components/SGuide/SGuide.js.map +1 -1
- package/dist/components/SIcon/SIcon.cjs +129 -1
- package/dist/components/SIcon/SIcon.cjs.map +1 -1
- package/dist/components/SIcon/SIcon.d.ts +3 -2
- package/dist/components/SIcon/SIcon.js +129 -1
- package/dist/components/SIcon/SIcon.js.map +1 -1
- package/dist/components/SInput/SInput.cjs +156 -3
- package/dist/components/SInput/SInput.cjs.map +1 -1
- package/dist/components/SInput/SInput.js +157 -4
- package/dist/components/SInput/SInput.js.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs +212 -5
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.js +212 -5
- package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.cjs +129 -1
- package/dist/components/SLoadingModal/SLoadingModal.cjs.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.js +129 -1
- package/dist/components/SLoadingModal/SLoadingModal.js.map +1 -1
- package/dist/components/SModalContainer/SModalContainer.cjs +129 -1
- package/dist/components/SModalContainer/SModalContainer.cjs.map +1 -1
- package/dist/components/SModalContainer/SModalContainer.js +129 -1
- package/dist/components/SModalContainer/SModalContainer.js.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs +156 -3
- package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.js +156 -3
- package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
- package/dist/components/SPagination/SPagination.cjs +129 -1
- package/dist/components/SPagination/SPagination.cjs.map +1 -1
- package/dist/components/SPagination/SPagination.js +129 -1
- package/dist/components/SPagination/SPagination.js.map +1 -1
- package/dist/components/SPopover/SPopover.cjs +129 -1
- package/dist/components/SPopover/SPopover.cjs.map +1 -1
- package/dist/components/SPopover/SPopover.d.ts +3 -1
- package/dist/components/SPopover/SPopover.js +129 -1
- package/dist/components/SPopover/SPopover.js.map +1 -1
- package/dist/components/SPopup/SPopup.cjs +129 -1
- package/dist/components/SPopup/SPopup.cjs.map +1 -1
- package/dist/components/SPopup/SPopup.js +129 -1
- package/dist/components/SPopup/SPopup.js.map +1 -1
- package/dist/components/SSelect/SSelect.cjs +156 -3
- package/dist/components/SSelect/SSelect.cjs.map +1 -1
- package/dist/components/SSelect/SSelect.js +157 -4
- package/dist/components/SSelect/SSelect.js.map +1 -1
- package/dist/components/STable/STable.cjs +156 -3
- package/dist/components/STable/STable.cjs.map +1 -1
- package/dist/components/STable/STable.d.ts +3 -1
- package/dist/components/STable/STable.js +156 -3
- package/dist/components/STable/STable.js.map +1 -1
- package/dist/components/STabs/STabs.cjs +129 -1
- package/dist/components/STabs/STabs.cjs.map +1 -1
- package/dist/components/STabs/STabs.js +129 -1
- package/dist/components/STabs/STabs.js.map +1 -1
- package/dist/components/STag/STag.cjs +129 -1
- package/dist/components/STag/STag.cjs.map +1 -1
- package/dist/components/STag/STag.js +129 -1
- package/dist/components/STag/STag.js.map +1 -1
- package/dist/components/STextLink/STextLink.cjs +129 -1
- package/dist/components/STextLink/STextLink.cjs.map +1 -1
- package/dist/components/STextLink/STextLink.d.ts +3 -2
- package/dist/components/STextLink/STextLink.js +129 -1
- package/dist/components/STextLink/STextLink.js.map +1 -1
- package/dist/components/STextarea/STextarea.cjs +156 -3
- package/dist/components/STextarea/STextarea.cjs.map +1 -1
- package/dist/components/STextarea/STextarea.js +157 -4
- package/dist/components/STextarea/STextarea.js.map +1 -1
- package/dist/components/SToast/SToast.cjs +129 -1
- package/dist/components/SToast/SToast.cjs.map +1 -1
- package/dist/components/SToast/SToast.js +129 -1
- package/dist/components/SToast/SToast.js.map +1 -1
- package/dist/components/SToast/SToastContainer.cjs +129 -1
- package/dist/components/SToast/SToastContainer.cjs.map +1 -1
- package/dist/components/SToast/SToastContainer.js +129 -1
- package/dist/components/SToast/SToastContainer.js.map +1 -1
- package/dist/components/STooltip/STooltip.cjs +129 -1
- package/dist/components/STooltip/STooltip.cjs.map +1 -1
- package/dist/components/STooltip/STooltip.d.ts +3 -1
- package/dist/components/STooltip/STooltip.js +129 -1
- package/dist/components/STooltip/STooltip.js.map +1 -1
- package/dist/index.cjs +306 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +303 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/color.cjs +135 -0
- package/dist/lib/color.cjs.map +1 -0
- package/dist/lib/color.d.ts +28 -0
- package/dist/lib/color.js +131 -0
- package/dist/lib/color.js.map +1 -0
- package/dist/lib/form.cjs +23 -0
- package/dist/lib/form.cjs.map +1 -1
- package/dist/lib/form.d.ts +25 -0
- package/dist/lib/form.js +21 -1
- package/dist/lib/form.js.map +1 -1
- package/dist/styles.css +25 -0
- package/package.json +1 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/lib/color.ts
|
|
4
|
+
var COLOR_KEYS = [
|
|
5
|
+
"white",
|
|
6
|
+
"black",
|
|
7
|
+
"grey_10",
|
|
8
|
+
"grey_20",
|
|
9
|
+
"grey_25",
|
|
10
|
+
"grey_30",
|
|
11
|
+
"grey_35",
|
|
12
|
+
"grey_45",
|
|
13
|
+
"grey_50",
|
|
14
|
+
"grey_55",
|
|
15
|
+
"grey_60",
|
|
16
|
+
"grey_65",
|
|
17
|
+
"grey_70",
|
|
18
|
+
"grey_80",
|
|
19
|
+
"grey_85",
|
|
20
|
+
"grey_90",
|
|
21
|
+
"grey_95",
|
|
22
|
+
"grey_05",
|
|
23
|
+
"red_15",
|
|
24
|
+
"red_20",
|
|
25
|
+
"red_30",
|
|
26
|
+
"red_45",
|
|
27
|
+
"red_60",
|
|
28
|
+
"red_70",
|
|
29
|
+
"red_75",
|
|
30
|
+
"red_80",
|
|
31
|
+
"red_85",
|
|
32
|
+
"red_90",
|
|
33
|
+
"red_95",
|
|
34
|
+
"red_99",
|
|
35
|
+
"orange_10",
|
|
36
|
+
"orange_20",
|
|
37
|
+
"orange_35",
|
|
38
|
+
"orange_45",
|
|
39
|
+
"orange_55",
|
|
40
|
+
"orange_60",
|
|
41
|
+
"orange_65",
|
|
42
|
+
"orange_75",
|
|
43
|
+
"orange_85",
|
|
44
|
+
"orange_90",
|
|
45
|
+
"orange_95",
|
|
46
|
+
"orange_99",
|
|
47
|
+
"yellow_10",
|
|
48
|
+
"yellow_20",
|
|
49
|
+
"yellow_25",
|
|
50
|
+
"yellow_30",
|
|
51
|
+
"yellow_40",
|
|
52
|
+
"yellow_45",
|
|
53
|
+
"yellow_50",
|
|
54
|
+
"yellow_60",
|
|
55
|
+
"yellow_70",
|
|
56
|
+
"yellow_80",
|
|
57
|
+
"yellow_90",
|
|
58
|
+
"yellow_95",
|
|
59
|
+
"olive_10",
|
|
60
|
+
"olive_15",
|
|
61
|
+
"olive_20",
|
|
62
|
+
"olive_30",
|
|
63
|
+
"olive_45",
|
|
64
|
+
"olive_55",
|
|
65
|
+
"olive_65",
|
|
66
|
+
"olive_70",
|
|
67
|
+
"olive_80",
|
|
68
|
+
"olive_90",
|
|
69
|
+
"olive_95",
|
|
70
|
+
"olive_05",
|
|
71
|
+
"green_15",
|
|
72
|
+
"green_25",
|
|
73
|
+
"green_45",
|
|
74
|
+
"green_55",
|
|
75
|
+
"green_65",
|
|
76
|
+
"green_70",
|
|
77
|
+
"green_75",
|
|
78
|
+
"green_80",
|
|
79
|
+
"green_85",
|
|
80
|
+
"green_90",
|
|
81
|
+
"green_95",
|
|
82
|
+
"green_99",
|
|
83
|
+
"steelblue_10",
|
|
84
|
+
"steelblue_25",
|
|
85
|
+
"steelblue_45",
|
|
86
|
+
"steelblue_60",
|
|
87
|
+
"steelblue_65",
|
|
88
|
+
"steelblue_70",
|
|
89
|
+
"steelblue_75",
|
|
90
|
+
"steelblue_80",
|
|
91
|
+
"steelblue_85",
|
|
92
|
+
"steelblue_90",
|
|
93
|
+
"steelblue_95",
|
|
94
|
+
"steelblue_99",
|
|
95
|
+
"oceanblue_15",
|
|
96
|
+
"oceanblue_25",
|
|
97
|
+
"oceanblue_50",
|
|
98
|
+
"oceanblue_60",
|
|
99
|
+
"oceanblue_65",
|
|
100
|
+
"oceanblue_70",
|
|
101
|
+
"oceanblue_75",
|
|
102
|
+
"oceanblue_80",
|
|
103
|
+
"oceanblue_85",
|
|
104
|
+
"oceanblue_90",
|
|
105
|
+
"oceanblue_95",
|
|
106
|
+
"oceanblue_99",
|
|
107
|
+
"brilliantblue_10",
|
|
108
|
+
"brilliantblue_20",
|
|
109
|
+
"brilliantblue_25",
|
|
110
|
+
"brilliantblue_40",
|
|
111
|
+
"brilliantblue_50",
|
|
112
|
+
"brilliantblue_60",
|
|
113
|
+
"brilliantblue_70",
|
|
114
|
+
"brilliantblue_75",
|
|
115
|
+
"brilliantblue_80",
|
|
116
|
+
"brilliantblue_85",
|
|
117
|
+
"brilliantblue_90",
|
|
118
|
+
"brilliantblue_95",
|
|
119
|
+
"brilliantblue_99",
|
|
120
|
+
"brilliantblue_05"
|
|
121
|
+
];
|
|
122
|
+
var KEY_SET = new Set(COLOR_KEYS);
|
|
123
|
+
function isColorKey(input) {
|
|
124
|
+
return KEY_SET.has(input);
|
|
125
|
+
}
|
|
126
|
+
function resolveColor(input, fallback) {
|
|
127
|
+
if (input === null || input === void 0 || input === "") return fallback;
|
|
128
|
+
return isColorKey(input) ? `var(--color-${input.replace(/_/g, "-")})` : input;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
exports.COLOR_KEYS = COLOR_KEYS;
|
|
132
|
+
exports.isColorKey = isColorKey;
|
|
133
|
+
exports.resolveColor = resolveColor;
|
|
134
|
+
//# sourceMappingURL=color.cjs.map
|
|
135
|
+
//# sourceMappingURL=color.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/color.ts"],"names":[],"mappings":"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","file":"color.cjs","sourcesContent":["/**\n * 컬러 팔레트 키 해석 유틸 (stencil `utils/color` 포팅).\n *\n * 컴포넌트의 `color` prop 은 팔레트 키(`grey_65`, `red_95` …)와\n * 임의의 CSS 색상 값(`#FF0000`, `rgb(...)`, `var(--foo)` …)을 모두 받는다.\n * 팔레트 키가 들어오면 대응하는 `var(--color-*)` 로 변환하고,\n * 그 외의 값은 그대로 통과시킨다.\n *\n * 팔레트 원본은 theme.css 의 `--color-*` 프리미티브(토큰 자동 생성) 다.\n * 키 목록은 그와 1:1 로 대응하며, 값은 var() 참조로 단일 소스를 유지한다.\n */\n\n/** theme.css 의 `--color-*` 프리미티브와 1:1 대응하는 팔레트 키 */\nexport const COLOR_KEYS = [\n 'white',\n 'black',\n 'grey_10',\n 'grey_20',\n 'grey_25',\n 'grey_30',\n 'grey_35',\n 'grey_45',\n 'grey_50',\n 'grey_55',\n 'grey_60',\n 'grey_65',\n 'grey_70',\n 'grey_80',\n 'grey_85',\n 'grey_90',\n 'grey_95',\n 'grey_05',\n 'red_15',\n 'red_20',\n 'red_30',\n 'red_45',\n 'red_60',\n 'red_70',\n 'red_75',\n 'red_80',\n 'red_85',\n 'red_90',\n 'red_95',\n 'red_99',\n 'orange_10',\n 'orange_20',\n 'orange_35',\n 'orange_45',\n 'orange_55',\n 'orange_60',\n 'orange_65',\n 'orange_75',\n 'orange_85',\n 'orange_90',\n 'orange_95',\n 'orange_99',\n 'yellow_10',\n 'yellow_20',\n 'yellow_25',\n 'yellow_30',\n 'yellow_40',\n 'yellow_45',\n 'yellow_50',\n 'yellow_60',\n 'yellow_70',\n 'yellow_80',\n 'yellow_90',\n 'yellow_95',\n 'olive_10',\n 'olive_15',\n 'olive_20',\n 'olive_30',\n 'olive_45',\n 'olive_55',\n 'olive_65',\n 'olive_70',\n 'olive_80',\n 'olive_90',\n 'olive_95',\n 'olive_05',\n 'green_15',\n 'green_25',\n 'green_45',\n 'green_55',\n 'green_65',\n 'green_70',\n 'green_75',\n 'green_80',\n 'green_85',\n 'green_90',\n 'green_95',\n 'green_99',\n 'steelblue_10',\n 'steelblue_25',\n 'steelblue_45',\n 'steelblue_60',\n 'steelblue_65',\n 'steelblue_70',\n 'steelblue_75',\n 'steelblue_80',\n 'steelblue_85',\n 'steelblue_90',\n 'steelblue_95',\n 'steelblue_99',\n 'oceanblue_15',\n 'oceanblue_25',\n 'oceanblue_50',\n 'oceanblue_60',\n 'oceanblue_65',\n 'oceanblue_70',\n 'oceanblue_75',\n 'oceanblue_80',\n 'oceanblue_85',\n 'oceanblue_90',\n 'oceanblue_95',\n 'oceanblue_99',\n 'brilliantblue_10',\n 'brilliantblue_20',\n 'brilliantblue_25',\n 'brilliantblue_40',\n 'brilliantblue_50',\n 'brilliantblue_60',\n 'brilliantblue_70',\n 'brilliantblue_75',\n 'brilliantblue_80',\n 'brilliantblue_85',\n 'brilliantblue_90',\n 'brilliantblue_95',\n 'brilliantblue_99',\n 'brilliantblue_05',\n] as const;\n\n/** 팔레트 키 유니온 (`'grey_65' | 'red_95' | ...`) */\nexport type SColorKey = (typeof COLOR_KEYS)[number];\n\n/**\n * `color` prop 타입. 팔레트 키 자동완성을 제공하면서 임의 CSS 색상 문자열도 허용한다.\n * `(string & {})` 는 유니온 리터럴 자동완성을 유지하기 위한 관용 표현이다.\n */\nexport type SColor = SColorKey | (string & {});\n\nconst KEY_SET = new Set<string>(COLOR_KEYS);\n\n/** 문자열이 팔레트 키인지 판별하는 타입 가드 */\nexport function isColorKey(input: string): input is SColorKey {\n return KEY_SET.has(input);\n}\n\n/**\n * 팔레트 키면 대응하는 `var(--color-*)` 로 변환하고, 그 외 값은 원문 그대로 반환한다.\n * 값이 비어 있으면 `fallback`(기본 `undefined`) 을 반환한다.\n * (SIcon 처럼 미지정 시 currentColor 를 상속해야 하는 곳을 위해 fallback 기본값은 undefined)\n */\nexport function resolveColor(\n input: string | undefined | null,\n fallback?: string,\n): string | undefined {\n if (input === null || input === undefined || input === '') return fallback;\n return isColorKey(input) ? `var(--color-${input.replace(/_/g, '-')})` : input;\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 컬러 팔레트 키 해석 유틸 (stencil `utils/color` 포팅).
|
|
3
|
+
*
|
|
4
|
+
* 컴포넌트의 `color` prop 은 팔레트 키(`grey_65`, `red_95` …)와
|
|
5
|
+
* 임의의 CSS 색상 값(`#FF0000`, `rgb(...)`, `var(--foo)` …)을 모두 받는다.
|
|
6
|
+
* 팔레트 키가 들어오면 대응하는 `var(--color-*)` 로 변환하고,
|
|
7
|
+
* 그 외의 값은 그대로 통과시킨다.
|
|
8
|
+
*
|
|
9
|
+
* 팔레트 원본은 theme.css 의 `--color-*` 프리미티브(토큰 자동 생성) 다.
|
|
10
|
+
* 키 목록은 그와 1:1 로 대응하며, 값은 var() 참조로 단일 소스를 유지한다.
|
|
11
|
+
*/
|
|
12
|
+
/** theme.css 의 `--color-*` 프리미티브와 1:1 대응하는 팔레트 키 */
|
|
13
|
+
export declare const COLOR_KEYS: readonly ["white", "black", "grey_10", "grey_20", "grey_25", "grey_30", "grey_35", "grey_45", "grey_50", "grey_55", "grey_60", "grey_65", "grey_70", "grey_80", "grey_85", "grey_90", "grey_95", "grey_05", "red_15", "red_20", "red_30", "red_45", "red_60", "red_70", "red_75", "red_80", "red_85", "red_90", "red_95", "red_99", "orange_10", "orange_20", "orange_35", "orange_45", "orange_55", "orange_60", "orange_65", "orange_75", "orange_85", "orange_90", "orange_95", "orange_99", "yellow_10", "yellow_20", "yellow_25", "yellow_30", "yellow_40", "yellow_45", "yellow_50", "yellow_60", "yellow_70", "yellow_80", "yellow_90", "yellow_95", "olive_10", "olive_15", "olive_20", "olive_30", "olive_45", "olive_55", "olive_65", "olive_70", "olive_80", "olive_90", "olive_95", "olive_05", "green_15", "green_25", "green_45", "green_55", "green_65", "green_70", "green_75", "green_80", "green_85", "green_90", "green_95", "green_99", "steelblue_10", "steelblue_25", "steelblue_45", "steelblue_60", "steelblue_65", "steelblue_70", "steelblue_75", "steelblue_80", "steelblue_85", "steelblue_90", "steelblue_95", "steelblue_99", "oceanblue_15", "oceanblue_25", "oceanblue_50", "oceanblue_60", "oceanblue_65", "oceanblue_70", "oceanblue_75", "oceanblue_80", "oceanblue_85", "oceanblue_90", "oceanblue_95", "oceanblue_99", "brilliantblue_10", "brilliantblue_20", "brilliantblue_25", "brilliantblue_40", "brilliantblue_50", "brilliantblue_60", "brilliantblue_70", "brilliantblue_75", "brilliantblue_80", "brilliantblue_85", "brilliantblue_90", "brilliantblue_95", "brilliantblue_99", "brilliantblue_05"];
|
|
14
|
+
/** 팔레트 키 유니온 (`'grey_65' | 'red_95' | ...`) */
|
|
15
|
+
export type SColorKey = (typeof COLOR_KEYS)[number];
|
|
16
|
+
/**
|
|
17
|
+
* `color` prop 타입. 팔레트 키 자동완성을 제공하면서 임의 CSS 색상 문자열도 허용한다.
|
|
18
|
+
* `(string & {})` 는 유니온 리터럴 자동완성을 유지하기 위한 관용 표현이다.
|
|
19
|
+
*/
|
|
20
|
+
export type SColor = SColorKey | (string & {});
|
|
21
|
+
/** 문자열이 팔레트 키인지 판별하는 타입 가드 */
|
|
22
|
+
export declare function isColorKey(input: string): input is SColorKey;
|
|
23
|
+
/**
|
|
24
|
+
* 팔레트 키면 대응하는 `var(--color-*)` 로 변환하고, 그 외 값은 원문 그대로 반환한다.
|
|
25
|
+
* 값이 비어 있으면 `fallback`(기본 `undefined`) 을 반환한다.
|
|
26
|
+
* (SIcon 처럼 미지정 시 currentColor 를 상속해야 하는 곳을 위해 fallback 기본값은 undefined)
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveColor(input: string | undefined | null, fallback?: string): string | undefined;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// src/lib/color.ts
|
|
2
|
+
var COLOR_KEYS = [
|
|
3
|
+
"white",
|
|
4
|
+
"black",
|
|
5
|
+
"grey_10",
|
|
6
|
+
"grey_20",
|
|
7
|
+
"grey_25",
|
|
8
|
+
"grey_30",
|
|
9
|
+
"grey_35",
|
|
10
|
+
"grey_45",
|
|
11
|
+
"grey_50",
|
|
12
|
+
"grey_55",
|
|
13
|
+
"grey_60",
|
|
14
|
+
"grey_65",
|
|
15
|
+
"grey_70",
|
|
16
|
+
"grey_80",
|
|
17
|
+
"grey_85",
|
|
18
|
+
"grey_90",
|
|
19
|
+
"grey_95",
|
|
20
|
+
"grey_05",
|
|
21
|
+
"red_15",
|
|
22
|
+
"red_20",
|
|
23
|
+
"red_30",
|
|
24
|
+
"red_45",
|
|
25
|
+
"red_60",
|
|
26
|
+
"red_70",
|
|
27
|
+
"red_75",
|
|
28
|
+
"red_80",
|
|
29
|
+
"red_85",
|
|
30
|
+
"red_90",
|
|
31
|
+
"red_95",
|
|
32
|
+
"red_99",
|
|
33
|
+
"orange_10",
|
|
34
|
+
"orange_20",
|
|
35
|
+
"orange_35",
|
|
36
|
+
"orange_45",
|
|
37
|
+
"orange_55",
|
|
38
|
+
"orange_60",
|
|
39
|
+
"orange_65",
|
|
40
|
+
"orange_75",
|
|
41
|
+
"orange_85",
|
|
42
|
+
"orange_90",
|
|
43
|
+
"orange_95",
|
|
44
|
+
"orange_99",
|
|
45
|
+
"yellow_10",
|
|
46
|
+
"yellow_20",
|
|
47
|
+
"yellow_25",
|
|
48
|
+
"yellow_30",
|
|
49
|
+
"yellow_40",
|
|
50
|
+
"yellow_45",
|
|
51
|
+
"yellow_50",
|
|
52
|
+
"yellow_60",
|
|
53
|
+
"yellow_70",
|
|
54
|
+
"yellow_80",
|
|
55
|
+
"yellow_90",
|
|
56
|
+
"yellow_95",
|
|
57
|
+
"olive_10",
|
|
58
|
+
"olive_15",
|
|
59
|
+
"olive_20",
|
|
60
|
+
"olive_30",
|
|
61
|
+
"olive_45",
|
|
62
|
+
"olive_55",
|
|
63
|
+
"olive_65",
|
|
64
|
+
"olive_70",
|
|
65
|
+
"olive_80",
|
|
66
|
+
"olive_90",
|
|
67
|
+
"olive_95",
|
|
68
|
+
"olive_05",
|
|
69
|
+
"green_15",
|
|
70
|
+
"green_25",
|
|
71
|
+
"green_45",
|
|
72
|
+
"green_55",
|
|
73
|
+
"green_65",
|
|
74
|
+
"green_70",
|
|
75
|
+
"green_75",
|
|
76
|
+
"green_80",
|
|
77
|
+
"green_85",
|
|
78
|
+
"green_90",
|
|
79
|
+
"green_95",
|
|
80
|
+
"green_99",
|
|
81
|
+
"steelblue_10",
|
|
82
|
+
"steelblue_25",
|
|
83
|
+
"steelblue_45",
|
|
84
|
+
"steelblue_60",
|
|
85
|
+
"steelblue_65",
|
|
86
|
+
"steelblue_70",
|
|
87
|
+
"steelblue_75",
|
|
88
|
+
"steelblue_80",
|
|
89
|
+
"steelblue_85",
|
|
90
|
+
"steelblue_90",
|
|
91
|
+
"steelblue_95",
|
|
92
|
+
"steelblue_99",
|
|
93
|
+
"oceanblue_15",
|
|
94
|
+
"oceanblue_25",
|
|
95
|
+
"oceanblue_50",
|
|
96
|
+
"oceanblue_60",
|
|
97
|
+
"oceanblue_65",
|
|
98
|
+
"oceanblue_70",
|
|
99
|
+
"oceanblue_75",
|
|
100
|
+
"oceanblue_80",
|
|
101
|
+
"oceanblue_85",
|
|
102
|
+
"oceanblue_90",
|
|
103
|
+
"oceanblue_95",
|
|
104
|
+
"oceanblue_99",
|
|
105
|
+
"brilliantblue_10",
|
|
106
|
+
"brilliantblue_20",
|
|
107
|
+
"brilliantblue_25",
|
|
108
|
+
"brilliantblue_40",
|
|
109
|
+
"brilliantblue_50",
|
|
110
|
+
"brilliantblue_60",
|
|
111
|
+
"brilliantblue_70",
|
|
112
|
+
"brilliantblue_75",
|
|
113
|
+
"brilliantblue_80",
|
|
114
|
+
"brilliantblue_85",
|
|
115
|
+
"brilliantblue_90",
|
|
116
|
+
"brilliantblue_95",
|
|
117
|
+
"brilliantblue_99",
|
|
118
|
+
"brilliantblue_05"
|
|
119
|
+
];
|
|
120
|
+
var KEY_SET = new Set(COLOR_KEYS);
|
|
121
|
+
function isColorKey(input) {
|
|
122
|
+
return KEY_SET.has(input);
|
|
123
|
+
}
|
|
124
|
+
function resolveColor(input, fallback) {
|
|
125
|
+
if (input === null || input === void 0 || input === "") return fallback;
|
|
126
|
+
return isColorKey(input) ? `var(--color-${input.replace(/_/g, "-")})` : input;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export { COLOR_KEYS, isColorKey, resolveColor };
|
|
130
|
+
//# sourceMappingURL=color.js.map
|
|
131
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/color.ts"],"names":[],"mappings":"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","file":"color.js","sourcesContent":["/**\n * 컬러 팔레트 키 해석 유틸 (stencil `utils/color` 포팅).\n *\n * 컴포넌트의 `color` prop 은 팔레트 키(`grey_65`, `red_95` …)와\n * 임의의 CSS 색상 값(`#FF0000`, `rgb(...)`, `var(--foo)` …)을 모두 받는다.\n * 팔레트 키가 들어오면 대응하는 `var(--color-*)` 로 변환하고,\n * 그 외의 값은 그대로 통과시킨다.\n *\n * 팔레트 원본은 theme.css 의 `--color-*` 프리미티브(토큰 자동 생성) 다.\n * 키 목록은 그와 1:1 로 대응하며, 값은 var() 참조로 단일 소스를 유지한다.\n */\n\n/** theme.css 의 `--color-*` 프리미티브와 1:1 대응하는 팔레트 키 */\nexport const COLOR_KEYS = [\n 'white',\n 'black',\n 'grey_10',\n 'grey_20',\n 'grey_25',\n 'grey_30',\n 'grey_35',\n 'grey_45',\n 'grey_50',\n 'grey_55',\n 'grey_60',\n 'grey_65',\n 'grey_70',\n 'grey_80',\n 'grey_85',\n 'grey_90',\n 'grey_95',\n 'grey_05',\n 'red_15',\n 'red_20',\n 'red_30',\n 'red_45',\n 'red_60',\n 'red_70',\n 'red_75',\n 'red_80',\n 'red_85',\n 'red_90',\n 'red_95',\n 'red_99',\n 'orange_10',\n 'orange_20',\n 'orange_35',\n 'orange_45',\n 'orange_55',\n 'orange_60',\n 'orange_65',\n 'orange_75',\n 'orange_85',\n 'orange_90',\n 'orange_95',\n 'orange_99',\n 'yellow_10',\n 'yellow_20',\n 'yellow_25',\n 'yellow_30',\n 'yellow_40',\n 'yellow_45',\n 'yellow_50',\n 'yellow_60',\n 'yellow_70',\n 'yellow_80',\n 'yellow_90',\n 'yellow_95',\n 'olive_10',\n 'olive_15',\n 'olive_20',\n 'olive_30',\n 'olive_45',\n 'olive_55',\n 'olive_65',\n 'olive_70',\n 'olive_80',\n 'olive_90',\n 'olive_95',\n 'olive_05',\n 'green_15',\n 'green_25',\n 'green_45',\n 'green_55',\n 'green_65',\n 'green_70',\n 'green_75',\n 'green_80',\n 'green_85',\n 'green_90',\n 'green_95',\n 'green_99',\n 'steelblue_10',\n 'steelblue_25',\n 'steelblue_45',\n 'steelblue_60',\n 'steelblue_65',\n 'steelblue_70',\n 'steelblue_75',\n 'steelblue_80',\n 'steelblue_85',\n 'steelblue_90',\n 'steelblue_95',\n 'steelblue_99',\n 'oceanblue_15',\n 'oceanblue_25',\n 'oceanblue_50',\n 'oceanblue_60',\n 'oceanblue_65',\n 'oceanblue_70',\n 'oceanblue_75',\n 'oceanblue_80',\n 'oceanblue_85',\n 'oceanblue_90',\n 'oceanblue_95',\n 'oceanblue_99',\n 'brilliantblue_10',\n 'brilliantblue_20',\n 'brilliantblue_25',\n 'brilliantblue_40',\n 'brilliantblue_50',\n 'brilliantblue_60',\n 'brilliantblue_70',\n 'brilliantblue_75',\n 'brilliantblue_80',\n 'brilliantblue_85',\n 'brilliantblue_90',\n 'brilliantblue_95',\n 'brilliantblue_99',\n 'brilliantblue_05',\n] as const;\n\n/** 팔레트 키 유니온 (`'grey_65' | 'red_95' | ...`) */\nexport type SColorKey = (typeof COLOR_KEYS)[number];\n\n/**\n * `color` prop 타입. 팔레트 키 자동완성을 제공하면서 임의 CSS 색상 문자열도 허용한다.\n * `(string & {})` 는 유니온 리터럴 자동완성을 유지하기 위한 관용 표현이다.\n */\nexport type SColor = SColorKey | (string & {});\n\nconst KEY_SET = new Set<string>(COLOR_KEYS);\n\n/** 문자열이 팔레트 키인지 판별하는 타입 가드 */\nexport function isColorKey(input: string): input is SColorKey {\n return KEY_SET.has(input);\n}\n\n/**\n * 팔레트 키면 대응하는 `var(--color-*)` 로 변환하고, 그 외 값은 원문 그대로 반환한다.\n * 값이 비어 있으면 `fallback`(기본 `undefined`) 을 반환한다.\n * (SIcon 처럼 미지정 시 currentColor 를 상속해야 하는 곳을 위해 fallback 기본값은 undefined)\n */\nexport function resolveColor(\n input: string | undefined | null,\n fallback?: string,\n): string | undefined {\n if (input === null || input === undefined || input === '') return fallback;\n return isColorKey(input) ? `var(--color-${input.replace(/_/g, '-')})` : input;\n}\n"]}
|
package/dist/lib/form.cjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
3
5
|
// src/lib/form.ts
|
|
4
6
|
function runRules(value, rules) {
|
|
5
7
|
if (!rules || rules.length === 0) return "";
|
|
@@ -9,7 +11,28 @@ function runRules(value, rules) {
|
|
|
9
11
|
}
|
|
10
12
|
return "";
|
|
11
13
|
}
|
|
14
|
+
var FormContext = react.createContext(null);
|
|
15
|
+
function useFormContext() {
|
|
16
|
+
return react.useContext(FormContext);
|
|
17
|
+
}
|
|
18
|
+
function useFormField(field) {
|
|
19
|
+
const ctx = useFormContext();
|
|
20
|
+
const cbRef = react.useRef(field);
|
|
21
|
+
cbRef.current = field;
|
|
22
|
+
const name = field.name ?? "";
|
|
23
|
+
react.useEffect(() => {
|
|
24
|
+
if (!ctx) return;
|
|
25
|
+
return ctx.register({
|
|
26
|
+
name,
|
|
27
|
+
validate: () => cbRef.current.validate(),
|
|
28
|
+
resetValidation: () => cbRef.current.resetValidation()
|
|
29
|
+
});
|
|
30
|
+
}, [ctx, name]);
|
|
31
|
+
}
|
|
12
32
|
|
|
33
|
+
exports.FormContext = FormContext;
|
|
13
34
|
exports.runRules = runRules;
|
|
35
|
+
exports.useFormContext = useFormContext;
|
|
36
|
+
exports.useFormField = useFormField;
|
|
14
37
|
//# sourceMappingURL=form.cjs.map
|
|
15
38
|
//# sourceMappingURL=form.cjs.map
|
package/dist/lib/form.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/form.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/lib/form.ts"],"names":["createContext","useContext","useRef","useEffect"],"mappings":";;;;;AAMO,SAAS,QAAA,CAAS,OAAgB,KAAA,EAAwB;AAC/D,EAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,MAAA,KAAW,GAAG,OAAO,EAAA;AACzC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,IAAS,EAAE,CAAA;AAC/B,IAAA,IAAI,WAAW,IAAA,EAAM,OAAO,OAAO,MAAA,KAAW,WAAW,MAAA,GAAS,iEAAA;AAAA,EACpE;AACA,EAAA,OAAO,EAAA;AACT;AAwBO,IAAM,WAAA,GAAcA,oBAAuC,IAAI;AAG/D,SAAS,cAAA,GAA0C;AACxD,EAAA,OAAOC,iBAAW,WAAW,CAAA;AAC/B;AAMO,SAAS,aAAa,KAAA,EAIpB;AACP,EAAA,MAAM,MAAM,cAAA,EAAe;AAC3B,EAAA,MAAM,KAAA,GAAQC,aAAO,KAAK,CAAA;AAC1B,EAAA,KAAA,CAAM,OAAA,GAAU,KAAA;AAChB,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,IAAQ,EAAA;AAE3B,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,GAAA,EAAK;AACV,IAAA,OAAO,IAAI,QAAA,CAAS;AAAA,MAClB,IAAA;AAAA,MACA,QAAA,EAAU,MAAM,KAAA,CAAM,OAAA,CAAQ,QAAA,EAAS;AAAA,MACvC,eAAA,EAAiB,MAAM,KAAA,CAAM,OAAA,CAAQ,eAAA;AAAgB,KACtD,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,GAAA,EAAK,IAAI,CAAC,CAAA;AAChB","file":"form.cjs","sourcesContent":["import { createContext, useContext, useEffect, useRef } from 'react';\n\n/** 유효성 규칙: 유효하면 true, 아니면 에러 메시지 문자열 반환 (sd types/form Rule 포팅) */\nexport type Rule = (value: unknown) => true | string;\n\n/** rules를 순서대로 실행해 첫 실패 메시지를 반환. 모두 통과하면 \"\" */\nexport function runRules(value: unknown, rules?: Rule[]): string {\n if (!rules || rules.length === 0) return '';\n for (const rule of rules) {\n const result = rule(value ?? '');\n if (result !== true) return typeof result === 'string' ? result : '유효하지 않은 값입니다.';\n }\n return '';\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// SForm 연동 — Context 기반 필드 등록 (sd-form 검증 서브시스템 포팅)\n// 각 rule-bearing 컨트롤이 useFormField로 자신을 등록하면, SForm이 submit 시\n// 등록된 모든 필드의 validate()를 실행해 하나라도 실패하면 제출을 막는다.\n// SForm 밖에서 쓰이면 context가 없어 no-op (form-agnostic 사용 유지).\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** SForm에 등록되는 필드 항목 */\nexport interface FormFieldEntry {\n /** 폼 연동용 name (validationError names·focus 대상 식별) */\n name: string;\n /** 현재 값에 rules를 실행하고 에러 상태를 반영한 뒤 valid 여부 반환 */\n validate: () => boolean;\n /** 검증 에러 상태만 초기화 (값은 소비자 소유) */\n resetValidation: () => void;\n}\n\nexport interface FormContextValue {\n /** 필드를 등록하고 해제 함수를 반환 */\n register: (entry: FormFieldEntry) => () => void;\n}\n\nexport const FormContext = createContext<FormContextValue | null>(null);\n\n/** 가장 가까운 SForm의 context (없으면 null) */\nexport function useFormContext(): FormContextValue | null {\n return useContext(FormContext);\n}\n\n/**\n * 폼 필드 등록 훅. SForm 내부이면 등록되고, 밖이면 no-op.\n * validate/resetValidation은 항상 최신 클로저를 참조하도록 ref로 래핑한다.\n */\nexport function useFormField(field: {\n name?: string;\n validate: () => boolean;\n resetValidation: () => void;\n}): void {\n const ctx = useFormContext();\n const cbRef = useRef(field);\n cbRef.current = field;\n const name = field.name ?? '';\n\n useEffect(() => {\n if (!ctx) return;\n return ctx.register({\n name,\n validate: () => cbRef.current.validate(),\n resetValidation: () => cbRef.current.resetValidation(),\n });\n }, [ctx, name]);\n}\n"]}
|
package/dist/lib/form.d.ts
CHANGED
|
@@ -2,3 +2,28 @@
|
|
|
2
2
|
export type Rule = (value: unknown) => true | string;
|
|
3
3
|
/** rules를 순서대로 실행해 첫 실패 메시지를 반환. 모두 통과하면 "" */
|
|
4
4
|
export declare function runRules(value: unknown, rules?: Rule[]): string;
|
|
5
|
+
/** SForm에 등록되는 필드 항목 */
|
|
6
|
+
export interface FormFieldEntry {
|
|
7
|
+
/** 폼 연동용 name (validationError names·focus 대상 식별) */
|
|
8
|
+
name: string;
|
|
9
|
+
/** 현재 값에 rules를 실행하고 에러 상태를 반영한 뒤 valid 여부 반환 */
|
|
10
|
+
validate: () => boolean;
|
|
11
|
+
/** 검증 에러 상태만 초기화 (값은 소비자 소유) */
|
|
12
|
+
resetValidation: () => void;
|
|
13
|
+
}
|
|
14
|
+
export interface FormContextValue {
|
|
15
|
+
/** 필드를 등록하고 해제 함수를 반환 */
|
|
16
|
+
register: (entry: FormFieldEntry) => () => void;
|
|
17
|
+
}
|
|
18
|
+
export declare const FormContext: import("react").Context<FormContextValue | null>;
|
|
19
|
+
/** 가장 가까운 SForm의 context (없으면 null) */
|
|
20
|
+
export declare function useFormContext(): FormContextValue | null;
|
|
21
|
+
/**
|
|
22
|
+
* 폼 필드 등록 훅. SForm 내부이면 등록되고, 밖이면 no-op.
|
|
23
|
+
* validate/resetValidation은 항상 최신 클로저를 참조하도록 ref로 래핑한다.
|
|
24
|
+
*/
|
|
25
|
+
export declare function useFormField(field: {
|
|
26
|
+
name?: string;
|
|
27
|
+
validate: () => boolean;
|
|
28
|
+
resetValidation: () => void;
|
|
29
|
+
}): void;
|
package/dist/lib/form.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { createContext, useContext, useRef, useEffect } from 'react';
|
|
2
|
+
|
|
1
3
|
// src/lib/form.ts
|
|
2
4
|
function runRules(value, rules) {
|
|
3
5
|
if (!rules || rules.length === 0) return "";
|
|
@@ -7,7 +9,25 @@ function runRules(value, rules) {
|
|
|
7
9
|
}
|
|
8
10
|
return "";
|
|
9
11
|
}
|
|
12
|
+
var FormContext = createContext(null);
|
|
13
|
+
function useFormContext() {
|
|
14
|
+
return useContext(FormContext);
|
|
15
|
+
}
|
|
16
|
+
function useFormField(field) {
|
|
17
|
+
const ctx = useFormContext();
|
|
18
|
+
const cbRef = useRef(field);
|
|
19
|
+
cbRef.current = field;
|
|
20
|
+
const name = field.name ?? "";
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (!ctx) return;
|
|
23
|
+
return ctx.register({
|
|
24
|
+
name,
|
|
25
|
+
validate: () => cbRef.current.validate(),
|
|
26
|
+
resetValidation: () => cbRef.current.resetValidation()
|
|
27
|
+
});
|
|
28
|
+
}, [ctx, name]);
|
|
29
|
+
}
|
|
10
30
|
|
|
11
|
-
export { runRules };
|
|
31
|
+
export { FormContext, runRules, useFormContext, useFormField };
|
|
12
32
|
//# sourceMappingURL=form.js.map
|
|
13
33
|
//# sourceMappingURL=form.js.map
|
package/dist/lib/form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/form.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/lib/form.ts"],"names":[],"mappings":";;;AAMO,SAAS,QAAA,CAAS,OAAgB,KAAA,EAAwB;AAC/D,EAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,MAAA,KAAW,GAAG,OAAO,EAAA;AACzC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,IAAS,EAAE,CAAA;AAC/B,IAAA,IAAI,WAAW,IAAA,EAAM,OAAO,OAAO,MAAA,KAAW,WAAW,MAAA,GAAS,iEAAA;AAAA,EACpE;AACA,EAAA,OAAO,EAAA;AACT;AAwBO,IAAM,WAAA,GAAc,cAAuC,IAAI;AAG/D,SAAS,cAAA,GAA0C;AACxD,EAAA,OAAO,WAAW,WAAW,CAAA;AAC/B;AAMO,SAAS,aAAa,KAAA,EAIpB;AACP,EAAA,MAAM,MAAM,cAAA,EAAe;AAC3B,EAAA,MAAM,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC1B,EAAA,KAAA,CAAM,OAAA,GAAU,KAAA;AAChB,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,IAAQ,EAAA;AAE3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,GAAA,EAAK;AACV,IAAA,OAAO,IAAI,QAAA,CAAS;AAAA,MAClB,IAAA;AAAA,MACA,QAAA,EAAU,MAAM,KAAA,CAAM,OAAA,CAAQ,QAAA,EAAS;AAAA,MACvC,eAAA,EAAiB,MAAM,KAAA,CAAM,OAAA,CAAQ,eAAA;AAAgB,KACtD,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,GAAA,EAAK,IAAI,CAAC,CAAA;AAChB","file":"form.js","sourcesContent":["import { createContext, useContext, useEffect, useRef } from 'react';\n\n/** 유효성 규칙: 유효하면 true, 아니면 에러 메시지 문자열 반환 (sd types/form Rule 포팅) */\nexport type Rule = (value: unknown) => true | string;\n\n/** rules를 순서대로 실행해 첫 실패 메시지를 반환. 모두 통과하면 \"\" */\nexport function runRules(value: unknown, rules?: Rule[]): string {\n if (!rules || rules.length === 0) return '';\n for (const rule of rules) {\n const result = rule(value ?? '');\n if (result !== true) return typeof result === 'string' ? result : '유효하지 않은 값입니다.';\n }\n return '';\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// SForm 연동 — Context 기반 필드 등록 (sd-form 검증 서브시스템 포팅)\n// 각 rule-bearing 컨트롤이 useFormField로 자신을 등록하면, SForm이 submit 시\n// 등록된 모든 필드의 validate()를 실행해 하나라도 실패하면 제출을 막는다.\n// SForm 밖에서 쓰이면 context가 없어 no-op (form-agnostic 사용 유지).\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** SForm에 등록되는 필드 항목 */\nexport interface FormFieldEntry {\n /** 폼 연동용 name (validationError names·focus 대상 식별) */\n name: string;\n /** 현재 값에 rules를 실행하고 에러 상태를 반영한 뒤 valid 여부 반환 */\n validate: () => boolean;\n /** 검증 에러 상태만 초기화 (값은 소비자 소유) */\n resetValidation: () => void;\n}\n\nexport interface FormContextValue {\n /** 필드를 등록하고 해제 함수를 반환 */\n register: (entry: FormFieldEntry) => () => void;\n}\n\nexport const FormContext = createContext<FormContextValue | null>(null);\n\n/** 가장 가까운 SForm의 context (없으면 null) */\nexport function useFormContext(): FormContextValue | null {\n return useContext(FormContext);\n}\n\n/**\n * 폼 필드 등록 훅. SForm 내부이면 등록되고, 밖이면 no-op.\n * validate/resetValidation은 항상 최신 클로저를 참조하도록 ref로 래핑한다.\n */\nexport function useFormField(field: {\n name?: string;\n validate: () => boolean;\n resetValidation: () => void;\n}): void {\n const ctx = useFormContext();\n const cbRef = useRef(field);\n cbRef.current = field;\n const name = field.name ?? '';\n\n useEffect(() => {\n if (!ctx) return;\n return ctx.register({\n name,\n validate: () => cbRef.current.validate(),\n resetValidation: () => cbRef.current.resetValidation(),\n });\n }, [ctx, name]);\n}\n"]}
|
package/dist/styles.css
CHANGED
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
8
8
|
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
|
|
9
9
|
"Courier New", monospace;
|
|
10
|
+
--color-red-50: oklch(97.1% 0.013 17.38);
|
|
11
|
+
--color-red-700: oklch(50.5% 0.213 27.518);
|
|
12
|
+
--color-green-50: oklch(98.2% 0.018 155.826);
|
|
13
|
+
--color-green-700: oklch(52.7% 0.154 150.069);
|
|
10
14
|
--color-gray-100: oklch(96.7% 0.003 264.542);
|
|
11
15
|
--color-gray-200: oklch(92.8% 0.006 264.531);
|
|
12
16
|
--color-gray-400: oklch(70.7% 0.022 261.325);
|
|
@@ -592,6 +596,9 @@
|
|
|
592
596
|
.max-w-\[400px\] {
|
|
593
597
|
max-width: 400px;
|
|
594
598
|
}
|
|
599
|
+
.max-w-\[420px\] {
|
|
600
|
+
max-width: 420px;
|
|
601
|
+
}
|
|
595
602
|
.max-w-full {
|
|
596
603
|
max-width: 100%;
|
|
597
604
|
}
|
|
@@ -751,6 +758,9 @@
|
|
|
751
758
|
.justify-start {
|
|
752
759
|
justify-content: flex-start;
|
|
753
760
|
}
|
|
761
|
+
.gap-8 {
|
|
762
|
+
gap: var(--spacing-8);
|
|
763
|
+
}
|
|
754
764
|
.gap-12 {
|
|
755
765
|
gap: var(--spacing-12);
|
|
756
766
|
}
|
|
@@ -1170,6 +1180,12 @@
|
|
|
1170
1180
|
.bg-gray-200 {
|
|
1171
1181
|
background-color: var(--color-gray-200);
|
|
1172
1182
|
}
|
|
1183
|
+
.bg-green-50 {
|
|
1184
|
+
background-color: var(--color-green-50);
|
|
1185
|
+
}
|
|
1186
|
+
.bg-red-50 {
|
|
1187
|
+
background-color: var(--color-red-50);
|
|
1188
|
+
}
|
|
1173
1189
|
.bg-transparent {
|
|
1174
1190
|
background-color: transparent;
|
|
1175
1191
|
}
|
|
@@ -1206,6 +1222,9 @@
|
|
|
1206
1222
|
.px-8 {
|
|
1207
1223
|
padding-inline: var(--spacing-8);
|
|
1208
1224
|
}
|
|
1225
|
+
.px-12 {
|
|
1226
|
+
padding-inline: var(--spacing-12);
|
|
1227
|
+
}
|
|
1209
1228
|
.px-16 {
|
|
1210
1229
|
padding-inline: var(--spacing-16);
|
|
1211
1230
|
}
|
|
@@ -1554,12 +1573,18 @@
|
|
|
1554
1573
|
.text-gray-900 {
|
|
1555
1574
|
color: var(--color-gray-900);
|
|
1556
1575
|
}
|
|
1576
|
+
.text-green-700 {
|
|
1577
|
+
color: var(--color-green-700);
|
|
1578
|
+
}
|
|
1557
1579
|
.text-green-strong {
|
|
1558
1580
|
color: var(--color-green-strong);
|
|
1559
1581
|
}
|
|
1560
1582
|
.text-inherit {
|
|
1561
1583
|
color: inherit;
|
|
1562
1584
|
}
|
|
1585
|
+
.text-red-700 {
|
|
1586
|
+
color: var(--color-red-700);
|
|
1587
|
+
}
|
|
1563
1588
|
.text-red-strong {
|
|
1564
1589
|
color: var(--color-red-strong);
|
|
1565
1590
|
}
|