@joel_jsp/vortex-ui 0.0.0-stage → 0.1.1

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 (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +255 -2
  3. package/ai/README.md +18 -0
  4. package/ai/ai-assistant-dialog.component.d.ts +25 -0
  5. package/ai/ai-prompt-editor.component.d.ts +14 -0
  6. package/ai/ai.types.d.ts +109 -0
  7. package/ai/ai.utils.d.ts +3 -0
  8. package/ai/index.d.ts +8 -0
  9. package/ai/mock-ai-integration.d.ts +8 -0
  10. package/ai/vortex-ui-ai.d.ts +5 -0
  11. package/esm2022/ai/ai-assistant-dialog.component.js +226 -0
  12. package/esm2022/ai/ai-assistant-dialog.component.js.map +1 -0
  13. package/esm2022/ai/ai-prompt-editor.component.js +112 -0
  14. package/esm2022/ai/ai-prompt-editor.component.js.map +1 -0
  15. package/esm2022/ai/ai.types.js +2 -0
  16. package/esm2022/ai/ai.types.js.map +1 -0
  17. package/esm2022/ai/ai.utils.js +24 -0
  18. package/esm2022/ai/ai.utils.js.map +1 -0
  19. package/esm2022/ai/index.js +9 -0
  20. package/esm2022/ai/index.js.map +1 -0
  21. package/esm2022/ai/mock-ai-integration.js +169 -0
  22. package/esm2022/ai/mock-ai-integration.js.map +1 -0
  23. package/esm2022/ai/vortex-ui-ai.js +5 -0
  24. package/esm2022/ai/vortex-ui-ai.js.map +1 -0
  25. package/esm2022/index.js +4 -0
  26. package/esm2022/index.js.map +1 -0
  27. package/esm2022/lib/components/accordion/accordion.component.js +104 -0
  28. package/esm2022/lib/components/accordion/accordion.component.js.map +1 -0
  29. package/esm2022/lib/components/action-sheet/action-sheet.component.js +91 -0
  30. package/esm2022/lib/components/action-sheet/action-sheet.component.js.map +1 -0
  31. package/esm2022/lib/components/autocomplete/autocomplete.component.js +79 -0
  32. package/esm2022/lib/components/autocomplete/autocomplete.component.js.map +1 -0
  33. package/esm2022/lib/components/box/box.component.js +49 -0
  34. package/esm2022/lib/components/box/box.component.js.map +1 -0
  35. package/esm2022/lib/components/bullet/bullet.component.js +74 -0
  36. package/esm2022/lib/components/bullet/bullet.component.js.map +1 -0
  37. package/esm2022/lib/components/button/button.component.js +57 -0
  38. package/esm2022/lib/components/button/button.component.js.map +1 -0
  39. package/esm2022/lib/components/button-group/button-group.component.js +48 -0
  40. package/esm2022/lib/components/button-group/button-group.component.js.map +1 -0
  41. package/esm2022/lib/components/calendar/calendar.component.js +104 -0
  42. package/esm2022/lib/components/calendar/calendar.component.js.map +1 -0
  43. package/esm2022/lib/components/card/card.component.js +52 -0
  44. package/esm2022/lib/components/card/card.component.js.map +1 -0
  45. package/esm2022/lib/components/card-view/card-view.component.js +160 -0
  46. package/esm2022/lib/components/card-view/card-view.component.js.map +1 -0
  47. package/esm2022/lib/components/chart/chart.component.js +471 -0
  48. package/esm2022/lib/components/chart/chart.component.js.map +1 -0
  49. package/esm2022/lib/components/chat/chat.component.js +75 -0
  50. package/esm2022/lib/components/chat/chat.component.js.map +1 -0
  51. package/esm2022/lib/components/checkbox/checkbox.component.js +48 -0
  52. package/esm2022/lib/components/checkbox/checkbox.component.js.map +1 -0
  53. package/esm2022/lib/components/color-box/color-box.component.js +36 -0
  54. package/esm2022/lib/components/color-box/color-box.component.js.map +1 -0
  55. package/esm2022/lib/components/context-menu/context-menu.component.js +76 -0
  56. package/esm2022/lib/components/context-menu/context-menu.component.js.map +1 -0
  57. package/esm2022/lib/components/data-grid/data-grid.component.js +1203 -0
  58. package/esm2022/lib/components/data-grid/data-grid.component.js.map +1 -0
  59. package/esm2022/lib/components/data-grid/data-grid.types.js +2 -0
  60. package/esm2022/lib/components/data-grid/data-grid.types.js.map +1 -0
  61. package/esm2022/lib/components/data-grid/data-source.js +121 -0
  62. package/esm2022/lib/components/data-grid/data-source.js.map +1 -0
  63. package/esm2022/lib/components/data-grid/export-csv.js +28 -0
  64. package/esm2022/lib/components/data-grid/export-csv.js.map +1 -0
  65. package/esm2022/lib/components/date-box/date-box.component.js +67 -0
  66. package/esm2022/lib/components/date-box/date-box.component.js.map +1 -0
  67. package/esm2022/lib/components/date-range-box/date-range-box.component.js +48 -0
  68. package/esm2022/lib/components/date-range-box/date-range-box.component.js.map +1 -0
  69. package/esm2022/lib/components/diagram/diagram.component.js +103 -0
  70. package/esm2022/lib/components/diagram/diagram.component.js.map +1 -0
  71. package/esm2022/lib/components/dialog/dialog.component.js +93 -0
  72. package/esm2022/lib/components/dialog/dialog.component.js.map +1 -0
  73. package/esm2022/lib/components/drawer/drawer.component.js +98 -0
  74. package/esm2022/lib/components/drawer/drawer.component.js.map +1 -0
  75. package/esm2022/lib/components/drop-down-button/drop-down-button.component.js +71 -0
  76. package/esm2022/lib/components/drop-down-button/drop-down-button.component.js.map +1 -0
  77. package/esm2022/lib/components/fab/fab.component.js +46 -0
  78. package/esm2022/lib/components/fab/fab.component.js.map +1 -0
  79. package/esm2022/lib/components/field-set/field-set.component.js +25 -0
  80. package/esm2022/lib/components/field-set/field-set.component.js.map +1 -0
  81. package/esm2022/lib/components/file-manager/file-manager.component.js +862 -0
  82. package/esm2022/lib/components/file-manager/file-manager.component.js.map +1 -0
  83. package/esm2022/lib/components/file-manager/file-manager.types.js +2 -0
  84. package/esm2022/lib/components/file-manager/file-manager.types.js.map +1 -0
  85. package/esm2022/lib/components/file-uploader/file-uploader.component.js +43 -0
  86. package/esm2022/lib/components/file-uploader/file-uploader.component.js.map +1 -0
  87. package/esm2022/lib/components/filter-builder/filter-builder.component.js +261 -0
  88. package/esm2022/lib/components/filter-builder/filter-builder.component.js.map +1 -0
  89. package/esm2022/lib/components/form/form.component.js +54 -0
  90. package/esm2022/lib/components/form/form.component.js.map +1 -0
  91. package/esm2022/lib/components/funnel/funnel.component.js +85 -0
  92. package/esm2022/lib/components/funnel/funnel.component.js.map +1 -0
  93. package/esm2022/lib/components/gallery/gallery.component.js +54 -0
  94. package/esm2022/lib/components/gallery/gallery.component.js.map +1 -0
  95. package/esm2022/lib/components/gantt/gantt.component.js +130 -0
  96. package/esm2022/lib/components/gantt/gantt.component.js.map +1 -0
  97. package/esm2022/lib/components/gauge/bar-gauge.component.js +59 -0
  98. package/esm2022/lib/components/gauge/bar-gauge.component.js.map +1 -0
  99. package/esm2022/lib/components/gauge/circular-gauge.component.js +68 -0
  100. package/esm2022/lib/components/gauge/circular-gauge.component.js.map +1 -0
  101. package/esm2022/lib/components/gauge/linear-gauge.component.js +54 -0
  102. package/esm2022/lib/components/gauge/linear-gauge.component.js.map +1 -0
  103. package/esm2022/lib/components/html-editor/html-editor.component.js +186 -0
  104. package/esm2022/lib/components/html-editor/html-editor.component.js.map +1 -0
  105. package/esm2022/lib/components/index.js +73 -0
  106. package/esm2022/lib/components/index.js.map +1 -0
  107. package/esm2022/lib/components/list/list.component.js +121 -0
  108. package/esm2022/lib/components/list/list.component.js.map +1 -0
  109. package/esm2022/lib/components/load-panel/load-panel.component.js +31 -0
  110. package/esm2022/lib/components/load-panel/load-panel.component.js.map +1 -0
  111. package/esm2022/lib/components/lookup/lookup.component.js +66 -0
  112. package/esm2022/lib/components/lookup/lookup.component.js.map +1 -0
  113. package/esm2022/lib/components/map/map.component.js +73 -0
  114. package/esm2022/lib/components/map/map.component.js.map +1 -0
  115. package/esm2022/lib/components/map/vector-map.component.js +47 -0
  116. package/esm2022/lib/components/map/vector-map.component.js.map +1 -0
  117. package/esm2022/lib/components/menu/menu.component.js +107 -0
  118. package/esm2022/lib/components/menu/menu.component.js.map +1 -0
  119. package/esm2022/lib/components/multi-view/multi-view.component.js +82 -0
  120. package/esm2022/lib/components/multi-view/multi-view.component.js.map +1 -0
  121. package/esm2022/lib/components/number-box/number-box.component.js +57 -0
  122. package/esm2022/lib/components/number-box/number-box.component.js.map +1 -0
  123. package/esm2022/lib/components/pagination/pagination.component.js +62 -0
  124. package/esm2022/lib/components/pagination/pagination.component.js.map +1 -0
  125. package/esm2022/lib/components/pivot-grid/pivot-field-chooser.component.js +60 -0
  126. package/esm2022/lib/components/pivot-grid/pivot-field-chooser.component.js.map +1 -0
  127. package/esm2022/lib/components/pivot-grid/pivot-grid.component.js +102 -0
  128. package/esm2022/lib/components/pivot-grid/pivot-grid.component.js.map +1 -0
  129. package/esm2022/lib/components/popover/popover.component.js +42 -0
  130. package/esm2022/lib/components/popover/popover.component.js.map +1 -0
  131. package/esm2022/lib/components/progress/index.js +3 -0
  132. package/esm2022/lib/components/progress/index.js.map +1 -0
  133. package/esm2022/lib/components/progress/load-indicator.component.js +33 -0
  134. package/esm2022/lib/components/progress/load-indicator.component.js.map +1 -0
  135. package/esm2022/lib/components/progress/progress-bar.component.js +63 -0
  136. package/esm2022/lib/components/progress/progress-bar.component.js.map +1 -0
  137. package/esm2022/lib/components/radio-group/radio-group.component.js +42 -0
  138. package/esm2022/lib/components/radio-group/radio-group.component.js.map +1 -0
  139. package/esm2022/lib/components/range-slider/range-slider.component.js +60 -0
  140. package/esm2022/lib/components/range-slider/range-slider.component.js.map +1 -0
  141. package/esm2022/lib/components/sankey/sankey.component.js +97 -0
  142. package/esm2022/lib/components/sankey/sankey.component.js.map +1 -0
  143. package/esm2022/lib/components/scheduler/scheduler.component.js +377 -0
  144. package/esm2022/lib/components/scheduler/scheduler.component.js.map +1 -0
  145. package/esm2022/lib/components/scroll-view/scroll-view.component.js +25 -0
  146. package/esm2022/lib/components/scroll-view/scroll-view.component.js.map +1 -0
  147. package/esm2022/lib/components/select-box/select-box.component.js +77 -0
  148. package/esm2022/lib/components/select-box/select-box.component.js.map +1 -0
  149. package/esm2022/lib/components/slider/slider.component.js +59 -0
  150. package/esm2022/lib/components/slider/slider.component.js.map +1 -0
  151. package/esm2022/lib/components/sparkline/sparkline.component.js +95 -0
  152. package/esm2022/lib/components/sparkline/sparkline.component.js.map +1 -0
  153. package/esm2022/lib/components/splitter/splitter.component.js +123 -0
  154. package/esm2022/lib/components/splitter/splitter.component.js.map +1 -0
  155. package/esm2022/lib/components/stepper/stepper.component.js +120 -0
  156. package/esm2022/lib/components/stepper/stepper.component.js.map +1 -0
  157. package/esm2022/lib/components/switch/switch.component.js +54 -0
  158. package/esm2022/lib/components/switch/switch.component.js.map +1 -0
  159. package/esm2022/lib/components/tabs/tabs.component.js +118 -0
  160. package/esm2022/lib/components/tabs/tabs.component.js.map +1 -0
  161. package/esm2022/lib/components/tag-box/tag-box.component.js +75 -0
  162. package/esm2022/lib/components/tag-box/tag-box.component.js.map +1 -0
  163. package/esm2022/lib/components/text-area/text-area.component.js +50 -0
  164. package/esm2022/lib/components/text-area/text-area.component.js.map +1 -0
  165. package/esm2022/lib/components/text-box/text-box.component.js +64 -0
  166. package/esm2022/lib/components/text-box/text-box.component.js.map +1 -0
  167. package/esm2022/lib/components/tile-view/tile-view.component.js +34 -0
  168. package/esm2022/lib/components/tile-view/tile-view.component.js.map +1 -0
  169. package/esm2022/lib/components/toast/index.js +3 -0
  170. package/esm2022/lib/components/toast/index.js.map +1 -0
  171. package/esm2022/lib/components/toast/toast-outlet.component.js +35 -0
  172. package/esm2022/lib/components/toast/toast-outlet.component.js.map +1 -0
  173. package/esm2022/lib/components/toast/toast.service.js +42 -0
  174. package/esm2022/lib/components/toast/toast.service.js.map +1 -0
  175. package/esm2022/lib/components/toolbar/toolbar.component.js +37 -0
  176. package/esm2022/lib/components/toolbar/toolbar.component.js.map +1 -0
  177. package/esm2022/lib/components/tooltip/tooltip.component.js +21 -0
  178. package/esm2022/lib/components/tooltip/tooltip.component.js.map +1 -0
  179. package/esm2022/lib/components/tree-list/tree-list.component.js +166 -0
  180. package/esm2022/lib/components/tree-list/tree-list.component.js.map +1 -0
  181. package/esm2022/lib/components/tree-map/tree-map.component.js +94 -0
  182. package/esm2022/lib/components/tree-map/tree-map.component.js.map +1 -0
  183. package/esm2022/lib/components/tree-view/tree-view.component.js +140 -0
  184. package/esm2022/lib/components/tree-view/tree-view.component.js.map +1 -0
  185. package/esm2022/lib/components/validation/validation-summary.component.js +37 -0
  186. package/esm2022/lib/components/validation/validation-summary.component.js.map +1 -0
  187. package/esm2022/lib/components/wrappers/draggable.component.js +64 -0
  188. package/esm2022/lib/components/wrappers/draggable.component.js.map +1 -0
  189. package/esm2022/lib/components/wrappers/index.js +4 -0
  190. package/esm2022/lib/components/wrappers/index.js.map +1 -0
  191. package/esm2022/lib/components/wrappers/resizable.component.js +90 -0
  192. package/esm2022/lib/components/wrappers/resizable.component.js.map +1 -0
  193. package/esm2022/lib/components/wrappers/sortable.component.js +88 -0
  194. package/esm2022/lib/components/wrappers/sortable.component.js.map +1 -0
  195. package/esm2022/lib/core/index.js +3 -0
  196. package/esm2022/lib/core/index.js.map +1 -0
  197. package/esm2022/lib/core/theme/theme.service.js +84 -0
  198. package/esm2022/lib/core/theme/theme.service.js.map +1 -0
  199. package/esm2022/lib/core/validation/validators.js +53 -0
  200. package/esm2022/lib/core/validation/validators.js.map +1 -0
  201. package/esm2022/vortex-ui.js +5 -0
  202. package/esm2022/vortex-ui.js.map +1 -0
  203. package/index.d.ts +2 -0
  204. package/lib/components/accordion/accordion.component.d.ts +19 -0
  205. package/lib/components/action-sheet/action-sheet.component.d.ts +18 -0
  206. package/lib/components/autocomplete/autocomplete.component.d.ts +14 -0
  207. package/lib/components/box/box.component.d.ts +16 -0
  208. package/lib/components/bullet/bullet.component.d.ts +15 -0
  209. package/lib/components/button/button.component.d.ts +13 -0
  210. package/lib/components/button-group/button-group.component.d.ts +10 -0
  211. package/lib/components/calendar/calendar.component.d.ts +19 -0
  212. package/lib/components/card/card.component.d.ts +10 -0
  213. package/lib/components/card-view/card-view.component.d.ts +31 -0
  214. package/lib/components/chart/chart.component.d.ts +85 -0
  215. package/lib/components/chat/chat.component.d.ts +18 -0
  216. package/lib/components/checkbox/checkbox.component.d.ts +9 -0
  217. package/lib/components/color-box/color-box.component.d.ts +9 -0
  218. package/lib/components/context-menu/context-menu.component.d.ts +18 -0
  219. package/lib/components/data-grid/data-grid.component.d.ts +162 -0
  220. package/lib/components/data-grid/data-grid.types.d.ts +51 -0
  221. package/lib/components/data-grid/data-source.d.ts +41 -0
  222. package/lib/components/data-grid/export-csv.d.ts +3 -0
  223. package/lib/components/date-box/date-box.component.d.ts +14 -0
  224. package/lib/components/date-range-box/date-range-box.component.d.ts +16 -0
  225. package/lib/components/diagram/diagram.component.d.ts +30 -0
  226. package/lib/components/dialog/dialog.component.d.ts +19 -0
  227. package/lib/components/drawer/drawer.component.d.ts +16 -0
  228. package/lib/components/drop-down-button/drop-down-button.component.d.ts +11 -0
  229. package/lib/components/fab/fab.component.d.ts +10 -0
  230. package/lib/components/field-set/field-set.component.d.ts +7 -0
  231. package/lib/components/file-manager/file-manager.component.d.ts +86 -0
  232. package/lib/components/file-manager/file-manager.types.d.ts +33 -0
  233. package/lib/components/file-uploader/file-uploader.component.d.ts +12 -0
  234. package/lib/components/filter-builder/filter-builder.component.d.ts +38 -0
  235. package/lib/components/form/form.component.d.ts +9 -0
  236. package/lib/components/funnel/funnel.component.d.ts +21 -0
  237. package/lib/components/gallery/gallery.component.d.ts +15 -0
  238. package/lib/components/gantt/gantt.component.d.ts +29 -0
  239. package/lib/components/gauge/bar-gauge.component.d.ts +19 -0
  240. package/lib/components/gauge/circular-gauge.component.d.ts +12 -0
  241. package/lib/components/gauge/linear-gauge.component.d.ts +10 -0
  242. package/lib/components/html-editor/html-editor.component.d.ts +22 -0
  243. package/lib/components/index.d.ts +72 -0
  244. package/lib/components/list/list.component.d.ts +23 -0
  245. package/lib/components/load-panel/load-panel.component.d.ts +8 -0
  246. package/lib/components/lookup/lookup.component.d.ts +18 -0
  247. package/lib/components/map/map.component.d.ts +19 -0
  248. package/lib/components/map/vector-map.component.d.ts +16 -0
  249. package/lib/components/menu/menu.component.d.ts +17 -0
  250. package/lib/components/multi-view/multi-view.component.d.ts +16 -0
  251. package/lib/components/number-box/number-box.component.d.ts +12 -0
  252. package/lib/components/pagination/pagination.component.d.ts +12 -0
  253. package/lib/components/pivot-grid/pivot-field-chooser.component.d.ts +28 -0
  254. package/lib/components/pivot-grid/pivot-grid.component.d.ts +14 -0
  255. package/lib/components/popover/popover.component.d.ts +8 -0
  256. package/lib/components/progress/index.d.ts +2 -0
  257. package/lib/components/progress/load-indicator.component.d.ts +8 -0
  258. package/lib/components/progress/progress-bar.component.d.ts +10 -0
  259. package/lib/components/radio-group/radio-group.component.d.ts +11 -0
  260. package/lib/components/range-slider/range-slider.component.d.ts +18 -0
  261. package/lib/components/sankey/sankey.component.d.ts +34 -0
  262. package/lib/components/scheduler/scheduler.component.d.ts +55 -0
  263. package/lib/components/scroll-view/scroll-view.component.d.ts +8 -0
  264. package/lib/components/select-box/select-box.component.d.ts +20 -0
  265. package/lib/components/slider/slider.component.d.ts +14 -0
  266. package/lib/components/sparkline/sparkline.component.d.ts +13 -0
  267. package/lib/components/splitter/splitter.component.d.ts +13 -0
  268. package/lib/components/stepper/stepper.component.d.ts +18 -0
  269. package/lib/components/switch/switch.component.d.ts +9 -0
  270. package/lib/components/tabs/tabs.component.d.ts +28 -0
  271. package/lib/components/tag-box/tag-box.component.d.ts +13 -0
  272. package/lib/components/text-area/text-area.component.d.ts +11 -0
  273. package/lib/components/text-box/text-box.component.d.ts +13 -0
  274. package/lib/components/tile-view/tile-view.component.d.ts +13 -0
  275. package/lib/components/toast/index.d.ts +2 -0
  276. package/lib/components/toast/toast-outlet.component.d.ts +7 -0
  277. package/lib/components/toast/toast.service.d.ts +22 -0
  278. package/lib/components/toolbar/toolbar.component.d.ts +6 -0
  279. package/lib/components/tooltip/tooltip.component.d.ts +6 -0
  280. package/lib/components/tree-list/tree-list.component.d.ts +35 -0
  281. package/lib/components/tree-map/tree-map.component.d.ts +24 -0
  282. package/lib/components/tree-view/tree-view.component.d.ts +30 -0
  283. package/lib/components/validation/validation-summary.component.d.ts +7 -0
  284. package/lib/components/wrappers/draggable.component.d.ts +15 -0
  285. package/lib/components/wrappers/index.d.ts +3 -0
  286. package/lib/components/wrappers/resizable.component.d.ts +16 -0
  287. package/lib/components/wrappers/sortable.component.d.ts +18 -0
  288. package/lib/core/index.d.ts +2 -0
  289. package/lib/core/theme/theme.service.d.ts +33 -0
  290. package/lib/core/validation/validators.d.ts +12 -0
  291. package/package.json +58 -4
  292. package/src/lib/core/tokens/design-tokens.css +71 -0
  293. package/src/lib/styles/themes/dark.css +50 -0
  294. package/src/lib/styles/themes/fluent-blue-dark.css +77 -0
  295. package/src/lib/styles/themes/fluent-blue-light.css +79 -0
  296. package/src/lib/styles/themes/fluent-saas-dark.css +77 -0
  297. package/src/lib/styles/themes/fluent-saas-light.css +77 -0
  298. package/src/lib/styles/themes/fluent.css +5 -0
  299. package/src/lib/styles/themes/lds.css +78 -0
  300. package/src/lib/styles/themes/light.css +60 -0
  301. package/src/lib/styles/themes/material.css +55 -0
  302. package/src/lib/styles/vortex-ui.css +20 -0
  303. package/vortex-ui.d.ts +5 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Joel Schecheleski
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the Software), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,256 @@
1
- # Temporary Holding Version
1
+ # VortexUI
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ **Angular 22+ component suite** — Standalone, Signals-first, zoneless-ready.
4
+ DataGrid de alta performance, File Manager, Charts, Scheduler, AI opt-in e temas Fluent / LDS.
5
+
6
+ [![npm](https://img.shields.io/npm/v/@joel_jsp/vortex-ui.svg)](https://www.npmjs.com/package/@joel_jsp/vortex-ui)
7
+ [![license](https://img.shields.io/npm/l/@joel_jsp/vortex-ui.svg)](./LICENSE)
8
+ [![Angular](https://img.shields.io/badge/Angular-22%2B-dd0031)](https://angular.dev/)
9
+
10
+ 📦 **npm:** [`@joel_jsp/vortex-ui`](https://www.npmjs.com/package/@joel_jsp/vortex-ui)
11
+ 📂 **GitHub:** [JoelSchecheleski/vortex-ui](https://github.com/JoelSchecheleski/vortex-ui)
12
+
13
+ ---
14
+
15
+ ## Por que VortexUI?
16
+
17
+ | Diferencial | Detalhe |
18
+ |-------------|---------|
19
+ | **Angular nativo** | 100% Standalone + `input()` / `model()` / `output()` / `signal` / `computed` |
20
+ | **Zoneless** | `OnPush` e compatível com apps sem Zone.js |
21
+ | **DataGrid** | Virtualização, remote DataSource (1M+ rows), sort/filter/group/edit/export |
22
+ | **AI opt-in** | Assistant + AI Columns via entry separado `@joel_jsp/vortex-ui/ai` |
23
+ | **Temas** | Design tokens `--vx-*` · Fluent Blue/SaaS (Light/Dark) · LDS |
24
+ | **Tree-shakeable** | Importe só o que usa; CSS e AI não entram no bundle se não forem referenciados |
25
+
26
+ Inspirado na superfície de produto DevExtreme — **implementação própria**, MIT.
27
+
28
+ ---
29
+
30
+ ## Install
31
+
32
+ ```bash
33
+ npm install @joel_jsp/vortex-ui
34
+ ```
35
+
36
+ **Peers:** `@angular/core`, `@angular/common`, `@angular/forms` ^22.
37
+
38
+ ---
39
+
40
+ ## Setup rápido (3 passos)
41
+
42
+ ### 1. Estilos (uma vez no app)
43
+
44
+ No `styles` do `angular.json` / `project.json`, ou no CSS global:
45
+
46
+ ```css
47
+ @import '@joel_jsp/vortex-ui/styles/vortex-ui.css';
48
+ ```
49
+
50
+ ### 2. Tema
51
+
52
+ ```ts
53
+ import { inject, ApplicationConfig, provideAppInitializer } from '@angular/core';
54
+ import { VortexThemeService } from '@joel_jsp/vortex-ui';
55
+
56
+ export const appConfig: ApplicationConfig = {
57
+ providers: [
58
+ provideAppInitializer(() => {
59
+ inject(VortexThemeService).setTheme('fluent-blue-light');
60
+ }),
61
+ ],
62
+ };
63
+ ```
64
+
65
+ Ou em qualquer componente:
66
+
67
+ ```ts
68
+ inject(VortexThemeService).setTheme('fluent-saas-dark');
69
+ ```
70
+
71
+ ### 3. Use um componente
72
+
73
+ ```ts
74
+ import { Component } from '@angular/core';
75
+ import { VxButtonComponent, VxDataGridComponent, VxColumnDef } from '@joel_jsp/vortex-ui';
76
+
77
+ @Component({
78
+ standalone: true,
79
+ imports: [VxButtonComponent, VxDataGridComponent],
80
+ template: `
81
+ <vx-button variant="primary">Salvar</vx-button>
82
+
83
+ <vx-data-grid
84
+ [columns]="columns"
85
+ [data]="rows"
86
+ [rowHeight]="36"
87
+ [virtualScroll]="true"
88
+ />
89
+ `,
90
+ })
91
+ export class DemoPage {
92
+ readonly columns: VxColumnDef[] = [
93
+ { field: 'id', header: 'ID', width: 72 },
94
+ { field: 'product', header: 'Produto' }, // fluida (preenche o grid)
95
+ { field: 'region', header: 'Região', minWidth: 100 },
96
+ ];
97
+ readonly rows = [
98
+ { id: 1, product: 'SolarMax', region: 'África' },
99
+ { id: 2, product: 'EcoCharge', region: 'Europa' },
100
+ ];
101
+ }
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Temas
107
+
108
+ Aplique via `data-vx-theme` (feito automaticamente pelo `VortexThemeService`):
109
+
110
+ | ID | Descrição |
111
+ |----|-----------|
112
+ | `fluent-blue-light` | **Default** (alias `fluent`) |
113
+ | `fluent-blue-dark` | Fluent Blue Dark |
114
+ | `fluent-saas-light` | Fluent SaaS Light |
115
+ | `fluent-saas-dark` | Fluent SaaS Dark |
116
+ | `lds` | LDS (Poppins + guideline interno) |
117
+
118
+ ```ts
119
+ import { VortexThemeService, VORTEX_THEMES, VORTEX_THEME_LABELS } from '@joel_jsp/vortex-ui';
120
+
121
+ const themes = inject(VortexThemeService);
122
+ themes.setTheme('lds');
123
+ themes.toggleTheme(); // cicla pelos oficiais
124
+ ```
125
+
126
+ Componentes usam **somente** tokens `--vx-*` (sem hex hardcoded no core).
127
+
128
+ ---
129
+
130
+ ## AI (opt-in)
131
+
132
+ A IA **não** entra no bundle principal. Use o secondary entry:
133
+
134
+ ```ts
135
+ import {
136
+ VortexAIConfig,
137
+ VortexMockAIIntegration,
138
+ } from '@joel_jsp/vortex-ui/ai';
139
+ ```
140
+
141
+ ```ts
142
+ readonly aiConfig: VortexAIConfig = {
143
+ enabled: true,
144
+ assistant: { enabled: true, title: 'AI Assistant' },
145
+ contextFields: ['id', 'product', 'region'],
146
+ maxRowsInContext: 50,
147
+ };
148
+
149
+ readonly ai = new VortexMockAIIntegration();
150
+ ```
151
+
152
+ ```html
153
+ <vx-data-grid
154
+ [columns]="columns"
155
+ [data]="rows"
156
+ [ai]="aiConfig"
157
+ [aiIntegration]="ai"
158
+ />
159
+ ```
160
+
161
+ - Deny by default (`ai.enabled = false`)
162
+ - Contexto tipado (não lê o DOM)
163
+ - Command bus / allowlist de ações
164
+ - Pluggable: troque o mock por OpenAI, Azure, modelo local, etc.
165
+
166
+ ---
167
+
168
+ ## Catálogo (v0.1)
169
+
170
+ ### Data & grids
171
+ `vx-data-grid` · `vx-tree-list` · `vx-card-view` · `vx-pivot-grid` · `vx-pivot-field-chooser` · `vx-filter-builder` · `vx-list`
172
+
173
+ ### Forms & editors
174
+ `vx-form` · `vx-text-box` · `vx-text-area` · `vx-number-box` · `vx-select-box` · `vx-date-box` · `vx-date-range-box` · `vx-checkbox` · `vx-switch` · `vx-radio-group` · `vx-slider` · `vx-range-slider` · `vx-color-box` · `vx-tag-box` · `vx-autocomplete` · `vx-lookup` · `vx-calendar` · `vx-field-set` · validation summary
175
+
176
+ ### Buttons & actions
177
+ `vx-button` · `vx-button-group` · `vx-drop-down-button` · `vx-fab`
178
+
179
+ ### Navigation & layout
180
+ `vx-tabs` · `vx-accordion` · `vx-drawer` · `vx-menu` · `vx-tree-view` · `vx-splitter` · `vx-stepper` · `vx-toolbar` · `vx-box` · `vx-multi-view` · `vx-pagination` · `vx-gallery` · `vx-tile-view` · `vx-scroll-view`
181
+
182
+ ### Feedback & overlays
183
+ `vx-dialog` · `vx-toast` · `vx-load-panel` · `vx-tooltip` · `vx-popover` · `vx-context-menu` · `vx-action-sheet` · progress / load-indicator
184
+
185
+ ### Visualization
186
+ `vx-chart` (bar/line/area/pie/funnel/polar) · `vx-sparkline` · `vx-bullet` · `vx-funnel` · `vx-tree-map` · `vx-sankey` · gauges · `vx-diagram`
187
+
188
+ ### Scheduling & files
189
+ `vx-scheduler` (day/week/month) · `vx-gantt` · `vx-file-manager` · `vx-file-uploader`
190
+
191
+ ### Messaging & maps
192
+ `vx-chat` · `vx-html-editor` · `vx-map` · `vx-vector-map`
193
+
194
+ ### Wrappers
195
+ `vx-draggable` · `vx-sortable` · `vx-resizable`
196
+
197
+ > Maturidade atual: **M0–M1** na maior parte da Super Suite; DataGrid / temas / AI Foundation mais avançados. Roadmap no [PRD](https://github.com/JoelSchecheleski/vortex-ui/blob/main/VortexUI-PRD.md).
198
+
199
+ ---
200
+
201
+ ## DataGrid — tips
202
+
203
+ ```html
204
+ <vx-data-grid
205
+ [columns]="columns"
206
+ [data]="rows"
207
+ [dataSource]="remoteSource"
208
+ [virtualScroll]="true"
209
+ [editable]="true"
210
+ [exportEnabled]="true"
211
+ (cellEdit)="onEdit($event)"
212
+ />
213
+ ```
214
+
215
+ - **Sem `width`** → coluna fluida (reparte o espaço do container, estilo DX)
216
+ - **Com `width`** → fixa; use `minWidth` nas fluidas
217
+ - Remote: implemente `VxDataSource` / use `VxRemoteMockDataSource` nos demos
218
+ - Export CSV nativo na toolbar
219
+
220
+ ---
221
+
222
+ ## Entries do pacote
223
+
224
+ | Import | Conteúdo |
225
+ |--------|----------|
226
+ | `@joel_jsp/vortex-ui` | Componentes + theme + validators |
227
+ | `@joel_jsp/vortex-ui/ai` | AI Bridge, dialogs, mock integration |
228
+ | `@joel_jsp/vortex-ui/styles/vortex-ui.css` | Tokens + temas oficiais |
229
+
230
+ ---
231
+
232
+ ## Requisitos
233
+
234
+ - Node 20+ recomendado
235
+ - Angular **22+**
236
+ - TypeScript 5.x
237
+
238
+ ---
239
+
240
+ ## Desenvolvimento (monorepo)
241
+
242
+ ```bash
243
+ git clone https://github.com/JoelSchecheleski/vortex-ui.git
244
+ cd vortex-ui
245
+ npm install
246
+ npm start # Widgets Gallery → http://localhost:4200
247
+ npm run storybook # Storybook
248
+ npm run build # build da lib
249
+ npm run prepare:npm # artefato em dist/libs/vortex-ui
250
+ ```
251
+
252
+ ---
253
+
254
+ ## License
255
+
256
+ MIT © [Joel Schecheleski](https://github.com/JoelSchecheleski)
package/ai/README.md ADDED
@@ -0,0 +1,18 @@
1
+ # vortex-ui/ai
2
+
3
+ Secondary entry point for VortexUI AI Foundation.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ import {
9
+ VortexAIIntegration,
10
+ VortexMockAIIntegration,
11
+ VxAiAssistantDialogComponent,
12
+ VxAiPromptEditorComponent,
13
+ } from 'vortex-ui/ai';
14
+ // monorepo alias:
15
+ // import { ... } from '@vortex-ui/ai';
16
+ ```
17
+
18
+ Keep this entry opt-in: apps that never enable AI should import only from `vortex-ui`.
@@ -0,0 +1,25 @@
1
+ import { VortexAIMessage, VortexAISuggestion } from './ai.types';
2
+ import * as i0 from "@angular/core";
3
+ export interface VxAIChatMessage extends VortexAIMessage {
4
+ title?: string;
5
+ }
6
+ export declare class VxAIAssistantDialogComponent {
7
+ readonly open: import("@angular/core").ModelSignal<boolean>;
8
+ readonly title: import("@angular/core").InputSignal<string>;
9
+ readonly placeholder: import("@angular/core").InputSignal<string>;
10
+ readonly messages: import("@angular/core").InputSignal<VxAIChatMessage[]>;
11
+ readonly suggestions: import("@angular/core").InputSignal<VortexAISuggestion[]>;
12
+ readonly busy: import("@angular/core").InputSignal<boolean>;
13
+ readonly sendMessage: import("@angular/core").OutputEmitterRef<string>;
14
+ readonly suggestionSelect: import("@angular/core").OutputEmitterRef<VortexAISuggestion>;
15
+ readonly clear: import("@angular/core").OutputEmitterRef<void>;
16
+ readonly closed: import("@angular/core").OutputEmitterRef<void>;
17
+ draft: string;
18
+ close(): void;
19
+ onOverlayClick(_: MouseEvent): void;
20
+ onEnter(event: Event): void;
21
+ send(): void;
22
+ onSuggestion(s: VortexAISuggestion): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<VxAIAssistantDialogComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<VxAIAssistantDialogComponent, "vx-ai-assistant-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "sendMessage": "sendMessage"; "suggestionSelect": "suggestionSelect"; "clear": "clear"; "closed": "closed"; }, never, never, true, never>;
25
+ }
@@ -0,0 +1,14 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class VxAIPromptEditorComponent {
3
+ readonly open: import("@angular/core").ModelSignal<boolean>;
4
+ readonly title: import("@angular/core").InputSignal<string>;
5
+ readonly placeholder: import("@angular/core").InputSignal<string>;
6
+ readonly prompt: import("@angular/core").ModelSignal<string>;
7
+ readonly canApply: import("@angular/core").InputSignal<boolean>;
8
+ readonly regenerate: import("@angular/core").OutputEmitterRef<string>;
9
+ readonly apply: import("@angular/core").OutputEmitterRef<string>;
10
+ readonly closed: import("@angular/core").OutputEmitterRef<void>;
11
+ close(): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<VxAIPromptEditorComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<VxAIPromptEditorComponent, "vx-ai-prompt-editor", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "prompt": { "alias": "prompt"; "required": false; "isSignal": true; }; "canApply": { "alias": "canApply"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "prompt": "promptChange"; "regenerate": "regenerate"; "apply": "apply"; "closed": "closed"; }, never, never, true, never>;
14
+ }
@@ -0,0 +1,109 @@
1
+ /** Config opt-in por componente (deny by default). */
2
+ export interface VortexAIConfig {
3
+ enabled?: boolean;
4
+ assistant?: {
5
+ enabled?: boolean;
6
+ title?: string;
7
+ };
8
+ /** Campos permitidos no contexto enviado ao modelo (R2). */
9
+ contextFields?: string[];
10
+ /** Cap de linhas no contexto (R3). Default: 100. */
11
+ maxRowsInContext?: number;
12
+ }
13
+ export interface VortexAIMessage {
14
+ role: 'user' | 'assistant' | 'system';
15
+ content: string;
16
+ }
17
+ export interface VortexAIContext {
18
+ schemaVersion: 1;
19
+ componentType: string;
20
+ columns?: Array<{
21
+ field: string;
22
+ header: string;
23
+ }>;
24
+ sort?: {
25
+ field: string;
26
+ direction: 'asc' | 'desc';
27
+ } | null;
28
+ filter?: VortexAIFilterState | null;
29
+ /** Linhas já projetadas (só campos allowlist). */
30
+ rows?: Record<string, unknown>[];
31
+ totalRows?: number;
32
+ meta?: Record<string, unknown>;
33
+ }
34
+ export interface VortexAIFilterState {
35
+ field: string;
36
+ value: string;
37
+ operator?: 'contains' | 'equals';
38
+ }
39
+ export interface VortexAIToolDefinition {
40
+ name: string;
41
+ description: string;
42
+ parameters?: Record<string, unknown>;
43
+ }
44
+ export interface VortexAIRequest {
45
+ feature: 'assistant' | 'ai-column' | 'smart-paste' | 'semantic-search' | 'editor' | string;
46
+ componentType: string;
47
+ componentId?: string;
48
+ messages?: VortexAIMessage[];
49
+ prompt?: string;
50
+ context: VortexAIContext;
51
+ tools?: VortexAIToolDefinition[];
52
+ signal?: AbortSignal;
53
+ }
54
+ export interface VortexAICommand {
55
+ type: string;
56
+ payload?: Record<string, unknown>;
57
+ }
58
+ export interface VortexAIResponse {
59
+ title?: string;
60
+ text: string;
61
+ commands?: VortexAICommand[];
62
+ /** Resultados estruturados (ex.: AI Column cells). */
63
+ data?: {
64
+ cells?: Array<{
65
+ rowKey: string;
66
+ value: string;
67
+ }>;
68
+ };
69
+ }
70
+ export type VortexAIStreamEvent = {
71
+ type: 'token';
72
+ text: string;
73
+ } | {
74
+ type: 'command';
75
+ command: VortexAICommand;
76
+ } | {
77
+ type: 'done';
78
+ response: VortexAIResponse;
79
+ };
80
+ export interface VortexAISuggestion {
81
+ id: string;
82
+ label: string;
83
+ /** Prompt enviado ao adapter se não houver command direto. */
84
+ prompt?: string;
85
+ command?: VortexAICommand;
86
+ }
87
+ export interface VortexAIRequestCreatingEvent {
88
+ request: VortexAIRequest;
89
+ cancel: boolean;
90
+ }
91
+ export interface VortexAIPrivacyPolicy {
92
+ contextFields?: string[];
93
+ maxRowsInContext?: number;
94
+ }
95
+ export interface VortexAICommandSpec {
96
+ type: string;
97
+ description: string;
98
+ }
99
+ export interface VortexAICapability {
100
+ componentType: string;
101
+ commands: VortexAICommandSpec[];
102
+ projectContext(state: unknown, policy: VortexAIPrivacyPolicy): VortexAIContext;
103
+ execute(command: VortexAICommand): void | Promise<void>;
104
+ suggest?(state: unknown): VortexAISuggestion[];
105
+ }
106
+ export interface VortexAIIntegration {
107
+ sendRequest(req: VortexAIRequest): Promise<VortexAIResponse>;
108
+ stream?(req: VortexAIRequest): AsyncIterable<VortexAIStreamEvent>;
109
+ }
@@ -0,0 +1,3 @@
1
+ import { VortexAIContext, VortexAIPrivacyPolicy } from './ai.types';
2
+ export declare function projectRowsForAI(rows: Record<string, unknown>[], policy: VortexAIPrivacyPolicy): Record<string, unknown>[];
3
+ export declare function emptyAIContext(componentType: string): VortexAIContext;
package/ai/index.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Secondary entry: `vortex-ui/ai` (alias monorepo `@vortex-ui/ai`).
3
+ */
4
+ export * from './ai.types';
5
+ export * from './ai.utils';
6
+ export * from './mock-ai-integration';
7
+ export * from './ai-assistant-dialog.component';
8
+ export * from './ai-prompt-editor.component';
@@ -0,0 +1,8 @@
1
+ import { VortexAIIntegration, VortexAIRequest, VortexAIResponse } from './ai.types';
2
+ /**
3
+ * Adapter local sem LLM — interpreta intents simples (PT/EN)
4
+ * e devolve commands tipados da allowlist do DataGrid.
5
+ */
6
+ export declare class VortexMockAIIntegration implements VortexAIIntegration {
7
+ sendRequest(req: VortexAIRequest): Promise<VortexAIResponse>;
8
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="vortex-ui/ai" />
5
+ export * from './index';