@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.
- package/LICENSE +21 -0
- package/README.md +255 -2
- package/ai/README.md +18 -0
- package/ai/ai-assistant-dialog.component.d.ts +25 -0
- package/ai/ai-prompt-editor.component.d.ts +14 -0
- package/ai/ai.types.d.ts +109 -0
- package/ai/ai.utils.d.ts +3 -0
- package/ai/index.d.ts +8 -0
- package/ai/mock-ai-integration.d.ts +8 -0
- package/ai/vortex-ui-ai.d.ts +5 -0
- package/esm2022/ai/ai-assistant-dialog.component.js +226 -0
- package/esm2022/ai/ai-assistant-dialog.component.js.map +1 -0
- package/esm2022/ai/ai-prompt-editor.component.js +112 -0
- package/esm2022/ai/ai-prompt-editor.component.js.map +1 -0
- package/esm2022/ai/ai.types.js +2 -0
- package/esm2022/ai/ai.types.js.map +1 -0
- package/esm2022/ai/ai.utils.js +24 -0
- package/esm2022/ai/ai.utils.js.map +1 -0
- package/esm2022/ai/index.js +9 -0
- package/esm2022/ai/index.js.map +1 -0
- package/esm2022/ai/mock-ai-integration.js +169 -0
- package/esm2022/ai/mock-ai-integration.js.map +1 -0
- package/esm2022/ai/vortex-ui-ai.js +5 -0
- package/esm2022/ai/vortex-ui-ai.js.map +1 -0
- package/esm2022/index.js +4 -0
- package/esm2022/index.js.map +1 -0
- package/esm2022/lib/components/accordion/accordion.component.js +104 -0
- package/esm2022/lib/components/accordion/accordion.component.js.map +1 -0
- package/esm2022/lib/components/action-sheet/action-sheet.component.js +91 -0
- package/esm2022/lib/components/action-sheet/action-sheet.component.js.map +1 -0
- package/esm2022/lib/components/autocomplete/autocomplete.component.js +79 -0
- package/esm2022/lib/components/autocomplete/autocomplete.component.js.map +1 -0
- package/esm2022/lib/components/box/box.component.js +49 -0
- package/esm2022/lib/components/box/box.component.js.map +1 -0
- package/esm2022/lib/components/bullet/bullet.component.js +74 -0
- package/esm2022/lib/components/bullet/bullet.component.js.map +1 -0
- package/esm2022/lib/components/button/button.component.js +57 -0
- package/esm2022/lib/components/button/button.component.js.map +1 -0
- package/esm2022/lib/components/button-group/button-group.component.js +48 -0
- package/esm2022/lib/components/button-group/button-group.component.js.map +1 -0
- package/esm2022/lib/components/calendar/calendar.component.js +104 -0
- package/esm2022/lib/components/calendar/calendar.component.js.map +1 -0
- package/esm2022/lib/components/card/card.component.js +52 -0
- package/esm2022/lib/components/card/card.component.js.map +1 -0
- package/esm2022/lib/components/card-view/card-view.component.js +160 -0
- package/esm2022/lib/components/card-view/card-view.component.js.map +1 -0
- package/esm2022/lib/components/chart/chart.component.js +471 -0
- package/esm2022/lib/components/chart/chart.component.js.map +1 -0
- package/esm2022/lib/components/chat/chat.component.js +75 -0
- package/esm2022/lib/components/chat/chat.component.js.map +1 -0
- package/esm2022/lib/components/checkbox/checkbox.component.js +48 -0
- package/esm2022/lib/components/checkbox/checkbox.component.js.map +1 -0
- package/esm2022/lib/components/color-box/color-box.component.js +36 -0
- package/esm2022/lib/components/color-box/color-box.component.js.map +1 -0
- package/esm2022/lib/components/context-menu/context-menu.component.js +76 -0
- package/esm2022/lib/components/context-menu/context-menu.component.js.map +1 -0
- package/esm2022/lib/components/data-grid/data-grid.component.js +1203 -0
- package/esm2022/lib/components/data-grid/data-grid.component.js.map +1 -0
- package/esm2022/lib/components/data-grid/data-grid.types.js +2 -0
- package/esm2022/lib/components/data-grid/data-grid.types.js.map +1 -0
- package/esm2022/lib/components/data-grid/data-source.js +121 -0
- package/esm2022/lib/components/data-grid/data-source.js.map +1 -0
- package/esm2022/lib/components/data-grid/export-csv.js +28 -0
- package/esm2022/lib/components/data-grid/export-csv.js.map +1 -0
- package/esm2022/lib/components/date-box/date-box.component.js +67 -0
- package/esm2022/lib/components/date-box/date-box.component.js.map +1 -0
- package/esm2022/lib/components/date-range-box/date-range-box.component.js +48 -0
- package/esm2022/lib/components/date-range-box/date-range-box.component.js.map +1 -0
- package/esm2022/lib/components/diagram/diagram.component.js +103 -0
- package/esm2022/lib/components/diagram/diagram.component.js.map +1 -0
- package/esm2022/lib/components/dialog/dialog.component.js +93 -0
- package/esm2022/lib/components/dialog/dialog.component.js.map +1 -0
- package/esm2022/lib/components/drawer/drawer.component.js +98 -0
- package/esm2022/lib/components/drawer/drawer.component.js.map +1 -0
- package/esm2022/lib/components/drop-down-button/drop-down-button.component.js +71 -0
- package/esm2022/lib/components/drop-down-button/drop-down-button.component.js.map +1 -0
- package/esm2022/lib/components/fab/fab.component.js +46 -0
- package/esm2022/lib/components/fab/fab.component.js.map +1 -0
- package/esm2022/lib/components/field-set/field-set.component.js +25 -0
- package/esm2022/lib/components/field-set/field-set.component.js.map +1 -0
- package/esm2022/lib/components/file-manager/file-manager.component.js +862 -0
- package/esm2022/lib/components/file-manager/file-manager.component.js.map +1 -0
- package/esm2022/lib/components/file-manager/file-manager.types.js +2 -0
- package/esm2022/lib/components/file-manager/file-manager.types.js.map +1 -0
- package/esm2022/lib/components/file-uploader/file-uploader.component.js +43 -0
- package/esm2022/lib/components/file-uploader/file-uploader.component.js.map +1 -0
- package/esm2022/lib/components/filter-builder/filter-builder.component.js +261 -0
- package/esm2022/lib/components/filter-builder/filter-builder.component.js.map +1 -0
- package/esm2022/lib/components/form/form.component.js +54 -0
- package/esm2022/lib/components/form/form.component.js.map +1 -0
- package/esm2022/lib/components/funnel/funnel.component.js +85 -0
- package/esm2022/lib/components/funnel/funnel.component.js.map +1 -0
- package/esm2022/lib/components/gallery/gallery.component.js +54 -0
- package/esm2022/lib/components/gallery/gallery.component.js.map +1 -0
- package/esm2022/lib/components/gantt/gantt.component.js +130 -0
- package/esm2022/lib/components/gantt/gantt.component.js.map +1 -0
- package/esm2022/lib/components/gauge/bar-gauge.component.js +59 -0
- package/esm2022/lib/components/gauge/bar-gauge.component.js.map +1 -0
- package/esm2022/lib/components/gauge/circular-gauge.component.js +68 -0
- package/esm2022/lib/components/gauge/circular-gauge.component.js.map +1 -0
- package/esm2022/lib/components/gauge/linear-gauge.component.js +54 -0
- package/esm2022/lib/components/gauge/linear-gauge.component.js.map +1 -0
- package/esm2022/lib/components/html-editor/html-editor.component.js +186 -0
- package/esm2022/lib/components/html-editor/html-editor.component.js.map +1 -0
- package/esm2022/lib/components/index.js +73 -0
- package/esm2022/lib/components/index.js.map +1 -0
- package/esm2022/lib/components/list/list.component.js +121 -0
- package/esm2022/lib/components/list/list.component.js.map +1 -0
- package/esm2022/lib/components/load-panel/load-panel.component.js +31 -0
- package/esm2022/lib/components/load-panel/load-panel.component.js.map +1 -0
- package/esm2022/lib/components/lookup/lookup.component.js +66 -0
- package/esm2022/lib/components/lookup/lookup.component.js.map +1 -0
- package/esm2022/lib/components/map/map.component.js +73 -0
- package/esm2022/lib/components/map/map.component.js.map +1 -0
- package/esm2022/lib/components/map/vector-map.component.js +47 -0
- package/esm2022/lib/components/map/vector-map.component.js.map +1 -0
- package/esm2022/lib/components/menu/menu.component.js +107 -0
- package/esm2022/lib/components/menu/menu.component.js.map +1 -0
- package/esm2022/lib/components/multi-view/multi-view.component.js +82 -0
- package/esm2022/lib/components/multi-view/multi-view.component.js.map +1 -0
- package/esm2022/lib/components/number-box/number-box.component.js +57 -0
- package/esm2022/lib/components/number-box/number-box.component.js.map +1 -0
- package/esm2022/lib/components/pagination/pagination.component.js +62 -0
- package/esm2022/lib/components/pagination/pagination.component.js.map +1 -0
- package/esm2022/lib/components/pivot-grid/pivot-field-chooser.component.js +60 -0
- package/esm2022/lib/components/pivot-grid/pivot-field-chooser.component.js.map +1 -0
- package/esm2022/lib/components/pivot-grid/pivot-grid.component.js +102 -0
- package/esm2022/lib/components/pivot-grid/pivot-grid.component.js.map +1 -0
- package/esm2022/lib/components/popover/popover.component.js +42 -0
- package/esm2022/lib/components/popover/popover.component.js.map +1 -0
- package/esm2022/lib/components/progress/index.js +3 -0
- package/esm2022/lib/components/progress/index.js.map +1 -0
- package/esm2022/lib/components/progress/load-indicator.component.js +33 -0
- package/esm2022/lib/components/progress/load-indicator.component.js.map +1 -0
- package/esm2022/lib/components/progress/progress-bar.component.js +63 -0
- package/esm2022/lib/components/progress/progress-bar.component.js.map +1 -0
- package/esm2022/lib/components/radio-group/radio-group.component.js +42 -0
- package/esm2022/lib/components/radio-group/radio-group.component.js.map +1 -0
- package/esm2022/lib/components/range-slider/range-slider.component.js +60 -0
- package/esm2022/lib/components/range-slider/range-slider.component.js.map +1 -0
- package/esm2022/lib/components/sankey/sankey.component.js +97 -0
- package/esm2022/lib/components/sankey/sankey.component.js.map +1 -0
- package/esm2022/lib/components/scheduler/scheduler.component.js +377 -0
- package/esm2022/lib/components/scheduler/scheduler.component.js.map +1 -0
- package/esm2022/lib/components/scroll-view/scroll-view.component.js +25 -0
- package/esm2022/lib/components/scroll-view/scroll-view.component.js.map +1 -0
- package/esm2022/lib/components/select-box/select-box.component.js +77 -0
- package/esm2022/lib/components/select-box/select-box.component.js.map +1 -0
- package/esm2022/lib/components/slider/slider.component.js +59 -0
- package/esm2022/lib/components/slider/slider.component.js.map +1 -0
- package/esm2022/lib/components/sparkline/sparkline.component.js +95 -0
- package/esm2022/lib/components/sparkline/sparkline.component.js.map +1 -0
- package/esm2022/lib/components/splitter/splitter.component.js +123 -0
- package/esm2022/lib/components/splitter/splitter.component.js.map +1 -0
- package/esm2022/lib/components/stepper/stepper.component.js +120 -0
- package/esm2022/lib/components/stepper/stepper.component.js.map +1 -0
- package/esm2022/lib/components/switch/switch.component.js +54 -0
- package/esm2022/lib/components/switch/switch.component.js.map +1 -0
- package/esm2022/lib/components/tabs/tabs.component.js +118 -0
- package/esm2022/lib/components/tabs/tabs.component.js.map +1 -0
- package/esm2022/lib/components/tag-box/tag-box.component.js +75 -0
- package/esm2022/lib/components/tag-box/tag-box.component.js.map +1 -0
- package/esm2022/lib/components/text-area/text-area.component.js +50 -0
- package/esm2022/lib/components/text-area/text-area.component.js.map +1 -0
- package/esm2022/lib/components/text-box/text-box.component.js +64 -0
- package/esm2022/lib/components/text-box/text-box.component.js.map +1 -0
- package/esm2022/lib/components/tile-view/tile-view.component.js +34 -0
- package/esm2022/lib/components/tile-view/tile-view.component.js.map +1 -0
- package/esm2022/lib/components/toast/index.js +3 -0
- package/esm2022/lib/components/toast/index.js.map +1 -0
- package/esm2022/lib/components/toast/toast-outlet.component.js +35 -0
- package/esm2022/lib/components/toast/toast-outlet.component.js.map +1 -0
- package/esm2022/lib/components/toast/toast.service.js +42 -0
- package/esm2022/lib/components/toast/toast.service.js.map +1 -0
- package/esm2022/lib/components/toolbar/toolbar.component.js +37 -0
- package/esm2022/lib/components/toolbar/toolbar.component.js.map +1 -0
- package/esm2022/lib/components/tooltip/tooltip.component.js +21 -0
- package/esm2022/lib/components/tooltip/tooltip.component.js.map +1 -0
- package/esm2022/lib/components/tree-list/tree-list.component.js +166 -0
- package/esm2022/lib/components/tree-list/tree-list.component.js.map +1 -0
- package/esm2022/lib/components/tree-map/tree-map.component.js +94 -0
- package/esm2022/lib/components/tree-map/tree-map.component.js.map +1 -0
- package/esm2022/lib/components/tree-view/tree-view.component.js +140 -0
- package/esm2022/lib/components/tree-view/tree-view.component.js.map +1 -0
- package/esm2022/lib/components/validation/validation-summary.component.js +37 -0
- package/esm2022/lib/components/validation/validation-summary.component.js.map +1 -0
- package/esm2022/lib/components/wrappers/draggable.component.js +64 -0
- package/esm2022/lib/components/wrappers/draggable.component.js.map +1 -0
- package/esm2022/lib/components/wrappers/index.js +4 -0
- package/esm2022/lib/components/wrappers/index.js.map +1 -0
- package/esm2022/lib/components/wrappers/resizable.component.js +90 -0
- package/esm2022/lib/components/wrappers/resizable.component.js.map +1 -0
- package/esm2022/lib/components/wrappers/sortable.component.js +88 -0
- package/esm2022/lib/components/wrappers/sortable.component.js.map +1 -0
- package/esm2022/lib/core/index.js +3 -0
- package/esm2022/lib/core/index.js.map +1 -0
- package/esm2022/lib/core/theme/theme.service.js +84 -0
- package/esm2022/lib/core/theme/theme.service.js.map +1 -0
- package/esm2022/lib/core/validation/validators.js +53 -0
- package/esm2022/lib/core/validation/validators.js.map +1 -0
- package/esm2022/vortex-ui.js +5 -0
- package/esm2022/vortex-ui.js.map +1 -0
- package/index.d.ts +2 -0
- package/lib/components/accordion/accordion.component.d.ts +19 -0
- package/lib/components/action-sheet/action-sheet.component.d.ts +18 -0
- package/lib/components/autocomplete/autocomplete.component.d.ts +14 -0
- package/lib/components/box/box.component.d.ts +16 -0
- package/lib/components/bullet/bullet.component.d.ts +15 -0
- package/lib/components/button/button.component.d.ts +13 -0
- package/lib/components/button-group/button-group.component.d.ts +10 -0
- package/lib/components/calendar/calendar.component.d.ts +19 -0
- package/lib/components/card/card.component.d.ts +10 -0
- package/lib/components/card-view/card-view.component.d.ts +31 -0
- package/lib/components/chart/chart.component.d.ts +85 -0
- package/lib/components/chat/chat.component.d.ts +18 -0
- package/lib/components/checkbox/checkbox.component.d.ts +9 -0
- package/lib/components/color-box/color-box.component.d.ts +9 -0
- package/lib/components/context-menu/context-menu.component.d.ts +18 -0
- package/lib/components/data-grid/data-grid.component.d.ts +162 -0
- package/lib/components/data-grid/data-grid.types.d.ts +51 -0
- package/lib/components/data-grid/data-source.d.ts +41 -0
- package/lib/components/data-grid/export-csv.d.ts +3 -0
- package/lib/components/date-box/date-box.component.d.ts +14 -0
- package/lib/components/date-range-box/date-range-box.component.d.ts +16 -0
- package/lib/components/diagram/diagram.component.d.ts +30 -0
- package/lib/components/dialog/dialog.component.d.ts +19 -0
- package/lib/components/drawer/drawer.component.d.ts +16 -0
- package/lib/components/drop-down-button/drop-down-button.component.d.ts +11 -0
- package/lib/components/fab/fab.component.d.ts +10 -0
- package/lib/components/field-set/field-set.component.d.ts +7 -0
- package/lib/components/file-manager/file-manager.component.d.ts +86 -0
- package/lib/components/file-manager/file-manager.types.d.ts +33 -0
- package/lib/components/file-uploader/file-uploader.component.d.ts +12 -0
- package/lib/components/filter-builder/filter-builder.component.d.ts +38 -0
- package/lib/components/form/form.component.d.ts +9 -0
- package/lib/components/funnel/funnel.component.d.ts +21 -0
- package/lib/components/gallery/gallery.component.d.ts +15 -0
- package/lib/components/gantt/gantt.component.d.ts +29 -0
- package/lib/components/gauge/bar-gauge.component.d.ts +19 -0
- package/lib/components/gauge/circular-gauge.component.d.ts +12 -0
- package/lib/components/gauge/linear-gauge.component.d.ts +10 -0
- package/lib/components/html-editor/html-editor.component.d.ts +22 -0
- package/lib/components/index.d.ts +72 -0
- package/lib/components/list/list.component.d.ts +23 -0
- package/lib/components/load-panel/load-panel.component.d.ts +8 -0
- package/lib/components/lookup/lookup.component.d.ts +18 -0
- package/lib/components/map/map.component.d.ts +19 -0
- package/lib/components/map/vector-map.component.d.ts +16 -0
- package/lib/components/menu/menu.component.d.ts +17 -0
- package/lib/components/multi-view/multi-view.component.d.ts +16 -0
- package/lib/components/number-box/number-box.component.d.ts +12 -0
- package/lib/components/pagination/pagination.component.d.ts +12 -0
- package/lib/components/pivot-grid/pivot-field-chooser.component.d.ts +28 -0
- package/lib/components/pivot-grid/pivot-grid.component.d.ts +14 -0
- package/lib/components/popover/popover.component.d.ts +8 -0
- package/lib/components/progress/index.d.ts +2 -0
- package/lib/components/progress/load-indicator.component.d.ts +8 -0
- package/lib/components/progress/progress-bar.component.d.ts +10 -0
- package/lib/components/radio-group/radio-group.component.d.ts +11 -0
- package/lib/components/range-slider/range-slider.component.d.ts +18 -0
- package/lib/components/sankey/sankey.component.d.ts +34 -0
- package/lib/components/scheduler/scheduler.component.d.ts +55 -0
- package/lib/components/scroll-view/scroll-view.component.d.ts +8 -0
- package/lib/components/select-box/select-box.component.d.ts +20 -0
- package/lib/components/slider/slider.component.d.ts +14 -0
- package/lib/components/sparkline/sparkline.component.d.ts +13 -0
- package/lib/components/splitter/splitter.component.d.ts +13 -0
- package/lib/components/stepper/stepper.component.d.ts +18 -0
- package/lib/components/switch/switch.component.d.ts +9 -0
- package/lib/components/tabs/tabs.component.d.ts +28 -0
- package/lib/components/tag-box/tag-box.component.d.ts +13 -0
- package/lib/components/text-area/text-area.component.d.ts +11 -0
- package/lib/components/text-box/text-box.component.d.ts +13 -0
- package/lib/components/tile-view/tile-view.component.d.ts +13 -0
- package/lib/components/toast/index.d.ts +2 -0
- package/lib/components/toast/toast-outlet.component.d.ts +7 -0
- package/lib/components/toast/toast.service.d.ts +22 -0
- package/lib/components/toolbar/toolbar.component.d.ts +6 -0
- package/lib/components/tooltip/tooltip.component.d.ts +6 -0
- package/lib/components/tree-list/tree-list.component.d.ts +35 -0
- package/lib/components/tree-map/tree-map.component.d.ts +24 -0
- package/lib/components/tree-view/tree-view.component.d.ts +30 -0
- package/lib/components/validation/validation-summary.component.d.ts +7 -0
- package/lib/components/wrappers/draggable.component.d.ts +15 -0
- package/lib/components/wrappers/index.d.ts +3 -0
- package/lib/components/wrappers/resizable.component.d.ts +16 -0
- package/lib/components/wrappers/sortable.component.d.ts +18 -0
- package/lib/core/index.d.ts +2 -0
- package/lib/core/theme/theme.service.d.ts +33 -0
- package/lib/core/validation/validators.d.ts +12 -0
- package/package.json +58 -4
- package/src/lib/core/tokens/design-tokens.css +71 -0
- package/src/lib/styles/themes/dark.css +50 -0
- package/src/lib/styles/themes/fluent-blue-dark.css +77 -0
- package/src/lib/styles/themes/fluent-blue-light.css +79 -0
- package/src/lib/styles/themes/fluent-saas-dark.css +77 -0
- package/src/lib/styles/themes/fluent-saas-light.css +77 -0
- package/src/lib/styles/themes/fluent.css +5 -0
- package/src/lib/styles/themes/lds.css +78 -0
- package/src/lib/styles/themes/light.css +60 -0
- package/src/lib/styles/themes/material.css +55 -0
- package/src/lib/styles/vortex-ui.css +20 -0
- 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
|
-
#
|
|
1
|
+
# VortexUI
|
|
2
2
|
|
|
3
|
-
|
|
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
|
+
[](https://www.npmjs.com/package/@joel_jsp/vortex-ui)
|
|
7
|
+
[](./LICENSE)
|
|
8
|
+
[](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
|
+
}
|
package/ai/ai.types.d.ts
ADDED
|
@@ -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
|
+
}
|
package/ai/ai.utils.d.ts
ADDED
|
@@ -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
|
+
}
|