@koine/react 1.0.4 → 1.0.9

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 (596) hide show
  1. package/Alert/Alert.d.ts +5 -5
  2. package/Alert/Alert.js +16 -0
  3. package/Alert/index.d.ts +1 -1
  4. package/Alert/index.js +1 -0
  5. package/Alert/package.json +6 -0
  6. package/Animations/Reveal.d.ts +4 -4
  7. package/Animations/Reveal.js +15 -0
  8. package/Animations/Underline.d.ts +1 -1
  9. package/Animations/Underline.js +15 -0
  10. package/Animations/index.d.ts +3 -3
  11. package/Animations/index.js +3 -0
  12. package/Animations/package.json +6 -0
  13. package/Animations/useReveal.d.ts +33 -34
  14. package/Animations/useReveal.js +70 -0
  15. package/Autocomplete/AutocompleteDownshift.d.ts +1 -1
  16. package/Autocomplete/AutocompleteDownshift.js +158 -0
  17. package/Autocomplete/AutocompleteDownshiftMultiselect.d.ts +1 -1
  18. package/Autocomplete/AutocompleteDownshiftMultiselect.js +353 -0
  19. package/Autocomplete/AutocompleteMui.d.ts +47 -47
  20. package/Autocomplete/AutocompleteMui.js +177 -0
  21. package/Autocomplete/AutocompleteReach.d.ts +1 -1
  22. package/Autocomplete/AutocompleteReach.js +112 -0
  23. package/Autocomplete/components.d.ts +21 -21
  24. package/Autocomplete/components.js +89 -0
  25. package/Autocomplete/helpers.d.ts +3 -3
  26. package/Autocomplete/helpers.js +28 -0
  27. package/Autocomplete/index.d.ts +2 -2
  28. package/Autocomplete/index.js +3 -0
  29. package/Autocomplete/package.json +6 -0
  30. package/Bg/BgColor.d.ts +36 -36
  31. package/Bg/BgColor.js +31 -0
  32. package/Bg/BgPhoto.d.ts +13 -14
  33. package/Bg/BgPhoto.js +59 -0
  34. package/Bg/BgSvg.d.ts +7 -8
  35. package/Bg/BgSvg.js +15 -0
  36. package/Bg/index.d.ts +3 -3
  37. package/Bg/index.js +3 -0
  38. package/Bg/package.json +6 -0
  39. package/Breadcrumbs/Breadcrumbs.d.ts +13 -14
  40. package/Breadcrumbs/Breadcrumbs.js +67 -0
  41. package/Breadcrumbs/index.d.ts +1 -1
  42. package/Breadcrumbs/index.js +1 -0
  43. package/Breadcrumbs/package.json +6 -0
  44. package/Buttons/Button.d.ts +18 -18
  45. package/Buttons/Button.js +79 -0
  46. package/Buttons/ButtonComposite.d.ts +23 -23
  47. package/Buttons/ButtonComposite.js +49 -0
  48. package/Buttons/ButtonFab.d.ts +7 -7
  49. package/Buttons/ButtonFab.js +8 -0
  50. package/Buttons/ButtonLink.d.ts +8 -9
  51. package/Buttons/ButtonLink.js +10 -0
  52. package/Buttons/IconButton.d.ts +11 -11
  53. package/Buttons/IconButton.js +19 -0
  54. package/Buttons/index.d.ts +5 -5
  55. package/Buttons/index.js +5 -0
  56. package/Buttons/package.json +6 -0
  57. package/Calendar/CalendarDaygridCell.d.ts +36 -36
  58. package/Calendar/CalendarDaygridCell.js +51 -0
  59. package/Calendar/CalendarDaygridNav.d.ts +27 -28
  60. package/Calendar/CalendarDaygridNav.js +22 -0
  61. package/Calendar/CalendarDaygridTable.d.ts +25 -26
  62. package/Calendar/CalendarDaygridTable.js +55 -0
  63. package/Calendar/CalendarLegend.d.ts +19 -19
  64. package/Calendar/CalendarLegend.js +11 -0
  65. package/Calendar/calendar-api-google.d.ts +18 -18
  66. package/Calendar/calendar-api-google.js +94 -0
  67. package/Calendar/index.d.ts +6 -6
  68. package/Calendar/index.js +6 -0
  69. package/Calendar/package.json +6 -0
  70. package/Calendar/types.d.ts +81 -81
  71. package/Calendar/types.js +1 -0
  72. package/Calendar/useCalendar.d.ts +49 -50
  73. package/Calendar/useCalendar.js +182 -0
  74. package/Calendar/utils.d.ts +11 -11
  75. package/Calendar/utils.js +203 -0
  76. package/Carousel/Carousel.d.ts +1 -1
  77. package/Carousel/Carousel.js +378 -0
  78. package/Carousel/CarouselCss.d.ts +47 -47
  79. package/Carousel/CarouselCss.js +36 -0
  80. package/Carousel/index.d.ts +1 -1
  81. package/Carousel/index.js +1 -0
  82. package/Carousel/package.json +6 -0
  83. package/Collapsable/Collapsable.d.ts +1 -60
  84. package/Collapsable/Collapsable.js +1 -0
  85. package/Collapsable/CollapsableReach.d.ts +66 -0
  86. package/Collapsable/CollapsableReach.js +135 -0
  87. package/Collapsable/index.d.ts +1 -1
  88. package/Collapsable/index.js +1 -0
  89. package/Collapsable/package.json +6 -0
  90. package/Debug/Debug.d.ts +4 -5
  91. package/Debug/Debug.js +21 -0
  92. package/Debug/index.d.ts +1 -1
  93. package/Debug/index.js +1 -0
  94. package/Debug/package.json +6 -0
  95. package/Dialog/DialogMui.d.ts +139 -0
  96. package/Dialog/DialogMui.js +78 -0
  97. package/Dialog/css/bare.d.ts +145 -0
  98. package/Dialog/css/bare.js +19 -0
  99. package/Dialog/index.d.ts +2 -1
  100. package/Dialog/index.js +1 -0
  101. package/Dialog/m/bare.d.ts +56 -0
  102. package/Dialog/m/bare.js +48 -0
  103. package/Dialog/m/basic.d.ts +4 -0
  104. package/Dialog/m/basic.js +31 -0
  105. package/Dialog/m/index.d.ts +2 -0
  106. package/Dialog/m/index.js +4 -0
  107. package/Dialog/m/package.json +6 -0
  108. package/Dialog/package.json +6 -0
  109. package/Dialog/sc/bare.d.ts +105 -0
  110. package/Dialog/sc/bare.js +61 -0
  111. package/Dialog/sc/framer.d.ts +80 -0
  112. package/Dialog/sc/framer.js +16 -0
  113. package/Dialog/sc/framerMaterial.d.ts +79 -0
  114. package/Dialog/sc/framerMaterial.js +16 -0
  115. package/Dialog/sc/material.d.ts +94 -0
  116. package/Dialog/sc/material.js +41 -0
  117. package/Dialog/tw/bare.d.ts +196 -0
  118. package/Dialog/tw/bare.js +36 -0
  119. package/Dialog/tw/elegant.d.ts +244 -0
  120. package/Dialog/tw/elegant.js +18 -0
  121. package/Dialog/tw/framer.d.ts +112 -0
  122. package/Dialog/tw/framer.js +16 -0
  123. package/Dialog/tw/framerMaterial.d.ts +167 -0
  124. package/Dialog/tw/framerMaterial.js +16 -0
  125. package/Dialog/tw/material.d.ts +244 -0
  126. package/Dialog/tw/material.js +18 -0
  127. package/Editor/Editor--tiptap.d.ts +9 -10
  128. package/Editor/Editor--tiptap.js +23 -0
  129. package/Editor/components.d.ts +7 -8
  130. package/Editor/components.js +28 -0
  131. package/Editor/index.d.ts +1 -1
  132. package/Editor/index.js +1 -0
  133. package/Editor/package.json +6 -0
  134. package/Favicon/FaviconTags.d.ts +18 -19
  135. package/Favicon/FaviconTags.js +14 -0
  136. package/Favicon/index.d.ts +1 -1
  137. package/Favicon/index.js +1 -0
  138. package/Favicon/package.json +6 -0
  139. package/Forms/Checkbox/Checkbox.d.ts +11 -11
  140. package/Forms/Checkbox/Checkbox.js +24 -0
  141. package/Forms/Checkbox/index.d.ts +1 -1
  142. package/Forms/Checkbox/index.js +1 -0
  143. package/Forms/Checkbox/package.json +6 -0
  144. package/Forms/Feedback/Feedback.d.ts +5 -5
  145. package/Forms/Feedback/Feedback.js +10 -0
  146. package/Forms/Feedback/index.d.ts +1 -1
  147. package/Forms/Feedback/index.js +1 -0
  148. package/Forms/Feedback/package.json +6 -0
  149. package/Forms/Field/Field.d.ts +15 -16
  150. package/Forms/Field/Field.js +59 -0
  151. package/Forms/Field/FieldControl.d.ts +26 -26
  152. package/Forms/Field/FieldControl.js +43 -0
  153. package/Forms/Field/FieldHint.d.ts +1 -1
  154. package/Forms/Field/FieldHint.js +6 -0
  155. package/Forms/Field/index.d.ts +2 -2
  156. package/Forms/Field/index.js +2 -0
  157. package/Forms/Field/package.json +6 -0
  158. package/Forms/Form/Form.d.ts +31 -31
  159. package/Forms/Form/Form.js +62 -0
  160. package/Forms/Form/index.d.ts +1 -1
  161. package/Forms/Form/index.js +1 -0
  162. package/Forms/Form/package.json +6 -0
  163. package/Forms/Input/Input.d.ts +9 -9
  164. package/Forms/Input/Input.js +23 -0
  165. package/Forms/Input/index.d.ts +1 -1
  166. package/Forms/Input/index.js +1 -0
  167. package/Forms/Input/package.json +6 -0
  168. package/Forms/InputGroup/InputGroup.d.ts +13 -13
  169. package/Forms/InputGroup/InputGroup.js +42 -0
  170. package/Forms/InputGroup/index.d.ts +1 -1
  171. package/Forms/InputGroup/index.js +1 -0
  172. package/Forms/InputGroup/package.json +6 -0
  173. package/Forms/Label/Label.d.ts +3 -3
  174. package/Forms/Label/Label.js +24 -0
  175. package/Forms/Label/index.d.ts +1 -1
  176. package/Forms/Label/index.js +1 -0
  177. package/Forms/Label/package.json +6 -0
  178. package/Forms/Password/Password.d.ts +5 -5
  179. package/Forms/Password/Password.js +30 -0
  180. package/Forms/Password/index.d.ts +1 -1
  181. package/Forms/Password/index.js +1 -0
  182. package/Forms/Password/package.json +6 -0
  183. package/Forms/Radio/Radio.d.ts +12 -12
  184. package/Forms/Radio/Radio.js +28 -0
  185. package/Forms/Radio/index.d.ts +1 -1
  186. package/Forms/Radio/index.js +1 -0
  187. package/Forms/Radio/package.json +6 -0
  188. package/Forms/Switch/Switch.d.ts +9 -9
  189. package/Forms/Switch/Switch.js +50 -0
  190. package/Forms/Switch/index.d.ts +1 -1
  191. package/Forms/Switch/index.js +1 -0
  192. package/Forms/Switch/package.json +6 -0
  193. package/Forms/Textarea/Textarea.d.ts +5 -5
  194. package/Forms/Textarea/Textarea.js +13 -0
  195. package/Forms/Textarea/TextareaRich.d.ts +6 -6
  196. package/Forms/Textarea/TextareaRich.js +42 -0
  197. package/Forms/Textarea/index.d.ts +2 -2
  198. package/Forms/Textarea/index.js +2 -0
  199. package/Forms/Textarea/package.json +6 -0
  200. package/Forms/Toggle/Toggle.d.ts +19 -26
  201. package/Forms/Toggle/Toggle.js +79 -0
  202. package/Forms/Toggle/index.d.ts +1 -1
  203. package/Forms/Toggle/index.js +1 -0
  204. package/Forms/Toggle/package.json +6 -0
  205. package/Forms/Toggle/useToggle.d.ts +46 -46
  206. package/Forms/Toggle/useToggle.js +145 -0
  207. package/Forms/antispam.d.ts +24 -24
  208. package/Forms/antispam.js +56 -0
  209. package/Forms/helpers.d.ts +26 -26
  210. package/Forms/helpers.js +44 -0
  211. package/Forms/index.d.ts +16 -16
  212. package/Forms/index.js +17 -0
  213. package/Forms/package.json +6 -0
  214. package/Forms/styles.d.ts +19 -20
  215. package/Forms/styles.js +60 -0
  216. package/Gauge/Gauge.d.ts +5 -5
  217. package/Gauge/Gauge.js +102 -0
  218. package/Grid/Grid.d.ts +64 -60
  219. package/Grid/Grid.js +79 -0
  220. package/Grid/index.d.ts +1 -1
  221. package/Grid/index.js +1 -0
  222. package/Grid/package.json +6 -0
  223. package/Hamburger/Hamburger.d.ts +6 -6
  224. package/Hamburger/Hamburger.js +64 -0
  225. package/Hamburger/index.d.ts +1 -1
  226. package/Hamburger/index.js +1 -0
  227. package/Hamburger/package.json +6 -0
  228. package/Header/index.d.ts +1 -1
  229. package/Header/index.js +1 -0
  230. package/Header/package.json +6 -0
  231. package/Header/useHeader.d.ts +24 -20
  232. package/Header/useHeader.js +30 -0
  233. package/Hidden/Hidden.d.ts +6 -6
  234. package/Hidden/Hidden.js +14 -0
  235. package/Hidden/index.d.ts +1 -1
  236. package/Hidden/index.js +1 -0
  237. package/Hidden/package.json +6 -0
  238. package/Img/index.d.ts +1 -1
  239. package/Img/index.js +1 -0
  240. package/Img/package.json +6 -0
  241. package/Img/sc/bare.d.ts +2 -0
  242. package/Img/sc/bare.js +37 -0
  243. package/Img/types.d.ts +9 -0
  244. package/Img/types.js +1 -0
  245. package/Link/Link.d.ts +5 -5
  246. package/Link/Link.js +2 -0
  247. package/Link/LinkBlank.d.ts +8 -8
  248. package/Link/LinkBlank.js +26 -0
  249. package/Link/index.d.ts +2 -2
  250. package/Link/index.js +2 -0
  251. package/Link/package.json +6 -0
  252. package/Menu/Menu.d.ts +1 -1
  253. package/Menu/Menu.js +11 -0
  254. package/Menu/index.d.ts +1 -1
  255. package/Menu/index.js +1 -0
  256. package/Menu/package.json +6 -0
  257. package/MenuItem/MenuItem.d.ts +4 -4
  258. package/MenuItem/MenuItem.js +20 -0
  259. package/MenuItem/index.d.ts +1 -1
  260. package/MenuItem/index.js +1 -0
  261. package/MenuItem/package.json +6 -0
  262. package/Meta/Meta.d.ts +14 -15
  263. package/Meta/Meta.js +4 -0
  264. package/Meta/index.d.ts +1 -1
  265. package/Meta/index.js +1 -0
  266. package/Meta/package.json +6 -0
  267. package/NoJs/NoJs.d.ts +2 -3
  268. package/NoJs/NoJs.js +6 -0
  269. package/NoJs/index.d.ts +1 -1
  270. package/NoJs/index.js +1 -0
  271. package/NoJs/package.json +6 -0
  272. package/Pagination/PaginationNav.d.ts +22 -23
  273. package/Pagination/PaginationNav.js +83 -0
  274. package/Pagination/PaginationResults.d.ts +3 -3
  275. package/Pagination/PaginationResults.js +10 -0
  276. package/Pagination/index.d.ts +2 -2
  277. package/Pagination/index.js +2 -0
  278. package/Pagination/package.json +6 -0
  279. package/Pill/Pill.d.ts +5 -5
  280. package/Pill/Pill.js +37 -0
  281. package/Pill/index.d.ts +1 -1
  282. package/Pill/index.js +1 -0
  283. package/Pill/package.json +6 -0
  284. package/Progress/ProgressCircular.d.ts +19 -20
  285. package/Progress/ProgressCircular.js +36 -0
  286. package/Progress/ProgressLinear.d.ts +22 -23
  287. package/Progress/ProgressLinear.js +32 -0
  288. package/Progress/ProgressOverlay.d.ts +4 -5
  289. package/Progress/ProgressOverlay.js +40 -0
  290. package/Progress/index.d.ts +3 -3
  291. package/Progress/index.js +3 -0
  292. package/Progress/package.json +6 -0
  293. package/README.md +0 -0
  294. package/Rating/Rating.d.ts +35 -35
  295. package/Rating/Rating.js +90 -0
  296. package/Rating/index.d.ts +11 -11
  297. package/Rating/index.js +45 -0
  298. package/Rating/package.json +6 -0
  299. package/Select/SelectDownshift.d.ts +5 -5
  300. package/Select/SelectDownshift.js +38 -0
  301. package/Select/components.d.ts +6 -6
  302. package/Select/components.js +18 -0
  303. package/Select/index.d.ts +2 -2
  304. package/Select/index.js +3 -0
  305. package/Select/package.json +6 -0
  306. package/Sidebar/Sidebar.d.ts +3 -3
  307. package/Sidebar/Sidebar.js +48 -0
  308. package/Sidebar/index.d.ts +1 -1
  309. package/Sidebar/index.js +1 -0
  310. package/Sidebar/package.json +6 -0
  311. package/Spacing/Spacing.d.ts +30 -30
  312. package/Spacing/Spacing.js +45 -0
  313. package/Spacing/index.d.ts +1 -1
  314. package/Spacing/index.js +1 -0
  315. package/Spacing/package.json +6 -0
  316. package/Sticky/Sticky.d.ts +2 -2
  317. package/Sticky/Sticky.js +219 -0
  318. package/Sticky/StickyCss.d.ts +5 -5
  319. package/Sticky/StickyCss.js +4 -0
  320. package/Sticky/index.d.ts +1 -1
  321. package/Sticky/index.js +1 -0
  322. package/Sticky/package.json +6 -0
  323. package/Tabs/Tabs.d.ts +27 -25
  324. package/Tabs/Tabs.js +62 -0
  325. package/Tabs/index.d.ts +1 -1
  326. package/Tabs/index.js +1 -0
  327. package/Tabs/package.json +6 -0
  328. package/Typography/CopyPasteVisible.d.ts +1 -1
  329. package/Typography/CopyPasteVisible.js +6 -0
  330. package/Typography/Native.d.ts +10 -10
  331. package/Typography/Native.js +47 -0
  332. package/Typography/ReadMore.d.ts +12 -12
  333. package/Typography/ReadMore.js +69 -0
  334. package/Typography/TextLoop.d.ts +16 -16
  335. package/Typography/TextLoop.js +49 -0
  336. package/Typography/TypeStairs.d.ts +6 -6
  337. package/Typography/TypeStairs.js +46 -0
  338. package/Typography/index.d.ts +5 -5
  339. package/Typography/index.js +5 -0
  340. package/Typography/package.json +6 -0
  341. package/css/index.d.ts +2 -0
  342. package/css/index.js +30 -0
  343. package/css/package.json +6 -0
  344. package/helpers/classed.d.ts +22 -0
  345. package/helpers/classed.js +64 -0
  346. package/helpers/extend-component.d.ts +28 -0
  347. package/helpers/extend-component.js +12 -0
  348. package/helpers/index.d.ts +3 -1
  349. package/helpers/index.js +2 -0
  350. package/helpers/package.json +6 -0
  351. package/hooks/index.d.ts +6 -5
  352. package/hooks/index.js +7 -0
  353. package/hooks/package.json +6 -0
  354. package/hooks/useDateLocale.d.ts +7 -7
  355. package/hooks/useDateLocale.js +29 -0
  356. package/hooks/useFocus.d.ts +4 -5
  357. package/hooks/useFocus.js +11 -0
  358. package/hooks/usePrevious.d.ts +1 -1
  359. package/hooks/usePrevious.js +8 -0
  360. package/hooks/useScrollPosition.d.ts +15 -0
  361. package/hooks/useScrollPosition.js +75 -0
  362. package/hooks/useScrollTo.d.ts +1 -0
  363. package/hooks/useScrollTo.js +19 -0
  364. package/hooks/useTraceUpdate.d.ts +4 -4
  365. package/hooks/useTraceUpdate.js +20 -0
  366. package/hooks/useWindowSize.d.ts +1 -1
  367. package/hooks/useWindowSize.js +13 -0
  368. package/index.d.ts +1 -35
  369. package/index.js +5 -0
  370. package/m/MotionProvider.d.ts +37 -0
  371. package/m/MotionProvider.js +37 -0
  372. package/m/index.d.ts +6 -0
  373. package/m/index.js +6 -0
  374. package/m/lite.d.ts +2 -0
  375. package/m/lite.js +2 -0
  376. package/m/max.d.ts +2 -0
  377. package/m/max.js +2 -0
  378. package/m/package.json +6 -0
  379. package/node/Alert/Alert.js +21 -0
  380. package/node/Alert/index.js +4 -0
  381. package/node/Animations/Reveal.js +19 -0
  382. package/node/Animations/Underline.js +19 -0
  383. package/node/Animations/index.js +6 -0
  384. package/node/Animations/useReveal.js +74 -0
  385. package/node/Autocomplete/AutocompleteDownshift.js +161 -0
  386. package/node/Autocomplete/AutocompleteDownshiftMultiselect.js +356 -0
  387. package/node/Autocomplete/AutocompleteMui.js +175 -0
  388. package/node/Autocomplete/AutocompleteReach.js +115 -0
  389. package/node/Autocomplete/components.js +93 -0
  390. package/node/Autocomplete/helpers.js +32 -0
  391. package/node/Autocomplete/index.js +7 -0
  392. package/node/Bg/BgColor.js +36 -0
  393. package/node/Bg/BgPhoto.js +64 -0
  394. package/node/Bg/BgSvg.js +20 -0
  395. package/node/Bg/index.js +6 -0
  396. package/node/Breadcrumbs/Breadcrumbs.js +72 -0
  397. package/node/Breadcrumbs/index.js +4 -0
  398. package/node/Buttons/Button.js +83 -0
  399. package/node/Buttons/ButtonComposite.js +54 -0
  400. package/node/Buttons/ButtonFab.js +12 -0
  401. package/node/Buttons/ButtonLink.js +15 -0
  402. package/node/Buttons/IconButton.js +23 -0
  403. package/node/Buttons/index.js +8 -0
  404. package/node/Calendar/CalendarDaygridCell.js +55 -0
  405. package/node/Calendar/CalendarDaygridNav.js +27 -0
  406. package/node/Calendar/CalendarDaygridTable.js +60 -0
  407. package/node/Calendar/CalendarLegend.js +15 -0
  408. package/node/Calendar/calendar-api-google.js +99 -0
  409. package/node/Calendar/index.js +9 -0
  410. package/node/Calendar/types.js +2 -0
  411. package/node/Calendar/useCalendar.js +186 -0
  412. package/node/Calendar/utils.js +217 -0
  413. package/node/Carousel/Carousel.js +381 -0
  414. package/node/Carousel/CarouselCss.js +41 -0
  415. package/node/Carousel/index.js +4 -0
  416. package/node/Collapsable/Collapsable.js +4 -0
  417. package/node/Collapsable/CollapsableReach.js +141 -0
  418. package/node/Collapsable/index.js +4 -0
  419. package/node/Debug/Debug.js +26 -0
  420. package/node/Debug/index.js +4 -0
  421. package/node/Dialog/DialogMui.js +82 -0
  422. package/node/Dialog/css/bare.js +23 -0
  423. package/node/Dialog/index.js +5 -0
  424. package/node/Dialog/m/bare.js +51 -0
  425. package/node/Dialog/m/basic.js +35 -0
  426. package/node/Dialog/m/index.js +8 -0
  427. package/node/Dialog/sc/bare.js +65 -0
  428. package/node/Dialog/sc/framer.js +19 -0
  429. package/node/Dialog/sc/framerMaterial.js +19 -0
  430. package/node/Dialog/sc/material.js +45 -0
  431. package/node/Dialog/tw/bare.js +40 -0
  432. package/node/Dialog/tw/elegant.js +21 -0
  433. package/node/Dialog/tw/framer.js +19 -0
  434. package/node/Dialog/tw/framerMaterial.js +19 -0
  435. package/node/Dialog/tw/material.js +21 -0
  436. package/node/Editor/Editor--tiptap.js +29 -0
  437. package/node/Editor/components.js +34 -0
  438. package/node/Editor/index.js +4 -0
  439. package/node/Favicon/FaviconTags.js +18 -0
  440. package/node/Favicon/index.js +4 -0
  441. package/node/Forms/Checkbox/Checkbox.js +28 -0
  442. package/node/Forms/Checkbox/index.js +4 -0
  443. package/node/Forms/Feedback/Feedback.js +15 -0
  444. package/node/Forms/Feedback/index.js +4 -0
  445. package/node/Forms/Field/Field.js +64 -0
  446. package/node/Forms/Field/FieldControl.js +47 -0
  447. package/node/Forms/Field/FieldHint.js +10 -0
  448. package/node/Forms/Field/index.js +5 -0
  449. package/node/Forms/Form/Form.js +67 -0
  450. package/node/Forms/Form/index.js +4 -0
  451. package/node/Forms/Input/Input.js +27 -0
  452. package/node/Forms/Input/index.js +4 -0
  453. package/node/Forms/InputGroup/InputGroup.js +47 -0
  454. package/node/Forms/InputGroup/index.js +4 -0
  455. package/node/Forms/Label/Label.js +28 -0
  456. package/node/Forms/Label/index.js +4 -0
  457. package/node/Forms/Password/Password.js +34 -0
  458. package/node/Forms/Password/index.js +4 -0
  459. package/node/Forms/Radio/Radio.js +32 -0
  460. package/node/Forms/Radio/index.js +4 -0
  461. package/node/Forms/Switch/Switch.js +54 -0
  462. package/node/Forms/Switch/index.js +4 -0
  463. package/node/Forms/Textarea/Textarea.js +17 -0
  464. package/node/Forms/Textarea/TextareaRich.js +46 -0
  465. package/node/Forms/Textarea/index.js +5 -0
  466. package/node/Forms/Toggle/Toggle.js +85 -0
  467. package/node/Forms/Toggle/index.js +4 -0
  468. package/node/Forms/Toggle/useToggle.js +149 -0
  469. package/node/Forms/antispam.js +61 -0
  470. package/node/Forms/helpers.js +51 -0
  471. package/node/Forms/index.js +20 -0
  472. package/node/Forms/styles.js +64 -0
  473. package/node/Gauge/Gauge.js +106 -0
  474. package/node/Grid/Grid.js +83 -0
  475. package/node/Grid/index.js +4 -0
  476. package/node/Hamburger/Hamburger.js +69 -0
  477. package/node/Hamburger/index.js +4 -0
  478. package/node/Header/index.js +4 -0
  479. package/node/Header/useHeader.js +34 -0
  480. package/node/Hidden/Hidden.js +18 -0
  481. package/node/Hidden/index.js +4 -0
  482. package/node/Img/index.js +4 -0
  483. package/node/Img/sc/bare.js +41 -0
  484. package/node/Img/types.js +2 -0
  485. package/node/Link/Link.js +6 -0
  486. package/node/Link/LinkBlank.js +31 -0
  487. package/node/Link/index.js +5 -0
  488. package/node/Menu/Menu.js +15 -0
  489. package/node/Menu/index.js +4 -0
  490. package/node/MenuItem/MenuItem.js +24 -0
  491. package/node/MenuItem/index.js +4 -0
  492. package/node/Meta/Meta.js +8 -0
  493. package/node/Meta/index.js +4 -0
  494. package/node/NoJs/NoJs.js +10 -0
  495. package/node/NoJs/index.js +4 -0
  496. package/node/Pagination/PaginationNav.js +88 -0
  497. package/node/Pagination/PaginationResults.js +15 -0
  498. package/node/Pagination/index.js +5 -0
  499. package/node/Pill/Pill.js +41 -0
  500. package/node/Pill/index.js +4 -0
  501. package/node/Progress/ProgressCircular.js +41 -0
  502. package/node/Progress/ProgressLinear.js +37 -0
  503. package/node/Progress/ProgressOverlay.js +45 -0
  504. package/node/Progress/index.js +6 -0
  505. package/node/Rating/Rating.js +96 -0
  506. package/node/Rating/index.js +53 -0
  507. package/node/Select/SelectDownshift.js +41 -0
  508. package/node/Select/components.js +22 -0
  509. package/node/Select/index.js +7 -0
  510. package/node/Sidebar/Sidebar.js +53 -0
  511. package/node/Sidebar/index.js +4 -0
  512. package/node/Spacing/Spacing.js +50 -0
  513. package/node/Spacing/index.js +4 -0
  514. package/node/Sticky/Sticky.js +222 -0
  515. package/node/Sticky/StickyCss.js +8 -0
  516. package/node/Sticky/index.js +4 -0
  517. package/node/Tabs/Tabs.js +67 -0
  518. package/node/Tabs/index.js +4 -0
  519. package/node/Typography/CopyPasteVisible.js +10 -0
  520. package/node/Typography/Native.js +51 -0
  521. package/node/Typography/ReadMore.js +74 -0
  522. package/node/Typography/TextLoop.js +54 -0
  523. package/node/Typography/TypeStairs.js +49 -0
  524. package/node/Typography/index.js +8 -0
  525. package/node/css/index.js +35 -0
  526. package/node/helpers/classed.js +68 -0
  527. package/node/helpers/extend-component.js +16 -0
  528. package/node/helpers/index.js +5 -0
  529. package/node/hooks/index.js +10 -0
  530. package/node/hooks/useDateLocale.js +56 -0
  531. package/node/hooks/useFocus.js +15 -0
  532. package/node/hooks/usePrevious.js +12 -0
  533. package/node/hooks/useScrollPosition.js +80 -0
  534. package/node/hooks/useScrollTo.js +23 -0
  535. package/node/hooks/useTraceUpdate.js +24 -0
  536. package/node/hooks/useWindowSize.js +17 -0
  537. package/node/index.js +8 -0
  538. package/node/m/MotionProvider.js +41 -0
  539. package/node/m/index.js +9 -0
  540. package/node/m/lite.js +4 -0
  541. package/node/m/max.js +4 -0
  542. package/node/sc/index.js +35 -0
  543. package/node/scm/index.js +35 -0
  544. package/node/shared/index.js +11 -0
  545. package/node/styles/Body.js +21 -0
  546. package/node/styles/Global.js +53 -0
  547. package/node/styles/index.js +10 -0
  548. package/node/styles/media.js +156 -0
  549. package/node/styles/spacing.js +53 -0
  550. package/node/styles/styled.js +31 -0
  551. package/node/styles/theme--vanilla.js +59 -0
  552. package/node/styles/theme.js +45 -0
  553. package/node/tw/index.js +35 -0
  554. package/node/twm/index.js +35 -0
  555. package/node/types.js +2 -0
  556. package/package.json +9 -22
  557. package/sc/index.d.ts +29 -0
  558. package/sc/index.js +30 -0
  559. package/sc/package.json +6 -0
  560. package/scm/index.d.ts +29 -0
  561. package/scm/index.js +30 -0
  562. package/scm/package.json +6 -0
  563. package/shared/index.d.ts +8 -0
  564. package/shared/index.js +8 -0
  565. package/shared/package.json +6 -0
  566. package/styles/Body.d.ts +10 -10
  567. package/styles/Body.js +17 -0
  568. package/styles/Global.d.ts +15 -15
  569. package/styles/Global.js +50 -0
  570. package/styles/index.d.ts +7 -7
  571. package/styles/index.js +7 -0
  572. package/styles/media.d.ts +67 -67
  573. package/styles/media.js +150 -0
  574. package/styles/package.json +6 -0
  575. package/styles/spacing.d.ts +13 -13
  576. package/styles/spacing.js +46 -0
  577. package/styles/styled.d.ts +12 -12
  578. package/styles/styled.js +27 -0
  579. package/styles/theme--vanilla.d.ts +18 -18
  580. package/styles/theme--vanilla.js +53 -0
  581. package/styles/theme.d.ts +82 -89
  582. package/styles/theme.js +41 -0
  583. package/tw/index.d.ts +2 -0
  584. package/tw/index.js +30 -0
  585. package/tw/package.json +6 -0
  586. package/twm/index.d.ts +2 -0
  587. package/twm/index.js +30 -0
  588. package/twm/package.json +6 -0
  589. package/types.d.ts +10 -11
  590. package/types.js +1 -0
  591. package/typings.d.ts +21 -0
  592. package/Dialog/Dialog.d.ts +0 -23
  593. package/Img/Img.d.ts +0 -11
  594. package/index.esm.js +0 -9456
  595. package/index.umd.js +0 -9667
  596. package/styles/classed.d.ts +0 -4
