dst-rg 1.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 (249) hide show
  1. package/.gitlab-ci.yml +43 -0
  2. package/.storybook/main.ts +15 -0
  3. package/.storybook/preview.ts +15 -0
  4. package/README.md +254 -0
  5. package/components.json +21 -0
  6. package/dist/Avatar.png +0 -0
  7. package/dist/assets/index-CCq7hmG3.js +186 -0
  8. package/dist/assets/index-Mg-hjQGu.css +1 -0
  9. package/dist/index.html +15 -0
  10. package/dist/test.png +0 -0
  11. package/dist/vite.svg +1 -0
  12. package/eslint.config.js +29 -0
  13. package/index.html +14 -0
  14. package/package.json +102 -0
  15. package/postcss.config.mjs +11 -0
  16. package/rollup.config.mjs +55 -0
  17. package/src/assets/react.svg +1 -0
  18. package/src/assets/style/animation.css +27 -0
  19. package/src/assets/style/box-shadow.css +25 -0
  20. package/src/assets/style/colors.css +402 -0
  21. package/src/assets/style/dark-theme.css +288 -0
  22. package/src/assets/style/font-size.css +14 -0
  23. package/src/assets/style/gradient.css +3 -0
  24. package/src/assets/style/index.css +12 -0
  25. package/src/assets/style/light-theme.css +148 -0
  26. package/src/assets/style/line-height.css +13 -0
  27. package/src/assets/style/max-width.css +5 -0
  28. package/src/assets/style/radius.css +13 -0
  29. package/src/assets/style/utility-colors.css +166 -0
  30. package/src/components/Accordion/_.stories.tsx +75 -0
  31. package/src/components/Accordion/_.test.tsx +77 -0
  32. package/src/components/Accordion/index.tsx +47 -0
  33. package/src/components/Accordion/type.ts +24 -0
  34. package/src/components/Avatar/_.stories.tsx +179 -0
  35. package/src/components/Avatar/_.style.ts +40 -0
  36. package/src/components/Avatar/_.test.tsx +150 -0
  37. package/src/components/Avatar/_.types.ts +66 -0
  38. package/src/components/Avatar/index.tsx +63 -0
  39. package/src/components/Badge/_.stories.tsx +75 -0
  40. package/src/components/Badge/_.style.ts +53 -0
  41. package/src/components/Badge/_.test.tsx +27 -0
  42. package/src/components/Badge/_.types.ts +11 -0
  43. package/src/components/Badge/index.tsx +42 -0
  44. package/src/components/Breadcrumbs/_.stories.tsx +95 -0
  45. package/src/components/Breadcrumbs/_.test.tsx +29 -0
  46. package/src/components/Breadcrumbs/_.type.ts +15 -0
  47. package/src/components/Breadcrumbs/index.tsx +103 -0
  48. package/src/components/Button/_.stories.tsx +85 -0
  49. package/src/components/Button/_.style.ts +56 -0
  50. package/src/components/Button/_.test.tsx +103 -0
  51. package/src/components/Button/_.types.ts +14 -0
  52. package/src/components/Button/index.tsx +70 -0
  53. package/src/components/Checkbox/_.stories.tsx +96 -0
  54. package/src/components/Checkbox/_.style.ts +24 -0
  55. package/src/components/Checkbox/_.test.tsx +85 -0
  56. package/src/components/Checkbox/_.types.ts +23 -0
  57. package/src/components/Checkbox/index.tsx +93 -0
  58. package/src/components/CheckboxGroup/PaymentCard/_.stories.tsx +104 -0
  59. package/src/components/CheckboxGroup/PaymentCard/_.style.ts +28 -0
  60. package/src/components/CheckboxGroup/PaymentCard/_.test.tsx +58 -0
  61. package/src/components/CheckboxGroup/PaymentCard/_.types.ts +28 -0
  62. package/src/components/CheckboxGroup/PaymentCard/index.tsx +71 -0
  63. package/src/components/CheckboxGroup/PlanCard/_.stories.tsx +165 -0
  64. package/src/components/CheckboxGroup/PlanCard/_.style.ts +32 -0
  65. package/src/components/CheckboxGroup/PlanCard/_.test.tsx +54 -0
  66. package/src/components/CheckboxGroup/PlanCard/_.types.ts +35 -0
  67. package/src/components/CheckboxGroup/PlanCard/index.tsx +53 -0
  68. package/src/components/CheckboxGroup/UserCard/_.stories.tsx +89 -0
  69. package/src/components/CheckboxGroup/UserCard/_.style.ts +42 -0
  70. package/src/components/CheckboxGroup/UserCard/_.test.tsx +66 -0
  71. package/src/components/CheckboxGroup/UserCard/_.types.ts +26 -0
  72. package/src/components/CheckboxGroup/UserCard/index.tsx +75 -0
  73. package/src/components/Dropdown/_.stories.tsx +180 -0
  74. package/src/components/Dropdown/_.style.ts +108 -0
  75. package/src/components/Dropdown/_.test.tsx +334 -0
  76. package/src/components/Dropdown/_.types.ts +12 -0
  77. package/src/components/Dropdown/index.tsx +130 -0
  78. package/src/components/FileUpload/_.stories.tsx +74 -0
  79. package/src/components/FileUpload/_.style.ts +0 -0
  80. package/src/components/FileUpload/_.test.tsx +222 -0
  81. package/src/components/FileUpload/_.types.ts +53 -0
  82. package/src/components/FileUpload/index.tsx +44 -0
  83. package/src/components/ImageMagnify/_.stories.tsx +226 -0
  84. package/src/components/ImageMagnify/_.style.ts +109 -0
  85. package/src/components/ImageMagnify/_.types.ts +44 -0
  86. package/src/components/ImageMagnify/index.tsx +204 -0
  87. package/src/components/Input/_.stories.tsx +177 -0
  88. package/src/components/Input/_.style.ts +79 -0
  89. package/src/components/Input/_.test.tsx +146 -0
  90. package/src/components/Input/_.types.ts +66 -0
  91. package/src/components/Input/index.tsx +231 -0
  92. package/src/components/InputTags/_.stories.tsx +51 -0
  93. package/src/components/InputTags/_.style.ts +28 -0
  94. package/src/components/InputTags/_.test.tsx +123 -0
  95. package/src/components/InputTags/_.types.ts +26 -0
  96. package/src/components/InputTags/index.tsx +140 -0
  97. package/src/components/Message/_.stories.tsx +79 -0
  98. package/src/components/Message/_.style.ts +87 -0
  99. package/src/components/Message/_.test.tsx +73 -0
  100. package/src/components/Message/_.types.ts +13 -0
  101. package/src/components/Message/index.tsx +57 -0
  102. package/src/components/Metric/_.stories.tsx +142 -0
  103. package/src/components/Metric/_.style.ts +14 -0
  104. package/src/components/Metric/_.test.tsx +166 -0
  105. package/src/components/Metric/_.types.ts +18 -0
  106. package/src/components/Metric/index.tsx +100 -0
  107. package/src/components/Modal/_.stories.tsx +93 -0
  108. package/src/components/Modal/_.style.ts +31 -0
  109. package/src/components/Modal/_.test.tsx +90 -0
  110. package/src/components/Modal/_.types.ts +14 -0
  111. package/src/components/Modal/index.tsx +82 -0
  112. package/src/components/Pagination/_.stories.tsx +118 -0
  113. package/src/components/Pagination/_.test.tsx +51 -0
  114. package/src/components/Pagination/index.tsx +256 -0
  115. package/src/components/Pagination/type.ts +48 -0
  116. package/src/components/PriceSlider/_.stories.tsx +107 -0
  117. package/src/components/PriceSlider/_.test.tsx +63 -0
  118. package/src/components/PriceSlider/_.type.tsx +19 -0
  119. package/src/components/PriceSlider/index.tsx +86 -0
  120. package/src/components/Progress/_.stories.tsx +93 -0
  121. package/src/components/Progress/_.style.ts +15 -0
  122. package/src/components/Progress/_.test.tsx +34 -0
  123. package/src/components/Progress/_.types.ts +17 -0
  124. package/src/components/Progress/index.tsx +173 -0
  125. package/src/components/Radio/_.stories.tsx +391 -0
  126. package/src/components/Radio/_.style.ts +33 -0
  127. package/src/components/Radio/_.test.tsx +77 -0
  128. package/src/components/Radio/_.types.ts +14 -0
  129. package/src/components/Radio/index.tsx +59 -0
  130. package/src/components/Select/_.stories.tsx +308 -0
  131. package/src/components/Select/_.style.ts +5 -0
  132. package/src/components/Select/_.types.ts +24 -0
  133. package/src/components/Select/index.tsx +172 -0
  134. package/src/components/Switch/_.stories.tsx +61 -0
  135. package/src/components/Switch/_.test.tsx +69 -0
  136. package/src/components/Switch/_.type.ts +12 -0
  137. package/src/components/Switch/index.tsx +70 -0
  138. package/src/components/Tabs/_.stories.tsx +508 -0
  139. package/src/components/Tabs/_.style.ts +63 -0
  140. package/src/components/Tabs/_.test.tsx +174 -0
  141. package/src/components/Tabs/_.type.ts +19 -0
  142. package/src/components/Tabs/index.tsx +35 -0
  143. package/src/components/Tag/_.stories.tsx +78 -0
  144. package/src/components/Tag/_.style.ts +71 -0
  145. package/src/components/Tag/_.test.tsx +44 -0
  146. package/src/components/Tag/_.types.ts +27 -0
  147. package/src/components/Tag/index.tsx +46 -0
  148. package/src/components/TextArea/_.stories.tsx +62 -0
  149. package/src/components/TextArea/_.style.ts +11 -0
  150. package/src/components/TextArea/_.test.tsx +43 -0
  151. package/src/components/TextArea/_.types.ts +29 -0
  152. package/src/components/TextArea/index.tsx +83 -0
  153. package/src/components/Toast/_.style.tsx +27 -0
  154. package/src/components/Toast/_.type.ts +30 -0
  155. package/src/components/Toast/_.utils.ts +23 -0
  156. package/src/components/Toast/container.tsx +171 -0
  157. package/src/components/Toast/index.tsx +29 -0
  158. package/src/components/Tooltip/_.stories.tsx +106 -0
  159. package/src/components/Tooltip/_.style.ts +27 -0
  160. package/src/components/Tooltip/_.test.tsx +54 -0
  161. package/src/components/Tooltip/_.types.ts +31 -0
  162. package/src/components/Tooltip/index.tsx +80 -0
  163. package/src/components/developers/AmirHossein.tsx +149 -0
  164. package/src/components/developers/Fardin.tsx +130 -0
  165. package/src/components/developers/Maryam.tsx +260 -0
  166. package/src/components/developers/Milad.tsx +431 -0
  167. package/src/components/developers/Rasoul.tsx +198 -0
  168. package/src/components/index.ts +28 -0
  169. package/src/components/ui/accordion.tsx +162 -0
  170. package/src/components/ui/avatars-component/avatar-description.tsx +30 -0
  171. package/src/components/ui/avatars-component/avatar-groups.tsx +68 -0
  172. package/src/components/ui/avatars-component/avatar-single.tsx +50 -0
  173. package/src/components/ui/card.tsx +92 -0
  174. package/src/components/ui/checkbox-group/plan-card/basic/_.test.tsx +66 -0
  175. package/src/components/ui/checkbox-group/plan-card/basic/index.tsx +70 -0
  176. package/src/components/ui/checkbox-group/plan-card/with-header/_.test.tsx +110 -0
  177. package/src/components/ui/checkbox-group/plan-card/with-header/header.test.tsx +96 -0
  178. package/src/components/ui/checkbox-group/plan-card/with-header/header.tsx +74 -0
  179. package/src/components/ui/checkbox-group/plan-card/with-header/index.tsx +65 -0
  180. package/src/components/ui/file-content/File-content.tsx +43 -0
  181. package/src/components/ui/file-uploader-components/file-uploader-box.tsx +76 -0
  182. package/src/components/ui/file-uploader-components/file-uploader-item.tsx +64 -0
  183. package/src/components/ui/icon-wrapper/_.test.tsx +60 -0
  184. package/src/components/ui/icon-wrapper/index.tsx +19 -0
  185. package/src/components/ui/input-component/input-label.tsx +11 -0
  186. package/src/components/ui/number.tsx +18 -0
  187. package/src/components/ui/pagination/card-minimal-center-align.tsx +96 -0
  188. package/src/components/ui/pagination/card-minimal-right-aligne.tsx +90 -0
  189. package/src/components/ui/pagination/default-pagination.tsx +128 -0
  190. package/src/components/ui/pagination/get-pagination-item.tsx +36 -0
  191. package/src/components/ui/pagination/pagination-card-button-group-aligned.tsx +94 -0
  192. package/src/components/ui/pagination/pagination-card-minimal-left-aligned.tsx +90 -0
  193. package/src/components/ui/pagination/pagination-content.tsx +15 -0
  194. package/src/components/ui/pagination/pagination-item.tsx +11 -0
  195. package/src/components/ui/pagination/pagination-link.tsx +42 -0
  196. package/src/components/ui/tab-components/tabs-content.tsx +15 -0
  197. package/src/components/ui/tab-components/tabs-list.tsx +27 -0
  198. package/src/components/ui/tab-components/tabs-trigger.tsx +25 -0
  199. package/src/components/ui/text-content-wrapper.tsx +36 -0
  200. package/src/hooks/useClickOutside.ts +23 -0
  201. package/src/icons/general/ArrowLeft.tsx +31 -0
  202. package/src/icons/general/ArrowRight.tsx +31 -0
  203. package/src/icons/general/activity-heart.tsx +31 -0
  204. package/src/icons/general/activity.tsx +31 -0
  205. package/src/icons/general/anchor.tsx +31 -0
  206. package/src/icons/general/archive.tsx +31 -0
  207. package/src/icons/general/arrow-left.tsx +25 -0
  208. package/src/icons/general/arrow-right.tsx +25 -0
  209. package/src/icons/general/asterisk-01.tsx +31 -0
  210. package/src/icons/general/asterisk-02.tsx +31 -0
  211. package/src/icons/general/at-sign.tsx +31 -0
  212. package/src/icons/general/attention-mark.tsx +43 -0
  213. package/src/icons/general/bookmark-add.tsx +31 -0
  214. package/src/icons/general/bookmark.tsx +31 -0
  215. package/src/icons/general/chevron-left.tsx +25 -0
  216. package/src/icons/general/chevron-right.tsx +25 -0
  217. package/src/icons/general/circle-minues.tsx +25 -0
  218. package/src/icons/general/circle-plus.tsx +25 -0
  219. package/src/icons/general/circle-question-mark.tsx +32 -0
  220. package/src/icons/general/circle.tsx +32 -0
  221. package/src/icons/general/copy.tsx +43 -0
  222. package/src/icons/general/email.tsx +32 -0
  223. package/src/icons/general/home.tsx +25 -0
  224. package/src/icons/general/layer.tsx +36 -0
  225. package/src/icons/general/leading.tsx +19 -0
  226. package/src/icons/general/master-card.tsx +37 -0
  227. package/src/icons/general/minus.tsx +36 -0
  228. package/src/icons/general/plus.tsx +19 -0
  229. package/src/icons/general/remove.tsx +32 -0
  230. package/src/icons/general/slash-divider.tsx +26 -0
  231. package/src/icons/general/tick-box.tsx +37 -0
  232. package/src/icons/general/trailing.tsx +19 -0
  233. package/src/icons/general/unkown-format.tsx +25 -0
  234. package/src/icons/general/visa-card.tsx +38 -0
  235. package/src/icons/general/x-close.tsx +35 -0
  236. package/src/icons/icons.type.ts +7 -0
  237. package/src/index.css +21 -0
  238. package/src/index.ts +3 -0
  239. package/src/lib/utils.ts +6 -0
  240. package/src/lib/zIndexUtils.ts +2 -0
  241. package/src/main.tsx +50 -0
  242. package/src/vite-env.d.ts +1 -0
  243. package/tests/setup.ts +8 -0
  244. package/tsconfig.app.json +31 -0
  245. package/tsconfig.json +7 -0
  246. package/tsconfig.node.json +24 -0
  247. package/tsconfig.rollup.json +12 -0
  248. package/vite.config.ts +20 -0
  249. package/vitest.config.ts +47 -0
