feat: implement full page components and validation schema; enhance translations and form handling

This commit is contained in:
Firman Ramdhani
2026-07-27 11:52:40 +07:00
parent db1abcbdd4
commit 5f97c6b2b0
16 changed files with 131 additions and 43 deletions
@@ -0,0 +1,25 @@
import { Stack, Text, StackProps } from '@mantine/core';
import React from 'react';
export interface FieldValueProps extends StackProps {
label: React.ReactNode;
value?: React.ReactNode;
render?: (value?: React.ReactNode) => React.ReactNode;
}
export function FieldValue({ label, value, render, ...stackProps }: FieldValueProps) {
return (
<Stack gap={4} {...stackProps}>
<Text size="xs" fw={600}>
{label}
</Text>
{render ? (
render(value)
) : (
<Text size="sm" fw={500}>
{value || '-'}
</Text>
)}
</Stack>
);
}
@@ -0,0 +1,2 @@
export * from './field-value';
export * from './render-date';
@@ -0,0 +1,19 @@
import React from 'react';
import { DateUtils } from '@repo/utils';
export interface RenderDateProps {
value?: string | number | Date | DateUtils | null;
format?: string;
fallback?: string;
}
export function RenderDate({ value, format = 'DD-MM-YYYY, HH:mm', fallback = '-' }: RenderDateProps) {
if (!value) return <>{fallback}</>;
try {
const parsedValue = typeof value === 'string' && !isNaN(Number(value)) ? Number(value) : value;
return <>{new DateUtils(parsedValue as any).format(format)}</>;
} catch (error) {
return <>{fallback}</>;
}
}
+1
View File
@@ -13,3 +13,4 @@ export * from './core-app-shell';
export * from './actions-tools';
export * from './status-badge';
export * from './ag-grid';
export * from './field-value';