@uniai-fe/uds-templates 0.4.21 → 0.4.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniai-fe/uds-templates",
3
- "version": "0.4.21",
3
+ "version": "0.4.22",
4
4
  "description": "UNIAI Design System; UI Templates Package",
5
5
  "type": "module",
6
6
  "private": false,
@@ -70,7 +70,7 @@
70
70
  },
71
71
  "devDependencies": {
72
72
  "@svgr/webpack": "^8.1.0",
73
- "@tanstack/react-query": "^5.95.2",
73
+ "@tanstack/react-query": "^5.96.0",
74
74
  "@types/node": "^24.10.2",
75
75
  "@types/react": "^19.2.14",
76
76
  "@types/react-dom": "^19.2.3",
@@ -11,6 +11,7 @@ export default function CCTVVideoOverlayHeader({
11
11
  activeTitle,
12
12
  title,
13
13
  isLive,
14
+ isShared,
14
15
  }: CctvVideoOverlayHeaderProps) {
15
16
  const showUpper = activeLiveState || activeCloseButton;
16
17
  const showLower = activeTitle;
@@ -23,7 +24,15 @@ export default function CCTVVideoOverlayHeader({
23
24
  >
24
25
  {showUpper && (
25
26
  <div className="cctv-video-overlay-header-upper">
26
- {activeLiveState && <CCTVVideoLiveState isLive={isLive} />}
27
+ {activeLiveState && (
28
+ <CCTVVideoLiveState
29
+ isLive={isLive}
30
+ isShared={isShared}
31
+ {...(activeCloseButton
32
+ ? { badgeOptions: { size: "medium" } }
33
+ : {})}
34
+ />
35
+ )}
27
36
  {activeCloseButton && <CCTVVideoCloseButton />}
28
37
  </div>
29
38
  )}
@@ -1,21 +1,27 @@
1
1
  "use client";
2
2
 
3
3
  import clsx from "clsx";
4
- import { Badge } from "@uniai-fe/uds-primitives";
4
+ import { Badge, type BadgeProps } from "@uniai-fe/uds-primitives";
5
5
 
6
6
  export default function CCTVVideoLiveState({
7
7
  isLive = false,
8
+ isShared = false,
9
+ badgeOptions,
8
10
  }: {
9
11
  isLive?: boolean;
12
+ isShared?: boolean;
13
+ badgeOptions?: Partial<Omit<BadgeProps, "className" | "children">>;
10
14
  }) {
15
+ const { size, intent, ...options } = badgeOptions ?? {};
11
16
  return (
12
17
  <Badge
13
- size="xsmall"
14
- intent="tertiary"
18
+ size={size ?? "xsmall"}
19
+ intent={intent ?? "tertiary"}
15
20
  className={clsx("cctv-video-live-state", { on: isLive == true })}
21
+ {...options}
16
22
  >
17
23
  <figure className="cctv-video-live-state-dot"></figure>
18
- <span>Live</span>
24
+ <span>{isShared ? "외부공유중" : "Live"}</span>
19
25
  </Badge>
20
26
  );
21
27
  }
@@ -29,6 +29,7 @@ export interface API_Req_GetCompanyListParams extends Omit<
29
29
  * @property {boolean} cam_online 카메라 설치상태
30
30
  * @property {string} [cam_rtc] 카메라 스트리밍 WebRTC 경로
31
31
  * @property {string} [cam_rtcp] 카메라 RTCP 경로
32
+ * @property {boolean} [cam_shared] 카메라 외부공유 여부
32
33
  */
33
34
  export interface API_Res_CctvCompanyCameraList {
34
35
  // API 응답은 데이터-only 구조이므로 UI 전용 콜백은 포함하지 않는다.
@@ -54,6 +55,10 @@ export interface API_Res_CctvCompanyCameraList {
54
55
  * RTCP 경로
55
56
  */
56
57
  cam_rtcp?: string;
58
+ /**
59
+ * 외부공유 상태
60
+ */
61
+ cam_shared?: boolean;
57
62
  }
58
63
 
59
64
  /**
@@ -9,6 +9,7 @@ import type { CctvCompanyCameraData } from "./list";
9
9
  * @property {React.ReactNode} [title] 제목 콘텐츠
10
10
  * @property {boolean} [activeTime] 시간 표시 영역 활성화 여부
11
11
  * @property {boolean} [isLive] Live 뱃지를 on/off 상태로 표시할지 여부
12
+ * @property {boolean} [isShared] 외부공유 여부
12
13
  */
13
14
  export interface CctvVideoOverlayHeaderProps {
14
15
  className?: string;
@@ -32,6 +33,10 @@ export interface CctvVideoOverlayHeaderProps {
32
33
  * 시간 표시 영역 활성화 여부
33
34
  */
34
35
  isLive?: boolean;
36
+ /**
37
+ * 해당 카메라의 외부공유 여부 상태
38
+ */
39
+ isShared?: boolean;
35
40
  }
36
41
 
37
42
  /**