@@ -0,0 +1,25 @@
1
+ import { memo } from 'react';
2
+
3
+ const MemoHome = () => {
4
+ return (
5
+ <svg
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ width="20"
8
+ height="20"
9
+ viewBox="0 0 20 20"
10
+ fill="none"
11
+ >
12
+ <path
13
+ d="M6.66667 14.1667H13.3333M9.18141 2.30333L3.52949 6.69927C3.15168 6.99312 2.96278 7.14005 2.82669 7.32405C2.70614 7.48704 2.61633 7.67065 2.56169 7.86588C2.5 8.08627 2.5 8.32558 2.5 8.80421V14.8333C2.5 15.7667 2.5 16.2335 2.68166 16.59C2.84144 16.9036 3.09641 17.1585 3.41002 17.3183C3.76654 17.5 4.23325 17.5 5.16667 17.5H14.8333C15.7668 17.5 16.2335 17.5 16.59 17.3183C16.9036 17.1585 17.1586 16.9036 17.3183 16.59C17.5 16.2335 17.5 15.7667 17.5 14.8333V8.80421C17.5 8.32558 17.5 8.08627 17.4383 7.86588C17.3837 7.67065 17.2939 7.48704 17.1733 7.32405C17.0372 7.14005 16.8483 6.99312 16.4705 6.69927L10.8186 2.30333C10.5258 2.07562 10.3794 1.96177 10.2178 1.918C10.0752 1.87938 9.92484 1.87938 9.78221 1.918C9.62057 1.96177 9.47418 2.07562 9.18141 2.30333Z"
14
+ stroke="#667085"
15
+ strokeWidth="1.66667"
16
+ strokeLinecap="round"
17
+ strokeLinejoin="round"
18
+ />
19
+ </svg>
20
+ );
21
+ };
22
+
23
+ const Home = memo(MemoHome);
24
+
25
+ export default Home;
@@ -0,0 +1,36 @@
1
+ import { memo } from "react";
2
+ import { IconPropsType } from "../icons.type";
3
+
4
+ const MemoLayer = ({
5
+ stroke = "#344054",
6
+ fill = "none",
7
+ width = "16",
8
+ className = "",
9
+ height = "16",
10
+ }: IconPropsType) => {
11
+ return (
12
+ <>
13
+ <svg
14
+ data-testid="layer-icon"
15
+ xmlns="http://www.w3.org/2000/svg"
16
+ width={width}
17
+ height={height}
18
+ className={className}
19
+ viewBox="0 0 16 16"
20
+ fill={fill}
21
+ >
22
+ <path
23
+ d="M1.33325 9.66669L7.7614 12.8808C7.84886 12.9245 7.89259 12.9464 7.93845 12.955C7.97908 12.9626 8.02076 12.9626 8.06139 12.955C8.10725 12.9464 8.15098 12.9245 8.23843 12.8808L14.6666 9.66669M1.33325 6.33336L7.7614 3.11928C7.84886 3.07555 7.89259 3.05369 7.93845 3.04508C7.97908 3.03746 8.02076 3.03746 8.06139 3.04508C8.10725 3.05369 8.15098 3.07555 8.23843 3.11928L14.6666 6.33336L8.23843 9.54743C8.15098 9.59116 8.10725 9.61302 8.06139 9.62163C8.02076 9.62925 7.97908 9.62925 7.93845 9.62163C7.89259 9.61302 7.84886 9.59116 7.7614 9.54743L1.33325 6.33336Z"
24
+ stroke={stroke}
25
+ strokeWidth="1.333"
26
+ strokeLinecap="round"
27
+ strokeLinejoin="round"
28
+ />
29
+ </svg>
30
+ </>
31
+ );
32
+ };
33
+
34
+ const Layer = memo(MemoLayer);
35
+
36
+ export default Layer;
@@ -0,0 +1,19 @@
1
+ import { memo } from "react";
2
+ import { IconPropsType } from "../icons.type";
3
+
4
+ const MemoLeading = ({
5
+ stroke = "",
6
+ fill = "none",
7
+ width = "12",
8
+ height = "12",
9
+ }: IconPropsType) => {
10
+ return (
11
+ <svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox="0 0 12 12" fill={fill}>
12
+ <path d="M6 9.5V2.5M6 2.5L2.5 6M6 2.5L9.5 6" stroke={stroke} strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
13
+ </svg>
14
+ );
15
+ };
16
+
17
+ const Leading = memo(MemoLeading);
18
+
19
+ export default Leading;
@@ -0,0 +1,37 @@
1
+ import { memo } from "react";
2
+ import { IconPropsType } from "../icons.type";
3
+
4
+ const MemoMasterCard = ({ width = "32", height = "19" }: IconPropsType) => {
5
+ return (
6
+ <svg
7
+ width={width}
8
+ height={height}
9
+ viewBox="0 0 30 19"
10
+ fill="none"
11
+ xmlns="http://www.w3.org/2000/svg"
12
+ >
13
+ <path
14
+ fillRule="evenodd"
15
+ clipRule="evenodd"
16
+ d="M14.9052 16.4393C13.3265 17.7699 11.2786 18.5732 9.04092 18.5732C4.04776 18.5732 0 14.5736 0 9.63988C0 4.70613 4.04776 0.706543 9.04092 0.706543C11.2786 0.706543 13.3265 1.50983 14.9052 2.84049C16.4839 1.50983 18.5317 0.706543 20.7694 0.706543C25.7626 0.706543 29.8104 4.70613 29.8104 9.63988C29.8104 14.5736 25.7626 18.5732 20.7694 18.5732C18.5317 18.5732 16.4839 17.7699 14.9052 16.4393Z"
17
+ fill="#ED0006"
18
+ />
19
+ <path
20
+ fillRule="evenodd"
21
+ clipRule="evenodd"
22
+ d="M14.9053 16.4392C16.8492 14.8006 18.0818 12.3625 18.0818 9.63988C18.0818 6.91727 16.8492 4.47913 14.9053 2.8406C16.484 1.50987 18.5319 0.706543 20.7697 0.706543C25.7628 0.706543 29.8106 4.70613 29.8106 9.63988C29.8106 14.5736 25.7628 18.5732 20.7697 18.5732C18.5319 18.5732 16.484 17.7699 14.9053 16.4392Z"
23
+ fill="#F9A000"
24
+ />
25
+ <path
26
+ fillRule="evenodd"
27
+ clipRule="evenodd"
28
+ d="M14.9052 16.4393C12.9612 14.8008 11.7285 12.3626 11.7285 9.63995C11.7285 6.91729 12.9612 4.47911 14.9052 2.84058C16.8492 4.47911 18.0818 6.9173 18.0818 9.63997C18.0818 12.3626 16.8492 14.8008 14.9052 16.4393Z"
29
+ fill="#FF5E00"
30
+ />
31
+ </svg>
32
+ );
33
+ };
34
+
35
+ const MasterCard = memo(MemoMasterCard);
36
+
37
+ export default MasterCard;
@@ -0,0 +1,36 @@
1
+ import { memo } from "react";
2
+ import { IconPropsType } from "../icons.type";
3
+
4
+ const MemoMinus = ({
5
+ stroke = "white",
6
+ fill = "none",
7
+ width = "10",
8
+ className = "",
9
+ height = "10",
10
+ }: IconPropsType) => {
11
+ return (
12
+ <>
13
+ <svg
14
+ width={width}
15
+ data-testid="minus-icon"
16
+ height={height}
17
+ className={className}
18
+ fill={fill}
19
+ xmlns="http://www.w3.org/2000/svg"
20
+ viewBox="0 0 12 12"
21
+ >
22
+ <path
23
+ d="M2.5 6H9.5"
24
+ stroke={stroke}
25
+ strokeWidth="1.666"
26
+ strokeLinecap="round"
27
+ strokeLinejoin="round"
28
+ />
29
+ </svg>
30
+ </>
31
+ );
32
+ };
33
+
34
+ const Minus = memo(MemoMinus);
35
+
36
+ export default Minus;
@@ -0,0 +1,19 @@
1
+ import { memo } from "react";
2
+ import { IconPropsType } from "../icons.type";
3
+
4
+ const MemoPlus = ({
5
+ stroke = "",
6
+ fill = "none",
7
+ width = "12",
8
+ height = "12",
9
+ }: IconPropsType) => {
10
+ return (
11
+ <svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox="0 0 12 12" fill={fill}>
12
+ <path d="M6 2.5V9.5M2.5 6H9.5" stroke={stroke} strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
13
+ </svg>
14
+ );
15
+ };
16
+
17
+ const Plus = memo(MemoPlus);
18
+
19
+ export default Plus;
@@ -0,0 +1,32 @@
1
+ import { memo } from "react";
2
+ import { IconPropsType } from "../icons.type";
3
+
4
+ const MemoRemove = ({
5
+ stroke = "#98A2B3",
6
+ fill = "none",
7
+ width = "14",
8
+ height = "14",
9
+ }: IconPropsType) => {
10
+ return (
11
+ <svg
12
+ width={width}
13
+ className="remove"
14
+ height={height}
15
+ viewBox="0 0 14 14"
16
+ fill={fill}
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ >
19
+ <path
20
+ d="M9.5 4.5L4.5 9.5M4.5 4.5L9.5 9.5"
21
+ stroke={stroke}
22
+ strokeWidth="1.5"
23
+ strokeLinecap="round"
24
+ strokeLinejoin="round"
25
+ />
26
+ </svg>
27
+ );
28
+ };
29
+
30
+ const Remove = memo(MemoRemove);
31
+
32
+ export default Remove;
@@ -0,0 +1,26 @@
1
+ import { memo } from 'react';
2
+
3
+
4
+ const MemoSlashDivider = () => {
5
+ return (
6
+ <svg
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ width="20"
9
+ height="20"
10
+ viewBox="0 0 20 20"
11
+ fill="none"
12
+ >
13
+ <path
14
+ d="M6.66667 14.1667H13.3333M9.18141 2.30333L3.52949 6.69927C3.15168 6.99312 2.96278 7.14005 2.82669 7.32405C2.70614 7.48704 2.61633 7.67065 2.56169 7.86588C2.5 8.08627 2.5 8.32558 2.5 8.80421V14.8333C2.5 15.7667 2.5 16.2335 2.68166 16.59C2.84144 16.9036 3.09641 17.1585 3.41002 17.3183C3.76654 17.5 4.23325 17.5 5.16667 17.5H14.8333C15.7668 17.5 16.2335 17.5 16.59 17.3183C16.9036 17.1585 17.1586 16.9036 17.3183 16.59C17.5 16.2335 17.5 15.7667 17.5 14.8333V8.80421C17.5 8.32558 17.5 8.08627 17.4383 7.86588C17.3837 7.67065 17.2939 7.48704 17.1733 7.32405C17.0372 7.14005 16.8483 6.99312 16.4705 6.69927L10.8186 2.30333C10.5258 2.07562 10.3794 1.96177 10.2178 1.918C10.0752 1.87938 9.92484 1.87938 9.78221 1.918C9.62057 1.96177 9.47418 2.07562 9.18141 2.30333Z"
15
+ stroke="#0050FF"
16
+ strokeWidth="1.66667"
17
+ strokeLinecap="round"
18
+ strokeLinejoin="round"
19
+ />
20
+ </svg>
21
+ );
22
+ };
23
+
24
+ const SlashDivider = memo(MemoSlashDivider);
25
+
26
+ export default SlashDivider;
@@ -0,0 +1,37 @@
1
+ import { memo } from "react";
2
+
3
+ const MemoTickBox = ({
4
+ stroke = "#fff",
5
+ fill = "none",
6
+ width = "10",
7
+ height = "10",
8
+ }: {
9
+ stroke?: string;
10
+ fill?: string;
11
+ width?: string;
12
+ height?: string;
13
+ }) => {
14
+ return (
15
+ <svg
16
+ width={width}
17
+ height={height}
18
+ data-testid="tickbox-icon"
19
+ viewBox="0 0 10 10"
20
+ className="border-white"
21
+ fill={fill}
22
+ xmlns="http://www.w3.org/2000/svg"
23
+ >
24
+ <path
25
+ d="M8.33341 2.5L3.75008 7.08333L1.66675 5"
26
+ stroke={stroke}
27
+ strokeWidth="1.66667"
28
+ strokeLinecap="round"
29
+ strokeLinejoin="round"
30
+ />
31
+ </svg>
32
+ );
33
+ };
34
+
35
+ const TickBox = memo(MemoTickBox);
36
+
37
+ export default TickBox;
@@ -0,0 +1,19 @@
1
+ import { memo } from "react";
2
+ import { IconPropsType } from "../icons.type";
3
+
4
+ const MemoTrailing = ({
5
+ stroke = "",
6
+ fill = "none",
7
+ width = "12",
8
+ height = "12",
9
+ }: IconPropsType) => {
10
+ return (
11
+ <svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox="0 0 12 12" fill={fill}>
12
+ <path d="M2.5 6H9.5M9.5 6L6 2.5M9.5 6L6 9.5" stroke={stroke} strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
13
+ </svg>
14
+ );
15
+ };
16
+
17
+ const Trailing = memo(MemoTrailing);
18
+
19
+ export default Trailing;
@@ -0,0 +1,25 @@
1
+ export const UnkownFormat = ({
2
+ width = 40,
3
+ height = 40,
4
+ }: {
5
+ width?: number;
6
+ height?: number;
7
+ }) => {
8
+ return (
9
+ <svg
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ width={width}
12
+ height={height}
13
+ viewBox="0 0 20 20"
14
+ fill="none"
15
+ >
16
+ <path
17
+ d="M11.6667 1.89118V5.33329C11.6667 5.8 11.6667 6.03336 11.7575 6.21162C11.8374 6.36842 11.9649 6.4959 12.1217 6.5758C12.3 6.66663 12.5333 6.66663 13 6.66663H16.4422M16.6667 8.32348V14.3333C16.6667 15.7334 16.6667 16.4335 16.3942 16.9683C16.1545 17.4387 15.7721 17.8211 15.3017 18.0608C14.7669 18.3333 14.0668 18.3333 12.6667 18.3333H7.33337C5.93324 18.3333 5.23318 18.3333 4.6984 18.0608C4.22799 17.8211 3.84554 17.4387 3.60586 16.9683C3.33337 16.4335 3.33337 15.7334 3.33337 14.3333V5.66663C3.33337 4.26649 3.33337 3.56643 3.60586 3.03165C3.84554 2.56124 4.22799 2.17879 4.6984 1.93911C5.23318 1.66663 5.93324 1.66663 7.33337 1.66663H10.0099C10.6213 1.66663 10.9271 1.66663 11.2148 1.7357C11.4699 1.79694 11.7137 1.89795 11.9374 2.03503C12.1897 2.18963 12.4059 2.40582 12.8383 2.8382L15.4951 5.49505C15.9275 5.92743 16.1437 6.14362 16.2983 6.39591C16.4354 6.61959 16.5364 6.86346 16.5976 7.11855C16.6667 7.40627 16.6667 7.712 16.6667 8.32348Z"
18
+ stroke="#98A2B3"
19
+ strokeWidth="1.66667"
20
+ strokeLinecap="round"
21
+ strokeLinejoin="round"
22
+ />
23
+ </svg>
24
+ );
25
+ };
@@ -0,0 +1,38 @@
1
+ import { memo } from "react";
2
+ import { IconPropsType } from "../icons.type";
3
+
4
+ const MemoVisaCard = ({
5
+ stroke = "#E4E7EC",
6
+ fill = "#172B85",
7
+ width = "46",
8
+ height = "32",
9
+ }: IconPropsType) => {
10
+ return (
11
+ <svg
12
+ width={width}
13
+ height={height}
14
+ viewBox="0 0 46 32"
15
+ fill="none"
16
+ xmlns="http://www.w3.org/2000/svg"
17
+ >
18
+ <path
19
+ d="M0.5 4C0.5 2.067 2.067 0.5 4 0.5H42C43.933 0.5 45.5 2.067 45.5 4V28C45.5 29.933 43.933 31.5 42 31.5H4C2.067 31.5 0.5 29.933 0.5 28V4Z"
20
+ fill="white"
21
+ />
22
+ <path
23
+ d="M0.5 4C0.5 2.067 2.067 0.5 4 0.5H42C43.933 0.5 45.5 2.067 45.5 4V28C45.5 29.933 43.933 31.5 42 31.5H4C2.067 31.5 0.5 29.933 0.5 28V4Z"
24
+ stroke={stroke}
25
+ />
26
+ <path
27
+ fillRule="evenodd"
28
+ clipRule="evenodd"
29
+ d="M14.3341 21.1441H11.5877L9.52833 13.0563C9.43058 12.6843 9.22304 12.3554 8.91774 12.2003C8.15584 11.8108 7.31628 11.5007 6.40039 11.3444V11.033H10.8245C11.4351 11.033 11.893 11.5007 11.9694 12.044L13.0379 17.878L15.7829 11.033H18.4529L14.3341 21.1441ZM19.9794 21.1441H17.3857L19.5214 11.033H22.1151L19.9794 21.1441ZM25.4707 13.8341C25.547 13.2895 26.0049 12.9781 26.5392 12.9781C27.3788 12.8999 28.2933 13.0563 29.0565 13.4445L29.5145 11.2676C28.7512 10.9562 27.9117 10.7998 27.1498 10.7998C24.6324 10.7998 22.8007 12.2003 22.8007 14.1441C22.8007 15.6228 24.0982 16.3993 25.0141 16.867C26.0049 17.3334 26.3865 17.6448 26.3102 18.1112C26.3102 18.8108 25.547 19.1222 24.7851 19.1222C23.8692 19.1222 22.9533 18.889 22.1151 18.4994L21.6571 20.6777C22.573 21.066 23.5639 21.2223 24.4798 21.2223C27.3024 21.2992 29.0565 19.9 29.0565 17.7998C29.0565 15.1551 25.4707 15.0001 25.4707 13.8341ZM38.134 21.1442L36.0746 11.033H33.8625C33.4046 11.033 32.9466 11.3444 32.794 11.8108L28.9805 21.1442H31.6505L32.1834 19.6668H35.464L35.7693 21.1442H38.134ZM34.2439 13.7559L35.0058 17.5666H32.8701L34.2439 13.7559Z"
30
+ fill={fill}
31
+ />
32
+ </svg>
33
+ );
34
+ };
35
+
36
+ const VisaCard = memo(MemoVisaCard);
37
+
38
+ export default VisaCard;
@@ -0,0 +1,35 @@
1
+ import { memo } from "react";
2
+ import { IconPropsType } from "../icons.type";
3
+
4
+ const MemoXClose = ({
5
+ stroke = "",
6
+ fill = "none",
7
+ width = "12",
8
+ className = "",
9
+ height = "12",
10
+ }: IconPropsType) => {
11
+ return (
12
+ <svg
13
+ data-testid="icon-x-close"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ width={width}
16
+ role={"x-icon"}
17
+ height={height}
18
+ className={className}
19
+ viewBox="0 0 12 12"
20
+ fill={fill}
21
+ >
22
+ <path
23
+ d="M9 3L3 9M3 3L9 9"
24
+ stroke={stroke}
25
+ strokeWidth="1.5"
26
+ strokeLinecap="round"
27
+ strokeLinejoin="round"
28
+ />
29
+ </svg>
30
+ );
31
+ };
32
+
33
+ const XClose = memo(MemoXClose);
34
+
35
+ export default XClose;
@@ -0,0 +1,7 @@
1
+ export interface IconPropsType {
2
+ stroke?: string;
3
+ fill?: string;
4
+ width?: string;
5
+ className?: string;
6
+ height?: string;
7
+ }
package/src/index.css ADDED
@@ -0,0 +1,21 @@
1
+ @import "tailwindcss";
2
+ @import "tw-animate-css";
3
+ @import "./assets/style/index.css";
4
+
5
+ @custom-variant dark (&:is(.dark *));
6
+
7
+ @layer base {
8
+ :root {
9
+ --spacing: 4px;
10
+ }
11
+
12
+ input[type="number"]::-webkit-inner-spin-button,
13
+ input[type="number"]::-webkit-outer-spin-button {
14
+ -webkit-appearance: none;
15
+ margin: 0;
16
+ }
17
+
18
+ button {
19
+ @apply cursor-pointer;
20
+ }
21
+ }
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ import "./index.css";
2
+ export * from './components';
3
+
@@ -0,0 +1,6 @@
1
+ import { clsx, type ClassValue } from "clsx"
2
+ import { twMerge } from "tailwind-merge"
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs))
6
+ }
@@ -0,0 +1,2 @@
1
+ export const getModalZIndex = (depth: number, base = 50) => base + depth * 10;
2
+ export const getBackdropZIndex = (depth: number, base = 40) => base + depth * 10;
package/src/main.tsx ADDED
@@ -0,0 +1,50 @@
1
+ import { StrictMode } from "react";
2
+ import { createRoot } from "react-dom/client";
3
+ import { ToastContainer } from "./components";
4
+ import AmirHossein from "./components/developers/AmirHossein";
5
+ import Fardin from "./components/developers/Fardin";
6
+ import Maryam from "./components/developers/Maryam";
7
+ import Milad from "./components/developers/Milad";
8
+ import Rasoul from "./components/developers/Rasoul";
9
+ import { Switch } from "./components/Switch";
10
+ import "./index.css";
11
+
12
+
13
+ const App = () => {
14
+ const darkModeToggler = () => {
15
+ document.documentElement.classList.toggle("dark");
16
+ };
17
+ return (
18
+ <StrictMode>
19
+ <div className="container mx-auto p-8 min-h-screen flex flex-col gap-6 font-yekan">
20
+ <div className="flex items-center justify-between rounded-xl bg-gray-200 dark:bg-gray-800 font-bold p-4 leading-[var(--line-height-display-sm)] shadow-xs-skeuomorphic">
21
+ <h1 className="text-rfg-primary-900">دیزاین سیستم راهکارگستران</h1>
22
+ <Switch
23
+ id="switch"
24
+ label="تغییر تم"
25
+ onToggle={darkModeToggler}
26
+ />
27
+ </div>
28
+
29
+ <AmirHossein />
30
+ <Rasoul />
31
+ <Maryam />
32
+ <Fardin />
33
+ <Milad />
34
+ </div>
35
+ </StrictMode>
36
+ );
37
+ };
38
+
39
+ createRoot(document.getElementById("root")!).render(
40
+ <StrictMode>
41
+ <ToastContainer
42
+ type="info"
43
+ position="bottom-center"
44
+ duration={40000}
45
+ animation="slide"
46
+ showProgress={true}
47
+ />
48
+ <App />
49
+ </StrictMode>
50
+ );
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
package/tests/setup.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { afterEach } from "vitest";
2
+ import { cleanup } from "@testing-library/react";
3
+ import "@testing-library/jest-dom/vitest";
4
+
5
+ // runs a clean after each test case (e.g. clearing jsdom)
6
+ afterEach(() => {
7
+ cleanup();
8
+ });
@@ -0,0 +1,31 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
+ "target": "ES2020",
5
+ "useDefineForClassFields": true,
6
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
7
+ "types": ["vitest/globals", "react", "react-dom"],
8
+ "module": "ESNext",
9
+ "skipLibCheck": true,
10
+ "baseUrl": ".",
11
+ "paths": {
12
+ "@/*": ["src/*"]
13
+ },
14
+
15
+ /* Bundler mode */
16
+ "moduleResolution": "bundler",
17
+ "allowImportingTsExtensions": true,
18
+ "isolatedModules": true,
19
+ "moduleDetection": "force",
20
+ "noEmit": true,
21
+ "jsx": "react-jsx",
22
+
23
+ /* Linting */
24
+ "strict": true,
25
+ "noUnusedLocals": true,
26
+ "noUnusedParameters": true,
27
+ "noFallthroughCasesInSwitch": true,
28
+ "noUncheckedSideEffectImports": true
29
+ },
30
+ "include": ["src", "src/test/vitest-globals.d.ts"]
31
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ { "path": "./tsconfig.app.json" },
5
+ { "path": "./tsconfig.node.json" }
6
+ ]
7
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
+ "target": "ES2022",
5
+ "lib": ["ES2023"],
6
+ "module": "ESNext",
7
+ "skipLibCheck": true,
8
+
9
+ /* Bundler mode */
10
+ "moduleResolution": "bundler",
11
+ "allowImportingTsExtensions": true,
12
+ "isolatedModules": true,
13
+ "moduleDetection": "force",
14
+ "noEmit": true,
15
+
16
+ /* Linting */
17
+ "strict": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "noFallthroughCasesInSwitch": true,
21
+ "noUncheckedSideEffectImports": true
22
+ },
23
+ "include": ["vite.config.ts"]
24
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "./tsconfig.app.json",
3
+ "compilerOptions": {
4
+ "noEmit": false,
5
+ "declaration": false,
6
+ "outDir": "./dist",
7
+ "moduleResolution": "node",
8
+ "isolatedModules": false
9
+ },
10
+ "include": ["src"]
11
+ }
12
+
package/vite.config.ts ADDED
@@ -0,0 +1,20 @@
1
+ import path from "path"
2
+ import tailwindcss from "@tailwindcss/vite";
3
+ import react from "@vitejs/plugin-react";
4
+ import { defineConfig } from "vitest/config";
5
+
6
+ // https://vite.dev/config/
7
+ export default defineConfig({
8
+ plugins: [react(), tailwindcss()],
9
+ test: {
10
+ // 👋 add the line below to add jsdom to vite
11
+ environment: "jsdom",
12
+ globals: true,
13
+ setupFiles: "./tests/setup.ts",
14
+ },
15
+ resolve: {
16
+ alias: {
17
+ "@": path.resolve(__dirname, "./src"),
18
+ },
19
+ },
20
+ });
@@ -0,0 +1,47 @@
1
+ import tailwindcss from "@tailwindcss/vite";
2
+ import react from "@vitejs/plugin-react";
3
+ import path from "path";
4
+ import { defineConfig } from "vitest/config";
5
+
6
+ // https://vite.dev/config/
7
+ export default defineConfig({
8
+ plugins: [react(), tailwindcss()],
9
+ test: {
10
+ // 👋 add the line below to add jsdom to vite
11
+ environment: "jsdom",
12
+ globals: true,
13
+ setupFiles: "tests/setup.ts",
14
+ include: ["src/**/*.test.{ts,tsx}", "src/**/*.spec.{ts,tsx}"],
15
+ exclude: [
16
+ "node_modules",
17
+ "dist",
18
+ "**/*.stories.tsx",
19
+ "**/*.style.ts",
20
+ "**/*.types.ts",
21
+ "src/icons/**/*.{ts,tsx}",
22
+ ],
23
+ coverage: {
24
+ reporter: ["text", "json", "html"],
25
+ include: ["src/**/*.{ts,tsx}"],
26
+ exclude: [
27
+ // "**/*.test.{ts,tsx}", // ❌ خود تست‌ها بررسی نشن
28
+ "**/*.spec.{ts,tsx}", // ❌ تست‌ها
29
+ "**/*.stories.tsx", // ❌ Storybook
30
+ "**/*.style.ts", // ❌ Style ها
31
+ "**/*.types.ts", // ❌ Type ها
32
+ "src/icons/**/*.{ts,tsx}", // ❌ آیکون‌ها
33
+ "src/components/developers//**/*.{ts,tsx}", // ❌ توسعه‌دهندگان
34
+ "tests/**", // ❌ فایل‌های setup
35
+ "node_modules/**", // ❌ پکیج‌ها
36
+ "dist/**", // ❌ خروجی build
37
+ "src/main.tsx", // ❌ فایل اصلی
38
+ "src/vite-env.d.ts", // ❌ TypeScript
39
+ ],
40
+ },
41
+ },
42
+ resolve: {
43
+ alias: {
44
+ "@": path.resolve(__dirname, "./src"),
45
+ },
46
+ },
47
+ });