From 307554bd9a71f92f0e91570ddd8e100414316997 Mon Sep 17 00:00:00 2001 From: Sarita Damodar Naik Date: Wed, 15 Apr 2026 19:59:14 +0530 Subject: [PATCH 1/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c5c886b3e..353a45fb5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# HackToFuture 4.0 โ€” Template +# The Specter Sentinals Welcome to your official HackToFuture 4 repository. From 2170f27e6c8a6f896c2839e16c612e92ff3fed9c Mon Sep 17 00:00:00 2001 From: Sarita Damodar Naik Date: Wed, 15 Apr 2026 21:18:01 +0530 Subject: [PATCH 2/9] Organize --- organize_image.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 organize_image.py diff --git a/organize_image.py b/organize_image.py new file mode 100644 index 000000000..f93c3b214 --- /dev/null +++ b/organize_image.py @@ -0,0 +1,57 @@ +import os +import shutil +import random + +SOURCE = "data/images/all" +TRAIN_DIR = "data/images/train" +VAL_DIR = "data/images/val" +VAL_RATIO = 0.2 + +classes = ["normal", "possible_heat", "health_concern"] + +print("=" * 50) +print("๐Ÿ“‚ STEP 1: ORGANIZING IMAGES") +print("=" * 50) + +for cls in classes: + src_dir = os.path.join(SOURCE, cls) + train_cls = os.path.join(TRAIN_DIR, cls) + val_cls = os.path.join(VAL_DIR, cls) + + + os.makedirs(train_cls, exist_ok=True) + os.makedirs(val_cls, exist_ok=True) + + if not os.path.exists(src_dir): + print(f"โš ๏ธ Folder not found: {src_dir}") + print(f" Create it and put {cls} images inside!") + continue + + + images = [f for f in os.listdir(src_dir) + if f.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp', '.webp'))] + + if len(images) == 0: + print(f"โš ๏ธ No images in {src_dir}") + continue + + + random.shuffle(images) + + + val_count = max(1, int(len(images) * VAL_RATIO)) + val_images = images[:val_count] + train_images = images[val_count:] + + + for img in train_images: + shutil.copy2(os.path.join(src_dir, img), os.path.join(train_cls, img)) + + for img in val_images: + shutil.copy2(os.path.join(src_dir, img), os.path.join(val_cls, img)) + + print(f"โœ… {cls}:") + print(f" Total: {len(images)} โ†’ Train: {len(train_images)} | Val: {len(val_images)}") + +print("\n๐ŸŽ‰ Images organized into train/ and val/ folders!") +print(" Next step: Run step2_train_model.py") \ No newline at end of file From 7e00b6cf1751023f4415f00c92579035faeffc82 Mon Sep 17 00:00:00 2001 From: Sarita Damodar Naik Date: Wed, 15 Apr 2026 22:58:22 +0530 Subject: [PATCH 3/9] Update organize_image.py --- organize_image.py | 1 - 1 file changed, 1 deletion(-) diff --git a/organize_image.py b/organize_image.py index f93c3b214..208e4acc2 100644 --- a/organize_image.py +++ b/organize_image.py @@ -54,4 +54,3 @@ print(f" Total: {len(images)} โ†’ Train: {len(train_images)} | Val: {len(val_images)}") print("\n๐ŸŽ‰ Images organized into train/ and val/ folders!") -print(" Next step: Run step2_train_model.py") \ No newline at end of file From 243cff1dde97189043fb3c95d6313272bbf048c0 Mon Sep 17 00:00:00 2001 From: Sarita Damodar Naik Date: Wed, 15 Apr 2026 23:21:16 +0530 Subject: [PATCH 4/9] Training --- train.py | 245 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 train.py diff --git a/train.py b/train.py new file mode 100644 index 000000000..e6a54c274 --- /dev/null +++ b/train.py @@ -0,0 +1,245 @@ +import os +import numpy as np +import tensorflow as tf +from tensorflow.keras.applications import MobileNetV2 +from tensorflow.keras.layers import Dense, GlobalAveragePooling2D, Dropout +from tensorflow.keras.models import Model +from tensorflow.keras.optimizers import Adam +from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint +from tensorflow.keras.preprocessing.image import ImageDataGenerator +import matplotlib.pyplot as plt + +print("=" * 60) +print("๐Ÿง  PASHUMITRA โ€” VISION MODEL TRAINING") +print("=" * 60) + +TRAIN_DIR = "data/images/train" +VAL_DIR = "data/images/val" +MODEL_SAVE_DIR = "ml_models" +IMG_SIZE = 224 +BATCH_SIZE = 32 +EPOCHS = 20 + +os.makedirs(MODEL_SAVE_DIR, exist_ok=True) + +#LOAD IMAGES + +print("\n๐Ÿ“ธ PART A: Loading images...") + +# Training images WITH augmentation (creates variety) +train_datagen = ImageDataGenerator( + rescale=1.0/255.0, # Convert pixel values 0-255 โ†’ 0-1 + rotation_range=20, # Randomly rotate up to 20 degrees + width_shift_range=0.2, # Randomly shift horizontally + height_shift_range=0.2, # Randomly shift vertically + horizontal_flip=True, # Randomly flip left-right + zoom_range=0.2, # Randomly zoom in/out + brightness_range=[0.8, 1.2], # Randomly change brightness + fill_mode='nearest' # How to fill empty pixels +) + +# Validation images WITHOUT augmentation (pure test) +val_datagen = ImageDataGenerator( + rescale=1.0/255.0 # Only convert pixel values +) + +# Load training images from folders +train_generator = train_datagen.flow_from_directory( + TRAIN_DIR, + target_size=(IMG_SIZE, IMG_SIZE), # Resize all to 224ร—224 + batch_size=BATCH_SIZE, + class_mode='categorical', # 3 classes โ†’ one-hot encoding + classes=['normal', 'possible_heat', 'health_concern'], + shuffle=True +) + +# Load validation images from folders +val_generator = val_datagen.flow_from_directory( + VAL_DIR, + target_size=(IMG_SIZE, IMG_SIZE), + batch_size=BATCH_SIZE, + class_mode='categorical', + classes=['normal', 'possible_heat', 'health_concern'], + shuffle=False +) + +print(f"\nโœ… Training images: {train_generator.samples}") +print(f"โœ… Validation images: {val_generator.samples}") +print(f"โœ… Classes: {train_generator.class_indices}") +print(f" 0 = normal") +print(f" 1 = possible_heat") +print(f" 2 = health_concern") + + +#BUILD THE MODEL + +print("\n๐Ÿ—๏ธ PART B: Building model...") + +#Download MobileNetV2 (pre-trained brain) +print(" Downloading MobileNetV2 pre-trained weights...") +base_model = MobileNetV2( + weights='imagenet', # Use ImageNet knowledge + include_top=False, # Remove original classification head + input_shape=(224, 224, 3) # Input: 224ร—224 RGB image +) + +# Freeze the pre-trained layers (don't change them) +base_model.trainable = False +print(f" โœ… MobileNetV2 loaded: {len(base_model.layers)} layers (all frozen)") + +#Add our custom classification head +x = base_model.output +x = GlobalAveragePooling2D()(x) # Compress features +x = Dense(128, activation='relu')(x) # Learn patterns (128 neurons) +x = Dropout(0.3)(x) # Prevent overfitting (drop 30%) +x = Dense(64, activation='relu')(x) # Learn patterns (64 neurons) +x = Dropout(0.2)(x) # Prevent overfitting (drop 20%) +predictions = Dense(3, activation='softmax')(x) # 3 classes output + +# Create final model +model = Model(inputs=base_model.input, outputs=predictions) + +#Compile (set optimizer and loss function) +model.compile( + optimizer=Adam(learning_rate=0.001), + loss='categorical_crossentropy', + metrics=['accuracy'] +) + + +total_params = model.count_params() +trainable_params = sum([tf.keras.backend.count_params(w) for w in model.trainable_weights]) +print(f" โœ… Total parameters: {total_params:,}") +print(f" โœ… Trainable parameters: {trainable_params:,}") +print(f" โœ… Frozen parameters: {total_params - trainable_params:,}") + +# TRAIN THE MODEL + +print("\n๐Ÿš€ PART C: Training model...") +print(f" Epochs: {EPOCHS}") +print(f" Batch size: {BATCH_SIZE}") +print(f" This will take 15-30 minutes...\n") + + +callbacks = [ + + ModelCheckpoint( + os.path.join(MODEL_SAVE_DIR, 'mobilenet_v2.h5'), + monitor='val_accuracy', + save_best_only=True, + verbose=1 + ), + + EarlyStopping( + monitor='val_accuracy', + patience=5, + restore_best_weights=True, + verbose=1 + ) +] + + +history = model.fit( + train_generator, + epochs=EPOCHS, + validation_data=val_generator, + callbacks=callbacks, + verbose=1 +) + +print("\nโœ… Training complete!") + + +print("\n๐Ÿ“Š PART D: Results") +print("=" * 60) + +train_acc = history.history['accuracy'][-1] +val_acc = history.history['val_accuracy'][-1] +train_loss = history.history['loss'][-1] +val_loss = history.history['val_loss'][-1] + +print(f"\n ๐Ÿ“ˆ Training Accuracy: {train_acc:.4f} ({train_acc*100:.1f}%)") +print(f" ๐Ÿ“ˆ Validation Accuracy: {val_acc:.4f} ({val_acc*100:.1f}%)") +print(f" ๐Ÿ“‰ Training Loss: {train_loss:.4f}") +print(f" ๐Ÿ“‰ Validation Loss: {val_loss:.4f}") + + +best_val_acc = max(history.history['val_accuracy']) +best_epoch = history.history['val_accuracy'].index(best_val_acc) + 1 +print(f"\n ๐Ÿ† Best Validation Accuracy: {best_val_acc:.4f} ({best_val_acc*100:.1f}%) at Epoch {best_epoch}") + + +print("\n๐Ÿ“Š PART E: Saving charts...") + +fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5)) + + +ax1.plot(history.history['accuracy'], label='Train Accuracy', color='#4CAF50', linewidth=2) +ax1.plot(history.history['val_accuracy'], label='Val Accuracy', color='#2196F3', linewidth=2) +ax1.set_title('Model Accuracy', fontsize=14, fontweight='bold') +ax1.set_xlabel('Epoch') +ax1.set_ylabel('Accuracy') +ax1.legend() +ax1.grid(True, alpha=0.3) +ax1.set_ylim([0, 1.05]) + + +ax2.plot(history.history['loss'], label='Train Loss', color='#F44336', linewidth=2) +ax2.plot(history.history['val_loss'], label='Val Loss', color='#FF9800', linewidth=2) +ax2.set_title('Model Loss', fontsize=14, fontweight='bold') +ax2.set_xlabel('Epoch') +ax2.set_ylabel('Loss') +ax2.legend() +ax2.grid(True, alpha=0.3) + +plt.tight_layout() +plt.savefig(os.path.join(MODEL_SAVE_DIR, 'training_charts.png'), dpi=150) +print(f" โœ… Chart saved: {MODEL_SAVE_DIR}/training_charts.png") + + +print("\n๐Ÿงช PART F: Testing on validation images...") + +from tensorflow.keras.preprocessing import image + +CLASS_NAMES = ['normal', 'possible_heat', 'health_concern'] + +best_model = tf.keras.models.load_model(os.path.join(MODEL_SAVE_DIR, 'mobilenet_v2.h5')) + + +test_results = [] +for cls in CLASS_NAMES: + cls_dir = os.path.join(VAL_DIR, cls) + if not os.path.exists(cls_dir): + continue + + images_list = [f for f in os.listdir(cls_dir) if f.lower().endswith(('.jpg', '.jpeg', '.png'))] + if not images_list: + continue + + + test_img_path = os.path.join(cls_dir, images_list[0]) + + + img = image.load_img(test_img_path, target_size=(224, 224)) + img_array = image.img_to_array(img) + img_array = img_array / 255.0 + img_array = np.expand_dims(img_array, axis=0) + + + predictions = best_model.predict(img_array, verbose=0) + predicted_class = CLASS_NAMES[np.argmax(predictions[0])] + confidence = np.max(predictions[0]) + + match = "โœ…" if predicted_class == cls else "โŒ" + + print(f" {match} Actual: {cls:20s} | Predicted: {predicted_class:20s} | Confidence: {confidence:.2%}") + print(f" Scores: normal={predictions[0][0]:.3f} | heat={predictions[0][1]:.3f} | health={predictions[0][2]:.3f}") + + +print("\n" + "=" * 60) +print("๐ŸŽ‰ VISION MODEL TRAINING COMPLETE!") +print("=" * 60) +print(f"\n ๐Ÿ“ Model saved at: {MODEL_SAVE_DIR}/mobilenet_v2.h5") +print(f" ๐Ÿ“Š Charts saved at: {MODEL_SAVE_DIR}/training_charts.png") +print(f" ๐Ÿ† Best accuracy: {best_val_acc*100:.1f}%") +print(f"\n Next step: Run step3_train_xgboost.py") \ No newline at end of file From 883f1aa951b78ae319bcbb27229a0699fdde9736 Mon Sep 17 00:00:00 2001 From: Sarita Damodar Naik Date: Thu, 16 Apr 2026 00:41:04 +0530 Subject: [PATCH 5/9] xgboost --- train_xgboost.py | 293 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 293 insertions(+) create mode 100644 train_xgboost.py diff --git a/train_xgboost.py b/train_xgboost.py new file mode 100644 index 000000000..57cdc6068 --- /dev/null +++ b/train_xgboost.py @@ -0,0 +1,293 @@ +import pandas as pd +import numpy as np +import os +import random +import joblib +import json +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import LabelEncoder +from xgboost import XGBClassifier +from sklearn.metrics import ( + accuracy_score, precision_score, recall_score, + f1_score, confusion_matrix, classification_report +) +import matplotlib.pyplot as plt + +print("=" * 60) +print("๐Ÿ“Š PASHUMITRA โ€” XGBOOST MODEL TRAINING") +print("=" * 60) + +MODEL_SAVE_DIR = "ml_models" +os.makedirs(MODEL_SAVE_DIR, exist_ok=True) + +print("\n๐Ÿ“‹ PART A: Generating dataset...") + +random.seed(42) +np.random.seed(42) + +def generate_dataset(n=1000): + data = [] + species_list = ['cow', 'buffalo', 'goat', 'sheep'] + species_weights = [0.45, 0.30, 0.15, 0.10] + season_list = ['summer', 'monsoon', 'winter', 'spring'] + breed_map = {'cow': [1,2,3,4], 'buffalo': [5,6,7], 'goat': [8,9], 'sheep': [10,11]} + weight_range = {'cow': (250,450), 'buffalo': (400,600), 'goat': (25,50), 'sheep': (25,50)} + + for i in range(n): + species = random.choices(species_list, weights=species_weights, k=1)[0] + breed = random.choice(breed_map[species]) + age = random.randint(12, 156) + w_min, w_max = weight_range[species] + weight = round(random.uniform(w_min, w_max), 1) + num_calvings = random.randint(0, min(7, age // 24)) + days_last_calving = random.randint(30, 300) if num_calvings > 0 else 0 + cycle_reg = round(random.uniform(0.3, 0.95), 2) + season = random.choice(season_list) + hour = random.randint(4, 20) + days_last_heat = random.randint(14, 80) + days_last_ai = random.randint(0, 200) if num_calvings > 0 else 0 + + cycle_match = 1 if 17 <= days_last_heat <= 24 else 0 + + if cycle_match and random.random() < 0.75: + is_heat = 1 + q = [random.choices([1,0], weights=[w, 1-w])[0] + for w in [0.85, 0.75, 0.80, 0.60, 0.30, 0.65, 0.35, 0.70]] + else: + is_heat = 0 + q = [random.choices([1,0], weights=[w, 1-w])[0] + for w in [0.10, 0.08, 0.05, 0.05, 0.15, 0.10, 0.12, 0.03]] + + health = 'low' + if q[4] and q[6] and not is_heat: + health = random.choices(['low','medium','high'], weights=[0.3,0.5,0.2])[0] + elif age > 120 and num_calvings > 5: + health = random.choices(['low','medium','high'], weights=[0.4,0.4,0.2])[0] + + data.append({ + 'species': species, 'breed_encoded': breed, 'age_months': age, + 'weight_kg': weight, 'num_calvings': num_calvings, + 'days_since_last_calving': days_last_calving, + 'days_since_last_heat': days_last_heat, 'days_since_last_ai': days_last_ai, + 'cycle_regularity': cycle_reg, + 'q_restless': q[0], 'q_swelling': q[1], 'q_mucus': q[2], + 'q_mounting': q[3], 'q_appetite_reduced': q[4], 'q_bellowing': q[5], + 'q_milk_reduced': q[6], 'q_standing_heat': q[7], + 'symptom_score': sum(q), 'hour_of_day': hour, 'season': season, + 'is_in_heat': is_heat, 'health_risk': health + }) + return pd.DataFrame(data) + +df = generate_dataset(1000) +df.to_csv('tabular_dataset.csv', index=False) + +print(f" โœ… Generated: {df.shape[0]} rows, {df.shape[1]} columns") +print(f" โœ… Saved: tabular_dataset.csv") +print(f"\n Heat distribution:") +print(f" Not in heat: {(df['is_in_heat']==0).sum()} ({(df['is_in_heat']==0).mean()*100:.1f}%)") +print(f" In heat: {(df['is_in_heat']==1).sum()} ({(df['is_in_heat']==1).mean()*100:.1f}%)") + + +print("\n๐Ÿ”ง PART B: Creating smart features...") + +species_encoder = LabelEncoder() +df['species_encoded'] = species_encoder.fit_transform(df['species']) + +season_encoder = LabelEncoder() +df['season_encoded'] = season_encoder.fit_transform(df['season']) + + +df['days_since_heat_mod21'] = df['days_since_last_heat'] % 21 +df['is_cycle_window'] = ((df['days_since_heat_mod21'] >= 18) | + (df['days_since_heat_mod21'] <= 3)).astype(int) +df['high_symptom'] = (df['symptom_score'] >= 5).astype(int) +df['calving_recovery'] = (df['days_since_last_calving'] >= 60).astype(int) +df['symptom_x_cycle'] = df['symptom_score'] * df['is_cycle_window'] + +print(" โœ… Feature 1: days_since_heat_mod21 โ†’ Where in 21-day cycle?") +print(" โœ… Feature 2: is_cycle_window โ†’ Near expected heat time?") +print(" โœ… Feature 3: high_symptom โ†’ 5+ symptoms positive?") +print(" โœ… Feature 4: calving_recovery โ†’ Recovered from calving?") +print(" โœ… Feature 5: symptom_x_cycle โ†’ Symptoms ร— cycle interaction") + + +# PART C: SPLIT DATA + +print("\n๐Ÿ“ PART C: Splitting data...") + +FEATURE_COLUMNS = [ + 'species_encoded', 'breed_encoded', 'age_months', 'weight_kg', + 'num_calvings', 'days_since_last_calving', 'days_since_last_heat', + 'days_since_last_ai', 'cycle_regularity', + 'q_restless', 'q_swelling', 'q_mucus', 'q_mounting', + 'q_appetite_reduced', 'q_bellowing', 'q_milk_reduced', 'q_standing_heat', + 'symptom_score', 'hour_of_day', 'season_encoded', + 'days_since_heat_mod21', 'is_cycle_window', 'high_symptom', + 'calving_recovery', 'symptom_x_cycle' +] + +X = df[FEATURE_COLUMNS] +y = df['is_in_heat'] + +X_train, X_test, y_train, y_test = train_test_split( + X, y, test_size=0.2, random_state=42, stratify=y +) + +print(f" โœ… Total features: {len(FEATURE_COLUMNS)}") +print(f" โœ… Training rows: {X_train.shape[0]}") +print(f" โœ… Test rows: {X_test.shape[0]}") + + +print("\n๐Ÿš€ PART D: Training XGBoost...") + +xgb_model = XGBClassifier( + n_estimators=200, + max_depth=6, + learning_rate=0.1, + subsample=0.8, + colsample_bytree=0.8, + min_child_weight=3, + gamma=0.1, + reg_alpha=0.1, + reg_lambda=1.0, + scale_pos_weight=len(y_train[y_train==0]) / len(y_train[y_train==1]), + random_state=42, + eval_metric='logloss', + use_label_encoder=False +) + +xgb_model.fit( + X_train, y_train, + eval_set=[(X_test, y_test)], + verbose=50 +) + +print("\n โœ… Training complete!") + + +print("\n๐Ÿ“Š PART E: Evaluation Results") +print("=" * 60) + +y_pred = xgb_model.predict(X_test) + +acc = accuracy_score(y_test, y_pred) +prec = precision_score(y_test, y_pred) +rec = recall_score(y_test, y_pred) +f1 = f1_score(y_test, y_pred) + +print(f"\n ๐ŸŽฏ Accuracy: {acc*100:.1f}%") +print(f" ๐ŸŽฏ Precision: {prec*100:.1f}%") +print(f" ๐ŸŽฏ Recall: {rec*100:.1f}%") +print(f" ๐ŸŽฏ F1 Score: {f1*100:.1f}%") + +cm = confusion_matrix(y_test, y_pred) +print(f"\n Confusion Matrix:") +print(f" Predicted") +print(f" No Heat In Heat") +print(f" Actual No Heat {cm[0][0]:4d} {cm[0][1]:4d}") +print(f" Actual In Heat {cm[1][0]:4d} {cm[1][1]:4d}") + +print("\n๐Ÿ“Š PART F: Most Important Features") +print("-" * 50) + +importance = xgb_model.feature_importances_ +feat_imp = sorted(zip(FEATURE_COLUMNS, importance), key=lambda x: x[1], reverse=True) + +for rank, (feat, imp) in enumerate(feat_imp[:10], 1): + bar = "โ–ˆ" * int(imp * 80) + print(f" {rank:2d}. {feat:30s} {imp:.4f} {bar}") + + +fig, ax = plt.subplots(figsize=(10, 6)) +top10 = feat_imp[:10] +ax.barh([f[0] for f in reversed(top10)], [f[1] for f in reversed(top10)], color='#4CAF50') +ax.set_xlabel('Importance') +ax.set_title('PashuMitra โ€” Top 10 Feature Importance', fontweight='bold') +plt.tight_layout() +plt.savefig(os.path.join(MODEL_SAVE_DIR, 'feature_importance.png'), dpi=150) +print(f"\n โœ… Chart saved: {MODEL_SAVE_DIR}/feature_importance.png") + + +print("\n๐Ÿ’พ PART G: Saving models...") + +joblib.dump(xgb_model, os.path.join(MODEL_SAVE_DIR, 'xgboost_estrus.pkl')) +joblib.dump(species_encoder, os.path.join(MODEL_SAVE_DIR, 'species_encoder.pkl')) +joblib.dump(season_encoder, os.path.join(MODEL_SAVE_DIR, 'season_encoder.pkl')) + +with open(os.path.join(MODEL_SAVE_DIR, 'feature_columns.json'), 'w') as f: + json.dump(FEATURE_COLUMNS, f) + +print(" โœ… xgboost_estrus.pkl") +print(" โœ… species_encoder.pkl") +print(" โœ… season_encoder.pkl") +print(" โœ… feature_columns.json") + + +print("\n๐Ÿงช PART H: Quick test...") + +def quick_predict(data, label): + d = data.copy() + d['species_encoded'] = species_encoder.transform([d['species']])[0] + d['season_encoded'] = season_encoder.transform([d['season']])[0] + symp = sum([d[k] for k in ['q_restless','q_swelling','q_mucus','q_mounting', + 'q_appetite_reduced','q_bellowing','q_milk_reduced','q_standing_heat']]) + d['symptom_score'] = symp + d['days_since_heat_mod21'] = d['days_since_last_heat'] % 21 + d['is_cycle_window'] = int(d['days_since_heat_mod21'] >= 18 or d['days_since_heat_mod21'] <= 3) + d['high_symptom'] = int(symp >= 5) + d['calving_recovery'] = int(d['days_since_last_calving'] >= 60) + d['symptom_x_cycle'] = symp * d['is_cycle_window'] + + features = [d[col] for col in FEATURE_COLUMNS] + df_in = pd.DataFrame([features], columns=FEATURE_COLUMNS) + prob = float(xgb_model.predict_proba(df_in)[0][1]) + result = "๐Ÿ”ฅ IN HEAT" if prob >= 0.5 else "โ„๏ธ NOT IN HEAT" + + print(f"\n {label}:") + print(f" Symptoms: {symp}/8 | Day: {d['days_since_last_heat']} | Species: {d['species']}") + print(f" Heat Probability: {prob:.1%}") + print(f" Prediction: {result}") + + +quick_predict({ + 'species': 'cow', 'breed_encoded': 3, 'age_months': 48, + 'weight_kg': 350, 'num_calvings': 2, 'days_since_last_calving': 90, + 'days_since_last_heat': 21, 'days_since_last_ai': 60, 'cycle_regularity': 0.85, + 'q_restless': 1, 'q_swelling': 1, 'q_mucus': 1, 'q_mounting': 1, + 'q_appetite_reduced': 0, 'q_bellowing': 1, 'q_milk_reduced': 0, 'q_standing_heat': 1, + 'hour_of_day': 6, 'season': 'winter' +}, "TEST 1 โ€” Cow, 6 symptoms, day 21") + + +quick_predict({ + 'species': 'cow', 'breed_encoded': 3, 'age_months': 48, + 'weight_kg': 350, 'num_calvings': 2, 'days_since_last_calving': 90, + 'days_since_last_heat': 45, 'days_since_last_ai': 60, 'cycle_regularity': 0.85, + 'q_restless': 0, 'q_swelling': 0, 'q_mucus': 0, 'q_mounting': 0, + 'q_appetite_reduced': 0, 'q_bellowing': 0, 'q_milk_reduced': 0, 'q_standing_heat': 0, + 'hour_of_day': 12, 'season': 'winter' +}, "TEST 2 โ€” Cow, 0 symptoms, day 45") + + +quick_predict({ + 'species': 'buffalo', 'breed_encoded': 5, 'age_months': 60, + 'weight_kg': 480, 'num_calvings': 3, 'days_since_last_calving': 95, + 'days_since_last_heat': 20, 'days_since_last_ai': 75, 'cycle_regularity': 0.70, + 'q_restless': 1, 'q_swelling': 0, 'q_mucus': 1, 'q_mounting': 0, + 'q_appetite_reduced': 0, 'q_bellowing': 1, 'q_milk_reduced': 0, 'q_standing_heat': 0, + 'hour_of_day': 8, 'season': 'monsoon' +}, "TEST 3 โ€” Buffalo, 3 symptoms, day 20") + + +print("\n" + "=" * 60) +print("๐ŸŽ‰ XGBOOST MODEL TRAINING COMPLETE!") +print("=" * 60) +print(f""" + ๐Ÿ“ Model: {MODEL_SAVE_DIR}/xgboost_estrus.pkl + ๐Ÿ“Š Chart: {MODEL_SAVE_DIR}/feature_importance.png + ๐Ÿ“‹ Dataset: tabular_dataset.csv + ๐ŸŽฏ Accuracy: {acc*100:.1f}% + ๐ŸŽฏ F1 Score: {f1*100:.1f}% + + โœ… XGBoost model is READY! +""") \ No newline at end of file From 91b03d05aabbd2438d5736d604d4c8ef5d2830f3 Mon Sep 17 00:00:00 2001 From: Sarita Damodar Naik Date: Thu, 16 Apr 2026 17:42:17 +0530 Subject: [PATCH 6/9] initial commit: clean project setup --- .gitignore | 4 + index.html | 12 + package-lock.json | 2608 ++++++++++++++++++++++++++++++++++ package.json | 30 + public/cattle-bg.jpg | Bin 0 -> 181970 bytes src/App.tsx | 100 ++ src/components/Sidebar.tsx | 134 ++ src/index.css | 51 + src/main.tsx | 10 + src/pages/Alerts.tsx | 170 +++ src/pages/Animals.tsx | 259 ++++ src/pages/CCTVMonitoring.tsx | 506 +++++++ src/pages/Dashboard.tsx | 268 ++++ src/pages/ImageAnalysis.tsx | 408 ++++++ src/pages/ManualCheckIn.tsx | 706 +++++++++ src/store/cattleStore.ts | 145 ++ src/utils/cn.ts | 6 + tsconfig.json | 31 + vite.config.ts | 19 + 19 files changed, 5467 insertions(+) create mode 100644 .gitignore create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/cattle-bg.jpg create mode 100644 src/App.tsx create mode 100644 src/components/Sidebar.tsx create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/pages/Alerts.tsx create mode 100644 src/pages/Animals.tsx create mode 100644 src/pages/CCTVMonitoring.tsx create mode 100644 src/pages/Dashboard.tsx create mode 100644 src/pages/ImageAnalysis.tsx create mode 100644 src/pages/ManualCheckIn.tsx create mode 100644 src/store/cattleStore.ts create mode 100644 src/utils/cn.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..25879bed8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +dist/ +.env +.vscode/ diff --git a/index.html b/index.html new file mode 100644 index 000000000..9ca7c22a4 --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ + + + + + + CattleWatch AI โ€“ Cattle Monitoring System + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..e5366319f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2608 @@ +{ + "name": "react-vite-tailwind", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "react-vite-tailwind", + "version": "0.0.0", + "dependencies": { + "clsx": "2.1.1", + "lucide-react": "^1.8.0", + "react": "19.2.3", + "react-dom": "19.2.3", + "tailwind-merge": "3.4.0", + "zustand": "^5.0.12" + }, + "devDependencies": { + "@tailwindcss/vite": "4.1.17", + "@types/node": "22.19.17", + "@types/react": "19.2.7", + "@types/react-dom": "19.2.3", + "@vitejs/plugin-react": "5.1.1", + "tailwindcss": "4.1.17", + "typescript": "5.9.3", + "vite": "7.2.4", + "vite-plugin-singlefile": "2.3.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.47.tgz", + "integrity": "sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", + "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", + "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", + "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", + "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", + "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", + "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", + "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", + "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", + "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", + "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", + "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", + "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", + "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", + "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", + "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", + "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", + "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", + "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", + "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", + "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", + "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", + "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", + "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", + "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", + "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.17.tgz", + "integrity": "sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.17" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.17.tgz", + "integrity": "sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.17", + "@tailwindcss/oxide-darwin-arm64": "4.1.17", + "@tailwindcss/oxide-darwin-x64": "4.1.17", + "@tailwindcss/oxide-freebsd-x64": "4.1.17", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.17", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.17", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.17", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.17", + "@tailwindcss/oxide-linux-x64-musl": "4.1.17", + "@tailwindcss/oxide-wasm32-wasi": "4.1.17", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.17", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.17" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.17.tgz", + "integrity": "sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.17.tgz", + "integrity": "sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.17.tgz", + "integrity": "sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.17.tgz", + "integrity": "sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.17.tgz", + "integrity": "sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.17.tgz", + "integrity": "sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.17.tgz", + "integrity": "sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.17.tgz", + "integrity": "sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.17.tgz", + "integrity": "sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.17.tgz", + "integrity": "sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.6.0", + "@emnapi/runtime": "^1.6.0", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.0.7", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.17.tgz", + "integrity": "sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.17.tgz", + "integrity": "sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.17.tgz", + "integrity": "sha512-4+9w8ZHOiGnpcGI6z1TVVfWaX/koK7fKeSYF3qlYg2xpBtbteP2ddBxiarL+HVgfSJGeK5RIxRQmKm4rTJJAwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.17", + "@tailwindcss/oxide": "4.1.17", + "tailwindcss": "4.1.17" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.19.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.17.tgz", + "integrity": "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", + "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.1.tgz", + "integrity": "sha512-WQfkSw0QbQ5aJ2CHYw23ZGkqnRwqKHD/KYsMeTkZzPT4Jcf0DcBxBtwMJxnu6E7oxw5+JC6ZAiePgh28uJ1HBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.5", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.47", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz", + "integrity": "sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001788", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz", + "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.339", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.339.tgz", + "integrity": "sha512-Is+0BBHJ4NrdpAYiperrmp53pLywG/yV/6lIMTAnhxvzj/Cmn5Q/ogSHC6AKe7X+8kPLxxFk0cs5oc/3j/fxIg==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.8.0.tgz", + "integrity": "sha512-WuvlsjngSk7TnTBJ1hsCy3ql9V9VOdcPkd3PKcSmM34vJD8KG6molxz7m7zbYFgICwsanQWmJ13JlYs4Zp7Arw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.3" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", + "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.1", + "@rollup/rollup-android-arm64": "4.60.1", + "@rollup/rollup-darwin-arm64": "4.60.1", + "@rollup/rollup-darwin-x64": "4.60.1", + "@rollup/rollup-freebsd-arm64": "4.60.1", + "@rollup/rollup-freebsd-x64": "4.60.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", + "@rollup/rollup-linux-arm-musleabihf": "4.60.1", + "@rollup/rollup-linux-arm64-gnu": "4.60.1", + "@rollup/rollup-linux-arm64-musl": "4.60.1", + "@rollup/rollup-linux-loong64-gnu": "4.60.1", + "@rollup/rollup-linux-loong64-musl": "4.60.1", + "@rollup/rollup-linux-ppc64-gnu": "4.60.1", + "@rollup/rollup-linux-ppc64-musl": "4.60.1", + "@rollup/rollup-linux-riscv64-gnu": "4.60.1", + "@rollup/rollup-linux-riscv64-musl": "4.60.1", + "@rollup/rollup-linux-s390x-gnu": "4.60.1", + "@rollup/rollup-linux-x64-gnu": "4.60.1", + "@rollup/rollup-linux-x64-musl": "4.60.1", + "@rollup/rollup-openbsd-x64": "4.60.1", + "@rollup/rollup-openharmony-arm64": "4.60.1", + "@rollup/rollup-win32-arm64-msvc": "4.60.1", + "@rollup/rollup-win32-ia32-msvc": "4.60.1", + "@rollup/rollup-win32-x64-gnu": "4.60.1", + "@rollup/rollup-win32-x64-msvc": "4.60.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwind-merge": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz", + "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz", + "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.4.tgz", + "integrity": "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-plugin-singlefile": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-singlefile/-/vite-plugin-singlefile-2.3.0.tgz", + "integrity": "sha512-DAcHzYypM0CasNLSz/WG0VdKOCxGHErfrjOoyIPiNxTPTGmO6rRD/te93n1YL/s+miXq66ipF1brMBikf99c6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">18.0.0" + }, + "peerDependencies": { + "rollup": "^4.44.1", + "vite": "^5.4.11 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/zustand": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.12.tgz", + "integrity": "sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..b1debc8c6 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "react-vite-tailwind", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "clsx": "2.1.1", + "lucide-react": "^1.8.0", + "react": "19.2.3", + "react-dom": "19.2.3", + "tailwind-merge": "3.4.0", + "zustand": "^5.0.12" + }, + "devDependencies": { + "@tailwindcss/vite": "4.1.17", + "@types/node": "22.19.17", + "@types/react": "19.2.7", + "@types/react-dom": "19.2.3", + "@vitejs/plugin-react": "5.1.1", + "tailwindcss": "4.1.17", + "typescript": "5.9.3", + "vite": "7.2.4", + "vite-plugin-singlefile": "2.3.0" + } +} diff --git a/public/cattle-bg.jpg b/public/cattle-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..469373e34fb05f6ab523533f5ae022c5a201c78b GIT binary patch literal 181970 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�sfZk6FHzB7M^rX};5L1!4@ zSS0rTXDgK^;@kx94+yt(?RvkP�~o);GS-1GbzK*nEM26%%L94N}%xiR2jp4NQ3) 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'dashboard'); + const [sidebarCollapsed, setSidebarCollapsed] = useState(false); + const [mobileMenuOpen, setMobileMenuOpen] = useState(false); + + const pageTitle: Record = { + dashboard: 'Dashboard', + animals: 'Animals', + monitoring: 'CCTV Monitoring', + 'image-analysis': 'Image Analysis', + 'manual-checkin': 'Manual Check-In', + alerts: 'Alerts', + }; + + const renderPage = () => { + switch (currentPage) { + case 'dashboard': return ; + case 'animals': return ; + case 'monitoring': return ; + case 'image-analysis': return ; + case 'manual-checkin': return ; + case 'alerts': return ; + default: return ; + } + }; + + return ( +

+ {/* Mobile sidebar overlay */} + {mobileMenuOpen && ( +
setMobileMenuOpen(false)} + /> + )} + + {/* Sidebar - desktop */} +
+ setCurrentPage(page)} + collapsed={sidebarCollapsed} + onToggle={() => setSidebarCollapsed(!sidebarCollapsed)} + /> +
+ + {/* Sidebar - mobile */} +
+ { setCurrentPage(page); setMobileMenuOpen(false); }} + collapsed={false} + onToggle={() => setMobileMenuOpen(false)} + /> +
+ + {/* Main content */} +
+ {/* Top bar */} +
+ +
+

