@hyddenlabs/hydn-ui 0.3.0-alpha.99 → 0.3.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 (649) hide show
  1. package/README.md +46 -29
  2. package/dist/components/branding/google-logo.d.ts +14 -0
  3. package/dist/components/branding/google-logo.d.ts.map +1 -0
  4. package/dist/components/branding/google-logo.js +49 -0
  5. package/dist/components/branding/google-logo.js.map +1 -0
  6. package/dist/components/branding/hydden-logo.d.ts +14 -0
  7. package/dist/components/branding/hydden-logo.d.ts.map +1 -0
  8. package/dist/components/branding/hydden-logo.js +8 -0
  9. package/dist/components/branding/hydden-logo.js.map +1 -0
  10. package/dist/components/branding/microsoft-logo.d.ts +14 -0
  11. package/dist/components/branding/microsoft-logo.d.ts.map +1 -0
  12. package/dist/components/branding/microsoft-logo.js +25 -0
  13. package/dist/components/branding/microsoft-logo.js.map +1 -0
  14. package/dist/components/data-display/avatar/avatar.d.ts +24 -0
  15. package/dist/components/data-display/avatar/avatar.d.ts.map +1 -0
  16. package/dist/components/data-display/avatar/avatar.js +25 -0
  17. package/dist/components/data-display/avatar/avatar.js.map +1 -0
  18. package/dist/components/data-display/avatar/index.d.ts +3 -0
  19. package/dist/components/data-display/avatar/index.d.ts.map +1 -0
  20. package/dist/components/data-display/badge/badge.d.ts +24 -0
  21. package/dist/components/data-display/badge/badge.d.ts.map +1 -0
  22. package/dist/components/data-display/badge/badge.js +27 -0
  23. package/dist/components/data-display/badge/badge.js.map +1 -0
  24. package/dist/components/data-display/badge/index.d.ts +5 -0
  25. package/dist/components/data-display/badge/index.d.ts.map +1 -0
  26. package/dist/components/data-display/badge/status-label.d.ts +25 -0
  27. package/dist/components/data-display/badge/status-label.d.ts.map +1 -0
  28. package/dist/components/data-display/badge/status-label.js +63 -0
  29. package/dist/components/data-display/badge/status-label.js.map +1 -0
  30. package/dist/components/data-display/chip/chip.d.ts +42 -0
  31. package/dist/components/data-display/chip/chip.d.ts.map +1 -0
  32. package/dist/components/data-display/chip/chip.js +79 -0
  33. package/dist/components/data-display/chip/chip.js.map +1 -0
  34. package/dist/components/data-display/chip/index.d.ts +3 -0
  35. package/dist/components/data-display/chip/index.d.ts.map +1 -0
  36. package/dist/components/data-display/code-block/code-block.d.ts +17 -0
  37. package/dist/components/data-display/code-block/code-block.d.ts.map +1 -0
  38. package/dist/components/data-display/code-block/code-block.js +34 -0
  39. package/dist/components/data-display/code-block/code-block.js.map +1 -0
  40. package/dist/components/data-display/data-table/data-table.d.ts +226 -0
  41. package/dist/components/data-display/data-table/data-table.d.ts.map +1 -0
  42. package/dist/components/data-display/data-table/data-table.js +404 -0
  43. package/dist/components/data-display/data-table/data-table.js.map +1 -0
  44. package/dist/components/data-display/data-table/index.d.ts +5 -0
  45. package/dist/components/data-display/data-table/index.d.ts.map +1 -0
  46. package/dist/components/data-display/data-table/use-table.d.ts +42 -0
  47. package/dist/components/data-display/data-table/use-table.d.ts.map +1 -0
  48. package/dist/components/data-display/data-table/use-table.js +120 -0
  49. package/dist/components/data-display/data-table/use-table.js.map +1 -0
  50. package/dist/components/data-display/empty-state/empty-state.d.ts +8 -0
  51. package/dist/components/data-display/empty-state/empty-state.d.ts.map +1 -0
  52. package/dist/components/data-display/empty-state/empty-state.js +17 -0
  53. package/dist/components/data-display/empty-state/empty-state.js.map +1 -0
  54. package/dist/components/data-display/empty-state/index.d.ts +3 -0
  55. package/dist/components/data-display/empty-state/index.d.ts.map +1 -0
  56. package/dist/components/data-display/list/index.d.ts +3 -0
  57. package/dist/components/data-display/list/index.d.ts.map +1 -0
  58. package/dist/components/data-display/list/list.d.ts +31 -0
  59. package/dist/components/data-display/list/list.d.ts.map +1 -0
  60. package/dist/components/data-display/list/list.js +16 -0
  61. package/dist/components/data-display/list/list.js.map +1 -0
  62. package/dist/components/data-display/table/index.d.ts +3 -0
  63. package/dist/components/data-display/table/index.d.ts.map +1 -0
  64. package/dist/components/data-display/table/table.d.ts +101 -0
  65. package/dist/components/data-display/table/table.d.ts.map +1 -0
  66. package/dist/components/data-display/table/table.js +98 -0
  67. package/dist/components/data-display/table/table.js.map +1 -0
  68. package/dist/components/data-display/timeline/index.d.ts +3 -0
  69. package/dist/components/data-display/timeline/index.d.ts.map +1 -0
  70. package/dist/components/data-display/timeline/timeline.d.ts +57 -0
  71. package/dist/components/data-display/timeline/timeline.d.ts.map +1 -0
  72. package/dist/components/data-display/timeline/timeline.js +52 -0
  73. package/dist/components/data-display/timeline/timeline.js.map +1 -0
  74. package/dist/components/feedback/alert/alert.d.ts +27 -0
  75. package/dist/components/feedback/alert/alert.d.ts.map +1 -0
  76. package/dist/components/feedback/alert/alert.js +86 -0
  77. package/dist/components/feedback/alert/alert.js.map +1 -0
  78. package/dist/components/feedback/alert/index.d.ts +3 -0
  79. package/dist/components/feedback/alert/index.d.ts.map +1 -0
  80. package/dist/components/feedback/dialog/delete-dialog.d.ts +41 -0
  81. package/dist/components/feedback/dialog/delete-dialog.d.ts.map +1 -0
  82. package/dist/components/feedback/dialog/delete-dialog.js +52 -0
  83. package/dist/components/feedback/dialog/delete-dialog.js.map +1 -0
  84. package/dist/components/feedback/dialog/dialog.d.ts +24 -0
  85. package/dist/components/feedback/dialog/dialog.d.ts.map +1 -0
  86. package/dist/components/feedback/dialog/dialog.js +15 -0
  87. package/dist/components/feedback/dialog/dialog.js.map +1 -0
  88. package/dist/components/feedback/dialog/index.d.ts +5 -0
  89. package/dist/components/feedback/dialog/index.d.ts.map +1 -0
  90. package/dist/components/feedback/error-page/error-400.d.ts +22 -0
  91. package/dist/components/feedback/error-page/error-400.d.ts.map +1 -0
  92. package/dist/components/feedback/error-page/error-400.js +28 -0
  93. package/dist/components/feedback/error-page/error-400.js.map +1 -0
  94. package/dist/components/feedback/error-page/error-401.d.ts +26 -0
  95. package/dist/components/feedback/error-page/error-401.d.ts.map +1 -0
  96. package/dist/components/feedback/error-page/error-401.js +33 -0
  97. package/dist/components/feedback/error-page/error-401.js.map +1 -0
  98. package/dist/components/feedback/error-page/error-403.d.ts +26 -0
  99. package/dist/components/feedback/error-page/error-403.d.ts.map +1 -0
  100. package/dist/components/feedback/error-page/error-403.js +33 -0
  101. package/dist/components/feedback/error-page/error-403.js.map +1 -0
  102. package/dist/components/feedback/error-page/error-404.d.ts +26 -0
  103. package/dist/components/feedback/error-page/error-404.d.ts.map +1 -0
  104. package/dist/components/feedback/error-page/error-404.js +33 -0
  105. package/dist/components/feedback/error-page/error-404.js.map +1 -0
  106. package/dist/components/feedback/error-page/index.d.ts +9 -0
  107. package/dist/components/feedback/error-page/index.d.ts.map +1 -0
  108. package/dist/components/feedback/loading-container/index.d.ts +3 -0
  109. package/dist/components/feedback/loading-container/index.d.ts.map +1 -0
  110. package/dist/components/feedback/loading-container/loading-container.d.ts +16 -0
  111. package/dist/components/feedback/loading-container/loading-container.d.ts.map +1 -0
  112. package/dist/components/feedback/loading-container/loading-container.js +28 -0
  113. package/dist/components/feedback/loading-container/loading-container.js.map +1 -0
  114. package/dist/components/feedback/modal/index.d.ts +3 -0
  115. package/dist/components/feedback/modal/index.d.ts.map +1 -0
  116. package/dist/components/feedback/modal/modal.d.ts +33 -0
  117. package/dist/components/feedback/modal/modal.d.ts.map +1 -0
  118. package/dist/components/feedback/modal/modal.js +88 -0
  119. package/dist/components/feedback/modal/modal.js.map +1 -0
  120. package/dist/components/feedback/overlay/useOverlay.d.ts +24 -0
  121. package/dist/components/feedback/overlay/useOverlay.d.ts.map +1 -0
  122. package/dist/components/feedback/overlay/useOverlay.js +119 -0
  123. package/dist/components/feedback/overlay/useOverlay.js.map +1 -0
  124. package/dist/components/feedback/popover/index.d.ts +3 -0
  125. package/dist/components/feedback/popover/index.d.ts.map +1 -0
  126. package/dist/components/feedback/popover/popover.d.ts +25 -0
  127. package/dist/components/feedback/popover/popover.d.ts.map +1 -0
  128. package/dist/components/feedback/popover/popover.js +118 -0
  129. package/dist/components/feedback/popover/popover.js.map +1 -0
  130. package/dist/components/feedback/progress-bar/index.d.ts +3 -0
  131. package/dist/components/feedback/progress-bar/index.d.ts.map +1 -0
  132. package/dist/components/feedback/progress-bar/progress-bar.d.ts +22 -0
  133. package/dist/components/feedback/progress-bar/progress-bar.d.ts.map +1 -0
  134. package/dist/components/feedback/progress-bar/progress-bar.js +27 -0
  135. package/dist/components/feedback/progress-bar/progress-bar.js.map +1 -0
  136. package/dist/components/feedback/skeleton/index.d.ts +3 -0
  137. package/dist/components/feedback/skeleton/index.d.ts.map +1 -0
  138. package/dist/components/feedback/skeleton/skeleton.d.ts +19 -0
  139. package/dist/components/feedback/skeleton/skeleton.d.ts.map +1 -0
  140. package/dist/components/feedback/skeleton/skeleton.js +28 -0
  141. package/dist/components/feedback/skeleton/skeleton.js.map +1 -0
  142. package/dist/components/feedback/smooth-transition/index.d.ts +3 -0
  143. package/dist/components/feedback/smooth-transition/index.d.ts.map +1 -0
  144. package/dist/components/feedback/smooth-transition/smooth-transition.d.ts +68 -0
  145. package/dist/components/feedback/smooth-transition/smooth-transition.d.ts.map +1 -0
  146. package/dist/components/feedback/smooth-transition/smooth-transition.js +89 -0
  147. package/dist/components/feedback/smooth-transition/smooth-transition.js.map +1 -0
  148. package/dist/components/feedback/spinner/index.d.ts +3 -0
  149. package/dist/components/feedback/spinner/index.d.ts.map +1 -0
  150. package/dist/components/feedback/spinner/spinner.d.ts +21 -0
  151. package/dist/components/feedback/spinner/spinner.d.ts.map +1 -0
  152. package/dist/components/feedback/spinner/spinner.js +27 -0
  153. package/dist/components/feedback/spinner/spinner.js.map +1 -0
  154. package/dist/components/feedback/toast/index.d.ts +3 -0
  155. package/dist/components/feedback/toast/index.d.ts.map +1 -0
  156. package/dist/components/feedback/toast/toast.d.ts +23 -0
  157. package/dist/components/feedback/toast/toast.d.ts.map +1 -0
  158. package/dist/components/feedback/toast/toast.js +45 -0
  159. package/dist/components/feedback/toast/toast.js.map +1 -0
  160. package/dist/components/feedback/tooltip/index.d.ts +3 -0
  161. package/dist/components/feedback/tooltip/index.d.ts.map +1 -0
  162. package/dist/components/feedback/tooltip/tooltip.d.ts +39 -0
  163. package/dist/components/feedback/tooltip/tooltip.d.ts.map +1 -0
  164. package/dist/components/feedback/tooltip/tooltip.js +129 -0
  165. package/dist/components/feedback/tooltip/tooltip.js.map +1 -0
  166. package/dist/components/forms/button/button-with-icon.d.ts +18 -0
  167. package/dist/components/forms/button/button-with-icon.d.ts.map +1 -0
  168. package/dist/components/forms/button/button-with-icon.js +15 -0
  169. package/dist/components/forms/button/button-with-icon.js.map +1 -0
  170. package/dist/components/forms/button/button.d.ts +66 -0
  171. package/dist/components/forms/button/button.d.ts.map +1 -0
  172. package/dist/components/forms/button/button.examples.d.ts +73 -0
  173. package/dist/components/forms/button/button.examples.d.ts.map +1 -0
  174. package/dist/components/forms/button/button.js +118 -0
  175. package/dist/components/forms/button/button.js.map +1 -0
  176. package/dist/components/forms/button/icon-button.d.ts +23 -0
  177. package/dist/components/forms/button/icon-button.d.ts.map +1 -0
  178. package/dist/components/forms/button/icon-button.js +85 -0
  179. package/dist/components/forms/button/icon-button.js.map +1 -0
  180. package/dist/components/forms/button/index.d.ts +10 -0
  181. package/dist/components/forms/button/index.d.ts.map +1 -0
  182. package/dist/components/forms/button/inline-button.d.ts +45 -0
  183. package/dist/components/forms/button/inline-button.d.ts.map +1 -0
  184. package/dist/components/forms/button/inline-button.js +59 -0
  185. package/dist/components/forms/button/inline-button.js.map +1 -0
  186. package/dist/components/forms/button-group/button-group.d.ts +20 -0
  187. package/dist/components/forms/button-group/button-group.d.ts.map +1 -0
  188. package/dist/components/forms/button-group/button-group.js +24 -0
  189. package/dist/components/forms/button-group/button-group.js.map +1 -0
  190. package/dist/components/forms/button-group/index.d.ts +3 -0
  191. package/dist/components/forms/button-group/index.d.ts.map +1 -0
  192. package/dist/components/forms/calendar/calendar.d.ts +37 -0
  193. package/dist/components/forms/calendar/calendar.d.ts.map +1 -0
  194. package/dist/components/forms/calendar/calendar.js +131 -0
  195. package/dist/components/forms/calendar/calendar.js.map +1 -0
  196. package/dist/components/forms/calendar/index.d.ts +3 -0
  197. package/dist/components/forms/calendar/index.d.ts.map +1 -0
  198. package/dist/components/forms/checkbox/checkbox.d.ts +31 -0
  199. package/dist/components/forms/checkbox/checkbox.d.ts.map +1 -0
  200. package/dist/components/forms/checkbox/checkbox.js +39 -0
  201. package/dist/components/forms/checkbox/checkbox.js.map +1 -0
  202. package/dist/components/forms/checkbox/index.d.ts +3 -0
  203. package/dist/components/forms/checkbox/index.d.ts.map +1 -0
  204. package/dist/components/forms/code/code.d.ts +32 -0
  205. package/dist/components/forms/code/code.d.ts.map +1 -0
  206. package/dist/components/forms/code/code.js +31 -0
  207. package/dist/components/forms/code/code.js.map +1 -0
  208. package/dist/components/forms/code/index.d.ts +1 -0
  209. package/dist/components/forms/code/index.d.ts.map +1 -0
  210. package/dist/components/forms/date-picker/date-picker.d.ts +72 -0
  211. package/dist/components/forms/date-picker/date-picker.d.ts.map +1 -0
  212. package/dist/components/forms/date-picker/date-picker.js +173 -0
  213. package/dist/components/forms/date-picker/date-picker.js.map +1 -0
  214. package/dist/components/forms/date-picker/index.d.ts +3 -0
  215. package/dist/components/forms/date-picker/index.d.ts.map +1 -0
  216. package/dist/components/forms/editable-text/editable-text.d.ts +59 -0
  217. package/dist/components/forms/editable-text/editable-text.d.ts.map +1 -0
  218. package/dist/components/forms/editable-text/editable-text.js +188 -0
  219. package/dist/components/forms/editable-text/editable-text.js.map +1 -0
  220. package/dist/components/forms/editable-text/index.d.ts +3 -0
  221. package/dist/components/forms/editable-text/index.d.ts.map +1 -0
  222. package/dist/components/forms/fieldset/fieldset.d.ts +46 -0
  223. package/dist/components/forms/fieldset/fieldset.d.ts.map +1 -0
  224. package/dist/components/forms/fieldset/fieldset.js +40 -0
  225. package/dist/components/forms/fieldset/fieldset.js.map +1 -0
  226. package/dist/components/forms/fieldset/index.d.ts +3 -0
  227. package/dist/components/forms/fieldset/index.d.ts.map +1 -0
  228. package/dist/components/forms/form/form-example.d.ts +11 -0
  229. package/dist/components/forms/form/form-example.d.ts.map +1 -0
  230. package/dist/components/forms/form/form.d.ts +44 -0
  231. package/dist/components/forms/form/form.d.ts.map +1 -0
  232. package/dist/components/forms/form/form.js +39 -0
  233. package/dist/components/forms/form/form.js.map +1 -0
  234. package/dist/components/forms/form/index.d.ts +3 -0
  235. package/dist/components/forms/form/index.d.ts.map +1 -0
  236. package/dist/components/forms/form-checkbox/form-checkbox.d.ts +27 -0
  237. package/dist/components/forms/form-checkbox/form-checkbox.d.ts.map +1 -0
  238. package/dist/components/forms/form-checkbox/form-checkbox.js +58 -0
  239. package/dist/components/forms/form-checkbox/form-checkbox.js.map +1 -0
  240. package/dist/components/forms/form-checkbox/index.d.ts +3 -0
  241. package/dist/components/forms/form-checkbox/index.d.ts.map +1 -0
  242. package/dist/components/forms/form-checkbox-group/form-checkbox-group.d.ts +40 -0
  243. package/dist/components/forms/form-checkbox-group/form-checkbox-group.d.ts.map +1 -0
  244. package/dist/components/forms/form-checkbox-group/form-checkbox-group.js +74 -0
  245. package/dist/components/forms/form-checkbox-group/form-checkbox-group.js.map +1 -0
  246. package/dist/components/forms/form-field/form-field.d.ts +53 -0
  247. package/dist/components/forms/form-field/form-field.d.ts.map +1 -0
  248. package/dist/components/forms/form-field/form-field.js +56 -0
  249. package/dist/components/forms/form-field/form-field.js.map +1 -0
  250. package/dist/components/forms/form-field/index.d.ts +3 -0
  251. package/dist/components/forms/form-field/index.d.ts.map +1 -0
  252. package/dist/components/forms/form-input/form-input.d.ts +60 -0
  253. package/dist/components/forms/form-input/form-input.d.ts.map +1 -0
  254. package/dist/components/forms/form-input/form-input.js +53 -0
  255. package/dist/components/forms/form-input/form-input.js.map +1 -0
  256. package/dist/components/forms/form-select/form-select.d.ts +32 -0
  257. package/dist/components/forms/form-select/form-select.d.ts.map +1 -0
  258. package/dist/components/forms/form-select/form-select.js +34 -0
  259. package/dist/components/forms/form-select/form-select.js.map +1 -0
  260. package/dist/components/forms/form-textarea/form-textarea.d.ts +31 -0
  261. package/dist/components/forms/form-textarea/form-textarea.d.ts.map +1 -0
  262. package/dist/components/forms/form-textarea/form-textarea.js +34 -0
  263. package/dist/components/forms/form-textarea/form-textarea.js.map +1 -0
  264. package/dist/components/forms/input/index.d.ts +3 -0
  265. package/dist/components/forms/input/index.d.ts.map +1 -0
  266. package/dist/components/forms/input/input.d.ts +71 -0
  267. package/dist/components/forms/input/input.d.ts.map +1 -0
  268. package/dist/components/forms/input/input.js +64 -0
  269. package/dist/components/forms/input/input.js.map +1 -0
  270. package/dist/components/forms/input-group/index.d.ts +3 -0
  271. package/dist/components/forms/input-group/index.d.ts.map +1 -0
  272. package/dist/components/forms/input-group/input-group.d.ts +43 -0
  273. package/dist/components/forms/input-group/input-group.d.ts.map +1 -0
  274. package/dist/components/forms/input-group/input-group.js +55 -0
  275. package/dist/components/forms/input-group/input-group.js.map +1 -0
  276. package/dist/components/forms/multi-select/index.d.ts +3 -0
  277. package/dist/components/forms/multi-select/index.d.ts.map +1 -0
  278. package/dist/components/forms/multi-select/multi-select.d.ts +75 -0
  279. package/dist/components/forms/multi-select/multi-select.d.ts.map +1 -0
  280. package/dist/components/forms/multi-select/multi-select.js +259 -0
  281. package/dist/components/forms/multi-select/multi-select.js.map +1 -0
  282. package/dist/components/forms/radio/index.d.ts +3 -0
  283. package/dist/components/forms/radio/index.d.ts.map +1 -0
  284. package/dist/components/forms/radio/radio.d.ts +31 -0
  285. package/dist/components/forms/radio/radio.d.ts.map +1 -0
  286. package/dist/components/forms/radio/radio.js +74 -0
  287. package/dist/components/forms/radio/radio.js.map +1 -0
  288. package/dist/components/forms/radio-group/index.d.ts +3 -0
  289. package/dist/components/forms/radio-group/index.d.ts.map +1 -0
  290. package/dist/components/forms/radio-group/radio-group.d.ts +32 -0
  291. package/dist/components/forms/radio-group/radio-group.d.ts.map +1 -0
  292. package/dist/components/forms/radio-group/radio-group.js +28 -0
  293. package/dist/components/forms/radio-group/radio-group.js.map +1 -0
  294. package/dist/components/forms/select/index.d.ts +5 -0
  295. package/dist/components/forms/select/index.d.ts.map +1 -0
  296. package/dist/components/forms/select/select-item.d.ts +16 -0
  297. package/dist/components/forms/select/select-item.d.ts.map +1 -0
  298. package/dist/components/forms/select/select-item.js +9 -0
  299. package/dist/components/forms/select/select-item.js.map +1 -0
  300. package/dist/components/forms/select/select.d.ts +52 -0
  301. package/dist/components/forms/select/select.d.ts.map +1 -0
  302. package/dist/components/forms/select/select.js +51 -0
  303. package/dist/components/forms/select/select.js.map +1 -0
  304. package/dist/components/forms/slider/index.d.ts +3 -0
  305. package/dist/components/forms/slider/index.d.ts.map +1 -0
  306. package/dist/components/forms/slider/slider.d.ts +21 -0
  307. package/dist/components/forms/slider/slider.d.ts.map +1 -0
  308. package/dist/components/forms/slider/slider.js +65 -0
  309. package/dist/components/forms/slider/slider.js.map +1 -0
  310. package/dist/components/forms/switch/index.d.ts +3 -0
  311. package/dist/components/forms/switch/index.d.ts.map +1 -0
  312. package/dist/components/forms/switch/switch.d.ts +30 -0
  313. package/dist/components/forms/switch/switch.d.ts.map +1 -0
  314. package/dist/components/forms/switch/switch.js +104 -0
  315. package/dist/components/forms/switch/switch.js.map +1 -0
  316. package/dist/components/forms/textarea/index.d.ts +3 -0
  317. package/dist/components/forms/textarea/index.d.ts.map +1 -0
  318. package/dist/components/forms/textarea/textarea.d.ts +54 -0
  319. package/dist/components/forms/textarea/textarea.d.ts.map +1 -0
  320. package/dist/components/forms/textarea/textarea.js +55 -0
  321. package/dist/components/forms/textarea/textarea.js.map +1 -0
  322. package/dist/components/index.d.ts +124 -0
  323. package/dist/components/index.d.ts.map +1 -0
  324. package/dist/components/layout/accordion/accordion.d.ts +30 -0
  325. package/dist/components/layout/accordion/accordion.d.ts.map +1 -0
  326. package/dist/components/layout/accordion/accordion.js +38 -0
  327. package/dist/components/layout/accordion/accordion.js.map +1 -0
  328. package/dist/components/layout/accordion/index.d.ts +3 -0
  329. package/dist/components/layout/accordion/index.d.ts.map +1 -0
  330. package/dist/components/layout/action-card/action-card.d.ts +37 -0
  331. package/dist/components/layout/action-card/action-card.d.ts.map +1 -0
  332. package/dist/components/layout/action-card/action-card.js +104 -0
  333. package/dist/components/layout/action-card/action-card.js.map +1 -0
  334. package/dist/components/layout/action-card/index.d.ts +3 -0
  335. package/dist/components/layout/action-card/index.d.ts.map +1 -0
  336. package/dist/components/layout/card/card-actions.d.ts +47 -0
  337. package/dist/components/layout/card/card-actions.d.ts.map +1 -0
  338. package/dist/components/layout/card/card-actions.js +30 -0
  339. package/dist/components/layout/card/card-actions.js.map +1 -0
  340. package/dist/components/layout/card/card-body.d.ts +26 -0
  341. package/dist/components/layout/card/card-body.d.ts.map +1 -0
  342. package/dist/components/layout/card/card-body.js +22 -0
  343. package/dist/components/layout/card/card-body.js.map +1 -0
  344. package/dist/components/layout/card/card-figure.d.ts +50 -0
  345. package/dist/components/layout/card/card-figure.d.ts.map +1 -0
  346. package/dist/components/layout/card/card-figure.js +27 -0
  347. package/dist/components/layout/card/card-figure.js.map +1 -0
  348. package/dist/components/layout/card/card-footer.d.ts +46 -0
  349. package/dist/components/layout/card/card-footer.d.ts.map +1 -0
  350. package/dist/components/layout/card/card-footer.js +39 -0
  351. package/dist/components/layout/card/card-footer.js.map +1 -0
  352. package/dist/components/layout/card/card-header.d.ts +41 -0
  353. package/dist/components/layout/card/card-header.d.ts.map +1 -0
  354. package/dist/components/layout/card/card-header.js +27 -0
  355. package/dist/components/layout/card/card-header.js.map +1 -0
  356. package/dist/components/layout/card/card-title.d.ts +43 -0
  357. package/dist/components/layout/card/card-title.d.ts.map +1 -0
  358. package/dist/components/layout/card/card-title.js +21 -0
  359. package/dist/components/layout/card/card-title.js.map +1 -0
  360. package/dist/components/layout/card/card.d.ts +74 -0
  361. package/dist/components/layout/card/card.d.ts.map +1 -0
  362. package/dist/components/layout/card/card.js +64 -0
  363. package/dist/components/layout/card/card.js.map +1 -0
  364. package/dist/components/layout/card/index.d.ts +15 -0
  365. package/dist/components/layout/card/index.d.ts.map +1 -0
  366. package/dist/components/layout/container/container.d.ts +33 -0
  367. package/dist/components/layout/container/container.d.ts.map +1 -0
  368. package/dist/components/layout/container/container.js +36 -0
  369. package/dist/components/layout/container/container.js.map +1 -0
  370. package/dist/components/layout/container/index.d.ts +3 -0
  371. package/dist/components/layout/container/index.d.ts.map +1 -0
  372. package/dist/components/layout/divider/divider.d.ts +15 -0
  373. package/dist/components/layout/divider/divider.d.ts.map +1 -0
  374. package/dist/components/layout/divider/divider.js +10 -0
  375. package/dist/components/layout/divider/divider.js.map +1 -0
  376. package/dist/components/layout/divider/index.d.ts +3 -0
  377. package/dist/components/layout/divider/index.d.ts.map +1 -0
  378. package/dist/components/layout/drawer/drawer.d.ts +35 -0
  379. package/dist/components/layout/drawer/drawer.d.ts.map +1 -0
  380. package/dist/components/layout/drawer/drawer.js +108 -0
  381. package/dist/components/layout/drawer/drawer.js.map +1 -0
  382. package/dist/components/layout/drawer/index.d.ts +3 -0
  383. package/dist/components/layout/drawer/index.d.ts.map +1 -0
  384. package/dist/components/layout/feature-section/feature-section.d.ts +36 -0
  385. package/dist/components/layout/feature-section/feature-section.d.ts.map +1 -0
  386. package/dist/components/layout/feature-section/feature-section.js +37 -0
  387. package/dist/components/layout/feature-section/feature-section.js.map +1 -0
  388. package/dist/components/layout/feature-section/index.d.ts +3 -0
  389. package/dist/components/layout/feature-section/index.d.ts.map +1 -0
  390. package/dist/components/layout/footer/footer.d.ts +37 -0
  391. package/dist/components/layout/footer/footer.d.ts.map +1 -0
  392. package/dist/components/layout/footer/footer.js +36 -0
  393. package/dist/components/layout/footer/footer.js.map +1 -0
  394. package/dist/components/layout/footer/index.d.ts +3 -0
  395. package/dist/components/layout/footer/index.d.ts.map +1 -0
  396. package/dist/components/layout/grid/grid.d.ts +66 -0
  397. package/dist/components/layout/grid/grid.d.ts.map +1 -0
  398. package/dist/components/layout/grid/grid.js +62 -0
  399. package/dist/components/layout/grid/grid.js.map +1 -0
  400. package/dist/components/layout/grid/index.d.ts +3 -0
  401. package/dist/components/layout/grid/index.d.ts.map +1 -0
  402. package/dist/components/layout/hero/hero.d.ts +61 -0
  403. package/dist/components/layout/hero/hero.d.ts.map +1 -0
  404. package/dist/components/layout/hero/hero.js +79 -0
  405. package/dist/components/layout/hero/hero.js.map +1 -0
  406. package/dist/components/layout/hero/index.d.ts +3 -0
  407. package/dist/components/layout/hero/index.d.ts.map +1 -0
  408. package/dist/components/layout/left-nav-layout/index.d.ts +7 -0
  409. package/dist/components/layout/left-nav-layout/index.d.ts.map +1 -0
  410. package/dist/components/layout/left-nav-layout/left-nav-item.d.ts +56 -0
  411. package/dist/components/layout/left-nav-layout/left-nav-item.d.ts.map +1 -0
  412. package/dist/components/layout/left-nav-layout/left-nav-item.js +105 -0
  413. package/dist/components/layout/left-nav-layout/left-nav-item.js.map +1 -0
  414. package/dist/components/layout/left-nav-layout/left-nav-layout.d.ts +67 -0
  415. package/dist/components/layout/left-nav-layout/left-nav-layout.d.ts.map +1 -0
  416. package/dist/components/layout/left-nav-layout/left-nav-layout.js +182 -0
  417. package/dist/components/layout/left-nav-layout/left-nav-layout.js.map +1 -0
  418. package/dist/components/layout/left-nav-layout/left-nav-section.d.ts +40 -0
  419. package/dist/components/layout/left-nav-layout/left-nav-section.d.ts.map +1 -0
  420. package/dist/components/layout/left-nav-layout/left-nav-section.js +119 -0
  421. package/dist/components/layout/left-nav-layout/left-nav-section.js.map +1 -0
  422. package/dist/components/layout/page/index.d.ts +3 -0
  423. package/dist/components/layout/page/index.d.ts.map +1 -0
  424. package/dist/components/layout/page/page.d.ts +17 -0
  425. package/dist/components/layout/page/page.d.ts.map +1 -0
  426. package/dist/components/layout/page/page.js +9 -0
  427. package/dist/components/layout/page/page.js.map +1 -0
  428. package/dist/components/layout/page-header/index.d.ts +3 -0
  429. package/dist/components/layout/page-header/index.d.ts.map +1 -0
  430. package/dist/components/layout/page-header/page-header.d.ts +21 -0
  431. package/dist/components/layout/page-header/page-header.d.ts.map +1 -0
  432. package/dist/components/layout/page-header/page-header.js +18 -0
  433. package/dist/components/layout/page-header/page-header.js.map +1 -0
  434. package/dist/components/layout/page-transition/index.d.ts +3 -0
  435. package/dist/components/layout/page-transition/index.d.ts.map +1 -0
  436. package/dist/components/layout/page-transition/page-transition.d.ts +52 -0
  437. package/dist/components/layout/page-transition/page-transition.d.ts.map +1 -0
  438. package/dist/components/layout/page-transition/page-transition.js +43 -0
  439. package/dist/components/layout/page-transition/page-transition.js.map +1 -0
  440. package/dist/components/layout/section/index.d.ts +3 -0
  441. package/dist/components/layout/section/index.d.ts.map +1 -0
  442. package/dist/components/layout/section/section.d.ts +35 -0
  443. package/dist/components/layout/section/section.d.ts.map +1 -0
  444. package/dist/components/layout/section/section.js +18 -0
  445. package/dist/components/layout/section/section.js.map +1 -0
  446. package/dist/components/layout/section-header/index.d.ts +3 -0
  447. package/dist/components/layout/section-header/index.d.ts.map +1 -0
  448. package/dist/components/layout/section-header/section-header.d.ts +23 -0
  449. package/dist/components/layout/section-header/section-header.d.ts.map +1 -0
  450. package/dist/components/layout/section-header/section-header.js +18 -0
  451. package/dist/components/layout/section-header/section-header.js.map +1 -0
  452. package/dist/components/layout/settings-page/index.d.ts +4 -0
  453. package/dist/components/layout/settings-page/index.d.ts.map +1 -0
  454. package/dist/components/layout/settings-page/setting-item.d.ts +52 -0
  455. package/dist/components/layout/settings-page/setting-item.d.ts.map +1 -0
  456. package/dist/components/layout/settings-page/setting-item.js +31 -0
  457. package/dist/components/layout/settings-page/setting-item.js.map +1 -0
  458. package/dist/components/layout/settings-page/settings-page.d.ts +37 -0
  459. package/dist/components/layout/settings-page/settings-page.d.ts.map +1 -0
  460. package/dist/components/layout/settings-page/settings-page.js +18 -0
  461. package/dist/components/layout/settings-page/settings-page.js.map +1 -0
  462. package/dist/components/layout/settings-page/settings-section.d.ts +35 -0
  463. package/dist/components/layout/settings-page/settings-section.d.ts.map +1 -0
  464. package/dist/components/layout/settings-page/settings-section.js +17 -0
  465. package/dist/components/layout/settings-page/settings-section.js.map +1 -0
  466. package/dist/components/layout/stack/index.d.ts +3 -0
  467. package/dist/components/layout/stack/index.d.ts.map +1 -0
  468. package/dist/components/layout/stack/stack.d.ts +33 -0
  469. package/dist/components/layout/stack/stack.d.ts.map +1 -0
  470. package/dist/components/layout/stack/stack.js +44 -0
  471. package/dist/components/layout/stack/stack.js.map +1 -0
  472. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +61 -0
  473. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  474. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +30 -0
  475. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -0
  476. package/dist/components/navigation/breadcrumbs/index.d.ts +3 -0
  477. package/dist/components/navigation/breadcrumbs/index.d.ts.map +1 -0
  478. package/dist/components/navigation/dropdown/dropdown.d.ts +83 -0
  479. package/dist/components/navigation/dropdown/dropdown.d.ts.map +1 -0
  480. package/dist/components/navigation/dropdown/dropdown.js +295 -0
  481. package/dist/components/navigation/dropdown/dropdown.js.map +1 -0
  482. package/dist/components/navigation/dropdown/index.d.ts +5 -0
  483. package/dist/components/navigation/dropdown/index.d.ts.map +1 -0
  484. package/dist/components/navigation/nav/index.d.ts +3 -0
  485. package/dist/components/navigation/nav/index.d.ts.map +1 -0
  486. package/dist/components/navigation/nav/nav.d.ts +24 -0
  487. package/dist/components/navigation/nav/nav.d.ts.map +1 -0
  488. package/dist/components/navigation/nav/nav.js +32 -0
  489. package/dist/components/navigation/nav/nav.js.map +1 -0
  490. package/dist/components/navigation/nav-dropdown/index.d.ts +5 -0
  491. package/dist/components/navigation/nav-dropdown/index.d.ts.map +1 -0
  492. package/dist/components/navigation/nav-dropdown/nav-dropdown-item.d.ts +17 -0
  493. package/dist/components/navigation/nav-dropdown/nav-dropdown-item.d.ts.map +1 -0
  494. package/dist/components/navigation/nav-dropdown/nav-dropdown-item.js +17 -0
  495. package/dist/components/navigation/nav-dropdown/nav-dropdown-item.js.map +1 -0
  496. package/dist/components/navigation/nav-dropdown/nav-dropdown.d.ts +20 -0
  497. package/dist/components/navigation/nav-dropdown/nav-dropdown.d.ts.map +1 -0
  498. package/dist/components/navigation/nav-dropdown/nav-dropdown.js +24 -0
  499. package/dist/components/navigation/nav-dropdown/nav-dropdown.js.map +1 -0
  500. package/dist/components/navigation/navbar/index.d.ts +9 -0
  501. package/dist/components/navigation/navbar/index.d.ts.map +1 -0
  502. package/dist/components/navigation/navbar/navbar-brand.d.ts +23 -0
  503. package/dist/components/navigation/navbar/navbar-brand.d.ts.map +1 -0
  504. package/dist/components/navigation/navbar/navbar-brand.js +21 -0
  505. package/dist/components/navigation/navbar/navbar-brand.js.map +1 -0
  506. package/dist/components/navigation/navbar/navbar-link.d.ts +23 -0
  507. package/dist/components/navigation/navbar/navbar-link.d.ts.map +1 -0
  508. package/dist/components/navigation/navbar/navbar-link.js +34 -0
  509. package/dist/components/navigation/navbar/navbar-link.js.map +1 -0
  510. package/dist/components/navigation/navbar/navbar-toggle.d.ts +34 -0
  511. package/dist/components/navigation/navbar/navbar-toggle.d.ts.map +1 -0
  512. package/dist/components/navigation/navbar/navbar-toggle.js +37 -0
  513. package/dist/components/navigation/navbar/navbar-toggle.js.map +1 -0
  514. package/dist/components/navigation/navbar/navbar.d.ts +33 -0
  515. package/dist/components/navigation/navbar/navbar.d.ts.map +1 -0
  516. package/dist/components/navigation/navbar/navbar.js +40 -0
  517. package/dist/components/navigation/navbar/navbar.js.map +1 -0
  518. package/dist/components/navigation/notification-dropdown/index.d.ts +3 -0
  519. package/dist/components/navigation/notification-dropdown/index.d.ts.map +1 -0
  520. package/dist/components/navigation/notification-dropdown/notification-dropdown.d.ts +59 -0
  521. package/dist/components/navigation/notification-dropdown/notification-dropdown.d.ts.map +1 -0
  522. package/dist/components/navigation/notification-dropdown/notification-dropdown.js +456 -0
  523. package/dist/components/navigation/notification-dropdown/notification-dropdown.js.map +1 -0
  524. package/dist/components/navigation/pagination/index.d.ts +3 -0
  525. package/dist/components/navigation/pagination/index.d.ts.map +1 -0
  526. package/dist/components/navigation/pagination/pagination.d.ts +21 -0
  527. package/dist/components/navigation/pagination/pagination.d.ts.map +1 -0
  528. package/dist/components/navigation/pagination/pagination.js +72 -0
  529. package/dist/components/navigation/pagination/pagination.js.map +1 -0
  530. package/dist/components/navigation/scroll-nav/index.d.ts +3 -0
  531. package/dist/components/navigation/scroll-nav/index.d.ts.map +1 -0
  532. package/dist/components/navigation/scroll-nav/scroll-nav.d.ts +53 -0
  533. package/dist/components/navigation/scroll-nav/scroll-nav.d.ts.map +1 -0
  534. package/dist/components/navigation/scroll-nav/scroll-nav.js +188 -0
  535. package/dist/components/navigation/scroll-nav/scroll-nav.js.map +1 -0
  536. package/dist/components/navigation/sidebar/index.d.ts +3 -0
  537. package/dist/components/navigation/sidebar/index.d.ts.map +1 -0
  538. package/dist/components/navigation/sidebar/sidebar.d.ts +18 -0
  539. package/dist/components/navigation/sidebar/sidebar.d.ts.map +1 -0
  540. package/dist/components/navigation/sidebar/sidebar.js +41 -0
  541. package/dist/components/navigation/sidebar/sidebar.js.map +1 -0
  542. package/dist/components/navigation/stepper/index.d.ts +3 -0
  543. package/dist/components/navigation/stepper/index.d.ts.map +1 -0
  544. package/dist/components/navigation/stepper/stepper.d.ts +50 -0
  545. package/dist/components/navigation/stepper/stepper.d.ts.map +1 -0
  546. package/dist/components/navigation/stepper/stepper.js +159 -0
  547. package/dist/components/navigation/stepper/stepper.js.map +1 -0
  548. package/dist/components/navigation/tabs/index.d.ts +3 -0
  549. package/dist/components/navigation/tabs/index.d.ts.map +1 -0
  550. package/dist/components/navigation/tabs/tabs.d.ts +32 -0
  551. package/dist/components/navigation/tabs/tabs.d.ts.map +1 -0
  552. package/dist/components/navigation/tabs/tabs.js +61 -0
  553. package/dist/components/navigation/tabs/tabs.js.map +1 -0
  554. package/dist/components/system/auth-provider/auth-provider.d.ts +103 -0
  555. package/dist/components/system/auth-provider/auth-provider.d.ts.map +1 -0
  556. package/dist/components/system/auth-provider/auth-provider.js +118 -0
  557. package/dist/components/system/auth-provider/auth-provider.js.map +1 -0
  558. package/dist/components/system/auth-provider/auth-utils.d.ts +32 -0
  559. package/dist/components/system/auth-provider/auth-utils.d.ts.map +1 -0
  560. package/dist/components/system/auth-provider/auth-utils.js +83 -0
  561. package/dist/components/system/auth-provider/auth-utils.js.map +1 -0
  562. package/dist/components/system/auth-provider/index.d.ts +4 -0
  563. package/dist/components/system/auth-provider/index.d.ts.map +1 -0
  564. package/dist/components/system/color-mode-toggle/color-mode-toggle.d.ts +18 -0
  565. package/dist/components/system/color-mode-toggle/color-mode-toggle.d.ts.map +1 -0
  566. package/dist/components/system/color-mode-toggle/color-mode-toggle.js +27 -0
  567. package/dist/components/system/color-mode-toggle/color-mode-toggle.js.map +1 -0
  568. package/dist/components/system/color-mode-toggle/index.d.ts +3 -0
  569. package/dist/components/system/color-mode-toggle/index.d.ts.map +1 -0
  570. package/dist/components/system/error-boundary/error-boundary.d.ts +21 -0
  571. package/dist/components/system/error-boundary/error-boundary.d.ts.map +1 -0
  572. package/dist/components/system/icon/icon.d.ts +35 -0
  573. package/dist/components/system/icon/icon.d.ts.map +1 -0
  574. package/dist/components/system/icon/icon.js +83 -0
  575. package/dist/components/system/icon/icon.js.map +1 -0
  576. package/dist/components/system/icon/index.d.ts +3 -0
  577. package/dist/components/system/icon/index.d.ts.map +1 -0
  578. package/dist/components/system/theme-provider/index.d.ts +3 -0
  579. package/dist/components/system/theme-provider/index.d.ts.map +1 -0
  580. package/dist/components/system/theme-provider/theme-provider.d.ts +40 -0
  581. package/dist/components/system/theme-provider/theme-provider.d.ts.map +1 -0
  582. package/dist/components/system/theme-provider/theme-provider.js +55 -0
  583. package/dist/components/system/theme-provider/theme-provider.js.map +1 -0
  584. package/dist/components/typography/code/code.d.ts +24 -0
  585. package/dist/components/typography/code/code.d.ts.map +1 -0
  586. package/dist/components/typography/code/code.js +18 -0
  587. package/dist/components/typography/code/code.js.map +1 -0
  588. package/dist/components/typography/code/index.d.ts +3 -0
  589. package/dist/components/typography/code/index.d.ts.map +1 -0
  590. package/dist/components/typography/heading/heading.d.ts +32 -0
  591. package/dist/components/typography/heading/heading.d.ts.map +1 -0
  592. package/dist/components/typography/heading/heading.js +39 -0
  593. package/dist/components/typography/heading/heading.js.map +1 -0
  594. package/dist/components/typography/heading/index.d.ts +3 -0
  595. package/dist/components/typography/heading/index.d.ts.map +1 -0
  596. package/dist/components/typography/link/index.d.ts +3 -0
  597. package/dist/components/typography/link/index.d.ts.map +1 -0
  598. package/dist/components/typography/link/link.d.ts +44 -0
  599. package/dist/components/typography/link/link.d.ts.map +1 -0
  600. package/dist/components/typography/link/link.js +72 -0
  601. package/dist/components/typography/link/link.js.map +1 -0
  602. package/dist/components/typography/text/index.d.ts +3 -0
  603. package/dist/components/typography/text/index.d.ts.map +1 -0
  604. package/dist/components/typography/text/text.d.ts +104 -0
  605. package/dist/components/typography/text/text.d.ts.map +1 -0
  606. package/dist/components/typography/text/text.js +148 -0
  607. package/dist/components/typography/text/text.js.map +1 -0
  608. package/dist/components.d.ts +2 -0
  609. package/dist/components.d.ts.map +1 -0
  610. package/dist/hooks/useDebounce.d.ts +29 -0
  611. package/dist/hooks/useDebounce.d.ts.map +1 -0
  612. package/dist/hooks/useDebounce.js +26 -0
  613. package/dist/hooks/useDebounce.js.map +1 -0
  614. package/dist/hooks/useScrollReset.d.ts +11 -0
  615. package/dist/hooks/useScrollReset.d.ts.map +1 -0
  616. package/dist/hooks/useScrollReset.js +55 -0
  617. package/dist/hooks/useScrollReset.js.map +1 -0
  618. package/dist/humans.txt +8 -0
  619. package/dist/icons/logo.svg +9 -0
  620. package/dist/index.d.ts +7 -1170
  621. package/dist/index.d.ts.map +1 -0
  622. package/dist/index.js +287 -4333
  623. package/dist/index.js.map +1 -1
  624. package/dist/manifest.json +16 -0
  625. package/dist/node_modules/clsx/dist/clsx.js +18 -0
  626. package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
  627. package/dist/robots.txt +5 -0
  628. package/dist/sitemap.xml +8 -0
  629. package/dist/staticwebapp.config.json +23 -0
  630. package/dist/style.css +2 -2
  631. package/dist/styles.d.ts +9 -0
  632. package/dist/theme/hydn-presets.d.ts +4 -0
  633. package/dist/theme/hydn-presets.d.ts.map +1 -0
  634. package/dist/theme/size-tokens.d.ts +686 -0
  635. package/dist/theme/size-tokens.d.ts.map +1 -0
  636. package/dist/theme/size-tokens.js +636 -0
  637. package/dist/theme/size-tokens.js.map +1 -0
  638. package/dist/theme/tokens.d.ts +116 -0
  639. package/dist/theme/tokens.d.ts.map +1 -0
  640. package/dist/theme/tokens.js +164 -0
  641. package/dist/theme/tokens.js.map +1 -0
  642. package/dist/utils/debounce.d.ts +7 -0
  643. package/dist/utils/debounce.d.ts.map +1 -0
  644. package/dist/utils/debounce.js +40 -0
  645. package/dist/utils/debounce.js.map +1 -0
  646. package/package.json +49 -43
  647. package/dist/index.cjs +0 -4425
  648. package/dist/index.cjs.map +0 -1
  649. package/dist/index.d.cts +0 -1170
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sources":["../../../../src/components/feedback/tooltip/tooltip.tsx"],"sourcesContent":["import { ReactNode, useState, useRef, useEffect, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ColorVariant } from '../..';\n\nexport type TooltipProps = {\n /** The element that triggers the tooltip */\n children: ReactNode;\n /** Tooltip text content */\n content: string | ReactNode;\n /** Position of the tooltip relative to the trigger element */\n position?: 'top' | 'bottom' | 'left' | 'right';\n /** Color variant of the tooltip */\n variant?: ColorVariant;\n /** Delay before showing tooltip in ms */\n delayDuration?: number;\n /** Additional CSS classes */\n className?: string;\n};\n\n/**\n * Tooltip - Simple CSS-based tooltip component\n *\n * Displays a tooltip message on hover. Uses CSS for positioning with\n * portal rendering to escape overflow constraints.\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Hello\">\n * <Button>Hover me</Button>\n * </Tooltip>\n *\n * <Tooltip content=\"Success!\" position=\"right\" variant=\"success\">\n * <Button>Submit</Button>\n * </Tooltip>\n * ```\n */\nfunction Tooltip({\n children,\n content,\n position = 'top',\n variant = 'neutral',\n delayDuration = 200,\n className = ''\n}: Readonly<TooltipProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const [coords, setCoords] = useState({ top: 0, left: 0 });\n const triggerRef = useRef<HTMLSpanElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | undefined>(undefined);\n\n const calculatePosition = useCallback(() => {\n if (!triggerRef.current || !tooltipRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const offset = 8;\n\n let top = 0;\n let left = 0;\n\n switch (position) {\n case 'top':\n top = triggerRect.top - tooltipRect.height - offset;\n left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case 'bottom':\n top = triggerRect.bottom + offset;\n left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case 'left':\n top = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - offset;\n break;\n case 'right':\n top = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2;\n left = triggerRect.right + offset;\n break;\n }\n\n // Simple viewport clamping\n const padding = 8;\n if (left < padding) left = padding;\n if (left + tooltipRect.width > window.innerWidth - padding) {\n left = window.innerWidth - tooltipRect.width - padding;\n }\n if (top < padding) top = padding;\n if (top + tooltipRect.height > window.innerHeight - padding) {\n top = window.innerHeight - tooltipRect.height - padding;\n }\n\n setCoords({ top, left });\n }, [position]);\n\n const handleMouseEnter = () => {\n timeoutRef.current = window.setTimeout(() => {\n setIsOpen(true);\n }, delayDuration);\n };\n\n const handleMouseLeave = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setIsOpen(false);\n };\n\n useEffect(() => {\n if (isOpen) {\n requestAnimationFrame(() => {\n calculatePosition();\n });\n\n const handleScroll = () => calculatePosition();\n const handleResize = () => calculatePosition();\n\n window.addEventListener('scroll', handleScroll, true);\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('scroll', handleScroll, true);\n window.removeEventListener('resize', handleResize);\n };\n }\n return undefined;\n }, [isOpen, calculatePosition]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const variantClasses: Record<ColorVariant, string> = {\n primary: 'bg-primary text-primary-foreground',\n accent: 'bg-accent text-accent-foreground',\n info: 'bg-info text-info-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n error: 'bg-error text-error-foreground',\n neutral: 'bg-muted text-muted-foreground'\n };\n\n const tooltip = isOpen ? (\n <div\n ref={tooltipRef}\n role=\"tooltip\"\n className={`fixed z-9999 px-3 py-1.5 text-xs font-medium rounded-md shadow-md max-w-xs animate-in fade-in-0 zoom-in-95 ${variantClasses[variant]} ${className}`}\n style={{\n top: `${coords.top}px`,\n left: `${coords.left}px`\n }}\n >\n {content}\n </div>\n ) : null;\n\n return (\n <>\n <span\n ref={triggerRef}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleMouseEnter}\n onBlur={handleMouseLeave}\n className=\"inline-flex\"\n >\n {children}\n </span>\n {tooltip && createPortal(tooltip, document.body)}\n </>\n );\n}\n\nTooltip.displayName = 'Tooltip';\n\nexport default Tooltip;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { default as React } from 'react';
2
+ import { IconSize } from '../../system/icon';
3
+ import { ButtonProps as BaseButtonProps } from './button';
4
+ import { ColorVariant } from '../../../theme/tokens';
5
+ export interface ButtonWithIconProps extends Omit<BaseButtonProps, 'icon' | 'style'> {
6
+ icon?: string;
7
+ iconSize?: IconSize;
8
+ iconColor?: ColorVariant | 'currentColor';
9
+ buttonStyle?: BaseButtonProps['style'];
10
+ children?: React.ReactNode;
11
+ }
12
+ /**
13
+ * ButtonWithIcon - Button using Icon wrapper for consistent icon sizing
14
+ * Usage: <ButtonWithIcon icon="plus" iconSize="md">Add</ButtonWithIcon>
15
+ */
16
+ declare const ButtonWithIcon: React.ForwardRefExoticComponent<ButtonWithIconProps & React.RefAttributes<HTMLButtonElement>>;
17
+ export default ButtonWithIcon;
18
+ //# sourceMappingURL=button-with-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-with-icon.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/button/button-with-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAQ,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAe,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,YAAY,GAAG,cAAc,CAAC;IAC1C,WAAW,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;GAGG;AACH,QAAA,MAAM,cAAc,+FAYnB,CAAC;AAIF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { Icon } from "../../system/icon/icon.js";
4
+ import Button from "./button.js";
5
+ const ButtonWithIcon = React.forwardRef(
6
+ ({ icon, iconSize = "md", iconColor = "currentColor", iconPosition = "left", buttonStyle, children, ...rest }, ref) => {
7
+ const iconNode = icon ? /* @__PURE__ */ jsx(Icon, { name: icon, size: iconSize, color: iconColor }) : null;
8
+ return /* @__PURE__ */ jsx(Button, { ref, icon: iconNode, iconPosition, style: buttonStyle, ...rest, children });
9
+ }
10
+ );
11
+ ButtonWithIcon.displayName = "ButtonWithIcon";
12
+ export {
13
+ ButtonWithIcon as default
14
+ };
15
+ //# sourceMappingURL=button-with-icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-with-icon.js","sources":["../../../../src/components/forms/button/button-with-icon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconSize } from '../../system/icon';\nimport Button, { ButtonProps as BaseButtonProps } from './button';\nimport { ColorVariant } from '../../../theme/tokens';\n\nexport interface ButtonWithIconProps extends Omit<BaseButtonProps, 'icon' | 'style'> {\n icon?: string;\n iconSize?: IconSize;\n iconColor?: ColorVariant | 'currentColor';\n buttonStyle?: BaseButtonProps['style'];\n children?: React.ReactNode;\n}\n\n/**\n * ButtonWithIcon - Button using Icon wrapper for consistent icon sizing\n * Usage: <ButtonWithIcon icon=\"plus\" iconSize=\"md\">Add</ButtonWithIcon>\n */\nconst ButtonWithIcon = React.forwardRef<HTMLButtonElement, ButtonWithIconProps>(\n (\n { icon, iconSize = 'md', iconColor = 'currentColor', iconPosition = 'left', buttonStyle, children, ...rest },\n ref\n ) => {\n const iconNode = icon ? <Icon name={icon} size={iconSize} color={iconColor} /> : null;\n return (\n <Button ref={ref} icon={iconNode} iconPosition={iconPosition} style={buttonStyle} {...rest}>\n {children}\n </Button>\n );\n }\n);\n\nButtonWithIcon.displayName = 'ButtonWithIcon';\n\nexport default ButtonWithIcon;\n"],"names":[],"mappings":";;;;AAiBA,MAAM,iBAAiB,MAAM;AAAA,EAC3B,CACE,EAAE,MAAM,WAAW,MAAM,YAAY,gBAAgB,eAAe,QAAQ,aAAa,UAAU,GAAG,KAAA,GACtG,QACG;AACH,UAAM,WAAW,OAAO,oBAAC,MAAA,EAAK,MAAM,MAAM,MAAM,UAAU,OAAO,UAAA,CAAW,IAAK;AACjF,WACE,oBAAC,QAAA,EAAO,KAAU,MAAM,UAAU,cAA4B,OAAO,aAAc,GAAG,MACnF,SAAA,CACH;AAAA,EAEJ;AACF;AAEA,eAAe,cAAc;"}
@@ -0,0 +1,66 @@
1
+ import { default as React } from 'react';
2
+ import { InteractiveSize, InputWidth } from '../../../theme/size-tokens';
3
+ import { Alignment, ColorVariant } from '../../../theme/tokens';
4
+ export type ButtonProps = {
5
+ /** Button label content - text, icons, or other elements */
6
+ children?: React.ReactNode;
7
+ /** Click event handler */
8
+ onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
9
+ /** Mouse enter event handler */
10
+ onMouseEnter?: (e: React.MouseEvent<HTMLButtonElement>) => void;
11
+ /** Mouse leave event handler */
12
+ onMouseLeave?: (e: React.MouseEvent<HTMLButtonElement>) => void;
13
+ /** Mouse down event handler */
14
+ onMouseDown?: (e: React.MouseEvent<HTMLButtonElement>) => void;
15
+ /** Blur event handler */
16
+ onBlur?: (e: React.FocusEvent<HTMLButtonElement>) => void;
17
+ /** Accessible label for icon-only buttons (required when no children) */
18
+ ariaLabel?: string;
19
+ /** Disables button interaction and applies disabled styling */
20
+ disabled?: boolean;
21
+ /** HTML button type attribute */
22
+ type?: 'button' | 'submit' | 'reset';
23
+ /** Additional CSS classes applied to the button */
24
+ className?: string;
25
+ /** Icon element to display alongside button text */
26
+ icon?: React.ReactNode;
27
+ /** Position of the icon relative to button text */
28
+ iconPosition?: 'left' | 'right';
29
+ /** Color variant affecting button appearance */
30
+ variant?: ColorVariant;
31
+ /** Visual style modifier - solid (filled), outline (bordered), ghost (transparent), link (text-only), or soft (subtle background) */
32
+ style?: 'solid' | 'outline' | 'ghost' | 'link' | 'soft';
33
+ /** Size variant - uses unified size system (xs, sm, md, lg, xl) */
34
+ size?: InteractiveSize;
35
+ /** Border radius style - default (rounded), pill (fully rounded), square (sharp corners), circle (for icon-only buttons) */
36
+ rounded?: 'default' | 'pill' | 'square' | 'circle';
37
+ /** Shows loading spinner and disables interaction */
38
+ loading?: boolean;
39
+ /** Width of the button */
40
+ width?: InputWidth;
41
+ /** When true, button spans full width of container (same as width="full") */
42
+ fullWidth?: boolean;
43
+ /** When true, button uses wider min-width (good for prominent actions) */
44
+ wide?: boolean;
45
+ /** Aligns the button within its container: left, center, or right */
46
+ align?: Alignment;
47
+ /** Applies active/pressed state styling */
48
+ active?: boolean;
49
+ /** ARIA expanded state - indicates if controlled element is expanded */
50
+ 'aria-expanded'?: boolean;
51
+ /** ARIA haspopup - indicates element has popup menu/dialog */
52
+ 'aria-haspopup'?: boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';
53
+ /** ARIA controls - ID of element controlled by this button */
54
+ 'aria-controls'?: string;
55
+ };
56
+ /**
57
+ * Accessible Button component
58
+ * - Color variants: neutral, primary, accent, info, success, warning, error
59
+ * - Style modifiers: solid (default), outline, ghost, link, soft
60
+ * - Sizes: xs, sm, md (default), lg, xl
61
+ * - Supports icons with flexible positioning (left/right)
62
+ * - Icon-only buttons require `ariaLabel` for accessibility
63
+ */
64
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
65
+ export default Button;
66
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/button/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAoB,eAAe,EAAE,UAAU,EAAmB,MAAM,4BAA4B,CAAC;AAC5G,OAAO,EAAE,SAAS,EAAoC,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAElG,MAAM,MAAM,WAAW,GAAG;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,0BAA0B;IAC1B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC3D,gCAAgC;IAChC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAChE,gCAAgC;IAChC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAChE,+BAA+B;IAC/B,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC/D,yBAAyB;IACzB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC1D,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,gDAAgD;IAChD,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,qIAAqI;IACrI,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACxD,mEAAmE;IACnE,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,4HAA4H;IAC5H,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnD,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,qEAAqE;IACrE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/F,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,MAAM,uFA0IX,CAAC;AAIF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Button Component - Comprehensive Examples
3
+ *
4
+ * This file demonstrates all Button component features including:
5
+ * - All 7 color variants (neutral, primary, accent, info, success, warning, error)
6
+ * - All 5 style modifiers (solid, outline, ghost, link, soft)
7
+ * - All 5 sizes (xs, sm, md, lg, xl)
8
+ * - All states (normal, hover, active, disabled, loading)
9
+ * - Icon positioning and icon-only buttons
10
+ * - Usage in forms, dialogs, and cards
11
+ * - Accessibility features
12
+ */
13
+ /**
14
+ * EXAMPLE 1: All Color Variants (Solid Style)
15
+ * Demonstrates the 7 semantic color variants with solid background
16
+ */
17
+ export declare function AllVariantsExample(): import("react/jsx-runtime").JSX.Element;
18
+ /**
19
+ * EXAMPLE 2: All Style Modifiers
20
+ * Shows how each style modifier affects appearance
21
+ */
22
+ export declare function AllStylesExample(): import("react/jsx-runtime").JSX.Element;
23
+ /**
24
+ * EXAMPLE 3: All Sizes
25
+ * Demonstrates the 5 available sizes from xs to xl
26
+ */
27
+ export declare function AllSizesExample(): import("react/jsx-runtime").JSX.Element;
28
+ /**
29
+ * EXAMPLE 4: All States
30
+ * Shows normal, hover, active, disabled, and loading states
31
+ */
32
+ export declare function AllStatesExample(): import("react/jsx-runtime").JSX.Element;
33
+ /**
34
+ * EXAMPLE 5: Icon Buttons
35
+ * Demonstrates icon positioning and icon-only buttons
36
+ */
37
+ export declare function IconButtonsExample(): import("react/jsx-runtime").JSX.Element;
38
+ /**
39
+ * EXAMPLE 6: Form Usage
40
+ * Demonstrates buttons in form contexts with proper types
41
+ */
42
+ export declare function FormUsageExample(): import("react/jsx-runtime").JSX.Element;
43
+ /**
44
+ * EXAMPLE 7: Dialog/Modal Usage
45
+ * Shows typical dialog button patterns
46
+ */
47
+ export declare function DialogUsageExample(): import("react/jsx-runtime").JSX.Element;
48
+ /**
49
+ * EXAMPLE 8: Card Actions
50
+ * Shows button usage in card contexts
51
+ */
52
+ export declare function CardActionsExample(): import("react/jsx-runtime").JSX.Element;
53
+ /**
54
+ * EXAMPLE 9: Width Variants
55
+ * Shows different width options
56
+ */
57
+ export declare function WidthVariantsExample(): import("react/jsx-runtime").JSX.Element;
58
+ /**
59
+ * EXAMPLE 10: Accessibility Features
60
+ * Demonstrates proper accessibility implementation
61
+ */
62
+ export declare function AccessibilityExample(): import("react/jsx-runtime").JSX.Element;
63
+ /**
64
+ * EXAMPLE 11: Rounded Variants
65
+ * Shows different border radius options
66
+ */
67
+ export declare function RoundedVariantsExample(): import("react/jsx-runtime").JSX.Element;
68
+ /**
69
+ * EXAMPLE 12: Real-World Complete Example
70
+ * A realistic user profile card with multiple button uses
71
+ */
72
+ export declare function RealWorldExample(): import("react/jsx-runtime").JSX.Element;
73
+ //# sourceMappingURL=button.examples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.examples.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/button/button.examples.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;;GAGG;AACH,wBAAgB,kBAAkB,4CAyBjC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,4CAsD/B;AAED;;;GAGG;AACH,wBAAgB,eAAe,4CA6B9B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,4CAoD/B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,4CA2CjC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,4CAsC/B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,4CAqBjC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,4CA4BjC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,4CAiBnC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,4CAkCnC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,4CAsBrC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,4CAwC/B"}
@@ -0,0 +1,118 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { interactiveSizes, inputWidthSizes } from "../../../theme/size-tokens.js";
4
+ import { inputAlignClasses, colorVariants } from "../../../theme/tokens.js";
5
+ const Button = React.forwardRef(
6
+ ({
7
+ children,
8
+ onClick,
9
+ onMouseEnter,
10
+ onMouseLeave,
11
+ onMouseDown,
12
+ onBlur,
13
+ ariaLabel,
14
+ disabled = false,
15
+ type = "button",
16
+ className = "",
17
+ icon,
18
+ iconPosition = "left",
19
+ variant = "neutral",
20
+ style = "solid",
21
+ size = "md",
22
+ rounded = "default",
23
+ loading = false,
24
+ width = "auto",
25
+ fullWidth = false,
26
+ wide = false,
27
+ align,
28
+ active = false,
29
+ "aria-expanded": ariaExpanded,
30
+ "aria-haspopup": ariaHaspopup,
31
+ "aria-controls": ariaControls
32
+ }, ref) => {
33
+ const isIconOnly = icon && !children;
34
+ if (isIconOnly && !ariaLabel) {
35
+ console.warn("Button: Icon-only buttons require an ariaLabel for accessibility");
36
+ }
37
+ const getStyleClasses = () => {
38
+ const variantKey = variant;
39
+ switch (style) {
40
+ case "outline":
41
+ return `${colorVariants.outline[variantKey]}`;
42
+ case "ghost":
43
+ return colorVariants.ghost[variantKey];
44
+ case "link":
45
+ return colorVariants.link[variantKey];
46
+ case "soft":
47
+ return colorVariants.soft[variantKey];
48
+ case "solid":
49
+ default:
50
+ return `${colorVariants.solid[variantKey]} shadow-sm hover:shadow-md`;
51
+ }
52
+ };
53
+ const sizeConfig = interactiveSizes[size];
54
+ const sizeClasses = `${sizeConfig.height} ${sizeConfig.padding} ${sizeConfig.text}`;
55
+ const roundedClasses = {
56
+ default: "rounded-md",
57
+ pill: "rounded-full",
58
+ square: "rounded-none aspect-square",
59
+ circle: "rounded-full aspect-square"
60
+ };
61
+ const displayIcon = loading ? /* @__PURE__ */ jsxs("svg", { className: "animate-spin h-4 w-4", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: [
62
+ /* @__PURE__ */ jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
63
+ /* @__PURE__ */ jsx(
64
+ "path",
65
+ {
66
+ className: "opacity-75",
67
+ fill: "currentColor",
68
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
69
+ }
70
+ )
71
+ ] }) : icon;
72
+ const styleClasses = getStyleClasses();
73
+ const effectiveWidth = fullWidth ? "full" : wide ? "xl" : width;
74
+ const widthClasses = inputWidthSizes[effectiveWidth];
75
+ const alignmentClass = align ? inputAlignClasses[align] : "";
76
+ const activeClasses = active ? "active:scale-95" : "";
77
+ const shouldRenderIconSlots = !isIconOnly && Boolean(displayIcon);
78
+ const cloneIcon = () => {
79
+ if (!displayIcon) return null;
80
+ if (React.isValidElement(displayIcon)) {
81
+ return React.cloneElement(displayIcon, { "aria-hidden": false });
82
+ }
83
+ return displayIcon;
84
+ };
85
+ const showLeftIcon = shouldRenderIconSlots && iconPosition === "left";
86
+ const showRightIcon = shouldRenderIconSlots && iconPosition === "right";
87
+ const hasDisplayOverride = className.includes("hidden") || className.includes("inline") || className.includes("block") || className.includes("flex");
88
+ const baseDisplayClass = hasDisplayOverride ? "" : "inline-flex";
89
+ return /* @__PURE__ */ jsxs(
90
+ "button",
91
+ {
92
+ ref,
93
+ type,
94
+ onClick,
95
+ onMouseEnter,
96
+ onMouseLeave,
97
+ onMouseDown,
98
+ onBlur,
99
+ "aria-label": ariaLabel,
100
+ "aria-expanded": ariaExpanded,
101
+ "aria-haspopup": ariaHaspopup,
102
+ "aria-controls": ariaControls,
103
+ disabled: disabled || loading,
104
+ className: `${baseDisplayClass} items-center justify-center ${alignmentClass} ${roundedClasses[rounded]} font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50 ${styleClasses} ${sizeClasses} ${isIconOnly ? "p-0" : ""} ${widthClasses} ${activeClasses} ${className}`,
105
+ children: [
106
+ showLeftIcon && /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center mr-2", children: cloneIcon() }),
107
+ isIconOnly ? /* @__PURE__ */ jsx("span", { className: "inline-flex items-center justify-center", children: displayIcon }) : /* @__PURE__ */ jsx("span", { className: "inline-flex flex-1 justify-center text-center", children }),
108
+ showRightIcon && /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center ml-2", children: cloneIcon() })
109
+ ]
110
+ }
111
+ );
112
+ }
113
+ );
114
+ Button.displayName = "Button";
115
+ export {
116
+ Button as default
117
+ };
118
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sources":["../../../../src/components/forms/button/button.tsx"],"sourcesContent":["import React from 'react';\n\nimport { interactiveSizes, InteractiveSize, InputWidth, inputWidthSizes } from '../../../theme/size-tokens';\nimport { Alignment, colorVariants, inputAlignClasses, ColorVariant } from '../../../theme/tokens';\n\nexport type ButtonProps = {\n /** Button label content - text, icons, or other elements */\n children?: React.ReactNode;\n /** Click event handler */\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n /** Mouse enter event handler */\n onMouseEnter?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n /** Mouse leave event handler */\n onMouseLeave?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n /** Mouse down event handler */\n onMouseDown?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n /** Blur event handler */\n onBlur?: (e: React.FocusEvent<HTMLButtonElement>) => void;\n /** Accessible label for icon-only buttons (required when no children) */\n ariaLabel?: string;\n /** Disables button interaction and applies disabled styling */\n disabled?: boolean;\n /** HTML button type attribute */\n type?: 'button' | 'submit' | 'reset';\n /** Additional CSS classes applied to the button */\n className?: string;\n /** Icon element to display alongside button text */\n icon?: React.ReactNode;\n /** Position of the icon relative to button text */\n iconPosition?: 'left' | 'right';\n /** Color variant affecting button appearance */\n variant?: ColorVariant;\n /** Visual style modifier - solid (filled), outline (bordered), ghost (transparent), link (text-only), or soft (subtle background) */\n style?: 'solid' | 'outline' | 'ghost' | 'link' | 'soft';\n /** Size variant - uses unified size system (xs, sm, md, lg, xl) */\n size?: InteractiveSize;\n /** Border radius style - default (rounded), pill (fully rounded), square (sharp corners), circle (for icon-only buttons) */\n rounded?: 'default' | 'pill' | 'square' | 'circle';\n /** Shows loading spinner and disables interaction */\n loading?: boolean;\n /** Width of the button */\n width?: InputWidth;\n /** When true, button spans full width of container (same as width=\"full\") */\n fullWidth?: boolean;\n /** When true, button uses wider min-width (good for prominent actions) */\n wide?: boolean;\n /** Aligns the button within its container: left, center, or right */\n align?: Alignment;\n /** Applies active/pressed state styling */\n active?: boolean;\n /** ARIA expanded state - indicates if controlled element is expanded */\n 'aria-expanded'?: boolean;\n /** ARIA haspopup - indicates element has popup menu/dialog */\n 'aria-haspopup'?: boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';\n /** ARIA controls - ID of element controlled by this button */\n 'aria-controls'?: string;\n};\n\n/**\n * Accessible Button component\n * - Color variants: neutral, primary, accent, info, success, warning, error\n * - Style modifiers: solid (default), outline, ghost, link, soft\n * - Sizes: xs, sm, md (default), lg, xl\n * - Supports icons with flexible positioning (left/right)\n * - Icon-only buttons require `ariaLabel` for accessibility\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n onClick,\n onMouseEnter,\n onMouseLeave,\n onMouseDown,\n onBlur,\n ariaLabel,\n disabled = false,\n type = 'button',\n className = '',\n icon,\n iconPosition = 'left',\n variant = 'neutral',\n style = 'solid',\n size = 'md',\n rounded = 'default',\n loading = false,\n width = 'auto',\n fullWidth = false,\n wide = false,\n align,\n active = false,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHaspopup,\n 'aria-controls': ariaControls\n },\n ref\n ) => {\n const isIconOnly = icon && !children;\n\n // Icon-only buttons MUST have an aria-label for accessibility\n if (isIconOnly && !ariaLabel) {\n // eslint-disable-next-line no-console\n console.warn('Button: Icon-only buttons require an ariaLabel for accessibility');\n }\n\n // Style modifiers\n const getStyleClasses = () => {\n const variantKey = variant as keyof typeof colorVariants.solid;\n\n switch (style) {\n case 'outline':\n return `${colorVariants.outline[variantKey]}`;\n case 'ghost':\n return colorVariants.ghost[variantKey];\n case 'link':\n return colorVariants.link[variantKey];\n case 'soft':\n return colorVariants.soft[variantKey];\n case 'solid':\n default:\n return `${colorVariants.solid[variantKey]} shadow-sm hover:shadow-md`;\n }\n };\n\n // Sizes - from unified size system\n const sizeConfig = interactiveSizes[size];\n const sizeClasses = `${sizeConfig.height} ${sizeConfig.padding} ${sizeConfig.text}`;\n\n const roundedClasses = {\n default: 'rounded-md',\n pill: 'rounded-full',\n square: 'rounded-none aspect-square',\n circle: 'rounded-full aspect-square'\n };\n\n // Show loading spinner or icon\n const displayIcon = loading ? (\n <svg className=\"animate-spin h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n ) : (\n icon\n );\n\n const styleClasses = getStyleClasses();\n const effectiveWidth = fullWidth ? 'full' : wide ? 'xl' : width;\n const widthClasses = inputWidthSizes[effectiveWidth];\n const alignmentClass = align ? inputAlignClasses[align] : '';\n const activeClasses = active ? 'active:scale-95' : '';\n\n const shouldRenderIconSlots = !isIconOnly && Boolean(displayIcon);\n const cloneIcon = () => {\n if (!displayIcon) return null;\n if (React.isValidElement(displayIcon)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return React.cloneElement(displayIcon as React.ReactElement<any>, { 'aria-hidden': false });\n }\n return displayIcon;\n };\n\n const showLeftIcon = shouldRenderIconSlots && iconPosition === 'left';\n const showRightIcon = shouldRenderIconSlots && iconPosition === 'right';\n\n // Check if className contains display utilities to avoid conflicts\n const hasDisplayOverride =\n className.includes('hidden') ||\n className.includes('inline') ||\n className.includes('block') ||\n className.includes('flex');\n const baseDisplayClass = hasDisplayOverride ? '' : 'inline-flex';\n\n return (\n <button\n ref={ref}\n type={type}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseDown={onMouseDown}\n onBlur={onBlur}\n aria-label={ariaLabel}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n aria-controls={ariaControls}\n disabled={disabled || loading}\n className={`${baseDisplayClass} items-center justify-center ${alignmentClass} ${roundedClasses[rounded]} font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50 ${styleClasses} ${sizeClasses} ${\n isIconOnly ? 'p-0' : ''\n } ${widthClasses} ${activeClasses} ${className}`}\n >\n {showLeftIcon && <span className=\"flex shrink-0 items-center mr-2\">{cloneIcon()}</span>}\n {isIconOnly ? (\n <span className=\"inline-flex items-center justify-center\">{displayIcon}</span>\n ) : (\n <span className=\"inline-flex flex-1 justify-center text-center\">{children}</span>\n )}\n {showRightIcon && <span className=\"flex shrink-0 items-center ml-2\">{cloneIcon()}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { default as React } from 'react';
2
+ import { IconSize } from '../../system/icon';
3
+ import { ButtonProps as BaseButtonProps } from './button';
4
+ import { ColorVariant } from '../../../theme/tokens';
5
+ export interface IconButtonProps extends Omit<BaseButtonProps, 'icon' | 'style' | 'children'> {
6
+ icon: string;
7
+ ariaLabel: string;
8
+ iconSize?: IconSize;
9
+ iconColor?: ColorVariant | 'currentColor';
10
+ buttonStyle?: BaseButtonProps['style'];
11
+ /** Remove the default button sizing so the icon renders without extra padding */
12
+ noPadding?: boolean;
13
+ /** Icon to display on hover (if not provided, hover will keep the same icon) */
14
+ hoverIcon?: string;
15
+ children?: never;
16
+ }
17
+ /**
18
+ * IconButton - Icon-only button using Icon wrapper for consistent icon sizing
19
+ * Usage: <IconButton icon="plus" iconSize="md" ariaLabel="Add item" />
20
+ */
21
+ declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
22
+ export default IconButton;
23
+ //# sourceMappingURL=icon-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-button.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/button/icon-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAAQ,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAe,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,YAAY,GAAG,cAAc,CAAC;IAC1C,WAAW,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED;;;GAGG;AACH,QAAA,MAAM,UAAU,2FAgGf,CAAC;AAIF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,85 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import React, { useState, useRef, useCallback, useEffect } from "react";
3
+ import { Icon } from "../../system/icon/icon.js";
4
+ import Button from "./button.js";
5
+ const IconButton = React.forwardRef(
6
+ ({
7
+ icon,
8
+ iconSize = "md",
9
+ iconColor = "currentColor",
10
+ buttonStyle,
11
+ noPadding = false,
12
+ ariaLabel,
13
+ hoverIcon,
14
+ onMouseEnter,
15
+ onMouseLeave,
16
+ onClick,
17
+ className = "",
18
+ ...rest
19
+ }, ref) => {
20
+ const [isHovered, setIsHovered] = useState(false);
21
+ const buttonRef = useRef(null);
22
+ const mergedRef = useCallback(
23
+ (node) => {
24
+ buttonRef.current = node;
25
+ if (typeof ref === "function") {
26
+ ref(node);
27
+ } else if (ref) {
28
+ ref.current = node;
29
+ }
30
+ },
31
+ [ref]
32
+ );
33
+ const handleMouseEnter = (e) => {
34
+ setIsHovered(true);
35
+ onMouseEnter?.(e);
36
+ };
37
+ const handleMouseLeave = (e) => {
38
+ setIsHovered(false);
39
+ onMouseLeave?.(e);
40
+ };
41
+ const handleClick = (e) => {
42
+ setIsHovered(false);
43
+ onClick?.(e);
44
+ };
45
+ useEffect(() => {
46
+ if (!hoverIcon || !isHovered) return;
47
+ const handleGlobalMouseMove = (e) => {
48
+ if (!buttonRef.current) return;
49
+ const rect = buttonRef.current.getBoundingClientRect();
50
+ const isOutside = e.clientX < rect.left || e.clientX > rect.right || e.clientY < rect.top || e.clientY > rect.bottom;
51
+ if (isOutside) {
52
+ setIsHovered(false);
53
+ }
54
+ };
55
+ document.addEventListener("mousemove", handleGlobalMouseMove);
56
+ return () => {
57
+ document.removeEventListener("mousemove", handleGlobalMouseMove);
58
+ };
59
+ }, [hoverIcon, isHovered]);
60
+ const displayIcon = isHovered && hoverIcon ? hoverIcon : icon;
61
+ const iconNode = displayIcon ? /* @__PURE__ */ jsx(Icon, { name: displayIcon, size: iconSize, color: iconColor }) : null;
62
+ const paddingClasses = noPadding ? "!px-0 !py-0 !h-auto !min-h-0 !w-auto !min-w-0" : "";
63
+ const hoverClasses = noPadding ? "hover:!bg-transparent active:!bg-transparent" : "";
64
+ const mergedClassName = [paddingClasses, hoverClasses, className].filter(Boolean).join(" ");
65
+ return /* @__PURE__ */ jsx(
66
+ Button,
67
+ {
68
+ ref: mergedRef,
69
+ icon: iconNode,
70
+ style: buttonStyle,
71
+ ariaLabel,
72
+ onMouseEnter: handleMouseEnter,
73
+ onMouseLeave: handleMouseLeave,
74
+ onClick: handleClick,
75
+ className: mergedClassName,
76
+ ...rest
77
+ }
78
+ );
79
+ }
80
+ );
81
+ IconButton.displayName = "IconButton";
82
+ export {
83
+ IconButton as default
84
+ };
85
+ //# sourceMappingURL=icon-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-button.js","sources":["../../../../src/components/forms/button/icon-button.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport { Icon, IconSize } from '../../system/icon';\nimport Button, { ButtonProps as BaseButtonProps } from './button';\nimport { ColorVariant } from '../../../theme/tokens';\n\nexport interface IconButtonProps extends Omit<BaseButtonProps, 'icon' | 'style' | 'children'> {\n icon: string;\n ariaLabel: string;\n iconSize?: IconSize;\n iconColor?: ColorVariant | 'currentColor';\n buttonStyle?: BaseButtonProps['style'];\n /** Remove the default button sizing so the icon renders without extra padding */\n noPadding?: boolean;\n /** Icon to display on hover (if not provided, hover will keep the same icon) */\n hoverIcon?: string;\n children?: never;\n}\n\n/**\n * IconButton - Icon-only button using Icon wrapper for consistent icon sizing\n * Usage: <IconButton icon=\"plus\" iconSize=\"md\" ariaLabel=\"Add item\" />\n */\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n icon,\n iconSize = 'md',\n iconColor = 'currentColor',\n buttonStyle,\n noPadding = false,\n ariaLabel,\n hoverIcon,\n onMouseEnter,\n onMouseLeave,\n onClick,\n className = '',\n ...rest\n },\n ref\n ) => {\n const [isHovered, setIsHovered] = useState(false);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n // Merged callback ref that handles both internal and forwarded refs\n const mergedRef = useCallback(\n (node: HTMLButtonElement | null) => {\n // Update internal ref\n buttonRef.current = node;\n\n // Forward to external ref\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref]\n );\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLButtonElement>) => {\n setIsHovered(true);\n onMouseEnter?.(e);\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLButtonElement>) => {\n setIsHovered(false);\n onMouseLeave?.(e);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n // Reset hover state on click - handles click-drag scenarios\n // where mouseLeave might not fire\n setIsHovered(false);\n onClick?.(e);\n };\n\n // Global mousemove listener to detect when mouse leaves button during drag\n useEffect(() => {\n if (!hoverIcon || !isHovered) return;\n\n const handleGlobalMouseMove = (e: MouseEvent) => {\n if (!buttonRef.current) return;\n\n const rect = buttonRef.current.getBoundingClientRect();\n const isOutside =\n e.clientX < rect.left || e.clientX > rect.right || e.clientY < rect.top || e.clientY > rect.bottom;\n\n if (isOutside) {\n setIsHovered(false);\n }\n };\n\n document.addEventListener('mousemove', handleGlobalMouseMove);\n return () => {\n document.removeEventListener('mousemove', handleGlobalMouseMove);\n };\n }, [hoverIcon, isHovered]);\n\n const displayIcon = isHovered && hoverIcon ? hoverIcon : icon;\n const iconNode = displayIcon ? <Icon name={displayIcon} size={iconSize} color={iconColor} /> : null;\n const paddingClasses = noPadding ? '!px-0 !py-0 !h-auto !min-h-0 !w-auto !min-w-0' : '';\n const hoverClasses = noPadding ? 'hover:!bg-transparent active:!bg-transparent' : '';\n const mergedClassName = [paddingClasses, hoverClasses, className].filter(Boolean).join(' ');\n\n return (\n <Button\n ref={mergedRef}\n icon={iconNode}\n style={buttonStyle}\n ariaLabel={ariaLabel}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleClick}\n className={mergedClassName}\n {...rest}\n />\n );\n }\n);\n\nIconButton.displayName = 'IconButton';\n\nexport default IconButton;\n"],"names":[],"mappings":";;;;AAsBA,MAAM,aAAa,MAAM;AAAA,EACvB,CACE;AAAA,IACE;AAAA,IACA,WAAW;AAAA,IACX,YAAY;AAAA,IACZ;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,UAAM,YAAY,OAAiC,IAAI;AAGvD,UAAM,YAAY;AAAA,MAChB,CAAC,SAAmC;AAElC,kBAAU,UAAU;AAGpB,YAAI,OAAO,QAAQ,YAAY;AAC7B,cAAI,IAAI;AAAA,QACV,WAAW,KAAK;AACd,cAAI,UAAU;AAAA,QAChB;AAAA,MACF;AAAA,MACA,CAAC,GAAG;AAAA,IAAA;AAGN,UAAM,mBAAmB,CAAC,MAA2C;AACnE,mBAAa,IAAI;AACjB,qBAAe,CAAC;AAAA,IAClB;AAEA,UAAM,mBAAmB,CAAC,MAA2C;AACnE,mBAAa,KAAK;AAClB,qBAAe,CAAC;AAAA,IAClB;AAEA,UAAM,cAAc,CAAC,MAA2C;AAG9D,mBAAa,KAAK;AAClB,gBAAU,CAAC;AAAA,IACb;AAGA,cAAU,MAAM;AACd,UAAI,CAAC,aAAa,CAAC,UAAW;AAE9B,YAAM,wBAAwB,CAAC,MAAkB;AAC/C,YAAI,CAAC,UAAU,QAAS;AAExB,cAAM,OAAO,UAAU,QAAQ,sBAAA;AAC/B,cAAM,YACJ,EAAE,UAAU,KAAK,QAAQ,EAAE,UAAU,KAAK,SAAS,EAAE,UAAU,KAAK,OAAO,EAAE,UAAU,KAAK;AAE9F,YAAI,WAAW;AACb,uBAAa,KAAK;AAAA,QACpB;AAAA,MACF;AAEA,eAAS,iBAAiB,aAAa,qBAAqB;AAC5D,aAAO,MAAM;AACX,iBAAS,oBAAoB,aAAa,qBAAqB;AAAA,MACjE;AAAA,IACF,GAAG,CAAC,WAAW,SAAS,CAAC;AAEzB,UAAM,cAAc,aAAa,YAAY,YAAY;AACzD,UAAM,WAAW,cAAc,oBAAC,MAAA,EAAK,MAAM,aAAa,MAAM,UAAU,OAAO,UAAA,CAAW,IAAK;AAC/F,UAAM,iBAAiB,YAAY,kDAAkD;AACrF,UAAM,eAAe,YAAY,iDAAiD;AAClF,UAAM,kBAAkB,CAAC,gBAAgB,cAAc,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1F,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP;AAAA,QACA,cAAc;AAAA,QACd,cAAc;AAAA,QACd,SAAS;AAAA,QACT,WAAW;AAAA,QACV,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA,WAAW,cAAc;"}
@@ -0,0 +1,10 @@
1
+ export { default } from './button';
2
+ export { default as Button } from './button';
3
+ export type { ButtonProps } from './button';
4
+ export { default as ButtonWithIcon } from './button-with-icon';
5
+ export type { ButtonWithIconProps } from './button-with-icon';
6
+ export { default as IconButton } from './icon-button';
7
+ export type { IconButtonProps } from './icon-button';
8
+ export { default as InlineButton } from './inline-button';
9
+ export type { InlineButtonProps } from './inline-button';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/button/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { default as React } from 'react';
2
+ import { ColorVariant } from '../../../theme/tokens';
3
+ export type InlineButtonProps = {
4
+ /** Button label content - typically text */
5
+ children: React.ReactNode;
6
+ /** Click event handler */
7
+ onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
8
+ /** Accessible label (optional, children used by default) */
9
+ ariaLabel?: string;
10
+ /** Disables button interaction and applies disabled styling */
11
+ disabled?: boolean;
12
+ /** HTML button type attribute */
13
+ type?: 'button' | 'submit' | 'reset';
14
+ /** Additional CSS classes applied to the button */
15
+ className?: string;
16
+ /** Icon name string passed to the Icon component to display alongside button text */
17
+ icon?: string;
18
+ /** Color variant - defaults to primary for link-like appearance */
19
+ variant?: ColorVariant;
20
+ /** Shows loading spinner and disables interaction */
21
+ loading?: boolean;
22
+ /** Whether to show underline on hover (default: true) */
23
+ underline?: boolean;
24
+ /** Icon size token - defaults to 'xs' to match text size */
25
+ iconSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
26
+ };
27
+ /**
28
+ * Inline Button - a minimal button designed to be embedded within text
29
+ *
30
+ * Perfect for use cases like:
31
+ * - "By signing in, you agree to our [Terms of Service]"
32
+ * - "Learn more about [pricing]"
33
+ * - Inline actions within paragraphs
34
+ *
35
+ * Features:
36
+ * - No background or padding by default
37
+ * - Inherits surrounding text sizing
38
+ * - Optional icon support
39
+ * - Color variants for different contexts
40
+ * - Hover underline (can be disabled)
41
+ * - Fully accessible
42
+ */
43
+ declare const InlineButton: React.ForwardRefExoticComponent<InlineButtonProps & React.RefAttributes<HTMLButtonElement>>;
44
+ export default InlineButton;
45
+ //# sourceMappingURL=inline-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-button.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/button/inline-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4CAA4C;IAC5C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,0BAA0B;IAC1B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC3D,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,YAAY,6FA2DjB,CAAC;AAIF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { Icon } from "../../system/icon/icon.js";
4
+ const InlineButton = React.forwardRef(
5
+ ({
6
+ children,
7
+ onClick,
8
+ ariaLabel,
9
+ disabled = false,
10
+ type = "button",
11
+ className = "",
12
+ icon,
13
+ variant = "primary",
14
+ loading = false,
15
+ underline = true,
16
+ iconSize = "xs"
17
+ }, ref) => {
18
+ const variantClasses = {
19
+ neutral: "text-neutral hover:text-neutral-hover active:text-neutral-active",
20
+ primary: "text-primary hover:text-primary-hover active:text-primary-active",
21
+ accent: "text-accent hover:text-accent-hover active:text-accent-active",
22
+ info: "text-info hover:text-info-hover active:text-info-active",
23
+ success: "text-success hover:text-success-hover active:text-success-active",
24
+ warning: "text-warning hover:text-warning-hover active:text-warning-active",
25
+ error: "text-error hover:text-error-hover active:text-error-active"
26
+ };
27
+ const baseClasses = [
28
+ "inline-flex items-center gap-0.5",
29
+ "font-medium",
30
+ "transition-colors duration-200",
31
+ "focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",
32
+ disabled || loading ? "cursor-not-allowed opacity-50" : "cursor-pointer",
33
+ underline ? "hover:underline" : "",
34
+ variantClasses[variant],
35
+ className
36
+ ].filter(Boolean).join(" ");
37
+ const iconElement = icon ? /* @__PURE__ */ jsx(Icon, { name: icon, size: iconSize }) : null;
38
+ return /* @__PURE__ */ jsxs(
39
+ "button",
40
+ {
41
+ ref,
42
+ type,
43
+ onClick,
44
+ disabled: disabled || loading,
45
+ "aria-label": ariaLabel,
46
+ className: baseClasses,
47
+ children: [
48
+ children,
49
+ iconElement
50
+ ]
51
+ }
52
+ );
53
+ }
54
+ );
55
+ InlineButton.displayName = "InlineButton";
56
+ export {
57
+ InlineButton as default
58
+ };
59
+ //# sourceMappingURL=inline-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-button.js","sources":["../../../../src/components/forms/button/inline-button.tsx"],"sourcesContent":["import React from 'react';\nimport { ColorVariant } from '../../../theme/tokens';\nimport { Icon } from '../../system/icon/icon';\n\nexport type InlineButtonProps = {\n /** Button label content - typically text */\n children: React.ReactNode;\n /** Click event handler */\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n /** Accessible label (optional, children used by default) */\n ariaLabel?: string;\n /** Disables button interaction and applies disabled styling */\n disabled?: boolean;\n /** HTML button type attribute */\n type?: 'button' | 'submit' | 'reset';\n /** Additional CSS classes applied to the button */\n className?: string;\n /** Icon name string passed to the Icon component to display alongside button text */\n icon?: string;\n /** Color variant - defaults to primary for link-like appearance */\n variant?: ColorVariant;\n /** Shows loading spinner and disables interaction */\n loading?: boolean;\n /** Whether to show underline on hover (default: true) */\n underline?: boolean;\n /** Icon size token - defaults to 'xs' to match text size */\n iconSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n};\n\n/**\n * Inline Button - a minimal button designed to be embedded within text\n *\n * Perfect for use cases like:\n * - \"By signing in, you agree to our [Terms of Service]\"\n * - \"Learn more about [pricing]\"\n * - Inline actions within paragraphs\n *\n * Features:\n * - No background or padding by default\n * - Inherits surrounding text sizing\n * - Optional icon support\n * - Color variants for different contexts\n * - Hover underline (can be disabled)\n * - Fully accessible\n */\nconst InlineButton = React.forwardRef<HTMLButtonElement, InlineButtonProps>(\n (\n {\n children,\n onClick,\n ariaLabel,\n disabled = false,\n type = 'button',\n className = '',\n icon,\n variant = 'primary',\n loading = false,\n underline = true,\n iconSize = 'xs'\n },\n ref\n ) => {\n // Color variant styles\n const variantClasses: Record<ColorVariant, string> = {\n neutral: 'text-neutral hover:text-neutral-hover active:text-neutral-active',\n primary: 'text-primary hover:text-primary-hover active:text-primary-active',\n accent: 'text-accent hover:text-accent-hover active:text-accent-active',\n info: 'text-info hover:text-info-hover active:text-info-active',\n success: 'text-success hover:text-success-hover active:text-success-active',\n warning: 'text-warning hover:text-warning-hover active:text-warning-active',\n error: 'text-error hover:text-error-hover active:text-error-active'\n };\n\n // Base classes - minimal styling, inline with text\n const baseClasses = [\n 'inline-flex items-center gap-0.5',\n 'font-medium',\n 'transition-colors duration-200',\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring',\n disabled || loading ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n underline ? 'hover:underline' : '',\n variantClasses[variant],\n className\n ]\n .filter(Boolean)\n .join(' ');\n\n // Clone icon and apply size to make it proportional to text\n const iconElement = icon ? <Icon name={icon} size={iconSize} /> : null;\n\n return (\n <button\n ref={ref}\n type={type}\n onClick={onClick}\n disabled={disabled || loading}\n aria-label={ariaLabel}\n className={baseClasses}\n >\n {children}\n {iconElement}\n </button>\n );\n }\n);\n\nInlineButton.displayName = 'InlineButton';\n\nexport default InlineButton;\n"],"names":[],"mappings":";;;AA6CA,MAAM,eAAe,MAAM;AAAA,EACzB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,OAAO;AAAA,IACP,YAAY;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,WAAW;AAAA,EAAA,GAEb,QACG;AAEH,UAAM,iBAA+C;AAAA,MACnD,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAIT,UAAM,cAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,UAAU,kCAAkC;AAAA,MACxD,YAAY,oBAAoB;AAAA,MAChC,eAAe,OAAO;AAAA,MACtB;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAGX,UAAM,cAAc,OAAO,oBAAC,MAAA,EAAK,MAAM,MAAM,MAAM,UAAU,IAAK;AAElE,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,YAAY;AAAA,QACtB,cAAY;AAAA,QACZ,WAAW;AAAA,QAEV,UAAA;AAAA,UAAA;AAAA,UACA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,aAAa,cAAc;"}