@weing-dev/ui-kit-primitive 0.0.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 (328) hide show
  1. package/README.md +50 -0
  2. package/eslint.config.js +29 -0
  3. package/index.html +13 -0
  4. package/package.json +75 -0
  5. package/public/static/icon/Add.svg +1 -0
  6. package/public/static/icon/ApprovalInactive.svg +1 -0
  7. package/public/static/icon/ArrowRight.svg +5 -0
  8. package/public/static/icon/Cancle Filled.svg +1 -0
  9. package/public/static/icon/Cancle.svg +1 -0
  10. package/public/static/icon/Cart Filled.svg +1 -0
  11. package/public/static/icon/Cart.svg +1 -0
  12. package/public/static/icon/Check.svg +1 -0
  13. package/public/static/icon/CheckBoxRound.svg +3 -0
  14. package/public/static/icon/Company.svg +1 -0
  15. package/public/static/icon/DragHandle.svg +1 -0
  16. package/public/static/icon/Eco.svg +1 -0
  17. package/public/static/icon/EditSquare.svg +1 -0
  18. package/public/static/icon/Error Filled.svg +1 -0
  19. package/public/static/icon/Error.svg +1 -0
  20. package/public/static/icon/File Upload.svg +1 -0
  21. package/public/static/icon/FilecheckInactive.svg +1 -0
  22. package/public/static/icon/Go Before.svg +1 -0
  23. package/public/static/icon/Go Next.svg +1 -0
  24. package/public/static/icon/Hamburger Menu.svg +1 -0
  25. package/public/static/icon/ImagecheckPlay.svg +4 -0
  26. package/public/static/icon/Kakao Talk.svg +1 -0
  27. package/public/static/icon/Minus.svg +1 -0
  28. package/public/static/icon/Naver Blog.svg +1 -0
  29. package/public/static/icon/Naver.svg +1 -0
  30. package/public/static/icon/OrderApprove.svg +1 -0
  31. package/public/static/icon/OrderInactive.svg +1 -0
  32. package/public/static/icon/OrderPlay.svg +1 -0
  33. package/public/static/icon/PayApprove.svg +1 -0
  34. package/public/static/icon/PayInactive.svg +1 -0
  35. package/public/static/icon/PrintInactive.svg +1 -0
  36. package/public/static/icon/PrintPlay.svg +1 -0
  37. package/public/static/icon/Search.svg +1 -0
  38. package/public/static/icon/ShippingDone.svg +1 -0
  39. package/public/static/icon/Support Agent.svg +1 -0
  40. package/public/static/icon/Task.svg +1 -0
  41. package/public/static/icon/User.svg +1 -0
  42. package/public/static/icon/Warning Filled.svg +1 -0
  43. package/public/static/icon/Warning.svg +1 -0
  44. package/public/static/icon/add_a_photo.svg +3 -0
  45. package/public/static/icon/attach_file.svg +1 -0
  46. package/public/static/icon/check_circle.svg +1 -0
  47. package/public/static/icon/close.svg +1 -0
  48. package/public/static/icon/download.svg +1 -0
  49. package/public/static/icon/expand all.svg +1 -0
  50. package/public/static/icon/expand_less.svg +1 -0
  51. package/public/static/icon/expand_more.svg +1 -0
  52. package/public/static/icon/factory.svg +1 -0
  53. package/public/static/icon/inventory.svg +1 -0
  54. package/public/static/icon/listAll.svg +1 -0
  55. package/public/static/icon/local_shipping.svg +1 -0
  56. package/public/static/icon/logout.svg +1 -0
  57. package/public/static/icon/menu.svg +1 -0
  58. package/public/static/icon/mode_edit.svg +4 -0
  59. package/public/static/icon/more.svg +1 -0
  60. package/public/static/icon/outward.svg +1 -0
  61. package/public/static/icon/personcard.svg +1 -0
  62. package/public/static/icon/product.svg +1 -0
  63. package/public/static/icon/settings.svg +1 -0
  64. package/public/static/icon/swap_vert.svg +3 -0
  65. package/public/static/icon/upload.svg +1 -0
  66. package/public/static/icon/warning_amber.svg +3 -0
  67. package/public/static/image/Thumbnail.png +0 -0
  68. package/public/vite.svg +1 -0
  69. package/public/weing_logo_final.png +0 -0
  70. package/scripts/icons/setIcon.cjs +151 -0
  71. package/scripts/icons/svg-template.cjs +18 -0
  72. package/scripts/icons/svgo-config.json +9 -0
  73. package/scripts/icons/svgr-config.json +16 -0
  74. package/src/@types/color.d.ts +51 -0
  75. package/src/@types/common.d.ts +6 -0
  76. package/src/@types/extends/react.extends.d.ts +7 -0
  77. package/src/@types/quill-image-resize-module-react/index.d.ts +1 -0
  78. package/src/App.css +0 -0
  79. package/src/App.tsx +84 -0
  80. package/src/assets/react.svg +1 -0
  81. package/src/components/Accordion/Accordion.context.tsx +62 -0
  82. package/src/components/Accordion/Accordion.module.scss +163 -0
  83. package/src/components/Accordion/Accordion.tsx +242 -0
  84. package/src/components/Accordion/README.md +408 -0
  85. package/src/components/Accordion/images/as_trigger.gif +0 -0
  86. package/src/components/Accordion/images/closed.png +0 -0
  87. package/src/components/Accordion/images/open.png +0 -0
  88. package/src/components/Accordion/images/thumbnail1.png +0 -0
  89. package/src/components/Accordion/images/thumbnail2.png +0 -0
  90. package/src/components/Accordion/images/thumbnail3.png +0 -0
  91. package/src/components/Avatar/Avatar.module.scss +47 -0
  92. package/src/components/Avatar/Avatar.tsx +230 -0
  93. package/src/components/Avatar/README.md +333 -0
  94. package/src/components/Badge/Badge.module.scss +49 -0
  95. package/src/components/Badge/Badge.tsx +87 -0
  96. package/src/components/Badge/README.md +223 -0
  97. package/src/components/BarCode/BarCode.module.scss +0 -0
  98. package/src/components/BarCode/BarCode.tsx +153 -0
  99. package/src/components/Breadcrumb/Breadcrumb.module.scss +36 -0
  100. package/src/components/Breadcrumb/Breadcrumb.tsx +114 -0
  101. package/src/components/Breadcrumb/README.md +339 -0
  102. package/src/components/Button/Button.colors.tsx +322 -0
  103. package/src/components/Button/Button.context.tsx +47 -0
  104. package/src/components/Button/Button.module.scss +156 -0
  105. package/src/components/Button/Button.tsx +190 -0
  106. package/src/components/Button/Button.type.ts +11 -0
  107. package/src/components/Calendar/Calendar.context.tsx +138 -0
  108. package/src/components/Calendar/Calendar.module.scss +116 -0
  109. package/src/components/Calendar/Calendar.tsx +440 -0
  110. package/src/components/Calendar/dayjs.util.ts +312 -0
  111. package/src/components/Cascader/Cacader.data.ts +1185 -0
  112. package/src/components/Cascader/Cascader.context.tsx +61 -0
  113. package/src/components/Cascader/Cascader.hook.ts +502 -0
  114. package/src/components/Cascader/Cascader.module.scss +143 -0
  115. package/src/components/Cascader/Cascader.tsx +281 -0
  116. package/src/components/Cascader/README.md +735 -0
  117. package/src/components/Chart/Chart.module.scss +0 -0
  118. package/src/components/Chart/Chart.tsx +230 -0
  119. package/src/components/Chart/README.md +85 -0
  120. package/src/components/Chart/images/barChart.png +0 -0
  121. package/src/components/Chips/Chips.colors.tsx +185 -0
  122. package/src/components/Chips/Chips.module.scss +49 -0
  123. package/src/components/Chips/Chips.tsx +78 -0
  124. package/src/components/Comment/Comment.module.scss +14 -0
  125. package/src/components/Comment/Comment.tsx +105 -0
  126. package/src/components/Dialog/Dialog.module.scss +0 -0
  127. package/src/components/Dialog/Dialog.tsx +12 -0
  128. package/src/components/Divider/Divider.module.scss +12 -0
  129. package/src/components/Divider/Divider.tsx +33 -0
  130. package/src/components/Editor/Editor.context.tsx +12 -0
  131. package/src/components/Editor/Editor.module.scss +40 -0
  132. package/src/components/Editor/Editor.tsx +174 -0
  133. package/src/components/Form/CheckBox/CheckBox.context.tsx +56 -0
  134. package/src/components/Form/CheckBox/CheckBox.module.scss +81 -0
  135. package/src/components/Form/CheckBox/CheckBox.tsx +196 -0
  136. package/src/components/Form/CheckBox/Checkbox.colors.tsx +42 -0
  137. package/src/components/Form/Dropdown/Dropdown.colors.tsx +125 -0
  138. package/src/components/Form/Dropdown/Dropdown.context.tsx +62 -0
  139. package/src/components/Form/Dropdown/Dropdown.module.scss +133 -0
  140. package/src/components/Form/Dropdown/Dropdown.tsx +404 -0
  141. package/src/components/Form/OTPInput/OTPInput.context.tsx +104 -0
  142. package/src/components/Form/OTPInput/OTPInput.module.scss +22 -0
  143. package/src/components/Form/OTPInput/OTPInput.tsx +67 -0
  144. package/src/components/Form/Radio/Radio.colors.tsx +42 -0
  145. package/src/components/Form/Radio/Radio.context.tsx +40 -0
  146. package/src/components/Form/Radio/Radio.module.scss +61 -0
  147. package/src/components/Form/Radio/Radio.tsx +174 -0
  148. package/src/components/Form/Switch/Switch.colors.tsx +42 -0
  149. package/src/components/Form/Switch/Switch.context.tsx +50 -0
  150. package/src/components/Form/Switch/Switch.module.scss +53 -0
  151. package/src/components/Form/Switch/Switch.tsx +151 -0
  152. package/src/components/Form/TextArea/TextArea.colors.tsx +76 -0
  153. package/src/components/Form/TextArea/TextArea.context.tsx +97 -0
  154. package/src/components/Form/TextArea/TextArea.module.scss +138 -0
  155. package/src/components/Form/TextArea/TextArea.tsx +246 -0
  156. package/src/components/Form/TextInput/TextInput.colors.tsx +76 -0
  157. package/src/components/Form/TextInput/TextInput.context.tsx +106 -0
  158. package/src/components/Form/TextInput/TextInput.module.scss +160 -0
  159. package/src/components/Form/TextInput/TextInput.tsx +225 -0
  160. package/src/components/GlobalStyle/GlobalStyle.tsx +20 -0
  161. package/src/components/HelperText/HelperText.module.scss +28 -0
  162. package/src/components/HelperText/HelperText.tsx +130 -0
  163. package/src/components/Icon/Icon.tsx +29 -0
  164. package/src/components/Icons/Add.tsx +20 -0
  165. package/src/components/Icons/AddAPhoto.tsx +21 -0
  166. package/src/components/Icons/ApprovalInactive.tsx +26 -0
  167. package/src/components/Icons/ArrowRight.tsx +24 -0
  168. package/src/components/Icons/AttachFile.tsx +20 -0
  169. package/src/components/Icons/Cancle.tsx +20 -0
  170. package/src/components/Icons/CancleFilled.tsx +20 -0
  171. package/src/components/Icons/Cart.tsx +20 -0
  172. package/src/components/Icons/CartFilled.tsx +20 -0
  173. package/src/components/Icons/Check.tsx +20 -0
  174. package/src/components/Icons/CheckBoxRound.tsx +21 -0
  175. package/src/components/Icons/CheckCircle.tsx +35 -0
  176. package/src/components/Icons/Close.tsx +20 -0
  177. package/src/components/Icons/Company.tsx +20 -0
  178. package/src/components/Icons/Download.tsx +20 -0
  179. package/src/components/Icons/DragHandle.tsx +20 -0
  180. package/src/components/Icons/Eco.tsx +20 -0
  181. package/src/components/Icons/EditSquare.tsx +20 -0
  182. package/src/components/Icons/Error.tsx +20 -0
  183. package/src/components/Icons/ErrorFilled.tsx +20 -0
  184. package/src/components/Icons/ExpandAll.tsx +20 -0
  185. package/src/components/Icons/ExpandLess.tsx +20 -0
  186. package/src/components/Icons/ExpandMore.tsx +20 -0
  187. package/src/components/Icons/Factory.tsx +20 -0
  188. package/src/components/Icons/FileUpload.tsx +20 -0
  189. package/src/components/Icons/FilecheckInactive.tsx +22 -0
  190. package/src/components/Icons/GoBefore.tsx +20 -0
  191. package/src/components/Icons/GoNext.tsx +20 -0
  192. package/src/components/Icons/HamburgerMenu.tsx +20 -0
  193. package/src/components/Icons/ImagecheckPlay.tsx +27 -0
  194. package/src/components/Icons/Inventory.tsx +20 -0
  195. package/src/components/Icons/KakaoTalk.tsx +22 -0
  196. package/src/components/Icons/ListAll.tsx +20 -0
  197. package/src/components/Icons/LocalShipping.tsx +20 -0
  198. package/src/components/Icons/Logout.tsx +20 -0
  199. package/src/components/Icons/Menu.tsx +20 -0
  200. package/src/components/Icons/Minus.tsx +18 -0
  201. package/src/components/Icons/ModeEdit.tsx +25 -0
  202. package/src/components/Icons/More.tsx +20 -0
  203. package/src/components/Icons/Naver.tsx +20 -0
  204. package/src/components/Icons/NaverBlog.tsx +22 -0
  205. package/src/components/Icons/OrderApprove.tsx +20 -0
  206. package/src/components/Icons/OrderInactive.tsx +20 -0
  207. package/src/components/Icons/OrderPlay.tsx +20 -0
  208. package/src/components/Icons/Outward.tsx +20 -0
  209. package/src/components/Icons/PayApprove.tsx +24 -0
  210. package/src/components/Icons/PayInactive.tsx +24 -0
  211. package/src/components/Icons/Personcard.tsx +20 -0
  212. package/src/components/Icons/PrintInactive.tsx +24 -0
  213. package/src/components/Icons/PrintPlay.tsx +24 -0
  214. package/src/components/Icons/Product.tsx +20 -0
  215. package/src/components/Icons/Search.tsx +20 -0
  216. package/src/components/Icons/Settings.tsx +20 -0
  217. package/src/components/Icons/ShippingDone.tsx +20 -0
  218. package/src/components/Icons/SupportAgent.tsx +20 -0
  219. package/src/components/Icons/SwapVert.tsx +21 -0
  220. package/src/components/Icons/Task.tsx +20 -0
  221. package/src/components/Icons/Upload.tsx +20 -0
  222. package/src/components/Icons/User.tsx +20 -0
  223. package/src/components/Icons/Warning.tsx +20 -0
  224. package/src/components/Icons/WarningAmber.tsx +21 -0
  225. package/src/components/Icons/WarningFilled.tsx +20 -0
  226. package/src/components/Icons/index.ts +62 -0
  227. package/src/components/LNB/LNB.context.tsx +32 -0
  228. package/src/components/LNB/LNB.module.scss +99 -0
  229. package/src/components/LNB/LNB.tsx +190 -0
  230. package/src/components/LNB/README.md +411 -0
  231. package/src/components/LNB/makeNavigation.ts +51 -0
  232. package/src/components/LNB/navigation.d.ts +15 -0
  233. package/src/components/LNB/navigation.json +211 -0
  234. package/src/components/Label/Label.colors.tsx +241 -0
  235. package/src/components/Label/Label.module.scss +31 -0
  236. package/src/components/Label/Label.tsx +54 -0
  237. package/src/components/LazyImage/LazyImage.module.scss +6 -0
  238. package/src/components/LazyImage/LazyImage.tsx +107 -0
  239. package/src/components/List/List.module.scss +81 -0
  240. package/src/components/List/List.tsx +91 -0
  241. package/src/components/List/README.md +87 -0
  242. package/src/components/MobilePicker/MobilePicker.context.tsx +22 -0
  243. package/src/components/MobilePicker/MobilePicker.module.scss +57 -0
  244. package/src/components/MobilePicker/MobilePicker.tsx +336 -0
  245. package/src/components/MobilePicker/README.md +159 -0
  246. package/src/components/Modal/Modal.tsx +77 -0
  247. package/src/components/Modal/README.md +130 -0
  248. package/src/components/Pagination/Pagination.colors.tsx +85 -0
  249. package/src/components/Pagination/Pagination.context.tsx +28 -0
  250. package/src/components/Pagination/Pagination.module.scss +60 -0
  251. package/src/components/Pagination/Pagination.tsx +234 -0
  252. package/src/components/Popup/Popup.context.tsx +15 -0
  253. package/src/components/Popup/Popup.module.scss +53 -0
  254. package/src/components/Popup/Popup.tsx +116 -0
  255. package/src/components/Popup/README.md +170 -0
  256. package/src/components/QRCode/QRCode.module.scss +2 -0
  257. package/src/components/QRCode/QRCode.tsx +61 -0
  258. package/src/components/ScrollCalendar/ScrollCalendar.context.tsx +26 -0
  259. package/src/components/ScrollCalendar/ScrollCalendar.module.scss +42 -0
  260. package/src/components/ScrollCalendar/ScrollCalendar.tsx +448 -0
  261. package/src/components/ScrollSpy/README.md +62 -0
  262. package/src/components/ScrollSpy/ScrollSpy.tsx +130 -0
  263. package/src/components/Sheet/README.md +92 -0
  264. package/src/components/Sheet/Sheet.context.tsx +23 -0
  265. package/src/components/Sheet/Sheet.module.scss +68 -0
  266. package/src/components/Sheet/Sheet.tsx +146 -0
  267. package/src/components/Slider/README.md +639 -0
  268. package/src/components/Slider/Slider.backup.tsx +477 -0
  269. package/src/components/Slider/Slider.context.tsx +67 -0
  270. package/src/components/Slider/Slider.module.scss +123 -0
  271. package/src/components/Slider/Slider.tsx +467 -0
  272. package/src/components/Stepper/README.md +320 -0
  273. package/src/components/Stepper/Stepper.context.tsx +49 -0
  274. package/src/components/Stepper/Stepper.module.scss +163 -0
  275. package/src/components/Stepper/Stepper.tsx +219 -0
  276. package/src/components/Tab/Tab.colors.tsx +54 -0
  277. package/src/components/Tab/Tab.context.tsx +64 -0
  278. package/src/components/Tab/Tab.module.scss +239 -0
  279. package/src/components/Tab/Tab.tsx +123 -0
  280. package/src/components/Tab/cx.ts +6 -0
  281. package/src/components/Table/README.md +162 -0
  282. package/src/components/Table/Table.context.tsx +23 -0
  283. package/src/components/Table/Table.hook.ts +51 -0
  284. package/src/components/Table/Table.module.scss +83 -0
  285. package/src/components/Table/Table.tsx +147 -0
  286. package/src/components/Thumbnail/README.md +302 -0
  287. package/src/components/Thumbnail/Thumbnail.context.tsx +42 -0
  288. package/src/components/Thumbnail/Thumbnail.module.scss +149 -0
  289. package/src/components/Thumbnail/Thumbnail.tsx +391 -0
  290. package/src/components/TimeInput/README.md +118 -0
  291. package/src/components/TimeInput/TimeInput.colors.tsx +76 -0
  292. package/src/components/TimeInput/TimeInput.context.tsx +58 -0
  293. package/src/components/TimeInput/TimeInput.module.scss +211 -0
  294. package/src/components/TimeInput/TimeInput.tsx +411 -0
  295. package/src/components/WeeklyCalendar/WeeklyCalendar.context.tsx +88 -0
  296. package/src/components/WeeklyCalendar/WeeklyCalendar.module.scss +225 -0
  297. package/src/components/WeeklyCalendar/WeeklyCalendar.tsx +772 -0
  298. package/src/components/WeeklyCalendar/dayjs.util.ts +336 -0
  299. package/src/components/WeeklyCalendar/weeklyCalendar.util.ts +583 -0
  300. package/src/components/WisywygEditor/Quill/Editor.tsx +148 -0
  301. package/src/constant/locale.constant.ts +6 -0
  302. package/src/globals.scss +80 -0
  303. package/src/hooks/useColorScheme.tsx +48 -0
  304. package/src/hooks/useElementRect.tsx +128 -0
  305. package/src/hooks/useIntersectionObserver.tsx +33 -0
  306. package/src/index.css +17 -0
  307. package/src/index.ts +187 -0
  308. package/src/main.tsx +10 -0
  309. package/src/styles/_fontSize.mixin.scss +57 -0
  310. package/src/styles/_fontWeight.mixin.scss +15 -0
  311. package/src/styles/_lineHeight.mixin.scss +57 -0
  312. package/src/styles/_scrollbar.mixin.scss +49 -0
  313. package/src/styles/baseColor.ts +297 -0
  314. package/src/styles/color.ts +272 -0
  315. package/src/styles/color2.ts +200 -0
  316. package/src/styles/scrollbar.README.md +72 -0
  317. package/src/styles/typography.scss +170 -0
  318. package/src/utils/aws.util.ts +180 -0
  319. package/src/utils/common.utill.ts +45 -0
  320. package/src/vite-env.d.ts +1 -0
  321. package/tsconfig.app.json +24 -0
  322. package/tsconfig.json +29 -0
  323. package/tsconfig.node.json +10 -0
  324. package/tsconfig.node.tsbuildinfo +1 -0
  325. package/tsconfig.tsbuildinfo +1 -0
  326. package/vite.config.d.ts +2 -0
  327. package/vite.config.js +47 -0
  328. package/vite.config.ts +50 -0
