components stablized
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Safely gets a field value from an item, supporting nested fields with dot notation
|
||||
*/
|
||||
export function getFieldValue(item: any, field: string): any {
|
||||
if (!item) return "";
|
||||
|
||||
// Handle nested fields with dot notation (e.g., "user.name")
|
||||
if (field.includes(".")) {
|
||||
const parts = field.split(".");
|
||||
let value = item;
|
||||
for (const part of parts) {
|
||||
if (value === null || value === undefined) return "";
|
||||
value = value[part];
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
return item[field];
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a field label from translations or formats the field name
|
||||
*/
|
||||
export function getFieldLabel(field: string, translations: Record<string, any>, lang: string): string {
|
||||
const t = translations[lang] || {};
|
||||
return t[field] || field.charAt(0).toUpperCase() + field.slice(1).replace(/_/g, " ");
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates responsive grid classes based on the gridCols prop
|
||||
*/
|
||||
export function getGridClasses(gridCols: 1 | 2 | 3 | 4 | 5 | 6): string {
|
||||
const baseClass = "grid grid-cols-1 gap-4";
|
||||
|
||||
// Map gridCols to responsive classes
|
||||
const colClasses: Record<number, string> = {
|
||||
1: "",
|
||||
2: "sm:grid-cols-2",
|
||||
3: "sm:grid-cols-2 md:grid-cols-3",
|
||||
4: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4",
|
||||
5: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5",
|
||||
6: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6"
|
||||
};
|
||||
|
||||
return `${baseClass} ${colClasses[gridCols]}`;
|
||||
}
|
||||
Reference in New Issue
Block a user