@archytechtor/ui 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +105 -2
  3. package/dist/components/accordion/accordion.d.ts +25 -0
  4. package/dist/components/accordion/accordion.js +88 -0
  5. package/dist/components/accordion/index.d.ts +3 -0
  6. package/dist/components/accordion/index.js +1 -0
  7. package/dist/components/accordion/types.d.ts +39 -0
  8. package/dist/components/alert/alert.d.ts +25 -0
  9. package/dist/components/alert/alert.js +59 -0
  10. package/dist/components/alert/index.d.ts +3 -0
  11. package/dist/components/alert/index.js +3 -0
  12. package/dist/components/alert/types.d.ts +32 -0
  13. package/dist/components/alert/types.js +19 -0
  14. package/dist/components/alert-dialog/alert-dialog.d.ts +73 -0
  15. package/dist/components/alert-dialog/alert-dialog.js +170 -0
  16. package/dist/components/alert-dialog/index.d.ts +3 -0
  17. package/dist/components/alert-dialog/index.js +1 -0
  18. package/dist/components/alert-dialog/types.d.ts +80 -0
  19. package/dist/components/aspect-ratio/aspect-ratio.d.ts +8 -0
  20. package/dist/components/aspect-ratio/aspect-ratio.js +20 -0
  21. package/dist/components/aspect-ratio/index.d.ts +3 -0
  22. package/dist/components/aspect-ratio/index.js +1 -0
  23. package/dist/components/aspect-ratio/types.d.ts +8 -0
  24. package/dist/components/attachment/attachment.d.ts +57 -0
  25. package/dist/components/attachment/attachment.js +139 -0
  26. package/dist/components/attachment/index.d.ts +3 -0
  27. package/dist/components/attachment/index.js +3 -0
  28. package/dist/components/attachment/types.d.ts +79 -0
  29. package/dist/components/attachment/types.js +43 -0
  30. package/dist/components/avatar/avatar.d.ts +39 -0
  31. package/dist/components/avatar/avatar.js +88 -0
  32. package/dist/components/avatar/index.d.ts +3 -0
  33. package/dist/components/avatar/index.js +3 -0
  34. package/dist/components/avatar/types.d.ts +54 -0
  35. package/dist/components/avatar/types.js +21 -0
  36. package/dist/components/badge/badge.d.ts +7 -0
  37. package/dist/components/badge/badge.js +23 -0
  38. package/dist/components/badge/index.d.ts +3 -0
  39. package/dist/components/badge/index.js +3 -0
  40. package/dist/components/badge/types.d.ts +21 -0
  41. package/dist/components/badge/types.js +26 -0
  42. package/dist/components/bottom-nav/bottom-nav.d.ts +19 -0
  43. package/dist/components/bottom-nav/bottom-nav.js +59 -0
  44. package/dist/components/bottom-nav/index.d.ts +3 -0
  45. package/dist/components/bottom-nav/index.js +3 -0
  46. package/dist/components/bottom-nav/types.d.ts +45 -0
  47. package/dist/components/bottom-nav/types.js +44 -0
  48. package/dist/components/box/box.d.ts +7 -0
  49. package/dist/components/box/box.js +26 -0
  50. package/dist/components/box/index.d.ts +3 -0
  51. package/dist/components/box/index.js +3 -0
  52. package/dist/components/box/types.d.ts +23 -0
  53. package/dist/components/box/types.js +27 -0
  54. package/dist/components/breadcrumb/breadcrumb.d.ts +43 -0
  55. package/dist/components/breadcrumb/breadcrumb.js +115 -0
  56. package/dist/components/breadcrumb/index.d.ts +3 -0
  57. package/dist/components/breadcrumb/index.js +1 -0
  58. package/dist/components/breadcrumb/types.d.ts +36 -0
  59. package/dist/components/bubble/bubble.d.ts +25 -0
  60. package/dist/components/bubble/bubble.js +69 -0
  61. package/dist/components/bubble/index.d.ts +3 -0
  62. package/dist/components/bubble/index.js +3 -0
  63. package/dist/components/bubble/types.d.ts +51 -0
  64. package/dist/components/bubble/types.js +60 -0
  65. package/dist/components/button/button.d.ts +7 -0
  66. package/dist/components/button/button.js +155 -0
  67. package/dist/components/button/index.d.ts +4 -0
  68. package/dist/components/button/index.js +4 -0
  69. package/dist/components/button/types.d.ts +80 -0
  70. package/dist/components/button/types.js +99 -0
  71. package/dist/components/button/use-hold-to-confirm.d.ts +25 -0
  72. package/dist/components/button/use-hold-to-confirm.js +161 -0
  73. package/dist/components/button-group/button-group.d.ts +20 -0
  74. package/dist/components/button-group/button-group.js +62 -0
  75. package/dist/components/button-group/index.d.ts +3 -0
  76. package/dist/components/button-group/index.js +3 -0
  77. package/dist/components/button-group/types.d.ts +30 -0
  78. package/dist/components/button-group/types.js +19 -0
  79. package/dist/components/calendar/calendar.d.ts +15 -0
  80. package/dist/components/calendar/calendar.js +157 -0
  81. package/dist/components/calendar/index.d.ts +3 -0
  82. package/dist/components/calendar/index.js +1 -0
  83. package/dist/components/calendar/types.d.ts +21 -0
  84. package/dist/components/card/card.d.ts +43 -0
  85. package/dist/components/card/card.js +97 -0
  86. package/dist/components/card/index.d.ts +3 -0
  87. package/dist/components/card/index.js +3 -0
  88. package/dist/components/card/types.d.ts +44 -0
  89. package/dist/components/card/types.js +19 -0
  90. package/dist/components/carousel/carousel.d.ts +36 -0
  91. package/dist/components/carousel/carousel.js +190 -0
  92. package/dist/components/carousel/index.d.ts +3 -0
  93. package/dist/components/carousel/index.js +1 -0
  94. package/dist/components/carousel/types.d.ts +79 -0
  95. package/dist/components/chart/chart.d.ts +35 -0
  96. package/dist/components/chart/chart.js +212 -0
  97. package/dist/components/chart/index.d.ts +3 -0
  98. package/dist/components/chart/index.js +1 -0
  99. package/dist/components/chart/types.d.ts +89 -0
  100. package/dist/components/chart/types.js +7 -0
  101. package/dist/components/checkbox/checkbox.d.ts +7 -0
  102. package/dist/components/checkbox/checkbox.js +31 -0
  103. package/dist/components/checkbox/index.d.ts +3 -0
  104. package/dist/components/checkbox/index.js +1 -0
  105. package/dist/components/checkbox/types.d.ts +25 -0
  106. package/dist/components/code-block/code-block.d.ts +49 -0
  107. package/dist/components/code-block/code-block.js +188 -0
  108. package/dist/components/code-block/highlighter.d.ts +15 -0
  109. package/dist/components/code-block/highlighter.js +123 -0
  110. package/dist/components/code-block/index.d.ts +5 -0
  111. package/dist/components/code-block/index.js +5 -0
  112. package/dist/components/code-block/types.d.ts +94 -0
  113. package/dist/components/code-block/types.js +38 -0
  114. package/dist/components/code-block/use-highlighted-code.d.ts +9 -0
  115. package/dist/components/code-block/use-highlighted-code.js +67 -0
  116. package/dist/components/collapsible/collapsible.d.ts +19 -0
  117. package/dist/components/collapsible/collapsible.js +44 -0
  118. package/dist/components/collapsible/index.d.ts +3 -0
  119. package/dist/components/collapsible/index.js +1 -0
  120. package/dist/components/collapsible/types.d.ts +26 -0
  121. package/dist/components/combobox/combobox.d.ts +104 -0
  122. package/dist/components/combobox/combobox.js +365 -0
  123. package/dist/components/combobox/index.d.ts +3 -0
  124. package/dist/components/combobox/index.js +1 -0
  125. package/dist/components/combobox/types.d.ts +229 -0
  126. package/dist/components/command/command.d.ts +55 -0
  127. package/dist/components/command/command.js +179 -0
  128. package/dist/components/command/index.d.ts +3 -0
  129. package/dist/components/command/index.js +1 -0
  130. package/dist/components/command/types.d.ts +69 -0
  131. package/dist/components/context-menu/context-menu.d.ts +92 -0
  132. package/dist/components/context-menu/context-menu.js +270 -0
  133. package/dist/components/context-menu/index.d.ts +3 -0
  134. package/dist/components/context-menu/index.js +1 -0
  135. package/dist/components/context-menu/types.d.ts +138 -0
  136. package/dist/components/data-table/data-table-features.d.ts +21 -0
  137. package/dist/components/data-table/data-table-features.js +22 -0
  138. package/dist/components/data-table/data-table.d.ts +69 -0
  139. package/dist/components/data-table/data-table.js +283 -0
  140. package/dist/components/data-table/index.d.ts +4 -0
  141. package/dist/components/data-table/index.js +3 -0
  142. package/dist/components/data-table/types.d.ts +63 -0
  143. package/dist/components/date-input/date-input.d.ts +7 -0
  144. package/dist/components/date-input/date-input.js +147 -0
  145. package/dist/components/date-input/index.d.ts +3 -0
  146. package/dist/components/date-input/index.js +1 -0
  147. package/dist/components/date-input/types.d.ts +27 -0
  148. package/dist/components/date-picker/date-picker.d.ts +7 -0
  149. package/dist/components/date-picker/date-picker.js +74 -0
  150. package/dist/components/date-picker/index.d.ts +3 -0
  151. package/dist/components/date-picker/index.js +1 -0
  152. package/dist/components/date-picker/types.d.ts +38 -0
  153. package/dist/components/date-range-picker/date-range-picker.d.ts +7 -0
  154. package/dist/components/date-range-picker/date-range-picker.js +89 -0
  155. package/dist/components/date-range-picker/index.d.ts +3 -0
  156. package/dist/components/date-range-picker/index.js +1 -0
  157. package/dist/components/date-range-picker/types.d.ts +43 -0
  158. package/dist/components/dialog/dialog.d.ts +61 -0
  159. package/dist/components/dialog/dialog.js +160 -0
  160. package/dist/components/dialog/index.d.ts +3 -0
  161. package/dist/components/dialog/index.js +1 -0
  162. package/dist/components/dialog/types.d.ts +68 -0
  163. package/dist/components/drawer/drawer.d.ts +69 -0
  164. package/dist/components/drawer/drawer.js +245 -0
  165. package/dist/components/drawer/index.d.ts +3 -0
  166. package/dist/components/drawer/index.js +1 -0
  167. package/dist/components/drawer/types.d.ts +93 -0
  168. package/dist/components/dropdown-menu/dropdown-menu.d.ts +92 -0
  169. package/dist/components/dropdown-menu/dropdown-menu.js +268 -0
  170. package/dist/components/dropdown-menu/index.d.ts +3 -0
  171. package/dist/components/dropdown-menu/index.js +1 -0
  172. package/dist/components/dropdown-menu/types.d.ts +143 -0
  173. package/dist/components/empty/empty.d.ts +37 -0
  174. package/dist/components/empty/empty.js +84 -0
  175. package/dist/components/empty/index.d.ts +3 -0
  176. package/dist/components/empty/index.js +3 -0
  177. package/dist/components/empty/types.d.ts +39 -0
  178. package/dist/components/empty/types.js +13 -0
  179. package/dist/components/expanded-card/expanded-card.d.ts +43 -0
  180. package/dist/components/expanded-card/expanded-card.js +352 -0
  181. package/dist/components/expanded-card/index.d.ts +3 -0
  182. package/dist/components/expanded-card/index.js +1 -0
  183. package/dist/components/expanded-card/types.d.ts +52 -0
  184. package/dist/components/field/field.d.ts +62 -0
  185. package/dist/components/field/field.js +173 -0
  186. package/dist/components/field/index.d.ts +3 -0
  187. package/dist/components/field/index.js +3 -0
  188. package/dist/components/field/types.d.ts +81 -0
  189. package/dist/components/field/types.js +21 -0
  190. package/dist/components/form/form.d.ts +49 -0
  191. package/dist/components/form/form.js +136 -0
  192. package/dist/components/form/index.d.ts +3 -0
  193. package/dist/components/form/index.js +1 -0
  194. package/dist/components/form/types.d.ts +59 -0
  195. package/dist/components/grid/grid.d.ts +7 -0
  196. package/dist/components/grid/grid.js +36 -0
  197. package/dist/components/grid/index.d.ts +3 -0
  198. package/dist/components/grid/index.js +3 -0
  199. package/dist/components/grid/types.d.ts +35 -0
  200. package/dist/components/grid/types.js +102 -0
  201. package/dist/components/hover-card/hover-card.d.ts +19 -0
  202. package/dist/components/hover-card/hover-card.js +63 -0
  203. package/dist/components/hover-card/index.d.ts +3 -0
  204. package/dist/components/hover-card/index.js +1 -0
  205. package/dist/components/hover-card/types.d.ts +27 -0
  206. package/dist/components/image-gallery/image-gallery.d.ts +8 -0
  207. package/dist/components/image-gallery/image-gallery.js +294 -0
  208. package/dist/components/image-gallery/index.d.ts +4 -0
  209. package/dist/components/image-gallery/index.js +3 -0
  210. package/dist/components/image-gallery/masonry.d.ts +11 -0
  211. package/dist/components/image-gallery/masonry.js +62 -0
  212. package/dist/components/image-gallery/types.d.ts +80 -0
  213. package/dist/components/input/index.d.ts +3 -0
  214. package/dist/components/input/index.js +1 -0
  215. package/dist/components/input/input.d.ts +7 -0
  216. package/dist/components/input/input.js +18 -0
  217. package/dist/components/input/types.d.ts +28 -0
  218. package/dist/components/input-group/index.d.ts +3 -0
  219. package/dist/components/input-group/index.js +3 -0
  220. package/dist/components/input-group/input-group.d.ts +37 -0
  221. package/dist/components/input-group/input-group.js +103 -0
  222. package/dist/components/input-group/types.d.ts +64 -0
  223. package/dist/components/input-group/types.js +31 -0
  224. package/dist/components/input-otp/index.d.ts +3 -0
  225. package/dist/components/input-otp/index.js +1 -0
  226. package/dist/components/input-otp/input-otp.d.ts +25 -0
  227. package/dist/components/input-otp/input-otp.js +76 -0
  228. package/dist/components/input-otp/types.d.ts +43 -0
  229. package/dist/components/item/index.d.ts +3 -0
  230. package/dist/components/item/index.js +3 -0
  231. package/dist/components/item/item.d.ts +61 -0
  232. package/dist/components/item/item.js +149 -0
  233. package/dist/components/item/types.d.ts +75 -0
  234. package/dist/components/item/types.js +48 -0
  235. package/dist/components/kbd/index.d.ts +3 -0
  236. package/dist/components/kbd/index.js +1 -0
  237. package/dist/components/kbd/kbd.d.ts +13 -0
  238. package/dist/components/kbd/kbd.js +30 -0
  239. package/dist/components/kbd/types.d.ts +9 -0
  240. package/dist/components/label/index.d.ts +3 -0
  241. package/dist/components/label/index.js +1 -0
  242. package/dist/components/label/label.d.ts +7 -0
  243. package/dist/components/label/label.js +17 -0
  244. package/dist/components/label/types.d.ts +8 -0
  245. package/dist/components/loader/index.d.ts +3 -0
  246. package/dist/components/loader/index.js +3 -0
  247. package/dist/components/loader/loader.d.ts +8 -0
  248. package/dist/components/loader/loader.js +386 -0
  249. package/dist/components/loader/types.d.ts +27 -0
  250. package/dist/components/loader/types.js +58 -0
  251. package/dist/components/marker/index.d.ts +3 -0
  252. package/dist/components/marker/index.js +3 -0
  253. package/dist/components/marker/marker.d.ts +19 -0
  254. package/dist/components/marker/marker.js +51 -0
  255. package/dist/components/marker/types.d.ts +30 -0
  256. package/dist/components/marker/types.js +16 -0
  257. package/dist/components/menubar/index.d.ts +3 -0
  258. package/dist/components/menubar/index.js +1 -0
  259. package/dist/components/menubar/menubar.d.ts +98 -0
  260. package/dist/components/menubar/menubar.js +284 -0
  261. package/dist/components/menubar/types.d.ts +146 -0
  262. package/dist/components/message/index.d.ts +3 -0
  263. package/dist/components/message/index.js +1 -0
  264. package/dist/components/message/message.d.ts +37 -0
  265. package/dist/components/message/message.js +83 -0
  266. package/dist/components/message/types.d.ts +32 -0
  267. package/dist/components/message-scroller/index.d.ts +4 -0
  268. package/dist/components/message-scroller/index.js +3 -0
  269. package/dist/components/message-scroller/message-scroller-primitive.d.ts +21 -0
  270. package/dist/components/message-scroller/message-scroller-primitive.js +1349 -0
  271. package/dist/components/message-scroller/message-scroller.d.ts +39 -0
  272. package/dist/components/message-scroller/message-scroller.js +103 -0
  273. package/dist/components/message-scroller/types.d.ts +107 -0
  274. package/dist/components/money-input/index.d.ts +3 -0
  275. package/dist/components/money-input/index.js +1 -0
  276. package/dist/components/money-input/money-input.d.ts +7 -0
  277. package/dist/components/money-input/money-input.js +143 -0
  278. package/dist/components/money-input/types.d.ts +20 -0
  279. package/dist/components/morph-image/index.d.ts +3 -0
  280. package/dist/components/morph-image/index.js +3 -0
  281. package/dist/components/morph-image/morph-image.d.ts +8 -0
  282. package/dist/components/morph-image/morph-image.js +155 -0
  283. package/dist/components/morph-image/types.d.ts +38 -0
  284. package/dist/components/morph-image/types.js +18 -0
  285. package/dist/components/native-select/index.d.ts +3 -0
  286. package/dist/components/native-select/index.js +3 -0
  287. package/dist/components/native-select/native-select.d.ts +20 -0
  288. package/dist/components/native-select/native-select.js +57 -0
  289. package/dist/components/native-select/types.d.ts +52 -0
  290. package/dist/components/native-select/types.js +23 -0
  291. package/dist/components/navigation-menu/index.d.ts +3 -0
  292. package/dist/components/navigation-menu/index.js +3 -0
  293. package/dist/components/navigation-menu/navigation-menu.d.ts +50 -0
  294. package/dist/components/navigation-menu/navigation-menu.js +145 -0
  295. package/dist/components/navigation-menu/types.d.ts +79 -0
  296. package/dist/components/navigation-menu/types.js +15 -0
  297. package/dist/components/number-stepper/index.d.ts +3 -0
  298. package/dist/components/number-stepper/index.js +3 -0
  299. package/dist/components/number-stepper/number-stepper.d.ts +9 -0
  300. package/dist/components/number-stepper/number-stepper.js +223 -0
  301. package/dist/components/number-stepper/types.d.ts +47 -0
  302. package/dist/components/number-stepper/types.js +174 -0
  303. package/dist/components/pagination/index.d.ts +3 -0
  304. package/dist/components/pagination/index.js +1 -0
  305. package/dist/components/pagination/pagination.d.ts +43 -0
  306. package/dist/components/pagination/pagination.js +121 -0
  307. package/dist/components/pagination/types.d.ts +37 -0
  308. package/dist/components/phone-input/index.d.ts +3 -0
  309. package/dist/components/phone-input/index.js +1 -0
  310. package/dist/components/phone-input/phone-input.d.ts +7 -0
  311. package/dist/components/phone-input/phone-input.js +54 -0
  312. package/dist/components/phone-input/types.d.ts +12 -0
  313. package/dist/components/popover/index.d.ts +3 -0
  314. package/dist/components/popover/index.js +1 -0
  315. package/dist/components/popover/popover.d.ts +37 -0
  316. package/dist/components/popover/popover.js +100 -0
  317. package/dist/components/popover/types.d.ts +51 -0
  318. package/dist/components/progress/index.d.ts +3 -0
  319. package/dist/components/progress/index.js +1 -0
  320. package/dist/components/progress/progress.d.ts +32 -0
  321. package/dist/components/progress/progress.js +100 -0
  322. package/dist/components/progress/types.d.ts +31 -0
  323. package/dist/components/questionnaire/index.d.ts +3 -0
  324. package/dist/components/questionnaire/index.js +1 -0
  325. package/dist/components/questionnaire/questionnaire-primitive.js +1563 -0
  326. package/dist/components/questionnaire/questionnaire.d.ts +91 -0
  327. package/dist/components/questionnaire/questionnaire.js +315 -0
  328. package/dist/components/questionnaire/types.d.ts +203 -0
  329. package/dist/components/radio-group/index.d.ts +3 -0
  330. package/dist/components/radio-group/index.js +1 -0
  331. package/dist/components/radio-group/radio-group.d.ts +13 -0
  332. package/dist/components/radio-group/radio-group.js +44 -0
  333. package/dist/components/radio-group/types.d.ts +33 -0
  334. package/dist/components/reorder-list/index.d.ts +3 -0
  335. package/dist/components/reorder-list/index.js +1 -0
  336. package/dist/components/reorder-list/reorder-list.d.ts +19 -0
  337. package/dist/components/reorder-list/reorder-list.js +279 -0
  338. package/dist/components/reorder-list/types.d.ts +65 -0
  339. package/dist/components/resizable/index.d.ts +3 -0
  340. package/dist/components/resizable/index.js +1 -0
  341. package/dist/components/resizable/resizable.d.ts +19 -0
  342. package/dist/components/resizable/resizable.js +44 -0
  343. package/dist/components/resizable/types.d.ts +89 -0
  344. package/dist/components/scroll-area/index.d.ts +3 -0
  345. package/dist/components/scroll-area/index.js +1 -0
  346. package/dist/components/scroll-area/scroll-area.d.ts +13 -0
  347. package/dist/components/scroll-area/scroll-area.js +47 -0
  348. package/dist/components/scroll-area/types.d.ts +19 -0
  349. package/dist/components/select/index.d.ts +3 -0
  350. package/dist/components/select/index.js +1 -0
  351. package/dist/components/select/select.d.ts +61 -0
  352. package/dist/components/select/select.js +183 -0
  353. package/dist/components/select/types.d.ts +100 -0
  354. package/dist/components/separator/index.d.ts +3 -0
  355. package/dist/components/separator/index.js +1 -0
  356. package/dist/components/separator/separator.d.ts +7 -0
  357. package/dist/components/separator/separator.js +20 -0
  358. package/dist/components/separator/types.d.ts +9 -0
  359. package/dist/components/sheet/index.d.ts +3 -0
  360. package/dist/components/sheet/index.js +1 -0
  361. package/dist/components/sheet/sheet.d.ts +61 -0
  362. package/dist/components/sheet/sheet.js +155 -0
  363. package/dist/components/sheet/types.d.ts +69 -0
  364. package/dist/components/sidebar/index.d.ts +3 -0
  365. package/dist/components/sidebar/index.js +3 -0
  366. package/dist/components/sidebar/sidebar.d.ts +145 -0
  367. package/dist/components/sidebar/sidebar.js +550 -0
  368. package/dist/components/sidebar/types.d.ts +186 -0
  369. package/dist/components/sidebar/types.js +42 -0
  370. package/dist/components/sidebar/use-mobile.js +21 -0
  371. package/dist/components/skeleton/index.d.ts +3 -0
  372. package/dist/components/skeleton/index.js +1 -0
  373. package/dist/components/skeleton/skeleton.d.ts +8 -0
  374. package/dist/components/skeleton/skeleton.js +18 -0
  375. package/dist/components/skeleton/types.d.ts +5 -0
  376. package/dist/components/slider/index.d.ts +3 -0
  377. package/dist/components/slider/index.js +1 -0
  378. package/dist/components/slider/slider.d.ts +7 -0
  379. package/dist/components/slider/slider.js +106 -0
  380. package/dist/components/slider/types.d.ts +39 -0
  381. package/dist/components/spinner/index.d.ts +3 -0
  382. package/dist/components/spinner/index.js +1 -0
  383. package/dist/components/spinner/spinner.d.ts +7 -0
  384. package/dist/components/spinner/spinner.js +21 -0
  385. package/dist/components/spinner/types.d.ts +8 -0
  386. package/dist/components/stack/index.d.ts +3 -0
  387. package/dist/components/stack/index.js +3 -0
  388. package/dist/components/stack/stack.d.ts +7 -0
  389. package/dist/components/stack/stack.js +29 -0
  390. package/dist/components/stack/types.d.ts +56 -0
  391. package/dist/components/stack/types.js +62 -0
  392. package/dist/components/statistics/index.d.ts +3 -0
  393. package/dist/components/statistics/index.js +3 -0
  394. package/dist/components/statistics/statistics.d.ts +31 -0
  395. package/dist/components/statistics/statistics.js +141 -0
  396. package/dist/components/statistics/types.d.ts +84 -0
  397. package/dist/components/statistics/types.js +27 -0
  398. package/dist/components/switch/index.d.ts +3 -0
  399. package/dist/components/switch/index.js +3 -0
  400. package/dist/components/switch/switch.d.ts +7 -0
  401. package/dist/components/switch/switch.js +32 -0
  402. package/dist/components/switch/types.d.ts +37 -0
  403. package/dist/components/switch/types.js +23 -0
  404. package/dist/components/table/index.d.ts +3 -0
  405. package/dist/components/table/index.js +1 -0
  406. package/dist/components/table/table.d.ts +49 -0
  407. package/dist/components/table/table.js +112 -0
  408. package/dist/components/table/types.d.ts +33 -0
  409. package/dist/components/tabs/index.d.ts +3 -0
  410. package/dist/components/tabs/index.js +3 -0
  411. package/dist/components/tabs/tabs.d.ts +25 -0
  412. package/dist/components/tabs/tabs.js +81 -0
  413. package/dist/components/tabs/types.d.ts +61 -0
  414. package/dist/components/tabs/types.js +18 -0
  415. package/dist/components/textarea/index.d.ts +3 -0
  416. package/dist/components/textarea/index.js +1 -0
  417. package/dist/components/textarea/textarea.d.ts +7 -0
  418. package/dist/components/textarea/textarea.js +17 -0
  419. package/dist/components/textarea/types.d.ts +26 -0
  420. package/dist/components/toast/index.d.ts +3 -0
  421. package/dist/components/toast/index.js +1 -0
  422. package/dist/components/toast/toast.d.ts +63 -0
  423. package/dist/components/toast/toast.js +321 -0
  424. package/dist/components/toast/types.d.ts +120 -0
  425. package/dist/components/toggle/index.d.ts +3 -0
  426. package/dist/components/toggle/index.js +3 -0
  427. package/dist/components/toggle/toggle.d.ts +7 -0
  428. package/dist/components/toggle/toggle.js +32 -0
  429. package/dist/components/toggle/types.d.ts +35 -0
  430. package/dist/components/toggle/types.js +37 -0
  431. package/dist/components/toggle-group/index.d.ts +3 -0
  432. package/dist/components/toggle-group/index.js +1 -0
  433. package/dist/components/toggle-group/toggle-group.d.ts +13 -0
  434. package/dist/components/toggle-group/toggle-group.js +88 -0
  435. package/dist/components/toggle-group/types.d.ts +52 -0
  436. package/dist/components/tooltip/index.d.ts +3 -0
  437. package/dist/components/tooltip/index.js +1 -0
  438. package/dist/components/tooltip/tooltip.d.ts +25 -0
  439. package/dist/components/tooltip/tooltip.js +79 -0
  440. package/dist/components/tooltip/types.d.ts +48 -0
  441. package/dist/components/trace/index.d.ts +3 -0
  442. package/dist/components/trace/index.js +1 -0
  443. package/dist/components/trace/trace.d.ts +52 -0
  444. package/dist/components/trace/trace.js +132 -0
  445. package/dist/components/trace/types.d.ts +54 -0
  446. package/dist/components/typography/index.d.ts +3 -0
  447. package/dist/components/typography/index.js +3 -0
  448. package/dist/components/typography/types.d.ts +29 -0
  449. package/dist/components/typography/types.js +25 -0
  450. package/dist/components/typography/typography.d.ts +7 -0
  451. package/dist/components/typography/typography.js +40 -0
  452. package/dist/components/video-player/index.d.ts +6 -0
  453. package/dist/components/video-player/index.js +5 -0
  454. package/dist/components/video-player/types.d.ts +143 -0
  455. package/dist/components/video-player/use-video-player.js +319 -0
  456. package/dist/components/video-player/video-player-context.d.ts +45 -0
  457. package/dist/components/video-player/video-player-context.js +15 -0
  458. package/dist/components/video-player/video-player-controls.d.ts +38 -0
  459. package/dist/components/video-player/video-player-controls.js +226 -0
  460. package/dist/components/video-player/video-player-overlay.d.ts +13 -0
  461. package/dist/components/video-player/video-player-overlay.js +113 -0
  462. package/dist/components/video-player/video-player.d.ts +8 -0
  463. package/dist/components/video-player/video-player.js +139 -0
  464. package/dist/index.d.ts +259 -0
  465. package/dist/index.js +124 -0
  466. package/dist/lib/floating.d.ts +44 -0
  467. package/dist/lib/focus-source.js +51 -0
  468. package/dist/lib/format.d.ts +67 -0
  469. package/dist/lib/format.js +130 -0
  470. package/dist/lib/locale.d.ts +104 -0
  471. package/dist/lib/locale.js +103 -0
  472. package/dist/lib/part-props.d.ts +15 -0
  473. package/dist/lib/use-controllable-state.js +22 -0
  474. package/dist/lib/utils.d.ts +9 -0
  475. package/dist/lib/utils.js +16 -0
  476. package/dist/styles/index.css +128 -0
  477. package/dist/styles/theme.css +84 -0
  478. package/dist/styles/utilities.css +553 -0
  479. package/package.json +89 -3
