indas-ui 0.0.1 → 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/dist/cjs/components/auth/ProtectedRoute.js +48 -0
- package/dist/cjs/components/auth/UnauthorizedPage.js +19 -0
- package/dist/cjs/components/auth/index.js +9 -0
- package/dist/cjs/components/chat/ai-messages.js +271 -0
- package/dist/cjs/components/chat/chat-prompt-navigator.js +110 -0
- package/dist/cjs/components/chat/chat.js +1032 -0
- package/dist/cjs/components/chat/index.js +19 -0
- package/dist/cjs/components/chat/multimodal-input.js +119 -0
- package/dist/cjs/components/dashboard/DrillDownModal.js +36 -0
- package/dist/cjs/components/dashboard/FilterBar.js +434 -0
- package/dist/cjs/components/dashboard/Tooltip.js +86 -0
- package/dist/cjs/components/dashboard/charts/Area.js +127 -0
- package/dist/cjs/components/dashboard/charts/Bar.js +111 -0
- package/dist/cjs/components/dashboard/charts/BoxPlot.js +118 -0
- package/dist/cjs/components/dashboard/charts/Bubble.js +102 -0
- package/dist/cjs/components/dashboard/charts/DashboardCard.js +12 -0
- package/dist/cjs/components/dashboard/charts/Donut.js +130 -0
- package/dist/cjs/components/dashboard/charts/FlowMap.js +238 -0
- package/dist/cjs/components/dashboard/charts/Funnel.js +38 -0
- package/dist/cjs/components/dashboard/charts/Gantt.js +271 -0
- package/dist/cjs/components/dashboard/charts/Gauge.js +143 -0
- package/dist/cjs/components/dashboard/charts/GeoMap.js +164 -0
- package/dist/cjs/components/dashboard/charts/Heatmap.js +116 -0
- package/dist/cjs/components/dashboard/charts/Line.js +75 -0
- package/dist/cjs/components/dashboard/charts/Pareto.js +110 -0
- package/dist/cjs/components/dashboard/charts/Radar.js +94 -0
- package/dist/cjs/components/dashboard/charts/Sankey.js +92 -0
- package/dist/cjs/components/dashboard/charts/Scatter.js +128 -0
- package/dist/cjs/components/dashboard/charts/Sparkline.js +134 -0
- package/dist/cjs/components/dashboard/charts/Treemap.js +104 -0
- package/dist/cjs/components/dashboard/charts/index.js +45 -0
- package/dist/cjs/components/dashboard/charts/india-map.js +464 -0
- package/dist/cjs/components/dashboard/charts/theme.js +132 -0
- package/dist/cjs/components/dashboard/config.js +118 -0
- package/dist/cjs/components/dashboard/index.js +39 -0
- package/dist/cjs/components/dashboard/kpi/KpiBeforeAfter.js +16 -0
- package/dist/cjs/components/dashboard/kpi/KpiBreakdown.js +42 -0
- package/dist/cjs/components/dashboard/kpi/KpiComparison.js +41 -0
- package/dist/cjs/components/dashboard/kpi/KpiQuickStats.js +41 -0
- package/dist/cjs/components/dashboard/kpi/KpiRating.js +38 -0
- package/dist/cjs/components/dashboard/kpi/KpiScroll.js +83 -0
- package/dist/cjs/components/dashboard/kpi/KpiTrend.js +37 -0
- package/dist/cjs/components/dashboard/kpi/index.js +22 -0
- package/dist/cjs/components/dashboard/kpi/kpi-shell.js +113 -0
- package/dist/cjs/components/dashboard/time-range.js +126 -0
- package/dist/cjs/components/datagrid/DataGrid.js +1613 -0
- package/dist/cjs/components/datagrid/cells/BooleanCell.js +42 -0
- package/dist/cjs/components/datagrid/cells/CellRenderer.js +142 -0
- package/dist/cjs/components/datagrid/cells/EditableCell.js +217 -0
- package/dist/cjs/components/datagrid/cells/SelectionCell.js +60 -0
- package/dist/cjs/components/datagrid/cells/index.js +6 -0
- package/dist/cjs/components/datagrid/columns/ActionsColumn.js +485 -0
- package/dist/cjs/components/datagrid/columns/ColumnContextMenu.js +341 -0
- package/dist/cjs/components/datagrid/columns/DraggableColumnHeader.js +150 -0
- package/dist/cjs/components/datagrid/controls/AutoResizeButton.js +10 -0
- package/dist/cjs/components/datagrid/controls/PaginationControls.js +38 -0
- package/dist/cjs/components/datagrid/controls/SummaryControls.js +30 -0
- package/dist/cjs/components/datagrid/controls/menu/ActionsMenu.js +16 -0
- package/dist/cjs/components/datagrid/controls/menu/column/ColumnChooserModal.js +25 -0
- package/dist/cjs/components/datagrid/controls/menu/column/ColumnSection.js +10 -0
- package/dist/cjs/components/datagrid/controls/menu/export/ExportSection.js +19 -0
- package/dist/cjs/components/datagrid/controls/menu/export/export.js +227 -0
- package/dist/cjs/components/datagrid/controls/menu/filter/AdvancedFilterModal.js +405 -0
- package/dist/cjs/components/datagrid/controls/menu/filter/FilterSection.js +9 -0
- package/dist/cjs/components/datagrid/controls/menu/grouping/GroupingSection.js +23 -0
- package/dist/cjs/components/datagrid/controls/menu/grouping/index.js +6 -0
- package/dist/cjs/components/datagrid/controls/menu/import/ImportSection.js +75 -0
- package/dist/cjs/components/datagrid/controls/menu/import/import.js +232 -0
- package/dist/cjs/components/datagrid/controls/menu/index.js +24 -0
- package/dist/cjs/components/datagrid/controls/menu/view/CardView.js +176 -0
- package/dist/cjs/components/datagrid/controls/menu/view/ChartView.js +401 -0
- package/dist/cjs/components/datagrid/controls/menu/view/ViewSection.js +12 -0
- package/dist/cjs/components/datagrid/hooks/useCellRangeSelection.js +127 -0
- package/dist/cjs/components/datagrid/hooks/useClipboard.js +154 -0
- package/dist/cjs/components/datagrid/hooks/useDataGridState.js +115 -0
- package/dist/cjs/components/datagrid/hooks/useKeyboardNavigation.js +120 -0
- package/dist/cjs/components/datagrid/index.js +90 -0
- package/dist/cjs/components/datagrid/rows/DraggableRow.js +34 -0
- package/dist/cjs/components/datagrid/rows/ExpandableRow.js +184 -0
- package/dist/cjs/components/datagrid/rows/FilterRow.js +188 -0
- package/dist/cjs/components/datagrid/rows/SelectColumn.js +34 -0
- package/dist/cjs/components/datagrid/rows/SummaryRow.js +34 -0
- package/dist/cjs/components/datagrid/rows/summary.js +67 -0
- package/dist/cjs/components/datagrid/search/InlineSearchCell.js +99 -0
- package/dist/cjs/components/datagrid/search/SearchHighlighter.js +133 -0
- package/dist/cjs/components/datagrid/search/SearchNavigator.js +185 -0
- package/dist/cjs/components/datagrid/search/SearchNewModal.js +238 -0
- package/dist/cjs/components/datagrid/search/advancedSearch.js +112 -0
- package/dist/cjs/components/datagrid/utils/grid-helpers.js +102 -0
- package/dist/cjs/components/datagrid/utils/grid-types.js +3 -0
- package/dist/cjs/components/draft/AutoSaveIndicator.js +70 -0
- package/dist/cjs/components/draft/DraftModal.js +220 -0
- package/dist/cjs/components/forms/date-picker/CalendarView.js +82 -0
- package/dist/cjs/components/forms/date-picker/DatePicker.js +748 -0
- package/dist/cjs/components/forms/date-picker/DateTimePicker.js +174 -0
- package/dist/cjs/components/forms/date-picker/index.js +21 -0
- package/dist/cjs/components/forms/date-picker/shared-utils.js +24 -0
- package/dist/cjs/components/forms/dropdown/Dropdown.js +427 -0
- package/dist/cjs/components/forms/dropdown/MultiSelect.js +136 -0
- package/dist/cjs/components/forms/dropdown/SingleSelect.js +254 -0
- package/dist/cjs/components/forms/dropdown/hooks/useDropdownCreate.js +88 -0
- package/dist/cjs/components/forms/dropdown/hooks/useDropdownFiltering.js +87 -0
- package/dist/cjs/components/forms/dropdown/hooks/useDropdownState.js +63 -0
- package/dist/cjs/components/forms/dropdown/index.js +6 -0
- package/dist/cjs/components/forms/dropdown/types.js +3 -0
- package/dist/cjs/components/forms/file-attachment/EmailPreview.js +419 -0
- package/dist/cjs/components/forms/file-attachment/FileAttachment.js +966 -0
- package/dist/cjs/components/forms/file-attachment/index.js +6 -0
- package/dist/cjs/components/forms/index.js +16 -0
- package/dist/cjs/components/forms/quantity-input-popup.js +135 -0
- package/dist/cjs/components/forms/remark-input/RemarkInput.js +263 -0
- package/dist/cjs/components/forms/remark-input/index.js +8 -0
- package/dist/cjs/components/forms/unified-currency-dropdown.js +202 -0
- package/dist/cjs/components/index.js +41 -0
- package/dist/cjs/components/layout/SidebarContextMenu.js +179 -0
- package/dist/cjs/components/layout/app-shell.js +81 -0
- package/dist/cjs/components/layout/bottom-nav.js +262 -0
- package/dist/cjs/components/layout/floating-action-button.js +77 -0
- package/dist/cjs/components/layout/footer.js +60 -0
- package/dist/cjs/components/layout/index.js +18 -0
- package/dist/cjs/components/layout/mobile-menu-sheet.js +195 -0
- package/dist/cjs/components/layout/side-panel.js +118 -0
- package/dist/cjs/components/layout/sidebar.js +581 -0
- package/dist/cjs/components/layout/top-header.js +270 -0
- package/dist/cjs/components/layout/userprofile-dropdown.js +100 -0
- package/dist/cjs/components/master/editable-cells/EditableCell.js +106 -0
- package/dist/cjs/components/master/editable-cells/index.js +17 -0
- package/dist/cjs/components/master/index.js +9 -0
- package/dist/cjs/components/messaging/conversation-list.js +109 -0
- package/dist/cjs/components/messaging/create-conversation-modal.js +112 -0
- package/dist/cjs/components/messaging/message-bubble.js +69 -0
- package/dist/cjs/components/messaging/message-input.js +154 -0
- package/dist/cjs/components/messaging/message-thread.js +124 -0
- package/dist/cjs/components/messaging/messaging-panel-content.js +69 -0
- package/dist/cjs/components/messaging/thread-panel.js +50 -0
- package/dist/cjs/components/modals/3DModal.js +35 -0
- package/dist/cjs/components/modals/ImageModal.js +587 -0
- package/dist/cjs/components/modals/Modal.js +311 -0
- package/dist/cjs/components/modals/StandardModal.js +28 -0
- package/dist/cjs/components/modals/api-config-modal.js +120 -0
- package/dist/cjs/components/modals/global-api-config-modal.js +127 -0
- package/dist/cjs/components/modals/index.js +17 -0
- package/dist/cjs/components/modals/logout-modal.js +45 -0
- package/dist/cjs/components/modals/modal-alert.js +295 -0
- package/dist/cjs/components/modals/password-reset-modal.js +112 -0
- package/dist/cjs/components/modals/session-expiry-warning.js +18 -0
- package/dist/cjs/components/providers/api-provider.js +19 -0
- package/dist/cjs/components/providers/query-provider.js +29 -0
- package/dist/cjs/components/providers/session-provider.js +119 -0
- package/dist/cjs/components/theme/ThemeCustomizer.js +184 -0
- package/dist/cjs/components/ui/buttons/button.js +264 -0
- package/dist/cjs/components/ui/card.js +58 -0
- package/dist/cjs/components/ui/chart.js +160 -0
- package/dist/cjs/components/ui/display/boolean-badge.js +29 -0
- package/dist/cjs/components/ui/display/card.js +20 -0
- package/dist/cjs/components/ui/display/collapsible.js +44 -0
- package/dist/cjs/components/ui/display/separator.js +44 -0
- package/dist/cjs/components/ui/display/stats-card.js +29 -0
- package/dist/cjs/components/ui/display/text.js +94 -0
- package/dist/cjs/components/ui/feedback/alert.js +61 -0
- package/dist/cjs/components/ui/feedback/badge.js +93 -0
- package/dist/cjs/components/ui/feedback/progress.js +44 -0
- package/dist/cjs/components/ui/feedback/reminder-button.js +111 -0
- package/dist/cjs/components/ui/feedback/skeleton-table.js +20 -0
- package/dist/cjs/components/ui/feedback/skeleton.js +53 -0
- package/dist/cjs/components/ui/feedback/tooltip.js +54 -0
- package/dist/cjs/components/ui/form-toggle.js +47 -0
- package/dist/cjs/components/ui/forms/checkbox.js +24 -0
- package/dist/cjs/components/ui/forms/input.js +111 -0
- package/dist/cjs/components/ui/forms/label.js +10 -0
- package/dist/cjs/components/ui/forms/switch.js +58 -0
- package/dist/cjs/components/ui/forms/textarea.js +49 -0
- package/dist/cjs/components/ui/index.js +157 -0
- package/dist/cjs/components/ui/navigation/dropdown-menu.js +84 -0
- package/dist/cjs/components/ui/navigation/header-steps.js +51 -0
- package/dist/cjs/components/ui/navigation/tabs.js +97 -0
- package/dist/cjs/components/ui/overlays/loading.js +169 -0
- package/dist/cjs/components/ui/select.js +72 -0
- package/dist/cjs/config/api.js +65 -0
- package/dist/cjs/contexts/AppConfigContext.js +37 -0
- package/dist/cjs/contexts/CurrencyContext.js +336 -0
- package/dist/cjs/contexts/DeviceContext.js +106 -0
- package/dist/cjs/contexts/EmailContext.js +727 -0
- package/dist/cjs/contexts/GlobalAlertContext.js +232 -0
- package/dist/cjs/contexts/ImpactAnalysisContext.js +60 -0
- package/dist/cjs/contexts/LanguageContext.js +104 -0
- package/dist/cjs/contexts/MessagingContext.js +726 -0
- package/dist/cjs/contexts/ModuleAuthContext.js +316 -0
- package/dist/cjs/contexts/NavigationContext.js +182 -0
- package/dist/cjs/contexts/NetworkStatusContext.js +95 -0
- package/dist/cjs/contexts/NotificationContext.js +169 -0
- package/dist/cjs/contexts/PageTitleContext.js +28 -0
- package/dist/cjs/contexts/SearchPreferencesContext.js +42 -0
- package/dist/cjs/contexts/SessionAdapterContext.js +24 -0
- package/dist/cjs/contexts/SidebarPreferencesContext.js +116 -0
- package/dist/cjs/contexts/ThemeContext.js +193 -0
- package/dist/cjs/hooks/index.js +50 -0
- package/dist/cjs/hooks/useApproval.js +250 -0
- package/dist/cjs/hooks/useBacchaSearch.js +257 -0
- package/dist/cjs/hooks/useBusinessAudit.js +54 -0
- package/dist/cjs/hooks/useColumnFreezing.js +204 -0
- package/dist/cjs/hooks/useColumnMetadata.js +48 -0
- package/dist/cjs/hooks/useConditionalFormatting.js +197 -0
- package/dist/cjs/hooks/useDebounce.js +49 -0
- package/dist/cjs/hooks/useDraft.js +181 -0
- package/dist/cjs/hooks/useFormValidation.js +68 -0
- package/dist/cjs/hooks/useGridSettings.js +85 -0
- package/dist/cjs/hooks/useGridTheme.js +204 -0
- package/dist/cjs/hooks/useId.js +21 -0
- package/dist/cjs/hooks/useIntelligentColumnSizing.js +315 -0
- package/dist/cjs/hooks/useKeyboardNavigation.js +192 -0
- package/dist/cjs/hooks/useNotifications.js +63 -0
- package/dist/cjs/hooks/usePrevious.js +20 -0
- package/dist/cjs/hooks/useRowSelection.js +150 -0
- package/dist/cjs/hooks/useSignalR.js +53 -0
- package/dist/cjs/hooks/useTheme.js +268 -0
- package/dist/cjs/hooks/useTranslation.js +20 -0
- package/dist/cjs/hooks/useUnsavedChanges.js +88 -0
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/lib/api/activity/audit/audit.js +51 -0
- package/dist/cjs/lib/api/activity/audit/index.js +29 -0
- package/dist/cjs/lib/api/activity/audit/send.js +434 -0
- package/dist/cjs/lib/api/activity/email/client.js +467 -0
- package/dist/cjs/lib/api/activity/email/index.js +31 -0
- package/dist/cjs/lib/api/activity/email/password-reset.js +58 -0
- package/dist/cjs/lib/api/activity/email/templates.js +537 -0
- package/dist/cjs/lib/api/activity/email/types.js +24 -0
- package/dist/cjs/lib/api/activity/index.js +48 -0
- package/dist/cjs/lib/api/activity/messaging/messaging.js +254 -0
- package/dist/cjs/lib/api/activity/notifications/index.js +43 -0
- package/dist/cjs/lib/api/activity/notifications/notifications.js +224 -0
- package/dist/cjs/lib/api/activity/notifications/reminders.js +30 -0
- package/dist/cjs/lib/api/activity/notifications/send.js +267 -0
- package/dist/cjs/lib/api/activity/notifications/types.js +66 -0
- package/dist/cjs/lib/api/activity/notify-and-log.js +63 -0
- package/dist/cjs/lib/api/activity/remarks/index.js +6 -0
- package/dist/cjs/lib/api/activity/remarks/remarks.js +186 -0
- package/dist/cjs/lib/api/activity/storage.js +83 -0
- package/dist/cjs/lib/api/ai/chat.js +227 -0
- package/dist/cjs/lib/api/ai/types.js +6 -0
- package/dist/cjs/lib/api/approval/approvals.js +210 -0
- package/dist/cjs/lib/api/approval/index.js +13 -0
- package/dist/cjs/lib/api/auth/auth.js +154 -0
- package/dist/cjs/lib/api/auth/index.js +11 -0
- package/dist/cjs/lib/api/auth/password-reset-otp.js +192 -0
- package/dist/cjs/lib/api/auth/two-factor-auth.js +94 -0
- package/dist/cjs/lib/api/auth/two-factor.js +186 -0
- package/dist/cjs/lib/api/core/auth-helpers.js +141 -0
- package/dist/cjs/lib/api/core/client.js +305 -0
- package/dist/cjs/lib/api/core/config.js +248 -0
- package/dist/cjs/lib/api/core/index.js +43 -0
- package/dist/cjs/lib/api/core/session-validator.js +98 -0
- package/dist/cjs/lib/api/core/types.js +4 -0
- package/dist/cjs/lib/api/core/utils.js +70 -0
- package/dist/cjs/lib/api/dashboard/costing.js +15 -0
- package/dist/cjs/lib/api/dashboard/management.js +11 -0
- package/dist/cjs/lib/api/dashboard/sales.js +11 -0
- package/dist/cjs/lib/api/draft/drafts.js +279 -0
- package/dist/cjs/lib/api/draft/index.js +13 -0
- package/dist/cjs/lib/api/enquiry/enquiry.js +624 -0
- package/dist/cjs/lib/api/enquiry/index.js +20 -0
- package/dist/cjs/lib/api/enquiry/rate-enquiry.js +78 -0
- package/dist/cjs/lib/api/estimation/categories.js +113 -0
- package/dist/cjs/lib/api/estimation/category-defaults.js +47 -0
- package/dist/cjs/lib/api/estimation/company-config.js +26 -0
- package/dist/cjs/lib/api/estimation/content.js +210 -0
- package/dist/cjs/lib/api/estimation/freight.js +25 -0
- package/dist/cjs/lib/api/estimation/grid-costing-drafts.js +30 -0
- package/dist/cjs/lib/api/estimation/grid-costing.js +176 -0
- package/dist/cjs/lib/api/estimation/index.js +58 -0
- package/dist/cjs/lib/api/estimation/legacy-costing.js +51 -0
- package/dist/cjs/lib/api/estimation/machines.js +74 -0
- package/dist/cjs/lib/api/estimation/planning.js +403 -0
- package/dist/cjs/lib/api/estimation/qualities.js +245 -0
- package/dist/cjs/lib/api/estimation/quotation-load.js +52 -0
- package/dist/cjs/lib/api/estimation/quotation-save.js +109 -0
- package/dist/cjs/lib/api/estimation/quote-check.js +34 -0
- package/dist/cjs/lib/api/estimation/quotepanel.js +496 -0
- package/dist/cjs/lib/api/estimation/shipper-planning.js +220 -0
- package/dist/cjs/lib/api/estimation/wastage.js +47 -0
- package/dist/cjs/lib/api/index.js +33 -0
- package/dist/cjs/lib/api/integration/proxy.js +40 -0
- package/dist/cjs/lib/api/master/category.js +215 -0
- package/dist/cjs/lib/api/master/company.js +389 -0
- package/dist/cjs/lib/api/master/hsn.js +61 -0
- package/dist/cjs/lib/api/master/index.js +47 -0
- package/dist/cjs/lib/api/master/item.js +142 -0
- package/dist/cjs/lib/api/master/ledger.js +398 -0
- package/dist/cjs/lib/api/master/logistics.js +119 -0
- package/dist/cjs/lib/api/master/machine.js +579 -0
- package/dist/cjs/lib/api/master/material-group.js +103 -0
- package/dist/cjs/lib/api/master/other.js +63 -0
- package/dist/cjs/lib/api/master/process-types.js +5 -0
- package/dist/cjs/lib/api/master/process.js +131 -0
- package/dist/cjs/lib/api/master/production-units.js +22 -0
- package/dist/cjs/lib/api/master/rate.js +203 -0
- package/dist/cjs/lib/api/master/tool.js +88 -0
- package/dist/cjs/lib/api/master/user.js +154 -0
- package/dist/cjs/lib/api/settings/erp-parameters.js +69 -0
- package/dist/cjs/lib/api/utility/index.js +11 -0
- package/dist/cjs/lib/api/utility/menu.js +136 -0
- package/dist/cjs/lib/auth.js +10 -0
- package/dist/cjs/lib/pwa.js +59 -0
- package/dist/cjs/lib/react-query-config.js +134 -0
- package/dist/cjs/lib/security/audit-logger.js +177 -0
- package/dist/cjs/lib/security/rate-limiter.js +122 -0
- package/dist/cjs/lib/server-url.js +76 -0
- package/dist/cjs/lib/svg-utils.js +213 -0
- package/dist/cjs/lib/theme/types.js +235 -0
- package/dist/cjs/lib/theme/utils.js +363 -0
- package/dist/cjs/lib/types/index.js +3 -0
- package/dist/cjs/lib/utils/attachment-loader.js +82 -0
- package/dist/cjs/lib/utils/client-lead-utils.js +61 -0
- package/dist/cjs/lib/utils/device-detection.js +110 -0
- package/dist/cjs/lib/utils/logout-cleanup.js +312 -0
- package/dist/cjs/lib/utils/planning-prefs.js +31 -0
- package/dist/cjs/lib/utils.js +70 -0
- package/dist/cjs/lib/vision/dieline-extractor.js +321 -0
- package/dist/cjs/lib/vision/reference-grid.js +245 -0
- package/dist/cjs/locales/de.json +79 -0
- package/dist/cjs/locales/en.json +2217 -0
- package/dist/cjs/locales/es.json +79 -0
- package/dist/cjs/locales/fr.json +78 -0
- package/dist/cjs/locales/hi.json +1599 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/providers.js +43 -0
- package/dist/cjs/services/GlobalLoadingService.js +220 -0
- package/{src → dist/cjs}/styles/grid-themes.css +345 -345
- package/{src → dist/cjs}/styles/sidebar-scrollbar.css +45 -45
- package/{src → dist/cjs}/styles/tokens.css +712 -711
- package/dist/cjs/types/approval.js +22 -0
- package/dist/cjs/types/audit.js +50 -0
- package/dist/cjs/types/draft.js +22 -0
- package/dist/cjs/types/master.js +4 -0
- package/dist/cjs/types/shipper-planning.js +7 -0
- package/dist/components/auth/ProtectedRoute.d.ts +6 -0
- package/dist/components/auth/ProtectedRoute.js +45 -0
- package/dist/components/auth/UnauthorizedPage.d.ts +6 -0
- package/dist/components/auth/UnauthorizedPage.js +15 -0
- package/dist/components/auth/index.d.ts +2 -0
- package/dist/components/auth/index.js +3 -0
- package/dist/components/chat/ai-messages.d.ts +32 -0
- package/dist/components/chat/ai-messages.js +265 -0
- package/dist/components/chat/chat-prompt-navigator.d.ts +9 -0
- package/dist/components/chat/chat-prompt-navigator.js +107 -0
- package/dist/components/chat/chat.d.ts +46 -0
- package/dist/components/chat/chat.js +1029 -0
- package/dist/components/chat/index.d.ts +5 -0
- package/dist/components/chat/index.js +13 -0
- package/dist/components/chat/multimodal-input.d.ts +12 -0
- package/dist/components/chat/multimodal-input.js +116 -0
- package/dist/components/dashboard/DrillDownModal.d.ts +15 -0
- package/dist/components/dashboard/DrillDownModal.js +33 -0
- package/dist/components/dashboard/FilterBar.d.ts +108 -0
- package/dist/components/dashboard/FilterBar.js +428 -0
- package/dist/components/dashboard/Tooltip.d.ts +24 -0
- package/dist/components/dashboard/Tooltip.js +50 -0
- package/dist/components/dashboard/charts/Area.d.ts +28 -0
- package/dist/components/dashboard/charts/Area.js +121 -0
- package/dist/components/dashboard/charts/Bar.d.ts +27 -0
- package/dist/components/dashboard/charts/Bar.js +105 -0
- package/dist/components/dashboard/charts/BoxPlot.d.ts +23 -0
- package/dist/components/dashboard/charts/BoxPlot.js +112 -0
- package/dist/components/dashboard/charts/Bubble.d.ts +36 -0
- package/dist/components/dashboard/charts/Bubble.js +96 -0
- package/dist/components/dashboard/charts/DashboardCard.d.ts +12 -0
- package/dist/components/dashboard/charts/DashboardCard.js +9 -0
- package/dist/components/dashboard/charts/Donut.d.ts +23 -0
- package/dist/components/dashboard/charts/Donut.js +124 -0
- package/dist/components/dashboard/charts/FlowMap.d.ts +38 -0
- package/dist/components/dashboard/charts/FlowMap.js +199 -0
- package/dist/components/dashboard/charts/Funnel.d.ts +30 -0
- package/dist/components/dashboard/charts/Funnel.js +35 -0
- package/dist/components/dashboard/charts/Gantt.d.ts +26 -0
- package/dist/components/dashboard/charts/Gantt.js +265 -0
- package/dist/components/dashboard/charts/Gauge.d.ts +25 -0
- package/dist/components/dashboard/charts/Gauge.js +137 -0
- package/dist/components/dashboard/charts/GeoMap.d.ts +38 -0
- package/dist/components/dashboard/charts/GeoMap.js +125 -0
- package/dist/components/dashboard/charts/Heatmap.d.ts +31 -0
- package/dist/components/dashboard/charts/Heatmap.js +110 -0
- package/dist/components/dashboard/charts/Line.d.ts +33 -0
- package/dist/components/dashboard/charts/Line.js +69 -0
- package/dist/components/dashboard/charts/Pareto.d.ts +21 -0
- package/dist/components/dashboard/charts/Pareto.js +104 -0
- package/dist/components/dashboard/charts/Radar.d.ts +32 -0
- package/dist/components/dashboard/charts/Radar.js +88 -0
- package/dist/components/dashboard/charts/Sankey.d.ts +43 -0
- package/dist/components/dashboard/charts/Sankey.js +86 -0
- package/dist/components/dashboard/charts/Scatter.d.ts +38 -0
- package/dist/components/dashboard/charts/Scatter.js +122 -0
- package/dist/components/dashboard/charts/Sparkline.d.ts +37 -0
- package/dist/components/dashboard/charts/Sparkline.js +128 -0
- package/dist/components/dashboard/charts/Treemap.d.ts +30 -0
- package/dist/components/dashboard/charts/Treemap.js +98 -0
- package/dist/components/dashboard/charts/index.d.ts +38 -0
- package/dist/components/dashboard/charts/index.js +23 -0
- package/dist/components/dashboard/charts/india-map.d.ts +22 -0
- package/dist/components/dashboard/charts/india-map.js +461 -0
- package/dist/components/dashboard/charts/theme.d.ts +107 -0
- package/dist/components/dashboard/charts/theme.js +124 -0
- package/dist/components/dashboard/config.d.ts +96 -0
- package/dist/components/dashboard/config.js +113 -0
- package/dist/components/dashboard/index.d.ts +10 -0
- package/dist/components/dashboard/index.js +13 -0
- package/dist/components/dashboard/kpi/KpiBeforeAfter.d.ts +31 -0
- package/dist/components/dashboard/kpi/KpiBeforeAfter.js +13 -0
- package/dist/components/dashboard/kpi/KpiBreakdown.d.ts +31 -0
- package/dist/components/dashboard/kpi/KpiBreakdown.js +39 -0
- package/dist/components/dashboard/kpi/KpiComparison.d.ts +36 -0
- package/dist/components/dashboard/kpi/KpiComparison.js +38 -0
- package/dist/components/dashboard/kpi/KpiQuickStats.d.ts +30 -0
- package/dist/components/dashboard/kpi/KpiQuickStats.js +38 -0
- package/dist/components/dashboard/kpi/KpiRating.d.ts +46 -0
- package/dist/components/dashboard/kpi/KpiRating.js +35 -0
- package/dist/components/dashboard/kpi/KpiScroll.d.ts +63 -0
- package/dist/components/dashboard/kpi/KpiScroll.js +80 -0
- package/dist/components/dashboard/kpi/KpiTrend.d.ts +28 -0
- package/dist/components/dashboard/kpi/KpiTrend.js +34 -0
- package/dist/components/dashboard/kpi/index.d.ts +16 -0
- package/dist/components/dashboard/kpi/index.js +10 -0
- package/dist/components/dashboard/kpi/kpi-shell.d.ts +44 -0
- package/dist/components/dashboard/kpi/kpi-shell.js +108 -0
- package/dist/components/dashboard/time-range.d.ts +12 -0
- package/dist/components/dashboard/time-range.js +118 -0
- package/dist/components/datagrid/DataGrid.d.ts +126 -0
- package/dist/components/datagrid/DataGrid.js +1577 -0
- package/dist/components/datagrid/cells/BooleanCell.d.ts +15 -0
- package/dist/components/datagrid/cells/BooleanCell.js +39 -0
- package/dist/components/datagrid/cells/CellRenderer.d.ts +25 -0
- package/dist/components/datagrid/cells/CellRenderer.js +139 -0
- package/dist/components/datagrid/cells/EditableCell.d.ts +35 -0
- package/dist/components/datagrid/cells/EditableCell.js +179 -0
- package/dist/components/datagrid/cells/SelectionCell.d.ts +11 -0
- package/dist/components/datagrid/cells/SelectionCell.js +58 -0
- package/dist/components/datagrid/cells/index.d.ts +1 -0
- package/dist/components/datagrid/cells/index.js +2 -0
- package/dist/components/datagrid/columns/ActionsColumn.d.ts +174 -0
- package/dist/components/datagrid/columns/ActionsColumn.js +448 -0
- package/dist/components/datagrid/columns/ColumnContextMenu.d.ts +16 -0
- package/dist/components/datagrid/columns/ColumnContextMenu.js +338 -0
- package/dist/components/datagrid/columns/DraggableColumnHeader.d.ts +19 -0
- package/dist/components/datagrid/columns/DraggableColumnHeader.js +147 -0
- package/dist/components/datagrid/controls/AutoResizeButton.d.ts +8 -0
- package/dist/components/datagrid/controls/AutoResizeButton.js +7 -0
- package/dist/components/datagrid/controls/PaginationControls.d.ts +13 -0
- package/dist/components/datagrid/controls/PaginationControls.js +34 -0
- package/dist/components/datagrid/controls/SummaryControls.d.ts +10 -0
- package/dist/components/datagrid/controls/SummaryControls.js +27 -0
- package/dist/components/datagrid/controls/menu/ActionsMenu.d.ts +31 -0
- package/dist/components/datagrid/controls/menu/ActionsMenu.js +13 -0
- package/dist/components/datagrid/controls/menu/column/ColumnChooserModal.d.ts +13 -0
- package/dist/components/datagrid/controls/menu/column/ColumnChooserModal.js +22 -0
- package/dist/components/datagrid/controls/menu/column/ColumnSection.d.ts +9 -0
- package/dist/components/datagrid/controls/menu/column/ColumnSection.js +7 -0
- package/dist/components/datagrid/controls/menu/export/ExportSection.d.ts +7 -0
- package/dist/components/datagrid/controls/menu/export/ExportSection.js +16 -0
- package/dist/components/datagrid/controls/menu/export/export.d.ts +21 -0
- package/dist/components/datagrid/controls/menu/export/export.js +187 -0
- package/dist/components/datagrid/controls/menu/filter/AdvancedFilterModal.d.ts +29 -0
- package/dist/components/datagrid/controls/menu/filter/AdvancedFilterModal.js +369 -0
- package/dist/components/datagrid/controls/menu/filter/FilterSection.d.ts +12 -0
- package/dist/components/datagrid/controls/menu/filter/FilterSection.js +6 -0
- package/dist/components/datagrid/controls/menu/grouping/GroupingSection.d.ts +10 -0
- package/dist/components/datagrid/controls/menu/grouping/GroupingSection.js +20 -0
- package/dist/components/datagrid/controls/menu/grouping/index.d.ts +1 -0
- package/dist/components/datagrid/controls/menu/grouping/index.js +2 -0
- package/dist/components/datagrid/controls/menu/import/ImportSection.d.ts +6 -0
- package/dist/components/datagrid/controls/menu/import/ImportSection.js +72 -0
- package/dist/components/datagrid/controls/menu/import/import.d.ts +27 -0
- package/dist/components/datagrid/controls/menu/import/import.js +193 -0
- package/dist/components/datagrid/controls/menu/index.d.ts +10 -0
- package/dist/components/datagrid/controls/menu/index.js +11 -0
- package/dist/components/datagrid/controls/menu/view/CardView.d.ts +17 -0
- package/dist/components/datagrid/controls/menu/view/CardView.js +173 -0
- package/dist/components/datagrid/controls/menu/view/ChartView.d.ts +9 -0
- package/dist/components/datagrid/controls/menu/view/ChartView.js +363 -0
- package/dist/components/datagrid/controls/menu/view/ViewSection.d.ts +7 -0
- package/dist/components/datagrid/controls/menu/view/ViewSection.js +9 -0
- package/dist/components/datagrid/hooks/useCellRangeSelection.d.ts +20 -0
- package/dist/components/datagrid/hooks/useCellRangeSelection.js +124 -0
- package/dist/components/datagrid/hooks/useClipboard.d.ts +15 -0
- package/dist/components/datagrid/hooks/useClipboard.js +151 -0
- package/dist/components/datagrid/hooks/useDataGridState.d.ts +46 -0
- package/dist/components/datagrid/hooks/useDataGridState.js +112 -0
- package/dist/components/datagrid/hooks/useKeyboardNavigation.d.ts +18 -0
- package/dist/components/datagrid/hooks/useKeyboardNavigation.js +117 -0
- package/dist/components/datagrid/index.d.ts +34 -0
- package/dist/components/datagrid/index.js +41 -0
- package/dist/components/datagrid/rows/DraggableRow.d.ts +33 -0
- package/dist/components/datagrid/rows/DraggableRow.js +31 -0
- package/dist/components/datagrid/rows/ExpandableRow.d.ts +48 -0
- package/dist/components/datagrid/rows/ExpandableRow.js +178 -0
- package/dist/components/datagrid/rows/FilterRow.d.ts +10 -0
- package/dist/components/datagrid/rows/FilterRow.js +185 -0
- package/dist/components/datagrid/rows/SelectColumn.d.ts +2 -0
- package/dist/components/datagrid/rows/SelectColumn.js +31 -0
- package/dist/components/datagrid/rows/SummaryRow.d.ts +12 -0
- package/dist/components/datagrid/rows/SummaryRow.js +31 -0
- package/dist/components/datagrid/rows/summary.d.ts +9 -0
- package/dist/components/datagrid/rows/summary.js +63 -0
- package/dist/components/datagrid/search/InlineSearchCell.d.ts +13 -0
- package/dist/components/datagrid/search/InlineSearchCell.js +96 -0
- package/dist/components/datagrid/search/SearchHighlighter.d.ts +16 -0
- package/dist/components/datagrid/search/SearchHighlighter.js +124 -0
- package/dist/components/datagrid/search/SearchNavigator.d.ts +24 -0
- package/dist/components/datagrid/search/SearchNavigator.js +148 -0
- package/dist/components/datagrid/search/SearchNewModal.d.ts +12 -0
- package/dist/components/datagrid/search/SearchNewModal.js +202 -0
- package/dist/components/datagrid/search/advancedSearch.d.ts +23 -0
- package/dist/components/datagrid/search/advancedSearch.js +109 -0
- package/dist/components/datagrid/utils/grid-helpers.d.ts +34 -0
- package/dist/components/datagrid/utils/grid-helpers.js +94 -0
- package/dist/components/datagrid/utils/grid-types.d.ts +157 -0
- package/dist/components/datagrid/utils/grid-types.js +2 -0
- package/dist/components/draft/AutoSaveIndicator.d.ts +28 -0
- package/dist/components/draft/AutoSaveIndicator.js +67 -0
- package/dist/components/draft/DraftModal.d.ts +27 -0
- package/dist/components/draft/DraftModal.js +184 -0
- package/dist/components/forms/date-picker/CalendarView.d.ts +17 -0
- package/dist/components/forms/date-picker/CalendarView.js +46 -0
- package/dist/components/forms/date-picker/DatePicker.d.ts +35 -0
- package/dist/components/forms/date-picker/DatePicker.js +712 -0
- package/dist/components/forms/date-picker/DateTimePicker.d.ts +15 -0
- package/dist/components/forms/date-picker/DateTimePicker.js +138 -0
- package/dist/components/forms/date-picker/index.d.ts +7 -0
- package/dist/components/forms/date-picker/index.js +9 -0
- package/dist/components/forms/date-picker/shared-utils.d.ts +6 -0
- package/dist/components/forms/date-picker/shared-utils.js +19 -0
- package/dist/components/forms/dropdown/Dropdown.d.ts +144 -0
- package/dist/components/forms/dropdown/Dropdown.js +384 -0
- package/dist/components/forms/dropdown/MultiSelect.d.ts +29 -0
- package/dist/components/forms/dropdown/MultiSelect.js +100 -0
- package/dist/components/forms/dropdown/SingleSelect.d.ts +39 -0
- package/dist/components/forms/dropdown/SingleSelect.js +218 -0
- package/dist/components/forms/dropdown/hooks/useDropdownCreate.d.ts +8 -0
- package/dist/components/forms/dropdown/hooks/useDropdownCreate.js +52 -0
- package/dist/components/forms/dropdown/hooks/useDropdownFiltering.d.ts +5 -0
- package/dist/components/forms/dropdown/hooks/useDropdownFiltering.js +51 -0
- package/dist/components/forms/dropdown/hooks/useDropdownState.d.ts +7 -0
- package/dist/components/forms/dropdown/hooks/useDropdownState.js +27 -0
- package/dist/components/forms/dropdown/index.d.ts +2 -0
- package/dist/components/forms/dropdown/index.js +2 -0
- package/dist/components/forms/dropdown/types.d.ts +67 -0
- package/dist/components/forms/dropdown/types.js +2 -0
- package/dist/components/forms/file-attachment/EmailPreview.d.ts +5 -0
- package/dist/components/forms/file-attachment/EmailPreview.js +383 -0
- package/dist/components/forms/file-attachment/FileAttachment.d.ts +30 -0
- package/dist/components/forms/file-attachment/FileAttachment.js +930 -0
- package/dist/components/forms/file-attachment/index.d.ts +2 -0
- package/dist/components/forms/file-attachment/index.js +2 -0
- package/dist/components/forms/index.d.ts +9 -0
- package/dist/components/forms/index.js +7 -0
- package/dist/components/forms/quantity-input-popup.d.ts +10 -0
- package/dist/components/forms/quantity-input-popup.js +99 -0
- package/dist/components/forms/remark-input/RemarkInput.d.ts +58 -0
- package/dist/components/forms/remark-input/RemarkInput.js +258 -0
- package/dist/components/forms/remark-input/index.d.ts +1 -0
- package/dist/components/forms/remark-input/index.js +2 -0
- package/dist/components/forms/unified-currency-dropdown.d.ts +26 -0
- package/dist/components/forms/unified-currency-dropdown.js +166 -0
- package/dist/components/index.d.ts +14 -0
- package/dist/components/index.js +15 -0
- package/dist/components/layout/SidebarContextMenu.d.ts +18 -0
- package/dist/components/layout/SidebarContextMenu.js +142 -0
- package/dist/components/layout/app-shell.d.ts +32 -0
- package/dist/components/layout/app-shell.js +43 -0
- package/dist/components/layout/bottom-nav.d.ts +28 -0
- package/dist/components/layout/bottom-nav.js +219 -0
- package/dist/components/layout/floating-action-button.d.ts +10 -0
- package/dist/components/layout/floating-action-button.js +74 -0
- package/dist/components/layout/footer.d.ts +37 -0
- package/dist/components/layout/footer.js +56 -0
- package/dist/components/layout/index.d.ts +10 -0
- package/dist/components/layout/index.js +7 -0
- package/dist/components/layout/mobile-menu-sheet.d.ts +7 -0
- package/dist/components/layout/mobile-menu-sheet.js +159 -0
- package/dist/components/layout/side-panel.d.ts +50 -0
- package/dist/components/layout/side-panel.js +115 -0
- package/dist/components/layout/sidebar.d.ts +12 -0
- package/dist/components/layout/sidebar.js +542 -0
- package/dist/components/layout/top-header.d.ts +8 -0
- package/dist/components/layout/top-header.js +234 -0
- package/dist/components/layout/userprofile-dropdown.d.ts +1 -0
- package/dist/components/layout/userprofile-dropdown.js +97 -0
- package/dist/components/master/editable-cells/EditableCell.d.ts +43 -0
- package/dist/components/master/editable-cells/EditableCell.js +66 -0
- package/dist/components/master/editable-cells/index.d.ts +9 -0
- package/dist/components/master/editable-cells/index.js +10 -0
- package/dist/components/master/index.d.ts +1 -0
- package/dist/components/master/index.js +3 -0
- package/dist/components/messaging/conversation-list.d.ts +13 -0
- package/dist/components/messaging/conversation-list.js +103 -0
- package/dist/components/messaging/create-conversation-modal.d.ts +9 -0
- package/dist/components/messaging/create-conversation-modal.js +109 -0
- package/dist/components/messaging/message-bubble.d.ts +15 -0
- package/dist/components/messaging/message-bubble.js +66 -0
- package/dist/components/messaging/message-input.d.ts +17 -0
- package/dist/components/messaging/message-input.js +151 -0
- package/dist/components/messaging/message-thread.d.ts +10 -0
- package/dist/components/messaging/message-thread.js +121 -0
- package/dist/components/messaging/messaging-panel-content.d.ts +5 -0
- package/dist/components/messaging/messaging-panel-content.js +66 -0
- package/dist/components/messaging/thread-panel.d.ts +10 -0
- package/dist/components/messaging/thread-panel.js +47 -0
- package/dist/components/modals/3DModal.d.ts +39 -0
- package/dist/components/modals/3DModal.js +32 -0
- package/dist/components/modals/ImageModal.d.ts +28 -0
- package/dist/components/modals/ImageModal.js +551 -0
- package/dist/components/modals/Modal.d.ts +92 -0
- package/dist/components/modals/Modal.js +264 -0
- package/dist/components/modals/StandardModal.d.ts +27 -0
- package/dist/components/modals/StandardModal.js +25 -0
- package/dist/components/modals/api-config-modal.d.ts +7 -0
- package/dist/components/modals/api-config-modal.js +117 -0
- package/dist/components/modals/global-api-config-modal.d.ts +7 -0
- package/dist/components/modals/global-api-config-modal.js +124 -0
- package/dist/components/modals/index.d.ts +7 -0
- package/dist/components/modals/index.js +8 -0
- package/dist/components/modals/logout-modal.d.ts +32 -0
- package/dist/components/modals/logout-modal.js +42 -0
- package/dist/components/modals/modal-alert.d.ts +139 -0
- package/dist/components/modals/modal-alert.js +250 -0
- package/dist/components/modals/password-reset-modal.d.ts +11 -0
- package/dist/components/modals/password-reset-modal.js +109 -0
- package/dist/components/modals/session-expiry-warning.d.ts +12 -0
- package/dist/components/modals/session-expiry-warning.js +15 -0
- package/dist/components/providers/api-provider.d.ts +10 -0
- package/dist/components/providers/api-provider.js +15 -0
- package/dist/components/providers/query-provider.d.ts +3 -0
- package/dist/components/providers/query-provider.js +26 -0
- package/dist/components/providers/session-provider.d.ts +7 -0
- package/dist/components/providers/session-provider.js +116 -0
- package/dist/components/theme/ThemeCustomizer.d.ts +37 -0
- package/dist/components/theme/ThemeCustomizer.js +178 -0
- package/dist/components/ui/buttons/button.d.ts +59 -0
- package/dist/components/ui/buttons/button.js +228 -0
- package/dist/components/ui/card.d.ts +8 -0
- package/dist/components/ui/card.js +17 -0
- package/dist/components/ui/chart.d.ts +83 -0
- package/dist/components/ui/chart.js +113 -0
- package/dist/components/ui/display/boolean-badge.d.ts +7 -0
- package/dist/components/ui/display/boolean-badge.js +23 -0
- package/dist/components/ui/display/card.d.ts +10 -0
- package/dist/components/ui/display/card.js +11 -0
- package/dist/components/ui/display/collapsible.d.ts +6 -0
- package/dist/components/ui/display/collapsible.js +6 -0
- package/dist/components/ui/display/separator.d.ts +4 -0
- package/dist/components/ui/display/separator.js +8 -0
- package/dist/components/ui/display/stats-card.d.ts +22 -0
- package/dist/components/ui/display/stats-card.js +25 -0
- package/dist/components/ui/display/text.d.ts +14 -0
- package/dist/components/ui/display/text.js +57 -0
- package/dist/components/ui/feedback/alert.d.ts +8 -0
- package/dist/components/ui/feedback/alert.js +23 -0
- package/dist/components/ui/feedback/badge.d.ts +49 -0
- package/dist/components/ui/feedback/badge.js +87 -0
- package/dist/components/ui/feedback/progress.d.ts +4 -0
- package/dist/components/ui/feedback/progress.js +8 -0
- package/dist/components/ui/feedback/reminder-button.d.ts +22 -0
- package/dist/components/ui/feedback/reminder-button.js +75 -0
- package/dist/components/ui/feedback/skeleton-table.d.ts +18 -0
- package/dist/components/ui/feedback/skeleton-table.js +17 -0
- package/dist/components/ui/feedback/skeleton.d.ts +53 -0
- package/dist/components/ui/feedback/skeleton.js +48 -0
- package/dist/components/ui/feedback/tooltip.d.ts +15 -0
- package/dist/components/ui/feedback/tooltip.js +14 -0
- package/dist/components/ui/form-toggle.d.ts +57 -0
- package/dist/components/ui/form-toggle.js +44 -0
- package/dist/components/ui/forms/checkbox.d.ts +6 -0
- package/dist/components/ui/forms/checkbox.js +17 -0
- package/dist/components/ui/forms/input.d.ts +18 -0
- package/dist/components/ui/forms/input.js +75 -0
- package/dist/components/ui/forms/label.d.ts +5 -0
- package/dist/components/ui/forms/label.js +6 -0
- package/dist/components/ui/forms/switch.d.ts +10 -0
- package/dist/components/ui/forms/switch.js +22 -0
- package/dist/components/ui/forms/textarea.d.ts +8 -0
- package/dist/components/ui/forms/textarea.js +13 -0
- package/dist/components/ui/index.d.ts +49 -0
- package/dist/components/ui/index.js +62 -0
- package/dist/components/ui/navigation/dropdown-menu.d.ts +27 -0
- package/dist/components/ui/navigation/dropdown-menu.js +34 -0
- package/dist/components/ui/navigation/header-steps.d.ts +16 -0
- package/dist/components/ui/navigation/header-steps.js +15 -0
- package/dist/components/ui/navigation/tabs.d.ts +40 -0
- package/dist/components/ui/navigation/tabs.js +59 -0
- package/dist/components/ui/overlays/loading.d.ts +47 -0
- package/dist/components/ui/overlays/loading.js +131 -0
- package/dist/components/ui/select.d.ts +13 -0
- package/dist/components/ui/select.js +27 -0
- package/dist/config/api.d.ts +30 -0
- package/dist/config/api.js +58 -0
- package/dist/contexts/AppConfigContext.d.ts +13 -0
- package/dist/contexts/AppConfigContext.js +33 -0
- package/dist/contexts/CurrencyContext.d.ts +43 -0
- package/dist/contexts/CurrencyContext.js +331 -0
- package/dist/contexts/DeviceContext.d.ts +12 -0
- package/dist/contexts/DeviceContext.js +69 -0
- package/dist/contexts/EmailContext.d.ts +112 -0
- package/dist/contexts/EmailContext.js +720 -0
- package/dist/contexts/GlobalAlertContext.d.ts +67 -0
- package/dist/contexts/GlobalAlertContext.js +192 -0
- package/dist/contexts/ImpactAnalysisContext.d.ts +11 -0
- package/dist/contexts/ImpactAnalysisContext.js +23 -0
- package/dist/contexts/LanguageContext.d.ts +21 -0
- package/dist/contexts/LanguageContext.js +66 -0
- package/dist/contexts/MessagingContext.d.ts +70 -0
- package/dist/contexts/MessagingContext.js +722 -0
- package/dist/contexts/ModuleAuthContext.d.ts +42 -0
- package/dist/contexts/ModuleAuthContext.js +278 -0
- package/dist/contexts/NavigationContext.d.ts +26 -0
- package/dist/contexts/NavigationContext.js +143 -0
- package/dist/contexts/NetworkStatusContext.d.ts +18 -0
- package/dist/contexts/NetworkStatusContext.js +87 -0
- package/dist/contexts/NotificationContext.d.ts +47 -0
- package/dist/contexts/NotificationContext.js +165 -0
- package/dist/contexts/PageTitleContext.d.ts +11 -0
- package/dist/contexts/PageTitleContext.js +23 -0
- package/dist/contexts/SearchPreferencesContext.d.ts +11 -0
- package/dist/contexts/SearchPreferencesContext.js +38 -0
- package/dist/contexts/SessionAdapterContext.d.ts +39 -0
- package/dist/contexts/SessionAdapterContext.js +20 -0
- package/dist/contexts/SidebarPreferencesContext.d.ts +19 -0
- package/dist/contexts/SidebarPreferencesContext.js +112 -0
- package/dist/contexts/ThemeContext.d.ts +63 -0
- package/dist/contexts/ThemeContext.js +153 -0
- package/dist/hooks/index.d.ts +23 -0
- package/dist/hooks/index.js +18 -0
- package/dist/hooks/useApproval.d.ts +47 -0
- package/dist/hooks/useApproval.js +247 -0
- package/dist/hooks/useBacchaSearch.d.ts +57 -0
- package/dist/hooks/useBacchaSearch.js +254 -0
- package/dist/hooks/useBusinessAudit.d.ts +24 -0
- package/dist/hooks/useBusinessAudit.js +51 -0
- package/dist/hooks/useColumnFreezing.d.ts +85 -0
- package/dist/hooks/useColumnFreezing.js +201 -0
- package/dist/hooks/useColumnMetadata.d.ts +20 -0
- package/dist/hooks/useColumnMetadata.js +44 -0
- package/dist/hooks/useConditionalFormatting.d.ts +43 -0
- package/dist/hooks/useConditionalFormatting.js +193 -0
- package/dist/hooks/useDebounce.d.ts +14 -0
- package/dist/hooks/useDebounce.js +45 -0
- package/dist/hooks/useDraft.d.ts +46 -0
- package/dist/hooks/useDraft.js +178 -0
- package/dist/hooks/useFormValidation.d.ts +37 -0
- package/dist/hooks/useFormValidation.js +65 -0
- package/dist/hooks/useGridSettings.d.ts +26 -0
- package/dist/hooks/useGridSettings.js +82 -0
- package/dist/hooks/useGridTheme.d.ts +59 -0
- package/dist/hooks/useGridTheme.js +199 -0
- package/dist/hooks/useId.d.ts +2 -0
- package/dist/hooks/useId.js +17 -0
- package/dist/hooks/useIntelligentColumnSizing.d.ts +71 -0
- package/dist/hooks/useIntelligentColumnSizing.js +310 -0
- package/dist/hooks/useKeyboardNavigation.d.ts +33 -0
- package/dist/hooks/useKeyboardNavigation.js +189 -0
- package/dist/hooks/useNotifications.d.ts +7 -0
- package/dist/hooks/useNotifications.js +56 -0
- package/dist/hooks/usePrevious.d.ts +9 -0
- package/dist/hooks/usePrevious.js +17 -0
- package/dist/hooks/useRowSelection.d.ts +45 -0
- package/dist/hooks/useRowSelection.js +147 -0
- package/dist/hooks/useSignalR.d.ts +13 -0
- package/dist/hooks/useSignalR.js +50 -0
- package/dist/hooks/useTheme.d.ts +59 -0
- package/dist/hooks/useTheme.js +261 -0
- package/dist/hooks/useTranslation.d.ts +5 -0
- package/dist/hooks/useTranslation.js +17 -0
- package/dist/hooks/useUnsavedChanges.d.ts +40 -0
- package/dist/hooks/useUnsavedChanges.js +83 -0
- package/dist/index.d.ts +2 -3173
- package/dist/index.js +4 -25937
- package/dist/lib/api/activity/audit/audit.d.ts +34 -0
- package/dist/lib/api/activity/audit/audit.js +44 -0
- package/dist/lib/api/activity/audit/index.d.ts +6 -0
- package/dist/lib/api/activity/audit/index.js +7 -0
- package/dist/lib/api/activity/audit/send.d.ts +152 -0
- package/dist/lib/api/activity/audit/send.js +403 -0
- package/dist/lib/api/activity/email/client.d.ts +167 -0
- package/dist/lib/api/activity/email/client.js +455 -0
- package/dist/lib/api/activity/email/index.d.ts +7 -0
- package/dist/lib/api/activity/email/index.js +10 -0
- package/dist/lib/api/activity/email/password-reset.d.ts +8 -0
- package/dist/lib/api/activity/email/password-reset.js +55 -0
- package/dist/lib/api/activity/email/templates.d.ts +10 -0
- package/dist/lib/api/activity/email/templates.js +531 -0
- package/dist/lib/api/activity/email/types.d.ts +237 -0
- package/dist/lib/api/activity/email/types.js +21 -0
- package/dist/lib/api/activity/index.d.ts +12 -0
- package/dist/lib/api/activity/index.js +15 -0
- package/dist/lib/api/activity/messaging/messaging.d.ts +149 -0
- package/dist/lib/api/activity/messaging/messaging.js +245 -0
- package/dist/lib/api/activity/notifications/index.d.ts +9 -0
- package/dist/lib/api/activity/notifications/index.js +9 -0
- package/dist/lib/api/activity/notifications/notifications.d.ts +59 -0
- package/dist/lib/api/activity/notifications/notifications.js +218 -0
- package/dist/lib/api/activity/notifications/reminders.d.ts +35 -0
- package/dist/lib/api/activity/notifications/reminders.js +25 -0
- package/dist/lib/api/activity/notifications/send.d.ts +122 -0
- package/dist/lib/api/activity/notifications/send.js +252 -0
- package/dist/lib/api/activity/notifications/types.d.ts +119 -0
- package/dist/lib/api/activity/notifications/types.js +62 -0
- package/dist/lib/api/activity/notify-and-log.d.ts +50 -0
- package/dist/lib/api/activity/notify-and-log.js +60 -0
- package/dist/lib/api/activity/remarks/index.d.ts +2 -0
- package/dist/lib/api/activity/remarks/index.js +2 -0
- package/dist/lib/api/activity/remarks/remarks.d.ts +83 -0
- package/dist/lib/api/activity/remarks/remarks.js +179 -0
- package/dist/lib/api/activity/storage.d.ts +28 -0
- package/dist/lib/api/activity/storage.js +79 -0
- package/dist/lib/api/ai/chat.d.ts +67 -0
- package/dist/lib/api/ai/chat.js +212 -0
- package/dist/lib/api/ai/types.d.ts +69 -0
- package/dist/lib/api/ai/types.js +5 -0
- package/dist/lib/api/approval/approvals.d.ts +66 -0
- package/dist/lib/api/approval/approvals.js +205 -0
- package/dist/lib/api/approval/index.d.ts +5 -0
- package/dist/lib/api/approval/index.js +6 -0
- package/dist/lib/api/auth/auth.d.ts +12 -0
- package/dist/lib/api/auth/auth.js +148 -0
- package/dist/lib/api/auth/index.d.ts +1 -0
- package/dist/lib/api/auth/index.js +4 -0
- package/dist/lib/api/auth/password-reset-otp.d.ts +49 -0
- package/dist/lib/api/auth/password-reset-otp.js +185 -0
- package/dist/lib/api/auth/two-factor-auth.d.ts +55 -0
- package/dist/lib/api/auth/two-factor-auth.js +84 -0
- package/dist/lib/api/auth/two-factor.d.ts +41 -0
- package/dist/lib/api/auth/two-factor.js +180 -0
- package/dist/lib/api/core/auth-helpers.d.ts +13 -0
- package/dist/lib/api/core/auth-helpers.js +137 -0
- package/dist/lib/api/core/client.d.ts +37 -0
- package/dist/lib/api/core/client.js +301 -0
- package/dist/lib/api/core/config.d.ts +46 -0
- package/dist/lib/api/core/config.js +238 -0
- package/dist/lib/api/core/index.d.ts +6 -0
- package/dist/lib/api/core/index.js +11 -0
- package/dist/lib/api/core/session-validator.d.ts +55 -0
- package/dist/lib/api/core/session-validator.js +94 -0
- package/dist/lib/api/core/types.d.ts +192 -0
- package/dist/lib/api/core/types.js +3 -0
- package/dist/lib/api/core/utils.d.ts +15 -0
- package/dist/lib/api/core/utils.js +64 -0
- package/dist/lib/api/dashboard/costing.d.ts +129 -0
- package/dist/lib/api/dashboard/costing.js +8 -0
- package/dist/lib/api/dashboard/management.d.ts +91 -0
- package/dist/lib/api/dashboard/management.js +5 -0
- package/dist/lib/api/dashboard/sales.d.ts +87 -0
- package/dist/lib/api/dashboard/sales.js +5 -0
- package/dist/lib/api/draft/drafts.d.ts +49 -0
- package/dist/lib/api/draft/drafts.js +274 -0
- package/dist/lib/api/draft/index.d.ts +5 -0
- package/dist/lib/api/draft/index.js +6 -0
- package/dist/lib/api/enquiry/enquiry.d.ts +324 -0
- package/dist/lib/api/enquiry/enquiry.js +617 -0
- package/dist/lib/api/enquiry/index.d.ts +2 -0
- package/dist/lib/api/enquiry/index.js +4 -0
- package/dist/lib/api/enquiry/rate-enquiry.d.ts +97 -0
- package/dist/lib/api/enquiry/rate-enquiry.js +69 -0
- package/dist/lib/api/estimation/categories.d.ts +28 -0
- package/dist/lib/api/estimation/categories.js +104 -0
- package/dist/lib/api/estimation/category-defaults.d.ts +56 -0
- package/dist/lib/api/estimation/category-defaults.js +41 -0
- package/dist/lib/api/estimation/company-config.d.ts +59 -0
- package/dist/lib/api/estimation/company-config.js +19 -0
- package/dist/lib/api/estimation/content.d.ts +103 -0
- package/dist/lib/api/estimation/content.js +203 -0
- package/dist/lib/api/estimation/freight.d.ts +34 -0
- package/dist/lib/api/estimation/freight.js +18 -0
- package/dist/lib/api/estimation/grid-costing-drafts.d.ts +38 -0
- package/dist/lib/api/estimation/grid-costing-drafts.js +21 -0
- package/dist/lib/api/estimation/grid-costing.d.ts +353 -0
- package/dist/lib/api/estimation/grid-costing.js +126 -0
- package/dist/lib/api/estimation/index.d.ts +10 -0
- package/dist/lib/api/estimation/index.js +22 -0
- package/dist/lib/api/estimation/legacy-costing.d.ts +42 -0
- package/dist/lib/api/estimation/legacy-costing.js +46 -0
- package/dist/lib/api/estimation/machines.d.ts +32 -0
- package/dist/lib/api/estimation/machines.js +67 -0
- package/dist/lib/api/estimation/planning.d.ts +479 -0
- package/dist/lib/api/estimation/planning.js +385 -0
- package/dist/lib/api/estimation/qualities.d.ts +128 -0
- package/dist/lib/api/estimation/qualities.js +229 -0
- package/dist/lib/api/estimation/quotation-load.d.ts +30 -0
- package/dist/lib/api/estimation/quotation-load.js +46 -0
- package/dist/lib/api/estimation/quotation-save.d.ts +88 -0
- package/dist/lib/api/estimation/quotation-save.js +101 -0
- package/dist/lib/api/estimation/quote-check.d.ts +19 -0
- package/dist/lib/api/estimation/quote-check.js +28 -0
- package/dist/lib/api/estimation/quotepanel.d.ts +304 -0
- package/dist/lib/api/estimation/quotepanel.js +489 -0
- package/dist/lib/api/estimation/shipper-planning.d.ts +71 -0
- package/dist/lib/api/estimation/shipper-planning.js +208 -0
- package/dist/lib/api/estimation/wastage.d.ts +40 -0
- package/dist/lib/api/estimation/wastage.js +40 -0
- package/dist/lib/api/index.d.ts +7 -0
- package/dist/lib/api/index.js +17 -0
- package/dist/lib/api/integration/proxy.d.ts +7 -0
- package/dist/lib/api/integration/proxy.js +34 -0
- package/dist/lib/api/master/category.d.ts +126 -0
- package/dist/lib/api/master/category.js +208 -0
- package/dist/lib/api/master/company.d.ts +167 -0
- package/dist/lib/api/master/company.js +368 -0
- package/dist/lib/api/master/hsn.d.ts +36 -0
- package/dist/lib/api/master/hsn.js +54 -0
- package/dist/lib/api/master/index.d.ts +12 -0
- package/dist/lib/api/master/index.js +27 -0
- package/dist/lib/api/master/item.d.ts +158 -0
- package/dist/lib/api/master/item.js +135 -0
- package/dist/lib/api/master/ledger.d.ts +173 -0
- package/dist/lib/api/master/ledger.js +391 -0
- package/dist/lib/api/master/logistics.d.ts +117 -0
- package/dist/lib/api/master/logistics.js +107 -0
- package/dist/lib/api/master/machine.d.ts +406 -0
- package/dist/lib/api/master/machine.js +570 -0
- package/dist/lib/api/master/material-group.d.ts +97 -0
- package/dist/lib/api/master/material-group.js +96 -0
- package/dist/lib/api/master/other.d.ts +65 -0
- package/dist/lib/api/master/other.js +56 -0
- package/dist/lib/api/master/process-types.d.ts +178 -0
- package/dist/lib/api/master/process-types.js +4 -0
- package/dist/lib/api/master/process.d.ts +94 -0
- package/dist/lib/api/master/process.js +124 -0
- package/dist/lib/api/master/production-units.d.ts +10 -0
- package/dist/lib/api/master/production-units.js +15 -0
- package/dist/lib/api/master/rate.d.ts +174 -0
- package/dist/lib/api/master/rate.js +196 -0
- package/dist/lib/api/master/tool.d.ts +48 -0
- package/dist/lib/api/master/tool.js +80 -0
- package/dist/lib/api/master/user.d.ts +473 -0
- package/dist/lib/api/master/user.js +147 -0
- package/dist/lib/api/settings/erp-parameters.d.ts +33 -0
- package/dist/lib/api/settings/erp-parameters.js +61 -0
- package/dist/lib/api/utility/index.d.ts +1 -0
- package/dist/lib/api/utility/index.js +5 -0
- package/dist/lib/api/utility/menu.d.ts +32 -0
- package/dist/lib/api/utility/menu.js +128 -0
- package/dist/lib/auth.d.ts +3 -0
- package/dist/lib/auth.js +7 -0
- package/dist/lib/pwa.d.ts +8 -0
- package/dist/lib/pwa.js +53 -0
- package/dist/lib/react-query-config.d.ts +140 -0
- package/dist/lib/react-query-config.js +131 -0
- package/dist/lib/security/audit-logger.d.ts +71 -0
- package/dist/lib/security/audit-logger.js +173 -0
- package/dist/lib/security/rate-limiter.d.ts +28 -0
- package/dist/lib/security/rate-limiter.js +118 -0
- package/dist/lib/server-url.d.ts +18 -0
- package/dist/lib/server-url.js +70 -0
- package/dist/lib/svg-utils.d.ts +62 -0
- package/dist/lib/svg-utils.js +206 -0
- package/dist/lib/theme/types.d.ts +109 -0
- package/dist/lib/theme/types.js +231 -0
- package/dist/lib/theme/utils.d.ts +73 -0
- package/dist/lib/theme/utils.js +343 -0
- package/dist/lib/types/index.d.ts +58 -0
- package/dist/lib/types/index.js +2 -0
- package/dist/lib/utils/attachment-loader.d.ts +27 -0
- package/dist/lib/utils/attachment-loader.js +79 -0
- package/dist/lib/utils/client-lead-utils.d.ts +24 -0
- package/dist/lib/utils/client-lead-utils.js +56 -0
- package/dist/lib/utils/device-detection.d.ts +19 -0
- package/dist/lib/utils/device-detection.js +105 -0
- package/dist/lib/utils/logout-cleanup.d.ts +63 -0
- package/dist/lib/utils/logout-cleanup.js +297 -0
- package/dist/lib/utils/planning-prefs.d.ts +10 -0
- package/dist/lib/utils/planning-prefs.js +27 -0
- package/dist/lib/utils.d.ts +20 -0
- package/dist/lib/utils.js +60 -0
- package/dist/lib/vision/dieline-extractor.d.ts +38 -0
- package/dist/lib/vision/dieline-extractor.js +313 -0
- package/dist/lib/vision/reference-grid.d.ts +52 -0
- package/dist/lib/vision/reference-grid.js +241 -0
- package/dist/locales/de.json +79 -0
- package/dist/locales/en.json +2217 -0
- package/dist/locales/es.json +79 -0
- package/dist/locales/fr.json +78 -0
- package/dist/locales/hi.json +1599 -0
- package/dist/providers.d.ts +14 -0
- package/dist/providers.js +15 -0
- package/dist/services/GlobalLoadingService.d.ts +216 -0
- package/dist/services/GlobalLoadingService.js +216 -0
- package/dist/styles/grid-themes.css +346 -0
- package/dist/styles/index.css +5 -0
- package/dist/{sidebar-scrollbar-NBCB2OO2.css → styles/sidebar-scrollbar.css} +45 -45
- package/dist/styles/tokens.css +713 -0
- package/dist/types/approval.d.ts +201 -0
- package/dist/types/approval.js +19 -0
- package/dist/types/audit.d.ts +87 -0
- package/dist/types/audit.js +47 -0
- package/dist/types/draft.d.ts +142 -0
- package/dist/types/draft.js +19 -0
- package/dist/types/master.d.ts +154 -0
- package/dist/types/master.js +3 -0
- package/dist/types/shipper-planning.d.ts +277 -0
- package/dist/types/shipper-planning.js +6 -0
- package/package.json +187 -119
- package/dist/chunk-4PEFU7N7.js +0 -16
- package/dist/chunk-4PEFU7N7.js.map +0 -1
- package/dist/de-EKT7SUK5.js +0 -106
- package/dist/de-EKT7SUK5.js.map +0 -1
- package/dist/en-QRFSIEHD.js +0 -1685
- package/dist/en-QRFSIEHD.js.map +0 -1
- package/dist/es-KHZMWGUI.js +0 -106
- package/dist/es-KHZMWGUI.js.map +0 -1
- package/dist/fr-X2XUXSHK.js +0 -105
- package/dist/fr-X2XUXSHK.js.map +0 -1
- package/dist/hi-YRATOE5Q.js +0 -415
- package/dist/hi-YRATOE5Q.js.map +0 -1
- package/dist/index.cjs +0 -28216
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -3173
- package/dist/index.js.map +0 -1
- /package/{src → dist/cjs}/styles/index.css +0 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
// Core API Client
|
|
3
|
+
// Handles HTTP requests with authentication and session management
|
|
4
|
+
import { getGlobalAPIConfig, getBasicAuthHeader, buildAPIURL, setGlobalAPIConfig } from './config.js';
|
|
5
|
+
import { safeJSONParse } from './utils.js';
|
|
6
|
+
// Global session-expired handler — set by SessionExpiryMonitor or any top-level component
|
|
7
|
+
// When a 401 or "session not found" response is received, this callback is invoked to redirect to login
|
|
8
|
+
let _onSessionExpired = null;
|
|
9
|
+
export function setSessionExpiredHandler(handler) {
|
|
10
|
+
_onSessionExpired = handler;
|
|
11
|
+
}
|
|
12
|
+
let _isSigningOut = false;
|
|
13
|
+
export function handleSessionExpired() {
|
|
14
|
+
if (_isSigningOut || !_onSessionExpired)
|
|
15
|
+
return;
|
|
16
|
+
_isSigningOut = true;
|
|
17
|
+
try {
|
|
18
|
+
_onSessionExpired();
|
|
19
|
+
}
|
|
20
|
+
finally {
|
|
21
|
+
// Reset after a delay so multiple rapid 401s don't fire multiple times
|
|
22
|
+
setTimeout(() => { _isSigningOut = false; }, 5000);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* APIClient class for making HTTP requests to the backend API
|
|
27
|
+
*/
|
|
28
|
+
class APIClient {
|
|
29
|
+
/**
|
|
30
|
+
* Make a generic API request
|
|
31
|
+
* @param endpoint - API endpoint (relative to base URL)
|
|
32
|
+
* @param options - Fetch options
|
|
33
|
+
* @param sessionData - Optional session data for CompanyID and UserID headers
|
|
34
|
+
* @returns Promise<APIResponse>
|
|
35
|
+
*/
|
|
36
|
+
static async request(endpoint, options = {}, sessionData, baseURLOverride, externalSignal, timeoutMs) {
|
|
37
|
+
try {
|
|
38
|
+
// Check if API configuration is set
|
|
39
|
+
let config = getGlobalAPIConfig();
|
|
40
|
+
// If not configured, try to initialize with session company credentials
|
|
41
|
+
if (!config && sessionData?.user) {
|
|
42
|
+
const baseURL = process.env.NEXT_PUBLIC_API_BASE_URL;
|
|
43
|
+
const companyUsername = sessionData.user.companyUsername;
|
|
44
|
+
const companyPassword = sessionData.user.companyPassword;
|
|
45
|
+
if (baseURL && companyUsername && companyPassword) {
|
|
46
|
+
setGlobalAPIConfig({
|
|
47
|
+
baseURL,
|
|
48
|
+
username: companyUsername,
|
|
49
|
+
password: companyPassword,
|
|
50
|
+
timeout: 60000
|
|
51
|
+
});
|
|
52
|
+
config = getGlobalAPIConfig();
|
|
53
|
+
}
|
|
54
|
+
else if (baseURL) {
|
|
55
|
+
// No company credentials in session - user needs to re-login
|
|
56
|
+
console.error('❌ [APIClient] No company credentials in session');
|
|
57
|
+
console.error('❌ [APIClient] User session is outdated - please log out and log back in');
|
|
58
|
+
throw new Error('Session outdated: Please log out and log back in to refresh your credentials');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Build complete URL (use override if provided)
|
|
62
|
+
let url;
|
|
63
|
+
if (baseURLOverride) {
|
|
64
|
+
const base = baseURLOverride.endsWith('/') ? baseURLOverride : `${baseURLOverride}/`;
|
|
65
|
+
const clean = endpoint.startsWith('/') ? endpoint.slice(1) : endpoint;
|
|
66
|
+
url = `${base}${clean}`;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
url = buildAPIURL(endpoint);
|
|
70
|
+
}
|
|
71
|
+
if (!url) {
|
|
72
|
+
throw new Error('API configuration not set. Please configure the API connection.');
|
|
73
|
+
}
|
|
74
|
+
// Get Basic Auth header from config
|
|
75
|
+
const authHeader = getBasicAuthHeader();
|
|
76
|
+
if (!authHeader) {
|
|
77
|
+
}
|
|
78
|
+
// Build session-specific headers
|
|
79
|
+
const sessionHeaders = {};
|
|
80
|
+
// Use session CompanyID - handle both uppercase and lowercase
|
|
81
|
+
const companyId = sessionData?.user?.CompanyID || sessionData?.user?.companyID;
|
|
82
|
+
if (!companyId) {
|
|
83
|
+
console.error('❌ [APIClient] CompanyID not found in session:', {
|
|
84
|
+
hasSessionData: !!sessionData,
|
|
85
|
+
hasUser: !!sessionData?.user,
|
|
86
|
+
userKeys: sessionData?.user ? Object.keys(sessionData.user) : []
|
|
87
|
+
});
|
|
88
|
+
throw new Error('CompanyID not found in session. Please login again.');
|
|
89
|
+
}
|
|
90
|
+
sessionHeaders['CompanyID'] = companyId.toString();
|
|
91
|
+
// Use session UserID - handle both uppercase and lowercase
|
|
92
|
+
const userId = sessionData?.user?.UserID || sessionData?.user?.userID;
|
|
93
|
+
if (!userId) {
|
|
94
|
+
console.error('❌ [APIClient] UserID not found in session:', {
|
|
95
|
+
hasSessionData: !!sessionData,
|
|
96
|
+
hasUser: !!sessionData?.user,
|
|
97
|
+
userKeys: sessionData?.user ? Object.keys(sessionData.user) : []
|
|
98
|
+
});
|
|
99
|
+
throw new Error('UserID not found in session. Please login again.');
|
|
100
|
+
}
|
|
101
|
+
sessionHeaders['UserID'] = userId.toString();
|
|
102
|
+
// Add ProductionUnitID header - REQUIRED
|
|
103
|
+
// ALWAYS use session's ProductionUnitID in headers (logged-in user's production unit)
|
|
104
|
+
// Form-selected ProductionUnitID should be sent in the request body/payload separately
|
|
105
|
+
const productionUnitId = sessionData?.productionUnitId ||
|
|
106
|
+
sessionData?.user?.ProductionUnitID ||
|
|
107
|
+
sessionData?.user?.productionUnitID;
|
|
108
|
+
if (!productionUnitId) {
|
|
109
|
+
console.error('❌ [APIClient] ProductionUnitID not found in session:', {
|
|
110
|
+
hasSessionData: !!sessionData,
|
|
111
|
+
hasUser: !!sessionData?.user,
|
|
112
|
+
userKeys: sessionData?.user ? Object.keys(sessionData.user) : []
|
|
113
|
+
});
|
|
114
|
+
throw new Error('ProductionUnitID not found in session. Please login again.');
|
|
115
|
+
}
|
|
116
|
+
sessionHeaders['ProductionUnitID'] = productionUnitId.toString();
|
|
117
|
+
// Add Financial Year header - REQUIRED (format: "2025-2026")
|
|
118
|
+
const fYear = sessionData?.fYear || sessionData?.user?.FYear || sessionData?.user?.fYear;
|
|
119
|
+
if (!fYear) {
|
|
120
|
+
console.error('❌ [APIClient] FYear not found in session:', {
|
|
121
|
+
hasSessionData: !!sessionData,
|
|
122
|
+
hasUser: !!sessionData?.user,
|
|
123
|
+
userKeys: sessionData?.user ? Object.keys(sessionData.user) : []
|
|
124
|
+
});
|
|
125
|
+
throw new Error('FYear not found in session. Please login again.');
|
|
126
|
+
}
|
|
127
|
+
sessionHeaders['FYear'] = fYear;
|
|
128
|
+
// Merge headers
|
|
129
|
+
const headers = {
|
|
130
|
+
'Content-Type': 'application/json',
|
|
131
|
+
'Accept': 'application/json',
|
|
132
|
+
'Cache-Control': 'no-cache, no-store, must-revalidate', // Prevent caching
|
|
133
|
+
'Pragma': 'no-cache', // HTTP/1.0 compatibility
|
|
134
|
+
'Expires': '0', // Proxies
|
|
135
|
+
...sessionHeaders,
|
|
136
|
+
...(options.headers || {})
|
|
137
|
+
};
|
|
138
|
+
// Add Authorization header only if it exists
|
|
139
|
+
if (authHeader) {
|
|
140
|
+
headers['Authorization'] = authHeader;
|
|
141
|
+
}
|
|
142
|
+
// Per-call timeoutMs overrides the config default. Long-running workloads
|
|
143
|
+
// (chat, multi-turn AI) need to pass an explicit higher value — the 60s
|
|
144
|
+
// default aborts legit requests mid-flight and leaves half-finished turns.
|
|
145
|
+
const configData = getGlobalAPIConfig();
|
|
146
|
+
const timeout = timeoutMs ?? configData?.timeout ?? 60000;
|
|
147
|
+
// If caller passed an external signal (user cancel), combine with the timeout
|
|
148
|
+
// signal so either can cancel the fetch.
|
|
149
|
+
const timeoutSignal = AbortSignal.timeout(timeout);
|
|
150
|
+
const signal = externalSignal
|
|
151
|
+
? AbortSignal.any?.([timeoutSignal, externalSignal]) ?? timeoutSignal
|
|
152
|
+
: timeoutSignal;
|
|
153
|
+
const startedAt = Date.now();
|
|
154
|
+
const response = await fetch(url, {
|
|
155
|
+
...options,
|
|
156
|
+
headers,
|
|
157
|
+
signal,
|
|
158
|
+
cache: 'no-store' // Disable HTTP caching - always fetch fresh data
|
|
159
|
+
});
|
|
160
|
+
globalThis.__reportRequestMs?.(Date.now() - startedAt);
|
|
161
|
+
// Handle non-OK responses
|
|
162
|
+
if (!response.ok) {
|
|
163
|
+
let errorMessage = `API error: ${response.status} ${response.statusText}`;
|
|
164
|
+
try {
|
|
165
|
+
const errorText = await response.text();
|
|
166
|
+
if (errorText) {
|
|
167
|
+
errorMessage = errorText;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// Use default error message if can't parse response
|
|
172
|
+
}
|
|
173
|
+
// Only auto-logout on explicit session expiry messages, NOT on generic 401s
|
|
174
|
+
// A 401 could mean the endpoint doesn't exist or requires different auth — not necessarily session expired
|
|
175
|
+
const lowerErr = errorMessage.toLowerCase();
|
|
176
|
+
if (lowerErr.includes('session not found') || lowerErr.includes('session expired')) {
|
|
177
|
+
handleSessionExpired();
|
|
178
|
+
return { success: false, error: 'Session expired. Redirecting to login...', status: response.status };
|
|
179
|
+
}
|
|
180
|
+
if (response.status === 401) {
|
|
181
|
+
return { success: false, error: errorMessage || 'Unauthorized', status: 401 };
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
success: false,
|
|
185
|
+
error: errorMessage,
|
|
186
|
+
status: response.status
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
// Parse response
|
|
190
|
+
let data;
|
|
191
|
+
try {
|
|
192
|
+
const responseText = await response.text();
|
|
193
|
+
if (responseText && responseText.trim() !== '') {
|
|
194
|
+
// Use safeJSONParse to handle double/triple encoding automatically
|
|
195
|
+
data = safeJSONParse(responseText);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch (parseError) {
|
|
199
|
+
// If JSON parsing fails, return error
|
|
200
|
+
return {
|
|
201
|
+
success: false,
|
|
202
|
+
error: 'Failed to parse API response',
|
|
203
|
+
status: response.status
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
// Capture useful response headers (opt-in)
|
|
207
|
+
const responseHeaders = {};
|
|
208
|
+
const userMsgId = response.headers.get('X-User-MessageID');
|
|
209
|
+
if (userMsgId)
|
|
210
|
+
responseHeaders['X-User-MessageID'] = userMsgId;
|
|
211
|
+
const convId = response.headers.get('X-Conversation-ID');
|
|
212
|
+
if (convId)
|
|
213
|
+
responseHeaders['X-Conversation-ID'] = convId;
|
|
214
|
+
// Natural-sort production-unit list responses by name so every dropdown is consistent.
|
|
215
|
+
if (Array.isArray(data) && /productionunit/i.test(endpoint)) {
|
|
216
|
+
const nameOf = (r) => String(r?.ProductionUnitName ?? r?.productionUnitName ?? r?.PlantName ?? r?.plantName ?? r?.Name ?? r?.name ?? '');
|
|
217
|
+
const c = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });
|
|
218
|
+
data = [...data].sort((a, b) => c.compare(nameOf(a), nameOf(b)));
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
success: true,
|
|
222
|
+
data,
|
|
223
|
+
status: response.status,
|
|
224
|
+
responseHeaders: Object.keys(responseHeaders).length > 0 ? responseHeaders : undefined
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
// Handle network errors and timeouts
|
|
229
|
+
let errorMessage = 'Unable to complete request. Please try again.';
|
|
230
|
+
if (error instanceof Error) {
|
|
231
|
+
// AbortSignal.timeout() throws a TimeoutError (not AbortError); a caller-cancelled
|
|
232
|
+
// request throws AbortError. Both land here — distinguish by the external signal.
|
|
233
|
+
const isTimeout = error.name === 'TimeoutError' || error.message.toLowerCase().includes('timed out');
|
|
234
|
+
if (error.name === 'AbortError' || isTimeout) {
|
|
235
|
+
// If the caller's own signal fired, surface a clean "aborted" signal so callers can detect user cancel.
|
|
236
|
+
if (externalSignal?.aborted) {
|
|
237
|
+
return { success: false, error: 'aborted', aborted: true };
|
|
238
|
+
}
|
|
239
|
+
errorMessage = 'Request timed out. The server is taking too long to respond. Please check your internet connection and try again.';
|
|
240
|
+
}
|
|
241
|
+
else if (error.message.includes('fetch') || error.message.includes('Failed to fetch')) {
|
|
242
|
+
errorMessage = 'Unable to connect to server. Please check your internet connection and try again.';
|
|
243
|
+
}
|
|
244
|
+
else if (error.message.includes('NetworkError')) {
|
|
245
|
+
errorMessage = 'Network connection lost. Please check your internet connection and try again.';
|
|
246
|
+
}
|
|
247
|
+
else if (error.message.includes('Session outdated') || error.message.includes('not found in session')) {
|
|
248
|
+
handleSessionExpired();
|
|
249
|
+
errorMessage = 'Session expired. Redirecting to login...';
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
errorMessage = error.message;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return {
|
|
256
|
+
success: false,
|
|
257
|
+
error: errorMessage
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Make a GET request
|
|
263
|
+
*/
|
|
264
|
+
static async get(endpoint, sessionData, baseURLOverride) {
|
|
265
|
+
return this.request(endpoint, { method: 'GET' }, sessionData, baseURLOverride);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Make a POST request
|
|
269
|
+
*/
|
|
270
|
+
static async post(endpoint, data, sessionData, baseURLOverride, signal, timeoutMs) {
|
|
271
|
+
return this.request(endpoint, {
|
|
272
|
+
method: 'POST',
|
|
273
|
+
body: data ? JSON.stringify(data) : undefined
|
|
274
|
+
}, sessionData, baseURLOverride, signal, timeoutMs);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Make a PUT request
|
|
278
|
+
*/
|
|
279
|
+
static async put(endpoint, data, sessionData, baseURLOverride) {
|
|
280
|
+
return this.request(endpoint, {
|
|
281
|
+
method: 'PUT',
|
|
282
|
+
body: data ? JSON.stringify(data) : undefined
|
|
283
|
+
}, sessionData, baseURLOverride);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Make a DELETE request
|
|
287
|
+
*/
|
|
288
|
+
static async delete(endpoint, sessionData, baseURLOverride) {
|
|
289
|
+
return this.request(endpoint, { method: 'DELETE' }, sessionData, baseURLOverride);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Make a PATCH request
|
|
293
|
+
*/
|
|
294
|
+
static async patch(endpoint, data, sessionData) {
|
|
295
|
+
return this.request(endpoint, {
|
|
296
|
+
method: 'PATCH',
|
|
297
|
+
body: data ? JSON.stringify(data) : undefined
|
|
298
|
+
}, sessionData);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
export default APIClient;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { APIConfig } from './types.js';
|
|
2
|
+
export interface StoredAPIConfig {
|
|
3
|
+
baseURL: string;
|
|
4
|
+
username: string;
|
|
5
|
+
password: string;
|
|
6
|
+
authToken: string;
|
|
7
|
+
timeout: number;
|
|
8
|
+
lastUpdated: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Set the global API configuration
|
|
12
|
+
* This will be used for all API calls across the application
|
|
13
|
+
*/
|
|
14
|
+
export declare function setGlobalAPIConfig(config: APIConfig): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get the current global API configuration
|
|
17
|
+
* Returns null if not configured
|
|
18
|
+
*/
|
|
19
|
+
export declare function getGlobalAPIConfig(): StoredAPIConfig | null;
|
|
20
|
+
/**
|
|
21
|
+
* Clear the global API configuration
|
|
22
|
+
*/
|
|
23
|
+
export declare function clearGlobalAPIConfig(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Check if API is configured
|
|
26
|
+
*/
|
|
27
|
+
export declare function isAPIConfigured(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Get Basic Auth header for the current configuration
|
|
30
|
+
*/
|
|
31
|
+
export declare function getBasicAuthHeader(): string | null;
|
|
32
|
+
/**
|
|
33
|
+
* Build a complete API URL from a relative endpoint
|
|
34
|
+
* @param endpoint - Relative endpoint (e.g., 'api/GetLoginDetails')
|
|
35
|
+
* @returns Complete URL or null if not configured
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildAPIURL(endpoint: string): string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Get default fetch options with Basic Auth header
|
|
40
|
+
*/
|
|
41
|
+
export declare function getDefaultAPIOptions(): RequestInit | null;
|
|
42
|
+
/**
|
|
43
|
+
* Initialize API configuration automatically from environment variables
|
|
44
|
+
* This should be called once when the app starts
|
|
45
|
+
*/
|
|
46
|
+
export declare function initializeAPI(): boolean;
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
// Global API Configuration System
|
|
3
|
+
// Store once, use everywhere
|
|
4
|
+
// Default configuration from environment variables
|
|
5
|
+
// Note: username/password are set dynamically during login from session
|
|
6
|
+
const getDefaultConfig = () => ({
|
|
7
|
+
baseURL: process.env.NEXT_PUBLIC_API_BASE_URL || '',
|
|
8
|
+
username: '', // Set during login from session
|
|
9
|
+
password: '', // Set during login from session
|
|
10
|
+
timeout: 60000 // 60 seconds for complex planning calculations
|
|
11
|
+
});
|
|
12
|
+
// Global configuration state
|
|
13
|
+
let globalConfig = null;
|
|
14
|
+
// Storage keys
|
|
15
|
+
const CONFIG_STORAGE_KEY = 'api-global-config';
|
|
16
|
+
const CONFIG_STORAGE_KEY_ENCRYPTED = 'api-global-config-enc';
|
|
17
|
+
// Simple encryption for stored credentials (browser only)
|
|
18
|
+
const encryptCredentials = (data) => {
|
|
19
|
+
if (typeof window === 'undefined')
|
|
20
|
+
return data;
|
|
21
|
+
try {
|
|
22
|
+
return btoa(data);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const decryptCredentials = (data) => {
|
|
29
|
+
if (typeof window === 'undefined')
|
|
30
|
+
return data;
|
|
31
|
+
try {
|
|
32
|
+
return atob(data);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return data;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Set the global API configuration
|
|
40
|
+
* This will be used for all API calls across the application
|
|
41
|
+
*/
|
|
42
|
+
export function setGlobalAPIConfig(config) {
|
|
43
|
+
// Validate configuration
|
|
44
|
+
if (!config.baseURL) {
|
|
45
|
+
throw new Error('Base URL is required for API configuration');
|
|
46
|
+
}
|
|
47
|
+
// With multi-tenant, username/password are optional (set during login)
|
|
48
|
+
// Legacy: Still validate if both are provided or both are empty
|
|
49
|
+
if ((!config.username && config.password) || (config.username && !config.password)) {
|
|
50
|
+
throw new Error('Username and password must both be provided or both be empty');
|
|
51
|
+
}
|
|
52
|
+
// Validate URL format
|
|
53
|
+
try {
|
|
54
|
+
new URL(config.baseURL);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
throw new Error('Invalid base URL format');
|
|
58
|
+
}
|
|
59
|
+
// Ensure base URL ends with /
|
|
60
|
+
const normalizedBaseURL = config.baseURL.endsWith('/')
|
|
61
|
+
? config.baseURL
|
|
62
|
+
: config.baseURL + '/';
|
|
63
|
+
// Pre-compute the Basic Auth token so raw password doesn't need to be stored
|
|
64
|
+
let authToken = '';
|
|
65
|
+
if (config.username && config.password) {
|
|
66
|
+
try {
|
|
67
|
+
authToken = btoa(`${config.username}:${config.password}`);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Silent fail
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const storedConfig = {
|
|
74
|
+
baseURL: normalizedBaseURL,
|
|
75
|
+
username: config.username,
|
|
76
|
+
password: '', // Don't persist raw password in memory
|
|
77
|
+
authToken,
|
|
78
|
+
timeout: config.timeout || 60000,
|
|
79
|
+
lastUpdated: new Date().toISOString()
|
|
80
|
+
};
|
|
81
|
+
globalConfig = storedConfig;
|
|
82
|
+
// Store configuration securely (browser only)
|
|
83
|
+
if (typeof window !== 'undefined') {
|
|
84
|
+
try {
|
|
85
|
+
// Store non-sensitive data in regular storage
|
|
86
|
+
const publicConfig = {
|
|
87
|
+
baseURL: storedConfig.baseURL,
|
|
88
|
+
timeout: storedConfig.timeout,
|
|
89
|
+
lastUpdated: storedConfig.lastUpdated
|
|
90
|
+
};
|
|
91
|
+
sessionStorage.setItem(CONFIG_STORAGE_KEY, JSON.stringify(publicConfig));
|
|
92
|
+
// Store only the pre-computed auth token, not the raw password
|
|
93
|
+
const sensitiveConfig = {
|
|
94
|
+
username: storedConfig.username,
|
|
95
|
+
authToken: storedConfig.authToken
|
|
96
|
+
};
|
|
97
|
+
const encryptedCredentials = encryptCredentials(JSON.stringify(sensitiveConfig));
|
|
98
|
+
sessionStorage.setItem(CONFIG_STORAGE_KEY_ENCRYPTED, encryptedCredentials);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
// Silent fail for storage errors
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get the current global API configuration
|
|
107
|
+
* Returns null if not configured
|
|
108
|
+
*/
|
|
109
|
+
export function getGlobalAPIConfig() {
|
|
110
|
+
if (globalConfig) {
|
|
111
|
+
return globalConfig;
|
|
112
|
+
}
|
|
113
|
+
// Try to restore from storage (browser only)
|
|
114
|
+
if (typeof window !== 'undefined') {
|
|
115
|
+
try {
|
|
116
|
+
const publicConfigStr = sessionStorage.getItem(CONFIG_STORAGE_KEY);
|
|
117
|
+
const encryptedCredentials = sessionStorage.getItem(CONFIG_STORAGE_KEY_ENCRYPTED);
|
|
118
|
+
if (publicConfigStr && encryptedCredentials) {
|
|
119
|
+
const publicConfig = JSON.parse(publicConfigStr);
|
|
120
|
+
const sensitiveConfig = JSON.parse(decryptCredentials(encryptedCredentials));
|
|
121
|
+
// Compute auth token: use stored token if available, fall back to legacy password for old sessions
|
|
122
|
+
let authToken = sensitiveConfig.authToken || '';
|
|
123
|
+
if (!authToken && sensitiveConfig.username && sensitiveConfig.password) {
|
|
124
|
+
try {
|
|
125
|
+
authToken = btoa(`${sensitiveConfig.username}:${sensitiveConfig.password}`);
|
|
126
|
+
}
|
|
127
|
+
catch { }
|
|
128
|
+
}
|
|
129
|
+
globalConfig = {
|
|
130
|
+
...publicConfig,
|
|
131
|
+
username: sensitiveConfig.username || '',
|
|
132
|
+
password: '', // Never restore raw password
|
|
133
|
+
authToken
|
|
134
|
+
};
|
|
135
|
+
return globalConfig;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
clearGlobalAPIConfig();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Do NOT auto-initialize from environment variables
|
|
143
|
+
// Credentials are set during login from session (multi-tenant mode)
|
|
144
|
+
// This prevents authentication failures
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Clear the global API configuration
|
|
149
|
+
*/
|
|
150
|
+
export function clearGlobalAPIConfig() {
|
|
151
|
+
globalConfig = null;
|
|
152
|
+
if (typeof window !== 'undefined') {
|
|
153
|
+
sessionStorage.removeItem(CONFIG_STORAGE_KEY);
|
|
154
|
+
sessionStorage.removeItem(CONFIG_STORAGE_KEY_ENCRYPTED);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Check if API is configured
|
|
159
|
+
*/
|
|
160
|
+
export function isAPIConfigured() {
|
|
161
|
+
return getGlobalAPIConfig() !== null;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get Basic Auth header for the current configuration
|
|
165
|
+
*/
|
|
166
|
+
export function getBasicAuthHeader() {
|
|
167
|
+
const config = getGlobalAPIConfig();
|
|
168
|
+
if (!config)
|
|
169
|
+
return null;
|
|
170
|
+
// Use pre-computed auth token — raw password is never stored
|
|
171
|
+
if (config.authToken) {
|
|
172
|
+
return `Basic ${config.authToken}`;
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Build a complete API URL from a relative endpoint
|
|
178
|
+
* @param endpoint - Relative endpoint (e.g., 'api/GetLoginDetails')
|
|
179
|
+
* @returns Complete URL or null if not configured
|
|
180
|
+
*/
|
|
181
|
+
export function buildAPIURL(endpoint) {
|
|
182
|
+
const config = getGlobalAPIConfig();
|
|
183
|
+
if (!config) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
// Remove leading slash from endpoint if present
|
|
187
|
+
const cleanEndpoint = endpoint.startsWith('/') ? endpoint.slice(1) : endpoint;
|
|
188
|
+
// Ensure baseURL ends with slash
|
|
189
|
+
const baseURL = config.baseURL.endsWith('/') ? config.baseURL : `${config.baseURL}/`;
|
|
190
|
+
const fullURL = `${baseURL}${cleanEndpoint}`;
|
|
191
|
+
return fullURL;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get default fetch options with Basic Auth header
|
|
195
|
+
*/
|
|
196
|
+
export function getDefaultAPIOptions() {
|
|
197
|
+
const config = getGlobalAPIConfig();
|
|
198
|
+
if (!config)
|
|
199
|
+
return null;
|
|
200
|
+
const authHeader = getBasicAuthHeader();
|
|
201
|
+
if (!authHeader)
|
|
202
|
+
return null;
|
|
203
|
+
return {
|
|
204
|
+
headers: {
|
|
205
|
+
'Content-Type': 'application/json',
|
|
206
|
+
'Accept': 'application/json',
|
|
207
|
+
'Authorization': authHeader
|
|
208
|
+
},
|
|
209
|
+
signal: AbortSignal.timeout(config.timeout)
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
// API Initialization flag
|
|
213
|
+
let isInitialized = false;
|
|
214
|
+
/**
|
|
215
|
+
* Initialize API configuration automatically from environment variables
|
|
216
|
+
* This should be called once when the app starts
|
|
217
|
+
*/
|
|
218
|
+
export function initializeAPI() {
|
|
219
|
+
if (isInitialized)
|
|
220
|
+
return true;
|
|
221
|
+
try {
|
|
222
|
+
// Check if already configured
|
|
223
|
+
if (isAPIConfigured()) {
|
|
224
|
+
isInitialized = true;
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
// Get configuration (getGlobalAPIConfig will auto-load from env)
|
|
228
|
+
const config = getGlobalAPIConfig();
|
|
229
|
+
if (config) {
|
|
230
|
+
isInitialized = true;
|
|
231
|
+
return true;
|
|
232
|
+
}
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { default as APIClient } from './client.js';
|
|
2
|
+
export { default } from './client.js';
|
|
3
|
+
export { setGlobalAPIConfig, getGlobalAPIConfig, clearGlobalAPIConfig, isAPIConfigured, getBasicAuthHeader, buildAPIURL, getDefaultAPIOptions, initializeAPI, type StoredAPIConfig } from './config.js';
|
|
4
|
+
export { loginAPI, pingAPI } from './auth-helpers.js';
|
|
5
|
+
export * from './utils.js';
|
|
6
|
+
export type { APIResponse, APIConfig, Category, Client, SalesPerson, Quality, GSMData, MillData, FinishData, BoardBrandData, CoatingData, MachineData, LoginRequest, UserData, LoginResponse } from './types.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
// Core API exports
|
|
3
|
+
// Central export point for all core API utilities
|
|
4
|
+
// Export APIClient as both named and default export
|
|
5
|
+
export { default as APIClient } from './client.js';
|
|
6
|
+
export { default } from './client.js';
|
|
7
|
+
// Export configuration functions
|
|
8
|
+
export { setGlobalAPIConfig, getGlobalAPIConfig, clearGlobalAPIConfig, isAPIConfigured, getBasicAuthHeader, buildAPIURL, getDefaultAPIOptions, initializeAPI } from './config.js';
|
|
9
|
+
// Export auth helpers
|
|
10
|
+
export { loginAPI, pingAPI } from './auth-helpers.js';
|
|
11
|
+
export * from './utils.js';
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import type { Session } from 'next-auth';
|
|
3
|
+
/**
|
|
4
|
+
* Result of session validation
|
|
5
|
+
*/
|
|
6
|
+
interface SessionValidationResult {
|
|
7
|
+
valid: boolean;
|
|
8
|
+
session?: Session;
|
|
9
|
+
response?: NextResponse;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Validate session for API routes
|
|
13
|
+
* Checks if session exists and is not expired
|
|
14
|
+
*
|
|
15
|
+
* @returns SessionValidationResult with session if valid, or error response if invalid
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* export async function POST(req: NextRequest) {
|
|
20
|
+
* const validation = await validateSession()
|
|
21
|
+
* if (!validation.valid) return validation.response!
|
|
22
|
+
*
|
|
23
|
+
* const { session } = validation
|
|
24
|
+
* // ... rest of API logic using session
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateSession(): Promise<SessionValidationResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Validate session and extract user data
|
|
31
|
+
* Convenience function that returns user data directly
|
|
32
|
+
*
|
|
33
|
+
* @returns User data if session valid, or error response if invalid
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* export async function POST(req: NextRequest) {
|
|
38
|
+
* const result = await validateSessionAndGetUser()
|
|
39
|
+
* if ('response' in result) return result.response
|
|
40
|
+
*
|
|
41
|
+
* const { user, session } = result
|
|
42
|
+
* // ... rest of API logic using user and session
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function validateSessionAndGetUser(): Promise<{
|
|
47
|
+
response: NextResponse<unknown>;
|
|
48
|
+
user?: undefined;
|
|
49
|
+
session?: undefined;
|
|
50
|
+
} | {
|
|
51
|
+
user: import("next-auth").User;
|
|
52
|
+
session: Session;
|
|
53
|
+
response?: undefined;
|
|
54
|
+
}>;
|
|
55
|
+
export {};
|