@techsio/ui-kit 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/README.md +59 -6
  2. package/dist/.storybook/decorator.d.ts +12 -0
  3. package/dist/.storybook/decorator.d.ts.map +1 -0
  4. package/dist/.storybook/main.d.ts +4 -0
  5. package/dist/.storybook/main.d.ts.map +1 -0
  6. package/dist/.storybook/preview.d.ts +5 -0
  7. package/dist/.storybook/preview.d.ts.map +1 -0
  8. package/dist/.storybook/test-runner.d.ts +12 -0
  9. package/dist/.storybook/test-runner.d.ts.map +1 -0
  10. package/dist/atoms/badge.js +37 -19
  11. package/dist/atoms/button.js +167 -154
  12. package/dist/atoms/checkbox.js +52 -0
  13. package/dist/atoms/figma/badge.figma.js +33 -0
  14. package/dist/atoms/figma/button.figma.js +76 -0
  15. package/dist/atoms/figma/checkbox.figma.js +35 -0
  16. package/dist/atoms/figma/icon.figma.js +33 -0
  17. package/dist/atoms/figma/image.figma.js +21 -0
  18. package/dist/atoms/figma/input.figma.js +34 -0
  19. package/dist/atoms/figma/label.figma.js +25 -0
  20. package/dist/atoms/figma/link-button.figma.js +42 -0
  21. package/dist/atoms/figma/link.figma.js +15 -0
  22. package/dist/atoms/figma/numeric-input.figma.js +52 -0
  23. package/dist/atoms/figma/rating.figma.js +38 -0
  24. package/dist/atoms/figma/skeleton.figma.js +119 -0
  25. package/dist/atoms/figma/status-text.figma.js +27 -0
  26. package/dist/atoms/figma/textarea.figma.js +38 -0
  27. package/dist/atoms/figma/tooltip.figma.js +47 -0
  28. package/dist/atoms/icon.js +17 -17
  29. package/dist/atoms/image.js +22 -4
  30. package/dist/atoms/input.js +40 -34
  31. package/dist/atoms/label.js +10 -10
  32. package/dist/atoms/link-button.js +19 -18
  33. package/dist/atoms/link.js +6 -4
  34. package/dist/atoms/numeric-input.js +98 -70
  35. package/dist/atoms/rating.js +30 -30
  36. package/dist/atoms/skeleton.js +47 -47
  37. package/dist/atoms/status-text.js +75 -0
  38. package/dist/atoms/textarea.js +48 -42
  39. package/dist/atoms/tooltip.js +17 -17
  40. package/dist/molecules/accordion.js +58 -60
  41. package/dist/molecules/breadcrumb.js +206 -124
  42. package/dist/molecules/carousel.js +139 -87
  43. package/dist/molecules/color-select.js +56 -56
  44. package/dist/molecules/combobox.js +131 -104
  45. package/dist/molecules/dialog.js +97 -97
  46. package/dist/molecules/figma/accordion.figma.js +41 -0
  47. package/dist/molecules/figma/breadcrumb.figma.js +31 -0
  48. package/dist/molecules/figma/carousel.figma.js +34 -0
  49. package/dist/molecules/figma/combobox.figma.js +38 -0
  50. package/dist/molecules/figma/dialog.figma.js +24 -0
  51. package/dist/molecules/figma/form-checkbox.figma.js +41 -0
  52. package/dist/molecules/figma/form-input.figma.js +38 -0
  53. package/dist/molecules/figma/form-numeric-input.figma.js +67 -0
  54. package/dist/molecules/figma/form-textarea.figma.js +38 -0
  55. package/dist/molecules/figma/menu.figma.js +26 -0
  56. package/dist/molecules/figma/pagination.figma.js +22 -0
  57. package/dist/molecules/figma/popover.figma.js +38 -0
  58. package/dist/molecules/figma/product-card.figma.js +34 -0
  59. package/dist/molecules/figma/radio-card.figma.js +35 -0
  60. package/dist/molecules/figma/radio-group.figma.js +45 -0
  61. package/dist/molecules/figma/search-form.figma.js +24 -0
  62. package/dist/molecules/figma/select.figma.js +46 -0
  63. package/dist/molecules/figma/slider.figma.js +30 -0
  64. package/dist/molecules/figma/steps.figma.js +33 -0
  65. package/dist/molecules/figma/switch.figma.js +33 -0
  66. package/dist/molecules/figma/tabs.figma.js +46 -0
  67. package/dist/molecules/figma/toast.figma.js +34 -0
  68. package/dist/molecules/figma/tree-view.figma.js +30 -0
  69. package/dist/molecules/form-checkbox.js +121 -48
  70. package/dist/molecules/form-input.js +15 -27
  71. package/dist/molecules/form-numeric-input.js +11 -24
  72. package/dist/molecules/form-textarea.js +15 -27
  73. package/dist/molecules/menu.js +69 -67
  74. package/dist/molecules/pagination.js +112 -76
  75. package/dist/molecules/phone-input.js +654 -0
  76. package/dist/molecules/popover.js +221 -96
  77. package/dist/molecules/product-card.js +38 -37
  78. package/dist/molecules/radio-card.js +517 -0
  79. package/dist/molecules/radio-group.js +341 -0
  80. package/dist/molecules/search-form.js +170 -91
  81. package/dist/molecules/select.js +369 -141
  82. package/dist/molecules/slider.js +72 -85
  83. package/dist/molecules/steps.js +517 -152
  84. package/dist/molecules/switch.js +37 -43
  85. package/dist/molecules/tabs.js +63 -61
  86. package/dist/molecules/toast.js +32 -32
  87. package/dist/molecules/tree-view.js +89 -83
  88. package/dist/organisms/footer.js +50 -52
  89. package/dist/organisms/gallery.js +244 -0
  90. package/dist/organisms/header.js +60 -58
  91. package/dist/organisms/table.js +52 -52
  92. package/dist/src/atoms/badge.d.ts +27 -7
  93. package/dist/src/atoms/badge.d.ts.map +1 -1
  94. package/dist/src/atoms/button.d.ts +7 -6
  95. package/dist/src/atoms/button.d.ts.map +1 -1
  96. package/dist/src/atoms/checkbox.d.ts +11 -0
  97. package/dist/src/atoms/checkbox.d.ts.map +1 -0
  98. package/dist/src/atoms/figma/badge.figma.d.ts +2 -0
  99. package/dist/src/atoms/figma/badge.figma.d.ts.map +1 -0
  100. package/dist/src/atoms/figma/button.figma.d.ts +2 -0
  101. package/dist/src/atoms/figma/button.figma.d.ts.map +1 -0
  102. package/dist/src/atoms/figma/checkbox.figma.d.ts +2 -0
  103. package/dist/src/atoms/figma/checkbox.figma.d.ts.map +1 -0
  104. package/dist/src/atoms/figma/icon.figma.d.ts +2 -0
  105. package/dist/src/atoms/figma/icon.figma.d.ts.map +1 -0
  106. package/dist/src/atoms/figma/image.figma.d.ts +2 -0
  107. package/dist/src/atoms/figma/image.figma.d.ts.map +1 -0
  108. package/dist/src/atoms/figma/input.figma.d.ts +2 -0
  109. package/dist/src/atoms/figma/input.figma.d.ts.map +1 -0
  110. package/dist/src/atoms/figma/label.figma.d.ts +2 -0
  111. package/dist/src/atoms/figma/label.figma.d.ts.map +1 -0
  112. package/dist/src/atoms/figma/link-button.figma.d.ts +2 -0
  113. package/dist/src/atoms/figma/link-button.figma.d.ts.map +1 -0
  114. package/dist/src/atoms/figma/link.figma.d.ts +2 -0
  115. package/dist/src/atoms/figma/link.figma.d.ts.map +1 -0
  116. package/dist/src/atoms/figma/numeric-input.figma.d.ts +2 -0
  117. package/dist/src/atoms/figma/numeric-input.figma.d.ts.map +1 -0
  118. package/dist/src/atoms/figma/rating.figma.d.ts +2 -0
  119. package/dist/src/atoms/figma/rating.figma.d.ts.map +1 -0
  120. package/dist/src/atoms/figma/skeleton.figma.d.ts +2 -0
  121. package/dist/src/atoms/figma/skeleton.figma.d.ts.map +1 -0
  122. package/dist/src/atoms/figma/status-text.figma.d.ts +2 -0
  123. package/dist/src/atoms/figma/status-text.figma.d.ts.map +1 -0
  124. package/dist/src/atoms/figma/textarea.figma.d.ts +2 -0
  125. package/dist/src/atoms/figma/textarea.figma.d.ts.map +1 -0
  126. package/dist/src/atoms/figma/tooltip.figma.d.ts +2 -0
  127. package/dist/src/atoms/figma/tooltip.figma.d.ts.map +1 -0
  128. package/dist/src/atoms/icon.d.ts +6 -6
  129. package/dist/src/atoms/image.d.ts +35 -9
  130. package/dist/src/atoms/image.d.ts.map +1 -1
  131. package/dist/src/atoms/input.d.ts +3 -3
  132. package/dist/src/atoms/input.d.ts.map +1 -1
  133. package/dist/src/atoms/label.d.ts +2 -2
  134. package/dist/src/atoms/link-button.d.ts +71 -12
  135. package/dist/src/atoms/link-button.d.ts.map +1 -1
  136. package/dist/src/atoms/link.d.ts +5 -5
  137. package/dist/src/atoms/link.d.ts.map +1 -1
  138. package/dist/src/atoms/numeric-input.d.ts +23 -22
  139. package/dist/src/atoms/numeric-input.d.ts.map +1 -1
  140. package/dist/src/atoms/rating.d.ts +6 -5
  141. package/dist/src/atoms/rating.d.ts.map +1 -1
  142. package/dist/src/atoms/skeleton.d.ts +15 -15
  143. package/dist/src/atoms/skeleton.d.ts.map +1 -1
  144. package/dist/src/atoms/status-text.d.ts +97 -0
  145. package/dist/src/atoms/status-text.d.ts.map +1 -0
  146. package/dist/src/atoms/textarea.d.ts +3 -3
  147. package/dist/src/atoms/textarea.d.ts.map +1 -1
  148. package/dist/src/atoms/tooltip.d.ts +3 -3
  149. package/dist/src/atoms/tooltip.d.ts.map +1 -1
  150. package/dist/src/molecules/accordion.d.ts +14 -13
  151. package/dist/src/molecules/accordion.d.ts.map +1 -1
  152. package/dist/src/molecules/breadcrumb.d.ts +132 -35
  153. package/dist/src/molecules/breadcrumb.d.ts.map +1 -1
  154. package/dist/src/molecules/carousel.d.ts +67 -16
  155. package/dist/src/molecules/carousel.d.ts.map +1 -1
  156. package/dist/src/molecules/color-select.d.ts +4 -4
  157. package/dist/src/molecules/combobox.d.ts +36 -9
  158. package/dist/src/molecules/combobox.d.ts.map +1 -1
  159. package/dist/src/molecules/dialog.d.ts +3 -3
  160. package/dist/src/molecules/dialog.d.ts.map +1 -1
  161. package/dist/src/molecules/figma/accordion.figma.d.ts +2 -0
  162. package/dist/src/molecules/figma/accordion.figma.d.ts.map +1 -0
  163. package/dist/src/molecules/figma/breadcrumb.figma.d.ts +2 -0
  164. package/dist/src/molecules/figma/breadcrumb.figma.d.ts.map +1 -0
  165. package/dist/src/molecules/figma/carousel.figma.d.ts +2 -0
  166. package/dist/src/molecules/figma/carousel.figma.d.ts.map +1 -0
  167. package/dist/src/molecules/figma/combobox.figma.d.ts +2 -0
  168. package/dist/src/molecules/figma/combobox.figma.d.ts.map +1 -0
  169. package/dist/src/molecules/figma/dialog.figma.d.ts +2 -0
  170. package/dist/src/molecules/figma/dialog.figma.d.ts.map +1 -0
  171. package/dist/src/molecules/figma/form-checkbox.figma.d.ts +2 -0
  172. package/dist/src/molecules/figma/form-checkbox.figma.d.ts.map +1 -0
  173. package/dist/src/molecules/figma/form-input.figma.d.ts +2 -0
  174. package/dist/src/molecules/figma/form-input.figma.d.ts.map +1 -0
  175. package/dist/src/molecules/figma/form-numeric-input.figma.d.ts +2 -0
  176. package/dist/src/molecules/figma/form-numeric-input.figma.d.ts.map +1 -0
  177. package/dist/src/molecules/figma/form-textarea.figma.d.ts +2 -0
  178. package/dist/src/molecules/figma/form-textarea.figma.d.ts.map +1 -0
  179. package/dist/src/molecules/figma/menu.figma.d.ts +2 -0
  180. package/dist/src/molecules/figma/menu.figma.d.ts.map +1 -0
  181. package/dist/src/molecules/figma/pagination.figma.d.ts +2 -0
  182. package/dist/src/molecules/figma/pagination.figma.d.ts.map +1 -0
  183. package/dist/src/molecules/figma/popover.figma.d.ts +2 -0
  184. package/dist/src/molecules/figma/popover.figma.d.ts.map +1 -0
  185. package/dist/src/molecules/figma/product-card.figma.d.ts +2 -0
  186. package/dist/src/molecules/figma/product-card.figma.d.ts.map +1 -0
  187. package/dist/src/molecules/figma/radio-card.figma.d.ts +2 -0
  188. package/dist/src/molecules/figma/radio-card.figma.d.ts.map +1 -0
  189. package/dist/src/molecules/figma/radio-group.figma.d.ts +2 -0
  190. package/dist/src/molecules/figma/radio-group.figma.d.ts.map +1 -0
  191. package/dist/src/molecules/figma/search-form.figma.d.ts +2 -0
  192. package/dist/src/molecules/figma/search-form.figma.d.ts.map +1 -0
  193. package/dist/src/molecules/figma/select.figma.d.ts +2 -0
  194. package/dist/src/molecules/figma/select.figma.d.ts.map +1 -0
  195. package/dist/src/molecules/figma/slider.figma.d.ts +2 -0
  196. package/dist/src/molecules/figma/slider.figma.d.ts.map +1 -0
  197. package/dist/src/molecules/figma/steps.figma.d.ts +2 -0
  198. package/dist/src/molecules/figma/steps.figma.d.ts.map +1 -0
  199. package/dist/src/molecules/figma/switch.figma.d.ts +2 -0
  200. package/dist/src/molecules/figma/switch.figma.d.ts.map +1 -0
  201. package/dist/src/molecules/figma/tabs.figma.d.ts +2 -0
  202. package/dist/src/molecules/figma/tabs.figma.d.ts.map +1 -0
  203. package/dist/src/molecules/figma/toast.figma.d.ts +2 -0
  204. package/dist/src/molecules/figma/toast.figma.d.ts.map +1 -0
  205. package/dist/src/molecules/figma/tree-view.figma.d.ts +2 -0
  206. package/dist/src/molecules/figma/tree-view.figma.d.ts.map +1 -0
  207. package/dist/src/molecules/form-checkbox.d.ts +22 -12
  208. package/dist/src/molecules/form-checkbox.d.ts.map +1 -1
  209. package/dist/src/molecules/form-input.d.ts +8 -6
  210. package/dist/src/molecules/form-input.d.ts.map +1 -1
  211. package/dist/src/molecules/form-numeric-input.d.ts +6 -6
  212. package/dist/src/molecules/form-numeric-input.d.ts.map +1 -1
  213. package/dist/src/molecules/form-textarea.d.ts +8 -6
  214. package/dist/src/molecules/form-textarea.d.ts.map +1 -1
  215. package/dist/src/molecules/menu.d.ts +11 -11
  216. package/dist/src/molecules/menu.d.ts.map +1 -1
  217. package/dist/src/molecules/pagination.d.ts +37 -9
  218. package/dist/src/molecules/pagination.d.ts.map +1 -1
  219. package/dist/src/molecules/phone-input.d.ts +246 -0
  220. package/dist/src/molecules/phone-input.d.ts.map +1 -0
  221. package/dist/src/molecules/popover.d.ts +76 -24
  222. package/dist/src/molecules/popover.d.ts.map +1 -1
  223. package/dist/src/molecules/product-card.d.ts +11 -10
  224. package/dist/src/molecules/product-card.d.ts.map +1 -1
  225. package/dist/src/molecules/radio-card.d.ts +429 -0
  226. package/dist/src/molecules/radio-card.d.ts.map +1 -0
  227. package/dist/src/molecules/radio-group.d.ts +245 -0
  228. package/dist/src/molecules/radio-group.d.ts.map +1 -0
  229. package/dist/src/molecules/search-form.d.ts +94 -27
  230. package/dist/src/molecules/search-form.d.ts.map +1 -1
  231. package/dist/src/molecules/select.d.ts +124 -30
  232. package/dist/src/molecules/select.d.ts.map +1 -1
  233. package/dist/src/molecules/slider.d.ts +9 -12
  234. package/dist/src/molecules/slider.d.ts.map +1 -1
  235. package/dist/src/molecules/steps.d.ts +236 -64
  236. package/dist/src/molecules/steps.d.ts.map +1 -1
  237. package/dist/src/molecules/switch.d.ts +7 -7
  238. package/dist/src/molecules/switch.d.ts.map +1 -1
  239. package/dist/src/molecules/tabs.d.ts +10 -10
  240. package/dist/src/molecules/tabs.d.ts.map +1 -1
  241. package/dist/src/molecules/toast.d.ts +6 -6
  242. package/dist/src/molecules/tree-view.d.ts +14 -14
  243. package/dist/src/molecules/tree-view.d.ts.map +1 -1
  244. package/dist/src/organisms/footer.d.ts +15 -6
  245. package/dist/src/organisms/footer.d.ts.map +1 -1
  246. package/dist/src/organisms/gallery.d.ts +147 -0
  247. package/dist/src/organisms/gallery.d.ts.map +1 -0
  248. package/dist/src/organisms/header.d.ts +9 -9
  249. package/dist/src/organisms/header.d.ts.map +1 -1
  250. package/dist/src/organisms/table.d.ts +10 -10
  251. package/dist/src/organisms/table.d.ts.map +1 -1
  252. package/dist/src/templates/accordion.d.ts +3 -3
  253. package/dist/src/templates/breadcrumb.d.ts +28 -0
  254. package/dist/src/templates/breadcrumb.d.ts.map +1 -0
  255. package/dist/src/templates/carousel.d.ts +4 -4
  256. package/dist/src/templates/carousel.d.ts.map +1 -1
  257. package/dist/src/templates/gallery.d.ts +43 -0
  258. package/dist/src/templates/gallery.d.ts.map +1 -0
  259. package/dist/src/templates/numeric-input.d.ts +5 -5
  260. package/dist/src/templates/popover.d.ts +19 -0
  261. package/dist/src/templates/popover.d.ts.map +1 -0
  262. package/dist/src/templates/product-card.d.ts +4 -4
  263. package/dist/src/templates/select.d.ts +22 -0
  264. package/dist/src/templates/select.d.ts.map +1 -0
  265. package/dist/src/templates/tabs.d.ts +4 -4
  266. package/dist/src/types/zag.d.ts +19 -18
  267. package/dist/src/types/zag.d.ts.map +1 -1
  268. package/dist/src/utils.d.ts +1 -1
  269. package/dist/src/utils.d.ts.map +1 -1
  270. package/dist/stories/atoms/badge.stories.d.ts +12 -0
  271. package/dist/stories/atoms/badge.stories.d.ts.map +1 -0
  272. package/dist/stories/atoms/button.stories.d.ts +12 -0
  273. package/dist/stories/atoms/button.stories.d.ts.map +1 -0
  274. package/dist/stories/atoms/checkbox.stories.d.ts +56 -0
  275. package/dist/stories/atoms/checkbox.stories.d.ts.map +1 -0
  276. package/dist/stories/atoms/icon.stories.d.ts +11 -0
  277. package/dist/stories/atoms/icon.stories.d.ts.map +1 -0
  278. package/dist/stories/atoms/image.stories.d.ts +8 -0
  279. package/dist/stories/atoms/image.stories.d.ts.map +1 -0
  280. package/dist/stories/atoms/input.stories.d.ts +8 -0
  281. package/dist/stories/atoms/input.stories.d.ts.map +1 -0
  282. package/dist/stories/atoms/numeric-input.stories.d.ts +23 -0
  283. package/dist/stories/atoms/numeric-input.stories.d.ts.map +1 -0
  284. package/dist/stories/atoms/rating.stories.d.ts +10 -0
  285. package/dist/stories/atoms/rating.stories.d.ts.map +1 -0
  286. package/dist/stories/atoms/skeleton.stories.d.ts +34 -0
  287. package/dist/stories/atoms/skeleton.stories.d.ts.map +1 -0
  288. package/dist/stories/atoms/status-text.stories.d.ts +15 -0
  289. package/dist/stories/atoms/status-text.stories.d.ts.map +1 -0
  290. package/dist/stories/atoms/textarea.stories.d.ts +12 -0
  291. package/dist/stories/atoms/textarea.stories.d.ts.map +1 -0
  292. package/dist/stories/atoms/tooltip.stories.d.ts +28 -0
  293. package/dist/stories/atoms/tooltip.stories.d.ts.map +1 -0
  294. package/dist/stories/helpers/icon-options.d.ts +4 -0
  295. package/dist/stories/helpers/icon-options.d.ts.map +1 -0
  296. package/dist/stories/molecules/accordion.stories.d.ts +14 -0
  297. package/dist/stories/molecules/accordion.stories.d.ts.map +1 -0
  298. package/dist/stories/molecules/breadcrumb.stories.d.ts +14 -0
  299. package/dist/stories/molecules/breadcrumb.stories.d.ts.map +1 -0
  300. package/dist/stories/molecules/carousel.stories.d.ts +19 -0
  301. package/dist/stories/molecules/carousel.stories.d.ts.map +1 -0
  302. package/dist/stories/molecules/color-select.stories.d.ts +12 -0
  303. package/dist/stories/molecules/color-select.stories.d.ts.map +1 -0
  304. package/dist/stories/molecules/combobox.stories.d.ts +11 -0
  305. package/dist/stories/molecules/combobox.stories.d.ts.map +1 -0
  306. package/dist/stories/molecules/dialog.stories.d.ts +19 -0
  307. package/dist/stories/molecules/dialog.stories.d.ts.map +1 -0
  308. package/dist/stories/molecules/form-checkbox.stories.d.ts +17 -0
  309. package/dist/stories/molecules/form-checkbox.stories.d.ts.map +1 -0
  310. package/dist/stories/molecules/form-input.stories.d.ts +12 -0
  311. package/dist/stories/molecules/form-input.stories.d.ts.map +1 -0
  312. package/dist/stories/molecules/form-numeric-input.stories.d.ts +17 -0
  313. package/dist/stories/molecules/form-numeric-input.stories.d.ts.map +1 -0
  314. package/dist/stories/molecules/form-textarea.stories.d.ts +12 -0
  315. package/dist/stories/molecules/form-textarea.stories.d.ts.map +1 -0
  316. package/dist/stories/molecules/menu.stories.d.ts +22 -0
  317. package/dist/stories/molecules/menu.stories.d.ts.map +1 -0
  318. package/dist/stories/molecules/pagination.stories.d.ts +13 -0
  319. package/dist/stories/molecules/pagination.stories.d.ts.map +1 -0
  320. package/dist/stories/molecules/phone-input.stories.d.ts +19 -0
  321. package/dist/stories/molecules/phone-input.stories.d.ts.map +1 -0
  322. package/dist/stories/molecules/popover.stories.d.ts +140 -0
  323. package/dist/stories/molecules/popover.stories.d.ts.map +1 -0
  324. package/dist/stories/molecules/product-card.stories.d.ts +41 -0
  325. package/dist/stories/molecules/product-card.stories.d.ts.map +1 -0
  326. package/dist/stories/molecules/radio-card.stories.d.ts +13 -0
  327. package/dist/stories/molecules/radio-card.stories.d.ts.map +1 -0
  328. package/dist/stories/molecules/radio-group.stories.d.ts +13 -0
  329. package/dist/stories/molecules/radio-group.stories.d.ts.map +1 -0
  330. package/dist/stories/molecules/search-form.stories.d.ts +16 -0
  331. package/dist/stories/molecules/search-form.stories.d.ts.map +1 -0
  332. package/dist/stories/molecules/select.stories.d.ts +19 -0
  333. package/dist/stories/molecules/select.stories.d.ts.map +1 -0
  334. package/dist/stories/molecules/slider.stories.d.ts +19 -0
  335. package/dist/stories/molecules/slider.stories.d.ts.map +1 -0
  336. package/dist/stories/molecules/steps.stories.d.ts +19 -0
  337. package/dist/stories/molecules/steps.stories.d.ts.map +1 -0
  338. package/dist/stories/molecules/switch.stories.d.ts +13 -0
  339. package/dist/stories/molecules/switch.stories.d.ts.map +1 -0
  340. package/dist/stories/molecules/tabs.stories.d.ts +18 -0
  341. package/dist/stories/molecules/tabs.stories.d.ts.map +1 -0
  342. package/dist/stories/molecules/toast.stories.d.ts +11 -0
  343. package/dist/stories/molecules/toast.stories.d.ts.map +1 -0
  344. package/dist/stories/molecules/tree-view.stories.d.ts +17 -0
  345. package/dist/stories/molecules/tree-view.stories.d.ts.map +1 -0
  346. package/dist/stories/organisms/footer.stories.d.ts +12 -0
  347. package/dist/stories/organisms/footer.stories.d.ts.map +1 -0
  348. package/dist/stories/organisms/gallery.stories.d.ts +73 -0
  349. package/dist/stories/organisms/gallery.stories.d.ts.map +1 -0
  350. package/dist/stories/organisms/header.stories.d.ts +12 -0
  351. package/dist/stories/organisms/header.stories.d.ts.map +1 -0
  352. package/dist/stories/organisms/table.stories.d.ts +56 -0
  353. package/dist/stories/organisms/table.stories.d.ts.map +1 -0
  354. package/dist/stories/overview/apca-contrast-test.stories.d.ts +8 -0
  355. package/dist/stories/overview/apca-contrast-test.stories.d.ts.map +1 -0
  356. package/dist/stories/overview/color-palette.stories.d.ts +8 -0
  357. package/dist/stories/overview/color-palette.stories.d.ts.map +1 -0
  358. package/dist/stories/overview/component-comparison.stories.d.ts +6 -0
  359. package/dist/stories/overview/component-comparison.stories.d.ts.map +1 -0
  360. package/dist/stories/templates/accordion.stories.d.ts +8 -0
  361. package/dist/stories/templates/accordion.stories.d.ts.map +1 -0
  362. package/dist/stories/templates/breadcrumb.stories.d.ts +12 -0
  363. package/dist/stories/templates/breadcrumb.stories.d.ts.map +1 -0
  364. package/dist/stories/templates/carousel.stories.d.ts +8 -0
  365. package/dist/stories/templates/carousel.stories.d.ts.map +1 -0
  366. package/dist/stories/templates/comprehensive-form.stories.d.ts +26 -0
  367. package/dist/stories/templates/comprehensive-form.stories.d.ts.map +1 -0
  368. package/dist/stories/templates/gallery.stories.d.ts +7 -0
  369. package/dist/stories/templates/gallery.stories.d.ts.map +1 -0
  370. package/dist/stories/templates/numeric-input.stories.d.ts +8 -0
  371. package/dist/stories/templates/numeric-input.stories.d.ts.map +1 -0
  372. package/dist/stories/templates/popover.stories.d.ts +55 -0
  373. package/dist/stories/templates/popover.stories.d.ts.map +1 -0
  374. package/dist/stories/templates/product-card.stories.d.ts +10 -0
  375. package/dist/stories/templates/product-card.stories.d.ts.map +1 -0
  376. package/dist/stories/templates/select.stories.d.ts +10 -0
  377. package/dist/stories/templates/select.stories.d.ts.map +1 -0
  378. package/dist/stories/templates/tabs.stories.d.ts +8 -0
  379. package/dist/stories/templates/tabs.stories.d.ts.map +1 -0
  380. package/dist/templates/accordion.js +9 -9
  381. package/dist/templates/breadcrumb.js +78 -0
  382. package/dist/templates/carousel.js +13 -15
  383. package/dist/templates/gallery.js +89 -0
  384. package/dist/templates/numeric-input.js +4 -4
  385. package/dist/templates/popover.js +35 -0
  386. package/dist/templates/product-card.js +10 -10
  387. package/dist/templates/select.js +43 -0
  388. package/dist/templates/tabs.js +8 -8
  389. package/dist/test/visual.spec.d.ts +2 -0
  390. package/dist/test/visual.spec.d.ts.map +1 -0
  391. package/dist/utils.js +1 -1
  392. package/package.json +41 -28
  393. package/src/tokens/_base.css +3 -3
  394. package/src/tokens/_layout.css +4 -0
  395. package/src/tokens/_semantic.css +49 -10
  396. package/src/tokens/_tokens-base.css +67 -0
  397. package/src/tokens/_typography.css +36 -6
  398. package/src/tokens/components/_form-control.css +67 -0
  399. package/src/tokens/components/atoms/_badge.css +16 -5
  400. package/src/tokens/components/atoms/_button.css +16 -10
  401. package/src/tokens/components/atoms/_checkbox.css +52 -0
  402. package/src/tokens/components/atoms/_icon.css +90 -2
  403. package/src/tokens/components/atoms/_image.css +5 -0
  404. package/src/tokens/components/atoms/_input.css +11 -32
  405. package/src/tokens/components/atoms/_label.css +11 -0
  406. package/src/tokens/components/atoms/_numeric-input.css +27 -13
  407. package/src/tokens/components/atoms/_rating.css +2 -2
  408. package/src/tokens/components/atoms/_status-text.css +32 -0
  409. package/src/tokens/components/atoms/_textarea.css +15 -17
  410. package/src/tokens/components/components.css +10 -1
  411. package/src/tokens/components/molecules/_accordion.css +1 -8
  412. package/src/tokens/components/molecules/_breadcrumb.css +42 -20
  413. package/src/tokens/components/molecules/_carousel.css +10 -2
  414. package/src/tokens/components/molecules/_color-select.css +3 -3
  415. package/src/tokens/components/molecules/_combobox.css +15 -21
  416. package/src/tokens/components/molecules/_dialog.css +0 -1
  417. package/src/tokens/components/molecules/_menu.css +0 -1
  418. package/src/tokens/components/molecules/_pagination.css +3 -3
  419. package/src/tokens/components/molecules/_phone-input.css +63 -0
  420. package/src/tokens/components/molecules/_popover.css +3 -0
  421. package/src/tokens/components/molecules/_product-card.css +9 -1
  422. package/src/tokens/components/molecules/_radio-card.css +197 -0
  423. package/src/tokens/components/molecules/_radio-group.css +150 -0
  424. package/src/tokens/components/molecules/_search-form.css +7 -3
  425. package/src/tokens/components/molecules/_select.css +41 -20
  426. package/src/tokens/components/molecules/_steps.css +115 -34
  427. package/src/tokens/components/molecules/_toast.css +5 -5
  428. package/src/tokens/components/molecules/_tree-view.css +5 -6
  429. package/src/tokens/components/organisms/_footer.css +1 -6
  430. package/src/tokens/components/organisms/_gallery.css +35 -0
  431. package/src/tokens/components/organisms/_header.css +8 -0
  432. package/src/tokens/figma/dark/variables.css +1406 -0
  433. package/src/tokens/figma/light/variables.css +1406 -0
  434. package/src/tokens/index.css +1 -65
  435. package/src/tokens/tokens-only.css +1 -64
  436. package/dist/atoms/error-text.js +0 -38
  437. package/dist/atoms/extra-text.js +0 -27
  438. package/dist/molecules/checkbox.js +0 -98
  439. package/dist/src/atoms/error-text.d.ts +0 -29
  440. package/dist/src/atoms/error-text.d.ts.map +0 -1
  441. package/dist/src/atoms/extra-text.d.ts +0 -27
  442. package/dist/src/atoms/extra-text.d.ts.map +0 -1
  443. package/dist/src/molecules/checkbox.d.ts +0 -19
  444. package/dist/src/molecules/checkbox.d.ts.map +0 -1
  445. package/src/tokens/components/molecules/_checkbox.css +0 -34
  446. package/src/tokens/components/molecules/index.css +0 -2
