sellmate-design-system-react 0.2.0 → 0.4.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 (138) hide show
  1. package/README.md +84 -21
  2. package/dist/components/SActionModal/SActionModal.cjs +2 -0
  3. package/dist/components/SActionModal/SActionModal.cjs.map +1 -1
  4. package/dist/components/SActionModal/SActionModal.js +2 -0
  5. package/dist/components/SActionModal/SActionModal.js.map +1 -1
  6. package/dist/components/SBarcodeInput/SBarcodeInput.cjs +2 -0
  7. package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
  8. package/dist/components/SBarcodeInput/SBarcodeInput.js +2 -0
  9. package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
  10. package/dist/components/SCalendar/SCalendar.cjs +2 -0
  11. package/dist/components/SCalendar/SCalendar.cjs.map +1 -1
  12. package/dist/components/SCalendar/SCalendar.js +2 -0
  13. package/dist/components/SCalendar/SCalendar.js.map +1 -1
  14. package/dist/components/SChip/SChip.cjs +2 -0
  15. package/dist/components/SChip/SChip.cjs.map +1 -1
  16. package/dist/components/SChip/SChip.js +2 -0
  17. package/dist/components/SChip/SChip.js.map +1 -1
  18. package/dist/components/SChipInput/SChipInput.cjs +2 -0
  19. package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
  20. package/dist/components/SChipInput/SChipInput.js +2 -0
  21. package/dist/components/SChipInput/SChipInput.js.map +1 -1
  22. package/dist/components/SConfirmModal/SConfirmModal.cjs +2 -0
  23. package/dist/components/SConfirmModal/SConfirmModal.cjs.map +1 -1
  24. package/dist/components/SConfirmModal/SConfirmModal.js +2 -0
  25. package/dist/components/SConfirmModal/SConfirmModal.js.map +1 -1
  26. package/dist/components/SDatePicker/SDatePicker.cjs +2 -0
  27. package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
  28. package/dist/components/SDatePicker/SDatePicker.js +2 -0
  29. package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
  30. package/dist/components/SDateRangePicker/SDateRangePicker.cjs +2 -0
  31. package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
  32. package/dist/components/SDateRangePicker/SDateRangePicker.js +2 -0
  33. package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
  34. package/dist/components/SField/SField.cjs +2 -0
  35. package/dist/components/SField/SField.cjs.map +1 -1
  36. package/dist/components/SField/SField.js +2 -0
  37. package/dist/components/SField/SField.js.map +1 -1
  38. package/dist/components/SFilePicker/SFilePicker.cjs +2 -0
  39. package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
  40. package/dist/components/SFilePicker/SFilePicker.js +2 -0
  41. package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
  42. package/dist/components/SGhostButton/SGhostButton.cjs +2 -0
  43. package/dist/components/SGhostButton/SGhostButton.cjs.map +1 -1
  44. package/dist/components/SGhostButton/SGhostButton.d.ts +3 -1
  45. package/dist/components/SGhostButton/SGhostButton.js +2 -0
  46. package/dist/components/SGhostButton/SGhostButton.js.map +1 -1
  47. package/dist/components/SGnb/SGnb.cjs +394 -213
  48. package/dist/components/SGnb/SGnb.cjs.map +1 -1
  49. package/dist/components/SGnb/SGnb.d.ts +16 -12
  50. package/dist/components/SGnb/SGnb.js +375 -214
  51. package/dist/components/SGnb/SGnb.js.map +1 -1
  52. package/dist/components/SGnb/gnb.config.d.ts +35 -11
  53. package/dist/components/SGnb/index.d.ts +1 -1
  54. package/dist/components/SGuide/SGuide.cjs +2 -0
  55. package/dist/components/SGuide/SGuide.cjs.map +1 -1
  56. package/dist/components/SGuide/SGuide.js +2 -0
  57. package/dist/components/SGuide/SGuide.js.map +1 -1
  58. package/dist/components/SInput/SInput.cjs +2 -0
  59. package/dist/components/SInput/SInput.cjs.map +1 -1
  60. package/dist/components/SInput/SInput.js +2 -0
  61. package/dist/components/SInput/SInput.js.map +1 -1
  62. package/dist/components/SKeyValueTable/SKeyValueTable.cjs +2 -0
  63. package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
  64. package/dist/components/SKeyValueTable/SKeyValueTable.js +2 -0
  65. package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
  66. package/dist/components/SLayout/SLayout.cjs +26 -8
  67. package/dist/components/SLayout/SLayout.cjs.map +1 -1
  68. package/dist/components/SLayout/SLayout.d.ts +15 -9
  69. package/dist/components/SLayout/SLayout.js +26 -8
  70. package/dist/components/SLayout/SLayout.js.map +1 -1
  71. package/dist/components/SLayout/index.d.ts +1 -1
  72. package/dist/components/SLoadingModal/SLoadingModal.cjs +2 -0
  73. package/dist/components/SLoadingModal/SLoadingModal.cjs.map +1 -1
  74. package/dist/components/SLoadingModal/SLoadingModal.js +2 -0
  75. package/dist/components/SLoadingModal/SLoadingModal.js.map +1 -1
  76. package/dist/components/SModalContainer/SModalContainer.cjs +2 -0
  77. package/dist/components/SModalContainer/SModalContainer.cjs.map +1 -1
  78. package/dist/components/SModalContainer/SModalContainer.js +2 -0
  79. package/dist/components/SModalContainer/SModalContainer.js.map +1 -1
  80. package/dist/components/SNumberInput/SNumberInput.cjs +2 -0
  81. package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
  82. package/dist/components/SNumberInput/SNumberInput.js +2 -0
  83. package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
  84. package/dist/components/SPage/SPage.cjs +27 -9
  85. package/dist/components/SPage/SPage.cjs.map +1 -1
  86. package/dist/components/SPage/SPage.d.ts +2 -2
  87. package/dist/components/SPage/SPage.js +27 -9
  88. package/dist/components/SPage/SPage.js.map +1 -1
  89. package/dist/components/SPopover/SPopover.cjs +2 -0
  90. package/dist/components/SPopover/SPopover.cjs.map +1 -1
  91. package/dist/components/SPopover/SPopover.js +2 -0
  92. package/dist/components/SPopover/SPopover.js.map +1 -1
  93. package/dist/components/SSelect/SSelect.cjs +2 -0
  94. package/dist/components/SSelect/SSelect.cjs.map +1 -1
  95. package/dist/components/SSelect/SSelect.js +2 -0
  96. package/dist/components/SSelect/SSelect.js.map +1 -1
  97. package/dist/components/STable/STable.cjs +3 -1
  98. package/dist/components/STable/STable.cjs.map +1 -1
  99. package/dist/components/STable/STable.js +3 -1
  100. package/dist/components/STable/STable.js.map +1 -1
  101. package/dist/components/STextarea/STextarea.cjs +2 -0
  102. package/dist/components/STextarea/STextarea.cjs.map +1 -1
  103. package/dist/components/STextarea/STextarea.js +2 -0
  104. package/dist/components/STextarea/STextarea.js.map +1 -1
  105. package/dist/components/STimePicker/STimePicker.cjs +3834 -0
  106. package/dist/components/STimePicker/STimePicker.cjs.map +1 -0
  107. package/dist/components/STimePicker/STimePicker.d.ts +50 -0
  108. package/dist/components/STimePicker/STimePicker.js +3811 -0
  109. package/dist/components/STimePicker/STimePicker.js.map +1 -0
  110. package/dist/components/STimePicker/index.d.ts +2 -0
  111. package/dist/components/STimePicker/timepicker.config.d.ts +23 -0
  112. package/dist/components/STimeRangePicker/STimeRangePicker.cjs +3908 -0
  113. package/dist/components/STimeRangePicker/STimeRangePicker.cjs.map +1 -0
  114. package/dist/components/STimeRangePicker/STimeRangePicker.d.ts +53 -0
  115. package/dist/components/STimeRangePicker/STimeRangePicker.js +3885 -0
  116. package/dist/components/STimeRangePicker/STimeRangePicker.js.map +1 -0
  117. package/dist/components/STimeRangePicker/index.d.ts +1 -0
  118. package/dist/components/STimeRangePicker/time-range-picker.config.d.ts +9 -0
  119. package/dist/components/SToast/SToast.cjs +2 -0
  120. package/dist/components/SToast/SToast.cjs.map +1 -1
  121. package/dist/components/SToast/SToast.js +2 -0
  122. package/dist/components/SToast/SToast.js.map +1 -1
  123. package/dist/components/SToast/SToastContainer.cjs +2 -0
  124. package/dist/components/SToast/SToastContainer.cjs.map +1 -1
  125. package/dist/components/SToast/SToastContainer.js +2 -0
  126. package/dist/components/SToast/SToastContainer.js.map +1 -1
  127. package/dist/components/STooltip/STooltip.cjs +2 -0
  128. package/dist/components/STooltip/STooltip.cjs.map +1 -1
  129. package/dist/components/STooltip/STooltip.js +2 -0
  130. package/dist/components/STooltip/STooltip.js.map +1 -1
  131. package/dist/index.cjs +1011 -136
  132. package/dist/index.cjs.map +1 -1
  133. package/dist/index.d.ts +3 -0
  134. package/dist/index.js +1006 -136
  135. package/dist/index.js.map +1 -1
  136. package/dist/styles.css +475 -74
  137. package/dist/theme.css +85 -70
  138. package/package.json +4 -1
