From 631e2bc0fb42d2b83aedf10aef847a1908a7cc29 Mon Sep 17 00:00:00 2001 From: Josh Date: Tue, 17 Jun 2025 13:06:32 +0000 Subject: [PATCH] Twilio bash config added. Milestone Panel edits. --- package-lock.json | 50 ++++++++++++++++++ package.json | 2 + src/components/CareerRoadmap.js | 6 ++- src/components/MilestonePanel.js | 46 ++++++++-------- .../ui/infoTooltip.js} | 0 user_profile.db | Bin 159744 -> 159744 bytes 6 files changed, 81 insertions(+), 23 deletions(-) rename src/{utils/infoIcon.js => components/ui/infoTooltip.js} (100%) diff --git a/package-lock.json b/package-lock.json index d8b7a42..42f5189 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "moment": "^2.30.1", "multer": "^1.4.5-lts.2", "mysql2": "^3.14.1", + "node-cron": "^4.1.0", "openai": "^4.97.0", "pdf-parse": "^1.1.1", "pdfjs-dist": "^3.11.174", @@ -51,6 +52,7 @@ "sqlite3": "^5.1.7", "tailwind-merge": "^3.2.0", "tailwindcss-animate": "^1.0.7", + "twilio": "^5.7.1", "web-vitals": "^4.2.4", "xlsx": "^0.18.5" }, @@ -7491,6 +7493,12 @@ "url": "https://github.com/sponsors/kossnocorp" } }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -13476,6 +13484,15 @@ "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", "license": "MIT" }, + "node_modules/node-cron": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-4.1.0.tgz", + "integrity": "sha512-OS+3ORu+h03/haS6Di8Qr7CrVs4YaKZZOynZwQpyPZDnR3tqRbwJmuP2gVR16JfhLgyNlloAV1VTrrWlRogCFA==", + "license": "ISC", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -17185,6 +17202,12 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, + "node_modules/scmp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz", + "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==", + "license": "BSD-3-Clause" + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -19068,6 +19091,33 @@ "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", "license": "ISC" }, + "node_modules/twilio": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/twilio/-/twilio-5.7.1.tgz", + "integrity": "sha512-BcoVK6FR580HRX94z2u3b+foHkvFj39DDzLU4Xv+N/7ejDIGgQdrtg7CgRqIT04UNs98HJAvjuAOzkYetI6ExQ==", + "license": "MIT", + "dependencies": { + "axios": "^1.8.3", + "dayjs": "^1.11.9", + "https-proxy-agent": "^5.0.0", + "jsonwebtoken": "^9.0.2", + "qs": "^6.9.4", + "scmp": "^2.1.0", + "xmlbuilder": "^13.0.2" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/twilio/node_modules/xmlbuilder": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", + "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index 93fb9ae..ae12583 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "moment": "^2.30.1", "multer": "^1.4.5-lts.2", "mysql2": "^3.14.1", + "node-cron": "^4.1.0", "openai": "^4.97.0", "pdf-parse": "^1.1.1", "pdfjs-dist": "^3.11.174", @@ -46,6 +47,7 @@ "sqlite3": "^5.1.7", "tailwind-merge": "^3.2.0", "tailwindcss-animate": "^1.0.7", + "twilio": "^5.7.1", "web-vitals": "^4.2.4", "xlsx": "^0.18.5" }, diff --git a/src/components/CareerRoadmap.js b/src/components/CareerRoadmap.js index 9fb3ea2..075490a 100644 --- a/src/components/CareerRoadmap.js +++ b/src/components/CareerRoadmap.js @@ -32,6 +32,7 @@ import { Button } from './ui/button.js'; import { Pencil } from 'lucide-react'; import ScenarioEditModal from './ScenarioEditModal.js'; import parseAIJson from "../utils/parseAIJson.js"; // your shared parser +import InfoTooltip from "./ui/infoTooltip.js"; import './CareerRoadmap.css'; import './MilestoneTimeline.css'; @@ -1336,7 +1337,10 @@ const fetchMilestones = useCallback(async () => { {/* --- FINANCIAL PROJECTION SECTION -------------------------------- */}
-

Financial Projection

+

+ Financial Projection + +

{projectionData.length ? ( diff --git a/src/components/MilestonePanel.js b/src/components/MilestonePanel.js index 7ef49b7..9b02c5e 100644 --- a/src/components/MilestonePanel.js +++ b/src/components/MilestonePanel.js @@ -1,40 +1,42 @@ -import { Pencil } from 'lucide-react'; -import { Button } from './ui/button.js'; +/* MilestonePanel.jsx */ +import { Pencil } from "lucide-react"; +import { Button } from "./ui/button.js"; - -/* MilestonePanel.jsx ---------------------------------- */ export default function MilestonePanel({ groups, onEdit, onSelect }) { return ( -