@@ -0,0 +1,67 @@
1
+ import { PluralFormsT } from "./locale.js";
2
+ /**
3
+ * Дата в любом виде, который понимает конструктор Date
4
+ */
5
+ export type DateInputT = Date | number | string;
6
+ /**
7
+ * Настройки форматирования денег
8
+ * @property fractionDigits - знаков после запятой; по умолчанию 0 для целых сумм и 2 для дробных
9
+ * @property currency - код валюты ISO 4217, по умолчанию RUB
10
+ */
11
+ export interface MoneyFormatOptionsI {
12
+ fractionDigits?: number;
13
+ currency?: string;
14
+ }
15
+ /**
16
+ * Отформатировать дату: 31.12.2026
17
+ * @param value - дата, timestamp или строка
18
+ * @param pattern - шаблон date-fns, по умолчанию dd.MM.yyyy
19
+ * @returns строка даты или пустая строка, если дата не распознана
20
+ */
21
+ export declare function formatDate(value: DateInputT, pattern?: string): string;
22
+ /**
23
+ * Отформатировать дату и время: 31.12.2026 23:59
24
+ * @param value - дата, timestamp или строка
25
+ * @returns строка даты и времени или пустая строка, если дата не распознана
26
+ */
27
+ export declare function formatDateTime(value: DateInputT): string;
28
+ /**
29
+ * Отформатировать число: 1 234 567,89 (разделитель тысяч — неразрывный пробел)
30
+ * @param value - число
31
+ * @param options - настройки Intl.NumberFormat
32
+ * @returns строка числа
33
+ */
34
+ export declare function formatNumber(value: number, options?: Intl.NumberFormatOptions): string;
35
+ /**
36
+ * Отформатировать сумму: 1 234,50 ₽ (символ валюты после суммы)
37
+ * @param value - сумма
38
+ * @param options - знаков после запятой и валюта
39
+ * @returns строка суммы
40
+ */
41
+ export declare function formatMoney(value: number, options?: MoneyFormatOptionsI): string;
42
+ /**
43
+ * Отформатировать телефон: +7 (912) 345-67-89.
44
+ * Неполный номер форматируется по мере ввода: +7 (912) 34
45
+ * @param value - телефон в любом виде: 89123456789, +7 912 345 67 89, 9123456789
46
+ * @returns телефон в формате +7 (XXX) XXX-XX-XX или пустая строка, если цифр нет
47
+ */
48
+ export declare function formatPhone(value: string): string;
49
+ /**
50
+ * Привести телефон к виду +79123456789
51
+ * @param value - телефон в любом виде
52
+ * @returns телефон в формате E.164 или null, если цифр не 10
53
+ */
54
+ export declare function normalizePhone(value: string): string | null;
55
+ /**
56
+ * Выбрать форму слова по числу: 1 файл, 2 файла, 5 файлов
57
+ * @param count - число
58
+ * @param forms - формы слова для 1, 2 и 5
59
+ * @returns подходящая форма слова
60
+ */
61
+ export declare function pluralize(count: number, forms: PluralFormsT): string;
62
+ /**
63
+ * Время в виде «3:05» или «1:03:05»
64
+ * @param seconds - секунды
65
+ * @returns строка времени
66
+ */
67
+ export declare function formatDuration(seconds: number): string;
@@ -0,0 +1,130 @@
1
+ import { DATE_FORMAT, DATE_TIME_FORMAT, NUMBER_LOCALE, dateLocale } from "./locale.js";
2
+ import { format, isValid } from "date-fns";
3
+ // src/lib/format.ts
4
+ /**
5
+ * Привести значение к дате
6
+ * @param value - дата, timestamp или строка
7
+ * @returns дата или null, если значение не распознано
8
+ */
9
+ function toDate(value) {
10
+ const date = value instanceof Date ? value : new Date(value);
11
+ if (!isValid(date)) return null;
12
+ return date;
13
+ }
14
+ /**
15
+ * Отформатировать дату: 31.12.2026
16
+ * @param value - дата, timestamp или строка
17
+ * @param pattern - шаблон date-fns, по умолчанию dd.MM.yyyy
18
+ * @returns строка даты или пустая строка, если дата не распознана
19
+ */
20
+ function formatDate(value, pattern = DATE_FORMAT) {
21
+ const date = toDate(value);
22
+ if (date === null) return "";
23
+ return format(date, pattern, { locale: dateLocale });
24
+ }
25
+ /**
26
+ * Отформатировать дату и время: 31.12.2026 23:59
27
+ * @param value - дата, timestamp или строка
28
+ * @returns строка даты и времени или пустая строка, если дата не распознана
29
+ */
30
+ function formatDateTime(value) {
31
+ return formatDate(value, DATE_TIME_FORMAT);
32
+ }
33
+ /**
34
+ * Отформатировать число: 1 234 567,89 (разделитель тысяч — неразрывный пробел)
35
+ * @param value - число
36
+ * @param options - настройки Intl.NumberFormat
37
+ * @returns строка числа
38
+ */
39
+ function formatNumber(value, options) {
40
+ return new Intl.NumberFormat(NUMBER_LOCALE, options).format(value);
41
+ }
42
+ /**
43
+ * Отформатировать сумму: 1 234,50 ₽ (символ валюты после суммы)
44
+ * @param value - сумма
45
+ * @param options - знаков после запятой и валюта
46
+ * @returns строка суммы
47
+ */
48
+ function formatMoney(value, options = {}) {
49
+ const defaultDigits = Number.isInteger(value) ? 0 : 2;
50
+ const fractionDigits = options.fractionDigits ?? defaultDigits;
51
+ return formatNumber(value, {
52
+ style: "currency",
53
+ currency: options.currency ?? "RUB",
54
+ minimumFractionDigits: fractionDigits,
55
+ maximumFractionDigits: fractionDigits
56
+ });
57
+ }
58
+ /**
59
+ * Получить 10 цифр номера без кода страны.
60
+ * Ведущие 7 или 8 отбрасываются, если номер введён с кодом страны.
61
+ * @param value - телефон в любом виде
62
+ * @returns до 10 цифр номера
63
+ */
64
+ function getPhoneDigits(value) {
65
+ const digits = value.replace(/\D/g, "");
66
+ if (value.trim().startsWith("+7") || digits.length > 10 && /^[78]/.test(digits)) return digits.slice(1, 11);
67
+ return digits.slice(0, 10);
68
+ }
69
+ /**
70
+ * Отформатировать телефон: +7 (912) 345-67-89.
71
+ * Неполный номер форматируется по мере ввода: +7 (912) 34
72
+ * @param value - телефон в любом виде: 89123456789, +7 912 345 67 89, 9123456789
73
+ * @returns телефон в формате +7 (XXX) XXX-XX-XX или пустая строка, если цифр нет
74
+ */
75
+ function formatPhone(value) {
76
+ const digits = getPhoneDigits(value);
77
+ if (digits.length === 0) return "";
78
+ const code = digits.slice(0, 3);
79
+ const first = digits.slice(3, 6);
80
+ const second = digits.slice(6, 8);
81
+ const third = digits.slice(8, 10);
82
+ let result = `+7 (${code}`;
83
+ if (digits.length >= 3) result += ")";
84
+ if (first) result += ` ${first}`;
85
+ if (second) result += `-${second}`;
86
+ if (third) result += `-${third}`;
87
+ return result;
88
+ }
89
+ /**
90
+ * Привести телефон к виду +79123456789
91
+ * @param value - телефон в любом виде
92
+ * @returns телефон в формате E.164 или null, если цифр не 10
93
+ */
94
+ function normalizePhone(value) {
95
+ const digits = getPhoneDigits(value);
96
+ if (digits.length !== 10) return null;
97
+ return `+7${digits}`;
98
+ }
99
+ /**
100
+ * Выбрать форму слова по числу: 1 файл, 2 файла, 5 файлов
101
+ * @param count - число
102
+ * @param forms - формы слова для 1, 2 и 5
103
+ * @returns подходящая форма слова
104
+ */
105
+ function pluralize(count, forms) {
106
+ const [one, few, many] = forms;
107
+ if (!Number.isInteger(count)) return few;
108
+ const absolute = Math.abs(count);
109
+ const lastDigit = absolute % 10;
110
+ const lastTwoDigits = absolute % 100;
111
+ if (lastTwoDigits >= 11 && lastTwoDigits <= 14) return many;
112
+ if (lastDigit === 1) return one;
113
+ if (lastDigit >= 2 && lastDigit <= 4) return few;
114
+ return many;
115
+ }
116
+ /**
117
+ * Время в виде «3:05» или «1:03:05»
118
+ * @param seconds - секунды
119
+ * @returns строка времени
120
+ */
121
+ function formatDuration(seconds) {
122
+ if (!Number.isFinite(seconds) || seconds < 0) return "0:00";
123
+ const total = Math.floor(seconds);
124
+ const hours = Math.floor(total / 3600);
125
+ const minutes = Math.floor(total % 3600 / 60);
126
+ const rest = String(total % 60).padStart(2, "0");
127
+ if (hours > 0) return `${hours}:${String(minutes).padStart(2, "0")}:${rest}`;
128
+ return `${minutes}:${rest}`;
129
+ }
130
+ export { formatDate, formatDateTime, formatDuration, formatMoney, formatNumber, formatPhone, normalizePhone, pluralize };
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Единый источник русских форматов и текстов по умолчанию.
3
+ * Локализации нет: компоненты используют только эти константы,
4
+ * а любой текст переопределяется пропом компонента.
5
+ */
6
+ /** Локаль date-fns */
7
+ export declare const dateLocale: import("date-fns").Locale;
8
+ /** Первый день недели: понедельник */
9
+ export declare const weekStartsOn = 1;
10
+ /** Формат даты: 31.12.2026 */
11
+ export declare const DATE_FORMAT = "dd.MM.yyyy";
12
+ /** Формат даты и времени: 31.12.2026 23:59 */
13
+ export declare const DATE_TIME_FORMAT = "dd.MM.yyyy HH:mm";
14
+ /** Формат времени, 24 часа: 23:59 */
15
+ export declare const TIME_FORMAT = "HH:mm";
16
+ /** Маска ввода даты */
17
+ export declare const DATE_MASK = "дд.мм.гггг";
18
+ /** Локаль Intl для чисел и денег */
19
+ export declare const NUMBER_LOCALE = "ru-RU";
20
+ /** Код валюты */
21
+ export declare const CURRENCY = "RUB";
22
+ /** Символ валюты: ставится после суммы */
23
+ export declare const CURRENCY_SYMBOL = "₽";
24
+ /** Код страны в телефоне */
25
+ export declare const PHONE_COUNTRY_CODE = "+7";
26
+ /** Количество цифр номера без кода страны */
27
+ export declare const PHONE_DIGITS = 10;
28
+ /** Маска ввода телефона */
29
+ export declare const PHONE_MASK = "+7 (___) ___-__-__";
30
+ /**
31
+ * Формы слова для pluralize: [1 файл, 2 файла, 5 файлов]
32
+ */
33
+ export type PluralFormsT = readonly [one: string, few: string, many: string];
34
+ /** Тексты интерфейса по умолчанию */
35
+ export declare const texts: {
36
+ readonly close: "Закрыть";
37
+ readonly open: "Открыть";
38
+ readonly cancel: "Отмена";
39
+ readonly confirm: "Подтвердить";
40
+ readonly save: "Сохранить";
41
+ readonly delete: "Удалить";
42
+ readonly edit: "Изменить";
43
+ readonly search: "Поиск";
44
+ readonly searchPlaceholder: "Поиск…";
45
+ readonly loading: "Загрузка…";
46
+ readonly empty: "Ничего не найдено";
47
+ readonly noData: "Нет данных";
48
+ readonly previous: "Назад";
49
+ readonly next: "Далее";
50
+ readonly previousPage: "Предыдущая страница";
51
+ readonly nextPage: "Следующая страница";
52
+ readonly morePages: "Ещё страницы";
53
+ readonly more: "Ещё";
54
+ readonly select: "Выбрать";
55
+ readonly selectPlaceholder: "Выберите значение";
56
+ readonly clear: "Очистить";
57
+ readonly copy: "Копировать";
58
+ readonly copied: "Скопировано";
59
+ readonly done: "Готово";
60
+ readonly holdToConfirm: "Нажмите и удерживайте, чтобы подтвердить";
61
+ readonly increase: "Увеличить";
62
+ readonly decrease: "Уменьшить";
63
+ readonly value: "Значение";
64
+ readonly required: "Обязательное поле";
65
+ readonly toggleMenu: "Открыть меню";
66
+ readonly toggleSidebar: "Переключить боковую панель";
67
+ readonly sidebar: "Боковая панель";
68
+ readonly sidebarDescription: "Боковая панель на мобильном экране";
69
+ readonly breadcrumb: "Навигационная цепочка";
70
+ readonly pagination: "Постраничная навигация";
71
+ readonly today: "Сегодня";
72
+ readonly pickDate: "Выберите дату";
73
+ readonly minimum: "Минимум";
74
+ readonly maximum: "Максимум";
75
+ readonly pickDateRange: "Выберите период";
76
+ readonly previousMonth: "Предыдущий месяц";
77
+ readonly nextMonth: "Следующий месяц";
78
+ readonly previousSlide: "Предыдущий слайд";
79
+ readonly nextSlide: "Следующий слайд";
80
+ readonly carousel: "карусель";
81
+ readonly slide: "слайд";
82
+ readonly notifications: "Уведомления";
83
+ readonly firstPage: "Первая страница";
84
+ readonly lastPage: "Последняя страница";
85
+ readonly rowsPerPage: "Строк на странице";
86
+ readonly page: "Страница";
87
+ readonly of: "из";
88
+ readonly selected: "Выбрано";
89
+ readonly sortAscending: "По возрастанию";
90
+ readonly sortDescending: "По убыванию";
91
+ readonly hide: "Скрыть";
92
+ readonly view: "Вид";
93
+ readonly columns: "Столбцы";
94
+ readonly suggestions: "Варианты";
95
+ readonly openList: "Открыть список";
96
+ readonly commandPalette: "Палитра команд";
97
+ readonly commandPaletteDescription: "Найдите команду для запуска…";
98
+ };
99
+ /** Формы слова «строка» для pluralize */
100
+ export declare const ROW_FORMS: PluralFormsT;
101
+ /**
102
+ * Ключ текста интерфейса по умолчанию
103
+ */
104
+ export type TextKeyT = keyof typeof texts;
@@ -0,0 +1,103 @@
1
+ import { ru } from "date-fns/locale/ru";
2
+ // src/lib/locale.ts
3
+ /**
4
+ * Единый источник русских форматов и текстов по умолчанию.
5
+ * Локализации нет: компоненты используют только эти константы,
6
+ * а любой текст переопределяется пропом компонента.
7
+ */
8
+ /** Локаль date-fns */
9
+ const dateLocale = ru;
10
+ /** Первый день недели: понедельник */
11
+ const weekStartsOn = 1;
12
+ /** Формат даты: 31.12.2026 */
13
+ const DATE_FORMAT = "dd.MM.yyyy";
14
+ /** Формат даты и времени: 31.12.2026 23:59 */
15
+ const DATE_TIME_FORMAT = "dd.MM.yyyy HH:mm";
16
+ /** Формат времени, 24 часа: 23:59 */
17
+ const TIME_FORMAT = "HH:mm";
18
+ /** Маска ввода даты */
19
+ const DATE_MASK = "дд.мм.гггг";
20
+ /** Локаль Intl для чисел и денег */
21
+ const NUMBER_LOCALE = "ru-RU";
22
+ /** Код валюты */
23
+ const CURRENCY = "RUB";
24
+ /** Символ валюты: ставится после суммы */
25
+ const CURRENCY_SYMBOL = "₽";
26
+ /** Код страны в телефоне */
27
+ const PHONE_COUNTRY_CODE = "+7";
28
+ /** Количество цифр номера без кода страны */
29
+ const PHONE_DIGITS = 10;
30
+ /** Маска ввода телефона */
31
+ const PHONE_MASK = "+7 (___) ___-__-__";
32
+ /** Тексты интерфейса по умолчанию */
33
+ const texts = {
34
+ close: "Закрыть",
35
+ open: "Открыть",
36
+ cancel: "Отмена",
37
+ confirm: "Подтвердить",
38
+ save: "Сохранить",
39
+ delete: "Удалить",
40
+ edit: "Изменить",
41
+ search: "Поиск",
42
+ searchPlaceholder: "Поиск…",
43
+ loading: "Загрузка…",
44
+ empty: "Ничего не найдено",
45
+ noData: "Нет данных",
46
+ previous: "Назад",
47
+ next: "Далее",
48
+ previousPage: "Предыдущая страница",
49
+ nextPage: "Следующая страница",
50
+ morePages: "Ещё страницы",
51
+ more: "Ещё",
52
+ select: "Выбрать",
53
+ selectPlaceholder: "Выберите значение",
54
+ clear: "Очистить",
55
+ copy: "Копировать",
56
+ copied: "Скопировано",
57
+ done: "Готово",
58
+ holdToConfirm: "Нажмите и удерживайте, чтобы подтвердить",
59
+ increase: "Увеличить",
60
+ decrease: "Уменьшить",
61
+ value: "Значение",
62
+ required: "Обязательное поле",
63
+ toggleMenu: "Открыть меню",
64
+ toggleSidebar: "Переключить боковую панель",
65
+ sidebar: "Боковая панель",
66
+ sidebarDescription: "Боковая панель на мобильном экране",
67
+ breadcrumb: "Навигационная цепочка",
68
+ pagination: "Постраничная навигация",
69
+ today: "Сегодня",
70
+ pickDate: "Выберите дату",
71
+ minimum: "Минимум",
72
+ maximum: "Максимум",
73
+ pickDateRange: "Выберите период",
74
+ previousMonth: "Предыдущий месяц",
75
+ nextMonth: "Следующий месяц",
76
+ previousSlide: "Предыдущий слайд",
77
+ nextSlide: "Следующий слайд",
78
+ carousel: "карусель",
79
+ slide: "слайд",
80
+ notifications: "Уведомления",
81
+ firstPage: "Первая страница",
82
+ lastPage: "Последняя страница",
83
+ rowsPerPage: "Строк на странице",
84
+ page: "Страница",
85
+ of: "из",
86
+ selected: "Выбрано",
87
+ sortAscending: "По возрастанию",
88
+ sortDescending: "По убыванию",
89
+ hide: "Скрыть",
90
+ view: "Вид",
91
+ columns: "Столбцы",
92
+ suggestions: "Варианты",
93
+ openList: "Открыть список",
94
+ commandPalette: "Палитра команд",
95
+ commandPaletteDescription: "Найдите команду для запуска…"
96
+ };
97
+ /** Формы слова «строка» для pluralize */
98
+ const ROW_FORMS = [
99
+ "строки",
100
+ "строк",
101
+ "строк"
102
+ ];
103
+ export { CURRENCY, CURRENCY_SYMBOL, DATE_FORMAT, DATE_MASK, DATE_TIME_FORMAT, NUMBER_LOCALE, PHONE_COUNTRY_CODE, PHONE_DIGITS, PHONE_MASK, ROW_FORMS, TIME_FORMAT, dateLocale, texts, weekStartsOn };
@@ -0,0 +1,15 @@
1
+ import { CSSProperties } from "react";
2
+ /**
3
+ * Пропсы части на Base UI: className только строкой, render и style описаны по-русски.
4
+ * Свой элемент вместо стандартного передают через render: render={<Button />} или render={<a href />}
5
+ */
6
+ export type PartPropsT<PropsT extends {
7
+ render?: unknown;
8
+ }> = Omit<PropsT, 'className' | 'render' | 'style'> & {
9
+ /** Классы элемента */
10
+ className?: string;
11
+ /** Свой элемент вместо стандартного: render={<Button />}. Стили и пропсы переходят на него */
12
+ render?: PropsT['render'];
13
+ /** Инлайн-стили элемента */
14
+ style?: CSSProperties;
15
+ };
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
+ // src/lib/use-controllable-state.ts
4
+ /**
5
+ * Состояние в контролируемом (value + onChange) или неконтролируемом (defaultValue) режиме
6
+ * @param options - параметры состояния
7
+ * @returns текущее значение и функция изменения
8
+ */
9
+ function useControllableState({ prop, defaultProp, onChange }) {
10
+ const [inner, setInner] = useState(defaultProp);
11
+ const isControlled = prop !== void 0;
12
+ const value = isControlled ? prop : inner;
13
+ const onChangeRef = useRef(onChange);
14
+ useEffect(() => {
15
+ onChangeRef.current = onChange;
16
+ });
17
+ return [value, useCallback((next) => {
18
+ if (!isControlled) setInner(next);
19
+ if (next !== value) onChangeRef.current?.(next);
20
+ }, [isControlled, value])];
21
+ }
22
+ export { useControllableState };
@@ -0,0 +1,9 @@
1
+ import { ClassValue } from "clsx";
2
+ /**
3
+ * Склеить классы и разрешить конфликты Tailwind: последний класс побеждает.
4
+ * Заодно при первом вызове в браузере включает слежку за источником фокуса (installFocusSource):
5
+ * cn вызывают все компоненты, так кольцо фокуса работает без отдельной настройки
6
+ * @param inputs - классы, объекты и массивы в формате clsx
7
+ * @returns итоговая строка классов
8
+ */
9
+ export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,16 @@
1
+ import { installFocusSource } from "./focus-source.js";
2
+ import { clsx } from "clsx";
3
+ import { twMerge } from "tailwind-merge";
4
+ // src/lib/utils.ts
5
+ /**
6
+ * Склеить классы и разрешить конфликты Tailwind: последний класс побеждает.
7
+ * Заодно при первом вызове в браузере включает слежку за источником фокуса (installFocusSource):
8
+ * cn вызывают все компоненты, так кольцо фокуса работает без отдельной настройки
9
+ * @param inputs - классы, объекты и массивы в формате clsx
10
+ * @returns итоговая строка классов
11
+ */
12
+ function cn(...inputs) {
13
+ installFocusSource();
14
+ return twMerge(clsx(inputs));
15
+ }
16
+ export { cn };
@@ -0,0 +1,128 @@
1
+ /*
2
+ * Точка входа стилей @archytechtor/ui. Подключение в приложении:
3
+ *
4
+ * @import "tailwindcss";
5
+ * @import "@archytechtor/ui/styles.css";
6
+ *
7
+ * Файл компилирует Tailwind потребителя. Все стили библиотеки лежат в @layer base,
8
+ * а классы компонентов — обычные утилиты в слое utilities, поэтому утилиты
9
+ * и собственный CSS приложения всегда побеждают.
10
+ */
11
+ @import 'tw-animate-css';
12
+ @import './theme.css';
13
+ @import './utilities.css';
14
+
15
+ /* Классы компонентов из собранных файлов пакета (dist) */
16
+ @source "../**/*.js";
17
+
18
+ /* Тёмная тема — класс .dark на корне (или на любом предке) */
19
+ @custom-variant dark (&:where(.dark, .dark *));
20
+
21
+ /* Ориентация Radix-примитивов: data-horizontal:… и data-vertical:… */
22
+ @custom-variant data-horizontal (&[data-orientation=horizontal]);
23
+ @custom-variant data-vertical (&[data-orientation=vertical]);
24
+
25
+ /*
26
+ * Состояния: data-state у Radix или отдельный атрибут у Base UI и своих частей
27
+ * (data-open, data-active="true"). Значение "false" не считается
28
+ */
29
+ @custom-variant data-checked (&:is([data-state=checked], [data-checked]:not([data-checked=false])));
30
+ @custom-variant data-unchecked (&:is([data-state=unchecked], [data-unchecked]:not([data-unchecked=false])));
31
+ @custom-variant data-open (&:is([data-state=open], [data-open]:not([data-open=false])));
32
+ @custom-variant data-closed (&:is([data-state=closed], [data-closed]:not([data-closed=false])));
33
+ @custom-variant data-active (&:is([data-state=active], [data-active]:not([data-active=false])));
34
+ @custom-variant data-disabled (&:is([data-disabled]:not([data-disabled=false])));
35
+
36
+ /*
37
+ * Кольцо фокуса — только при работе с клавиатуры. <html data-focus-source="pointer"> ставится при
38
+ * нажатии мышью или касании (lib/focus-source.ts): focus-visible и keyboard тогда не срабатывают.
39
+ * keyboard — для состояний фокуса без focus-visible: has-[input:focus-visible], focus-within
40
+ */
41
+ @custom-variant focus-visible (&:focus-visible:where(:root:not([data-focus-source=pointer]) *));
42
+ @custom-variant keyboard (&:where(:root:not([data-focus-source=pointer]) *));
43
+
44
+ @theme inline {
45
+ --radius-sm: calc(var(--radius) * 0.6);
46
+ --radius-md: calc(var(--radius) * 0.8);
47
+ --radius-lg: var(--radius);
48
+ --radius-xl: calc(var(--radius) * 1.4);
49
+ --radius-2xl: calc(var(--radius) * 1.8);
50
+ --radius-3xl: calc(var(--radius) * 2.2);
51
+ --radius-4xl: calc(var(--radius) * 2.6);
52
+ /* пружина без отскока (≈430ms) и с отскоком (≈600ms): переезды индикаторов, отпускание нажатия */
53
+ --ease-spring: linear(0, 0.0254, 0.0881, 0.1723, 0.2666, 0.3629, 0.4561, 0.5427, 0.621, 0.6901, 0.7499, 0.8009, 0.8436, 0.8789, 0.9077, 0.9309, 0.9494, 0.9638, 0.975, 0.9834, 0.9898, 0.9944, 0.9977, 0.9999, 1.0014, 1.0023, 1.0028, 1.003, 1.0029, 1.0028, 1.0025, 1.0023, 1);
54
+ --ease-spring-bounce: linear(0, 0.0409, 0.1444, 0.2848, 0.4409, 0.596, 0.7384, 0.8607, 0.9592, 1.0329, 1.0832, 1.1128, 1.1253, 1.1245, 1.1143, 1.0982, 1.079, 1.0591, 1.0403, 1.0237, 1.01, 0.9994, 0.9918, 0.987, 0.9846, 0.9841, 0.9849, 0.9867, 0.989, 0.9915, 0.9939, 0.9962, 1);
55
+ /* прорисовка линии svg: у path нужны pathLength=1 и stroke-dasharray=1 */
56
+ --animate-draw: draw 350ms cubic-bezier(0.23, 1, 0.32, 1) 80ms both;
57
+
58
+ @keyframes draw {
59
+ from {
60
+ stroke-dashoffset: 1;
61
+ }
62
+ to {
63
+ stroke-dashoffset: 0;
64
+ }
65
+ }
66
+ --color-background: var(--background);
67
+ --color-foreground: var(--foreground);
68
+ --color-card: var(--card);
69
+ --color-card-foreground: var(--card-foreground);
70
+ --color-popover: var(--popover);
71
+ --color-popover-foreground: var(--popover-foreground);
72
+ --color-primary: var(--primary);
73
+ --color-primary-foreground: var(--primary-foreground);
74
+ --color-secondary: var(--secondary);
75
+ --color-secondary-foreground: var(--secondary-foreground);
76
+ --color-muted: var(--muted);
77
+ --color-muted-foreground: var(--muted-foreground);
78
+ --color-accent: var(--accent);
79
+ --color-accent-foreground: var(--accent-foreground);
80
+ --color-destructive: var(--destructive);
81
+ --color-destructive-foreground: var(--destructive-foreground);
82
+ --color-success: var(--success);
83
+ --color-success-foreground: var(--success-foreground);
84
+ --color-border: var(--border);
85
+ --color-input: var(--input);
86
+ --color-ring: var(--ring);
87
+ --color-chart-1: var(--chart-1);
88
+ --color-chart-2: var(--chart-2);
89
+ --color-chart-3: var(--chart-3);
90
+ --color-chart-4: var(--chart-4);
91
+ --color-chart-5: var(--chart-5);
92
+ --color-sidebar: var(--sidebar);
93
+ --color-sidebar-foreground: var(--sidebar-foreground);
94
+ --color-sidebar-primary: var(--sidebar-primary);
95
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
96
+ --color-sidebar-accent: var(--sidebar-accent);
97
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
98
+ --color-sidebar-border: var(--sidebar-border);
99
+ --color-sidebar-ring: var(--sidebar-ring);
100
+ }
101
+
102
+ @layer base {
103
+ * {
104
+ @apply border-border outline-ring/50;
105
+ }
106
+
107
+ body {
108
+ @apply bg-background text-foreground;
109
+ }
110
+
111
+ /*
112
+ * Автозаполнение: браузер красит поле своим фоном (!important в стилях браузера, перебить нельзя).
113
+ * Смену фона растягиваем на сутки — поле остаётся своего цвета, текст — цвета темы.
114
+ * !important нужен, чтобы transition-colors у поля не отменил задержку
115
+ */
116
+ /* правила раздельно: незнакомый браузеру селектор в списке отменил бы всё правило */
117
+ :is(input, textarea, select):-webkit-autofill {
118
+ -webkit-text-fill-color: var(--foreground);
119
+ caret-color: var(--foreground);
120
+ transition: background-color 86400s step-end, color 86400s step-end !important;
121
+ }
122
+
123
+ :is(input, textarea, select):autofill {
124
+ -webkit-text-fill-color: var(--foreground);
125
+ caret-color: var(--foreground);
126
+ transition: background-color 86400s step-end, color 86400s step-end !important;
127
+ }
128
+ }