@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,5 +1,7 @@
1
1
  import React, { useState } from "react";
2
2
  import { Pressable, type PressableProps } from "react-native";
3
+ import { useComponentConfig } from "../../themes/provider";
4
+ import { mergeStyles } from "../../utils/calculate-styles";
3
5
  import type { PressableState } from "./types";
4
6
  import { PressableVariants } from "./variants";
5
7
 
@@ -25,6 +27,8 @@ const calculateState = (
25
27
  export function Touchable(props: TouchableProps) {
26
28
  const { variant = "default", isDisabled, style, children, ...rest } = props;
27
29
  const variantStyles = PressableVariants[variant]();
30
+ const componentConfig = useComponentConfig("touchable");
31
+ const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
28
32
  const [isHovered, setIsHovered] = useState(false);
29
33
 
30
34
  const handlePress: PressableProps["onPress"] = (event) => {
@@ -46,15 +50,11 @@ export function Touchable(props: TouchableProps) {
46
50
  }}
47
51
  disabled={isDisabled}
48
52
  style={(styleState) => {
49
- const currentState = calculateState(
50
- props,
51
- styleState.pressed,
52
- isHovered,
53
- );
53
+ const currentState = calculateState(props, styleState.pressed, isHovered);
54
54
 
55
55
  return [
56
- variantStyles?.default,
57
- variantStyles?.[currentState],
56
+ mergedStyles?.default,
57
+ mergedStyles?.[currentState],
58
58
  typeof style === "function" ? style(styleState) : style,
59
59
  ];
60
60
  }}
@@ -32,10 +32,7 @@ export function useColorScheme({ colorSchemeStorage }: UseColorSchemeProps) {
32
32
  };
33
33
 
34
34
  useEffect(() => {
35
- const newScheme = getColorScheme(
36
- colorSchemeStorage?.get,
37
- systemColorScheme,
38
- );
35
+ const newScheme = getColorScheme(colorSchemeStorage?.get, systemColorScheme);
39
36
  if (newScheme === _colorScheme) return;
40
37
  setColorScheme(newScheme);
41
38
  }, [systemColorScheme]);
@@ -42,7 +42,7 @@ export function useCurrencyMask({
42
42
  maximumFractionDigits: precision,
43
43
  }).format(num);
44
44
  },
45
- [locale, currency, precision]
45
+ [locale, currency, precision],
46
46
  );
47
47
 
