From 01f61c811a3ab842ed67362eb40f7f7bffeaf29f Mon Sep 17 00:00:00 2001 From: nevermind Date: Thu, 20 Feb 2025 20:22:56 +0900 Subject: [PATCH 01/20] add health solver --- messages/de.json | 88 ++ messages/en.json | 88 ++ messages/es.json | 88 ++ messages/fr.json | 88 ++ messages/ja.json | 88 ++ messages/ko.json | 90 +- messages/ru.json | 88 ++ messages/uk.json | 88 ++ messages/ur.json | 88 ++ messages/zh.json | 88 ++ package-lock.json | 1238 ++++++++++++++++- package.json | 7 +- src/app/globals.css | 52 +- src/app/login/page.tsx | 2 - src/app/onboarding/page.tsx | 141 ++ src/components/onboarding/Analysis.tsx | 22 + src/components/onboarding/HealthConcerns.tsx | 37 + src/components/onboarding/Introduction.tsx | 34 + src/components/onboarding/MedicalRecords.tsx | 124 ++ .../onboarding/NavigationButtons.tsx | 54 + src/components/onboarding/PersonalInfo.tsx | 256 ++++ src/components/onboarding/PrivacyNotice.tsx | 23 + src/components/onboarding/ProgressBar.tsx | 17 + src/components/ui/alert.tsx | 46 + src/components/ui/button.tsx | 73 +- src/components/ui/card.tsx | 135 +- src/components/ui/checkbox.tsx | 29 + src/components/ui/combobox.tsx | 112 ++ src/components/ui/footer.tsx | 28 +- src/components/ui/input.tsx | 18 +- src/components/ui/label.tsx | 23 + src/components/ui/progress.tsx | 37 + src/components/ui/radio-group.tsx | 54 + src/components/ui/select.tsx | 55 +- src/components/ui/textarea.tsx | 39 +- src/hooks/use-click-away.ts | 20 + src/lib/countries.ts | 199 +++ tailwind.config.ts | 29 +- 38 files changed, 3497 insertions(+), 289 deletions(-) create mode 100644 src/app/onboarding/page.tsx create mode 100644 src/components/onboarding/Analysis.tsx create mode 100644 src/components/onboarding/HealthConcerns.tsx create mode 100644 src/components/onboarding/Introduction.tsx create mode 100644 src/components/onboarding/MedicalRecords.tsx create mode 100644 src/components/onboarding/NavigationButtons.tsx create mode 100644 src/components/onboarding/PersonalInfo.tsx create mode 100644 src/components/onboarding/PrivacyNotice.tsx create mode 100644 src/components/onboarding/ProgressBar.tsx create mode 100644 src/components/ui/alert.tsx create mode 100644 src/components/ui/checkbox.tsx create mode 100644 src/components/ui/combobox.tsx create mode 100644 src/components/ui/label.tsx create mode 100644 src/components/ui/progress.tsx create mode 100644 src/components/ui/radio-group.tsx create mode 100644 src/hooks/use-click-away.ts create mode 100644 src/lib/countries.ts diff --git a/messages/de.json b/messages/de.json index a4b967f..743bef7 100644 --- a/messages/de.json +++ b/messages/de.json @@ -83,5 +83,93 @@ "needSignUp": "Benötigen Sie ein Konto? Registrieren", "alreadyHaveAccount": "Haben Sie bereits ein Konto? Anmelden", "signUp": "Konto erstellen" + }, + "Onboarding": { + "introduction": { + "title": "Health Solver", + "subtitle": "by OpenHealth", + "description": "Haben Sie ungelöste Gesundheitsprobleme?\nLassen Sie KI Ihre Daten tiefgehend analysieren", + "privacyNotice": "Ihre gesammelten Daten werden nur zur Lösung Ihrer Gesundheitsprobleme verwendet.", + "runLocally": "Sie können es lokal ausführen", + "here": "hier" + }, + "healthConcerns": { + "title": "Gesundheitliche Beschwerden", + "description": "Bitte beschreiben Sie Ihre aktuellen gesundheitlichen Probleme im Detail", + "placeholder": "Beispiel: \n- Welche Symptome haben Sie?\n- Wann haben sie begonnen?\n- Was verschlimmert die Symptome?\n- Hatten Sie schon einmal ähnliche Symptome?", + "error": "Bitte beschreiben Sie Ihre gesundheitlichen Beschwerden" + }, + "personalInfo": { + "title": "Persönliche Informationen", + "description": "Helfen Sie uns, Ihr Profil besser zu verstehen", + "gender": { + "label": "Geschlecht", + "male": "Männlich", + "female": "Weiblich", + "error": "Bitte wählen Sie Ihr Geschlecht" + }, + "birthDate": { + "label": "Geburtsdatum", + "error": "Bitte geben Sie Ihr Geburtsdatum ein" + }, + "height": { + "label": "Größe", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "Bitte geben Sie Ihre Größe ein" + }, + "weight": { + "label": "Gewicht", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "Bitte geben Sie Ihr Gewicht ein" + }, + "ethnicity": { + "label": "Ethnische Zugehörigkeit", + "placeholder": "Wählen Sie Ihre ethnische Zugehörigkeit", + "options": { + "east_asian": "Ostasiatisch", + "southeast_asian": "Südostasiatisch", + "south_asian": "Südasiatisch", + "european": "Europäisch", + "middle_eastern": "Naher Osten/Nordafrika", + "african": "Afrikanisch", + "african_american": "Afroamerikanisch", + "pacific_islander": "Pazifische Inseln", + "native_american": "Amerikanische Ureinwohner", + "hispanic": "Hispanisch/Latino", + "mixed": "Gemischte Ethnizität", + "other": "Andere" + }, + "error": "Bitte wählen Sie Ihre ethnische Zugehörigkeit" + }, + "country": { + "label": "Land", + "placeholder": "Geben Sie den Namen Ihres Landes ein", + "error": "Bitte wählen Sie Ihr Land" + } + }, + "medicalRecords": { + "title": "Medizinische Unterlagen", + "description": "Laden Sie Ihre medizinischen Unterlagen für eine bessere Analyse hoch (Optional)", + "dragDrop": { + "title": "Dateien hier ablegen", + "or": "oder", + "browse": "Dateien durchsuchen", + "supportedFormats": "Unterstützte Formate: PDF, JPEG, PNG, DOC" + } + }, + "analysis": { + "description": "Die KI analysiert Ihre Gesundheitsdaten, um Ihren Zustand zu verstehen\nund personalisierte Gesundheitseinblicke zu liefern" + }, + "navigation": { + "back": "Zurück", + "next": "Weiter", + "skip": "Überspringen" + } } } \ No newline at end of file diff --git a/messages/en.json b/messages/en.json index f0f2c4c..6a91d00 100644 --- a/messages/en.json +++ b/messages/en.json @@ -83,5 +83,93 @@ "needSignUp": "Need an account? Sign up", "alreadyHaveAccount": "Already have an account? Sign in", "signUp": "Create account" + }, + "Onboarding": { + "introduction": { + "title": "Health Solver", + "subtitle": "by OpenHealth", + "description": "Having health issues that remain unsolved?\nLet AI deep dive into your data", + "privacyNotice": "Your data collected will only be used to solve your health issues.", + "runLocally": "You can run locally", + "here": "here" + }, + "healthConcerns": { + "title": "Health Concerns", + "description": "Please describe your current health issues in detail", + "placeholder": "Example: \n- What symptoms are you experiencing?\n- When did they start?\n- What makes the symptoms worse?\n- Have you experienced similar symptoms before?", + "error": "Please describe your health concerns" + }, + "personalInfo": { + "title": "Personal Information", + "description": "Help us understand your profile better", + "gender": { + "label": "Gender", + "male": "Male", + "female": "Female", + "error": "Please select your gender" + }, + "birthDate": { + "label": "Birth Date", + "error": "Please enter your birth date" + }, + "height": { + "label": "Height", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "Please enter your height" + }, + "weight": { + "label": "Weight", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "Please enter your weight" + }, + "ethnicity": { + "label": "Ethnicity", + "placeholder": "Select your ethnicity", + "options": { + "east_asian": "East Asian", + "southeast_asian": "Southeast Asian", + "south_asian": "South Asian", + "european": "European", + "middle_eastern": "Middle Eastern/North African", + "african": "African", + "african_american": "African American", + "pacific_islander": "Pacific Islander", + "native_american": "Native American/Indigenous", + "hispanic": "Hispanic/Latino", + "mixed": "Mixed Ethnicity", + "other": "Other" + }, + "error": "Please select your ethnicity" + }, + "country": { + "label": "Country", + "placeholder": "Type your country name", + "error": "Please select your country" + } + }, + "medicalRecords": { + "title": "Medical Records", + "description": "Upload your medical records for better analysis (Optional)", + "dragDrop": { + "title": "Drag and drop your files here", + "or": "or", + "browse": "Browse Files", + "supportedFormats": "Supported formats: PDF, JPEG, PNG, DOC" + } + }, + "analysis": { + "description": "AI is analyzing your health data to understand your condition\nand provide personalized health insights" + }, + "navigation": { + "back": "Back", + "next": "Next", + "skip": "Skip" + } } } \ No newline at end of file diff --git a/messages/es.json b/messages/es.json index b442d02..db140b0 100644 --- a/messages/es.json +++ b/messages/es.json @@ -83,5 +83,93 @@ "needSignUp": "¿Necesitas una cuenta? Regístrate", "alreadyHaveAccount": "¿Ya tienes una cuenta? Inicia sesión", "signUp": "Crear cuenta" + }, + "Onboarding": { + "introduction": { + "title": "Health Solver", + "subtitle": "by OpenHealth", + "description": "¿Tienes problemas de salud sin resolver?\nDeja que la IA analice tus datos en profundidad", + "privacyNotice": "Tus datos recopilados solo se utilizarán para resolver tus problemas de salud.", + "runLocally": "Puedes ejecutarlo localmente", + "here": "aquí" + }, + "healthConcerns": { + "title": "Problemas de Salud", + "description": "Por favor, describe tus problemas de salud actuales en detalle", + "placeholder": "Ejemplo: \n- ¿Qué síntomas estás experimentando?\n- ¿Cuándo comenzaron?\n- ¿Qué empeora los síntomas?\n- ¿Has experimentado síntomas similares antes?", + "error": "Por favor, describe tus problemas de salud" + }, + "personalInfo": { + "title": "Información Personal", + "description": "Ayúdanos a entender mejor tu perfil", + "gender": { + "label": "Género", + "male": "Masculino", + "female": "Femenino", + "error": "Por favor, selecciona tu género" + }, + "birthDate": { + "label": "Fecha de Nacimiento", + "error": "Por favor, ingresa tu fecha de nacimiento" + }, + "height": { + "label": "Altura", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "Por favor, ingresa tu altura" + }, + "weight": { + "label": "Peso", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "Por favor, ingresa tu peso" + }, + "ethnicity": { + "label": "Etnia", + "placeholder": "Selecciona tu etnia", + "options": { + "east_asian": "Asiático del Este", + "southeast_asian": "Asiático del Sureste", + "south_asian": "Asiático del Sur", + "european": "Europeo", + "middle_eastern": "Medio Oriente/Norte de África", + "african": "Africano", + "african_american": "Afroamericano", + "pacific_islander": "Isleño del Pacífico", + "native_american": "Nativo Americano/Indígena", + "hispanic": "Hispano/Latino", + "mixed": "Etnia Mixta", + "other": "Otro" + }, + "error": "Por favor, selecciona tu etnia" + }, + "country": { + "label": "País", + "placeholder": "Escribe el nombre de tu país", + "error": "Por favor, selecciona tu país" + } + }, + "medicalRecords": { + "title": "Registros Médicos", + "description": "Sube tus registros médicos para un mejor análisis (Opcional)", + "dragDrop": { + "title": "Arrastra y suelta tus archivos aquí", + "or": "o", + "browse": "Buscar Archivos", + "supportedFormats": "Formatos soportados: PDF, JPEG, PNG, DOC" + } + }, + "analysis": { + "description": "La IA está analizando tus datos de salud para entender tu condición\ny proporcionar información personalizada sobre tu salud" + }, + "navigation": { + "back": "Atrás", + "next": "Siguiente", + "skip": "Omitir" + } } } \ No newline at end of file diff --git a/messages/fr.json b/messages/fr.json index c61bc79..0774ddb 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -83,5 +83,93 @@ "needSignUp": "Besoin d'un compte ? S'inscrire", "alreadyHaveAccount": "Vous avez déjà un compte ? Se connecter", "signUp": "Créer un compte" + }, + "Onboarding": { + "introduction": { + "title": "Health Solver", + "subtitle": "by OpenHealth", + "description": "Vous avez des problèmes de santé non résolus ?\nLaissez l'IA analyser vos données en profondeur", + "privacyNotice": "Vos données collectées ne seront utilisées que pour résoudre vos problèmes de santé.", + "runLocally": "Vous pouvez l'exécuter localement", + "here": "ici" + }, + "healthConcerns": { + "title": "Problèmes de Santé", + "description": "Veuillez décrire en détail vos problèmes de santé actuels", + "placeholder": "Exemple : \n- Quels symptômes ressentez-vous ?\n- Quand ont-ils commencé ?\n- Qu'est-ce qui aggrave les symptômes ?\n- Avez-vous déjà eu des symptômes similaires ?", + "error": "Veuillez décrire vos problèmes de santé" + }, + "personalInfo": { + "title": "Informations Personnelles", + "description": "Aidez-nous à mieux comprendre votre profil", + "gender": { + "label": "Genre", + "male": "Masculin", + "female": "Féminin", + "error": "Veuillez sélectionner votre genre" + }, + "birthDate": { + "label": "Date de Naissance", + "error": "Veuillez entrer votre date de naissance" + }, + "height": { + "label": "Taille", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "Veuillez entrer votre taille" + }, + "weight": { + "label": "Poids", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "Veuillez entrer votre poids" + }, + "ethnicity": { + "label": "Ethnicité", + "placeholder": "Sélectionnez votre ethnicité", + "options": { + "east_asian": "Asiatique de l'Est", + "southeast_asian": "Asiatique du Sud-Est", + "south_asian": "Asiatique du Sud", + "european": "Européen", + "middle_eastern": "Moyen-Orient/Afrique du Nord", + "african": "Africain", + "african_american": "Afro-américain", + "pacific_islander": "Insulaire du Pacifique", + "native_american": "Amérindien/Autochtone", + "hispanic": "Hispanique/Latino", + "mixed": "Ethnicité mixte", + "other": "Autre" + }, + "error": "Veuillez sélectionner votre ethnicité" + }, + "country": { + "label": "Pays", + "placeholder": "Tapez le nom de votre pays", + "error": "Veuillez sélectionner votre pays" + } + }, + "medicalRecords": { + "title": "Dossiers Médicaux", + "description": "Téléchargez vos dossiers médicaux pour une meilleure analyse (Optionnel)", + "dragDrop": { + "title": "Glissez et déposez vos fichiers ici", + "or": "ou", + "browse": "Parcourir les fichiers", + "supportedFormats": "Formats supportés : PDF, JPEG, PNG, DOC" + } + }, + "analysis": { + "description": "L'IA analyse vos données de santé pour comprendre votre condition\net fournir des informations personnalisées sur votre santé" + }, + "navigation": { + "back": "Retour", + "next": "Suivant", + "skip": "Passer" + } } } \ No newline at end of file diff --git a/messages/ja.json b/messages/ja.json index b472e62..895e43f 100644 --- a/messages/ja.json +++ b/messages/ja.json @@ -83,5 +83,93 @@ "needSignUp": "アカウントが必要ですか?新規登録", "alreadyHaveAccount": "すでにアカウントをお持ちですか?ログイン", "signUp": "アカウント作成" + }, + "Onboarding": { + "introduction": { + "title": "Health Solver", + "subtitle": "by OpenHealth", + "description": "未解決の健康問題をお持ちですか?\nAIがあなたのデータを深く分析します", + "privacyNotice": "収集されたデータは、あなたの健康問題の解決にのみ使用されます。", + "runLocally": "ローカルで実行できます", + "here": "こちら" + }, + "healthConcerns": { + "title": "健康上の問題", + "description": "現在の健康上の問題を詳しく説明してください", + "placeholder": "例:\n- どのような症状がありますか?\n- いつから始まりましたか?\n- 何が症状を悪化させますか?\n- 以前に同様の症状を経験したことがありますか?", + "error": "健康上の問題を説明してください" + }, + "personalInfo": { + "title": "個人情報", + "description": "あなたのプロフィールをより良く理解するのに役立ちます", + "gender": { + "label": "性別", + "male": "男性", + "female": "女性", + "error": "性別を選択してください" + }, + "birthDate": { + "label": "生年月日", + "error": "生年月日を入力してください" + }, + "height": { + "label": "身長", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "身長を入力してください" + }, + "weight": { + "label": "体重", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "体重を入力してください" + }, + "ethnicity": { + "label": "民族", + "placeholder": "民族を選択してください", + "options": { + "east_asian": "東アジア", + "southeast_asian": "東南アジア", + "south_asian": "南アジア", + "european": "ヨーロッパ", + "middle_eastern": "中東/北アフリカ", + "african": "アフリカ", + "african_american": "アフリカ系アメリカ人", + "pacific_islander": "太平洋諸島", + "native_american": "ネイティブアメリカン", + "hispanic": "ヒスパニック/ラテン", + "mixed": "混血", + "other": "その他" + }, + "error": "民族を選択してください" + }, + "country": { + "label": "国", + "placeholder": "国名を入力してください", + "error": "国を選択してください" + } + }, + "medicalRecords": { + "title": "医療記録", + "description": "より良い分析のために医療記録をアップロードしてください(任意)", + "dragDrop": { + "title": "ファイルをここにドラッグ&ドロップ", + "or": "または", + "browse": "ファイルを参照", + "supportedFormats": "対応フォーマット:PDF、JPEG、PNG、DOC" + } + }, + "analysis": { + "description": "AIがあなたの健康データを分析して状態を理解し、\nパーソナライズされた健康に関する洞察を提供します" + }, + "navigation": { + "back": "戻る", + "next": "次へ", + "skip": "スキップ" + } } } \ No newline at end of file diff --git a/messages/ko.json b/messages/ko.json index 12debeb..8065920 100644 --- a/messages/ko.json +++ b/messages/ko.json @@ -5,7 +5,7 @@ "inputPlaceholder": "메시지 입력..." }, "Feedback": { - "helpMessage": "오픈헬스를 도와 당신의 건강문제와 더 많은 사람들의 건강문제를 해결할 수 있도록해주세요", + "helpMessage": "오픈헬스를 도와 당신의 건강문제와 더 많은 사람들의 건강문제를 해결할 수 있도록 해주세요", "shareFeedback": "피드백 남기기" }, "ChatSideBar": { @@ -83,5 +83,93 @@ "needSignUp": "계정이 없으신가요? 가입하기", "alreadyHaveAccount": "계정이 있으신가요? 로그인", "signUp": "계정 만들기" + }, + "Onboarding": { + "introduction": { + "title": "Health Solver", + "subtitle": "by OpenHealth", + "description": "해결되지 않은 건강 문제가 있으신가요?\nAI가 당신의 데이터를 심층 분석합니다", + "privacyNotice": "수집된 데이터는 오직 귀하의 건강 문제 해결을 위해서만 사용됩니다.", + "runLocally": "로컬에서 실행할 수 있습니다", + "here": "여기" + }, + "healthConcerns": { + "title": "건강 문제", + "description": "현재 겪고 계신 건강 문제를 자세히 설명해 주세요", + "placeholder": "예시: \n- 어떤 증상이 있나요?\n- 언제부터 시작되었나요?\n- 어떤 상황에서 증상이 악화되나요?\n- 이전에도 비슷한 증상을 경험한 적이 있나요?", + "error": "건강 문제를 설명해 주세요" + }, + "personalInfo": { + "title": "개인 정보", + "description": "귀하의 프로필을 더 잘 이해할 수 있도록 도와주세요", + "gender": { + "label": "성별", + "male": "남성", + "female": "여성", + "error": "성별을 선택해 주세요" + }, + "birthDate": { + "label": "생년월일", + "error": "생년월일을 입력해 주세요" + }, + "height": { + "label": "키", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "키를 입력해 주세요" + }, + "weight": { + "label": "체중", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "체중을 입력해 주세요" + }, + "ethnicity": { + "label": "인종", + "placeholder": "인종을 선택하세요", + "options": { + "east_asian": "동아시아인", + "southeast_asian": "동남아시아인", + "south_asian": "남아시아인", + "european": "유럽인", + "middle_eastern": "중동/북아프리카인", + "african": "아프리카인", + "african_american": "아프리카계 미국인", + "pacific_islander": "태평양 섬 주민", + "native_american": "아메리카 원주민", + "hispanic": "히스패닉/라틴계", + "mixed": "혼혈", + "other": "기타" + }, + "error": "인종을 선택해 주세요" + }, + "country": { + "label": "국가", + "placeholder": "국가명을 입력하세요", + "error": "국가를 선택해 주세요" + } + }, + "medicalRecords": { + "title": "의료 기록", + "description": "더 나은 분석을 위해 의료 기록을 업로드하세요 (선택사항)", + "dragDrop": { + "title": "파일을 여기에 끌어다 놓으세요", + "or": "또는", + "browse": "파일 찾기", + "supportedFormats": "지원 형식: PDF, JPEG, PNG, DOC" + } + }, + "analysis": { + "description": "AI가 귀하의 건강 데이터를 분석하여 상태를 파악하고\n맞춤형 건강 인사이트를 제공합니다" + }, + "navigation": { + "back": "이전", + "next": "다음", + "skip": "건너뛰기" + } } } \ No newline at end of file diff --git a/messages/ru.json b/messages/ru.json index ac37932..bdf8944 100644 --- a/messages/ru.json +++ b/messages/ru.json @@ -83,5 +83,93 @@ "needSignUp": "Нужен аккаунт? Зарегистрируйтесь", "alreadyHaveAccount": "Уже есть аккаунт? Войдите", "signUp": "Создать аккаунт" + }, + "Onboarding": { + "introduction": { + "title": "Health Solver", + "subtitle": "by OpenHealth", + "description": "Есть нерешенные проблемы со здоровьем?\nПозвольте ИИ глубоко проанализировать ваши данные", + "privacyNotice": "Ваши собранные данные будут использоваться только для решения ваших проблем со здоровьем.", + "runLocally": "Вы можете запустить локально", + "here": "здесь" + }, + "healthConcerns": { + "title": "Проблемы со Здоровьем", + "description": "Пожалуйста, подробно опишите ваши текущие проблемы со здоровьем", + "placeholder": "Пример: \n- Какие симптомы вы испытываете?\n- Когда они начались?\n- Что ухудшает симптомы?\n- Были ли у вас похожие симптомы раньше?", + "error": "Пожалуйста, опишите ваши проблемы со здоровьем" + }, + "personalInfo": { + "title": "Личная Информация", + "description": "Помогите нам лучше понять ваш профиль", + "gender": { + "label": "Пол", + "male": "Мужской", + "female": "Женский", + "error": "Пожалуйста, выберите ваш пол" + }, + "birthDate": { + "label": "Дата Рождения", + "error": "Пожалуйста, введите вашу дату рождения" + }, + "height": { + "label": "Рост", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "Пожалуйста, введите ваш рост" + }, + "weight": { + "label": "Вес", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "Пожалуйста, введите ваш вес" + }, + "ethnicity": { + "label": "Этническая Принадлежность", + "placeholder": "Выберите вашу этническую принадлежность", + "options": { + "east_asian": "Восточноазиатская", + "southeast_asian": "Юго-восточноазиатская", + "south_asian": "Южноазиатская", + "european": "Европейская", + "middle_eastern": "Ближний Восток/Северная Африка", + "african": "Африканская", + "african_american": "Афроамериканская", + "pacific_islander": "Житель Тихоокеанских островов", + "native_american": "Коренной американец", + "hispanic": "Испаноязычная/Латиноамериканская", + "mixed": "Смешанная этничность", + "other": "Другая" + }, + "error": "Пожалуйста, выберите вашу этническую принадлежность" + }, + "country": { + "label": "Страна", + "placeholder": "Введите название вашей страны", + "error": "Пожалуйста, выберите вашу страну" + } + }, + "medicalRecords": { + "title": "Медицинские Записи", + "description": "Загрузите ваши медицинские записи для лучшего анализа (Необязательно)", + "dragDrop": { + "title": "Перетащите ваши файлы сюда", + "or": "или", + "browse": "Выбрать Файлы", + "supportedFormats": "Поддерживаемые форматы: PDF, JPEG, PNG, DOC" + } + }, + "analysis": { + "description": "ИИ анализирует ваши данные о здоровье, чтобы понять ваше состояние\nи предоставить персонализированные рекомендации по здоровью" + }, + "navigation": { + "back": "Назад", + "next": "Далее", + "skip": "Пропустить" + } } } \ No newline at end of file diff --git a/messages/uk.json b/messages/uk.json index e187a99..9da9a0b 100644 --- a/messages/uk.json +++ b/messages/uk.json @@ -83,5 +83,93 @@ "needSignUp": "Потрібен обліковий запис? Зареєструйтеся", "alreadyHaveAccount": "Вже є обліковий запис? Увійдіть", "signUp": "Створити обліковий запис" + }, + "Onboarding": { + "introduction": { + "title": "Health Solver", + "subtitle": "by OpenHealth", + "description": "Маєте невирішені проблеми зі здоров'ям?\nДозвольте ШІ глибоко проаналізувати ваші дані", + "privacyNotice": "Ваші зібрані дані будуть використовуватися лише для вирішення ваших проблем зі здоров'ям.", + "runLocally": "Ви можете запустити локально", + "here": "тут" + }, + "healthConcerns": { + "title": "Проблеми зі Здоров'ям", + "description": "Будь ласка, детально опишіть ваші поточні проблеми зі здоров'ям", + "placeholder": "Приклад: \n- Які симптоми ви відчуваєте?\n- Коли вони почалися?\n- Що погіршує симптоми?\n- Чи були у вас подібні симптоми раніше?", + "error": "Будь ласка, опишіть ваші проблеми зі здоров'ям" + }, + "personalInfo": { + "title": "Особиста Інформація", + "description": "Допоможіть нам краще зрозуміти ваш профіль", + "gender": { + "label": "Стать", + "male": "Чоловіча", + "female": "Жіноча", + "error": "Будь ласка, виберіть вашу стать" + }, + "birthDate": { + "label": "Дата Народження", + "error": "Будь ласка, введіть вашу дату народження" + }, + "height": { + "label": "Зріст", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "Будь ласка, введіть ваш зріст" + }, + "weight": { + "label": "Вага", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "Будь ласка, введіть вашу вагу" + }, + "ethnicity": { + "label": "Етнічна Приналежність", + "placeholder": "Виберіть вашу етнічну приналежність", + "options": { + "east_asian": "Східноазійська", + "southeast_asian": "Південно-східноазійська", + "south_asian": "Південноазійська", + "european": "Європейська", + "middle_eastern": "Близький Схід/Північна Африка", + "african": "Африканська", + "african_american": "Афроамериканська", + "pacific_islander": "Житель Тихоокеанських островів", + "native_american": "Корінний американець", + "hispanic": "Іспаномовна/Латиноамериканська", + "mixed": "Змішана етнічність", + "other": "Інша" + }, + "error": "Будь ласка, виберіть вашу етнічну приналежність" + }, + "country": { + "label": "Країна", + "placeholder": "Введіть назву вашої країни", + "error": "Будь ласка, виберіть вашу країну" + } + }, + "medicalRecords": { + "title": "Медичні Записи", + "description": "Завантажте ваші медичні записи для кращого аналізу (Необов'язково)", + "dragDrop": { + "title": "Перетягніть ваші файли сюди", + "or": "або", + "browse": "Вибрати Файли", + "supportedFormats": "Підтримувані формати: PDF, JPEG, PNG, DOC" + } + }, + "analysis": { + "description": "ШІ аналізує ваші дані про здоров'я, щоб зрозуміти ваш стан\nта надати персоналізовані рекомендації щодо здоров'я" + }, + "navigation": { + "back": "Назад", + "next": "Далі", + "skip": "Пропустити" + } } } \ No newline at end of file diff --git a/messages/ur.json b/messages/ur.json index 4b52af5..28ed683 100644 --- a/messages/ur.json +++ b/messages/ur.json @@ -83,5 +83,93 @@ "needSignUp": "اکاؤنٹ کی ضرورت ہے؟ سائن اپ کریں", "alreadyHaveAccount": "پہلے سے اکاؤنٹ ہے؟ سائن ان کریں", "signUp": "اکاؤنٹ بنائیں" + }, + "Onboarding": { + "introduction": { + "title": "Health Solver", + "subtitle": "by OpenHealth", + "description": "حل نہ ہونے والے صحت کے مسائل ہیں؟\nAI کو آپ کے ڈیٹا کی گہری تجزیہ کرنے دیں", + "privacyNotice": "آپ کا جمع کردہ ڈیٹا صرف آپ کے صحت کے مسائل کو حل کرنے کے لیے استعمال کیا جائے گا۔", + "runLocally": "آپ اسے مقامی طور پر چلا سکتے ہیں", + "here": "یہاں" + }, + "healthConcerns": { + "title": "صحت کے مسائل", + "description": "براہ کرم اپنے موجودہ صحت کے مسائل کی تفصیل سے وضاحت کریں", + "placeholder": "مثال: \n- آپ کو کون سی علامات ہیں؟\n- یہ کب شروع ہوئیں؟\n- کیا چیز علامات کو بدتر کرتی ہے؟\n- کیا آپ کو پہلے بھی ایسی علامات کا تجربہ ہوا ہے؟", + "error": "براہ کرم اپنے صحت کے مسائل بیان کریں" + }, + "personalInfo": { + "title": "ذاتی معلومات", + "description": "ہمیں آپ کی پروفائل کو بہتر طور پر سمجھنے میں مدد کریں", + "gender": { + "label": "جنس", + "male": "مرد", + "female": "عورت", + "error": "براہ کرم اپنی جنس منتخب کریں" + }, + "birthDate": { + "label": "تاریخ پیدائش", + "error": "براہ کرم اپنی تاریخ پیدائش درج کریں" + }, + "height": { + "label": "قد", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "براہ کرم اپنا قد درج کریں" + }, + "weight": { + "label": "وزن", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "براہ کرم اپنا وزن درج کریں" + }, + "ethnicity": { + "label": "نسلی تعلق", + "placeholder": "اپنا نسلی تعلق منتخب کریں", + "options": { + "east_asian": "مشرقی ایشیائی", + "southeast_asian": "جنوب مشرقی ایشیائی", + "south_asian": "جنوبی ایشیائی", + "european": "یورپی", + "middle_eastern": "مشرق وسطی/شمالی افریقی", + "african": "افریقی", + "african_american": "افریقی امریکی", + "pacific_islander": "بحر الکاہل کے جزائر کے باشندے", + "native_american": "مقامی امریکی/آبائی", + "hispanic": "ہسپانوی/لاطینی", + "mixed": "مخلوط نسل", + "other": "دیگر" + }, + "error": "براہ کرم اپنا نسلی تعلق منتخب کریں" + }, + "country": { + "label": "ملک", + "placeholder": "اپنے ملک کا نام درج کریں", + "error": "براہ کرم اپنا ملک منتخب کریں" + } + }, + "medicalRecords": { + "title": "طبی ریکارڈز", + "description": "بہتر تجزیہ کے لیے اپنے طبی ریکارڈز اپ لوڈ کریں (اختیاری)", + "dragDrop": { + "title": "اپنی فائلیں یہاں کھینچ کر چھوڑیں", + "or": "یا", + "browse": "فائلیں براؤز کریں", + "supportedFormats": "معاون فارمیٹس: PDF، JPEG، PNG، DOC" + } + }, + "analysis": { + "description": "AI آپ کے صحت کے ڈیٹا کا تجزیہ کر رہا ہے تاکہ آپ کی حالت کو سمجھ سکے\nاور ذاتی نوعیت کی صحت کی بصیرت فراہم کر سکے" + }, + "navigation": { + "back": "واپس", + "next": "اگلا", + "skip": "چھوڑیں" + } } } \ No newline at end of file diff --git a/messages/zh.json b/messages/zh.json index 8361b62..947f712 100644 --- a/messages/zh.json +++ b/messages/zh.json @@ -83,5 +83,93 @@ "needSignUp": "需要账号?注册", "alreadyHaveAccount": "已有账号?登录", "signUp": "创建账号" + }, + "Onboarding": { + "introduction": { + "title": "Health Solver", + "subtitle": "by OpenHealth", + "description": "有未解决的健康问题吗?\n让AI深入分析您的数据", + "privacyNotice": "您的收集数据仅用于解决您的健康问题。", + "runLocally": "您可以在本地运行", + "here": "这里" + }, + "healthConcerns": { + "title": "健康问题", + "description": "请详细描述您当前的健康问题", + "placeholder": "示例:\n- 您有什么症状?\n- 什么时候开始的?\n- 什么会加重症状?\n- 您以前是否有过类似的症状?", + "error": "请描述您的健康问题" + }, + "personalInfo": { + "title": "个人信息", + "description": "帮助我们更好地了解您的情况", + "gender": { + "label": "性别", + "male": "男", + "female": "女", + "error": "请选择您的性别" + }, + "birthDate": { + "label": "出生日期", + "error": "请输入您的出生日期" + }, + "height": { + "label": "身高", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "请输入您的身高" + }, + "weight": { + "label": "体重", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "请输入您的体重" + }, + "ethnicity": { + "label": "族裔", + "placeholder": "选择您的族裔", + "options": { + "east_asian": "东亚", + "southeast_asian": "东南亚", + "south_asian": "南亚", + "european": "欧洲", + "middle_eastern": "中东/北非", + "african": "非洲", + "african_american": "非裔美国人", + "pacific_islander": "太平洋岛民", + "native_american": "美洲原住民", + "hispanic": "西班牙裔/拉丁裔", + "mixed": "混合族裔", + "other": "其他" + }, + "error": "请选择您的族裔" + }, + "country": { + "label": "国家", + "placeholder": "输入您的国家名称", + "error": "请选择您的国家" + } + }, + "medicalRecords": { + "title": "医疗记录", + "description": "上传您的医疗记录以获得更好的分析(可选)", + "dragDrop": { + "title": "将文件拖放到这里", + "or": "或", + "browse": "浏览文件", + "supportedFormats": "支持的格式:PDF、JPEG、PNG、DOC" + } + }, + "analysis": { + "description": "AI正在分析您的健康数据以了解您的状况\n并提供个性化的健康见解" + }, + "navigation": { + "back": "返回", + "next": "下一步", + "skip": "跳过" + } } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 3263631..edaaac3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@langchain/ollama": "^0.2.0", "@prisma/client": "^6.3.0", "@radix-ui/react-dialog": "^1.1.5", - "@radix-ui/react-select": "^2.1.5", + "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-slot": "^1.1.1", "@radix-ui/react-tooltip": "^1.1.7", "@trigger.dev/sdk": "3.3.16", @@ -25,10 +25,11 @@ "bcryptjs": "^3.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "cmdk": "^1.0.4", "cuid": "^3.0.0", "dayjs": "^1.11.13", "file-type": "^20.1.0", - "framer-motion": "^12.4.2", + "framer-motion": "^12.4.5", "gm": "^1.25.0", "langchain": "^0.3.15", "langsmith": "^0.3.10", @@ -49,7 +50,9 @@ "rehype-katex": "^7.0.1", "remark-gfm": "^4.0.0", "remark-math": "^6.0.0", + "shadcn-ui": "^0.9.4", "sharp": "^0.33.5", + "sonner": "^2.0.0", "spawn-sync": "^2.0.0", "swr": "^2.3.0", "tailwind-merge": "^2.6.0", @@ -182,6 +185,34 @@ "tslib": "^2.4.1" } }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/ni": { + "version": "0.21.12", + "resolved": "https://registry.npmjs.org/@antfu/ni/-/ni-0.21.12.tgz", + "integrity": "sha512-2aDL3WUv8hMJb2L3r/PIQWsTLyq7RQr3v9xD16fiz6O8ys1xEyLhhTOv8gxtZvJiTzjTF5pHoArvRdesGL1DMQ==", + "license": "MIT", + "bin": { + "na": "bin/na.mjs", + "nci": "bin/nci.mjs", + "ni": "bin/ni.mjs", + "nlx": "bin/nlx.mjs", + "nr": "bin/nr.mjs", + "nu": "bin/nu.mjs", + "nun": "bin/nun.mjs" + } + }, "node_modules/@anthropic-ai/sdk": { "version": "0.36.3", "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.36.3.tgz", @@ -257,14 +288,80 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/generator": { + "node_modules/@babel/compat-data": { "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", - "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", + "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/core/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==", + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -273,6 +370,101 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/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==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz", + "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.26.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", @@ -286,6 +478,74 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-string-parser": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", @@ -304,13 +564,35 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", - "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.8" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -319,6 +601,40 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz", + "integrity": "sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/runtime": { "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", @@ -332,30 +648,30 @@ } }, "node_modules/@babel/template": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", - "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8" + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", - "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -373,9 +689,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", - "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -3132,6 +3448,42 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@ts-morph/common": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.19.0.tgz", + "integrity": "sha512-Unz/WHmd4pGax91rdIKWi51wnVUW11QttMEPpBiBgIewnc9UQIX7UDLxr5vRlqeByXCwhkF6VabSsI0raWcyAQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.12", + "minimatch": "^7.4.3", + "mkdirp": "^2.1.6", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -3642,6 +3994,15 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/agentkeepalive": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", @@ -3932,6 +4293,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/ast-types-flow": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", @@ -4107,6 +4480,38 @@ "node": ">=8" } }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "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": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -4400,15 +4805,42 @@ "url": "https://polar.sh/cva" } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "license": "ISC", "dependencies": { @@ -4493,6 +4925,15 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -4502,6 +4943,28 @@ "node": ">=6" } }, + "node_modules/cmdk": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.4.tgz", + "integrity": "sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.0", + "use-sync-external-store": "^1.2.2" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/code-block-writer": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz", + "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==", + "license": "MIT" + }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -4714,6 +5177,15 @@ "dev": true, "license": "BSD-2-Clause" }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -4852,6 +5324,18 @@ "dev": true, "license": "MIT" }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -5000,6 +5484,12 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "license": "MIT" }, + "node_modules/electron-to-chromium": { + "version": "1.5.102", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", + "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", + "license": "ISC" + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -5713,6 +6203,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", @@ -5866,7 +6369,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -5883,7 +6385,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -5933,6 +6434,38 @@ "reusify": "^1.0.4" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fetch-blob/node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/fflate": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", @@ -6091,13 +6624,25 @@ "node": ">= 12.20" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/framer-motion": { - "version": "12.4.2", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.4.2.tgz", - "integrity": "sha512-pW307cQKjDqEuO1flEoIFf6TkuJRfKr+c7qsHAJhDo4368N/5U8/7WU8J+xhd9+gjmOgJfgp+46evxRRFM39dA==", + "version": "12.4.5", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.4.5.tgz", + "integrity": "sha512-9+8wglyIJFeUpVg4U8Ohvoo5x7zmvRqawWXhEUThcYdwL/5A1/OkLvQo68Zz5taUE11HKG/Ex+LPaN2+fMkRdA==", "license": "MIT", "dependencies": { - "motion-dom": "^12.0.0", + "motion-dom": "^12.4.5", "motion-utils": "^12.0.0", "tslib": "^2.4.0" }, @@ -6125,6 +6670,20 @@ "license": "MIT", "optional": true }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -6179,6 +6738,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -6445,7 +7013,6 @@ "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/graphemer": { @@ -6734,6 +7301,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/https-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-6.2.1.tgz", + "integrity": "sha512-ONsE3+yfZF2caH5+bJlcddtWqNI3Gvs5A38+ngvljxaBiRXRswym2c7yf8UAeFpRFKjFNHIFEHqR/OLAWJzyiA==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/human-signals": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", @@ -6830,8 +7410,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC", - "optional": true + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", @@ -7167,6 +7746,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -7335,6 +7926,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -7542,6 +8145,18 @@ "json5": "lib/cli.js" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsonpointer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", @@ -7593,6 +8208,15 @@ "json-buffer": "3.0.1" } }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/langchain": { "version": "0.3.15", "resolved": "https://registry.npmjs.org/langchain/-/langchain-0.3.15.tgz", @@ -7776,6 +8400,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -7802,6 +8432,34 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "license": "MIT" }, + "node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "license": "MIT", + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/long": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/long/-/long-5.3.1.tgz", @@ -8893,7 +9551,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "devOptional": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8908,6 +9565,21 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/mkdirp": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", @@ -8935,9 +9607,9 @@ "license": "MIT" }, "node_modules/motion-dom": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.0.0.tgz", - "integrity": "sha512-CvYd15OeIR6kHgMdonCc1ihsaUG4MYh/wrkz8gZ3hBX/uamyZCXN9S9qJoYF03GqfTt7thTV/dxnHYX4+55vDg==", + "version": "12.4.5", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.4.5.tgz", + "integrity": "sha512-Q2xmhuyYug1CGTo0jdsL05EQ4RhIYXlggFS/yPhQQRNzbrhjKQ1tbjThx5Plv68aX31LsUQRq4uIkuDxdO5vRQ==", "license": "MIT", "dependencies": { "motion-utils": "^12.0.0" @@ -9205,6 +9877,12 @@ } } }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -9483,6 +10161,41 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.1.tgz", + "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==", + "license": "MIT", + "dependencies": { + "chalk": "^5.0.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.1", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "strip-ansi": "^7.0.1", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -9656,6 +10369,12 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -10072,6 +10791,19 @@ } } }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -10414,7 +11146,6 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", - "optional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -10436,6 +11167,31 @@ "node": ">=8.10.0" } }, + "node_modules/recast": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", + "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -10649,6 +11405,52 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -10747,8 +11549,7 @@ "url": "https://feross.org/support" } ], - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/safe-push-apply": { "version": "1.0.0", @@ -10852,6 +11653,215 @@ "node": ">= 0.4" } }, + "node_modules/shadcn-ui": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/shadcn-ui/-/shadcn-ui-0.9.4.tgz", + "integrity": "sha512-75nqu4+y4mlhNXGfHPoPd1r2fgqGQgSEPzPe8TV39WRinafKHuBX2xkgoQOwu+NhiRPKV5TrRSCZ5ytGrFU1oQ==", + "license": "MIT", + "dependencies": { + "@antfu/ni": "^0.21.4", + "@babel/core": "^7.22.1", + "@babel/parser": "^7.22.6", + "@babel/plugin-transform-typescript": "^7.22.5", + "chalk": "5.2.0", + "commander": "^10.0.0", + "cosmiconfig": "^8.1.3", + "diff": "^5.1.0", + "execa": "^7.0.0", + "fast-glob": "^3.3.2", + "fs-extra": "^11.1.0", + "https-proxy-agent": "^6.2.0", + "lodash": "^4.17.21", + "node-fetch": "^3.3.0", + "ora": "^6.1.2", + "prompts": "^2.4.2", + "recast": "^0.23.2", + "ts-morph": "^18.0.0", + "tsconfig-paths": "^4.2.0", + "zod": "^3.20.2" + }, + "bin": { + "shadcn-ui": "dist/index.js" + } + }, + "node_modules/shadcn-ui/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/shadcn-ui/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/shadcn-ui/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/shadcn-ui/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/shadcn-ui/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/shadcn-ui/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/shadcn-ui/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/shadcn-ui/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/shadcn-ui/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/shadcn-ui/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/shadcn-ui/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/shadcn-ui/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/shadcn-ui/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/sharp": { "version": "0.33.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", @@ -11074,6 +12084,12 @@ "integrity": "sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==", "license": "MIT" }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, "node_modules/slug": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/slug/-/slug-6.1.0.tgz", @@ -11142,6 +12158,16 @@ } } }, + "node_modules/sonner": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.0.tgz", + "integrity": "sha512-3WeSl3WrEdhmdiTniT8JsCiVRVDOdn7k+4MG2drqzSMOeqrExm03HIwDBPKuq52JBqL7wRLG17QBIiSleUbljw==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -11183,6 +12209,56 @@ "dev": true, "license": "MIT" }, + "node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", + "license": "MIT", + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stdin-discarder/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/stdin-discarder/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -11196,7 +12272,6 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "license": "MIT", - "optional": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -11428,7 +12503,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11924,6 +12998,16 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "license": "Apache-2.0" }, + "node_modules/ts-morph": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-18.0.0.tgz", + "integrity": "sha512-Kg5u0mk19PIIe4islUI/HWRvm9bC1lHejK4S0oh1zaZ77TMZAEmQC0sHQYiu2RgCQFZKXz1fMVi/7nOOeirznA==", + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.19.0", + "code-block-writer": "^12.0.0" + } + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -12337,6 +13421,45 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "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/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -12503,6 +13626,15 @@ "loose-envify": "^1.0.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/web-namespaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", diff --git a/package.json b/package.json index 5324fcb..7a8a178 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@langchain/ollama": "^0.2.0", "@prisma/client": "^6.3.0", "@radix-ui/react-dialog": "^1.1.5", - "@radix-ui/react-select": "^2.1.5", + "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-slot": "^1.1.1", "@radix-ui/react-tooltip": "^1.1.7", "@trigger.dev/sdk": "3.3.16", @@ -30,10 +30,11 @@ "bcryptjs": "^3.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "cmdk": "^1.0.4", "cuid": "^3.0.0", "dayjs": "^1.11.13", "file-type": "^20.1.0", - "framer-motion": "^12.4.2", + "framer-motion": "^12.4.5", "gm": "^1.25.0", "langchain": "^0.3.15", "langsmith": "^0.3.10", @@ -54,7 +55,9 @@ "rehype-katex": "^7.0.1", "remark-gfm": "^4.0.0", "remark-math": "^6.0.0", + "shadcn-ui": "^0.9.4", "sharp": "^0.33.5", + "sonner": "^2.0.0", "spawn-sync": "^2.0.0", "swr": "^2.3.0", "tailwind-merge": "^2.6.0", diff --git a/src/app/globals.css b/src/app/globals.css index 0049d4b..f102207 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -11,22 +11,22 @@ body { --background: 0 0% 100%; --foreground: 222.2 84% 4.9%; --card: 0 0% 100%; - --card-foreground: 240 10% 3.9%; + --card-foreground: 222.2 84% 4.9%; --popover: 0 0% 100%; - --popover-foreground: 240 10% 3.9%; + --popover-foreground: 222.2 84% 4.9%; --primary: 222.2 47.4% 11.2%; --primary-foreground: 210 40% 98%; --secondary: 210 40% 96.1%; --secondary-foreground: 222.2 47.4% 11.2%; - --muted: 240 4.8% 95.9%; - --muted-foreground: 240 3.8% 46.1%; - --accent: 240 4.8% 95.9%; - --accent-foreground: 240 5.9% 10%; + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; --destructive: 0 84.2% 60.2%; - --destructive-foreground: 0 0% 98%; + --destructive-foreground: 210 40% 98%; --border: 214.3 31.8% 91.4%; --input: 214.3 31.8% 91.4%; - --ring: 240 10% 3.9%; + --ring: 222.2 84% 4.9%; --chart-1: 12 76% 61%; --chart-2: 173 58% 39%; --chart-3: 197 37% 24%; @@ -35,25 +35,25 @@ body { --radius: 0.5rem; } .dark { - --background: 240 10% 3.9%; - --foreground: 0 0% 98%; - --card: 240 10% 3.9%; - --card-foreground: 0 0% 98%; - --popover: 240 10% 3.9%; - --popover-foreground: 0 0% 98%; - --primary: 0 0% 98%; - --primary-foreground: 240 5.9% 10%; - --secondary: 240 3.7% 15.9%; - --secondary-foreground: 0 0% 98%; - --muted: 240 3.7% 15.9%; - --muted-foreground: 240 5% 64.9%; - --accent: 240 3.7% 15.9%; - --accent-foreground: 0 0% 98%; + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + --primary: 210 40% 98%; + --primary-foreground: 222.2 47.4% 11.2%; + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 0% 98%; - --border: 240 3.7% 15.9%; - --input: 240 3.7% 15.9%; - --ring: 240 4.9% 83.9%; + --destructive-foreground: 210 40% 98%; + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + --ring: 212.7 26.8% 83.9%; --chart-1: 220 70% 50%; --chart-2: 160 60% 45%; --chart-3: 30 80% 55%; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 78414f3..ae5bbf6 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -1,12 +1,10 @@ import LoginScreen from '@/components/auth/login-screen'; -import {Footer} from '@/components/ui/footer'; import {Suspense} from "react"; export default function LoginPage() { return ( -