@@ -0,0 +1,353 @@
1
+ // TODO: remove, just use mui version...
2
+ export const Autocomplete = null;
3
+ // import {
4
+ // forwardRef,
5
+ // useCallback,
6
+ // useEffect,
7
+ // useRef,
8
+ // useState,
9
+ // ForwardedRef,
10
+ // ReactNode,
11
+ // ComponentPropsWithRef,
12
+ // CSSProperties,
13
+ // } from "react";
14
+ // import { SetRequired } from "@koine/utils";
15
+ // import {
16
+ // useCombobox,
17
+ // useMultipleSelection,
18
+ // UseMultipleSelectionProps,
19
+ // UseMultipleSelectionStateChange,
20
+ // UseMultipleSelectionReturnValue,
21
+ // } from "downshift";
22
+ // import { usePopper } from "react-popper"; // imports from downshift demo
23
+ // // import { useDeepCompareEffect } from "react-use"; // imports from downshift demo
24
+ // import type { Option } from "../types";
25
+ // import {
26
+ // normaliseOptions,
27
+ // defaultOptionsFilterFn,
28
+ // triggerOnChange,
29
+ // } from "../Forms/helpers";
30
+ // import {
31
+ // AutocompleteRoot,
32
+ // AutocompleteLabel,
33
+ // AutocompleteWrap,
34
+ // AutocompleteInner,
35
+ // AutocompleteItem,
36
+ // AutocompleteItemLabel,
37
+ // AutocompleteItemRemove,
38
+ // AutocompleteInputWrap,
39
+ // AutocompleteInput,
40
+ // AutocompleteInputArrow,
41
+ // AutocompleteMenu,
42
+ // AutocompleteMenuItem,
43
+ // } from "./components";
44
+ // const USE_POPPER = false;
45
+ // export type AutocompleteItem = Option;
46
+ // export type AutocompleteValue = AutocompleteItem[];
47
+ // export type AutocompleteProps = SetRequired<
48
+ // Omit<ComponentPropsWithRef<"input">, "defaultValue" | "onSelect">,
49
+ // "onChange" | "name"
50
+ // > & {
51
+ // selectedItems: UseMultipleSelectionReturnValue<AutocompleteItem>["selectedItems"];
52
+ // onSelectedItemsChange: UseMultipleSelectionProps<AutocompleteItem>["onSelectedItemsChange"];
53
+ // onCreateItem: (item?: AutocompleteItem) => any;
54
+ // creatable?: boolean;
55
+ // onSelect?: (value?: AutocompleteValue) => any;
56
+ // options?: AutocompleteItem[];
57
+ // loadOptions?: (query?: string) => Promise<AutocompleteItem[]>;
58
+ // label?: string | ReactNode;
59
+ // defaultValue?: AutocompleteValue | string[];
60
+ // className?: string;
61
+ // style?: CSSProperties;
62
+ // $ref?: ForwardedRef<HTMLInputElement>;
63
+ // };
64
+ // /**
65
+ // * @see https://www.downshift-js.com/use-multiple-selection
66
+ // * @see https://codesandbox.io/s/y34o5l3p61?file=/src/hooks/useMultipleSelection/combobox.js
67
+ // * @see https://codesandbox.io/s/y34o5l3p61?file=/src/downshift/ordered-examples/05-multi-create.js
68
+ // */
69
+ // export const _Autocomplete = forwardRef<HTMLInputElement, AutocompleteProps>(
70
+ // function _Autocomplete(
71
+ // {
72
+ // selectedItems,
73
+ // onSelectedItemsChange,
74
+ // onCreateItem,
75
+ // creatable,
76
+ // onSelect,
77
+ // options = [],
78
+ // label,
79
+ // loadOptions,
80
+ // $ref,
81
+ // className,
82
+ // style,
83
+ // ...props
84
+ // },
85
+ // ref
86
+ // ) {
87
+ // options = normaliseOptions(options);
88
+ // const [isCreating, setIsCreating] = useState(false);
89
+ // const [filteredOptions, setFilteredOptions] = useState(options);
90
+ // const disclosureRef = useRef(null);
91
+ // const popoverRef = useRef(null);
92
+ // const { styles, attributes } = USE_POPPER
93
+ // ? usePopper(disclosureRef.current, popoverRef.current, {
94
+ // placement: "bottom-start",
95
+ // })
96
+ // : { styles: {}, attributes: {} };
97
+ // const {
98
+ // getSelectedItemProps,
99
+ // getDropdownProps,
100
+ // addSelectedItem,
101
+ // removeSelectedItem,
102
+ // // selectedItems,
103
+ // activeIndex,
104
+ // } = useMultipleSelection<AutocompleteItem>({
105
+ // selectedItems,
106
+ // onSelectedItemsChange,
107
+ // // onSelectedItemsChange: ({ selectedItems = [] }) => {
108
+ // // triggerChange(selectedItems);
109
+ // // },
110
+ // // initialSelectedItems: normaliseOptions(defaultValue),
111
+ // stateReducer: (_, actionAndChanges) => {
112
+ // const { type, changes } = actionAndChanges;
113
+ // switch (type) {
114
+ // case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:
115
+ // return {
116
+ // ...changes,
117
+ // activeIndex: undefined,
118
+ // };
119
+ // default:
120
+ // return changes;
121
+ // }
122
+ // },
123
+ // });
124
+ // const selectedItemsValues = selectedItems.map((item) => item.value);
125
+ // const {
126
+ // isOpen,
127
+ // getToggleButtonProps,
128
+ // getLabelProps,
129
+ // getMenuProps,
130
+ // getInputProps,
131
+ // getComboboxProps,
132
+ // highlightedIndex,
133
+ // getItemProps,
134
+ // openMenu,
135
+ // selectItem,
136
+ // setHighlightedIndex,
137
+ // inputValue,
138
+ // } = useCombobox<null | AutocompleteItem>({
139
+ // selectedItem: null,
140
+ // items: filteredOptions,
141
+ // onInputValueChange: ({ inputValue }) => {
142
+ // // perhaps allows the optionsFilterFn as prop
143
+ // const filteredItems = defaultOptionsFilterFn(options, inputValue);
144
+ // if (creatable && isCreating && filteredItems.length > 0) {
145
+ // setIsCreating(false);
146
+ // }
147
+ // setFilteredOptions(filteredItems);
148
+ // },
149
+ // stateReducer: (state, actionAndChanges) => {
150
+ // const { changes, type } = actionAndChanges;
151
+ // switch (type) {
152
+ // case useCombobox.stateChangeTypes.InputBlur:
153
+ // return {
154
+ // ...changes,
155
+ // highlightedIndex: state.highlightedIndex,
156
+ // // clear input on blur to avoid have "pending" uncompleted behaviours
157
+ // inputValue: "",
158
+ // };
159
+ // case useCombobox.stateChangeTypes.InputKeyDownEnter:
160
+ // case useCombobox.stateChangeTypes.ItemClick:
161
+ // return {
162
+ // ...changes,
163
+ // highlightedIndex: state.highlightedIndex,
164
+ // isOpen: true,
165
+ // inputValue: "",
166
+ // };
167
+ // default:
168
+ // return changes;
169
+ // }
170
+ // },
171
+ // onStateChange: ({ type, selectedItem }) => {
172
+ // switch (type) {
173
+ // case useCombobox.stateChangeTypes.InputKeyDownEnter:
174
+ // case useCombobox.stateChangeTypes.ItemClick:
175
+ // if (selectedItem) {
176
+ // if (selectedItemsValues.includes(selectedItem.value)) {
177
+ // removeSelectedItem(selectedItem);
178
+ // } else {
179
+ // if (creatable && onCreateItem) {
180
+ // onCreateItem(selectedItem);
181
+ // }
182
+ // addSelectedItem(selectedItem);
183
+ // if (isCreating) {
184
+ // setIsCreating(false);
185
+ // setFilteredOptions(options);
186
+ // }
187
+ // }
188
+ // selectItem(null);
189
+ // }
190
+ // break;
191
+ // default:
192
+ // break;
193
+ // }
194
+ // },
195
+ // });
196
+ // useEffect(() => {
197
+ // if (
198
+ // creatable &&
199
+ // filteredOptions.length === 0 &&
200
+ // activeIndex === -1 &&
201
+ // inputValue.length > 0
202
+ // ) {
203
+ // setIsCreating(true);
204
+ // setFilteredOptions(normaliseOptions([inputValue]));
205
+ // setHighlightedIndex(0);
206
+ // }
207
+ // }, [
208
+ // creatable,
209
+ // filteredOptions,
210
+ // setIsCreating,
211
+ // setHighlightedIndex,
212
+ // inputValue,
213
+ // activeIndex,
214
+ // ]);
215
+ // // useEffect(() => {
216
+ // // setSelectedItems(normaliseOptions(defaultValue));
217
+ // // }, [defaultValue]);
218
+ // // useDeepCompareEffect(() => {
219
+ // // setFilteredOptions(options);
220
+ // // }, [options]);
221
+ // // useDeepCompareEffect(() => {
222
+ // // triggerChange(values);
223
+ // // }, [values]);
224
+ // return (
225
+ // <AutocompleteRoot>
226
+ // {label && (
227
+ // <AutocompleteLabel {...getLabelProps()}>{label}</AutocompleteLabel>
228
+ // )}
229
+ // <AutocompleteWrap
230
+ // {...getComboboxProps({
231
+ // ref: disclosureRef,
232
+ // })}
233
+ // >
234
+ // <AutocompleteInner>
235
+ // {selectedItems.map((selectedItem, index) => (
236
+ // <AutocompleteItem
237
+ // key={`selected-item-${index}`}
238
+ // {...getSelectedItemProps({ selectedItem, index })}
239
+ // >
240
+ // <AutocompleteItemLabel>
241
+ // {selectedItem?.label || selectedItem}
242
+ // </AutocompleteItemLabel>
243
+ // <AutocompleteItemRemove
244
+ // onClick={(e) => {
245
+ // e.stopPropagation();
246
+ // removeSelectedItem(selectedItem);
247
+ // }}
248
+ // >
249
+ // &#10005;
250
+ // </AutocompleteItemRemove>
251
+ // </AutocompleteItem>
252
+ // ))}
253
+ // <AutocompleteInputWrap>
254
+ // <AutocompleteInput
255
+ // {...getInputProps({
256
+ // ...getDropdownProps({
257
+ // // this option used in the official example prevents the
258
+ // // backspace key to behave correctly
259
+ // // preventKeyAction: isOpen,
260
+ // onClick: isOpen ? () => {} : openMenu,
261
+ // onFocus: isOpen ? () => {} : openMenu,
262
+ // ref: $ref || ref,
263
+ // // ref: disclosureRef,
264
+ // }),
265
+ // // ref: $ref || ref,
266
+ // })}
267
+ // {...props}
268
+ // />
269
+ // </AutocompleteInputWrap>
270
+ // </AutocompleteInner>
271
+ // {!!filteredOptions.length && (
272
+ // <AutocompleteInputArrow
273
+ // {...getToggleButtonProps()}
274
+ // aria-label={"toggle menu"}
275
+ // isOpen={isOpen}
276
+ // />
277
+ // )}
278
+ // </AutocompleteWrap>
279
+ // <AutocompleteMenu
280
+ // style={styles.popper}
281
+ // {...attributes.popper}
282
+ // {...getMenuProps({ ref: popoverRef })}
283
+ // >
284
+ // {isOpen &&
285
+ // filteredOptions.map((item, index) => (
286
+ // <AutocompleteMenuItem
287
+ // $active={highlightedIndex === index}
288
+ // key={`${item.value}${index}`}
289
+ // {...getItemProps({ item, index })}
290
+ // >
291
+ // {isCreating ? (
292
+ // <>
293
+ // <span>+</span> <strong>{item.label}</strong>
294
+ // </>
295
+ // ) : (
296
+ // <>
297
+ // {/* {selectedItemsValues.includes(item.value) && (
298
+ // <CheckboxToggle />
299
+ // )} */}
300
+ // {item.label}
301
+ // </>
302
+ // )}
303
+ // </AutocompleteMenuItem>
304
+ // ))}
305
+ // </AutocompleteMenu>
306
+ // </AutocompleteRoot>
307
+ // );
308
+ // }
309
+ // );
310
+ // /**
311
+ // * @see https://www.downshift-js.com/use-multiple-selection
312
+ // * @see https://codesandbox.io/s/y34o5l3p61?file=/src/hooks/useMultipleSelection/combobox.js
313
+ // * @see https://codesandbox.io/s/y34o5l3p61?file=/src/downshift/ordered-examples/05-multi-create.js
314
+ // */
315
+ // export const Autocomplete = forwardRef<HTMLInputElement, AutocompleteProps>(
316
+ // function Autocomplete(
317
+ // { defaultValue = [], onChange, onSelect, name, ...props },
318
+ // ref
319
+ // ) {
320
+ // const [selectedItems, setSelectedItems] = useState(
321
+ // normaliseOptions(defaultValue)
322
+ // );
323
+ // const triggerChange = useCallback(
324
+ // (values: AutocompleteValue) => {
325
+ // triggerOnChange(
326
+ // onChange,
327
+ // name,
328
+ // values.map((item) => item.value || item)
329
+ // );
330
+ // if (onSelect) onSelect(values);
331
+ // },
332
+ // [onChange, onSelect, name]
333
+ // );
334
+ // const handleCreateItem = (item?: AutocompleteItem) => {
335
+ // // setSelectedItems((curr) => [...curr, item]);
336
+ // };
337
+ // const handleSelectedItemsChange = ({
338
+ // selectedItems = [],
339
+ // }: UseMultipleSelectionStateChange<AutocompleteItem>) => {
340
+ // setSelectedItems(selectedItems);
341
+ // triggerChange(selectedItems);
342
+ // };
343
+ // return (
344
+ // <_Autocomplete
345
+ // {...props}
346
+ // selectedItems={selectedItems}
347
+ // onSelectedItemsChange={handleSelectedItemsChange}
348
+ // onCreateItem={handleCreateItem}
349
+ // $ref={ref}
350
+ // />
351
+ // );
352
+ // }
353
+ // );
@@ -1,47 +1,47 @@
1
- /// <reference types="react" />
2
- import type { Option } from "../types";
3
- import { FormControl } from "../Forms/helpers";
4
- export declare type AutocompleteOption = Option | string;
5
- export declare type AutocompleteValue<TMultiple extends boolean | undefined = undefined> = TMultiple extends undefined ? null | Option[] | string[] | Option | string : TMultiple extends true ? Option[] | string[] : null | Option | string;
6
- export declare type AutocompleteConfig<TOption extends AutocompleteOption, TValue extends AutocompleteValue> = {
7
- creatable?: boolean;
8
- multiple?: boolean;
9
- autoComplete?: boolean;
10
- options?: TOption[];
11
- loadOptions?: (query?: string) => Promise<TOption[]>;
12
- onChange?: (value: TValue) => any;
13
- defaultValue?: TValue;
14
- value?: TValue;
15
- defaultInputValue?: string;
16
- };
17
- export declare type AutocompleteProps<TOption extends AutocompleteOption, TValue extends AutocompleteValue> = Omit<FormControl, keyof AutocompleteConfig<TOption, TValue>> & AutocompleteConfig<TOption, TValue> & {
18
- className?: string;
19
- style?: React.CSSProperties;
20
- $ref?: React.ForwardedRef<HTMLInputElement>;
21
- };
22
- /**
23
- * Autocomplete/autocomplete component based on [`@mui useAutocomplete hook`](https://mui.com/components/autocomplete/#useautocomplete).
24
- *
25
- * This component is design to work out of the box with [`react-hook-form`](https://react-hook-form.com/)
26
- * and [`yup`](https://github.com/jquense/yup) alongside our custom `Field`
27
- * component.
28
- *
29
- * After a lot of tests and attempts with `downshift` and `@reach` this proved
30
- * the best headless hook, small in size and behaving correctly in all scenarios.
31
- * `downshift` had in fact problems treating the initial `defaultValue` which
32
- * here is elegantly managed by the `isOptionEqualToValue` option passed into
33
- * the `useAutocomplete` hook.
34
- *
35
- *
36
- * Validation with `yup` and `react-hook-form` example:
37
- *
38
- * ```ts
39
- * const schema = object({
40
- * // the value must be an array with at least one non-empty string
41
- * test1: array(string().required()).required().min(1),
42
- * // the value must be an array of strings or an empty array
43
- * test2: array(string().required()).required(),
44
- * }).required();
45
- * ```
46
- */
47
- export declare const Autocomplete: <TOption extends AutocompleteOption = AutocompleteOption, TValue extends string | Option | Option[] | string[] | null = string | Option | Option[] | string[] | null>({ creatable, multiple, autoComplete, loadOptions, options: defaultOptions, defaultValue, value: controlledValue, defaultInputValue, label, placeholder, register, setValue, name, onChange, $ref, children, ...props }: AutocompleteProps<TOption, TValue>) => JSX.Element;
1
+ import React from "react";
2
+ import type { Option } from "../types";
3
+ import { FormControl } from "../Forms/helpers";
4
+ export declare type AutocompleteOption = Option | string;
5
+ export declare type AutocompleteValue<TMultiple extends boolean | undefined = undefined> = TMultiple extends undefined ? null | Option[] | string[] | Option | string : TMultiple extends true ? Option[] | string[] : null | Option | string;
6
+ export declare type AutocompleteConfig<TOption extends AutocompleteOption, TValue extends AutocompleteValue> = {
7
+ creatable?: boolean;
8
+ multiple?: boolean;
9
+ autoComplete?: boolean;
10
+ options?: TOption[];
11
+ loadOptions?: (query?: string) => Promise<TOption[]>;
12
+ onChange?: (value: TValue) => any;
13
+ defaultValue?: TValue;
14
+ value?: TValue;
15
+ defaultInputValue?: string;
16
+ };
17
+ export declare type AutocompleteProps<TOption extends AutocompleteOption, TValue extends AutocompleteValue> = Omit<FormControl, keyof AutocompleteConfig<TOption, TValue>> & AutocompleteConfig<TOption, TValue> & {
18
+ className?: string;
19
+ style?: React.CSSProperties;
20
+ $ref?: React.ForwardedRef<HTMLInputElement>;
21
+ };
22
+ /**
23
+ * Autocomplete/autocomplete component based on [`@mui useAutocomplete hook`](https://mui.com/components/autocomplete/#useautocomplete).
24
+ *
25
+ * This component is design to work out of the box with [`react-hook-form`](https://react-hook-form.com/)
26
+ * and [`yup`](https://github.com/jquense/yup) alongside our custom `Field`
27
+ * component.
28
+ *
29
+ * After a lot of tests and attempts with `downshift` and `@reach` this proved
30
+ * the best headless hook, small in size and behaving correctly in all scenarios.
31
+ * `downshift` had in fact problems treating the initial `defaultValue` which
32
+ * here is elegantly managed by the `isOptionEqualToValue` option passed into
33
+ * the `useAutocomplete` hook.
34
+ *
35
+ *
36
+ * Validation with `yup` and `react-hook-form` example:
37
+ *
38
+ * ```ts
39
+ * const schema = object({
40
+ * // the value must be an array with at least one non-empty string
41
+ * test1: array(string().required()).required().min(1),
42
+ * // the value must be an array of strings or an empty array
43
+ * test2: array(string().required()).required(),
44
+ * }).required();
45
+ * ```
46
+ */
47
+ export declare const Autocomplete: <TOption extends AutocompleteOption = AutocompleteOption, TValue extends string | string[] | Option | Option[] | null = string | string[] | Option | Option[] | null>({ creatable, multiple, autoComplete, loadOptions, options: defaultOptions, defaultValue, value: controlledValue, defaultInputValue, label, placeholder, register, setValue, name, onChange, $ref, children, ...props }: AutocompleteProps<TOption, TValue>) => JSX.Element;
@@ -0,0 +1,177 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import {
3
+ // forwardRef,
4
+ useCallback, useMemo, useState, } from "react";
5
+ import { useAutocomplete } from "@mui/base/AutocompleteUnstyled";
6
+ import { isString } from "@koine/utils";
7
+ import {
8
+ // triggerOnChange,
9
+ normaliseOptions, } from "../Forms/helpers";
10
+ import { normaliseAutocompleteValue } from "./helpers";
11
+ import { AutocompleteRoot, AutocompleteLabel, AutocompleteWrap, AutocompleteInner, AutocompleteItem, AutocompleteItemLabel, AutocompleteItemRemove,
12
+ // AutocompleteInputWrap,
13
+ AutocompleteInput, AutocompleteInputArrow, AutocompleteMenu, AutocompleteMenuItem, } from "./components";
14
+ import { InputProgress } from "../Forms/styles";
15
+ /**
16
+ * Autocomplete/autocomplete component based on [`@mui useAutocomplete hook`](https://mui.com/components/autocomplete/#useautocomplete).
17
+ *
18
+ * This component is design to work out of the box with [`react-hook-form`](https://react-hook-form.com/)
19
+ * and [`yup`](https://github.com/jquense/yup) alongside our custom `Field`
20
+ * component.
21
+ *
22
+ * After a lot of tests and attempts with `downshift` and `@reach` this proved
23
+ * the best headless hook, small in size and behaving correctly in all scenarios.
24
+ * `downshift` had in fact problems treating the initial `defaultValue` which
25
+ * here is elegantly managed by the `isOptionEqualToValue` option passed into
26
+ * the `useAutocomplete` hook.
27
+ *
28
+ *
29
+ * Validation with `yup` and `react-hook-form` example:
30
+ *
31
+ * ```ts
32
+ * const schema = object({
33
+ * // the value must be an array with at least one non-empty string
34
+ * test1: array(string().required()).required().min(1),
35
+ * // the value must be an array of strings or an empty array
36
+ * test2: array(string().required()).required(),
37
+ * }).required();
38
+ * ```
39
+ */
40
+ // export const Autocomplete = <TOption, TValue>forwardRef<
41
+ // HTMLInputElement,
42
+ // PropsWithChildren<AutocompleteProps<TOption, TValue>
43
+ // >(function Autocomplete(
44
+ // {
45
+ // creatable,
46
+ // multiple,
47
+ // autoComplete,
48
+ // loadOptions,
49
+ // options: defaultOptions = [],
50
+ // defaultValue = [],
51
+ // label,
52
+ // register,
53
+ // setValue,
54
+ // // trigger,
55
+ // name,
56
+ // onChange,
57
+ // $ref,
58
+ // children,
59
+ // ...props
60
+ // },
61
+ // ref
62
+ // ) {
63
+ export const Autocomplete = ({ creatable, multiple, autoComplete, loadOptions, options: defaultOptions = [], defaultValue, value: controlledValue, defaultInputValue, label, placeholder, register, setValue,
64
+ // trigger,
65
+ name, onChange, $ref, children, ...props }) => {
66
+ const defaultOptionsMemo = useMemo(() => normaliseOptions(defaultOptions), [defaultOptions]);
67
+ const [options, setOptions] = useState(defaultOptionsMemo);
68
+ const [loading, setLoading] = useState(false);
69
+ const { getRootProps, getInputLabelProps, getInputProps, getTagProps, getListboxProps, getOptionProps, getPopupIndicatorProps, groupedOptions, value: stateValue, setAnchorEl, popupOpen, focused, } = useAutocomplete({
70
+ id: "Autocomplete",
71
+ multiple: multiple ? true : undefined,
72
+ freeSolo: creatable ? true : undefined,
73
+ // autoComplete: autoComplete ? true : undefined,
74
+ disableCloseOnSelect: true,
75
+ openOnFocus: true,
76
+ blurOnSelect: autoComplete && !multiple,
77
+ selectOnFocus: creatable,
78
+ // TODO: passing the defaultInputValue makes the input controlled, which is
79
+ // not what I want, so we probably need to handle the input default value
80
+ // ourselves
81
+ // inputValue: defaultInputValue,
82
+ // @ts-expect-error FIXME: how?
83
+ defaultValue,
84
+ // @ts-expect-error FIXME: how?
85
+ value: controlledValue,
86
+ // defaultValue: useMemo(
87
+ // () => normaliseAutocompleteValue(defaultValue, multiple),
88
+ // [defaultValue]
89
+ // ),
90
+ options: useMemo(() => (loadOptions ? options : defaultOptions), [loadOptions, options, defaultOptions]),
91
+ // update input change only if we are searching as you type, @see
92
+ // https://mui.com/components/autocomplete/#search-as-you-type
93
+ onInputChange: useCallback(async (_event, inputValue) => {
94
+ if (!loadOptions) {
95
+ return;
96
+ }
97
+ if (inputValue) {
98
+ setLoading(true);
99
+ try {
100
+ const newOptions = await loadOptions(inputValue);
101
+ setOptions(newOptions);
102
+ }
103
+ catch (e) {
104
+ console.warn(e);
105
+ }
106
+ finally {
107
+ setLoading(false);
108
+ }
109
+ }
110
+ else {
111
+ setOptions(options);
112
+ // TODO: clear like behaviour?
113
+ // triggerChange({ value: "", label: "" });
114
+ }
115
+ }, [loadOptions, options]),
116
+ // TODO: check if we need this, probably, and check how to structure the
117
+ // callback, here we get the actual input event
118
+ onChange: (event, newValue) => {
119
+ const value = normaliseAutocompleteValue(newValue, multiple);
120
+ // @ts-expect-error FIXME: how?
121
+ if (onChange)
122
+ onChange(newValue);
123
+ if (setValue)
124
+ setValue(name, value, { shouldValidate: true });
125
+ // triggerOnChange(onChange, name, value);
126
+ },
127
+ // support both freeSolo free text and full option structure
128
+ isOptionEqualToValue: (option, value) => {
129
+ const optValue = isString(option) ? option : option.value;
130
+ const valValue = isString(value) ? value : value.value;
131
+ return optValue === valValue;
132
+ },
133
+ getOptionLabel: (option) => {
134
+ // @ts-expect-error TODO: I don't get this error
135
+ return isString(option) ? option : option.label || "";
136
+ },
137
+ });
138
+ const value = typeof controlledValue !== "undefined" ? controlledValue : stateValue;
139
+ const inputProps = () => {
140
+ const autocompleteProps = getInputProps();
141
+ // here we merge the mui's `useAutocomplete` props with the react-hook-form's
142
+ // `register` props
143
+ const registerProps = register
144
+ ? register(name, {
145
+ // @ts-expect-error FIXME: can't remember
146
+ ref: autocompleteProps.ref.current,
147
+ // this makes the validation works when a valid `defaultValue`
148
+ // is provided
149
+ value: normaliseAutocompleteValue(value, multiple),
150
+ })
151
+ : {};
152
+ return {
153
+ ...registerProps,
154
+ ...autocompleteProps,
155
+ // onChange: (event: FormEvent<HTMLInputElement>) => {
156
+ // registerProps.onChange(event);
157
+ // autocompleteProps?.onChange(event);
158
+ // },
159
+ };
160
+ };
161
+ // to focus the input on error this works too
162
+ // @see https://react-hook-form.com/faqs#question12 but probably it is
163
+ // better to do as now passing the input ref to the register options
164
+ // useEffect(() => {
165
+ // if (errors[name]) {
166
+ // inputProps.ref.current.focus();
167
+ // }
168
+ // }, [errors, name, inputProps.ref]);
169
+ return (_jsxs(AutocompleteRoot, { children: [label && (_jsx(AutocompleteLabel, { ...getInputLabelProps(), children: label })), _jsxs(AutocompleteWrap, { ...getRootProps(), "data-focus": focused, children: [_jsxs(AutocompleteInner, { ref: setAnchorEl, children: [multiple &&
170
+ value.map((valueItem, index) => {
171
+ const { onDelete, key, ...tagProps } = getTagProps({ index });
172
+ return (_jsxs(AutocompleteItem, { ...tagProps, children: [_jsx(AutocompleteItemLabel, { children: isString(valueItem)
173
+ ? valueItem
174
+ : valueItem.Label || valueItem.label }), _jsx(AutocompleteItemRemove, { onClick: onDelete, children: "\u2715" })] }, key));
175
+ }), _jsx(AutocompleteInput, { ...inputProps(), placeholder: placeholder })] }), !!options.length && (_jsx(AutocompleteInputArrow, { ...getPopupIndicatorProps(), isOpen: popupOpen })), loading && _jsx(InputProgress, {})] }), groupedOptions.length ? (_jsx(AutocompleteMenu, { ...getListboxProps(), children: groupedOptions.map((option, index) => (_jsx(AutocompleteMenuItem, { ...getOptionProps({ option, index }), children: isString(option) ? option : option.Label || option.label }, index))) })) : null, children] }));
176
+ // });
177
+ };
@@ -1 +1 @@
1
- export declare const Autocomplete: null;
1
+ export declare const Autocomplete: null;