48
48
  const parseCurrency = useCallback(
@@ -60,7 +60,7 @@ export function useCurrencyMask({
60
60
 
61
61
  return constrained;
62
62
  },
63
- [min, max]
63
+ [min, max],
64
64
  );
65
65
 
66
66
  const handleChangeText = useCallback(
@@ -93,7 +93,7 @@ export function useCurrencyMask({
93
93
  setNumericValue(value);
94
94
  onValueChange?.(value);
95
95
  },
96
- [parseCurrency, onValueChange, isFocused, precision]
96
+ [parseCurrency, onValueChange, isFocused, precision],
97
97
  );
98
98
 
99
99
  const handleBlur = useCallback(() => {
@@ -126,7 +126,7 @@ export function useCurrencyMask({
126
126
  }
127
127
  onValueChange?.(value);
128
128
  },
129
- [isFocused, formatCurrency, onValueChange]
129
+ [isFocused, formatCurrency, onValueChange],
130
130
  );
131
131
 
132
132
  return {
@@ -3,8 +3,7 @@ import { useEffect, useMemo } from "react";
3
3
  type NavigationContainerRef =
4
4
  import("@react-navigation/native").NavigationContainerRefWithCurrent<ReactNavigation.RootParamList>;
5
5
 
6
- let useCachedNavigationContainerRef: (() => NavigationContainerRef) | null =
7
- null;
6
+ let useCachedNavigationContainerRef: (() => NavigationContainerRef) | null = null;
8
7
 
9
8
  export function useInitializeNavigationContainerRef() {
10
9
  useEffect(() => {
@@ -16,14 +15,10 @@ export function useInitializeNavigationContainerRef() {
16
15
  }
17
16
  const reactNavigation = require("@react-navigation/native");
18
17
  if (reactNavigation) {
19
- useCachedNavigationContainerRef =
20
- reactNavigation.useNavigationContainerRef;
18
+ useCachedNavigationContainerRef = reactNavigation.useNavigationContainerRef;
21
19
  }
22
20
  } catch (error) {
23
- console.warn(
24
- "[useIsReactNavigationModal] Failed to load navigation ref:",
25
- error,
26
- );
21
+ console.warn("[useIsReactNavigationModal] Failed to load navigation ref:", error);
27
22
  }
28
23
  }, []);
29
24
  }
@@ -40,11 +35,7 @@ const getIsModal = () => {
40
35
  return false;
41
36
  }
42
37
  const state = navigationRef.getCurrentOptions();
43
- if (
44
- state &&
45
- "presentation" in state &&
46
- typeof state.presentation === "string"
47
- ) {
38
+ if (state && "presentation" in state && typeof state.presentation === "string") {
48
39
  return state.presentation === "modal";
49
40
  }
50
41
  return false;
@@ -74,7 +74,7 @@ export function useNumericMask({
74
74
  }).format(num);
75
75
  }
76
76
  },
77
- [format, locale, currency, effectivePrecision]
77
+ [format, locale, currency, effectivePrecision],
78
78
  );
79
79
 
80
80
  const parseValue = useCallback(
@@ -98,7 +98,7 @@ export function useNumericMask({
98
98
 
99
99
  return constrained;
100
100
  },
101
- [min, max, allowNegative]
101
+ [min, max, allowNegative],
102
102
  );
103
103
 
104
104
  const handleChangeText = useCallback(
@@ -151,7 +151,7 @@ export function useNumericMask({
151
151
  setNumericValue(value);
152
152
  onChange?.(value);
153
153
  },
154
- [parseValue, onChange, isFocused, effectivePrecision, allowNegative, format]
154
+ [parseValue, onChange, isFocused, effectivePrecision, allowNegative, format],
155
155
  );
156
156
 
157
157
  const handleBlur = useCallback(() => {
@@ -184,11 +184,16 @@ export function useNumericMask({
184
184
  }
185
185
  onChange?.(value);
186
186
  },
187
- [isFocused, formatValue, onChange]
187
+ [isFocused, formatValue, onChange],
188
188
  );
189
189
 
190
190
  // Determine keyboard type based on format
191
- const keyboardType = format === "integer" ? (allowNegative ? ("numeric" as const) : ("number-pad" as const)) : ("decimal-pad" as const);
191
+ const keyboardType =
192
+ format === "integer"
193
+ ? allowNegative
194
+ ? ("numeric" as const)
195
+ : ("number-pad" as const)
196
+ : ("decimal-pad" as const);
192
197
 
193
198
  return {
194
199
  value: displayValue,
@@ -1,9 +1,5 @@
1
1
  import { useCallback, useEffect, useRef, useState } from "react";
2
- import {
3
- type CountryData,
4
- COUNTRIES,
5
- getCountryByCode,
6
- } from "../data/countries";
2
+ import { type CountryData, COUNTRIES, getCountryByCode } from "../data/countries";
7
3
 
8
4
  export interface UsePhoneMaskOptions {
9
5
  value?: string;
@@ -57,9 +53,7 @@ function parseE164(
57
53
  if (!e164.startsWith("+")) return null;
58
54
  const digits = e164.slice(1);
59
55
 
60
- const sorted = [...countries].sort(
61
- (a, b) => b.dialCode.length - a.dialCode.length,
62
- );
56
+ const sorted = [...countries].sort((a, b) => b.dialCode.length - a.dialCode.length);
63
57
 
64
58
  for (const country of sorted) {
65
59
  if (digits.startsWith(country.dialCode)) {
@@ -99,9 +93,7 @@ export function usePhoneMask({
99
93
  if (parsed) {
100
94
  setCountryState(parsed.country);
101
95
  setNationalDigits(parsed.nationalDigits);
102
- setDisplayValue(
103
- formatNational(parsed.nationalDigits, parsed.country.format),
104
- );
96
+ setDisplayValue(formatNational(parsed.nationalDigits, parsed.country.format));
105
97
  }
106
98
  } else {
107
99
  setNationalDigits("");
@@ -138,8 +130,7 @@ export function usePhoneMask({
138
130
  setNationalDigits(trimmed);
139
131
  setDisplayValue(formatNational(trimmed, newCountry.format));
140
132
 
141
- const e164 =
142
- trimmed.length > 0 ? toE164(newCountry.dialCode, trimmed) : "";
133
+ const e164 = trimmed.length > 0 ? toE164(newCountry.dialCode, trimmed) : "";
143
134
  isInternalChange.current = true;
144
135
  onChange?.(e164);
145
136
  },
@@ -159,9 +150,7 @@ export function usePhoneMask({
159
150
  if (parsed) {
160
151
  setCountryState(parsed.country);
161
152
  setNationalDigits(parsed.nationalDigits);
162
- setDisplayValue(
163
- formatNational(parsed.nationalDigits, parsed.country.format),
164
- );
153
+ setDisplayValue(formatNational(parsed.nationalDigits, parsed.country.format));
165
154
  isInternalChange.current = true;
166
155
  onChange?.(e164);
167
156
  }
@@ -171,8 +160,7 @@ export function usePhoneMask({
171
160
 
172
161
  return {
173
162
  displayValue,
174
- e164Value:
175
- nationalDigits.length > 0 ? toE164(country.dialCode, nationalDigits) : "",
163
+ e164Value: nationalDigits.length > 0 ? toE164(country.dialCode, nationalDigits) : "",
176
164
  country,
177
165
  countries: availableCountries,
178
166
  onChangeText,
@@ -10,14 +10,9 @@ import { usePortalOffset } from "../components/portal";
10
10
  import { useSafeAreaInsets, type SafeAreaInsets } from "../safe-area";
11
11
  import { useIsReactNavigationModal } from "./use-is-react-navigation-modal";
12
12
 
13
- type UseRelativePositionArgs = Omit<
14
- GetContentStyleArgs,
15
- "dimensions" | "insets"
16
- >;
13
+ type UseRelativePositionArgs = Omit<GetContentStyleArgs, "dimensions" | "insets">;
17
14
 
18
- type GetContentStyleArgs = GetPositionArgs &
19
- GetSidePositionArgs &
20
- GetAlignPositionArgs;
15
+ type GetContentStyleArgs = GetPositionArgs & GetSidePositionArgs & GetAlignPositionArgs;
21
16
 
22
17
  export function useRelativePosition({
23
18
  align,
@@ -81,9 +76,7 @@ export function useRelativePosition({
81
76
  // Temporary fix to calculate portal content relative position correctly when rendered in a React Navigation modal.
82
77
  top: Platform.select({
83
78
  default: sidePosition.top,
84
- ios: isReactNavigationModal
85
- ? sidePosition.top + insets.top
86
- : sidePosition.top,
79
+ ios: isReactNavigationModal ? sidePosition.top + insets.top : sidePosition.top,
87
80
  }),
88
81
  };
89
82
 
@@ -182,10 +175,8 @@ function getSidePosition({
182
175
  insets,
183
176
  dimensions,
184
177
  }: GetSidePositionArgs) {
185
- const positionTop =
186
- triggerPosition?.pageY - sideOffset - contentLayout.height;
187
- const positionBottom =
188
- triggerPosition.pageY + triggerPosition.height + sideOffset;
178
+ const positionTop = triggerPosition?.pageY - sideOffset - contentLayout.height;
179
+ const positionBottom = triggerPosition.pageY + triggerPosition.height + sideOffset;
189
180
 
190
181
  const side = getSide({
191
182
  preferredSide,
@@ -205,10 +196,7 @@ function getSidePosition({
205
196
  };
206
197
  }
207
198
 
208
- let top = Math.min(
209
- dimensions.height - insets.bottom - contentLayout.height,
210
- positionBottom,
211
- );
199
+ let top = Math.min(dimensions.height - insets.bottom - contentLayout.height, positionBottom);
212
200
 
213
201
  return {
214
202
  top,
@@ -242,8 +230,7 @@ function getAlignPosition({
242
230
  dimensions,
243
231
  );
244
232
 
245
- const doesCollide =
246
- left < insets.left || left + contentWidth > dimensions.width - insets.right;
233
+ const doesCollide = left < insets.left || left + contentWidth > dimensions.width - insets.right;
247
234
  if (doesCollide) {
248
235
  const spaceLeft = left - insets.left;
249
236
  const spaceRight = dimensions.width - insets.right - (left + contentWidth);
@@ -285,9 +272,6 @@ function getLeftPosition(
285
272
  }
286
273
  return Math.max(
287
274
  insets.left,
288
- Math.min(
289
- left + alignOffset,
290
- dimensions.width - contentWidth - insets.right,
291
- ),
275
+ Math.min(left + alignOffset, dimensions.width - contentWidth - insets.right),
292
276
  );
293
277
  }
@@ -10,14 +10,17 @@ interface Response {
10
10
  readonly isTablet: boolean;
11
11
  readonly isDesktop: boolean;
12
12
 
13
- select<T>(specifics: ({ [size in ScreenSize]?: T } & { default: T }) | { [platform in ScreenSize]: T }): T;
13
+ select<T>(
14
+ specifics: ({ [size in ScreenSize]?: T } & { default: T }) | { [platform in ScreenSize]: T },
15
+ ): T;
14
16
  select<T>(specifics: { [size in ScreenSize]?: T }): T | undefined;
15
17
  }
16
18
 
17
19
  export function useScreenSize(): Response {
18
20
  const windowDimensions = useWindowDimensions();
19
21
 
20
- const size: ScreenSize = windowDimensions.width < 768 ? "mobile" : windowDimensions.width < 1024 ? "tablet" : "desktop";
22
+ const size: ScreenSize =
23
+ windowDimensions.width < 768 ? "mobile" : windowDimensions.width < 1024 ? "tablet" : "desktop";
21
24
 
22
25
  return {
23
26
  size,
@@ -33,7 +36,9 @@ export function useScreenSize(): Response {
33
36
  if (size === "tablet" && tablet !== undefined) return tablet;
34
37
  if (size === "desktop" && desktop !== undefined) return desktop;
35
38
  if (!("default" in specifics)) {
36
- throw new Error(`Utils.$screenSize.select: No value specified for current screen size: ${size}`);
39
+ throw new Error(
40
+ `Utils.$screenSize.select: No value specified for current screen size: ${size}`,
41
+ );
37
42
  }
38
43
  return specifics.default;
39
44
  },
package/src/index.tsx CHANGED
@@ -5,11 +5,8 @@ import { type PortalHostProps } from "./components/portal/portal.constants";
5
5
  import { ToastContainer } from "./components/toast/manager";
6
6
  import { useInitializeNavigationContainerRef } from "./hooks/use-is-react-navigation-modal";
7
7
  import { SafeAreaProvider, type SafeAreaInsets } from "./safe-area";
8
- import {
9
- ThemeProvider,
10
- type ComponentsConfig,
11
- type ThemeProviderProps,
12
- } from "./themes";
8
+ import { ThemeProvider, type ThemeProviderProps } from "./themes/provider";
9
+ import type { ComponentsConfig } from "./themes/types";
13
10
 
14
11
  export interface ProviderProps {
15
12
  children: React.ReactNode;
@@ -46,9 +43,11 @@ export * from "./hooks/use-screen-size";
46
43
 
47
44
  export * from "./themes/adapters";
48
45
  export * from "./themes/default";
49
- export { useTheme, type ComponentsConfig } from "./themes/provider";
46
+ export { useTheme } from "./themes/provider";
50
47
  export * from "./themes/types";
51
48
 
52
49
  export * from "./components";
53
50
 
54
51
  export * from "./safe-area";
52
+ export type { Size } from "./utils/size-scale";
53
+ export type { SvgProps } from "./types/props.types";
@@ -7,6 +7,7 @@ export const defaultThemeAssets: ThemeAssets = {
7
7
  dark: darkColors,
8
8
  },
9
9
  radius: 10,
10
+ spacing: 6,
10
11
  fontFamily: "System",
11
12
  letterSpacing: 0,
12
13
  fontSize: 16,
@@ -1,3 +1,3 @@
1
- export * from "./provider";
2
- export * from "./types";
3
1
  export * from "./adapters/react-navigation";
2
+ export { ThemeProvider, useTheme } from "./provider";
3
+ export * from "./types";
@@ -1,17 +1,15 @@
1
1
  import { createContext, type PropsWithChildren, useContext } from "react";
2
- import type { ToastVariants } from "../components/toast/variants";
3
2
  import { useColorScheme } from "../hooks/use-color-scheme";
4
- import type { SvgProps } from "../types/props.types";
5
3
  import type { DeepPartial } from "../types/util.types";
6
4
  import { defaultThemeAssets } from "./default";
7
5
  import type {
8
6
  Colors,
9
7
  ColorScheme,
8
+ ComponentsConfig,
10
9
  FontFamily,
11
10
  FontSize,
12
11
  LetterSpacing,
13
12
  Radius,
14
- StorageClient,
15
13
  ThemeAssets,
16
14
  } from "./types";
17
15
  import { mergeThemeAssets } from "./utils";
@@ -23,28 +21,11 @@ interface ThemeContext {
23
21
  colorScheme: ColorScheme;
24
22
  letterSpacing: LetterSpacing;
25
23
  fontSize: FontSize;
24
+ spacing: number;
26
25
  setColorScheme: (scheme: ColorScheme) => void;
27
26
  components?: ComponentsConfig;
28
27
  }
29
28
 
30
- export interface ComponentsConfig {
31
- colorScheme?: {
32
- storage?: StorageClient<ColorScheme>;
33
- };
34
- toast?: {
35
- icons?: Partial<
36
- Record<keyof typeof ToastVariants, React.ComponentType<SvgProps>>
37
- >;
38
- };
39
- menu?: {
40
- selectionIcon?: React.ComponentType<SvgProps>;
41
- };
42
- calendar?: {
43
- prevIcon?: React.ComponentType<SvgProps>;
44
- nextIcon?: React.ComponentType<SvgProps>;
45
- };
46
- }
47
-
48
29
  const ThemeContext = createContext<ThemeContext | null>(null);
49
30
 
50
31
  export interface ThemeProviderProps extends PropsWithChildren {
@@ -58,9 +39,7 @@ export const ThemeProvider = (props: ThemeProviderProps) => {
58
39
  colorSchemeStorage: components?.colorScheme?.storage,
59
40
  });
60
41
 
61
- const themeAssets = theme
62
- ? mergeThemeAssets(defaultThemeAssets, theme)
63
- : defaultThemeAssets;
42
+ const themeAssets = theme ? mergeThemeAssets(defaultThemeAssets, theme) : defaultThemeAssets;
64
43
 
65
44
  const colors = themeAssets.colors[colorScheme];
66
45
 
@@ -74,6 +53,7 @@ export const ThemeProvider = (props: ThemeProviderProps) => {
74
53
  fontFamily: themeAssets.fontFamily,
75
54
  letterSpacing: themeAssets.letterSpacing,
76
55
  fontSize: themeAssets.fontSize,
56
+ spacing: themeAssets.spacing,
77
57
  components,
78
58
  }}
79
59
  >
@@ -90,10 +70,15 @@ export const useTheme = () => {
90
70
  return context;
91
71
  };
92
72
 
93
- export const useComponentsConfig = () => {
73
+ const useComponentsConfig = () => {
94
74
  const context = useContext(ThemeContext);
95
75
  if (!context) {
96
76
  throw new Error("useComponentsConfig must be used within a ThemeProvider");
97
77
  }
98
78
  return context.components;
99
79
  };
80
+
81
+ export const useComponentConfig = <K extends keyof ComponentsConfig>(componentName: K) => {
82
+ const componentsConfig = useComponentsConfig();
83
+ return componentsConfig?.[componentName];
84
+ };
@@ -30,9 +30,135 @@ export interface ThemeAssets {
30
30
  fontFamily: FontFamily;
31
31
  letterSpacing: LetterSpacing;
32
32
  fontSize: FontSize;
33
+ spacing: number;
33
34
  }
34
35
 
35
36
  export type StorageClient<T> = {
36
37
  set: (value: T) => void;
37
38
  get: () => T | null;
38
39
  };
40
+
41
+ import type { AlertDialogStyles } from "../components/alert-dialog/types";
42
+ import type { AlertStyles } from "../components/alert/types";
43
+ import type { AvatarStyles } from "../components/avatar/types";
44
+ import type { BadgeStyles } from "../components/badge/types";
45
+ import type { ButtonStyles } from "../components/button/types";
46
+ import type { CalendarStyles } from "../components/calendar/calendar/types";
47
+ import type { TimelineStyles } from "../components/calendar/timeline/types";
48
+ import type { WeekCalendarStyles } from "../components/calendar/week-calendar/types";
49
+ import type { CardStyles } from "../components/card/types";
50
+ import type { CheckboxStyles } from "../components/checkbox/types";
51
+ import type { ComboboxStyles } from "../components/combobox/types";
52
+ import type { EmptyStyles } from "../components/empty/types";
53
+ import type { FieldStyles } from "../components/field/types";
54
+ import type { IconButtonStyles } from "../components/icon-button/types";
55
+ import type { InputStyles } from "../components/input/types";
56
+ import type { MenuStyles } from "../components/menu/types";
57
+ import type { PhoneInputStyles } from "../components/phone-input/types";
58
+ import type { PopoverStyles } from "../components/popover/types";
59
+ import type { ProgressStyles } from "../components/progress/types";
60
+ import type { RadioGroupStyles } from "../components/radio-group/types";
61
+ import type { SelectStyles } from "../components/select/types";
62
+ import type { SeparatorStyles } from "../components/separator/types";
63
+ import type { SpinnerStyles } from "../components/spinner/types";
64
+ import type { TableStyles } from "../components/table/types";
65
+ import type { TabsStyles } from "../components/tabs/types";
66
+ import type { TextareaStyles } from "../components/textarea/types";
67
+ import type { ToastStyles } from "../components/toast/types";
68
+ import type { ToastVariants } from "../components/toast/variants";
69
+ import type { PressableStyles } from "../components/touchable/types";
70
+ import type { SvgProps } from "../types/props.types";
71
+
72
+ export interface ComponentsConfig {
73
+ colorScheme?: {
74
+ storage?: StorageClient<ColorScheme>;
75
+ };
76
+ alert?: {
77
+ styles?: AlertStyles;
78
+ };
79
+ alertDialog?: {
80
+ styles?: AlertDialogStyles;
81
+ };
82
+ avatar?: {
83
+ styles?: AvatarStyles;
84
+ };
85
+ badge?: {
86
+ styles?: BadgeStyles;
87
+ };
88
+ button?: {
89
+ styles?: ButtonStyles;
90
+ };
91
+ calendar?: {
92
+ prevIcon?: React.ComponentType<SvgProps>;
93
+ nextIcon?: React.ComponentType<SvgProps>;
94
+ styles?: CalendarStyles;
95
+ };
96
+ card?: {
97
+ styles?: CardStyles;
98
+ };
99
+ checkbox?: {
100
+ styles?: CheckboxStyles;
101
+ };
102
+ combobox?: {
103
+ styles?: ComboboxStyles;
104
+ };
105
+ empty?: {
106
+ styles?: EmptyStyles;
107
+ };
108
+ field?: {
109
+ styles?: FieldStyles;
110
+ };
111
+ iconButton?: {
112
+ styles?: IconButtonStyles;
113
+ };
114
+ input?: {
115
+ styles?: InputStyles;
116
+ };
117
+ menu?: {
118
+ selectionIcon?: React.ComponentType<SvgProps>;
119
+ styles?: MenuStyles;
120
+ };
121
+ phoneInput?: {
122
+ styles?: PhoneInputStyles;
123
+ };
124
+ popover?: {
125
+ styles?: PopoverStyles;
126
+ };
127
+ progress?: {
128
+ styles?: ProgressStyles;
129
+ };
130
+ radioGroup?: {
131
+ styles?: RadioGroupStyles;
132
+ };
133
+ select?: {
134
+ styles?: SelectStyles;
135
+ };
136
+ separator?: {
137
+ styles?: SeparatorStyles;
138
+ };
139
+ spinner?: {
140
+ styles?: SpinnerStyles;
141
+ };
142
+ table?: {
143
+ styles?: TableStyles;
144
+ };
145
+ tabs?: {
146
+ styles?: TabsStyles;
147
+ };
148
+ textarea?: {
149
+ styles?: TextareaStyles;
150
+ };
151
+ timeline?: {
152
+ styles?: TimelineStyles;
153
+ };
154
+ toast?: {
155
+ icons?: Partial<Record<keyof typeof ToastVariants, React.ComponentType<SvgProps>>>;
156
+ styles?: ToastStyles;
157
+ };
158
+ touchable?: {
159
+ styles?: PressableStyles;
160
+ };
161
+ weekCalendar?: {
162
+ styles?: WeekCalendarStyles;
163
+ };
164
+ }
@@ -14,5 +14,6 @@ export function mergeThemeAssets(
14
14
  fontFamily: override.fontFamily ?? base.fontFamily,
15
15
  letterSpacing: override.letterSpacing ?? base.letterSpacing,
16
16
  fontSize: override.fontSize ?? base.fontSize,
17
+ spacing: override.spacing ?? base.spacing,
17
18
  };
18
19
  }
@@ -1,8 +1,14 @@
1
- export const calculateComposedStyles = <TStyle, State extends string | "default", Component extends string>(
1
+ import { StyleSheet } from "react-native";
2
+
3
+ export const calculateComposedStyles = <
4
+ TStyle,
5
+ State extends string | "default",
6
+ Component extends string,
7
+ >(
2
8
  styles: Partial<Record<Component, Partial<Record<State, TStyle>>>> | null = {},
3
9
  state: State,
4
10
  component: Component,
5
- style?: TStyle
11
+ style?: TStyle,
6
12
  ): TStyle[] => {
7
13
  const result: TStyle[] = [];
8
14
  const componentStyles = styles?.[component];
@@ -17,3 +23,37 @@ export const calculateComposedStyles = <TStyle, State extends string | "default"
17
23
  }
18
24
  return result;
19
25
  };
26
+
27
+ const mergeProps = <TProps extends { style?: any }>(
28
+ variantProps: TProps,
29
+ globalProps: TProps | undefined,
30
+ ): TProps => {
31
+ if (!globalProps) return variantProps;
32
+ const mergedProps = {
33
+ ...globalProps,
34
+ ...variantProps,
35
+ style: [globalProps.style, variantProps.style],
36
+ };
37
+ return mergedProps;
38
+ };
39
+
40
+ const isPropsObject = (props: unknown): props is { style?: any } => {
41
+ return typeof props === "object" && props !== null && "style" in props;
42
+ };
43
+
44
+ export const mergeStyles = <TStyle extends Record<string, any>>(
45
+ variantStyles: TStyle,
46
+ globalStyles: TStyle | undefined,
47
+ ): TStyle => {
48
+ if (!globalStyles) return variantStyles;
49
+ const returnStyles = {} as TStyle;
50
+ for (const key in variantStyles) {
51
+ if (isPropsObject(variantStyles[key]) && isPropsObject(globalStyles[key])) {
52
+ returnStyles[key] = mergeProps(variantStyles[key], globalStyles[key]);
53
+ } else {
54
+ // @ts-ignore
55
+ returnStyles[key] = StyleSheet.flatten([variantStyles[key], globalStyles[key]]);
56
+ }
57
+ }
58
+ return returnStyles;
59
+ };