package/README.md CHANGED
@@ -21,8 +21,8 @@ npm install sellmate-design-system-react
21
21
 
22
22
  ```css
23
23
  /* app globals.css */
24
- @import "tailwindcss";
25
- @import "sellmate-design-system-react/theme.css";
24
+ @import 'tailwindcss';
25
+ @import 'sellmate-design-system-react/theme.css';
26
26
  @source "../node_modules/sellmate-design-system-react/dist";
27
27
  ```
28
28
 
@@ -34,37 +34,100 @@ npm install sellmate-design-system-react
34
34
  Tailwind를 쓰지 않는 앱은 컴파일된 CSS를 직접 import 합니다.
35
35
 
36
36
  ```ts
37
- import "sellmate-design-system-react/styles.css";
37
+ import 'sellmate-design-system-react/styles.css';
38
+ ```
39
+
40
+ ## Next.js (App Router)
41
+
42
+ 별도 설정 없이 동작합니다. `dist` 가 이미 빌드되어 있으므로 `transpilePackages` 는 필요 없습니다.
43
+
44
+ 전역 CSS 는 위 **방식 1** 과 같습니다. `@source` 는 **CSS 파일 기준 상대경로**이므로 `app/globals.css` 에 둔다면 다음과 같습니다.
45
+
46
+ ```css
47
+ /* app/globals.css */
48
+ @import 'tailwindcss';
49
+ @import 'sellmate-design-system-react/theme.css';
50
+ @source "../node_modules/sellmate-design-system-react/dist";
51
+ ```
52
+
53
+ ### 서버 컴포넌트에서 그대로 import 할 수 있습니다
54
+
55
+ 패키지 엔트리가 `"use client"` 로 선언된 클라이언트 경계라, 서버 컴포넌트에서 바로 import 해도 됩니다. 서버에서 렌더(SSR)된 뒤 클라이언트에서 하이드레이션됩니다.
56
+
57
+ ```tsx
58
+ // app/page.tsx — "use client" 없음
59
+ import { SButton } from 'sellmate-design-system-react';
60
+
61
+ export default function Page() {
62
+ return <SButton color="primary" size="md" label="확인" />;
63
+ }
64
+ ```
65
+
66
+ ### 이벤트 핸들러가 필요하면 소비자 쪽에 `"use client"`
67
+
68
+ RSC 경계를 넘어 **함수는 전달할 수 없습니다.** 위 페이지에 `onClick` 을 추가하면 빌드가 실패합니다.
69
+
70
+ ```text
71
+ Error: Event handlers cannot be passed to Client Component props.
72
+ ```
73
+
74
+ 이는 라이브러리 제약이 아니라 React 서버 컴포넌트의 규칙입니다. 핸들러·상태가 필요한 화면은 그 파일을 클라이언트 컴포넌트로 만드세요.
75
+
76
+ ```tsx
77
+ 'use client';
78
+
79
+ import { useState } from 'react';
80
+ import { SCheckbox } from 'sellmate-design-system-react';
81
+
82
+ export function AgreeField() {
83
+ const [value, setValue] = useState(false);
84
+ return <SCheckbox value={value} onValueChange={setValue} label="동의" />;
85
+ }
86
+ ```
87
+
88
+ 동작을 직접 확인하려면 Next playground 를 띄우세요 — 이 패키지를 소비 앱과 동일하게 `dist` 로 소비합니다.
89
+
90
+ ```bash
91
+ npm run playground:next # http://localhost:3010
38
92
  ```