@@ -0,0 +1,341 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { connect, machine } from "@zag-js/radio-group";
3
+ import { normalizeProps, useMachine } from "@zag-js/react";
4
+ import { createContext, useContext, useId } from "react";
5
+ import { Label } from "../atoms/label.js";
6
+ import { StatusText } from "../atoms/status-text.js";
7
+ import { tv } from "../utils.js";
8
+ const radioGroupVariants = tv({
9
+ slots: {
10
+ root: [
11
+ "flex w-full flex-col"
12
+ ],
13
+ itemGroup: [
14
+ "relative flex",
15
+ "data-[orientation=horizontal]:flex-row",
16
+ "data-[orientation=horizontal]:flex-wrap",
17
+ "data-[orientation=vertical]:flex-col"
18
+ ],
19
+ item: [
20
+ "grid grid-cols-(--radio-group-item-grid) items-start",
21
+ "cursor-pointer select-none",
22
+ "data-disabled:cursor-not-allowed",
23
+ "data-readonly:cursor-default"
24
+ ],
25
+ itemControl: [
26
+ "row-start-1 self-center",
27
+ "inline-grid shrink-0 place-items-center rounded-radio-group-control",
28
+ "border-(length:--border-width-radio-group)",
29
+ "border-radio-group-item-control-border",
30
+ "bg-radio-group-item-control-bg",
31
+ "transition-colors duration-200 motion-reduce:transition-none",
32
+ "data-hover:bg-radio-group-item-control-bg-hover",
33
+ "data-hover:border-radio-group-item-control-border-hover",
34
+ "data-disabled:bg-radio-group-item-control-bg-disabled",
35
+ "data-disabled:border-radio-group-item-control-border-disabled",
36
+ "data-focus-visible:outline-(style:--default-ring-style)",
37
+ "data-focus-visible:outline-(length:--default-ring-width)",
38
+ "data-focus-visible:outline-radio-group-ring",
39
+ "data-focus-visible:outline-offset-(length:--default-ring-offset)",
40
+ "data-invalid:border-radio-group-item-control-border-error",
41
+ "data-invalid:outline-offset-(length:--default-ring-offset)"
42
+ ],
43
+ itemContent: [
44
+ "col-start-2 row-start-1 min-w-0 flex flex-col"
45
+ ],
46
+ itemIndicator: [
47
+ "pointer-events-none block leading-none",
48
+ "token-icon-radio-group-checked",
49
+ "opacity-0 transition-opacity duration-200 motion-reduce:transition-none",
50
+ "data-[state=checked]:opacity-100",
51
+ "data-disabled:data-[state=checked]:text-radio-group-item-indicator-disabled"
52
+ ],
53
+ itemText: [
54
+ "min-w-0 text-radio-group-item-fg leading-normal",
55
+ "data-disabled:text-radio-group-item-fg-disabled"
56
+ ],
57
+ itemDescription: [
58
+ "col-start-2 row-start-2 min-w-0 text-radio-group-item-description leading-normal",
59
+ "data-disabled:text-radio-group-item-description-disabled"
60
+ ],
61
+ hiddenInput: "sr-only"
62
+ },
63
+ variants: {
64
+ variant: {
65
+ outline: {
66
+ itemControl: [
67
+ "data-[state=checked]:bg-radio-group-item-control-bg-outline-checked",
68
+ "data-[state=checked]:border-radio-group-item-control-border-outline-checked",
69
+ "data-hover:data-[state=checked]:bg-radio-group-item-control-bg-outline-checked-hover",
70
+ "data-hover:data-[state=checked]:border-radio-group-item-control-border-outline-checked-hover"
71
+ ],
72
+ itemIndicator: "text-radio-group-item-indicator-outline"
73
+ },
74
+ subtle: {
75
+ itemControl: [
76
+ "data-[state=checked]:bg-radio-group-item-control-bg-subtle-checked",
77
+ "data-[state=checked]:border-radio-group-item-control-border-subtle-checked",
78
+ "data-hover:data-[state=checked]:bg-radio-group-item-control-bg-subtle-checked-hover",
79
+ "data-hover:data-[state=checked]:border-radio-group-item-control-border-subtle-checked-hover"
80
+ ],
81
+ itemIndicator: "text-radio-group-item-indicator-subtle"
82
+ },
83
+ solid: {
84
+ itemControl: [
85
+ "data-[state=checked]:bg-radio-group-item-control-bg-solid-checked",
86
+ "data-[state=checked]:border-radio-group-item-control-border-solid-checked",
87
+ "data-hover:data-[state=checked]:bg-radio-group-item-control-bg-solid-checked-hover",
88
+ "data-hover:data-[state=checked]:border-radio-group-item-control-border-solid-checked-hover"
89
+ ],
90
+ itemIndicator: "text-radio-group-item-indicator-solid"
91
+ }
92
+ },
93
+ size: {
94
+ sm: {
95
+ root: "gap-radio-group-root-sm",
96
+ itemGroup: "data-[orientation=horizontal]:gap-radio-group-items-horizontal-sm data-[orientation=vertical]:gap-radio-group-items-vertical-sm",
97
+ item: "gap-x-radio-group-item-sm",
98
+ itemControl: "size-radio-group-control-sm",
99
+ itemContent: "gap-radio-group-item-content-sm",
100
+ itemIndicator: "size-radio-group-indicator-sm",
101
+ itemText: "text-radio-group-item-sm",
102
+ itemDescription: "text-radio-group-item-description-sm"
103
+ },
104
+ md: {
105
+ root: "gap-radio-group-root-md",
106
+ itemGroup: "data-[orientation=horizontal]:gap-radio-group-items-horizontal-md data-[orientation=vertical]:gap-radio-group-items-vertical-md",
107
+ item: "gap-x-radio-group-item-md",
108
+ itemControl: "size-radio-group-control-md",
109
+ itemContent: "gap-radio-group-item-content-md",
110
+ itemIndicator: "size-radio-group-indicator-md",
111
+ itemText: "text-radio-group-item-md",
112
+ itemDescription: "text-radio-group-item-description-md"
113
+ },
114
+ lg: {
115
+ root: "gap-radio-group-root-lg",
116
+ itemGroup: "data-[orientation=horizontal]:gap-radio-group-items-horizontal-lg data-[orientation=vertical]:gap-radio-group-items-vertical-lg",
117
+ item: "gap-x-radio-group-item-lg",
118
+ itemControl: "size-radio-group-control-lg",
119
+ itemContent: "gap-radio-group-item-content-lg",
120
+ itemIndicator: "size-radio-group-indicator-lg",
121
+ itemText: "text-radio-group-item-lg",
122
+ itemDescription: "text-radio-group-item-description-lg"
123
+ }
124
+ }
125
+ },
126
+ defaultVariants: {
127
+ variant: "outline",
128
+ size: "md"
129
+ }
130
+ });
131
+ const RadioGroupContext = /*#__PURE__*/ createContext(null);
132
+ function useRadioGroupContext() {
133
+ const context = useContext(RadioGroupContext);
134
+ if (!context) throw new Error("RadioGroup components must be used within RadioGroup");
135
+ return context;
136
+ }
137
+ const RadioGroupItemContext = /*#__PURE__*/ createContext(null);
138
+ function useRadioGroupItemContext() {
139
+ const context = useContext(RadioGroupItemContext);
140
+ if (!context) throw new Error("RadioGroup item components must be used within RadioGroup.Item");
141
+ return context;
142
+ }
143
+ function RadioGroup({ id: providedId, disabled = false, required = false, orientation = "vertical", validateStatus = "default", onValueChange, variant = "outline", size = "md", children, className, ref, ...machineProps }) {
144
+ const generatedId = useId();
145
+ const id = providedId || generatedId;
146
+ const invalid = "error" === validateStatus;
147
+ const service = useMachine(machine, {
148
+ ...machineProps,
149
+ id,
150
+ disabled,
151
+ required,
152
+ orientation,
153
+ invalid,
154
+ onValueChange: ({ value: nextValue })=>{
155
+ onValueChange?.(nextValue);
156
+ }
157
+ });
158
+ const api = connect(service, normalizeProps);
159
+ const styles = radioGroupVariants({
160
+ size,
161
+ variant
162
+ });
163
+ return /*#__PURE__*/ jsx(RadioGroupContext.Provider, {
164
+ value: {
165
+ api,
166
+ variant,
167
+ size,
168
+ orientation,
169
+ disabled,
170
+ required,
171
+ validateStatus
172
+ },
173
+ children: /*#__PURE__*/ jsx("div", {
174
+ className: styles.root({
175
+ className
176
+ }),
177
+ ref: ref,
178
+ ...api.getRootProps(),
179
+ children: children
180
+ })
181
+ });
182
+ }
183
+ RadioGroup.Label = function({ children, disabled, required, size: sizeProp, ...props }) {
184
+ const { api, size, disabled: groupDisabled, required: groupRequired } = useRadioGroupContext();
185
+ return /*#__PURE__*/ jsx(Label, {
186
+ disabled: disabled ?? groupDisabled,
187
+ required: required ?? groupRequired,
188
+ size: sizeProp ?? size,
189
+ ...api.getLabelProps(),
190
+ ...props,
191
+ children: children
192
+ });
193
+ };
194
+ RadioGroup.ItemGroup = function({ children, className, ref, ...props }) {
195
+ const { size, variant, orientation } = useRadioGroupContext();
196
+ const styles = radioGroupVariants({
197
+ size,
198
+ variant
199
+ });
200
+ return /*#__PURE__*/ jsx("div", {
201
+ className: styles.itemGroup({
202
+ className
203
+ }),
204
+ "data-orientation": orientation,
205
+ ref: ref,
206
+ ...props,
207
+ children: children
208
+ });
209
+ };
210
+ RadioGroup.Item = function({ value, disabled, invalid, children, className, ref, ...props }) {
211
+ const { api, size, variant } = useRadioGroupContext();
212
+ const styles = radioGroupVariants({
213
+ size,
214
+ variant
215
+ });
216
+ const itemProps = {
217
+ value,
218
+ disabled,
219
+ invalid
220
+ };
221
+ return /*#__PURE__*/ jsx(RadioGroupItemContext.Provider, {
222
+ value: {
223
+ itemProps
224
+ },
225
+ children: /*#__PURE__*/ jsx("label", {
226
+ className: styles.item({
227
+ className
228
+ }),
229
+ ref: ref,
230
+ ...api.getItemProps(itemProps),
231
+ ...props,
232
+ children: children
233
+ })
234
+ });
235
+ };
236
+ RadioGroup.ItemHiddenInput = function({ className, ref, ...props }) {
237
+ const { api, size, variant } = useRadioGroupContext();
238
+ const { itemProps } = useRadioGroupItemContext();
239
+ const styles = radioGroupVariants({
240
+ size,
241
+ variant
242
+ });
243
+ return /*#__PURE__*/ jsx("input", {
244
+ className: styles.hiddenInput({
245
+ className
246
+ }),
247
+ ref: ref,
248
+ ...api.getItemHiddenInputProps(itemProps),
249
+ ...props
250
+ });
251
+ };
252
+ RadioGroup.ItemControl = function({ children, className, ref, ...props }) {
253
+ const { api, size, variant } = useRadioGroupContext();
254
+ const { itemProps } = useRadioGroupItemContext();
255
+ const styles = radioGroupVariants({
256
+ size,
257
+ variant
258
+ });
259
+ const itemState = api.getItemState(itemProps);
260
+ return /*#__PURE__*/ jsxs("span", {
261
+ className: styles.itemControl({
262
+ className
263
+ }),
264
+ ref: ref,
265
+ ...api.getItemControlProps(itemProps),
266
+ ...props,
267
+ children: [
268
+ /*#__PURE__*/ jsx("span", {
269
+ "aria-hidden": "true",
270
+ className: styles.itemIndicator(),
271
+ "data-disabled": itemState.disabled || void 0,
272
+ "data-state": itemState.checked ? "checked" : "unchecked"
273
+ }),
274
+ children
275
+ ]
276
+ });
277
+ };
278
+ RadioGroup.ItemContent = function({ children, className, ref, ...props }) {
279
+ const { size, variant } = useRadioGroupContext();
280
+ const styles = radioGroupVariants({
281
+ size,
282
+ variant
283
+ });
284
+ return /*#__PURE__*/ jsx("div", {
285
+ className: styles.itemContent({
286
+ className
287
+ }),
288
+ ref: ref,
289
+ ...props,
290
+ children: children
291
+ });
292
+ };
293
+ RadioGroup.ItemText = function({ children, className, ref, ...props }) {
294
+ const { api, size, variant } = useRadioGroupContext();
295
+ const { itemProps } = useRadioGroupItemContext();
296
+ const styles = radioGroupVariants({
297
+ size,
298
+ variant
299
+ });
300
+ return /*#__PURE__*/ jsx("span", {
301
+ className: styles.itemText({
302
+ className
303
+ }),
304
+ ref: ref,
305
+ ...api.getItemTextProps(itemProps),
306
+ ...props,
307
+ children: children
308
+ });
309
+ };
310
+ RadioGroup.ItemDescription = function({ children, className, ref, ...props }) {
311
+ const { api, size, variant } = useRadioGroupContext();
312
+ const { itemProps } = useRadioGroupItemContext();
313
+ const styles = radioGroupVariants({
314
+ size,
315
+ variant
316
+ });
317
+ const itemState = api.getItemState(itemProps);
318
+ return /*#__PURE__*/ jsx("div", {
319
+ className: styles.itemDescription({
320
+ className
321
+ }),
322
+ "data-disabled": itemState.disabled || void 0,
323
+ ref: ref,
324
+ ...props,
325
+ children: children
326
+ });
327
+ };
328
+ RadioGroup.StatusText = function({ status, size: sizeProp, showIcon, children, ...props }) {
329
+ const { size, validateStatus } = useRadioGroupContext();
330
+ const effectiveSize = sizeProp ?? size;
331
+ const effectiveStatus = status ?? validateStatus;
332
+ return /*#__PURE__*/ jsx(StatusText, {
333
+ showIcon: showIcon ?? "default" !== effectiveStatus,
334
+ size: effectiveSize,
335
+ status: effectiveStatus,
336
+ ...props,
337
+ children: children
338
+ });
339
+ };
340
+ RadioGroup.displayName = "RadioGroup";
341
+ export { RadioGroup, radioGroupVariants, useRadioGroupContext };
@@ -1,106 +1,185 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import { useId } from "react";
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useId, useState } from "react";
3
3
  import { Button } from "../atoms/button.js";
