mainstack-design-system 1.1.2 → 1.2.1

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 (484) hide show
  1. package/README.md +30 -773
  2. package/dist/assets/styles.css +1 -1
  3. package/dist/index-DJT9m8v7.js +54 -0
  4. package/dist/index-DvzX668K.cjs +1 -0
  5. package/dist/index.d.ts +64 -84
  6. package/dist/mainstack-design-system.cjs +1 -1
  7. package/dist/mainstack-design-system.js +390 -392
  8. package/dist/mainstack-design-system17.cjs +1 -1
  9. package/dist/mainstack-design-system17.js +4 -4
  10. package/dist/mainstack-design-system18.cjs +1 -1
  11. package/dist/mainstack-design-system18.js +4 -4
  12. package/dist/mainstack-design-system19.cjs +1 -1
  13. package/dist/mainstack-design-system19.js +4 -4
  14. package/dist/mainstack-design-system26.cjs +1 -1
  15. package/dist/mainstack-design-system26.js +4 -4
  16. package/dist/mainstack-design-system30.cjs +1 -1
  17. package/dist/mainstack-design-system30.js +4 -4
  18. package/dist/mainstack-design-system35.cjs +1 -1
  19. package/dist/mainstack-design-system35.js +5 -5
  20. package/dist/mainstack-design-system357.cjs +1 -1
  21. package/dist/mainstack-design-system357.js +3 -3
  22. package/dist/mainstack-design-system358.cjs +1 -1
  23. package/dist/mainstack-design-system358.js +3 -3
  24. package/dist/mainstack-design-system359.cjs +1 -1
  25. package/dist/mainstack-design-system359.js +8 -8
  26. package/dist/mainstack-design-system36.cjs +1 -1
  27. package/dist/mainstack-design-system36.js +3 -3
  28. package/dist/mainstack-design-system360.cjs +1 -1
  29. package/dist/mainstack-design-system360.js +9 -9
  30. package/dist/mainstack-design-system361.cjs +1 -1
  31. package/dist/mainstack-design-system361.js +1 -1
  32. package/dist/mainstack-design-system362.cjs +1 -1
  33. package/dist/mainstack-design-system362.js +1 -1
  34. package/dist/mainstack-design-system363.cjs +1 -1
  35. package/dist/mainstack-design-system363.js +6 -6
  36. package/dist/mainstack-design-system364.cjs +1 -1
  37. package/dist/mainstack-design-system364.js +41 -31
  38. package/dist/mainstack-design-system365.cjs +1 -1
  39. package/dist/mainstack-design-system365.js +9 -9
  40. package/dist/mainstack-design-system366.cjs +1 -1
  41. package/dist/mainstack-design-system366.js +4 -4
  42. package/dist/mainstack-design-system367.cjs +1 -1
  43. package/dist/mainstack-design-system367.js +5 -5
  44. package/dist/mainstack-design-system368.cjs +1 -1
  45. package/dist/mainstack-design-system368.js +3 -3
  46. package/dist/mainstack-design-system369.cjs +1 -1
  47. package/dist/mainstack-design-system369.js +16 -16
  48. package/dist/mainstack-design-system37.cjs +1 -1
  49. package/dist/mainstack-design-system37.js +7 -7
  50. package/dist/mainstack-design-system370.cjs +1 -1
  51. package/dist/mainstack-design-system370.js +7 -7
  52. package/dist/mainstack-design-system371.cjs +1 -1
  53. package/dist/mainstack-design-system371.js +6 -6
  54. package/dist/mainstack-design-system372.cjs +1 -1
  55. package/dist/mainstack-design-system372.js +6 -6
  56. package/dist/mainstack-design-system373.cjs +1 -1
  57. package/dist/mainstack-design-system373.js +5 -5
  58. package/dist/mainstack-design-system374.cjs +1 -1
  59. package/dist/mainstack-design-system374.js +4 -4
  60. package/dist/mainstack-design-system375.cjs +1 -1
  61. package/dist/mainstack-design-system375.js +4 -4
  62. package/dist/mainstack-design-system376.cjs +1 -1
  63. package/dist/mainstack-design-system376.js +12 -12
  64. package/dist/mainstack-design-system377.cjs +1 -1
  65. package/dist/mainstack-design-system377.js +1 -1
  66. package/dist/mainstack-design-system378.cjs +1 -1
  67. package/dist/mainstack-design-system378.js +1 -1
  68. package/dist/mainstack-design-system379.cjs +1 -1
  69. package/dist/mainstack-design-system379.js +5 -5
  70. package/dist/mainstack-design-system38.cjs +1 -1
  71. package/dist/mainstack-design-system38.js +7 -7
  72. package/dist/mainstack-design-system380.cjs +1 -1
  73. package/dist/mainstack-design-system380.js +10 -10
  74. package/dist/mainstack-design-system381.cjs +1 -1
  75. package/dist/mainstack-design-system381.js +5 -5
  76. package/dist/mainstack-design-system382.cjs +1 -1
  77. package/dist/mainstack-design-system382.js +17 -18
  78. package/dist/mainstack-design-system383.cjs +1 -1
  79. package/dist/mainstack-design-system383.js +17 -5
  80. package/dist/mainstack-design-system384.cjs +1 -2
  81. package/dist/mainstack-design-system384.js +69 -29
  82. package/dist/mainstack-design-system385.cjs +1 -2
  83. package/dist/mainstack-design-system385.js +7 -29
  84. package/dist/mainstack-design-system386.cjs +87 -3
  85. package/dist/mainstack-design-system386.js +235 -11
  86. package/dist/mainstack-design-system387.cjs +1 -1
  87. package/dist/mainstack-design-system387.js +19 -19
  88. package/dist/mainstack-design-system388.cjs +1 -1
  89. package/dist/mainstack-design-system388.js +5 -16
  90. package/dist/mainstack-design-system389.cjs +2 -1
  91. package/dist/mainstack-design-system389.js +27 -15
  92. package/dist/mainstack-design-system39.cjs +1 -1
  93. package/dist/mainstack-design-system39.js +11 -13
  94. package/dist/mainstack-design-system390.cjs +2 -1
  95. package/dist/mainstack-design-system390.js +17 -16
  96. package/dist/mainstack-design-system391.cjs +1 -1
  97. package/dist/mainstack-design-system391.js +7 -9
  98. package/dist/mainstack-design-system392.cjs +1 -1
  99. package/dist/mainstack-design-system392.js +30 -16
  100. package/dist/mainstack-design-system393.cjs +1 -1
  101. package/dist/mainstack-design-system393.js +7 -17
  102. package/dist/mainstack-design-system394.cjs +1 -1
  103. package/dist/mainstack-design-system394.js +15 -68
  104. package/dist/mainstack-design-system395.cjs +1 -1
  105. package/dist/mainstack-design-system395.js +16 -7
  106. package/dist/mainstack-design-system396.cjs +1 -87
  107. package/dist/mainstack-design-system396.js +14 -236
  108. package/dist/mainstack-design-system397.cjs +1 -2
  109. package/dist/mainstack-design-system397.js +18 -17
  110. package/dist/mainstack-design-system398.cjs +1 -1
  111. package/dist/mainstack-design-system398.js +18 -7
  112. package/dist/mainstack-design-system399.cjs +1 -1
  113. package/dist/mainstack-design-system399.js +20 -28
  114. package/dist/mainstack-design-system40.cjs +1 -1
  115. package/dist/mainstack-design-system40.js +4 -4
  116. package/dist/mainstack-design-system400.cjs +1 -1
  117. package/dist/mainstack-design-system400.js +21 -7
  118. package/dist/mainstack-design-system401.cjs +1 -1
  119. package/dist/mainstack-design-system401.js +27 -12
  120. package/dist/mainstack-design-system402.cjs +1 -1
  121. package/dist/mainstack-design-system402.js +14 -11
  122. package/dist/mainstack-design-system403.cjs +1 -1
  123. package/dist/mainstack-design-system403.js +17 -16
  124. package/dist/mainstack-design-system404.cjs +1 -1
  125. package/dist/mainstack-design-system404.js +14 -14
  126. package/dist/mainstack-design-system405.cjs +1 -1
  127. package/dist/mainstack-design-system405.js +16 -14
  128. package/dist/mainstack-design-system406.cjs +1 -1
  129. package/dist/mainstack-design-system406.js +15 -24
  130. package/dist/mainstack-design-system407.cjs +1 -1
  131. package/dist/mainstack-design-system407.js +12 -17
  132. package/dist/mainstack-design-system408.cjs +1 -1
  133. package/dist/mainstack-design-system408.js +12 -27
  134. package/dist/mainstack-design-system409.cjs +1 -1
  135. package/dist/mainstack-design-system409.js +7 -18
  136. package/dist/mainstack-design-system41.cjs +1 -1
  137. package/dist/mainstack-design-system41.js +6 -6
  138. package/dist/mainstack-design-system410.cjs +1 -1
  139. package/dist/mainstack-design-system410.js +18 -17
  140. package/dist/mainstack-design-system411.cjs +1 -1
  141. package/dist/mainstack-design-system411.js +13 -15
  142. package/dist/mainstack-design-system412.cjs +1 -1
  143. package/dist/mainstack-design-system412.js +15 -16
  144. package/dist/mainstack-design-system413.cjs +1 -1
  145. package/dist/mainstack-design-system413.js +14 -12
  146. package/dist/mainstack-design-system414.cjs +1 -1
  147. package/dist/mainstack-design-system414.js +68 -16
  148. package/dist/mainstack-design-system415.cjs +1 -1
  149. package/dist/mainstack-design-system415.js +13 -12
  150. package/dist/mainstack-design-system416.cjs +1 -1
  151. package/dist/mainstack-design-system416.js +20 -8
  152. package/dist/mainstack-design-system417.cjs +1 -1
  153. package/dist/mainstack-design-system417.js +19 -41
  154. package/dist/mainstack-design-system418.cjs +1 -1
  155. package/dist/mainstack-design-system418.js +13 -18
  156. package/dist/mainstack-design-system419.cjs +1 -1
  157. package/dist/mainstack-design-system419.js +37 -16
  158. package/dist/mainstack-design-system42.cjs +1 -1
  159. package/dist/mainstack-design-system42.js +8 -8
  160. package/dist/mainstack-design-system420.cjs +1 -1
  161. package/dist/mainstack-design-system420.js +25 -15
  162. package/dist/mainstack-design-system421.cjs +1 -1
  163. package/dist/mainstack-design-system421.js +15 -18
  164. package/dist/mainstack-design-system422.cjs +1 -1
  165. package/dist/mainstack-design-system422.js +15 -68
  166. package/dist/mainstack-design-system423.cjs +1 -1
  167. package/dist/mainstack-design-system423.js +19 -17
  168. package/dist/mainstack-design-system424.cjs +1 -1
  169. package/dist/mainstack-design-system424.js +13 -20
  170. package/dist/mainstack-design-system425.cjs +1 -1
  171. package/dist/mainstack-design-system425.js +19 -20
  172. package/dist/mainstack-design-system426.cjs +1 -1
  173. package/dist/mainstack-design-system426.js +15 -13
  174. package/dist/mainstack-design-system427.cjs +1 -1
  175. package/dist/mainstack-design-system427.js +8 -38
  176. package/dist/mainstack-design-system428.cjs +1 -1
  177. package/dist/mainstack-design-system428.js +7 -29
  178. package/dist/mainstack-design-system429.cjs +1 -1
  179. package/dist/mainstack-design-system429.js +16 -9
  180. package/dist/mainstack-design-system430.cjs +1 -1
  181. package/dist/mainstack-design-system430.js +24 -11
  182. package/dist/mainstack-design-system431.cjs +2 -1
  183. package/dist/mainstack-design-system431.js +40 -19
  184. package/dist/mainstack-design-system432.cjs +2 -1
  185. package/dist/mainstack-design-system432.js +26 -13
  186. package/dist/mainstack-design-system433.cjs +2 -1
  187. package/dist/mainstack-design-system433.js +31 -17
  188. package/dist/mainstack-design-system434.cjs +2 -1
  189. package/dist/mainstack-design-system434.js +19 -13
  190. package/dist/mainstack-design-system435.cjs +2 -1
  191. package/dist/mainstack-design-system435.js +29 -6
  192. package/dist/mainstack-design-system436.cjs +2 -1
  193. package/dist/mainstack-design-system436.js +20 -6
  194. package/dist/mainstack-design-system437.cjs +2 -1
  195. package/dist/mainstack-design-system437.js +39 -20
  196. package/dist/mainstack-design-system438.cjs +2 -1
  197. package/dist/mainstack-design-system438.js +31 -27
  198. package/dist/mainstack-design-system439.cjs +1 -1
  199. package/dist/mainstack-design-system439.js +27 -27
  200. package/dist/mainstack-design-system440.cjs +1 -1
  201. package/dist/mainstack-design-system440.js +51 -21
  202. package/dist/mainstack-design-system441.cjs +1 -1
  203. package/dist/mainstack-design-system441.js +21 -28
  204. package/dist/mainstack-design-system442.cjs +1 -1
  205. package/dist/mainstack-design-system442.js +29 -16
  206. package/dist/mainstack-design-system443.cjs +1 -1
  207. package/dist/mainstack-design-system443.js +15 -25
  208. package/dist/mainstack-design-system444.cjs +1 -1
  209. package/dist/mainstack-design-system444.js +25 -16
  210. package/dist/mainstack-design-system445.cjs +1 -1
  211. package/dist/mainstack-design-system445.js +16 -23
  212. package/dist/mainstack-design-system446.cjs +1 -1
  213. package/dist/mainstack-design-system446.js +40 -32
  214. package/dist/mainstack-design-system447.cjs +1 -1
  215. package/dist/mainstack-design-system447.js +30 -38
  216. package/dist/mainstack-design-system448.cjs +1 -2
  217. package/dist/mainstack-design-system448.js +18 -56
  218. package/dist/mainstack-design-system449.cjs +1 -2
  219. package/dist/mainstack-design-system449.js +18 -26
  220. package/dist/mainstack-design-system450.cjs +1 -2
  221. package/dist/mainstack-design-system450.js +16 -33
  222. package/dist/mainstack-design-system451.cjs +1 -2
  223. package/dist/mainstack-design-system451.js +20 -20
  224. package/dist/mainstack-design-system452.cjs +1 -2
  225. package/dist/mainstack-design-system452.js +19 -30
  226. package/dist/mainstack-design-system453.cjs +1 -2
  227. package/dist/mainstack-design-system453.js +17 -21
  228. package/dist/mainstack-design-system454.cjs +1 -1
  229. package/dist/mainstack-design-system454.js +50 -26
  230. package/dist/mainstack-design-system455.cjs +1 -1
  231. package/dist/mainstack-design-system455.js +52 -30
  232. package/dist/mainstack-design-system456.cjs +2 -1
  233. package/dist/mainstack-design-system456.js +99 -18
  234. package/dist/mainstack-design-system457.cjs +2 -1
  235. package/dist/mainstack-design-system457.js +35 -18
  236. package/dist/mainstack-design-system458.cjs +2 -1
  237. package/dist/mainstack-design-system458.js +76 -16
  238. package/dist/mainstack-design-system459.cjs +2 -1
  239. package/dist/mainstack-design-system459.js +74 -20
  240. package/dist/mainstack-design-system460.cjs +2 -1
  241. package/dist/mainstack-design-system460.js +45 -19
  242. package/dist/mainstack-design-system461.cjs +2 -1
  243. package/dist/mainstack-design-system461.js +80 -17
  244. package/dist/mainstack-design-system462.cjs +1 -2
  245. package/dist/mainstack-design-system462.js +8 -53
  246. package/dist/mainstack-design-system463.cjs +1 -2
  247. package/dist/mainstack-design-system463.js +12 -54
  248. package/dist/mainstack-design-system464.cjs +1 -2
  249. package/dist/mainstack-design-system464.js +17 -92
  250. package/dist/mainstack-design-system465.cjs +1 -2
  251. package/dist/mainstack-design-system465.js +13 -30
  252. package/dist/mainstack-design-system466.cjs +1 -2
  253. package/dist/mainstack-design-system466.js +20 -39
  254. package/dist/mainstack-design-system467.cjs +1 -2
  255. package/dist/mainstack-design-system467.js +23 -71
  256. package/dist/mainstack-design-system468.cjs +1 -2
  257. package/dist/mainstack-design-system468.js +28 -39
  258. package/dist/mainstack-design-system469.cjs +1 -2
  259. package/dist/mainstack-design-system469.js +7 -81
  260. package/dist/mainstack-design-system470.cjs +1 -1
  261. package/dist/mainstack-design-system470.js +85 -8
  262. package/dist/mainstack-design-system471.cjs +1 -1
  263. package/dist/mainstack-design-system471.js +27 -12
  264. package/dist/mainstack-design-system472.cjs +1 -1
  265. package/dist/mainstack-design-system472.js +19 -14
  266. package/dist/mainstack-design-system473.cjs +1 -1
  267. package/dist/mainstack-design-system473.js +22 -13
  268. package/dist/mainstack-design-system474.cjs +2 -1
  269. package/dist/mainstack-design-system474.js +31 -20
  270. package/dist/mainstack-design-system475.cjs +2 -1
  271. package/dist/mainstack-design-system475.js +31 -26
  272. package/dist/mainstack-design-system476.cjs +2 -1
  273. package/dist/mainstack-design-system476.js +40 -30
  274. package/dist/mainstack-design-system477.cjs +2 -1
  275. package/dist/mainstack-design-system477.js +31 -7
  276. package/dist/mainstack-design-system478.cjs +2 -1
  277. package/dist/mainstack-design-system478.js +59 -80
  278. package/dist/mainstack-design-system479.cjs +2 -1
  279. package/dist/mainstack-design-system479.js +29 -25
  280. package/dist/mainstack-design-system480.cjs +2 -1
  281. package/dist/mainstack-design-system480.js +103 -21
  282. package/dist/mainstack-design-system481.cjs +2 -1
  283. package/dist/mainstack-design-system481.js +31 -21
  284. package/dist/mainstack-design-system482.cjs +1 -1
  285. package/dist/mainstack-design-system482.js +23 -23
  286. package/dist/mainstack-design-system483.cjs +1 -1
  287. package/dist/mainstack-design-system483.js +75 -27
  288. package/dist/mainstack-design-system484.cjs +1 -1
  289. package/dist/mainstack-design-system484.js +20 -43
  290. package/dist/mainstack-design-system485.cjs +1 -1
  291. package/dist/mainstack-design-system485.js +122 -26
  292. package/dist/mainstack-design-system486.cjs +1 -1
  293. package/dist/mainstack-design-system486.js +28 -55
  294. package/dist/mainstack-design-system487.cjs +1 -1
  295. package/dist/mainstack-design-system487.js +21 -21
  296. package/dist/mainstack-design-system488.cjs +1 -1
  297. package/dist/mainstack-design-system488.js +30 -102
  298. package/dist/mainstack-design-system489.cjs +1 -1
  299. package/dist/mainstack-design-system489.js +32 -25
  300. package/dist/mainstack-design-system490.cjs +3 -2
  301. package/dist/mainstack-design-system490.js +16 -31
  302. package/dist/mainstack-design-system491.cjs +1 -2
  303. package/dist/mainstack-design-system491.js +17 -79
  304. package/dist/mainstack-design-system492.cjs +1 -2
  305. package/dist/mainstack-design-system492.js +11 -17
  306. package/dist/mainstack-design-system493.cjs +1 -2
  307. package/dist/mainstack-design-system493.js +15 -126
  308. package/dist/mainstack-design-system494.cjs +1 -2
  309. package/dist/mainstack-design-system494.js +14 -35
  310. package/dist/mainstack-design-system495.cjs +1 -2
  311. package/dist/mainstack-design-system495.js +15 -31
  312. package/dist/mainstack-design-system496.cjs +1 -2
  313. package/dist/mainstack-design-system496.js +8 -31
  314. package/dist/mainstack-design-system497.cjs +1 -1
  315. package/dist/mainstack-design-system497.js +14 -8
  316. package/dist/mainstack-design-system498.cjs +1 -1
  317. package/dist/mainstack-design-system498.js +14 -10
  318. package/dist/mainstack-design-system499.cjs +1 -1
  319. package/dist/mainstack-design-system499.js +13 -15
  320. package/dist/mainstack-design-system500.cjs +1 -1
  321. package/dist/mainstack-design-system500.js +14 -13
  322. package/dist/mainstack-design-system501.cjs +1 -1
  323. package/dist/mainstack-design-system501.js +30 -16
  324. package/dist/mainstack-design-system502.cjs +1 -1
  325. package/dist/mainstack-design-system502.js +16 -31
  326. package/dist/mainstack-design-system503.cjs +1 -1
  327. package/dist/mainstack-design-system503.js +42 -16
  328. package/dist/mainstack-design-system504.cjs +2 -1
  329. package/dist/mainstack-design-system504.js +28 -39
  330. package/dist/mainstack-design-system505.cjs +1 -2
  331. package/dist/mainstack-design-system505.js +71 -27
  332. package/dist/mainstack-design-system506.cjs +1 -1
  333. package/dist/mainstack-design-system506.js +20 -73
  334. package/dist/mainstack-design-system507.cjs +2 -1
  335. package/dist/mainstack-design-system507.js +14 -22
  336. package/dist/mainstack-design-system508.cjs +1 -1
  337. package/dist/mainstack-design-system508.js +37 -13
  338. package/dist/mainstack-design-system509.cjs +1 -1
  339. package/dist/mainstack-design-system509.js +31 -36
  340. package/dist/mainstack-design-system510.cjs +1 -1
  341. package/dist/mainstack-design-system510.js +38 -31
  342. package/dist/mainstack-design-system511.cjs +1 -1
  343. package/dist/mainstack-design-system511.js +43 -24
  344. package/dist/mainstack-design-system512.cjs +1 -1
  345. package/dist/mainstack-design-system512.js +13 -46
  346. package/dist/mainstack-design-system513.cjs +1 -1
  347. package/dist/mainstack-design-system513.js +32 -13
  348. package/dist/mainstack-design-system514.cjs +1 -1
  349. package/dist/mainstack-design-system514.js +38 -31
  350. package/dist/mainstack-design-system515.cjs +1 -1
  351. package/dist/mainstack-design-system515.js +43 -24
  352. package/dist/mainstack-design-system516.cjs +1 -2
  353. package/dist/mainstack-design-system516.js +17 -48
  354. package/dist/mainstack-design-system517.cjs +1 -1
  355. package/dist/mainstack-design-system517.js +17 -12
  356. package/dist/mainstack-design-system518.cjs +1 -1
  357. package/dist/mainstack-design-system518.js +44 -17
  358. package/dist/mainstack-design-system519.cjs +1 -1
  359. package/dist/mainstack-design-system519.js +27 -47
  360. package/dist/mainstack-design-system520.cjs +2 -1
  361. package/dist/mainstack-design-system520.js +24 -26
  362. package/dist/mainstack-design-system521.cjs +1 -1
  363. package/dist/mainstack-design-system521.js +32 -21
  364. package/dist/mainstack-design-system522.cjs +1 -2
  365. package/dist/mainstack-design-system522.js +15 -32
  366. package/dist/mainstack-design-system523.cjs +1 -1
  367. package/dist/mainstack-design-system523.js +13 -13
  368. package/dist/mainstack-design-system524.cjs +1 -1
  369. package/dist/mainstack-design-system524.js +10 -10
  370. package/dist/mainstack-design-system525.cjs +1 -1
  371. package/dist/mainstack-design-system525.js +11 -13
  372. package/dist/mainstack-design-system526.cjs +1 -1
  373. package/dist/mainstack-design-system526.js +10 -11
  374. package/dist/mainstack-design-system527.cjs +2 -1
  375. package/dist/mainstack-design-system527.js +16 -11
  376. package/dist/mainstack-design-system528.cjs +1 -1
  377. package/dist/mainstack-design-system528.js +4 -20
  378. package/dist/mainstack-design-system529.cjs +1 -1
  379. package/dist/mainstack-design-system529.js +8 -4
  380. package/dist/mainstack-design-system530.cjs +1 -1
  381. package/dist/mainstack-design-system530.js +5 -8
  382. package/dist/mainstack-design-system531.cjs +1 -2
  383. package/dist/mainstack-design-system531.js +15 -6
  384. package/dist/mainstack-design-system532.cjs +1 -1
  385. package/dist/mainstack-design-system532.js +13 -14
  386. package/dist/mainstack-design-system533.cjs +2 -1
  387. package/dist/mainstack-design-system533.js +17 -13
  388. package/dist/mainstack-design-system534.cjs +1 -1
  389. package/dist/mainstack-design-system534.js +20 -10
  390. package/dist/mainstack-design-system535.cjs +1 -1
  391. package/dist/mainstack-design-system535.js +14 -21
  392. package/dist/mainstack-design-system536.cjs +1 -1
  393. package/dist/mainstack-design-system536.js +22 -15
  394. package/dist/mainstack-design-system537.cjs +1 -2
  395. package/dist/mainstack-design-system537.js +29 -24
  396. package/dist/mainstack-design-system538.cjs +1 -1
  397. package/dist/mainstack-design-system538.js +15 -29
  398. package/dist/mainstack-design-system539.cjs +1 -1
  399. package/dist/mainstack-design-system539.js +9 -12
  400. package/dist/mainstack-design-system540.cjs +1 -1
  401. package/dist/mainstack-design-system540.js +18 -8
  402. package/dist/mainstack-design-system541.cjs +1 -1
  403. package/dist/mainstack-design-system541.js +15 -18
  404. package/dist/mainstack-design-system542.cjs +1 -1
  405. package/dist/mainstack-design-system542.js +14 -14
  406. package/dist/mainstack-design-system543.cjs +1 -1
  407. package/dist/mainstack-design-system543.js +18 -16
  408. package/dist/mainstack-design-system544.cjs +1 -1
  409. package/dist/mainstack-design-system544.js +11 -17
  410. package/dist/mainstack-design-system545.cjs +1 -1
  411. package/dist/mainstack-design-system545.js +11 -11
  412. package/dist/mainstack-design-system546.cjs +1 -1
  413. package/dist/mainstack-design-system546.js +55 -15
  414. package/dist/mainstack-design-system547.cjs +1 -1
  415. package/dist/mainstack-design-system547.js +35 -55
  416. package/dist/mainstack-design-system548.cjs +1 -1
  417. package/dist/mainstack-design-system548.js +23 -35
  418. package/dist/mainstack-design-system549.cjs +1 -1
  419. package/dist/mainstack-design-system549.js +15 -15
  420. package/dist/mainstack-design-system550.cjs +5 -1
  421. package/dist/mainstack-design-system550.js +50 -19
  422. package/dist/mainstack-design-system551.cjs +1 -5
  423. package/dist/mainstack-design-system551.js +30 -51
  424. package/dist/mainstack-design-system552.cjs +1 -1
  425. package/dist/mainstack-design-system552.js +7 -33
  426. package/dist/mainstack-design-system553.cjs +2 -1
  427. package/dist/mainstack-design-system553.js +84 -6
  428. package/dist/mainstack-design-system554.cjs +1 -2
  429. package/dist/mainstack-design-system554.js +203 -85
  430. package/dist/mainstack-design-system555.cjs +1 -1
  431. package/dist/mainstack-design-system555.js +33 -153
  432. package/dist/mainstack-design-system556.cjs +1 -1
  433. package/dist/mainstack-design-system556.js +5 -83
  434. package/dist/mainstack-design-system557.cjs +1 -1
  435. package/dist/mainstack-design-system557.js +22 -21
  436. package/dist/mainstack-design-system558.cjs +1 -1
  437. package/dist/mainstack-design-system558.js +9 -5
  438. package/dist/mainstack-design-system559.cjs +1 -1
  439. package/dist/mainstack-design-system559.js +42 -22
  440. package/dist/mainstack-design-system560.cjs +1 -1
  441. package/dist/mainstack-design-system560.js +14 -9
  442. package/dist/mainstack-design-system561.cjs +1 -1
  443. package/dist/mainstack-design-system561.js +48 -13
  444. package/dist/mainstack-design-system562.cjs +1 -1
  445. package/dist/mainstack-design-system562.js +14 -44
  446. package/dist/mainstack-design-system563.cjs +1 -1
  447. package/dist/mainstack-design-system563.js +98 -18
  448. package/dist/mainstack-design-system564.cjs +1 -1
  449. package/dist/mainstack-design-system564.js +34 -58
  450. package/dist/mainstack-design-system565.cjs +1 -1
  451. package/dist/mainstack-design-system565.js +13 -37
  452. package/dist/mainstack-design-system566.cjs +1 -1
  453. package/dist/mainstack-design-system566.js +255 -14
  454. package/dist/mainstack-design-system567.cjs +1 -1
  455. package/dist/mainstack-design-system567.js +12 -255
  456. package/dist/mainstack-design-system568.cjs +1 -1
  457. package/dist/mainstack-design-system568.js +7 -10
  458. package/dist/mainstack-design-system569.cjs +1 -1
  459. package/dist/mainstack-design-system569.js +47 -9
  460. package/dist/mainstack-design-system570.cjs +1 -1
  461. package/dist/mainstack-design-system570.js +14 -47
  462. package/dist/mainstack-design-system571.cjs +1 -1
  463. package/dist/mainstack-design-system571.js +21 -13
  464. package/dist/mainstack-design-system587.cjs +2 -1
  465. package/dist/mainstack-design-system587.js +97 -74
  466. package/dist/mainstack-design-system588.cjs +1 -1
  467. package/dist/mainstack-design-system588.js +75 -20
  468. package/dist/mainstack-design-system589.cjs +1 -2
  469. package/dist/mainstack-design-system589.js +18 -148
  470. package/dist/mainstack-design-system591.cjs +2 -2
  471. package/dist/mainstack-design-system591.js +5 -4
  472. package/dist/mainstack-design-system594.cjs +1 -1
  473. package/dist/mainstack-design-system594.js +1 -1
  474. package/dist/mainstack-design-system595.cjs +1 -1
  475. package/dist/mainstack-design-system595.js +1 -1
  476. package/dist/mainstack-design-system596.cjs +1 -1
  477. package/dist/mainstack-design-system596.js +5 -5
  478. package/dist/mainstack-design-system598.cjs +1 -1
  479. package/dist/mainstack-design-system598.js +11 -1
  480. package/package.json +4 -4
  481. package/dist/index-D1Vkm5Kx.cjs +0 -1
  482. package/dist/index-oS7tHm-8.js +0 -106
  483. package/dist/mainstack-design-system599.cjs +0 -1
  484. package/dist/mainstack-design-system599.js +0 -11
