optikos 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 (527) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/LICENSE +21 -0
  3. package/README.md +213 -2
  4. package/THIRD_PARTY_NOTICES.md +83 -0
  5. package/dist/bind.js +2 -0
  6. package/dist/bind.js.map +7 -0
  7. package/dist/chunk-23XLG2EM.js +2 -0
  8. package/dist/chunk-23XLG2EM.js.map +7 -0
  9. package/dist/chunk-27UZFEXD.js +2 -0
  10. package/dist/chunk-27UZFEXD.js.map +7 -0
  11. package/dist/chunk-2UPUC4RK.js +2 -0
  12. package/dist/chunk-2UPUC4RK.js.map +7 -0
  13. package/dist/chunk-2ZRNGG2N.js +2 -0
  14. package/dist/chunk-2ZRNGG2N.js.map +7 -0
  15. package/dist/chunk-2ZUZ5HDL.js +2 -0
  16. package/dist/chunk-2ZUZ5HDL.js.map +7 -0
  17. package/dist/chunk-3DBEZGOY.js +2 -0
  18. package/dist/chunk-3DBEZGOY.js.map +7 -0
  19. package/dist/chunk-3S24ZRPK.js +2 -0
  20. package/dist/chunk-3S24ZRPK.js.map +7 -0
  21. package/dist/chunk-3TAW4AKH.js +2 -0
  22. package/dist/chunk-3TAW4AKH.js.map +7 -0
  23. package/dist/chunk-4AA4FQEM.js +2 -0
  24. package/dist/chunk-4AA4FQEM.js.map +7 -0
  25. package/dist/chunk-4C666HHU.js +2 -0
  26. package/dist/chunk-4C666HHU.js.map +7 -0
  27. package/dist/chunk-4EZJ5FKJ.js +2 -0
  28. package/dist/chunk-4EZJ5FKJ.js.map +7 -0
  29. package/dist/chunk-4LZZ244E.js +2 -0
  30. package/dist/chunk-4LZZ244E.js.map +7 -0
  31. package/dist/chunk-4SYIIX5A.js +2 -0
  32. package/dist/chunk-4SYIIX5A.js.map +7 -0
  33. package/dist/chunk-5BC72727.js +2 -0
  34. package/dist/chunk-5BC72727.js.map +7 -0
  35. package/dist/chunk-5DJTP53N.js +2 -0
  36. package/dist/chunk-5DJTP53N.js.map +7 -0
  37. package/dist/chunk-5JEXM5S7.js +2 -0
  38. package/dist/chunk-5JEXM5S7.js.map +7 -0
  39. package/dist/chunk-5Q76ACVI.js +2 -0
  40. package/dist/chunk-5Q76ACVI.js.map +7 -0
  41. package/dist/chunk-5QUY72FX.js +2 -0
  42. package/dist/chunk-5QUY72FX.js.map +7 -0
  43. package/dist/chunk-5YS7OD5E.js +2 -0
  44. package/dist/chunk-5YS7OD5E.js.map +7 -0
  45. package/dist/chunk-676AKAGF.js +2 -0
  46. package/dist/chunk-676AKAGF.js.map +7 -0
  47. package/dist/chunk-6NCXO5ZP.js +2 -0
  48. package/dist/chunk-6NCXO5ZP.js.map +7 -0
  49. package/dist/chunk-6VBK2I5B.js +2 -0
  50. package/dist/chunk-6VBK2I5B.js.map +7 -0
  51. package/dist/chunk-7KMIFXHZ.js +2 -0
  52. package/dist/chunk-7KMIFXHZ.js.map +7 -0
  53. package/dist/chunk-A2NKDOYN.js +2 -0
  54. package/dist/chunk-A2NKDOYN.js.map +7 -0
  55. package/dist/chunk-ATFJ7PNA.js +2 -0
  56. package/dist/chunk-ATFJ7PNA.js.map +7 -0
  57. package/dist/chunk-BXYWVRKJ.js +2 -0
  58. package/dist/chunk-BXYWVRKJ.js.map +7 -0
  59. package/dist/chunk-CKXS375P.js +2 -0
  60. package/dist/chunk-CKXS375P.js.map +7 -0
  61. package/dist/chunk-CUN5QO4T.js +2 -0
  62. package/dist/chunk-CUN5QO4T.js.map +7 -0
  63. package/dist/chunk-DBMWS3O5.js +2 -0
  64. package/dist/chunk-DBMWS3O5.js.map +7 -0
  65. package/dist/chunk-E4VNLYO2.js +2 -0
  66. package/dist/chunk-E4VNLYO2.js.map +7 -0
  67. package/dist/chunk-EDUMAMK4.js +2 -0
  68. package/dist/chunk-EDUMAMK4.js.map +7 -0
  69. package/dist/chunk-ELYARUCN.js +2 -0
  70. package/dist/chunk-ELYARUCN.js.map +7 -0
  71. package/dist/chunk-EV73ADN2.js +2 -0
  72. package/dist/chunk-EV73ADN2.js.map +7 -0
  73. package/dist/chunk-FEHGU6EP.js +3 -0
  74. package/dist/chunk-FEHGU6EP.js.map +7 -0
  75. package/dist/chunk-FHM5NUS4.js +3 -0
  76. package/dist/chunk-FHM5NUS4.js.map +7 -0
  77. package/dist/chunk-G2DAD3MQ.js +2 -0
  78. package/dist/chunk-G2DAD3MQ.js.map +7 -0
  79. package/dist/chunk-G2KUK6AT.js +2 -0
  80. package/dist/chunk-G2KUK6AT.js.map +7 -0
  81. package/dist/chunk-GBPLNXMP.js +2 -0
  82. package/dist/chunk-GBPLNXMP.js.map +7 -0
  83. package/dist/chunk-GNU4VOOE.js +2 -0
  84. package/dist/chunk-GNU4VOOE.js.map +7 -0
  85. package/dist/chunk-GZ7X34QP.js +2 -0
  86. package/dist/chunk-GZ7X34QP.js.map +7 -0
  87. package/dist/chunk-HOF4JGMQ.js +2 -0
  88. package/dist/chunk-HOF4JGMQ.js.map +7 -0
  89. package/dist/chunk-HXDTGP2K.js +2 -0
  90. package/dist/chunk-HXDTGP2K.js.map +7 -0
  91. package/dist/chunk-I4SP6JTU.js +2 -0
  92. package/dist/chunk-I4SP6JTU.js.map +7 -0
  93. package/dist/chunk-IHE2MQ3W.js +2 -0
  94. package/dist/chunk-IHE2MQ3W.js.map +7 -0
  95. package/dist/chunk-II6ITOA6.js +2 -0
  96. package/dist/chunk-II6ITOA6.js.map +7 -0
  97. package/dist/chunk-JBLRAM7Z.js +2 -0
  98. package/dist/chunk-JBLRAM7Z.js.map +7 -0
  99. package/dist/chunk-JI265XFO.js +2 -0
  100. package/dist/chunk-JI265XFO.js.map +7 -0
  101. package/dist/chunk-JK74QK3M.js +2 -0
  102. package/dist/chunk-JK74QK3M.js.map +7 -0
  103. package/dist/chunk-JOFQJGZK.js +2 -0
  104. package/dist/chunk-JOFQJGZK.js.map +7 -0
  105. package/dist/chunk-KCEUD232.js +2 -0
  106. package/dist/chunk-KCEUD232.js.map +7 -0
  107. package/dist/chunk-KLLAY2IM.js +2 -0
  108. package/dist/chunk-KLLAY2IM.js.map +7 -0
  109. package/dist/chunk-LBJSMXLV.js +2 -0
  110. package/dist/chunk-LBJSMXLV.js.map +7 -0
  111. package/dist/chunk-LQRFNQ2N.js +2 -0
  112. package/dist/chunk-LQRFNQ2N.js.map +7 -0
  113. package/dist/chunk-LW2WRUVL.js +2 -0
  114. package/dist/chunk-LW2WRUVL.js.map +7 -0
  115. package/dist/chunk-M242VYZA.js +2 -0
  116. package/dist/chunk-M242VYZA.js.map +7 -0
  117. package/dist/chunk-MB3MU6HR.js +2 -0
  118. package/dist/chunk-MB3MU6HR.js.map +7 -0
  119. package/dist/chunk-MW3RWBZ7.js +2 -0
  120. package/dist/chunk-MW3RWBZ7.js.map +7 -0
  121. package/dist/chunk-NXSTUFS7.js +2 -0
  122. package/dist/chunk-NXSTUFS7.js.map +7 -0
  123. package/dist/chunk-OEAXCCVM.js +2 -0
  124. package/dist/chunk-OEAXCCVM.js.map +7 -0
  125. package/dist/chunk-OGRFQTXA.js +2 -0
  126. package/dist/chunk-OGRFQTXA.js.map +7 -0
  127. package/dist/chunk-OWEQT2HN.js +2 -0
  128. package/dist/chunk-OWEQT2HN.js.map +7 -0
  129. package/dist/chunk-PZSHOSOS.js +2 -0
  130. package/dist/chunk-PZSHOSOS.js.map +7 -0
  131. package/dist/chunk-REW4LR46.js +2 -0
  132. package/dist/chunk-REW4LR46.js.map +7 -0
  133. package/dist/chunk-RNN55473.js +2 -0
  134. package/dist/chunk-RNN55473.js.map +7 -0
  135. package/dist/chunk-SA53QUBF.js +2 -0
  136. package/dist/chunk-SA53QUBF.js.map +7 -0
  137. package/dist/chunk-TIPK3SCJ.js +2 -0
  138. package/dist/chunk-TIPK3SCJ.js.map +7 -0
  139. package/dist/chunk-TOLTUOZS.js +2 -0
  140. package/dist/chunk-TOLTUOZS.js.map +7 -0
  141. package/dist/chunk-TZOQWCVH.js +2 -0
  142. package/dist/chunk-TZOQWCVH.js.map +7 -0
  143. package/dist/chunk-VF7BGP6L.js +2 -0
  144. package/dist/chunk-VF7BGP6L.js.map +7 -0
  145. package/dist/chunk-VU3GIDZ3.js +2 -0
  146. package/dist/chunk-VU3GIDZ3.js.map +7 -0
  147. package/dist/chunk-VV7CFMPZ.js +2 -0
  148. package/dist/chunk-VV7CFMPZ.js.map +7 -0
  149. package/dist/chunk-W3H7GTJY.js +2 -0
  150. package/dist/chunk-W3H7GTJY.js.map +7 -0
  151. package/dist/chunk-X2ASKUFD.js +2 -0
  152. package/dist/chunk-X2ASKUFD.js.map +7 -0
  153. package/dist/chunk-X6AULZI4.js +1 -0
  154. package/dist/chunk-X6AULZI4.js.map +7 -0
  155. package/dist/chunk-XHOBNSBO.js +2 -0
  156. package/dist/chunk-XHOBNSBO.js.map +7 -0
  157. package/dist/chunk-XX2MVWFS.js +4 -0
  158. package/dist/chunk-XX2MVWFS.js.map +7 -0
  159. package/dist/chunk-XYZ6VZ5T.js +2 -0
  160. package/dist/chunk-XYZ6VZ5T.js.map +7 -0
  161. package/dist/chunk-YBAYEU25.js +2 -0
  162. package/dist/chunk-YBAYEU25.js.map +7 -0
  163. package/dist/chunk-YHEMA56R.js +2 -0
  164. package/dist/chunk-YHEMA56R.js.map +7 -0
  165. package/dist/chunk-Z2JBUHKA.js +2 -0
  166. package/dist/chunk-Z2JBUHKA.js.map +7 -0
  167. package/dist/chunk-Z2Z52GFT.js +2 -0
  168. package/dist/chunk-Z2Z52GFT.js.map +7 -0
  169. package/dist/chunk-ZPPELYNJ.js +2 -0
  170. package/dist/chunk-ZPPELYNJ.js.map +7 -0
  171. package/dist/chunk-ZVK4L5GK.js +2 -0
  172. package/dist/chunk-ZVK4L5GK.js.map +7 -0
  173. package/dist/chunk-ZWNQREWS.js +2 -0
  174. package/dist/chunk-ZWNQREWS.js.map +7 -0
  175. package/dist/components/badge.js +2 -0
  176. package/dist/components/badge.js.map +7 -0
  177. package/dist/components/breadcrumb.js +2 -0
  178. package/dist/components/breadcrumb.js.map +7 -0
  179. package/dist/components/button.js +2 -0
  180. package/dist/components/button.js.map +7 -0
  181. package/dist/components/calendar.js +2 -0
  182. package/dist/components/calendar.js.map +7 -0
  183. package/dist/components/cellediting.js +2 -0
  184. package/dist/components/cellediting.js.map +7 -0
  185. package/dist/components/chat.js +2 -0
  186. package/dist/components/chat.js.map +7 -0
  187. package/dist/components/checkbox.js +2 -0
  188. package/dist/components/checkbox.js.map +7 -0
  189. package/dist/components/checkboxgroup.js +2 -0
  190. package/dist/components/checkboxgroup.js.map +7 -0
  191. package/dist/components/chip.js +2 -0
  192. package/dist/components/chip.js.map +7 -0
  193. package/dist/components/codeviewer.js +2 -0
  194. package/dist/components/codeviewer.js.map +7 -0
  195. package/dist/components/combobox.js +2 -0
  196. package/dist/components/combobox.js.map +7 -0
  197. package/dist/components/commandpalette.js +2 -0
  198. package/dist/components/commandpalette.js.map +7 -0
  199. package/dist/components/container.js +2 -0
  200. package/dist/components/container.js.map +7 -0
  201. package/dist/components/dataview.js +2 -0
  202. package/dist/components/dataview.js.map +7 -0
  203. package/dist/components/datefield.js +2 -0
  204. package/dist/components/datefield.js.map +7 -0
  205. package/dist/components/daterangefield.js +2 -0
  206. package/dist/components/daterangefield.js.map +7 -0
  207. package/dist/components/dial.js +2 -0
  208. package/dist/components/dial.js.map +7 -0
  209. package/dist/components/dropdown.js +2 -0
  210. package/dist/components/dropdown.js.map +7 -0
  211. package/dist/components/fieldgroup.js +2 -0
  212. package/dist/components/fieldgroup.js.map +7 -0
  213. package/dist/components/fieldlist.js +2 -0
  214. package/dist/components/fieldlist.js.map +7 -0
  215. package/dist/components/fieldset.js +2 -0
  216. package/dist/components/fieldset.js.map +7 -0
  217. package/dist/components/filterbuilder.js +2 -0
  218. package/dist/components/filterbuilder.js.map +7 -0
  219. package/dist/components/form.js +2 -0
  220. package/dist/components/form.js.map +7 -0
  221. package/dist/components/formactions.js +2 -0
  222. package/dist/components/formactions.js.map +7 -0
  223. package/dist/components/formerrors.js +2 -0
  224. package/dist/components/formerrors.js.map +7 -0
  225. package/dist/components/formsection.js +2 -0
  226. package/dist/components/formsection.js.map +7 -0
  227. package/dist/components/grid.js +2 -0
  228. package/dist/components/grid.js.map +7 -0
  229. package/dist/components/icon.js +2 -0
  230. package/dist/components/icon.js.map +7 -0
  231. package/dist/components/inputgroup.js +2 -0
  232. package/dist/components/inputgroup.js.map +7 -0
  233. package/dist/components/label.js +2 -0
  234. package/dist/components/label.js.map +7 -0
  235. package/dist/components/listbox.js +2 -0
  236. package/dist/components/listbox.js.map +7 -0
  237. package/dist/components/lookupfield.js +2 -0
  238. package/dist/components/lookupfield.js.map +7 -0
  239. package/dist/components/menu.js +2 -0
  240. package/dist/components/menu.js.map +7 -0
  241. package/dist/components/messagebox.js +2 -0
  242. package/dist/components/messagebox.js.map +7 -0
  243. package/dist/components/navmenu.js +2 -0
  244. package/dist/components/navmenu.js.map +7 -0
  245. package/dist/components/numberfield.js +2 -0
  246. package/dist/components/numberfield.js.map +7 -0
  247. package/dist/components/pagination.js +2 -0
  248. package/dist/components/pagination.js.map +7 -0
  249. package/dist/components/panel.js +2 -0
  250. package/dist/components/panel.js.map +7 -0
  251. package/dist/components/pickerfield.js +2 -0
  252. package/dist/components/pickerfield.js.map +7 -0
  253. package/dist/components/radiogroup.js +2 -0
  254. package/dist/components/radiogroup.js.map +7 -0
  255. package/dist/components/searchgrid.js +2 -0
  256. package/dist/components/searchgrid.js.map +7 -0
  257. package/dist/components/secretfield.js +2 -0
  258. package/dist/components/secretfield.js.map +7 -0
  259. package/dist/components/select.js +2 -0
  260. package/dist/components/select.js.map +7 -0
  261. package/dist/components/slider.js +2 -0
  262. package/dist/components/slider.js.map +7 -0
  263. package/dist/components/spacer.js +2 -0
  264. package/dist/components/spacer.js.map +7 -0
  265. package/dist/components/spinner.js +2 -0
  266. package/dist/components/spinner.js.map +7 -0
  267. package/dist/components/stepform.js +2 -0
  268. package/dist/components/stepform.js.map +7 -0
  269. package/dist/components/stepper.js +2 -0
  270. package/dist/components/stepper.js.map +7 -0
  271. package/dist/components/suggestfield.js +2 -0
  272. package/dist/components/suggestfield.js.map +7 -0
  273. package/dist/components/table.js +2 -0
  274. package/dist/components/table.js.map +7 -0
  275. package/dist/components/tabs.js +2 -0
  276. package/dist/components/tabs.js.map +7 -0
  277. package/dist/components/textarea.js +2 -0
  278. package/dist/components/textarea.js.map +7 -0
  279. package/dist/components/textfield.js +2 -0
  280. package/dist/components/textfield.js.map +7 -0
  281. package/dist/components/toast.js +2 -0
  282. package/dist/components/toast.js.map +7 -0
  283. package/dist/components/toggle.js +2 -0
  284. package/dist/components/toggle.js.map +7 -0
  285. package/dist/components/toolbar.js +2 -0
  286. package/dist/components/toolbar.js.map +7 -0
  287. package/dist/components/tooltip.js +2 -0
  288. package/dist/components/tooltip.js.map +7 -0
  289. package/dist/components/tree.js +2 -0
  290. package/dist/components/tree.js.map +7 -0
  291. package/dist/components/viewmanager.js +2 -0
  292. package/dist/components/viewmanager.js.map +7 -0
  293. package/dist/components/viewport.js +2 -0
  294. package/dist/components/viewport.js.map +7 -0
  295. package/dist/components/widget.js +2 -0
  296. package/dist/components/widget.js.map +7 -0
  297. package/dist/components/window.js +2 -0
  298. package/dist/components/window.js.map +7 -0
  299. package/dist/core.js +2 -0
  300. package/dist/core.js.map +7 -0
  301. package/dist/css/badge.css +39 -0
  302. package/dist/css/base.css +180 -0
  303. package/dist/css/breadcrumb.css +53 -0
  304. package/dist/css/button.css +103 -0
  305. package/dist/css/calendar.css +108 -0
  306. package/dist/css/cellediting.css +33 -0
  307. package/dist/css/chat.css +232 -0
  308. package/dist/css/checkbox.css +64 -0
  309. package/dist/css/checkboxgroup.css +12 -0
  310. package/dist/css/chip.css +64 -0
  311. package/dist/css/codeviewer.css +109 -0
  312. package/dist/css/commandpalette.css +167 -0
  313. package/dist/css/container.css +5 -0
  314. package/dist/css/core.css +88 -0
  315. package/dist/css/dataview.css +56 -0
  316. package/dist/css/dial.css +203 -0
  317. package/dist/css/dropdown.css +13 -0
  318. package/dist/css/field.css +62 -0
  319. package/dist/css/fieldgroup.css +26 -0
  320. package/dist/css/fieldlist.css +84 -0
  321. package/dist/css/fieldset.css +68 -0
  322. package/dist/css/filterbuilder.css +125 -0
  323. package/dist/css/form.css +8 -0
  324. package/dist/css/formactions.css +40 -0
  325. package/dist/css/formerrors.css +39 -0
  326. package/dist/css/formsection.css +45 -0
  327. package/dist/css/grid.css +378 -0
  328. package/dist/css/icon.css +16 -0
  329. package/dist/css/inputgroup.css +58 -0
  330. package/dist/css/label.css +12 -0
  331. package/dist/css/layout.css +116 -0
  332. package/dist/css/listbox.css +50 -0
  333. package/dist/css/menu.css +92 -0
  334. package/dist/css/messagebox.css +6 -0
  335. package/dist/css/motion.css +29 -0
  336. package/dist/css/navmenu.css +115 -0
  337. package/dist/css/pagination.css +23 -0
  338. package/dist/css/panel.css +84 -0
  339. package/dist/css/pickerfield.css +85 -0
  340. package/dist/css/radiogroup.css +53 -0
  341. package/dist/css/searchgrid.css +37 -0
  342. package/dist/css/secretfield.css +73 -0
  343. package/dist/css/slider.css +107 -0
  344. package/dist/css/spacer.css +7 -0
  345. package/dist/css/stepform.css +46 -0
  346. package/dist/css/stepper.css +122 -0
  347. package/dist/css/table.css +36 -0
  348. package/dist/css/tabs.css +108 -0
  349. package/dist/css/textarea.css +11 -0
  350. package/dist/css/textfield.css +59 -0
  351. package/dist/css/toast.css +91 -0
  352. package/dist/css/toggle.css +39 -0
  353. package/dist/css/toolbar.css +14 -0
  354. package/dist/css/tooltip.css +17 -0
  355. package/dist/css/tree.css +94 -0
  356. package/dist/css/viewport.css +9 -0
  357. package/dist/css/widget.css +135 -0
  358. package/dist/css/window.css +35 -0
  359. package/dist/data.js +2 -0
  360. package/dist/data.js.map +7 -0
  361. package/dist/index.js +8 -0
  362. package/dist/index.js.map +7 -0
  363. package/dist/motion.js +2 -0
  364. package/dist/motion.js.map +7 -0
  365. package/dist/optikos.css +4240 -0
  366. package/dist/themes/compact.css +17 -0
  367. package/dist/themes/dark.css +53 -0
  368. package/dist/types/bind/index.d.ts +23 -0
  369. package/dist/types/components/badge.d.ts +1 -0
  370. package/dist/types/components/base/badge/badge.d.ts +18 -0
  371. package/dist/types/components/base/button/button.d.ts +34 -0
  372. package/dist/types/components/base/chip/chip.d.ts +27 -0
  373. package/dist/types/components/base/codeviewer/codeviewer.d.ts +48 -0
  374. package/dist/types/components/base/icon/icon.d.ts +17 -0
  375. package/dist/types/components/base/label/label.d.ts +14 -0
  376. package/dist/types/components/breadcrumb.d.ts +1 -0
  377. package/dist/types/components/button.d.ts +1 -0
  378. package/dist/types/components/calendar.d.ts +1 -0
  379. package/dist/types/components/cellediting.d.ts +1 -0
  380. package/dist/types/components/chat/chat/chat.d.ts +84 -0
  381. package/dist/types/components/chat.d.ts +1 -0
  382. package/dist/types/components/checkbox.d.ts +1 -0
  383. package/dist/types/components/checkboxgroup.d.ts +1 -0
  384. package/dist/types/components/chip.d.ts +1 -0
  385. package/dist/types/components/codeviewer.d.ts +1 -0
  386. package/dist/types/components/combobox.d.ts +1 -0
  387. package/dist/types/components/commandpalette.d.ts +1 -0
  388. package/dist/types/components/container.d.ts +1 -0
  389. package/dist/types/components/data/cellediting/cellediting.d.ts +10 -0
  390. package/dist/types/components/data/dataview/dataview.d.ts +61 -0
  391. package/dist/types/components/data/filterbuilder/filterbuilder.d.ts +73 -0
  392. package/dist/types/components/data/grid/grid.d.ts +177 -0
  393. package/dist/types/components/data/pagination/pagination.d.ts +31 -0
  394. package/dist/types/components/data/searchgrid/searchgrid.d.ts +63 -0
  395. package/dist/types/components/data/table/table.d.ts +26 -0
  396. package/dist/types/components/data/tree/tree.d.ts +71 -0
  397. package/dist/types/components/data/viewmanager/viewmanager.d.ts +86 -0
  398. package/dist/types/components/dataview.d.ts +1 -0
  399. package/dist/types/components/datefield.d.ts +1 -0
  400. package/dist/types/components/daterangefield.d.ts +1 -0
  401. package/dist/types/components/dates/calendar/calendar.d.ts +48 -0
  402. package/dist/types/components/dial.d.ts +1 -0
  403. package/dist/types/components/dropdown.d.ts +1 -0
  404. package/dist/types/components/feedback/spinner/spinner.d.ts +11 -0
  405. package/dist/types/components/fieldgroup.d.ts +1 -0
  406. package/dist/types/components/fieldlist.d.ts +1 -0
  407. package/dist/types/components/fields/checkbox/checkbox.d.ts +20 -0
  408. package/dist/types/components/fields/checkboxgroup/checkboxgroup.d.ts +27 -0
  409. package/dist/types/components/fields/combobox/combobox.d.ts +15 -0
  410. package/dist/types/components/fields/datefield/datefield.d.ts +30 -0
  411. package/dist/types/components/fields/daterangefield/daterangefield.d.ts +32 -0
  412. package/dist/types/components/fields/dial/dial.d.ts +84 -0
  413. package/dist/types/components/fields/listbox/listbox.d.ts +54 -0
  414. package/dist/types/components/fields/lookupfield/lookupfield.d.ts +25 -0
  415. package/dist/types/components/fields/numberfield/numberfield.d.ts +31 -0
  416. package/dist/types/components/fields/pickerfield/pickerfield.d.ts +77 -0
  417. package/dist/types/components/fields/radiogroup/radiogroup.d.ts +26 -0
  418. package/dist/types/components/fields/secretfield/secretfield.d.ts +52 -0
  419. package/dist/types/components/fields/select/select.d.ts +10 -0
  420. package/dist/types/components/fields/slider/slider.d.ts +62 -0
  421. package/dist/types/components/fields/suggestfield/suggestfield.d.ts +34 -0
  422. package/dist/types/components/fields/textarea/textarea.d.ts +16 -0
  423. package/dist/types/components/fields/textfield/textfield.d.ts +38 -0
  424. package/dist/types/components/fields/toggle/toggle.d.ts +9 -0
  425. package/dist/types/components/fieldset.d.ts +1 -0
  426. package/dist/types/components/filterbuilder.d.ts +1 -0
  427. package/dist/types/components/form/fieldgroup/fieldgroup.d.ts +33 -0
  428. package/dist/types/components/form/fieldlist/fieldlist.d.ts +58 -0
  429. package/dist/types/components/form/form/form.d.ts +68 -0
  430. package/dist/types/components/form/formactions/formactions.d.ts +34 -0
  431. package/dist/types/components/form/formerrors/formerrors.d.ts +23 -0
  432. package/dist/types/components/form/formsection/formsection.d.ts +26 -0
  433. package/dist/types/components/form/inputgroup/inputgroup.d.ts +28 -0
  434. package/dist/types/components/form/stepform/stepform.d.ts +64 -0
  435. package/dist/types/components/form.d.ts +1 -0
  436. package/dist/types/components/formactions.d.ts +1 -0
  437. package/dist/types/components/formerrors.d.ts +1 -0
  438. package/dist/types/components/formsection.d.ts +1 -0
  439. package/dist/types/components/grid.d.ts +1 -0
  440. package/dist/types/components/icon.d.ts +1 -0
  441. package/dist/types/components/inputgroup.d.ts +1 -0
  442. package/dist/types/components/label.d.ts +1 -0
  443. package/dist/types/components/layout/container/container.d.ts +1 -0
  444. package/dist/types/components/layout/fieldset/fieldset.d.ts +30 -0
  445. package/dist/types/components/layout/panel/panel.d.ts +53 -0
  446. package/dist/types/components/layout/panel/reload.d.ts +1 -0
  447. package/dist/types/components/layout/spacer/spacer.d.ts +12 -0
  448. package/dist/types/components/layout/toolbar/toolbar.d.ts +15 -0
  449. package/dist/types/components/layout/viewport/viewport.d.ts +7 -0
  450. package/dist/types/components/listbox.d.ts +1 -0
  451. package/dist/types/components/lookupfield.d.ts +1 -0
  452. package/dist/types/components/menu.d.ts +1 -0
  453. package/dist/types/components/messagebox.d.ts +1 -0
  454. package/dist/types/components/navigation/breadcrumb/breadcrumb.d.ts +32 -0
  455. package/dist/types/components/navigation/navmenu/navmenu.d.ts +63 -0
  456. package/dist/types/components/navigation/stepper/stepper.d.ts +31 -0
  457. package/dist/types/components/navigation/tabs/tabs.d.ts +57 -0
  458. package/dist/types/components/navmenu.d.ts +1 -0
  459. package/dist/types/components/numberfield.d.ts +1 -0
  460. package/dist/types/components/overlays/commandpalette/commandpalette.d.ts +80 -0
  461. package/dist/types/components/overlays/dropdown/dropdown.d.ts +41 -0
  462. package/dist/types/components/overlays/menu/menu.d.ts +56 -0
  463. package/dist/types/components/overlays/messagebox/messagebox.d.ts +61 -0
  464. package/dist/types/components/overlays/toast/toast.d.ts +45 -0
  465. package/dist/types/components/overlays/tooltip/tooltip.d.ts +13 -0
  466. package/dist/types/components/overlays/widget/widget.d.ts +61 -0
  467. package/dist/types/components/overlays/window/window.d.ts +38 -0
  468. package/dist/types/components/pagination.d.ts +1 -0
  469. package/dist/types/components/panel.d.ts +1 -0
  470. package/dist/types/components/pickerfield.d.ts +1 -0
  471. package/dist/types/components/radiogroup.d.ts +1 -0
  472. package/dist/types/components/searchgrid.d.ts +1 -0
  473. package/dist/types/components/secretfield.d.ts +1 -0
  474. package/dist/types/components/select.d.ts +1 -0
  475. package/dist/types/components/slider.d.ts +1 -0
  476. package/dist/types/components/spacer.d.ts +1 -0
  477. package/dist/types/components/spinner.d.ts +1 -0
  478. package/dist/types/components/stepform.d.ts +1 -0
  479. package/dist/types/components/stepper.d.ts +1 -0
  480. package/dist/types/components/suggestfield.d.ts +1 -0
  481. package/dist/types/components/table.d.ts +1 -0
  482. package/dist/types/components/tabs.d.ts +1 -0
  483. package/dist/types/components/textarea.d.ts +1 -0
  484. package/dist/types/components/textfield.d.ts +1 -0
  485. package/dist/types/components/toast.d.ts +1 -0
  486. package/dist/types/components/toggle.d.ts +1 -0
  487. package/dist/types/components/toolbar.d.ts +1 -0
  488. package/dist/types/components/tooltip.d.ts +1 -0
  489. package/dist/types/components/tree.d.ts +1 -0
  490. package/dist/types/components/viewmanager.d.ts +1 -0
  491. package/dist/types/components/viewport.d.ts +1 -0
  492. package/dist/types/components/widget.d.ts +1 -0
  493. package/dist/types/components/window.d.ts +1 -0
  494. package/dist/types/core/component.d.ts +94 -0
  495. package/dist/types/core/container.d.ts +43 -0
  496. package/dist/types/core/date.d.ts +14 -0
  497. package/dist/types/core/dom.d.ts +11 -0
  498. package/dist/types/core/emitter.d.ts +12 -0
  499. package/dist/types/core/field.d.ts +78 -0
  500. package/dist/types/core/focus.d.ts +18 -0
  501. package/dist/types/core/i18n.d.ts +12 -0
  502. package/dist/types/core/index.d.ts +15 -0
  503. package/dist/types/core/layer.d.ts +6 -0
  504. package/dist/types/core/position.d.ts +19 -0
  505. package/dist/types/core/registry.d.ts +12 -0
  506. package/dist/types/core/validators.d.ts +10 -0
  507. package/dist/types/core/virtual.d.ts +24 -0
  508. package/dist/types/data/column.d.ts +32 -0
  509. package/dist/types/data/format.d.ts +4 -0
  510. package/dist/types/data/index.d.ts +5 -0
  511. package/dist/types/data/model.d.ts +28 -0
  512. package/dist/types/data/proxy.d.ts +61 -0
  513. package/dist/types/data/store.d.ts +94 -0
  514. package/dist/types/index.d.ts +67 -0
  515. package/dist/types/layout/layout.d.ts +27 -0
  516. package/dist/types/motion/config.d.ts +83 -0
  517. package/dist/types/motion/core.d.ts +40 -0
  518. package/dist/types/motion/extras.d.ts +66 -0
  519. package/dist/types/motion/index.d.ts +3 -0
  520. package/dist/types/themes/define.d.ts +31 -0
  521. package/dist/types/themes/index.d.ts +1 -0
  522. package/dist/types/ui/enums.d.ts +82 -0
  523. package/dist/types/ui/index.d.ts +2 -0
  524. package/dist/types/ui/ui.d.ts +67 -0
  525. package/dist/ui.js +2 -0
  526. package/dist/ui.js.map +7 -0
  527. package/package.json +104 -4
