@korsolutions/ui 0.0.84 → 0.0.86

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 (467) hide show
  1. package/AGENTS.md +3 -3
  2. package/dist/module/components/alert/components/alert-description.js.map +1 -1
  3. package/dist/module/components/alert/components/alert-icon.js.map +1 -1
  4. package/dist/module/components/alert/components/alert-root.js +7 -3
  5. package/dist/module/components/alert/components/alert-root.js.map +1 -1
  6. package/dist/module/components/alert-dialog/async-alert-dialog.js.map +1 -1
  7. package/dist/module/components/alert-dialog/components/alert-dialog-root.js +7 -3
  8. package/dist/module/components/alert-dialog/components/alert-dialog-root.js.map +1 -1
  9. package/dist/module/components/alert-dialog/variants/default.js +93 -85
  10. package/dist/module/components/alert-dialog/variants/default.js.map +1 -1
  11. package/dist/module/components/avatar/components/avatar-image.js.map +1 -1
  12. package/dist/module/components/avatar/components/avatar-root.js +7 -3
  13. package/dist/module/components/avatar/components/avatar-root.js.map +1 -1
  14. package/dist/module/components/badge/badge.js +11 -4
  15. package/dist/module/components/badge/badge.js.map +1 -1
  16. package/dist/module/components/button/button.js +7 -3
  17. package/dist/module/components/button/button.js.map +1 -1
  18. package/dist/module/components/button/variants/default.js +48 -44
  19. package/dist/module/components/button/variants/default.js.map +1 -1
  20. package/dist/module/components/button/variants/ghost.js +64 -60
  21. package/dist/module/components/button/variants/ghost.js.map +1 -1
  22. package/dist/module/components/button/variants/secondary.js +66 -62
  23. package/dist/module/components/button/variants/secondary.js.map +1 -1
  24. package/dist/module/components/calendar/calendar/calendar-root.js +6 -2
  25. package/dist/module/components/calendar/calendar/calendar-root.js.map +1 -1
  26. package/dist/module/components/calendar/calendar/calendar-weeks.js +6 -9
  27. package/dist/module/components/calendar/calendar/calendar-weeks.js.map +1 -1
  28. package/dist/module/components/calendar/shared/calendar-context.js.map +1 -1
  29. package/dist/module/components/calendar/shared/calendar-day.js.map +1 -1
  30. package/dist/module/components/calendar/shared/calendar-header.js.map +1 -1
  31. package/dist/module/components/calendar/shared/calendar-nav-buttons.js +4 -4
  32. package/dist/module/components/calendar/shared/calendar-nav-buttons.js.map +1 -1
  33. package/dist/module/components/calendar/shared/calendar-title.js.map +1 -1
  34. package/dist/module/components/calendar/shared/calendar-week-labels.js.map +1 -1
  35. package/dist/module/components/calendar/timeline/calendar-timeline.js.map +1 -1
  36. package/dist/module/components/calendar/week-calendar/week-calendar.js +4 -4
  37. package/dist/module/components/calendar/week-calendar/week-calendar.js.map +1 -1
  38. package/dist/module/components/card/card-root.js +6 -3
  39. package/dist/module/components/card/card-root.js.map +1 -1
  40. package/dist/module/components/checkbox/components/checkbox-root.js +7 -3
  41. package/dist/module/components/checkbox/components/checkbox-root.js.map +1 -1
  42. package/dist/module/components/combobox/components/combobox-content.js.map +1 -1
  43. package/dist/module/components/combobox/components/combobox-option.js.map +1 -1
  44. package/dist/module/components/combobox/components/combobox-overlay.js.map +1 -1
  45. package/dist/module/components/combobox/components/combobox-portal.js.map +1 -1
  46. package/dist/module/components/combobox/components/combobox-root.js +8 -4
  47. package/dist/module/components/combobox/components/combobox-root.js.map +1 -1
  48. package/dist/module/components/combobox/components/combobox-trigger.js.map +1 -1
  49. package/dist/module/components/combobox/context.js.map +1 -1
  50. package/dist/module/components/combobox/variants/default.js +91 -88
  51. package/dist/module/components/combobox/variants/default.js.map +1 -1
  52. package/dist/module/components/empty/components/empty-root.js +6 -2
  53. package/dist/module/components/empty/components/empty-root.js.map +1 -1
  54. package/dist/module/components/field/components/field-label.js.map +1 -1
  55. package/dist/module/components/field/components/field-root.js +6 -2
  56. package/dist/module/components/field/components/field-root.js.map +1 -1
  57. package/dist/module/components/icon/icon.js.map +1 -1
  58. package/dist/module/components/icon-button/icon-button.js +10 -7
  59. package/dist/module/components/icon-button/icon-button.js.map +1 -1
  60. package/dist/module/components/icon-button/variants/default.js +31 -24
  61. package/dist/module/components/icon-button/variants/default.js.map +1 -1
  62. package/dist/module/components/icon-button/variants/ghost.js +32 -25
  63. package/dist/module/components/icon-button/variants/ghost.js.map +1 -1
  64. package/dist/module/components/icon-button/variants/secondary.js +34 -27
  65. package/dist/module/components/icon-button/variants/secondary.js.map +1 -1
  66. package/dist/module/components/index.js +1 -0
  67. package/dist/module/components/index.js.map +1 -1
  68. package/dist/module/components/input/input.js +8 -4
  69. package/dist/module/components/input/input.js.map +1 -1
  70. package/dist/module/components/input/numeric-input.js +0 -1
  71. package/dist/module/components/input/numeric-input.js.map +1 -1
  72. package/dist/module/components/input/variants/default.js +39 -37
  73. package/dist/module/components/input/variants/default.js.map +1 -1
  74. package/dist/module/components/input/variants/secondary.js +39 -37
  75. package/dist/module/components/input/variants/secondary.js.map +1 -1
  76. package/dist/module/components/menu/components/menu-checkbox-item.js.map +1 -1
  77. package/dist/module/components/menu/components/menu-item.js.map +1 -1
  78. package/dist/module/components/menu/components/menu-overlay.js.map +1 -1
  79. package/dist/module/components/menu/components/menu-radio-group.js.map +1 -1
  80. package/dist/module/components/menu/components/menu-radio-item.js.map +1 -1
  81. package/dist/module/components/menu/components/menu-root.js +6 -2
  82. package/dist/module/components/menu/components/menu-root.js.map +1 -1
  83. package/dist/module/components/menu/components/menu-selection-indicator.js +3 -3
  84. package/dist/module/components/menu/components/menu-selection-indicator.js.map +1 -1
  85. package/dist/module/components/menu/components/menu-trigger.js.map +1 -1
  86. package/dist/module/components/menu/context.js.map +1 -1
  87. package/dist/module/components/phone-input/components/country-picker.js.map +1 -1
  88. package/dist/module/components/phone-input/components/phone-input-root.js +9 -4
  89. package/dist/module/components/phone-input/components/phone-input-root.js.map +1 -1
  90. package/dist/module/components/phone-input/components/phone-input.js.map +1 -1
  91. package/dist/module/components/phone-input/context.js.map +1 -1
  92. package/dist/module/components/phone-input/variants/default.js +115 -112
  93. package/dist/module/components/phone-input/variants/default.js.map +1 -1
  94. package/dist/module/components/popover/components/popover-overlay.js.map +1 -1
  95. package/dist/module/components/popover/components/popover-root.js +6 -2
  96. package/dist/module/components/popover/components/popover-root.js.map +1 -1
  97. package/dist/module/components/popover/components/popover-trigger.js.map +1 -1
  98. package/dist/module/components/portal/portal.js.map +1 -1
  99. package/dist/module/components/progress/components/progress-indicator.js.map +1 -1
  100. package/dist/module/components/progress/components/progress-root.js +6 -3
  101. package/dist/module/components/progress/components/progress-root.js.map +1 -1
  102. package/dist/module/components/radio-group/components/radio-group-item.js.map +1 -1
  103. package/dist/module/components/radio-group/components/radio-group-root.js +7 -3
  104. package/dist/module/components/radio-group/components/radio-group-root.js.map +1 -1
  105. package/dist/module/components/select/components/select-content.js.map +1 -1
  106. package/dist/module/components/select/components/select-option.js.map +1 -1
  107. package/dist/module/components/select/components/select-overlay.js.map +1 -1
  108. package/dist/module/components/select/components/select-portal.js.map +1 -1
  109. package/dist/module/components/select/components/select-root.js +8 -5
  110. package/dist/module/components/select/components/select-root.js.map +1 -1
  111. package/dist/module/components/select/components/select-trigger.js.map +1 -1
  112. package/dist/module/components/select/variants/default.js +75 -73
  113. package/dist/module/components/select/variants/default.js.map +1 -1
  114. package/dist/module/components/separator/separator.js +5 -1
  115. package/dist/module/components/separator/separator.js.map +1 -1
  116. package/dist/module/components/spinner/spinner.js +7 -3
  117. package/dist/module/components/spinner/spinner.js.map +1 -1
  118. package/dist/module/components/table/context.js +12 -0
  119. package/dist/module/components/table/context.js.map +1 -0
  120. package/dist/module/components/table/index.js +17 -0
  121. package/dist/module/components/table/index.js.map +1 -0
  122. package/dist/module/components/table/table-body.js +17 -0
  123. package/dist/module/components/table/table-body.js.map +1 -0
  124. package/dist/module/components/table/table-cell.js +17 -0
  125. package/dist/module/components/table/table-cell.js.map +1 -0
  126. package/dist/module/components/table/table-head.js +17 -0
  127. package/dist/module/components/table/table-head.js.map +1 -0
  128. package/dist/module/components/table/table-header.js +17 -0
  129. package/dist/module/components/table/table-header.js.map +1 -0
  130. package/dist/module/components/table/table-root.js +27 -0
  131. package/dist/module/components/table/table-root.js.map +1 -0
  132. package/dist/module/components/table/table-row.js +17 -0
  133. package/dist/module/components/table/table-row.js.map +1 -0
  134. package/dist/module/components/table/types.js +4 -0
  135. package/dist/module/components/table/types.js.map +1 -0
  136. package/dist/module/components/table/variants/default.js +48 -0
  137. package/dist/module/components/table/variants/default.js.map +1 -0
  138. package/dist/module/components/table/variants/index.js +7 -0
  139. package/dist/module/components/table/variants/index.js.map +1 -0
  140. package/dist/module/components/tabs/components/tabs-item.js.map +1 -1
  141. package/dist/module/components/tabs/components/tabs-root.js +7 -3
  142. package/dist/module/components/tabs/components/tabs-root.js.map +1 -1
  143. package/dist/module/components/textarea/textarea.js +7 -3
  144. package/dist/module/components/textarea/textarea.js.map +1 -1
  145. package/dist/module/components/toast/components/toast-icon.js.map +1 -1
  146. package/dist/module/components/toast/components/toast-root.js +6 -2
  147. package/dist/module/components/toast/components/toast-root.js.map +1 -1
  148. package/dist/module/components/toast/manager.js +3 -3
  149. package/dist/module/components/toast/manager.js.map +1 -1
  150. package/dist/module/components/touchable/touchable.js +5 -1
  151. package/dist/module/components/touchable/touchable.js.map +1 -1
  152. package/dist/module/hooks/use-color-scheme.js.map +1 -1
  153. package/dist/module/hooks/use-is-react-navigation-modal.js.map +1 -1
  154. package/dist/module/hooks/use-numeric-mask.js.map +1 -1
  155. package/dist/module/hooks/use-phone-mask.js.map +1 -1
  156. package/dist/module/hooks/use-relative-position.js.map +1 -1
  157. package/dist/module/hooks/use-screen-size.js.map +1 -1
  158. package/dist/module/index.js +1 -1
  159. package/dist/module/index.js.map +1 -1
  160. package/dist/module/themes/default/index.js +1 -0
  161. package/dist/module/themes/default/index.js.map +1 -1
  162. package/dist/module/themes/index.js +2 -2
  163. package/dist/module/themes/index.js.map +1 -1
  164. package/dist/module/themes/provider.js +6 -1
  165. package/dist/module/themes/provider.js.map +1 -1
  166. package/dist/module/themes/types.js +2 -0
  167. package/dist/module/themes/utils.js +2 -1
  168. package/dist/module/themes/utils.js.map +1 -1
  169. package/dist/module/utils/calculate-styles.js +26 -0
  170. package/dist/module/utils/calculate-styles.js.map +1 -1
  171. package/dist/module/utils/date-utils.js.map +1 -1
  172. package/dist/module/utils/input-utils.js.map +1 -1
  173. package/dist/module/utils/normalize-layout.js.map +1 -1
  174. package/dist/module/utils/size-scale.js +42 -0
  175. package/dist/module/utils/size-scale.js.map +1 -0
  176. package/dist/module/utils/use-themed-styles.js +4 -1
  177. package/dist/module/utils/use-themed-styles.js.map +1 -1
  178. package/dist/typescript/src/components/alert/components/alert-description.d.ts.map +1 -1
  179. package/dist/typescript/src/components/alert/components/alert-icon.d.ts.map +1 -1
  180. package/dist/typescript/src/components/alert/components/alert-root.d.ts +1 -1
  181. package/dist/typescript/src/components/alert/components/alert-root.d.ts.map +1 -1
  182. package/dist/typescript/src/components/alert-dialog/async-alert-dialog.d.ts.map +1 -1
  183. package/dist/typescript/src/components/alert-dialog/components/alert-dialog-root.d.ts +2 -0
  184. package/dist/typescript/src/components/alert-dialog/components/alert-dialog-root.d.ts.map +1 -1
  185. package/dist/typescript/src/components/alert-dialog/variants/default.d.ts +3 -2
  186. package/dist/typescript/src/components/alert-dialog/variants/default.d.ts.map +1 -1
  187. package/dist/typescript/src/components/alert-dialog/variants/index.d.ts +1 -1
  188. package/dist/typescript/src/components/avatar/components/avatar-image.d.ts.map +1 -1
  189. package/dist/typescript/src/components/avatar/components/avatar-root.d.ts.map +1 -1
  190. package/dist/typescript/src/components/badge/badge.d.ts.map +1 -1
  191. package/dist/typescript/src/components/button/button.d.ts +2 -0
  192. package/dist/typescript/src/components/button/button.d.ts.map +1 -1
  193. package/dist/typescript/src/components/button/types.d.ts.map +1 -1
  194. package/dist/typescript/src/components/button/variants/default.d.ts +2 -1
  195. package/dist/typescript/src/components/button/variants/default.d.ts.map +1 -1
  196. package/dist/typescript/src/components/button/variants/ghost.d.ts +2 -1
  197. package/dist/typescript/src/components/button/variants/ghost.d.ts.map +1 -1
  198. package/dist/typescript/src/components/button/variants/index.d.ts +3 -3
  199. package/dist/typescript/src/components/button/variants/secondary.d.ts +2 -1
  200. package/dist/typescript/src/components/button/variants/secondary.d.ts.map +1 -1
  201. package/dist/typescript/src/components/calendar/calendar/calendar-root.d.ts.map +1 -1
  202. package/dist/typescript/src/components/calendar/calendar/calendar-weeks.d.ts.map +1 -1
  203. package/dist/typescript/src/components/calendar/index.d.ts +1 -1
  204. package/dist/typescript/src/components/calendar/index.d.ts.map +1 -1
  205. package/dist/typescript/src/components/calendar/shared/calendar-context.d.ts.map +1 -1
  206. package/dist/typescript/src/components/calendar/shared/calendar-day.d.ts.map +1 -1
  207. package/dist/typescript/src/components/calendar/shared/calendar-header.d.ts.map +1 -1
  208. package/dist/typescript/src/components/calendar/shared/calendar-nav-buttons.d.ts.map +1 -1
  209. package/dist/typescript/src/components/calendar/shared/calendar-title.d.ts.map +1 -1
  210. package/dist/typescript/src/components/calendar/shared/calendar-week-labels.d.ts.map +1 -1
  211. package/dist/typescript/src/components/calendar/shared/types.d.ts.map +1 -1
  212. package/dist/typescript/src/components/calendar/timeline/calendar-timeline.d.ts.map +1 -1
  213. package/dist/typescript/src/components/calendar/timeline/index.d.ts +1 -1
  214. package/dist/typescript/src/components/calendar/timeline/index.d.ts.map +1 -1
  215. package/dist/typescript/src/components/calendar/week-calendar/week-calendar.d.ts.map +1 -1
  216. package/dist/typescript/src/components/card/card-root.d.ts +1 -1
  217. package/dist/typescript/src/components/card/card-root.d.ts.map +1 -1
  218. package/dist/typescript/src/components/checkbox/components/checkbox-root.d.ts.map +1 -1
  219. package/dist/typescript/src/components/combobox/components/combobox-content.d.ts.map +1 -1
  220. package/dist/typescript/src/components/combobox/components/combobox-option.d.ts.map +1 -1
  221. package/dist/typescript/src/components/combobox/components/combobox-overlay.d.ts.map +1 -1
  222. package/dist/typescript/src/components/combobox/components/combobox-portal.d.ts.map +1 -1
  223. package/dist/typescript/src/components/combobox/components/combobox-root.d.ts +2 -0
  224. package/dist/typescript/src/components/combobox/components/combobox-root.d.ts.map +1 -1
  225. package/dist/typescript/src/components/combobox/components/combobox-trigger.d.ts.map +1 -1
  226. package/dist/typescript/src/components/combobox/context.d.ts.map +1 -1
  227. package/dist/typescript/src/components/combobox/variants/default.d.ts +2 -1
  228. package/dist/typescript/src/components/combobox/variants/default.d.ts.map +1 -1
  229. package/dist/typescript/src/components/empty/components/empty-root.d.ts.map +1 -1
  230. package/dist/typescript/src/components/field/components/field-label.d.ts.map +1 -1
  231. package/dist/typescript/src/components/field/components/field-root.d.ts.map +1 -1
  232. package/dist/typescript/src/components/icon/icon.d.ts.map +1 -1
  233. package/dist/typescript/src/components/icon-button/icon-button.d.ts +2 -1
  234. package/dist/typescript/src/components/icon-button/icon-button.d.ts.map +1 -1
  235. package/dist/typescript/src/components/icon-button/variants/default.d.ts +2 -1
  236. package/dist/typescript/src/components/icon-button/variants/default.d.ts.map +1 -1
  237. package/dist/typescript/src/components/icon-button/variants/ghost.d.ts +2 -1
  238. package/dist/typescript/src/components/icon-button/variants/ghost.d.ts.map +1 -1
  239. package/dist/typescript/src/components/icon-button/variants/index.d.ts +3 -3
  240. package/dist/typescript/src/components/icon-button/variants/secondary.d.ts +2 -1
  241. package/dist/typescript/src/components/icon-button/variants/secondary.d.ts.map +1 -1
  242. package/dist/typescript/src/components/index.d.ts +1 -0
  243. package/dist/typescript/src/components/index.d.ts.map +1 -1
  244. package/dist/typescript/src/components/input/input.d.ts +2 -0
  245. package/dist/typescript/src/components/input/input.d.ts.map +1 -1
  246. package/dist/typescript/src/components/input/numeric-input.d.ts +1 -1
  247. package/dist/typescript/src/components/input/numeric-input.d.ts.map +1 -1
  248. package/dist/typescript/src/components/input/variants/default.d.ts +2 -1
  249. package/dist/typescript/src/components/input/variants/default.d.ts.map +1 -1
  250. package/dist/typescript/src/components/input/variants/secondary.d.ts +3 -2
  251. package/dist/typescript/src/components/input/variants/secondary.d.ts.map +1 -1
  252. package/dist/typescript/src/components/menu/components/menu-checkbox-item.d.ts.map +1 -1
  253. package/dist/typescript/src/components/menu/components/menu-item.d.ts.map +1 -1
  254. package/dist/typescript/src/components/menu/components/menu-overlay.d.ts.map +1 -1
  255. package/dist/typescript/src/components/menu/components/menu-radio-group.d.ts.map +1 -1
  256. package/dist/typescript/src/components/menu/components/menu-radio-item.d.ts.map +1 -1
  257. package/dist/typescript/src/components/menu/components/menu-root.d.ts.map +1 -1
  258. package/dist/typescript/src/components/menu/components/menu-selection-indicator.d.ts +1 -1
  259. package/dist/typescript/src/components/menu/components/menu-selection-indicator.d.ts.map +1 -1
  260. package/dist/typescript/src/components/menu/components/menu-trigger.d.ts.map +1 -1
  261. package/dist/typescript/src/components/menu/context.d.ts.map +1 -1
  262. package/dist/typescript/src/components/menu/types.d.ts.map +1 -1
  263. package/dist/typescript/src/components/phone-input/components/country-picker.d.ts.map +1 -1
  264. package/dist/typescript/src/components/phone-input/components/phone-input-root.d.ts +3 -1
  265. package/dist/typescript/src/components/phone-input/components/phone-input-root.d.ts.map +1 -1
  266. package/dist/typescript/src/components/phone-input/components/phone-input.d.ts +1 -1
  267. package/dist/typescript/src/components/phone-input/components/phone-input.d.ts.map +1 -1
  268. package/dist/typescript/src/components/phone-input/context.d.ts.map +1 -1
  269. package/dist/typescript/src/components/phone-input/types.d.ts.map +1 -1
  270. package/dist/typescript/src/components/phone-input/variants/default.d.ts +2 -1
  271. package/dist/typescript/src/components/phone-input/variants/default.d.ts.map +1 -1
  272. package/dist/typescript/src/components/popover/components/popover-overlay.d.ts.map +1 -1
  273. package/dist/typescript/src/components/popover/components/popover-root.d.ts.map +1 -1
  274. package/dist/typescript/src/components/popover/components/popover-trigger.d.ts.map +1 -1
  275. package/dist/typescript/src/components/portal/portal.d.ts +2 -2
  276. package/dist/typescript/src/components/portal/portal.d.ts.map +1 -1
  277. package/dist/typescript/src/components/progress/components/progress-indicator.d.ts.map +1 -1
  278. package/dist/typescript/src/components/progress/components/progress-root.d.ts.map +1 -1
  279. package/dist/typescript/src/components/radio-group/components/radio-group-item.d.ts.map +1 -1
  280. package/dist/typescript/src/components/radio-group/components/radio-group-root.d.ts.map +1 -1
  281. package/dist/typescript/src/components/select/components/select-content.d.ts.map +1 -1
  282. package/dist/typescript/src/components/select/components/select-option.d.ts.map +1 -1
  283. package/dist/typescript/src/components/select/components/select-overlay.d.ts.map +1 -1
  284. package/dist/typescript/src/components/select/components/select-portal.d.ts.map +1 -1
  285. package/dist/typescript/src/components/select/components/select-root.d.ts +2 -0
  286. package/dist/typescript/src/components/select/components/select-root.d.ts.map +1 -1
  287. package/dist/typescript/src/components/select/components/select-trigger.d.ts.map +1 -1
  288. package/dist/typescript/src/components/select/variants/default.d.ts +3 -2
  289. package/dist/typescript/src/components/select/variants/default.d.ts.map +1 -1
  290. package/dist/typescript/src/components/separator/separator.d.ts.map +1 -1
  291. package/dist/typescript/src/components/spinner/spinner.d.ts.map +1 -1
  292. package/dist/typescript/src/components/table/context.d.ts +8 -0
  293. package/dist/typescript/src/components/table/context.d.ts.map +1 -0
  294. package/dist/typescript/src/components/table/index.d.ts +22 -0
  295. package/dist/typescript/src/components/table/index.d.ts.map +1 -0
  296. package/dist/typescript/src/components/table/table-body.d.ts +9 -0
  297. package/dist/typescript/src/components/table/table-body.d.ts.map +1 -0
  298. package/dist/typescript/src/components/table/table-cell.d.ts +9 -0
  299. package/dist/typescript/src/components/table/table-cell.d.ts.map +1 -0
  300. package/dist/typescript/src/components/table/table-head.d.ts +9 -0
  301. package/dist/typescript/src/components/table/table-head.d.ts.map +1 -0
  302. package/dist/typescript/src/components/table/table-header.d.ts +9 -0
  303. package/dist/typescript/src/components/table/table-header.d.ts.map +1 -0
  304. package/dist/typescript/src/components/table/table-root.d.ts +11 -0
  305. package/dist/typescript/src/components/table/table-root.d.ts.map +1 -0
  306. package/dist/typescript/src/components/table/table-row.d.ts +9 -0
  307. package/dist/typescript/src/components/table/table-row.d.ts.map +1 -0
  308. package/dist/typescript/src/components/table/types.d.ts +16 -0
  309. package/dist/typescript/src/components/table/types.d.ts.map +1 -0
  310. package/dist/typescript/src/components/table/variants/default.d.ts +3 -0
  311. package/dist/typescript/src/components/table/variants/default.d.ts.map +1 -0
  312. package/dist/typescript/src/components/table/variants/index.d.ts +5 -0
  313. package/dist/typescript/src/components/table/variants/index.d.ts.map +1 -0
  314. package/dist/typescript/src/components/tabs/components/tabs-item.d.ts.map +1 -1
  315. package/dist/typescript/src/components/tabs/components/tabs-root.d.ts.map +1 -1
  316. package/dist/typescript/src/components/textarea/textarea.d.ts.map +1 -1
  317. package/dist/typescript/src/components/toast/components/toast-icon.d.ts.map +1 -1
  318. package/dist/typescript/src/components/toast/components/toast-root.d.ts.map +1 -1
  319. package/dist/typescript/src/components/toast/manager.d.ts.map +1 -1
  320. package/dist/typescript/src/components/touchable/touchable.d.ts.map +1 -1
  321. package/dist/typescript/src/hooks/use-color-scheme.d.ts.map +1 -1
  322. package/dist/typescript/src/hooks/use-is-react-navigation-modal.d.ts.map +1 -1
  323. package/dist/typescript/src/hooks/use-numeric-mask.d.ts.map +1 -1
  324. package/dist/typescript/src/hooks/use-phone-mask.d.ts.map +1 -1
  325. package/dist/typescript/src/hooks/use-relative-position.d.ts.map +1 -1
  326. package/dist/typescript/src/hooks/use-screen-size.d.ts.map +1 -1
  327. package/dist/typescript/src/index.d.ts +5 -2
  328. package/dist/typescript/src/index.d.ts.map +1 -1
  329. package/dist/typescript/src/themes/default/index.d.ts.map +1 -1
  330. package/dist/typescript/src/themes/index.d.ts +2 -2
  331. package/dist/typescript/src/themes/index.d.ts.map +1 -1
  332. package/dist/typescript/src/themes/provider.d.ts +3 -19
  333. package/dist/typescript/src/themes/provider.d.ts.map +1 -1
  334. package/dist/typescript/src/themes/types.d.ts +124 -0
  335. package/dist/typescript/src/themes/types.d.ts.map +1 -1
  336. package/dist/typescript/src/themes/utils.d.ts.map +1 -1
  337. package/dist/typescript/src/utils/calculate-styles.d.ts +1 -0
  338. package/dist/typescript/src/utils/calculate-styles.d.ts.map +1 -1
  339. package/dist/typescript/src/utils/date-utils.d.ts.map +1 -1
  340. package/dist/typescript/src/utils/input-utils.d.ts.map +1 -1
  341. package/dist/typescript/src/utils/normalize-layout.d.ts.map +1 -1
  342. package/dist/typescript/src/utils/size-scale.d.ts +20 -0
  343. package/dist/typescript/src/utils/size-scale.d.ts.map +1 -0
  344. package/dist/typescript/src/utils/use-themed-styles.d.ts +5 -0
  345. package/dist/typescript/src/utils/use-themed-styles.d.ts.map +1 -1
  346. package/package.json +9 -8
  347. package/src/components/alert/components/alert-description.tsx +1 -3
  348. package/src/components/alert/components/alert-icon.tsx +4 -1
  349. package/src/components/alert/components/alert-root.tsx +9 -4
  350. package/src/components/alert-dialog/async-alert-dialog.tsx +6 -25
  351. package/src/components/alert-dialog/components/alert-dialog-root.tsx +10 -3
  352. package/src/components/alert-dialog/variants/default.tsx +88 -79
  353. package/src/components/avatar/components/avatar-image.tsx +1 -6
  354. package/src/components/avatar/components/avatar-root.tsx +8 -3
  355. package/src/components/badge/badge.tsx +10 -12
  356. package/src/components/button/button.tsx +13 -23
  357. package/src/components/button/types.ts +1 -5
  358. package/src/components/button/variants/default.tsx +14 -10
  359. package/src/components/button/variants/ghost.tsx +14 -10
  360. package/src/components/button/variants/secondary.tsx +14 -10
  361. package/src/components/calendar/calendar/calendar-root.tsx +6 -2
  362. package/src/components/calendar/calendar/calendar-weeks.tsx +7 -13
  363. package/src/components/calendar/index.ts +1 -5
  364. package/src/components/calendar/shared/calendar-context.ts +2 -6
  365. package/src/components/calendar/shared/calendar-day.tsx +4 -12
  366. package/src/components/calendar/shared/calendar-header.tsx +1 -6
  367. package/src/components/calendar/shared/calendar-nav-buttons.tsx +9 -28
  368. package/src/components/calendar/shared/calendar-title.tsx +1 -6
  369. package/src/components/calendar/shared/calendar-week-labels.tsx +1 -7
  370. package/src/components/calendar/shared/types.ts +1 -6
  371. package/src/components/calendar/timeline/calendar-timeline.tsx +3 -9
  372. package/src/components/calendar/timeline/index.ts +1 -4
  373. package/src/components/calendar/week-calendar/week-calendar.tsx +10 -25
  374. package/src/components/card/card-root.tsx +8 -4
  375. package/src/components/checkbox/components/checkbox-root.tsx +13 -4
  376. package/src/components/combobox/components/combobox-content.tsx +2 -11
  377. package/src/components/combobox/components/combobox-option.tsx +1 -2
  378. package/src/components/combobox/components/combobox-overlay.tsx +1 -6
  379. package/src/components/combobox/components/combobox-portal.tsx +1 -3
  380. package/src/components/combobox/components/combobox-root.tsx +23 -24
  381. package/src/components/combobox/components/combobox-trigger.tsx +2 -7
  382. package/src/components/combobox/context.ts +1 -3
  383. package/src/components/combobox/variants/default.tsx +17 -14
  384. package/src/components/empty/components/empty-root.tsx +7 -2
  385. package/src/components/field/components/field-label.tsx +3 -1
  386. package/src/components/field/components/field-root.tsx +7 -2
  387. package/src/components/icon/icon.tsx +1 -4
  388. package/src/components/icon-button/icon-button.tsx +16 -15
  389. package/src/components/icon-button/variants/default.tsx +12 -6
  390. package/src/components/icon-button/variants/ghost.tsx +12 -6
  391. package/src/components/icon-button/variants/secondary.tsx +12 -6
  392. package/src/components/index.ts +1 -0
  393. package/src/components/input/input.tsx +11 -5
  394. package/src/components/input/numeric-input.tsx +2 -9
  395. package/src/components/input/variants/default.tsx +11 -9
  396. package/src/components/input/variants/secondary.tsx +12 -10
  397. package/src/components/menu/components/menu-checkbox-item.tsx +2 -9
  398. package/src/components/menu/components/menu-item.tsx +2 -10
  399. package/src/components/menu/components/menu-overlay.tsx +1 -6
  400. package/src/components/menu/components/menu-radio-group.tsx +1 -5
  401. package/src/components/menu/components/menu-radio-item.tsx +1 -5
  402. package/src/components/menu/components/menu-root.tsx +10 -2
  403. package/src/components/menu/components/menu-selection-indicator.tsx +4 -6
  404. package/src/components/menu/components/menu-trigger.tsx +32 -34
  405. package/src/components/menu/context.ts +3 -3
  406. package/src/components/menu/types.ts +1 -5
  407. package/src/components/phone-input/components/country-picker.tsx +6 -21
  408. package/src/components/phone-input/components/phone-input-root.tsx +14 -9
  409. package/src/components/phone-input/components/phone-input.tsx +5 -20
  410. package/src/components/phone-input/context.ts +1 -3
  411. package/src/components/phone-input/types.ts +2 -6
  412. package/src/components/phone-input/variants/default.tsx +21 -18
  413. package/src/components/popover/components/popover-overlay.tsx +7 -1
  414. package/src/components/popover/components/popover-root.tsx +10 -2
  415. package/src/components/popover/components/popover-trigger.tsx +1 -4
  416. package/src/components/portal/portal.tsx +6 -26
  417. package/src/components/progress/components/progress-indicator.tsx +13 -2
  418. package/src/components/progress/components/progress-root.tsx +6 -3
  419. package/src/components/radio-group/components/radio-group-item.tsx +1 -5
  420. package/src/components/radio-group/components/radio-group-root.tsx +7 -3
  421. package/src/components/select/components/select-content.tsx +1 -5
  422. package/src/components/select/components/select-option.tsx +5 -1
  423. package/src/components/select/components/select-overlay.tsx +6 -1
  424. package/src/components/select/components/select-portal.tsx +1 -3
  425. package/src/components/select/components/select-root.tsx +10 -5
  426. package/src/components/select/components/select-trigger.tsx +3 -13
  427. package/src/components/select/variants/default.tsx +16 -14
  428. package/src/components/separator/separator.tsx +5 -1
  429. package/src/components/spinner/spinner.tsx +8 -9
  430. package/src/components/table/context.ts +17 -0
  431. package/src/components/table/index.ts +23 -0
  432. package/src/components/table/table-body.tsx +20 -0
  433. package/src/components/table/table-cell.tsx +20 -0
  434. package/src/components/table/table-head.tsx +20 -0
  435. package/src/components/table/table-header.tsx +20 -0
  436. package/src/components/table/table-root.tsx +35 -0
  437. package/src/components/table/table-row.tsx +20 -0
  438. package/src/components/table/types.ts +17 -0
  439. package/src/components/table/variants/default.tsx +46 -0
  440. package/src/components/table/variants/index.ts +5 -0
  441. package/src/components/tabs/components/tabs-item.tsx +5 -25
  442. package/src/components/tabs/components/tabs-root.tsx +9 -10
  443. package/src/components/textarea/textarea.tsx +7 -3
  444. package/src/components/toast/components/toast-icon.tsx +2 -8
  445. package/src/components/toast/components/toast-root.tsx +6 -2
  446. package/src/components/toast/manager.tsx +4 -6
  447. package/src/components/touchable/touchable.tsx +7 -7
  448. package/src/hooks/use-color-scheme.ts +1 -4
  449. package/src/hooks/use-currency-mask.ts +4 -4
  450. package/src/hooks/use-is-react-navigation-modal.ts +4 -13
  451. package/src/hooks/use-numeric-mask.ts +10 -5
  452. package/src/hooks/use-phone-mask.ts +6 -18
  453. package/src/hooks/use-relative-position.ts +8 -24
  454. package/src/hooks/use-screen-size.ts +8 -3
  455. package/src/index.tsx +5 -6
  456. package/src/themes/default/index.ts +1 -0
  457. package/src/themes/index.ts +2 -2
  458. package/src/themes/provider.tsx +10 -25
  459. package/src/themes/types.ts +126 -0
  460. package/src/themes/utils.ts +1 -0
  461. package/src/utils/calculate-styles.ts +42 -2
  462. package/src/utils/date-utils.ts +23 -3
  463. package/src/utils/input-utils.ts +1 -4
  464. package/src/utils/normalize-layout.ts +3 -1
  465. package/src/utils/size-scale.ts +45 -0
  466. package/src/utils/use-themed-styles.ts +10 -10
  467. package/tsconfig.json +5 -15