package/README.md CHANGED
@@ -14,790 +14,47 @@ ability to auto-maintain this document. Please use the Joggr editor to edit this
14
14
  -->
15
15
  <!-- @joggr:warning:end -->
16
16
 
17
- ## Storybook Documentation
17
+ ## Documentation
18
18
 
19
- To view the design system documentation, visit this [link](https://mainstack-design-system.vercel.app/).
19
+ You can find the Mainstack-Design-System documentation [here](https://design.mainstack.co/).
20
20
 
21
- ## 🔧 Utilities & Helpers Reference
21
+ ## Examples
22
22
 
23
- **Before building, check what's already available to avoid rebuilding existing functionality:**
24
-
25
- - **[UTILITIES.md](./UTILITIES.md)** - Utility functions, hooks, and types (4 min read)
26
-
27
- The design system includes many utilities that don't map to Figma:
28
-
29
- - **Helper functions**: `cn()`, `sanitizeNumberInputValue()`, `formatPriceDigit()`
30
- - **Hooks**: `useElementWidth()`, `useMainstackDesignSystemTheme()`
31
- - **Provider**: `MainstackDesignSystemProvider` (theme management)
32
- - **Type utilities**: `PolymorphicProps`, `CountryIso2CodeType`
33
-
34
- # Design System Development Guide
35
-
36
- ---
37
-
38
- ## Design Tokens
39
-
40
- ### Token Naming Convention
41
-
42
- All custom CSS variables must follow the `--ms-name-of-variable` pattern using kebab-case.
43
-
44
- ```css
45
- /* ✅ Correct */
46
- --ms-primary-color: #3b82f6;
47
- --ms-text-base: 1rem;
48
-
49
- /* ❌ Incorrect */
50
- --primaryColor: #3b82f6;
51
- --ms_text_base: 1rem;
52
- ```
53
-
54
- ### Token Inference
55
-
56
- Tokens should be inferred directly from design documentation on Figma.
57
-
58
- ---
59
-
60
- # Component Architecture
61
-
62
- ## Composition Component Pattern Guide
63
-
64
- ### Overview
65
-
66
- Our design system uses a composition architecture pattern that provides both **simple** and **advanced** APIs for components. This guide explains when and how to use each pattern.
67
-
68
- ---
69
-
70
- ## Pattern 1: Direct Composition (`Comp.Root`)
71
-
72
- **Use when:** The component requires multiple sub-components in most use cases.
73
-
74
- ### Structure
23
+ We have several examples [on the storybook doc](https://design.mainstack.co/). Here is the first one to get you started:
75
24
 
76
25
  ```tsx
77
- // Most common usage requires composition
78
- Dialog.Root;
79
- Dialog.Trigger;
80
- Dialog.Content;
81
- Dialog.Header;
82
- Dialog.Footer;
83
-
84
- DialogRoot;
85
- DialogTrigger;
86
- DialogContent;
87
- DialogHeader;
88
- DialogFooter;
89
- ```
90
-
91
- ### Example: Dialog Component
92
-
93
- ```tsx
94
- //Dialog almost always needs multiple parts
95
- import { Dialog } from "@/components/dialog";
96
-
97
- <Dialog.Root open={open} onOpenChange={setOpen}>
98
- <Dialog.Trigger asChild>
99
- <button>Open Dialog</button>
100
- </Dialog.Trigger>
101
-
102
- <Dialog.Content>
103
- <Dialog.Header>
104
- <Dialog.Title>Confirm Action</Dialog.Title>
105
- </Dialog.Header>
106
-
107
- <p>Are you sure you want to continue?</p>
108
-
109
- <Dialog.Footer>
110
- <Dialog.Close asChild>
111
- <button>Cancel</button>
112
- </Dialog.Close>
113
- <button>Confirm</button>
114
- </Dialog.Footer>
115
- </Dialog.Content>
116
- </Dialog.Root>;
117
- ```
118
-
119
- ```tsx
120
- // Tree shaking example
121
26
  import {
122
- DialogRoot,
123
- DialogTrigger,
124
- DialogContent,
125
- DialogHeader,
126
- DialogFooter,
127
- } from "@/components/dialog";
128
-
129
- <DialogRoot open={open} onOpenChange={setOpen}>
130
- <DialogTrigger asChild>
131
- <button>Open Dialog</button>
132
- </DialogTrigger>
133
-
134
- <DialogContent>
135
- <DialogHeader>
136
- <Dialog.Title>Confirm Action</Dialog.Title>
137
- </DialogHeader>
138
-
139
- <p>Are you sure you want to continue?</p>
140
-
141
- <DialogFooter>
142
- <DialogClose asChild>
143
- <button>Cancel</button>
144
- </DialogClose>
145
- <button>Confirm</button>
146
- </DialogFooter>
147
- </DialogContent>
148
- </DialogRoot>;
149
- ```
150
-
151
- ### When to Use
152
-
153
- - Component is **interactive** and requires multiple parts to function
154
- - **No simplified version** makes sense
155
- - Examples: Dialog, Dropdown, Accordion, Tabs,
156
-
157
- ---
158
-
159
- ## Pattern 2: Simple + Composition (`Comp` + `CompGroup.Root` or `CompRoot`)
160
-
161
- **Use when:** The component is **presentational** and typically only needs **one sub-component** (like a label), but can be extended with additional parts.
162
-
163
- ### Structure
164
-
165
- ```tsx
166
- // Simple component for common case
167
- Comp;
168
-
169
- // Composiition for tree shaking
170
- CompRoot;
171
- CompLabel;
172
- CompIcon;
173
-
174
- // Composition for advanced cases
175
- CompGroup.Root;
176
- CompGroup.Label;
177
- CompGroup.Icon;
178
- ```
179
-
180
- ### Example: Tag Component
181
-
182
- ```tsx
183
- // SIMPLE (80% of use cases)
184
- import { Tag } from '@/components/tag'
185
-
186
- <Tag>React</Tag>
187
- <Tag variant="success">Active</Tag>
188
- <Tag>TypeScript</Tag>
189
-
190
- // ADVANCED with tree shaking (10% of use cases)
191
- import { TagRoot, TagIcon, TagLabel } from '@/components/tag'
192
-
193
- <TagRoot variant="success">
194
- <TagIcon>
195
- <Check className="h-3 w-3" />
196
- </TagIcon>
197
- <TagLabel>Verified User</TagLabel>
198
- </TagRoot>
199
-
200
-
201
- // ADVANCED import all composables (10% of use cases)
202
- import { TagGroup } from '@/components/tag'
203
-
204
- <TagGroup.Root variant="success">
205
- <TagGroup.Icon>
206
- <Check className="h-3 w-3" />
207
- </TagGroup.Icon>
208
- <TagGroup.Label>Verified User</TagGroup.Label>
209
- </TagGroup.Root>
210
- ```
211
-
212
- ### When to Use
213
-
214
- - Component is **presentational** (non-interactive by default)
215
- - **Most use cases** only need text/label
216
- - Can be extended with icons, badges, or other decorations
217
- - Examples: Tag, Button, Chip,
218
-
219
- ---
220
-
221
- ## Pattern 3: Single Component with Props
222
-
223
- **Use when:** The component has variations but doesn't need composition.
224
-
225
- ### Structure
226
-
227
- ```tsx
228
- // Single component with variants
229
- Avatar;
230
- ```
231
-
232
- ### Example: Button Component
233
-
234
- ```tsx
235
- // ✅ Props handle all variations
236
- import { Avatar } from "@/components/Avatar";
237
-
238
- <Avatar variant="picture">Click me</Avatar>;
239
- ```
240
-
241
- ### When to Use
242
-
243
- - Component variations are handled by **props** (variant, size, state)
244
- - No need for multiple sub-components
245
- - Example: Avatar
246
-
247
- ---
248
-
249
- #### Controlled vs Uncontrolled
250
-
251
- Components should support both controlled and uncontrolled usage for maximum flexibility.
252
- This can ba achieved with `@radix-ui/react-use-controllable-state`
253
-
254
- #### asChild Pattern
255
-
256
- **Default to `asChild` with Radix Slot for interactive components.**
257
-
258
- ```tsx
259
- import { Slot } from "@radix-ui/react-slot";
260
-
261
- interface ButtonProps {
262
- asChild?: boolean;
263
- // other props
264
- }
265
-
266
- const Button = ({ asChild = false, ...props }: ButtonProps) => {
267
- const Comp = asChild ? Slot : "button";
268
- return <Comp {...props} />;
269
- };
270
-
271
- // Usage
272
- <Button asChild>
273
- <a href="/home">Go Home</a>
274
- </Button>;
275
- ```
276
-
277
- **Use `as` prop only for non-interactive primitives** (Typography, Tags, etc.)
278
-
279
- ```tsx
280
- // ✅ Correct - Non-interactive primitive
281
- <Text as="h1">Heading</Text>
282
- <Text as="p">Paragraph</Text>
283
-
284
- // ❌ Incorrect - Interactive component
285
- <Button as="a" href="/home">Link</Button> // Use asChild instead
286
- ```
287
-
288
- ---
289
-
290
- ## Styling Conventions
291
-
292
- ### Class Names
293
-
294
- **Always use kebab-case for class names.**
295
-
296
- ```tsx
297
- // ✅ Correct
298
- className = "button-primary";
299
- className = "dialog-content";
300
- className = "form-field-error";
301
-
302
- // ❌ Incorrect
303
- className = "buttonPrimary";
304
- className = "DialogContent";
305
- className = "form_field_error";
306
- ```
307
-
308
- Pass user classes and props last as overrides to variants and any other component styling.
309
-
310
- ### State Management with data-state
311
-
312
- **Use `data-state` attributes for styling element states.**
313
-
314
- ```tsx
315
- // Component
316
- <button
317
- data-state={isOpen ? "open" : "closed"}
318
- data-disabled={disabled}
319
- data-loading={isLoading}
320
- >
321
- {children}
322
- </button>
323
-
324
- // CSS/Tailwind
325
- <button
326
- className="
327
- data-[state=open]:opacity-50
328
- data-[disabled]:cursor-not-allowed
329
- data-[loading]:bg-primary
330
- "
331
- >
332
- ```
333
-
334
- ### data-slot for Composition Styling
335
-
336
- **Use `data-slot` for styling specific parts in composition patterns.**
337
-
338
- ```tsx
339
- // Component
340
- const Card = {
341
- Root: ({ children }) => (
342
- <div data-slot="root" className="card">
343
- {children}
344
- </div>
345
- ),
346
- Header: ({ children }) => (
347
- <div data-slot="header" className="card-header">
348
- {children}
349
- </div>
350
- ),
351
- Body: ({ children }) => (
352
- <div data-slot="body" className="card-body">
353
- {children}
354
- </div>
355
- ),
356
- }
357
-
358
- // CSS targeting
359
- .card [data-slot="header"] {
360
- /* Header-specific styles when inside card */
361
- }
362
-
363
- .card [data-slot="body"] {
364
- /* Body-specific styles when inside card */
365
- }
366
- ```
367
-
368
- # Client And Server Component Approach
369
-
370
- The design system is built on React 19 and as such component built should support SSR, Server component (if applicable) and Client Component. Please reference react doc [here](https://react.dev/reference/rsc/use-client#when-to-use-use-client) for more info.
371
-
372
- > **Please Note:** That SSR is different from React Server Component. This article [here](https://www.joshwcomeau.com/react/server-components/) explained it better.
373
-
374
- ## Server Component Support
375
-
376
- The rule of thumb here is components with only styling, presentation component with no client-side interactivity, state management, context provider usage or browser APIs usage should be server compatible.
377
-
378
- So server component can't have `useState` or `useEffect` in them, hence why they are presentational component with styling alone.
379
-
380
- E.g Typograhy and Icon components; `DisplayText`, `BodyText` and `HeadlineText`
381
-
382
- > **Please Note:** This component should not be exported with the `use client` directives
383
-
384
- ## Client Component Support And SSR
385
-
386
- The rule of thumb here is components with client-side interactivity, state management, context provider usage or browser APIs usage should be client compatible and as such have the `use client` directives.
387
-
388
- E.g `ImageUploader`, `Tooltip`
389
-
390
- > **Please Note:** This component should be exported with the `use client` directives
391
-
392
- That being said there are cases where Radix UI doesn't serve all your needs and you would need to build the component your self while keeping SSR in mind.
393
-
394
- - Avoid Browser-Specific APIs in Rendering Logic: Browser APIs like window, document, localStorage, or sessionStorage.
395
- - Always use `useEffect` hook for any side effect. Also use the `typeof window !== 'undefined'` to ensure browser-specific code only executes on the client.
396
- - Avoid Time-Dependent Logic: Do not use time-dependent APIs like `Date()` constructors in your rendering logic, as the server and client might render at slightly different times, causing a mismatch.
397
-
398
- While using the composition Component Pattern, only mark component as client with the `use client` directive on a per component level.
399
-
400
- **Example:**
401
-
402
- ```tsx
403
- "use client";
404
- import { useState, useEffect } from "react";
405
-
406
- interface DialogRootProps {
407
- // dialog props
408
- }
409
-
410
- export const DialogRoot = ({ asChild = false, ...props }: DialogRootProps) => {
411
- const [dialogOpen, setDialogOpen] = useState();
412
- const Comp = asChild ? Slot : "div";
413
-
414
- useEffect(() => {
415
- // Make some side effect
416
- }, []);
417
- return <Comp open={dialogOpen} onOpen={setDialogOpen} {...props} />;
418
- };
419
- ```
420
-
421
- ```tsx
422
- interface DialogBodyProps {
423
- // dialog props
424
- }
425
-
426
- export const DialogBody = ({ asChild = false, ...props }: DialogBodyProps) => {
427
- const Comp = asChild ? Slot : "div";
428
- return <Comp open={dialogOpen} onOpen={setDialogOpen} {...props} />;
429
- };
430
- ```
431
-
432
- ```tsx
433
- import { DialogRoot, DialogBody } from "./dialog";
434
-
435
- const App = () => {
436
- return (
437
- <DialogRoot>
438
- <DialogBody>// Your content</DialogBody>
439
- </DialogRoot>
440
- );
441
- };
442
- ```
443
-
444
- In the example above `DialogBody` is a composable component that's meant to be used with `DialogRoot` but we only mark `DialogRoot` as client because it's using a state and an effect.
445
-
446
- If `DialogBody` and `DialogRoot` were imported into a React server component, `DialogBody` will render on the server while `DialogRoot` will render on client. This works as a result of react [module dependency tree](https://react.dev/reference/rsc/use-client#how-use-client-marks-client-code)
447
-
448
- Summary:
449
-
450
- - If the component uses any React State or context provider, mark as client.
451
- - If the component uses any Browser API, mark as client.
452
-
453
- ---
454
-
455
- ## Folder Structure
456
-
457
- ### Component Organization
458
-
459
- **Every component must be in a named folder with barrel exports.**
460
-
461
- ```
462
- src/components/Button/
463
- ├── Button.tsx # Main component
464
- ├── Button.stories.tsx # Storybook stories
465
- ├── Button.test.tsx # Tests
466
- ├── useButton.ts # Component-specific hook (if needed)
467
- ├── buttonVariants.ts # CVA variants (if needed)
468
- └── index.ts # Barrel export
469
-
470
- src/components/Dialog/
471
- ├── DialogRoot.tsx
472
- ├── DialogTrigger.tsx
473
- ├── DialogContent.tsx
474
- ├── DialogHeader.tsx
475
- ├── DialogFooter.tsx
476
- ├── useDialog.ts # Dialog-specific hook
477
- ├── Dialog.stories.tsx
478
- ├── Dialog.test.tsx
479
- └── index.ts # Exports all parts
480
- ```
481
-
482
- ### Barrel Export Pattern
483
-
484
- ```typescript
485
- // index.ts
486
-
487
- // single component
488
- export { Button } from "./Button";
489
-
490
- // Composition components
491
- export { ButtonRoot } from "./ButtonRoot";
492
- export type { ButtonRootProps } from "./ButtonRoot";
493
-
494
- export { ButtonIcon } from "./ButtonIcon";
495
- export type { ButtonIconProps } from "./ButtonIcon";
496
-
497
- export { ButtonLabel } from "./ButtonLabel";
498
- export type { ButtonLabelProps } from "./ButtonLabel";
499
-
500
- export { buttonVariants } from "./buttonVariants";
501
-
502
- // Composition object for dot notation usage
503
- import { ButtonRoot } from "./ButtonRoot";
504
- import { ButtonIcon } from "./ButtonIcon";
505
- import { ButtonLabel } from "./ButtonLabel";
506
-
507
- export const ButtonGroup = {
508
- Root: ButtonRoot,
509
- Icon: ButtonIcon,
510
- Label: ButtonLabel,
511
- };
512
-
513
- // Composition without simple exported component
514
- import { AccordionRoot } from "./AccordionRoot";
515
- import { AccordionHeader } from "./AccordionHeader";
516
- import { AccordionTrigger } from "./AccordionTrigger";
517
-
518
- export const Accordion = {
519
- Root: AccordionRoot,
520
- Header: AccordionHeader,
521
- Trigger: AccordionTrigger,
522
- };
523
- ```
524
-
525
- ### Tree Shaking Rules
526
-
527
- **Keep component-specific code colocated:**
528
-
529
- - ✅ Component-specific helpers → Stay in component folder
530
- - ✅ Component-specific hooks → Stay in component folder
531
- - ✅ Component-specific types → Stay in component folder
532
-
533
- **Move to shared when:**
534
-
535
- - ❌ Used in more than one component → Move to `src/utils/` or `src/hooks/`
536
-
537
- ---
538
-
539
- ## Documentation Standards
540
-
541
- ### Storybook Stories
542
-
543
- **Every component must have:**
544
-
545
- 1. **1-2 major variants stories** (immediately visible)
546
- 2. **One example with changeable controls** for other variants
547
-
548
- ```typescript
549
- import type { Meta, StoryObj } from "@storybook/react";
550
- import { Button } from "./button";
551
-
552
- const meta: Meta<typeof Button> = {
553
- title: "Components/UI/Button",
554
- component: Button,
555
- parameters: {
556
- layout: "centered",
557
- },
558
- tags: ["autodocs"],
559
- };
560
-
561
- export default meta;
562
- type Story = StoryObj<typeof Button>;
563
-
564
- export const Primary: Story = {
565
- args: {
566
- children: "Primary Button",
567
- variant: "primary",
568
- },
569
- };
570
-
571
- export const Secondary: Story = {
572
- args: {
573
- children: "Secondary Button",
574
- variant: "secondary",
575
- },
576
- };
577
-
578
- export const Secondary: Story = {
579
- args: {
580
- children: "Primary Button",
581
- variant: "primary",
582
- size: "lg",
583
- },
584
- };
585
-
586
- export const Secondary: Story = {
587
- args: {
588
- children: "Primary Button",
589
- variant: "primary",
590
- size: "md",
591
- },
592
- };
593
-
594
- // All Other Variants - One example with controls
595
- export const Playground: Story = {
596
- args: {
597
- children: "Playground Button",
598
- },
599
- argTypes: {
600
- variant: {
601
- control: "select",
602
- options: ["primary", "secondary", "outline", "ghost", "destructive"],
603
- },
604
- size: {
605
- control: "select",
606
- options: ["sm", "md", "lg"],
607
- },
608
- disabled: {
609
- control: "boolean",
610
- },
611
- },
612
- };
613
- ```
614
-
615
- ---
616
-
617
- ## Accessibility
618
-
619
- ### Semantic HTML First
620
-
621
- **Always use semantic HTML elements as the foundation.**
622
-
623
- ```tsx
624
- // ✅ Correct - Semantic HTML
625
- <button type="button">Click me</button>
626
- <nav>Navigation</nav>
627
- <main>Main content</main>
628
- <article>Article content</article>
629
-
630
- // ❌ Incorrect - Non-semantic
631
- <div onClick={handleClick}>Click me</div>
632
- <div>Navigation</div>
633
- <div>Main content</div>
634
- ```
635
-
636
- ### ARIA for Exceptions
637
-
638
- **Use ARIA attributes only when semantic HTML is insufficient.**
639
-
640
- ```tsx
641
- // ✅ Correct - ARIA only when needed
642
- <div
643
- role="button"
644
- tabIndex={0}
645
- aria-label="Close dialog"
646
- onKeyDown={handleKeyDown}
647
- >
648
- <CloseIcon />
649
- </div>
650
-
651
- // ✅ Correct - Complex widget states
652
- <button
653
- aria-expanded={isOpen}
654
- aria-controls="menu-content"
655
- aria-haspopup="true"
656
- >
657
- Menu
658
- </button>
659
-
660
- // ❌ Incorrect - Unnecessary ARIA
661
- <button aria-label="Submit">Submit</button> // Text already visible
662
- ```
663
-
664
- ### Accessibility Checklist
665
-
666
- - ✅ Keyboard navigation support
667
- - ✅ Focus management
668
- - ✅ Screen reader announcements
669
- - ✅ Color contrast (WCAG AA minimum)
670
- - ✅ Touch target sizes (minimum 44x44px)
671
- - ✅ Reduced motion support
672
-
673
- ---
674
-
675
- ## API Design
676
-
677
- ### Prop Naming
678
-
679
- **Ensure prop names don't clash with HTML attributes except where explicitly needed to override.**
680
-
681
- ```tsx
682
- // ✅ Correct - No clash
683
- interface ButtonProps {
684
- variant?: "primary" | "secondary";
685
- isLoading?: boolean; // Not "loading" (clashes with HTML)
686
- }
687
-
688
- // ✅ Correct - Intentional override
689
- interface InputProps {
690
- type?: "text" | "email" | "password"; // Override HTML type
691
- disabled?: boolean; // Override HTML disabled
692
- }
693
-
694
- // ❌ Incorrect - Unintentional clash
695
- interface CustomInputProps {
696
- value?: string; // Clashes with HTML value
697
- name?: string; // Clashes with HTML name
698
- // Should use different names or explicitly document override
699
- }
27
+ SelectRoot,
28
+ SelectPortal,
29
+ SelectOptions,
30
+ SelectOptionItem,
31
+ } from "mainstack-design-system";
32
+
33
+ export default () => (
34
+ <FormItem>
35
+ <FormLabel>Label</FormLabel>
36
+ <Select {...args}>
37
+ <SelectOptions>
38
+ {({ options }) =>
39
+ options.map((option) => (
40
+ <SelectOptionItem key={option.value} value={option.value}>
41
+ {option.label}
42
+ </SelectOptionItem>
43
+ ))
44
+ }
45
+ </SelectOptions>
46
+ </Select>
47
+ <FormSuccessStatus>Success message</FormSuccessStatus>
48
+ </FormItem>
49
+ );
700
50
  ```
701
51
 
702
- ---
703
-
704
52
  ## Contributing
705
53
 
706
- When contributing new components:
707
-
708
- 1. Follow this guide
709
- 2. Include comprehensive Storybook documentation
710
- 3. Ensure TypeScript types are exported
711
- 4. Test controlled and uncontrolled modes
712
- 5. Verify keyboard navigation
713
- 6. Check responsive behavior
714
- 7. Submit with visual regression tests
715
-
716
- <!-- v0 Documentation-->
717
-
718
- # Usage
719
-
720
- Install the design system
721
-
722
- `yarn add mainstack-design-system`
723
-
724
- Add the Design system provider to your root file
725
-
726
- ```typescript
727
- import { MainstackProvider } from "mainstack-design-system";
728
-
729
- <MainstackProvider>
730
- <App />
731
- </MainstackProvider>;
732
- ```
733
-
734
- ## Components
54
+ Read our [Contributing Guide](https://github.com/The-Mainstack/mainstack-design-system/blob/v1/CONTRIBUTING.md).
735
55
 
736
- Components can be used by importing from the `'mainstack-design-system` directory. For example:
737
-
738
- `import { Button } from 'mainstack-design-system';`
739
-
740
- ## Icons
741
-
742
- Icons are imported from the `'mainstack-design-system` directory. For example:
743
-
744
- `import { ArrowRightIcon } from 'mainstack-design-system';`
745
-
746
- ## Colors
747
-
748
- Colors are imported from the `mainstack-design-system` directory. For example:
749
-
750
- ```typescript
751
- import { Colors } from "mainstack-design-system";
752
-
753
- <Text color={Colors.black300}>Hello World</Text>;
754
- ```
755
-
756
- ## Contributing
757
-
758
- Installing the application (as a developer) is simple in the following steps:
759
-
760
- - Access and Clone this repository
761
-
762
- ```shell
763
- git clone git clone https://github.com/The-Mainstack/mainstack-design-system.git && cd [repo-name]
764
- ```
765
-
766
- - Make your forked repo the remote upstream (at origin)
767
-
768
- ```shell
769
- git remote add origin https://github.com/The-Mainstack/mainstack-design-system.git
770
- ```
771
-
772
- - Navigate into the cloned directory and install dependencies with Yarn
773
-
774
- ```typescript
775
- yarn add
776
- ```
777
-
778
- - Make a duplicate of the **env** file and update its content accordingly. Most times, this is just fine with no update.
779
-
780
- ```shell
781
- cp .env.sample .env
782
- ```
783
-
784
- - Run the app in the development mode. Open [http://localhost:\[port\]](http://localhost:%5Bport%5D) to view it in the browser and start developing.
785
-
786
- ```typescript
787
- yarn dev
788
- ```
789
-
790
- To run storybook, run the following command:
791
-
792
- ```typescript
793
- yarn storybook
794
- ```
795
-
796
- To Publish to NPM, run the following command:
797
-
798
- ```typescript
799
- npm publish --access public
800
- ```
56
+ This project’s **Contributing Guide** also acts as our **Design System Development Guide**.
57
+ It outlines the standards, workflows, naming conventions, and component principles that keep the Design System consistent, scalable, and easy for everyone to build on. Before you begin, please take a moment to read through it so your work aligns with our shared practices.
801
58
 
802
59
  <!-- @joggr:editLink(b428f959-2d9d-45aa-8134-1d4f284d1469):start -->
803
60