39
93
 
40
94
  ## 사용법
41
95
 
42
96
  ```tsx
43
- import { Button } from "sellmate-design-system-react";
97
+ import { SButton } from 'sellmate-design-system-react';
44
98
 
45
99
  export function Example() {
46
- return (
47
- <Button variant="primary" size="md" onClick={() => alert("clicked")}>
48
- 확인
49
- </Button>
50
- );
100
+ return <SButton color="primary" size="md" label="확인" onClick={() => alert('clicked')} />;
51
101
  }
52
102
  ```
53
103
 
104
+ 모든 컴포넌트는 **`S` 접두어**를 씁니다(`SButton`, `SInput` …). 공개 타입도 마찬가지입니다(`SButtonProps`).
105
+
106
+ `SButton` 은 텍스트를 **`label`(문자열)로만** 받습니다 — `children` 은 받지 않으며, 아이콘은 `icon`/`rightIcon` 을 씁니다. 색상 prop 은 `color` 입니다(`variant` 아님).
107
+
54
108
  ## 제공 컴포넌트
55
109
 
56
- | 분류 | 컴포넌트 |
57
- | --- | --- |
58
- | 버튼·액션 | `Button` · `GhostButton` · `DropdownButton` · `TextLink` · `Toggle` · `Switch` |
59
- | 입력 | `Input` · `Textarea` · `NumberInput` · `BarcodeInput` · `Select` · `Checkbox` · `Radio` · `RadioButton` · `Chip` · `ChipInput` · `Field` · `FilePicker` |
60
- | 날짜 | `Calendar` · `DatePicker` · `DateRangePicker` |
61
- | 표시·피드백 | `Badge` · `Tag` · `Card` · `Callout` · `Divider` · `Tooltip` · `Popover` · `Popup` · `Guide` · `Toast` |
62
- | 진행 상태 | `LinearProgress` · `CircleProgress` · `LoadingContainer` · `LoadingModal` |
63
- | 모달 | `ModalContainer` · `ConfirmModal` · `ActionModal` |
64
- | 데이터 표시 | `Table` · `KeyValueTable` · `Tabs` · `Pagination` |
65
- | 아이콘 | `Icon` |
66
-
67
- 유틸리티로 클래스 병합 헬퍼 `cn`도 export 합니다.
110
+ 분류는 `src/index.ts` export 그룹과 동일합니다.
111
+
112
+ | 분류 | 컴포넌트 |
113
+ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
114
+ | Atoms | `SIcon` · `SBadge` · `SCard` · `SDivider` · `STag` · `SButton` · `SCallout` · `SLinearProgress` · `SCircleProgress` · `SLoadingContainer` |
115
+ | Control | `STextLink` · `SDropdownButton` · `SGhostButton` · `SSwitch` · `SToggle` |
116
+ | Overlays | `STooltip` · `SPopover` · `SPortal` · `SPopup` · `SGuide` |
117
+ | Modals | `SConfirmModal` · `SActionModal` · `SLoadingModal` |
118
+ | Layout | `SGnb` · `SLayout` · `SPage` |
119
+ | Navigation | `STabs` · `SPagination` |
120
+ | Data | `STable` · `SKeyValueTable` |
121
+ | Feedback | `SToast` |
122
+ | SField (폼) | `SForm` · `SField` · `SCheckbox` · `SRadio` · `SRadioButton` · `SInput` · `STextarea` · `SSelect` · `SNumberInput` · `SChip` · `SChipInput` · `SBarcodeInput` · `SCalendar` · `SDatePicker` · `SDateRangePicker` · `SFilePicker` |
123
+
124
+ `SModalContainer` 는 모달 3종의 내부 공통 컨테이너로 **공개 export 가 아닙니다.** 소비자는 `SConfirmModal`/`SActionModal`/`SLoadingModal` 을 사용하세요.
125
+
126
+ 유틸리티도 함께 export 합니다.
127
+
128
+ - `cn` — 클래스 병합 헬퍼
129
+ - `resolveColor` · `isColorKey` · `COLOR_KEYS` · `SColor` · `SColorKey` — 색상 토큰 유틸
130
+ - `Rule` — `rules` prop(`SField` · `SChip` · `SBarcodeInput` 등)에 넘기는 검증 함수 타입
68
131
 
69
132
  ## 특징
70
133
 
@@ -2995,6 +2995,7 @@ function SGhostButton({
2995
2995
  size = "sm",
2996
2996
  intent = "default",
2997
2997
  ariaLabel = "",
2998
+ ariaPressed,
2998
2999
  tooltipText,
2999
3000
  disabled = false,
3000
3001
  onClick,
@@ -3031,6 +3032,7 @@ function SGhostButton({
3031
3032
  disabled,
3032
3033
  "aria-disabled": disabled ? "true" : void 0,
3033
3034
  "aria-label": ariaLabel.trim() || void 0,
3035
+ "aria-pressed": ariaPressed,
3034
3036
  tabIndex: disabled ? -1 : void 0,
3035
3037
  onClick: (e) => {
3036
3038
  if (disabled) {