4
- import { Icon } from "../atoms/icon.js";
5
4
  import { Input } from "../atoms/input.js";
6
5
  import { Label } from "../atoms/label.js";
7
6
  import { tv } from "../utils.js";
8
- const iconSizeMap = {
9
- sm: 'lg',
10
- md: 'xl',
11
- lg: '2xl'
12
- };
13
- const formVariants = tv({
14
- base: [
15
- 'grid relative'
16
- ],
7
+ const searchFormVariants = tv({
8
+ slots: {
9
+ root: [
10
+ "relative grid"
11
+ ],
12
+ control: [
13
+ "relative flex items-center overflow-hidden",
14
+ "form-control-base",
15
+ "hover:border-input-border-hover",
16
+ "focus-within:border-input-border-focus",
17
+ "focus-within:outline-(style:--default-ring-style) focus-within:outline-(length:--default-ring-width)",
18
+ "focus-within:outline-input-ring",
19
+ "focus-within:outline-offset-(length:--default-ring-offset)",
20
+ "transition-colors duration-200 motion-reduce:transition-none"
21
+ ],
22
+ input: [
23
+ "peer",
24
+ "min-w-0 flex-1",
25
+ "border-none bg-transparent",
26
+ "focus-visible:outline-none"
27
+ ],
28
+ button: [
29
+ "h-full shrink-0 items-center rounded-l-none"
30
+ ],
31
+ clearButton: [
32
+ "h-full shrink-0 rounded-none p-search-form-clear-button",
33
+ "peer-hover:bg-input-hover peer-focus:bg-input-focus"
34
+ ]
35
+ },
17
36
  variants: {
18
37
  size: {
19
- sm: 'gap-search-form-sm',
20
- md: 'gap-search-form-md',
21
- lg: 'gap-search-form-lg'
38
+ sm: {
39
+ root: "gap-search-form-sm",
40
+ control: "h-form-control-sm rounded-search-form-sm"
41
+ },
42
+ md: {
43
+ root: "gap-search-form-md",
44
+ control: "h-form-control-md rounded-search-form-md"
45
+ },
46
+ lg: {
47
+ root: "gap-search-form-lg"
48
+ }
22
49
  }
23
50
  },
24
51
  defaultVariants: {
25
- size: 'md'
26
- }
27
- });
28
- const inputWrapperVariants = tv({
29
- base: [
30
- 'grid relative overflow-hidden rounded-md'
31
- ],
32
- variants: {
33
- size: {
34
- sm: 'gap-search-form-sm',
35
- md: 'gap-search-form-md',
36
- lg: 'gap-search-form-lg'
37
- }
52
+ size: "md"
38
53
  }
39
54
  });
40
- const buttonVariants = tv({
41
- base: [
42
- 'absolute',
43
- 'justify-self-end place-self-center',
44
- 'h-full rounded-none p-200'
45
- ]
46
- });
47
- function SearchForm({ inputProps, buttonProps, size = 'md', buttonText, buttonIcon = false, placeholder = 'Search...', label, className, ref, searchId, ...props }) {
48
- const fallbackId = useId();
49
- const id = searchId || `search-${fallbackId}`;
50
- const withButton = !!buttonText || buttonIcon;
51
- const iconSize = iconSizeMap[size] || 'lg';
52
- return /*#__PURE__*/ jsx("search", {
53
- children: /*#__PURE__*/ jsxs("form", {
54
- ref: ref,
55
- className: formVariants({
56
- size,
57
- className
58
- }),
59
- onSubmit: props.onSubmit,
60
- ...props,
61
- children: [
62
- label && /*#__PURE__*/ jsx(Label, {
63
- htmlFor: id,
64
- size: size,
65
- children: label
55
+ const SearchFormContext = /*#__PURE__*/ createContext(null);
56
+ function useSearchFormContext() {
57
+ const context = useContext(SearchFormContext);
58
+ if (!context) throw new Error("SearchForm components must be used within SearchForm");
59
+ return context;
60
+ }
61
+ function SearchForm({ size = "md", children, defaultValue = "", value, onValueChange, className, ref, onSubmit, ...props }) {
62
+ const generatedId = useId();
63
+ const inputId = `search-input-${generatedId}`;
64
+ const [internalValue, setInternalValue] = useState(defaultValue);
65
+ const isControlled = void 0 !== value;
66
+ const inputValue = isControlled ? value : internalValue;
67
+ const setInputValue = (newValue)=>{
68
+ if (!isControlled) setInternalValue(newValue);
69
+ onValueChange?.(newValue);
70
+ };
71
+ const clearInput = ()=>{
72
+ setInputValue("");
73
+ };
74
+ const handleSubmit = (e)=>{
75
+ e.preventDefault();
76
+ onSubmit?.(e);
77
+ };
78
+ const styles = searchFormVariants({
79
+ size
80
+ });
81
+ return /*#__PURE__*/ jsx(SearchFormContext.Provider, {
82
+ value: {
83
+ size,
84
+ inputId,
85
+ inputValue,
86
+ setInputValue,
87
+ clearInput,
88
+ hasValue: inputValue.length > 0
89
+ },
90
+ children: /*#__PURE__*/ jsx("search", {
91
+ children: /*#__PURE__*/ jsx("form", {
92
+ className: styles.root({
93
+ className
66
94
  }),
67
- /*#__PURE__*/ jsxs("div", {
68
- className: inputWrapperVariants({
69
- size
70
- }),
71
- children: [
72
- /*#__PURE__*/ jsx(Input, {
73
- id: id,
74
- type: "search",
75
- withButtonInside: withButton && 'right',
76
- placeholder: placeholder,
77
- size: size,
78
- "aria-label": label ? void 0 : 'Search',
79
- ...inputProps
80
- }),
81
- withButton && /*#__PURE__*/ jsxs(Button, {
82
- type: "submit",
83
- theme: buttonProps?.theme || 'borderless',
84
- block: false,
85
- size: size,
86
- "aria-label": buttonText ? void 0 : 'Search',
87
- className: buttonVariants({
88
- className: buttonText ? '' : 'aspect-square'
89
- }),
90
- ...buttonProps,
91
- children: [
92
- buttonText,
93
- buttonIcon && /*#__PURE__*/ jsx(Icon, {
94
- icon: 'token-icon-search',
95
- size: iconSize
96
- })
97
- ]
98
- })
99
- ]
100
- })
101
- ]
95
+ onSubmit: handleSubmit,
96
+ ref: ref,
97
+ ...props,
98
+ children: children
99
+ })
102
100
  })
103
101
  });
104
102
  }
105
- SearchForm.displayName = 'SearchForm';
106
- export { SearchForm };
103
+ SearchForm.Label = function({ children, className, ...props }) {
104
+ const { inputId, size } = useSearchFormContext();
105
+ return /*#__PURE__*/ jsx(Label, {
106
+ className: className,
107
+ htmlFor: inputId,
108
+ size: size,
109
+ ...props,
110
+ children: children
111
+ });
112
+ };
113
+ SearchForm.Control = function({ children, className, ref, ...props }) {
114
+ const { size } = useSearchFormContext();
115
+ const styles = searchFormVariants({
116
+ size
117
+ });
118
+ return /*#__PURE__*/ jsx("div", {
119
+ className: styles.control({
120
+ className
121
+ }),
122
+ ref: ref,
123
+ ...props,
124
+ children: children
125
+ });
126
+ };
127
+ SearchForm.Input = function({ className, placeholder = "Search...", ref, ...props }) {
128
+ const { inputId, inputValue, setInputValue, size } = useSearchFormContext();
129
+ const styles = searchFormVariants({
130
+ size
131
+ });
132
+ return /*#__PURE__*/ jsx(Input, {
133
+ "aria-label": props["aria-label"] || "Search",
134
+ className: styles.input({
135
+ className
136
+ }),
137
+ id: inputId,
138
+ onChange: (e)=>setInputValue(e.target.value),
139
+ placeholder: placeholder,
140
+ ref: ref,
141
+ size: size,
142
+ type: "search",
143
+ value: inputValue,
144
+ ...props
145
+ });
146
+ };
147
+ SearchForm.Button = function({ className, children, showSearchIcon = false, icon, iconPosition = "right", ...props }) {
148
+ const { size } = useSearchFormContext();
149
+ const styles = searchFormVariants({
150
+ size
151
+ });
152
+ const effectiveIcon = icon ?? (showSearchIcon ? "token-icon-search" : void 0);
153
+ return /*#__PURE__*/ jsx(Button, {
154
+ className: styles.button({
155
+ className
156
+ }),
157
+ icon: effectiveIcon,
158
+ iconPosition: iconPosition,
159
+ size: size,
160
+ type: "submit",
161
+ ...props,
162
+ children: children
163
+ });
164
+ };
165
+ SearchForm.ClearButton = function({ className, icon = "token-icon-close", theme = "unstyled", ...props }) {
166
+ const { size, clearInput, hasValue, inputValue } = useSearchFormContext();
167
+ const styles = searchFormVariants({
168
+ size
169
+ });
170
+ if (!hasValue) return null;
171
+ return /*#__PURE__*/ jsx(Button, {
172
+ "aria-label": `Clear search: ${inputValue}`,
173
+ className: styles.clearButton({
174
+ className
175
+ }),
176
+ icon: icon,
177
+ onClick: clearInput,
178
+ size: "current",
179
+ theme: theme,
180
+ type: "button",
181
+ ...props
182
+ });
183
+ };
184
+ SearchForm.displayName = "SearchForm";
185
+ export { SearchForm, searchFormVariants, useSearchFormContext };