@@ -0,0 +1,639 @@
1
+ # Slider UI
2
+
3
+ ## Contents List
4
+
5
+ 1. [Quick Start](#QuickStart)
6
+ 2. [Reference](#Reference)
7
+ 3. [Example](#Example)
8
+
9
+ ## Quick Start
10
+
11
+ ```ts
12
+ import { Slider } from "@weing-dev/ui-kit-primitive";
13
+
14
+ const components = () => {
15
+ // ...
16
+
17
+ return (
18
+ <Slider.Root>
19
+ <Slider.Progress>
20
+ <Slider.Thumb></Slider.Thumb>
21
+ </Slider.Progress>
22
+ </Slider.Root>
23
+ );
24
+ };
25
+ ```
26
+
27
+ ## Reference
28
+
29
+ ### Root
30
+
31
+ | Prop | Type | Required | Default Value |
32
+ | :------------------------------------ | :----------------------------------------------: | :------: | :-----------: |
33
+ | [readOnly](#readOnly) | Boolean | - | false |
34
+ | [disabled](#disabled) | Boolean | - | false |
35
+ | [invert](#invert) | Boolean | - | false |
36
+ | [min](#min) | Number | - | 0 |
37
+ | [max](#max) | Number | - | 100 |
38
+ | [step](#step) | Number | - | 10 |
39
+ | [labelAlwaysOn](#labelAlwaysOn) | Boolean | - | false |
40
+ | [marks](#marks) | [Object](#marksObjectType)[] | - | - |
41
+ | [markActiveEffect](#markActiveEffect) | Boolean | - | true |
42
+ | [defaultValue](#defaultValue) | Number[] | - | [0] |
43
+ | [scale](#scale) | (v:Number) => Number | - | (v) => v |
44
+ | [label](#label) | ((v:Number) => string) or null | - | - |
45
+ | [onChange](#onChange) | (props: [onChangeProps](#onChangeProps)) => void | - | - |
46
+
47
+ #### readOnly
48
+
49
+ `Slider`의 `readOnly`을 관리하는 상태입니다. `readOnly`가 `true`일 경우 `Slider`의 색상은 보이지만 조작이 불가합니다.
50
+
51
+ ```ts
52
+ import { Slider } from "@weing-dev/ui-kit-primitive";
53
+
54
+ const components = () => {
55
+
56
+ return (
57
+ <Slider.Root readOnly>
58
+ <!-- ... -->
59
+ </Slider.Root>
60
+ );
61
+ }
62
+ ```
63
+
64
+ #### disabled
65
+
66
+ `Slider`의 `disabled`을 관리하는 상태입니다. `disabled`가 `true`일 경우 `Slider`의 조작이 불가합니다.
67
+
68
+ ```ts
69
+ import { Slider } from "@weing-dev/ui-kit-primitive";
70
+
71
+ const components = () => {
72
+
73
+ return (
74
+ <Slider.Root disabled>
75
+ <!-- ... -->
76
+ </Slider.Root>
77
+ );
78
+ }
79
+ ```
80
+
81
+ #### invert
82
+
83
+ `Slider`의 `invert`을 관리하는 상태입니다. `invert`가 `true`일 경우 `Slider`의 `value`의 색상이 반전됩니다.
84
+
85
+ ```ts
86
+ import { Slider } from "@weing-dev/ui-kit-primitive";
87
+
88
+ const components = () => {
89
+
90
+ return (
91
+ <Slider.Root invert>
92
+ <!-- ... -->
93
+ </Slider.Root>
94
+ );
95
+ }
96
+ ```
97
+
98
+ #### min
99
+
100
+ `Slider`의 `min`을 관리하는 상태입니다. 기본값으로 `0`입니다.
101
+
102
+ `Slider`의 `value`의 최솟값을 지정합니다.
103
+
104
+ ```ts
105
+ import { Slider } from "@weing-dev/ui-kit-primitive";
106
+
107
+ const components = () => {
108
+
109
+ return (
110
+ <Slider.Root min={0}>
111
+ <!-- ... -->
112
+ </Slider.Root>
113
+ );
114
+ }
115
+ ```
116
+
117
+ #### max
118
+
119
+ `Slider`의 `max`을 관리하는 상태입니다. 기본값으로 `100`입니다.
120
+
121
+ `Slider`의 `value`의 최댓값을 지정합니다.
122
+
123
+ ```ts
124
+ import { Slider } from "@weing-dev/ui-kit-primitive";
125
+
126
+ const components = () => {
127
+
128
+ return (
129
+ <Slider.Root max={100}>
130
+ <!-- ... -->
131
+ </Slider.Root>
132
+ );
133
+ }
134
+ ```
135
+
136
+ #### step
137
+
138
+ `Slider`의 `step`을 관리하는 상태입니다. 기본값으로 `10`입니다. 양수만 입력받아야 합니다.
139
+
140
+ `Slider`의 `value`의 이동 간격을 지정합니다.
141
+
142
+ ```ts
143
+ import { Slider } from "@weing-dev/ui-kit-primitive";
144
+
145
+ const components = () => {
146
+
147
+ return (
148
+ <Slider.Root step={10}>
149
+ <!-- ... -->
150
+ </Slider.Root>
151
+ );
152
+ }
153
+ ```
154
+
155
+ #### labelAlwaysOn
156
+
157
+ `Slider`의 `labelAlwaysOn`을 관리하는 상태입니다. `true`일 경우 `label`이 항상 표시됩니다.
158
+
159
+ ```ts
160
+ import { Slider } from "@weing-dev/ui-kit-primitive";
161
+
162
+ const components = () => {
163
+
164
+ return (
165
+ <Slider.Root labelAlwaysOn>
166
+ <!-- ... -->
167
+ </Slider.Root>
168
+ );
169
+ }
170
+ ```
171
+
172
+ #### marks
173
+
174
+ `Slider`의 `marks`를 관리하는 상태입니다.
175
+
176
+ `Slider.Progress`위에 지정된 위치에 `point`와 `label`을 표시해줍니다.
177
+
178
+ `value`는 `<Slider.Progress/>`에서 위치할 비율입니다. `0 ~ 100`까지의 숫자로 값을 넣어야 합니다.
179
+
180
+ `label`은 해당 위치에 `<Slider.Progress/>` 아래에 표현해줄 `text`입니다
181
+
182
+ ##### marksObjectType
183
+
184
+ ```ts
185
+ {value:number, label: string}[]
186
+ ```
187
+
188
+ 해당 기능을 이용하기 위해서는 `<Slider.Marks/>` 아래 예시처럼 사용하여야 합니다.
189
+
190
+ ```ts
191
+ import { Slider } from "@weing-dev/ui-kit-primitive";
192
+
193
+ const components = () => {
194
+
195
+ const marks = React.useMemo(
196
+ () => [
197
+ { value: 20, label: "20%" },
198
+ { value: 30, label: "30%" },
199
+ { value: 40, label: "40%" },
200
+ { value: 50, label: "50%" },
201
+ { value: 90, label: "90%" },
202
+ ],
203
+ []
204
+ );
205
+
206
+ return (
207
+ <Slider.Root marks={marks}>
208
+ <Slider.Progress>
209
+ <!-- ... -->
210
+ <Slider.Marks></Slider.Marks>
211
+ </Slider.Progress>
212
+ </Slider.Root>
213
+ );
214
+ }
215
+ ```
216
+
217
+ `🔔Tip: <Slider.Marks/> 컴포넌트는 <Slider.Progress/> 컴포넌트 내부에서 가장 마지막에 위치하는걸 권장합니다.`
218
+
219
+ #### markActiveEffect
220
+
221
+ `Slider`의 `markActiveEffect`를 관리하는 상태입니다.
222
+
223
+ `marks`가 `value`에 포함되면 active되어있는 상태를 표현하기 위한 상태값입니다. 기본값은 `true` 입니다.
224
+
225
+ 해당 효과를 비활성화 하기위해서는 `false`를 주면 됩니다.
226
+
227
+ ```ts
228
+ import { Slider } from "@weing-dev/ui-kit-primitive";
229
+
230
+ const components = () => {
231
+
232
+ const marks = React.useMemo(
233
+ () => [
234
+ { value: 20, label: "20%" },
235
+ { value: 30, label: "30%" },
236
+ { value: 40, label: "40%" },
237
+ { value: 50, label: "50%" },
238
+ { value: 90, label: "90%" },
239
+ ],
240
+ []
241
+ );
242
+
243
+ return (
244
+ <Slider.Root marks={marks} markActiveEffect={false}>
245
+ <Slider.Progress>
246
+ <!-- ... -->
247
+ <Slider.Marks></Slider.Marks>
248
+ </Slider.Progress>
249
+ </Slider.Root>
250
+ );
251
+ }
252
+ ```
253
+
254
+ #### labelAlwaysOn
255
+
256
+ `Slider`의 `labelAlwaysOn`을 관리하는 상태입니다. `true`일 경우 `label`이 항상 표시됩니다.
257
+
258
+ ```ts
259
+ import { Slider } from "@weing-dev/ui-kit-primitive";
260
+
261
+ const components = () => {
262
+
263
+ return (
264
+ <Slider.Root labelAlwaysOn>
265
+ <!-- ... -->
266
+ </Slider.Root>
267
+ );
268
+ }
269
+ ```
270
+
271
+ #### defaultValue
272
+
273
+ `Slider`의 `defaultValue`을 관리하는 상태입니다.
274
+
275
+ `Slider.Thumb`의 갯수만큼 숫자를 배열에 담아 기본값을 지정할 수 있습니다.
276
+
277
+ ```ts
278
+ import { Slider } from "@weing-dev/ui-kit-primitive";
279
+
280
+ const components = () => {
281
+
282
+ return (
283
+ <Slider.Root defaultValue={[ 0, 10, 20]}>
284
+ <!-- ... -->
285
+ </Slider.Root>
286
+ );
287
+ }
288
+ ```
289
+
290
+ #### scale
291
+
292
+ `Slider`의 `scale`을 관리하는 상태입니다.
293
+
294
+ `value`의 값을 표현하기 위해 사용됩니다. 다음 예시에서 `value`가 2의 제곱으로 증가합니다.
295
+
296
+ ```ts
297
+ import { Slider } from "@weing-dev/ui-kit-primitive";
298
+
299
+ const components = () => {
300
+
301
+ const valueLabelFormat = React.useCallback((value: number) => {
302
+ const units = ["KB", "MB", "GB", "TB"];
303
+
304
+ let unitIndex = 0;
305
+ let scaledValue = value;
306
+
307
+ while (scaledValue >= 1024 && unitIndex < units.length - 1) {
308
+ unitIndex += 1;
309
+ scaledValue /= 1024;
310
+ }
311
+
312
+ return `${scaledValue} ${units[unitIndex]}`;
313
+ }, []);
314
+
315
+ const getScale = React.useCallback((v: number) => 2 ** v, []);
316
+
317
+ return (
318
+ <Slider.Root
319
+ min={2}
320
+ max={30}
321
+ step={1}
322
+ label={valueLabelFormat}
323
+ scale={getScale}
324
+ >
325
+ <!-- ... -->
326
+ </Slider.Root>
327
+ );
328
+ }
329
+ ```
330
+
331
+ #### label
332
+
333
+ `Slider`의 `label`을 관리하는 상태입니다.
334
+
335
+ `Slider.Thumb`을 호버시에 나타나는 `label`의 문자를 표현할 수 있습니다.
336
+
337
+ `null`값이 들어갈 시 `label`이 보이지 않습니다.
338
+
339
+ ```ts
340
+ import { Slider } from "@weing-dev/ui-kit-primitive";
341
+
342
+ const components = () => {
343
+
344
+ return (
345
+ <Slider.Root label={(v) => `${v} m`}>
346
+ <!-- ... -->
347
+ </Slider.Root>
348
+ );
349
+ }
350
+ ```
351
+
352
+ #### onChange
353
+
354
+ `Slider`의 `onChange`을 관리하는 상태입니다.
355
+
356
+ `onChange`를 전달할 경우 `value`값에 대한 기본 컨트롤은 중단되며 `onChange`함수가 실행됩니다.
357
+
358
+ `defaultValue`를 변경하기 위한 상태값과 기본 컨트롤 함수가 제공됩니다.
359
+
360
+ `defaultSetChangeHandler`를 외부 set함수에 전달하면 기본 컨트롤 동작을 이용할 수 있습니다.
361
+
362
+ ##### onChangeProps
363
+
364
+ ```
365
+ {
366
+ value: number;
367
+ idx: number;
368
+ min: number;
369
+ max: number;
370
+ step: number;
371
+ defaultSetChangeHandler: (curr: number[]) => number[];
372
+ }
373
+ ```
374
+
375
+ ```ts
376
+ import { Slider } from "@weing-dev/ui-kit-primitive";
377
+
378
+ const components = () => {
379
+
380
+ const [defaultMultiValue, setDefaultMultiValue] = React.useState([0, 10]);
381
+
382
+ return (
383
+ <Slider.Root
384
+ defaultValue={defaultMultiValue}
385
+ onChange={({ defaultSetChangeHandler }) =>
386
+ setDefaultMultiValue(defaultSetChangeHandler)
387
+ }
388
+ >
389
+ <!-- ... -->
390
+ </Slider.Root>
391
+ );
392
+ }
393
+ ```
394
+
395
+ `🔔Tip: onChange만 전달할 경우 value값이 변경되지 않으니 defaultValue와 같이 사용하는걸 권장합니다.`
396
+
397
+ ### Progress
398
+
399
+ | Prop | Type | Required | Default Value |
400
+ | :----------------------------------------- | :--------------------------: | :------: | :-----------: |
401
+ | [children](#children) | React.ReactNode | true | - |
402
+ | [color](#color) | React.CSSProperties["color"] | - | "#688DEE" |
403
+ | [className](#Progress-className) | string | - | - |
404
+ | [valueClassName](#Progress-valueClassName) | string | - | - |
405
+
406
+ #### children
407
+
408
+ `Progress`에 전달하기 위한 `children`입니다.
409
+
410
+ `<Slider.Thumb/>`이 1개만 전달할 경우 `Progress`의 `value`가 왼쪽 끝 부터 표시됩니다.
411
+
412
+ 2개 이상일 경우 가장 `value`가 작은 것과 가장 큰 사이의 `value`의 range가 표시됩니다.
413
+
414
+ ```ts
415
+ import { Slider } from "@weing-dev/ui-kit-primitive";
416
+
417
+ const components = () => {
418
+ return (
419
+ <Slider.Root>
420
+ <Slider.Progress>
421
+ <Slider.Thumb></Slider.Thumb>
422
+ <Slider.Thumb></Slider.Thumb>
423
+ <Slider.Marks></Slider.Marks>
424
+ </Slider.Progress>
425
+ </Slider.Root>
426
+ );
427
+ };
428
+ ```
429
+
430
+ #### color
431
+
432
+ `Progress`의 `value`의 배경색으로 사용되는 `color`입니다.
433
+
434
+ ```ts
435
+ import { Slider } from "@weing-dev/ui-kit-primitive";
436
+
437
+ const components = () => {
438
+ return (
439
+ <Slider.Root>
440
+ <Slider.Progress color="tomato">
441
+ <!-- ... -->
442
+ </Slider.Progress>
443
+ </Slider.Root>
444
+ );
445
+ };
446
+ ```
447
+
448
+ #### Progress-className
449
+
450
+ `Progress`의 `style`을 조정하기 위한 `className`입니다.
451
+
452
+ ```ts
453
+ import { Slider } from "@weing-dev/ui-kit-primitive";
454
+
455
+ const components = () => {
456
+ return (
457
+ <Slider.Root>
458
+ <Slider.Progress className="progressClass">
459
+ <!-- ... -->
460
+ </Slider.Progress>
461
+ </Slider.Root>
462
+ );
463
+ };
464
+ ```
465
+
466
+ #### Progress-valueClassName
467
+
468
+ `Progress`의 `value`의 `style`을 조정하기 위한 `className`입니다.
469
+
470
+ ```ts
471
+ import { Slider } from "@weing-dev/ui-kit-primitive";
472
+
473
+ const components = () => {
474
+ return (
475
+ <Slider.Root>
476
+ <Slider.Progress className="valueClass">
477
+ <!-- ... -->
478
+ </Slider.Progress>
479
+ </Slider.Root>
480
+ );
481
+ };
482
+ ```
483
+
484
+ ### Thumb
485
+
486
+ | Prop | Type | Required | Default Value |
487
+ | :---------------------------- | :-------------------------------------------------------: | :------: | :-----------: |
488
+ | [index](#index) | number | - | 0 |
489
+ | [className](#Thumb-className) | string | - | - |
490
+ | [as](#Thumb-as) | (props: [ThumbAsProps](#ThumbAsProps)) => React.ReactNode | - | - |
491
+ | [children](#Thumb-children) | React.ReactNode | - | - |
492
+
493
+ #### index
494
+
495
+ `Thumb`의 `index`입니다. 전달하지 않아도 자동으로 컴포넌트의 `index`가 들어가기에 사용하지 않아도 됩니다.
496
+
497
+ #### Thumb-className
498
+
499
+ `Thumb`에 전달하기 위한 `className`입니다.
500
+
501
+ ```ts
502
+ import { Slider } from "@weing-dev/ui-kit-primitive";
503
+
504
+ const components = () => {
505
+ return (
506
+ <Slider.Root>
507
+ <Slider.Progress>
508
+ <Slider.Thumb className="ThumbClass"></Slider.Thumb>
509
+ </Slider.Progress>
510
+ </Slider.Root>
511
+ );
512
+ };
513
+ ```
514
+
515
+ #### Thumb-as
516
+
517
+ `Thumb`의 `Point`를 대체하기 위한 `render-prop`입니다.
518
+
519
+ ##### ThumbAsProps
520
+
521
+ ```
522
+ {
523
+ hidden: boolean;
524
+ isDragging: boolean;
525
+ children: React.ReactNode;
526
+ labelAlwaysOn?: boolean;
527
+ value?: string | number;
528
+ }
529
+ ```
530
+
531
+ ```ts
532
+ import { Slider } from "@weing-dev/ui-kit-primitive";
533
+
534
+ const components = () => {
535
+ return (
536
+ <Slider.Root>
537
+ <Slider.Progress>
538
+ <Slider.Thumb
539
+ className={cx("Thumb")}
540
+ as={({ labelAlwaysOn, hidden, isDragging, value, children }) => (
541
+ <div
542
+ className={cx("ThumbPointClass", {
543
+ labelAlwaysOn,
544
+ hidden,
545
+ isDragging,
546
+ })}
547
+ data-value={value}
548
+ >
549
+ {children}
550
+ </div>
551
+ )}
552
+ ></Slider.Thumb>
553
+ </Slider.Progress>
554
+ </Slider.Root>
555
+ );
556
+ };
557
+ ```
558
+
559
+ #### Thumb-children
560
+
561
+ `Thumb`의 `point` 내부에 `children`을 전달하여 ui를 커스텀할 수 있습니다.
562
+
563
+ ```ts
564
+ import { Slider, Icon } from "@weing-dev/ui-kit-primitive";
565
+
566
+ const components = () => {
567
+ return (
568
+ <Slider.Root>
569
+ <Slider.Progress>
570
+ <Slider.Thumb>
571
+ <Icon name="Settings" />
572
+ </Slider.Thumb>
573
+ </Slider.Progress>
574
+ </Slider.Root>
575
+ );
576
+ };
577
+ ```
578
+
579
+ ### Marks
580
+
581
+ | Prop | Type | Required | Default Value |
582
+ | :---------------------------- | :-------------------------------------------------------: | :------: | :-----------: |
583
+ | [className](#Marks-className) | string | - | - |
584
+ | [as](#Marks-as) | (props: [MarksAsProps](#MarksAsProps)) => React.ReactNode | - | - |
585
+
586
+ #### Marks-className
587
+
588
+ `Marks`에 전달하기 위한 `className`입니다.
589
+
590
+ ```ts
591
+ import { Slider } from "@weing-dev/ui-kit-primitive";
592
+
593
+ const components = () => {
594
+ return (
595
+ <Slider.Root>
596
+ <Slider.Progress>
597
+ <Slider.Marks className="MarksClass"></Slider.Marks>
598
+ </Slider.Progress>
599
+ </Slider.Root>
600
+ );
601
+ };
602
+ ```
603
+
604
+ #### Marks-as
605
+
606
+ `Marks`의 `point`를 대체하기 위한 `render-prop`입니다.
607
+
608
+ ##### MarksAsProps
609
+
610
+ ```
611
+ {
612
+ label: string | number | React.ReactNode;
613
+ active: boolean;
614
+ }
615
+ ```
616
+
617
+ ```ts
618
+ import { Slider } from "@weing-dev/ui-kit-primitive";
619
+
620
+ const components = () => {
621
+ return (
622
+ <Slider.Root>
623
+ <Slider.Progress>
624
+ <Slider.Marks
625
+ as={({ label, active }) => (
626
+ <div className={cx("MarkPoint")}>
627
+ <div className={cx("Label", { active })}>{label}</div>
628
+ </div>
629
+ )}
630
+ ></Slider.Marks>
631
+ </Slider.Progress>
632
+ </Slider.Root>
633
+ );
634
+ };
635
+ ```
636
+
637
+ ## Example
638
+
639
+ 프로젝트를 실행하고 해당 [Link](http://localhost:3000/users/slider)에서 확인할 수 있습니다.