@x-plat/design-system 0.13.0 → 0.14.0
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/dist/{breakpoints-DsXkJgdl.d.cts → breakpoints-CKkNxA-y.d.cts} +1 -1
- package/dist/{breakpoints-DsXkJgdl.d.ts → breakpoints-CKkNxA-y.d.ts} +1 -1
- package/dist/components/Badge/index.d.cts +1 -1
- package/dist/components/Badge/index.d.ts +1 -1
- package/dist/components/ToggleChip/index.cjs +69 -0
- package/dist/components/ToggleChip/index.css +102 -0
- package/dist/components/ToggleChip/index.d.cts +37 -0
- package/dist/components/ToggleChip/index.d.ts +37 -0
- package/dist/components/ToggleChip/index.js +42 -0
- package/dist/components/index.cjs +62 -36
- package/dist/components/index.css +37 -0
- package/dist/components/index.d.cts +2 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.js +52 -27
- package/dist/index.cjs +81 -55
- package/dist/index.css +37 -0
- package/dist/index.d.cts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +69 -44
- package/dist/layout/Grid/Item/index.d.cts +1 -1
- package/dist/layout/Grid/Item/index.d.ts +1 -1
- package/dist/layout/Grid/index.d.cts +1 -1
- package/dist/layout/Grid/index.d.ts +1 -1
- package/dist/layout/index.d.cts +1 -1
- package/dist/layout/index.d.ts +1 -1
- package/dist/tokens/index.d.cts +1 -1
- package/dist/tokens/index.d.ts +1 -1
- package/guidelines/Guidelines.md +1 -1
- package/guidelines/MIGRATION.md +27 -0
- package/guidelines/components/chip-tag.md +75 -2
- package/package.json +1 -1
|
@@ -32,4 +32,4 @@ type GridColumnConfig = {
|
|
|
32
32
|
[K in BreakpointKey]?: GridSpanFor<K>;
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
export { BREAKPOINT_KEYS_ORDERED as B, type
|
|
35
|
+
export { BREAKPOINT_KEYS_ORDERED as B, type GridColumnConfig as G, type BreakpointKey as a, type GridSpanFor as b, breakpoints as c, gridColumns as g };
|
|
@@ -32,4 +32,4 @@ type GridColumnConfig = {
|
|
|
32
32
|
[K in BreakpointKey]?: GridSpanFor<K>;
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
export { BREAKPOINT_KEYS_ORDERED as B, type
|
|
35
|
+
export { BREAKPOINT_KEYS_ORDERED as B, type GridColumnConfig as G, type BreakpointKey as a, type GridSpanFor as b, breakpoints as c, gridColumns as g };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { Badge, Badge as NotificationBadge, Badge as default } from '../NotificationBadge/index.cjs';
|
|
2
2
|
import 'react/jsx-runtime';
|
|
3
3
|
import 'react';
|
|
4
4
|
import '../../status-njWqQWFV.cjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { Badge, Badge as NotificationBadge, Badge as default } from '../NotificationBadge/index.js';
|
|
2
2
|
import 'react/jsx-runtime';
|
|
3
3
|
import 'react';
|
|
4
4
|
import '../../status-njWqQWFV.js';
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/components/ToggleChip/index.ts
|
|
21
|
+
var ToggleChip_exports = {};
|
|
22
|
+
__export(ToggleChip_exports, {
|
|
23
|
+
ToggleChip: () => ToggleChip_default
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(ToggleChip_exports);
|
|
26
|
+
|
|
27
|
+
// ../../node_modules/clsx/dist/clsx.mjs
|
|
28
|
+
function r(e) {
|
|
29
|
+
var t, f, n = "";
|
|
30
|
+
if ("string" == typeof e || "number" == typeof e) n += e;
|
|
31
|
+
else if ("object" == typeof e) if (Array.isArray(e)) {
|
|
32
|
+
var o = e.length;
|
|
33
|
+
for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
|
|
34
|
+
} else for (f in e) e[f] && (n && (n += " "), n += f);
|
|
35
|
+
return n;
|
|
36
|
+
}
|
|
37
|
+
function clsx() {
|
|
38
|
+
for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
|
|
39
|
+
return n;
|
|
40
|
+
}
|
|
41
|
+
var clsx_default = clsx;
|
|
42
|
+
|
|
43
|
+
// src/components/ToggleChip/ToggleChip.tsx
|
|
44
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
45
|
+
var ToggleChip = (props) => {
|
|
46
|
+
const { children, selected = false, onClick, disabled = false, size = "md" } = props;
|
|
47
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
48
|
+
"button",
|
|
49
|
+
{
|
|
50
|
+
type: "button",
|
|
51
|
+
className: clsx_default(
|
|
52
|
+
"lib-xplat-chip",
|
|
53
|
+
"lib-xplat-toggle-chip",
|
|
54
|
+
size,
|
|
55
|
+
selected ? "selected" : "unselected"
|
|
56
|
+
),
|
|
57
|
+
"aria-pressed": selected,
|
|
58
|
+
disabled,
|
|
59
|
+
onClick,
|
|
60
|
+
children
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
};
|
|
64
|
+
ToggleChip.displayName = "ToggleChip";
|
|
65
|
+
var ToggleChip_default = ToggleChip;
|
|
66
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
67
|
+
0 && (module.exports = {
|
|
68
|
+
ToggleChip
|
|
69
|
+
});
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
|
|
3
|
+
/* src/components/Chip/chip.scss */
|
|
4
|
+
.lib-xplat-chip {
|
|
5
|
+
border-radius: var(--spacing-radius-full);
|
|
6
|
+
display: inline-flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
user-select: none;
|
|
10
|
+
transition: background-color 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
|
11
|
+
}
|
|
12
|
+
.lib-xplat-chip.sm {
|
|
13
|
+
padding: 1px var(--spacing-space-2);
|
|
14
|
+
font-family: var(--semantic-typo-caption-2-r-font);
|
|
15
|
+
font-size: var(--semantic-typo-caption-2-r-size);
|
|
16
|
+
line-height: var(--semantic-typo-caption-2-r-lh);
|
|
17
|
+
font-weight: var(--semantic-typo-caption-2-r-weight);
|
|
18
|
+
letter-spacing: var(--semantic-typo-caption-2-r-ls);
|
|
19
|
+
}
|
|
20
|
+
.lib-xplat-chip.md {
|
|
21
|
+
padding: 2px var(--spacing-space-3);
|
|
22
|
+
font-family: var(--semantic-typo-caption-1-r-font);
|
|
23
|
+
font-size: var(--semantic-typo-caption-1-r-size);
|
|
24
|
+
line-height: var(--semantic-typo-caption-1-r-lh);
|
|
25
|
+
font-weight: var(--semantic-typo-caption-1-r-weight);
|
|
26
|
+
letter-spacing: var(--semantic-typo-caption-1-r-ls);
|
|
27
|
+
}
|
|
28
|
+
.lib-xplat-chip.lg {
|
|
29
|
+
padding: var(--spacing-space-1) var(--spacing-space-4);
|
|
30
|
+
font-family: var(--semantic-typo-label-2-m-font);
|
|
31
|
+
font-size: var(--semantic-typo-label-2-m-size);
|
|
32
|
+
line-height: var(--semantic-typo-label-2-m-lh);
|
|
33
|
+
font-weight: var(--semantic-typo-label-2-m-weight);
|
|
34
|
+
letter-spacing: var(--semantic-typo-label-2-m-ls);
|
|
35
|
+
}
|
|
36
|
+
.lib-xplat-chip.primary {
|
|
37
|
+
color: var(--semantic-text-inverse);
|
|
38
|
+
background-color: var(--semantic-surface-brand-default);
|
|
39
|
+
}
|
|
40
|
+
.lib-xplat-chip.secondary {
|
|
41
|
+
color: var(--semantic-surface-brand-default);
|
|
42
|
+
background-color: var(--semantic-surface-neutral-primary);
|
|
43
|
+
border: 1px solid var(--semantic-border-primary);
|
|
44
|
+
}
|
|
45
|
+
.lib-xplat-chip.neutral {
|
|
46
|
+
color: var(--semantic-text-secondary);
|
|
47
|
+
background-color: var(--semantic-surface-neutral-secondary);
|
|
48
|
+
border: 1px solid var(--semantic-border-primary);
|
|
49
|
+
}
|
|
50
|
+
.lib-xplat-chip.success {
|
|
51
|
+
color: var(--semantic-text-success);
|
|
52
|
+
background-color: var(--semantic-surface-success-subtle);
|
|
53
|
+
}
|
|
54
|
+
.lib-xplat-chip.error {
|
|
55
|
+
color: var(--semantic-text-error);
|
|
56
|
+
background-color: var(--semantic-surface-error-subtle);
|
|
57
|
+
}
|
|
58
|
+
.lib-xplat-chip.warning {
|
|
59
|
+
color: var(--semantic-text-warning);
|
|
60
|
+
background-color: var(--semantic-surface-warning-subtle);
|
|
61
|
+
}
|
|
62
|
+
.lib-xplat-chip.info {
|
|
63
|
+
color: var(--semantic-text-info);
|
|
64
|
+
background-color: var(--semantic-surface-info-subtle);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* src/components/ToggleChip/togglechip.scss */
|
|
68
|
+
.lib-xplat-toggle-chip {
|
|
69
|
+
cursor: pointer;
|
|
70
|
+
font-family: inherit;
|
|
71
|
+
transition:
|
|
72
|
+
background-color 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94),
|
|
73
|
+
border-color 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94),
|
|
74
|
+
color 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
|
75
|
+
}
|
|
76
|
+
.lib-xplat-toggle-chip.unselected {
|
|
77
|
+
color: var(--semantic-text-secondary);
|
|
78
|
+
background-color: var(--semantic-surface-neutral-primary);
|
|
79
|
+
border: 1px solid var(--semantic-border-primary);
|
|
80
|
+
}
|
|
81
|
+
.lib-xplat-toggle-chip.unselected:hover:not(:disabled) {
|
|
82
|
+
color: var(--semantic-text-primary);
|
|
83
|
+
background-color: var(--semantic-surface-neutral-secondary);
|
|
84
|
+
}
|
|
85
|
+
.lib-xplat-toggle-chip {
|
|
86
|
+
}
|
|
87
|
+
.lib-xplat-toggle-chip.selected {
|
|
88
|
+
color: var(--semantic-text-brand-primary);
|
|
89
|
+
background-color: var(--semantic-surface-brand-subtle);
|
|
90
|
+
border: 1px solid var(--semantic-border-brand-primary);
|
|
91
|
+
}
|
|
92
|
+
.lib-xplat-toggle-chip.selected:hover:not(:disabled) {
|
|
93
|
+
background-color: var(--semantic-surface-brand-secondary);
|
|
94
|
+
}
|
|
95
|
+
.lib-xplat-toggle-chip:focus-visible {
|
|
96
|
+
outline: 2px solid var(--semantic-interaction-focus-ring);
|
|
97
|
+
outline-offset: 2px;
|
|
98
|
+
}
|
|
99
|
+
.lib-xplat-toggle-chip:disabled {
|
|
100
|
+
cursor: not-allowed;
|
|
101
|
+
opacity: 0.4;
|
|
102
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
type ToggleChipSize = "sm" | "md" | "lg";
|
|
5
|
+
interface ToggleChipProps {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
/** 켜진 상태인가. 색과 `aria-pressed` 가 함께 바뀐다 */
|
|
8
|
+
selected?: boolean;
|
|
9
|
+
/** 누를 때. 켜고 끄는 판단은 쓰는 쪽이 한다 */
|
|
10
|
+
onClick?: () => void;
|
|
11
|
+
/** 흐리게 하고 못 누르게 한다 */
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
/** 칩 크기. `Chip` 과 같은 눈금이다 */
|
|
14
|
+
size?: ToggleChipSize;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 눌러서 고르는 칩.
|
|
18
|
+
*
|
|
19
|
+
* `Chip` 은 표시 전용이고 `Tag` 의 클릭은 **삭제**다. 이것만이 **켜짐/꺼짐**을
|
|
20
|
+
* 다룬다. 여러 개 고르기와 한 개 고르기 양쪽에 쓴다 — 몇 개까지 켤 수 있는지,
|
|
21
|
+
* 마지막 하나를 뗄 수 있는지 같은 규칙은 쓰는 쪽 사정이라 여기서 정하지 않는다.
|
|
22
|
+
*
|
|
23
|
+
* 모양은 `.lib-xplat-chip` 을 그대로 쓴다. 알약 반지름·크기 눈금·글자 크기가
|
|
24
|
+
* `Chip` 과 **한 곳에서** 정의되므로 둘이 따로 놀 수 없다. 같은 화면에 나란히
|
|
25
|
+
* 놓이는 일이 많아서 이게 중요하다.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* <ToggleChip selected={picked.has("ko")} onClick={() => toggle("ko")}>
|
|
29
|
+
* 한국어
|
|
30
|
+
* </ToggleChip>
|
|
31
|
+
*/
|
|
32
|
+
declare const ToggleChip: {
|
|
33
|
+
(props: ToggleChipProps): react_jsx_runtime.JSX.Element;
|
|
34
|
+
displayName: string;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { ToggleChip };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
type ToggleChipSize = "sm" | "md" | "lg";
|
|
5
|
+
interface ToggleChipProps {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
/** 켜진 상태인가. 색과 `aria-pressed` 가 함께 바뀐다 */
|
|
8
|
+
selected?: boolean;
|
|
9
|
+
/** 누를 때. 켜고 끄는 판단은 쓰는 쪽이 한다 */
|
|
10
|
+
onClick?: () => void;
|
|
11
|
+
/** 흐리게 하고 못 누르게 한다 */
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
/** 칩 크기. `Chip` 과 같은 눈금이다 */
|
|
14
|
+
size?: ToggleChipSize;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 눌러서 고르는 칩.
|
|
18
|
+
*
|
|
19
|
+
* `Chip` 은 표시 전용이고 `Tag` 의 클릭은 **삭제**다. 이것만이 **켜짐/꺼짐**을
|
|
20
|
+
* 다룬다. 여러 개 고르기와 한 개 고르기 양쪽에 쓴다 — 몇 개까지 켤 수 있는지,
|
|
21
|
+
* 마지막 하나를 뗄 수 있는지 같은 규칙은 쓰는 쪽 사정이라 여기서 정하지 않는다.
|
|
22
|
+
*
|
|
23
|
+
* 모양은 `.lib-xplat-chip` 을 그대로 쓴다. 알약 반지름·크기 눈금·글자 크기가
|
|
24
|
+
* `Chip` 과 **한 곳에서** 정의되므로 둘이 따로 놀 수 없다. 같은 화면에 나란히
|
|
25
|
+
* 놓이는 일이 많아서 이게 중요하다.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* <ToggleChip selected={picked.has("ko")} onClick={() => toggle("ko")}>
|
|
29
|
+
* 한국어
|
|
30
|
+
* </ToggleChip>
|
|
31
|
+
*/
|
|
32
|
+
declare const ToggleChip: {
|
|
33
|
+
(props: ToggleChipProps): react_jsx_runtime.JSX.Element;
|
|
34
|
+
displayName: string;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { ToggleChip };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// ../../node_modules/clsx/dist/clsx.mjs
|
|
2
|
+
function r(e) {
|
|
3
|
+
var t, f, n = "";
|
|
4
|
+
if ("string" == typeof e || "number" == typeof e) n += e;
|
|
5
|
+
else if ("object" == typeof e) if (Array.isArray(e)) {
|
|
6
|
+
var o = e.length;
|
|
7
|
+
for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
|
|
8
|
+
} else for (f in e) e[f] && (n && (n += " "), n += f);
|
|
9
|
+
return n;
|
|
10
|
+
}
|
|
11
|
+
function clsx() {
|
|
12
|
+
for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
|
|
13
|
+
return n;
|
|
14
|
+
}
|
|
15
|
+
var clsx_default = clsx;
|
|
16
|
+
|
|
17
|
+
// src/components/ToggleChip/ToggleChip.tsx
|
|
18
|
+
import { jsx } from "react/jsx-runtime";
|
|
19
|
+
var ToggleChip = (props) => {
|
|
20
|
+
const { children, selected = false, onClick, disabled = false, size = "md" } = props;
|
|
21
|
+
return /* @__PURE__ */ jsx(
|
|
22
|
+
"button",
|
|
23
|
+
{
|
|
24
|
+
type: "button",
|
|
25
|
+
className: clsx_default(
|
|
26
|
+
"lib-xplat-chip",
|
|
27
|
+
"lib-xplat-toggle-chip",
|
|
28
|
+
size,
|
|
29
|
+
selected ? "selected" : "unselected"
|
|
30
|
+
),
|
|
31
|
+
"aria-pressed": selected,
|
|
32
|
+
disabled,
|
|
33
|
+
onClick,
|
|
34
|
+
children
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
};
|
|
38
|
+
ToggleChip.displayName = "ToggleChip";
|
|
39
|
+
var ToggleChip_default = ToggleChip;
|
|
40
|
+
export {
|
|
41
|
+
ToggleChip_default as ToggleChip
|
|
42
|
+
};
|
|
@@ -89,6 +89,7 @@ __export(components_exports, {
|
|
|
89
89
|
TextArea: () => TextArea_default,
|
|
90
90
|
TimePicker: () => TimePicker_default,
|
|
91
91
|
ToastProvider: () => ToastProvider,
|
|
92
|
+
ToggleChip: () => ToggleChip_default,
|
|
92
93
|
Tooltip: () => Tooltip_default,
|
|
93
94
|
Video: () => Video_default,
|
|
94
95
|
hasError: () => hasError,
|
|
@@ -7407,9 +7408,33 @@ var ToastProvider = ({
|
|
|
7407
7408
|
};
|
|
7408
7409
|
ToastProvider.displayName = "ToastProvider";
|
|
7409
7410
|
|
|
7411
|
+
// src/components/ToggleChip/ToggleChip.tsx
|
|
7412
|
+
var import_jsx_runtime353 = require("react/jsx-runtime");
|
|
7413
|
+
var ToggleChip = (props) => {
|
|
7414
|
+
const { children, selected = false, onClick, disabled = false, size = "md" } = props;
|
|
7415
|
+
return /* @__PURE__ */ (0, import_jsx_runtime353.jsx)(
|
|
7416
|
+
"button",
|
|
7417
|
+
{
|
|
7418
|
+
type: "button",
|
|
7419
|
+
className: clsx_default(
|
|
7420
|
+
"lib-xplat-chip",
|
|
7421
|
+
"lib-xplat-toggle-chip",
|
|
7422
|
+
size,
|
|
7423
|
+
selected ? "selected" : "unselected"
|
|
7424
|
+
),
|
|
7425
|
+
"aria-pressed": selected,
|
|
7426
|
+
disabled,
|
|
7427
|
+
onClick,
|
|
7428
|
+
children
|
|
7429
|
+
}
|
|
7430
|
+
);
|
|
7431
|
+
};
|
|
7432
|
+
ToggleChip.displayName = "ToggleChip";
|
|
7433
|
+
var ToggleChip_default = ToggleChip;
|
|
7434
|
+
|
|
7410
7435
|
// src/components/Tooltip/Tooltip.tsx
|
|
7411
7436
|
var import_react42 = __toESM(require("react"), 1);
|
|
7412
|
-
var
|
|
7437
|
+
var import_jsx_runtime354 = require("react/jsx-runtime");
|
|
7413
7438
|
var OFFSET = 12;
|
|
7414
7439
|
var GAP = 8;
|
|
7415
7440
|
var SHOW_DELAY = 300;
|
|
@@ -7514,8 +7539,8 @@ var Tooltip = (props) => {
|
|
|
7514
7539
|
window.clearTimeout(delayTimer.current);
|
|
7515
7540
|
cancelAnimationFrame(rafRef.current);
|
|
7516
7541
|
}, []);
|
|
7517
|
-
if (!title && !description) return /* @__PURE__ */ (0,
|
|
7518
|
-
return /* @__PURE__ */ (0,
|
|
7542
|
+
if (!title && !description) return /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(import_jsx_runtime354.Fragment, { children });
|
|
7543
|
+
return /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)(
|
|
7519
7544
|
"div",
|
|
7520
7545
|
{
|
|
7521
7546
|
ref: triggerRef,
|
|
@@ -7528,7 +7553,7 @@ var Tooltip = (props) => {
|
|
|
7528
7553
|
onBlur: close,
|
|
7529
7554
|
children: [
|
|
7530
7555
|
children,
|
|
7531
|
-
visible && /* @__PURE__ */ (0,
|
|
7556
|
+
visible && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)(
|
|
7532
7557
|
"div",
|
|
7533
7558
|
{
|
|
7534
7559
|
ref: tooltipRef,
|
|
@@ -7536,8 +7561,8 @@ var Tooltip = (props) => {
|
|
|
7536
7561
|
className: clsx_default("lib-xplat-tooltip", shape),
|
|
7537
7562
|
style: { position: "fixed", left: pos.left, top: pos.top },
|
|
7538
7563
|
children: [
|
|
7539
|
-
title && /* @__PURE__ */ (0,
|
|
7540
|
-
description && /* @__PURE__ */ (0,
|
|
7564
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("div", { className: "tooltip-title", children: title }),
|
|
7565
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("div", { className: "tooltip-desc", children: description })
|
|
7541
7566
|
]
|
|
7542
7567
|
}
|
|
7543
7568
|
) })
|
|
@@ -7550,10 +7575,10 @@ var Tooltip_default = Tooltip;
|
|
|
7550
7575
|
|
|
7551
7576
|
// src/components/Video/Video.tsx
|
|
7552
7577
|
var import_react43 = __toESM(require("react"), 1);
|
|
7553
|
-
var
|
|
7554
|
-
var PipIcon = () => /* @__PURE__ */ (0,
|
|
7555
|
-
/* @__PURE__ */ (0,
|
|
7556
|
-
/* @__PURE__ */ (0,
|
|
7578
|
+
var import_jsx_runtime355 = require("react/jsx-runtime");
|
|
7579
|
+
var PipIcon = () => /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
|
|
7580
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsx)("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
|
|
7581
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsx)("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
|
|
7557
7582
|
] });
|
|
7558
7583
|
var formatTime = (sec) => {
|
|
7559
7584
|
if (!Number.isFinite(sec) || sec < 0) return "0:00";
|
|
@@ -7728,13 +7753,13 @@ var Video = import_react43.default.forwardRef((props, ref) => {
|
|
|
7728
7753
|
const volumePct = (isMuted ? 0 : volume) * 100;
|
|
7729
7754
|
const VolumeGlyph = isMuted || volume === 0 ? VolumeXIcon_default : volume < 0.5 ? VolumeIcon_default : Volume2Icon_default;
|
|
7730
7755
|
const pipSupported = typeof document !== "undefined" && "pictureInPictureEnabled" in document && document.pictureInPictureEnabled;
|
|
7731
|
-
return /* @__PURE__ */ (0,
|
|
7756
|
+
return /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)(
|
|
7732
7757
|
"div",
|
|
7733
7758
|
{
|
|
7734
7759
|
ref: containerRef,
|
|
7735
7760
|
className: clsx_default("lib-xplat-video", showControls && "has-controls"),
|
|
7736
7761
|
children: [
|
|
7737
|
-
/* @__PURE__ */ (0,
|
|
7762
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
|
|
7738
7763
|
"video",
|
|
7739
7764
|
{
|
|
7740
7765
|
ref: setRefs,
|
|
@@ -7755,7 +7780,7 @@ var Video = import_react43.default.forwardRef((props, ref) => {
|
|
|
7755
7780
|
children
|
|
7756
7781
|
}
|
|
7757
7782
|
),
|
|
7758
|
-
showCenterPlay && /* @__PURE__ */ (0,
|
|
7783
|
+
showCenterPlay && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
|
|
7759
7784
|
"button",
|
|
7760
7785
|
{
|
|
7761
7786
|
type: "button",
|
|
@@ -7767,11 +7792,11 @@ var Video = import_react43.default.forwardRef((props, ref) => {
|
|
|
7767
7792
|
onClick: togglePlay,
|
|
7768
7793
|
"aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
|
|
7769
7794
|
tabIndex: -1,
|
|
7770
|
-
children: /* @__PURE__ */ (0,
|
|
7795
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("span", { className: "center-play-icon", children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(PlayCircleIcon_default, {}) })
|
|
7771
7796
|
}
|
|
7772
7797
|
),
|
|
7773
|
-
showControls && /* @__PURE__ */ (0,
|
|
7774
|
-
/* @__PURE__ */ (0,
|
|
7798
|
+
showControls && /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
|
|
7799
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
|
|
7775
7800
|
"input",
|
|
7776
7801
|
{
|
|
7777
7802
|
type: "range",
|
|
@@ -7788,29 +7813,29 @@ var Video = import_react43.default.forwardRef((props, ref) => {
|
|
|
7788
7813
|
}
|
|
7789
7814
|
}
|
|
7790
7815
|
),
|
|
7791
|
-
/* @__PURE__ */ (0,
|
|
7792
|
-
/* @__PURE__ */ (0,
|
|
7816
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: "controls-row", children: [
|
|
7817
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
|
|
7793
7818
|
"button",
|
|
7794
7819
|
{
|
|
7795
7820
|
type: "button",
|
|
7796
7821
|
className: "control-btn",
|
|
7797
7822
|
onClick: togglePlay,
|
|
7798
7823
|
"aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
|
|
7799
|
-
children: isPlaying ? /* @__PURE__ */ (0,
|
|
7824
|
+
children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(PauseIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(PlayIcon_default, {})
|
|
7800
7825
|
}
|
|
7801
7826
|
),
|
|
7802
|
-
/* @__PURE__ */ (0,
|
|
7803
|
-
/* @__PURE__ */ (0,
|
|
7827
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: "volume-group", children: [
|
|
7828
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
|
|
7804
7829
|
"button",
|
|
7805
7830
|
{
|
|
7806
7831
|
type: "button",
|
|
7807
7832
|
className: "control-btn",
|
|
7808
7833
|
onClick: toggleMute,
|
|
7809
7834
|
"aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
|
|
7810
|
-
children: /* @__PURE__ */ (0,
|
|
7835
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(VolumeGlyph, {})
|
|
7811
7836
|
}
|
|
7812
7837
|
),
|
|
7813
|
-
/* @__PURE__ */ (0,
|
|
7838
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
|
|
7814
7839
|
"input",
|
|
7815
7840
|
{
|
|
7816
7841
|
type: "range",
|
|
@@ -7825,14 +7850,14 @@ var Video = import_react43.default.forwardRef((props, ref) => {
|
|
|
7825
7850
|
}
|
|
7826
7851
|
)
|
|
7827
7852
|
] }),
|
|
7828
|
-
/* @__PURE__ */ (0,
|
|
7853
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("span", { className: "time", children: [
|
|
7829
7854
|
formatTime(currentTime),
|
|
7830
7855
|
" / ",
|
|
7831
7856
|
formatTime(duration)
|
|
7832
7857
|
] }),
|
|
7833
|
-
/* @__PURE__ */ (0,
|
|
7834
|
-
playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0,
|
|
7835
|
-
/* @__PURE__ */ (0,
|
|
7858
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsx)("div", { className: "controls-spacer" }),
|
|
7859
|
+
playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
|
|
7860
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsxs)(
|
|
7836
7861
|
"button",
|
|
7837
7862
|
{
|
|
7838
7863
|
type: "button",
|
|
@@ -7846,7 +7871,7 @@ var Video = import_react43.default.forwardRef((props, ref) => {
|
|
|
7846
7871
|
]
|
|
7847
7872
|
}
|
|
7848
7873
|
),
|
|
7849
|
-
rateMenuOpen && /* @__PURE__ */ (0,
|
|
7874
|
+
rateMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)(
|
|
7850
7875
|
"button",
|
|
7851
7876
|
{
|
|
7852
7877
|
type: "button",
|
|
@@ -7860,7 +7885,7 @@ var Video = import_react43.default.forwardRef((props, ref) => {
|
|
|
7860
7885
|
}
|
|
7861
7886
|
) }, r2)) })
|
|
7862
7887
|
] }),
|
|
7863
|
-
showCaptions && /* @__PURE__ */ (0,
|
|
7888
|
+
showCaptions && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
|
|
7864
7889
|
"button",
|
|
7865
7890
|
{
|
|
7866
7891
|
type: "button",
|
|
@@ -7868,37 +7893,37 @@ var Video = import_react43.default.forwardRef((props, ref) => {
|
|
|
7868
7893
|
onClick: toggleCaptions,
|
|
7869
7894
|
"aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
|
|
7870
7895
|
"aria-pressed": captionsOn,
|
|
7871
|
-
children: /* @__PURE__ */ (0,
|
|
7896
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(TypeIcon_default, {})
|
|
7872
7897
|
}
|
|
7873
7898
|
),
|
|
7874
|
-
showPip && pipSupported && /* @__PURE__ */ (0,
|
|
7899
|
+
showPip && pipSupported && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
|
|
7875
7900
|
"button",
|
|
7876
7901
|
{
|
|
7877
7902
|
type: "button",
|
|
7878
7903
|
className: clsx_default("control-btn", isPip && "is-active"),
|
|
7879
7904
|
onClick: togglePip,
|
|
7880
7905
|
"aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
|
|
7881
|
-
children: /* @__PURE__ */ (0,
|
|
7906
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(PipIcon, {})
|
|
7882
7907
|
}
|
|
7883
7908
|
),
|
|
7884
|
-
showDownload && /* @__PURE__ */ (0,
|
|
7909
|
+
showDownload && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
|
|
7885
7910
|
"a",
|
|
7886
7911
|
{
|
|
7887
7912
|
className: "control-btn",
|
|
7888
7913
|
href: src,
|
|
7889
7914
|
download: downloadFileName ?? true,
|
|
7890
7915
|
"aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
|
|
7891
|
-
children: /* @__PURE__ */ (0,
|
|
7916
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(DownloadIcon_default, {})
|
|
7892
7917
|
}
|
|
7893
7918
|
),
|
|
7894
|
-
/* @__PURE__ */ (0,
|
|
7919
|
+
/* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
|
|
7895
7920
|
"button",
|
|
7896
7921
|
{
|
|
7897
7922
|
type: "button",
|
|
7898
7923
|
className: "control-btn",
|
|
7899
7924
|
onClick: toggleFullscreen,
|
|
7900
7925
|
"aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
|
|
7901
|
-
children: isFullscreen ? /* @__PURE__ */ (0,
|
|
7926
|
+
children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(MinimizeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(MaximizeIcon_default, {})
|
|
7902
7927
|
}
|
|
7903
7928
|
)
|
|
7904
7929
|
] })
|
|
@@ -7970,6 +7995,7 @@ var Video_default = Video;
|
|
|
7970
7995
|
TextArea,
|
|
7971
7996
|
TimePicker,
|
|
7972
7997
|
ToastProvider,
|
|
7998
|
+
ToggleChip,
|
|
7973
7999
|
Tooltip,
|
|
7974
8000
|
Video,
|
|
7975
8001
|
hasError,
|
|
@@ -5806,6 +5806,43 @@
|
|
|
5806
5806
|
}
|
|
5807
5807
|
}
|
|
5808
5808
|
|
|
5809
|
+
/* src/components/ToggleChip/togglechip.scss */
|
|
5810
|
+
.lib-xplat-toggle-chip {
|
|
5811
|
+
cursor: pointer;
|
|
5812
|
+
font-family: inherit;
|
|
5813
|
+
transition:
|
|
5814
|
+
background-color 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94),
|
|
5815
|
+
border-color 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94),
|
|
5816
|
+
color 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
|
5817
|
+
}
|
|
5818
|
+
.lib-xplat-toggle-chip.unselected {
|
|
5819
|
+
color: var(--semantic-text-secondary);
|
|
5820
|
+
background-color: var(--semantic-surface-neutral-primary);
|
|
5821
|
+
border: 1px solid var(--semantic-border-primary);
|
|
5822
|
+
}
|
|
5823
|
+
.lib-xplat-toggle-chip.unselected:hover:not(:disabled) {
|
|
5824
|
+
color: var(--semantic-text-primary);
|
|
5825
|
+
background-color: var(--semantic-surface-neutral-secondary);
|
|
5826
|
+
}
|
|
5827
|
+
.lib-xplat-toggle-chip {
|
|
5828
|
+
}
|
|
5829
|
+
.lib-xplat-toggle-chip.selected {
|
|
5830
|
+
color: var(--semantic-text-brand-primary);
|
|
5831
|
+
background-color: var(--semantic-surface-brand-subtle);
|
|
5832
|
+
border: 1px solid var(--semantic-border-brand-primary);
|
|
5833
|
+
}
|
|
5834
|
+
.lib-xplat-toggle-chip.selected:hover:not(:disabled) {
|
|
5835
|
+
background-color: var(--semantic-surface-brand-secondary);
|
|
5836
|
+
}
|
|
5837
|
+
.lib-xplat-toggle-chip:focus-visible {
|
|
5838
|
+
outline: 2px solid var(--semantic-interaction-focus-ring);
|
|
5839
|
+
outline-offset: 2px;
|
|
5840
|
+
}
|
|
5841
|
+
.lib-xplat-toggle-chip:disabled {
|
|
5842
|
+
cursor: not-allowed;
|
|
5843
|
+
opacity: 0.4;
|
|
5844
|
+
}
|
|
5845
|
+
|
|
5809
5846
|
/* src/components/Video/video.scss */
|
|
5810
5847
|
.lib-xplat-video {
|
|
5811
5848
|
position: relative;
|
|
@@ -26,7 +26,7 @@ export { Input, PasswordInput } from './Input/index.cjs';
|
|
|
26
26
|
export { Link } from './Link/index.cjs';
|
|
27
27
|
export { LinkButton } from './LinkButton/index.cjs';
|
|
28
28
|
export { Modal } from './Modal/index.cjs';
|
|
29
|
-
export {
|
|
29
|
+
export { Badge, Badge as NotificationBadge } from './NotificationBadge/index.cjs';
|
|
30
30
|
export { Pagination } from './Pagination/index.cjs';
|
|
31
31
|
export { PopOver } from './PopOver/index.cjs';
|
|
32
32
|
export { Progress } from './Progress/index.cjs';
|
|
@@ -44,6 +44,7 @@ export { Tag } from './Tag/index.cjs';
|
|
|
44
44
|
export { TextArea } from './TextArea/index.cjs';
|
|
45
45
|
export { TimePicker } from './TimePicker/index.cjs';
|
|
46
46
|
export { ToastProvider, useToast } from './Toast/index.cjs';
|
|
47
|
+
export { ToggleChip } from './ToggleChip/index.cjs';
|
|
47
48
|
export { Tooltip } from './Tooltip/index.cjs';
|
|
48
49
|
export { Video, VideoProps } from './Video/index.cjs';
|
|
49
50
|
import 'react';
|
|
@@ -26,7 +26,7 @@ export { Input, PasswordInput } from './Input/index.js';
|
|
|
26
26
|
export { Link } from './Link/index.js';
|
|
27
27
|
export { LinkButton } from './LinkButton/index.js';
|
|
28
28
|
export { Modal } from './Modal/index.js';
|
|
29
|
-
export {
|
|
29
|
+
export { Badge, Badge as NotificationBadge } from './NotificationBadge/index.js';
|
|
30
30
|
export { Pagination } from './Pagination/index.js';
|
|
31
31
|
export { PopOver } from './PopOver/index.js';
|
|
32
32
|
export { Progress } from './Progress/index.js';
|
|
@@ -44,6 +44,7 @@ export { Tag } from './Tag/index.js';
|
|
|
44
44
|
export { TextArea } from './TextArea/index.js';
|
|
45
45
|
export { TimePicker } from './TimePicker/index.js';
|
|
46
46
|
export { ToastProvider, useToast } from './Toast/index.js';
|
|
47
|
+
export { ToggleChip } from './ToggleChip/index.js';
|
|
47
48
|
export { Tooltip } from './Tooltip/index.js';
|
|
48
49
|
export { Video, VideoProps } from './Video/index.js';
|
|
49
50
|
import 'react';
|