@@ -0,0 +1,12 @@
1
+ export type Handler = (...args: any[]) => unknown;
2
+ /** Minimal observer. A handler that returns `false` makes `emit` return `false` (used by `before-*` events). */
3
+ export declare class Emitter {
4
+ private handlers;
5
+ /** Subscribes; returns the unsubscribe function. */
6
+ on(name: string, fn: Handler): () => void;
7
+ once(name: string, fn: Handler): () => void;
8
+ off(name: string, fn?: Handler): void;
9
+ /** Returns `false` if any handler returned `false` (the event was cancelled). */
10
+ emit(name: string, ...args: unknown[]): boolean;
11
+ clearListeners(): void;
12
+ }
@@ -0,0 +1,78 @@
1
+ import { Component, type ComponentConfig } from './component.js';
2
+ import type { Validator } from './validators.js';
3
+ export interface FieldConfig<V = unknown> extends ComponentConfig {
4
+ name?: string;
5
+ label?: string;
6
+ labelPos?: 'top' | 'left';
7
+ value?: V;
8
+ required?: boolean;
9
+ readonly?: boolean;
10
+ help?: string;
11
+ validators?: Validator<V>[];
12
+ /** When to validate on its own. After the first error it revalidates on every change. Default `blur`. */
13
+ validateOn?: 'blur' | 'change' | 'submit';
14
+ /** ms of quiet after the last change before `settled` fires (0 = right away). `change` itself is never delayed. */
15
+ debounce?: number;
16
+ }
17
+ /**
18
+ * Base of every field: value, validation, dirty tracking, label and messages.
19
+ * Subclasses implement `createControl` (build the control, assign `inputEl`), `applyValue` (value → DOM)
20
+ * and call `commit` when the user edits (DOM → value).
21
+ */
22
+ export declare abstract class Field<V = unknown, C extends FieldConfig<V> = FieldConfig<V>> extends Component<C> {
23
+ protected baseCls: string;
24
+ protected value: V;
25
+ protected original: V;
26
+ protected error: string;
27
+ /** The focusable control; `label for`, `aria-invalid` and `aria-describedby` point at it. */
28
+ protected inputEl: HTMLElement;
29
+ private labelEl;
30
+ private helpEl;
31
+ private errorEl;
32
+ private dirty;
33
+ private cancelSettle?;
34
+ constructor(config?: C);
35
+ get name(): string | undefined;
36
+ protected abstract createControl(): HTMLElement;
37
+ protected abstract applyValue(value: V): void;
38
+ protected emptyValue(): V;
39
+ protected isEmpty(v: V): boolean;
40
+ protected isEqual(a: V, b: V): boolean;
41
+ protected build(): HTMLElement;
42
+ protected onRender(): void;
43
+ protected focusEl(): HTMLElement;
44
+ getValue(): V;
45
+ /** Sets the value programmatically. `silent` skips the `change` event and validation. */
46
+ setValue(v: V, silent?: boolean): void;
47
+ /** For subclasses: the user edited the control and the DOM already shows `v`. */
48
+ protected commit(v: V): void;
49
+ private changed;
50
+ /** `settled(value)`: the value after the user stopped changing it for `debounce` ms (immediately without `debounce`). */
51
+ private queueSettled;
52
+ /** Fires a pending `settled` now (Enter, blur, end of a drag...). No-op when nothing is waiting. */
53
+ protected flushSettled(): void;
54
+ private updateDirty;
55
+ /** What the user sees as this field's value (a select's label, a formatted date); used by summaries such as the StepForm review. */
56
+ getDisplayText(): string;
57
+ /** Sets the empty value (`''`, `null`, `false`...) and emits `change`. */
58
+ clear(): void;
59
+ isDirty(): boolean;
60
+ /** The current value becomes the "original" (as after loading or saving). */
61
+ markClean(): void;
62
+ reset(): void;
63
+ /** Returns the error message for the current value, or `''`. No UI side effects. */
64
+ protected check(): string;
65
+ validate(): boolean;
66
+ isValid(): boolean;
67
+ getError(): string;
68
+ setError(msg: string): void;
69
+ clearError(): void;
70
+ private paintError;
71
+ private describe;
72
+ setLabel(label: string): void;
73
+ setHelp(help: string): void;
74
+ setRequired(required: boolean): void;
75
+ setReadonly(readonly: boolean): void;
76
+ setValidators(validators: Validator<V>[]): void;
77
+ protected onReadonly(_readonly: boolean): void;
78
+ }
@@ -0,0 +1,18 @@
1
+ export declare function focusables(root: HTMLElement): HTMLElement[];
2
+ /** Keeps Tab inside `root`. Returns the release function. */
3
+ export declare function trapFocus(root: HTMLElement): () => void;
4
+ export interface RovingOptions {
5
+ /** Selector of the items inside the container. */
6
+ selector: string;
7
+ orientation?: 'horizontal' | 'vertical' | 'both';
8
+ /** Wrap around at the ends. Default true. */
9
+ loop?: boolean;
10
+ /** Called when an arrow/Home/End key moves focus to an item. */
11
+ onMove?: (item: HTMLElement) => void;
12
+ }
13
+ /** Roving tabindex: one item is the Tab stop, arrows/Home/End move focus. Returns `{ sync, destroy }`. */
14
+ export declare function roving(container: HTMLElement, o: RovingOptions): {
15
+ /** Re-evaluates the tab stop (after items change). Pass the item that should be the stop. */
16
+ sync: (target?: HTMLElement) => void;
17
+ destroy(): void;
18
+ };
@@ -0,0 +1,12 @@
1
+ export type Locale = Record<string, string>;
2
+ export declare const locales: Record<string, Locale>;
3
+ /** Picks a registered locale by name (`'pt-BR'`, or `'pt'` as a prefix) or merges a custom object over English. */
4
+ export declare function setLocale(l: string | Locale): void;
5
+ export declare const getLocale: () => Locale;
6
+ /**
7
+ * Adds messages to a locale (created if missing). Keys already there are kept, so an app's own overrides win.
8
+ * Each component registers its own keys this way, so its messages only ship with it.
9
+ */
10
+ export declare function addMessages(lang: string, messages: Locale): void;
11
+ /** Translates a key, replacing `{name}` placeholders. */
12
+ export declare function t(key: string, vars?: Record<string, string | number>): string;
@@ -0,0 +1,15 @@
1
+ export { Emitter, type Handler } from './emitter.js';
2
+ export { h, attr, uid, kebab, px, clamp, type Attrs, type Child } from './dom.js';
3
+ export { t, setLocale, getLocale, addMessages, locales, type Locale } from './i18n.js';
4
+ export { Component, type ComponentConfig, type Parent } from './component.js';
5
+ export { Container, type ContainerConfig } from './container.js';
6
+ export { register, create, getType, type AnyConfig, type ComponentClass } from './registry.js';
7
+ export { registerLayout, createLayout, type Layout, type LayoutSpec, type LayoutFactory } from '../layout/layout.js';
8
+ export { Field, type FieldConfig } from './field.js';
9
+ export * as validators from './validators.js';
10
+ export type { Validator } from './validators.js';
11
+ export { layer, toLayer, lockModal } from './layer.js';
12
+ export { place, track, type Placement, type PlaceOptions } from './position.js';
13
+ export { trapFocus, roving, focusables } from './focus.js';
14
+ export { virtualize, measure } from './virtual.js';
15
+ export * as date from './date.js';
@@ -0,0 +1,6 @@
1
+ /** The single `body > .op-layer` that holds every floating element (dropdowns, windows, tooltips, toasts). */
2
+ export declare function layer(): HTMLElement;
3
+ /** Moves `el` into the layer, keeping the theme scope of `from` (floating elements leave their themed ancestor). */
4
+ export declare function toLayer(el: HTMLElement, from?: Element | null): void;
5
+ /** Makes everything except `modal` inert (outside the layer and earlier layer children). Returns the release function. */
6
+ export declare function lockModal(modal: HTMLElement): () => void;
@@ -0,0 +1,19 @@
1
+ export type Side = 'top' | 'bottom' | 'left' | 'right';
2
+ export type Placement = Side | `${Side}-start` | `${Side}-end`;
3
+ export interface PlaceOptions {
4
+ placement?: Placement;
5
+ offset?: number;
6
+ flip?: boolean;
7
+ matchWidth?: boolean;
8
+ margin?: number;
9
+ }
10
+ /**
11
+ * Positions a floating element (`position: fixed`) next to an anchor element or a point, flipping and clamping to the viewport.
12
+ * Taller than the room on either side (a long menu, a big theme): it goes where there is more room, capped to it, and scrolls.
13
+ */
14
+ export declare function place(el: HTMLElement, anchor: Element | {
15
+ x: number;
16
+ y: number;
17
+ }, o?: PlaceOptions): void;
18
+ /** Calls `fn` (throttled to a frame) on any scroll or resize. Returns the cleanup function. */
19
+ export declare function track(fn: () => void): () => void;
@@ -0,0 +1,12 @@
1
+ import type { Component, ComponentConfig } from './component.js';
2
+ export type ComponentClass = {
3
+ new (config: any): Component<any>;
4
+ type?: string;
5
+ };
6
+ /** Config accepted by `create` and `items`: the base keys plus whatever the chosen `type` understands. */
7
+ export type AnyConfig = ComponentConfig & Record<string, any>;
8
+ /** Registers a component class under a `type`. Users register their own the same way. */
9
+ export declare function register(type: string, cls: ComponentClass): void;
10
+ export declare const getType: (type: string) => ComponentClass | undefined;
11
+ /** Builds a component from a config (or passes an instance through). `renderTo` mounts it. */
12
+ export declare function create<T extends Component = Component>(config: AnyConfig | Component): T;
@@ -0,0 +1,10 @@
1
+ import type { Field } from './field.js';
2
+ /** Returns an error message, or `true`/`undefined` when valid. Empty values are skipped (use `required`). */
3
+ export type Validator<V = any> = (value: V, field: Field<V>) => string | true | undefined | void;
4
+ export declare const minLength: (n: number, msg?: string) => Validator;
5
+ export declare const maxLength: (n: number, msg?: string) => Validator;
6
+ export declare const pattern: (re: RegExp, msg?: string) => Validator;
7
+ export declare const email: (msg?: string) => Validator;
8
+ export declare const min: (n: number, msg?: string) => Validator;
9
+ export declare const max: (n: number, msg?: string) => Validator;
10
+ export declare const range: (a: number, b: number, msg?: string) => Validator;
@@ -0,0 +1,24 @@
1
+ export interface VirtualOptions {
2
+ /** Scrolling element. */
3
+ scroller: HTMLElement;
4
+ count: number;
5
+ rowHeight: number;
6
+ /** Extra rows rendered above/below the viewport. Default 6. */
7
+ overscan?: number;
8
+ /** Fills a pooled row element with the data of row `index`. */
9
+ render(row: HTMLElement, index: number): void;
10
+ rowCls?: string;
11
+ }
12
+ /** Fixed-height virtual list: only the visible rows exist in the DOM, reused as a pool. */
13
+ export declare function virtualize(o: VirtualOptions): {
14
+ spacer: HTMLDivElement;
15
+ /** Rows currently in the DOM. */
16
+ rows: HTMLElement[];
17
+ refresh: () => void;
18
+ setCount(n: number): void;
19
+ setRowHeight(px: number): void;
20
+ scrollTo(index: number): void;
21
+ destroy(): void;
22
+ };
23
+ /** Resolves a CSS length (usually a token expression like `var(--op-row-height)`) to pixels in the context of `el`. Returns 0 when not laid out. */
24
+ export declare function measure(el: HTMLElement, length: string): number;
@@ -0,0 +1,32 @@
1
+ import { type Formatter } from './format.js';
2
+ import type { Model } from './model.js';
3
+ /** A grid/table column. `T` is the record shape: `field` then autocompletes its keys (any string still works). */
4
+ export interface Column<T extends Record<string, any> = any> {
5
+ field: Extract<keyof T, string> | (string & {});
6
+ header?: string;
7
+ /** Fixed width in px. */
8
+ width?: number;
9
+ /** Share of the free space (like CSS `fr`). Default 1 when there is no `width`. */
10
+ flex?: number;
11
+ /** A label that groups columns ("Identification", "Values"...): a band over the header and sections in the column menu. */
12
+ group?: string;
13
+ minWidth?: number;
14
+ /** Upper bound when the user resizes it. */
15
+ maxWidth?: number;
16
+ /** `false` keeps a column's width fixed even when the grid has `resizableColumns`. */
17
+ resizable?: boolean;
18
+ align?: 'left' | 'center' | 'right';
19
+ sortable?: boolean;
20
+ hidden?: boolean;
21
+ /** Name registered with `registerFormat` (`money`, `date`, `number`, `percent`, `bool`) or a function. */
22
+ format?: string | Formatter;
23
+ /** Full control over the cell content. Text is escaped; return a Node for markup. */
24
+ renderer?: (value: any, rec: Model<T>, col: Column<T>) => string | Node;
25
+ cls?: string;
26
+ /** With the `cellEditing()` grid plugin: `true` (an editor for the value's type), a field type (`'select'`) or a field config. */
27
+ editor?: boolean | string | Record<string, any>;
28
+ /** With `cellEditing()`: whether this record's cell can be edited (default: every record, when `editor` is set). */
29
+ editable?: (rec: Model<T>) => boolean;
30
+ }
31
+ /** Cell content for a record: `renderer` first, then `format`, then the plain value. */
32
+ export declare function cellContent<T extends Record<string, any>>(col: Column<T>, rec: Model<T>): string | Node;
@@ -0,0 +1,4 @@
1
+ export type Formatter = (value: any, options?: Record<string, any>) => string;
2
+ /** Registers a named formatter, usable as `format: 'name'` in columns. */
3
+ export declare function registerFormat(name: string, fn: Formatter): void;
4
+ export declare function format(fmt: string | Formatter, value: unknown): string;
@@ -0,0 +1,5 @@
1
+ export { Model, type ModelDef, type FieldDef } from './model.js';
2
+ export { Store, matchFilter, type StoreConfig, type StoreProxy, type FilterFn } from './store.js';
3
+ export { MemoryProxy, RestProxy, type Proxy, type RestProxyConfig, type ReadParams, type ReadResult, type Sorter, type FilterSpec, type FilterOp, type FilterGroup, type FilterNode } from './proxy.js';
4
+ export { format, registerFormat, type Formatter } from './format.js';
5
+ export { cellContent, type Column } from './column.js';
@@ -0,0 +1,28 @@
1
+ export interface FieldDef {
2
+ type?: 'string' | 'number' | 'boolean';
3
+ default?: unknown;
4
+ }
5
+ export interface ModelDef {
6
+ idField?: string;
7
+ fields?: Record<string, FieldDef>;
8
+ }
9
+ export interface RecordOwner {
10
+ recordChanged(rec: Model, field: string): void;
11
+ }
12
+ /** One record. `data` holds the values; `set` tracks the original value of each changed field. */
13
+ export declare class Model<T extends Record<string, any> = Record<string, any>> {
14
+ private def;
15
+ data: T;
16
+ phantom: boolean;
17
+ owner?: RecordOwner;
18
+ private readonly clientId;
19
+ private original;
20
+ constructor(raw?: Partial<T>, def?: ModelDef);
21
+ get id(): string | number;
22
+ get<K extends keyof T>(field: K): T[K];
23
+ set<K extends keyof T>(field: K, value: T[K]): void;
24
+ isDirty(): boolean;
25
+ getChanges(): Partial<T>;
26
+ commit(): void;
27
+ reject(): void;
28
+ }
@@ -0,0 +1,61 @@
1
+ export interface Sorter {
2
+ field: string;
3
+ dir: 'asc' | 'desc';
4
+ }
5
+ export type FilterOp = 'eq' | 'ne' | 'contains' | 'notContains' | 'startsWith' | 'endsWith' | 'gt' | 'ge' | 'lt' | 'le' | 'between' | 'notBetween' | 'in' | 'nin' | 'empty' | 'notEmpty';
6
+ export interface FilterSpec {
7
+ field: string;
8
+ op?: FilterOp;
9
+ /** `between`/`notBetween`: `[from, to]`; `in`/`nin`: an array; `empty`/`notEmpty`: ignored. */
10
+ value?: unknown;
11
+ }
12
+ /** A group of filters joined by AND or OR; groups nest. */
13
+ export interface FilterGroup {
14
+ op: 'and' | 'or';
15
+ filters: FilterNode[];
16
+ }
17
+ export type FilterNode = FilterSpec | FilterGroup;
18
+ export interface ReadParams {
19
+ page?: number;
20
+ pageSize?: number;
21
+ sorters?: Sorter[];
22
+ filters?: FilterNode[];
23
+ [extra: string]: unknown;
24
+ }
25
+ export interface ReadResult<T = any> {
26
+ data: T[];
27
+ total?: number;
28
+ }
29
+ /** Where a Store gets (and writes) its data. Memory, function and REST implementations share this shape. */
30
+ export interface Proxy<T = any> {
31
+ read(params: ReadParams, signal?: AbortSignal): Promise<ReadResult<T> | T[]> | ReadResult<T> | T[];
32
+ create?(data: T): Promise<Partial<T> | void>;
33
+ update?(data: T): Promise<Partial<T> | void>;
34
+ destroy?(data: T): Promise<void>;
35
+ }
36
+ export declare class MemoryProxy<T = any> implements Proxy<T> {
37
+ rows: T[];
38
+ constructor(rows?: T[]);
39
+ read(): ReadResult<T>;
40
+ }
41
+ export interface RestProxyConfig {
42
+ url: string;
43
+ idField?: string;
44
+ headers?: Record<string, string>;
45
+ /** Dotted path of the rows in the JSON when it is an object (`'items'`, `'data.rows'`). */
46
+ root?: string;
47
+ /** Dotted path of the total count in the JSON. Falls back to the `X-Total-Count` header, then to the row count. */
48
+ totalKey?: string;
49
+ fetch?: typeof fetch;
50
+ }
51
+ /** REST over `fetch`: `GET url?page&pageSize&sort=a:asc,b:desc&field=value`, `POST url`, `PUT url/:id`, `DELETE url/:id`. */
52
+ export declare class RestProxy<T extends Record<string, any> = any> implements Proxy<T> {
53
+ private cfg;
54
+ constructor(cfg: RestProxyConfig);
55
+ private call;
56
+ private itemUrl;
57
+ read(params: ReadParams, signal?: AbortSignal): Promise<ReadResult<T>>;
58
+ create(d: T): Promise<Partial<T>>;
59
+ update(d: T): Promise<Partial<T> | undefined>;
60
+ destroy(d: T): Promise<void>;
61
+ }
@@ -0,0 +1,94 @@
1
+ import { Emitter } from '../core/emitter.js';
2
+ import { Model, type ModelDef, type RecordOwner } from './model.js';
3
+ import type { FilterNode, Proxy, ReadParams, ReadResult, Sorter } from './proxy.js';
4
+ export type StoreProxy<T> = Proxy<T> | ((params: ReadParams, signal?: AbortSignal) => Promise<ReadResult<T> | T[]> | ReadResult<T> | T[]);
5
+ export type FilterFn<T extends Record<string, any>> = (rec: Model<T>) => boolean;
6
+ export interface StoreConfig<T extends Record<string, any>> {
7
+ data?: Partial<T>[];
8
+ model?: ModelDef;
9
+ proxy?: StoreProxy<T>;
10
+ /** 0 = no paging. */
11
+ pageSize?: number;
12
+ /** Sort, filter and paging are done by the proxy (it receives them in `read`). Default false: done locally. */
13
+ remote?: boolean;
14
+ sorters?: Sorter[];
15
+ autoLoad?: boolean;
16
+ listeners?: Record<string, (...a: any[]) => unknown>;
17
+ }
18
+ /** Does a record's data satisfy a filter node? Groups are AND/OR; an empty group matches everything. */
19
+ export declare function matchFilter(node: FilterNode, data: Record<string, any>): boolean;
20
+ /**
21
+ * Records + a view over them (filtered, sorted, paged). Events: `load`, `before-load`, `load-error`, `add`, `remove`,
22
+ * `update`, `sort`, `filter`, `page`, `sync`, and `change` for any of them (payload `{ type }`).
23
+ */
24
+ export declare class Store<T extends Record<string, any> = Record<string, any>> extends Emitter implements RecordOwner {
25
+ private cfg;
26
+ private all;
27
+ private rows;
28
+ private visible;
29
+ private removed;
30
+ private sorters;
31
+ private filters;
32
+ private params;
33
+ private proxy?;
34
+ private pageNo;
35
+ private pageLen;
36
+ private total;
37
+ private abort?;
38
+ loading: boolean;
39
+ constructor(cfg?: StoreConfig<T>);
40
+ private get remote();
41
+ private wrap;
42
+ private fire;
43
+ /** Number of records in the current view (the current page). */
44
+ get count(): number;
45
+ /** Records matching the filters, across pages (remote: what the server reported). */
46
+ get totalCount(): number;
47
+ /** Every record matching the filters, across pages (a remote store only knows the loaded page). */
48
+ getFiltered(): Model<T>[];
49
+ getAt(i: number): Model<T> | undefined;
50
+ getRange(start?: number, end?: number): Model<T>[];
51
+ getById(id: string | number): Model<T> | undefined;
52
+ indexOf(rec: Model<T>): number;
53
+ /** Plain data of the current view. */
54
+ getData(): T[];
55
+ each(fn: (rec: Model<T>, i: number) => void): void;
56
+ /** Replaces all records with local data. */
57
+ loadData(data: Partial<T>[]): void;
58
+ /** Reads through the proxy. Extra `params` are sent to it and remembered for later reloads. A newer load cancels the older one. */
59
+ load(params?: Record<string, unknown>): Promise<void>;
60
+ private setRecords;
61
+ /** Recomputes filtered/sorted/paged rows from `all`. */
62
+ private refreshView;
63
+ getSorters(): Sorter[];
64
+ /** `sort('name')` toggles asc/desc when already sorted by it; `sort('name', 'desc')` is explicit; `sort(null)` clears. */
65
+ sort(field: string | null, dir?: 'asc' | 'desc'): void;
66
+ /**
67
+ * Replaces the filters (top level = AND). Accepts specs, groups (`{ op: 'or', filters }`), or a predicate.
68
+ * Resolves when the view is up to date (for a remote store, after the reload).
69
+ */
70
+ filter(f: FilterNode | FilterNode[] | FilterFn<T>): Promise<void>;
71
+ clearFilter(): Promise<void>;
72
+ /** The active filter nodes (predicates are not included). */
73
+ getFilters(): FilterNode[];
74
+ private changeView;
75
+ get page(): number;
76
+ get pageSize(): number;
77
+ get pageCount(): number;
78
+ setPage(n: number): void;
79
+ setPageSize(n: number): void;
80
+ add(raw: Partial<T> | Partial<T>[]): Model<T>[];
81
+ insert(index: number, raw: Partial<T>): Model<T>;
82
+ remove(target: Model<T> | number | Array<Model<T>>): void;
83
+ clear(): void;
84
+ recordChanged(rec: Model, field: string): void;
85
+ getModified(): Model<T>[];
86
+ getRemoved(): Model<T>[];
87
+ commitChanges(): void;
88
+ /** Writes pending changes through the proxy: deletes, then creates and updates, one at a time. */
89
+ sync(): Promise<void>;
90
+ /** Observable interface used by `optikos/bind`: calls `fn` on any change; returns the unsubscribe function. */
91
+ subscribe(fn: (change: {
92
+ type: string;
93
+ }) => void): () => void;
94
+ }
@@ -0,0 +1,67 @@
1
+ export * from './core/index.js';
2
+ export * from './data/index.js';
3
+ export * from './themes/index.js';
4
+ export * from './motion/index.js';
5
+ export * from './ui/index.js';
6
+ export * from './components/base/badge/badge.js';
7
+ export * from './components/base/button/button.js';
8
+ export * from './components/base/chip/chip.js';
9
+ export * from './components/base/codeviewer/codeviewer.js';
10
+ export * from './components/base/icon/icon.js';
11
+ export * from './components/base/label/label.js';
12
+ export * from './components/chat/chat/chat.js';
13
+ export * from './components/data/cellediting/cellediting.js';
14
+ export * from './components/data/dataview/dataview.js';
15
+ export * from './components/data/filterbuilder/filterbuilder.js';
16
+ export * from './components/data/grid/grid.js';
17
+ export * from './components/data/pagination/pagination.js';
18
+ export * from './components/data/searchgrid/searchgrid.js';
19
+ export * from './components/data/table/table.js';
20
+ export * from './components/data/tree/tree.js';
21
+ export * from './components/data/viewmanager/viewmanager.js';
22
+ export * from './components/dates/calendar/calendar.js';
23
+ export * from './components/feedback/spinner/spinner.js';
24
+ export * from './components/fields/checkbox/checkbox.js';
25
+ export * from './components/fields/checkboxgroup/checkboxgroup.js';
26
+ export * from './components/fields/combobox/combobox.js';
27
+ export * from './components/fields/datefield/datefield.js';
28
+ export * from './components/fields/daterangefield/daterangefield.js';
29
+ export * from './components/fields/dial/dial.js';
30
+ export * from './components/fields/listbox/listbox.js';
31
+ export * from './components/fields/lookupfield/lookupfield.js';
32
+ export * from './components/fields/numberfield/numberfield.js';
33
+ export * from './components/fields/pickerfield/pickerfield.js';
34
+ export * from './components/fields/radiogroup/radiogroup.js';
35
+ export * from './components/fields/secretfield/secretfield.js';
36
+ export * from './components/fields/select/select.js';
37
+ export * from './components/fields/slider/slider.js';
38
+ export * from './components/fields/suggestfield/suggestfield.js';
39
+ export * from './components/fields/textarea/textarea.js';
40
+ export * from './components/fields/textfield/textfield.js';
41
+ export * from './components/fields/toggle/toggle.js';
42
+ export * from './components/form/fieldgroup/fieldgroup.js';
43
+ export * from './components/form/fieldlist/fieldlist.js';
44
+ export * from './components/form/form/form.js';
45
+ export * from './components/form/formactions/formactions.js';
46
+ export * from './components/form/formerrors/formerrors.js';
47
+ export * from './components/form/formsection/formsection.js';
48
+ export * from './components/form/inputgroup/inputgroup.js';
49
+ export * from './components/form/stepform/stepform.js';
50
+ export * from './components/layout/container/container.js';
51
+ export * from './components/layout/fieldset/fieldset.js';
52
+ export * from './components/layout/panel/panel.js';
53
+ export * from './components/layout/spacer/spacer.js';
54
+ export * from './components/layout/toolbar/toolbar.js';
55
+ export * from './components/layout/viewport/viewport.js';
56
+ export * from './components/navigation/breadcrumb/breadcrumb.js';
57
+ export * from './components/navigation/navmenu/navmenu.js';
58
+ export * from './components/navigation/stepper/stepper.js';
59
+ export * from './components/navigation/tabs/tabs.js';
60
+ export * from './components/overlays/commandpalette/commandpalette.js';
61
+ export * from './components/overlays/dropdown/dropdown.js';
62
+ export * from './components/overlays/menu/menu.js';
63
+ export * from './components/overlays/messagebox/messagebox.js';
64
+ export * from './components/overlays/toast/toast.js';
65
+ export * from './components/overlays/tooltip/tooltip.js';
66
+ export * from './components/overlays/widget/widget.js';
67
+ export * from './components/overlays/window/window.js';
@@ -0,0 +1,27 @@
1
+ import type { Component } from '../core/component.js';
2
+ import type { Container } from '../core/container.js';
3
+ export interface Layout {
4
+ init(c: Container): void;
5
+ add?(c: Container, cmp: Component, index: number): void;
6
+ remove?(c: Container, cmp: Component, index: number): void;
7
+ /** Card only. */
8
+ activate?(c: Container, cmp: Component): void;
9
+ getActive?(c: Container): Component | undefined;
10
+ /** Border only: below `narrowBelow` the west/east regions become drawers; these open and close them. */
11
+ openRegion?(name: string): void;
12
+ closeRegion?(name?: string): void;
13
+ toggleRegion?(name: string): void;
14
+ isRegionOpen?(name: string): boolean;
15
+ /** Layouts that adapt to the width: whether the container is currently narrow, and a way to force it (tests, previews). */
16
+ isNarrow?(): boolean;
17
+ setNarrow?(narrow: boolean): void;
18
+ }
19
+ export type LayoutConfig = {
20
+ type: string;
21
+ [option: string]: unknown;
22
+ };
23
+ export type LayoutSpec = string | LayoutConfig | Layout;
24
+ export type LayoutFactory = (config: Record<string, any>) => Layout;
25
+ /** Registers a layout strategy under a name; users add their own the same way. */
26
+ export declare function registerLayout(name: string, factory: LayoutFactory): void;
27
+ export declare function createLayout(spec: LayoutSpec): Layout;
@@ -0,0 +1,83 @@
1
+ /** Global motion settings: one object, one switch. Defaults are the numbers of the 20 motion rules. */
2
+ export interface MotionConfig {
3
+ enabled: boolean;
4
+ /** When true (default) a user who asked the OS for reduced motion gets none. */
5
+ respectReducedMotion: boolean;
6
+ ease: {
7
+ out: string;
8
+ in: string;
9
+ inOut: string;
10
+ };
11
+ /** Milliseconds. */
12
+ duration: {
13
+ dropdown: number;
14
+ popover: number;
15
+ modal: number;
16
+ press: number;
17
+ pulse: number;
18
+ reveal: number;
19
+ swap: number;
20
+ move: number;
21
+ enter: number;
22
+ };
23
+ /** The dropdown duration is clamped into this range (rule 2). */
24
+ dropdownRange: [number, number];
25
+ /** Exit duration = enter duration × this (rule 15). */
26
+ exitRatio: number;
27
+ stagger: {
28
+ step: number;
29
+ max: number;
30
+ };
31
+ press: {
32
+ scale: number;
33
+ };
34
+ popover: {
35
+ scale: number;
36
+ };
37
+ stretch: {
38
+ amount: number;
39
+ };
40
+ arc: {
41
+ bend: number;
42
+ };
43
+ /** Blur in px used by crossfades (rule 18). */
44
+ blur: number;
45
+ rubber: {
46
+ resistance: number;
47
+ settle: number;
48
+ };
49
+ /** Rule 13: easings that overshoot are refused unless this is true. */
50
+ allowBounce: boolean;
51
+ originFromTrigger: boolean;
52
+ }
53
+ export declare const DEFAULTS: MotionConfig;
54
+ export type DeepPartial<T> = {
55
+ [K in keyof T]?: T[K] extends object ? (T[K] extends unknown[] ? T[K] : DeepPartial<T[K]>) : T[K];
56
+ };
57
+ /** A `cubic-bezier` whose control points leave [0, 1] on the y axis overshoots (bounces); springs always do. */
58
+ export declare function isBouncy(easing: string): boolean;
59
+ type Listener = (c: Readonly<MotionConfig>) => void;
60
+ export declare const motion: {
61
+ get(): Readonly<MotionConfig>;
62
+ /**
63
+ * Changes the settings (deep merge). Easings that bounce are refused while `allowBounce` is false; the rest of the patch
64
+ * still applies. Returns what was refused.
65
+ */
66
+ set(patch: DeepPartial<MotionConfig>): {
67
+ rejected: string[];
68
+ };
69
+ reset(): void;
70
+ enable(): void;
71
+ disable(): void;
72
+ /** Motion is switched on and the user did not ask for reduced motion (unless `respectReducedMotion` is off). */
73
+ isOn(): boolean;
74
+ /** The dropdown duration, clamped into `dropdownRange`. */
75
+ dropdownMs(): number;
76
+ /** Duration for a kind of motion in a phase: exits are `exitRatio` times shorter (rule 15). */
77
+ ms(kind: keyof MotionConfig['duration'], phase?: 'enter' | 'exit'): number;
78
+ /** Easing for a phase: entrances ease-out, exits ease-in, movement ease-in-out. */
79
+ easing(phase: 'enter' | 'exit' | 'move'): string;
80
+ /** Subscribe to changes; returns the unsubscribe function. */
81
+ on(fn: Listener): () => void;
82
+ };
83
+ export {};