@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.
@@ -7306,9 +7306,33 @@ var ToastProvider = ({
7306
7306
  };
7307
7307
  ToastProvider.displayName = "ToastProvider";
7308
7308
 
7309
+ // src/components/ToggleChip/ToggleChip.tsx
7310
+ import { jsx as jsx353 } from "react/jsx-runtime";
7311
+ var ToggleChip = (props) => {
7312
+ const { children, selected = false, onClick, disabled = false, size = "md" } = props;
7313
+ return /* @__PURE__ */ jsx353(
7314
+ "button",
7315
+ {
7316
+ type: "button",
7317
+ className: clsx_default(
7318
+ "lib-xplat-chip",
7319
+ "lib-xplat-toggle-chip",
7320
+ size,
7321
+ selected ? "selected" : "unselected"
7322
+ ),
7323
+ "aria-pressed": selected,
7324
+ disabled,
7325
+ onClick,
7326
+ children
7327
+ }
7328
+ );
7329
+ };
7330
+ ToggleChip.displayName = "ToggleChip";
7331
+ var ToggleChip_default = ToggleChip;
7332
+
7309
7333
  // src/components/Tooltip/Tooltip.tsx
7310
7334
  import React42 from "react";
7311
- import { Fragment as Fragment6, jsx as jsx353, jsxs as jsxs224 } from "react/jsx-runtime";
7335
+ import { Fragment as Fragment6, jsx as jsx354, jsxs as jsxs224 } from "react/jsx-runtime";
7312
7336
  var OFFSET = 12;
7313
7337
  var GAP = 8;
7314
7338
  var SHOW_DELAY = 300;
@@ -7413,7 +7437,7 @@ var Tooltip = (props) => {
7413
7437
  window.clearTimeout(delayTimer.current);
7414
7438
  cancelAnimationFrame(rafRef.current);
7415
7439
  }, []);