{pageTitle[currentPage]}

+ ยท + CattleWatch AI +
+
+
+ + System Active +
+
+ VT +
+
+
+ + {/* Page content */} +
+ {renderPage()} +
+
+
+ ); +} diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx new file mode 100644 index 000000000..e4a87c850 --- /dev/null +++ b/src/components/Sidebar.tsx @@ -0,0 +1,134 @@ +import { + LayoutDashboard, + Beef, + Camera, + ScanSearch, + Bell, + ClipboardCheck, + Menu, + X, + Activity, +} from 'lucide-react'; +import { useCattleStore } from '../store/cattleStore'; + +export type Page = 'dashboard' | 'animals' | 'monitoring' | 'image-analysis' | 'alerts' | 'manual-checkin'; + +interface SidebarProps { + currentPage: Page; + onNavigate: (page: Page) => void; + collapsed: boolean; + onToggle: () => void; +} + +const navItems = [ + { id: 'dashboard' as Page, label: 'Dashboard', icon: LayoutDashboard }, + { id: 'animals' as Page, label: 'Animals', icon: Beef }, + { id: 'monitoring' as Page, label: 'CCTV Monitoring', icon: Camera }, + { id: 'image-analysis' as Page, label: 'Image Analysis', icon: ScanSearch }, + { id: 'manual-checkin' as Page, label: 'Manual Check-In', icon: ClipboardCheck }, + { id: 'alerts' as Page, label: 'Alerts', icon: Bell }, +]; + +export default function Sidebar({ currentPage, onNavigate, collapsed, onToggle }: SidebarProps) { + const alerts = useCattleStore((s) => s.alerts); + const unreadCount = alerts.filter((a) => !a.read).length; + + return ( + + ); +} diff --git a/src/index.css b/src/index.css new file mode 100644 index 000000000..7dd2445d7 --- /dev/null +++ b/src/index.css @@ -0,0 +1,51 @@ +@import "tailwindcss"; + +* { + box-sizing: border-box; +} + +html, body, #root { + height: 100%; + margin: 0; + padding: 0; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Custom scrollbar */ +::-webkit-scrollbar { + width: 5px; + height: 5px; +} + +::-webkit-scrollbar-track { + background: #f1f5f9; +} + +::-webkit-scrollbar-thumb { + background: #cbd5e1; + border-radius: 10px; +} + +::-webkit-scrollbar-thumb:hover { + background: #94a3b8; +} + +/* Smooth transitions */ +* { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +/* Animation for scan line */ +@keyframes scan { + 0% { top: 0%; } + 100% { top: 100%; } +} + +.scan-line { + animation: scan 3s linear infinite; +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 000000000..12fa35b98 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import "./index.css"; +import App from "./App"; + +createRoot(document.getElementById("root")!).render( + + + +); diff --git a/src/pages/Alerts.tsx b/src/pages/Alerts.tsx new file mode 100644 index 000000000..a37f151c5 --- /dev/null +++ b/src/pages/Alerts.tsx @@ -0,0 +1,170 @@ +import { useCattleStore, CowStatus } from '../store/cattleStore'; +import { Bell, BellOff, Check, CheckCheck, AlertTriangle, Eye, Camera, ScanLine, Clock } from 'lucide-react'; + +const statusColors: Record = { + Heat: 'border-red-200 bg-red-50', + Monitor: 'border-yellow-200 bg-yellow-50', + Healthy: 'border-green-200 bg-green-50', +}; + +const statusBadge: Record = { + Heat: 'bg-red-100 text-red-700', + Monitor: 'bg-yellow-100 text-yellow-700', + Healthy: 'bg-green-100 text-green-700', +}; + +const statusIcon: Record = { + Heat: , + Monitor: , + Healthy: , +}; + +const sourceIcon: Record = { + CCTV: , + Image: , + Manual: , +}; + +const sourceBadge: Record = { + CCTV: 'bg-blue-100 text-blue-600', + Image: 'bg-purple-100 text-purple-600', + Manual: 'bg-gray-100 text-gray-600', +}; + +function formatTimestamp(iso: string) { + const d = new Date(iso); + return d.toLocaleString('en-IN', { + day: '2-digit', month: 'short', year: 'numeric', + hour: '2-digit', minute: '2-digit', + }); +} + +function timeAgo(iso: string) { + const diff = Date.now() - new Date(iso).getTime(); + const mins = Math.floor(diff / 60000); + if (mins < 1) return 'just now'; + if (mins < 60) return `${mins}m ago`; + const hours = Math.floor(mins / 60); + if (hours < 24) return `${hours}h ago`; + return `${Math.floor(hours / 24)}d ago`; +} + +export default function Alerts() { + const alerts = useCattleStore((s) => s.alerts); + const markAlertRead = useCattleStore((s) => s.markAlertRead); + const markAllAlertsRead = useCattleStore((s) => s.markAllAlertsRead); + + const unread = alerts.filter((a) => !a.read).length; + const heatAlerts = alerts.filter((a) => a.status === 'Heat').length; + const monitorAlerts = alerts.filter((a) => a.status === 'Monitor').length; + + return ( +
+ {/* Header */} +
+
+

