@appcorp/fusion-storybook 0.1.93 → 0.1.94
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/base-modules/admission/context.js +9 -9
- package/base-modules/admission/filter.js +4 -4
- package/base-modules/admission/form.js +6 -6
- package/base-modules/admission/view.js +1 -1
- package/base-modules/attendance/form.js +2 -2
- package/base-modules/attendance/view.js +1 -1
- package/base-modules/campus/context.js +7 -7
- package/base-modules/campus/filter.js +4 -4
- package/base-modules/campus/form.js +1 -1
- package/base-modules/campus/view.js +1 -1
- package/base-modules/class/context.js +7 -7
- package/base-modules/class/filter.js +4 -4
- package/base-modules/class/form.js +1 -1
- package/base-modules/class/view.js +1 -1
- package/base-modules/course/filter.js +4 -4
- package/base-modules/course/form.js +4 -4
- package/base-modules/course/view.js +1 -1
- package/base-modules/discount-code/context.js +7 -7
- package/base-modules/discount-code/filter.js +1 -1
- package/base-modules/discount-code/more-actions.js +1 -1
- package/base-modules/discount-code/view.js +2 -2
- package/base-modules/enrollment/filter.js +4 -4
- package/base-modules/enrollment/form.js +5 -5
- package/base-modules/enrollment/view.js +2 -2
- package/base-modules/expense/filter.js +4 -4
- package/base-modules/expense/form.js +2 -2
- package/base-modules/expense/view.js +3 -3
- package/base-modules/family/context.js +6 -6
- package/base-modules/family/filter.js +4 -4
- package/base-modules/family/form.js +1 -1
- package/base-modules/family/view.js +1 -1
- package/base-modules/family-member/context.js +6 -6
- package/base-modules/family-member/filter.js +4 -4
- package/base-modules/family-member/form.js +1 -1
- package/base-modules/family-member/view.js +7 -7
- package/base-modules/fee-structure/filter.js +4 -4
- package/base-modules/fee-structure/form.js +4 -4
- package/base-modules/fee-structure/view.js +1 -1
- package/base-modules/school/context.js +1 -1
- package/base-modules/school/view.js +4 -4
- package/base-modules/section/context.js +7 -7
- package/base-modules/section/filter.js +4 -4
- package/base-modules/section/form.js +2 -2
- package/base-modules/section/view.js +1 -1
- package/base-modules/student-fee/filter.js +4 -4
- package/base-modules/student-fee/form.js +3 -3
- package/base-modules/student-fee/view.js +2 -2
- package/base-modules/student-profile/context.js +9 -9
- package/base-modules/student-profile/filter.js +4 -4
- package/base-modules/student-profile/form.js +3 -3
- package/base-modules/student-profile/view.js +3 -3
- package/base-modules/subject/context.js +6 -6
- package/base-modules/subject/filter.js +4 -4
- package/base-modules/subject/form.js +1 -1
- package/base-modules/subject/view.js +1 -1
- package/base-modules/teacher/context.js +8 -8
- package/base-modules/teacher/filter.js +4 -4
- package/base-modules/teacher/form.js +3 -3
- package/base-modules/teacher/page.d.ts +0 -1
- package/base-modules/teacher/page.js +1 -3
- package/base-modules/teacher/view.js +3 -3
- package/base-modules/workspace/form.js +1 -1
- package/base-modules/workspace/view.js +5 -5
- package/base-modules/workspace-user/context.js +6 -4
- package/base-modules/workspace-user/filter.js +4 -4
- package/base-modules/workspace-user/form.js +1 -1
- package/base-modules/workspace-user/view.js +1 -1
- package/package.json +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -19,13 +19,13 @@ export const FeeStructureForm = () => {
|
|
|
19
19
|
const { amount, description, enabled, errors, feeType, frequency, name } = state;
|
|
20
20
|
const t = useTranslations("feeStructure");
|
|
21
21
|
const workspace = getCachedWorkspaceSync();
|
|
22
|
-
return (_jsx("div", { className: "space-y-4", children: _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold", children: t("
|
|
22
|
+
return (_jsx("div", { className: "space-y-4", children: _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold", children: t("formSectionFeeStructureInformation") }), _jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedInput, { error: errors.name, id: "name", info: t("formNameInfo"), label: t("formNameLabel"), onChange: (e) => handleChange("name", e.target.value), placeholder: t("formNamePlaceholder"), required: true, value: name || "" }), _jsx(EnhancedCombobox, { emptyText: t("formNoFeeTypeEmpty"), error: errors.feeType, id: "feeType", info: t("formFeeTypeInfo"), label: t("formOptionFeeType"), onValueChange: (value) => handleChange("feeType", value), options: FEE_TYPE_OPTIONS.map((opt) => ({
|
|
23
23
|
label: t(`feeType${opt.value.charAt(0).toUpperCase() + opt.value.slice(1).toLowerCase()}`),
|
|
24
24
|
value: opt.value,
|
|
25
|
-
})), placeholder: t("
|
|
25
|
+
})), placeholder: t("formFeeTypePlaceholder"), required: true, searchPlaceholder: t("formSearchFeeTypePlaceholder"), value: feeType || "" }), _jsx(EnhancedInput, { error: errors.amount, id: "amount", info: t(`amountInfo`, {
|
|
26
26
|
currency: (_b = (_a = workspace === null || workspace === void 0 ? void 0 : workspace.school) === null || _a === void 0 ? void 0 : _a.currency) !== null && _b !== void 0 ? _b : "",
|
|
27
|
-
}), label: t("
|
|
27
|
+
}), label: t("formAmountLabel"), min: "0", onChange: (e) => handleChange("amount", Number(e.target.value)), placeholder: t("formAmountPlaceholder"), required: true, step: "0.01", type: "number", value: amount }), _jsx(EnhancedCombobox, { emptyText: t("formNoFrequencyEmpty"), id: "frequency", info: t("formFrequencyInfo"), label: t("formOptionFrequency"), onValueChange: (value) => handleChange("frequency", value), options: FREQUENCY_OPTIONS.map((opt) => ({
|
|
28
28
|
label: t(`frequency${opt.value.replace(/-/g, "")}`),
|
|
29
29
|
value: opt.value,
|
|
30
|
-
})), placeholder: t("
|
|
30
|
+
})), placeholder: t("formFrequencyPlaceholder"), searchPlaceholder: t("formSearchFrequencyPlaceholder"), value: frequency || "" }), _jsx(EnhancedTextarea, { error: errors.description, id: "description", info: t("formDescriptionInfo"), label: t("formDescriptionLabel"), onChange: (e) => handleChange("description", e.target.value), placeholder: t("formDescriptionPlaceholder"), rows: 3, value: description || "" })] }), _jsx(EnhancedCheckbox, { defaultChecked: enabled, label: t("formActiveFeeStructureLabel"), onCheckedChange: (checked) => handleChange("enabled", checked) })] }) }));
|
|
31
31
|
};
|
|
@@ -19,6 +19,6 @@ export const FeeStructureView = () => {
|
|
|
19
19
|
const { amount, description, enabled, feeType, frequency, name } = state;
|
|
20
20
|
const t = useTranslations("feeStructure");
|
|
21
21
|
const workspace = getCachedWorkspaceSync();
|
|
22
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(DollarSign, { className: "h-5 w-5 text-primary" }), _jsx(CardTitle, { className: "text-lg", children: t("
|
|
22
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(DollarSign, { className: "h-5 w-5 text-primary" }), _jsx(CardTitle, { className: "text-lg", children: t("viewSectionFeeStructureDetails") })] }), _jsx(CardDescription, { children: t("viewSectionFeeStructureRecordDetails") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "grid grid-cols-1 gap-6", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldName") }), _jsx("p", { className: "text-base font-semibold", children: formatValue(name) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldFeeType") }), _jsx(Badge, { variant: "secondary", children: formatValue(feeType) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldAmount") }), _jsxs("p", { className: "text-base", children: [(_a = workspace === null || workspace === void 0 ? void 0 : workspace.school) === null || _a === void 0 ? void 0 : _a.currency, " ", Number(amount !== null && amount !== void 0 ? amount : 0).toFixed(2)] })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldFrequency") }), _jsx("p", { className: "text-base", children: formatValue(frequency) })] })] }) })] }), description ? (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(FileText, { className: "h-5 w-5 text-primary" }), _jsx(CardTitle, { className: "text-lg", children: t("viewSectionAdditionalDetails") })] }), _jsx(CardDescription, { children: t("viewFieldOptionalNotes") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsx("p", { className: "text-base", children: description }) })] })) : null, _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(CheckCircle2, { className: "h-5 w-5 text-primary" }), _jsx(CardTitle, { className: "text-lg", children: t("viewFieldStatus") })] }), _jsx(CardDescription, { children: t("viewFieldRecordState") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsxs(Badge, { variant: enabled ? "default" : "destructive", className: "gap-1", children: [enabled ? (_jsx(CheckCircle2, { className: "h-3 w-3" })) : (_jsx(XCircle, { className: "h-3 w-3" })), enabled ? t("viewFieldStatusActive") : t("viewFieldStatusInactive")] }) })] })] }));
|
|
23
23
|
};
|
|
24
24
|
FeeStructureView.displayName = "FeeStructureView";
|
|
@@ -17,9 +17,9 @@ export const SchoolView = () => {
|
|
|
17
17
|
const { state } = useSchoolModule();
|
|
18
18
|
const { name, code, currency, address, city, state: _state, country, postalCode, enabled, phone, email, website, logo, principalId, } = state;
|
|
19
19
|
const t = useTranslations("school");
|
|
20
|
-
return (_jsxs("div", { className: "space-y-6", children: [_jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Building2, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("
|
|
21
|
-
? t("
|
|
22
|
-
: address })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsCity") }), _jsx("p", { className: "text-base", children: formatValue(city) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsState") }), _jsx("p", { className: "text-base", children: formatValue(_state) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsCountry") }), _jsx("p", { className: "text-base", children: formatValue(country) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsPostalCode") }), _jsx("p", { className: "text-base", children: formatValue(postalCode) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsStatus") }), _jsxs(Badge, { variant: enabled ? "default" : "destructive", className: "gap-1", children: [enabled ? (_jsx(CheckCircle2, { className: "h-3 w-3" })) : (_jsx(XCircle, { className: "h-3 w-3" })), enabled ? t("viewStatusEnabled") : t("viewStatusDisabled")] })] })] }) })] }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Phone, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("
|
|
20
|
+
return (_jsxs("div", { className: "space-y-6", children: [_jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Building2, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("viewSectionBasicInfo") })] }), _jsx(CardDescription, { children: t("viewBasicInfoDescription") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "grid grid-cols-2 gap-6 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-1 md:col-span-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Building2, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsName") })] }), _jsx("p", { className: "text-base", children: formatValue(name) })] }), _jsxs("div", { className: "space-y-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Building2, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsCode") })] }), _jsx("p", { className: "font-mono text-sm", children: formatValue(code) })] }), _jsxs("div", { className: "space-y-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(DollarSign, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsCurrency") })] }), _jsx("p", { className: "text-base", children: formatValue(currency) })] }), _jsxs("div", { className: "space-y-1 md:col-span-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MapPin, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsAddress") })] }), _jsx("p", { className: "text-base", children: formatValue(address) === "—"
|
|
21
|
+
? t("viewTextAddressNotProvided")
|
|
22
|
+
: address })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsCity") }), _jsx("p", { className: "text-base", children: formatValue(city) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsState") }), _jsx("p", { className: "text-base", children: formatValue(_state) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsCountry") }), _jsx("p", { className: "text-base", children: formatValue(country) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsPostalCode") }), _jsx("p", { className: "text-base", children: formatValue(postalCode) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsStatus") }), _jsxs(Badge, { variant: enabled ? "default" : "destructive", className: "gap-1", children: [enabled ? (_jsx(CheckCircle2, { className: "h-3 w-3" })) : (_jsx(XCircle, { className: "h-3 w-3" })), enabled ? t("viewStatusEnabled") : t("viewStatusDisabled")] })] })] }) })] }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Phone, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("viewSectionContactInfo") })] }), _jsx(CardDescription, { children: t("viewContactInfoDescription") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Phone, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsPhone") })] }), _jsx("p", { className: "text-base", children: formatPhoneDisplay(phone) || formatValue(phone) })] }), _jsxs("div", { className: "space-y-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Mail, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsEmail") })] }), _jsx("p", { className: "text-base", children: formatValue(email) })] }), _jsxs("div", { className: "space-y-1 md:col-span-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Globe, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsWebsite") })] }), _jsx("p", { className: "text-base", children: formatValue(website) === "—" ? (t("viewTextWebsiteNotProvided")) : (_jsx("a", { href: website, target: "_blank", rel: "noopener noreferrer", className: "text-primary hover:underline", children: website })) })] }), logo && (_jsxs("div", { className: "space-y-1 md:col-span-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Image, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsLogo") })] }), _jsx("div", { className: "mt-2", children: _jsx("img", { src: logo, alt: t("viewLabelsLogoAlt"), className: "h-16 w-16 rounded border object-contain", onError: (e) => {
|
|
23
23
|
e.currentTarget.style.display = "none";
|
|
24
|
-
} }) })] }))] }) })] }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(User, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("
|
|
24
|
+
} }) })] }))] }) })] }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(User, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("viewSectionAdministration") })] }), _jsx(CardDescription, { children: t("viewAdministrationDescription") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsx("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2", children: _jsxs("div", { className: "space-y-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(User, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewLabelsPrincipalId") })] }), _jsx("p", { className: "font-mono text-sm", children: formatValue(principalId) })] }) }) })] })] }));
|
|
25
25
|
};
|
|
@@ -369,19 +369,19 @@ export const useSectionModule = () => {
|
|
|
369
369
|
{
|
|
370
370
|
enabled: false,
|
|
371
371
|
handleOnClick: handleMoreActions,
|
|
372
|
-
label: t("
|
|
372
|
+
label: t("actionHeaderMoreActions"),
|
|
373
373
|
order: 0,
|
|
374
374
|
},
|
|
375
375
|
{
|
|
376
376
|
enabled: false,
|
|
377
377
|
handleOnClick: handleFilters,
|
|
378
|
-
label: t("
|
|
378
|
+
label: t("actionHeaderFilters"),
|
|
379
379
|
order: 1,
|
|
380
380
|
},
|
|
381
381
|
{
|
|
382
382
|
enabled: true,
|
|
383
383
|
handleOnClick: handleCreate,
|
|
384
|
-
label: t("
|
|
384
|
+
label: t("actionHeaderAdd"),
|
|
385
385
|
order: 2,
|
|
386
386
|
},
|
|
387
387
|
], [handleCreate, handleFilters, handleMoreActions, t]);
|
|
@@ -389,26 +389,26 @@ export const useSectionModule = () => {
|
|
|
389
389
|
{
|
|
390
390
|
enabled: true,
|
|
391
391
|
handleOnClick: handleView,
|
|
392
|
-
label: t("
|
|
392
|
+
label: t("actionRowView"),
|
|
393
393
|
order: 1,
|
|
394
394
|
},
|
|
395
395
|
{
|
|
396
396
|
enabled: (row) => (row === null || row === void 0 ? void 0 : row.enabled) === true,
|
|
397
397
|
handleOnClick: handleEdit,
|
|
398
|
-
label: t("
|
|
398
|
+
label: t("actionRowEdit"),
|
|
399
399
|
order: 2,
|
|
400
400
|
},
|
|
401
401
|
{
|
|
402
402
|
enabled: (row) => (row === null || row === void 0 ? void 0 : row.enabled) === false,
|
|
403
403
|
handleOnClick: handleDelete,
|
|
404
|
-
label: t("
|
|
404
|
+
label: t("actionRowDelete"),
|
|
405
405
|
order: 3,
|
|
406
406
|
variant: "destructive",
|
|
407
407
|
},
|
|
408
408
|
{
|
|
409
409
|
enabled: false,
|
|
410
410
|
handleOnClick: toggleStatus,
|
|
411
|
-
label: t("
|
|
411
|
+
label: t("actionRowToggleStatus"),
|
|
412
412
|
order: 4,
|
|
413
413
|
},
|
|
414
414
|
], [handleDelete, handleEdit, handleView, t, toggleStatus]);
|
|
@@ -17,10 +17,10 @@ export const SectionFilter = () => {
|
|
|
17
17
|
: filterEnabled
|
|
18
18
|
? "true"
|
|
19
19
|
: "false";
|
|
20
|
-
return (_jsx("div", { className: "space-y-4", children: _jsx("div", { className: "grid grid-cols-1 gap-4", children: _jsx(EnhancedRadio, { label: t("
|
|
21
|
-
{ label: t("
|
|
22
|
-
{ label: t("
|
|
23
|
-
{ label: t("
|
|
20
|
+
return (_jsx("div", { className: "space-y-4", children: _jsx("div", { className: "grid grid-cols-1 gap-4", children: _jsx(EnhancedRadio, { label: t("filterOptionEnabled"), name: "filterEnabled", value: filterEnabledValue, options: [
|
|
21
|
+
{ label: t("filterOptionAll"), value: "undefined" },
|
|
22
|
+
{ label: t("filterOptionEnabled"), value: "true" },
|
|
23
|
+
{ label: t("filterOptionDisabled"), value: "false" },
|
|
24
24
|
], onValueChange: (next) => {
|
|
25
25
|
const parsed = next === "true" ? true : next === "false" ? false : undefined;
|
|
26
26
|
handleChange("filterEnabled", parsed);
|
|
@@ -95,8 +95,8 @@ export const SectionForm = () => {
|
|
|
95
95
|
isActive = false;
|
|
96
96
|
};
|
|
97
97
|
}, [schoolId, trimmedClassSearchQuery]);
|
|
98
|
-
return (_jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedCombobox, { emptyText: t("
|
|
98
|
+
return (_jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedCombobox, { emptyText: t("formNoClassEmpty"), error: errors.classId, id: "classId", info: t("formClassInfo"), label: t("formClassLabel"), loading: classOptionsLoading && Boolean(trimmedClassSearchQuery), onSearchChange: setClassSearchQuery, onValueChange: (value) => handleChange("classId", value), options: displayedClassOptions, required: true, searchPlaceholder: t("formSearchClassesPlaceholder"), value: classId }), _jsx(EnhancedInput, { error: errors.name, id: "name", info: t("sectionNameInfo"), label: t("sectionName"), onChange: (e) => handleChange("name", e.target.value), placeholder: t("sectionNamePlaceholder"), required: true, value: name }), _jsx(EnhancedInput, { error: errors.capacity, id: "capacity", info: t("formCapacityInfo"), label: t("formCapacityLabel"), onChange: (e) => {
|
|
99
99
|
const value = e.target.value;
|
|
100
100
|
handleChange("capacity", value ? Number(value) : 0);
|
|
101
|
-
}, placeholder: t("
|
|
101
|
+
}, placeholder: t("formCapacityPlaceholder"), type: "number", value: (capacity === null || capacity === void 0 ? void 0 : capacity.toString()) || "" }), _jsx(EnhancedCheckbox, { label: t("formActiveSectionLabel"), defaultChecked: enabled, onCheckedChange: (checked) => handleChange("enabled", checked), info: t("actionToggleActivateOrDeactivateSection") })] }));
|
|
102
102
|
};
|
|
@@ -22,5 +22,5 @@ export const SectionView = () => {
|
|
|
22
22
|
const className = selectedClass
|
|
23
23
|
? `${selectedClass.name} (${selectedClass.code})`
|
|
24
24
|
: "—";
|
|
25
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsx(Card, { children: _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "flex items-center gap-6", children: [_jsx("div", { className: "bg-primary/10 flex h-24 w-24 items-center justify-center rounded-full", children: _jsx(Users, { className: "text-primary h-12 w-12" }) }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("h2", { className: "text-2xl font-bold", children: name }), enabled ? (_jsx(CheckCircle2, { className: "h-5 w-5 text-green-500" })) : (_jsx(XCircle, { className: "h-5 w-5 text-red-500" }))] }), _jsxs("p", { className: "text-muted-foreground mt-1", children: [t("
|
|
25
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsx(Card, { children: _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "flex items-center gap-6", children: [_jsx("div", { className: "bg-primary/10 flex h-24 w-24 items-center justify-center rounded-full", children: _jsx(Users, { className: "text-primary h-12 w-12" }) }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("h2", { className: "text-2xl font-bold", children: name }), enabled ? (_jsx(CheckCircle2, { className: "h-5 w-5 text-green-500" })) : (_jsx(XCircle, { className: "h-5 w-5 text-red-500" }))] }), _jsxs("p", { className: "text-muted-foreground mt-1", children: [t("viewFieldClass"), ": ", className] })] })] }) }) }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(GraduationCap, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("sectionDetails") })] }), _jsx(CardDescription, { children: t("viewSectionCompleteSectionInformation") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("sectionName") }), _jsx("p", { className: "text-base", children: formatValue(name) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldClass") }), _jsx("p", { className: "text-base", children: className })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldCapacity") }), _jsxs("p", { className: "text-base", children: [formatValue(capacity), " ", capacity !== null ? t("viewFieldStudents") : ""] })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldStatus") }), _jsx(Badge, { variant: enabled ? "default" : "secondary", children: enabled ? t("viewFieldStatusActive") : t("viewFieldStatusInactive") })] })] }) })] })] }));
|
|
26
26
|
};
|
|
@@ -20,10 +20,10 @@ export const StudentFeeFilter = () => {
|
|
|
20
20
|
: filterEnabled
|
|
21
21
|
? "true"
|
|
22
22
|
: "false";
|
|
23
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsx(EnhancedCombobox, { emptyText: t("
|
|
24
|
-
{ label: t("
|
|
25
|
-
{ label: t("
|
|
26
|
-
{ label: t("
|
|
23
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsx(EnhancedCombobox, { emptyText: t("filterNoStatusFoundLabel"), id: "filterStatus", info: t("filterByPaymentStatus"), label: t("filterPaymentStatusLabel"), onValueChange: (value) => handleChange("filterStatus", value), options: PAYMENT_STATUS_OPTIONS, placeholder: t("filterAllStatusesLabel"), searchPlaceholder: t("filterSearchStatusLabel"), value: filterStatus || "" }), _jsx(EnhancedRadio, { label: t("filterOptionEnabled"), name: "filterEnabled", value: filterEnabledValue, options: [
|
|
24
|
+
{ label: t("filterOptionAll"), value: "undefined" },
|
|
25
|
+
{ label: t("filterOptionEnabled"), value: "true" },
|
|
26
|
+
{ label: t("filterOptionDisabled"), value: "false" },
|
|
27
27
|
], onValueChange: (next) => {
|
|
28
28
|
const parsed = next === "true" ? true : next === "false" ? false : undefined;
|
|
29
29
|
handleChange("filterEnabled", parsed);
|
|
@@ -34,7 +34,7 @@ export const StudentFeeForm = () => {
|
|
|
34
34
|
value: code.id,
|
|
35
35
|
description: code.description || undefined,
|
|
36
36
|
}));
|
|
37
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedCombobox, { emptyText: t("
|
|
37
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedCombobox, { emptyText: t("formNoStudentEmpty"), error: errors.studentProfileId, id: "studentProfileId", info: t("formStudentInfo"), label: t("formStudentLabel"), onValueChange: (value) => handleChange("studentProfileId", value), options: (getCachedStudentProfilesSync().items || [])
|
|
38
38
|
.filter((s) => {
|
|
39
39
|
var _a;
|
|
40
40
|
if (!familyId)
|
|
@@ -48,8 +48,8 @@ export const StudentFeeForm = () => {
|
|
|
48
48
|
s.id,
|
|
49
49
|
value: s.id || "",
|
|
50
50
|
});
|
|
51
|
-
}), placeholder: t("
|
|
51
|
+
}), placeholder: t("formStudentPlaceholder"), required: true, searchPlaceholder: t("formSearchStudentsPlaceholder"), value: studentProfileId || "" }), _jsx(EnhancedCombobox, { emptyText: t("formNoFeeStructureEmpty"), error: errors.feeStructureId, id: "feeStructureId", info: t("formFeeStructureInfo"), label: t("formFeeStructureLabel"), onValueChange: (value) => handleChange("feeStructureId", value), options: (getCachedFeeStructuresSync().items || []).map((fs) => ({
|
|
52
52
|
label: fs.name || fs.id,
|
|
53
53
|
value: fs.id,
|
|
54
|
-
})), placeholder: t("
|
|
54
|
+
})), placeholder: t("formFeeStructurePlaceholder"), required: true, searchPlaceholder: t("formSearchFeeStructuresPlaceholder"), value: feeStructureId || "" }), _jsx(EnhancedCombobox, { emptyText: t("formNoDiscountCodeEmpty"), error: errors.discountCodeId, id: "discountCodeId", info: t("formDiscountCodeInfo"), label: t("formDiscountCodeLabel"), onValueChange: (value) => handleChange("discountCodeId", value), options: discountCodeOptions, placeholder: t("formDiscountCodePlaceholder"), searchPlaceholder: t("formSearchDiscountCodesPlaceholder"), value: discountCodeId || "" }), _jsx(EnhancedInput, { error: errors.discountAmount, id: "discountAmount", info: t("formDiscountAmountInfo"), label: t("formDiscountAmountLabel"), min: "0", onChange: (e) => handleChange("discountAmount", Number(e.target.value)), placeholder: "0.00", required: true, step: "0.01", type: "number", value: discountAmount || 0 }), _jsx(EnhancedInput, { error: errors.amount, id: "amount", info: t("formTotalAmountInfo"), label: t("formTotalAmountLabel"), min: "0", onChange: (e) => handleChange("amount", Number(e.target.value)), placeholder: "0.00", required: true, step: "0.01", type: "number", value: amount }), _jsx(EnhancedInput, { error: errors.amountPaid, id: "amountPaid", info: t("formAmountPaidInfo"), label: t("formAmountPaidLabel"), min: "0", onChange: (e) => handleChange("amountPaid", Number(e.target.value)), placeholder: "0.00", step: "0.01", type: "number", value: amountPaid }), _jsx(EnhancedInput, { disabled: true, error: errors.amountDue, id: "amountDue", info: t("formAmountDueInfo"), label: t("formAmountDueLabel"), min: "0", onChange: (e) => handleChange("amountDue", Number(e.target.value)), placeholder: "0.00", step: "0.01", type: "number", value: amountDue }), _jsx(EnhancedInput, { error: errors.dueDate, id: "dueDate", info: t("formDueDateInfo"), label: t("formDueDateLabel"), onChange: (e) => handleChange("dueDate", e.target.value), required: true, type: "date", value: formatDate(dueDate, DATE_FORMATS.YYYY_MM_DD) }), _jsx(EnhancedCombobox, { emptyText: t("formNoStatusEmpty"), error: errors.status, id: "status", info: t("formStatusInfo"), label: t("formOptionStatus"), onValueChange: (value) => handleChange("status", value), options: PAYMENT_STATUS_OPTIONS, placeholder: t("formStatusPlaceholder"), required: true, searchPlaceholder: t("formSearchStatusPlaceholder"), value: status })] }), _jsx(EnhancedTextarea, { error: errors.remarks, id: "remarks", label: t("formRemarksLabel"), onChange: (e) => handleChange("remarks", e.target.value), placeholder: t("formRemarksPlaceholder"), value: remarks || "" }), _jsx(EnhancedCheckbox, { checked: enabled, error: errors.enabled, id: "enabled", info: t("formEnabledInfo"), label: t("badgeActive"), onCheckedChange: (checked) => handleChange("enabled", !!checked) })] }));
|
|
55
55
|
};
|
|
@@ -29,7 +29,7 @@ export const StudentFeeView = () => {
|
|
|
29
29
|
return (_c = (_b = (_a = studentFee === null || studentFee === void 0 ? void 0 : studentFee.family) === null || _a === void 0 ? void 0 : _a.members) === null || _b === void 0 ? void 0 : _b.filter(({ studentProfile }) => !!studentProfile)) === null || _c === void 0 ? void 0 : _c.find(({ studentProfile }) => (studentProfile === null || studentProfile === void 0 ? void 0 : studentProfile.id) === studentProfileId);
|
|
30
30
|
}, [studentFee, studentProfileId]);
|
|
31
31
|
const feeStructureName = (_c = getCachedFeeStructuresSync().items.find(({ id }) => id === feeStructureId)) === null || _c === void 0 ? void 0 : _c.name;
|
|
32
|
-
return (_jsx("div", { className: "space-y-4", children: _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(FileText, { className: "h-5 w-5 text-primary" }), _jsx(CardTitle, { className: "text-lg", children: t("
|
|
32
|
+
return (_jsx("div", { className: "space-y-4", children: _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(FileText, { className: "h-5 w-5 text-primary" }), _jsx(CardTitle, { className: "text-lg", children: t("viewSectionStudentFeeDetails") })] }), _jsx(CardDescription, { children: t("viewSectionReadOnlyStudentFeeInformation") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "grid grid-cols-1 gap-6", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldStudent") }), _jsx("p", { className: "text-base", children: studentMember
|
|
33
33
|
? `${studentMember.firstName} ${studentMember.lastName}`
|
|
34
|
-
: "—" })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("
|
|
34
|
+
: "—" })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldComputerNumber") }), _jsx("p", { className: "text-base", children: ((_d = studentMember === null || studentMember === void 0 ? void 0 : studentMember.studentProfile) === null || _d === void 0 ? void 0 : _d.computerNumber) || "—" })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldFeeStructure") }), _jsx("p", { className: "text-base", children: feeStructureName || "—" })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldTotalAmount") }), _jsxs("p", { className: "text-base", children: [currency, " ", (amount !== null && amount !== void 0 ? amount : 0).toFixed(2)] })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldAmountPaid") }), _jsxs("p", { className: "text-base", children: [currency, " ", (amountPaid !== null && amountPaid !== void 0 ? amountPaid : 0).toFixed(2)] })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldAmountDue") }), _jsxs("p", { className: "text-base", children: [currency, " ", (amountDue !== null && amountDue !== void 0 ? amountDue : 0).toFixed(2)] })] }), _jsxs("div", { className: "space-y-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Calendar, { className: "h-4 w-4 text-muted-foreground" }), _jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldDueDate") })] }), _jsx("p", { className: "text-base", children: formatDate(dueDate, DATE_FORMATS.LOCALE_DATE) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldStatus") }), _jsx(Badge, { variant: "secondary", children: status || "—" })] }), remarks && (_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldRemarks") }), _jsx("p", { className: "text-base", children: remarks })] })), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("viewFieldRecordState") }), _jsxs(Badge, { className: "gap-1", variant: enabled ? "default" : "destructive", children: [enabled ? (_jsx(CheckCircle2, { className: "h-3 w-3" })) : (_jsx(XCircle, { className: "h-3 w-3" })), enabled ? t("viewFieldStatusActive") : t("viewFieldStatusInactive")] })] })] }) })] }) }));
|
|
35
35
|
};
|
|
@@ -335,7 +335,7 @@ export const useStudentProfileModule = () => {
|
|
|
335
335
|
});
|
|
336
336
|
}, [byIdFetchNow, dispatch]);
|
|
337
337
|
const handleDelete = useCallback((row) => {
|
|
338
|
-
if (!confirm(t("
|
|
338
|
+
if (!confirm(t("actionDeleteConfirmation")))
|
|
339
339
|
return;
|
|
340
340
|
deleteFetchNow === null || deleteFetchNow === void 0 ? void 0 : deleteFetchNow(undefined, {
|
|
341
341
|
body: JSON.stringify({ id: row === null || row === void 0 ? void 0 : row.id }),
|
|
@@ -499,19 +499,19 @@ export const useStudentProfileModule = () => {
|
|
|
499
499
|
{
|
|
500
500
|
enabled: false,
|
|
501
501
|
handleOnClick: handleMoreActions,
|
|
502
|
-
label: t("
|
|
502
|
+
label: t("actionHeaderMoreActions"),
|
|
503
503
|
order: 1,
|
|
504
504
|
},
|
|
505
505
|
{
|
|
506
506
|
enabled: true,
|
|
507
507
|
handleOnClick: handleFilters,
|
|
508
|
-
label: t("
|
|
508
|
+
label: t("actionHeaderFilters"),
|
|
509
509
|
order: 2,
|
|
510
510
|
},
|
|
511
511
|
{
|
|
512
512
|
enabled: false,
|
|
513
513
|
handleOnClick: handleCreate,
|
|
514
|
-
label: t("
|
|
514
|
+
label: t("actionHeaderAddStudentProfile"),
|
|
515
515
|
order: 3,
|
|
516
516
|
},
|
|
517
517
|
], [handleCreate, handleFilters, handleMoreActions, t]);
|
|
@@ -519,32 +519,32 @@ export const useStudentProfileModule = () => {
|
|
|
519
519
|
{
|
|
520
520
|
enabled: true,
|
|
521
521
|
handleOnClick: handleView,
|
|
522
|
-
label: t("
|
|
522
|
+
label: t("actionRowView"),
|
|
523
523
|
order: 1,
|
|
524
524
|
},
|
|
525
525
|
{
|
|
526
526
|
enabled: true,
|
|
527
527
|
handleOnClick: handleEdit,
|
|
528
|
-
label: t("
|
|
528
|
+
label: t("actionRowEdit"),
|
|
529
529
|
order: 2,
|
|
530
530
|
},
|
|
531
531
|
{
|
|
532
532
|
enabled: false,
|
|
533
533
|
handleOnClick: handleDelete,
|
|
534
|
-
label: t("
|
|
534
|
+
label: t("actionRowDelete"),
|
|
535
535
|
order: 3,
|
|
536
536
|
},
|
|
537
537
|
{
|
|
538
538
|
enabled: (row) => (row === null || row === void 0 ? void 0 : row.status) === STUDENT_STATUS.ACTIVE,
|
|
539
539
|
handleOnClick: handleWithdrawStudent,
|
|
540
|
-
label: t("
|
|
540
|
+
label: t("actionRowWithdrawStudent"),
|
|
541
541
|
order: 4,
|
|
542
542
|
variant: "destructive",
|
|
543
543
|
},
|
|
544
544
|
{
|
|
545
545
|
enabled: (row) => (row === null || row === void 0 ? void 0 : row.status) === STUDENT_STATUS.INACTIVE,
|
|
546
546
|
handleOnClick: handleReAdmitStudent,
|
|
547
|
-
label: t("
|
|
547
|
+
label: t("actionRowReAdmitStudent"),
|
|
548
548
|
order: 5,
|
|
549
549
|
},
|
|
550
550
|
], [
|
|
@@ -15,10 +15,10 @@ export const StudentProfileFilter = () => {
|
|
|
15
15
|
: filterEnabled
|
|
16
16
|
? "true"
|
|
17
17
|
: "false";
|
|
18
|
-
return (_jsx("div", { className: "space-y-4", children: _jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedCombobox, { id: "filterStatus", label: t("
|
|
19
|
-
{ label: t("
|
|
20
|
-
{ label: t("
|
|
21
|
-
{ label: t("
|
|
18
|
+
return (_jsx("div", { className: "space-y-4", children: _jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedCombobox, { id: "filterStatus", label: t("filterOptionStatus"), info: t("filterByStudentStatus"), options: [...STATUS_OPTIONS], value: filterStatus, onValueChange: (value) => handleChange("filterStatus", value) }), _jsx(EnhancedRadio, { label: t("filterOptionEnabled"), name: "filterEnabled", value: filterEnabledValue, options: [
|
|
19
|
+
{ label: t("filterOptionAll"), value: "undefined" },
|
|
20
|
+
{ label: t("filterOptionEnabled"), value: "true" },
|
|
21
|
+
{ label: t("filterOptionDisabled"), value: "false" },
|
|
22
22
|
], onValueChange: (next) => {
|
|
23
23
|
const parsed = next === "true" ? true : next === "false" ? false : undefined;
|
|
24
24
|
handleChange("filterEnabled", parsed);
|
|
@@ -13,7 +13,7 @@ export const StudentProfileForm = () => {
|
|
|
13
13
|
const { address, city, country, dateOfBirth, emergencyPhone, enabled, errors, firstName, gender, lastName, phone, postalCode, remarks, status, } = context.state;
|
|
14
14
|
const stateValue = context.state.state;
|
|
15
15
|
const { handleChange } = context;
|
|
16
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold", children: t("
|
|
17
|
-
? new Date(dateOfBirth).toISOString().split("
|
|
18
|
-
: "" }), _jsx(EnhancedCombobox, { error: errors.gender, id: "gender", info: t("
|
|
16
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold", children: t("formSectionPersonalInformation") }), _jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedInput, { error: errors.firstName, id: "firstName", info: t("formStudentsFirstNamePlaceholder"), label: t("formFirstNameLabel"), onChange: (e) => handleChange("firstName", e.target.value), placeholder: t("formFirstNamePlaceholder"), required: true, value: firstName }), _jsx(EnhancedInput, { error: errors.lastName, id: "lastName", info: t("formStudentsLastNamePlaceholder"), label: t("formLastNameLabel"), onChange: (e) => handleChange("lastName", e.target.value), placeholder: t("formLastNamePlaceholder"), required: true, value: lastName }), _jsx(EnhancedInput, { error: errors.dateOfBirth, id: "dateOfBirth", info: t("formDateOfBirthPlaceholder"), label: t("formDateOfBirthLabel"), onChange: (e) => handleChange("dateOfBirth", e.target.value), onClick: (e) => { var _a, _b; return (_b = (_a = e.currentTarget).showPicker) === null || _b === void 0 ? void 0 : _b.call(_a); }, type: "date", value: dateOfBirth
|
|
17
|
+
? new Date(dateOfBirth).toISOString().split("formTLabel")[0]
|
|
18
|
+
: "" }), _jsx(EnhancedCombobox, { error: errors.gender, id: "gender", info: t("formGenderPlaceholder"), label: t("formGenderLabel"), onValueChange: (value) => handleChange("gender", value), options: GENDER_OPTIONS.slice(1), value: gender })] })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold", children: t("formSectionContactInformation") }), _jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedInput, { error: errors.phone, id: "phone", info: t("formStudentsPhoneNumberPlaceholder"), label: t("formPhoneLabel"), onChange: (e) => handleChange("phone", e.target.value), placeholder: t("formPhonePlaceholder"), type: "tel", value: phone || "" }), _jsx(EnhancedInput, { error: errors.emergencyPhone, id: "emergencyPhone", info: t("formStudentsEmergencyPhoneNumberPlaceholder"), label: t("formEmergencyPhoneLabel"), onChange: (e) => handleChange("emergencyPhone", e.target.value), placeholder: t("formEmergencyPhonePlaceholder"), type: "tel", value: emergencyPhone || "" })] }), _jsx(EnhancedInput, { error: errors.address, id: "address", info: t("formStudentsAddressPlaceholder"), label: t("formAddressLabel"), onChange: (e) => handleChange("address", e.target.value), placeholder: t("formAddressPlaceholder"), value: address || "" }), _jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedInput, { error: errors.city, id: "city", info: t("formStudentsCityPlaceholder"), label: t("formCityLabel"), onChange: (e) => handleChange("city", e.target.value), placeholder: t("formCityPlaceholder"), value: city || "" }), _jsx(EnhancedInput, { error: errors.state, id: "state", info: t("formStudentsStateOrProvincePlaceholder"), label: t("formStateProvinceLabel"), onChange: (e) => handleChange("state", e.target.value), placeholder: t("formStatePlaceholder"), value: stateValue || "" }), _jsx(EnhancedInput, { error: errors.country, id: "country", info: t("formStudentsCountryPlaceholder"), label: t("formCountryLabel"), onChange: (e) => handleChange("country", e.target.value), placeholder: t("formCountryPlaceholder"), value: country || "" }), _jsx(EnhancedInput, { error: errors.postalCode, id: "postalCode", info: t("formStudentsPostalCodePlaceholder"), label: t("formPostalCodeLabel"), onChange: (e) => handleChange("postalCode", e.target.value), placeholder: t("formPostalCodePlaceholder"), value: postalCode || "" })] })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold", children: t("formSectionAcademicInformation") }), _jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedCombobox, { error: errors.status, id: "status", info: t("formStudentStatusPlaceholder"), label: t("formOptionStatus"), onValueChange: (value) => handleChange("status", value), options: STATUS_OPTIONS.slice(1), required: true, value: status }), _jsx(EnhancedTextarea, { error: errors.remarks, id: "remarks", info: t("formAnyAdditionalRemarksPlaceholder"), label: t("formRemarksLabel"), onChange: (e) => handleChange("remarks", e.target.value), placeholder: t("formRemarksPlaceholder"), rows: 4, value: remarks || "" })] }), _jsx(EnhancedCheckbox, { checked: enabled, info: t("actionToggleActivateOrDeactivate"), label: t("formActiveStudentLabel"), onCheckedChange: (checked) => handleChange("enabled", checked) })] })] }));
|
|
19
19
|
};
|
|
@@ -22,10 +22,10 @@ export const StudentProfileView = () => {
|
|
|
22
22
|
return "\u2014";
|
|
23
23
|
return formatDate(new Date(date).toISOString(), DATE_FORMATS.LOCALE_DATE);
|
|
24
24
|
};
|
|
25
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsx(Card, { children: _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "flex items-center gap-6", children: [_jsxs(Avatar, { className: "h-24 w-24", children: [_jsx(AvatarImage, { src: avatar || undefined, alt: fullName }), _jsx(AvatarFallback, { className: "text-2xl", children: initials })] }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("h2", { className: "text-2xl font-bold", children: fullName }), enabled ? (_jsx(CheckCircle2, { className: "h-5 w-5 text-green-500" })) : (_jsx(XCircle, { className: "h-5 w-5 text-red-500" }))] }), _jsxs("p", { className: "text-muted-foreground mt-1", children: [t("
|
|
26
|
-
formatValue(emergencyPhone) })] }), _jsxs("div", { className: "space-y-1 md:col-span-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MapPin, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("
|
|
25
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsx(Card, { children: _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "flex items-center gap-6", children: [_jsxs(Avatar, { className: "h-24 w-24", children: [_jsx(AvatarImage, { src: avatar || undefined, alt: fullName }), _jsx(AvatarFallback, { className: "text-2xl", children: initials })] }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("h2", { className: "text-2xl font-bold", children: fullName }), enabled ? (_jsx(CheckCircle2, { className: "h-5 w-5 text-green-500" })) : (_jsx(XCircle, { className: "h-5 w-5 text-red-500" }))] }), _jsxs("p", { className: "text-muted-foreground mt-1", children: [t("viewFieldStudentCode"), ": ", studentCode || "N/A"] }), email && (_jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: email }))] })] }) }) }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(User, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("viewSectionPersonalInformation") })] }), _jsx(CardDescription, { children: t("viewSectionBasicPersonalDetails") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldFirstName") }), _jsx("p", { className: "text-base", children: formatValue(firstName) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldLastName") }), _jsx("p", { className: "text-base", children: formatValue(lastName) })] }), _jsxs("div", { className: "space-y-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Calendar, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldDateOfBirth") })] }), _jsx("p", { className: "text-base", children: formatDateValue(dateOfBirth) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldGender") }), _jsx(Badge, { variant: "secondary", className: "capitalize", children: formatValue(gender === null || gender === void 0 ? void 0 : gender.toLowerCase()) })] })] }) })] }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Phone, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("viewSectionContactInformation") })] }), _jsx(CardDescription, { children: t("viewFieldContactDetailsAndLocation") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2", children: [email && (_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldEmail") }), _jsx("p", { className: "text-base", children: formatValue(email) })] })), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldPhone") }), _jsx("p", { className: "text-base", children: formatPhoneDisplay(phone) || formatValue(phone) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldEmergencyPhone") }), _jsx("p", { className: "text-base", children: formatPhoneDisplay(emergencyPhone) ||
|
|
26
|
+
formatValue(emergencyPhone) })] }), _jsxs("div", { className: "space-y-1 md:col-span-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MapPin, { className: "text-muted-foreground h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldAddress") })] }), _jsx("p", { className: "text-base", children: formatValue(address) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldCity") }), _jsx("p", { className: "text-base", children: formatValue(city) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldStateProvince") }), _jsx("p", { className: "text-base", children: formatValue(stateValue) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldCountry") }), _jsx("p", { className: "text-base", children: formatValue(country) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldPostalCode") }), _jsx("p", { className: "text-base", children: formatValue(postalCode) })] })] }) })] }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(GraduationCap, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("viewSectionAcademicInformation") })] }), _jsx(CardDescription, { children: t("viewFieldEnrollmentAndAcademicStatus") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldStatus") }), _jsx(Badge, { variant: status === "ACTIVE"
|
|
27
27
|
? "default"
|
|
28
28
|
: status === "GRADUATED"
|
|
29
29
|
? "secondary"
|
|
30
|
-
: "outline", className: "capitalize", children: formatValue(status === null || status === void 0 ? void 0 : status.toLowerCase().replace(/_/g, " ")) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("
|
|
30
|
+
: "outline", className: "capitalize", children: formatValue(status === null || status === void 0 ? void 0 : status.toLowerCase().replace(/_/g, " ")) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldAccountStatus") }), _jsx("div", { className: "flex items-center gap-2", children: enabled ? (_jsxs(_Fragment, { children: [_jsx(CheckCircle2, { className: "h-5 w-5 text-green-600 dark:text-green-400" }), _jsx(Badge, { variant: "outline", className: "border-green-600 text-green-700 dark:border-green-400 dark:text-green-400", children: t("badgeActive") })] })) : (_jsxs(_Fragment, { children: [_jsx(XCircle, { className: "h-5 w-5 text-gray-400" }), _jsx(Badge, { variant: "outline", className: "text-muted-foreground", children: t("badgeInactive") })] })) })] })] }) })] })] }));
|
|
31
31
|
};
|
|
@@ -354,21 +354,21 @@ export const useSubjectModule = () => {
|
|
|
354
354
|
{
|
|
355
355
|
enabled: false,
|
|
356
356
|
handleOnClick: handleMoreActions,
|
|
357
|
-
label: t("
|
|
357
|
+
label: t("actionHeaderMoreActions"),
|
|
358
358
|
order: 1,
|
|
359
359
|
icon: MoreHorizontal,
|
|
360
360
|
},
|
|
361
361
|
{
|
|
362
362
|
enabled: true,
|
|
363
363
|
handleOnClick: handleFilters,
|
|
364
|
-
label: t("
|
|
364
|
+
label: t("actionHeaderFilters"),
|
|
365
365
|
order: 2,
|
|
366
366
|
icon: Filter,
|
|
367
367
|
},
|
|
368
368
|
{
|
|
369
369
|
enabled: true,
|
|
370
370
|
handleOnClick: handleCreate,
|
|
371
|
-
label: t("
|
|
371
|
+
label: t("actionHeaderAdd"),
|
|
372
372
|
order: 3,
|
|
373
373
|
icon: Plus,
|
|
374
374
|
},
|
|
@@ -377,21 +377,21 @@ export const useSubjectModule = () => {
|
|
|
377
377
|
{
|
|
378
378
|
enabled: true,
|
|
379
379
|
handleOnClick: handleView,
|
|
380
|
-
label: t("
|
|
380
|
+
label: t("actionRowView"),
|
|
381
381
|
order: 1,
|
|
382
382
|
icon: Eye,
|
|
383
383
|
},
|
|
384
384
|
{
|
|
385
385
|
enabled: true,
|
|
386
386
|
handleOnClick: handleEdit,
|
|
387
|
-
label: t("
|
|
387
|
+
label: t("actionRowEdit"),
|
|
388
388
|
order: 2,
|
|
389
389
|
icon: Edit,
|
|
390
390
|
},
|
|
391
391
|
{
|
|
392
392
|
enabled: (row) => !(row === null || row === void 0 ? void 0 : row.enabled),
|
|
393
393
|
handleOnClick: handleDelete,
|
|
394
|
-
label: t("
|
|
394
|
+
label: t("actionRowDelete"),
|
|
395
395
|
order: 3,
|
|
396
396
|
icon: Trash2,
|
|
397
397
|
variant: "destructive",
|
|
@@ -17,10 +17,10 @@ export const SubjectFilter = () => {
|
|
|
17
17
|
: filterEnabled
|
|
18
18
|
? "true"
|
|
19
19
|
: "false";
|
|
20
|
-
return (_jsx("div", { className: "space-y-4", children: _jsx("div", { className: "grid grid-cols-1 gap-4", children: _jsx(EnhancedRadio, { label: t("
|
|
21
|
-
{ label: t("
|
|
22
|
-
{ label: t("
|
|
23
|
-
{ label: t("
|
|
20
|
+
return (_jsx("div", { className: "space-y-4", children: _jsx("div", { className: "grid grid-cols-1 gap-4", children: _jsx(EnhancedRadio, { label: t("filterOptionEnabled"), name: "filterEnabled", value: filterEnabledValue, options: [
|
|
21
|
+
{ label: t("filterOptionAll"), value: "undefined" },
|
|
22
|
+
{ label: t("filterOptionEnabled"), value: "true" },
|
|
23
|
+
{ label: t("filterOptionDisabled"), value: "false" },
|
|
24
24
|
], onValueChange: (next) => {
|
|
25
25
|
const parsed = next === "true" ? true : next === "false" ? false : undefined;
|
|
26
26
|
handleChange("filterEnabled", parsed);
|
|
@@ -14,5 +14,5 @@ export const SubjectForm = () => {
|
|
|
14
14
|
const { state, handleChange } = useSubjectModule();
|
|
15
15
|
const { code, description, enabled, errors, name } = state;
|
|
16
16
|
const t = useTranslations("subject");
|
|
17
|
-
return (_jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedInput, { error: errors.name, id: "name", info: t("
|
|
17
|
+
return (_jsxs("div", { className: "grid grid-cols-1 gap-4", children: [_jsx(EnhancedInput, { error: errors.name, id: "name", info: t("formSubjectNameInfo"), label: t("formSubjectNameLabel"), onChange: (e) => handleChange("name", e.target.value), placeholder: t("formSubjectNamePlaceholder"), required: true, value: name }), _jsx(EnhancedInput, { error: errors.code, id: "code", info: t("formCodeInfo"), label: t("formSubjectCodeLabel"), onChange: (e) => handleChange("code", e.target.value), placeholder: t("formCodePlaceholder"), required: true, value: code }), _jsx(EnhancedTextarea, { error: errors.description, id: "description", info: t("formDescriptionInfo"), label: t("formDescriptionLabel"), onChange: (e) => handleChange("description", e.target.value), placeholder: t("formDescriptionPlaceholder"), value: description !== null && description !== void 0 ? description : "" }), _jsx(EnhancedCheckbox, { label: t("formActiveSubjectLabel"), defaultChecked: enabled, onCheckedChange: (checked) => handleChange("enabled", checked), info: t("actionToggleEnableOrDisableSubject") })] }));
|
|
18
18
|
};
|
|
@@ -16,5 +16,5 @@ export const SubjectView = () => {
|
|
|
16
16
|
const { state } = useSubjectModule();
|
|
17
17
|
const { code, description, enabled, name } = state;
|
|
18
18
|
const t = useTranslations("subject");
|
|
19
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsx(Card, { children: _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "flex items-center gap-6", children: [_jsx("div", { className: "bg-primary/10 flex h-24 w-24 items-center justify-center rounded-full", children: _jsx(BookOpen, { className: "text-primary h-12 w-12" }) }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("h2", { className: "text-2xl font-bold", children: name }), enabled ? (_jsx(CheckCircle2, { className: "h-5 w-5 text-green-500" })) : (_jsx(XCircle, { className: "h-5 w-5 text-red-500" }))] }), _jsx("p", { className: "text-muted-foreground mt-1", children: code })] })] }) }) }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(BookOpen, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("
|
|
19
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsx(Card, { children: _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "flex items-center gap-6", children: [_jsx("div", { className: "bg-primary/10 flex h-24 w-24 items-center justify-center rounded-full", children: _jsx(BookOpen, { className: "text-primary h-12 w-12" }) }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("h2", { className: "text-2xl font-bold", children: name }), enabled ? (_jsx(CheckCircle2, { className: "h-5 w-5 text-green-500" })) : (_jsx(XCircle, { className: "h-5 w-5 text-red-500" }))] }), _jsx("p", { className: "text-muted-foreground mt-1", children: code })] })] }) }) }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(BookOpen, { className: "text-primary h-5 w-5" }), _jsx(CardTitle, { className: "text-lg", children: t("viewSectionSubjectDetails") })] }), _jsx(CardDescription, { children: t("viewSectionCompleteSubjectInformation") })] }), _jsx(Separator, {}), _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldSubjectName") }), _jsx("p", { className: "text-base", children: formatValue(name) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldSubjectCode") }), _jsx("p", { className: "text-base", children: formatValue(code) })] }), description && (_jsxs("div", { className: "col-span-full space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldDescription") }), _jsx("p", { className: "text-base", children: description })] })), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-muted-foreground text-sm font-medium", children: t("viewFieldStatus") }), _jsx(Badge, { variant: enabled ? "default" : "secondary", children: enabled ? t("viewFieldStatusActive") : t("viewFieldStatusInactive") })] })] }) })] })] }));
|
|
20
20
|
};
|