-
-
-
+
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/attachments-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/attachments-section.tsx
index 0ac529c18..b55b87c47 100644
--- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/attachments-section.tsx
+++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/attachments-section.tsx
@@ -1,12 +1,12 @@
"use client";
import { formatFileSize } from "@/shared/lib/file-utils";
+import { SectionCollapsible } from "@/shared/ui";
import { useDownloadAttachmentByAtflCd } from "@/entities/attach";
import type {
AtflMngClientResponseDto,
EsntlAtchFileMngTreeResponseDto,
} from "@/entities/fnrs-cnsltn";
-import { SectionCollapsible } from "@/widgets/pbadms-sprt";
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@common/components";
interface AttachmentsSectionProps {
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-form-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-form-section.tsx
index 751312ac6..759b1f0df 100644
--- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-form-section.tsx
+++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-form-section.tsx
@@ -3,10 +3,10 @@
import { useState } from "react";
import { Controller, useFormContext } from "react-hook-form";
+import { SectionCollapsible } from "@/shared/ui";
import { Field, FieldError, FieldGroup, FieldLabel, FieldSet } from "@/shared/ui/field";
import { findCodeLabel, useCodeList } from "@/entities/code";
import { type BnsApplyData, BnsPickerDialog } from "@/widgets/bns-picker";
-import { SectionCollapsible } from "@/widgets/pbadms-sprt";
import {
Button,
Checkbox,
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-section.tsx
index 939af68fd..48f14eceb 100644
--- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-section.tsx
+++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-section.tsx
@@ -1,7 +1,7 @@
"use client";
+import { SectionCollapsible } from "@/shared/ui";
import type { FnrsCnsltnMngResponseDto } from "@/entities/fnrs-cnsltn";
-import { SectionCollapsible } from "@/widgets/pbadms-sprt";
import { Table, TableCell, TableHead, TableHeader, TableRow } from "@common/components";
interface BasicInfoSectionProps {
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/business-cost-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/business-cost-section.tsx
index 285fe8bed..d880811b6 100644
--- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/business-cost-section.tsx
+++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/business-cost-section.tsx
@@ -2,9 +2,9 @@
import { useMemo } from "react";
+import { SectionCollapsible } from "@/shared/ui";
import type { BizCstTreeDto } from "@/entities/fnrs-cnsltn";
import { calcDiffPercent, fmtNumber, indentPx } from "@/widgets/pbadms-sprt";
-import { SectionCollapsible } from "@/widgets/pbadms-sprt";
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@common/components";
import { sortBizCstListByTreePath } from "../../lib/business-cost-utils";
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/business-scale-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/business-scale-section.tsx
index f8849cf8f..c1f5a28af 100644
--- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/business-scale-section.tsx
+++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/business-scale-section.tsx
@@ -1,8 +1,8 @@
"use client";
+import { SectionCollapsible } from "@/shared/ui";
import type { BizSclTreeDto } from "@/entities/fnrs-cnsltn";
import { fmtNumber, indentPx } from "@/widgets/pbadms-sprt";
-import { SectionCollapsible } from "@/widgets/pbadms-sprt";
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@common/components";
interface BusinessScaleSectionProps {
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/checklist-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/checklist-section.tsx
index 09aa48052..e50f5a6b8 100644
--- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/checklist-section.tsx
+++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/checklist-section.tsx
@@ -2,8 +2,8 @@
import { type Dispatch, type SetStateAction, useEffect, useMemo, useState } from "react";
+import { SectionCollapsible } from "@/shared/ui";
import type { CklstRvwRsltTreeDto } from "@/entities/fnrs-cnsltn";
-import { SectionCollapsible } from "@/widgets/pbadms-sprt";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@common/components";
import {
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/contact-info-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/contact-info-section.tsx
index 7443460e8..f5273fb33 100644
--- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/contact-info-section.tsx
+++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/contact-info-section.tsx
@@ -1,7 +1,7 @@
"use client";
+import { SectionCollapsible } from "@/shared/ui";
import type { FnrsCnsltnMngResponseDto } from "@/entities/fnrs-cnsltn";
-import { SectionCollapsible } from "@/widgets/pbadms-sprt";
import { Table, TableCell, TableHead, TableHeader, TableRow } from "@common/components";
interface ContactInfoSectionProps {
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/fnrs-shar-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/fnrs-shar-section.tsx
index 198261c41..ad83c53e4 100644
--- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/fnrs-shar-section.tsx
+++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/fnrs-shar-section.tsx
@@ -2,8 +2,9 @@
import { useMemo } from "react";
+import { SectionCollapsible } from "@/shared/ui";
import type { FnrsSharBizCstTreeDto } from "@/entities/fnrs-shar-se";
-import { fmtNumber, indentPx, SectionCollapsible } from "@/widgets/pbadms-sprt";
+import { fmtNumber, indentPx } from "@/widgets/pbadms-sprt";
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@common/components";
interface FnrsSharSectionProps {
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/tech-review-opinion-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/tech-review-opinion-section.tsx
index f8d416af1..bdbd4e622 100644
--- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/tech-review-opinion-section.tsx
+++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/tech-review-opinion-section.tsx
@@ -7,10 +7,10 @@ import { Paperclip } from "lucide-react";
import { PROXY_HOST } from "@/shared/config";
import { dayjs, getDefaultFileKey, useTus } from "@/shared/lib";
import { TextShimmer } from "@/shared/ui";
+import { SectionCollapsible } from "@/shared/ui";
import { Field, FieldLabel, FieldSet } from "@/shared/ui/field";
import { attachService } from "@/entities/attach";
import type { FnrsCnsltnRvwOpnnResponseDto } from "@/entities/fnrs-cnsltn";
-import { SectionCollapsible } from "@/widgets/pbadms-sprt";
import {
Button,
RadioGroup,
diff --git a/apps/as/src/pages/instl-sncn/ui/instl-view-page.tsx b/apps/as/src/pages/instl-sncn/ui/instl-view-page.tsx
index 094072f1a..88677bbf3 100644
--- a/apps/as/src/pages/instl-sncn/ui/instl-view-page.tsx
+++ b/apps/as/src/pages/instl-sncn/ui/instl-view-page.tsx
@@ -6,7 +6,7 @@ import { useUserStore } from "@/shared/lib";
import { ElaprDocPrgrsStatus } from "@/entities/elapr";
import { useInstlSncnDetail } from "@/entities/instl-sncn";
import { useRvwMnpwMngLoginUserList } from "@/entities/rvw-mnpw";
-import { SectionCollapsible, SupplementDemandSection } from "@/widgets/pbadms-sprt";
+import { SupplementDemandSection } from "@/widgets/pbadms-sprt";
import { Skeleton } from "@common/components";
import { needsRoleUser01AtrzResolve } from "../lib/button-config";
@@ -90,9 +90,7 @@ function InstlViewPage({ id }: InstlViewPageProps) {
-
-
-
+
-
-
-
+
diff --git a/apps/as/src/shared/ui/index.ts b/apps/as/src/shared/ui/index.ts
index 926342b84..577618146 100644
--- a/apps/as/src/shared/ui/index.ts
+++ b/apps/as/src/shared/ui/index.ts
@@ -1,4 +1,5 @@
export { NoData } from "./no-data";
export { PageLayout } from "./page-layout";
+export { SectionCollapsible } from "./section-collapsible";
export type { TextShimmerProps } from "./text-shimmer";
export { TEXT_SHIMMER_CLASS, TextShimmer } from "./text-shimmer";
diff --git a/apps/as/src/widgets/pbadms-sprt/ui/section-collapsible.tsx b/apps/as/src/shared/ui/section-collapsible.tsx
similarity index 96%
rename from apps/as/src/widgets/pbadms-sprt/ui/section-collapsible.tsx
rename to apps/as/src/shared/ui/section-collapsible.tsx
index 2410ff325..2d9d6f27e 100644
--- a/apps/as/src/widgets/pbadms-sprt/ui/section-collapsible.tsx
+++ b/apps/as/src/shared/ui/section-collapsible.tsx
@@ -1,37 +1,37 @@
-"use client";
-
-import type { ReactNode } from "react";
-
-import { ChevronDown } from "lucide-react";
-
-import { cn, Collapsible, CollapsibleContent, CollapsibleTrigger } from "@common/components";
-
-interface SectionCollapsibleProps {
- title: ReactNode;
- defaultOpen?: boolean;
- children: ReactNode;
-}
-
-function SectionCollapsible({ title, defaultOpen = true, children }: SectionCollapsibleProps) {
- return (
-
-
-
-
- {children}
-
- );
-}
-
-export { SectionCollapsible };
+"use client";
+
+import type { ReactNode } from "react";
+
+import { ChevronDown } from "lucide-react";
+
+import { cn, Collapsible, CollapsibleContent, CollapsibleTrigger } from "@common/components";
+
+interface SectionCollapsibleProps {
+ title: ReactNode;
+ defaultOpen?: boolean;
+ children: ReactNode;
+}
+
+function SectionCollapsible({ title, defaultOpen = true, children }: SectionCollapsibleProps) {
+ return (
+
+
+
+
+ {children}
+
+ );
+}
+
+export { SectionCollapsible };
diff --git a/apps/as/src/widgets/bns-picker/ui/bns-picker-dialog.tsx b/apps/as/src/widgets/bns-picker/ui/bns-picker-dialog.tsx
index a259c8aca..4153aec1a 100644
--- a/apps/as/src/widgets/bns-picker/ui/bns-picker-dialog.tsx
+++ b/apps/as/src/widgets/bns-picker/ui/bns-picker-dialog.tsx
@@ -12,12 +12,12 @@ import {
import { useDataTable } from "@/shared/lib";
import type { PageResponse } from "@/shared/model";
+import { SectionCollapsible } from "@/shared/ui";
import { NoData } from "@/shared/ui/no-data";
import type { CmCdAdstDstrComboResponseDto } from "@/entities/adstdstr";
import { useFindGugunCombo, useFindSidoCombo } from "@/entities/adstdstr";
import type { BnsDetailResponseDto, BnsListResponseDto, BnsSearchDto } from "@/entities/bns-if";
import { buildBnsSearchDto, useBnsDetail, useBnsList } from "@/entities/bns-if";
-import { SectionCollapsible } from "@/widgets/pbadms-sprt";
import {
Button,
Dialog,
diff --git a/apps/as/src/widgets/cnfm/ui/attachments.tsx b/apps/as/src/widgets/cnfm/ui/attachments.tsx
index dcd68209e..4a585d231 100644
--- a/apps/as/src/widgets/cnfm/ui/attachments.tsx
+++ b/apps/as/src/widgets/cnfm/ui/attachments.tsx
@@ -1,4 +1,5 @@
import React from "react";
+
import { formatFileSize } from "@/shared/lib/file-utils";
type EtcFile = {
diff --git a/apps/as/src/widgets/pbadms-sprt/index.ts b/apps/as/src/widgets/pbadms-sprt/index.ts
index 8f2c44b95..5b759af65 100644
--- a/apps/as/src/widgets/pbadms-sprt/index.ts
+++ b/apps/as/src/widgets/pbadms-sprt/index.ts
@@ -39,7 +39,6 @@ export {
type PbadmsTaskApplySelection,
} from "./ui/pbadms-task-apply-dialog";
export { PrivacyConsentSection } from "./ui/privacy-consent-section";
-export { SectionCollapsible } from "./ui/section-collapsible";
export {
SplmntDmndDialog,
type SplmntDmndDialogConfirmItem,
diff --git a/apps/as/src/widgets/pbadms-sprt/ui/attachments-form-section.tsx b/apps/as/src/widgets/pbadms-sprt/ui/attachments-form-section.tsx
index 03d812211..b4bce6b8a 100644
--- a/apps/as/src/widgets/pbadms-sprt/ui/attachments-form-section.tsx
+++ b/apps/as/src/widgets/pbadms-sprt/ui/attachments-form-section.tsx
@@ -9,6 +9,7 @@ import { ENDPOINT } from "@/shared/config";
import { useTus } from "@/shared/lib";
import type { AtflMngClientResponseDto, EsntlAtchFileMngTreeResponseDto } from "@/shared/model";
import { TextShimmer } from "@/shared/ui";
+import { SectionCollapsible } from "@/shared/ui";
import { attachService } from "@/entities/attach";
import { useEsntlAtchFileMngTree } from "@/entities/esntl";
import {
@@ -29,9 +30,7 @@ import {
type FieldPrefix,
isEtcFileKey,
toFileAccept,
-} from "../lib/attachments-form-utils";
-
-import { SectionCollapsible } from "./section-collapsible";
+} from "../lib/attachments-form-utils";
interface AttachmentsFormData {
esntlAtchFileList: Array<{
diff --git a/apps/as/src/widgets/pbadms-sprt/ui/business-cost-form-section.tsx b/apps/as/src/widgets/pbadms-sprt/ui/business-cost-form-section.tsx
index 51d7a82a1..969a4613b 100644
--- a/apps/as/src/widgets/pbadms-sprt/ui/business-cost-form-section.tsx
+++ b/apps/as/src/widgets/pbadms-sprt/ui/business-cost-form-section.tsx
@@ -3,6 +3,7 @@
import { useEffect, useMemo } from "react";
import { Controller, useFormContext, useWatch } from "react-hook-form";
+import { SectionCollapsible } from "@/shared/ui";
import { Field } from "@/shared/ui/field";
import { useAcntgSeMngTree } from "@/entities/acntg";
import {
@@ -17,9 +18,7 @@ import {
} from "@common/components";
import { buildAcntgCostItems, recalculateBizCstTotals } from "../lib/business-cost-form-utils";
-import { calcDiffPercent } from "../lib/format-utils";
-
-import { SectionCollapsible } from "./section-collapsible";
+import { calcDiffPercent } from "../lib/format-utils";
interface BusinessCostFormData {
bizCstList: Array<{
diff --git a/apps/as/src/widgets/pbadms-sprt/ui/business-scale-form-section.tsx b/apps/as/src/widgets/pbadms-sprt/ui/business-scale-form-section.tsx
index 63698dd08..2bee5e104 100644
--- a/apps/as/src/widgets/pbadms-sprt/ui/business-scale-form-section.tsx
+++ b/apps/as/src/widgets/pbadms-sprt/ui/business-scale-form-section.tsx
@@ -3,6 +3,7 @@
import { useEffect, useMemo } from "react";
import { Controller, useFormContext, useWatch } from "react-hook-form";
+import { SectionCollapsible } from "@/shared/ui";
import { Field } from "@/shared/ui/field";
import { useCnstpSeMngTree } from "@/entities/cnstp";
import {
@@ -16,9 +17,7 @@ import {
TableRow,
} from "@common/components";
-import { buildCnstpScaleItems, recalculateBzScaleTotals } from "../lib/business-scale-form-utils";
-
-import { SectionCollapsible } from "./section-collapsible";
+import { buildCnstpScaleItems, recalculateBzScaleTotals } from "../lib/business-scale-form-utils";
interface BusinessScaleFormData {
bzScaleList: Array<{
diff --git a/apps/as/src/widgets/pbadms-sprt/ui/checklist-form-section.tsx b/apps/as/src/widgets/pbadms-sprt/ui/checklist-form-section.tsx
index 36fb793ae..4b9866877 100644
--- a/apps/as/src/widgets/pbadms-sprt/ui/checklist-form-section.tsx
+++ b/apps/as/src/widgets/pbadms-sprt/ui/checklist-form-section.tsx
@@ -5,6 +5,7 @@ import { Controller, useFormContext, useWatch } from "react-hook-form";
import { useQuery } from "@tanstack/react-query";
+import { SectionCollapsible } from "@/shared/ui";
import { Field, FieldLabel } from "@/shared/ui/field";
import { cklstMngService, type CklstTreeNode } from "@/entities/cklst";
import { useCodeList } from "@/entities/code";
@@ -29,9 +30,7 @@ import {
buildChecklistTabs,
normalizeTaskSeComCdArray,
syncCklstResultListFromTree,
-} from "../lib/checklist-form-utils";
-
-import { SectionCollapsible } from "./section-collapsible";
+} from "../lib/checklist-form-utils";
type FieldPrefix = "fnrsCnsltnMng" | "instlSncnMng" | "designCnstnMng" | "sewerBscPlan";
diff --git a/apps/as/src/widgets/pbadms-sprt/ui/contact-info-form-section.tsx b/apps/as/src/widgets/pbadms-sprt/ui/contact-info-form-section.tsx
index c3dc02fcc..0f5b659a0 100644
--- a/apps/as/src/widgets/pbadms-sprt/ui/contact-info-form-section.tsx
+++ b/apps/as/src/widgets/pbadms-sprt/ui/contact-info-form-section.tsx
@@ -3,8 +3,8 @@
import { Controller, useFormContext } from "react-hook-form";
import { useUserStore } from "@/shared/lib";
+import { SectionCollapsible } from "@/shared/ui";
import { Field, FieldError } from "@/shared/ui/field";
-import { SectionCollapsible } from "@/widgets/pbadms-sprt";
import { Input, Table, TableCell, TableHead, TableHeader, TableRow } from "@common/components";
type FieldPrefix =
diff --git a/apps/as/src/widgets/pbadms-sprt/ui/fnrs-shar-form-section.tsx b/apps/as/src/widgets/pbadms-sprt/ui/fnrs-shar-form-section.tsx
index 5365db9c9..0ab921ef9 100644
--- a/apps/as/src/widgets/pbadms-sprt/ui/fnrs-shar-form-section.tsx
+++ b/apps/as/src/widgets/pbadms-sprt/ui/fnrs-shar-form-section.tsx
@@ -5,6 +5,7 @@ import { Controller, useFormContext, useWatch } from "react-hook-form";
import { getDefaultFileKey, useTus } from "@/shared/lib";
import { TextShimmer } from "@/shared/ui";
+import { SectionCollapsible } from "@/shared/ui";
import { Field } from "@/shared/ui/field";
import { useAcntgSeMngTree } from "@/entities/acntg";
import type { AtflMngClientResponseDto } from "@/entities/fnrs-cnsltn";
@@ -34,7 +35,6 @@ import {
import { calcDiffPercent } from "../lib/format-utils";
import { BizCstTotalDisplayTable } from "./biz-cst-total-display-table";
-import { SectionCollapsible } from "./section-collapsible";
const SHAR_FILE_KEY_PREFIX = "fnrs-shar::";
diff --git a/apps/as/src/widgets/pbadms-sprt/ui/privacy-consent-section.tsx b/apps/as/src/widgets/pbadms-sprt/ui/privacy-consent-section.tsx
index d51d9aeef..eefd96163 100644
--- a/apps/as/src/widgets/pbadms-sprt/ui/privacy-consent-section.tsx
+++ b/apps/as/src/widgets/pbadms-sprt/ui/privacy-consent-section.tsx
@@ -2,6 +2,7 @@
import { Controller, useFormContext } from "react-hook-form";
+import { SectionCollapsible } from "@/shared/ui";
import { Field, FieldError, FieldLabel, FieldSet } from "@/shared/ui/field";
import {
RadioGroup,
@@ -11,9 +12,7 @@ import {
TableHead,
TableHeader,
TableRow,
-} from "@common/components";
-
-import { SectionCollapsible } from "./section-collapsible";
+} from "@common/components";
interface PrivacyConsentFormData {
privacyConsent: "Y" | "N";
diff --git a/apps/as/src/widgets/pbadms-sprt/ui/splmnt-dmnd-form-section.tsx b/apps/as/src/widgets/pbadms-sprt/ui/splmnt-dmnd-form-section.tsx
index 6a8d94670..a8efff36d 100644
--- a/apps/as/src/widgets/pbadms-sprt/ui/splmnt-dmnd-form-section.tsx
+++ b/apps/as/src/widgets/pbadms-sprt/ui/splmnt-dmnd-form-section.tsx
@@ -7,6 +7,7 @@ import { Paperclip } from "lucide-react";
import { dayjs, getDefaultFileKey, useTus } from "@/shared/lib";
import { TextShimmer } from "@/shared/ui";
+import { SectionCollapsible } from "@/shared/ui";
import { attachService, useDownloadAttachmentByAtflCd } from "@/entities/attach";
import {
Badge,
@@ -20,8 +21,6 @@ import {
Textarea,
} from "@common/components";
-import { SectionCollapsible } from "./section-collapsible";
-
const SPLMNT_CMPTN_FILE_KEY_PREFIX = "splmnt-cmptn::";
interface UploadedSplmntFile {
diff --git a/apps/as/src/widgets/pbadms-sprt/ui/supplement-demand-section.tsx b/apps/as/src/widgets/pbadms-sprt/ui/supplement-demand-section.tsx
index 8c7d6a8c7..1da222fdf 100644
--- a/apps/as/src/widgets/pbadms-sprt/ui/supplement-demand-section.tsx
+++ b/apps/as/src/widgets/pbadms-sprt/ui/supplement-demand-section.tsx
@@ -4,6 +4,7 @@ import { Paperclip } from "lucide-react";
import { dayjs } from "@/shared/lib";
import type { SplmntDmndResponseExtension, SplmntDmndSaveBase } from "@/shared/model";
+import { SectionCollapsible } from "@/shared/ui";
import { useDownloadAttachmentByAtflCd } from "@/entities/attach";
import {
Badge,
@@ -15,8 +16,6 @@ import {
TableRow,
} from "@common/components";
-import { SectionCollapsible } from "./section-collapsible";
-
type SplmntDmndItem = SplmntDmndSaveBase & SplmntDmndResponseExtension;
interface SupplementDemandSectionProps {