From 75c2583c41b8b69f6444162b9d410489653d788d Mon Sep 17 00:00:00 2001 From: Tech-lo Date: Thu, 9 Apr 2026 12:34:49 +0530 Subject: [PATCH 01/13] multi segment first flow and lint fix --- .../sprint-33-WeBuddhist-Studio.md | 8 +- package-lock.json | 31 +++ package.json | 1 + .../routes/task/components/view/TaskForm.tsx | 18 +- src/components/ui/atoms/checkbox.tsx | 30 +++ .../content-sub/ContentComponents.tsx | 28 ++- .../ui/molecules/subtask-card/SubTaskCard.tsx | 5 +- .../webuddhist-source/SourceSelectorSheet.tsx | 194 +++++++++++++++++- src/components/ui/shadimport.ts | 2 + 9 files changed, 294 insertions(+), 23 deletions(-) create mode 100644 src/components/ui/atoms/checkbox.tsx diff --git a/docs/sprint-release-notes/sprint-33-WeBuddhist-Studio.md b/docs/sprint-release-notes/sprint-33-WeBuddhist-Studio.md index 95befa7b..00a63714 100644 --- a/docs/sprint-release-notes/sprint-33-WeBuddhist-Studio.md +++ b/docs/sprint-release-notes/sprint-33-WeBuddhist-Studio.md @@ -8,18 +8,18 @@ This sprint delivered **2** item(s) in **OpenPecha/WeBuddhist-Studio**. - ## ✨ New Features -* **STUDIO: Remove language param for search**: dont send language when performing multilingual search. due to this text were not showing +- **STUDIO: Remove language param for search**: dont send language when performing multilingual search. due to this text were not showing Image { if (editingTask && taskDetails) { form.setValue("title", editingTask.title); - const subTasksData = taskDetails.subtasks.map((data: any) => { + const sorted = [...taskDetails.subtasks].sort( + (a: { display_order: number }, b: { display_order: number }) => + a.display_order - b.display_order, + ); + const subTasksData: SubTask[] = sorted.map((data: any) => { switch (data.content_type) { case "VIDEO": return { id: data.id, - content_type: "VIDEO", + content_type: "VIDEO" as const, content: data.content, duration: data.duration, }; case "TEXT": return { id: data.id, - content_type: "TEXT", + content_type: "TEXT" as const, content: data.content, }; case "AUDIO": return { id: data.id, - content_type: "AUDIO", + content_type: "AUDIO" as const, content: data.content, }; case "IMAGE": return { id: data.id, - content_type: "IMAGE", + content_type: "IMAGE" as const, imagePreview: data.content, content: data.image_url, }; case "SOURCE_REFERENCE": return { id: data.id, - content_type: "SOURCE_REFERENCE", + content_type: "SOURCE_REFERENCE" as const, content: data.content, source_text_id: data.source_text_id || null, pecha_segment_id: data.pecha_segment_id || null, @@ -199,7 +203,7 @@ const TaskForm = ({ default: return { id: data.id, - content_type: "TEXT", + content_type: "TEXT" as const, content: data.content, }; } diff --git a/src/components/ui/atoms/checkbox.tsx b/src/components/ui/atoms/checkbox.tsx new file mode 100644 index 00000000..7d5f62b3 --- /dev/null +++ b/src/components/ui/atoms/checkbox.tsx @@ -0,0 +1,30 @@ +import * as React from "react"; +import { FaCheck } from "react-icons/fa6"; +import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; + +import { cn } from "@/lib/utils"; + +function Checkbox({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + + + ); +} + +export { Checkbox }; diff --git a/src/components/ui/molecules/content-sub/ContentComponents.tsx b/src/components/ui/molecules/content-sub/ContentComponents.tsx index 2aa45b78..0667d988 100644 --- a/src/components/ui/molecules/content-sub/ContentComponents.tsx +++ b/src/components/ui/molecules/content-sub/ContentComponents.tsx @@ -60,10 +60,16 @@ export const AudioContent = ({ content }: { content: string }) => { const src = getEmbedSrc(); if (!src) return null; + + const audioTitle = content.includes("spotify.com") + ? "Spotify audio player" + : "SoundCloud audio player"; + return (