@@ -1,6 +1,8 @@
1
- import type { PropsWithRender } from "../../../types/props.types";
2
1
  import React from "react";
3
- import { type StyleProp, View, type ViewStyle } from "react-native";
2
+ import { type StyleProp, StyleSheet, View, type ViewStyle } from "react-native";
3
+ import { useComponentConfig } from "../../../themes/provider";
4
+ import type { PropsWithRender } from "../../../types/props.types";
5
+ import { mergeStyles } from "../../../utils/calculate-styles";
4
6
  import { AlertContext } from "../context";
5
7
  import { AlertVariants } from "../variants";
6
8
 
@@ -13,13 +15,16 @@ export interface AlertRootProps {
13
15
 
14
16
  export function AlertRoot(props: PropsWithRender<AlertRootProps>) {
15
17
  const variantStyles = AlertVariants[props.variant ?? "default"]();
16
- const composedStyle: StyleProp<ViewStyle> = [variantStyles.root, props.style];
18
+ const componentConfig = useComponentConfig("alert");
19
+
20
+ const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
21
+ const composedStyle = StyleSheet.flatten([mergedStyles.root, props.style]);
17
22
 
18
23
  const Component = props.render ?? View;
19
24
  return (
20
25
  <AlertContext.Provider
21
26
  value={{
22
- styles: variantStyles,
27
+ styles: mergedStyles,
23
28
  }}
24
29
  >
25
30
  <Component {...props} style={composedStyle} />
@@ -32,9 +32,7 @@ interface AsyncAlertDialogInstance {
32
32
  // Global state
33
33
  const dialogQueue: AsyncAlertDialogInstance[] = [];
34
34
  let currentDialog: AsyncAlertDialogInstance | null = null;
35
- let setCurrentDialogFn:
36
- | ((dialog: AsyncAlertDialogInstance | null) => void)
37
- | null = null;
35
+ let setCurrentDialogFn: ((dialog: AsyncAlertDialogInstance | null) => void) | null = null;
38
36
 
39
37
  // Process next dialog in queue
40
38
  function processQueue() {
@@ -57,17 +55,8 @@ function closeDialog(confirmed: boolean) {
57
55
  }
58
56
 
59
57
  // Inner component that has access to the dialog context
60
- function AsyncAlertDialogContent({
61
- instance,
62
- }: {
63
- instance: AsyncAlertDialogInstance;
64
- }) {
65
- const {
66
- title,
67
- description,
68
- actionLabel = "Continue",
69
- cancelLabel = "Cancel",
70
- } = instance.props;
58
+ function AsyncAlertDialogContent({ instance }: { instance: AsyncAlertDialogInstance }) {
59
+ const { title, description, actionLabel = "Continue", cancelLabel = "Cancel" } = instance.props;
71
60
  const { setIsOpen } = useAlertDialog();
72
61
 
73
62
  const handleAction = () => closeDialog(true);
@@ -85,12 +74,8 @@ function AsyncAlertDialogContent({
85
74
  <AlertDialogTitle>{title}</AlertDialogTitle>
86
75
  <AlertDialogDescription>{description}</AlertDialogDescription>
87
76
  <AlertDialogFooter>
88
- <AlertDialogCancel onPress={handleCancel}>
89
- {cancelLabel}
90
- </AlertDialogCancel>
91
- <AlertDialogAction onPress={handleAction}>
92
- {actionLabel}
93
- </AlertDialogAction>
77
+ <AlertDialogCancel onPress={handleCancel}>{cancelLabel}</AlertDialogCancel>
78
+ <AlertDialogAction onPress={handleAction}>{actionLabel}</AlertDialogAction>
94
79
  </AlertDialogFooter>
95
80
  </AlertDialogContent>
96
81
  </AlertDialogPortal>
@@ -98,11 +83,7 @@ function AsyncAlertDialogContent({
98
83
  }
99
84
 
100
85
  // Component that renders a single dialog instance
101
- function AsyncAlertDialogInstance({
102
- instance,
103
- }: {
104
- instance: AsyncAlertDialogInstance;
105
- }) {
86
+ function AsyncAlertDialogInstance({ instance }: { instance: AsyncAlertDialogInstance }) {
106
87
  return (
107
88
  <AlertDialogRoot {...instance.props}>
108
89
  <AsyncAlertDialogContent instance={instance} />
@@ -1,24 +1,31 @@
1
1
  import React, { useMemo, useState } from "react";
2
+ import { useComponentConfig } from "../../../themes/provider";
3
+ import { mergeStyles } from "../../../utils/calculate-styles";
4
+ import type { Size } from "../../../utils/size-scale";
2
5
  import { AlertDialogContext, type AlertDialogContextValue } from "../context";
3
6
  import { AlertDialogVariants } from "../variants";
4
7
 
5
8
  export interface AlertDialogRootProps {
6
9
  variant?: keyof typeof AlertDialogVariants;
10
+ size?: Size;
7
11
  children: React.ReactNode;
8
12
  }
9
13
 
10
14
  export function AlertDialogRoot(props: AlertDialogRootProps) {
11
- const variantStyles = AlertDialogVariants[props.variant || "default"]();
12
15
  const { children } = props;
16
+ const variantStyles = AlertDialogVariants[props.variant || "default"](props.size ?? "md");
17
+ const componentConfig = useComponentConfig("alertDialog");
13
18
  const [isOpen, setIsOpen] = useState(false);
14
19
 
20
+ const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
21
+
15
22
  const contextValue: AlertDialogContextValue = useMemo(
16
23
  () => ({
17
24
  isOpen,
18
25
  setIsOpen,
19
- styles: variantStyles,
26
+ styles: mergedStyles,
20
27
  }),
21
- [isOpen, variantStyles],
28
+ [isOpen, mergedStyles],
22
29
  );
23
30
 
24
31
  return <AlertDialogContext.Provider value={contextValue}>{children}</AlertDialogContext.Provider>;
@@ -1,84 +1,93 @@
1
- import { type AlertDialogStyles } from "../..";
1
+ import type { Size } from "../../../utils/size-scale";
2
2
  import { useThemedStyles } from "../../../utils/use-themed-styles";
3
+ import { type AlertDialogStyles } from "../types";
3
4
 
4
- export const useAlertDialogVariantDefault = (): AlertDialogStyles => {
5
+ export const useAlertDialogVariantDefault = (size: Size): AlertDialogStyles => {
5
6
  return useThemedStyles(
6
- ({ colors, radius, fontFamily, fontSize }): AlertDialogStyles => ({
7
- overlay: {
8
- position: "absolute",
9
- top: 0,
10
- left: 0,
11
- right: 0,
12
- bottom: 0,
13
- backgroundColor: "rgba(0, 0, 0, 0.5)",
14
- justifyContent: "center",
15
- alignItems: "center",
16
- zIndex: 999,
17
- },
18
- content: {
19
- backgroundColor: colors.background,
20
- borderRadius: radius,
21
- padding: 24,
22
- maxWidth: 400,
23
- width: "90%",
24
- shadowColor: "#000",
25
- shadowOffset: { width: 0, height: 2 },
26
- shadowOpacity: 0.25,
27
- shadowRadius: 8,
28
- elevation: 5,
29
- position: "absolute",
30
- top: "50%",
31
- left: "50%",
32
- transform: [{ translateX: "-50%" }, { translateY: "-50%" }],
33
- borderWidth: 1,
34
- borderColor: colors.border,
35
- zIndex: 1000,
36
- },
37
- title: {
38
- fontSize: fontSize * 1.25,
39
- fontWeight: "600",
40
- color: colors.foreground,
41
- fontFamily,
42
- marginBottom: 8,
43
- },
44
- description: {
45
- fontSize,
46
- color: colors.mutedForeground,
47
- fontFamily,
48
- lineHeight: fontSize * 1.5,
49
- },
50
- footer: {
51
- flexDirection: "row",
52
- justifyContent: "flex-end",
53
- gap: 12,
54
- marginTop: 24,
55
- },
56
- cancel: {
57
- paddingVertical: 10,
58
- paddingHorizontal: 16,
59
- borderRadius: radius,
60
- borderWidth: 1,
61
- borderColor: colors.border,
62
- backgroundColor: colors.background,
63
- },
64
- cancelText: {
65
- color: colors.foreground,
66
- fontSize,
67
- fontWeight: "500",
68
- fontFamily,
69
- },
70
- action: {
71
- paddingVertical: 10,
72
- paddingHorizontal: 16,
73
- borderRadius: radius,
74
- backgroundColor: colors.primary,
75
- },
76
- actionText: {
77
- color: colors.primaryForeground,
78
- fontSize,
79
- fontWeight: "500",
80
- fontFamily,
81
- },
82
- }),
7
+ ({ colors, radius, fontFamily, fontSize, sizeScale }): AlertDialogStyles => {
8
+ const s = sizeScale(size);
9
+
10
+ return {
11
+ overlay: {
12
+ position: "absolute",
13
+ top: 0,
14
+ left: 0,
15
+ right: 0,
16
+ bottom: 0,
17
+ backgroundColor: "rgba(0, 0, 0, 0.5)",
18
+ justifyContent: "center",
19
+ alignItems: "center",
20
+ zIndex: 999,
21
+ },
22
+ content: {
23
+ backgroundColor: colors.background,
24
+ borderRadius: radius,
25
+ padding: 24,
26
+ maxWidth: 400,
27
+ width: "90%",
28
+ shadowColor: "#000",
29
+ shadowOffset: { width: 0, height: 2 },
30
+ shadowOpacity: 0.25,
31
+ shadowRadius: 8,
32
+ elevation: 5,
33
+ position: "absolute",
34
+ top: "50%",
35
+ left: "50%",
36
+ transform: [{ translateX: "-50%" }, { translateY: "-50%" }],
37
+ borderWidth: 1,
38
+ borderColor: colors.border,
39
+ zIndex: 1000,
40
+ },
41
+ title: {
42
+ fontSize: fontSize * 1.25,
43
+ fontWeight: "600",
44
+ color: colors.foreground,
45
+ fontFamily,
46
+ marginBottom: 8,
47
+ },
48
+ description: {
49
+ fontSize,
50
+ color: colors.mutedForeground,
51
+ fontFamily,
52
+ lineHeight: fontSize * 1.5,
53
+ },
54
+ footer: {
55
+ flexDirection: "row",
56
+ justifyContent: "flex-end",
57
+ gap: s.gap,
58
+ marginTop: 24,
59
+ },
60
+ cancel: {
61
+ height: s.height,
62
+ paddingHorizontal: s.paddingHorizontal,
63
+ borderRadius: radius,
64
+ borderWidth: 1,
65
+ borderColor: colors.border,
66
+ backgroundColor: colors.background,
67
+ justifyContent: "center",
68
+ alignItems: "center",
69
+ },
70
+ cancelText: {
71
+ color: colors.foreground,
72
+ fontSize: s.fontSize,
73
+ fontWeight: "500",
74
+ fontFamily,
75
+ },
76
+ action: {
77
+ height: s.height,
78
+ paddingHorizontal: s.paddingHorizontal,
79
+ borderRadius: radius,
80
+ backgroundColor: colors.primary,
81
+ justifyContent: "center",
82
+ alignItems: "center",
83
+ },
84
+ actionText: {
85
+ color: colors.primaryForeground,
86
+ fontSize: s.fontSize,
87
+ fontWeight: "500",
88
+ fontFamily,
89
+ },
90
+ };
91
+ },
83
92
  );
84
93
  };
@@ -1,10 +1,5 @@
1
1
  import React from "react";
2
- import {
3
- Image,
4
- type ImageSource,
5
- type ImageStyle,
6
- type StyleProp,
7
- } from "react-native";
2
+ import { Image, type ImageSource, type ImageStyle, type StyleProp } from "react-native";
8
3
  import { useAvatar } from "../context";
9
4
 
10
5
  export interface AvatarImageProps {
@@ -1,5 +1,7 @@
1
1
  import React, { useMemo, useState } from "react";
2
2
  import { type StyleProp, View, type ViewStyle } from "react-native";
3
+ import { useComponentConfig } from "../../../themes/provider";
4
+ import { mergeStyles } from "../../../utils/calculate-styles";
3
5
  import { AvatarContext } from "../context";
4
6
  import { AvatarVariants } from "../variants";
5
7
 
@@ -12,17 +14,20 @@ export interface AvatarRootProps {
12
14
 
13
15
  export function AvatarRoot(props: AvatarRootProps) {
14
16
  const variantStyles = AvatarVariants[props.variant || "default"]();
15
- const composedStyles = [variantStyles.root, props.style];
17
+ const componentConfig = useComponentConfig("avatar");
18
+
19
+ const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
20
+ const composedStyles = [mergedStyles.root, props.style];
16
21
 
17
22
  const [imageLoaded, setImageLoaded] = useState(false);
18
23
 
19
24
  const contextValue: AvatarContext = useMemo(
20
25
  () => ({
21
- styles: variantStyles,
26
+ styles: mergedStyles,
22
27
  imageLoaded,
23
28
  setImageLoaded,
24
29
  }),
25
- [variantStyles, imageLoaded],
30
+ [mergedStyles, imageLoaded],
26
31
  );
27
32
 
28
33
  const Component = props.render ?? View;
@@ -1,6 +1,8 @@
1
1
  import React from "react";
2
2
  import { type StyleProp, StyleSheet, View, type ViewStyle } from "react-native";
3
3
  import { useOrganizedChildren } from "../../hooks/use-organized-children";
4
+ import { useComponentConfig } from "../../themes/provider";
5
+ import { mergeStyles } from "../../utils/calculate-styles";
4
6
  import { BadgeContext } from "./context";
5
7
  import { BadgeVariants } from "./variants";
6
8
 
@@ -16,26 +18,22 @@ export interface BadgeProps {
16
18
 
17
19
  export function Badge(props: BadgeProps) {
18
20
  const variantStyles = BadgeVariants[props.variant || "default"]();
21
+ const componentConfig = useComponentConfig("badge");
19
22
 
20
- const customStyle = props.color
21
- ? { backgroundColor: props.color }
22
- : undefined;
23
+ const customStyle = props.color ? { backgroundColor: props.color } : undefined;
23
24
 
24
- const composedStyle = StyleSheet.flatten([variantStyles.root, props.style]);
25
+ const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
26
+ const composedStyle = StyleSheet.flatten([mergedStyles.root, props.style]);
25
27
 
26
- const textStyle = variantStyles.text;
27
- const iconStyle = variantStyles.icon;
28
- const organizedChildren = useOrganizedChildren(
29
- props.children,
30
- textStyle,
31
- iconStyle,
32
- );
28
+ const textStyle = StyleSheet.flatten([mergedStyles.text, props.style]);
29
+ const iconStyle = { ...mergedStyles.icon, ...props.style };
30
+ const organizedChildren = useOrganizedChildren(props.children, textStyle, iconStyle);
33
31
 
34
32
  const Component = props.render ?? View;
35
33
  return (
36
34
  <BadgeContext.Provider
37
35
  value={{
38
- styles: variantStyles,
36
+ styles: mergedStyles,
39
37
  }}
40
38
  >
41
39
  <Component {...props} style={[composedStyle, customStyle]}>
@@ -8,11 +8,15 @@ import {
8
8
  type ViewStyle,
9
9
  } from "react-native";
10
10
  import { useOrganizedChildren } from "../../hooks/use-organized-children";
11
+ import { useComponentConfig } from "../../themes/provider";
12
+ import { mergeStyles } from "../../utils/calculate-styles";
13
+ import type { Size } from "../../utils/size-scale";
11
14
  import type { ButtonState } from "./types";
12
15
  import { ButtonVariants } from "./variants";
13
16
 
14
17
  export interface ButtonProps extends Omit<PressableProps, "disabled"> {
15
18
  variant?: keyof typeof ButtonVariants;
19
+ size?: Size;
16
20
  children?: React.ReactNode;
17
21
 
18
22
  isDisabled?: boolean;
@@ -21,10 +25,7 @@ export interface ButtonProps extends Omit<PressableProps, "disabled"> {
21
25
  style?: StyleProp<ViewStyle>;
22
26
  }
23
27
 
24
- const calculateState = (
25
- props: ButtonProps,
26
- isHovered: boolean,
27
- ): ButtonState => {
28
+ const calculateState = (props: ButtonProps, isHovered: boolean): ButtonState => {
28
29
  if (props.isDisabled) return "disabled";
29
30
  if (props.isLoading) return "loading";
30
31
  if (isHovered) return "hovered";
@@ -32,25 +33,18 @@ const calculateState = (
32
33
  };
33
34
 
34
35
  export function Button(props: ButtonProps) {
35
- const variantStyles = ButtonVariants[props.variant ?? "default"]();
36
+ const variantStyles = ButtonVariants[props.variant ?? "default"](props.size ?? "md");
37
+ const componentConfig = useComponentConfig("button");
36
38
  const [isHovered, setIsHovered] = useState(false);
37
39
 
38
40
  const state = calculateState(props, isHovered);
39
41
 
40
- const textStyle = StyleSheet.flatten([
41
- variantStyles.text?.default,
42
- variantStyles.text?.[state],
43
- ]);
44
- const iconProps = StyleSheet.flatten([
45
- variantStyles.icon?.default,
46
- variantStyles.icon?.[state],
47
- ]);
42
+ const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
48
43
 
49
- const organizedChildren = useOrganizedChildren(
50
- props.children,
51
- textStyle,
52
- iconProps,
53
- );
44
+ const textStyle = StyleSheet.flatten([mergedStyles.text?.default, mergedStyles.text?.[state]]);
45
+ const iconProps = StyleSheet.flatten([mergedStyles.icon?.default, mergedStyles.icon?.[state]]);
46
+
47
+ const organizedChildren = useOrganizedChildren(props.children, textStyle, iconProps);
54
48
 
55
49
  const handlePress: PressableProps["onPress"] = (event) => {
56
50
  if (props.isDisabled || props.isLoading) {
@@ -72,11 +66,7 @@ export function Button(props: ButtonProps) {
72
66
  onHoverIn={() => setIsHovered(true)}
73
67
  onHoverOut={() => setIsHovered(false)}
74
68
  disabled={props.isDisabled}
75
- style={[
76
- variantStyles.root?.default,
77
- variantStyles.root?.[state],
78
- props.style,
79
- ]}
69
+ style={[variantStyles.root?.default, variantStyles.root?.[state], props.style]}
80
70
  >
81
71
  {organizedChildren}
82
72
  {props.isLoading && <ActivityIndicator {...spinnerProps} />}
@@ -1,8 +1,4 @@
1
- import type {
2
- ActivityIndicatorProps,
3
- TextStyle,
4
- ViewStyle,
5
- } from "react-native";
1
+ import type { ActivityIndicatorProps, TextStyle, ViewStyle } from "react-native";
6
2
  import type { IconProps } from "../icon";
7
3
 
8
4
  export type ButtonState = "default" | "disabled" | "loading" | "hovered";
@@ -1,18 +1,21 @@
1
1
  import type { CursorValue } from "react-native";
2
2
  import { hslaSetRelativeLightness } from "../../../utils/hsla-utils";
3
+ import type { Size } from "../../../utils/size-scale";
3
4
  import { useThemedStyles } from "../../../utils/use-themed-styles";
4
5
  import type { ButtonStyles } from "../types";
5
6
 
6
- export const useButtonVariantDefault = (): ButtonStyles => {
7
- return useThemedStyles(
8
- ({ colors, radius, fontFamily, fontSize }): ButtonStyles => ({
7
+ export const useButtonVariantDefault = (size: Size): ButtonStyles => {
8
+ return useThemedStyles(({ colors, radius, fontFamily, sizeScale }): ButtonStyles => {
9
+ const sizeStyles = sizeScale(size);
10
+
11
+ return {
9
12
  root: {
10
13
  default: {
11
14
  flexDirection: "row",
12
- paddingVertical: 12,
13
- paddingHorizontal: 16,
15
+ height: sizeStyles.height,
16
+ paddingHorizontal: sizeStyles.paddingHorizontal,
14
17
  borderRadius: radius,
15
- gap: 8,
18
+ gap: sizeStyles.gap,
16
19
  alignItems: "center",
17
20
  justifyContent: "center",
18
21
  backgroundColor: colors.primary,
@@ -35,14 +38,15 @@ export const useButtonVariantDefault = (): ButtonStyles => {
35
38
  text: {
36
39
  default: {
37
40
  color: colors.primaryForeground,
38
- fontSize,
41
+ fontSize: sizeStyles.fontSize,
39
42
  fontFamily,
40
43
  },
41
44
  },
42
45
  icon: {
43
46
  default: {
44
47
  color: colors.primaryForeground,
45
- size: fontSize,
48
+ size: sizeStyles.iconSize,
49
+ strokeWidth: sizeStyles.strokeWidth,
46
50
  },
47
51
  },
48
52
  spinner: {
@@ -50,6 +54,6 @@ export const useButtonVariantDefault = (): ButtonStyles => {
50
54
  color: colors.primaryForeground,
51
55
  },
52
56
  },
53
- }),
54
- );
57
+ };
58
+ });
55
59
  };
@@ -1,18 +1,21 @@
1
1
  import type { CursorValue } from "react-native";
2
2
  import { hslaSetRelativeLightness } from "../../../utils/hsla-utils";
3
+ import type { Size } from "../../../utils/size-scale";
3
4
  import { useThemedStyles } from "../../../utils/use-themed-styles";
4
5
  import type { ButtonStyles } from "../types";
5
6
 
6
- export const useButtonVariantGhost = (): ButtonStyles => {
7
- return useThemedStyles(
8
- ({ colors, radius, fontFamily, fontSize }): ButtonStyles => ({
7
+ export const useButtonVariantGhost = (size: Size): ButtonStyles => {
8
+ return useThemedStyles(({ colors, radius, fontFamily, sizeScale }): ButtonStyles => {
9
+ const sizeStyles = sizeScale(size);
10
+
11
+ return {
9
12
  root: {
10
13
  default: {
11
14
  flexDirection: "row",
12
- paddingVertical: 12,
13
- paddingHorizontal: 16,
15
+ height: sizeStyles.height,
16
+ paddingHorizontal: sizeStyles.paddingHorizontal,
14
17
  borderRadius: radius,
15
- gap: 8,
18
+ gap: sizeStyles.gap,
16
19
  alignItems: "center",
17
20
  justifyContent: "center",
18
21
  backgroundColor: "transparent",
@@ -33,7 +36,7 @@ export const useButtonVariantGhost = (): ButtonStyles => {
33
36
  text: {
34
37
  default: {
35
38
  color: colors.foreground,
36
- fontSize,
39
+ fontSize: sizeStyles.fontSize,
37
40
  fontFamily,
38
41
  },
39
42
  disabled: {
@@ -46,7 +49,8 @@ export const useButtonVariantGhost = (): ButtonStyles => {
46
49
  icon: {
47
50
  default: {
48
51
  color: colors.foreground,
49
- size: fontSize,
52
+ size: sizeStyles.iconSize,
53
+ strokeWidth: sizeStyles.strokeWidth,
50
54
  },
51
55
  disabled: {
52
56
  color: colors.mutedForeground,
@@ -66,6 +70,6 @@ export const useButtonVariantGhost = (): ButtonStyles => {
66
70
  color: colors.mutedForeground,
67
71
  },
68
72
  },
69
- }),
70
- );
73
+ };
74
+ });
71
75
  };
@@ -1,18 +1,21 @@
1
1
  import type { CursorValue } from "react-native";
2
2
  import { hslaSetRelativeLightness } from "../../../utils/hsla-utils";
3
+ import type { Size } from "../../../utils/size-scale";
3
4
  import { useThemedStyles } from "../../../utils/use-themed-styles";
4
5
  import type { ButtonStyles } from "../types";
5
6
 
6
- export const useButtonVariantSecondary = (): ButtonStyles => {
7
- return useThemedStyles(
8
- ({ colors, radius, fontFamily, fontSize }): ButtonStyles => ({
7
+ export const useButtonVariantSecondary = (size: Size): ButtonStyles => {
8
+ return useThemedStyles(({ colors, radius, fontFamily, sizeScale }): ButtonStyles => {
9
+ const sizeStyles = sizeScale(size);
10
+
11
+ return {
9
12
  root: {
10
13
  default: {
11
14
  flexDirection: "row",
12
- paddingVertical: 12,
13
- paddingHorizontal: 16,
15
+ height: sizeStyles.height,
16
+ paddingHorizontal: sizeStyles.paddingHorizontal,
14
17
  borderRadius: radius,
15
- gap: 8,
18
+ gap: sizeStyles.gap,
16
19
  alignItems: "center",
17
20
  justifyContent: "center",
18
21
  borderWidth: 1,
@@ -35,7 +38,7 @@ export const useButtonVariantSecondary = (): ButtonStyles => {
35
38
  text: {
36
39
  default: {
37
40
  color: colors.secondaryForeground,
38
- fontSize,
41
+ fontSize: sizeStyles.fontSize,
39
42
  fontFamily,
40
43
  },
41
44
  disabled: {
@@ -48,7 +51,8 @@ export const useButtonVariantSecondary = (): ButtonStyles => {
48
51
  icon: {
49
52
  default: {
50
53
  color: colors.secondaryForeground,
51
- size: fontSize,
54
+ size: sizeStyles.iconSize,
55
+ strokeWidth: sizeStyles.strokeWidth,
52
56
  },
53
57
  disabled: {
54
58
  color: colors.mutedForeground,
@@ -68,6 +72,6 @@ export const useButtonVariantSecondary = (): ButtonStyles => {
68
72
  color: colors.mutedForeground,
69
73
  },
70
74
  },
71
- }),
72
- );
75
+ };
76
+ });
73
77
  };