7416
- if (!title && !description) return /* @__PURE__ */ jsx353(Fragment6, { children });
7440
+ if (!title && !description) return /* @__PURE__ */ jsx354(Fragment6, { children });
7417
7441
  return /* @__PURE__ */ jsxs224(
7418
7442
  "div",
7419
7443
  {
@@ -7427,7 +7451,7 @@ var Tooltip = (props) => {
7427
7451
  onBlur: close,
7428
7452
  children: [
7429
7453
  children,
7430
- visible && /* @__PURE__ */ jsx353(Portal_default, { children: /* @__PURE__ */ jsxs224(
7454
+ visible && /* @__PURE__ */ jsx354(Portal_default, { children: /* @__PURE__ */ jsxs224(
7431
7455
  "div",
7432
7456
  {
7433
7457
  ref: tooltipRef,
@@ -7435,8 +7459,8 @@ var Tooltip = (props) => {
7435
7459
  className: clsx_default("lib-xplat-tooltip", shape),
7436
7460
  style: { position: "fixed", left: pos.left, top: pos.top },
7437
7461
  children: [
7438
- title && /* @__PURE__ */ jsx353("div", { className: "tooltip-title", children: title }),
7439
- description && /* @__PURE__ */ jsx353("div", { className: "tooltip-desc", children: description })
7462
+ title && /* @__PURE__ */ jsx354("div", { className: "tooltip-title", children: title }),
7463
+ description && /* @__PURE__ */ jsx354("div", { className: "tooltip-desc", children: description })
7440
7464
  ]
7441
7465
  }
7442
7466
  ) })
@@ -7449,10 +7473,10 @@ var Tooltip_default = Tooltip;
7449
7473
 
7450
7474
  // src/components/Video/Video.tsx
7451
7475
  import React43 from "react";
7452
- import { jsx as jsx354, jsxs as jsxs225 } from "react/jsx-runtime";
7476
+ import { jsx as jsx355, jsxs as jsxs225 } from "react/jsx-runtime";
7453
7477
  var PipIcon = () => /* @__PURE__ */ jsxs225("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
7454
- /* @__PURE__ */ jsx354("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
7455
- /* @__PURE__ */ jsx354("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
7478
+ /* @__PURE__ */ jsx355("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
7479
+ /* @__PURE__ */ jsx355("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
7456
7480
  ] });
7457
7481
  var formatTime = (sec) => {
7458
7482
  if (!Number.isFinite(sec) || sec < 0) return "0:00";
@@ -7633,7 +7657,7 @@ var Video = React43.forwardRef((props, ref) => {
7633
7657
  ref: containerRef,
7634
7658
  className: clsx_default("lib-xplat-video", showControls && "has-controls"),
7635
7659
  children: [
7636
- /* @__PURE__ */ jsx354(
7660
+ /* @__PURE__ */ jsx355(
7637
7661
  "video",
7638
7662
  {
7639
7663
  ref: setRefs,
@@ -7654,7 +7678,7 @@ var Video = React43.forwardRef((props, ref) => {
7654
7678
  children
7655
7679
  }
7656
7680
  ),
7657
- showCenterPlay && /* @__PURE__ */ jsx354(
7681
+ showCenterPlay && /* @__PURE__ */ jsx355(
7658
7682
  "button",
7659
7683
  {
7660
7684
  type: "button",
@@ -7666,11 +7690,11 @@ var Video = React43.forwardRef((props, ref) => {
7666
7690
  onClick: togglePlay,
7667
7691
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
7668
7692
  tabIndex: -1,
7669
- children: /* @__PURE__ */ jsx354("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx354(PlayCircleIcon_default, {}) })
7693
+ children: /* @__PURE__ */ jsx355("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx355(PlayCircleIcon_default, {}) })
7670
7694
  }
7671
7695
  ),
7672
7696
  showControls && /* @__PURE__ */ jsxs225("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
7673
- /* @__PURE__ */ jsx354(
7697
+ /* @__PURE__ */ jsx355(
7674
7698
  "input",
7675
7699
  {
7676
7700
  type: "range",
@@ -7688,28 +7712,28 @@ var Video = React43.forwardRef((props, ref) => {
7688
7712
  }
7689
7713
  ),
7690
7714
  /* @__PURE__ */ jsxs225("div", { className: "controls-row", children: [
7691
- /* @__PURE__ */ jsx354(
7715
+ /* @__PURE__ */ jsx355(
7692
7716
  "button",
7693
7717
  {
7694
7718
  type: "button",
7695
7719
  className: "control-btn",
7696
7720
  onClick: togglePlay,
7697
7721
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
7698
- children: isPlaying ? /* @__PURE__ */ jsx354(PauseIcon_default, {}) : /* @__PURE__ */ jsx354(PlayIcon_default, {})
7722
+ children: isPlaying ? /* @__PURE__ */ jsx355(PauseIcon_default, {}) : /* @__PURE__ */ jsx355(PlayIcon_default, {})
7699
7723
  }
7700
7724
  ),
7701
7725
  /* @__PURE__ */ jsxs225("div", { className: "volume-group", children: [
7702
- /* @__PURE__ */ jsx354(
7726
+ /* @__PURE__ */ jsx355(
7703
7727
  "button",
7704
7728
  {
7705
7729
  type: "button",
7706
7730
  className: "control-btn",
7707
7731
  onClick: toggleMute,
7708
7732
  "aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
7709
- children: /* @__PURE__ */ jsx354(VolumeGlyph, {})
7733
+ children: /* @__PURE__ */ jsx355(VolumeGlyph, {})
7710
7734
  }
7711
7735
  ),
7712
- /* @__PURE__ */ jsx354(
7736
+ /* @__PURE__ */ jsx355(
7713
7737
  "input",
7714
7738
  {
7715
7739
  type: "range",
@@ -7729,7 +7753,7 @@ var Video = React43.forwardRef((props, ref) => {
7729
7753
  " / ",
7730
7754
  formatTime(duration)
7731
7755
  ] }),
7732
- /* @__PURE__ */ jsx354("div", { className: "controls-spacer" }),
7756
+ /* @__PURE__ */ jsx355("div", { className: "controls-spacer" }),
7733
7757
  playbackRates && playbackRates.length > 0 && /* @__PURE__ */ jsxs225("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
7734
7758
  /* @__PURE__ */ jsxs225(
7735
7759
  "button",
@@ -7745,7 +7769,7 @@ var Video = React43.forwardRef((props, ref) => {
7745
7769
  ]
7746
7770
  }
7747
7771
  ),
7748
- rateMenuOpen && /* @__PURE__ */ jsx354("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx354("li", { children: /* @__PURE__ */ jsxs225(
7772
+ rateMenuOpen && /* @__PURE__ */ jsx355("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx355("li", { children: /* @__PURE__ */ jsxs225(
7749
7773
  "button",
7750
7774
  {
7751
7775
  type: "button",
@@ -7759,7 +7783,7 @@ var Video = React43.forwardRef((props, ref) => {
7759
7783
  }
7760
7784
  ) }, r2)) })
7761
7785
  ] }),
7762
- showCaptions && /* @__PURE__ */ jsx354(
7786
+ showCaptions && /* @__PURE__ */ jsx355(
7763
7787
  "button",
7764
7788
  {
7765
7789
  type: "button",
@@ -7767,37 +7791,37 @@ var Video = React43.forwardRef((props, ref) => {
7767
7791
  onClick: toggleCaptions,
7768
7792
  "aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
7769
7793
  "aria-pressed": captionsOn,
7770
- children: /* @__PURE__ */ jsx354(TypeIcon_default, {})
7794
+ children: /* @__PURE__ */ jsx355(TypeIcon_default, {})
7771
7795
  }
7772
7796
  ),
7773
- showPip && pipSupported && /* @__PURE__ */ jsx354(
7797
+ showPip && pipSupported && /* @__PURE__ */ jsx355(
7774
7798
  "button",
7775
7799
  {
7776
7800
  type: "button",
7777
7801
  className: clsx_default("control-btn", isPip && "is-active"),
7778
7802
  onClick: togglePip,
7779
7803
  "aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
7780
- children: /* @__PURE__ */ jsx354(PipIcon, {})
7804
+ children: /* @__PURE__ */ jsx355(PipIcon, {})
7781
7805
  }
7782
7806
  ),
7783
- showDownload && /* @__PURE__ */ jsx354(
7807
+ showDownload && /* @__PURE__ */ jsx355(
7784
7808
  "a",
7785
7809
  {
7786
7810
  className: "control-btn",
7787
7811
  href: src,
7788
7812
  download: downloadFileName ?? true,
7789
7813
  "aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
7790
- children: /* @__PURE__ */ jsx354(DownloadIcon_default, {})
7814
+ children: /* @__PURE__ */ jsx355(DownloadIcon_default, {})
7791
7815
  }
7792
7816
  ),
7793
- /* @__PURE__ */ jsx354(
7817
+ /* @__PURE__ */ jsx355(
7794
7818
  "button",
7795
7819
  {
7796
7820
  type: "button",
7797
7821
  className: "control-btn",
7798
7822
  onClick: toggleFullscreen,
7799
7823
  "aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
7800
- children: isFullscreen ? /* @__PURE__ */ jsx354(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx354(MaximizeIcon_default, {})
7824
+ children: isFullscreen ? /* @__PURE__ */ jsx355(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx355(MaximizeIcon_default, {})
7801
7825
  }
7802
7826
  )
7803
7827
  ] })
@@ -7868,6 +7892,7 @@ export {
7868
7892
  TextArea_default as TextArea,
7869
7893
  TimePicker_default as TimePicker,
7870
7894
  ToastProvider,
7895
+ ToggleChip_default as ToggleChip,
7871
7896
  Tooltip_default as Tooltip,
7872
7897
  Video_default as Video,
7873
7898
  hasError,
package/dist/index.cjs CHANGED
@@ -347,6 +347,7 @@ __export(index_exports, {
347
347
  ThumbsUpIcon: () => ThumbsUpIcon_default,
348
348
  TimePicker: () => TimePicker_default,
349
349
  ToastProvider: () => ToastProvider,
350
+ ToggleChip: () => ToggleChip_default,
350
351
  ToggleLeftIcon: () => ToggleLeftIcon_default,
351
352
  ToggleRightIcon: () => ToggleRightIcon_default,
352
353
  ToolIcon: () => ToolIcon_default,
@@ -11818,9 +11819,33 @@ var ToastProvider = ({
11818
11819
  };
11819
11820
  ToastProvider.displayName = "ToastProvider";
11820
11821
 
11822
+ // src/components/ToggleChip/ToggleChip.tsx
11823
+ var import_jsx_runtime353 = require("react/jsx-runtime");
11824
+ var ToggleChip = (props) => {
11825
+ const { children, selected = false, onClick, disabled = false, size = "md" } = props;
11826
+ return /* @__PURE__ */ (0, import_jsx_runtime353.jsx)(
11827
+ "button",
11828
+ {
11829
+ type: "button",
11830
+ className: clsx_default(
11831
+ "lib-xplat-chip",
11832
+ "lib-xplat-toggle-chip",
11833
+ size,
11834
+ selected ? "selected" : "unselected"
11835
+ ),
11836
+ "aria-pressed": selected,
11837
+ disabled,
11838
+ onClick,
11839
+ children
11840
+ }
11841
+ );
11842
+ };
11843
+ ToggleChip.displayName = "ToggleChip";
11844
+ var ToggleChip_default = ToggleChip;
11845
+
11821
11846
  // src/components/Tooltip/Tooltip.tsx
11822
11847
  var import_react42 = __toESM(require("react"), 1);
11823
- var import_jsx_runtime353 = require("react/jsx-runtime");
11848
+ var import_jsx_runtime354 = require("react/jsx-runtime");
11824
11849
  var OFFSET = 12;
11825
11850
  var GAP = 8;
11826
11851
  var SHOW_DELAY = 300;
@@ -11925,8 +11950,8 @@ var Tooltip = (props) => {
11925
11950
  window.clearTimeout(delayTimer.current);
11926
11951
  cancelAnimationFrame(rafRef.current);
11927
11952
  }, []);
11928
- if (!title && !description) return /* @__PURE__ */ (0, import_jsx_runtime353.jsx)(import_jsx_runtime353.Fragment, { children });
11929
- return /* @__PURE__ */ (0, import_jsx_runtime353.jsxs)(
11953
+ if (!title && !description) return /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(import_jsx_runtime354.Fragment, { children });
11954
+ return /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)(
11930
11955
  "div",
11931
11956
  {
11932
11957
  ref: triggerRef,
@@ -11939,7 +11964,7 @@ var Tooltip = (props) => {
11939
11964
  onBlur: close,
11940
11965
  children: [
11941
11966
  children,
11942
- visible && /* @__PURE__ */ (0, import_jsx_runtime353.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime353.jsxs)(
11967
+ visible && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)(
11943
11968
  "div",
11944
11969
  {
11945
11970
  ref: tooltipRef,
@@ -11947,8 +11972,8 @@ var Tooltip = (props) => {
11947
11972
  className: clsx_default("lib-xplat-tooltip", shape),
11948
11973
  style: { position: "fixed", left: pos.left, top: pos.top },
11949
11974
  children: [
11950
- title && /* @__PURE__ */ (0, import_jsx_runtime353.jsx)("div", { className: "tooltip-title", children: title }),
11951
- description && /* @__PURE__ */ (0, import_jsx_runtime353.jsx)("div", { className: "tooltip-desc", children: description })
11975
+ title && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("div", { className: "tooltip-title", children: title }),
11976
+ description && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("div", { className: "tooltip-desc", children: description })
11952
11977
  ]
11953
11978
  }
11954
11979
  ) })
@@ -11961,10 +11986,10 @@ var Tooltip_default = Tooltip;
11961
11986
 
11962
11987
  // src/components/Video/Video.tsx
11963
11988
  var import_react43 = __toESM(require("react"), 1);
11964
- var import_jsx_runtime354 = require("react/jsx-runtime");
11965
- var PipIcon = () => /* @__PURE__ */ (0, import_jsx_runtime354.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: [
11966
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
11967
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
11989
+ var import_jsx_runtime355 = require("react/jsx-runtime");
11990
+ 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: [
11991
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
11992
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
11968
11993
  ] });
11969
11994
  var formatTime = (sec) => {
11970
11995
  if (!Number.isFinite(sec) || sec < 0) return "0:00";
@@ -12139,13 +12164,13 @@ var Video = import_react43.default.forwardRef((props, ref) => {
12139
12164
  const volumePct = (isMuted ? 0 : volume) * 100;
12140
12165
  const VolumeGlyph = isMuted || volume === 0 ? VolumeXIcon_default : volume < 0.5 ? VolumeIcon_default : Volume2Icon_default;
12141
12166
  const pipSupported = typeof document !== "undefined" && "pictureInPictureEnabled" in document && document.pictureInPictureEnabled;
12142
- return /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)(
12167
+ return /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)(
12143
12168
  "div",
12144
12169
  {
12145
12170
  ref: containerRef,
12146
12171
  className: clsx_default("lib-xplat-video", showControls && "has-controls"),
12147
12172
  children: [
12148
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
12173
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
12149
12174
  "video",
12150
12175
  {
12151
12176
  ref: setRefs,
@@ -12166,7 +12191,7 @@ var Video = import_react43.default.forwardRef((props, ref) => {
12166
12191
  children
12167
12192
  }
12168
12193
  ),
12169
- showCenterPlay && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
12194
+ showCenterPlay && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
12170
12195
  "button",
12171
12196
  {
12172
12197
  type: "button",
@@ -12178,11 +12203,11 @@ var Video = import_react43.default.forwardRef((props, ref) => {
12178
12203
  onClick: togglePlay,
12179
12204
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
12180
12205
  tabIndex: -1,
12181
- children: /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("span", { className: "center-play-icon", children: /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(PlayCircleIcon_default, {}) })
12206
+ children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("span", { className: "center-play-icon", children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(PlayCircleIcon_default, {}) })
12182
12207
  }
12183
12208
  ),
12184
- showControls && /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
12185
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
12209
+ showControls && /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
12210
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
12186
12211
  "input",
12187
12212
  {
12188
12213
  type: "range",
@@ -12199,29 +12224,29 @@ var Video = import_react43.default.forwardRef((props, ref) => {
12199
12224
  }
12200
12225
  }
12201
12226
  ),
12202
- /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)("div", { className: "controls-row", children: [
12203
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
12227
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: "controls-row", children: [
12228
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
12204
12229
  "button",
12205
12230
  {
12206
12231
  type: "button",
12207
12232
  className: "control-btn",
12208
12233
  onClick: togglePlay,
12209
12234
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
12210
- children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(PauseIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(PlayIcon_default, {})
12235
+ children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(PauseIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(PlayIcon_default, {})
12211
12236
  }
12212
12237
  ),
12213
- /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)("div", { className: "volume-group", children: [
12214
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
12238
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: "volume-group", children: [
12239
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
12215
12240
  "button",
12216
12241
  {
12217
12242
  type: "button",
12218
12243
  className: "control-btn",
12219
12244
  onClick: toggleMute,
12220
12245
  "aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
12221
- children: /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(VolumeGlyph, {})
12246
+ children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(VolumeGlyph, {})
12222
12247
  }
12223
12248
  ),
12224
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
12249
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
12225
12250
  "input",
12226
12251
  {
12227
12252
  type: "range",
@@ -12236,14 +12261,14 @@ var Video = import_react43.default.forwardRef((props, ref) => {
12236
12261
  }
12237
12262
  )
12238
12263
  ] }),
12239
- /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)("span", { className: "time", children: [
12264
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("span", { className: "time", children: [
12240
12265
  formatTime(currentTime),
12241
12266
  " / ",
12242
12267
  formatTime(duration)
12243
12268
  ] }),
12244
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("div", { className: "controls-spacer" }),
12245
- playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
12246
- /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)(
12269
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("div", { className: "controls-spacer" }),
12270
+ playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
12271
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)(
12247
12272
  "button",
12248
12273
  {
12249
12274
  type: "button",
@@ -12257,7 +12282,7 @@ var Video = import_react43.default.forwardRef((props, ref) => {
12257
12282
  ]
12258
12283
  }
12259
12284
  ),
12260
- rateMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)(
12285
+ 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)(
12261
12286
  "button",
12262
12287
  {
12263
12288
  type: "button",
@@ -12271,7 +12296,7 @@ var Video = import_react43.default.forwardRef((props, ref) => {
12271
12296
  }
12272
12297
  ) }, r2)) })
12273
12298
  ] }),
12274
- showCaptions && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
12299
+ showCaptions && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
12275
12300
  "button",
12276
12301
  {
12277
12302
  type: "button",
@@ -12279,37 +12304,37 @@ var Video = import_react43.default.forwardRef((props, ref) => {
12279
12304
  onClick: toggleCaptions,
12280
12305
  "aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
12281
12306
  "aria-pressed": captionsOn,
12282
- children: /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(TypeIcon_default, {})
12307
+ children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(TypeIcon_default, {})
12283
12308
  }
12284
12309
  ),
12285
- showPip && pipSupported && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
12310
+ showPip && pipSupported && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
12286
12311
  "button",
12287
12312
  {
12288
12313
  type: "button",
12289
12314
  className: clsx_default("control-btn", isPip && "is-active"),
12290
12315
  onClick: togglePip,
12291
12316
  "aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
12292
- children: /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(PipIcon, {})
12317
+ children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(PipIcon, {})
12293
12318
  }
12294
12319
  ),
12295
- showDownload && /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
12320
+ showDownload && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
12296
12321
  "a",
12297
12322
  {
12298
12323
  className: "control-btn",
12299
12324
  href: src,
12300
12325
  download: downloadFileName ?? true,
12301
12326
  "aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
12302
- children: /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(DownloadIcon_default, {})
12327
+ children: /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(DownloadIcon_default, {})
12303
12328
  }
12304
12329
  ),
12305
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
12330
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
12306
12331
  "button",
12307
12332
  {
12308
12333
  type: "button",
12309
12334
  className: "control-btn",
12310
12335
  onClick: toggleFullscreen,
12311
12336
  "aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
12312
- children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(MinimizeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(MaximizeIcon_default, {})
12337
+ children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(MinimizeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(MaximizeIcon_default, {})
12313
12338
  }
12314
12339
  )
12315
12340
  ] })
@@ -12322,7 +12347,7 @@ Video.displayName = "Video";
12322
12347
  var Video_default = Video;
12323
12348
 
12324
12349
  // src/layout/Grid/FullGrid/FullGrid.tsx
12325
- var import_jsx_runtime355 = require("react/jsx-runtime");
12350
+ var import_jsx_runtime356 = require("react/jsx-runtime");
12326
12351
  var GAP_MAP = {
12327
12352
  none: "var(--spacing-space-none)",
12328
12353
  xs: "var(--spacing-space-1)",
@@ -12335,13 +12360,13 @@ var GAP_MAP = {
12335
12360
  var FullGrid = (props) => {
12336
12361
  const { children, gap } = props;
12337
12362
  const style = gap != null ? { gap: GAP_MAP[gap] } : void 0;
12338
- return /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("div", { className: "lib-xplat-full-grid", style, children });
12363
+ return /* @__PURE__ */ (0, import_jsx_runtime356.jsx)("div", { className: "lib-xplat-full-grid", style, children });
12339
12364
  };
12340
12365
  FullGrid.displayName = "FullGrid";
12341
12366
  var FullGrid_default = FullGrid;
12342
12367
 
12343
12368
  // src/layout/Grid/FullScreen/FullScreen.tsx
12344
- var import_jsx_runtime356 = require("react/jsx-runtime");
12369
+ var import_jsx_runtime357 = require("react/jsx-runtime");
12345
12370
  var GAP_MAP2 = {
12346
12371
  none: "var(--spacing-space-none)",
12347
12372
  xs: "var(--spacing-space-1)",
@@ -12354,13 +12379,13 @@ var GAP_MAP2 = {
12354
12379
  var FullScreen = (props) => {
12355
12380
  const { children, gap } = props;
12356
12381
  const style = gap != null ? { gap: GAP_MAP2[gap] } : void 0;
12357
- return /* @__PURE__ */ (0, import_jsx_runtime356.jsx)("div", { className: "lib-xplat-full-screen", style, children });
12382
+ return /* @__PURE__ */ (0, import_jsx_runtime357.jsx)("div", { className: "lib-xplat-full-screen", style, children });
12358
12383
  };
12359
12384
  FullScreen.displayName = "FullScreen";
12360
12385
  var FullScreen_default = FullScreen;
12361
12386
 
12362
12387
  // src/layout/Grid/Item/Item.tsx
12363
- var import_jsx_runtime357 = require("react/jsx-runtime");
12388
+ var import_jsx_runtime358 = require("react/jsx-runtime");
12364
12389
  var calculateSpans = (column) => {
12365
12390
  const spans = {};
12366
12391
  let inherited = column.default;
@@ -12377,35 +12402,35 @@ var GridItem = ({ column, children, className }) => {
12377
12402
  Object.entries(spans).forEach(([key, value]) => {
12378
12403
  style[`--column-${key}`] = value;
12379
12404
  });
12380
- return /* @__PURE__ */ (0, import_jsx_runtime357.jsx)("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
12405
+ return /* @__PURE__ */ (0, import_jsx_runtime358.jsx)("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
12381
12406
  };
12382
12407
  GridItem.displayName = "GridItem";
12383
12408
  var Item_default = GridItem;
12384
12409
 
12385
12410
  // src/layout/Header/Header.tsx
12386
- var import_jsx_runtime358 = require("react/jsx-runtime");
12411
+ var import_jsx_runtime359 = require("react/jsx-runtime");
12387
12412
  var Header = ({
12388
12413
  logo,
12389
12414
  centerContent,
12390
12415
  rightContent
12391
12416
  }) => {
12392
- return /* @__PURE__ */ (0, import_jsx_runtime358.jsxs)("div", { className: "lib-xplat-layout-header", children: [
12393
- /* @__PURE__ */ (0, import_jsx_runtime358.jsx)("div", { children: logo }),
12394
- /* @__PURE__ */ (0, import_jsx_runtime358.jsx)("div", { children: centerContent }),
12395
- /* @__PURE__ */ (0, import_jsx_runtime358.jsx)("div", { children: rightContent })
12417
+ return /* @__PURE__ */ (0, import_jsx_runtime359.jsxs)("div", { className: "lib-xplat-layout-header", children: [
12418
+ /* @__PURE__ */ (0, import_jsx_runtime359.jsx)("div", { children: logo }),
12419
+ /* @__PURE__ */ (0, import_jsx_runtime359.jsx)("div", { children: centerContent }),
12420
+ /* @__PURE__ */ (0, import_jsx_runtime359.jsx)("div", { children: rightContent })
12396
12421
  ] });
12397
12422
  };
12398
12423
  Header.displayName = "Header";
12399
12424
  var Header_default = Header;
12400
12425
 
12401
12426
  // src/layout/Layout/Layout.tsx
12402
- var import_jsx_runtime359 = require("react/jsx-runtime");
12427
+ var import_jsx_runtime360 = require("react/jsx-runtime");
12403
12428
  var Layout = (props) => {
12404
12429
  const { header, sideBar, children } = props;
12405
- return /* @__PURE__ */ (0, import_jsx_runtime359.jsx)("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ (0, import_jsx_runtime359.jsxs)("div", { className: "lib-xplat-layout-content-wrapper", children: [
12406
- sideBar && /* @__PURE__ */ (0, import_jsx_runtime359.jsx)(import_jsx_runtime359.Fragment, { children: sideBar }),
12407
- /* @__PURE__ */ (0, import_jsx_runtime359.jsxs)("div", { className: "lib-xplat-layout-content", children: [
12408
- header && /* @__PURE__ */ (0, import_jsx_runtime359.jsx)("div", { className: "lib-xplat-layout-conent-header", children: header }),
12430
+ return /* @__PURE__ */ (0, import_jsx_runtime360.jsx)("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ (0, import_jsx_runtime360.jsxs)("div", { className: "lib-xplat-layout-content-wrapper", children: [
12431
+ sideBar && /* @__PURE__ */ (0, import_jsx_runtime360.jsx)(import_jsx_runtime360.Fragment, { children: sideBar }),
12432
+ /* @__PURE__ */ (0, import_jsx_runtime360.jsxs)("div", { className: "lib-xplat-layout-content", children: [
12433
+ header && /* @__PURE__ */ (0, import_jsx_runtime360.jsx)("div", { className: "lib-xplat-layout-conent-header", children: header }),
12409
12434
  children
12410
12435
  ] })
12411
12436
  ] }) });
@@ -12427,18 +12452,18 @@ var useSideBarContext = () => {
12427
12452
  var SideBarContext_default = SideBarContext;
12428
12453
 
12429
12454
  // src/layout/SideBar/SideBar.tsx
12430
- var import_jsx_runtime360 = require("react/jsx-runtime");
12455
+ var import_jsx_runtime361 = require("react/jsx-runtime");
12431
12456
  var SideBar = (props) => {
12432
12457
  const { children, className } = props;
12433
12458
  const [isOpen, setIsOpen] = import_react45.default.useState(true);
12434
12459
  const handleSwitchSideBar = () => {
12435
12460
  setIsOpen((prev) => !prev);
12436
12461
  };
12437
- return /* @__PURE__ */ (0, import_jsx_runtime360.jsx)(
12462
+ return /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(
12438
12463
  SideBarContext_default.Provider,
12439
12464
  {
12440
12465
  value: { isSidebarOpen: isOpen, handleSwitchSideBar },
12441
- children: /* @__PURE__ */ (0, import_jsx_runtime360.jsx)(
12466
+ children: /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(
12442
12467
  "div",
12443
12468
  {
12444
12469
  className: clsx_default(
@@ -12773,6 +12798,7 @@ var SideBar_default = SideBar;
12773
12798
  ThumbsUpIcon,
12774
12799
  TimePicker,
12775
12800
  ToastProvider,
12801
+ ToggleChip,
12776
12802
  ToggleLeftIcon,
12777
12803
  ToggleRightIcon,
12778
12804
  ToolIcon,
package/dist/index.css CHANGED
@@ -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;