+
+
+
+
+
+
+ {helperText}
+
+
+
+
+ {errorMessage || 'Please enter a valid value'}
+
+
+
+
+
+
diff --git a/src/components/common/LoadingIndicator.astro b/src/components/common/LoadingIndicator.astro
new file mode 100644
index 0000000..1a5ccf9
--- /dev/null
+++ b/src/components/common/LoadingIndicator.astro
@@ -0,0 +1,126 @@
+---
+interface Props {
+ size?: 'small' | 'medium' | 'large';
+ type?: 'spinner' | 'dots' | 'pulse';
+ color?: string;
+ class?: string;
+}
+
+const {
+ size = 'medium',
+ type = 'spinner',
+ color = 'currentColor',
+ class: className = '',
+} = Astro.props;
+
+const sizeMap = {
+ small: 'w-4 h-4',
+ medium: 'w-8 h-8',
+ large: 'w-12 h-12',
+};
+
+const sizeClass = sizeMap[size] || sizeMap.medium;
+---
+
+{type === 'spinner' && (
+