diff --git a/app/about/page.tsx b/app/about/page.tsx index 20233de..0102172 100644 --- a/app/about/page.tsx +++ b/app/about/page.tsx @@ -3,6 +3,8 @@ export const metadata = { description: "فیپ یک گروه متخصص در حوزه اینتگریشن و روشهای نوین یکپارچهسازی. ماموریت، چشمانداز و ارزشهای ما.", }; +import { Button } from "@/components/ui/button"; +import Link from "next/link"; export default function AboutPage() { return ( @@ -15,7 +17,7 @@ export default function AboutPage() { درباره ما
- ما یک گروه متخصص هستیم که در حوزه اینتگریشن و روشهای نوین یکپارچهسازی فعالیت میکنیم. + ما یک گروه متخصص هستیم که در حوزه اینتگریشن و روشهای نوین یکپارچهسازی فعالیت میکنیم. هدف ما ارائه راهکارهای هوشمند و کارآمد برای اتصال سیستمها، دادهها و فرآیندهای کسبوکار است.
@@ -32,13 +34,13 @@ export default function AboutPage() {- فیپ یک گروه متخصص است که در حوزه اینتگریشن و روشهای نوین یکپارچهسازی فعالیت میکند. - ما با استفاده از تکنولوژیهای پیشرفته و رویکردهای نوآورانه، به کسبوکارها کمک میکنیم تا + فیپ یک گروه متخصص است که در حوزه اینتگریشن و روشهای نوین یکپارچهسازی فعالیت میکند. + ما با استفاده از تکنولوژیهای پیشرفته و رویکردهای نوآورانه، به کسبوکارها کمک میکنیم تا سیستمهای خود را به شکلی کارآمد و قابلاعتماد بهم متصل کنند.
- ما در زمینه یکپارچهسازی سیستمها، اتوماسیون فرآیندها، ارتباطات چندکاناله و مدیریت دادهها - تخصص داریم. با استفاده از روشهای نوین و ابزارهای پیشرفته، راهکارهای سفارشی برای هر کسبوکار + ما در زمینه یکپارچهسازی سیستمها، اتوماسیون فرآیندها، ارتباطات چندکاناله و مدیریت دادهها + تخصص داریم. با استفاده از روشهای نوین و ابزارهای پیشرفته، راهکارهای سفارشی برای هر کسبوکار طراحی و پیادهسازی میکنیم.
- ماموریت ما این است که با استفاده از روشهای نوین اینتگریشن، به کسبوکارها کمک کنیم تا - بدون پیچیدگیهای فنی، سیستمهای خود را بهم متصل کنند و از قدرت اتوماسیون و ارتباطات هوشمند + ماموریت ما این است که با استفاده از روشهای نوین اینتگریشن، به کسبوکارها کمک کنیم تا + بدون پیچیدگیهای فنی، سیستمهای خود را بهم متصل کنند و از قدرت اتوماسیون و ارتباطات هوشمند بهرهمند شوند.
- ما میخواهیم به گروه پیشرو در حوزه اینتگریشن و روشهای نوین یکپارچهسازی تبدیل شویم. - چشمانداز ما این است که هر کسبوکاری، از کوچک تا بزرگ، بتواند به راحتی از خدمات ما استفاده کند + ما میخواهیم به گروه پیشرو در حوزه اینتگریشن و روشهای نوین یکپارچهسازی تبدیل شویم. + چشمانداز ما این است که هر کسبوکاری، از کوچک تا بزرگ، بتواند به راحتی از خدمات ما استفاده کند و به اهداف خود برسد.
- تیم فیپ متشکل از متخصصان با تجربه در حوزههای اینتگریشن، فناوری اطلاعات، توسعه نرمافزار - و مدیریت کسبوکار است. ما با همکاری یکدیگر و استفاده از روشهای نوین، راهکارهای نوآورانه و + تیم فیپ متشکل از متخصصان با تجربه در حوزههای اینتگریشن، فناوری اطلاعات، توسعه نرمافزار + و مدیریت کسبوکار است. ما با همکاری یکدیگر و استفاده از روشهای نوین، راهکارهای نوآورانه و کاربردی برای چالشهای یکپارچهسازی ارائه میدهیم.
+
فیپ یک گروه متخصص است که در حوزه اینتگریشن و روشهای نوین یکپارچهسازی فعالیت میکند.{" "} - + ما با استفاده از تکنولوژیهای پیشرفته و رویکردهای نوآورانه {" "} به کسبوکارها کمک میکنیم تا سیستمهای خود را به شکلی کارآمد و قابلاعتماد بهم متصل کنند.
-+
ما در زمینه یکپارچهسازی سیستمها، اتوماسیون فرآیندها، ارتباطات چندکاناله و مدیریت دادهها تخصص داریم. با استفاده از روشهای نوین و ابزارهای پیشرفته، راهکارهای سفارشی برای هر کسبوکار طراحی و پیادهسازی میکنیم که به آنها امکان میدهد تا از قدرت اتوماسیون و ارتباطات هوشمند بهرهمند شوند.
- ماموریت ما این است که با استفاده از روشهای نوین اینتگریشن، به کسبوکارها کمک کنیم تا + ماموریت ما این است که با استفاده از روشهای نوین اینتگریشن، به کسبوکارها کمک کنیم تا بدون پیچیدگیهای فنی، سیستمهای خود را بهم متصل کنند و به اهداف خود برسند.
diff --git a/components/features-12.tsx b/components/features-12.tsx index d8c1d0b..8dddba7 100644 --- a/components/features-12.tsx +++ b/components/features-12.tsx @@ -20,22 +20,29 @@ export default function Features() { type ImageKey = "item-1" | "item-2" | "item-3" | "item-4"; const [activeItem, setActiveItem] = useState("item-1"); + const sectionImage = (filename: string) => + `/assets/main-pic/4section/${encodeURIComponent(filename)}`; + const images = { "item-1": { - image: "/assets/main-pic/4section/Systems Integration.jpg", - alt: "System integration", + image: sectionImage("Systems Integration.jpg"), + imageDark: sectionImage("Systems Integration-dark.jpg"), + alt: "یکپارچهسازی سیستمها", }, "item-2": { - image: "/assets/main-pic/4section/Powerful Management panels.jpg", - alt: "Management panels", + image: sectionImage("Powerful Management panels.jpg"), + imageDark: sectionImage("Powerful Management panels-dark.jpg"), + alt: "پنلهای مدیریتی قدرتمند", }, "item-3": { - image: "/assets/main-pic/4section/Interaction with Social Networks.jpg", - alt: "Social media integration", + image: sectionImage("Interaction with Social Networks.jpg"), + imageDark: sectionImage("Interaction with Social Networks_dark.jpg"), + alt: "تعامل با شبکههای اجتماعی", }, "item-4": { - image: "/assets/main-pic/4section/Process Automation.jpg", - alt: "Process automation", + image: sectionImage("Process Automation.jpg"), + imageDark: sectionImage("Process Automation-dark.jpg"), + alt: "اتوماسیون فرآیندها", }, }; @@ -113,33 +120,48 @@ export default function Features() { - - -diff --git a/components/hero-section.tsx b/components/hero-section.tsx index 2061510..83f6005 100644 --- a/components/hero-section.tsx +++ b/components/hero-section.tsx @@ -72,9 +72,11 @@ export default function HeroSection() {-- +- -- ++ +-+++ ++ ++ + @@ -121,9 +123,7 @@ export default function HeroSection() { as="p" className="mx-auto mt-8 max-w-2xl text-balance text-base md:text-lg leading-relaxed tracking-normal" > - دادهها، کاربران و فرآیندهای شما را از هر پلتفرمی (وب، CRM، تلگرام، سرویسهای سفارشی) بهصورت سریع، دقیق و امن یکپارچه کنید. - - فرآیندهای کسبوکاری شما با سرعت به هم متصل میشوند. + با ابزارهای یکپارچهسازی، اتوماسیون و ارتباطات ما، دادهها، کاربران و فرآیندهای کسبوکارتان را از هر سیستم یا پلتفرمی، از وبسایت و CRM تا تلگرام و سرویسهای سفارشی، دقیق، سریع و قابل اعتماد به هم متصل کنید. - + مشاهده راهکارها @@ -172,78 +168,87 @@ export default function HeroSection() { ...transitionVariants, }} > - -); } - diff --git a/lib/blog-blocks.ts b/lib/blog-blocks.ts index 2ae395e..e0e7e2b 100644 --- a/lib/blog-blocks.ts +++ b/lib/blog-blocks.ts @@ -34,7 +34,7 @@ export interface TipBlockPayload { content: string; } -/** Payload بلاک code — بعداً پیادهسازی میشود. */ +/** Payload بلاک code؛ بعداً پیادهسازی میشود. */ // export interface CodeBlockPayload { ... } /** یونیون همهٔ payloadها برای تایپامن رندر. */ @@ -122,6 +122,195 @@ function extractAccordionPayload( return { title: "", items }; } +const FAQ_HEADING_RE = /س[وؤ]الات\s*متداول|^faq$/i; + +function isFaqHeading(text: string): boolean { + return FAQ_HEADING_RE.test(text.replace(/<[^>]*>/g, "").trim()); +} + +function isDescendantOfExcluded(el: Element, excluded: Set-+ +++ {/* Glow effect */} + + + ++++ + - -@@ -174,10 +174,10 @@ export default function Pricing() { ما آمادهایم تا بر اساس نیازهای شما بهترین پیشنهاد را ارائه دهیم.- - اتصال به سایر سیستم ها - -- + ++-+ یکپارچه با ابزارهای محبوب +
++ اتصال به سایر سیستمها +
-diff --git a/components/login-form.tsx b/components/login-form.tsx index a772f59..2046779 100644 --- a/components/login-form.tsx +++ b/components/login-form.tsx @@ -61,10 +61,7 @@ export function LoginForm({ />+ + ++ ++ + - -+- - - + + + مشاهده همه یکپارچهسازیها ++ - @@ -72,11 +69,7 @@ export function LoginForm({ یا ادامه با+ ورود - + -diff --git a/components/scroll-to-top.tsx b/components/scroll-to-top.tsx index 157226c..a05e2cf 100644 --- a/components/scroll-to-top.tsx +++ b/components/scroll-to-top.tsx @@ -41,11 +41,11 @@ export function ScrollToTop({ className }: { className?: string }) { )} >+ شروع گفتگو با تیم -+ درباره ما diff --git a/components/theme-toggle.tsx b/components/theme-toggle.tsx index 38f8aca..7355ae3 100644 --- a/components/theme-toggle.tsx +++ b/components/theme-toggle.tsx @@ -18,8 +18,7 @@ export function ThemeToggle() { return ( @@ -30,9 +29,8 @@ export function ThemeToggle() { return ( setTheme(theme === 'dark' ? 'light' : 'dark')} - className="size-9 rounded-lg transition-all duration-300 hover:bg-muted" aria-label="Toggle theme" > diff --git a/components/ui/border-beam.tsx b/components/ui/border-beam.tsx index 6252e92..0a1d3c9 100644 --- a/components/ui/border-beam.tsx +++ b/components/ui/border-beam.tsx @@ -57,7 +57,7 @@ export const BorderBeam = ({ delay = 0, duration = 6, colorFrom = "#FCC61D", - colorTo = "#0046FF", + colorTo = "#01796F", transition, style, reverse = false, diff --git a/components/ui/button.tsx b/components/ui/button.tsx index 8717dd5..0f10405 100644 --- a/components/ui/button.tsx +++ b/components/ui/button.tsx @@ -5,25 +5,27 @@ import { cva, type VariantProps } from "class-variance-authority" import { cn } from "@/lib/utils" const buttonVariants = cva( - "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", { variants: { variant: { - default: "bg-primary text-primary-foreground hover:bg-accent hover:text-foreground dark:hover:bg-[#FCC61D] dark:hover:text-foreground transition-colors", + default: + "bg-primary text-primary-foreground hover:bg-accent hover:text-foreground dark:hover:bg-[#FCC61D] dark:hover:text-foreground", destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", outline: - "border bg-background shadow-xs hover:bg-accent hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-[#FCC61D] dark:hover:text-foreground transition-colors", + "border border-primary text-primary bg-transparent hover:bg-accent hover:text-foreground hover:border-accent dark:bg-input/30 dark:border-input dark:text-foreground dark:hover:bg-[#FCC61D] dark:hover:text-foreground", secondary: - "bg-secondary text-secondary-foreground hover:bg-accent hover:text-foreground dark:hover:bg-[#FCC61D] dark:hover:text-foreground transition-colors", + "bg-secondary text-secondary-foreground hover:bg-accent hover:text-foreground dark:hover:bg-[#FCC61D] dark:hover:text-foreground", ghost: - "hover:bg-accent hover:text-foreground dark:hover:bg-[#FCC61D] dark:hover:text-foreground transition-colors", - link: "text-primary underline-offset-4 hover:text-accent hover:underline dark:hover:text-[#FCC61D] transition-colors", + "hover:bg-accent hover:text-foreground dark:hover:bg-[#FCC61D] dark:hover:text-foreground", + link: + "text-primary underline-offset-4 hover:text-accent hover:underline dark:hover:text-[#FCC61D]", }, size: { - default: "h-9 px-4 py-2 has-[>svg]:px-3", - sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5", - lg: "h-10 rounded-md px-6 has-[>svg]:px-4", + default: "h-9 px-4 text-sm has-[>svg]:px-3", + sm: "h-8 gap-1.5 px-3 text-sm has-[>svg]:px-2.5", + lg: "h-11 px-8 text-base has-[>svg]:px-6", icon: "size-9", "icon-sm": "size-8", "icon-lg": "size-10", @@ -51,7 +53,7 @@ function Button({ return ( ) diff --git a/components/ui/logo-item.tsx b/components/ui/logo-item.tsx index 87a7fdc..3e5dca9 100644 --- a/components/ui/logo-item.tsx +++ b/components/ui/logo-item.tsx @@ -6,26 +6,44 @@ interface LogoItemProps { alt: string; size?: "sm" | "md" | "lg"; className?: string; + iconClassName?: string; } -const sizeMap = { - sm: "h-8", - md: "h-10", - lg: "h-12", +const iconSizeMap = { + sm: "size-6", + md: "size-7", + lg: "size-8", }; -export function LogoItem({ icon, alt, size = "md", className }: LogoItemProps) { +const tileSizeMap = { + sm: "size-12", + md: "size-14", + lg: "size-16", +}; + +export function LogoItem({ + icon, + alt, + size = "md", + className, + iconClassName, +}: LogoItemProps) { return ( - -+ + > + + ): boolean { + let parent = el.parent; + while (parent && isElement(parent)) { + if (excluded.has(parent)) return true; + parent = parent.parent; + } + return false; +} + +function nextElementSibling(node: unknown): Element | null { + let next = (node as { next?: unknown })?.next; + while (next) { + if (isElement(next)) return next; + next = (next as { next?: unknown }).next; + } + return null; +} + +function collectH3QuestionPairs( + $: cheerio.CheerioAPI, + $container: cheerio.Cheerio , + items: { question: string; answer: string }[] +): void { + $container.find("> h3").each((_: number, h3: Element) => { + const question = $(h3).text().trim(); + const answers: string[] = []; + let next = nextElementSibling(h3); + while (next) { + const tag = next.tagName?.toLowerCase(); + if (tag === "h2" || tag === "h3") break; + if (tag === "p") { + const html = $(next).html()?.trim(); + if (html) answers.push(html); + next = nextElementSibling(next); + continue; + } + break; + } + const answer = answers.join(""); + if (question || answer) items.push({ question, answer }); + }); +} + +/** + * استخراج سوالات متداول از گروه alignwide وردپرس (چیدمان ستونی h3 + p). + */ +function extractFaqGroupPayload( + $: cheerio.CheerioAPI, + el: Element +): CollapseBlockPayload | null { + const $el = $(el); + const $h2 = $el.children("h2").first(); + if (!$h2.length || !isFaqHeading($h2.text())) return null; + + const title = $h2.text().trim(); + const items: { question: string; answer: string }[] = []; + + $el.find(".wp-block-column").each((_: number, col: Element) => { + const $col = $(col); + const question = $col.find("h3").first().text().trim(); + const $p = $col.find("p").first(); + const answer = ($p.html() ?? "").trim(); + if (question || answer) items.push({ question, answer }); + }); + + if (!items.length) collectH3QuestionPairs($, $el, items); + + return items.length ? { title, items } : null; +} + +type FaqBlockEntry = { + el: Element; + blockType: "collapse"; + blockId: number; + payload: CollapseBlockPayload; + /** برای FAQهای بدون wrapper؛ همهٔ نودهای h2 + h3 + p حذف میشوند. */ + removeNodes?: Element[]; +}; + +/** + * کشف بخشهای «سوالات متداول» که بهصورت h2 + جفتهای h3/p در جریان محتوا آمدهاند. + */ +function discoverStandaloneFaqSections( + $: cheerio.CheerioAPI, + excluded: Set +): FaqBlockEntry[] { + const results: FaqBlockEntry[] = []; + + $("h2") + .toArray() + .filter(isElement) + .forEach((h2El) => { + if (excluded.has(h2El) || isDescendantOfExcluded(h2El, excluded)) return; + if (!isFaqHeading($(h2El).text())) return; + if ($(h2El).closest("div.wp-block-group.alignwide").length) return; + + const title = $(h2El).text().trim(); + const items: { question: string; answer: string }[] = []; + const removeNodes: Element[] = [h2El]; + + let next = nextElementSibling(h2El); + while (next) { + const tag = next.tagName?.toLowerCase(); + if (tag === "h2") break; + + if (tag === "h3") { + const question = $(next).text().trim(); + removeNodes.push(next); + const answers: string[] = []; + let after = nextElementSibling(next); + while (after) { + const afterTag = after.tagName?.toLowerCase(); + if (afterTag === "h2" || afterTag === "h3") break; + if (afterTag === "p") { + const html = $(after).html()?.trim(); + removeNodes.push(after); + if (html) answers.push(html); + after = nextElementSibling(after); + continue; + } + break; + } + if (question || answers.length) { + items.push({ question, answer: answers.join("") }); + } + next = nextElementSibling(removeNodes[removeNodes.length - 1]); + continue; + } + + if (tag === "p" && !$(next).text().trim()) { + removeNodes.push(next); + next = nextElementSibling(next); + continue; + } + + break; + } + + if (items.length) { + results.push({ + el: h2El, + blockType: "collapse", + blockId: -1, + payload: { title, items }, + removeNodes, + }); + } + }); + + return results; +} + +function discoverFaqCollapseBlocks( + $: cheerio.CheerioAPI, + excluded: Set , + blocksByType: Record +): FaqBlockEntry[] { + const faqEntries: FaqBlockEntry[] = []; + + $("div.wp-block-group.alignwide") + .toArray() + .filter(isElement) + .forEach((el) => { + if (excluded.has(el) || isDescendantOfExcluded(el, excluded)) return; + const payload = extractFaqGroupPayload($, el); + if (!payload) return; + const blockId = blocksByType.collapse.length; + blocksByType.collapse.push(payload); + faqEntries.push({ el, blockType: "collapse", blockId, payload }); + excluded.add(el); + }); + + for (const entry of discoverStandaloneFaqSections($, excluded)) { + const blockId = blocksByType.collapse.length; + blocksByType.collapse.push(entry.payload); + faqEntries.push({ ...entry, blockId }); + excluded.add(entry.el); + for (const node of entry.removeNodes ?? []) excluded.add(node); + } + + return faqEntries; +} + function extractBlockquotePayload( $: cheerio.CheerioAPI, el: Element @@ -236,6 +425,7 @@ export function discoverBlocks(html: string): DiscoveredContent { blockType: BlockType; blockId: number; payload: BlockPayload; + removeNodes?: Element[]; }; const entries: BlockEntry[] = []; const blocksByType: Record = { @@ -261,15 +451,24 @@ export function discoverBlocks(html: string): DiscoveredContent { } } + const excluded = new Set(entries.map((entry) => entry.el)); + entries.push( + ...discoverFaqCollapseBlocks($, excluded, blocksByType) + ); + // مرتبسازی بر اساس ترتیب در سند (از آخر به اول جایگزین میکنیم تا ایندکسها جابجا نشوند) entries.sort((a, b) => orderMap.get(a.el)! - orderMap.get(b.el)!); // جایگزینی با placeholder از آخر به اول for (let i = entries.length - 1; i >= 0; i--) { - const { el, blockType, blockId } = entries[i]; - $(el).replaceWith( - `` - ); + const { el, blockType, blockId, removeNodes } = entries[i]; + const placeholder = ``; + if (removeNodes?.length) { + $(el).before(placeholder); + for (const node of removeNodes) $(node).remove(); + } else { + $(el).replaceWith(placeholder); + } } const htmlWithPlaceholders = $.html() ?? html; diff --git a/lib/blog-utils.ts b/lib/blog-utils.ts index 944bf30..e98a6fb 100644 --- a/lib/blog-utils.ts +++ b/lib/blog-utils.ts @@ -3,9 +3,21 @@ import { mergeHeadingIdsIntoContentSegments, type ContentSegment, } from "@/lib/blog-blocks"; +import { getFullSizeWpImageUrl } from "@/lib/wp-api"; export type { ContentSegment } from "@/lib/blog-blocks"; +const AUTHOR_NAME_OVERRIDES: Record = { + adm: "احمدرضا بدیعی", +}; + +/** Maps WordPress author display names to site-facing labels. */ +export function formatAuthorName(name: string | null | undefined): string | null { + if (!name?.trim()) return null; + const normalized = name.trim().toLowerCase(); + return AUTHOR_NAME_OVERRIDES[normalized] ?? name.trim(); +} + /** * Creates a URL-safe slug from heading text (strip HTML, normalize, Persian-friendly). */ @@ -43,7 +55,9 @@ export function parseContentHeadings(html: string): { toc: TocItem[]; segments: ContentSegment[]; } { - const { htmlWithPlaceholders, segments: rawSegments } = discoverBlocks(html); + const { htmlWithPlaceholders, segments: rawSegments } = discoverBlocks( + enhanceContentImages(html) + ); usedIds.clear(); const toc: TocItem[] = []; @@ -94,3 +108,18 @@ export function getReadingTimeMinutes(html: string): number { return Math.max(1, Math.ceil(wordCount / WPM)); } +/** Use full-size WordPress uploads and drop responsive srcset that picks smaller variants. */ +export function enhanceContentImages(html: string): string { + return html.replace(/ ]*)>/gi, (tag, attrs: string) => { + let next = attrs + .replace(/\s+srcset=(["'])[^"']*\1/gi, "") + .replace(/\s+sizes=(["'])[^"']*\1/gi, "") + .replace(/\s+src=(["'])([^"']+)\1/gi, (_m, quote: string, src: string) => { + return ` src=${quote}${getFullSizeWpImageUrl(src)}${quote}`; + }); + if (!/\bloading=/i.test(next)) next += ' loading="lazy"'; + if (!/\bdecoding=/i.test(next)) next += ' decoding="async"'; + return `
`; + }); +} + diff --git a/lib/wp-api.ts b/lib/wp-api.ts index 8927f80..c9069fb 100644 --- a/lib/wp-api.ts +++ b/lib/wp-api.ts @@ -44,16 +44,22 @@ export interface WpPost { }; } -/** Returns thumbnail URL for list/card (medium) or full for single post. */ +/** WordPress scaled filenames: photo-1024x768.jpg → photo.jpg */ +export function getFullSizeWpImageUrl(url: string): string { + return url.replace(/-\d+x\d+(?=\.(jpe?g|png|gif|webp|avif)(\?|$))/i, ""); +} + +/** Returns thumbnail URL for list/card (medium) or full original for single post. */ export function getFeaturedImageUrl( post: WpPost, size: "medium" | "medium_large" | "full" = "medium" ): string | null { const media = post._embedded?.["wp:featuredmedia"]?.[0]; if (!media?.source_url) return null; + if (size === "full") return media.source_url; const sizes = media.media_details?.sizes; if (sizes?.[size]?.source_url) return sizes[size].source_url; - if (size !== "full" && sizes?.medium?.source_url) return sizes.medium.source_url; + if (sizes?.medium?.source_url) return sizes.medium.source_url; return media.source_url; } diff --git a/next.config.ts b/next.config.ts index 5b6731f..acbd81f 100644 --- a/next.config.ts +++ b/next.config.ts @@ -6,6 +6,8 @@ const nextConfig: NextConfig = { globalNotFound: true, }, images: { + qualities: [100, 75], + deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840], remotePatterns: [ { protocol: "https", diff --git a/package-lock.json b/package-lock.json index bb36d7c..309cd11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,11 +37,13 @@ "@radix-ui/react-toggle-group": "^1.1.11", "@radix-ui/react-tooltip": "^1.2.8", "cheerio": "^1.0.0", + "cheerio": "^1.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "date-fns": "^4.1.0", "date-fns-jalali": "^4.1.0-0", + "date-fns-jalali": "^4.1.0-0", "embla-carousel-react": "^8.6.0", "input-otp": "^1.4.2", "lucide-react": "^0.555.0", @@ -64,6 +66,7 @@ "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", + "baseline-browser-mapping": "^2.9.19", "eslint": "^9", "eslint-config-next": "16.0.6", "tailwindcss": "^4", @@ -4232,9 +4235,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.32", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.32.tgz", - "integrity": "sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==", + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4247,6 +4250,12 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -4564,6 +4573,34 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -4929,6 +4966,61 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -4999,6 +5091,19 @@ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" } }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, "node_modules/enhanced-resolve": { "version": "5.18.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", @@ -5025,6 +5130,18 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/es-abstract": { "version": "1.24.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", @@ -6196,6 +6313,49 @@ "node": ">=0.10.0" } }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -7436,6 +7596,18 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -7688,6 +7860,55 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -8218,6 +8439,12 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, "node_modules/scheduler": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", @@ -9167,6 +9394,28 @@ "node": ">=18" } }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 40f8b72..41d7112 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "lint": "eslint" }, "dependencies": { - "cheerio": "^1.0.0", "@hookform/resolvers": "^5.2.2", "@iconify/react": "^6.0.2", "@radix-ui/react-accordion": "^1.2.12", @@ -38,6 +37,7 @@ "@radix-ui/react-toggle": "^1.1.10", "@radix-ui/react-toggle-group": "^1.1.11", "@radix-ui/react-tooltip": "^1.2.8", + "cheerio": "^1.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", @@ -65,6 +65,7 @@ "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", + "baseline-browser-mapping": "^2.9.19", "eslint": "^9", "eslint-config-next": "16.0.6", "tailwindcss": "^4", diff --git a/public/assets/Echosystem.png b/public/assets/Echosystem.png deleted file mode 100644 index 0d4015f..0000000 Binary files a/public/assets/Echosystem.png and /dev/null differ diff --git a/public/assets/Feeplogo.svg b/public/assets/Feeplogo.svg deleted file mode 100644 index cdb068c..0000000 --- a/public/assets/Feeplogo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - \ No newline at end of file diff --git a/public/assets/Interaction with Social networks.png b/public/assets/Interaction with Social networks.png deleted file mode 100644 index 6115d4f..0000000 Binary files a/public/assets/Interaction with Social networks.png and /dev/null differ diff --git a/public/assets/Powerful management panels.png b/public/assets/Powerful management panels.png deleted file mode 100644 index f7052dc..0000000 Binary files a/public/assets/Powerful management panels.png and /dev/null differ diff --git a/public/assets/Process automation.png b/public/assets/Process automation.png deleted file mode 100644 index 341d113..0000000 Binary files a/public/assets/Process automation.png and /dev/null differ diff --git a/public/assets/Systems integration.jpg b/public/assets/Systems integration.jpg deleted file mode 100644 index 1c4c9e2..0000000 Binary files a/public/assets/Systems integration.jpg and /dev/null differ diff --git a/public/assets/flogo-1.png b/public/assets/flogo-1.png deleted file mode 100644 index 5a66b31..0000000 Binary files a/public/assets/flogo-1.png and /dev/null differ diff --git a/public/assets/hero-integration.png.png b/public/assets/hero-integration.png.png deleted file mode 100644 index 8b6a2cd..0000000 Binary files a/public/assets/hero-integration.png.png and /dev/null differ diff --git a/public/assets/integrate.png b/public/assets/integrate.png deleted file mode 100644 index 02d8407..0000000 Binary files a/public/assets/integrate.png and /dev/null differ diff --git a/public/assets/integrationSoftware.png b/public/assets/integrationSoftware.png deleted file mode 100644 index 69d6726..0000000 Binary files a/public/assets/integrationSoftware.png and /dev/null differ diff --git a/public/assets/main-pic/1.jpg b/public/assets/main-pic/1.jpg new file mode 100644 index 0000000..5e06f7d Binary files /dev/null and b/public/assets/main-pic/1.jpg differ diff --git a/public/assets/main-pic/1dark.jpg b/public/assets/main-pic/1dark.jpg new file mode 100644 index 0000000..216361d Binary files /dev/null and b/public/assets/main-pic/1dark.jpg differ diff --git a/public/assets/main-pic/4section/Interaction with Social Networks.jpg b/public/assets/main-pic/4section/Interaction with Social Networks.jpg index 88c2edd..1b7d8ff 100644 Binary files a/public/assets/main-pic/4section/Interaction with Social Networks.jpg and b/public/assets/main-pic/4section/Interaction with Social Networks.jpg differ diff --git a/public/assets/main-pic/4section/Interaction with Social Networks_dark.jpg b/public/assets/main-pic/4section/Interaction with Social Networks_dark.jpg new file mode 100644 index 0000000..ea12876 Binary files /dev/null and b/public/assets/main-pic/4section/Interaction with Social Networks_dark.jpg differ diff --git a/public/assets/main-pic/4section/Powerful Management panels-dark.jpg b/public/assets/main-pic/4section/Powerful Management panels-dark.jpg new file mode 100644 index 0000000..16d6b75 Binary files /dev/null and b/public/assets/main-pic/4section/Powerful Management panels-dark.jpg differ diff --git a/public/assets/main-pic/4section/Powerful Management panels.jpg b/public/assets/main-pic/4section/Powerful Management panels.jpg index e9595f0..6fb9d3b 100644 Binary files a/public/assets/main-pic/4section/Powerful Management panels.jpg and b/public/assets/main-pic/4section/Powerful Management panels.jpg differ diff --git a/public/assets/main-pic/4section/Process Automation-dark.jpg b/public/assets/main-pic/4section/Process Automation-dark.jpg new file mode 100644 index 0000000..3d2a702 Binary files /dev/null and b/public/assets/main-pic/4section/Process Automation-dark.jpg differ diff --git a/public/assets/main-pic/4section/Process Automation.jpg b/public/assets/main-pic/4section/Process Automation.jpg index 52657b8..66fb193 100644 Binary files a/public/assets/main-pic/4section/Process Automation.jpg and b/public/assets/main-pic/4section/Process Automation.jpg differ diff --git a/public/assets/main-pic/4section/Systems Integration-dark.jpg b/public/assets/main-pic/4section/Systems Integration-dark.jpg new file mode 100644 index 0000000..e13271a Binary files /dev/null and b/public/assets/main-pic/4section/Systems Integration-dark.jpg differ diff --git a/public/assets/main-pic/4section/Systems Integration.jpg b/public/assets/main-pic/4section/Systems Integration.jpg index 03ae414..32741ff 100644 Binary files a/public/assets/main-pic/4section/Systems Integration.jpg and b/public/assets/main-pic/4section/Systems Integration.jpg differ diff --git a/public/assets/main-pic/intelligent-workflow-control-center-dark.jpg b/public/assets/main-pic/intelligent-workflow-control-center-dark.jpg new file mode 100644 index 0000000..358ede8 Binary files /dev/null and b/public/assets/main-pic/intelligent-workflow-control-center-dark.jpg differ diff --git a/public/assets/main-pic/intelligent-workflow-control-center.jpg b/public/assets/main-pic/intelligent-workflow-control-center.jpg new file mode 100644 index 0000000..479d49a Binary files /dev/null and b/public/assets/main-pic/intelligent-workflow-control-center.jpg differ diff --git a/public/assets/night-background.webp b/public/assets/night-background.webp deleted file mode 100644 index 7516af8..0000000 Binary files a/public/assets/night-background.webp and /dev/null differ diff --git a/public/favicon.svg b/public/favicon.svg index 8a567dc..f8d98ee 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,19 +1,28 @@ diff --git a/yarn.lock b/yarn.lock index d5ae871..513234a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,6 +21,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz" integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== +"@babel/core@^7.0.0", "@babel/core@^7.24.4": "@babel/core@^7.0.0", "@babel/core@^7.24.4": version "7.28.5" resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz" @@ -171,9 +172,11 @@ dependencies: tslib "^2.4.0" +"@emnapi/wasi-threads@1.1.0": "@emnapi/wasi-threads@1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz" + resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz" integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== dependencies: tslib "^2.4.0" @@ -391,6 +394,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": "@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" @@ -485,6 +489,7 @@ "@radix-ui/react-use-previous" "1.1.1" "@radix-ui/react-use-size" "1.1.1" +"@radix-ui/react-collapsible@^1.1.12", "@radix-ui/react-collapsible@1.1.12": "@radix-ui/react-collapsible@^1.1.12", "@radix-ui/react-collapsible@1.1.12": version "1.1.12" resolved "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz" @@ -509,6 +514,7 @@ "@radix-ui/react-primitive" "2.1.3" "@radix-ui/react-slot" "1.2.3" +"@radix-ui/react-compose-refs@^1.1.1", "@radix-ui/react-compose-refs@1.1.2": "@radix-ui/react-compose-refs@^1.1.1", "@radix-ui/react-compose-refs@1.1.2": version "1.1.2" resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz" @@ -536,6 +542,7 @@ resolved "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.3.tgz" integrity sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw== +"@radix-ui/react-dialog@^1.1.1", "@radix-ui/react-dialog@^1.1.15", "@radix-ui/react-dialog@^1.1.6", "@radix-ui/react-dialog@1.1.15": "@radix-ui/react-dialog@^1.1.1", "@radix-ui/react-dialog@^1.1.15", "@radix-ui/react-dialog@^1.1.6", "@radix-ui/react-dialog@1.1.15": version "1.1.15" resolved "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz" @@ -614,6 +621,7 @@ "@radix-ui/react-primitive" "2.1.3" "@radix-ui/react-use-controllable-state" "1.2.2" +"@radix-ui/react-id@^1.1.0", "@radix-ui/react-id@1.1.1": "@radix-ui/react-id@^1.1.0", "@radix-ui/react-id@1.1.1": version "1.1.1" resolved "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz" @@ -741,6 +749,7 @@ "@radix-ui/react-compose-refs" "1.1.2" "@radix-ui/react-use-layout-effect" "1.1.1" +"@radix-ui/react-primitive@^2.0.2", "@radix-ui/react-primitive@2.1.3": "@radix-ui/react-primitive@^2.0.2", "@radix-ui/react-primitive@2.1.3": version "2.1.3" resolved "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz" @@ -867,6 +876,13 @@ dependencies: "@radix-ui/react-compose-refs" "1.1.2" +"@radix-ui/react-slot@^1.2.4", "@radix-ui/react-slot@1.2.4": + version "1.2.4" + resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz" + integrity sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA== + dependencies: + "@radix-ui/react-compose-refs" "1.1.2" + "@radix-ui/react-slot@1.2.3": version "1.2.3" resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz" @@ -914,6 +930,7 @@ "@radix-ui/react-toggle" "1.1.10" "@radix-ui/react-use-controllable-state" "1.2.2" +"@radix-ui/react-toggle@^1.1.10", "@radix-ui/react-toggle@1.1.10": "@radix-ui/react-toggle@^1.1.10", "@radix-ui/react-toggle@1.1.10": version "1.1.10" resolved "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz" @@ -1075,9 +1092,11 @@ postcss "^8.4.41" tailwindcss "4.1.17" +"@tybys/wasm-util@^0.10.0": "@tybys/wasm-util@^0.10.0": version "0.10.1" resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz" + resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz" integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== dependencies: tslib "^2.4.0" @@ -1155,11 +1174,13 @@ dependencies: undici-types "~6.21.0" +"@types/react-dom@*", "@types/react-dom@^19": "@types/react-dom@*", "@types/react-dom@^19": version "19.2.3" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz" integrity sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ== +"@types/react@*", "@types/react@^19", "@types/react@^19.2.0": "@types/react@*", "@types/react@^19", "@types/react@^19.2.0": version "19.2.7" resolved "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz" @@ -1182,6 +1203,7 @@ natural-compare "^1.4.0" ts-api-utils "^2.1.0" +"@typescript-eslint/parser@^8.48.0", "@typescript-eslint/parser@8.48.0": "@typescript-eslint/parser@^8.48.0", "@typescript-eslint/parser@8.48.0": version "8.48.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.0.tgz" @@ -1210,6 +1232,7 @@ "@typescript-eslint/types" "8.48.0" "@typescript-eslint/visitor-keys" "8.48.0" +"@typescript-eslint/tsconfig-utils@^8.48.0", "@typescript-eslint/tsconfig-utils@8.48.0": "@typescript-eslint/tsconfig-utils@^8.48.0", "@typescript-eslint/tsconfig-utils@8.48.0": version "8.48.0" resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.0.tgz" @@ -1226,6 +1249,7 @@ debug "^4.3.4" ts-api-utils "^2.1.0" +"@typescript-eslint/types@^8.48.0", "@typescript-eslint/types@8.48.0": "@typescript-eslint/types@^8.48.0", "@typescript-eslint/types@8.48.0": version "8.48.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.0.tgz" @@ -1274,6 +1298,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.15.0: "acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.15.0: version "8.15.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" @@ -1468,6 +1493,7 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" +browserslist@^4.24.0, "browserslist@>= 4.21.0": browserslist@^4.24.0, "browserslist@>= 4.21.0": version "4.28.0" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz" @@ -1626,11 +1652,28 @@ css-what@^6.1.0: resolved "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz" integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== +css-select@^5.1.0: + version "5.2.2" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz" + integrity sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-what@^6.1.0: + version "6.2.2" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz" + integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== + csstype@^3.0.2, csstype@^3.2.2: version "3.2.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz" integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== +d3-array@^3.1.6, "d3-array@2 - 3", "d3-array@2.10.0 - 3": d3-array@^3.1.6, "d3-array@2 - 3", "d3-array@2.10.0 - 3": version "3.2.4" resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" @@ -1653,6 +1696,7 @@ d3-ease@^3.0.1: resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== +d3-interpolate@^3.0.1, "d3-interpolate@1.2.0 - 3": d3-interpolate@^3.0.1, "d3-interpolate@1.2.0 - 3": version "3.0.1" resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" @@ -1690,6 +1734,7 @@ d3-shape@^3.1.0: dependencies: d3-time "1 - 3" +d3-time@^3.0.0, "d3-time@1 - 3", "d3-time@2.1.1 - 3": d3-time@^3.0.0, "d3-time@1 - 3", "d3-time@2.1.1 - 3": version "3.1.0" resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" @@ -1841,6 +1886,36 @@ domutils@^3.0.1, domutils@^3.2.2: domelementtype "^2.3.0" domhandler "^5.0.3" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1, domutils@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz" + integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + dunder-proto@^1.0.0, dunder-proto@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" @@ -1909,6 +1984,21 @@ entities@^7.0.1: resolved "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz" integrity sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA== +entities@^4.2.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +entities@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz" + integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== + +entities@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz" + integrity sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA== + es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0: version "1.24.0" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz" @@ -2088,6 +2178,7 @@ eslint-module-utils@^2.12.1: dependencies: debug "^3.2.7" +eslint-plugin-import@*, eslint-plugin-import@^2.32.0: eslint-plugin-import@*, eslint-plugin-import@^2.32.0: version "2.32.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz" @@ -2187,6 +2278,7 @@ eslint-visitor-keys@^4.2.1: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz" integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9, eslint@>=9.0.0: eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9, eslint@>=9.0.0: version "9.39.1" resolved "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz" @@ -2460,6 +2552,11 @@ globals@16.4.0: resolved "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz" integrity sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw== +globals@16.4.0: + version "16.4.0" + resolved "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz" + integrity sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw== + globalthis@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz" @@ -2809,6 +2906,7 @@ iterator.prototype@^1.1.4: has-symbols "^1.1.0" set-function-name "^2.0.2" +jiti@*, jiti@^2.6.1: jiti@*, jiti@^2.6.1: version "2.6.1" resolved "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz" @@ -3077,6 +3175,13 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" @@ -3207,6 +3312,28 @@ parse5@^7.0.0, parse5@^7.3.0: dependencies: entities "^6.0.0" +parse5-htmlparser2-tree-adapter@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz" + integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g== + dependencies: + domhandler "^5.0.3" + parse5 "^7.0.0" + +parse5-parser-stream@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz" + integrity sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow== + dependencies: + parse5 "^7.0.0" + +parse5@^7.0.0, parse5@^7.3.0: + version "7.3.0" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz" + integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== + dependencies: + entities "^6.0.0" + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" @@ -3232,6 +3359,7 @@ picomatch@^2.3.1: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +"picomatch@^3 || ^4", picomatch@^4.0.3: "picomatch@^3 || ^4", picomatch@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" @@ -3260,6 +3388,15 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -3293,6 +3430,7 @@ react-day-picker@^9.11.3: date-fns "^4.1.0" date-fns-jalali "^4.1.0-0" +"react-dom@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18 || ^19 || ^19.0.0-rc", "react-dom@^18.0.0 || ^19.0.0", "react-dom@^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react-dom@>=16.6.0, react-dom@>=16.8.0, react-dom@19.2.0: "react-dom@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18 || ^19 || ^19.0.0-rc", "react-dom@^18.0.0 || ^19.0.0", "react-dom@^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react-dom@>=16.6.0, react-dom@>=16.8.0, react-dom@19.2.0: version "19.2.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz" @@ -3300,6 +3438,7 @@ react-day-picker@^9.11.3: dependencies: scheduler "^0.27.0" +react-hook-form@^7.55.0, react-hook-form@^7.67.0: react-hook-form@^7.55.0, react-hook-form@^7.67.0: version "7.67.0" resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.67.0.tgz" @@ -3366,6 +3505,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" +"react@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^18 || ^19 || ^19.0.0-rc", "react@^18.0.0 || ^19.0.0", "react@^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react@^19.2.0, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0", react@>=16, react@>=16.6.0, react@>=16.8.0, react@19.2.0: "react@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^18 || ^19 || ^19.0.0-rc", "react@^18.0.0 || ^19.0.0", "react@^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react@^19.2.0, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0", react@>=16, react@>=16.6.0, react@>=16.8.0, react@19.2.0: version "19.2.0" resolved "https://registry.npmjs.org/react/-/react-19.2.0.tgz" @@ -3491,6 +3631,11 @@ safe-regex-test@^1.0.3, safe-regex-test@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + scheduler@^0.27.0: version "0.27.0" resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz" @@ -3511,6 +3656,17 @@ semver@^7.7.1: resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== +semver@^7.7.3: +semver@^7.6.0: + version "7.7.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + +semver@^7.7.1: + version "7.7.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + semver@^7.7.3: version "7.7.3" resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" @@ -3758,6 +3914,7 @@ tailwind-merge@^3.4.0: resolved "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz" integrity sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g== +tailwindcss@^4, tailwindcss@4.1.17: tailwindcss@^4, tailwindcss@4.1.17: version "4.1.17" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz" @@ -3875,6 +4032,7 @@ typescript-eslint@^8.46.0: "@typescript-eslint/typescript-estree" "8.48.0" "@typescript-eslint/utils" "8.48.0" +typescript@^5, typescript@>=3.3.1, typescript@>=4.8.4, "typescript@>=4.8.4 <6.0.0": typescript@^5, typescript@>=3.3.1, typescript@>=4.8.4, "typescript@>=4.8.4 <6.0.0": version "5.9.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz" @@ -4001,6 +4159,18 @@ whatwg-mimetype@^4.0.0: resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz" integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== +whatwg-encoding@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz" + integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz" + integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== + which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz"