Merge pull request 'waseem' (#26) from waseem into development
Reviewed-on: https://gitea.maskantech.in/gitea_admin/aeroresolve_frontend/pulls/26
This commit is contained in:
@@ -201,9 +201,9 @@ export function ActionCategoryManager() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-6 font-sans">
|
<div className="w-full space-y-6 font-sans">
|
||||||
{/* Top Banner / Controls */}
|
{/* Top Banner / Controls */}
|
||||||
<div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4 bg-white p-5 rounded-[16px] border border-gray-200 shadow-sm">
|
<div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4 bg-white p-5 rounded-[20px] border border-gray-100 shadow-sm">
|
||||||
<div>
|
<div>
|
||||||
<h3 className="text-[17px] font-bold text-[#0F172B] flex items-center gap-2">
|
<h3 className="text-[17px] font-bold text-[#0F172B] flex items-center gap-2">
|
||||||
<FolderPlusIcon size={22} className="text-[#1E7D5C]" />
|
<FolderPlusIcon size={22} className="text-[#1E7D5C]" />
|
||||||
@@ -219,7 +219,7 @@ export function ActionCategoryManager() {
|
|||||||
variant="primary"
|
variant="primary"
|
||||||
onClick={handleOpenCreate}
|
onClick={handleOpenCreate}
|
||||||
leftIcon={<PlusIcon size={18} />}
|
leftIcon={<PlusIcon size={18} />}
|
||||||
className="!bg-[#1E7D5C] hover:!bg-[#17664B] !rounded-[12px] font-semibold text-[14px]"
|
className="!bg-[#1E7D5C] hover:!bg-[#17664B] !rounded-[10px] !gap-[10px] !h-[40px] font-semibold text-[14px]"
|
||||||
>
|
>
|
||||||
Add New Category
|
Add New Category
|
||||||
</CustomButton>
|
</CustomButton>
|
||||||
@@ -337,17 +337,17 @@ export function ActionCategoryManager() {
|
|||||||
</CustomModal>
|
</CustomModal>
|
||||||
|
|
||||||
{/* Category List Table Card */}
|
{/* Category List Table Card */}
|
||||||
<div className="bg-white rounded-[20px] border border-gray-200 shadow-sm overflow-hidden flex flex-col">
|
<div className="bg-white rounded-[20px] border border-gray-100 shadow-sm overflow-hidden flex flex-col">
|
||||||
{/* Table Filter Bar */}
|
{/* Table Filter Bar */}
|
||||||
<div className="p-4 border-b border-gray-100 flex flex-col sm:flex-row items-center justify-between gap-4 bg-slate-50/50">
|
<div className="p-4 border-b border-gray-100 flex flex-col sm:flex-row items-center justify-between gap-4 bg-slate-50/50">
|
||||||
<div className="relative w-full sm:w-80">
|
<div className="w-full sm:w-80">
|
||||||
<MagnifyingGlassIcon size={18} className="absolute left-3.5 top-1/2 -translate-y-1/2 text-gray-400" />
|
<CustomInput
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
value={searchTerm}
|
value={searchTerm}
|
||||||
onChange={(e) => handleSearchChange(e.target.value)}
|
onChange={(e) => handleSearchChange(e.target.value)}
|
||||||
placeholder="Search category by name or code..."
|
placeholder="Search category by name or code..."
|
||||||
className="w-full pl-10 pr-4 py-2 text-[13px] bg-white border border-gray-200 rounded-[10px] focus:outline-none focus:border-[#1E7D5C] focus:ring-1 focus:ring-[#1E7D5C] transition-colors"
|
leftIcon={<MagnifyingGlassIcon size={16} />}
|
||||||
|
className="!bg-[#F3F6F5] !rounded-[10px] !h-[38px] !border !border-[#E5E7EB]"
|
||||||
|
containerClassName="!gap-0"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -225,9 +225,9 @@ export function ActionTypeManager() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-6 font-sans">
|
<div className="w-full space-y-6 font-sans">
|
||||||
{/* Top Banner / Controls */}
|
{/* Top Banner / Controls */}
|
||||||
<div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4 bg-white p-5 rounded-[16px] border border-gray-200 shadow-sm">
|
<div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4 bg-white p-5 rounded-[20px] border border-gray-100 shadow-sm">
|
||||||
<div>
|
<div>
|
||||||
<h3 className="text-[17px] font-bold text-[#0F172B] flex items-center gap-2">
|
<h3 className="text-[17px] font-bold text-[#0F172B] flex items-center gap-2">
|
||||||
<CirclesThreePlusIcon size={22} className="text-[#1E7D5C]" />
|
<CirclesThreePlusIcon size={22} className="text-[#1E7D5C]" />
|
||||||
@@ -243,7 +243,7 @@ export function ActionTypeManager() {
|
|||||||
variant="primary"
|
variant="primary"
|
||||||
onClick={handleOpenCreate}
|
onClick={handleOpenCreate}
|
||||||
leftIcon={<PlusIcon size={18} />}
|
leftIcon={<PlusIcon size={18} />}
|
||||||
className="!bg-[#1E7D5C] hover:!bg-[#17664B] !rounded-[12px] font-semibold text-[14px]"
|
className="!bg-[#1E7D5C] hover:!bg-[#17664B] !rounded-[10px] !gap-[10px] !h-[40px] font-semibold text-[14px]"
|
||||||
>
|
>
|
||||||
Add Action Type
|
Add Action Type
|
||||||
</CustomButton>
|
</CustomButton>
|
||||||
@@ -375,7 +375,7 @@ export function ActionTypeManager() {
|
|||||||
</CustomModal>
|
</CustomModal>
|
||||||
|
|
||||||
{/* Action Types Table Card */}
|
{/* Action Types Table Card */}
|
||||||
<div className="bg-white rounded-[20px] border border-gray-200 shadow-sm overflow-hidden flex flex-col">
|
<div className="bg-white rounded-[20px] border border-gray-100 shadow-sm overflow-hidden flex flex-col">
|
||||||
{/* Table Filter Bar */}
|
{/* Table Filter Bar */}
|
||||||
<div className="p-4 border-b border-gray-100 flex flex-col sm:flex-row items-center justify-between gap-4 bg-slate-50/50">
|
<div className="p-4 border-b border-gray-100 flex flex-col sm:flex-row items-center justify-between gap-4 bg-slate-50/50">
|
||||||
<div className="flex items-center gap-3 w-full sm:w-auto">
|
<div className="flex items-center gap-3 w-full sm:w-auto">
|
||||||
@@ -387,14 +387,14 @@ export function ActionTypeManager() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="relative flex-1 sm:w-72">
|
<div className="flex-1 sm:w-72">
|
||||||
<MagnifyingGlassIcon size={18} className="absolute left-3.5 top-1/2 -translate-y-1/2 text-gray-400" />
|
<CustomInput
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
value={searchTerm}
|
value={searchTerm}
|
||||||
onChange={(e) => handleSearchChange(e.target.value)}
|
onChange={(e) => handleSearchChange(e.target.value)}
|
||||||
placeholder="Search action types..."
|
placeholder="Search action types..."
|
||||||
className="w-full pl-10 pr-4 py-2 text-[13px] bg-white border border-gray-200 rounded-[10px] focus:outline-none focus:border-[#1E7D5C] focus:ring-1 focus:ring-[#1E7D5C] transition-colors"
|
leftIcon={<MagnifyingGlassIcon size={16} />}
|
||||||
|
className="!bg-[#F3F6F5] !rounded-[10px] !h-[38px] !border !border-[#E5E7EB]"
|
||||||
|
containerClassName="!gap-0"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -382,9 +382,9 @@ export function DynamicFormRenderer() {
|
|||||||
const selectedTypeObj = actionTypes.find((t) => t.id === selectedActionTypeId);
|
const selectedTypeObj = actionTypes.find((t) => t.id === selectedActionTypeId);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-6 font-sans">
|
<div className="w-full space-y-6 font-sans">
|
||||||
{/* Top Control Bar */}
|
{/* Top Control Bar */}
|
||||||
<div className="bg-white p-5 rounded-[16px] border border-gray-200 shadow-sm space-y-4">
|
<div className="bg-white p-5 rounded-[20px] border border-gray-100 shadow-sm space-y-4">
|
||||||
<div className="flex flex-col md:flex-row md:items-center justify-between gap-4">
|
<div className="flex flex-col md:flex-row md:items-center justify-between gap-4">
|
||||||
<div>
|
<div>
|
||||||
<h3 className="text-[17px] font-bold text-[#0F172B] flex items-center gap-2">
|
<h3 className="text-[17px] font-bold text-[#0F172B] flex items-center gap-2">
|
||||||
@@ -424,7 +424,7 @@ export function DynamicFormRenderer() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Main Dynamic Form Card */}
|
{/* Main Dynamic Form Card */}
|
||||||
<div className="bg-white rounded-[20px] border border-gray-200 shadow-sm overflow-hidden">
|
<div className="bg-white rounded-[20px] border border-gray-100 shadow-sm overflow-hidden">
|
||||||
<div className="p-5 border-b border-gray-100 bg-slate-50/70 flex items-center justify-between">
|
<div className="p-5 border-b border-gray-100 bg-slate-50/70 flex items-center justify-between">
|
||||||
<div className="flex items-center gap-2 text-[15px] font-bold text-slate-800">
|
<div className="flex items-center gap-2 text-[15px] font-bold text-slate-800">
|
||||||
<LightningIcon size={20} className="text-[#1E7D5C]" weight="fill" />
|
<LightningIcon size={20} className="text-[#1E7D5C]" weight="fill" />
|
||||||
|
|||||||
@@ -323,9 +323,9 @@ export function FieldBuilderManager() {
|
|||||||
const selectedTypeObj = actionTypes.find((t) => t.id === selectedActionTypeId);
|
const selectedTypeObj = actionTypes.find((t) => t.id === selectedActionTypeId);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-6 font-sans">
|
<div className="w-full space-y-6 font-sans">
|
||||||
{/* Top Banner / Selectors */}
|
{/* Top Banner / Selectors */}
|
||||||
<div className="bg-white p-5 rounded-[16px] border border-gray-200 shadow-sm space-y-4">
|
<div className="bg-white p-5 rounded-[20px] border border-gray-100 shadow-sm space-y-4">
|
||||||
<div className="flex flex-col md:flex-row md:items-center justify-between gap-4">
|
<div className="flex flex-col md:flex-row md:items-center justify-between gap-4">
|
||||||
<div>
|
<div>
|
||||||
<h3 className="text-[17px] font-bold text-[#0F172B] flex items-center gap-2">
|
<h3 className="text-[17px] font-bold text-[#0F172B] flex items-center gap-2">
|
||||||
@@ -343,7 +343,7 @@ export function FieldBuilderManager() {
|
|||||||
onClick={handleOpenCreate}
|
onClick={handleOpenCreate}
|
||||||
disabled={!selectedActionTypeId}
|
disabled={!selectedActionTypeId}
|
||||||
leftIcon={<PlusIcon size={18} />}
|
leftIcon={<PlusIcon size={18} />}
|
||||||
className="!bg-[#1E7D5C] hover:!bg-[#17664B] !rounded-[12px] font-semibold text-[14px]"
|
className="!bg-[#1E7D5C] hover:!bg-[#17664B] !rounded-[10px] !gap-[10px] !h-[40px] font-semibold text-[14px]"
|
||||||
>
|
>
|
||||||
Add Field Definition
|
Add Field Definition
|
||||||
</CustomButton>
|
</CustomButton>
|
||||||
@@ -387,7 +387,7 @@ export function FieldBuilderManager() {
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Fields List Card */}
|
{/* Fields List Card */}
|
||||||
<div className="bg-white rounded-[20px] border border-gray-200 shadow-sm overflow-hidden">
|
<div className="bg-white rounded-[20px] border border-gray-100 shadow-sm overflow-hidden">
|
||||||
<div className="p-4 border-b border-gray-100 bg-slate-50/50 flex items-center justify-between">
|
<div className="p-4 border-b border-gray-100 bg-slate-50/50 flex items-center justify-between">
|
||||||
<div className="flex items-center gap-2 text-[14px] font-bold text-slate-800">
|
<div className="flex items-center gap-2 text-[14px] font-bold text-slate-800">
|
||||||
<span>Configured Fields for:</span>
|
<span>Configured Fields for:</span>
|
||||||
|
|||||||
@@ -46,9 +46,9 @@ export default function ActionBuilderPage() {
|
|||||||
];
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="p-6 md:p-8 max-w-7xl mx-auto space-y-6 font-sans">
|
<div className="w-full space-y-6 font-sans">
|
||||||
{/* Top Header */}
|
{/* Top Header */}
|
||||||
<div className="flex flex-col md:flex-row md:items-center justify-between gap-4 bg-white p-6 rounded-[24px] border border-gray-200 shadow-sm">
|
<div className="flex flex-col md:flex-row md:items-center justify-between gap-4 bg-white p-6 rounded-[20px] border border-gray-100 shadow-sm">
|
||||||
<div className="flex items-start gap-4">
|
<div className="flex items-start gap-4">
|
||||||
<div className="w-12 h-12 rounded-[16px] bg-[#E8F3EF] text-[#1E7D5C] flex items-center justify-center shrink-0 shadow-inner">
|
<div className="w-12 h-12 rounded-[16px] bg-[#E8F3EF] text-[#1E7D5C] flex items-center justify-center shrink-0 shadow-inner">
|
||||||
<LightningIcon size={26} weight="fill" />
|
<LightningIcon size={26} weight="fill" />
|
||||||
@@ -76,7 +76,7 @@ export default function ActionBuilderPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Main Tabs Navigation */}
|
{/* Main Tabs Navigation */}
|
||||||
<div className="bg-white p-3 rounded-[18px] border border-gray-200 shadow-sm">
|
<div>
|
||||||
<CustomTabs
|
<CustomTabs
|
||||||
tabs={tabs}
|
tabs={tabs}
|
||||||
value={activeTab}
|
value={activeTab}
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ export default function MasterDataManagement() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="p-6 md:p-8 max-w-7xl mx-auto space-y-6 font-sans">
|
<div className="w-full space-y-6 font-sans">
|
||||||
{/* Top Header Component */}
|
{/* Top Header Component */}
|
||||||
<MasterDataHeader
|
<MasterDataHeader
|
||||||
categoriesCount={categories.length}
|
categoriesCount={categories.length}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import { useLocation } from 'react-router-dom';
|
|||||||
const PAGE_META: Record<string, { title: string; subtitle: string }> = {
|
const PAGE_META: Record<string, { title: string; subtitle: string }> = {
|
||||||
'/': { title: 'Dashboard', subtitle: 'Overview of system status and active incidents.' },
|
'/': { title: 'Dashboard', subtitle: 'Overview of system status and active incidents.' },
|
||||||
'/cohorts': { title: 'Cohort Management', subtitle: 'Dynamic passenger segmentation for targeted recovery and recovery intelligence.' },
|
'/cohorts': { title: 'Cohort Management', subtitle: 'Dynamic passenger segmentation for targeted recovery and recovery intelligence.' },
|
||||||
|
'/policy-engine': { title: 'Policy Engine Framework Registry', subtitle: 'Manage framework policies, conditions, and automated actions.' },
|
||||||
|
'/policy-engine/add': { title: 'Deploy New Policy', subtitle: 'Configure policy framework details, targeting rules, and action payloads.' },
|
||||||
|
'/action-builder': { title: 'Action Builder', subtitle: 'Configure dynamic categories, action types, metadata fields, and dynamic user form workflows.' },
|
||||||
|
'/config': { title: 'Master Data Configurations', subtitle: 'Manage system rule categories, lookup values, and master data parameters.' },
|
||||||
'/recovery': { title: 'Recovery Incidents', subtitle: 'Operational workspace for managing passenger disruption cases.' },
|
'/recovery': { title: 'Recovery Incidents', subtitle: 'Operational workspace for managing passenger disruption cases.' },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user