* feat(dashboard): restyle lesson transcript and summarize actions Add separator lines around lesson material actions below the video, switch transcript and summarize controls to plain ghost buttons with hover-animated icons, and separate the two actions with a pipe when both are visible. Display rules are unchanged. Co-authored-by: Rotimi Best <[email protected]> * refactor(dashboard): inline summarize action into material actions Fold lesson-summarize-button into lesson-material-actions and remove the standalone component. Lessons without videos use the same actions bar with separators disabled. Co-authored-by: Rotimi Best <[email protected]> * fix(dashboard): align lesson actions with note width on mobile Constrain material actions to max-w-2xl when there is no video so they match the note column. Improve small-screen layout with tighter padding, flex-wrap, and hide the pipe separator below the sm breakpoint. Co-authored-by: Rotimi Best <[email protected]> * add script update * fix(dashboard): tighten spacing between lesson video and note Remove gap-2 from the lesson content stack and drop bottom margin on the last video wrapper so material actions separators control the gap before the note. Co-authored-by: Rotimi Best <[email protected]> * fix(dashboard): show bottom separator on note-only lesson actions Lessons without video were passing showSeparators=false, hiding both lines. Split into top/bottom controls so summarize still gets a line before the note without one above the action row. Co-authored-by: Rotimi Best <[email protected]> * fix(dashboard): always show top separator on lesson material actions Co-authored-by: Rotimi Best <[email protected]> * fix(dashboard): reduce lesson material action separator margin to my-2 Co-authored-by: Rotimi Best <[email protected]> * feat(dashboard): consolidate multi-video transcript actions and navigation Register transcript sources per upload video, show a single material actions row after all videos, and add prev/next video navigation in the transcript side panel when multiple transcripts are available. Co-authored-by: Rotimi Best <[email protected]> * fix(dashboard): address greptile review on lesson material actions Require lessonId on material actions and stop overwriting the transcript seek wrapper with a stale localSeekFn snapshot in the sync effect. Co-authored-by: Rotimi Best <[email protected]> * fix(dashboard): stop transcript registry effect infinite loop Replace the reactive sync effect with explicit registry updates from loadTranscript and skip no-op transcript source writes to avoid reading and writing transcriptSources in the same effect pass. Co-authored-by: Rotimi Best <[email protected]> * fix(ui): raise tooltip z-index above app bar side panel Use z-menu-elevated for tooltip content so header icon tooltips are not hidden behind the fixed transcript side panel (z-app-bar). Co-authored-by: Rotimi Best <[email protected]> --------- Co-authored-by: Rotimi Best <[email protected]>
111 lines
4.0 KiB
JSON
111 lines
4.0 KiB
JSON
{
|
|
"name": "@cio/db",
|
|
"version": "0.0.1",
|
|
"type": "module",
|
|
"main": "./dist/index.js",
|
|
"types": "./dist/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/index.d.ts",
|
|
"default": "./dist/index.js"
|
|
},
|
|
"./types": {
|
|
"types": "./dist/types.d.ts",
|
|
"default": "./dist/types.js"
|
|
},
|
|
"./drizzle": {
|
|
"types": "./dist/drizzle.d.ts",
|
|
"default": "./dist/drizzle.js"
|
|
},
|
|
"./schema": {
|
|
"types": "./dist/schema.d.ts",
|
|
"default": "./dist/schema.js"
|
|
},
|
|
"./auth": {
|
|
"types": "./dist/auth.d.ts",
|
|
"default": "./dist/auth.js"
|
|
},
|
|
"./utils": {
|
|
"types": "./dist/utils/index.d.ts",
|
|
"default": "./dist/utils/index.js"
|
|
},
|
|
"./queries": {
|
|
"types": "./dist/queries/index.d.ts",
|
|
"default": "./dist/queries/index.js"
|
|
},
|
|
"./queries/query-errors": {
|
|
"types": "./dist/queries/query-errors.d.ts",
|
|
"default": "./dist/queries/query-errors.js"
|
|
},
|
|
"./queries/*": {
|
|
"types": "./dist/queries/*/index.d.ts",
|
|
"default": "./dist/queries/*/index.js"
|
|
},
|
|
"./queries/*/*": {
|
|
"types": "./dist/queries/*/*.d.ts",
|
|
"default": "./dist/queries/*/*.js"
|
|
}
|
|
},
|
|
"files": [
|
|
"dist"
|
|
],
|
|
"scripts": {
|
|
"prebuild": "pnpm --filter @cio/question-types run build && pnpm --filter @cio/utils run build && pnpm --filter @cio/email run build",
|
|
"build": "rimraf dist tsconfig.tsbuildinfo && tsc && tsc-alias",
|
|
"dev": "tsc --watch",
|
|
"db": "drizzle-kit",
|
|
"db:studio": "drizzle-kit studio",
|
|
"db:generate": "drizzle-kit generate",
|
|
"db:migrate": "drizzle-kit migrate",
|
|
"db:baseline": "tsx src/scripts/baseline.ts",
|
|
"db:reset": "tsx src/scripts/db-reset.ts --skip-seed",
|
|
"db:setup": "tsx src/scripts/db-setup.ts",
|
|
"db:setup:seed": "tsx src/scripts/db-setup.ts --seed",
|
|
"db:exercise-backfill": "tsx src/scripts/backfill-exercise-course.ts",
|
|
"migrate:answer-data": "tsx src/scripts/migrate-answer-data.ts",
|
|
"migrate:programs-to-cohorts": "tsx src/scripts/migrate-programs-to-cohorts.ts",
|
|
"db:assets-backfill": "tsx src/scripts/backfill-lesson-assets.ts",
|
|
"db:rewrite-media-host": "tsx src/scripts/rewrite-media-host.ts",
|
|
"db:login-link": "tsx src/scripts/generate-login-link.ts",
|
|
"db:sync-orphaned-profiles": "tsx src/scripts/sync-orphaned-profiles.ts",
|
|
"db:backfill-profile-email-verification": "tsx src/scripts/backfill-profile-email-verification.ts",
|
|
"db:update-user-email": "tsx src/scripts/update-user-email.ts",
|
|
"db:notify-students-over-limit": "tsx src/scripts/notify-students-over-limit.ts",
|
|
"move-users": "tsx src/scripts/supabase-to-betterauth.ts",
|
|
"pull": "drizzle-kit pull --config drizzle.config.ts",
|
|
"generate-types": "tsx scripts/generate-types.ts && pnpm format",
|
|
"seed": "tsx src/scripts/seed.ts",
|
|
"format": "prettier . --write",
|
|
"db:supabase-to-betterauth": "tsx src/scripts/supabase-to-betterauth.ts",
|
|
"db:dump-backup": "tsx src/scripts/pg-dump-backup.ts",
|
|
"db:push-dump-to-new-db": "tsx src/scripts/push-dump-to-new-db.ts",
|
|
"db:restore-lesson-section-from-dump": "tsx src/scripts/restore-lesson-section-from-dump.ts",
|
|
"db:restore-organizationmember-from-dump": "tsx src/scripts/restore-organizationmember-from-dump.ts",
|
|
"db:disable-v1-content-grouping-from-dump": "tsx src/scripts/disable-v1-content-grouping-from-dump.ts",
|
|
"db:fix-landing-courses": "tsx src/scripts/fix-landing-page-courses-links.ts"
|
|
},
|
|
"dependencies": {
|
|
"@better-auth/sso": "^1.4.18",
|
|
"@cio/email": "workspace:*",
|
|
"@cio/question-types": "workspace:*",
|
|
"@cio/tsconfig": "workspace:*",
|
|
"@cio/utils": "workspace:*",
|
|
"bcrypt": "6.0.0",
|
|
"better-auth": "^1.4.18",
|
|
"drizzle-kit": "^0.31.8",
|
|
"drizzle-orm": "^0.44.7",
|
|
"jose": "^6.1.3",
|
|
"postgres": "^3.4.7"
|
|
},
|
|
"devDependencies": {
|
|
"@types/bcrypt": "6.0.0",
|
|
"@types/node": "^24.8.1",
|
|
"@types/pg": "^8.16.0",
|
|
"dotenv": "^17.2.3",
|
|
"pg": "^8.18.0",
|
|
"tsc-alias": "^1.8.16",
|
|
"tsx": "^4.20.3",
|
|
"typescript": "^5.9.3"
|
|
}
|
|
}
|