Alerts

+

System notifications and detection events

+
+ {unread > 0 && ( + + )} +
+ + {/* Stats */} +
+
+

{alerts.length}

+

Total Alerts

+
+
+

{heatAlerts}

+

Heat Alerts

+
+
+

{monitorAlerts}

+

Monitor Alerts

+
+
+ + {/* Alert List */} +
+
+
+ +

All Alerts

+ {unread > 0 && ( + {unread} new + )} +
+
+ +
+ {alerts.length === 0 ? ( +
+ +

No alerts yet

+

Alerts will appear here as the system detects events

+
+ ) : ( + alerts.map((alert) => ( +
+
+
+ {statusIcon[alert.status]} +
+ +
+
+

{alert.message}

+ {!alert.read && ( + + )} +
+ +
+ + {alert.status} + + + {sourceIcon[alert.source]} + {alert.source} + + + + {formatTimestamp(alert.timestamp)} ยท {timeAgo(alert.timestamp)} + +
+
+ + {!alert.read && ( + + )} +
+
+ )) + )} +
+
+
+ ); +} diff --git a/src/pages/Animals.tsx b/src/pages/Animals.tsx new file mode 100644 index 000000000..22e506782 --- /dev/null +++ b/src/pages/Animals.tsx @@ -0,0 +1,259 @@ +import { useState } from 'react'; +import { useCattleStore, CowStatus } from '../store/cattleStore'; +import { Plus, Search, Tag, CheckCircle, AlertCircle, Eye } from 'lucide-react'; + +const statusColors: Record = { + Heat: 'bg-red-100 text-red-700 border-red-200', + Monitor: 'bg-yellow-100 text-yellow-700 border-yellow-200', + Healthy: 'bg-green-100 text-green-700 border-green-200', +}; + +const statusDot: Record = { + Heat: 'bg-red-500', + Monitor: 'bg-yellow-500', + Healthy: 'bg-green-500', +}; + +export default function Animals() { + const cows = useCattleStore((s) => s.cows); + const addCow = useCattleStore((s) => s.addCow); + + const [showForm, setShowForm] = useState(false); + const [search, setSearch] = useState(''); + const [filterStatus, setFilterStatus] = useState('all'); + const [form, setForm] = useState({ name: '', breed: '', age: '', tagId: '' }); + const [submitted, setSubmitted] = useState(false); + const [error, setError] = useState(''); + + const filtered = cows.filter((c) => { + const matchSearch = + c.name.toLowerCase().includes(search.toLowerCase()) || + c.tagId.toLowerCase().includes(search.toLowerCase()) || + c.breed.toLowerCase().includes(search.toLowerCase()) || + c.id.includes(search); + const matchStatus = filterStatus === 'all' || c.status === filterStatus; + return matchSearch && matchStatus; + }); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + setError(''); + if (!form.name || !form.breed || !form.age || !form.tagId) { + setError('All fields are required.'); + return; + } + const tagExists = cows.find((c) => c.tagId.toLowerCase() === form.tagId.toLowerCase()); + if (tagExists) { + setError(`Tag ID "${form.tagId}" is already registered to ${tagExists.name}.`); + return; + } + addCow({ name: form.name, breed: form.breed, age: parseInt(form.age), tagId: form.tagId.toUpperCase() }); + setForm({ name: '', breed: '', age: '', tagId: '' }); + setSubmitted(true); + setTimeout(() => { + setSubmitted(false); + setShowForm(false); + }, 2000); + }; + + return ( +
+ {/* Header */} +
+
+

Animals

+

Manage registered cattle and ear tags

+
+ +
+ + {/* Register Form Modal */} + {showForm && ( +
+
+
+

Register New Cow

+

Add a new cow to the monitoring system

+
+
+ {submitted ? ( +
+ +
+

Cow registered successfully!

+

Tag assigned and monitoring active.

+
+
+ ) : ( + <> + {error && ( +
+ +

{error}

+
+ )} +
+
+ + setForm({ ...form, name: e.target.value })} + placeholder="e.g. Lakshmi" + className="w-full border border-slate-200 rounded-xl px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-transparent" + /> +
+
+ + +
+
+
+
+ + setForm({ ...form, age: e.target.value })} + placeholder="e.g. 4" + className="w-full border border-slate-200 rounded-xl px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-transparent" + /> +
+
+ + setForm({ ...form, tagId: e.target.value })} + placeholder="e.g. KA-1029" + className="w-full border border-slate-200 rounded-xl px-3 py-2.5 text-sm font-mono focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-transparent" + /> +
+
+
+ + +
+ + )} +
+
+
+ )} + + {/* Filters */} +
+
+ + setSearch(e.target.value)} + className="w-full pl-10 pr-4 py-2.5 border border-slate-200 rounded-xl text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-transparent bg-white" + /> +
+ +
+ + {/* Animals Grid */} +
+ {filtered.map((cow) => ( +
+
+
+
+ {cow.name[0]} +
+
+

{cow.name}

+

Cow #{cow.id}

+
+
+ + {cow.status} + +
+ +
+
+ Breed + {cow.breed} +
+
+ Age + {cow.age} years +
+
+ Ear Tag +
+ + {cow.tagId} +
+
+
+ +
+
+ Active monitoring + +
+
+ ))} + + {filtered.length === 0 && ( +
+
๐Ÿ„
+

No animals found

+

Try adjusting your search or filter

+
+ )} +
+
+ ); +} diff --git a/src/pages/CCTVMonitoring.tsx b/src/pages/CCTVMonitoring.tsx new file mode 100644 index 000000000..de2746f81 --- /dev/null +++ b/src/pages/CCTVMonitoring.tsx @@ -0,0 +1,506 @@ +import { useState, useEffect, useRef, useCallback } from 'react'; +import { useCattleStore } from '../store/cattleStore'; +import { + Camera, AlertTriangle, Tag, Zap, Activity, + Upload, Play, Monitor, ChevronRight, Eye +} from 'lucide-react'; + +type VideoSource = 'simulation' | 'upload' | 'youtube'; + +const DETECTION_POOL = [ + { tagId: 'KA-1023', event: 'Tag detected', confidence: 97 }, + { tagId: 'KA-1025', event: 'Mounting behavior detected', confidence: 92 }, + { tagId: 'KA-1024', event: 'Increased movement detected', confidence: 88 }, + { tagId: 'KA-1026', event: 'Restlessness observed', confidence: 85 }, + { tagId: 'KA-1023', event: 'Mounting behavior detected', confidence: 95 }, + { tagId: 'KA-1025', event: 'Increased vocalization', confidence: 78 }, + { tagId: 'KA-1027', event: 'Tag detected', confidence: 99 }, + { tagId: 'KA-1028', event: 'Restlessness observed', confidence: 82 }, + { tagId: 'KA-1024', event: 'Mounting behavior detected', confidence: 90 }, +]; + +function getYouTubeEmbedUrl(url: string): string | null { + const patterns = [ + /youtube\.com\/watch\?v=([^&]+)/, + /youtu\.be\/([^?]+)/, + /youtube\.com\/embed\/([^?]+)/, + ]; + for (const pat of patterns) { + const m = url.match(pat); + if (m) return `https://www.youtube.com/embed/${m[1]}?autoplay=1&mute=1`; + } + return null; +} + +function determineStatus(event: string): 'Heat' | 'Monitor' | 'Healthy' { + if (event.includes('Mounting')) return 'Heat'; + if (event.includes('movement') || event.includes('Restlessness') || event.includes('vocalization')) return 'Monitor'; + return 'Healthy'; +} + +interface LogEntry { + id: string; + text: string; + tag: string; + time: string; + type: 'heat' | 'monitor' | 'normal'; +} + +export default function CCTVMonitoring() { + const cows = useCattleStore((s) => s.cows); + const addAlert = useCattleStore((s) => s.addAlert); + const addDetectionEvent = useCattleStore((s) => s.addDetectionEvent); + const detectionEvents = useCattleStore((s) => s.detectionEvents); + + const [videoSource, setVideoSource] = useState('simulation'); + const [isLive, setIsLive] = useState(true); + const [uploadedVideo, setUploadedVideo] = useState(null); + const [youtubeEmbed, setYoutubeEmbed] = useState(null); + const [youtubeInput, setYoutubeInput] = useState(''); + const [detectionLog, setDetectionLog] = useState([]); + const [scanLine, setScanLine] = useState(0); + const [isDetecting, setIsDetecting] = useState(false); + const [detectionBox, setDetectionBox] = useState<{ x: number; y: number; w: number; h: number } | null>(null); + const fileRef = useRef(null); + const detectionTimer = useRef | null>(null); + const scanTimer = useRef | null>(null); + + const triggerDetection = useCallback(() => { + const pool = DETECTION_POOL[Math.floor(Math.random() * DETECTION_POOL.length)]; + const cow = cows.find((c) => c.tagId === pool.tagId); + + setIsDetecting(true); + setDetectionBox({ + x: 10 + Math.random() * 40, + y: 10 + Math.random() * 40, + w: 20 + Math.random() * 20, + h: 20 + Math.random() * 20, + }); + setTimeout(() => setIsDetecting(false), 2000); + + addDetectionEvent({ tagId: pool.tagId, event: pool.event, confidence: pool.confidence }); + + const logType: 'heat' | 'monitor' | 'normal' = pool.event.includes('Mounting') + ? 'heat' + : pool.event.includes('movement') || pool.event.includes('Restlessness') + ? 'monitor' + : 'normal'; + + const logEntry: LogEntry = { + id: `log-${Date.now()}`, + text: cow + ? `${pool.event} โ€” ${cow.name} (${pool.tagId})` + : `${pool.event} โ€” Tag ${pool.tagId}`, + tag: pool.tagId, + time: new Date().toLocaleTimeString('en-IN'), + type: logType, + }; + + setDetectionLog((prev) => [logEntry, ...prev].slice(0, 20)); + + if (cow) { + const status = determineStatus(pool.event); + if (status !== 'Healthy') { + addAlert({ + cowId: cow.id, + cowName: cow.name, + tagId: pool.tagId, + message: `Cow ${cow.name} (Tag ${pool.tagId}) ${pool.event.toLowerCase()} โ€” ${status === 'Heat' ? 'likely in estrus phase. Immediate vet attention required.' : 'monitor closely.'}`, + status, + source: 'CCTV', + }); + } + } + }, [cows, addAlert, addDetectionEvent]); + + const startDetection = useCallback(() => { + if (detectionTimer.current) clearInterval(detectionTimer.current); + setTimeout(triggerDetection, 2000); + detectionTimer.current = setInterval(triggerDetection, 7000 + Math.random() * 3000); + }, [triggerDetection]); + + const stopDetection = useCallback(() => { + if (detectionTimer.current) { + clearInterval(detectionTimer.current); + detectionTimer.current = null; + } + }, []); + + useEffect(() => { + scanTimer.current = setInterval(() => { + setScanLine((prev) => (prev >= 100 ? 0 : prev + 0.5)); + }, 16); + return () => { if (scanTimer.current) clearInterval(scanTimer.current); }; + }, []); + + useEffect(() => { + const shouldDetect = + (videoSource === 'simulation' && isLive) || + (videoSource === 'upload' && uploadedVideo !== null) || + (videoSource === 'youtube' && youtubeEmbed !== null); + + if (shouldDetect) { + startDetection(); + } else { + stopDetection(); + } + return stopDetection; + }, [videoSource, isLive, uploadedVideo, youtubeEmbed, startDetection, stopDetection]); + + const handleVideoUpload = (e: React.ChangeEvent) => { + const file = e.target.files?.[0]; + if (file) { + const url = URL.createObjectURL(file); + setUploadedVideo(url); + } + }; + + const handleYoutubeLoad = () => { + const embed = getYouTubeEmbedUrl(youtubeInput); + if (embed) { + setYoutubeEmbed(embed); + } + }; + + const sourceTabs = [ + { id: 'simulation' as VideoSource, label: 'Live Simulation', icon: Monitor }, + { id: 'upload' as VideoSource, label: 'Upload Video', icon: Upload }, + { id: 'youtube' as VideoSource, label: 'YouTube Link', icon: Play }, + ]; + + return ( +
+ {/* Header */} +
+
+

CCTV Monitoring

+

Automated 24/7 AI-powered livestock surveillance

+
+
+ + LIVE DETECTION +
+
+ + {/* Video Source Tabs */} +
+
+ {sourceTabs.map((tab) => { + const Icon = tab.icon; + return ( + + ); + })} +
+ +
+ {/* SIMULATION */} + {videoSource === 'simulation' && ( +
+
+

Simulated 24/7 CCTV feed with AI detection overlay

+ +
+ +
+
+ +
+
+ {[1, 2, 3].map((i) => ( +
+
+
+
+ ))} +
+
+ +
+ + {isDetecting && detectionBox && ( +
+
+ {detectionLog[0]?.tag ?? 'Detecting...'} +
+
+
+
+
+
+ )} + +
+ + CAM-01 LIVE +
+
+ {new Date().toLocaleTimeString('en-IN')} +
+
+ AI DETECTION: {isLive ? 'ACTIVE' : 'PAUSED'} | FPS: 24 +
+
+ BARN-SECTOR-A +
+ +
+ {['๐Ÿ„', '๐Ÿ„', '๐Ÿ„'].map((emoji, i) => ( +
+ {emoji} +
+ ))} +
+
+
+ )} + + {/* UPLOAD */} + {videoSource === 'upload' && ( +
+ {!uploadedVideo ? ( +
fileRef.current?.click()} + onDragOver={(e) => e.preventDefault()} + onDrop={(e) => { + e.preventDefault(); + const file = e.dataTransfer.files[0]; + if (file && file.type.startsWith('video/')) { + setUploadedVideo(URL.createObjectURL(file)); + } + }} + > + +

Drop video here or click to upload

+

MP4, MOV, AVI โ€” Detection starts automatically

+ +
+ ) : ( +
+
+ )} +
+ )} + + {/* YOUTUBE */} + {videoSource === 'youtube' && ( +
+
+
+ โ–ถ + setYoutubeInput(e.target.value)} + className="w-full pl-8 pr-4 py-2.5 border border-slate-200 rounded-xl text-sm focus:outline-none focus:ring-2 focus:ring-green-500" + /> +
+ +
+ + {!youtubeEmbed ? ( +
+
๐Ÿ“บ
+

Enter a YouTube URL above to start monitoring

+
+ ) : ( +
+